Name: series-workflowjvwwx Phase: Failed StartedAt: 2026-07-02 14:45:34 +0000 UTC FinishedAt: 2026-07-02 14:55:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjvwwx[0] Phase: Succeeded StartedAt: 2026-07-02 14:45:34 +0000 UTC FinishedAt: 2026-07-02 14:55:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjvwwx[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 14:45:34 +0000 UTC FinishedAt: 2026-07-02 14:55:13 +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+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBsYWNrcyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCAodW5saWtlIG1hYzgwMjExX2h3c2ltIG9yIFVTQiBnYWRnZXQpLCBpdHMgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoZXJlZm9yZSwgaXQgY2Fubm90IGJlIGVmZmVjdGl2ZWx5IGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5MzdiOGQ1N2ZmMDFkMDIzZWExZjg0YTlmN2M5ZDRiMjdiOWFiNjY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxNDo1NDo0MiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5pbmRleCA4YmU0MzU1MzVhNGU4Yi4uNmNlMmY3YjNmYTUwMTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbkBAIC03MTIsNyAmIzQzOzcxMiw2IEBAIHN0cnVjdCBhdGgxMmsge1xuIFx0ICogYXZvaWQgcmVwb3J0aW5nIGdhcmJhZ2UgZGF0YS5cbiBcdCAqL1xuIFx0Ym9vbCBjaF9pbmZvX2Nhbl9yZXBvcnRfc3VydmV5O1xuLVx0c3RydWN0IHN1cnZleV9pbmZvIHN1cnZleVtBVEgxMktfTlVNX0NIQU5TXTtcbiBcdHN0cnVjdCBjb21wbGV0aW9uIGJzc19zdXJ2ZXlfZG9uZTtcbiBcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCByZWdkX3VwZGF0ZV93b3JrO1xuQEAgLTc3NCw2ICYjNDM7NzczLDExIEBAIHN0cnVjdCBhdGgxMmtfaHcge1xuIFx0ICovXG4gXHRzdHJ1Y3QgbXV0ZXggaHdfbXV0ZXg7XG4gXHRlbnVtIGF0aDEya19od19zdGF0ZSBzdGF0ZTtcbiYjNDM7XG4mIzQzO1x0LyogcHJvdGVjdHMgc3VydmV5W10gc2hhcmVkIGFjcm9zcyByYWRpb3Mgb2YgdGhpcyBody4gKi9cbiYjNDM7XHRzcGlubG9ja190IHN1cnZleV9sb2NrO1xuJiM0MztcdHN0cnVjdCBzdXJ2ZXlfaW5mbyBzdXJ2ZXlbQVRIMTJLX05VTV9DSEFOU107XG4mIzQzO1xuIFx0Ym9vbCByZWdkX3VwZGF0ZWQ7XG4gXHRib29sIHVzZV82Z2h6X3JlZ2Q7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbmluZGV4IDJjZmY5NDg1Yzk1YWZiLi5kYWY5YmM4NzIyZGZiYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbkBAIC0xMzM0OCw1MiAmIzQzOzEzMzQ4LDU0IEBAIGF0aDEya19tYWNfdXBkYXRlX2Jzc19jaGFuX3N1cnZleShzdHJ1Y3QgYXRoMTJrICphcixcbiBpbnQgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgaWR4LFxuIFx0XHRcdCAgICAgc3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXkpXG4ge1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfaHcgKmFoID0gaHctXHUwMDNlcHJpdjtcbiBcdHN0cnVjdCBhdGgxMmsgKmFyO1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XG4tXHRzdHJ1Y3Qgc3VydmV5X2luZm8gKmFyX3N1cnZleTtcbiYjNDM7XHRzdHJ1Y3Qgc3VydmV5X2luZm8gKmFoX3N1cnZleTtcbiYjNDM7XHRpbnQgc2JhbmRfaWR4ID0gaWR4O1xuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctXHUwMDNld2lwaHkpO1xuIFxuLVx0aWYgKGlkeCBcdTAwM2U9IEFUSDEyS19OVU1fQ0hBTlMpXG4mIzQzO1x0aWYgKHNiYW5kX2lkeCBcdTAwM2U9IEFUSDEyS19OVU1fQ0hBTlMpXG4gXHRcdHJldHVybiAtRU5PRU5UO1xuIFxuIFx0c2JhbmQgPSBody1cdTAwM2V3aXBoeS1cdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfMkdIWl07XG4tXHRpZiAoc2JhbmQgXHUwMDI2XHUwMDI2IGlkeCBcdTAwM2U9IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHMpIHtcbi1cdFx0aWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4mIzQzO1x0aWYgKHNiYW5kIFx1MDAyNlx1MDAyNiBzYmFuZF9pZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKSB7XG4mIzQzO1x0XHRzYmFuZF9pZHggLT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscztcbiBcdFx0c2JhbmQgPSBOVUxMO1xuIFx0fVxuIFxuIFx0aWYgKCFzYmFuZClcbiBcdFx0c2JhbmQgPSBody1cdTAwM2V3aXBoeS1cdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfNUdIWl07XG4tXHRpZiAoc2JhbmQgXHUwMDI2XHUwMDI2IGlkeCBcdTAwM2U9IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHMpIHtcbi1cdFx0aWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4mIzQzO1x0aWYgKHNiYW5kIFx1MDAyNlx1MDAyNiBzYmFuZF9pZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKSB7XG4mIzQzO1x0XHRzYmFuZF9pZHggLT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscztcbiBcdFx0c2JhbmQgPSBOVUxMO1xuIFx0fVxuIFxuIFx0aWYgKCFzYmFuZClcbiBcdFx0c2JhbmQgPSBody1cdTAwM2V3aXBoeS1cdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfNkdIWl07XG4gXG4tXHRpZiAoIXNiYW5kIHx8IGlkeCBcdTAwM2U9IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHMpXG4mIzQzO1x0aWYgKCFzYmFuZCB8fCBzYmFuZF9pZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKVxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbiBcbi1cdGFyID0gYXRoMTJrX21hY19nZXRfYXJfYnlfY2hhbihodywgXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbaWR4XSk7XG4mIzQzO1x0YXIgPSBhdGgxMmtfbWFjX2dldF9hcl9ieV9jaGFuKGh3LCBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdKTtcbiBcdGlmICghYXIpIHtcbi1cdFx0aWYgKHNiYW5kLVx1MDAzZWNoYW5uZWxzW2lkeF0uZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKSB7XG4mIzQzO1x0XHRpZiAoc2JhbmQtXHUwMDNlY2hhbm5lbHNbc2JhbmRfaWR4XS5mbGFncyBcdTAwMjYgSUVFRTgwMjExX0NIQU5fRElTQUJMRUQpIHtcbiBcdFx0XHRtZW1zZXQoc3VydmV5LCAwLCBzaXplb2YoKnN1cnZleSkpO1xuIFx0XHRcdHJldHVybiAwO1xuIFx0XHR9XG4gXHRcdHJldHVybiAtRU5PRU5UO1xuIFx0fVxuIFxuLVx0YXJfc3VydmV5ID0gXHUwMDI2YXItXHUwMDNlc3VydmV5W2lkeF07XG4mIzQzO1x0YWhfc3VydmV5ID0gXHUwMDI2YWgtXHUwMDNlc3VydmV5W2lkeF07XG4gXG4tXHRhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoYXIsIFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW2lkeF0pO1xuJiM0MztcdGF0aDEya19tYWNfdXBkYXRlX2Jzc19jaGFuX3N1cnZleShhciwgXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbc2JhbmRfaWR4XSk7XG4gXG4tXHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbi1cdG1lbWNweShzdXJ2ZXksIGFyX3N1cnZleSwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbi1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4mIzQzO1x0c2NvcGVkX2d1YXJkKHNwaW5sb2NrX2JoLCBcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlfbG9jaykge1xuJiM0MztcdFx0bWVtY3B5KHN1cnZleSwgYWhfc3VydmV5LCBzaXplb2YoKnN1cnZleSkpO1xuJiM0MztcdH1cbiBcbi1cdHN1cnZleS1cdTAwM2VjaGFubmVsID0gXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbaWR4XTtcbiYjNDM7XHRzdXJ2ZXktXHUwMDNlY2hhbm5lbCA9IFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF07XG4gXG4gXHRpZiAoYXItXHUwMDNlcnhfY2hhbm5lbCA9PSBzdXJ2ZXktXHUwMDNlY2hhbm5lbClcbiBcdFx0c3VydmV5LVx1MDAzZWZpbGxlZCB8PSBTVVJWRVlfSU5GT19JTl9VU0U7XG5AQCAtMTUwNTUsNiAmIzQzOzE1MDU3LDcgQEAgc3RhdGljIHN0cnVjdCBhdGgxMmtfaHcgKmF0aDEya19tYWNfaHdfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcsXG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNmFoLVx1MDAzZWh3X211dGV4KTtcbiBcbiYjNDM7XHRzcGluX2xvY2tfaW5pdChcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlfbG9jayk7XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZhaC1cdTAwM2VkcF9ody5wZWVyX2xvY2spO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWgtXHUwMDNlZHBfaHcuZHBfcGVlcnNfbGlzdCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbmluZGV4IGI1ZTkwNGE1NWFlYWJiLi5hYTcwZDJhNjFkMzgwMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbkBAIC02NjE3LDE2ICYjNDM7NjYxNywxMiBAQCBzdGF0aWMgaW50IGF0aDEya19wdWxsX3JvYW1fZXYoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgaW50IGZyZXFfdG9faWR4KHN0cnVjdCBhdGgxMmsgKmFyLCBpbnQgZnJlcSlcbiYjNDM7c3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGZyZXEpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XG4tXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IGF0aDEya19hcl90b19odyhhcik7XG4gXHRpbnQgYmFuZCwgY2gsIGlkeCA9IDA7XG4gXG4gXHRmb3IgKGJhbmQgPSBOTDgwMjExX0JBTkRfMkdIWjsgYmFuZCBcdTAwM2MgTlVNX05MODAyMTFfQkFORFM7IGJhbmQmIzQzOyYjNDM7KSB7XG4tXHRcdGlmICghYXItXHUwMDNlbWFjLnNiYW5kc1tiYW5kXS5jaGFubmVscylcbi1cdFx0XHRjb250aW51ZTtcbi1cbiBcdFx0c2JhbmQgPSBody1cdTAwM2V3aXBoeS1cdTAwM2ViYW5kc1tiYW5kXTtcbiBcdFx0aWYgKCFzYmFuZClcbiBcdFx0XHRjb250aW51ZTtcbkBAIC03NTA3LDYgJiM0Mzs3NTAzLDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdHN0cnVjdCB3bWlfY2hhbl9pbmZvX2V2ZW50IGNoX2luZm9fZXYgPSB7fTtcbiBcdHN0cnVjdCBhdGgxMmsgKmFyO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfaHcgKmFoO1xuIFx0c3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXk7XG4gXHRpbnQgaWR4O1xuIFx0LyogSFcgY2hhbm5lbCBjb3VudGVycyBmcmVxdWVuY3kgdmFsdWUgaW4gaGVydHogKi9cbkBAIC03NTM4LDYgJiM0Mzs3NTM1LDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiYjNDM7XHRhaCA9IGF0aDEya19hcl90b19haChhcik7XG4gXG4gXHRzd2l0Y2ggKGFyLVx1MDAzZXNjYW4uc3RhdGUpIHtcbiBcdGNhc2UgQVRIMTJLX1NDQU5fSURMRTpcbkBAIC03NTQ5LDggJiM0Mzs3NTQ3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRicmVhaztcbiBcdH1cbiBcbi1cdGlkeCA9IGZyZXFfdG9faWR4KGFyLCBsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmZyZXEpKTtcbi1cdGlmIChpZHggXHUwMDNlPSBBUlJBWV9TSVpFKGFyLVx1MDAzZXN1cnZleSkpIHtcbiYjNDM7XHRpZHggPSBmcmVxX3RvX2lkeChhdGgxMmtfYXJfdG9faHcoYXIpLCBsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmZyZXEpKTtcbiYjNDM7XHRpZiAoaWR4IFx1MDAzZT0gQVJSQVlfU0laRShhaC1cdTAwM2VzdXJ2ZXkpKSB7XG4gXHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtjaGFuIGluZm86IGludmFsaWQgZnJlcXVlbmN5ICVkIChpZHggJWQgb3V0IG9mIGJvdW5kcylcXG5cJiMzNDssXG4gXHRcdFx0ICAgIGNoX2luZm9fZXYuZnJlcSwgaWR4KTtcbiBcdFx0Z290byBleGl0O1xuQEAgLTc1NjMsMTQgJiM0Mzs3NTYxLDE2IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0Y2NfZnJlcV9oeiA9IChsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm1hY19jbGtfbWh6KSAqIDEwMDApO1xuIFxuIFx0aWYgKGNoX2luZm9fZXYuY21kX2ZsYWdzID09IFdNSV9DSEFOX0lORk9fU1RBUlRfUkVTUCkge1xuLVx0XHRzdXJ2ZXkgPSBcdTAwMjZhci1cdTAwM2VzdXJ2ZXlbaWR4XTtcbi1cdFx0bWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbi1cdFx0c3VydmV5LVx1MDAzZW5vaXNlID0gbGUzMl90b19jcHUoY2hfaW5mb19ldi5ub2lzZV9mbG9vcik7XG4tXHRcdHN1cnZleS1cdTAwM2VmaWxsZWQgPSBTVVJWRVlfSU5GT19OT0lTRV9EQk0gfCBTVVJWRVlfSU5GT19USU1FIHxcbiYjNDM7XHRcdHNjb3BlZF9ndWFyZChzcGlubG9ja19iaCwgXHUwMDI2YWgtXHUwMDNlc3VydmV5X2xvY2spIHtcbiYjNDM7XHRcdFx0c3VydmV5ID0gXHUwMDI2YWgtXHUwMDNlc3VydmV5W2lkeF07XG4mIzQzO1x0XHRcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XG4mIzQzO1x0XHRcdHN1cnZleS1cdTAwM2Vub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xuJiM0MztcdFx0XHRzdXJ2ZXktXHUwMDNlZmlsbGVkID0gU1VSVkVZX0lORk9fTk9JU0VfREJNIHwgU1VSVkVZX0lORk9fVElNRSB8XG4gXHRcdFx0XHQgU1VSVkVZX0lORk9fVElNRV9CVVNZO1xuLVx0XHRzdXJ2ZXktXHUwMDNldGltZSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5jeWNsZV9jb3VudCksIGNjX2ZyZXFfaHopO1xuLVx0XHRzdXJ2ZXktXHUwMDNldGltZV9idXN5ID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LnJ4X2NsZWFyX2NvdW50KSxcbi1cdFx0XHRcdFx0ICAgIGNjX2ZyZXFfaHopO1xuJiM0MztcdFx0XHRzdXJ2ZXktXHUwMDNldGltZSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5jeWNsZV9jb3VudCksIGNjX2ZyZXFfaHopO1xuJiM0MztcdFx0XHRzdXJ2ZXktXHUwMDNldGltZV9idXN5ID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LnJ4X2NsZWFyX2NvdW50KSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgIGNjX2ZyZXFfaHopO1xuJiM0MztcdFx0fVxuIFx0fVxuIGV4aXQ6XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuQEAgLTc1ODMsNiAmIzQzOzc1ODMsNyBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3Qgd21pX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudCBic3NfY2hfaW5mb19ldiA9IHt9O1xuIFx0c3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXk7XG4gXHRzdHJ1Y3QgYXRoMTJrICphcjtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2h3ICphaDtcbiBcdHUzMiBjY19mcmVxX2h6ID0gYWItXHUwMDNlY2NfZnJlcV9oejtcbiBcdHU2NCBidXN5LCB0b3RhbCwgdHgsIHJ4LCByeF9ic3M7XG4gXHRpbnQgaWR4O1xuQEAgLTc2MjMsMTUgJiM0Mzs3NjI0LDE4IEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4tXHRpZHggPSBmcmVxX3RvX2lkeChhciwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpO1xuLVx0aWYgKGlkeCBcdTAwM2U9IEFSUkFZX1NJWkUoYXItXHUwMDNlc3VydmV5KSkge1xuJiM0MztcdGFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTtcbiYjNDM7XG4mIzQzO1x0Z3VhcmQoc3BpbmxvY2tfYmgpKFx1MDAyNmFoLVx1MDAzZXN1cnZleV9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWR4ID0gZnJlcV90b19pZHgoYXRoMTJrX2FyX3RvX2h3KGFyKSwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpO1xuJiM0MztcdGlmIChpZHggXHUwMDNlPSBBUlJBWV9TSVpFKGFoLVx1MDAzZXN1cnZleSkpIHtcbiBcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2JzcyBjaGFuIGluZm86IGludmFsaWQgZnJlcXVlbmN5ICVkIChpZHggJWQgb3V0IG9mIGJvdW5kcylcXG5cJiMzNDssXG4gXHRcdFx0ICAgIGJzc19jaF9pbmZvX2V2LmZyZXEsIGlkeCk7XG4gXHRcdGdvdG8gZXhpdDtcbiBcdH1cbiBcbi1cdHN1cnZleSA9IFx1MDAyNmFyLVx1MDAzZXN1cnZleVtpZHhdO1xuJiM0MztcdHN1cnZleSA9IFx1MDAyNmFoLVx1MDAzZXN1cnZleVtpZHhdO1xuIFxuIFx0c3VydmV5LVx1MDAzZW5vaXNlICAgICA9IGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTtcbiBcdHN1cnZleS1cdTAwM2V0aW1lICAgICAgPSBkaXZfdTY0KHRvdGFsLCBjY19mcmVxX2h6KTtcbkBAIC03NjQ0LDcgJiM0Mzs3NjQ4LDYgQEAgYXRoMTJrX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdCAgICAgU1VSVkVZX0lORk9fVElNRV9SWCB8XG4gXHRcdFx0ICAgICBTVVJWRVlfSU5GT19USU1FX1RYKTtcbiBleGl0OlxuLVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcdGNvbXBsZXRlKFx1MDAyNmFyLVx1MDAzZWJzc19zdXJ2ZXlfZG9uZSk7XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBTaW5jZSB0aGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgbGFja3Mgc29mdHdhcmUgZW11bGF0aW9uIGluIHRoZSBrZXJuZWwgKHVubGlrZSBtYWM4MDIxMV9od3NpbSBvciBVU0IgZ2FkZ2V0KSwgaXRzIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGVyZWZvcmUsIGl0IGNhbm5vdCBiZSBlZmZlY3RpdmVseSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5MzdiOGQ1N2ZmMDFkMDIzZWExZjg0YTlmN2M5ZDRiMjdiOWFiNjY2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAxNDo1NDo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgKaW5kZXggOGJlNDM1NTM1YTRlOGIuLjZjZTJmN2IzZmE1MDEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaApAQCAtNzEyLDcgJiM0Mzs3MTIsNiBAQCBzdHJ1Y3QgYXRoMTJrIHsKIAkgKiBhdm9pZCByZXBvcnRpbmcgZ2FyYmFnZSBkYXRhLgogCSAqLwogCWJvb2wgY2hfaW5mb19jYW5fcmVwb3J0X3N1cnZleTsKLQlzdHJ1Y3Qgc3VydmV5X2luZm8gc3VydmV5W0FUSDEyS19OVU1fQ0hBTlNdOwogCXN0cnVjdCBjb21wbGV0aW9uIGJzc19zdXJ2ZXlfZG9uZTsKIAogCXN0cnVjdCB3b3JrX3N0cnVjdCByZWdkX3VwZGF0ZV93b3JrOwpAQCAtNzc0LDYgJiM0Mzs3NzMsMTEgQEAgc3RydWN0IGF0aDEya19odyB7CiAJICovCiAJc3RydWN0IG11dGV4IGh3X211dGV4OwogCWVudW0gYXRoMTJrX2h3X3N0YXRlIHN0YXRlOwomIzQzOwomIzQzOwkvKiBwcm90ZWN0cyBzdXJ2ZXlbXSBzaGFyZWQgYWNyb3NzIHJhZGlvcyBvZiB0aGlzIGh3LiAqLwomIzQzOwlzcGlubG9ja190IHN1cnZleV9sb2NrOwomIzQzOwlzdHJ1Y3Qgc3VydmV5X2luZm8gc3VydmV5W0FUSDEyS19OVU1fQ0hBTlNdOwomIzQzOwogCWJvb2wgcmVnZF91cGRhdGVkOwogCWJvb2wgdXNlXzZnaHpfcmVnZDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKaW5kZXggMmNmZjk0ODVjOTVhZmIuLmRhZjliYzg3MjJkZmJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKQEAgLTEzMzQ4LDUyICYjNDM7MTMzNDgsNTQgQEAgYXRoMTJrX21hY191cGRhdGVfYnNzX2NoYW5fc3VydmV5KHN0cnVjdCBhdGgxMmsgKmFyLAogaW50IGF0aDEya19tYWNfb3BfZ2V0X3N1cnZleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGlkeCwKIAkJCSAgICAgc3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXkpCiB7CiYjNDM7CXN0cnVjdCBhdGgxMmtfaHcgKmFoID0gaHctJmd0O3ByaXY7CiAJc3RydWN0IGF0aDEyayAqYXI7CiAJc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7Ci0Jc3RydWN0IHN1cnZleV9pbmZvICphcl9zdXJ2ZXk7CiYjNDM7CXN0cnVjdCBzdXJ2ZXlfaW5mbyAqYWhfc3VydmV5OwomIzQzOwlpbnQgc2JhbmRfaWR4ID0gaWR4OwogCiAJbG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctJmd0O3dpcGh5KTsKIAotCWlmIChpZHggJmd0Oz0gQVRIMTJLX05VTV9DSEFOUykKJiM0MzsJaWYgKHNiYW5kX2lkeCAmZ3Q7PSBBVEgxMktfTlVNX0NIQU5TKQogCQlyZXR1cm4gLUVOT0VOVDsKIAogCXNiYW5kID0gaHctJmd0O3dpcGh5LSZndDtiYW5kc1tOTDgwMjExX0JBTkRfMkdIWl07Ci0JaWYgKHNiYW5kICZhbXA7JmFtcDsgaWR4ICZndDs9IHNiYW5kLSZndDtuX2NoYW5uZWxzKSB7Ci0JCWlkeCAtPSBzYmFuZC0mZ3Q7bl9jaGFubmVsczsKJiM0MzsJaWYgKHNiYW5kICZhbXA7JmFtcDsgc2JhbmRfaWR4ICZndDs9IHNiYW5kLSZndDtuX2NoYW5uZWxzKSB7CiYjNDM7CQlzYmFuZF9pZHggLT0gc2JhbmQtJmd0O25fY2hhbm5lbHM7CiAJCXNiYW5kID0gTlVMTDsKIAl9CiAKIAlpZiAoIXNiYW5kKQogCQlzYmFuZCA9IGh3LSZndDt3aXBoeS0mZ3Q7YmFuZHNbTkw4MDIxMV9CQU5EXzVHSFpdOwotCWlmIChzYmFuZCAmYW1wOyZhbXA7IGlkeCAmZ3Q7PSBzYmFuZC0mZ3Q7bl9jaGFubmVscykgewotCQlpZHggLT0gc2JhbmQtJmd0O25fY2hhbm5lbHM7CiYjNDM7CWlmIChzYmFuZCAmYW1wOyZhbXA7IHNiYW5kX2lkeCAmZ3Q7PSBzYmFuZC0mZ3Q7bl9jaGFubmVscykgewomIzQzOwkJc2JhbmRfaWR4IC09IHNiYW5kLSZndDtuX2NoYW5uZWxzOwogCQlzYmFuZCA9IE5VTEw7CiAJfQogCiAJaWYgKCFzYmFuZCkKIAkJc2JhbmQgPSBody0mZ3Q7d2lwaHktJmd0O2JhbmRzW05MODAyMTFfQkFORF82R0haXTsKIAotCWlmICghc2JhbmQgfHwgaWR4ICZndDs9IHNiYW5kLSZndDtuX2NoYW5uZWxzKQomIzQzOwlpZiAoIXNiYW5kIHx8IHNiYW5kX2lkeCAmZ3Q7PSBzYmFuZC0mZ3Q7bl9jaGFubmVscykKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKLQlhciA9IGF0aDEya19tYWNfZ2V0X2FyX2J5X2NoYW4oaHcsICZhbXA7c2JhbmQtJmd0O2NoYW5uZWxzW2lkeF0pOwomIzQzOwlhciA9IGF0aDEya19tYWNfZ2V0X2FyX2J5X2NoYW4oaHcsICZhbXA7c2JhbmQtJmd0O2NoYW5uZWxzW3NiYW5kX2lkeF0pOwogCWlmICghYXIpIHsKLQkJaWYgKHNiYW5kLSZndDtjaGFubmVsc1tpZHhdLmZsYWdzICZhbXA7IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKSB7CiYjNDM7CQlpZiAoc2JhbmQtJmd0O2NoYW5uZWxzW3NiYW5kX2lkeF0uZmxhZ3MgJmFtcDsgSUVFRTgwMjExX0NIQU5fRElTQUJMRUQpIHsKIAkJCW1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7CiAJCQlyZXR1cm4gMDsKIAkJfQogCQlyZXR1cm4gLUVOT0VOVDsKIAl9CiAKLQlhcl9zdXJ2ZXkgPSAmYW1wO2FyLSZndDtzdXJ2ZXlbaWR4XTsKJiM0MzsJYWhfc3VydmV5ID0gJmFtcDthaC0mZ3Q7c3VydmV5W2lkeF07CiAKLQlhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoYXIsICZhbXA7c2JhbmQtJmd0O2NoYW5uZWxzW2lkeF0pOwomIzQzOwlhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoYXIsICZhbXA7c2JhbmQtJmd0O2NoYW5uZWxzW3NiYW5kX2lkeF0pOwogCi0Jc3Bpbl9sb2NrX2JoKCZhbXA7YXItJmd0O2RhdGFfbG9jayk7Ci0JbWVtY3B5KHN1cnZleSwgYXJfc3VydmV5LCBzaXplb2YoKnN1cnZleSkpOwotCXNwaW5fdW5sb2NrX2JoKCZhbXA7YXItJmd0O2RhdGFfbG9jayk7CiYjNDM7CXNjb3BlZF9ndWFyZChzcGlubG9ja19iaCwgJmFtcDthaC0mZ3Q7c3VydmV5X2xvY2spIHsKJiM0MzsJCW1lbWNweShzdXJ2ZXksIGFoX3N1cnZleSwgc2l6ZW9mKCpzdXJ2ZXkpKTsKJiM0MzsJfQogCi0Jc3VydmV5LSZndDtjaGFubmVsID0gJmFtcDtzYmFuZC0mZ3Q7Y2hhbm5lbHNbaWR4XTsKJiM0MzsJc3VydmV5LSZndDtjaGFubmVsID0gJmFtcDtzYmFuZC0mZ3Q7Y2hhbm5lbHNbc2JhbmRfaWR4XTsKIAogCWlmIChhci0mZ3Q7cnhfY2hhbm5lbCA9PSBzdXJ2ZXktJmd0O2NoYW5uZWwpCiAJCXN1cnZleS0mZ3Q7ZmlsbGVkIHw9IFNVUlZFWV9JTkZPX0lOX1VTRTsKQEAgLTE1MDU1LDYgJiM0MzsxNTA1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2h3ICphdGgxMmtfbWFjX2h3X2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnLAogCiAJbXV0ZXhfaW5pdCgmYW1wO2FoLSZndDtod19tdXRleCk7CiAKJiM0MzsJc3Bpbl9sb2NrX2luaXQoJmFtcDthaC0mZ3Q7c3VydmV5X2xvY2spOwogCXNwaW5fbG9ja19pbml0KCZhbXA7YWgtJmd0O2RwX2h3LnBlZXJfbG9jayk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDthaC0mZ3Q7ZHBfaHcuZHBfcGVlcnNfbGlzdCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jCmluZGV4IGI1ZTkwNGE1NWFlYWJiLi5hYTcwZDJhNjFkMzgwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jCkBAIC02NjE3LDE2ICYjNDM7NjYxNywxMiBAQCBzdGF0aWMgaW50IGF0aDEya19wdWxsX3JvYW1fZXYoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgYXRoMTJrICphciwgaW50IGZyZXEpCiYjNDM7c3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGZyZXEpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7Ci0Jc3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhdGgxMmtfYXJfdG9faHcoYXIpOwogCWludCBiYW5kLCBjaCwgaWR4ID0gMDsKIAogCWZvciAoYmFuZCA9IE5MODAyMTFfQkFORF8yR0haOyBiYW5kICZsdDsgTlVNX05MODAyMTFfQkFORFM7IGJhbmQmIzQzOyYjNDM7KSB7Ci0JCWlmICghYXItJmd0O21hYy5zYmFuZHNbYmFuZF0uY2hhbm5lbHMpCi0JCQljb250aW51ZTsKLQogCQlzYmFuZCA9IGh3LSZndDt3aXBoeS0mZ3Q7YmFuZHNbYmFuZF07CiAJCWlmICghc2JhbmQpCiAJCQljb250aW51ZTsKQEAgLTc1MDcsNiAmIzQzOzc1MDMsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJc3RydWN0IHdtaV9jaGFuX2luZm9fZXZlbnQgY2hfaW5mb19ldiA9IHt9OwogCXN0cnVjdCBhdGgxMmsgKmFyOwomIzQzOwlzdHJ1Y3QgYXRoMTJrX2h3ICphaDsKIAlzdHJ1Y3Qgc3VydmV5X2luZm8gKnN1cnZleTsKIAlpbnQgaWR4OwogCS8qIEhXIGNoYW5uZWwgY291bnRlcnMgZnJlcXVlbmN5IHZhbHVlIGluIGhlcnR6ICovCkBAIC03NTM4LDYgJiM0Mzs3NTM1LDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQlyZXR1cm47CiAJfQogCXNwaW5fbG9ja19iaCgmYW1wO2FyLSZndDtkYXRhX2xvY2spOwomIzQzOwlhaCA9IGF0aDEya19hcl90b19haChhcik7CiAKIAlzd2l0Y2ggKGFyLSZndDtzY2FuLnN0YXRlKSB7CiAJY2FzZSBBVEgxMktfU0NBTl9JRExFOgpAQCAtNzU0OSw4ICYjNDM7NzU0Nyw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJYnJlYWs7CiAJfQogCi0JaWR4ID0gZnJlcV90b19pZHgoYXIsIGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuZnJlcSkpOwotCWlmIChpZHggJmd0Oz0gQVJSQVlfU0laRShhci0mZ3Q7c3VydmV5KSkgewomIzQzOwlpZHggPSBmcmVxX3RvX2lkeChhdGgxMmtfYXJfdG9faHcoYXIpLCBsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmZyZXEpKTsKJiM0MzsJaWYgKGlkeCAmZ3Q7PSBBUlJBWV9TSVpFKGFoLSZndDtzdXJ2ZXkpKSB7CiAJCWF0aDEya193YXJuKGFiLCAmIzM0O2NoYW4gaW5mbzogaW52YWxpZCBmcmVxdWVuY3kgJWQgKGlkeCAlZCBvdXQgb2YgYm91bmRzKVxuJiMzNDssCiAJCQkgICAgY2hfaW5mb19ldi5mcmVxLCBpZHgpOwogCQlnb3RvIGV4aXQ7CkBAIC03NTYzLDE0ICYjNDM7NzU2MSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpCiAJCWNjX2ZyZXFfaHogPSAobGUzMl90b19jcHUoY2hfaW5mb19ldi5tYWNfY2xrX21oeikgKiAxMDAwKTsKIAogCWlmIChjaF9pbmZvX2V2LmNtZF9mbGFncyA9PSBXTUlfQ0hBTl9JTkZPX1NUQVJUX1JFU1ApIHsKLQkJc3VydmV5ID0gJmFtcDthci0mZ3Q7c3VydmV5W2lkeF07Ci0JCW1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7Ci0JCXN1cnZleS0mZ3Q7bm9pc2UgPSBsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTsKLQkJc3VydmV5LSZndDtmaWxsZWQgPSBTVVJWRVlfSU5GT19OT0lTRV9EQk0gfCBTVVJWRVlfSU5GT19USU1FIHwKJiM0MzsJCXNjb3BlZF9ndWFyZChzcGlubG9ja19iaCwgJmFtcDthaC0mZ3Q7c3VydmV5X2xvY2spIHsKJiM0MzsJCQlzdXJ2ZXkgPSAmYW1wO2FoLSZndDtzdXJ2ZXlbaWR4XTsKJiM0MzsJCQltZW1zZXQoc3VydmV5LCAwLCBzaXplb2YoKnN1cnZleSkpOwomIzQzOwkJCXN1cnZleS0mZ3Q7bm9pc2UgPSBsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTsKJiM0MzsJCQlzdXJ2ZXktJmd0O2ZpbGxlZCA9IFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8IFNVUlZFWV9JTkZPX1RJTUUgfAogCQkJCSBTVVJWRVlfSU5GT19USU1FX0JVU1k7Ci0JCXN1cnZleS0mZ3Q7dGltZSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5jeWNsZV9jb3VudCksIGNjX2ZyZXFfaHopOwotCQlzdXJ2ZXktJmd0O3RpbWVfYnVzeSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5yeF9jbGVhcl9jb3VudCksCi0JCQkJCSAgICBjY19mcmVxX2h6KTsKJiM0MzsJCQlzdXJ2ZXktJmd0O3RpbWUgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuY3ljbGVfY291bnQpLCBjY19mcmVxX2h6KTsKJiM0MzsJCQlzdXJ2ZXktJmd0O3RpbWVfYnVzeSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5yeF9jbGVhcl9jb3VudCksCiYjNDM7CQkJCQkJICAgIGNjX2ZyZXFfaHopOwomIzQzOwkJfQogCX0KIGV4aXQ6CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKQEAgLTc1ODMsNiAmIzQzOzc1ODMsNyBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpCiAJc3RydWN0IHdtaV9wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQgYnNzX2NoX2luZm9fZXYgPSB7fTsKIAlzdHJ1Y3Qgc3VydmV5X2luZm8gKnN1cnZleTsKIAlzdHJ1Y3QgYXRoMTJrICphcjsKJiM0MzsJc3RydWN0IGF0aDEya19odyAqYWg7CiAJdTMyIGNjX2ZyZXFfaHogPSBhYi0mZ3Q7Y2NfZnJlcV9oejsKIAl1NjQgYnVzeSwgdG90YWwsIHR4LCByeCwgcnhfYnNzOwogCWludCBpZHg7CkBAIC03NjIzLDE1ICYjNDM7NzYyNCwxOCBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpCiAJCXJldHVybjsKIAl9CiAKLQlzcGluX2xvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKLQlpZHggPSBmcmVxX3RvX2lkeChhciwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpOwotCWlmIChpZHggJmd0Oz0gQVJSQVlfU0laRShhci0mZ3Q7c3VydmV5KSkgewomIzQzOwlhaCA9IGF0aDEya19hcl90b19haChhcik7CiYjNDM7CiYjNDM7CWd1YXJkKHNwaW5sb2NrX2JoKSgmYW1wO2FoLSZndDtzdXJ2ZXlfbG9jayk7CiYjNDM7CiYjNDM7CWlkeCA9IGZyZXFfdG9faWR4KGF0aDEya19hcl90b19odyhhciksIGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2LmZyZXEpKTsKJiM0MzsJaWYgKGlkeCAmZ3Q7PSBBUlJBWV9TSVpFKGFoLSZndDtzdXJ2ZXkpKSB7CiAJCWF0aDEya193YXJuKGFiLCAmIzM0O2JzcyBjaGFuIGluZm86IGludmFsaWQgZnJlcXVlbmN5ICVkIChpZHggJWQgb3V0IG9mIGJvdW5kcylcbiYjMzQ7LAogCQkJICAgIGJzc19jaF9pbmZvX2V2LmZyZXEsIGlkeCk7CiAJCWdvdG8gZXhpdDsKIAl9CiAKLQlzdXJ2ZXkgPSAmYW1wO2FyLSZndDtzdXJ2ZXlbaWR4XTsKJiM0MzsJc3VydmV5ID0gJmFtcDthaC0mZ3Q7c3VydmV5W2lkeF07CiAKIAlzdXJ2ZXktJmd0O25vaXNlICAgICA9IGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTsKIAlzdXJ2ZXktJmd0O3RpbWUgICAgICA9IGRpdl91NjQodG90YWwsIGNjX2ZyZXFfaHopOwpAQCAtNzY0NCw3ICYjNDM7NzY0OCw2IEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJCSAgICAgU1VSVkVZX0lORk9fVElNRV9SWCB8CiAJCQkgICAgIFNVUlZFWV9JTkZPX1RJTUVfVFgpOwogZXhpdDoKLQlzcGluX3VubG9ja19iaCgmYW1wO2FyLSZndDtkYXRhX2xvY2spOwogCWNvbXBsZXRlKCZhbXA7YXItJmd0O2Jzc19zdXJ2ZXlfZG9uZSk7CiAKIAlyY3VfcmVhZF91bmxvY2soKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA4OQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDYyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBhbiBhdGgxMmsgUGF0Y2ggaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgYGF0aDEya2Agd2lyZWxlc3MgZHJpdmVyLiBJdCYjMzk7cyBtb3ZpbmcgdGhlIGBzdXJ2ZXlgIGFycmF5IGFuZCBhZGRpbmcgYSBsb2NrLCBhbmQgaXQgdG91Y2hlcyBhIGZldyBrZXkgZnVuY3Rpb25zOiBgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5YCwgYGF0aDEya19tYWNfaHdfYWxsb2NhdGVgLCBgZnJlcV90b19pZHhgLCBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAsIGFuZCBgYXRoMTJrX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIEkgZXZlbiAqZ2V0KiB0byB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VPwoKYGF0aDEya2AgaXMgYSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcywgc3BlY2lmaWNhbGx5IFBDSWUgb3IgQUhCIGJhc2VkLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgaGFyZHdhcmUtc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVycywgbGlrZSBgYXRoMTBrYCwgYGF0aDExa2AsIGBpd2x3aWZpYCwgdGhlc2UgYXJlIHVzdWFsbHkgYSBuby1nbyBpbiB2aXJ0dWFsaXphdGlvbiB1bmxlc3MgeW91JiMzOTtyZSBkb2luZyBmdWxsIGhhcmR3YXJlIHBhc3MtdGhyb3VnaCBvciBoYXZlIGEgc29saWQgZW11bGF0aW9uIHNldHVwLiBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGFuIGBhdGgxMmtgIGVtdWxhdG9yLCBhbmQgYG1hYzgwMjExX2h3c2ltYCBlbXVsYXRlcyBnZW5lcmljIG1hYzgwMjExIGRldmljZXMsIG5vdCB0aGlzIHNwZWNpZmljIFF1YWxjb21tIGhhcmR3YXJlLgoKV2FpdCwgU3l6a2FsbGVy4oCmZG9lc24mIzM5O3QgaXQgaGF2ZSAqc29tZSogUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBtYXliZSB1c2luZyB2aGNpL3ZmaW8/IFdvcnRoIGEgc2hvdC4gT2theSwgeWVzLCBpdCBkb2VzLCBidXQgaXMgaXQgZW5vdWdoIHRvIGFjdHVhbGx5IHRyaWdnZXIgdGhlIGZ1bmN0aW9ucyB0aGlzIHBhdGNoIG1vZGlmaWVzPyBUaGUgY29kZSBpcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9gLiAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBQQ0kgZnV6emluZyBjYW4gZXZlbiByZWFjaCBzb21ldGhpbmcgbGlrZSBgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5YCBvciBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAuIEhtbSwgYGF0aDEya19jaGFuX2luZm9fZXZlbnRgIGlzIGNhbGxlZCBmcm9tIFdNSSBldmVudCBwcm9jZXNzaW5nLiAgV01JIGV2ZW50cyBjb21lIGZyb20gdGhlIGZpcm13YXJlLCByaWdodD8gIElmIFN5emthbGxlciBjYW4gaW5qZWN0IFBDSSByZXNwb25zZXMsIGNvdWxkIHRoYXQgKnBvdGVudGlhbGx5KiB0cmlnZ2VyIFdNSSBldmVudHM/IFRoYXTigJlzIGEgbG9uZyBzaG90LgoKVGhpbmtpbmcgYWJvdXQgaXQgbW9yZSwgU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIGlzIHVzdWFsbHkgcHJldHR5IGxpbWl0ZWQsIGFuZCB3aXRoIGEgY29tcGxleCBkZXZpY2UgbGlrZSBgYXRoMTJrYCwgaXQgcHJvYmFibHkgd29uJiMzOTt0IGdldCBwYXN0IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHN0YWdlLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3Mgb3IgbWVudGlvbnMgb2YgYGF0aDEya2Agd2l0aGluIFN5emthbGxlci4gSXQgZG9lcyBoYXZlIGEgYHdpZmlgIGZ1enplciAod2hpY2ggdXNlcyBtYWM4MDIxMV9od3NpbSksIGJ1dCB0aGF04oCZcyBub3QgdGFyZ2V0ZWQgYXQgbXkgZHJpdmVyLiBOb3csIEkgcmVtZW1iZXIgdGhhdCBTeXprYWxsZXIgKmRvZXMqIGZ1enogc29tZSBQQ0kgZHJpdmVycywgYnV0IHVzdWFsbHksIGRyaXZlcnMgdGhpcyBoYXJkd2FyZS1zcGVjaWZpYyBhcmVu4oCZdCB3b3J0aCBmdXp6aW5nIHVubGVzcyB0aGVyZSYjMzk7cyBzb2Z0d2FyZSBlbXVsYXRpb24gKGxpa2UgYG1hYzgwMjExX2h3c2ltYCwgYHZrbXNgLCBgc25kLWR1bW15YCkgb3IgaXTigJlzIFVTQiBmdXp6aW5nIChzaW5jZSBVU0IgaXMgZWFzaWx5IGVtdWxhdGVkKS4gSXMgYGF0aDEya2AgVVNCPyBOb3BlLCBQQ0llL0FIQi4gU28sIGl0IGxvb2tzIGxpa2UgaXQgaXMgZ29pbmcgdG8gYmUgZGlmZmljdWx0IHRvIHJ1biB0aGUgY29kZSBpbiBhIGVtdWxhdGVkIGVudmlyb25tZW50LiBUaW1lIHRvIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVEgxMksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjpjb25maWcgQVRIMTJLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIFRlY2hub2xvZ2llcyBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTc6Y29uZmlnIEFUSDEyS19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7UVRJIGF0aDEyayBBSEIgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyNTpjb25maWcgQVRIMTJLX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjYtXHRib29sIFwmIzM0O2F0aDEyayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzU6Y29uZmlnIEFUSDEyS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzYtXHRib29sIFwmIzM0O1FUSSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ0OmNvbmZpZyBBVEgxMktfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ1LVx0Ym9vbCBcJiMzNDthdGgxMmsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjUzOmNvbmZpZyBBVEgxMktfQ09SRURVTVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7YXRoMTJrIGNvcmVkdW1wXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk0NwoJCQkJCQkJb3V0cHV0OiAxMjAKCQkJCQkJCXRob3VnaHRzOiAzNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgV29ydGhGdXp6aW5nIEZsYWcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtQQ0llL0FIQiBkcml2ZXIsIGludGVyZXN0aW5nLiYjMzQ7IEJ1dCB0aGVuIEkgc2VlIHRoZSBtZW50aW9uIG9mIGBhdGgxMmtgIGFuZCB0aGluZ3Mgc3RhcnQgdG8gY2xpY2suIEl0JiMzOTtzIGNsZWFyIHRoYXQgdGhpcyBpcyB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlLCBRdWFsY29tbSBXaS1GaSA3IHRvIGJlIGV4YWN0LiBUaGUgdGV4dCBpcyBlbXBoYXNpemluZyB0aGF0IGl0JiMzOTtzICppbXBvc3NpYmxlKiB0byByZWFjaCBzcGVjaWZpYyBjb2RlIHBhdGhzIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uIG9mIHRoZSBoYXJkd2FyZS4gQW5kIGl0IHJpZ2h0bHkgcG9pbnRzIG91dCB0aGF0IGBhdGgxMmtgIGRvZXNuJiMzOTt0IGhhdmUgYW4gZXF1aXZhbGVudCB0byBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBUaGF0JiMzOTtzIGEgaHVnZSBmbGFnLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2guIElzIHRoZXJlICphbnkqIGF0aDEyayBlbXVsYXRvciBraWNraW5nIGFyb3VuZD8gTm9wZSwgbm90IHRoYXQgSSYjMzk7bSBhd2FyZSBvZi4gV2hhdCBhYm91dCBzeXprYWxsZXI/IERvZXMgaXQgdGFyZ2V0IGF0aDEyayBzcGVjaWZpY2FsbHk/IE9rYXksIHN5emthbGxlciBkb2VzIHNvbWUgUENJIGZ1enppbmcsIGJ1dCBpdCYjMzk7cyBwcmV0dHkgYmFzaWMsIGFuZCBpdCBzb3VuZHMgbGlrZSBpdCB3b3VsZCBoaXQgYSB3YWxsIHdpdGggdGhlIGZpcm13YXJlIGxvYWRpbmcgZm9yIGEgY29tcGxleCBkZXZpY2UgbGlrZSB0aGlzLiBUaGUgdGV4dCBpcyBzdXBlciBjbGVhciwgJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4mIzM0OyBTbyB0aGF0IHByZXR0eSBtdWNoIGNlbWVudHMgaXQuCgpPa2F5LCB0aW1lIHRvIHdyaXRlIGl0IG91dCBmb3JtYWxseS4gVGhlIHJlYXNvbmluZyBoZXJlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgYGF0aDEya2Agd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBpcyBoYXJkd2FyZS1zcGVjaWZpYyAoUXVhbGNvbW0gV2ktRmkgNywgUENJZS9BSEIpLiBCZWNhdXNlIGl0ICpuZWVkcyogcGh5c2ljYWwgaGFyZHdhcmUgYW5kIGhhcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gbGlrZSBgbWFjODAyMTFfaHdzaW1gIG9yIFVTQiBnYWRnZXQsIGFueSBvZiBpdHMgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoaXMgbWVhbnMsIHdlIHNob3VsZG4mIzM5O3QgZnV6eiB0aGlzLiBXb3J0aEZ1enppbmcgc2hvdWxkIGJlIHNldCB0byBmYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBsYWNrcyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCAodW5saWtlIG1hYzgwMjExX2h3c2ltIG9yIFVTQiBnYWRnZXQpLCBpdHMgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoZXJlZm9yZSwgaXQgY2Fubm90IGJlIGVmZmVjdGl2ZWx5IGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBsYWNrcyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCAodW5saWtlIG1hYzgwMjExX2h3c2ltIG9yIFVTQiBnYWRnZXQpLCBpdHMgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoZXJlZm9yZSwgaXQgY2Fubm90IGJlIGVmZmVjdGl2ZWx5IGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1NDo0NC4wNDM2NzM3NjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODEyNzQzODg2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayB3aXJlbGVzcyBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMgKFBDSWUvQUhCKS4gU2luY2UgdGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIGxhY2tzIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiB0aGUga2VybmVsICh1bmxpa2UgbWFjODAyMTFfaHdzaW0gb3IgVVNCIGdhZGdldCksIGl0cyBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gVGhlcmVmb3JlLCBpdCBjYW5ub3QgYmUgZWZmZWN0aXZlbHkgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTQ6NDQuMDQzNjc4MDYzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTc4NTg3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5MzdiOGQ1N2ZmMDFkMDIzZWExZjg0YTlmN2M5ZDRiMjdiOWFiNjY2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMTQ6NTQ6NDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxcbmluZGV4IDhiZTQzNTUzNWE0ZThiLi42Y2UyZjdiM2ZhNTAxMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXFxuQEAgLTcxMiw3ICs3MTIsNiBAQCBzdHJ1Y3QgYXRoMTJrIHtcXG4gXFx0ICogYXZvaWQgcmVwb3J0aW5nIGdhcmJhZ2UgZGF0YS5cXG4gXFx0ICovXFxuIFxcdGJvb2wgY2hfaW5mb19jYW5fcmVwb3J0X3N1cnZleTtcXG4tXFx0c3RydWN0IHN1cnZleV9pbmZvIHN1cnZleVtBVEgxMktfTlVNX0NIQU5TXTtcXG4gXFx0c3RydWN0IGNvbXBsZXRpb24gYnNzX3N1cnZleV9kb25lO1xcbiBcXG4gXFx0c3RydWN0IHdvcmtfc3RydWN0IHJlZ2RfdXBkYXRlX3dvcms7XFxuQEAgLTc3NCw2ICs3NzMsMTEgQEAgc3RydWN0IGF0aDEya19odyB7XFxuIFxcdCAqL1xcbiBcXHRzdHJ1Y3QgbXV0ZXggaHdfbXV0ZXg7XFxuIFxcdGVudW0gYXRoMTJrX2h3X3N0YXRlIHN0YXRlO1xcbitcXG4rXFx0LyogcHJvdGVjdHMgc3VydmV5W10gc2hhcmVkIGFjcm9zcyByYWRpb3Mgb2YgdGhpcyBody4gKi9cXG4rXFx0c3BpbmxvY2tfdCBzdXJ2ZXlfbG9jaztcXG4rXFx0c3RydWN0IHN1cnZleV9pbmZvIHN1cnZleVtBVEgxMktfTlVNX0NIQU5TXTtcXG4rXFxuIFxcdGJvb2wgcmVnZF91cGRhdGVkO1xcbiBcXHRib29sIHVzZV82Z2h6X3JlZ2Q7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbmluZGV4IDJjZmY5NDg1Yzk1YWZiLi5kYWY5YmM4NzIyZGZiYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbkBAIC0xMzM0OCw1MiArMTMzNDgsNTQgQEAgYXRoMTJrX21hY191cGRhdGVfYnNzX2NoYW5fc3VydmV5KHN0cnVjdCBhdGgxMmsgKmFyLFxcbiBpbnQgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgaWR4LFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5KVxcbiB7XFxuK1xcdHN0cnVjdCBhdGgxMmtfaHcgKmFoID0gaHctXFx1MDAzZXByaXY7XFxuIFxcdHN0cnVjdCBhdGgxMmsgKmFyO1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcXG4tXFx0c3RydWN0IHN1cnZleV9pbmZvICphcl9zdXJ2ZXk7XFxuK1xcdHN0cnVjdCBzdXJ2ZXlfaW5mbyAqYWhfc3VydmV5O1xcbitcXHRpbnQgc2JhbmRfaWR4ID0gaWR4O1xcbiBcXG4gXFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctXFx1MDAzZXdpcGh5KTtcXG4gXFxuLVxcdGlmIChpZHggXFx1MDAzZT0gQVRIMTJLX05VTV9DSEFOUylcXG4rXFx0aWYgKHNiYW5kX2lkeCBcXHUwMDNlPSBBVEgxMktfTlVNX0NIQU5TKVxcbiBcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gXFxuIFxcdHNiYW5kID0gaHctXFx1MDAzZXdpcGh5LVxcdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfMkdIWl07XFxuLVxcdGlmIChzYmFuZCBcXHUwMDI2XFx1MDAyNiBpZHggXFx1MDAzZT0gc2JhbmQtXFx1MDAzZW5fY2hhbm5lbHMpIHtcXG4tXFx0XFx0aWR4IC09IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzO1xcbitcXHRpZiAoc2JhbmQgXFx1MDAyNlxcdTAwMjYgc2JhbmRfaWR4IFxcdTAwM2U9IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzKSB7XFxuK1xcdFxcdHNiYW5kX2lkeCAtPSBzYmFuZC1cXHUwMDNlbl9jaGFubmVscztcXG4gXFx0XFx0c2JhbmQgPSBOVUxMO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoIXNiYW5kKVxcbiBcXHRcXHRzYmFuZCA9IGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlYmFuZHNbTkw4MDIxMV9CQU5EXzVHSFpdO1xcbi1cXHRpZiAoc2JhbmQgXFx1MDAyNlxcdTAwMjYgaWR4IFxcdTAwM2U9IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzKSB7XFxuLVxcdFxcdGlkeCAtPSBzYmFuZC1cXHUwMDNlbl9jaGFubmVscztcXG4rXFx0aWYgKHNiYW5kIFxcdTAwMjZcXHUwMDI2IHNiYW5kX2lkeCBcXHUwMDNlPSBzYmFuZC1cXHUwMDNlbl9jaGFubmVscykge1xcbitcXHRcXHRzYmFuZF9pZHggLT0gc2JhbmQtXFx1MDAzZW5fY2hhbm5lbHM7XFxuIFxcdFxcdHNiYW5kID0gTlVMTDtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKCFzYmFuZClcXG4gXFx0XFx0c2JhbmQgPSBody1cXHUwMDNld2lwaHktXFx1MDAzZWJhbmRzW05MODAyMTFfQkFORF82R0haXTtcXG4gXFxuLVxcdGlmICghc2JhbmQgfHwgaWR4IFxcdTAwM2U9IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzKVxcbitcXHRpZiAoIXNiYW5kIHx8IHNiYW5kX2lkeCBcXHUwMDNlPSBzYmFuZC1cXHUwMDNlbl9jaGFubmVscylcXG4gXFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuIFxcbi1cXHRhciA9IGF0aDEya19tYWNfZ2V0X2FyX2J5X2NoYW4oaHcsIFxcdTAwMjZzYmFuZC1cXHUwMDNlY2hhbm5lbHNbaWR4XSk7XFxuK1xcdGFyID0gYXRoMTJrX21hY19nZXRfYXJfYnlfY2hhbihodywgXFx1MDAyNnNiYW5kLVxcdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdKTtcXG4gXFx0aWYgKCFhcikge1xcbi1cXHRcXHRpZiAoc2JhbmQtXFx1MDAzZWNoYW5uZWxzW2lkeF0uZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRCkge1xcbitcXHRcXHRpZiAoc2JhbmQtXFx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF0uZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRCkge1xcbiBcXHRcXHRcXHRtZW1zZXQoc3VydmV5LCAwLCBzaXplb2YoKnN1cnZleSkpO1xcbiBcXHRcXHRcXHRyZXR1cm4gMDtcXG4gXFx0XFx0fVxcbiBcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gXFx0fVxcbiBcXG4tXFx0YXJfc3VydmV5ID0gXFx1MDAyNmFyLVxcdTAwM2VzdXJ2ZXlbaWR4XTtcXG4rXFx0YWhfc3VydmV5ID0gXFx1MDAyNmFoLVxcdTAwM2VzdXJ2ZXlbaWR4XTtcXG4gXFxuLVxcdGF0aDEya19tYWNfdXBkYXRlX2Jzc19jaGFuX3N1cnZleShhciwgXFx1MDAyNnNiYW5kLVxcdTAwM2VjaGFubmVsc1tpZHhdKTtcXG4rXFx0YXRoMTJrX21hY191cGRhdGVfYnNzX2NoYW5fc3VydmV5KGFyLCBcXHUwMDI2c2JhbmQtXFx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF0pO1xcbiBcXG4tXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4tXFx0bWVtY3B5KHN1cnZleSwgYXJfc3VydmV5LCBzaXplb2YoKnN1cnZleSkpO1xcbi1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuK1xcdHNjb3BlZF9ndWFyZChzcGlubG9ja19iaCwgXFx1MDAyNmFoLVxcdTAwM2VzdXJ2ZXlfbG9jaykge1xcbitcXHRcXHRtZW1jcHkoc3VydmV5LCBhaF9zdXJ2ZXksIHNpemVvZigqc3VydmV5KSk7XFxuK1xcdH1cXG4gXFxuLVxcdHN1cnZleS1cXHUwMDNlY2hhbm5lbCA9IFxcdTAwMjZzYmFuZC1cXHUwMDNlY2hhbm5lbHNbaWR4XTtcXG4rXFx0c3VydmV5LVxcdTAwM2VjaGFubmVsID0gXFx1MDAyNnNiYW5kLVxcdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdO1xcbiBcXG4gXFx0aWYgKGFyLVxcdTAwM2VyeF9jaGFubmVsID09IHN1cnZleS1cXHUwMDNlY2hhbm5lbClcXG4gXFx0XFx0c3VydmV5LVxcdTAwM2VmaWxsZWQgfD0gU1VSVkVZX0lORk9fSU5fVVNFO1xcbkBAIC0xNTA1NSw2ICsxNTA1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2h3ICphdGgxMmtfbWFjX2h3X2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnLFxcbiBcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2YWgtXFx1MDAzZWh3X211dGV4KTtcXG4gXFxuK1xcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZhaC1cXHUwMDNlc3VydmV5X2xvY2spO1xcbiBcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2YWgtXFx1MDAzZWRwX2h3LnBlZXJfbG9jayk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZhaC1cXHUwMDNlZHBfaHcuZHBfcGVlcnNfbGlzdCk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xcbmluZGV4IGI1ZTkwNGE1NWFlYWJiLi5hYTcwZDJhNjFkMzgwMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xcbkBAIC02NjE3LDE2ICs2NjE3LDEyIEBAIHN0YXRpYyBpbnQgYXRoMTJrX3B1bGxfcm9hbV9ldihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgYXRoMTJrICphciwgaW50IGZyZXEpXFxuK3N0YXRpYyBpbnQgZnJlcV90b19pZHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCBmcmVxKVxcbiB7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xcbi1cXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IGF0aDEya19hcl90b19odyhhcik7XFxuIFxcdGludCBiYW5kLCBjaCwgaWR4ID0gMDtcXG4gXFxuIFxcdGZvciAoYmFuZCA9IE5MODAyMTFfQkFORF8yR0haOyBiYW5kIFxcdTAwM2MgTlVNX05MODAyMTFfQkFORFM7IGJhbmQrKykge1xcbi1cXHRcXHRpZiAoIWFyLVxcdTAwM2VtYWMuc2JhbmRzW2JhbmRdLmNoYW5uZWxzKVxcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFxuIFxcdFxcdHNiYW5kID0gaHctXFx1MDAzZXdpcGh5LVxcdTAwM2ViYW5kc1tiYW5kXTtcXG4gXFx0XFx0aWYgKCFzYmFuZClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuQEAgLTc1MDcsNiArNzUwMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbiBcXHRzdHJ1Y3Qgd21pX2NoYW5faW5mb19ldmVudCBjaF9pbmZvX2V2ID0ge307XFxuIFxcdHN0cnVjdCBhdGgxMmsgKmFyO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaDtcXG4gXFx0c3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXk7XFxuIFxcdGludCBpZHg7XFxuIFxcdC8qIEhXIGNoYW5uZWwgY291bnRlcnMgZnJlcXVlbmN5IHZhbHVlIGluIGhlcnR6ICovXFxuQEAgLTc1MzgsNiArNzUzNSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuK1xcdGFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTtcXG4gXFxuIFxcdHN3aXRjaCAoYXItXFx1MDAzZXNjYW4uc3RhdGUpIHtcXG4gXFx0Y2FzZSBBVEgxMktfU0NBTl9JRExFOlxcbkBAIC03NTQ5LDggKzc1NDcsOCBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIFxcbi1cXHRpZHggPSBmcmVxX3RvX2lkeChhciwgbGUzMl90b19jcHUoY2hfaW5mb19ldi5mcmVxKSk7XFxuLVxcdGlmIChpZHggXFx1MDAzZT0gQVJSQVlfU0laRShhci1cXHUwMDNlc3VydmV5KSkge1xcbitcXHRpZHggPSBmcmVxX3RvX2lkeChhdGgxMmtfYXJfdG9faHcoYXIpLCBsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmZyZXEpKTtcXG4rXFx0aWYgKGlkeCBcXHUwMDNlPSBBUlJBWV9TSVpFKGFoLVxcdTAwM2VzdXJ2ZXkpKSB7XFxuIFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiY2hhbiBpbmZvOiBpbnZhbGlkIGZyZXF1ZW5jeSAlZCAoaWR4ICVkIG91dCBvZiBib3VuZHMpXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgICAgY2hfaW5mb19ldi5mcmVxLCBpZHgpO1xcbiBcXHRcXHRnb3RvIGV4aXQ7XFxuQEAgLTc1NjMsMTQgKzc1NjEsMTYgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHRjY19mcmVxX2h6ID0gKGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubWFjX2Nsa19taHopICogMTAwMCk7XFxuIFxcbiBcXHRpZiAoY2hfaW5mb19ldi5jbWRfZmxhZ3MgPT0gV01JX0NIQU5fSU5GT19TVEFSVF9SRVNQKSB7XFxuLVxcdFxcdHN1cnZleSA9IFxcdTAwMjZhci1cXHUwMDNlc3VydmV5W2lkeF07XFxuLVxcdFxcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XFxuLVxcdFxcdHN1cnZleS1cXHUwMDNlbm9pc2UgPSBsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTtcXG4tXFx0XFx0c3VydmV5LVxcdTAwM2VmaWxsZWQgPSBTVVJWRVlfSU5GT19OT0lTRV9EQk0gfCBTVVJWRVlfSU5GT19USU1FIHxcXG4rXFx0XFx0c2NvcGVkX2d1YXJkKHNwaW5sb2NrX2JoLCBcXHUwMDI2YWgtXFx1MDAzZXN1cnZleV9sb2NrKSB7XFxuK1xcdFxcdFxcdHN1cnZleSA9IFxcdTAwMjZhaC1cXHUwMDNlc3VydmV5W2lkeF07XFxuK1xcdFxcdFxcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XFxuK1xcdFxcdFxcdHN1cnZleS1cXHUwMDNlbm9pc2UgPSBsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTtcXG4rXFx0XFx0XFx0c3VydmV5LVxcdTAwM2VmaWxsZWQgPSBTVVJWRVlfSU5GT19OT0lTRV9EQk0gfCBTVVJWRVlfSU5GT19USU1FIHxcXG4gXFx0XFx0XFx0XFx0IFNVUlZFWV9JTkZPX1RJTUVfQlVTWTtcXG4tXFx0XFx0c3VydmV5LVxcdTAwM2V0aW1lID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmN5Y2xlX2NvdW50KSwgY2NfZnJlcV9oeik7XFxuLVxcdFxcdHN1cnZleS1cXHUwMDNldGltZV9idXN5ID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LnJ4X2NsZWFyX2NvdW50KSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIGNjX2ZyZXFfaHopO1xcbitcXHRcXHRcXHRzdXJ2ZXktXFx1MDAzZXRpbWUgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuY3ljbGVfY291bnQpLCBjY19mcmVxX2h6KTtcXG4rXFx0XFx0XFx0c3VydmV5LVxcdTAwM2V0aW1lX2J1c3kgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYucnhfY2xlYXJfY291bnQpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgY2NfZnJlcV9oeik7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBleGl0OlxcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuQEAgLTc1ODMsNiArNzU4Myw3IEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0c3RydWN0IHdtaV9wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQgYnNzX2NoX2luZm9fZXYgPSB7fTtcXG4gXFx0c3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXk7XFxuIFxcdHN0cnVjdCBhdGgxMmsgKmFyO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaDtcXG4gXFx0dTMyIGNjX2ZyZXFfaHogPSBhYi1cXHUwMDNlY2NfZnJlcV9oejtcXG4gXFx0dTY0IGJ1c3ksIHRvdGFsLCB0eCwgcngsIHJ4X2JzcztcXG4gXFx0aW50IGlkeDtcXG5AQCAtNzYyMywxNSArNzYyNCwxOCBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXG4tXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4tXFx0aWR4ID0gZnJlcV90b19pZHgoYXIsIGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2LmZyZXEpKTtcXG4tXFx0aWYgKGlkeCBcXHUwMDNlPSBBUlJBWV9TSVpFKGFyLVxcdTAwM2VzdXJ2ZXkpKSB7XFxuK1xcdGFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTtcXG4rXFxuK1xcdGd1YXJkKHNwaW5sb2NrX2JoKShcXHUwMDI2YWgtXFx1MDAzZXN1cnZleV9sb2NrKTtcXG4rXFxuK1xcdGlkeCA9IGZyZXFfdG9faWR4KGF0aDEya19hcl90b19odyhhciksIGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2LmZyZXEpKTtcXG4rXFx0aWYgKGlkeCBcXHUwMDNlPSBBUlJBWV9TSVpFKGFoLVxcdTAwM2VzdXJ2ZXkpKSB7XFxuIFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiYnNzIGNoYW4gaW5mbzogaW52YWxpZCBmcmVxdWVuY3kgJWQgKGlkeCAlZCBvdXQgb2YgYm91bmRzKVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0ICAgIGJzc19jaF9pbmZvX2V2LmZyZXEsIGlkeCk7XFxuIFxcdFxcdGdvdG8gZXhpdDtcXG4gXFx0fVxcbiBcXG4tXFx0c3VydmV5ID0gXFx1MDAyNmFyLVxcdTAwM2VzdXJ2ZXlbaWR4XTtcXG4rXFx0c3VydmV5ID0gXFx1MDAyNmFoLVxcdTAwM2VzdXJ2ZXlbaWR4XTtcXG4gXFxuIFxcdHN1cnZleS1cXHUwMDNlbm9pc2UgICAgID0gbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xcbiBcXHRzdXJ2ZXktXFx1MDAzZXRpbWUgICAgICA9IGRpdl91NjQodG90YWwsIGNjX2ZyZXFfaHopO1xcbkBAIC03NjQ0LDcgKzc2NDgsNiBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdFxcdCAgICAgU1VSVkVZX0lORk9fVElNRV9SWCB8XFxuIFxcdFxcdFxcdCAgICAgU1VSVkVZX0lORk9fVElNRV9UWCk7XFxuIGV4aXQ6XFxuLVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4gXFx0Y29tcGxldGUoXFx1MDAyNmFyLVxcdTAwM2Vic3Nfc3VydmV5X2RvbmUpO1xcbiBcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjU0OjQ0LjU0MjMxNTQ5NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc2Mjg3ODkxNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBsYWNrcyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCAodW5saWtlIG1hYzgwMjExX2h3c2ltIG9yIFVTQiBnYWRnZXQpLCBpdHMgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoZXJlZm9yZSwgaXQgY2Fubm90IGJlIGVmZmVjdGl2ZWx5IGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTM3YjhkNTdmZjAxZDAyM2VhMWY4NGE5ZjdjOWQ0YjI3YjlhYjY2NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMTQ6NTQ6NDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5pbmRleCA4YmU0MzU1MzVhNGU4Yi4uNmNlMmY3YjNmYTUwMTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbkBAIC03MTIsNyArNzEyLDYgQEAgc3RydWN0IGF0aDEyayB7XG4gXHQgKiBhdm9pZCByZXBvcnRpbmcgZ2FyYmFnZSBkYXRhLlxuIFx0ICovXG4gXHRib29sIGNoX2luZm9fY2FuX3JlcG9ydF9zdXJ2ZXk7XG4tXHRzdHJ1Y3Qgc3VydmV5X2luZm8gc3VydmV5W0FUSDEyS19OVU1fQ0hBTlNdO1xuIFx0c3RydWN0IGNvbXBsZXRpb24gYnNzX3N1cnZleV9kb25lO1xuIFxuIFx0c3RydWN0IHdvcmtfc3RydWN0IHJlZ2RfdXBkYXRlX3dvcms7XG5AQCAtNzc0LDYgKzc3MywxMSBAQCBzdHJ1Y3QgYXRoMTJrX2h3IHtcbiBcdCAqL1xuIFx0c3RydWN0IG11dGV4IGh3X211dGV4O1xuIFx0ZW51bSBhdGgxMmtfaHdfc3RhdGUgc3RhdGU7XG4rXG4rXHQvKiBwcm90ZWN0cyBzdXJ2ZXlbXSBzaGFyZWQgYWNyb3NzIHJhZGlvcyBvZiB0aGlzIGh3LiAqL1xuK1x0c3BpbmxvY2tfdCBzdXJ2ZXlfbG9jaztcbitcdHN0cnVjdCBzdXJ2ZXlfaW5mbyBzdXJ2ZXlbQVRIMTJLX05VTV9DSEFOU107XG4rXG4gXHRib29sIHJlZ2RfdXBkYXRlZDtcbiBcdGJvb2wgdXNlXzZnaHpfcmVnZDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggMmNmZjk0ODVjOTVhZmIuLmRhZjliYzg3MjJkZmJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuQEAgLTEzMzQ4LDUyICsxMzM0OCw1NCBAQCBhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoc3RydWN0IGF0aDEyayAqYXIsXG4gaW50IGF0aDEya19tYWNfb3BfZ2V0X3N1cnZleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGlkeCxcbiBcdFx0XHQgICAgIHN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5KVxuIHtcbitcdHN0cnVjdCBhdGgxMmtfaHcgKmFoID0gaHctXHUwMDNlcHJpdjtcbiBcdHN0cnVjdCBhdGgxMmsgKmFyO1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XG4tXHRzdHJ1Y3Qgc3VydmV5X2luZm8gKmFyX3N1cnZleTtcbitcdHN0cnVjdCBzdXJ2ZXlfaW5mbyAqYWhfc3VydmV5O1xuK1x0aW50IHNiYW5kX2lkeCA9IGlkeDtcbiBcbiBcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVx1MDAzZXdpcGh5KTtcbiBcbi1cdGlmIChpZHggXHUwMDNlPSBBVEgxMktfTlVNX0NIQU5TKVxuK1x0aWYgKHNiYW5kX2lkeCBcdTAwM2U9IEFUSDEyS19OVU1fQ0hBTlMpXG4gXHRcdHJldHVybiAtRU5PRU5UO1xuIFxuIFx0c2JhbmQgPSBody1cdTAwM2V3aXBoeS1cdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfMkdIWl07XG4tXHRpZiAoc2JhbmQgXHUwMDI2XHUwMDI2IGlkeCBcdTAwM2U9IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHMpIHtcbi1cdFx0aWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4rXHRpZiAoc2JhbmQgXHUwMDI2XHUwMDI2IHNiYW5kX2lkeCBcdTAwM2U9IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHMpIHtcbitcdFx0c2JhbmRfaWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4gXHRcdHNiYW5kID0gTlVMTDtcbiBcdH1cbiBcbiBcdGlmICghc2JhbmQpXG4gXHRcdHNiYW5kID0gaHctXHUwMDNld2lwaHktXHUwMDNlYmFuZHNbTkw4MDIxMV9CQU5EXzVHSFpdO1xuLVx0aWYgKHNiYW5kIFx1MDAyNlx1MDAyNiBpZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKSB7XG4tXHRcdGlkeCAtPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzO1xuK1x0aWYgKHNiYW5kIFx1MDAyNlx1MDAyNiBzYmFuZF9pZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKSB7XG4rXHRcdHNiYW5kX2lkeCAtPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzO1xuIFx0XHRzYmFuZCA9IE5VTEw7XG4gXHR9XG4gXG4gXHRpZiAoIXNiYW5kKVxuIFx0XHRzYmFuZCA9IGh3LVx1MDAzZXdpcGh5LVx1MDAzZWJhbmRzW05MODAyMTFfQkFORF82R0haXTtcbiBcbi1cdGlmICghc2JhbmQgfHwgaWR4IFx1MDAzZT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscylcbitcdGlmICghc2JhbmQgfHwgc2JhbmRfaWR4IFx1MDAzZT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscylcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXG4tXHRhciA9IGF0aDEya19tYWNfZ2V0X2FyX2J5X2NoYW4oaHcsIFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW2lkeF0pO1xuK1x0YXIgPSBhdGgxMmtfbWFjX2dldF9hcl9ieV9jaGFuKGh3LCBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdKTtcbiBcdGlmICghYXIpIHtcbi1cdFx0aWYgKHNiYW5kLVx1MDAzZWNoYW5uZWxzW2lkeF0uZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKSB7XG4rXHRcdGlmIChzYmFuZC1cdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdLmZsYWdzIFx1MDAyNiBJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRCkge1xuIFx0XHRcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XG4gXHRcdFx0cmV0dXJuIDA7XG4gXHRcdH1cbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXHR9XG4gXG4tXHRhcl9zdXJ2ZXkgPSBcdTAwMjZhci1cdTAwM2VzdXJ2ZXlbaWR4XTtcbitcdGFoX3N1cnZleSA9IFx1MDAyNmFoLVx1MDAzZXN1cnZleVtpZHhdO1xuIFxuLVx0YXRoMTJrX21hY191cGRhdGVfYnNzX2NoYW5fc3VydmV5KGFyLCBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tpZHhdKTtcbitcdGF0aDEya19tYWNfdXBkYXRlX2Jzc19jaGFuX3N1cnZleShhciwgXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbc2JhbmRfaWR4XSk7XG4gXG4tXHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbi1cdG1lbWNweShzdXJ2ZXksIGFyX3N1cnZleSwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbi1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4rXHRzY29wZWRfZ3VhcmQoc3BpbmxvY2tfYmgsIFx1MDAyNmFoLVx1MDAzZXN1cnZleV9sb2NrKSB7XG4rXHRcdG1lbWNweShzdXJ2ZXksIGFoX3N1cnZleSwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbitcdH1cbiBcbi1cdHN1cnZleS1cdTAwM2VjaGFubmVsID0gXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbaWR4XTtcbitcdHN1cnZleS1cdTAwM2VjaGFubmVsID0gXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbc2JhbmRfaWR4XTtcbiBcbiBcdGlmIChhci1cdTAwM2VyeF9jaGFubmVsID09IHN1cnZleS1cdTAwM2VjaGFubmVsKVxuIFx0XHRzdXJ2ZXktXHUwMDNlZmlsbGVkIHw9IFNVUlZFWV9JTkZPX0lOX1VTRTtcbkBAIC0xNTA1NSw2ICsxNTA1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2h3ICphdGgxMmtfbWFjX2h3X2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnLFxuIFxuIFx0bXV0ZXhfaW5pdChcdTAwMjZhaC1cdTAwM2Vod19tdXRleCk7XG4gXG4rXHRzcGluX2xvY2tfaW5pdChcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlfbG9jayk7XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZhaC1cdTAwM2VkcF9ody5wZWVyX2xvY2spO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWgtXHUwMDNlZHBfaHcuZHBfcGVlcnNfbGlzdCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbmluZGV4IGI1ZTkwNGE1NWFlYWJiLi5hYTcwZDJhNjFkMzgwMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbkBAIC02NjE3LDE2ICs2NjE3LDEyIEBAIHN0YXRpYyBpbnQgYXRoMTJrX3B1bGxfcm9hbV9ldihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZnJlcV90b19pZHgoc3RydWN0IGF0aDEyayAqYXIsIGludCBmcmVxKVxuK3N0YXRpYyBpbnQgZnJlcV90b19pZHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCBmcmVxKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xuLVx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhdGgxMmtfYXJfdG9faHcoYXIpO1xuIFx0aW50IGJhbmQsIGNoLCBpZHggPSAwO1xuIFxuIFx0Zm9yIChiYW5kID0gTkw4MDIxMV9CQU5EXzJHSFo7IGJhbmQgXHUwMDNjIE5VTV9OTDgwMjExX0JBTkRTOyBiYW5kKyspIHtcbi1cdFx0aWYgKCFhci1cdTAwM2VtYWMuc2JhbmRzW2JhbmRdLmNoYW5uZWxzKVxuLVx0XHRcdGNvbnRpbnVlO1xuLVxuIFx0XHRzYmFuZCA9IGh3LVx1MDAzZXdpcGh5LVx1MDAzZWJhbmRzW2JhbmRdO1xuIFx0XHRpZiAoIXNiYW5kKVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTc1MDcsNiArNzUwMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3Qgd21pX2NoYW5faW5mb19ldmVudCBjaF9pbmZvX2V2ID0ge307XG4gXHRzdHJ1Y3QgYXRoMTJrICphcjtcbitcdHN0cnVjdCBhdGgxMmtfaHcgKmFoO1xuIFx0c3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXk7XG4gXHRpbnQgaWR4O1xuIFx0LyogSFcgY2hhbm5lbCBjb3VudGVycyBmcmVxdWVuY3kgdmFsdWUgaW4gaGVydHogKi9cbkBAIC03NTM4LDYgKzc1MzUsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuK1x0YWggPSBhdGgxMmtfYXJfdG9fYWgoYXIpO1xuIFxuIFx0c3dpdGNoIChhci1cdTAwM2VzY2FuLnN0YXRlKSB7XG4gXHRjYXNlIEFUSDEyS19TQ0FOX0lETEU6XG5AQCAtNzU0OSw4ICs3NTQ3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRicmVhaztcbiBcdH1cbiBcbi1cdGlkeCA9IGZyZXFfdG9faWR4KGFyLCBsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmZyZXEpKTtcbi1cdGlmIChpZHggXHUwMDNlPSBBUlJBWV9TSVpFKGFyLVx1MDAzZXN1cnZleSkpIHtcbitcdGlkeCA9IGZyZXFfdG9faWR4KGF0aDEya19hcl90b19odyhhciksIGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuZnJlcSkpO1xuK1x0aWYgKGlkeCBcdTAwM2U9IEFSUkFZX1NJWkUoYWgtXHUwMDNlc3VydmV5KSkge1xuIFx0XHRhdGgxMmtfd2FybihhYiwgXCJjaGFuIGluZm86IGludmFsaWQgZnJlcXVlbmN5ICVkIChpZHggJWQgb3V0IG9mIGJvdW5kcylcXG5cIixcbiBcdFx0XHQgICAgY2hfaW5mb19ldi5mcmVxLCBpZHgpO1xuIFx0XHRnb3RvIGV4aXQ7XG5AQCAtNzU2MywxNCArNzU2MSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdGNjX2ZyZXFfaHogPSAobGUzMl90b19jcHUoY2hfaW5mb19ldi5tYWNfY2xrX21oeikgKiAxMDAwKTtcbiBcbiBcdGlmIChjaF9pbmZvX2V2LmNtZF9mbGFncyA9PSBXTUlfQ0hBTl9JTkZPX1NUQVJUX1JFU1ApIHtcbi1cdFx0c3VydmV5ID0gXHUwMDI2YXItXHUwMDNlc3VydmV5W2lkeF07XG4tXHRcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XG4tXHRcdHN1cnZleS1cdTAwM2Vub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xuLVx0XHRzdXJ2ZXktXHUwMDNlZmlsbGVkID0gU1VSVkVZX0lORk9fTk9JU0VfREJNIHwgU1VSVkVZX0lORk9fVElNRSB8XG4rXHRcdHNjb3BlZF9ndWFyZChzcGlubG9ja19iaCwgXHUwMDI2YWgtXHUwMDNlc3VydmV5X2xvY2spIHtcbitcdFx0XHRzdXJ2ZXkgPSBcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlbaWR4XTtcbitcdFx0XHRtZW1zZXQoc3VydmV5LCAwLCBzaXplb2YoKnN1cnZleSkpO1xuK1x0XHRcdHN1cnZleS1cdTAwM2Vub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xuK1x0XHRcdHN1cnZleS1cdTAwM2VmaWxsZWQgPSBTVVJWRVlfSU5GT19OT0lTRV9EQk0gfCBTVVJWRVlfSU5GT19USU1FIHxcbiBcdFx0XHRcdCBTVVJWRVlfSU5GT19USU1FX0JVU1k7XG4tXHRcdHN1cnZleS1cdTAwM2V0aW1lID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmN5Y2xlX2NvdW50KSwgY2NfZnJlcV9oeik7XG4tXHRcdHN1cnZleS1cdTAwM2V0aW1lX2J1c3kgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYucnhfY2xlYXJfY291bnQpLFxuLVx0XHRcdFx0XHQgICAgY2NfZnJlcV9oeik7XG4rXHRcdFx0c3VydmV5LVx1MDAzZXRpbWUgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuY3ljbGVfY291bnQpLCBjY19mcmVxX2h6KTtcbitcdFx0XHRzdXJ2ZXktXHUwMDNldGltZV9idXN5ID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LnJ4X2NsZWFyX2NvdW50KSxcbitcdFx0XHRcdFx0XHQgICAgY2NfZnJlcV9oeik7XG4rXHRcdH1cbiBcdH1cbiBleGl0OlxuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbkBAIC03NTgzLDYgKzc1ODMsNyBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3Qgd21pX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudCBic3NfY2hfaW5mb19ldiA9IHt9O1xuIFx0c3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXk7XG4gXHRzdHJ1Y3QgYXRoMTJrICphcjtcbitcdHN0cnVjdCBhdGgxMmtfaHcgKmFoO1xuIFx0dTMyIGNjX2ZyZXFfaHogPSBhYi1cdTAwM2VjY19mcmVxX2h6O1xuIFx0dTY0IGJ1c3ksIHRvdGFsLCB0eCwgcngsIHJ4X2JzcztcbiBcdGludCBpZHg7XG5AQCAtNzYyMywxNSArNzYyNCwxOCBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuLVx0aWR4ID0gZnJlcV90b19pZHgoYXIsIGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2LmZyZXEpKTtcbi1cdGlmIChpZHggXHUwMDNlPSBBUlJBWV9TSVpFKGFyLVx1MDAzZXN1cnZleSkpIHtcbitcdGFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTtcbitcbitcdGd1YXJkKHNwaW5sb2NrX2JoKShcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlfbG9jayk7XG4rXG4rXHRpZHggPSBmcmVxX3RvX2lkeChhdGgxMmtfYXJfdG9faHcoYXIpLCBsZTMyX3RvX2NwdShic3NfY2hfaW5mb19ldi5mcmVxKSk7XG4rXHRpZiAoaWR4IFx1MDAzZT0gQVJSQVlfU0laRShhaC1cdTAwM2VzdXJ2ZXkpKSB7XG4gXHRcdGF0aDEya193YXJuKGFiLCBcImJzcyBjaGFuIGluZm86IGludmFsaWQgZnJlcXVlbmN5ICVkIChpZHggJWQgb3V0IG9mIGJvdW5kcylcXG5cIixcbiBcdFx0XHQgICAgYnNzX2NoX2luZm9fZXYuZnJlcSwgaWR4KTtcbiBcdFx0Z290byBleGl0O1xuIFx0fVxuIFxuLVx0c3VydmV5ID0gXHUwMDI2YXItXHUwMDNlc3VydmV5W2lkeF07XG4rXHRzdXJ2ZXkgPSBcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlbaWR4XTtcbiBcbiBcdHN1cnZleS1cdTAwM2Vub2lzZSAgICAgPSBsZTMyX3RvX2NwdShic3NfY2hfaW5mb19ldi5ub2lzZV9mbG9vcik7XG4gXHRzdXJ2ZXktXHUwMDNldGltZSAgICAgID0gZGl2X3U2NCh0b3RhbCwgY2NfZnJlcV9oeik7XG5AQCAtNzY0NCw3ICs3NjQ4LDYgQEAgYXRoMTJrX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdCAgICAgU1VSVkVZX0lORk9fVElNRV9SWCB8XG4gXHRcdFx0ICAgICBTVVJWRVlfSU5GT19USU1FX1RYKTtcbiBleGl0OlxuLVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcdGNvbXBsZXRlKFx1MDAyNmFyLVx1MDAzZWJzc19zdXJ2ZXlfZG9uZSk7XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjU0OjQ0LjU0MjMxNzAwNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTAxMzk4NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGFuIGF0aDEyayBQYXRjaCBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgYGF0aDEya2Agd2lyZWxlc3MgZHJpdmVyLiBJdCdzIG1vdmluZyB0aGUgYHN1cnZleWAgYXJyYXkgYW5kIGFkZGluZyBhIGxvY2ssIGFuZCBpdCB0b3VjaGVzIGEgZmV3IGtleSBmdW5jdGlvbnM6IGBhdGgxMmtfbWFjX29wX2dldF9zdXJ2ZXlgLCBgYXRoMTJrX21hY19od19hbGxvY2F0ZWAsIGBmcmVxX3RvX2lkeGAsIGBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50YCwgYW5kIGBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gSSBldmVuICpnZXQqIHRvIHRoaXMgY29kZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVU/XG5cbmBhdGgxMmtgIGlzIGEgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMsIHNwZWNpZmljYWxseSBQQ0llIG9yIEFIQiBiYXNlZC4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IGhhcmR3YXJlLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlcnMsIGxpa2UgYGF0aDEwa2AsIGBhdGgxMWtgLCBgaXdsd2lmaWAsIHRoZXNlIGFyZSB1c3VhbGx5IGEgbm8tZ28gaW4gdmlydHVhbGl6YXRpb24gdW5sZXNzIHlvdSdyZSBkb2luZyBmdWxsIGhhcmR3YXJlIHBhc3MtdGhyb3VnaCBvciBoYXZlIGEgc29saWQgZW11bGF0aW9uIHNldHVwLiBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYW4gYGF0aDEya2AgZW11bGF0b3IsIGFuZCBgbWFjODAyMTFfaHdzaW1gIGVtdWxhdGVzIGdlbmVyaWMgbWFjODAyMTEgZGV2aWNlcywgbm90IHRoaXMgc3BlY2lmaWMgUXVhbGNvbW0gaGFyZHdhcmUuXG5cbldhaXQsIFN5emthbGxlcuKApmRvZXNuJ3QgaXQgaGF2ZSAqc29tZSogUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBtYXliZSB1c2luZyB2aGNpL3ZmaW8/IFdvcnRoIGEgc2hvdC4gT2theSwgeWVzLCBpdCBkb2VzLCBidXQgaXMgaXQgZW5vdWdoIHRvIGFjdHVhbGx5IHRyaWdnZXIgdGhlIGZ1bmN0aW9ucyB0aGlzIHBhdGNoIG1vZGlmaWVzPyBUaGUgY29kZSBpcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9gLiAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBQQ0kgZnV6emluZyBjYW4gZXZlbiByZWFjaCBzb21ldGhpbmcgbGlrZSBgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5YCBvciBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAuIEhtbSwgYGF0aDEya19jaGFuX2luZm9fZXZlbnRgIGlzIGNhbGxlZCBmcm9tIFdNSSBldmVudCBwcm9jZXNzaW5nLiAgV01JIGV2ZW50cyBjb21lIGZyb20gdGhlIGZpcm13YXJlLCByaWdodD8gIElmIFN5emthbGxlciBjYW4gaW5qZWN0IFBDSSByZXNwb25zZXMsIGNvdWxkIHRoYXQgKnBvdGVudGlhbGx5KiB0cmlnZ2VyIFdNSSBldmVudHM/IFRoYXTigJlzIGEgbG9uZyBzaG90LlxuXG5UaGlua2luZyBhYm91dCBpdCBtb3JlLCBTeXprYWxsZXIncyBQQ0kgZnV6emluZyBpcyB1c3VhbGx5IHByZXR0eSBsaW1pdGVkLCBhbmQgd2l0aCBhIGNvbXBsZXggZGV2aWNlIGxpa2UgYGF0aDEya2AsIGl0IHByb2JhYmx5IHdvbid0IGdldCBwYXN0IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHN0YWdlLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3Mgb3IgbWVudGlvbnMgb2YgYGF0aDEya2Agd2l0aGluIFN5emthbGxlci4gSXQgZG9lcyBoYXZlIGEgYHdpZmlgIGZ1enplciAod2hpY2ggdXNlcyBtYWM4MDIxMV9od3NpbSksIGJ1dCB0aGF04oCZcyBub3QgdGFyZ2V0ZWQgYXQgbXkgZHJpdmVyLiBOb3csIEkgcmVtZW1iZXIgdGhhdCBTeXprYWxsZXIgKmRvZXMqIGZ1enogc29tZSBQQ0kgZHJpdmVycywgYnV0IHVzdWFsbHksIGRyaXZlcnMgdGhpcyBoYXJkd2FyZS1zcGVjaWZpYyBhcmVu4oCZdCB3b3J0aCBmdXp6aW5nIHVubGVzcyB0aGVyZSdzIHNvZnR3YXJlIGVtdWxhdGlvbiAobGlrZSBgbWFjODAyMTFfaHdzaW1gLCBgdmttc2AsIGBzbmQtZHVtbXlgKSBvciBpdOKAmXMgVVNCIGZ1enppbmcgKHNpbmNlIFVTQiBpcyBlYXNpbHkgZW11bGF0ZWQpLiBJcyBgYXRoMTJrYCBVU0I/IE5vcGUsIFBDSWUvQUhCLiBTbywgaXQgbG9va3MgbGlrZSBpdCBpcyBnb2luZyB0byBiZSBkaWZmaWN1bHQgdG8gcnVuIHRoZSBjb2RlIGluIGEgZW11bGF0ZWQgZW52aXJvbm1lbnQuIFRpbWUgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwODksIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1NDo1NC42NDM3MTcxNTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1ODkyODg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBVEgxMktcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMktcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTc6Y29uZmlnIEFUSDEyS19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTgtXFx0Ym9vbCBcXFwiUVRJIGF0aDEyayBBSEIgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjU6Y29uZmlnIEFUSDEyS19ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNi1cXHRib29sIFxcXCJhdGgxMmsgZGVidWdnaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNTpjb25maWcgQVRIMTJLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiUVRJIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ0OmNvbmZpZyBBVEgxMktfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00NS1cXHRib29sIFxcXCJhdGgxMmsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1Mzpjb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTQ6NTQuNzQ5NjE1Nzk3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQyMTQ1NTE0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBXb3J0aEZ1enppbmcgRmxhZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJQQ0llL0FIQiBkcml2ZXIsIGludGVyZXN0aW5nLlwiIEJ1dCB0aGVuIEkgc2VlIHRoZSBtZW50aW9uIG9mIGBhdGgxMmtgIGFuZCB0aGluZ3Mgc3RhcnQgdG8gY2xpY2suIEl0J3MgY2xlYXIgdGhhdCB0aGlzIGlzIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUsIFF1YWxjb21tIFdpLUZpIDcgdG8gYmUgZXhhY3QuIFRoZSB0ZXh0IGlzIGVtcGhhc2l6aW5nIHRoYXQgaXQncyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggc3BlY2lmaWMgY29kZSBwYXRocyBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiB0aGUgaGFyZHdhcmUuIEFuZCBpdCByaWdodGx5IHBvaW50cyBvdXQgdGhhdCBgYXRoMTJrYCBkb2Vzbid0IGhhdmUgYW4gZXF1aXZhbGVudCB0byBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBUaGF0J3MgYSBodWdlIGZsYWcuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLiBJcyB0aGVyZSAqYW55KiBhdGgxMmsgZW11bGF0b3Iga2lja2luZyBhcm91bmQ/IE5vcGUsIG5vdCB0aGF0IEknbSBhd2FyZSBvZi4gV2hhdCBhYm91dCBzeXprYWxsZXI/IERvZXMgaXQgdGFyZ2V0IGF0aDEyayBzcGVjaWZpY2FsbHk/IE9rYXksIHN5emthbGxlciBkb2VzIHNvbWUgUENJIGZ1enppbmcsIGJ1dCBpdCdzIHByZXR0eSBiYXNpYywgYW5kIGl0IHNvdW5kcyBsaWtlIGl0IHdvdWxkIGhpdCBhIHdhbGwgd2l0aCB0aGUgZmlybXdhcmUgbG9hZGluZyBmb3IgYSBjb21wbGV4IGRldmljZSBsaWtlIHRoaXMuIFRoZSB0ZXh0IGlzIHN1cGVyIGNsZWFyLCBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIFNvIHRoYXQgcHJldHR5IG11Y2ggY2VtZW50cyBpdC5cblxuT2theSwgdGltZSB0byB3cml0ZSBpdCBvdXQgZm9ybWFsbHkuIFRoZSByZWFzb25pbmcgaGVyZSBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhdGgxMmtgIHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggaXMgaGFyZHdhcmUtc3BlY2lmaWMgKFF1YWxjb21tIFdpLUZpIDcsIFBDSWUvQUhCKS4gQmVjYXVzZSBpdCAqbmVlZHMqIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBoYXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgZ2FkZ2V0LCBhbnkgb2YgaXRzIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGlzIG1lYW5zLCB3ZSBzaG91bGRuJ3QgZnV6eiB0aGlzLiBXb3J0aEZ1enppbmcgc2hvdWxkIGJlIHNldCB0byBmYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk0NywiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTU6MDIuMTcxMDczMjUzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBTaW5jZSB0aGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgbGFja3Mgc29mdHdhcmUgZW11bGF0aW9uIGluIHRoZSBrZXJuZWwgKHVubGlrZSBtYWM4MDIxMV9od3NpbSBvciBVU0IgZ2FkZ2V0KSwgaXRzIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGVyZWZvcmUsIGl0IGNhbm5vdCBiZSBlZmZlY3RpdmVseSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBTaW5jZSB0aGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgbGFja3Mgc29mdHdhcmUgZW11bGF0aW9uIGluIHRoZSBrZXJuZWwgKHVubGlrZSBtYWM4MDIxMV9od3NpbSBvciBVU0IgZ2FkZ2V0KSwgaXRzIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGVyZWZvcmUsIGl0IGNhbm5vdCBiZSBlZmZlY3RpdmVseSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowjvwwx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 14:45:34 +0000 UTC FinishedAt: 2026-07-02 14:55:03 +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+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBsYWNrcyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCAodW5saWtlIG1hYzgwMjExX2h3c2ltIG9yIFVTQiBnYWRnZXQpLCBpdHMgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoZXJlZm9yZSwgaXQgY2Fubm90IGJlIGVmZmVjdGl2ZWx5IGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5MzdiOGQ1N2ZmMDFkMDIzZWExZjg0YTlmN2M5ZDRiMjdiOWFiNjY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxNDo1NDo0MiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5pbmRleCA4YmU0MzU1MzVhNGU4Yi4uNmNlMmY3YjNmYTUwMTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbkBAIC03MTIsNyAmIzQzOzcxMiw2IEBAIHN0cnVjdCBhdGgxMmsge1xuIFx0ICogYXZvaWQgcmVwb3J0aW5nIGdhcmJhZ2UgZGF0YS5cbiBcdCAqL1xuIFx0Ym9vbCBjaF9pbmZvX2Nhbl9yZXBvcnRfc3VydmV5O1xuLVx0c3RydWN0IHN1cnZleV9pbmZvIHN1cnZleVtBVEgxMktfTlVNX0NIQU5TXTtcbiBcdHN0cnVjdCBjb21wbGV0aW9uIGJzc19zdXJ2ZXlfZG9uZTtcbiBcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCByZWdkX3VwZGF0ZV93b3JrO1xuQEAgLTc3NCw2ICYjNDM7NzczLDExIEBAIHN0cnVjdCBhdGgxMmtfaHcge1xuIFx0ICovXG4gXHRzdHJ1Y3QgbXV0ZXggaHdfbXV0ZXg7XG4gXHRlbnVtIGF0aDEya19od19zdGF0ZSBzdGF0ZTtcbiYjNDM7XG4mIzQzO1x0LyogcHJvdGVjdHMgc3VydmV5W10gc2hhcmVkIGFjcm9zcyByYWRpb3Mgb2YgdGhpcyBody4gKi9cbiYjNDM7XHRzcGlubG9ja190IHN1cnZleV9sb2NrO1xuJiM0MztcdHN0cnVjdCBzdXJ2ZXlfaW5mbyBzdXJ2ZXlbQVRIMTJLX05VTV9DSEFOU107XG4mIzQzO1xuIFx0Ym9vbCByZWdkX3VwZGF0ZWQ7XG4gXHRib29sIHVzZV82Z2h6X3JlZ2Q7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbmluZGV4IDJjZmY5NDg1Yzk1YWZiLi5kYWY5YmM4NzIyZGZiYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbkBAIC0xMzM0OCw1MiAmIzQzOzEzMzQ4LDU0IEBAIGF0aDEya19tYWNfdXBkYXRlX2Jzc19jaGFuX3N1cnZleShzdHJ1Y3QgYXRoMTJrICphcixcbiBpbnQgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgaWR4LFxuIFx0XHRcdCAgICAgc3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXkpXG4ge1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfaHcgKmFoID0gaHctXHUwMDNlcHJpdjtcbiBcdHN0cnVjdCBhdGgxMmsgKmFyO1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XG4tXHRzdHJ1Y3Qgc3VydmV5X2luZm8gKmFyX3N1cnZleTtcbiYjNDM7XHRzdHJ1Y3Qgc3VydmV5X2luZm8gKmFoX3N1cnZleTtcbiYjNDM7XHRpbnQgc2JhbmRfaWR4ID0gaWR4O1xuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctXHUwMDNld2lwaHkpO1xuIFxuLVx0aWYgKGlkeCBcdTAwM2U9IEFUSDEyS19OVU1fQ0hBTlMpXG4mIzQzO1x0aWYgKHNiYW5kX2lkeCBcdTAwM2U9IEFUSDEyS19OVU1fQ0hBTlMpXG4gXHRcdHJldHVybiAtRU5PRU5UO1xuIFxuIFx0c2JhbmQgPSBody1cdTAwM2V3aXBoeS1cdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfMkdIWl07XG4tXHRpZiAoc2JhbmQgXHUwMDI2XHUwMDI2IGlkeCBcdTAwM2U9IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHMpIHtcbi1cdFx0aWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4mIzQzO1x0aWYgKHNiYW5kIFx1MDAyNlx1MDAyNiBzYmFuZF9pZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKSB7XG4mIzQzO1x0XHRzYmFuZF9pZHggLT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscztcbiBcdFx0c2JhbmQgPSBOVUxMO1xuIFx0fVxuIFxuIFx0aWYgKCFzYmFuZClcbiBcdFx0c2JhbmQgPSBody1cdTAwM2V3aXBoeS1cdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfNUdIWl07XG4tXHRpZiAoc2JhbmQgXHUwMDI2XHUwMDI2IGlkeCBcdTAwM2U9IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHMpIHtcbi1cdFx0aWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4mIzQzO1x0aWYgKHNiYW5kIFx1MDAyNlx1MDAyNiBzYmFuZF9pZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKSB7XG4mIzQzO1x0XHRzYmFuZF9pZHggLT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscztcbiBcdFx0c2JhbmQgPSBOVUxMO1xuIFx0fVxuIFxuIFx0aWYgKCFzYmFuZClcbiBcdFx0c2JhbmQgPSBody1cdTAwM2V3aXBoeS1cdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfNkdIWl07XG4gXG4tXHRpZiAoIXNiYW5kIHx8IGlkeCBcdTAwM2U9IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHMpXG4mIzQzO1x0aWYgKCFzYmFuZCB8fCBzYmFuZF9pZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKVxuIFx0XHRyZXR1cm4gLUVOT0VOVDtcbiBcbi1cdGFyID0gYXRoMTJrX21hY19nZXRfYXJfYnlfY2hhbihodywgXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbaWR4XSk7XG4mIzQzO1x0YXIgPSBhdGgxMmtfbWFjX2dldF9hcl9ieV9jaGFuKGh3LCBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdKTtcbiBcdGlmICghYXIpIHtcbi1cdFx0aWYgKHNiYW5kLVx1MDAzZWNoYW5uZWxzW2lkeF0uZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKSB7XG4mIzQzO1x0XHRpZiAoc2JhbmQtXHUwMDNlY2hhbm5lbHNbc2JhbmRfaWR4XS5mbGFncyBcdTAwMjYgSUVFRTgwMjExX0NIQU5fRElTQUJMRUQpIHtcbiBcdFx0XHRtZW1zZXQoc3VydmV5LCAwLCBzaXplb2YoKnN1cnZleSkpO1xuIFx0XHRcdHJldHVybiAwO1xuIFx0XHR9XG4gXHRcdHJldHVybiAtRU5PRU5UO1xuIFx0fVxuIFxuLVx0YXJfc3VydmV5ID0gXHUwMDI2YXItXHUwMDNlc3VydmV5W2lkeF07XG4mIzQzO1x0YWhfc3VydmV5ID0gXHUwMDI2YWgtXHUwMDNlc3VydmV5W2lkeF07XG4gXG4tXHRhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoYXIsIFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW2lkeF0pO1xuJiM0MztcdGF0aDEya19tYWNfdXBkYXRlX2Jzc19jaGFuX3N1cnZleShhciwgXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbc2JhbmRfaWR4XSk7XG4gXG4tXHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbi1cdG1lbWNweShzdXJ2ZXksIGFyX3N1cnZleSwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbi1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4mIzQzO1x0c2NvcGVkX2d1YXJkKHNwaW5sb2NrX2JoLCBcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlfbG9jaykge1xuJiM0MztcdFx0bWVtY3B5KHN1cnZleSwgYWhfc3VydmV5LCBzaXplb2YoKnN1cnZleSkpO1xuJiM0MztcdH1cbiBcbi1cdHN1cnZleS1cdTAwM2VjaGFubmVsID0gXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbaWR4XTtcbiYjNDM7XHRzdXJ2ZXktXHUwMDNlY2hhbm5lbCA9IFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF07XG4gXG4gXHRpZiAoYXItXHUwMDNlcnhfY2hhbm5lbCA9PSBzdXJ2ZXktXHUwMDNlY2hhbm5lbClcbiBcdFx0c3VydmV5LVx1MDAzZWZpbGxlZCB8PSBTVVJWRVlfSU5GT19JTl9VU0U7XG5AQCAtMTUwNTUsNiAmIzQzOzE1MDU3LDcgQEAgc3RhdGljIHN0cnVjdCBhdGgxMmtfaHcgKmF0aDEya19tYWNfaHdfYWxsb2NhdGUoc3RydWN0IGF0aDEya19od19ncm91cCAqYWcsXG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNmFoLVx1MDAzZWh3X211dGV4KTtcbiBcbiYjNDM7XHRzcGluX2xvY2tfaW5pdChcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlfbG9jayk7XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZhaC1cdTAwM2VkcF9ody5wZWVyX2xvY2spO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWgtXHUwMDNlZHBfaHcuZHBfcGVlcnNfbGlzdCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbmluZGV4IGI1ZTkwNGE1NWFlYWJiLi5hYTcwZDJhNjFkMzgwMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbkBAIC02NjE3LDE2ICYjNDM7NjYxNywxMiBAQCBzdGF0aWMgaW50IGF0aDEya19wdWxsX3JvYW1fZXYoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1zdGF0aWMgaW50IGZyZXFfdG9faWR4KHN0cnVjdCBhdGgxMmsgKmFyLCBpbnQgZnJlcSlcbiYjNDM7c3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGZyZXEpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XG4tXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IGF0aDEya19hcl90b19odyhhcik7XG4gXHRpbnQgYmFuZCwgY2gsIGlkeCA9IDA7XG4gXG4gXHRmb3IgKGJhbmQgPSBOTDgwMjExX0JBTkRfMkdIWjsgYmFuZCBcdTAwM2MgTlVNX05MODAyMTFfQkFORFM7IGJhbmQmIzQzOyYjNDM7KSB7XG4tXHRcdGlmICghYXItXHUwMDNlbWFjLnNiYW5kc1tiYW5kXS5jaGFubmVscylcbi1cdFx0XHRjb250aW51ZTtcbi1cbiBcdFx0c2JhbmQgPSBody1cdTAwM2V3aXBoeS1cdTAwM2ViYW5kc1tiYW5kXTtcbiBcdFx0aWYgKCFzYmFuZClcbiBcdFx0XHRjb250aW51ZTtcbkBAIC03NTA3LDYgJiM0Mzs3NTAzLDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdHN0cnVjdCB3bWlfY2hhbl9pbmZvX2V2ZW50IGNoX2luZm9fZXYgPSB7fTtcbiBcdHN0cnVjdCBhdGgxMmsgKmFyO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfaHcgKmFoO1xuIFx0c3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXk7XG4gXHRpbnQgaWR4O1xuIFx0LyogSFcgY2hhbm5lbCBjb3VudGVycyBmcmVxdWVuY3kgdmFsdWUgaW4gaGVydHogKi9cbkBAIC03NTM4LDYgJiM0Mzs3NTM1LDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiYjNDM7XHRhaCA9IGF0aDEya19hcl90b19haChhcik7XG4gXG4gXHRzd2l0Y2ggKGFyLVx1MDAzZXNjYW4uc3RhdGUpIHtcbiBcdGNhc2UgQVRIMTJLX1NDQU5fSURMRTpcbkBAIC03NTQ5LDggJiM0Mzs3NTQ3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRicmVhaztcbiBcdH1cbiBcbi1cdGlkeCA9IGZyZXFfdG9faWR4KGFyLCBsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmZyZXEpKTtcbi1cdGlmIChpZHggXHUwMDNlPSBBUlJBWV9TSVpFKGFyLVx1MDAzZXN1cnZleSkpIHtcbiYjNDM7XHRpZHggPSBmcmVxX3RvX2lkeChhdGgxMmtfYXJfdG9faHcoYXIpLCBsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmZyZXEpKTtcbiYjNDM7XHRpZiAoaWR4IFx1MDAzZT0gQVJSQVlfU0laRShhaC1cdTAwM2VzdXJ2ZXkpKSB7XG4gXHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtjaGFuIGluZm86IGludmFsaWQgZnJlcXVlbmN5ICVkIChpZHggJWQgb3V0IG9mIGJvdW5kcylcXG5cJiMzNDssXG4gXHRcdFx0ICAgIGNoX2luZm9fZXYuZnJlcSwgaWR4KTtcbiBcdFx0Z290byBleGl0O1xuQEAgLTc1NjMsMTQgJiM0Mzs3NTYxLDE2IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0Y2NfZnJlcV9oeiA9IChsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm1hY19jbGtfbWh6KSAqIDEwMDApO1xuIFxuIFx0aWYgKGNoX2luZm9fZXYuY21kX2ZsYWdzID09IFdNSV9DSEFOX0lORk9fU1RBUlRfUkVTUCkge1xuLVx0XHRzdXJ2ZXkgPSBcdTAwMjZhci1cdTAwM2VzdXJ2ZXlbaWR4XTtcbi1cdFx0bWVtc2V0KHN1cnZleSwgMCwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbi1cdFx0c3VydmV5LVx1MDAzZW5vaXNlID0gbGUzMl90b19jcHUoY2hfaW5mb19ldi5ub2lzZV9mbG9vcik7XG4tXHRcdHN1cnZleS1cdTAwM2VmaWxsZWQgPSBTVVJWRVlfSU5GT19OT0lTRV9EQk0gfCBTVVJWRVlfSU5GT19USU1FIHxcbiYjNDM7XHRcdHNjb3BlZF9ndWFyZChzcGlubG9ja19iaCwgXHUwMDI2YWgtXHUwMDNlc3VydmV5X2xvY2spIHtcbiYjNDM7XHRcdFx0c3VydmV5ID0gXHUwMDI2YWgtXHUwMDNlc3VydmV5W2lkeF07XG4mIzQzO1x0XHRcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XG4mIzQzO1x0XHRcdHN1cnZleS1cdTAwM2Vub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xuJiM0MztcdFx0XHRzdXJ2ZXktXHUwMDNlZmlsbGVkID0gU1VSVkVZX0lORk9fTk9JU0VfREJNIHwgU1VSVkVZX0lORk9fVElNRSB8XG4gXHRcdFx0XHQgU1VSVkVZX0lORk9fVElNRV9CVVNZO1xuLVx0XHRzdXJ2ZXktXHUwMDNldGltZSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5jeWNsZV9jb3VudCksIGNjX2ZyZXFfaHopO1xuLVx0XHRzdXJ2ZXktXHUwMDNldGltZV9idXN5ID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LnJ4X2NsZWFyX2NvdW50KSxcbi1cdFx0XHRcdFx0ICAgIGNjX2ZyZXFfaHopO1xuJiM0MztcdFx0XHRzdXJ2ZXktXHUwMDNldGltZSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5jeWNsZV9jb3VudCksIGNjX2ZyZXFfaHopO1xuJiM0MztcdFx0XHRzdXJ2ZXktXHUwMDNldGltZV9idXN5ID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LnJ4X2NsZWFyX2NvdW50KSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgIGNjX2ZyZXFfaHopO1xuJiM0MztcdFx0fVxuIFx0fVxuIGV4aXQ6XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuQEAgLTc1ODMsNiAmIzQzOzc1ODMsNyBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3Qgd21pX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudCBic3NfY2hfaW5mb19ldiA9IHt9O1xuIFx0c3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXk7XG4gXHRzdHJ1Y3QgYXRoMTJrICphcjtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2h3ICphaDtcbiBcdHUzMiBjY19mcmVxX2h6ID0gYWItXHUwMDNlY2NfZnJlcV9oejtcbiBcdHU2NCBidXN5LCB0b3RhbCwgdHgsIHJ4LCByeF9ic3M7XG4gXHRpbnQgaWR4O1xuQEAgLTc2MjMsMTUgJiM0Mzs3NjI0LDE4IEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4tXHRpZHggPSBmcmVxX3RvX2lkeChhciwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpO1xuLVx0aWYgKGlkeCBcdTAwM2U9IEFSUkFZX1NJWkUoYXItXHUwMDNlc3VydmV5KSkge1xuJiM0MztcdGFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTtcbiYjNDM7XG4mIzQzO1x0Z3VhcmQoc3BpbmxvY2tfYmgpKFx1MDAyNmFoLVx1MDAzZXN1cnZleV9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWR4ID0gZnJlcV90b19pZHgoYXRoMTJrX2FyX3RvX2h3KGFyKSwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpO1xuJiM0MztcdGlmIChpZHggXHUwMDNlPSBBUlJBWV9TSVpFKGFoLVx1MDAzZXN1cnZleSkpIHtcbiBcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2JzcyBjaGFuIGluZm86IGludmFsaWQgZnJlcXVlbmN5ICVkIChpZHggJWQgb3V0IG9mIGJvdW5kcylcXG5cJiMzNDssXG4gXHRcdFx0ICAgIGJzc19jaF9pbmZvX2V2LmZyZXEsIGlkeCk7XG4gXHRcdGdvdG8gZXhpdDtcbiBcdH1cbiBcbi1cdHN1cnZleSA9IFx1MDAyNmFyLVx1MDAzZXN1cnZleVtpZHhdO1xuJiM0MztcdHN1cnZleSA9IFx1MDAyNmFoLVx1MDAzZXN1cnZleVtpZHhdO1xuIFxuIFx0c3VydmV5LVx1MDAzZW5vaXNlICAgICA9IGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTtcbiBcdHN1cnZleS1cdTAwM2V0aW1lICAgICAgPSBkaXZfdTY0KHRvdGFsLCBjY19mcmVxX2h6KTtcbkBAIC03NjQ0LDcgJiM0Mzs3NjQ4LDYgQEAgYXRoMTJrX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdCAgICAgU1VSVkVZX0lORk9fVElNRV9SWCB8XG4gXHRcdFx0ICAgICBTVVJWRVlfSU5GT19USU1FX1RYKTtcbiBleGl0OlxuLVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcdGNvbXBsZXRlKFx1MDAyNmFyLVx1MDAzZWJzc19zdXJ2ZXlfZG9uZSk7XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBTaW5jZSB0aGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgbGFja3Mgc29mdHdhcmUgZW11bGF0aW9uIGluIHRoZSBrZXJuZWwgKHVubGlrZSBtYWM4MDIxMV9od3NpbSBvciBVU0IgZ2FkZ2V0KSwgaXRzIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGVyZWZvcmUsIGl0IGNhbm5vdCBiZSBlZmZlY3RpdmVseSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5MzdiOGQ1N2ZmMDFkMDIzZWExZjg0YTlmN2M5ZDRiMjdiOWFiNjY2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAxNDo1NDo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgKaW5kZXggOGJlNDM1NTM1YTRlOGIuLjZjZTJmN2IzZmE1MDEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaApAQCAtNzEyLDcgJiM0Mzs3MTIsNiBAQCBzdHJ1Y3QgYXRoMTJrIHsKIAkgKiBhdm9pZCByZXBvcnRpbmcgZ2FyYmFnZSBkYXRhLgogCSAqLwogCWJvb2wgY2hfaW5mb19jYW5fcmVwb3J0X3N1cnZleTsKLQlzdHJ1Y3Qgc3VydmV5X2luZm8gc3VydmV5W0FUSDEyS19OVU1fQ0hBTlNdOwogCXN0cnVjdCBjb21wbGV0aW9uIGJzc19zdXJ2ZXlfZG9uZTsKIAogCXN0cnVjdCB3b3JrX3N0cnVjdCByZWdkX3VwZGF0ZV93b3JrOwpAQCAtNzc0LDYgJiM0Mzs3NzMsMTEgQEAgc3RydWN0IGF0aDEya19odyB7CiAJICovCiAJc3RydWN0IG11dGV4IGh3X211dGV4OwogCWVudW0gYXRoMTJrX2h3X3N0YXRlIHN0YXRlOwomIzQzOwomIzQzOwkvKiBwcm90ZWN0cyBzdXJ2ZXlbXSBzaGFyZWQgYWNyb3NzIHJhZGlvcyBvZiB0aGlzIGh3LiAqLwomIzQzOwlzcGlubG9ja190IHN1cnZleV9sb2NrOwomIzQzOwlzdHJ1Y3Qgc3VydmV5X2luZm8gc3VydmV5W0FUSDEyS19OVU1fQ0hBTlNdOwomIzQzOwogCWJvb2wgcmVnZF91cGRhdGVkOwogCWJvb2wgdXNlXzZnaHpfcmVnZDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKaW5kZXggMmNmZjk0ODVjOTVhZmIuLmRhZjliYzg3MjJkZmJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKQEAgLTEzMzQ4LDUyICYjNDM7MTMzNDgsNTQgQEAgYXRoMTJrX21hY191cGRhdGVfYnNzX2NoYW5fc3VydmV5KHN0cnVjdCBhdGgxMmsgKmFyLAogaW50IGF0aDEya19tYWNfb3BfZ2V0X3N1cnZleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGlkeCwKIAkJCSAgICAgc3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXkpCiB7CiYjNDM7CXN0cnVjdCBhdGgxMmtfaHcgKmFoID0gaHctJmd0O3ByaXY7CiAJc3RydWN0IGF0aDEyayAqYXI7CiAJc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7Ci0Jc3RydWN0IHN1cnZleV9pbmZvICphcl9zdXJ2ZXk7CiYjNDM7CXN0cnVjdCBzdXJ2ZXlfaW5mbyAqYWhfc3VydmV5OwomIzQzOwlpbnQgc2JhbmRfaWR4ID0gaWR4OwogCiAJbG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctJmd0O3dpcGh5KTsKIAotCWlmIChpZHggJmd0Oz0gQVRIMTJLX05VTV9DSEFOUykKJiM0MzsJaWYgKHNiYW5kX2lkeCAmZ3Q7PSBBVEgxMktfTlVNX0NIQU5TKQogCQlyZXR1cm4gLUVOT0VOVDsKIAogCXNiYW5kID0gaHctJmd0O3dpcGh5LSZndDtiYW5kc1tOTDgwMjExX0JBTkRfMkdIWl07Ci0JaWYgKHNiYW5kICZhbXA7JmFtcDsgaWR4ICZndDs9IHNiYW5kLSZndDtuX2NoYW5uZWxzKSB7Ci0JCWlkeCAtPSBzYmFuZC0mZ3Q7bl9jaGFubmVsczsKJiM0MzsJaWYgKHNiYW5kICZhbXA7JmFtcDsgc2JhbmRfaWR4ICZndDs9IHNiYW5kLSZndDtuX2NoYW5uZWxzKSB7CiYjNDM7CQlzYmFuZF9pZHggLT0gc2JhbmQtJmd0O25fY2hhbm5lbHM7CiAJCXNiYW5kID0gTlVMTDsKIAl9CiAKIAlpZiAoIXNiYW5kKQogCQlzYmFuZCA9IGh3LSZndDt3aXBoeS0mZ3Q7YmFuZHNbTkw4MDIxMV9CQU5EXzVHSFpdOwotCWlmIChzYmFuZCAmYW1wOyZhbXA7IGlkeCAmZ3Q7PSBzYmFuZC0mZ3Q7bl9jaGFubmVscykgewotCQlpZHggLT0gc2JhbmQtJmd0O25fY2hhbm5lbHM7CiYjNDM7CWlmIChzYmFuZCAmYW1wOyZhbXA7IHNiYW5kX2lkeCAmZ3Q7PSBzYmFuZC0mZ3Q7bl9jaGFubmVscykgewomIzQzOwkJc2JhbmRfaWR4IC09IHNiYW5kLSZndDtuX2NoYW5uZWxzOwogCQlzYmFuZCA9IE5VTEw7CiAJfQogCiAJaWYgKCFzYmFuZCkKIAkJc2JhbmQgPSBody0mZ3Q7d2lwaHktJmd0O2JhbmRzW05MODAyMTFfQkFORF82R0haXTsKIAotCWlmICghc2JhbmQgfHwgaWR4ICZndDs9IHNiYW5kLSZndDtuX2NoYW5uZWxzKQomIzQzOwlpZiAoIXNiYW5kIHx8IHNiYW5kX2lkeCAmZ3Q7PSBzYmFuZC0mZ3Q7bl9jaGFubmVscykKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKLQlhciA9IGF0aDEya19tYWNfZ2V0X2FyX2J5X2NoYW4oaHcsICZhbXA7c2JhbmQtJmd0O2NoYW5uZWxzW2lkeF0pOwomIzQzOwlhciA9IGF0aDEya19tYWNfZ2V0X2FyX2J5X2NoYW4oaHcsICZhbXA7c2JhbmQtJmd0O2NoYW5uZWxzW3NiYW5kX2lkeF0pOwogCWlmICghYXIpIHsKLQkJaWYgKHNiYW5kLSZndDtjaGFubmVsc1tpZHhdLmZsYWdzICZhbXA7IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKSB7CiYjNDM7CQlpZiAoc2JhbmQtJmd0O2NoYW5uZWxzW3NiYW5kX2lkeF0uZmxhZ3MgJmFtcDsgSUVFRTgwMjExX0NIQU5fRElTQUJMRUQpIHsKIAkJCW1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7CiAJCQlyZXR1cm4gMDsKIAkJfQogCQlyZXR1cm4gLUVOT0VOVDsKIAl9CiAKLQlhcl9zdXJ2ZXkgPSAmYW1wO2FyLSZndDtzdXJ2ZXlbaWR4XTsKJiM0MzsJYWhfc3VydmV5ID0gJmFtcDthaC0mZ3Q7c3VydmV5W2lkeF07CiAKLQlhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoYXIsICZhbXA7c2JhbmQtJmd0O2NoYW5uZWxzW2lkeF0pOwomIzQzOwlhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoYXIsICZhbXA7c2JhbmQtJmd0O2NoYW5uZWxzW3NiYW5kX2lkeF0pOwogCi0Jc3Bpbl9sb2NrX2JoKCZhbXA7YXItJmd0O2RhdGFfbG9jayk7Ci0JbWVtY3B5KHN1cnZleSwgYXJfc3VydmV5LCBzaXplb2YoKnN1cnZleSkpOwotCXNwaW5fdW5sb2NrX2JoKCZhbXA7YXItJmd0O2RhdGFfbG9jayk7CiYjNDM7CXNjb3BlZF9ndWFyZChzcGlubG9ja19iaCwgJmFtcDthaC0mZ3Q7c3VydmV5X2xvY2spIHsKJiM0MzsJCW1lbWNweShzdXJ2ZXksIGFoX3N1cnZleSwgc2l6ZW9mKCpzdXJ2ZXkpKTsKJiM0MzsJfQogCi0Jc3VydmV5LSZndDtjaGFubmVsID0gJmFtcDtzYmFuZC0mZ3Q7Y2hhbm5lbHNbaWR4XTsKJiM0MzsJc3VydmV5LSZndDtjaGFubmVsID0gJmFtcDtzYmFuZC0mZ3Q7Y2hhbm5lbHNbc2JhbmRfaWR4XTsKIAogCWlmIChhci0mZ3Q7cnhfY2hhbm5lbCA9PSBzdXJ2ZXktJmd0O2NoYW5uZWwpCiAJCXN1cnZleS0mZ3Q7ZmlsbGVkIHw9IFNVUlZFWV9JTkZPX0lOX1VTRTsKQEAgLTE1MDU1LDYgJiM0MzsxNTA1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2h3ICphdGgxMmtfbWFjX2h3X2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnLAogCiAJbXV0ZXhfaW5pdCgmYW1wO2FoLSZndDtod19tdXRleCk7CiAKJiM0MzsJc3Bpbl9sb2NrX2luaXQoJmFtcDthaC0mZ3Q7c3VydmV5X2xvY2spOwogCXNwaW5fbG9ja19pbml0KCZhbXA7YWgtJmd0O2RwX2h3LnBlZXJfbG9jayk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDthaC0mZ3Q7ZHBfaHcuZHBfcGVlcnNfbGlzdCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jCmluZGV4IGI1ZTkwNGE1NWFlYWJiLi5hYTcwZDJhNjFkMzgwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jCkBAIC02NjE3LDE2ICYjNDM7NjYxNywxMiBAQCBzdGF0aWMgaW50IGF0aDEya19wdWxsX3JvYW1fZXYoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgYXRoMTJrICphciwgaW50IGZyZXEpCiYjNDM7c3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGZyZXEpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7Ci0Jc3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhdGgxMmtfYXJfdG9faHcoYXIpOwogCWludCBiYW5kLCBjaCwgaWR4ID0gMDsKIAogCWZvciAoYmFuZCA9IE5MODAyMTFfQkFORF8yR0haOyBiYW5kICZsdDsgTlVNX05MODAyMTFfQkFORFM7IGJhbmQmIzQzOyYjNDM7KSB7Ci0JCWlmICghYXItJmd0O21hYy5zYmFuZHNbYmFuZF0uY2hhbm5lbHMpCi0JCQljb250aW51ZTsKLQogCQlzYmFuZCA9IGh3LSZndDt3aXBoeS0mZ3Q7YmFuZHNbYmFuZF07CiAJCWlmICghc2JhbmQpCiAJCQljb250aW51ZTsKQEAgLTc1MDcsNiAmIzQzOzc1MDMsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJc3RydWN0IHdtaV9jaGFuX2luZm9fZXZlbnQgY2hfaW5mb19ldiA9IHt9OwogCXN0cnVjdCBhdGgxMmsgKmFyOwomIzQzOwlzdHJ1Y3QgYXRoMTJrX2h3ICphaDsKIAlzdHJ1Y3Qgc3VydmV5X2luZm8gKnN1cnZleTsKIAlpbnQgaWR4OwogCS8qIEhXIGNoYW5uZWwgY291bnRlcnMgZnJlcXVlbmN5IHZhbHVlIGluIGhlcnR6ICovCkBAIC03NTM4LDYgJiM0Mzs3NTM1LDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQlyZXR1cm47CiAJfQogCXNwaW5fbG9ja19iaCgmYW1wO2FyLSZndDtkYXRhX2xvY2spOwomIzQzOwlhaCA9IGF0aDEya19hcl90b19haChhcik7CiAKIAlzd2l0Y2ggKGFyLSZndDtzY2FuLnN0YXRlKSB7CiAJY2FzZSBBVEgxMktfU0NBTl9JRExFOgpAQCAtNzU0OSw4ICYjNDM7NzU0Nyw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJYnJlYWs7CiAJfQogCi0JaWR4ID0gZnJlcV90b19pZHgoYXIsIGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuZnJlcSkpOwotCWlmIChpZHggJmd0Oz0gQVJSQVlfU0laRShhci0mZ3Q7c3VydmV5KSkgewomIzQzOwlpZHggPSBmcmVxX3RvX2lkeChhdGgxMmtfYXJfdG9faHcoYXIpLCBsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmZyZXEpKTsKJiM0MzsJaWYgKGlkeCAmZ3Q7PSBBUlJBWV9TSVpFKGFoLSZndDtzdXJ2ZXkpKSB7CiAJCWF0aDEya193YXJuKGFiLCAmIzM0O2NoYW4gaW5mbzogaW52YWxpZCBmcmVxdWVuY3kgJWQgKGlkeCAlZCBvdXQgb2YgYm91bmRzKVxuJiMzNDssCiAJCQkgICAgY2hfaW5mb19ldi5mcmVxLCBpZHgpOwogCQlnb3RvIGV4aXQ7CkBAIC03NTYzLDE0ICYjNDM7NzU2MSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpCiAJCWNjX2ZyZXFfaHogPSAobGUzMl90b19jcHUoY2hfaW5mb19ldi5tYWNfY2xrX21oeikgKiAxMDAwKTsKIAogCWlmIChjaF9pbmZvX2V2LmNtZF9mbGFncyA9PSBXTUlfQ0hBTl9JTkZPX1NUQVJUX1JFU1ApIHsKLQkJc3VydmV5ID0gJmFtcDthci0mZ3Q7c3VydmV5W2lkeF07Ci0JCW1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7Ci0JCXN1cnZleS0mZ3Q7bm9pc2UgPSBsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTsKLQkJc3VydmV5LSZndDtmaWxsZWQgPSBTVVJWRVlfSU5GT19OT0lTRV9EQk0gfCBTVVJWRVlfSU5GT19USU1FIHwKJiM0MzsJCXNjb3BlZF9ndWFyZChzcGlubG9ja19iaCwgJmFtcDthaC0mZ3Q7c3VydmV5X2xvY2spIHsKJiM0MzsJCQlzdXJ2ZXkgPSAmYW1wO2FoLSZndDtzdXJ2ZXlbaWR4XTsKJiM0MzsJCQltZW1zZXQoc3VydmV5LCAwLCBzaXplb2YoKnN1cnZleSkpOwomIzQzOwkJCXN1cnZleS0mZ3Q7bm9pc2UgPSBsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTsKJiM0MzsJCQlzdXJ2ZXktJmd0O2ZpbGxlZCA9IFNVUlZFWV9JTkZPX05PSVNFX0RCTSB8IFNVUlZFWV9JTkZPX1RJTUUgfAogCQkJCSBTVVJWRVlfSU5GT19USU1FX0JVU1k7Ci0JCXN1cnZleS0mZ3Q7dGltZSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5jeWNsZV9jb3VudCksIGNjX2ZyZXFfaHopOwotCQlzdXJ2ZXktJmd0O3RpbWVfYnVzeSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5yeF9jbGVhcl9jb3VudCksCi0JCQkJCSAgICBjY19mcmVxX2h6KTsKJiM0MzsJCQlzdXJ2ZXktJmd0O3RpbWUgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuY3ljbGVfY291bnQpLCBjY19mcmVxX2h6KTsKJiM0MzsJCQlzdXJ2ZXktJmd0O3RpbWVfYnVzeSA9IGRpdl91NjQobGUzMl90b19jcHUoY2hfaW5mb19ldi5yeF9jbGVhcl9jb3VudCksCiYjNDM7CQkJCQkJICAgIGNjX2ZyZXFfaHopOwomIzQzOwkJfQogCX0KIGV4aXQ6CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKQEAgLTc1ODMsNiAmIzQzOzc1ODMsNyBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpCiAJc3RydWN0IHdtaV9wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQgYnNzX2NoX2luZm9fZXYgPSB7fTsKIAlzdHJ1Y3Qgc3VydmV5X2luZm8gKnN1cnZleTsKIAlzdHJ1Y3QgYXRoMTJrICphcjsKJiM0MzsJc3RydWN0IGF0aDEya19odyAqYWg7CiAJdTMyIGNjX2ZyZXFfaHogPSBhYi0mZ3Q7Y2NfZnJlcV9oejsKIAl1NjQgYnVzeSwgdG90YWwsIHR4LCByeCwgcnhfYnNzOwogCWludCBpZHg7CkBAIC03NjIzLDE1ICYjNDM7NzYyNCwxOCBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpCiAJCXJldHVybjsKIAl9CiAKLQlzcGluX2xvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKLQlpZHggPSBmcmVxX3RvX2lkeChhciwgbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYuZnJlcSkpOwotCWlmIChpZHggJmd0Oz0gQVJSQVlfU0laRShhci0mZ3Q7c3VydmV5KSkgewomIzQzOwlhaCA9IGF0aDEya19hcl90b19haChhcik7CiYjNDM7CiYjNDM7CWd1YXJkKHNwaW5sb2NrX2JoKSgmYW1wO2FoLSZndDtzdXJ2ZXlfbG9jayk7CiYjNDM7CiYjNDM7CWlkeCA9IGZyZXFfdG9faWR4KGF0aDEya19hcl90b19odyhhciksIGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2LmZyZXEpKTsKJiM0MzsJaWYgKGlkeCAmZ3Q7PSBBUlJBWV9TSVpFKGFoLSZndDtzdXJ2ZXkpKSB7CiAJCWF0aDEya193YXJuKGFiLCAmIzM0O2JzcyBjaGFuIGluZm86IGludmFsaWQgZnJlcXVlbmN5ICVkIChpZHggJWQgb3V0IG9mIGJvdW5kcylcbiYjMzQ7LAogCQkJICAgIGJzc19jaF9pbmZvX2V2LmZyZXEsIGlkeCk7CiAJCWdvdG8gZXhpdDsKIAl9CiAKLQlzdXJ2ZXkgPSAmYW1wO2FyLSZndDtzdXJ2ZXlbaWR4XTsKJiM0MzsJc3VydmV5ID0gJmFtcDthaC0mZ3Q7c3VydmV5W2lkeF07CiAKIAlzdXJ2ZXktJmd0O25vaXNlICAgICA9IGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTsKIAlzdXJ2ZXktJmd0O3RpbWUgICAgICA9IGRpdl91NjQodG90YWwsIGNjX2ZyZXFfaHopOwpAQCAtNzY0NCw3ICYjNDM7NzY0OCw2IEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJCSAgICAgU1VSVkVZX0lORk9fVElNRV9SWCB8CiAJCQkgICAgIFNVUlZFWV9JTkZPX1RJTUVfVFgpOwogZXhpdDoKLQlzcGluX3VubG9ja19iaCgmYW1wO2FyLSZndDtkYXRhX2xvY2spOwogCWNvbXBsZXRlKCZhbXA7YXItJmd0O2Jzc19zdXJ2ZXlfZG9uZSk7CiAKIAlyY3VfcmVhZF91bmxvY2soKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA4OQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDYyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBhbiBhdGgxMmsgUGF0Y2ggaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgYGF0aDEya2Agd2lyZWxlc3MgZHJpdmVyLiBJdCYjMzk7cyBtb3ZpbmcgdGhlIGBzdXJ2ZXlgIGFycmF5IGFuZCBhZGRpbmcgYSBsb2NrLCBhbmQgaXQgdG91Y2hlcyBhIGZldyBrZXkgZnVuY3Rpb25zOiBgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5YCwgYGF0aDEya19tYWNfaHdfYWxsb2NhdGVgLCBgZnJlcV90b19pZHhgLCBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAsIGFuZCBgYXRoMTJrX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudGAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIEkgZXZlbiAqZ2V0KiB0byB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VPwoKYGF0aDEya2AgaXMgYSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcywgc3BlY2lmaWNhbGx5IFBDSWUgb3IgQUhCIGJhc2VkLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgaGFyZHdhcmUtc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVycywgbGlrZSBgYXRoMTBrYCwgYGF0aDExa2AsIGBpd2x3aWZpYCwgdGhlc2UgYXJlIHVzdWFsbHkgYSBuby1nbyBpbiB2aXJ0dWFsaXphdGlvbiB1bmxlc3MgeW91JiMzOTtyZSBkb2luZyBmdWxsIGhhcmR3YXJlIHBhc3MtdGhyb3VnaCBvciBoYXZlIGEgc29saWQgZW11bGF0aW9uIHNldHVwLiBJIGRvbiYjMzk7dCByZWNhbGwgc2VlaW5nIGFuIGBhdGgxMmtgIGVtdWxhdG9yLCBhbmQgYG1hYzgwMjExX2h3c2ltYCBlbXVsYXRlcyBnZW5lcmljIG1hYzgwMjExIGRldmljZXMsIG5vdCB0aGlzIHNwZWNpZmljIFF1YWxjb21tIGhhcmR3YXJlLgoKV2FpdCwgU3l6a2FsbGVy4oCmZG9lc24mIzM5O3QgaXQgaGF2ZSAqc29tZSogUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBtYXliZSB1c2luZyB2aGNpL3ZmaW8/IFdvcnRoIGEgc2hvdC4gT2theSwgeWVzLCBpdCBkb2VzLCBidXQgaXMgaXQgZW5vdWdoIHRvIGFjdHVhbGx5IHRyaWdnZXIgdGhlIGZ1bmN0aW9ucyB0aGlzIHBhdGNoIG1vZGlmaWVzPyBUaGUgY29kZSBpcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9gLiAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBQQ0kgZnV6emluZyBjYW4gZXZlbiByZWFjaCBzb21ldGhpbmcgbGlrZSBgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5YCBvciBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAuIEhtbSwgYGF0aDEya19jaGFuX2luZm9fZXZlbnRgIGlzIGNhbGxlZCBmcm9tIFdNSSBldmVudCBwcm9jZXNzaW5nLiAgV01JIGV2ZW50cyBjb21lIGZyb20gdGhlIGZpcm13YXJlLCByaWdodD8gIElmIFN5emthbGxlciBjYW4gaW5qZWN0IFBDSSByZXNwb25zZXMsIGNvdWxkIHRoYXQgKnBvdGVudGlhbGx5KiB0cmlnZ2VyIFdNSSBldmVudHM/IFRoYXTigJlzIGEgbG9uZyBzaG90LgoKVGhpbmtpbmcgYWJvdXQgaXQgbW9yZSwgU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIGlzIHVzdWFsbHkgcHJldHR5IGxpbWl0ZWQsIGFuZCB3aXRoIGEgY29tcGxleCBkZXZpY2UgbGlrZSBgYXRoMTJrYCwgaXQgcHJvYmFibHkgd29uJiMzOTt0IGdldCBwYXN0IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHN0YWdlLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3Mgb3IgbWVudGlvbnMgb2YgYGF0aDEya2Agd2l0aGluIFN5emthbGxlci4gSXQgZG9lcyBoYXZlIGEgYHdpZmlgIGZ1enplciAod2hpY2ggdXNlcyBtYWM4MDIxMV9od3NpbSksIGJ1dCB0aGF04oCZcyBub3QgdGFyZ2V0ZWQgYXQgbXkgZHJpdmVyLiBOb3csIEkgcmVtZW1iZXIgdGhhdCBTeXprYWxsZXIgKmRvZXMqIGZ1enogc29tZSBQQ0kgZHJpdmVycywgYnV0IHVzdWFsbHksIGRyaXZlcnMgdGhpcyBoYXJkd2FyZS1zcGVjaWZpYyBhcmVu4oCZdCB3b3J0aCBmdXp6aW5nIHVubGVzcyB0aGVyZSYjMzk7cyBzb2Z0d2FyZSBlbXVsYXRpb24gKGxpa2UgYG1hYzgwMjExX2h3c2ltYCwgYHZrbXNgLCBgc25kLWR1bW15YCkgb3IgaXTigJlzIFVTQiBmdXp6aW5nIChzaW5jZSBVU0IgaXMgZWFzaWx5IGVtdWxhdGVkKS4gSXMgYGF0aDEya2AgVVNCPyBOb3BlLCBQQ0llL0FIQi4gU28sIGl0IGxvb2tzIGxpa2UgaXQgaXMgZ29pbmcgdG8gYmUgZGlmZmljdWx0IHRvIHJ1biB0aGUgY29kZSBpbiBhIGVtdWxhdGVkIGVudmlyb25tZW50LiBUaW1lIHRvIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDE0OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVEgxMksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjpjb25maWcgQVRIMTJLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIFRlY2hub2xvZ2llcyBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTc6Y29uZmlnIEFUSDEyS19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7UVRJIGF0aDEyayBBSEIgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyNTpjb25maWcgQVRIMTJLX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjYtXHRib29sIFwmIzM0O2F0aDEyayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzU6Y29uZmlnIEFUSDEyS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzYtXHRib29sIFwmIzM0O1FUSSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ0OmNvbmZpZyBBVEgxMktfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ1LVx0Ym9vbCBcJiMzNDthdGgxMmsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjUzOmNvbmZpZyBBVEgxMktfQ09SRURVTVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7YXRoMTJrIGNvcmVkdW1wXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTQ6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk0NwoJCQkJCQkJb3V0cHV0OiAxMjAKCQkJCQkJCXRob3VnaHRzOiAzNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgV29ydGhGdXp6aW5nIEZsYWcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtQQ0llL0FIQiBkcml2ZXIsIGludGVyZXN0aW5nLiYjMzQ7IEJ1dCB0aGVuIEkgc2VlIHRoZSBtZW50aW9uIG9mIGBhdGgxMmtgIGFuZCB0aGluZ3Mgc3RhcnQgdG8gY2xpY2suIEl0JiMzOTtzIGNsZWFyIHRoYXQgdGhpcyBpcyB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlLCBRdWFsY29tbSBXaS1GaSA3IHRvIGJlIGV4YWN0LiBUaGUgdGV4dCBpcyBlbXBoYXNpemluZyB0aGF0IGl0JiMzOTtzICppbXBvc3NpYmxlKiB0byByZWFjaCBzcGVjaWZpYyBjb2RlIHBhdGhzIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uIG9mIHRoZSBoYXJkd2FyZS4gQW5kIGl0IHJpZ2h0bHkgcG9pbnRzIG91dCB0aGF0IGBhdGgxMmtgIGRvZXNuJiMzOTt0IGhhdmUgYW4gZXF1aXZhbGVudCB0byBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBUaGF0JiMzOTtzIGEgaHVnZSBmbGFnLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2guIElzIHRoZXJlICphbnkqIGF0aDEyayBlbXVsYXRvciBraWNraW5nIGFyb3VuZD8gTm9wZSwgbm90IHRoYXQgSSYjMzk7bSBhd2FyZSBvZi4gV2hhdCBhYm91dCBzeXprYWxsZXI/IERvZXMgaXQgdGFyZ2V0IGF0aDEyayBzcGVjaWZpY2FsbHk/IE9rYXksIHN5emthbGxlciBkb2VzIHNvbWUgUENJIGZ1enppbmcsIGJ1dCBpdCYjMzk7cyBwcmV0dHkgYmFzaWMsIGFuZCBpdCBzb3VuZHMgbGlrZSBpdCB3b3VsZCBoaXQgYSB3YWxsIHdpdGggdGhlIGZpcm13YXJlIGxvYWRpbmcgZm9yIGEgY29tcGxleCBkZXZpY2UgbGlrZSB0aGlzLiBUaGUgdGV4dCBpcyBzdXBlciBjbGVhciwgJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4mIzM0OyBTbyB0aGF0IHByZXR0eSBtdWNoIGNlbWVudHMgaXQuCgpPa2F5LCB0aW1lIHRvIHdyaXRlIGl0IG91dCBmb3JtYWxseS4gVGhlIHJlYXNvbmluZyBoZXJlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgYGF0aDEya2Agd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBpcyBoYXJkd2FyZS1zcGVjaWZpYyAoUXVhbGNvbW0gV2ktRmkgNywgUENJZS9BSEIpLiBCZWNhdXNlIGl0ICpuZWVkcyogcGh5c2ljYWwgaGFyZHdhcmUgYW5kIGhhcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gbGlrZSBgbWFjODAyMTFfaHdzaW1gIG9yIFVTQiBnYWRnZXQsIGFueSBvZiBpdHMgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoaXMgbWVhbnMsIHdlIHNob3VsZG4mIzM5O3QgZnV6eiB0aGlzLiBXb3J0aEZ1enppbmcgc2hvdWxkIGJlIHNldCB0byBmYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxNDo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBsYWNrcyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCAodW5saWtlIG1hYzgwMjExX2h3c2ltIG9yIFVTQiBnYWRnZXQpLCBpdHMgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoZXJlZm9yZSwgaXQgY2Fubm90IGJlIGVmZmVjdGl2ZWx5IGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBsYWNrcyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCAodW5saWtlIG1hYzgwMjExX2h3c2ltIG9yIFVTQiBnYWRnZXQpLCBpdHMgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoZXJlZm9yZSwgaXQgY2Fubm90IGJlIGVmZmVjdGl2ZWx5IGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1NDo0NC4wNDM2NzM3NjNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODEyNzQzODg2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayB3aXJlbGVzcyBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMgKFBDSWUvQUhCKS4gU2luY2UgdGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIGxhY2tzIHNvZnR3YXJlIGVtdWxhdGlvbiBpbiB0aGUga2VybmVsICh1bmxpa2UgbWFjODAyMTFfaHdzaW0gb3IgVVNCIGdhZGdldCksIGl0cyBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gVGhlcmVmb3JlLCBpdCBjYW5ub3QgYmUgZWZmZWN0aXZlbHkgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTQ6NDQuMDQzNjc4MDYzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTc4NTg3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5MzdiOGQ1N2ZmMDFkMDIzZWExZjg0YTlmN2M5ZDRiMjdiOWFiNjY2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMTQ6NTQ6NDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxcbmluZGV4IDhiZTQzNTUzNWE0ZThiLi42Y2UyZjdiM2ZhNTAxMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXFxuQEAgLTcxMiw3ICs3MTIsNiBAQCBzdHJ1Y3QgYXRoMTJrIHtcXG4gXFx0ICogYXZvaWQgcmVwb3J0aW5nIGdhcmJhZ2UgZGF0YS5cXG4gXFx0ICovXFxuIFxcdGJvb2wgY2hfaW5mb19jYW5fcmVwb3J0X3N1cnZleTtcXG4tXFx0c3RydWN0IHN1cnZleV9pbmZvIHN1cnZleVtBVEgxMktfTlVNX0NIQU5TXTtcXG4gXFx0c3RydWN0IGNvbXBsZXRpb24gYnNzX3N1cnZleV9kb25lO1xcbiBcXG4gXFx0c3RydWN0IHdvcmtfc3RydWN0IHJlZ2RfdXBkYXRlX3dvcms7XFxuQEAgLTc3NCw2ICs3NzMsMTEgQEAgc3RydWN0IGF0aDEya19odyB7XFxuIFxcdCAqL1xcbiBcXHRzdHJ1Y3QgbXV0ZXggaHdfbXV0ZXg7XFxuIFxcdGVudW0gYXRoMTJrX2h3X3N0YXRlIHN0YXRlO1xcbitcXG4rXFx0LyogcHJvdGVjdHMgc3VydmV5W10gc2hhcmVkIGFjcm9zcyByYWRpb3Mgb2YgdGhpcyBody4gKi9cXG4rXFx0c3BpbmxvY2tfdCBzdXJ2ZXlfbG9jaztcXG4rXFx0c3RydWN0IHN1cnZleV9pbmZvIHN1cnZleVtBVEgxMktfTlVNX0NIQU5TXTtcXG4rXFxuIFxcdGJvb2wgcmVnZF91cGRhdGVkO1xcbiBcXHRib29sIHVzZV82Z2h6X3JlZ2Q7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbmluZGV4IDJjZmY5NDg1Yzk1YWZiLi5kYWY5YmM4NzIyZGZiYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbkBAIC0xMzM0OCw1MiArMTMzNDgsNTQgQEAgYXRoMTJrX21hY191cGRhdGVfYnNzX2NoYW5fc3VydmV5KHN0cnVjdCBhdGgxMmsgKmFyLFxcbiBpbnQgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBpbnQgaWR4LFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5KVxcbiB7XFxuK1xcdHN0cnVjdCBhdGgxMmtfaHcgKmFoID0gaHctXFx1MDAzZXByaXY7XFxuIFxcdHN0cnVjdCBhdGgxMmsgKmFyO1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcXG4tXFx0c3RydWN0IHN1cnZleV9pbmZvICphcl9zdXJ2ZXk7XFxuK1xcdHN0cnVjdCBzdXJ2ZXlfaW5mbyAqYWhfc3VydmV5O1xcbitcXHRpbnQgc2JhbmRfaWR4ID0gaWR4O1xcbiBcXG4gXFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctXFx1MDAzZXdpcGh5KTtcXG4gXFxuLVxcdGlmIChpZHggXFx1MDAzZT0gQVRIMTJLX05VTV9DSEFOUylcXG4rXFx0aWYgKHNiYW5kX2lkeCBcXHUwMDNlPSBBVEgxMktfTlVNX0NIQU5TKVxcbiBcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gXFxuIFxcdHNiYW5kID0gaHctXFx1MDAzZXdpcGh5LVxcdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfMkdIWl07XFxuLVxcdGlmIChzYmFuZCBcXHUwMDI2XFx1MDAyNiBpZHggXFx1MDAzZT0gc2JhbmQtXFx1MDAzZW5fY2hhbm5lbHMpIHtcXG4tXFx0XFx0aWR4IC09IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzO1xcbitcXHRpZiAoc2JhbmQgXFx1MDAyNlxcdTAwMjYgc2JhbmRfaWR4IFxcdTAwM2U9IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzKSB7XFxuK1xcdFxcdHNiYW5kX2lkeCAtPSBzYmFuZC1cXHUwMDNlbl9jaGFubmVscztcXG4gXFx0XFx0c2JhbmQgPSBOVUxMO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoIXNiYW5kKVxcbiBcXHRcXHRzYmFuZCA9IGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlYmFuZHNbTkw4MDIxMV9CQU5EXzVHSFpdO1xcbi1cXHRpZiAoc2JhbmQgXFx1MDAyNlxcdTAwMjYgaWR4IFxcdTAwM2U9IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzKSB7XFxuLVxcdFxcdGlkeCAtPSBzYmFuZC1cXHUwMDNlbl9jaGFubmVscztcXG4rXFx0aWYgKHNiYW5kIFxcdTAwMjZcXHUwMDI2IHNiYW5kX2lkeCBcXHUwMDNlPSBzYmFuZC1cXHUwMDNlbl9jaGFubmVscykge1xcbitcXHRcXHRzYmFuZF9pZHggLT0gc2JhbmQtXFx1MDAzZW5fY2hhbm5lbHM7XFxuIFxcdFxcdHNiYW5kID0gTlVMTDtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKCFzYmFuZClcXG4gXFx0XFx0c2JhbmQgPSBody1cXHUwMDNld2lwaHktXFx1MDAzZWJhbmRzW05MODAyMTFfQkFORF82R0haXTtcXG4gXFxuLVxcdGlmICghc2JhbmQgfHwgaWR4IFxcdTAwM2U9IHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzKVxcbitcXHRpZiAoIXNiYW5kIHx8IHNiYW5kX2lkeCBcXHUwMDNlPSBzYmFuZC1cXHUwMDNlbl9jaGFubmVscylcXG4gXFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuIFxcbi1cXHRhciA9IGF0aDEya19tYWNfZ2V0X2FyX2J5X2NoYW4oaHcsIFxcdTAwMjZzYmFuZC1cXHUwMDNlY2hhbm5lbHNbaWR4XSk7XFxuK1xcdGFyID0gYXRoMTJrX21hY19nZXRfYXJfYnlfY2hhbihodywgXFx1MDAyNnNiYW5kLVxcdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdKTtcXG4gXFx0aWYgKCFhcikge1xcbi1cXHRcXHRpZiAoc2JhbmQtXFx1MDAzZWNoYW5uZWxzW2lkeF0uZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRCkge1xcbitcXHRcXHRpZiAoc2JhbmQtXFx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF0uZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRCkge1xcbiBcXHRcXHRcXHRtZW1zZXQoc3VydmV5LCAwLCBzaXplb2YoKnN1cnZleSkpO1xcbiBcXHRcXHRcXHRyZXR1cm4gMDtcXG4gXFx0XFx0fVxcbiBcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gXFx0fVxcbiBcXG4tXFx0YXJfc3VydmV5ID0gXFx1MDAyNmFyLVxcdTAwM2VzdXJ2ZXlbaWR4XTtcXG4rXFx0YWhfc3VydmV5ID0gXFx1MDAyNmFoLVxcdTAwM2VzdXJ2ZXlbaWR4XTtcXG4gXFxuLVxcdGF0aDEya19tYWNfdXBkYXRlX2Jzc19jaGFuX3N1cnZleShhciwgXFx1MDAyNnNiYW5kLVxcdTAwM2VjaGFubmVsc1tpZHhdKTtcXG4rXFx0YXRoMTJrX21hY191cGRhdGVfYnNzX2NoYW5fc3VydmV5KGFyLCBcXHUwMDI2c2JhbmQtXFx1MDAzZWNoYW5uZWxzW3NiYW5kX2lkeF0pO1xcbiBcXG4tXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4tXFx0bWVtY3B5KHN1cnZleSwgYXJfc3VydmV5LCBzaXplb2YoKnN1cnZleSkpO1xcbi1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuK1xcdHNjb3BlZF9ndWFyZChzcGlubG9ja19iaCwgXFx1MDAyNmFoLVxcdTAwM2VzdXJ2ZXlfbG9jaykge1xcbitcXHRcXHRtZW1jcHkoc3VydmV5LCBhaF9zdXJ2ZXksIHNpemVvZigqc3VydmV5KSk7XFxuK1xcdH1cXG4gXFxuLVxcdHN1cnZleS1cXHUwMDNlY2hhbm5lbCA9IFxcdTAwMjZzYmFuZC1cXHUwMDNlY2hhbm5lbHNbaWR4XTtcXG4rXFx0c3VydmV5LVxcdTAwM2VjaGFubmVsID0gXFx1MDAyNnNiYW5kLVxcdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdO1xcbiBcXG4gXFx0aWYgKGFyLVxcdTAwM2VyeF9jaGFubmVsID09IHN1cnZleS1cXHUwMDNlY2hhbm5lbClcXG4gXFx0XFx0c3VydmV5LVxcdTAwM2VmaWxsZWQgfD0gU1VSVkVZX0lORk9fSU5fVVNFO1xcbkBAIC0xNTA1NSw2ICsxNTA1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2h3ICphdGgxMmtfbWFjX2h3X2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnLFxcbiBcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2YWgtXFx1MDAzZWh3X211dGV4KTtcXG4gXFxuK1xcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZhaC1cXHUwMDNlc3VydmV5X2xvY2spO1xcbiBcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2YWgtXFx1MDAzZWRwX2h3LnBlZXJfbG9jayk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZhaC1cXHUwMDNlZHBfaHcuZHBfcGVlcnNfbGlzdCk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xcbmluZGV4IGI1ZTkwNGE1NWFlYWJiLi5hYTcwZDJhNjFkMzgwMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xcbkBAIC02NjE3LDE2ICs2NjE3LDEyIEBAIHN0YXRpYyBpbnQgYXRoMTJrX3B1bGxfcm9hbV9ldihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBmcmVxX3RvX2lkeChzdHJ1Y3QgYXRoMTJrICphciwgaW50IGZyZXEpXFxuK3N0YXRpYyBpbnQgZnJlcV90b19pZHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCBmcmVxKVxcbiB7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xcbi1cXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IGF0aDEya19hcl90b19odyhhcik7XFxuIFxcdGludCBiYW5kLCBjaCwgaWR4ID0gMDtcXG4gXFxuIFxcdGZvciAoYmFuZCA9IE5MODAyMTFfQkFORF8yR0haOyBiYW5kIFxcdTAwM2MgTlVNX05MODAyMTFfQkFORFM7IGJhbmQrKykge1xcbi1cXHRcXHRpZiAoIWFyLVxcdTAwM2VtYWMuc2JhbmRzW2JhbmRdLmNoYW5uZWxzKVxcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFxuIFxcdFxcdHNiYW5kID0gaHctXFx1MDAzZXdpcGh5LVxcdTAwM2ViYW5kc1tiYW5kXTtcXG4gXFx0XFx0aWYgKCFzYmFuZClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuQEAgLTc1MDcsNiArNzUwMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbiBcXHRzdHJ1Y3Qgd21pX2NoYW5faW5mb19ldmVudCBjaF9pbmZvX2V2ID0ge307XFxuIFxcdHN0cnVjdCBhdGgxMmsgKmFyO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaDtcXG4gXFx0c3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXk7XFxuIFxcdGludCBpZHg7XFxuIFxcdC8qIEhXIGNoYW5uZWwgY291bnRlcnMgZnJlcXVlbmN5IHZhbHVlIGluIGhlcnR6ICovXFxuQEAgLTc1MzgsNiArNzUzNSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuK1xcdGFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTtcXG4gXFxuIFxcdHN3aXRjaCAoYXItXFx1MDAzZXNjYW4uc3RhdGUpIHtcXG4gXFx0Y2FzZSBBVEgxMktfU0NBTl9JRExFOlxcbkBAIC03NTQ5LDggKzc1NDcsOCBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIFxcbi1cXHRpZHggPSBmcmVxX3RvX2lkeChhciwgbGUzMl90b19jcHUoY2hfaW5mb19ldi5mcmVxKSk7XFxuLVxcdGlmIChpZHggXFx1MDAzZT0gQVJSQVlfU0laRShhci1cXHUwMDNlc3VydmV5KSkge1xcbitcXHRpZHggPSBmcmVxX3RvX2lkeChhdGgxMmtfYXJfdG9faHcoYXIpLCBsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmZyZXEpKTtcXG4rXFx0aWYgKGlkeCBcXHUwMDNlPSBBUlJBWV9TSVpFKGFoLVxcdTAwM2VzdXJ2ZXkpKSB7XFxuIFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiY2hhbiBpbmZvOiBpbnZhbGlkIGZyZXF1ZW5jeSAlZCAoaWR4ICVkIG91dCBvZiBib3VuZHMpXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgICAgY2hfaW5mb19ldi5mcmVxLCBpZHgpO1xcbiBcXHRcXHRnb3RvIGV4aXQ7XFxuQEAgLTc1NjMsMTQgKzc1NjEsMTYgQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHRjY19mcmVxX2h6ID0gKGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubWFjX2Nsa19taHopICogMTAwMCk7XFxuIFxcbiBcXHRpZiAoY2hfaW5mb19ldi5jbWRfZmxhZ3MgPT0gV01JX0NIQU5fSU5GT19TVEFSVF9SRVNQKSB7XFxuLVxcdFxcdHN1cnZleSA9IFxcdTAwMjZhci1cXHUwMDNlc3VydmV5W2lkeF07XFxuLVxcdFxcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XFxuLVxcdFxcdHN1cnZleS1cXHUwMDNlbm9pc2UgPSBsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTtcXG4tXFx0XFx0c3VydmV5LVxcdTAwM2VmaWxsZWQgPSBTVVJWRVlfSU5GT19OT0lTRV9EQk0gfCBTVVJWRVlfSU5GT19USU1FIHxcXG4rXFx0XFx0c2NvcGVkX2d1YXJkKHNwaW5sb2NrX2JoLCBcXHUwMDI2YWgtXFx1MDAzZXN1cnZleV9sb2NrKSB7XFxuK1xcdFxcdFxcdHN1cnZleSA9IFxcdTAwMjZhaC1cXHUwMDNlc3VydmV5W2lkeF07XFxuK1xcdFxcdFxcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XFxuK1xcdFxcdFxcdHN1cnZleS1cXHUwMDNlbm9pc2UgPSBsZTMyX3RvX2NwdShjaF9pbmZvX2V2Lm5vaXNlX2Zsb29yKTtcXG4rXFx0XFx0XFx0c3VydmV5LVxcdTAwM2VmaWxsZWQgPSBTVVJWRVlfSU5GT19OT0lTRV9EQk0gfCBTVVJWRVlfSU5GT19USU1FIHxcXG4gXFx0XFx0XFx0XFx0IFNVUlZFWV9JTkZPX1RJTUVfQlVTWTtcXG4tXFx0XFx0c3VydmV5LVxcdTAwM2V0aW1lID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmN5Y2xlX2NvdW50KSwgY2NfZnJlcV9oeik7XFxuLVxcdFxcdHN1cnZleS1cXHUwMDNldGltZV9idXN5ID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LnJ4X2NsZWFyX2NvdW50KSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIGNjX2ZyZXFfaHopO1xcbitcXHRcXHRcXHRzdXJ2ZXktXFx1MDAzZXRpbWUgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuY3ljbGVfY291bnQpLCBjY19mcmVxX2h6KTtcXG4rXFx0XFx0XFx0c3VydmV5LVxcdTAwM2V0aW1lX2J1c3kgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYucnhfY2xlYXJfY291bnQpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgY2NfZnJlcV9oeik7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBleGl0OlxcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuQEAgLTc1ODMsNiArNzU4Myw3IEBAIGF0aDEya19wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0c3RydWN0IHdtaV9wZGV2X2Jzc19jaGFuX2luZm9fZXZlbnQgYnNzX2NoX2luZm9fZXYgPSB7fTtcXG4gXFx0c3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXk7XFxuIFxcdHN0cnVjdCBhdGgxMmsgKmFyO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2h3ICphaDtcXG4gXFx0dTMyIGNjX2ZyZXFfaHogPSBhYi1cXHUwMDNlY2NfZnJlcV9oejtcXG4gXFx0dTY0IGJ1c3ksIHRvdGFsLCB0eCwgcngsIHJ4X2JzcztcXG4gXFx0aW50IGlkeDtcXG5AQCAtNzYyMywxNSArNzYyNCwxOCBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXG4tXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4tXFx0aWR4ID0gZnJlcV90b19pZHgoYXIsIGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2LmZyZXEpKTtcXG4tXFx0aWYgKGlkeCBcXHUwMDNlPSBBUlJBWV9TSVpFKGFyLVxcdTAwM2VzdXJ2ZXkpKSB7XFxuK1xcdGFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTtcXG4rXFxuK1xcdGd1YXJkKHNwaW5sb2NrX2JoKShcXHUwMDI2YWgtXFx1MDAzZXN1cnZleV9sb2NrKTtcXG4rXFxuK1xcdGlkeCA9IGZyZXFfdG9faWR4KGF0aDEya19hcl90b19odyhhciksIGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2LmZyZXEpKTtcXG4rXFx0aWYgKGlkeCBcXHUwMDNlPSBBUlJBWV9TSVpFKGFoLVxcdTAwM2VzdXJ2ZXkpKSB7XFxuIFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiYnNzIGNoYW4gaW5mbzogaW52YWxpZCBmcmVxdWVuY3kgJWQgKGlkeCAlZCBvdXQgb2YgYm91bmRzKVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0ICAgIGJzc19jaF9pbmZvX2V2LmZyZXEsIGlkeCk7XFxuIFxcdFxcdGdvdG8gZXhpdDtcXG4gXFx0fVxcbiBcXG4tXFx0c3VydmV5ID0gXFx1MDAyNmFyLVxcdTAwM2VzdXJ2ZXlbaWR4XTtcXG4rXFx0c3VydmV5ID0gXFx1MDAyNmFoLVxcdTAwM2VzdXJ2ZXlbaWR4XTtcXG4gXFxuIFxcdHN1cnZleS1cXHUwMDNlbm9pc2UgICAgID0gbGUzMl90b19jcHUoYnNzX2NoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xcbiBcXHRzdXJ2ZXktXFx1MDAzZXRpbWUgICAgICA9IGRpdl91NjQodG90YWwsIGNjX2ZyZXFfaHopO1xcbkBAIC03NjQ0LDcgKzc2NDgsNiBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdFxcdCAgICAgU1VSVkVZX0lORk9fVElNRV9SWCB8XFxuIFxcdFxcdFxcdCAgICAgU1VSVkVZX0lORk9fVElNRV9UWCk7XFxuIGV4aXQ6XFxuLVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4gXFx0Y29tcGxldGUoXFx1MDAyNmFyLVxcdTAwM2Vic3Nfc3VydmV5X2RvbmUpO1xcbiBcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjU0OjQ0LjU0MjMxNTQ5NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc2Mjg3ODkxNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBsYWNrcyBzb2Z0d2FyZSBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCAodW5saWtlIG1hYzgwMjExX2h3c2ltIG9yIFVTQiBnYWRnZXQpLCBpdHMgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoZXJlZm9yZSwgaXQgY2Fubm90IGJlIGVmZmVjdGl2ZWx5IGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTM3YjhkNTdmZjAxZDAyM2VhMWY4NGE5ZjdjOWQ0YjI3YjlhYjY2NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMTQ6NTQ6NDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5pbmRleCA4YmU0MzU1MzVhNGU4Yi4uNmNlMmY3YjNmYTUwMTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbkBAIC03MTIsNyArNzEyLDYgQEAgc3RydWN0IGF0aDEyayB7XG4gXHQgKiBhdm9pZCByZXBvcnRpbmcgZ2FyYmFnZSBkYXRhLlxuIFx0ICovXG4gXHRib29sIGNoX2luZm9fY2FuX3JlcG9ydF9zdXJ2ZXk7XG4tXHRzdHJ1Y3Qgc3VydmV5X2luZm8gc3VydmV5W0FUSDEyS19OVU1fQ0hBTlNdO1xuIFx0c3RydWN0IGNvbXBsZXRpb24gYnNzX3N1cnZleV9kb25lO1xuIFxuIFx0c3RydWN0IHdvcmtfc3RydWN0IHJlZ2RfdXBkYXRlX3dvcms7XG5AQCAtNzc0LDYgKzc3MywxMSBAQCBzdHJ1Y3QgYXRoMTJrX2h3IHtcbiBcdCAqL1xuIFx0c3RydWN0IG11dGV4IGh3X211dGV4O1xuIFx0ZW51bSBhdGgxMmtfaHdfc3RhdGUgc3RhdGU7XG4rXG4rXHQvKiBwcm90ZWN0cyBzdXJ2ZXlbXSBzaGFyZWQgYWNyb3NzIHJhZGlvcyBvZiB0aGlzIGh3LiAqL1xuK1x0c3BpbmxvY2tfdCBzdXJ2ZXlfbG9jaztcbitcdHN0cnVjdCBzdXJ2ZXlfaW5mbyBzdXJ2ZXlbQVRIMTJLX05VTV9DSEFOU107XG4rXG4gXHRib29sIHJlZ2RfdXBkYXRlZDtcbiBcdGJvb2wgdXNlXzZnaHpfcmVnZDtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggMmNmZjk0ODVjOTVhZmIuLmRhZjliYzg3MjJkZmJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuQEAgLTEzMzQ4LDUyICsxMzM0OCw1NCBAQCBhdGgxMmtfbWFjX3VwZGF0ZV9ic3NfY2hhbl9zdXJ2ZXkoc3RydWN0IGF0aDEyayAqYXIsXG4gaW50IGF0aDEya19tYWNfb3BfZ2V0X3N1cnZleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IGlkeCxcbiBcdFx0XHQgICAgIHN0cnVjdCBzdXJ2ZXlfaW5mbyAqc3VydmV5KVxuIHtcbitcdHN0cnVjdCBhdGgxMmtfaHcgKmFoID0gaHctXHUwMDNlcHJpdjtcbiBcdHN0cnVjdCBhdGgxMmsgKmFyO1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XG4tXHRzdHJ1Y3Qgc3VydmV5X2luZm8gKmFyX3N1cnZleTtcbitcdHN0cnVjdCBzdXJ2ZXlfaW5mbyAqYWhfc3VydmV5O1xuK1x0aW50IHNiYW5kX2lkeCA9IGlkeDtcbiBcbiBcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVx1MDAzZXdpcGh5KTtcbiBcbi1cdGlmIChpZHggXHUwMDNlPSBBVEgxMktfTlVNX0NIQU5TKVxuK1x0aWYgKHNiYW5kX2lkeCBcdTAwM2U9IEFUSDEyS19OVU1fQ0hBTlMpXG4gXHRcdHJldHVybiAtRU5PRU5UO1xuIFxuIFx0c2JhbmQgPSBody1cdTAwM2V3aXBoeS1cdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfMkdIWl07XG4tXHRpZiAoc2JhbmQgXHUwMDI2XHUwMDI2IGlkeCBcdTAwM2U9IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHMpIHtcbi1cdFx0aWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4rXHRpZiAoc2JhbmQgXHUwMDI2XHUwMDI2IHNiYW5kX2lkeCBcdTAwM2U9IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHMpIHtcbitcdFx0c2JhbmRfaWR4IC09IHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7XG4gXHRcdHNiYW5kID0gTlVMTDtcbiBcdH1cbiBcbiBcdGlmICghc2JhbmQpXG4gXHRcdHNiYW5kID0gaHctXHUwMDNld2lwaHktXHUwMDNlYmFuZHNbTkw4MDIxMV9CQU5EXzVHSFpdO1xuLVx0aWYgKHNiYW5kIFx1MDAyNlx1MDAyNiBpZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKSB7XG4tXHRcdGlkeCAtPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzO1xuK1x0aWYgKHNiYW5kIFx1MDAyNlx1MDAyNiBzYmFuZF9pZHggXHUwMDNlPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzKSB7XG4rXHRcdHNiYW5kX2lkeCAtPSBzYmFuZC1cdTAwM2VuX2NoYW5uZWxzO1xuIFx0XHRzYmFuZCA9IE5VTEw7XG4gXHR9XG4gXG4gXHRpZiAoIXNiYW5kKVxuIFx0XHRzYmFuZCA9IGh3LVx1MDAzZXdpcGh5LVx1MDAzZWJhbmRzW05MODAyMTFfQkFORF82R0haXTtcbiBcbi1cdGlmICghc2JhbmQgfHwgaWR4IFx1MDAzZT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscylcbitcdGlmICghc2JhbmQgfHwgc2JhbmRfaWR4IFx1MDAzZT0gc2JhbmQtXHUwMDNlbl9jaGFubmVscylcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXG4tXHRhciA9IGF0aDEya19tYWNfZ2V0X2FyX2J5X2NoYW4oaHcsIFx1MDAyNnNiYW5kLVx1MDAzZWNoYW5uZWxzW2lkeF0pO1xuK1x0YXIgPSBhdGgxMmtfbWFjX2dldF9hcl9ieV9jaGFuKGh3LCBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdKTtcbiBcdGlmICghYXIpIHtcbi1cdFx0aWYgKHNiYW5kLVx1MDAzZWNoYW5uZWxzW2lkeF0uZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKSB7XG4rXHRcdGlmIChzYmFuZC1cdTAwM2VjaGFubmVsc1tzYmFuZF9pZHhdLmZsYWdzIFx1MDAyNiBJRUVFODAyMTFfQ0hBTl9ESVNBQkxFRCkge1xuIFx0XHRcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XG4gXHRcdFx0cmV0dXJuIDA7XG4gXHRcdH1cbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXHR9XG4gXG4tXHRhcl9zdXJ2ZXkgPSBcdTAwMjZhci1cdTAwM2VzdXJ2ZXlbaWR4XTtcbitcdGFoX3N1cnZleSA9IFx1MDAyNmFoLVx1MDAzZXN1cnZleVtpZHhdO1xuIFxuLVx0YXRoMTJrX21hY191cGRhdGVfYnNzX2NoYW5fc3VydmV5KGFyLCBcdTAwMjZzYmFuZC1cdTAwM2VjaGFubmVsc1tpZHhdKTtcbitcdGF0aDEya19tYWNfdXBkYXRlX2Jzc19jaGFuX3N1cnZleShhciwgXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbc2JhbmRfaWR4XSk7XG4gXG4tXHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbi1cdG1lbWNweShzdXJ2ZXksIGFyX3N1cnZleSwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbi1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4rXHRzY29wZWRfZ3VhcmQoc3BpbmxvY2tfYmgsIFx1MDAyNmFoLVx1MDAzZXN1cnZleV9sb2NrKSB7XG4rXHRcdG1lbWNweShzdXJ2ZXksIGFoX3N1cnZleSwgc2l6ZW9mKCpzdXJ2ZXkpKTtcbitcdH1cbiBcbi1cdHN1cnZleS1cdTAwM2VjaGFubmVsID0gXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbaWR4XTtcbitcdHN1cnZleS1cdTAwM2VjaGFubmVsID0gXHUwMDI2c2JhbmQtXHUwMDNlY2hhbm5lbHNbc2JhbmRfaWR4XTtcbiBcbiBcdGlmIChhci1cdTAwM2VyeF9jaGFubmVsID09IHN1cnZleS1cdTAwM2VjaGFubmVsKVxuIFx0XHRzdXJ2ZXktXHUwMDNlZmlsbGVkIHw9IFNVUlZFWV9JTkZPX0lOX1VTRTtcbkBAIC0xNTA1NSw2ICsxNTA1Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXRoMTJrX2h3ICphdGgxMmtfbWFjX2h3X2FsbG9jYXRlKHN0cnVjdCBhdGgxMmtfaHdfZ3JvdXAgKmFnLFxuIFxuIFx0bXV0ZXhfaW5pdChcdTAwMjZhaC1cdTAwM2Vod19tdXRleCk7XG4gXG4rXHRzcGluX2xvY2tfaW5pdChcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlfbG9jayk7XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZhaC1cdTAwM2VkcF9ody5wZWVyX2xvY2spO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YWgtXHUwMDNlZHBfaHcuZHBfcGVlcnNfbGlzdCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbmluZGV4IGI1ZTkwNGE1NWFlYWJiLi5hYTcwZDJhNjFkMzgwMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcbkBAIC02NjE3LDE2ICs2NjE3LDEyIEBAIHN0YXRpYyBpbnQgYXRoMTJrX3B1bGxfcm9hbV9ldihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyBpbnQgZnJlcV90b19pZHgoc3RydWN0IGF0aDEyayAqYXIsIGludCBmcmVxKVxuK3N0YXRpYyBpbnQgZnJlcV90b19pZHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCBmcmVxKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xuLVx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhdGgxMmtfYXJfdG9faHcoYXIpO1xuIFx0aW50IGJhbmQsIGNoLCBpZHggPSAwO1xuIFxuIFx0Zm9yIChiYW5kID0gTkw4MDIxMV9CQU5EXzJHSFo7IGJhbmQgXHUwMDNjIE5VTV9OTDgwMjExX0JBTkRTOyBiYW5kKyspIHtcbi1cdFx0aWYgKCFhci1cdTAwM2VtYWMuc2JhbmRzW2JhbmRdLmNoYW5uZWxzKVxuLVx0XHRcdGNvbnRpbnVlO1xuLVxuIFx0XHRzYmFuZCA9IGh3LVx1MDAzZXdpcGh5LVx1MDAzZWJhbmRzW2JhbmRdO1xuIFx0XHRpZiAoIXNiYW5kKVxuIFx0XHRcdGNvbnRpbnVlO1xuQEAgLTc1MDcsNiArNzUwMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19jaGFuX2luZm9fZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3Qgd21pX2NoYW5faW5mb19ldmVudCBjaF9pbmZvX2V2ID0ge307XG4gXHRzdHJ1Y3QgYXRoMTJrICphcjtcbitcdHN0cnVjdCBhdGgxMmtfaHcgKmFoO1xuIFx0c3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXk7XG4gXHRpbnQgaWR4O1xuIFx0LyogSFcgY2hhbm5lbCBjb3VudGVycyBmcmVxdWVuY3kgdmFsdWUgaW4gaGVydHogKi9cbkBAIC03NTM4LDYgKzc1MzUsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuK1x0YWggPSBhdGgxMmtfYXJfdG9fYWgoYXIpO1xuIFxuIFx0c3dpdGNoIChhci1cdTAwM2VzY2FuLnN0YXRlKSB7XG4gXHRjYXNlIEFUSDEyS19TQ0FOX0lETEU6XG5AQCAtNzU0OSw4ICs3NTQ3LDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRicmVhaztcbiBcdH1cbiBcbi1cdGlkeCA9IGZyZXFfdG9faWR4KGFyLCBsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmZyZXEpKTtcbi1cdGlmIChpZHggXHUwMDNlPSBBUlJBWV9TSVpFKGFyLVx1MDAzZXN1cnZleSkpIHtcbitcdGlkeCA9IGZyZXFfdG9faWR4KGF0aDEya19hcl90b19odyhhciksIGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuZnJlcSkpO1xuK1x0aWYgKGlkeCBcdTAwM2U9IEFSUkFZX1NJWkUoYWgtXHUwMDNlc3VydmV5KSkge1xuIFx0XHRhdGgxMmtfd2FybihhYiwgXCJjaGFuIGluZm86IGludmFsaWQgZnJlcXVlbmN5ICVkIChpZHggJWQgb3V0IG9mIGJvdW5kcylcXG5cIixcbiBcdFx0XHQgICAgY2hfaW5mb19ldi5mcmVxLCBpZHgpO1xuIFx0XHRnb3RvIGV4aXQ7XG5AQCAtNzU2MywxNCArNzU2MSwxNiBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdGNjX2ZyZXFfaHogPSAobGUzMl90b19jcHUoY2hfaW5mb19ldi5tYWNfY2xrX21oeikgKiAxMDAwKTtcbiBcbiBcdGlmIChjaF9pbmZvX2V2LmNtZF9mbGFncyA9PSBXTUlfQ0hBTl9JTkZPX1NUQVJUX1JFU1ApIHtcbi1cdFx0c3VydmV5ID0gXHUwMDI2YXItXHUwMDNlc3VydmV5W2lkeF07XG4tXHRcdG1lbXNldChzdXJ2ZXksIDAsIHNpemVvZigqc3VydmV5KSk7XG4tXHRcdHN1cnZleS1cdTAwM2Vub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xuLVx0XHRzdXJ2ZXktXHUwMDNlZmlsbGVkID0gU1VSVkVZX0lORk9fTk9JU0VfREJNIHwgU1VSVkVZX0lORk9fVElNRSB8XG4rXHRcdHNjb3BlZF9ndWFyZChzcGlubG9ja19iaCwgXHUwMDI2YWgtXHUwMDNlc3VydmV5X2xvY2spIHtcbitcdFx0XHRzdXJ2ZXkgPSBcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlbaWR4XTtcbitcdFx0XHRtZW1zZXQoc3VydmV5LCAwLCBzaXplb2YoKnN1cnZleSkpO1xuK1x0XHRcdHN1cnZleS1cdTAwM2Vub2lzZSA9IGxlMzJfdG9fY3B1KGNoX2luZm9fZXYubm9pc2VfZmxvb3IpO1xuK1x0XHRcdHN1cnZleS1cdTAwM2VmaWxsZWQgPSBTVVJWRVlfSU5GT19OT0lTRV9EQk0gfCBTVVJWRVlfSU5GT19USU1FIHxcbiBcdFx0XHRcdCBTVVJWRVlfSU5GT19USU1FX0JVU1k7XG4tXHRcdHN1cnZleS1cdTAwM2V0aW1lID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LmN5Y2xlX2NvdW50KSwgY2NfZnJlcV9oeik7XG4tXHRcdHN1cnZleS1cdTAwM2V0aW1lX2J1c3kgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYucnhfY2xlYXJfY291bnQpLFxuLVx0XHRcdFx0XHQgICAgY2NfZnJlcV9oeik7XG4rXHRcdFx0c3VydmV5LVx1MDAzZXRpbWUgPSBkaXZfdTY0KGxlMzJfdG9fY3B1KGNoX2luZm9fZXYuY3ljbGVfY291bnQpLCBjY19mcmVxX2h6KTtcbitcdFx0XHRzdXJ2ZXktXHUwMDNldGltZV9idXN5ID0gZGl2X3U2NChsZTMyX3RvX2NwdShjaF9pbmZvX2V2LnJ4X2NsZWFyX2NvdW50KSxcbitcdFx0XHRcdFx0XHQgICAgY2NfZnJlcV9oeik7XG4rXHRcdH1cbiBcdH1cbiBleGl0OlxuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbkBAIC03NTgzLDYgKzc1ODMsNyBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRzdHJ1Y3Qgd21pX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudCBic3NfY2hfaW5mb19ldiA9IHt9O1xuIFx0c3RydWN0IHN1cnZleV9pbmZvICpzdXJ2ZXk7XG4gXHRzdHJ1Y3QgYXRoMTJrICphcjtcbitcdHN0cnVjdCBhdGgxMmtfaHcgKmFoO1xuIFx0dTMyIGNjX2ZyZXFfaHogPSBhYi1cdTAwM2VjY19mcmVxX2h6O1xuIFx0dTY0IGJ1c3ksIHRvdGFsLCB0eCwgcngsIHJ4X2JzcztcbiBcdGludCBpZHg7XG5AQCAtNzYyMywxNSArNzYyNCwxOCBAQCBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuLVx0aWR4ID0gZnJlcV90b19pZHgoYXIsIGxlMzJfdG9fY3B1KGJzc19jaF9pbmZvX2V2LmZyZXEpKTtcbi1cdGlmIChpZHggXHUwMDNlPSBBUlJBWV9TSVpFKGFyLVx1MDAzZXN1cnZleSkpIHtcbitcdGFoID0gYXRoMTJrX2FyX3RvX2FoKGFyKTtcbitcbitcdGd1YXJkKHNwaW5sb2NrX2JoKShcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlfbG9jayk7XG4rXG4rXHRpZHggPSBmcmVxX3RvX2lkeChhdGgxMmtfYXJfdG9faHcoYXIpLCBsZTMyX3RvX2NwdShic3NfY2hfaW5mb19ldi5mcmVxKSk7XG4rXHRpZiAoaWR4IFx1MDAzZT0gQVJSQVlfU0laRShhaC1cdTAwM2VzdXJ2ZXkpKSB7XG4gXHRcdGF0aDEya193YXJuKGFiLCBcImJzcyBjaGFuIGluZm86IGludmFsaWQgZnJlcXVlbmN5ICVkIChpZHggJWQgb3V0IG9mIGJvdW5kcylcXG5cIixcbiBcdFx0XHQgICAgYnNzX2NoX2luZm9fZXYuZnJlcSwgaWR4KTtcbiBcdFx0Z290byBleGl0O1xuIFx0fVxuIFxuLVx0c3VydmV5ID0gXHUwMDI2YXItXHUwMDNlc3VydmV5W2lkeF07XG4rXHRzdXJ2ZXkgPSBcdTAwMjZhaC1cdTAwM2VzdXJ2ZXlbaWR4XTtcbiBcbiBcdHN1cnZleS1cdTAwM2Vub2lzZSAgICAgPSBsZTMyX3RvX2NwdShic3NfY2hfaW5mb19ldi5ub2lzZV9mbG9vcik7XG4gXHRzdXJ2ZXktXHUwMDNldGltZSAgICAgID0gZGl2X3U2NCh0b3RhbCwgY2NfZnJlcV9oeik7XG5AQCAtNzY0NCw3ICs3NjQ4LDYgQEAgYXRoMTJrX3BkZXZfYnNzX2NoYW5faW5mb19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRcdCAgICAgU1VSVkVZX0lORk9fVElNRV9SWCB8XG4gXHRcdFx0ICAgICBTVVJWRVlfSU5GT19USU1FX1RYKTtcbiBleGl0OlxuLVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcdGNvbXBsZXRlKFx1MDAyNmFyLVx1MDAzZWJzc19zdXJ2ZXlfZG9uZSk7XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDE0OjU0OjQ0LjU0MjMxNzAwNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTAxMzk4NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGFuIGF0aDEyayBQYXRjaCBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgYGF0aDEya2Agd2lyZWxlc3MgZHJpdmVyLiBJdCdzIG1vdmluZyB0aGUgYHN1cnZleWAgYXJyYXkgYW5kIGFkZGluZyBhIGxvY2ssIGFuZCBpdCB0b3VjaGVzIGEgZmV3IGtleSBmdW5jdGlvbnM6IGBhdGgxMmtfbWFjX29wX2dldF9zdXJ2ZXlgLCBgYXRoMTJrX21hY19od19hbGxvY2F0ZWAsIGBmcmVxX3RvX2lkeGAsIGBhdGgxMmtfY2hhbl9pbmZvX2V2ZW50YCwgYW5kIGBhdGgxMmtfcGRldl9ic3NfY2hhbl9pbmZvX2V2ZW50YC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gSSBldmVuICpnZXQqIHRvIHRoaXMgY29kZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVU/XG5cbmBhdGgxMmtgIGlzIGEgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMsIHNwZWNpZmljYWxseSBQQ0llIG9yIEFIQiBiYXNlZC4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IGhhcmR3YXJlLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlcnMsIGxpa2UgYGF0aDEwa2AsIGBhdGgxMWtgLCBgaXdsd2lmaWAsIHRoZXNlIGFyZSB1c3VhbGx5IGEgbm8tZ28gaW4gdmlydHVhbGl6YXRpb24gdW5sZXNzIHlvdSdyZSBkb2luZyBmdWxsIGhhcmR3YXJlIHBhc3MtdGhyb3VnaCBvciBoYXZlIGEgc29saWQgZW11bGF0aW9uIHNldHVwLiBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYW4gYGF0aDEya2AgZW11bGF0b3IsIGFuZCBgbWFjODAyMTFfaHdzaW1gIGVtdWxhdGVzIGdlbmVyaWMgbWFjODAyMTEgZGV2aWNlcywgbm90IHRoaXMgc3BlY2lmaWMgUXVhbGNvbW0gaGFyZHdhcmUuXG5cbldhaXQsIFN5emthbGxlcuKApmRvZXNuJ3QgaXQgaGF2ZSAqc29tZSogUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBtYXliZSB1c2luZyB2aGNpL3ZmaW8/IFdvcnRoIGEgc2hvdC4gT2theSwgeWVzLCBpdCBkb2VzLCBidXQgaXMgaXQgZW5vdWdoIHRvIGFjdHVhbGx5IHRyaWdnZXIgdGhlIGZ1bmN0aW9ucyB0aGlzIHBhdGNoIG1vZGlmaWVzPyBUaGUgY29kZSBpcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9gLiAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBQQ0kgZnV6emluZyBjYW4gZXZlbiByZWFjaCBzb21ldGhpbmcgbGlrZSBgYXRoMTJrX21hY19vcF9nZXRfc3VydmV5YCBvciBgYXRoMTJrX2NoYW5faW5mb19ldmVudGAuIEhtbSwgYGF0aDEya19jaGFuX2luZm9fZXZlbnRgIGlzIGNhbGxlZCBmcm9tIFdNSSBldmVudCBwcm9jZXNzaW5nLiAgV01JIGV2ZW50cyBjb21lIGZyb20gdGhlIGZpcm13YXJlLCByaWdodD8gIElmIFN5emthbGxlciBjYW4gaW5qZWN0IFBDSSByZXNwb25zZXMsIGNvdWxkIHRoYXQgKnBvdGVudGlhbGx5KiB0cmlnZ2VyIFdNSSBldmVudHM/IFRoYXTigJlzIGEgbG9uZyBzaG90LlxuXG5UaGlua2luZyBhYm91dCBpdCBtb3JlLCBTeXprYWxsZXIncyBQQ0kgZnV6emluZyBpcyB1c3VhbGx5IHByZXR0eSBsaW1pdGVkLCBhbmQgd2l0aCBhIGNvbXBsZXggZGV2aWNlIGxpa2UgYGF0aDEya2AsIGl0IHByb2JhYmx5IHdvbid0IGdldCBwYXN0IHRoZSBmaXJtd2FyZSBsb2FkaW5nIHN0YWdlLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3Mgb3IgbWVudGlvbnMgb2YgYGF0aDEya2Agd2l0aGluIFN5emthbGxlci4gSXQgZG9lcyBoYXZlIGEgYHdpZmlgIGZ1enplciAod2hpY2ggdXNlcyBtYWM4MDIxMV9od3NpbSksIGJ1dCB0aGF04oCZcyBub3QgdGFyZ2V0ZWQgYXQgbXkgZHJpdmVyLiBOb3csIEkgcmVtZW1iZXIgdGhhdCBTeXprYWxsZXIgKmRvZXMqIGZ1enogc29tZSBQQ0kgZHJpdmVycywgYnV0IHVzdWFsbHksIGRyaXZlcnMgdGhpcyBoYXJkd2FyZS1zcGVjaWZpYyBhcmVu4oCZdCB3b3J0aCBmdXp6aW5nIHVubGVzcyB0aGVyZSdzIHNvZnR3YXJlIGVtdWxhdGlvbiAobGlrZSBgbWFjODAyMTFfaHdzaW1gLCBgdmttc2AsIGBzbmQtZHVtbXlgKSBvciBpdOKAmXMgVVNCIGZ1enppbmcgKHNpbmNlIFVTQiBpcyBlYXNpbHkgZW11bGF0ZWQpLiBJcyBgYXRoMTJrYCBVU0I/IE5vcGUsIFBDSWUvQUhCLiBTbywgaXQgbG9va3MgbGlrZSBpdCBpcyBnb2luZyB0byBiZSBkaWZmaWN1bHQgdG8gcnVuIHRoZSBjb2RlIGluIGEgZW11bGF0ZWQgZW52aXJvbm1lbnQuIFRpbWUgdG8gY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwODksIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxNDo1NDo1NC42NDM3MTcxNTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1ODkyODg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBVEgxMktcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMktcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gVGVjaG5vbG9naWVzIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTc6Y29uZmlnIEFUSDEyS19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTgtXFx0Ym9vbCBcXFwiUVRJIGF0aDEyayBBSEIgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjU6Y29uZmlnIEFUSDEyS19ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNi1cXHRib29sIFxcXCJhdGgxMmsgZGVidWdnaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNTpjb25maWcgQVRIMTJLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiUVRJIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ0OmNvbmZpZyBBVEgxMktfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00NS1cXHRib29sIFxcXCJhdGgxMmsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1Mzpjb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTQ6NTQuNzQ5NjE1Nzk3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQyMTQ1NTE0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBXb3J0aEZ1enppbmcgRmxhZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJQQ0llL0FIQiBkcml2ZXIsIGludGVyZXN0aW5nLlwiIEJ1dCB0aGVuIEkgc2VlIHRoZSBtZW50aW9uIG9mIGBhdGgxMmtgIGFuZCB0aGluZ3Mgc3RhcnQgdG8gY2xpY2suIEl0J3MgY2xlYXIgdGhhdCB0aGlzIGlzIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUsIFF1YWxjb21tIFdpLUZpIDcgdG8gYmUgZXhhY3QuIFRoZSB0ZXh0IGlzIGVtcGhhc2l6aW5nIHRoYXQgaXQncyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggc3BlY2lmaWMgY29kZSBwYXRocyBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiB0aGUgaGFyZHdhcmUuIEFuZCBpdCByaWdodGx5IHBvaW50cyBvdXQgdGhhdCBgYXRoMTJrYCBkb2Vzbid0IGhhdmUgYW4gZXF1aXZhbGVudCB0byBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLiBUaGF0J3MgYSBodWdlIGZsYWcuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLiBJcyB0aGVyZSAqYW55KiBhdGgxMmsgZW11bGF0b3Iga2lja2luZyBhcm91bmQ/IE5vcGUsIG5vdCB0aGF0IEknbSBhd2FyZSBvZi4gV2hhdCBhYm91dCBzeXprYWxsZXI/IERvZXMgaXQgdGFyZ2V0IGF0aDEyayBzcGVjaWZpY2FsbHk/IE9rYXksIHN5emthbGxlciBkb2VzIHNvbWUgUENJIGZ1enppbmcsIGJ1dCBpdCdzIHByZXR0eSBiYXNpYywgYW5kIGl0IHNvdW5kcyBsaWtlIGl0IHdvdWxkIGhpdCBhIHdhbGwgd2l0aCB0aGUgZmlybXdhcmUgbG9hZGluZyBmb3IgYSBjb21wbGV4IGRldmljZSBsaWtlIHRoaXMuIFRoZSB0ZXh0IGlzIHN1cGVyIGNsZWFyLCBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIFNvIHRoYXQgcHJldHR5IG11Y2ggY2VtZW50cyBpdC5cblxuT2theSwgdGltZSB0byB3cml0ZSBpdCBvdXQgZm9ybWFsbHkuIFRoZSByZWFzb25pbmcgaGVyZSBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhdGgxMmtgIHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggaXMgaGFyZHdhcmUtc3BlY2lmaWMgKFF1YWxjb21tIFdpLUZpIDcsIFBDSWUvQUhCKS4gQmVjYXVzZSBpdCAqbmVlZHMqIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBoYXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBVU0IgZ2FkZ2V0LCBhbnkgb2YgaXRzIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGlzIG1lYW5zLCB3ZSBzaG91bGRuJ3QgZnV6eiB0aGlzLiBXb3J0aEZ1enppbmcgc2hvdWxkIGJlIHNldCB0byBmYWxzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk0NywiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTQ6NTU6MDIuMTcxMDczMjUzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBTaW5jZSB0aGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgbGFja3Mgc29mdHdhcmUgZW11bGF0aW9uIGluIHRoZSBrZXJuZWwgKHVubGlrZSBtYWM4MDIxMV9od3NpbSBvciBVU0IgZ2FkZ2V0KSwgaXRzIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGVyZWZvcmUsIGl0IGNhbm5vdCBiZSBlZmZlY3RpdmVseSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBTaW5jZSB0aGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgbGFja3Mgc29mdHdhcmUgZW11bGF0aW9uIGluIHRoZSBrZXJuZWwgKHVubGlrZSBtYWM4MDIxMV9od3NpbSBvciBVU0IgZ2FkZ2V0KSwgaXRzIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGVyZWZvcmUsIGl0IGNhbm5vdCBiZSBlZmZlY3RpdmVseSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowjvwwx[1] Phase: Running StartedAt: 2026-07-02 14:55:13 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjvwwx[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-02 14:55:13 +0000 UTC FinishedAt: 2026-07-02 14:55:23 +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,}