Name: series-workflowzqfn9 Phase: Failed StartedAt: 2026-06-29 20:27:19 +0000 UTC FinishedAt: 2026-06-29 20:36:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzqfn9[0] Phase: Succeeded StartedAt: 2026-06-29 20:27:19 +0000 UTC FinishedAt: 2026-06-29 20:36:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzqfn9[0].run-triage Phase: Succeeded StartedAt: 2026-06-29 20:27:19 +0000 UTC FinishedAt: 2026-06-29 20:36:09 +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+CgkJCTx0ZD4yMDI2LzA2LzI5IDIwOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IHJlcGxhY2VzIGBzdHJ1Y3QgcGFnZWAgd2l0aCBgc3RydWN0IHB0ZGVzY2AgaW4geDg2IHBhZ2UgdGFibGUgbWFuYWdlbWVudCBjb2RlLiBJdCB1cGRhdGVzIHR5cGVzIGFuZCBmaWVsZCBuYW1lcyAoZS5nLiwgYGxydWAgdG8gYHB0X2xpc3RgKSBidXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIwOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODdkYmVmNzg2MDgxMGY1Yjk4YzMwMjZiYmE2ZWQ3ZWJmNGVmNmE1YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDIwOjM0OjU3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaFxuaW5kZXggYWMyOTVjYTZjOTJmOTkuLmRkMDQ2ZjI5ZWMzMTUyIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmhcbkBAIC01MCw3ICYjNDM7NTAsNyBAQCB2b2lkIHB0ZHVtcF93YWxrX3VzZXJfcGdkX2xldmVsX2NoZWNrd3godm9pZCk7XG4gZXh0ZXJuIHNwaW5sb2NrX3QgcGdkX2xvY2s7XG4gZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgcGdkX2xpc3Q7XG4gXG4tZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgKnBnZF9wYWdlX2dldF9tbShzdHJ1Y3QgcGFnZSAqcGFnZSk7XG4mIzQzO3N0cnVjdCBtbV9zdHJ1Y3QgKnBnZF9wYWdlX2dldF9tbShzdHJ1Y3QgcHRkZXNjICpwdCk7XG4gXG4gZXh0ZXJuIHBtZHZhbF90IGVhcmx5X3BtZF9mbGFncztcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmhcbmluZGV4IDJlYzI1MGJhNDY3ZTJkLi45NWM3ZjQ1M2RiMTc5MyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlwZXMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oXG5AQCAtNTEyLDcgJiM0Mzs1MTIsNyBAQCBzdGF0aWMgaW5saW5lIHBncHJvdF90IHBncHJvdF9sYXJnZV8yXzRrKHBncHJvdF90IHBncHJvdClcbiBcdHJldHVybiBfX3BncHJvdChwcm90dmFsX2xhcmdlXzJfNGsocGdwcm90X3ZhbChwZ3Byb3QpKSk7XG4gfVxuIFxuLVxuJiM0MztzdHJ1Y3QgcHRkZXNjO1xuIHR5cGVkZWYgc3RydWN0IHBhZ2UgKnBndGFibGVfdDtcbiBcbiBleHRlcm4gcHRldmFsX3QgX19zdXBwb3J0ZWRfcHRlX21hc2s7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vZmF1bHQuYyBiL2FyY2gveDg2L21tL2ZhdWx0LmNcbmluZGV4IDQ1Yjk5YzNiMTQ0MmQ0Li5hYTg4MzcwY2U3Mzk0MyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L21tL2ZhdWx0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L21tL2ZhdWx0LmNcbkBAIC0yNzUsMTcgJiM0MzsyNzUsMTcgQEAgdm9pZCBhcmNoX3N5bmNfa2VybmVsX21hcHBpbmdzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuIFx0Zm9yIChhZGRyID0gc3RhcnQgXHUwMDI2IFBNRF9NQVNLO1xuIFx0ICAgICBhZGRyIFx1MDAzZT0gVEFTS19TSVpFX01BWCBcdTAwMjZcdTAwMjYgYWRkciBcdTAwM2MgVk1BTExPQ19FTkQ7XG4gXHQgICAgIGFkZHIgJiM0Mzs9IFBNRF9TSVpFKSB7XG4tXHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuJiM0MztcdFx0c3RydWN0IHB0ZGVzYyAqcHRkZXNjO1xuIFxuIFx0XHRzcGluX2xvY2soXHUwMDI2cGdkX2xvY2spO1xuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIFx1MDAyNnBnZF9saXN0LCBscnUpIHtcbiYjNDM7XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocHRkZXNjLCBcdTAwMjZwZ2RfbGlzdCwgcHRfbGlzdCkge1xuIFx0XHRcdHNwaW5sb2NrX3QgKnBndF9sb2NrO1xuIFxuIFx0XHRcdC8qIHRoZSBwZ3RfbG9jayBvbmx5IGZvciBYZW4gKi9cbi1cdFx0XHRwZ3RfbG9jayA9IFx1MDAyNnBnZF9wYWdlX2dldF9tbShwYWdlKS1cdTAwM2VwYWdlX3RhYmxlX2xvY2s7XG4mIzQzO1x0XHRcdHBndF9sb2NrID0gXHUwMDI2cGdkX3BhZ2VfZ2V0X21tKHB0ZGVzYyktXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xuIFxuIFx0XHRcdHNwaW5fbG9jayhwZ3RfbG9jayk7XG4tXHRcdFx0dm1hbGxvY19zeW5jX29uZShwYWdlX2FkZHJlc3MocGFnZSksIGFkZHIpO1xuJiM0MztcdFx0XHR2bWFsbG9jX3N5bmNfb25lKHB0ZGVzY19hZGRyZXNzKHB0ZGVzYyksIGFkZHIpO1xuIFx0XHRcdHNwaW5fdW5sb2NrKHBndF9sb2NrKTtcbiBcdFx0fVxuIFx0XHRzcGluX3VubG9jayhcdTAwMjZwZ2RfbG9jayk7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vaW5pdF82NC5jIGIvYXJjaC94ODYvbW0vaW5pdF82NC5jXG5pbmRleCBkNTdmMjljYTIzYTVhYy4uYmY1MjlhOTllYmQxYmEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9tbS9pbml0XzY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L21tL2luaXRfNjQuY1xuQEAgLTEzNiw3ICYjNDM7MTM2LDcgQEAgc3RhdGljIHZvaWQgc3luY19nbG9iYWxfcGdkc19sNSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbiBcbiBcdGZvciAoYWRkciA9IHN0YXJ0OyBhZGRyIFx1MDAzYz0gZW5kOyBhZGRyID0gQUxJR04oYWRkciAmIzQzOyAxLCBQR0RJUl9TSVpFKSkge1xuIFx0XHRjb25zdCBwZ2RfdCAqcGdkX3JlZiA9IHBnZF9vZmZzZXRfayhhZGRyKTtcbi1cdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4mIzQzO1x0XHRzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7XG4gXG4gXHRcdC8qIENoZWNrIGZvciBvdmVyZmxvdyAqL1xuIFx0XHRpZiAoYWRkciBcdTAwM2Mgc3RhcnQpXG5AQCAtMTQ2LDEzICYjNDM7MTQ2LDEzIEBAIHN0YXRpYyB2b2lkIHN5bmNfZ2xvYmFsX3BnZHNfbDUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHNwaW5fbG9jayhcdTAwMjZwZ2RfbG9jayk7XG4tXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgXHUwMDI2cGdkX2xpc3QsIGxydSkge1xuJiM0MztcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsIFx1MDAyNnBnZF9saXN0LCBwdF9saXN0KSB7XG4gXHRcdFx0cGdkX3QgKnBnZDtcbiBcdFx0XHRzcGlubG9ja190ICpwZ3RfbG9jaztcbiBcbi1cdFx0XHRwZ2QgPSAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkgJiM0MzsgcGdkX2luZGV4KGFkZHIpO1xuJiM0MztcdFx0XHRwZ2QgPSAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpICYjNDM7IHBnZF9pbmRleChhZGRyKTtcbiBcdFx0XHQvKiB0aGUgcGd0X2xvY2sgb25seSBmb3IgWGVuICovXG4tXHRcdFx0cGd0X2xvY2sgPSBcdTAwMjZwZ2RfcGFnZV9nZXRfbW0ocGFnZSktXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xuJiM0MztcdFx0XHRwZ3RfbG9jayA9IFx1MDAyNnBnZF9wYWdlX2dldF9tbShwdGRlc2MpLVx1MDAzZXBhZ2VfdGFibGVfbG9jaztcbiBcdFx0XHRzcGluX2xvY2socGd0X2xvY2spO1xuIFxuIFx0XHRcdGlmICghcGdkX25vbmUoKnBnZF9yZWYpIFx1MDAyNlx1MDAyNiAhcGdkX25vbmUoKnBnZCkpXG5AQCAtMTc0LDcgJiM0MzsxNzQsNyBAQCBzdGF0aWMgdm9pZCBzeW5jX2dsb2JhbF9wZ2RzX2w0KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuIFx0Zm9yIChhZGRyID0gc3RhcnQ7IGFkZHIgXHUwMDNjPSBlbmQ7IGFkZHIgPSBBTElHTihhZGRyICYjNDM7IDEsIFBHRElSX1NJWkUpKSB7XG4gXHRcdHBnZF90ICpwZ2RfcmVmID0gcGdkX29mZnNldF9rKGFkZHIpO1xuIFx0XHRjb25zdCBwNGRfdCAqcDRkX3JlZjtcbi1cdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4mIzQzO1x0XHRzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7XG4gXG4gXHRcdC8qXG4gXHRcdCAqIFdpdGggZm9sZGVkIHA0ZCwgcGdkX25vbmUoKSBpcyBhbHdheXMgZmFsc2UsIHdlIG5lZWQgdG9cbkBAIC0xODcsMTUgJiM0MzsxODcsMTUgQEAgc3RhdGljIHZvaWQgc3luY19nbG9iYWxfcGdkc19sNCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0c3Bpbl9sb2NrKFx1MDAyNnBnZF9sb2NrKTtcbi1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcdTAwMjZwZ2RfbGlzdCwgbHJ1KSB7XG4mIzQzO1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXHUwMDI2cGdkX2xpc3QsIHB0X2xpc3QpIHtcbiBcdFx0XHRwZ2RfdCAqcGdkO1xuIFx0XHRcdHA0ZF90ICpwNGQ7XG4gXHRcdFx0c3BpbmxvY2tfdCAqcGd0X2xvY2s7XG4gXG4tXHRcdFx0cGdkID0gKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpICYjNDM7IHBnZF9pbmRleChhZGRyKTtcbiYjNDM7XHRcdFx0cGdkID0gKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSAmIzQzOyBwZ2RfaW5kZXgoYWRkcik7XG4gXHRcdFx0cDRkID0gcDRkX29mZnNldChwZ2QsIGFkZHIpO1xuIFx0XHRcdC8qIHRoZSBwZ3RfbG9jayBvbmx5IGZvciBYZW4gKi9cbi1cdFx0XHRwZ3RfbG9jayA9IFx1MDAyNnBnZF9wYWdlX2dldF9tbShwYWdlKS1cdTAwM2VwYWdlX3RhYmxlX2xvY2s7XG4mIzQzO1x0XHRcdHBndF9sb2NrID0gXHUwMDI2cGdkX3BhZ2VfZ2V0X21tKHB0ZGVzYyktXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xuIFx0XHRcdHNwaW5fbG9jayhwZ3RfbG9jayk7XG4gXG4gXHRcdFx0aWYgKCFwNGRfbm9uZSgqcDRkX3JlZikgXHUwMDI2XHUwMDI2ICFwNGRfbm9uZSgqcDRkKSlcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jIGIvYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuY1xuaW5kZXggZDAyM2E0MGExZTAzNDUuLjQ1NjIzZDRjMjRjOTQxIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuY1xuQEAgLTg4OCwyNCAmIzQzOzg4OCwyMyBAQCBzdGF0aWMgdm9pZCBfX3NldF9wbWRfcHRlKHB0ZV90ICprcHRlLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHB0ZV90IHB0ZSlcbiB7XG4gXHQvKiBjaGFuZ2UgaW5pdF9tbSAqL1xuIFx0c2V0X3B0ZV9hdG9taWMoa3B0ZSwgcHRlKTtcbi0jaWZkZWYgQ09ORklHX1g4Nl8zMlxuLVx0e1xuLVx0XHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbiBcbi1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcdTAwMjZwZ2RfbGlzdCwgbHJ1KSB7XG4mIzQzO1x0aWYgKElTX0VOQUJMRUQoQ09ORklHX1g4Nl8zMikpIHtcbiYjNDM7XHRcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcbiYjNDM7XG4mIzQzO1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXHUwMDI2cGdkX2xpc3QsIHB0X2xpc3QpIHtcbiBcdFx0XHRwZ2RfdCAqcGdkO1xuIFx0XHRcdHA0ZF90ICpwNGQ7XG4gXHRcdFx0cHVkX3QgKnB1ZDtcbiBcdFx0XHRwbWRfdCAqcG1kO1xuIFxuLVx0XHRcdHBnZCA9IChwZ2RfdCAqKXBhZ2VfYWRkcmVzcyhwYWdlKSAmIzQzOyBwZ2RfaW5kZXgoYWRkcmVzcyk7XG4mIzQzO1x0XHRcdHBnZCA9IChwZ2RfdCAqKXB0ZGVzY19hZGRyZXNzKHB0ZGVzYykgJiM0MzsgcGdkX2luZGV4KGFkZHJlc3MpO1xuIFx0XHRcdHA0ZCA9IHA0ZF9vZmZzZXQocGdkLCBhZGRyZXNzKTtcbiBcdFx0XHRwdWQgPSBwdWRfb2Zmc2V0KHA0ZCwgYWRkcmVzcyk7XG4gXHRcdFx0cG1kID0gcG1kX29mZnNldChwdWQsIGFkZHJlc3MpO1xuIFx0XHRcdHNldF9wdGVfYXRvbWljKChwdGVfdCAqKXBtZCwgcHRlKTtcbiBcdFx0fVxuIFx0fVxuLSNlbmRpZlxuIH1cbiBcbiBzdGF0aWMgcGdwcm90X3QgcGdwcm90X2NsZWFyX3Byb3Rub25lX2JpdHMocGdwcm90X3QgcHJvdClcbkBAIC0xMjk4LDExICYjNDM7MTI5NywxMSBAQCBzdGF0aWMgaW50IGNvbGxhcHNlX3BtZF9wYWdlKHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdGxpc3RfYWRkKFx1MDAyNnBhZ2VfcHRkZXNjKHBtZF9wYWdlKG9sZF9wbWQpKS1cdTAwM2VwdF9saXN0LCBwZ3RhYmxlcyk7XG4gXG4gXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2XzMyKSkge1xuLVx0XHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbiYjNDM7XHRcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcbiBcbiBcdFx0LyogVXBkYXRlIGFsbCBQR0QgdGFibGVzIHRvIHVzZSB0aGUgc2FtZSBsYXJnZSBwYWdlICovXG4tXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgXHUwMDI2cGdkX2xpc3QsIGxydSkge1xuLVx0XHRcdHBnZF90ICpwZ2QgPSAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkgJiM0MzsgcGdkX2luZGV4KGFkZHIpO1xuJiM0MztcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsIFx1MDAyNnBnZF9saXN0LCBwdF9saXN0KSB7XG4mIzQzO1x0XHRcdHBnZF90ICpwZ2QgPSAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpICYjNDM7IHBnZF9pbmRleChhZGRyKTtcbiBcdFx0XHRwNGRfdCAqcDRkID0gcDRkX29mZnNldChwZ2QsIGFkZHIpO1xuIFx0XHRcdHB1ZF90ICpwdWQgPSBwdWRfb2Zmc2V0KHA0ZCwgYWRkcik7XG4gXHRcdFx0cG1kX3QgKnBtZCA9IHBtZF9vZmZzZXQocHVkLCBhZGRyKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9wZ3RhYmxlLmMgYi9hcmNoL3g4Ni9tbS9wZ3RhYmxlLmNcbmluZGV4IGYzMmZhY2RiMzAzNTQzLi5jYjAzZjVhMmIyNDMzOCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L21tL3BndGFibGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbW0vcGd0YWJsZS5jXG5AQCAtNzQsOSAmIzQzOzc0LDkgQEAgc3RhdGljIHZvaWQgcGdkX3NldF9tbShwZ2RfdCAqcGdkLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiBcdHZpcnRfdG9fcHRkZXNjKHBnZCktXHUwMDNlcHRfbW0gPSBtbTtcbiB9XG4gXG4tc3RydWN0IG1tX3N0cnVjdCAqcGdkX3BhZ2VfZ2V0X21tKHN0cnVjdCBwYWdlICpwYWdlKVxuJiM0MztzdHJ1Y3QgbW1fc3RydWN0ICpwZ2RfcGFnZV9nZXRfbW0oc3RydWN0IHB0ZGVzYyAqcHQpXG4ge1xuLVx0cmV0dXJuIHBhZ2VfcHRkZXNjKHBhZ2UpLVx1MDAzZXB0X21tO1xuJiM0MztcdHJldHVybiBwdC1cdTAwM2VwdF9tbTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcGdkX2N0b3Ioc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYveGVuL21tdV9wdi5jIGIvYXJjaC94ODYveGVuL21tdV9wdi5jXG5pbmRleCBhYWI1ZjcwZDQwN2MxYi4uNmZmNWE3MTMwZTUzZTYgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni94ZW4vbW11X3B2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L3hlbi9tbXVfcHYuY1xuQEAgLTgzNiwxNSAmIzQzOzgzNiwxNSBAQCBzdGF0aWMgdm9pZCB4ZW5fcGdkX3BpbihzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiAgKi9cbiB2b2lkIHhlbl9tbV9waW5fYWxsKHZvaWQpXG4ge1xuLVx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4mIzQzO1x0c3RydWN0IHB0ZGVzYyAqcHRkZXNjO1xuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNmluaXRfbW0ucGFnZV90YWJsZV9sb2NrKTtcbiBcdHNwaW5fbG9jayhcdTAwMjZwZ2RfbG9jayk7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIFx1MDAyNnBnZF9saXN0LCBscnUpIHtcbi1cdFx0aWYgKCFQYWdlUGlubmVkKHBhZ2UpKSB7XG4tXHRcdFx0X194ZW5fcGdkX3BpbihcdTAwMjZpbml0X21tLCAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkpO1xuLVx0XHRcdFNldFBhZ2VTYXZlUGlubmVkKHBhZ2UpO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnkocHRkZXNjLCBcdTAwMjZwZ2RfbGlzdCwgcHRfbGlzdCkge1xuJiM0MztcdFx0aWYgKCFQYWdlUGlubmVkKHB0ZGVzY19wYWdlKHB0ZGVzYykpKSB7XG4mIzQzO1x0XHRcdF9feGVuX3BnZF9waW4oXHUwMDI2aW5pdF9tbSwgKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSk7XG4mIzQzO1x0XHRcdFNldFBhZ2VTYXZlUGlubmVkKHB0ZGVzY19wYWdlKHB0ZGVzYykpO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtOTQ3LDE2ICYjNDM7OTQ3LDE2IEBAIHN0YXRpYyB2b2lkIHhlbl9wZ2RfdW5waW4oc3RydWN0IG1tX3N0cnVjdCAqbW0pXG4gICovXG4gdm9pZCB4ZW5fbW1fdW5waW5fYWxsKHZvaWQpXG4ge1xuLVx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4mIzQzO1x0c3RydWN0IHB0ZGVzYyAqcHRkZXNjO1xuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNmluaXRfbW0ucGFnZV90YWJsZV9sb2NrKTtcbiBcdHNwaW5fbG9jayhcdTAwMjZwZ2RfbG9jayk7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIFx1MDAyNnBnZF9saXN0LCBscnUpIHtcbi1cdFx0aWYgKFBhZ2VTYXZlUGlubmVkKHBhZ2UpKSB7XG4tXHRcdFx0QlVHX09OKCFQYWdlUGlubmVkKHBhZ2UpKTtcbi1cdFx0XHRfX3hlbl9wZ2RfdW5waW4oXHUwMDI2aW5pdF9tbSwgKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpKTtcbi1cdFx0XHRDbGVhclBhZ2VTYXZlUGlubmVkKHBhZ2UpO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnkocHRkZXNjLCBcdTAwMjZwZ2RfbGlzdCwgcHRfbGlzdCkge1xuJiM0MztcdFx0aWYgKFBhZ2VTYXZlUGlubmVkKHB0ZGVzY19wYWdlKHB0ZGVzYykpKSB7XG4mIzQzO1x0XHRcdEJVR19PTighUGFnZVBpbm5lZChwdGRlc2NfcGFnZShwdGRlc2MpKSk7XG4mIzQzO1x0XHRcdF9feGVuX3BnZF91bnBpbihcdTAwMjZpbml0X21tLCAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpKTtcbiYjNDM7XHRcdFx0Q2xlYXJQYWdlU2F2ZVBpbm5lZChwdGRlc2NfcGFnZShwdGRlc2MpKTtcbiBcdFx0fVxuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIwOjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IHJlcGxhY2VzIGBzdHJ1Y3QgcGFnZWAgd2l0aCBgc3RydWN0IHB0ZGVzY2AgaW4geDg2IHBhZ2UgdGFibGUgbWFuYWdlbWVudCBjb2RlLiBJdCB1cGRhdGVzIHR5cGVzIGFuZCBmaWVsZCBuYW1lcyAoZS5nLiwgYGxydWAgdG8gYHB0X2xpc3RgKSBidXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4N2RiZWY3ODYwODEwZjViOThjMzAyNmJiYTZlZDdlYmY0ZWY2YTVhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjkgMjA6MzQ6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKaW5kZXggYWMyOTVjYTZjOTJmOTkuLmRkMDQ2ZjI5ZWMzMTUyIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oCkBAIC01MCw3ICYjNDM7NTAsNyBAQCB2b2lkIHB0ZHVtcF93YWxrX3VzZXJfcGdkX2xldmVsX2NoZWNrd3godm9pZCk7CiBleHRlcm4gc3BpbmxvY2tfdCBwZ2RfbG9jazsKIGV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIHBnZF9saXN0OwogCi1leHRlcm4gc3RydWN0IG1tX3N0cnVjdCAqcGdkX3BhZ2VfZ2V0X21tKHN0cnVjdCBwYWdlICpwYWdlKTsKJiM0MztzdHJ1Y3QgbW1fc3RydWN0ICpwZ2RfcGFnZV9nZXRfbW0oc3RydWN0IHB0ZGVzYyAqcHQpOwogCiBleHRlcm4gcG1kdmFsX3QgZWFybHlfcG1kX2ZsYWdzOwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmgKaW5kZXggMmVjMjUwYmE0NjdlMmQuLjk1YzdmNDUzZGIxNzkzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oCkBAIC01MTIsNyAmIzQzOzUxMiw3IEBAIHN0YXRpYyBpbmxpbmUgcGdwcm90X3QgcGdwcm90X2xhcmdlXzJfNGsocGdwcm90X3QgcGdwcm90KQogCXJldHVybiBfX3BncHJvdChwcm90dmFsX2xhcmdlXzJfNGsocGdwcm90X3ZhbChwZ3Byb3QpKSk7CiB9CiAKLQomIzQzO3N0cnVjdCBwdGRlc2M7CiB0eXBlZGVmIHN0cnVjdCBwYWdlICpwZ3RhYmxlX3Q7CiAKIGV4dGVybiBwdGV2YWxfdCBfX3N1cHBvcnRlZF9wdGVfbWFzazsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2ZhdWx0LmMgYi9hcmNoL3g4Ni9tbS9mYXVsdC5jCmluZGV4IDQ1Yjk5YzNiMTQ0MmQ0Li5hYTg4MzcwY2U3Mzk0MyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbW0vZmF1bHQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9tbS9mYXVsdC5jCkBAIC0yNzUsMTcgJiM0MzsyNzUsMTcgQEAgdm9pZCBhcmNoX3N5bmNfa2VybmVsX21hcHBpbmdzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQogCWZvciAoYWRkciA9IHN0YXJ0ICZhbXA7IFBNRF9NQVNLOwogCSAgICAgYWRkciAmZ3Q7PSBUQVNLX1NJWkVfTUFYICZhbXA7JmFtcDsgYWRkciAmbHQ7IFZNQUxMT0NfRU5EOwogCSAgICAgYWRkciAmIzQzOz0gUE1EX1NJWkUpIHsKLQkJc3RydWN0IHBhZ2UgKnBhZ2U7CiYjNDM7CQlzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7CiAKIAkJc3Bpbl9sb2NrKCZhbXA7cGdkX2xvY2spOwotCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsICZhbXA7cGdkX2xpc3QsIGxydSkgewomIzQzOwkJbGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsICZhbXA7cGdkX2xpc3QsIHB0X2xpc3QpIHsKIAkJCXNwaW5sb2NrX3QgKnBndF9sb2NrOwogCiAJCQkvKiB0aGUgcGd0X2xvY2sgb25seSBmb3IgWGVuICovCi0JCQlwZ3RfbG9jayA9ICZhbXA7cGdkX3BhZ2VfZ2V0X21tKHBhZ2UpLSZndDtwYWdlX3RhYmxlX2xvY2s7CiYjNDM7CQkJcGd0X2xvY2sgPSAmYW1wO3BnZF9wYWdlX2dldF9tbShwdGRlc2MpLSZndDtwYWdlX3RhYmxlX2xvY2s7CiAKIAkJCXNwaW5fbG9jayhwZ3RfbG9jayk7Ci0JCQl2bWFsbG9jX3N5bmNfb25lKHBhZ2VfYWRkcmVzcyhwYWdlKSwgYWRkcik7CiYjNDM7CQkJdm1hbGxvY19zeW5jX29uZShwdGRlc2NfYWRkcmVzcyhwdGRlc2MpLCBhZGRyKTsKIAkJCXNwaW5fdW5sb2NrKHBndF9sb2NrKTsKIAkJfQogCQlzcGluX3VubG9jaygmYW1wO3BnZF9sb2NrKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2luaXRfNjQuYyBiL2FyY2gveDg2L21tL2luaXRfNjQuYwppbmRleCBkNTdmMjljYTIzYTVhYy4uYmY1MjlhOTllYmQxYmEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L21tL2luaXRfNjQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9tbS9pbml0XzY0LmMKQEAgLTEzNiw3ICYjNDM7MTM2LDcgQEAgc3RhdGljIHZvaWQgc3luY19nbG9iYWxfcGdkc19sNSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKIAogCWZvciAoYWRkciA9IHN0YXJ0OyBhZGRyICZsdDs9IGVuZDsgYWRkciA9IEFMSUdOKGFkZHIgJiM0MzsgMSwgUEdESVJfU0laRSkpIHsKIAkJY29uc3QgcGdkX3QgKnBnZF9yZWYgPSBwZ2Rfb2Zmc2V0X2soYWRkcik7Ci0JCXN0cnVjdCBwYWdlICpwYWdlOwomIzQzOwkJc3RydWN0IHB0ZGVzYyAqcHRkZXNjOwogCiAJCS8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwogCQlpZiAoYWRkciAmbHQ7IHN0YXJ0KQpAQCAtMTQ2LDEzICYjNDM7MTQ2LDEzIEBAIHN0YXRpYyB2b2lkIHN5bmNfZ2xvYmFsX3BnZHNfbDUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCiAJCQljb250aW51ZTsKIAogCQlzcGluX2xvY2soJmFtcDtwZ2RfbG9jayk7Ci0JCWxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgJmFtcDtwZ2RfbGlzdCwgbHJ1KSB7CiYjNDM7CQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgJmFtcDtwZ2RfbGlzdCwgcHRfbGlzdCkgewogCQkJcGdkX3QgKnBnZDsKIAkJCXNwaW5sb2NrX3QgKnBndF9sb2NrOwogCi0JCQlwZ2QgPSAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkgJiM0MzsgcGdkX2luZGV4KGFkZHIpOwomIzQzOwkJCXBnZCA9IChwZ2RfdCAqKXB0ZGVzY19hZGRyZXNzKHB0ZGVzYykgJiM0MzsgcGdkX2luZGV4KGFkZHIpOwogCQkJLyogdGhlIHBndF9sb2NrIG9ubHkgZm9yIFhlbiAqLwotCQkJcGd0X2xvY2sgPSAmYW1wO3BnZF9wYWdlX2dldF9tbShwYWdlKS0mZ3Q7cGFnZV90YWJsZV9sb2NrOwomIzQzOwkJCXBndF9sb2NrID0gJmFtcDtwZ2RfcGFnZV9nZXRfbW0ocHRkZXNjKS0mZ3Q7cGFnZV90YWJsZV9sb2NrOwogCQkJc3Bpbl9sb2NrKHBndF9sb2NrKTsKIAogCQkJaWYgKCFwZ2Rfbm9uZSgqcGdkX3JlZikgJmFtcDsmYW1wOyAhcGdkX25vbmUoKnBnZCkpCkBAIC0xNzQsNyAmIzQzOzE3NCw3IEBAIHN0YXRpYyB2b2lkIHN5bmNfZ2xvYmFsX3BnZHNfbDQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCiAJZm9yIChhZGRyID0gc3RhcnQ7IGFkZHIgJmx0Oz0gZW5kOyBhZGRyID0gQUxJR04oYWRkciAmIzQzOyAxLCBQR0RJUl9TSVpFKSkgewogCQlwZ2RfdCAqcGdkX3JlZiA9IHBnZF9vZmZzZXRfayhhZGRyKTsKIAkJY29uc3QgcDRkX3QgKnA0ZF9yZWY7Ci0JCXN0cnVjdCBwYWdlICpwYWdlOwomIzQzOwkJc3RydWN0IHB0ZGVzYyAqcHRkZXNjOwogCiAJCS8qCiAJCSAqIFdpdGggZm9sZGVkIHA0ZCwgcGdkX25vbmUoKSBpcyBhbHdheXMgZmFsc2UsIHdlIG5lZWQgdG8KQEAgLTE4NywxNSAmIzQzOzE4NywxNSBAQCBzdGF0aWMgdm9pZCBzeW5jX2dsb2JhbF9wZ2RzX2w0KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQogCQkJY29udGludWU7CiAKIAkJc3Bpbl9sb2NrKCZhbXA7cGdkX2xvY2spOwotCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsICZhbXA7cGdkX2xpc3QsIGxydSkgewomIzQzOwkJbGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsICZhbXA7cGdkX2xpc3QsIHB0X2xpc3QpIHsKIAkJCXBnZF90ICpwZ2Q7CiAJCQlwNGRfdCAqcDRkOwogCQkJc3BpbmxvY2tfdCAqcGd0X2xvY2s7CiAKLQkJCXBnZCA9IChwZ2RfdCAqKXBhZ2VfYWRkcmVzcyhwYWdlKSAmIzQzOyBwZ2RfaW5kZXgoYWRkcik7CiYjNDM7CQkJcGdkID0gKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSAmIzQzOyBwZ2RfaW5kZXgoYWRkcik7CiAJCQlwNGQgPSBwNGRfb2Zmc2V0KHBnZCwgYWRkcik7CiAJCQkvKiB0aGUgcGd0X2xvY2sgb25seSBmb3IgWGVuICovCi0JCQlwZ3RfbG9jayA9ICZhbXA7cGdkX3BhZ2VfZ2V0X21tKHBhZ2UpLSZndDtwYWdlX3RhYmxlX2xvY2s7CiYjNDM7CQkJcGd0X2xvY2sgPSAmYW1wO3BnZF9wYWdlX2dldF9tbShwdGRlc2MpLSZndDtwYWdlX3RhYmxlX2xvY2s7CiAJCQlzcGluX2xvY2socGd0X2xvY2spOwogCiAJCQlpZiAoIXA0ZF9ub25lKCpwNGRfcmVmKSAmYW1wOyZhbXA7ICFwNGRfbm9uZSgqcDRkKSkKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmMgYi9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jCmluZGV4IGQwMjNhNDBhMWUwMzQ1Li40NTYyM2Q0YzI0Yzk0MSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jCkBAIC04ODgsMjQgJiM0Mzs4ODgsMjMgQEAgc3RhdGljIHZvaWQgX19zZXRfcG1kX3B0ZShwdGVfdCAqa3B0ZSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBwdGVfdCBwdGUpCiB7CiAJLyogY2hhbmdlIGluaXRfbW0gKi8KIAlzZXRfcHRlX2F0b21pYyhrcHRlLCBwdGUpOwotI2lmZGVmIENPTkZJR19YODZfMzIKLQl7Ci0JCXN0cnVjdCBwYWdlICpwYWdlOwogCi0JCWxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgJmFtcDtwZ2RfbGlzdCwgbHJ1KSB7CiYjNDM7CWlmIChJU19FTkFCTEVEKENPTkZJR19YODZfMzIpKSB7CiYjNDM7CQlzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7CiYjNDM7CiYjNDM7CQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgJmFtcDtwZ2RfbGlzdCwgcHRfbGlzdCkgewogCQkJcGdkX3QgKnBnZDsKIAkJCXA0ZF90ICpwNGQ7CiAJCQlwdWRfdCAqcHVkOwogCQkJcG1kX3QgKnBtZDsKIAotCQkJcGdkID0gKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpICYjNDM7IHBnZF9pbmRleChhZGRyZXNzKTsKJiM0MzsJCQlwZ2QgPSAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpICYjNDM7IHBnZF9pbmRleChhZGRyZXNzKTsKIAkJCXA0ZCA9IHA0ZF9vZmZzZXQocGdkLCBhZGRyZXNzKTsKIAkJCXB1ZCA9IHB1ZF9vZmZzZXQocDRkLCBhZGRyZXNzKTsKIAkJCXBtZCA9IHBtZF9vZmZzZXQocHVkLCBhZGRyZXNzKTsKIAkJCXNldF9wdGVfYXRvbWljKChwdGVfdCAqKXBtZCwgcHRlKTsKIAkJfQogCX0KLSNlbmRpZgogfQogCiBzdGF0aWMgcGdwcm90X3QgcGdwcm90X2NsZWFyX3Byb3Rub25lX2JpdHMocGdwcm90X3QgcHJvdCkKQEAgLTEyOTgsMTEgJiM0MzsxMjk3LDExIEBAIHN0YXRpYyBpbnQgY29sbGFwc2VfcG1kX3BhZ2UocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLAogCWxpc3RfYWRkKCZhbXA7cGFnZV9wdGRlc2MocG1kX3BhZ2Uob2xkX3BtZCkpLSZndDtwdF9saXN0LCBwZ3RhYmxlcyk7CiAKIAlpZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2XzMyKSkgewotCQlzdHJ1Y3QgcGFnZSAqcGFnZTsKJiM0MzsJCXN0cnVjdCBwdGRlc2MgKnB0ZGVzYzsKIAogCQkvKiBVcGRhdGUgYWxsIFBHRCB0YWJsZXMgdG8gdXNlIHRoZSBzYW1lIGxhcmdlIHBhZ2UgKi8KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCAmYW1wO3BnZF9saXN0LCBscnUpIHsKLQkJCXBnZF90ICpwZ2QgPSAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkgJiM0MzsgcGdkX2luZGV4KGFkZHIpOwomIzQzOwkJbGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsICZhbXA7cGdkX2xpc3QsIHB0X2xpc3QpIHsKJiM0MzsJCQlwZ2RfdCAqcGdkID0gKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSAmIzQzOyBwZ2RfaW5kZXgoYWRkcik7CiAJCQlwNGRfdCAqcDRkID0gcDRkX29mZnNldChwZ2QsIGFkZHIpOwogCQkJcHVkX3QgKnB1ZCA9IHB1ZF9vZmZzZXQocDRkLCBhZGRyKTsKIAkJCXBtZF90ICpwbWQgPSBwbWRfb2Zmc2V0KHB1ZCwgYWRkcik7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9wZ3RhYmxlLmMgYi9hcmNoL3g4Ni9tbS9wZ3RhYmxlLmMKaW5kZXggZjMyZmFjZGIzMDM1NDMuLmNiMDNmNWEyYjI0MzM4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9tbS9wZ3RhYmxlLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbW0vcGd0YWJsZS5jCkBAIC03NCw5ICYjNDM7NzQsOSBAQCBzdGF0aWMgdm9pZCBwZ2Rfc2V0X21tKHBnZF90ICpwZ2QsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogCXZpcnRfdG9fcHRkZXNjKHBnZCktJmd0O3B0X21tID0gbW07CiB9CiAKLXN0cnVjdCBtbV9zdHJ1Y3QgKnBnZF9wYWdlX2dldF9tbShzdHJ1Y3QgcGFnZSAqcGFnZSkKJiM0MztzdHJ1Y3QgbW1fc3RydWN0ICpwZ2RfcGFnZV9nZXRfbW0oc3RydWN0IHB0ZGVzYyAqcHQpCiB7Ci0JcmV0dXJuIHBhZ2VfcHRkZXNjKHBhZ2UpLSZndDtwdF9tbTsKJiM0MzsJcmV0dXJuIHB0LSZndDtwdF9tbTsKIH0KIAogc3RhdGljIHZvaWQgcGdkX2N0b3Ioc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni94ZW4vbW11X3B2LmMgYi9hcmNoL3g4Ni94ZW4vbW11X3B2LmMKaW5kZXggYWFiNWY3MGQ0MDdjMWIuLjZmZjVhNzEzMGU1M2U2IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni94ZW4vbW11X3B2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYveGVuL21tdV9wdi5jCkBAIC04MzYsMTUgJiM0Mzs4MzYsMTUgQEAgc3RhdGljIHZvaWQgeGVuX3BnZF9waW4oc3RydWN0IG1tX3N0cnVjdCAqbW0pCiAgKi8KIHZvaWQgeGVuX21tX3Bpbl9hbGwodm9pZCkKIHsKLQlzdHJ1Y3QgcGFnZSAqcGFnZTsKJiM0MzsJc3RydWN0IHB0ZGVzYyAqcHRkZXNjOwogCiAJc3Bpbl9sb2NrKCZhbXA7aW5pdF9tbS5wYWdlX3RhYmxlX2xvY2spOwogCXNwaW5fbG9jaygmYW1wO3BnZF9sb2NrKTsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgJmFtcDtwZ2RfbGlzdCwgbHJ1KSB7Ci0JCWlmICghUGFnZVBpbm5lZChwYWdlKSkgewotCQkJX194ZW5fcGdkX3BpbigmYW1wO2luaXRfbW0sIChwZ2RfdCAqKXBhZ2VfYWRkcmVzcyhwYWdlKSk7Ci0JCQlTZXRQYWdlU2F2ZVBpbm5lZChwYWdlKTsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsICZhbXA7cGdkX2xpc3QsIHB0X2xpc3QpIHsKJiM0MzsJCWlmICghUGFnZVBpbm5lZChwdGRlc2NfcGFnZShwdGRlc2MpKSkgewomIzQzOwkJCV9feGVuX3BnZF9waW4oJmFtcDtpbml0X21tLCAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpKTsKJiM0MzsJCQlTZXRQYWdlU2F2ZVBpbm5lZChwdGRlc2NfcGFnZShwdGRlc2MpKTsKIAkJfQogCX0KIApAQCAtOTQ3LDE2ICYjNDM7OTQ3LDE2IEBAIHN0YXRpYyB2b2lkIHhlbl9wZ2RfdW5waW4oc3RydWN0IG1tX3N0cnVjdCAqbW0pCiAgKi8KIHZvaWQgeGVuX21tX3VucGluX2FsbCh2b2lkKQogewotCXN0cnVjdCBwYWdlICpwYWdlOwomIzQzOwlzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7CiAKIAlzcGluX2xvY2soJmFtcDtpbml0X21tLnBhZ2VfdGFibGVfbG9jayk7CiAJc3Bpbl9sb2NrKCZhbXA7cGdkX2xvY2spOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCAmYW1wO3BnZF9saXN0LCBscnUpIHsKLQkJaWYgKFBhZ2VTYXZlUGlubmVkKHBhZ2UpKSB7Ci0JCQlCVUdfT04oIVBhZ2VQaW5uZWQocGFnZSkpOwotCQkJX194ZW5fcGdkX3VucGluKCZhbXA7aW5pdF9tbSwgKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpKTsKLQkJCUNsZWFyUGFnZVNhdmVQaW5uZWQocGFnZSk7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnkocHRkZXNjLCAmYW1wO3BnZF9saXN0LCBwdF9saXN0KSB7CiYjNDM7CQlpZiAoUGFnZVNhdmVQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSkpIHsKJiM0MzsJCQlCVUdfT04oIVBhZ2VQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSkpOwomIzQzOwkJCV9feGVuX3BnZF91bnBpbigmYW1wO2luaXRfbW0sIChwZ2RfdCAqKXB0ZGVzY19hZGRyZXNzKHB0ZGVzYykpOwomIzQzOwkJCUNsZWFyUGFnZVNhdmVQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSk7CiAJCX0KIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIxOQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDExMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVmYWN0b3JpbmcgeDg2IFBhZ2UgVGFibGUgQ29kZTogV29ydGggRnV6emluZz8qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBtYWtpbmcgY2hhbmdlcyB0byB0aGUgeDg2IHBhZ2UgdGFibGUgbWFuYWdlbWVudCBjb2RlLCBzcGVjaWZpY2FsbHkgaW52b2x2aW5nIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYHN0cnVjdCBwdGRlc2NgIGluIHBsYWNlIG9mIGBzdHJ1Y3QgcGFnZWAgaW4gYSBidW5jaCBvZiBwbGFjZXMgaXRlcmF0aW5nIG92ZXIgYHBnZF9saXN0YC4gSXQmIzM5O3MgcmVwbGFjaW5nIGBwYWdlYCB3aXRoIGBwdGRlc2NgLCB1c2luZyBgcHRkZXNjX2FkZHJlc3NgIGluc3RlYWQgb2YgYHBhZ2VfYWRkcmVzc2AsIGFuZCBjaGFuZ2luZyB0aGUgbGlzdCBpdGVyYXRpb24gZnJvbSBgbHJ1YCB0byBgcHRfbGlzdGAuIEl0IGFsc28gbG9va3MgbGlrZSBhIGNoYW5nZSB0byBgcGdkX3BhZ2VfZ2V0X21tYCB0byBoYW5kbGUgYHB0ZGVzY2AgaW5zdGVhZCBvZiBgcGFnZWAuIFRoaXMgc2VlbXMgbGlrZSBwYXJ0IG9mIGEgbGFyZ2VyIGVmZm9ydCB0byBkZWNvdXBsZSBwYWdlIHRhYmxlIGRlc2NyaXB0b3JzIGZyb20gdGhlIGBzdHJ1Y3QgcGFnZWAuCgpNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYSBwdXJlIHJlZmFjdG9yaW5nLCBvciBkb2VzIGl0IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IEkgbmVlZCB0byB3b3JyeSBhYm91dCBmdXp6aW5nPyBMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgY2hhbmdlczogd2UmIzM5O3JlIHNlZWluZyBzdWJzdGl0dXRpb25zIG9mIGBwYWdlYCB3aXRoIGBwdGRlc2NgIHRocm91Z2hvdXQgdGhlIGNvZGUsIHdoaWNoIG1lYW5zIHVwZGF0aW5nIGFyZ3VtZW50IHR5cGVzIGZvciB0aGUgZ2V0X21tIGZ1bmN0aW9uLCBsaXN0IGl0ZXJhdGluZywgYW5kIGFkZHJlc3MgZmV0Y2hpbmcuIEl0IGxvb2tzIGxpa2UgYHB0X2xpc3RgIGlzIGp1c3QgYWxpYXNpbmcgYGxydWAgYW5kIGBwdGRlc2NfYWRkcmVzc2AgaXMganVzdCB1c2luZyBgcHRkZXNjX3BhZ2VgLiBBbmQsIHRoZSBgcGdkX3BhZ2VfZ2V0X21tYCBmdW5jdGlvbiBpcyBqdXN0IGFjY2Vzc2luZyBgcHRfbW1gIGluc3RlYWQgb2YgdXNpbmcgdGhlIGBwYWdlYCBzdHJ1Y3R1cmUuIE9rYXksIHNvIGZhciwgaXQgKnNlZW1zKiBsaWtlIGEgc3RyYWlnaHQgcmVmYWN0b3JpbmcuCgpXYWl0LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgaWYgdGhlcmUmIzM5O3MgKmFueSogc3VidGxlIGZ1bmN0aW9uYWwgY2hhbmdlLiBMZXQmIzM5O3MgbG9vayBhdCB0aGUgYGluY2x1ZGUvbGludXgvcGd0YWJsZS5oYCBvciBzaW1pbGFyIHRvIHNlZSB3aGF0IHRoZSBgcHRkZXNjYCBzdHJ1Y3QgaXMuIFRoaXMgaXMgcGFydCBvZiB0aGUgJiMzNDttbTogVXNlIHB0ZGVzYyBpbiB4ODYgbW11JiMzNDsgc2VyaWVzLCBzbyBpdCBkb2VzIGFwcGVhciB0byBiZSBhIHNpbXBsZSByZWZhY3Rvci4gT2theSwgZXZlbiB0aG91Z2ggaXQmIzM5O3MgbW9kaWZ5aW5nIGNvcmUga2VybmVsIGxvZ2ljICh4ODYgcGFnZSB0YWJsZXMpLCBpdCBzZWVtcyBsaWtlIGEgcHVyZSByZWZhY3Rvci4gVGhpcyBzaG91bGRuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGJ1Z3MgdG8gYmUgZnV6emVkLCB1bmxlc3MgSSBtaXNzIHNvbWV0aGluZy4KCkxldCBtZSBkb3VibGUtY2hlY2suIEluIGBhcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jYCwgdGhlcmUmIzM5O3MgYSBjaGFuZ2UgZnJvbSBgI2lmZGVmIENPTkZJR19YODZfMzJgIHRvIGBpZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2XzMyKSlgLiBPa2F5LCB0aGF0JiMzOTtzIG1pbm9yLCBidXQgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGF0IHRoZSBjb2RlIGlzIG5vdyBjb21waWxlZCBvbiA2NC1iaXQsIGV2ZW4gaWYgaXQmIzM5O3Mgb3B0aW1pemVkIG91dCBvbiB0aGF0IGFyY2hpdGVjdHVyZSwgYnV0IGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LgoKVGhlIHByb21wdCBsaXN0cyBjb25kaXRpb25zIGZvciBgV29ydGhGdXp6aW5nPWZhbHNlYCwgYW5kIGEgcHVyZSByZWZhY3RvcmluZyBpc24mIzM5O3QgZXhwbGljaXRseSBtZW50aW9uZWQsIGJ1dCBpdCBzYXlzLCAmIzM0O2lmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OyBJdCYjMzk7cyBtb2RpZnlpbmcgY29yZSBrZXJuZWwgbG9naWMsIGV2ZW4gaWYgaXQmIzM5O3MgYSByZWZhY3RvcmluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIHNvbWV0aGluZy4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgZXZlbiByZWZhY3RvcmluZyBpbnRyb2R1Y2VzIHJpc2ssIGxpa2UgdXNpbmcgdGhlIHdyb25nIGZpZWxkLiBJcyB0aGUgYWxpYXMgZXhhY3Q/IExldCYjMzk7cyBkb3VibGUgY2hlY2sgYHB0X2xpc3RgIGFuZCBgbHJ1YCBhcmUgaW4gYSB1bmlvbiB3aXRoaW4gYHN0cnVjdCBwYWdlYC4gVGltZSB0byBmaXJlIHVwIGBncmVwcGVyYCBhbmQgZmluZCB0aGUgZGVmaW5pdGlvbiBvZiBgc3RydWN0IHB0ZGVzY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjA6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IHB0ZGVzYyBcXHsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTU0Nz1GT0xJT19NQVRDSChjb21wb3VuZF9pbmZvLCBfaGVhZF8zKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtNTcyLSAqL1xuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjU3MzpzdHJ1Y3QgcHRkZXNjIHtcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC01NzQtXHRtZW1kZXNjX2ZsYWdzX3QgcHRfZmxhZ3M7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjA6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE0MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgbW1fdHlwZXMuaGAgLSBTcGVjaWZpY2FsbHksIExpbmUgNTczLi4uKioKCk9rYXksIHRpbWUgdG8gZ2V0IGEgYml0IG1vcmUgZ3JhbnVsYXIuIEkmIzM5O20gZ29pbmcgdG8gcHVsbCB1cCB0aGUgYGluY2x1ZGUvbGludXgvbW1fdHlwZXMuaGAgaGVhZGVyIGZpbGUuIEl0JiMzOTtzIHVzdWFsbHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHdoZW4gZGVhbGluZyB3aXRoIG1lbW9yeSBtYW5hZ2VtZW50IHN0cnVjdHVyZXMgaW4gdGhlIExpbnV4IGtlcm5lbC4gSSYjMzk7bSBnb2luZyB0byBqdW1wIGRpcmVjdGx5IHRvIGFyb3VuZCBsaW5lIDU3My4gSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSBkZWZpbml0aW9uIEkgbmVlZCBpcyBsb2NhdGVkLCBidXQgSSYjMzk7bGwgZG91YmxlLWNoZWNrIGl0LiBUaGlzIGlzIHdoZXJlIEkgb2Z0ZW4gZmluZCB0aGUgY29yZSBzdHJ1Y3R1cmVzIGRlZmluaW5nIG1lbW9yeSBtYXBzIGFuZCB0aGUgcmVsYXRlZCBmaWVsZHMgdGhhdCBJJiMzOTttIGludGVyZXN0ZWQgaW4gZm9yIHRoZSBjdXJyZW50IHRhc2suIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IHNlY3Rpb24gYWN0dWFsbHkgcmV2ZWFscy4gSSBrbm93IEkmIzM5O2xsIGJlIGxvb2tpbmcgYXQgc3RydWN0dXJlcyBsaWtlIGB2bV9hcmVhX3N0cnVjdGAsIGJ1dCBJIHdhbnQgdG8gcmVtaW5kIG15c2VsZiBleGFjdGx5IHdoaWNoIGRlZmluaXRpb25zIGFyZSBpbiB0aGlzIGxvY2F0aW9uLiBPa2F5LCBsZXQmIzM5O3MgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9tbV90eXBlcy5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NjA6XHQgKiBAcHRfaW5kZXg6ICAgICAgICAgVXNlZCBmb3IgczM5MCBnbWFwLlxuIDU2MTpcdCAqIEBwdF9tbTogICAgICAgICAgICBVc2VkIGZvciB4ODYgcGdkcy5cbiA1NjI6XHQgKiBAcHRfZnJhZ19yZWZjb3VudDogRm9yIGZyYWdtZW50ZWQgcGFnZSB0YWJsZSB0cmFja2luZy4gUG93ZXJwYyBvbmx5LlxuIDU2MzpcdCAqIEBwdF9zaGFyZV9jb3VudDogICBVc2VkIGZvciBIdWdlVExCIFBNRCBwYWdlIHRhYmxlIHNoYXJlIGNvdW50LlxuIDU2NDpcdCAqIEBfcHRfcGFkXzI6ICAgICAgICBQYWRkaW5nIHRvIGVuc3VyZSBwcm9wZXIgYWxpZ25tZW50LlxuIDU2NTpcdCAqIEBwdGw6ICAgICAgICAgICAgICBMb2NrIGZvciB0aGUgcGFnZSB0YWJsZS5cbiA1NjY6XHQgKiBAX19wYWdlX3R5cGU6ICAgICAgU2FtZSBhcyBwYWdlLVx1MDAzZXBhZ2VfdHlwZS4gVW51c2VkIGZvciBwYWdlIHRhYmxlcy5cbiA1Njc6XHQgKiBAX19wYWdlX3JlZmNvdW50OiAgU2FtZSBhcyBwYWdlIHJlZmNvdW50LlxuIDU2ODpcdCAqIEBwdF9tZW1jZ19kYXRhOiAgICBNZW1jZyBkYXRhLiBUcmFja2VkIGZvciBwYWdlIHRhYmxlcyBoZXJlLlxuIDU2OTpcdCAqXG4gNTcwOlx0ICogVGhpcyBzdHJ1Y3Qgb3ZlcmxheXMgc3RydWN0IHBhZ2UgZm9yIG5vdy4gRG8gbm90IG1vZGlmeSB3aXRob3V0IGEgZ29vZFxuIDU3MTpcdCAqIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGlzc3Vlcy5cbiA1NzI6XHQgKi9cbiA1NzM6XHRzdHJ1Y3QgcHRkZXNjIHtcbiA1NzQ6XHRcdG1lbWRlc2NfZmxhZ3NfdCBwdF9mbGFncztcbiA1NzU6XHRcbiA1NzY6XHRcdHVuaW9uIHtcbiA1Nzc6XHRcdFx0c3RydWN0IHJjdV9oZWFkIHB0X3JjdV9oZWFkO1xuIDU3ODpcdFx0XHRzdHJ1Y3QgbGlzdF9oZWFkIHB0X2xpc3Q7XG4gNTc5Olx0XHRcdHN0cnVjdCB7XG4gNTgwOlx0XHRcdFx0dW5zaWduZWQgbG9uZyBfcHRfcGFkXzE7XG4gNTgxOlx0XHRcdFx0cGd0YWJsZV90IHBtZF9odWdlX3B0ZTtcbiA1ODI6XHRcdFx0fTtcbiA1ODM6XHRcdH07XG4gNTg0Olx0XHR1bnNpZ25lZCBsb25nIF9fcGFnZV9tYXBwaW5nO1xuIDU4NTpcdFxuIDU4NjpcdFx0dW5pb24ge1xuIDU4NzpcdFx0XHRwZ29mZl90IHB0X2luZGV4O1xuIDU4ODpcdFx0XHRzdHJ1Y3QgbW1fc3RydWN0ICpwdF9tbTtcbiA1ODk6XHRcdFx0YXRvbWljX3QgcHRfZnJhZ19yZWZjb3VudDtcbiA1OTA6XHQjaWZkZWYgQ09ORklHX0hVR0VUTEJfUE1EX1BBR0VfVEFCTEVfU0hBUklOR1xuIDU5MTpcdFx0XHRhdG9taWNfdCBwdF9zaGFyZV9jb3VudDtcbiA1OTI6XHQjZW5kaWZcbiA1OTM6XHRcdH07XG4gNTk0Olx0XG4gNTk1Olx0XHR1bmlvbiB7XG4gNTk2Olx0XHRcdHVuc2lnbmVkIGxvbmcgX3B0X3BhZF8yO1xuIDU5NzpcdCNpZiBBTExPQ19TUExJVF9QVExPQ0tTXG4gNTk4Olx0XHRcdHNwaW5sb2NrX3QgKnB0bDtcbiA1OTk6XHQjZWxzZVxuIDYwMDpcdFx0XHRzcGlubG9ja190IHB0bDtcbiA2MDE6XHQjZW5kaWZcbiA2MDI6XHRcdH07XG4gNjAzOlx0XHR1bnNpZ25lZCBpbnQgX19wYWdlX3R5cGU7XG4gNjA0Olx0XHRhdG9taWNfdCBfX3BhZ2VfcmVmY291bnQ7XG4gNjA1Olx0I2lmZGVmIENPTkZJR19NRU1DR1xuIDYwNjpcdFx0dW5zaWduZWQgbG9uZyBwdF9tZW1jZ19kYXRhO1xuIDYwNzpcdCNlbmRpZlxuIDYwODpcdH07XG4gNjA5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjA6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE0NwoJCQkJCQkJb3V0cHV0OiA5NQoJCQkJCQkJdGhvdWdodHM6IDEyNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBXb3J0aGluZXNzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBpdCBzZWVtcyBgcHRfbGlzdGAgaXMganVzdCBhbiBhbGlhcyBmb3IgYGxydWAgd2l0aGluIHRoZSBgc3RydWN0IHBhZ2VgIHN0cnVjdHVyZS4gVGhpcyBwYXRjaCBpcyBlc3NlbnRpYWxseSByZWZhY3RvcmluZyDigJMgcmVwbGFjaW5nIGBzdHJ1Y3QgcGFnZWAgd2l0aCBgc3RydWN0IHB0ZGVzY2AgaW4gcGFnZSB0YWJsZSBtYW5hZ2VtZW50LiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgaW50cm9kdWNlICpmdW5jdGlvbmFsKiBjaGFuZ2VzPyBObywgaXQmIzM5O3MganVzdCBhIHR5cGUgc3dpdGNoIGFuZCB1c2VzIG5ldyBhY2Nlc3NvcnMuCgpBaGEsIHdhaXQgYSBtaW51dGUsIEkgc2VlIGEgY29uZGl0aW9uYWwgY2hhbmdlOiBgaWYgKElTX0VOQUJMRUQoQ09ORklHX1g4Nl8zMikpYCByZXBsYWNpbmcgYCNpZmRlZiBDT05GSUdfWDg2XzMyYC4gIFRoYXQgbWVhbnMgdGhlIGNvZGUgYmxvY2sgaXMgKm5vdyogY29tcGlsZWQgb24gNjQtYml0LCBldmVuIHRob3VnaCB0aGUgY29tcGlsZXIgd2lsbCBvcHRpbWl6ZSBpdCBvdXQuIEl0IGNoYW5nZXMgdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MuIFRoaXMgaXMgdGVjaG5pY2FsbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBhdCB0aGUgY29tcGlsYXRpb24gc3RhZ2UsIGJ1dCB0aGUgZXhlY3V0aW9uIHBhdGggcmVtYWlucyB1bmFmZmVjdGVkIGJlY2F1c2Ugb2YgdGhlIGRlYWQgY29kZSBlbGltaW5hdGlvbi4gSXQgZG9lc24mIzM5O3QgY2hhbmdlIHdoYXQgdGhlIGtlcm5lbCAqZG9lcyouCgpTaW5jZSB0aGlzIHBhdGNoIGlzICpwdXJlbHkqIHJlZmFjdG9yaW5nIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgbmV3ICpmdW5jdGlvbmFsKiBsb2dpYyDigJMgbm8gbmV3IGZlYXR1cmVzIG9yIGFsdGVyZWQgYmVoYXZpb3Ig4oCTIEkgaW5pdGlhbGx5IHRob3VnaHQgZnV6emluZyBpdCBzcGVjaWZpY2FsbHkgd291bGQgYmUgcG9pbnRsZXNzLiBUaGUgcHJvbXB0IHNheXMsIHNwZWNpZmljYWxseSwgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLCBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cywgQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LCBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uJiMzNDsuIEl0IGRvZXNuJiMzOTt0IGV4cGxpY2l0bHkgbWVudGlvbiByZWZhY3RvcmluZywgYnV0IHJlZmFjdG9yaW5nIGRvZXNuJiMzOTt0IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KCkkgY29uc2lkZXJlZCB3aGF0IGZ1bmN0aW9ucyBhcmUgbW9kaWZpZWQ6IGBhcmNoX3N5bmNfa2VybmVsX21hcHBpbmdzYCwgYHN5bmNfZ2xvYmFsX3BnZHNfbDVgLCBgc3luY19nbG9iYWxfcGdkc19sNGAsIGBfX3NldF9wbWRfcHRlYCwgYGNvbGxhcHNlX3BtZF9wYWdlYCwgYHBnZF9wYWdlX2dldF9tbWAsIGB4ZW5fbW1fcGluX2FsbGAsIGFuZCBgeGVuX21tX3VucGluX2FsbGAuIFRoZXkmIzM5O3JlIGxvdy1sZXZlbCBwYWdlIHRhYmxlIGZ1bmN0aW9ucy4gRnV6emluZyB0aGVtIGRpcmVjdGx5IG1pZ2h0IG5vdCBiZSB2ZXJ5IGluc2lnaHRmdWwsIHNpbmNlIHRoZXkmIzM5O3JlIHVzdWFsbHkgcmVhY2hlZCB2aWEgc3RhbmRhcmQgbWVtb3J5IG9wZXJhdGlvbnMuCgpTbywgSSByZS1yZWFkIHRoZSBpbnN0cnVjdGlvbnMuICAmIzM0O1RydWUgaWYgZnVuY3Rpb25hbC4gRmFsc2UgaWYgb25seSBkb2NzL2NvbW1lbnRzL3VucmVhY2hhYmxlLiYjMzQ7IEFuZCBpdCBkb2VzIG1vZGlmeSBjb3JlIGtlcm5lbCBsb2dpYyAoeDg2IHBhZ2UgdGFibGUgaGFuZGxpbmcpLiBCdXQgdGhhdCYjMzk7cyBub3Qgd2hhdCB0aGUgcHJvbXB0IGlzIHJlYWxseSBhc2tpbmcuCgpHaXZlbiB0aGUgd29yZGluZywgJiMzNDtGYWxzZSBpZiBvbmx5IGRvY3MvY29tbWVudHMvdW5yZWFjaGFibGUmIzM0OywgYW5kIHRoZSBleHBsaWNpdCBtZW50aW9uIG9mIG5vIGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbiBvZiBleGVjdXRpb24gZmxvdywgSSYjMzk7bSBnb2luZyB0byBsZWFuIHRvd2FyZHMgJiMzNDtGYWxzZS4mIzM0OyBUaGUgcGF0Y2ggKmlzKiBjaGFuZ2luZyBjb2RlLCBidXQgcmVmYWN0b3JpbmcgaXNuJiMzOTt0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhpcyBjb250ZXh0IGJlY2F1c2UgaXQmIzM5O3Mgbm90IGNoYW5naW5nIHdoYXQgdGhlIGtlcm5lbCAqZG9lcyouIEl0JiMzOTtzIGEgdHlwZSBjaGFuZ2UsIG1vZGlmeWluZyB0aGUgY29tcGlsZXImIzM5O3MgYmVoYXZpb3IsIGJ1dCBub3QgdGhlIHJ1bnRpbWUgYmVoYXZpb3IuCgpUaGUgY29yZSBvZiB0aGUgcmVmYWN0b3JpbmcgaXMgc3dpdGNoaW5nIGZyb20gYHN0cnVjdCBwYWdlICpgIHRvIGBzdHJ1Y3QgcHRkZXNjICpgIGluIGZ1bmN0aW9ucyBzdWNoIGFzIGBwZ2RfcGFnZV9nZXRfbW1gIGFuZCB1c2luZyBgcHRfbGlzdGAgaW5zdGVhZCBvZiBgbHJ1YCBpbiBgbGlzdF9mb3JfZWFjaF9lbnRyeWAuIFRoaXMgbWVhbnMgdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MgaXMgZGlmZmVyZW50LCBidXQgdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdyBpc24mIzM5O3QgY2hhbmdlZC4KClRodXMsIEkmIzM5O20gZ29pbmcgd2l0aCBgV29ydGhGdXp6aW5nPWZhbHNlYCBiZWNhdXNlIHRoaXMgaXMgcHVyZSByZWZhY3RvcmluZyBhbmQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGNoYW5nZSB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IHJlcGxhY2VzIGBzdHJ1Y3QgcGFnZWAgd2l0aCBgc3RydWN0IHB0ZGVzY2AgaW4geDg2IHBhZ2UgdGFibGUgbWFuYWdlbWVudCBjb2RlLiBJdCB1cGRhdGVzIHR5cGVzIGFuZCBmaWVsZCBuYW1lcyAoZS5nLiwgYGxydWAgdG8gYHB0X2xpc3RgKSBidXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCByZXBsYWNlcyBgc3RydWN0IHBhZ2VgIHdpdGggYHN0cnVjdCBwdGRlc2NgIGluIHg4NiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgY29kZS4gSXQgdXBkYXRlcyB0eXBlcyBhbmQgZmllbGQgbmFtZXMgKGUuZy4sIGBscnVgIHRvIGBwdF9saXN0YCkgYnV0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIwOjM0OjU4Ljg2Mjg5OTIyMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NTk3NTM0NjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCByZXBsYWNlcyBgc3RydWN0IHBhZ2VgIHdpdGggYHN0cnVjdCBwdGRlc2NgIGluIHg4NiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgY29kZS4gSXQgdXBkYXRlcyB0eXBlcyBhbmQgZmllbGQgbmFtZXMgKGUuZy4sIGBscnVgIHRvIGBwdF9saXN0YCkgYnV0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjA6MzQ6NTguODYyOTAzMTYxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDgwMzM2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4N2RiZWY3ODYwODEwZjViOThjMzAyNmJiYTZlZDdlYmY0ZWY2YTVhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDI5IDIwOjM0OjU3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaFxcbmluZGV4IGFjMjk1Y2E2YzkyZjk5Li5kZDA0NmYyOWVjMzE1MiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmhcXG5AQCAtNTAsNyArNTAsNyBAQCB2b2lkIHB0ZHVtcF93YWxrX3VzZXJfcGdkX2xldmVsX2NoZWNrd3godm9pZCk7XFxuIGV4dGVybiBzcGlubG9ja190IHBnZF9sb2NrO1xcbiBleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBwZ2RfbGlzdDtcXG4gXFxuLWV4dGVybiBzdHJ1Y3QgbW1fc3RydWN0ICpwZ2RfcGFnZV9nZXRfbW0oc3RydWN0IHBhZ2UgKnBhZ2UpO1xcbitzdHJ1Y3QgbW1fc3RydWN0ICpwZ2RfcGFnZV9nZXRfbW0oc3RydWN0IHB0ZGVzYyAqcHQpO1xcbiBcXG4gZXh0ZXJuIHBtZHZhbF90IGVhcmx5X3BtZF9mbGFncztcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlwZXMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlwZXMuaFxcbmluZGV4IDJlYzI1MGJhNDY3ZTJkLi45NWM3ZjQ1M2RiMTc5MyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmhcXG5AQCAtNTEyLDcgKzUxMiw3IEBAIHN0YXRpYyBpbmxpbmUgcGdwcm90X3QgcGdwcm90X2xhcmdlXzJfNGsocGdwcm90X3QgcGdwcm90KVxcbiBcXHRyZXR1cm4gX19wZ3Byb3QocHJvdHZhbF9sYXJnZV8yXzRrKHBncHJvdF92YWwocGdwcm90KSkpO1xcbiB9XFxuIFxcbi1cXG4rc3RydWN0IHB0ZGVzYztcXG4gdHlwZWRlZiBzdHJ1Y3QgcGFnZSAqcGd0YWJsZV90O1xcbiBcXG4gZXh0ZXJuIHB0ZXZhbF90IF9fc3VwcG9ydGVkX3B0ZV9tYXNrO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9mYXVsdC5jIGIvYXJjaC94ODYvbW0vZmF1bHQuY1xcbmluZGV4IDQ1Yjk5YzNiMTQ0MmQ0Li5hYTg4MzcwY2U3Mzk0MyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9tbS9mYXVsdC5jXFxuKysrIGIvYXJjaC94ODYvbW0vZmF1bHQuY1xcbkBAIC0yNzUsMTcgKzI3NSwxNyBAQCB2b2lkIGFyY2hfc3luY19rZXJuZWxfbWFwcGluZ3ModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxuIFxcdGZvciAoYWRkciA9IHN0YXJ0IFxcdTAwMjYgUE1EX01BU0s7XFxuIFxcdCAgICAgYWRkciBcXHUwMDNlPSBUQVNLX1NJWkVfTUFYIFxcdTAwMjZcXHUwMDI2IGFkZHIgXFx1MDAzYyBWTUFMTE9DX0VORDtcXG4gXFx0ICAgICBhZGRyICs9IFBNRF9TSVpFKSB7XFxuLVxcdFxcdHN0cnVjdCBwYWdlICpwYWdlO1xcbitcXHRcXHRzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7XFxuIFxcbiBcXHRcXHRzcGluX2xvY2soXFx1MDAyNnBnZF9sb2NrKTtcXG4tXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcXHUwMDI2cGdkX2xpc3QsIGxydSkge1xcbitcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXFx1MDAyNnBnZF9saXN0LCBwdF9saXN0KSB7XFxuIFxcdFxcdFxcdHNwaW5sb2NrX3QgKnBndF9sb2NrO1xcbiBcXG4gXFx0XFx0XFx0LyogdGhlIHBndF9sb2NrIG9ubHkgZm9yIFhlbiAqL1xcbi1cXHRcXHRcXHRwZ3RfbG9jayA9IFxcdTAwMjZwZ2RfcGFnZV9nZXRfbW0ocGFnZSktXFx1MDAzZXBhZ2VfdGFibGVfbG9jaztcXG4rXFx0XFx0XFx0cGd0X2xvY2sgPSBcXHUwMDI2cGdkX3BhZ2VfZ2V0X21tKHB0ZGVzYyktXFx1MDAzZXBhZ2VfdGFibGVfbG9jaztcXG4gXFxuIFxcdFxcdFxcdHNwaW5fbG9jayhwZ3RfbG9jayk7XFxuLVxcdFxcdFxcdHZtYWxsb2Nfc3luY19vbmUocGFnZV9hZGRyZXNzKHBhZ2UpLCBhZGRyKTtcXG4rXFx0XFx0XFx0dm1hbGxvY19zeW5jX29uZShwdGRlc2NfYWRkcmVzcyhwdGRlc2MpLCBhZGRyKTtcXG4gXFx0XFx0XFx0c3Bpbl91bmxvY2socGd0X2xvY2spO1xcbiBcXHRcXHR9XFxuIFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZwZ2RfbG9jayk7XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2luaXRfNjQuYyBiL2FyY2gveDg2L21tL2luaXRfNjQuY1xcbmluZGV4IGQ1N2YyOWNhMjNhNWFjLi5iZjUyOWE5OWViZDFiYSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9tbS9pbml0XzY0LmNcXG4rKysgYi9hcmNoL3g4Ni9tbS9pbml0XzY0LmNcXG5AQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyB2b2lkIHN5bmNfZ2xvYmFsX3BnZHNfbDUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxuIFxcbiBcXHRmb3IgKGFkZHIgPSBzdGFydDsgYWRkciBcXHUwMDNjPSBlbmQ7IGFkZHIgPSBBTElHTihhZGRyICsgMSwgUEdESVJfU0laRSkpIHtcXG4gXFx0XFx0Y29uc3QgcGdkX3QgKnBnZF9yZWYgPSBwZ2Rfb2Zmc2V0X2soYWRkcik7XFxuLVxcdFxcdHN0cnVjdCBwYWdlICpwYWdlO1xcbitcXHRcXHRzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7XFxuIFxcbiBcXHRcXHQvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi9cXG4gXFx0XFx0aWYgKGFkZHIgXFx1MDAzYyBzdGFydClcXG5AQCAtMTQ2LDEzICsxNDYsMTMgQEAgc3RhdGljIHZvaWQgc3luY19nbG9iYWxfcGdkc19sNSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRzcGluX2xvY2soXFx1MDAyNnBnZF9sb2NrKTtcXG4tXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcXHUwMDI2cGdkX2xpc3QsIGxydSkge1xcbitcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXFx1MDAyNnBnZF9saXN0LCBwdF9saXN0KSB7XFxuIFxcdFxcdFxcdHBnZF90ICpwZ2Q7XFxuIFxcdFxcdFxcdHNwaW5sb2NrX3QgKnBndF9sb2NrO1xcbiBcXG4tXFx0XFx0XFx0cGdkID0gKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpICsgcGdkX2luZGV4KGFkZHIpO1xcbitcXHRcXHRcXHRwZ2QgPSAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpICsgcGdkX2luZGV4KGFkZHIpO1xcbiBcXHRcXHRcXHQvKiB0aGUgcGd0X2xvY2sgb25seSBmb3IgWGVuICovXFxuLVxcdFxcdFxcdHBndF9sb2NrID0gXFx1MDAyNnBnZF9wYWdlX2dldF9tbShwYWdlKS1cXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xcbitcXHRcXHRcXHRwZ3RfbG9jayA9IFxcdTAwMjZwZ2RfcGFnZV9nZXRfbW0ocHRkZXNjKS1cXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xcbiBcXHRcXHRcXHRzcGluX2xvY2socGd0X2xvY2spO1xcbiBcXG4gXFx0XFx0XFx0aWYgKCFwZ2Rfbm9uZSgqcGdkX3JlZikgXFx1MDAyNlxcdTAwMjYgIXBnZF9ub25lKCpwZ2QpKVxcbkBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIHZvaWQgc3luY19nbG9iYWxfcGdkc19sNCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4gXFx0Zm9yIChhZGRyID0gc3RhcnQ7IGFkZHIgXFx1MDAzYz0gZW5kOyBhZGRyID0gQUxJR04oYWRkciArIDEsIFBHRElSX1NJWkUpKSB7XFxuIFxcdFxcdHBnZF90ICpwZ2RfcmVmID0gcGdkX29mZnNldF9rKGFkZHIpO1xcbiBcXHRcXHRjb25zdCBwNGRfdCAqcDRkX3JlZjtcXG4tXFx0XFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuK1xcdFxcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcXG4gXFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIFdpdGggZm9sZGVkIHA0ZCwgcGdkX25vbmUoKSBpcyBhbHdheXMgZmFsc2UsIHdlIG5lZWQgdG9cXG5AQCAtMTg3LDE1ICsxODcsMTUgQEAgc3RhdGljIHZvaWQgc3luY19nbG9iYWxfcGdkc19sNCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRzcGluX2xvY2soXFx1MDAyNnBnZF9sb2NrKTtcXG4tXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcXHUwMDI2cGdkX2xpc3QsIGxydSkge1xcbitcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXFx1MDAyNnBnZF9saXN0LCBwdF9saXN0KSB7XFxuIFxcdFxcdFxcdHBnZF90ICpwZ2Q7XFxuIFxcdFxcdFxcdHA0ZF90ICpwNGQ7XFxuIFxcdFxcdFxcdHNwaW5sb2NrX3QgKnBndF9sb2NrO1xcbiBcXG4tXFx0XFx0XFx0cGdkID0gKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpICsgcGdkX2luZGV4KGFkZHIpO1xcbitcXHRcXHRcXHRwZ2QgPSAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpICsgcGdkX2luZGV4KGFkZHIpO1xcbiBcXHRcXHRcXHRwNGQgPSBwNGRfb2Zmc2V0KHBnZCwgYWRkcik7XFxuIFxcdFxcdFxcdC8qIHRoZSBwZ3RfbG9jayBvbmx5IGZvciBYZW4gKi9cXG4tXFx0XFx0XFx0cGd0X2xvY2sgPSBcXHUwMDI2cGdkX3BhZ2VfZ2V0X21tKHBhZ2UpLVxcdTAwM2VwYWdlX3RhYmxlX2xvY2s7XFxuK1xcdFxcdFxcdHBndF9sb2NrID0gXFx1MDAyNnBnZF9wYWdlX2dldF9tbShwdGRlc2MpLVxcdTAwM2VwYWdlX3RhYmxlX2xvY2s7XFxuIFxcdFxcdFxcdHNwaW5fbG9jayhwZ3RfbG9jayk7XFxuIFxcbiBcXHRcXHRcXHRpZiAoIXA0ZF9ub25lKCpwNGRfcmVmKSBcXHUwMDI2XFx1MDAyNiAhcDRkX25vbmUoKnA0ZCkpXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmMgYi9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jXFxuaW5kZXggZDAyM2E0MGExZTAzNDUuLjQ1NjIzZDRjMjRjOTQxIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmNcXG4rKysgYi9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jXFxuQEAgLTg4OCwyNCArODg4LDIzIEBAIHN0YXRpYyB2b2lkIF9fc2V0X3BtZF9wdGUocHRlX3QgKmtwdGUsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgcHRlX3QgcHRlKVxcbiB7XFxuIFxcdC8qIGNoYW5nZSBpbml0X21tICovXFxuIFxcdHNldF9wdGVfYXRvbWljKGtwdGUsIHB0ZSk7XFxuLSNpZmRlZiBDT05GSUdfWDg2XzMyXFxuLVxcdHtcXG4tXFx0XFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuIFxcbi1cXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIFxcdTAwMjZwZ2RfbGlzdCwgbHJ1KSB7XFxuK1xcdGlmIChJU19FTkFCTEVEKENPTkZJR19YODZfMzIpKSB7XFxuK1xcdFxcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcXG4rXFxuK1xcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkocHRkZXNjLCBcXHUwMDI2cGdkX2xpc3QsIHB0X2xpc3QpIHtcXG4gXFx0XFx0XFx0cGdkX3QgKnBnZDtcXG4gXFx0XFx0XFx0cDRkX3QgKnA0ZDtcXG4gXFx0XFx0XFx0cHVkX3QgKnB1ZDtcXG4gXFx0XFx0XFx0cG1kX3QgKnBtZDtcXG4gXFxuLVxcdFxcdFxcdHBnZCA9IChwZ2RfdCAqKXBhZ2VfYWRkcmVzcyhwYWdlKSArIHBnZF9pbmRleChhZGRyZXNzKTtcXG4rXFx0XFx0XFx0cGdkID0gKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSArIHBnZF9pbmRleChhZGRyZXNzKTtcXG4gXFx0XFx0XFx0cDRkID0gcDRkX29mZnNldChwZ2QsIGFkZHJlc3MpO1xcbiBcXHRcXHRcXHRwdWQgPSBwdWRfb2Zmc2V0KHA0ZCwgYWRkcmVzcyk7XFxuIFxcdFxcdFxcdHBtZCA9IHBtZF9vZmZzZXQocHVkLCBhZGRyZXNzKTtcXG4gXFx0XFx0XFx0c2V0X3B0ZV9hdG9taWMoKHB0ZV90ICopcG1kLCBwdGUpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4tI2VuZGlmXFxuIH1cXG4gXFxuIHN0YXRpYyBwZ3Byb3RfdCBwZ3Byb3RfY2xlYXJfcHJvdG5vbmVfYml0cyhwZ3Byb3RfdCBwcm90KVxcbkBAIC0xMjk4LDExICsxMjk3LDExIEBAIHN0YXRpYyBpbnQgY29sbGFwc2VfcG1kX3BhZ2UocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbiBcXHRsaXN0X2FkZChcXHUwMDI2cGFnZV9wdGRlc2MocG1kX3BhZ2Uob2xkX3BtZCkpLVxcdTAwM2VwdF9saXN0LCBwZ3RhYmxlcyk7XFxuIFxcbiBcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2XzMyKSkge1xcbi1cXHRcXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG4rXFx0XFx0c3RydWN0IHB0ZGVzYyAqcHRkZXNjO1xcbiBcXG4gXFx0XFx0LyogVXBkYXRlIGFsbCBQR0QgdGFibGVzIHRvIHVzZSB0aGUgc2FtZSBsYXJnZSBwYWdlICovXFxuLVxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgXFx1MDAyNnBnZF9saXN0LCBscnUpIHtcXG4tXFx0XFx0XFx0cGdkX3QgKnBnZCA9IChwZ2RfdCAqKXBhZ2VfYWRkcmVzcyhwYWdlKSArIHBnZF9pbmRleChhZGRyKTtcXG4rXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsIFxcdTAwMjZwZ2RfbGlzdCwgcHRfbGlzdCkge1xcbitcXHRcXHRcXHRwZ2RfdCAqcGdkID0gKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSArIHBnZF9pbmRleChhZGRyKTtcXG4gXFx0XFx0XFx0cDRkX3QgKnA0ZCA9IHA0ZF9vZmZzZXQocGdkLCBhZGRyKTtcXG4gXFx0XFx0XFx0cHVkX3QgKnB1ZCA9IHB1ZF9vZmZzZXQocDRkLCBhZGRyKTtcXG4gXFx0XFx0XFx0cG1kX3QgKnBtZCA9IHBtZF9vZmZzZXQocHVkLCBhZGRyKTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vcGd0YWJsZS5jIGIvYXJjaC94ODYvbW0vcGd0YWJsZS5jXFxuaW5kZXggZjMyZmFjZGIzMDM1NDMuLmNiMDNmNWEyYjI0MzM4IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L21tL3BndGFibGUuY1xcbisrKyBiL2FyY2gveDg2L21tL3BndGFibGUuY1xcbkBAIC03NCw5ICs3NCw5IEBAIHN0YXRpYyB2b2lkIHBnZF9zZXRfbW0ocGdkX3QgKnBnZCwgc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuIFxcdHZpcnRfdG9fcHRkZXNjKHBnZCktXFx1MDAzZXB0X21tID0gbW07XFxuIH1cXG4gXFxuLXN0cnVjdCBtbV9zdHJ1Y3QgKnBnZF9wYWdlX2dldF9tbShzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4rc3RydWN0IG1tX3N0cnVjdCAqcGdkX3BhZ2VfZ2V0X21tKHN0cnVjdCBwdGRlc2MgKnB0KVxcbiB7XFxuLVxcdHJldHVybiBwYWdlX3B0ZGVzYyhwYWdlKS1cXHUwMDNlcHRfbW07XFxuK1xcdHJldHVybiBwdC1cXHUwMDNlcHRfbW07XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHBnZF9jdG9yKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwZ2RfdCAqcGdkKVxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni94ZW4vbW11X3B2LmMgYi9hcmNoL3g4Ni94ZW4vbW11X3B2LmNcXG5pbmRleCBhYWI1ZjcwZDQwN2MxYi4uNmZmNWE3MTMwZTUzZTYgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYveGVuL21tdV9wdi5jXFxuKysrIGIvYXJjaC94ODYveGVuL21tdV9wdi5jXFxuQEAgLTgzNiwxNSArODM2LDE1IEBAIHN0YXRpYyB2b2lkIHhlbl9wZ2RfcGluKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbiAgKi9cXG4gdm9pZCB4ZW5fbW1fcGluX2FsbCh2b2lkKVxcbiB7XFxuLVxcdHN0cnVjdCBwYWdlICpwYWdlO1xcbitcXHRzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7XFxuIFxcbiBcXHRzcGluX2xvY2soXFx1MDAyNmluaXRfbW0ucGFnZV90YWJsZV9sb2NrKTtcXG4gXFx0c3Bpbl9sb2NrKFxcdTAwMjZwZ2RfbG9jayk7XFxuIFxcbi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIFxcdTAwMjZwZ2RfbGlzdCwgbHJ1KSB7XFxuLVxcdFxcdGlmICghUGFnZVBpbm5lZChwYWdlKSkge1xcbi1cXHRcXHRcXHRfX3hlbl9wZ2RfcGluKFxcdTAwMjZpbml0X21tLCAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkpO1xcbi1cXHRcXHRcXHRTZXRQYWdlU2F2ZVBpbm5lZChwYWdlKTtcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsIFxcdTAwMjZwZ2RfbGlzdCwgcHRfbGlzdCkge1xcbitcXHRcXHRpZiAoIVBhZ2VQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSkpIHtcXG4rXFx0XFx0XFx0X194ZW5fcGdkX3BpbihcXHUwMDI2aW5pdF9tbSwgKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSk7XFxuK1xcdFxcdFxcdFNldFBhZ2VTYXZlUGlubmVkKHB0ZGVzY19wYWdlKHB0ZGVzYykpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuQEAgLTk0NywxNiArOTQ3LDE2IEBAIHN0YXRpYyB2b2lkIHhlbl9wZ2RfdW5waW4oc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuICAqL1xcbiB2b2lkIHhlbl9tbV91bnBpbl9hbGwodm9pZClcXG4ge1xcbi1cXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG4rXFx0c3RydWN0IHB0ZGVzYyAqcHRkZXNjO1xcbiBcXG4gXFx0c3Bpbl9sb2NrKFxcdTAwMjZpbml0X21tLnBhZ2VfdGFibGVfbG9jayk7XFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2cGdkX2xvY2spO1xcbiBcXG4tXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcXHUwMDI2cGdkX2xpc3QsIGxydSkge1xcbi1cXHRcXHRpZiAoUGFnZVNhdmVQaW5uZWQocGFnZSkpIHtcXG4tXFx0XFx0XFx0QlVHX09OKCFQYWdlUGlubmVkKHBhZ2UpKTtcXG4tXFx0XFx0XFx0X194ZW5fcGdkX3VucGluKFxcdTAwMjZpbml0X21tLCAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkpO1xcbi1cXHRcXHRcXHRDbGVhclBhZ2VTYXZlUGlubmVkKHBhZ2UpO1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXFx1MDAyNnBnZF9saXN0LCBwdF9saXN0KSB7XFxuK1xcdFxcdGlmIChQYWdlU2F2ZVBpbm5lZChwdGRlc2NfcGFnZShwdGRlc2MpKSkge1xcbitcXHRcXHRcXHRCVUdfT04oIVBhZ2VQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSkpO1xcbitcXHRcXHRcXHRfX3hlbl9wZ2RfdW5waW4oXFx1MDAyNmluaXRfbW0sIChwZ2RfdCAqKXB0ZGVzY19hZGRyZXNzKHB0ZGVzYykpO1xcbitcXHRcXHRcXHRDbGVhclBhZ2VTYXZlUGlubmVkKHB0ZGVzY19wYWdlKHB0ZGVzYykpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIwOjM0OjU5LjI3MTY0NDkyMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkxODg3ODM2NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IHJlcGxhY2VzIGBzdHJ1Y3QgcGFnZWAgd2l0aCBgc3RydWN0IHB0ZGVzY2AgaW4geDg2IHBhZ2UgdGFibGUgbWFuYWdlbWVudCBjb2RlLiBJdCB1cGRhdGVzIHR5cGVzIGFuZCBmaWVsZCBuYW1lcyAoZS5nLiwgYGxydWAgdG8gYHB0X2xpc3RgKSBidXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg3ZGJlZjc4NjA4MTBmNWI5OGMzMDI2YmJhNmVkN2ViZjRlZjZhNWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAyMDozNDo1NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaFxuaW5kZXggYWMyOTVjYTZjOTJmOTkuLmRkMDQ2ZjI5ZWMzMTUyIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmhcbkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgcHRkdW1wX3dhbGtfdXNlcl9wZ2RfbGV2ZWxfY2hlY2t3eCh2b2lkKTtcbiBleHRlcm4gc3BpbmxvY2tfdCBwZ2RfbG9jaztcbiBleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBwZ2RfbGlzdDtcbiBcbi1leHRlcm4gc3RydWN0IG1tX3N0cnVjdCAqcGdkX3BhZ2VfZ2V0X21tKHN0cnVjdCBwYWdlICpwYWdlKTtcbitzdHJ1Y3QgbW1fc3RydWN0ICpwZ2RfcGFnZV9nZXRfbW0oc3RydWN0IHB0ZGVzYyAqcHQpO1xuIFxuIGV4dGVybiBwbWR2YWxfdCBlYXJseV9wbWRfZmxhZ3M7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oXG5pbmRleCAyZWMyNTBiYTQ2N2UyZC4uOTVjN2Y0NTNkYjE3OTMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmhcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlwZXMuaFxuQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGF0aWMgaW5saW5lIHBncHJvdF90IHBncHJvdF9sYXJnZV8yXzRrKHBncHJvdF90IHBncHJvdClcbiBcdHJldHVybiBfX3BncHJvdChwcm90dmFsX2xhcmdlXzJfNGsocGdwcm90X3ZhbChwZ3Byb3QpKSk7XG4gfVxuIFxuLVxuK3N0cnVjdCBwdGRlc2M7XG4gdHlwZWRlZiBzdHJ1Y3QgcGFnZSAqcGd0YWJsZV90O1xuIFxuIGV4dGVybiBwdGV2YWxfdCBfX3N1cHBvcnRlZF9wdGVfbWFzaztcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9mYXVsdC5jIGIvYXJjaC94ODYvbW0vZmF1bHQuY1xuaW5kZXggNDViOTljM2IxNDQyZDQuLmFhODgzNzBjZTczOTQzIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvbW0vZmF1bHQuY1xuKysrIGIvYXJjaC94ODYvbW0vZmF1bHQuY1xuQEAgLTI3NSwxNyArMjc1LDE3IEBAIHZvaWQgYXJjaF9zeW5jX2tlcm5lbF9tYXBwaW5ncyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbiBcdGZvciAoYWRkciA9IHN0YXJ0IFx1MDAyNiBQTURfTUFTSztcbiBcdCAgICAgYWRkciBcdTAwM2U9IFRBU0tfU0laRV9NQVggXHUwMDI2XHUwMDI2IGFkZHIgXHUwMDNjIFZNQUxMT0NfRU5EO1xuIFx0ICAgICBhZGRyICs9IFBNRF9TSVpFKSB7XG4tXHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuK1x0XHRzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7XG4gXG4gXHRcdHNwaW5fbG9jayhcdTAwMjZwZ2RfbG9jayk7XG4tXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgXHUwMDI2cGdkX2xpc3QsIGxydSkge1xuK1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXHUwMDI2cGdkX2xpc3QsIHB0X2xpc3QpIHtcbiBcdFx0XHRzcGlubG9ja190ICpwZ3RfbG9jaztcbiBcbiBcdFx0XHQvKiB0aGUgcGd0X2xvY2sgb25seSBmb3IgWGVuICovXG4tXHRcdFx0cGd0X2xvY2sgPSBcdTAwMjZwZ2RfcGFnZV9nZXRfbW0ocGFnZSktXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xuK1x0XHRcdHBndF9sb2NrID0gXHUwMDI2cGdkX3BhZ2VfZ2V0X21tKHB0ZGVzYyktXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xuIFxuIFx0XHRcdHNwaW5fbG9jayhwZ3RfbG9jayk7XG4tXHRcdFx0dm1hbGxvY19zeW5jX29uZShwYWdlX2FkZHJlc3MocGFnZSksIGFkZHIpO1xuK1x0XHRcdHZtYWxsb2Nfc3luY19vbmUocHRkZXNjX2FkZHJlc3MocHRkZXNjKSwgYWRkcik7XG4gXHRcdFx0c3Bpbl91bmxvY2socGd0X2xvY2spO1xuIFx0XHR9XG4gXHRcdHNwaW5fdW5sb2NrKFx1MDAyNnBnZF9sb2NrKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9pbml0XzY0LmMgYi9hcmNoL3g4Ni9tbS9pbml0XzY0LmNcbmluZGV4IGQ1N2YyOWNhMjNhNWFjLi5iZjUyOWE5OWViZDFiYSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L21tL2luaXRfNjQuY1xuKysrIGIvYXJjaC94ODYvbW0vaW5pdF82NC5jXG5AQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyB2b2lkIHN5bmNfZ2xvYmFsX3BnZHNfbDUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4gXG4gXHRmb3IgKGFkZHIgPSBzdGFydDsgYWRkciBcdTAwM2M9IGVuZDsgYWRkciA9IEFMSUdOKGFkZHIgKyAxLCBQR0RJUl9TSVpFKSkge1xuIFx0XHRjb25zdCBwZ2RfdCAqcGdkX3JlZiA9IHBnZF9vZmZzZXRfayhhZGRyKTtcbi1cdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4rXHRcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcbiBcbiBcdFx0LyogQ2hlY2sgZm9yIG92ZXJmbG93ICovXG4gXHRcdGlmIChhZGRyIFx1MDAzYyBzdGFydClcbkBAIC0xNDYsMTMgKzE0NiwxMyBAQCBzdGF0aWMgdm9pZCBzeW5jX2dsb2JhbF9wZ2RzX2w1KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRzcGluX2xvY2soXHUwMDI2cGdkX2xvY2spO1xuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIFx1MDAyNnBnZF9saXN0LCBscnUpIHtcbitcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsIFx1MDAyNnBnZF9saXN0LCBwdF9saXN0KSB7XG4gXHRcdFx0cGdkX3QgKnBnZDtcbiBcdFx0XHRzcGlubG9ja190ICpwZ3RfbG9jaztcbiBcbi1cdFx0XHRwZ2QgPSAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkgKyBwZ2RfaW5kZXgoYWRkcik7XG4rXHRcdFx0cGdkID0gKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSArIHBnZF9pbmRleChhZGRyKTtcbiBcdFx0XHQvKiB0aGUgcGd0X2xvY2sgb25seSBmb3IgWGVuICovXG4tXHRcdFx0cGd0X2xvY2sgPSBcdTAwMjZwZ2RfcGFnZV9nZXRfbW0ocGFnZSktXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xuK1x0XHRcdHBndF9sb2NrID0gXHUwMDI2cGdkX3BhZ2VfZ2V0X21tKHB0ZGVzYyktXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xuIFx0XHRcdHNwaW5fbG9jayhwZ3RfbG9jayk7XG4gXG4gXHRcdFx0aWYgKCFwZ2Rfbm9uZSgqcGdkX3JlZikgXHUwMDI2XHUwMDI2ICFwZ2Rfbm9uZSgqcGdkKSlcbkBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIHZvaWQgc3luY19nbG9iYWxfcGdkc19sNCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbiBcdGZvciAoYWRkciA9IHN0YXJ0OyBhZGRyIFx1MDAzYz0gZW5kOyBhZGRyID0gQUxJR04oYWRkciArIDEsIFBHRElSX1NJWkUpKSB7XG4gXHRcdHBnZF90ICpwZ2RfcmVmID0gcGdkX29mZnNldF9rKGFkZHIpO1xuIFx0XHRjb25zdCBwNGRfdCAqcDRkX3JlZjtcbi1cdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4rXHRcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcbiBcbiBcdFx0LypcbiBcdFx0ICogV2l0aCBmb2xkZWQgcDRkLCBwZ2Rfbm9uZSgpIGlzIGFsd2F5cyBmYWxzZSwgd2UgbmVlZCB0b1xuQEAgLTE4NywxNSArMTg3LDE1IEBAIHN0YXRpYyB2b2lkIHN5bmNfZ2xvYmFsX3BnZHNfbDQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHNwaW5fbG9jayhcdTAwMjZwZ2RfbG9jayk7XG4tXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgXHUwMDI2cGdkX2xpc3QsIGxydSkge1xuK1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXHUwMDI2cGdkX2xpc3QsIHB0X2xpc3QpIHtcbiBcdFx0XHRwZ2RfdCAqcGdkO1xuIFx0XHRcdHA0ZF90ICpwNGQ7XG4gXHRcdFx0c3BpbmxvY2tfdCAqcGd0X2xvY2s7XG4gXG4tXHRcdFx0cGdkID0gKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpICsgcGdkX2luZGV4KGFkZHIpO1xuK1x0XHRcdHBnZCA9IChwZ2RfdCAqKXB0ZGVzY19hZGRyZXNzKHB0ZGVzYykgKyBwZ2RfaW5kZXgoYWRkcik7XG4gXHRcdFx0cDRkID0gcDRkX29mZnNldChwZ2QsIGFkZHIpO1xuIFx0XHRcdC8qIHRoZSBwZ3RfbG9jayBvbmx5IGZvciBYZW4gKi9cbi1cdFx0XHRwZ3RfbG9jayA9IFx1MDAyNnBnZF9wYWdlX2dldF9tbShwYWdlKS1cdTAwM2VwYWdlX3RhYmxlX2xvY2s7XG4rXHRcdFx0cGd0X2xvY2sgPSBcdTAwMjZwZ2RfcGFnZV9nZXRfbW0ocHRkZXNjKS1cdTAwM2VwYWdlX3RhYmxlX2xvY2s7XG4gXHRcdFx0c3Bpbl9sb2NrKHBndF9sb2NrKTtcbiBcbiBcdFx0XHRpZiAoIXA0ZF9ub25lKCpwNGRfcmVmKSBcdTAwMjZcdTAwMjYgIXA0ZF9ub25lKCpwNGQpKVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmMgYi9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jXG5pbmRleCBkMDIzYTQwYTFlMDM0NS4uNDU2MjNkNGMyNGM5NDEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jXG4rKysgYi9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jXG5AQCAtODg4LDI0ICs4ODgsMjMgQEAgc3RhdGljIHZvaWQgX19zZXRfcG1kX3B0ZShwdGVfdCAqa3B0ZSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBwdGVfdCBwdGUpXG4ge1xuIFx0LyogY2hhbmdlIGluaXRfbW0gKi9cbiBcdHNldF9wdGVfYXRvbWljKGtwdGUsIHB0ZSk7XG4tI2lmZGVmIENPTkZJR19YODZfMzJcbi1cdHtcbi1cdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4gXG4tXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgXHUwMDI2cGdkX2xpc3QsIGxydSkge1xuK1x0aWYgKElTX0VOQUJMRUQoQ09ORklHX1g4Nl8zMikpIHtcbitcdFx0c3RydWN0IHB0ZGVzYyAqcHRkZXNjO1xuK1xuK1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXHUwMDI2cGdkX2xpc3QsIHB0X2xpc3QpIHtcbiBcdFx0XHRwZ2RfdCAqcGdkO1xuIFx0XHRcdHA0ZF90ICpwNGQ7XG4gXHRcdFx0cHVkX3QgKnB1ZDtcbiBcdFx0XHRwbWRfdCAqcG1kO1xuIFxuLVx0XHRcdHBnZCA9IChwZ2RfdCAqKXBhZ2VfYWRkcmVzcyhwYWdlKSArIHBnZF9pbmRleChhZGRyZXNzKTtcbitcdFx0XHRwZ2QgPSAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpICsgcGdkX2luZGV4KGFkZHJlc3MpO1xuIFx0XHRcdHA0ZCA9IHA0ZF9vZmZzZXQocGdkLCBhZGRyZXNzKTtcbiBcdFx0XHRwdWQgPSBwdWRfb2Zmc2V0KHA0ZCwgYWRkcmVzcyk7XG4gXHRcdFx0cG1kID0gcG1kX29mZnNldChwdWQsIGFkZHJlc3MpO1xuIFx0XHRcdHNldF9wdGVfYXRvbWljKChwdGVfdCAqKXBtZCwgcHRlKTtcbiBcdFx0fVxuIFx0fVxuLSNlbmRpZlxuIH1cbiBcbiBzdGF0aWMgcGdwcm90X3QgcGdwcm90X2NsZWFyX3Byb3Rub25lX2JpdHMocGdwcm90X3QgcHJvdClcbkBAIC0xMjk4LDExICsxMjk3LDExIEBAIHN0YXRpYyBpbnQgY29sbGFwc2VfcG1kX3BhZ2UocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0bGlzdF9hZGQoXHUwMDI2cGFnZV9wdGRlc2MocG1kX3BhZ2Uob2xkX3BtZCkpLVx1MDAzZXB0X2xpc3QsIHBndGFibGVzKTtcbiBcbiBcdGlmIChJU19FTkFCTEVEKENPTkZJR19YODZfMzIpKSB7XG4tXHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuK1x0XHRzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7XG4gXG4gXHRcdC8qIFVwZGF0ZSBhbGwgUEdEIHRhYmxlcyB0byB1c2UgdGhlIHNhbWUgbGFyZ2UgcGFnZSAqL1xuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIFx1MDAyNnBnZF9saXN0LCBscnUpIHtcbi1cdFx0XHRwZ2RfdCAqcGdkID0gKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpICsgcGdkX2luZGV4KGFkZHIpO1xuK1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXHUwMDI2cGdkX2xpc3QsIHB0X2xpc3QpIHtcbitcdFx0XHRwZ2RfdCAqcGdkID0gKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSArIHBnZF9pbmRleChhZGRyKTtcbiBcdFx0XHRwNGRfdCAqcDRkID0gcDRkX29mZnNldChwZ2QsIGFkZHIpO1xuIFx0XHRcdHB1ZF90ICpwdWQgPSBwdWRfb2Zmc2V0KHA0ZCwgYWRkcik7XG4gXHRcdFx0cG1kX3QgKnBtZCA9IHBtZF9vZmZzZXQocHVkLCBhZGRyKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9wZ3RhYmxlLmMgYi9hcmNoL3g4Ni9tbS9wZ3RhYmxlLmNcbmluZGV4IGYzMmZhY2RiMzAzNTQzLi5jYjAzZjVhMmIyNDMzOCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L21tL3BndGFibGUuY1xuKysrIGIvYXJjaC94ODYvbW0vcGd0YWJsZS5jXG5AQCAtNzQsOSArNzQsOSBAQCBzdGF0aWMgdm9pZCBwZ2Rfc2V0X21tKHBnZF90ICpwZ2QsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuIFx0dmlydF90b19wdGRlc2MocGdkKS1cdTAwM2VwdF9tbSA9IG1tO1xuIH1cbiBcbi1zdHJ1Y3QgbW1fc3RydWN0ICpwZ2RfcGFnZV9nZXRfbW0oc3RydWN0IHBhZ2UgKnBhZ2UpXG4rc3RydWN0IG1tX3N0cnVjdCAqcGdkX3BhZ2VfZ2V0X21tKHN0cnVjdCBwdGRlc2MgKnB0KVxuIHtcbi1cdHJldHVybiBwYWdlX3B0ZGVzYyhwYWdlKS1cdTAwM2VwdF9tbTtcbitcdHJldHVybiBwdC1cdTAwM2VwdF9tbTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcGdkX2N0b3Ioc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYveGVuL21tdV9wdi5jIGIvYXJjaC94ODYveGVuL21tdV9wdi5jXG5pbmRleCBhYWI1ZjcwZDQwN2MxYi4uNmZmNWE3MTMwZTUzZTYgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni94ZW4vbW11X3B2LmNcbisrKyBiL2FyY2gveDg2L3hlbi9tbXVfcHYuY1xuQEAgLTgzNiwxNSArODM2LDE1IEBAIHN0YXRpYyB2b2lkIHhlbl9wZ2RfcGluKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuICAqL1xuIHZvaWQgeGVuX21tX3Bpbl9hbGwodm9pZClcbiB7XG4tXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbitcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZpbml0X21tLnBhZ2VfdGFibGVfbG9jayk7XG4gXHRzcGluX2xvY2soXHUwMDI2cGdkX2xvY2spO1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcdTAwMjZwZ2RfbGlzdCwgbHJ1KSB7XG4tXHRcdGlmICghUGFnZVBpbm5lZChwYWdlKSkge1xuLVx0XHRcdF9feGVuX3BnZF9waW4oXHUwMDI2aW5pdF9tbSwgKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpKTtcbi1cdFx0XHRTZXRQYWdlU2F2ZVBpbm5lZChwYWdlKTtcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkocHRkZXNjLCBcdTAwMjZwZ2RfbGlzdCwgcHRfbGlzdCkge1xuK1x0XHRpZiAoIVBhZ2VQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSkpIHtcbitcdFx0XHRfX3hlbl9wZ2RfcGluKFx1MDAyNmluaXRfbW0sIChwZ2RfdCAqKXB0ZGVzY19hZGRyZXNzKHB0ZGVzYykpO1xuK1x0XHRcdFNldFBhZ2VTYXZlUGlubmVkKHB0ZGVzY19wYWdlKHB0ZGVzYykpO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtOTQ3LDE2ICs5NDcsMTYgQEAgc3RhdGljIHZvaWQgeGVuX3BnZF91bnBpbihzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiAgKi9cbiB2b2lkIHhlbl9tbV91bnBpbl9hbGwodm9pZClcbiB7XG4tXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbitcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZpbml0X21tLnBhZ2VfdGFibGVfbG9jayk7XG4gXHRzcGluX2xvY2soXHUwMDI2cGdkX2xvY2spO1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcdTAwMjZwZ2RfbGlzdCwgbHJ1KSB7XG4tXHRcdGlmIChQYWdlU2F2ZVBpbm5lZChwYWdlKSkge1xuLVx0XHRcdEJVR19PTighUGFnZVBpbm5lZChwYWdlKSk7XG4tXHRcdFx0X194ZW5fcGdkX3VucGluKFx1MDAyNmluaXRfbW0sIChwZ2RfdCAqKXBhZ2VfYWRkcmVzcyhwYWdlKSk7XG4tXHRcdFx0Q2xlYXJQYWdlU2F2ZVBpbm5lZChwYWdlKTtcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkocHRkZXNjLCBcdTAwMjZwZ2RfbGlzdCwgcHRfbGlzdCkge1xuK1x0XHRpZiAoUGFnZVNhdmVQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSkpIHtcbitcdFx0XHRCVUdfT04oIVBhZ2VQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSkpO1xuK1x0XHRcdF9feGVuX3BnZF91bnBpbihcdTAwMjZpbml0X21tLCAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpKTtcbitcdFx0XHRDbGVhclBhZ2VTYXZlUGlubmVkKHB0ZGVzY19wYWdlKHB0ZGVzYykpO1xuIFx0XHR9XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMDozNDo1OS4yNzE2NDcwODFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODEyOTkzMTEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWZhY3RvcmluZyB4ODYgUGFnZSBUYWJsZSBDb2RlOiBXb3J0aCBGdXp6aW5nPyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCdzIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSB4ODYgcGFnZSB0YWJsZSBtYW5hZ2VtZW50IGNvZGUsIHNwZWNpZmljYWxseSBpbnZvbHZpbmcgdGhlIGludHJvZHVjdGlvbiBvZiBgc3RydWN0IHB0ZGVzY2AgaW4gcGxhY2Ugb2YgYHN0cnVjdCBwYWdlYCBpbiBhIGJ1bmNoIG9mIHBsYWNlcyBpdGVyYXRpbmcgb3ZlciBgcGdkX2xpc3RgLiBJdCdzIHJlcGxhY2luZyBgcGFnZWAgd2l0aCBgcHRkZXNjYCwgdXNpbmcgYHB0ZGVzY19hZGRyZXNzYCBpbnN0ZWFkIG9mIGBwYWdlX2FkZHJlc3NgLCBhbmQgY2hhbmdpbmcgdGhlIGxpc3QgaXRlcmF0aW9uIGZyb20gYGxydWAgdG8gYHB0X2xpc3RgLiBJdCBhbHNvIGxvb2tzIGxpa2UgYSBjaGFuZ2UgdG8gYHBnZF9wYWdlX2dldF9tbWAgdG8gaGFuZGxlIGBwdGRlc2NgIGluc3RlYWQgb2YgYHBhZ2VgLiBUaGlzIHNlZW1zIGxpa2UgcGFydCBvZiBhIGxhcmdlciBlZmZvcnQgdG8gZGVjb3VwbGUgcGFnZSB0YWJsZSBkZXNjcmlwdG9ycyBmcm9tIHRoZSBgc3RydWN0IHBhZ2VgLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYSBwdXJlIHJlZmFjdG9yaW5nLCBvciBkb2VzIGl0IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IEkgbmVlZCB0byB3b3JyeSBhYm91dCBmdXp6aW5nPyBMZXQncyBicmVhayBkb3duIHRoZSBjaGFuZ2VzOiB3ZSdyZSBzZWVpbmcgc3Vic3RpdHV0aW9ucyBvZiBgcGFnZWAgd2l0aCBgcHRkZXNjYCB0aHJvdWdob3V0IHRoZSBjb2RlLCB3aGljaCBtZWFucyB1cGRhdGluZyBhcmd1bWVudCB0eXBlcyBmb3IgdGhlIGdldF9tbSBmdW5jdGlvbiwgbGlzdCBpdGVyYXRpbmcsIGFuZCBhZGRyZXNzIGZldGNoaW5nLiBJdCBsb29rcyBsaWtlIGBwdF9saXN0YCBpcyBqdXN0IGFsaWFzaW5nIGBscnVgIGFuZCBgcHRkZXNjX2FkZHJlc3NgIGlzIGp1c3QgdXNpbmcgYHB0ZGVzY19wYWdlYC4gQW5kLCB0aGUgYHBnZF9wYWdlX2dldF9tbWAgZnVuY3Rpb24gaXMganVzdCBhY2Nlc3NpbmcgYHB0X21tYCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBgcGFnZWAgc3RydWN0dXJlLiBPa2F5LCBzbyBmYXIsIGl0ICpzZWVtcyogbGlrZSBhIHN0cmFpZ2h0IHJlZmFjdG9yaW5nLlxuXG5XYWl0LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgaWYgdGhlcmUncyAqYW55KiBzdWJ0bGUgZnVuY3Rpb25hbCBjaGFuZ2UuIExldCdzIGxvb2sgYXQgdGhlIGBpbmNsdWRlL2xpbnV4L3BndGFibGUuaGAgb3Igc2ltaWxhciB0byBzZWUgd2hhdCB0aGUgYHB0ZGVzY2Agc3RydWN0IGlzLiBUaGlzIGlzIHBhcnQgb2YgdGhlIFwibW06IFVzZSBwdGRlc2MgaW4geDg2IG1tdVwiIHNlcmllcywgc28gaXQgZG9lcyBhcHBlYXIgdG8gYmUgYSBzaW1wbGUgcmVmYWN0b3IuIE9rYXksIGV2ZW4gdGhvdWdoIGl0J3MgbW9kaWZ5aW5nIGNvcmUga2VybmVsIGxvZ2ljICh4ODYgcGFnZSB0YWJsZXMpLCBpdCBzZWVtcyBsaWtlIGEgcHVyZSByZWZhY3Rvci4gVGhpcyBzaG91bGRuJ3QgaW50cm9kdWNlIGFueSBuZXcgYnVncyB0byBiZSBmdXp6ZWQsIHVubGVzcyBJIG1pc3Mgc29tZXRoaW5nLlxuXG5MZXQgbWUgZG91YmxlLWNoZWNrLiBJbiBgYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuY2AsIHRoZXJlJ3MgYSBjaGFuZ2UgZnJvbSBgI2lmZGVmIENPTkZJR19YODZfMzJgIHRvIGBpZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2XzMyKSlgLiBPa2F5LCB0aGF0J3MgbWlub3IsIGJ1dCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhhdCB0aGUgY29kZSBpcyBub3cgY29tcGlsZWQgb24gNjQtYml0LCBldmVuIGlmIGl0J3Mgb3B0aW1pemVkIG91dCBvbiB0aGF0IGFyY2hpdGVjdHVyZSwgYnV0IGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LlxuXG5UaGUgcHJvbXB0IGxpc3RzIGNvbmRpdGlvbnMgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLCBhbmQgYSBwdXJlIHJlZmFjdG9yaW5nIGlzbid0IGV4cGxpY2l0bHkgbWVudGlvbmVkLCBidXQgaXQgc2F5cywgXCJpZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIgSXQncyBtb2RpZnlpbmcgY29yZSBrZXJuZWwgbG9naWMsIGV2ZW4gaWYgaXQncyBhIHJlZmFjdG9yaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBzb21ldGhpbmcuIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IGV2ZW4gcmVmYWN0b3JpbmcgaW50cm9kdWNlcyByaXNrLCBsaWtlIHVzaW5nIHRoZSB3cm9uZyBmaWVsZC4gSXMgdGhlIGFsaWFzIGV4YWN0PyBMZXQncyBkb3VibGUgY2hlY2sgYHB0X2xpc3RgIGFuZCBgbHJ1YCBhcmUgaW4gYSB1bmlvbiB3aXRoaW4gYHN0cnVjdCBwYWdlYC4gVGltZSB0byBmaXJlIHVwIGBncmVwcGVyYCBhbmQgZmluZCB0aGUgZGVmaW5pdGlvbiBvZiBgc3RydWN0IHB0ZGVzY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMTksIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjA6MzU6MzcuNDAxNTgwNDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIwMTAyMTMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgcHRkZXNjIFxcXFx7XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbW1fdHlwZXMuaD01NDc9Rk9MSU9fTUFUQ0goY29tcG91bmRfaW5mbywgX2hlYWRfMyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtNTcyLSAqL1xcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaDo1NzM6c3RydWN0IHB0ZGVzYyB7XFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTU3NC1cXHRtZW1kZXNjX2ZsYWdzX3QgcHRfZmxhZ3M7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIwOjM1OjQwLjYwMjYwNzIyOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTQ2NTA2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgbW1fdHlwZXMuaGAgLSBTcGVjaWZpY2FsbHksIExpbmUgNTczLi4uKipcblxuT2theSwgdGltZSB0byBnZXQgYSBiaXQgbW9yZSBncmFudWxhci4gSSdtIGdvaW5nIHRvIHB1bGwgdXAgdGhlIGBpbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhgIGhlYWRlciBmaWxlLiBJdCdzIHVzdWFsbHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHdoZW4gZGVhbGluZyB3aXRoIG1lbW9yeSBtYW5hZ2VtZW50IHN0cnVjdHVyZXMgaW4gdGhlIExpbnV4IGtlcm5lbC4gSSdtIGdvaW5nIHRvIGp1bXAgZGlyZWN0bHkgdG8gYXJvdW5kIGxpbmUgNTczLiBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIHdoZXJlIHRoZSBkZWZpbml0aW9uIEkgbmVlZCBpcyBsb2NhdGVkLCBidXQgSSdsbCBkb3VibGUtY2hlY2sgaXQuIFRoaXMgaXMgd2hlcmUgSSBvZnRlbiBmaW5kIHRoZSBjb3JlIHN0cnVjdHVyZXMgZGVmaW5pbmcgbWVtb3J5IG1hcHMgYW5kIHRoZSByZWxhdGVkIGZpZWxkcyB0aGF0IEknbSBpbnRlcmVzdGVkIGluIGZvciB0aGUgY3VycmVudCB0YXNrLiBMZXQncyBzZWUgd2hhdCB0aGF0IHNlY3Rpb24gYWN0dWFsbHkgcmV2ZWFscy4gSSBrbm93IEknbGwgYmUgbG9va2luZyBhdCBzdHJ1Y3R1cmVzIGxpa2UgYHZtX2FyZWFfc3RydWN0YCwgYnV0IEkgd2FudCB0byByZW1pbmQgbXlzZWxmIGV4YWN0bHkgd2hpY2ggZGVmaW5pdGlvbnMgYXJlIGluIHRoaXMgbG9jYXRpb24uIE9rYXksIGxldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE0MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIwOjM1OjQzLjk5NzI1OTgxN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcIixcbiAgXCJGaXJzdExpbmVcIjogNTYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTYwOlxcdCAqIEBwdF9pbmRleDogICAgICAgICBVc2VkIGZvciBzMzkwIGdtYXAuXFxuIDU2MTpcXHQgKiBAcHRfbW06ICAgICAgICAgICAgVXNlZCBmb3IgeDg2IHBnZHMuXFxuIDU2MjpcXHQgKiBAcHRfZnJhZ19yZWZjb3VudDogRm9yIGZyYWdtZW50ZWQgcGFnZSB0YWJsZSB0cmFja2luZy4gUG93ZXJwYyBvbmx5LlxcbiA1NjM6XFx0ICogQHB0X3NoYXJlX2NvdW50OiAgIFVzZWQgZm9yIEh1Z2VUTEIgUE1EIHBhZ2UgdGFibGUgc2hhcmUgY291bnQuXFxuIDU2NDpcXHQgKiBAX3B0X3BhZF8yOiAgICAgICAgUGFkZGluZyB0byBlbnN1cmUgcHJvcGVyIGFsaWdubWVudC5cXG4gNTY1OlxcdCAqIEBwdGw6ICAgICAgICAgICAgICBMb2NrIGZvciB0aGUgcGFnZSB0YWJsZS5cXG4gNTY2OlxcdCAqIEBfX3BhZ2VfdHlwZTogICAgICBTYW1lIGFzIHBhZ2UtXFx1MDAzZXBhZ2VfdHlwZS4gVW51c2VkIGZvciBwYWdlIHRhYmxlcy5cXG4gNTY3OlxcdCAqIEBfX3BhZ2VfcmVmY291bnQ6ICBTYW1lIGFzIHBhZ2UgcmVmY291bnQuXFxuIDU2ODpcXHQgKiBAcHRfbWVtY2dfZGF0YTogICAgTWVtY2cgZGF0YS4gVHJhY2tlZCBmb3IgcGFnZSB0YWJsZXMgaGVyZS5cXG4gNTY5OlxcdCAqXFxuIDU3MDpcXHQgKiBUaGlzIHN0cnVjdCBvdmVybGF5cyBzdHJ1Y3QgcGFnZSBmb3Igbm93LiBEbyBub3QgbW9kaWZ5IHdpdGhvdXQgYSBnb29kXFxuIDU3MTpcXHQgKiB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpc3N1ZXMuXFxuIDU3MjpcXHQgKi9cXG4gNTczOlxcdHN0cnVjdCBwdGRlc2Mge1xcbiA1NzQ6XFx0XFx0bWVtZGVzY19mbGFnc190IHB0X2ZsYWdzO1xcbiA1NzU6XFx0XFxuIDU3NjpcXHRcXHR1bmlvbiB7XFxuIDU3NzpcXHRcXHRcXHRzdHJ1Y3QgcmN1X2hlYWQgcHRfcmN1X2hlYWQ7XFxuIDU3ODpcXHRcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkIHB0X2xpc3Q7XFxuIDU3OTpcXHRcXHRcXHRzdHJ1Y3Qge1xcbiA1ODA6XFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBfcHRfcGFkXzE7XFxuIDU4MTpcXHRcXHRcXHRcXHRwZ3RhYmxlX3QgcG1kX2h1Z2VfcHRlO1xcbiA1ODI6XFx0XFx0XFx0fTtcXG4gNTgzOlxcdFxcdH07XFxuIDU4NDpcXHRcXHR1bnNpZ25lZCBsb25nIF9fcGFnZV9tYXBwaW5nO1xcbiA1ODU6XFx0XFxuIDU4NjpcXHRcXHR1bmlvbiB7XFxuIDU4NzpcXHRcXHRcXHRwZ29mZl90IHB0X2luZGV4O1xcbiA1ODg6XFx0XFx0XFx0c3RydWN0IG1tX3N0cnVjdCAqcHRfbW07XFxuIDU4OTpcXHRcXHRcXHRhdG9taWNfdCBwdF9mcmFnX3JlZmNvdW50O1xcbiA1OTA6XFx0I2lmZGVmIENPTkZJR19IVUdFVExCX1BNRF9QQUdFX1RBQkxFX1NIQVJJTkdcXG4gNTkxOlxcdFxcdFxcdGF0b21pY190IHB0X3NoYXJlX2NvdW50O1xcbiA1OTI6XFx0I2VuZGlmXFxuIDU5MzpcXHRcXHR9O1xcbiA1OTQ6XFx0XFxuIDU5NTpcXHRcXHR1bmlvbiB7XFxuIDU5NjpcXHRcXHRcXHR1bnNpZ25lZCBsb25nIF9wdF9wYWRfMjtcXG4gNTk3OlxcdCNpZiBBTExPQ19TUExJVF9QVExPQ0tTXFxuIDU5ODpcXHRcXHRcXHRzcGlubG9ja190ICpwdGw7XFxuIDU5OTpcXHQjZWxzZVxcbiA2MDA6XFx0XFx0XFx0c3BpbmxvY2tfdCBwdGw7XFxuIDYwMTpcXHQjZW5kaWZcXG4gNjAyOlxcdFxcdH07XFxuIDYwMzpcXHRcXHR1bnNpZ25lZCBpbnQgX19wYWdlX3R5cGU7XFxuIDYwNDpcXHRcXHRhdG9taWNfdCBfX3BhZ2VfcmVmY291bnQ7XFxuIDYwNTpcXHQjaWZkZWYgQ09ORklHX01FTUNHXFxuIDYwNjpcXHRcXHR1bnNpZ25lZCBsb25nIHB0X21lbWNnX2RhdGE7XFxuIDYwNzpcXHQjZW5kaWZcXG4gNjA4OlxcdH07XFxuIDYwOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjA6MzU6NDMuOTk3Mzg0NTc3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ0NjMwMTQzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBGdXp6aW5nIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBpdCBzZWVtcyBgcHRfbGlzdGAgaXMganVzdCBhbiBhbGlhcyBmb3IgYGxydWAgd2l0aGluIHRoZSBgc3RydWN0IHBhZ2VgIHN0cnVjdHVyZS4gVGhpcyBwYXRjaCBpcyBlc3NlbnRpYWxseSByZWZhY3RvcmluZyDigJMgcmVwbGFjaW5nIGBzdHJ1Y3QgcGFnZWAgd2l0aCBgc3RydWN0IHB0ZGVzY2AgaW4gcGFnZSB0YWJsZSBtYW5hZ2VtZW50LiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgaW50cm9kdWNlICpmdW5jdGlvbmFsKiBjaGFuZ2VzPyBObywgaXQncyBqdXN0IGEgdHlwZSBzd2l0Y2ggYW5kIHVzZXMgbmV3IGFjY2Vzc29ycy5cblxuQWhhLCB3YWl0IGEgbWludXRlLCBJIHNlZSBhIGNvbmRpdGlvbmFsIGNoYW5nZTogYGlmIChJU19FTkFCTEVEKENPTkZJR19YODZfMzIpKWAgcmVwbGFjaW5nIGAjaWZkZWYgQ09ORklHX1g4Nl8zMmAuICBUaGF0IG1lYW5zIHRoZSBjb2RlIGJsb2NrIGlzICpub3cqIGNvbXBpbGVkIG9uIDY0LWJpdCwgZXZlbiB0aG91Z2ggdGhlIGNvbXBpbGVyIHdpbGwgb3B0aW1pemUgaXQgb3V0LiBJdCBjaGFuZ2VzIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzLiBUaGlzIGlzIHRlY2huaWNhbGx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhlIGNvbXBpbGF0aW9uIHN0YWdlLCBidXQgdGhlIGV4ZWN1dGlvbiBwYXRoIHJlbWFpbnMgdW5hZmZlY3RlZCBiZWNhdXNlIG9mIHRoZSBkZWFkIGNvZGUgZWxpbWluYXRpb24uIEl0IGRvZXNuJ3QgY2hhbmdlIHdoYXQgdGhlIGtlcm5lbCAqZG9lcyouXG5cblNpbmNlIHRoaXMgcGF0Y2ggaXMgKnB1cmVseSogcmVmYWN0b3JpbmcgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIG5ldyAqZnVuY3Rpb25hbCogbG9naWMg4oCTIG5vIG5ldyBmZWF0dXJlcyBvciBhbHRlcmVkIGJlaGF2aW9yIOKAkyBJIGluaXRpYWxseSB0aG91Z2h0IGZ1enppbmcgaXQgc3BlY2lmaWNhbGx5IHdvdWxkIGJlIHBvaW50bGVzcy4gVGhlIHByb21wdCBzYXlzLCBzcGVjaWZpY2FsbHksIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cywgUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMsIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdywgQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLlwiLiBJdCBkb2Vzbid0IGV4cGxpY2l0bHkgbWVudGlvbiByZWZhY3RvcmluZywgYnV0IHJlZmFjdG9yaW5nIGRvZXNuJ3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuXG5JIGNvbnNpZGVyZWQgd2hhdCBmdW5jdGlvbnMgYXJlIG1vZGlmaWVkOiBgYXJjaF9zeW5jX2tlcm5lbF9tYXBwaW5nc2AsIGBzeW5jX2dsb2JhbF9wZ2RzX2w1YCwgYHN5bmNfZ2xvYmFsX3BnZHNfbDRgLCBgX19zZXRfcG1kX3B0ZWAsIGBjb2xsYXBzZV9wbWRfcGFnZWAsIGBwZ2RfcGFnZV9nZXRfbW1gLCBgeGVuX21tX3Bpbl9hbGxgLCBhbmQgYHhlbl9tbV91bnBpbl9hbGxgLiBUaGV5J3JlIGxvdy1sZXZlbCBwYWdlIHRhYmxlIGZ1bmN0aW9ucy4gRnV6emluZyB0aGVtIGRpcmVjdGx5IG1pZ2h0IG5vdCBiZSB2ZXJ5IGluc2lnaHRmdWwsIHNpbmNlIHRoZXkncmUgdXN1YWxseSByZWFjaGVkIHZpYSBzdGFuZGFyZCBtZW1vcnkgb3BlcmF0aW9ucy5cblxuU28sIEkgcmUtcmVhZCB0aGUgaW5zdHJ1Y3Rpb25zLiAgXCJUcnVlIGlmIGZ1bmN0aW9uYWwuIEZhbHNlIGlmIG9ubHkgZG9jcy9jb21tZW50cy91bnJlYWNoYWJsZS5cIiBBbmQgaXQgZG9lcyBtb2RpZnkgY29yZSBrZXJuZWwgbG9naWMgKHg4NiBwYWdlIHRhYmxlIGhhbmRsaW5nKS4gQnV0IHRoYXQncyBub3Qgd2hhdCB0aGUgcHJvbXB0IGlzIHJlYWxseSBhc2tpbmcuXG5cbkdpdmVuIHRoZSB3b3JkaW5nLCBcIkZhbHNlIGlmIG9ubHkgZG9jcy9jb21tZW50cy91bnJlYWNoYWJsZVwiLCBhbmQgdGhlIGV4cGxpY2l0IG1lbnRpb24gb2Ygbm8gZnVuY3Rpb25hbCBhbHRlcmF0aW9uIG9mIGV4ZWN1dGlvbiBmbG93LCBJJ20gZ29pbmcgdG8gbGVhbiB0b3dhcmRzIFwiRmFsc2UuXCIgVGhlIHBhdGNoICppcyogY2hhbmdpbmcgY29kZSwgYnV0IHJlZmFjdG9yaW5nIGlzbid0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhpcyBjb250ZXh0IGJlY2F1c2UgaXQncyBub3QgY2hhbmdpbmcgd2hhdCB0aGUga2VybmVsICpkb2VzKi4gSXQncyBhIHR5cGUgY2hhbmdlLCBtb2RpZnlpbmcgdGhlIGNvbXBpbGVyJ3MgYmVoYXZpb3IsIGJ1dCBub3QgdGhlIHJ1bnRpbWUgYmVoYXZpb3IuXG5cblRoZSBjb3JlIG9mIHRoZSByZWZhY3RvcmluZyBpcyBzd2l0Y2hpbmcgZnJvbSBgc3RydWN0IHBhZ2UgKmAgdG8gYHN0cnVjdCBwdGRlc2MgKmAgaW4gZnVuY3Rpb25zIHN1Y2ggYXMgYHBnZF9wYWdlX2dldF9tbWAgYW5kIHVzaW5nIGBwdF9saXN0YCBpbnN0ZWFkIG9mIGBscnVgIGluIGBsaXN0X2Zvcl9lYWNoX2VudHJ5YC4gVGhpcyBtZWFucyB0aGUgY29tcGlsYXRpb24gcHJvY2VzcyBpcyBkaWZmZXJlbnQsIGJ1dCB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cgaXNuJ3QgY2hhbmdlZC5cblxuVGh1cywgSSdtIGdvaW5nIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAgYmVjYXVzZSB0aGlzIGlzIHB1cmUgcmVmYWN0b3JpbmcgYW5kIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNDcsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjc2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjA6MzU6NTguNDYwNDAwNDk2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCByZXBsYWNlcyBgc3RydWN0IHBhZ2VgIHdpdGggYHN0cnVjdCBwdGRlc2NgIGluIHg4NiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgY29kZS4gSXQgdXBkYXRlcyB0eXBlcyBhbmQgZmllbGQgbmFtZXMgKGUuZy4sIGBscnVgIHRvIGBwdF9saXN0YCkgYnV0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIHRoYXQgcmVwbGFjZXMgYHN0cnVjdCBwYWdlYCB3aXRoIGBzdHJ1Y3QgcHRkZXNjYCBpbiB4ODYgcGFnZSB0YWJsZSBtYW5hZ2VtZW50IGNvZGUuIEl0IHVwZGF0ZXMgdHlwZXMgYW5kIGZpZWxkIG5hbWVzIChlLmcuLCBgbHJ1YCB0byBgcHRfbGlzdGApIGJ1dCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowzqfn9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-29 20:27:19 +0000 UTC FinishedAt: 2026-06-29 20:35:59 +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+CgkJCTx0ZD4yMDI2LzA2LzI5IDIwOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IHJlcGxhY2VzIGBzdHJ1Y3QgcGFnZWAgd2l0aCBgc3RydWN0IHB0ZGVzY2AgaW4geDg2IHBhZ2UgdGFibGUgbWFuYWdlbWVudCBjb2RlLiBJdCB1cGRhdGVzIHR5cGVzIGFuZCBmaWVsZCBuYW1lcyAoZS5nLiwgYGxydWAgdG8gYHB0X2xpc3RgKSBidXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIwOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODdkYmVmNzg2MDgxMGY1Yjk4YzMwMjZiYmE2ZWQ3ZWJmNGVmNmE1YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDI5IDIwOjM0OjU3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaFxuaW5kZXggYWMyOTVjYTZjOTJmOTkuLmRkMDQ2ZjI5ZWMzMTUyIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmhcbkBAIC01MCw3ICYjNDM7NTAsNyBAQCB2b2lkIHB0ZHVtcF93YWxrX3VzZXJfcGdkX2xldmVsX2NoZWNrd3godm9pZCk7XG4gZXh0ZXJuIHNwaW5sb2NrX3QgcGdkX2xvY2s7XG4gZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgcGdkX2xpc3Q7XG4gXG4tZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgKnBnZF9wYWdlX2dldF9tbShzdHJ1Y3QgcGFnZSAqcGFnZSk7XG4mIzQzO3N0cnVjdCBtbV9zdHJ1Y3QgKnBnZF9wYWdlX2dldF9tbShzdHJ1Y3QgcHRkZXNjICpwdCk7XG4gXG4gZXh0ZXJuIHBtZHZhbF90IGVhcmx5X3BtZF9mbGFncztcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmhcbmluZGV4IDJlYzI1MGJhNDY3ZTJkLi45NWM3ZjQ1M2RiMTc5MyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlwZXMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oXG5AQCAtNTEyLDcgJiM0Mzs1MTIsNyBAQCBzdGF0aWMgaW5saW5lIHBncHJvdF90IHBncHJvdF9sYXJnZV8yXzRrKHBncHJvdF90IHBncHJvdClcbiBcdHJldHVybiBfX3BncHJvdChwcm90dmFsX2xhcmdlXzJfNGsocGdwcm90X3ZhbChwZ3Byb3QpKSk7XG4gfVxuIFxuLVxuJiM0MztzdHJ1Y3QgcHRkZXNjO1xuIHR5cGVkZWYgc3RydWN0IHBhZ2UgKnBndGFibGVfdDtcbiBcbiBleHRlcm4gcHRldmFsX3QgX19zdXBwb3J0ZWRfcHRlX21hc2s7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vZmF1bHQuYyBiL2FyY2gveDg2L21tL2ZhdWx0LmNcbmluZGV4IDQ1Yjk5YzNiMTQ0MmQ0Li5hYTg4MzcwY2U3Mzk0MyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L21tL2ZhdWx0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L21tL2ZhdWx0LmNcbkBAIC0yNzUsMTcgJiM0MzsyNzUsMTcgQEAgdm9pZCBhcmNoX3N5bmNfa2VybmVsX21hcHBpbmdzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuIFx0Zm9yIChhZGRyID0gc3RhcnQgXHUwMDI2IFBNRF9NQVNLO1xuIFx0ICAgICBhZGRyIFx1MDAzZT0gVEFTS19TSVpFX01BWCBcdTAwMjZcdTAwMjYgYWRkciBcdTAwM2MgVk1BTExPQ19FTkQ7XG4gXHQgICAgIGFkZHIgJiM0Mzs9IFBNRF9TSVpFKSB7XG4tXHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuJiM0MztcdFx0c3RydWN0IHB0ZGVzYyAqcHRkZXNjO1xuIFxuIFx0XHRzcGluX2xvY2soXHUwMDI2cGdkX2xvY2spO1xuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIFx1MDAyNnBnZF9saXN0LCBscnUpIHtcbiYjNDM7XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocHRkZXNjLCBcdTAwMjZwZ2RfbGlzdCwgcHRfbGlzdCkge1xuIFx0XHRcdHNwaW5sb2NrX3QgKnBndF9sb2NrO1xuIFxuIFx0XHRcdC8qIHRoZSBwZ3RfbG9jayBvbmx5IGZvciBYZW4gKi9cbi1cdFx0XHRwZ3RfbG9jayA9IFx1MDAyNnBnZF9wYWdlX2dldF9tbShwYWdlKS1cdTAwM2VwYWdlX3RhYmxlX2xvY2s7XG4mIzQzO1x0XHRcdHBndF9sb2NrID0gXHUwMDI2cGdkX3BhZ2VfZ2V0X21tKHB0ZGVzYyktXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xuIFxuIFx0XHRcdHNwaW5fbG9jayhwZ3RfbG9jayk7XG4tXHRcdFx0dm1hbGxvY19zeW5jX29uZShwYWdlX2FkZHJlc3MocGFnZSksIGFkZHIpO1xuJiM0MztcdFx0XHR2bWFsbG9jX3N5bmNfb25lKHB0ZGVzY19hZGRyZXNzKHB0ZGVzYyksIGFkZHIpO1xuIFx0XHRcdHNwaW5fdW5sb2NrKHBndF9sb2NrKTtcbiBcdFx0fVxuIFx0XHRzcGluX3VubG9jayhcdTAwMjZwZ2RfbG9jayk7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vaW5pdF82NC5jIGIvYXJjaC94ODYvbW0vaW5pdF82NC5jXG5pbmRleCBkNTdmMjljYTIzYTVhYy4uYmY1MjlhOTllYmQxYmEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9tbS9pbml0XzY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L21tL2luaXRfNjQuY1xuQEAgLTEzNiw3ICYjNDM7MTM2LDcgQEAgc3RhdGljIHZvaWQgc3luY19nbG9iYWxfcGdkc19sNSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbiBcbiBcdGZvciAoYWRkciA9IHN0YXJ0OyBhZGRyIFx1MDAzYz0gZW5kOyBhZGRyID0gQUxJR04oYWRkciAmIzQzOyAxLCBQR0RJUl9TSVpFKSkge1xuIFx0XHRjb25zdCBwZ2RfdCAqcGdkX3JlZiA9IHBnZF9vZmZzZXRfayhhZGRyKTtcbi1cdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4mIzQzO1x0XHRzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7XG4gXG4gXHRcdC8qIENoZWNrIGZvciBvdmVyZmxvdyAqL1xuIFx0XHRpZiAoYWRkciBcdTAwM2Mgc3RhcnQpXG5AQCAtMTQ2LDEzICYjNDM7MTQ2LDEzIEBAIHN0YXRpYyB2b2lkIHN5bmNfZ2xvYmFsX3BnZHNfbDUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHNwaW5fbG9jayhcdTAwMjZwZ2RfbG9jayk7XG4tXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgXHUwMDI2cGdkX2xpc3QsIGxydSkge1xuJiM0MztcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsIFx1MDAyNnBnZF9saXN0LCBwdF9saXN0KSB7XG4gXHRcdFx0cGdkX3QgKnBnZDtcbiBcdFx0XHRzcGlubG9ja190ICpwZ3RfbG9jaztcbiBcbi1cdFx0XHRwZ2QgPSAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkgJiM0MzsgcGdkX2luZGV4KGFkZHIpO1xuJiM0MztcdFx0XHRwZ2QgPSAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpICYjNDM7IHBnZF9pbmRleChhZGRyKTtcbiBcdFx0XHQvKiB0aGUgcGd0X2xvY2sgb25seSBmb3IgWGVuICovXG4tXHRcdFx0cGd0X2xvY2sgPSBcdTAwMjZwZ2RfcGFnZV9nZXRfbW0ocGFnZSktXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xuJiM0MztcdFx0XHRwZ3RfbG9jayA9IFx1MDAyNnBnZF9wYWdlX2dldF9tbShwdGRlc2MpLVx1MDAzZXBhZ2VfdGFibGVfbG9jaztcbiBcdFx0XHRzcGluX2xvY2socGd0X2xvY2spO1xuIFxuIFx0XHRcdGlmICghcGdkX25vbmUoKnBnZF9yZWYpIFx1MDAyNlx1MDAyNiAhcGdkX25vbmUoKnBnZCkpXG5AQCAtMTc0LDcgJiM0MzsxNzQsNyBAQCBzdGF0aWMgdm9pZCBzeW5jX2dsb2JhbF9wZ2RzX2w0KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuIFx0Zm9yIChhZGRyID0gc3RhcnQ7IGFkZHIgXHUwMDNjPSBlbmQ7IGFkZHIgPSBBTElHTihhZGRyICYjNDM7IDEsIFBHRElSX1NJWkUpKSB7XG4gXHRcdHBnZF90ICpwZ2RfcmVmID0gcGdkX29mZnNldF9rKGFkZHIpO1xuIFx0XHRjb25zdCBwNGRfdCAqcDRkX3JlZjtcbi1cdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4mIzQzO1x0XHRzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7XG4gXG4gXHRcdC8qXG4gXHRcdCAqIFdpdGggZm9sZGVkIHA0ZCwgcGdkX25vbmUoKSBpcyBhbHdheXMgZmFsc2UsIHdlIG5lZWQgdG9cbkBAIC0xODcsMTUgJiM0MzsxODcsMTUgQEAgc3RhdGljIHZvaWQgc3luY19nbG9iYWxfcGdkc19sNCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0c3Bpbl9sb2NrKFx1MDAyNnBnZF9sb2NrKTtcbi1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcdTAwMjZwZ2RfbGlzdCwgbHJ1KSB7XG4mIzQzO1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXHUwMDI2cGdkX2xpc3QsIHB0X2xpc3QpIHtcbiBcdFx0XHRwZ2RfdCAqcGdkO1xuIFx0XHRcdHA0ZF90ICpwNGQ7XG4gXHRcdFx0c3BpbmxvY2tfdCAqcGd0X2xvY2s7XG4gXG4tXHRcdFx0cGdkID0gKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpICYjNDM7IHBnZF9pbmRleChhZGRyKTtcbiYjNDM7XHRcdFx0cGdkID0gKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSAmIzQzOyBwZ2RfaW5kZXgoYWRkcik7XG4gXHRcdFx0cDRkID0gcDRkX29mZnNldChwZ2QsIGFkZHIpO1xuIFx0XHRcdC8qIHRoZSBwZ3RfbG9jayBvbmx5IGZvciBYZW4gKi9cbi1cdFx0XHRwZ3RfbG9jayA9IFx1MDAyNnBnZF9wYWdlX2dldF9tbShwYWdlKS1cdTAwM2VwYWdlX3RhYmxlX2xvY2s7XG4mIzQzO1x0XHRcdHBndF9sb2NrID0gXHUwMDI2cGdkX3BhZ2VfZ2V0X21tKHB0ZGVzYyktXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xuIFx0XHRcdHNwaW5fbG9jayhwZ3RfbG9jayk7XG4gXG4gXHRcdFx0aWYgKCFwNGRfbm9uZSgqcDRkX3JlZikgXHUwMDI2XHUwMDI2ICFwNGRfbm9uZSgqcDRkKSlcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jIGIvYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuY1xuaW5kZXggZDAyM2E0MGExZTAzNDUuLjQ1NjIzZDRjMjRjOTQxIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuY1xuQEAgLTg4OCwyNCAmIzQzOzg4OCwyMyBAQCBzdGF0aWMgdm9pZCBfX3NldF9wbWRfcHRlKHB0ZV90ICprcHRlLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHB0ZV90IHB0ZSlcbiB7XG4gXHQvKiBjaGFuZ2UgaW5pdF9tbSAqL1xuIFx0c2V0X3B0ZV9hdG9taWMoa3B0ZSwgcHRlKTtcbi0jaWZkZWYgQ09ORklHX1g4Nl8zMlxuLVx0e1xuLVx0XHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbiBcbi1cdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcdTAwMjZwZ2RfbGlzdCwgbHJ1KSB7XG4mIzQzO1x0aWYgKElTX0VOQUJMRUQoQ09ORklHX1g4Nl8zMikpIHtcbiYjNDM7XHRcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcbiYjNDM7XG4mIzQzO1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXHUwMDI2cGdkX2xpc3QsIHB0X2xpc3QpIHtcbiBcdFx0XHRwZ2RfdCAqcGdkO1xuIFx0XHRcdHA0ZF90ICpwNGQ7XG4gXHRcdFx0cHVkX3QgKnB1ZDtcbiBcdFx0XHRwbWRfdCAqcG1kO1xuIFxuLVx0XHRcdHBnZCA9IChwZ2RfdCAqKXBhZ2VfYWRkcmVzcyhwYWdlKSAmIzQzOyBwZ2RfaW5kZXgoYWRkcmVzcyk7XG4mIzQzO1x0XHRcdHBnZCA9IChwZ2RfdCAqKXB0ZGVzY19hZGRyZXNzKHB0ZGVzYykgJiM0MzsgcGdkX2luZGV4KGFkZHJlc3MpO1xuIFx0XHRcdHA0ZCA9IHA0ZF9vZmZzZXQocGdkLCBhZGRyZXNzKTtcbiBcdFx0XHRwdWQgPSBwdWRfb2Zmc2V0KHA0ZCwgYWRkcmVzcyk7XG4gXHRcdFx0cG1kID0gcG1kX29mZnNldChwdWQsIGFkZHJlc3MpO1xuIFx0XHRcdHNldF9wdGVfYXRvbWljKChwdGVfdCAqKXBtZCwgcHRlKTtcbiBcdFx0fVxuIFx0fVxuLSNlbmRpZlxuIH1cbiBcbiBzdGF0aWMgcGdwcm90X3QgcGdwcm90X2NsZWFyX3Byb3Rub25lX2JpdHMocGdwcm90X3QgcHJvdClcbkBAIC0xMjk4LDExICYjNDM7MTI5NywxMSBAQCBzdGF0aWMgaW50IGNvbGxhcHNlX3BtZF9wYWdlKHBtZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdGxpc3RfYWRkKFx1MDAyNnBhZ2VfcHRkZXNjKHBtZF9wYWdlKG9sZF9wbWQpKS1cdTAwM2VwdF9saXN0LCBwZ3RhYmxlcyk7XG4gXG4gXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2XzMyKSkge1xuLVx0XHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbiYjNDM7XHRcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcbiBcbiBcdFx0LyogVXBkYXRlIGFsbCBQR0QgdGFibGVzIHRvIHVzZSB0aGUgc2FtZSBsYXJnZSBwYWdlICovXG4tXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgXHUwMDI2cGdkX2xpc3QsIGxydSkge1xuLVx0XHRcdHBnZF90ICpwZ2QgPSAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkgJiM0MzsgcGdkX2luZGV4KGFkZHIpO1xuJiM0MztcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsIFx1MDAyNnBnZF9saXN0LCBwdF9saXN0KSB7XG4mIzQzO1x0XHRcdHBnZF90ICpwZ2QgPSAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpICYjNDM7IHBnZF9pbmRleChhZGRyKTtcbiBcdFx0XHRwNGRfdCAqcDRkID0gcDRkX29mZnNldChwZ2QsIGFkZHIpO1xuIFx0XHRcdHB1ZF90ICpwdWQgPSBwdWRfb2Zmc2V0KHA0ZCwgYWRkcik7XG4gXHRcdFx0cG1kX3QgKnBtZCA9IHBtZF9vZmZzZXQocHVkLCBhZGRyKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9wZ3RhYmxlLmMgYi9hcmNoL3g4Ni9tbS9wZ3RhYmxlLmNcbmluZGV4IGYzMmZhY2RiMzAzNTQzLi5jYjAzZjVhMmIyNDMzOCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L21tL3BndGFibGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbW0vcGd0YWJsZS5jXG5AQCAtNzQsOSAmIzQzOzc0LDkgQEAgc3RhdGljIHZvaWQgcGdkX3NldF9tbShwZ2RfdCAqcGdkLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiBcdHZpcnRfdG9fcHRkZXNjKHBnZCktXHUwMDNlcHRfbW0gPSBtbTtcbiB9XG4gXG4tc3RydWN0IG1tX3N0cnVjdCAqcGdkX3BhZ2VfZ2V0X21tKHN0cnVjdCBwYWdlICpwYWdlKVxuJiM0MztzdHJ1Y3QgbW1fc3RydWN0ICpwZ2RfcGFnZV9nZXRfbW0oc3RydWN0IHB0ZGVzYyAqcHQpXG4ge1xuLVx0cmV0dXJuIHBhZ2VfcHRkZXNjKHBhZ2UpLVx1MDAzZXB0X21tO1xuJiM0MztcdHJldHVybiBwdC1cdTAwM2VwdF9tbTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcGdkX2N0b3Ioc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYveGVuL21tdV9wdi5jIGIvYXJjaC94ODYveGVuL21tdV9wdi5jXG5pbmRleCBhYWI1ZjcwZDQwN2MxYi4uNmZmNWE3MTMwZTUzZTYgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni94ZW4vbW11X3B2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L3hlbi9tbXVfcHYuY1xuQEAgLTgzNiwxNSAmIzQzOzgzNiwxNSBAQCBzdGF0aWMgdm9pZCB4ZW5fcGdkX3BpbihzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiAgKi9cbiB2b2lkIHhlbl9tbV9waW5fYWxsKHZvaWQpXG4ge1xuLVx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4mIzQzO1x0c3RydWN0IHB0ZGVzYyAqcHRkZXNjO1xuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNmluaXRfbW0ucGFnZV90YWJsZV9sb2NrKTtcbiBcdHNwaW5fbG9jayhcdTAwMjZwZ2RfbG9jayk7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIFx1MDAyNnBnZF9saXN0LCBscnUpIHtcbi1cdFx0aWYgKCFQYWdlUGlubmVkKHBhZ2UpKSB7XG4tXHRcdFx0X194ZW5fcGdkX3BpbihcdTAwMjZpbml0X21tLCAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkpO1xuLVx0XHRcdFNldFBhZ2VTYXZlUGlubmVkKHBhZ2UpO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnkocHRkZXNjLCBcdTAwMjZwZ2RfbGlzdCwgcHRfbGlzdCkge1xuJiM0MztcdFx0aWYgKCFQYWdlUGlubmVkKHB0ZGVzY19wYWdlKHB0ZGVzYykpKSB7XG4mIzQzO1x0XHRcdF9feGVuX3BnZF9waW4oXHUwMDI2aW5pdF9tbSwgKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSk7XG4mIzQzO1x0XHRcdFNldFBhZ2VTYXZlUGlubmVkKHB0ZGVzY19wYWdlKHB0ZGVzYykpO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtOTQ3LDE2ICYjNDM7OTQ3LDE2IEBAIHN0YXRpYyB2b2lkIHhlbl9wZ2RfdW5waW4oc3RydWN0IG1tX3N0cnVjdCAqbW0pXG4gICovXG4gdm9pZCB4ZW5fbW1fdW5waW5fYWxsKHZvaWQpXG4ge1xuLVx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4mIzQzO1x0c3RydWN0IHB0ZGVzYyAqcHRkZXNjO1xuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNmluaXRfbW0ucGFnZV90YWJsZV9sb2NrKTtcbiBcdHNwaW5fbG9jayhcdTAwMjZwZ2RfbG9jayk7XG4gXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIFx1MDAyNnBnZF9saXN0LCBscnUpIHtcbi1cdFx0aWYgKFBhZ2VTYXZlUGlubmVkKHBhZ2UpKSB7XG4tXHRcdFx0QlVHX09OKCFQYWdlUGlubmVkKHBhZ2UpKTtcbi1cdFx0XHRfX3hlbl9wZ2RfdW5waW4oXHUwMDI2aW5pdF9tbSwgKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpKTtcbi1cdFx0XHRDbGVhclBhZ2VTYXZlUGlubmVkKHBhZ2UpO1xuJiM0MztcdGxpc3RfZm9yX2VhY2hfZW50cnkocHRkZXNjLCBcdTAwMjZwZ2RfbGlzdCwgcHRfbGlzdCkge1xuJiM0MztcdFx0aWYgKFBhZ2VTYXZlUGlubmVkKHB0ZGVzY19wYWdlKHB0ZGVzYykpKSB7XG4mIzQzO1x0XHRcdEJVR19PTighUGFnZVBpbm5lZChwdGRlc2NfcGFnZShwdGRlc2MpKSk7XG4mIzQzO1x0XHRcdF9feGVuX3BnZF91bnBpbihcdTAwMjZpbml0X21tLCAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpKTtcbiYjNDM7XHRcdFx0Q2xlYXJQYWdlU2F2ZVBpbm5lZChwdGRlc2NfcGFnZShwdGRlc2MpKTtcbiBcdFx0fVxuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIwOjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IHJlcGxhY2VzIGBzdHJ1Y3QgcGFnZWAgd2l0aCBgc3RydWN0IHB0ZGVzY2AgaW4geDg2IHBhZ2UgdGFibGUgbWFuYWdlbWVudCBjb2RlLiBJdCB1cGRhdGVzIHR5cGVzIGFuZCBmaWVsZCBuYW1lcyAoZS5nLiwgYGxydWAgdG8gYHB0X2xpc3RgKSBidXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4N2RiZWY3ODYwODEwZjViOThjMzAyNmJiYTZlZDdlYmY0ZWY2YTVhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjkgMjA6MzQ6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKaW5kZXggYWMyOTVjYTZjOTJmOTkuLmRkMDQ2ZjI5ZWMzMTUyIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oCkBAIC01MCw3ICYjNDM7NTAsNyBAQCB2b2lkIHB0ZHVtcF93YWxrX3VzZXJfcGdkX2xldmVsX2NoZWNrd3godm9pZCk7CiBleHRlcm4gc3BpbmxvY2tfdCBwZ2RfbG9jazsKIGV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIHBnZF9saXN0OwogCi1leHRlcm4gc3RydWN0IG1tX3N0cnVjdCAqcGdkX3BhZ2VfZ2V0X21tKHN0cnVjdCBwYWdlICpwYWdlKTsKJiM0MztzdHJ1Y3QgbW1fc3RydWN0ICpwZ2RfcGFnZV9nZXRfbW0oc3RydWN0IHB0ZGVzYyAqcHQpOwogCiBleHRlcm4gcG1kdmFsX3QgZWFybHlfcG1kX2ZsYWdzOwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmgKaW5kZXggMmVjMjUwYmE0NjdlMmQuLjk1YzdmNDUzZGIxNzkzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oCkBAIC01MTIsNyAmIzQzOzUxMiw3IEBAIHN0YXRpYyBpbmxpbmUgcGdwcm90X3QgcGdwcm90X2xhcmdlXzJfNGsocGdwcm90X3QgcGdwcm90KQogCXJldHVybiBfX3BncHJvdChwcm90dmFsX2xhcmdlXzJfNGsocGdwcm90X3ZhbChwZ3Byb3QpKSk7CiB9CiAKLQomIzQzO3N0cnVjdCBwdGRlc2M7CiB0eXBlZGVmIHN0cnVjdCBwYWdlICpwZ3RhYmxlX3Q7CiAKIGV4dGVybiBwdGV2YWxfdCBfX3N1cHBvcnRlZF9wdGVfbWFzazsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2ZhdWx0LmMgYi9hcmNoL3g4Ni9tbS9mYXVsdC5jCmluZGV4IDQ1Yjk5YzNiMTQ0MmQ0Li5hYTg4MzcwY2U3Mzk0MyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbW0vZmF1bHQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9tbS9mYXVsdC5jCkBAIC0yNzUsMTcgJiM0MzsyNzUsMTcgQEAgdm9pZCBhcmNoX3N5bmNfa2VybmVsX21hcHBpbmdzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQogCWZvciAoYWRkciA9IHN0YXJ0ICZhbXA7IFBNRF9NQVNLOwogCSAgICAgYWRkciAmZ3Q7PSBUQVNLX1NJWkVfTUFYICZhbXA7JmFtcDsgYWRkciAmbHQ7IFZNQUxMT0NfRU5EOwogCSAgICAgYWRkciAmIzQzOz0gUE1EX1NJWkUpIHsKLQkJc3RydWN0IHBhZ2UgKnBhZ2U7CiYjNDM7CQlzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7CiAKIAkJc3Bpbl9sb2NrKCZhbXA7cGdkX2xvY2spOwotCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsICZhbXA7cGdkX2xpc3QsIGxydSkgewomIzQzOwkJbGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsICZhbXA7cGdkX2xpc3QsIHB0X2xpc3QpIHsKIAkJCXNwaW5sb2NrX3QgKnBndF9sb2NrOwogCiAJCQkvKiB0aGUgcGd0X2xvY2sgb25seSBmb3IgWGVuICovCi0JCQlwZ3RfbG9jayA9ICZhbXA7cGdkX3BhZ2VfZ2V0X21tKHBhZ2UpLSZndDtwYWdlX3RhYmxlX2xvY2s7CiYjNDM7CQkJcGd0X2xvY2sgPSAmYW1wO3BnZF9wYWdlX2dldF9tbShwdGRlc2MpLSZndDtwYWdlX3RhYmxlX2xvY2s7CiAKIAkJCXNwaW5fbG9jayhwZ3RfbG9jayk7Ci0JCQl2bWFsbG9jX3N5bmNfb25lKHBhZ2VfYWRkcmVzcyhwYWdlKSwgYWRkcik7CiYjNDM7CQkJdm1hbGxvY19zeW5jX29uZShwdGRlc2NfYWRkcmVzcyhwdGRlc2MpLCBhZGRyKTsKIAkJCXNwaW5fdW5sb2NrKHBndF9sb2NrKTsKIAkJfQogCQlzcGluX3VubG9jaygmYW1wO3BnZF9sb2NrKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2luaXRfNjQuYyBiL2FyY2gveDg2L21tL2luaXRfNjQuYwppbmRleCBkNTdmMjljYTIzYTVhYy4uYmY1MjlhOTllYmQxYmEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L21tL2luaXRfNjQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9tbS9pbml0XzY0LmMKQEAgLTEzNiw3ICYjNDM7MTM2LDcgQEAgc3RhdGljIHZvaWQgc3luY19nbG9iYWxfcGdkc19sNSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKIAogCWZvciAoYWRkciA9IHN0YXJ0OyBhZGRyICZsdDs9IGVuZDsgYWRkciA9IEFMSUdOKGFkZHIgJiM0MzsgMSwgUEdESVJfU0laRSkpIHsKIAkJY29uc3QgcGdkX3QgKnBnZF9yZWYgPSBwZ2Rfb2Zmc2V0X2soYWRkcik7Ci0JCXN0cnVjdCBwYWdlICpwYWdlOwomIzQzOwkJc3RydWN0IHB0ZGVzYyAqcHRkZXNjOwogCiAJCS8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwogCQlpZiAoYWRkciAmbHQ7IHN0YXJ0KQpAQCAtMTQ2LDEzICYjNDM7MTQ2LDEzIEBAIHN0YXRpYyB2b2lkIHN5bmNfZ2xvYmFsX3BnZHNfbDUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCiAJCQljb250aW51ZTsKIAogCQlzcGluX2xvY2soJmFtcDtwZ2RfbG9jayk7Ci0JCWxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgJmFtcDtwZ2RfbGlzdCwgbHJ1KSB7CiYjNDM7CQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgJmFtcDtwZ2RfbGlzdCwgcHRfbGlzdCkgewogCQkJcGdkX3QgKnBnZDsKIAkJCXNwaW5sb2NrX3QgKnBndF9sb2NrOwogCi0JCQlwZ2QgPSAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkgJiM0MzsgcGdkX2luZGV4KGFkZHIpOwomIzQzOwkJCXBnZCA9IChwZ2RfdCAqKXB0ZGVzY19hZGRyZXNzKHB0ZGVzYykgJiM0MzsgcGdkX2luZGV4KGFkZHIpOwogCQkJLyogdGhlIHBndF9sb2NrIG9ubHkgZm9yIFhlbiAqLwotCQkJcGd0X2xvY2sgPSAmYW1wO3BnZF9wYWdlX2dldF9tbShwYWdlKS0mZ3Q7cGFnZV90YWJsZV9sb2NrOwomIzQzOwkJCXBndF9sb2NrID0gJmFtcDtwZ2RfcGFnZV9nZXRfbW0ocHRkZXNjKS0mZ3Q7cGFnZV90YWJsZV9sb2NrOwogCQkJc3Bpbl9sb2NrKHBndF9sb2NrKTsKIAogCQkJaWYgKCFwZ2Rfbm9uZSgqcGdkX3JlZikgJmFtcDsmYW1wOyAhcGdkX25vbmUoKnBnZCkpCkBAIC0xNzQsNyAmIzQzOzE3NCw3IEBAIHN0YXRpYyB2b2lkIHN5bmNfZ2xvYmFsX3BnZHNfbDQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCiAJZm9yIChhZGRyID0gc3RhcnQ7IGFkZHIgJmx0Oz0gZW5kOyBhZGRyID0gQUxJR04oYWRkciAmIzQzOyAxLCBQR0RJUl9TSVpFKSkgewogCQlwZ2RfdCAqcGdkX3JlZiA9IHBnZF9vZmZzZXRfayhhZGRyKTsKIAkJY29uc3QgcDRkX3QgKnA0ZF9yZWY7Ci0JCXN0cnVjdCBwYWdlICpwYWdlOwomIzQzOwkJc3RydWN0IHB0ZGVzYyAqcHRkZXNjOwogCiAJCS8qCiAJCSAqIFdpdGggZm9sZGVkIHA0ZCwgcGdkX25vbmUoKSBpcyBhbHdheXMgZmFsc2UsIHdlIG5lZWQgdG8KQEAgLTE4NywxNSAmIzQzOzE4NywxNSBAQCBzdGF0aWMgdm9pZCBzeW5jX2dsb2JhbF9wZ2RzX2w0KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQogCQkJY29udGludWU7CiAKIAkJc3Bpbl9sb2NrKCZhbXA7cGdkX2xvY2spOwotCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsICZhbXA7cGdkX2xpc3QsIGxydSkgewomIzQzOwkJbGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsICZhbXA7cGdkX2xpc3QsIHB0X2xpc3QpIHsKIAkJCXBnZF90ICpwZ2Q7CiAJCQlwNGRfdCAqcDRkOwogCQkJc3BpbmxvY2tfdCAqcGd0X2xvY2s7CiAKLQkJCXBnZCA9IChwZ2RfdCAqKXBhZ2VfYWRkcmVzcyhwYWdlKSAmIzQzOyBwZ2RfaW5kZXgoYWRkcik7CiYjNDM7CQkJcGdkID0gKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSAmIzQzOyBwZ2RfaW5kZXgoYWRkcik7CiAJCQlwNGQgPSBwNGRfb2Zmc2V0KHBnZCwgYWRkcik7CiAJCQkvKiB0aGUgcGd0X2xvY2sgb25seSBmb3IgWGVuICovCi0JCQlwZ3RfbG9jayA9ICZhbXA7cGdkX3BhZ2VfZ2V0X21tKHBhZ2UpLSZndDtwYWdlX3RhYmxlX2xvY2s7CiYjNDM7CQkJcGd0X2xvY2sgPSAmYW1wO3BnZF9wYWdlX2dldF9tbShwdGRlc2MpLSZndDtwYWdlX3RhYmxlX2xvY2s7CiAJCQlzcGluX2xvY2socGd0X2xvY2spOwogCiAJCQlpZiAoIXA0ZF9ub25lKCpwNGRfcmVmKSAmYW1wOyZhbXA7ICFwNGRfbm9uZSgqcDRkKSkKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmMgYi9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jCmluZGV4IGQwMjNhNDBhMWUwMzQ1Li40NTYyM2Q0YzI0Yzk0MSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jCkBAIC04ODgsMjQgJiM0Mzs4ODgsMjMgQEAgc3RhdGljIHZvaWQgX19zZXRfcG1kX3B0ZShwdGVfdCAqa3B0ZSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBwdGVfdCBwdGUpCiB7CiAJLyogY2hhbmdlIGluaXRfbW0gKi8KIAlzZXRfcHRlX2F0b21pYyhrcHRlLCBwdGUpOwotI2lmZGVmIENPTkZJR19YODZfMzIKLQl7Ci0JCXN0cnVjdCBwYWdlICpwYWdlOwogCi0JCWxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgJmFtcDtwZ2RfbGlzdCwgbHJ1KSB7CiYjNDM7CWlmIChJU19FTkFCTEVEKENPTkZJR19YODZfMzIpKSB7CiYjNDM7CQlzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7CiYjNDM7CiYjNDM7CQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgJmFtcDtwZ2RfbGlzdCwgcHRfbGlzdCkgewogCQkJcGdkX3QgKnBnZDsKIAkJCXA0ZF90ICpwNGQ7CiAJCQlwdWRfdCAqcHVkOwogCQkJcG1kX3QgKnBtZDsKIAotCQkJcGdkID0gKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpICYjNDM7IHBnZF9pbmRleChhZGRyZXNzKTsKJiM0MzsJCQlwZ2QgPSAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpICYjNDM7IHBnZF9pbmRleChhZGRyZXNzKTsKIAkJCXA0ZCA9IHA0ZF9vZmZzZXQocGdkLCBhZGRyZXNzKTsKIAkJCXB1ZCA9IHB1ZF9vZmZzZXQocDRkLCBhZGRyZXNzKTsKIAkJCXBtZCA9IHBtZF9vZmZzZXQocHVkLCBhZGRyZXNzKTsKIAkJCXNldF9wdGVfYXRvbWljKChwdGVfdCAqKXBtZCwgcHRlKTsKIAkJfQogCX0KLSNlbmRpZgogfQogCiBzdGF0aWMgcGdwcm90X3QgcGdwcm90X2NsZWFyX3Byb3Rub25lX2JpdHMocGdwcm90X3QgcHJvdCkKQEAgLTEyOTgsMTEgJiM0MzsxMjk3LDExIEBAIHN0YXRpYyBpbnQgY29sbGFwc2VfcG1kX3BhZ2UocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLAogCWxpc3RfYWRkKCZhbXA7cGFnZV9wdGRlc2MocG1kX3BhZ2Uob2xkX3BtZCkpLSZndDtwdF9saXN0LCBwZ3RhYmxlcyk7CiAKIAlpZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2XzMyKSkgewotCQlzdHJ1Y3QgcGFnZSAqcGFnZTsKJiM0MzsJCXN0cnVjdCBwdGRlc2MgKnB0ZGVzYzsKIAogCQkvKiBVcGRhdGUgYWxsIFBHRCB0YWJsZXMgdG8gdXNlIHRoZSBzYW1lIGxhcmdlIHBhZ2UgKi8KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCAmYW1wO3BnZF9saXN0LCBscnUpIHsKLQkJCXBnZF90ICpwZ2QgPSAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkgJiM0MzsgcGdkX2luZGV4KGFkZHIpOwomIzQzOwkJbGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsICZhbXA7cGdkX2xpc3QsIHB0X2xpc3QpIHsKJiM0MzsJCQlwZ2RfdCAqcGdkID0gKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSAmIzQzOyBwZ2RfaW5kZXgoYWRkcik7CiAJCQlwNGRfdCAqcDRkID0gcDRkX29mZnNldChwZ2QsIGFkZHIpOwogCQkJcHVkX3QgKnB1ZCA9IHB1ZF9vZmZzZXQocDRkLCBhZGRyKTsKIAkJCXBtZF90ICpwbWQgPSBwbWRfb2Zmc2V0KHB1ZCwgYWRkcik7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9wZ3RhYmxlLmMgYi9hcmNoL3g4Ni9tbS9wZ3RhYmxlLmMKaW5kZXggZjMyZmFjZGIzMDM1NDMuLmNiMDNmNWEyYjI0MzM4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9tbS9wZ3RhYmxlLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbW0vcGd0YWJsZS5jCkBAIC03NCw5ICYjNDM7NzQsOSBAQCBzdGF0aWMgdm9pZCBwZ2Rfc2V0X21tKHBnZF90ICpwZ2QsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogCXZpcnRfdG9fcHRkZXNjKHBnZCktJmd0O3B0X21tID0gbW07CiB9CiAKLXN0cnVjdCBtbV9zdHJ1Y3QgKnBnZF9wYWdlX2dldF9tbShzdHJ1Y3QgcGFnZSAqcGFnZSkKJiM0MztzdHJ1Y3QgbW1fc3RydWN0ICpwZ2RfcGFnZV9nZXRfbW0oc3RydWN0IHB0ZGVzYyAqcHQpCiB7Ci0JcmV0dXJuIHBhZ2VfcHRkZXNjKHBhZ2UpLSZndDtwdF9tbTsKJiM0MzsJcmV0dXJuIHB0LSZndDtwdF9tbTsKIH0KIAogc3RhdGljIHZvaWQgcGdkX2N0b3Ioc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni94ZW4vbW11X3B2LmMgYi9hcmNoL3g4Ni94ZW4vbW11X3B2LmMKaW5kZXggYWFiNWY3MGQ0MDdjMWIuLjZmZjVhNzEzMGU1M2U2IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni94ZW4vbW11X3B2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYveGVuL21tdV9wdi5jCkBAIC04MzYsMTUgJiM0Mzs4MzYsMTUgQEAgc3RhdGljIHZvaWQgeGVuX3BnZF9waW4oc3RydWN0IG1tX3N0cnVjdCAqbW0pCiAgKi8KIHZvaWQgeGVuX21tX3Bpbl9hbGwodm9pZCkKIHsKLQlzdHJ1Y3QgcGFnZSAqcGFnZTsKJiM0MzsJc3RydWN0IHB0ZGVzYyAqcHRkZXNjOwogCiAJc3Bpbl9sb2NrKCZhbXA7aW5pdF9tbS5wYWdlX3RhYmxlX2xvY2spOwogCXNwaW5fbG9jaygmYW1wO3BnZF9sb2NrKTsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgJmFtcDtwZ2RfbGlzdCwgbHJ1KSB7Ci0JCWlmICghUGFnZVBpbm5lZChwYWdlKSkgewotCQkJX194ZW5fcGdkX3BpbigmYW1wO2luaXRfbW0sIChwZ2RfdCAqKXBhZ2VfYWRkcmVzcyhwYWdlKSk7Ci0JCQlTZXRQYWdlU2F2ZVBpbm5lZChwYWdlKTsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsICZhbXA7cGdkX2xpc3QsIHB0X2xpc3QpIHsKJiM0MzsJCWlmICghUGFnZVBpbm5lZChwdGRlc2NfcGFnZShwdGRlc2MpKSkgewomIzQzOwkJCV9feGVuX3BnZF9waW4oJmFtcDtpbml0X21tLCAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpKTsKJiM0MzsJCQlTZXRQYWdlU2F2ZVBpbm5lZChwdGRlc2NfcGFnZShwdGRlc2MpKTsKIAkJfQogCX0KIApAQCAtOTQ3LDE2ICYjNDM7OTQ3LDE2IEBAIHN0YXRpYyB2b2lkIHhlbl9wZ2RfdW5waW4oc3RydWN0IG1tX3N0cnVjdCAqbW0pCiAgKi8KIHZvaWQgeGVuX21tX3VucGluX2FsbCh2b2lkKQogewotCXN0cnVjdCBwYWdlICpwYWdlOwomIzQzOwlzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7CiAKIAlzcGluX2xvY2soJmFtcDtpbml0X21tLnBhZ2VfdGFibGVfbG9jayk7CiAJc3Bpbl9sb2NrKCZhbXA7cGdkX2xvY2spOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCAmYW1wO3BnZF9saXN0LCBscnUpIHsKLQkJaWYgKFBhZ2VTYXZlUGlubmVkKHBhZ2UpKSB7Ci0JCQlCVUdfT04oIVBhZ2VQaW5uZWQocGFnZSkpOwotCQkJX194ZW5fcGdkX3VucGluKCZhbXA7aW5pdF9tbSwgKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpKTsKLQkJCUNsZWFyUGFnZVNhdmVQaW5uZWQocGFnZSk7CiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnkocHRkZXNjLCAmYW1wO3BnZF9saXN0LCBwdF9saXN0KSB7CiYjNDM7CQlpZiAoUGFnZVNhdmVQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSkpIHsKJiM0MzsJCQlCVUdfT04oIVBhZ2VQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSkpOwomIzQzOwkJCV9feGVuX3BnZF91bnBpbigmYW1wO2luaXRfbW0sIChwZ2RfdCAqKXB0ZGVzY19hZGRyZXNzKHB0ZGVzYykpOwomIzQzOwkJCUNsZWFyUGFnZVNhdmVQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSk7CiAJCX0KIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIxOQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDExMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVmYWN0b3JpbmcgeDg2IFBhZ2UgVGFibGUgQ29kZTogV29ydGggRnV6emluZz8qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBtYWtpbmcgY2hhbmdlcyB0byB0aGUgeDg2IHBhZ2UgdGFibGUgbWFuYWdlbWVudCBjb2RlLCBzcGVjaWZpY2FsbHkgaW52b2x2aW5nIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYHN0cnVjdCBwdGRlc2NgIGluIHBsYWNlIG9mIGBzdHJ1Y3QgcGFnZWAgaW4gYSBidW5jaCBvZiBwbGFjZXMgaXRlcmF0aW5nIG92ZXIgYHBnZF9saXN0YC4gSXQmIzM5O3MgcmVwbGFjaW5nIGBwYWdlYCB3aXRoIGBwdGRlc2NgLCB1c2luZyBgcHRkZXNjX2FkZHJlc3NgIGluc3RlYWQgb2YgYHBhZ2VfYWRkcmVzc2AsIGFuZCBjaGFuZ2luZyB0aGUgbGlzdCBpdGVyYXRpb24gZnJvbSBgbHJ1YCB0byBgcHRfbGlzdGAuIEl0IGFsc28gbG9va3MgbGlrZSBhIGNoYW5nZSB0byBgcGdkX3BhZ2VfZ2V0X21tYCB0byBoYW5kbGUgYHB0ZGVzY2AgaW5zdGVhZCBvZiBgcGFnZWAuIFRoaXMgc2VlbXMgbGlrZSBwYXJ0IG9mIGEgbGFyZ2VyIGVmZm9ydCB0byBkZWNvdXBsZSBwYWdlIHRhYmxlIGRlc2NyaXB0b3JzIGZyb20gdGhlIGBzdHJ1Y3QgcGFnZWAuCgpNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYSBwdXJlIHJlZmFjdG9yaW5nLCBvciBkb2VzIGl0IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IEkgbmVlZCB0byB3b3JyeSBhYm91dCBmdXp6aW5nPyBMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgY2hhbmdlczogd2UmIzM5O3JlIHNlZWluZyBzdWJzdGl0dXRpb25zIG9mIGBwYWdlYCB3aXRoIGBwdGRlc2NgIHRocm91Z2hvdXQgdGhlIGNvZGUsIHdoaWNoIG1lYW5zIHVwZGF0aW5nIGFyZ3VtZW50IHR5cGVzIGZvciB0aGUgZ2V0X21tIGZ1bmN0aW9uLCBsaXN0IGl0ZXJhdGluZywgYW5kIGFkZHJlc3MgZmV0Y2hpbmcuIEl0IGxvb2tzIGxpa2UgYHB0X2xpc3RgIGlzIGp1c3QgYWxpYXNpbmcgYGxydWAgYW5kIGBwdGRlc2NfYWRkcmVzc2AgaXMganVzdCB1c2luZyBgcHRkZXNjX3BhZ2VgLiBBbmQsIHRoZSBgcGdkX3BhZ2VfZ2V0X21tYCBmdW5jdGlvbiBpcyBqdXN0IGFjY2Vzc2luZyBgcHRfbW1gIGluc3RlYWQgb2YgdXNpbmcgdGhlIGBwYWdlYCBzdHJ1Y3R1cmUuIE9rYXksIHNvIGZhciwgaXQgKnNlZW1zKiBsaWtlIGEgc3RyYWlnaHQgcmVmYWN0b3JpbmcuCgpXYWl0LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgaWYgdGhlcmUmIzM5O3MgKmFueSogc3VidGxlIGZ1bmN0aW9uYWwgY2hhbmdlLiBMZXQmIzM5O3MgbG9vayBhdCB0aGUgYGluY2x1ZGUvbGludXgvcGd0YWJsZS5oYCBvciBzaW1pbGFyIHRvIHNlZSB3aGF0IHRoZSBgcHRkZXNjYCBzdHJ1Y3QgaXMuIFRoaXMgaXMgcGFydCBvZiB0aGUgJiMzNDttbTogVXNlIHB0ZGVzYyBpbiB4ODYgbW11JiMzNDsgc2VyaWVzLCBzbyBpdCBkb2VzIGFwcGVhciB0byBiZSBhIHNpbXBsZSByZWZhY3Rvci4gT2theSwgZXZlbiB0aG91Z2ggaXQmIzM5O3MgbW9kaWZ5aW5nIGNvcmUga2VybmVsIGxvZ2ljICh4ODYgcGFnZSB0YWJsZXMpLCBpdCBzZWVtcyBsaWtlIGEgcHVyZSByZWZhY3Rvci4gVGhpcyBzaG91bGRuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGJ1Z3MgdG8gYmUgZnV6emVkLCB1bmxlc3MgSSBtaXNzIHNvbWV0aGluZy4KCkxldCBtZSBkb3VibGUtY2hlY2suIEluIGBhcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jYCwgdGhlcmUmIzM5O3MgYSBjaGFuZ2UgZnJvbSBgI2lmZGVmIENPTkZJR19YODZfMzJgIHRvIGBpZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2XzMyKSlgLiBPa2F5LCB0aGF0JiMzOTtzIG1pbm9yLCBidXQgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGF0IHRoZSBjb2RlIGlzIG5vdyBjb21waWxlZCBvbiA2NC1iaXQsIGV2ZW4gaWYgaXQmIzM5O3Mgb3B0aW1pemVkIG91dCBvbiB0aGF0IGFyY2hpdGVjdHVyZSwgYnV0IGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LgoKVGhlIHByb21wdCBsaXN0cyBjb25kaXRpb25zIGZvciBgV29ydGhGdXp6aW5nPWZhbHNlYCwgYW5kIGEgcHVyZSByZWZhY3RvcmluZyBpc24mIzM5O3QgZXhwbGljaXRseSBtZW50aW9uZWQsIGJ1dCBpdCBzYXlzLCAmIzM0O2lmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OyBJdCYjMzk7cyBtb2RpZnlpbmcgY29yZSBrZXJuZWwgbG9naWMsIGV2ZW4gaWYgaXQmIzM5O3MgYSByZWZhY3RvcmluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIHNvbWV0aGluZy4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgZXZlbiByZWZhY3RvcmluZyBpbnRyb2R1Y2VzIHJpc2ssIGxpa2UgdXNpbmcgdGhlIHdyb25nIGZpZWxkLiBJcyB0aGUgYWxpYXMgZXhhY3Q/IExldCYjMzk7cyBkb3VibGUgY2hlY2sgYHB0X2xpc3RgIGFuZCBgbHJ1YCBhcmUgaW4gYSB1bmlvbiB3aXRoaW4gYHN0cnVjdCBwYWdlYC4gVGltZSB0byBmaXJlIHVwIGBncmVwcGVyYCBhbmQgZmluZCB0aGUgZGVmaW5pdGlvbiBvZiBgc3RydWN0IHB0ZGVzY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjA6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IHB0ZGVzYyBcXHsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9tbV90eXBlcy5oPTU0Nz1GT0xJT19NQVRDSChjb21wb3VuZF9pbmZvLCBfaGVhZF8zKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtNTcyLSAqL1xuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oOjU3MzpzdHJ1Y3QgcHRkZXNjIHtcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaC01NzQtXHRtZW1kZXNjX2ZsYWdzX3QgcHRfZmxhZ3M7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjA6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE0MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgbW1fdHlwZXMuaGAgLSBTcGVjaWZpY2FsbHksIExpbmUgNTczLi4uKioKCk9rYXksIHRpbWUgdG8gZ2V0IGEgYml0IG1vcmUgZ3JhbnVsYXIuIEkmIzM5O20gZ29pbmcgdG8gcHVsbCB1cCB0aGUgYGluY2x1ZGUvbGludXgvbW1fdHlwZXMuaGAgaGVhZGVyIGZpbGUuIEl0JiMzOTtzIHVzdWFsbHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHdoZW4gZGVhbGluZyB3aXRoIG1lbW9yeSBtYW5hZ2VtZW50IHN0cnVjdHVyZXMgaW4gdGhlIExpbnV4IGtlcm5lbC4gSSYjMzk7bSBnb2luZyB0byBqdW1wIGRpcmVjdGx5IHRvIGFyb3VuZCBsaW5lIDU3My4gSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSBkZWZpbml0aW9uIEkgbmVlZCBpcyBsb2NhdGVkLCBidXQgSSYjMzk7bGwgZG91YmxlLWNoZWNrIGl0LiBUaGlzIGlzIHdoZXJlIEkgb2Z0ZW4gZmluZCB0aGUgY29yZSBzdHJ1Y3R1cmVzIGRlZmluaW5nIG1lbW9yeSBtYXBzIGFuZCB0aGUgcmVsYXRlZCBmaWVsZHMgdGhhdCBJJiMzOTttIGludGVyZXN0ZWQgaW4gZm9yIHRoZSBjdXJyZW50IHRhc2suIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IHNlY3Rpb24gYWN0dWFsbHkgcmV2ZWFscy4gSSBrbm93IEkmIzM5O2xsIGJlIGxvb2tpbmcgYXQgc3RydWN0dXJlcyBsaWtlIGB2bV9hcmVhX3N0cnVjdGAsIGJ1dCBJIHdhbnQgdG8gcmVtaW5kIG15c2VsZiBleGFjdGx5IHdoaWNoIGRlZmluaXRpb25zIGFyZSBpbiB0aGlzIGxvY2F0aW9uLiBPa2F5LCBsZXQmIzM5O3MgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDIwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9tbV90eXBlcy5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NjA6XHQgKiBAcHRfaW5kZXg6ICAgICAgICAgVXNlZCBmb3IgczM5MCBnbWFwLlxuIDU2MTpcdCAqIEBwdF9tbTogICAgICAgICAgICBVc2VkIGZvciB4ODYgcGdkcy5cbiA1NjI6XHQgKiBAcHRfZnJhZ19yZWZjb3VudDogRm9yIGZyYWdtZW50ZWQgcGFnZSB0YWJsZSB0cmFja2luZy4gUG93ZXJwYyBvbmx5LlxuIDU2MzpcdCAqIEBwdF9zaGFyZV9jb3VudDogICBVc2VkIGZvciBIdWdlVExCIFBNRCBwYWdlIHRhYmxlIHNoYXJlIGNvdW50LlxuIDU2NDpcdCAqIEBfcHRfcGFkXzI6ICAgICAgICBQYWRkaW5nIHRvIGVuc3VyZSBwcm9wZXIgYWxpZ25tZW50LlxuIDU2NTpcdCAqIEBwdGw6ICAgICAgICAgICAgICBMb2NrIGZvciB0aGUgcGFnZSB0YWJsZS5cbiA1NjY6XHQgKiBAX19wYWdlX3R5cGU6ICAgICAgU2FtZSBhcyBwYWdlLVx1MDAzZXBhZ2VfdHlwZS4gVW51c2VkIGZvciBwYWdlIHRhYmxlcy5cbiA1Njc6XHQgKiBAX19wYWdlX3JlZmNvdW50OiAgU2FtZSBhcyBwYWdlIHJlZmNvdW50LlxuIDU2ODpcdCAqIEBwdF9tZW1jZ19kYXRhOiAgICBNZW1jZyBkYXRhLiBUcmFja2VkIGZvciBwYWdlIHRhYmxlcyBoZXJlLlxuIDU2OTpcdCAqXG4gNTcwOlx0ICogVGhpcyBzdHJ1Y3Qgb3ZlcmxheXMgc3RydWN0IHBhZ2UgZm9yIG5vdy4gRG8gbm90IG1vZGlmeSB3aXRob3V0IGEgZ29vZFxuIDU3MTpcdCAqIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGlzc3Vlcy5cbiA1NzI6XHQgKi9cbiA1NzM6XHRzdHJ1Y3QgcHRkZXNjIHtcbiA1NzQ6XHRcdG1lbWRlc2NfZmxhZ3NfdCBwdF9mbGFncztcbiA1NzU6XHRcbiA1NzY6XHRcdHVuaW9uIHtcbiA1Nzc6XHRcdFx0c3RydWN0IHJjdV9oZWFkIHB0X3JjdV9oZWFkO1xuIDU3ODpcdFx0XHRzdHJ1Y3QgbGlzdF9oZWFkIHB0X2xpc3Q7XG4gNTc5Olx0XHRcdHN0cnVjdCB7XG4gNTgwOlx0XHRcdFx0dW5zaWduZWQgbG9uZyBfcHRfcGFkXzE7XG4gNTgxOlx0XHRcdFx0cGd0YWJsZV90IHBtZF9odWdlX3B0ZTtcbiA1ODI6XHRcdFx0fTtcbiA1ODM6XHRcdH07XG4gNTg0Olx0XHR1bnNpZ25lZCBsb25nIF9fcGFnZV9tYXBwaW5nO1xuIDU4NTpcdFxuIDU4NjpcdFx0dW5pb24ge1xuIDU4NzpcdFx0XHRwZ29mZl90IHB0X2luZGV4O1xuIDU4ODpcdFx0XHRzdHJ1Y3QgbW1fc3RydWN0ICpwdF9tbTtcbiA1ODk6XHRcdFx0YXRvbWljX3QgcHRfZnJhZ19yZWZjb3VudDtcbiA1OTA6XHQjaWZkZWYgQ09ORklHX0hVR0VUTEJfUE1EX1BBR0VfVEFCTEVfU0hBUklOR1xuIDU5MTpcdFx0XHRhdG9taWNfdCBwdF9zaGFyZV9jb3VudDtcbiA1OTI6XHQjZW5kaWZcbiA1OTM6XHRcdH07XG4gNTk0Olx0XG4gNTk1Olx0XHR1bmlvbiB7XG4gNTk2Olx0XHRcdHVuc2lnbmVkIGxvbmcgX3B0X3BhZF8yO1xuIDU5NzpcdCNpZiBBTExPQ19TUExJVF9QVExPQ0tTXG4gNTk4Olx0XHRcdHNwaW5sb2NrX3QgKnB0bDtcbiA1OTk6XHQjZWxzZVxuIDYwMDpcdFx0XHRzcGlubG9ja190IHB0bDtcbiA2MDE6XHQjZW5kaWZcbiA2MDI6XHRcdH07XG4gNjAzOlx0XHR1bnNpZ25lZCBpbnQgX19wYWdlX3R5cGU7XG4gNjA0Olx0XHRhdG9taWNfdCBfX3BhZ2VfcmVmY291bnQ7XG4gNjA1Olx0I2lmZGVmIENPTkZJR19NRU1DR1xuIDYwNjpcdFx0dW5zaWduZWQgbG9uZyBwdF9tZW1jZ19kYXRhO1xuIDYwNzpcdCNlbmRpZlxuIDYwODpcdH07XG4gNjA5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMjA6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE0NwoJCQkJCQkJb3V0cHV0OiA5NQoJCQkJCQkJdGhvdWdodHM6IDEyNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBXb3J0aGluZXNzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBpdCBzZWVtcyBgcHRfbGlzdGAgaXMganVzdCBhbiBhbGlhcyBmb3IgYGxydWAgd2l0aGluIHRoZSBgc3RydWN0IHBhZ2VgIHN0cnVjdHVyZS4gVGhpcyBwYXRjaCBpcyBlc3NlbnRpYWxseSByZWZhY3RvcmluZyDigJMgcmVwbGFjaW5nIGBzdHJ1Y3QgcGFnZWAgd2l0aCBgc3RydWN0IHB0ZGVzY2AgaW4gcGFnZSB0YWJsZSBtYW5hZ2VtZW50LiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgaW50cm9kdWNlICpmdW5jdGlvbmFsKiBjaGFuZ2VzPyBObywgaXQmIzM5O3MganVzdCBhIHR5cGUgc3dpdGNoIGFuZCB1c2VzIG5ldyBhY2Nlc3NvcnMuCgpBaGEsIHdhaXQgYSBtaW51dGUsIEkgc2VlIGEgY29uZGl0aW9uYWwgY2hhbmdlOiBgaWYgKElTX0VOQUJMRUQoQ09ORklHX1g4Nl8zMikpYCByZXBsYWNpbmcgYCNpZmRlZiBDT05GSUdfWDg2XzMyYC4gIFRoYXQgbWVhbnMgdGhlIGNvZGUgYmxvY2sgaXMgKm5vdyogY29tcGlsZWQgb24gNjQtYml0LCBldmVuIHRob3VnaCB0aGUgY29tcGlsZXIgd2lsbCBvcHRpbWl6ZSBpdCBvdXQuIEl0IGNoYW5nZXMgdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MuIFRoaXMgaXMgdGVjaG5pY2FsbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBhdCB0aGUgY29tcGlsYXRpb24gc3RhZ2UsIGJ1dCB0aGUgZXhlY3V0aW9uIHBhdGggcmVtYWlucyB1bmFmZmVjdGVkIGJlY2F1c2Ugb2YgdGhlIGRlYWQgY29kZSBlbGltaW5hdGlvbi4gSXQgZG9lc24mIzM5O3QgY2hhbmdlIHdoYXQgdGhlIGtlcm5lbCAqZG9lcyouCgpTaW5jZSB0aGlzIHBhdGNoIGlzICpwdXJlbHkqIHJlZmFjdG9yaW5nIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgbmV3ICpmdW5jdGlvbmFsKiBsb2dpYyDigJMgbm8gbmV3IGZlYXR1cmVzIG9yIGFsdGVyZWQgYmVoYXZpb3Ig4oCTIEkgaW5pdGlhbGx5IHRob3VnaHQgZnV6emluZyBpdCBzcGVjaWZpY2FsbHkgd291bGQgYmUgcG9pbnRsZXNzLiBUaGUgcHJvbXB0IHNheXMsIHNwZWNpZmljYWxseSwgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLCBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cywgQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LCBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uJiMzNDsuIEl0IGRvZXNuJiMzOTt0IGV4cGxpY2l0bHkgbWVudGlvbiByZWZhY3RvcmluZywgYnV0IHJlZmFjdG9yaW5nIGRvZXNuJiMzOTt0IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KCkkgY29uc2lkZXJlZCB3aGF0IGZ1bmN0aW9ucyBhcmUgbW9kaWZpZWQ6IGBhcmNoX3N5bmNfa2VybmVsX21hcHBpbmdzYCwgYHN5bmNfZ2xvYmFsX3BnZHNfbDVgLCBgc3luY19nbG9iYWxfcGdkc19sNGAsIGBfX3NldF9wbWRfcHRlYCwgYGNvbGxhcHNlX3BtZF9wYWdlYCwgYHBnZF9wYWdlX2dldF9tbWAsIGB4ZW5fbW1fcGluX2FsbGAsIGFuZCBgeGVuX21tX3VucGluX2FsbGAuIFRoZXkmIzM5O3JlIGxvdy1sZXZlbCBwYWdlIHRhYmxlIGZ1bmN0aW9ucy4gRnV6emluZyB0aGVtIGRpcmVjdGx5IG1pZ2h0IG5vdCBiZSB2ZXJ5IGluc2lnaHRmdWwsIHNpbmNlIHRoZXkmIzM5O3JlIHVzdWFsbHkgcmVhY2hlZCB2aWEgc3RhbmRhcmQgbWVtb3J5IG9wZXJhdGlvbnMuCgpTbywgSSByZS1yZWFkIHRoZSBpbnN0cnVjdGlvbnMuICAmIzM0O1RydWUgaWYgZnVuY3Rpb25hbC4gRmFsc2UgaWYgb25seSBkb2NzL2NvbW1lbnRzL3VucmVhY2hhYmxlLiYjMzQ7IEFuZCBpdCBkb2VzIG1vZGlmeSBjb3JlIGtlcm5lbCBsb2dpYyAoeDg2IHBhZ2UgdGFibGUgaGFuZGxpbmcpLiBCdXQgdGhhdCYjMzk7cyBub3Qgd2hhdCB0aGUgcHJvbXB0IGlzIHJlYWxseSBhc2tpbmcuCgpHaXZlbiB0aGUgd29yZGluZywgJiMzNDtGYWxzZSBpZiBvbmx5IGRvY3MvY29tbWVudHMvdW5yZWFjaGFibGUmIzM0OywgYW5kIHRoZSBleHBsaWNpdCBtZW50aW9uIG9mIG5vIGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbiBvZiBleGVjdXRpb24gZmxvdywgSSYjMzk7bSBnb2luZyB0byBsZWFuIHRvd2FyZHMgJiMzNDtGYWxzZS4mIzM0OyBUaGUgcGF0Y2ggKmlzKiBjaGFuZ2luZyBjb2RlLCBidXQgcmVmYWN0b3JpbmcgaXNuJiMzOTt0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhpcyBjb250ZXh0IGJlY2F1c2UgaXQmIzM5O3Mgbm90IGNoYW5naW5nIHdoYXQgdGhlIGtlcm5lbCAqZG9lcyouIEl0JiMzOTtzIGEgdHlwZSBjaGFuZ2UsIG1vZGlmeWluZyB0aGUgY29tcGlsZXImIzM5O3MgYmVoYXZpb3IsIGJ1dCBub3QgdGhlIHJ1bnRpbWUgYmVoYXZpb3IuCgpUaGUgY29yZSBvZiB0aGUgcmVmYWN0b3JpbmcgaXMgc3dpdGNoaW5nIGZyb20gYHN0cnVjdCBwYWdlICpgIHRvIGBzdHJ1Y3QgcHRkZXNjICpgIGluIGZ1bmN0aW9ucyBzdWNoIGFzIGBwZ2RfcGFnZV9nZXRfbW1gIGFuZCB1c2luZyBgcHRfbGlzdGAgaW5zdGVhZCBvZiBgbHJ1YCBpbiBgbGlzdF9mb3JfZWFjaF9lbnRyeWAuIFRoaXMgbWVhbnMgdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MgaXMgZGlmZmVyZW50LCBidXQgdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdyBpc24mIzM5O3QgY2hhbmdlZC4KClRodXMsIEkmIzM5O20gZ29pbmcgd2l0aCBgV29ydGhGdXp6aW5nPWZhbHNlYCBiZWNhdXNlIHRoaXMgaXMgcHVyZSByZWZhY3RvcmluZyBhbmQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGNoYW5nZSB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAyMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IHJlcGxhY2VzIGBzdHJ1Y3QgcGFnZWAgd2l0aCBgc3RydWN0IHB0ZGVzY2AgaW4geDg2IHBhZ2UgdGFibGUgbWFuYWdlbWVudCBjb2RlLiBJdCB1cGRhdGVzIHR5cGVzIGFuZCBmaWVsZCBuYW1lcyAoZS5nLiwgYGxydWAgdG8gYHB0X2xpc3RgKSBidXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCByZXBsYWNlcyBgc3RydWN0IHBhZ2VgIHdpdGggYHN0cnVjdCBwdGRlc2NgIGluIHg4NiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgY29kZS4gSXQgdXBkYXRlcyB0eXBlcyBhbmQgZmllbGQgbmFtZXMgKGUuZy4sIGBscnVgIHRvIGBwdF9saXN0YCkgYnV0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIwOjM0OjU4Ljg2Mjg5OTIyMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NTk3NTM0NjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCByZXBsYWNlcyBgc3RydWN0IHBhZ2VgIHdpdGggYHN0cnVjdCBwdGRlc2NgIGluIHg4NiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgY29kZS4gSXQgdXBkYXRlcyB0eXBlcyBhbmQgZmllbGQgbmFtZXMgKGUuZy4sIGBscnVgIHRvIGBwdF9saXN0YCkgYnV0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjA6MzQ6NTguODYyOTAzMTYxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDgwMzM2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4N2RiZWY3ODYwODEwZjViOThjMzAyNmJiYTZlZDdlYmY0ZWY2YTVhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDI5IDIwOjM0OjU3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaFxcbmluZGV4IGFjMjk1Y2E2YzkyZjk5Li5kZDA0NmYyOWVjMzE1MiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmhcXG5AQCAtNTAsNyArNTAsNyBAQCB2b2lkIHB0ZHVtcF93YWxrX3VzZXJfcGdkX2xldmVsX2NoZWNrd3godm9pZCk7XFxuIGV4dGVybiBzcGlubG9ja190IHBnZF9sb2NrO1xcbiBleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBwZ2RfbGlzdDtcXG4gXFxuLWV4dGVybiBzdHJ1Y3QgbW1fc3RydWN0ICpwZ2RfcGFnZV9nZXRfbW0oc3RydWN0IHBhZ2UgKnBhZ2UpO1xcbitzdHJ1Y3QgbW1fc3RydWN0ICpwZ2RfcGFnZV9nZXRfbW0oc3RydWN0IHB0ZGVzYyAqcHQpO1xcbiBcXG4gZXh0ZXJuIHBtZHZhbF90IGVhcmx5X3BtZF9mbGFncztcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlwZXMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlwZXMuaFxcbmluZGV4IDJlYzI1MGJhNDY3ZTJkLi45NWM3ZjQ1M2RiMTc5MyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmhcXG5AQCAtNTEyLDcgKzUxMiw3IEBAIHN0YXRpYyBpbmxpbmUgcGdwcm90X3QgcGdwcm90X2xhcmdlXzJfNGsocGdwcm90X3QgcGdwcm90KVxcbiBcXHRyZXR1cm4gX19wZ3Byb3QocHJvdHZhbF9sYXJnZV8yXzRrKHBncHJvdF92YWwocGdwcm90KSkpO1xcbiB9XFxuIFxcbi1cXG4rc3RydWN0IHB0ZGVzYztcXG4gdHlwZWRlZiBzdHJ1Y3QgcGFnZSAqcGd0YWJsZV90O1xcbiBcXG4gZXh0ZXJuIHB0ZXZhbF90IF9fc3VwcG9ydGVkX3B0ZV9tYXNrO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9mYXVsdC5jIGIvYXJjaC94ODYvbW0vZmF1bHQuY1xcbmluZGV4IDQ1Yjk5YzNiMTQ0MmQ0Li5hYTg4MzcwY2U3Mzk0MyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9tbS9mYXVsdC5jXFxuKysrIGIvYXJjaC94ODYvbW0vZmF1bHQuY1xcbkBAIC0yNzUsMTcgKzI3NSwxNyBAQCB2b2lkIGFyY2hfc3luY19rZXJuZWxfbWFwcGluZ3ModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxuIFxcdGZvciAoYWRkciA9IHN0YXJ0IFxcdTAwMjYgUE1EX01BU0s7XFxuIFxcdCAgICAgYWRkciBcXHUwMDNlPSBUQVNLX1NJWkVfTUFYIFxcdTAwMjZcXHUwMDI2IGFkZHIgXFx1MDAzYyBWTUFMTE9DX0VORDtcXG4gXFx0ICAgICBhZGRyICs9IFBNRF9TSVpFKSB7XFxuLVxcdFxcdHN0cnVjdCBwYWdlICpwYWdlO1xcbitcXHRcXHRzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7XFxuIFxcbiBcXHRcXHRzcGluX2xvY2soXFx1MDAyNnBnZF9sb2NrKTtcXG4tXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcXHUwMDI2cGdkX2xpc3QsIGxydSkge1xcbitcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXFx1MDAyNnBnZF9saXN0LCBwdF9saXN0KSB7XFxuIFxcdFxcdFxcdHNwaW5sb2NrX3QgKnBndF9sb2NrO1xcbiBcXG4gXFx0XFx0XFx0LyogdGhlIHBndF9sb2NrIG9ubHkgZm9yIFhlbiAqL1xcbi1cXHRcXHRcXHRwZ3RfbG9jayA9IFxcdTAwMjZwZ2RfcGFnZV9nZXRfbW0ocGFnZSktXFx1MDAzZXBhZ2VfdGFibGVfbG9jaztcXG4rXFx0XFx0XFx0cGd0X2xvY2sgPSBcXHUwMDI2cGdkX3BhZ2VfZ2V0X21tKHB0ZGVzYyktXFx1MDAzZXBhZ2VfdGFibGVfbG9jaztcXG4gXFxuIFxcdFxcdFxcdHNwaW5fbG9jayhwZ3RfbG9jayk7XFxuLVxcdFxcdFxcdHZtYWxsb2Nfc3luY19vbmUocGFnZV9hZGRyZXNzKHBhZ2UpLCBhZGRyKTtcXG4rXFx0XFx0XFx0dm1hbGxvY19zeW5jX29uZShwdGRlc2NfYWRkcmVzcyhwdGRlc2MpLCBhZGRyKTtcXG4gXFx0XFx0XFx0c3Bpbl91bmxvY2socGd0X2xvY2spO1xcbiBcXHRcXHR9XFxuIFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZwZ2RfbG9jayk7XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2luaXRfNjQuYyBiL2FyY2gveDg2L21tL2luaXRfNjQuY1xcbmluZGV4IGQ1N2YyOWNhMjNhNWFjLi5iZjUyOWE5OWViZDFiYSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9tbS9pbml0XzY0LmNcXG4rKysgYi9hcmNoL3g4Ni9tbS9pbml0XzY0LmNcXG5AQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyB2b2lkIHN5bmNfZ2xvYmFsX3BnZHNfbDUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxuIFxcbiBcXHRmb3IgKGFkZHIgPSBzdGFydDsgYWRkciBcXHUwMDNjPSBlbmQ7IGFkZHIgPSBBTElHTihhZGRyICsgMSwgUEdESVJfU0laRSkpIHtcXG4gXFx0XFx0Y29uc3QgcGdkX3QgKnBnZF9yZWYgPSBwZ2Rfb2Zmc2V0X2soYWRkcik7XFxuLVxcdFxcdHN0cnVjdCBwYWdlICpwYWdlO1xcbitcXHRcXHRzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7XFxuIFxcbiBcXHRcXHQvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi9cXG4gXFx0XFx0aWYgKGFkZHIgXFx1MDAzYyBzdGFydClcXG5AQCAtMTQ2LDEzICsxNDYsMTMgQEAgc3RhdGljIHZvaWQgc3luY19nbG9iYWxfcGdkc19sNSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRzcGluX2xvY2soXFx1MDAyNnBnZF9sb2NrKTtcXG4tXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcXHUwMDI2cGdkX2xpc3QsIGxydSkge1xcbitcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXFx1MDAyNnBnZF9saXN0LCBwdF9saXN0KSB7XFxuIFxcdFxcdFxcdHBnZF90ICpwZ2Q7XFxuIFxcdFxcdFxcdHNwaW5sb2NrX3QgKnBndF9sb2NrO1xcbiBcXG4tXFx0XFx0XFx0cGdkID0gKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpICsgcGdkX2luZGV4KGFkZHIpO1xcbitcXHRcXHRcXHRwZ2QgPSAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpICsgcGdkX2luZGV4KGFkZHIpO1xcbiBcXHRcXHRcXHQvKiB0aGUgcGd0X2xvY2sgb25seSBmb3IgWGVuICovXFxuLVxcdFxcdFxcdHBndF9sb2NrID0gXFx1MDAyNnBnZF9wYWdlX2dldF9tbShwYWdlKS1cXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xcbitcXHRcXHRcXHRwZ3RfbG9jayA9IFxcdTAwMjZwZ2RfcGFnZV9nZXRfbW0ocHRkZXNjKS1cXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xcbiBcXHRcXHRcXHRzcGluX2xvY2socGd0X2xvY2spO1xcbiBcXG4gXFx0XFx0XFx0aWYgKCFwZ2Rfbm9uZSgqcGdkX3JlZikgXFx1MDAyNlxcdTAwMjYgIXBnZF9ub25lKCpwZ2QpKVxcbkBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIHZvaWQgc3luY19nbG9iYWxfcGdkc19sNCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4gXFx0Zm9yIChhZGRyID0gc3RhcnQ7IGFkZHIgXFx1MDAzYz0gZW5kOyBhZGRyID0gQUxJR04oYWRkciArIDEsIFBHRElSX1NJWkUpKSB7XFxuIFxcdFxcdHBnZF90ICpwZ2RfcmVmID0gcGdkX29mZnNldF9rKGFkZHIpO1xcbiBcXHRcXHRjb25zdCBwNGRfdCAqcDRkX3JlZjtcXG4tXFx0XFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuK1xcdFxcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcXG4gXFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIFdpdGggZm9sZGVkIHA0ZCwgcGdkX25vbmUoKSBpcyBhbHdheXMgZmFsc2UsIHdlIG5lZWQgdG9cXG5AQCAtMTg3LDE1ICsxODcsMTUgQEAgc3RhdGljIHZvaWQgc3luY19nbG9iYWxfcGdkc19sNCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRzcGluX2xvY2soXFx1MDAyNnBnZF9sb2NrKTtcXG4tXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcXHUwMDI2cGdkX2xpc3QsIGxydSkge1xcbitcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXFx1MDAyNnBnZF9saXN0LCBwdF9saXN0KSB7XFxuIFxcdFxcdFxcdHBnZF90ICpwZ2Q7XFxuIFxcdFxcdFxcdHA0ZF90ICpwNGQ7XFxuIFxcdFxcdFxcdHNwaW5sb2NrX3QgKnBndF9sb2NrO1xcbiBcXG4tXFx0XFx0XFx0cGdkID0gKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpICsgcGdkX2luZGV4KGFkZHIpO1xcbitcXHRcXHRcXHRwZ2QgPSAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpICsgcGdkX2luZGV4KGFkZHIpO1xcbiBcXHRcXHRcXHRwNGQgPSBwNGRfb2Zmc2V0KHBnZCwgYWRkcik7XFxuIFxcdFxcdFxcdC8qIHRoZSBwZ3RfbG9jayBvbmx5IGZvciBYZW4gKi9cXG4tXFx0XFx0XFx0cGd0X2xvY2sgPSBcXHUwMDI2cGdkX3BhZ2VfZ2V0X21tKHBhZ2UpLVxcdTAwM2VwYWdlX3RhYmxlX2xvY2s7XFxuK1xcdFxcdFxcdHBndF9sb2NrID0gXFx1MDAyNnBnZF9wYWdlX2dldF9tbShwdGRlc2MpLVxcdTAwM2VwYWdlX3RhYmxlX2xvY2s7XFxuIFxcdFxcdFxcdHNwaW5fbG9jayhwZ3RfbG9jayk7XFxuIFxcbiBcXHRcXHRcXHRpZiAoIXA0ZF9ub25lKCpwNGRfcmVmKSBcXHUwMDI2XFx1MDAyNiAhcDRkX25vbmUoKnA0ZCkpXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmMgYi9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jXFxuaW5kZXggZDAyM2E0MGExZTAzNDUuLjQ1NjIzZDRjMjRjOTQxIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmNcXG4rKysgYi9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jXFxuQEAgLTg4OCwyNCArODg4LDIzIEBAIHN0YXRpYyB2b2lkIF9fc2V0X3BtZF9wdGUocHRlX3QgKmtwdGUsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgcHRlX3QgcHRlKVxcbiB7XFxuIFxcdC8qIGNoYW5nZSBpbml0X21tICovXFxuIFxcdHNldF9wdGVfYXRvbWljKGtwdGUsIHB0ZSk7XFxuLSNpZmRlZiBDT05GSUdfWDg2XzMyXFxuLVxcdHtcXG4tXFx0XFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuIFxcbi1cXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIFxcdTAwMjZwZ2RfbGlzdCwgbHJ1KSB7XFxuK1xcdGlmIChJU19FTkFCTEVEKENPTkZJR19YODZfMzIpKSB7XFxuK1xcdFxcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcXG4rXFxuK1xcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkocHRkZXNjLCBcXHUwMDI2cGdkX2xpc3QsIHB0X2xpc3QpIHtcXG4gXFx0XFx0XFx0cGdkX3QgKnBnZDtcXG4gXFx0XFx0XFx0cDRkX3QgKnA0ZDtcXG4gXFx0XFx0XFx0cHVkX3QgKnB1ZDtcXG4gXFx0XFx0XFx0cG1kX3QgKnBtZDtcXG4gXFxuLVxcdFxcdFxcdHBnZCA9IChwZ2RfdCAqKXBhZ2VfYWRkcmVzcyhwYWdlKSArIHBnZF9pbmRleChhZGRyZXNzKTtcXG4rXFx0XFx0XFx0cGdkID0gKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSArIHBnZF9pbmRleChhZGRyZXNzKTtcXG4gXFx0XFx0XFx0cDRkID0gcDRkX29mZnNldChwZ2QsIGFkZHJlc3MpO1xcbiBcXHRcXHRcXHRwdWQgPSBwdWRfb2Zmc2V0KHA0ZCwgYWRkcmVzcyk7XFxuIFxcdFxcdFxcdHBtZCA9IHBtZF9vZmZzZXQocHVkLCBhZGRyZXNzKTtcXG4gXFx0XFx0XFx0c2V0X3B0ZV9hdG9taWMoKHB0ZV90ICopcG1kLCBwdGUpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4tI2VuZGlmXFxuIH1cXG4gXFxuIHN0YXRpYyBwZ3Byb3RfdCBwZ3Byb3RfY2xlYXJfcHJvdG5vbmVfYml0cyhwZ3Byb3RfdCBwcm90KVxcbkBAIC0xMjk4LDExICsxMjk3LDExIEBAIHN0YXRpYyBpbnQgY29sbGFwc2VfcG1kX3BhZ2UocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbiBcXHRsaXN0X2FkZChcXHUwMDI2cGFnZV9wdGRlc2MocG1kX3BhZ2Uob2xkX3BtZCkpLVxcdTAwM2VwdF9saXN0LCBwZ3RhYmxlcyk7XFxuIFxcbiBcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2XzMyKSkge1xcbi1cXHRcXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG4rXFx0XFx0c3RydWN0IHB0ZGVzYyAqcHRkZXNjO1xcbiBcXG4gXFx0XFx0LyogVXBkYXRlIGFsbCBQR0QgdGFibGVzIHRvIHVzZSB0aGUgc2FtZSBsYXJnZSBwYWdlICovXFxuLVxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgXFx1MDAyNnBnZF9saXN0LCBscnUpIHtcXG4tXFx0XFx0XFx0cGdkX3QgKnBnZCA9IChwZ2RfdCAqKXBhZ2VfYWRkcmVzcyhwYWdlKSArIHBnZF9pbmRleChhZGRyKTtcXG4rXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsIFxcdTAwMjZwZ2RfbGlzdCwgcHRfbGlzdCkge1xcbitcXHRcXHRcXHRwZ2RfdCAqcGdkID0gKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSArIHBnZF9pbmRleChhZGRyKTtcXG4gXFx0XFx0XFx0cDRkX3QgKnA0ZCA9IHA0ZF9vZmZzZXQocGdkLCBhZGRyKTtcXG4gXFx0XFx0XFx0cHVkX3QgKnB1ZCA9IHB1ZF9vZmZzZXQocDRkLCBhZGRyKTtcXG4gXFx0XFx0XFx0cG1kX3QgKnBtZCA9IHBtZF9vZmZzZXQocHVkLCBhZGRyKTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vcGd0YWJsZS5jIGIvYXJjaC94ODYvbW0vcGd0YWJsZS5jXFxuaW5kZXggZjMyZmFjZGIzMDM1NDMuLmNiMDNmNWEyYjI0MzM4IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L21tL3BndGFibGUuY1xcbisrKyBiL2FyY2gveDg2L21tL3BndGFibGUuY1xcbkBAIC03NCw5ICs3NCw5IEBAIHN0YXRpYyB2b2lkIHBnZF9zZXRfbW0ocGdkX3QgKnBnZCwgc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuIFxcdHZpcnRfdG9fcHRkZXNjKHBnZCktXFx1MDAzZXB0X21tID0gbW07XFxuIH1cXG4gXFxuLXN0cnVjdCBtbV9zdHJ1Y3QgKnBnZF9wYWdlX2dldF9tbShzdHJ1Y3QgcGFnZSAqcGFnZSlcXG4rc3RydWN0IG1tX3N0cnVjdCAqcGdkX3BhZ2VfZ2V0X21tKHN0cnVjdCBwdGRlc2MgKnB0KVxcbiB7XFxuLVxcdHJldHVybiBwYWdlX3B0ZGVzYyhwYWdlKS1cXHUwMDNlcHRfbW07XFxuK1xcdHJldHVybiBwdC1cXHUwMDNlcHRfbW07XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHBnZF9jdG9yKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwZ2RfdCAqcGdkKVxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni94ZW4vbW11X3B2LmMgYi9hcmNoL3g4Ni94ZW4vbW11X3B2LmNcXG5pbmRleCBhYWI1ZjcwZDQwN2MxYi4uNmZmNWE3MTMwZTUzZTYgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYveGVuL21tdV9wdi5jXFxuKysrIGIvYXJjaC94ODYveGVuL21tdV9wdi5jXFxuQEAgLTgzNiwxNSArODM2LDE1IEBAIHN0YXRpYyB2b2lkIHhlbl9wZ2RfcGluKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbiAgKi9cXG4gdm9pZCB4ZW5fbW1fcGluX2FsbCh2b2lkKVxcbiB7XFxuLVxcdHN0cnVjdCBwYWdlICpwYWdlO1xcbitcXHRzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7XFxuIFxcbiBcXHRzcGluX2xvY2soXFx1MDAyNmluaXRfbW0ucGFnZV90YWJsZV9sb2NrKTtcXG4gXFx0c3Bpbl9sb2NrKFxcdTAwMjZwZ2RfbG9jayk7XFxuIFxcbi1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIFxcdTAwMjZwZ2RfbGlzdCwgbHJ1KSB7XFxuLVxcdFxcdGlmICghUGFnZVBpbm5lZChwYWdlKSkge1xcbi1cXHRcXHRcXHRfX3hlbl9wZ2RfcGluKFxcdTAwMjZpbml0X21tLCAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkpO1xcbi1cXHRcXHRcXHRTZXRQYWdlU2F2ZVBpbm5lZChwYWdlKTtcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsIFxcdTAwMjZwZ2RfbGlzdCwgcHRfbGlzdCkge1xcbitcXHRcXHRpZiAoIVBhZ2VQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSkpIHtcXG4rXFx0XFx0XFx0X194ZW5fcGdkX3BpbihcXHUwMDI2aW5pdF9tbSwgKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSk7XFxuK1xcdFxcdFxcdFNldFBhZ2VTYXZlUGlubmVkKHB0ZGVzY19wYWdlKHB0ZGVzYykpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuQEAgLTk0NywxNiArOTQ3LDE2IEBAIHN0YXRpYyB2b2lkIHhlbl9wZ2RfdW5waW4oc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuICAqL1xcbiB2b2lkIHhlbl9tbV91bnBpbl9hbGwodm9pZClcXG4ge1xcbi1cXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG4rXFx0c3RydWN0IHB0ZGVzYyAqcHRkZXNjO1xcbiBcXG4gXFx0c3Bpbl9sb2NrKFxcdTAwMjZpbml0X21tLnBhZ2VfdGFibGVfbG9jayk7XFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2cGdkX2xvY2spO1xcbiBcXG4tXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcXHUwMDI2cGdkX2xpc3QsIGxydSkge1xcbi1cXHRcXHRpZiAoUGFnZVNhdmVQaW5uZWQocGFnZSkpIHtcXG4tXFx0XFx0XFx0QlVHX09OKCFQYWdlUGlubmVkKHBhZ2UpKTtcXG4tXFx0XFx0XFx0X194ZW5fcGdkX3VucGluKFxcdTAwMjZpbml0X21tLCAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkpO1xcbi1cXHRcXHRcXHRDbGVhclBhZ2VTYXZlUGlubmVkKHBhZ2UpO1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXFx1MDAyNnBnZF9saXN0LCBwdF9saXN0KSB7XFxuK1xcdFxcdGlmIChQYWdlU2F2ZVBpbm5lZChwdGRlc2NfcGFnZShwdGRlc2MpKSkge1xcbitcXHRcXHRcXHRCVUdfT04oIVBhZ2VQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSkpO1xcbitcXHRcXHRcXHRfX3hlbl9wZ2RfdW5waW4oXFx1MDAyNmluaXRfbW0sIChwZ2RfdCAqKXB0ZGVzY19hZGRyZXNzKHB0ZGVzYykpO1xcbitcXHRcXHRcXHRDbGVhclBhZ2VTYXZlUGlubmVkKHB0ZGVzY19wYWdlKHB0ZGVzYykpO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIwOjM0OjU5LjI3MTY0NDkyMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkxODg3ODM2NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IHJlcGxhY2VzIGBzdHJ1Y3QgcGFnZWAgd2l0aCBgc3RydWN0IHB0ZGVzY2AgaW4geDg2IHBhZ2UgdGFibGUgbWFuYWdlbWVudCBjb2RlLiBJdCB1cGRhdGVzIHR5cGVzIGFuZCBmaWVsZCBuYW1lcyAoZS5nLiwgYGxydWAgdG8gYHB0X2xpc3RgKSBidXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBsb2dpYyBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg3ZGJlZjc4NjA4MTBmNWI5OGMzMDI2YmJhNmVkN2ViZjRlZjZhNWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAyMDozNDo1NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGUuaFxuaW5kZXggYWMyOTVjYTZjOTJmOTkuLmRkMDQ2ZjI5ZWMzMTUyIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZS5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlLmhcbkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgcHRkdW1wX3dhbGtfdXNlcl9wZ2RfbGV2ZWxfY2hlY2t3eCh2b2lkKTtcbiBleHRlcm4gc3BpbmxvY2tfdCBwZ2RfbG9jaztcbiBleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBwZ2RfbGlzdDtcbiBcbi1leHRlcm4gc3RydWN0IG1tX3N0cnVjdCAqcGdkX3BhZ2VfZ2V0X21tKHN0cnVjdCBwYWdlICpwYWdlKTtcbitzdHJ1Y3QgbW1fc3RydWN0ICpwZ2RfcGFnZV9nZXRfbW0oc3RydWN0IHB0ZGVzYyAqcHQpO1xuIFxuIGV4dGVybiBwbWR2YWxfdCBlYXJseV9wbWRfZmxhZ3M7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oXG5pbmRleCAyZWMyNTBiYTQ2N2UyZC4uOTVjN2Y0NTNkYjE3OTMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmhcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlwZXMuaFxuQEAgLTUxMiw3ICs1MTIsNyBAQCBzdGF0aWMgaW5saW5lIHBncHJvdF90IHBncHJvdF9sYXJnZV8yXzRrKHBncHJvdF90IHBncHJvdClcbiBcdHJldHVybiBfX3BncHJvdChwcm90dmFsX2xhcmdlXzJfNGsocGdwcm90X3ZhbChwZ3Byb3QpKSk7XG4gfVxuIFxuLVxuK3N0cnVjdCBwdGRlc2M7XG4gdHlwZWRlZiBzdHJ1Y3QgcGFnZSAqcGd0YWJsZV90O1xuIFxuIGV4dGVybiBwdGV2YWxfdCBfX3N1cHBvcnRlZF9wdGVfbWFzaztcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9mYXVsdC5jIGIvYXJjaC94ODYvbW0vZmF1bHQuY1xuaW5kZXggNDViOTljM2IxNDQyZDQuLmFhODgzNzBjZTczOTQzIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvbW0vZmF1bHQuY1xuKysrIGIvYXJjaC94ODYvbW0vZmF1bHQuY1xuQEAgLTI3NSwxNyArMjc1LDE3IEBAIHZvaWQgYXJjaF9zeW5jX2tlcm5lbF9tYXBwaW5ncyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbiBcdGZvciAoYWRkciA9IHN0YXJ0IFx1MDAyNiBQTURfTUFTSztcbiBcdCAgICAgYWRkciBcdTAwM2U9IFRBU0tfU0laRV9NQVggXHUwMDI2XHUwMDI2IGFkZHIgXHUwMDNjIFZNQUxMT0NfRU5EO1xuIFx0ICAgICBhZGRyICs9IFBNRF9TSVpFKSB7XG4tXHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuK1x0XHRzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7XG4gXG4gXHRcdHNwaW5fbG9jayhcdTAwMjZwZ2RfbG9jayk7XG4tXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgXHUwMDI2cGdkX2xpc3QsIGxydSkge1xuK1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXHUwMDI2cGdkX2xpc3QsIHB0X2xpc3QpIHtcbiBcdFx0XHRzcGlubG9ja190ICpwZ3RfbG9jaztcbiBcbiBcdFx0XHQvKiB0aGUgcGd0X2xvY2sgb25seSBmb3IgWGVuICovXG4tXHRcdFx0cGd0X2xvY2sgPSBcdTAwMjZwZ2RfcGFnZV9nZXRfbW0ocGFnZSktXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xuK1x0XHRcdHBndF9sb2NrID0gXHUwMDI2cGdkX3BhZ2VfZ2V0X21tKHB0ZGVzYyktXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xuIFxuIFx0XHRcdHNwaW5fbG9jayhwZ3RfbG9jayk7XG4tXHRcdFx0dm1hbGxvY19zeW5jX29uZShwYWdlX2FkZHJlc3MocGFnZSksIGFkZHIpO1xuK1x0XHRcdHZtYWxsb2Nfc3luY19vbmUocHRkZXNjX2FkZHJlc3MocHRkZXNjKSwgYWRkcik7XG4gXHRcdFx0c3Bpbl91bmxvY2socGd0X2xvY2spO1xuIFx0XHR9XG4gXHRcdHNwaW5fdW5sb2NrKFx1MDAyNnBnZF9sb2NrKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9pbml0XzY0LmMgYi9hcmNoL3g4Ni9tbS9pbml0XzY0LmNcbmluZGV4IGQ1N2YyOWNhMjNhNWFjLi5iZjUyOWE5OWViZDFiYSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L21tL2luaXRfNjQuY1xuKysrIGIvYXJjaC94ODYvbW0vaW5pdF82NC5jXG5AQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyB2b2lkIHN5bmNfZ2xvYmFsX3BnZHNfbDUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4gXG4gXHRmb3IgKGFkZHIgPSBzdGFydDsgYWRkciBcdTAwM2M9IGVuZDsgYWRkciA9IEFMSUdOKGFkZHIgKyAxLCBQR0RJUl9TSVpFKSkge1xuIFx0XHRjb25zdCBwZ2RfdCAqcGdkX3JlZiA9IHBnZF9vZmZzZXRfayhhZGRyKTtcbi1cdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4rXHRcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcbiBcbiBcdFx0LyogQ2hlY2sgZm9yIG92ZXJmbG93ICovXG4gXHRcdGlmIChhZGRyIFx1MDAzYyBzdGFydClcbkBAIC0xNDYsMTMgKzE0NiwxMyBAQCBzdGF0aWMgdm9pZCBzeW5jX2dsb2JhbF9wZ2RzX2w1KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRzcGluX2xvY2soXHUwMDI2cGdkX2xvY2spO1xuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIFx1MDAyNnBnZF9saXN0LCBscnUpIHtcbitcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwdGRlc2MsIFx1MDAyNnBnZF9saXN0LCBwdF9saXN0KSB7XG4gXHRcdFx0cGdkX3QgKnBnZDtcbiBcdFx0XHRzcGlubG9ja190ICpwZ3RfbG9jaztcbiBcbi1cdFx0XHRwZ2QgPSAocGdkX3QgKilwYWdlX2FkZHJlc3MocGFnZSkgKyBwZ2RfaW5kZXgoYWRkcik7XG4rXHRcdFx0cGdkID0gKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSArIHBnZF9pbmRleChhZGRyKTtcbiBcdFx0XHQvKiB0aGUgcGd0X2xvY2sgb25seSBmb3IgWGVuICovXG4tXHRcdFx0cGd0X2xvY2sgPSBcdTAwMjZwZ2RfcGFnZV9nZXRfbW0ocGFnZSktXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xuK1x0XHRcdHBndF9sb2NrID0gXHUwMDI2cGdkX3BhZ2VfZ2V0X21tKHB0ZGVzYyktXHUwMDNlcGFnZV90YWJsZV9sb2NrO1xuIFx0XHRcdHNwaW5fbG9jayhwZ3RfbG9jayk7XG4gXG4gXHRcdFx0aWYgKCFwZ2Rfbm9uZSgqcGdkX3JlZikgXHUwMDI2XHUwMDI2ICFwZ2Rfbm9uZSgqcGdkKSlcbkBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIHZvaWQgc3luY19nbG9iYWxfcGdkc19sNCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbiBcdGZvciAoYWRkciA9IHN0YXJ0OyBhZGRyIFx1MDAzYz0gZW5kOyBhZGRyID0gQUxJR04oYWRkciArIDEsIFBHRElSX1NJWkUpKSB7XG4gXHRcdHBnZF90ICpwZ2RfcmVmID0gcGdkX29mZnNldF9rKGFkZHIpO1xuIFx0XHRjb25zdCBwNGRfdCAqcDRkX3JlZjtcbi1cdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4rXHRcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcbiBcbiBcdFx0LypcbiBcdFx0ICogV2l0aCBmb2xkZWQgcDRkLCBwZ2Rfbm9uZSgpIGlzIGFsd2F5cyBmYWxzZSwgd2UgbmVlZCB0b1xuQEAgLTE4NywxNSArMTg3LDE1IEBAIHN0YXRpYyB2b2lkIHN5bmNfZ2xvYmFsX3BnZHNfbDQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHNwaW5fbG9jayhcdTAwMjZwZ2RfbG9jayk7XG4tXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgXHUwMDI2cGdkX2xpc3QsIGxydSkge1xuK1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXHUwMDI2cGdkX2xpc3QsIHB0X2xpc3QpIHtcbiBcdFx0XHRwZ2RfdCAqcGdkO1xuIFx0XHRcdHA0ZF90ICpwNGQ7XG4gXHRcdFx0c3BpbmxvY2tfdCAqcGd0X2xvY2s7XG4gXG4tXHRcdFx0cGdkID0gKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpICsgcGdkX2luZGV4KGFkZHIpO1xuK1x0XHRcdHBnZCA9IChwZ2RfdCAqKXB0ZGVzY19hZGRyZXNzKHB0ZGVzYykgKyBwZ2RfaW5kZXgoYWRkcik7XG4gXHRcdFx0cDRkID0gcDRkX29mZnNldChwZ2QsIGFkZHIpO1xuIFx0XHRcdC8qIHRoZSBwZ3RfbG9jayBvbmx5IGZvciBYZW4gKi9cbi1cdFx0XHRwZ3RfbG9jayA9IFx1MDAyNnBnZF9wYWdlX2dldF9tbShwYWdlKS1cdTAwM2VwYWdlX3RhYmxlX2xvY2s7XG4rXHRcdFx0cGd0X2xvY2sgPSBcdTAwMjZwZ2RfcGFnZV9nZXRfbW0ocHRkZXNjKS1cdTAwM2VwYWdlX3RhYmxlX2xvY2s7XG4gXHRcdFx0c3Bpbl9sb2NrKHBndF9sb2NrKTtcbiBcbiBcdFx0XHRpZiAoIXA0ZF9ub25lKCpwNGRfcmVmKSBcdTAwMjZcdTAwMjYgIXA0ZF9ub25lKCpwNGQpKVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmMgYi9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jXG5pbmRleCBkMDIzYTQwYTFlMDM0NS4uNDU2MjNkNGMyNGM5NDEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jXG4rKysgYi9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jXG5AQCAtODg4LDI0ICs4ODgsMjMgQEAgc3RhdGljIHZvaWQgX19zZXRfcG1kX3B0ZShwdGVfdCAqa3B0ZSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBwdGVfdCBwdGUpXG4ge1xuIFx0LyogY2hhbmdlIGluaXRfbW0gKi9cbiBcdHNldF9wdGVfYXRvbWljKGtwdGUsIHB0ZSk7XG4tI2lmZGVmIENPTkZJR19YODZfMzJcbi1cdHtcbi1cdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4gXG4tXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgXHUwMDI2cGdkX2xpc3QsIGxydSkge1xuK1x0aWYgKElTX0VOQUJMRUQoQ09ORklHX1g4Nl8zMikpIHtcbitcdFx0c3RydWN0IHB0ZGVzYyAqcHRkZXNjO1xuK1xuK1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXHUwMDI2cGdkX2xpc3QsIHB0X2xpc3QpIHtcbiBcdFx0XHRwZ2RfdCAqcGdkO1xuIFx0XHRcdHA0ZF90ICpwNGQ7XG4gXHRcdFx0cHVkX3QgKnB1ZDtcbiBcdFx0XHRwbWRfdCAqcG1kO1xuIFxuLVx0XHRcdHBnZCA9IChwZ2RfdCAqKXBhZ2VfYWRkcmVzcyhwYWdlKSArIHBnZF9pbmRleChhZGRyZXNzKTtcbitcdFx0XHRwZ2QgPSAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpICsgcGdkX2luZGV4KGFkZHJlc3MpO1xuIFx0XHRcdHA0ZCA9IHA0ZF9vZmZzZXQocGdkLCBhZGRyZXNzKTtcbiBcdFx0XHRwdWQgPSBwdWRfb2Zmc2V0KHA0ZCwgYWRkcmVzcyk7XG4gXHRcdFx0cG1kID0gcG1kX29mZnNldChwdWQsIGFkZHJlc3MpO1xuIFx0XHRcdHNldF9wdGVfYXRvbWljKChwdGVfdCAqKXBtZCwgcHRlKTtcbiBcdFx0fVxuIFx0fVxuLSNlbmRpZlxuIH1cbiBcbiBzdGF0aWMgcGdwcm90X3QgcGdwcm90X2NsZWFyX3Byb3Rub25lX2JpdHMocGdwcm90X3QgcHJvdClcbkBAIC0xMjk4LDExICsxMjk3LDExIEBAIHN0YXRpYyBpbnQgY29sbGFwc2VfcG1kX3BhZ2UocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0bGlzdF9hZGQoXHUwMDI2cGFnZV9wdGRlc2MocG1kX3BhZ2Uob2xkX3BtZCkpLVx1MDAzZXB0X2xpc3QsIHBndGFibGVzKTtcbiBcbiBcdGlmIChJU19FTkFCTEVEKENPTkZJR19YODZfMzIpKSB7XG4tXHRcdHN0cnVjdCBwYWdlICpwYWdlO1xuK1x0XHRzdHJ1Y3QgcHRkZXNjICpwdGRlc2M7XG4gXG4gXHRcdC8qIFVwZGF0ZSBhbGwgUEdEIHRhYmxlcyB0byB1c2UgdGhlIHNhbWUgbGFyZ2UgcGFnZSAqL1xuLVx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIFx1MDAyNnBnZF9saXN0LCBscnUpIHtcbi1cdFx0XHRwZ2RfdCAqcGdkID0gKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpICsgcGdkX2luZGV4KGFkZHIpO1xuK1x0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHB0ZGVzYywgXHUwMDI2cGdkX2xpc3QsIHB0X2xpc3QpIHtcbitcdFx0XHRwZ2RfdCAqcGdkID0gKHBnZF90ICopcHRkZXNjX2FkZHJlc3MocHRkZXNjKSArIHBnZF9pbmRleChhZGRyKTtcbiBcdFx0XHRwNGRfdCAqcDRkID0gcDRkX29mZnNldChwZ2QsIGFkZHIpO1xuIFx0XHRcdHB1ZF90ICpwdWQgPSBwdWRfb2Zmc2V0KHA0ZCwgYWRkcik7XG4gXHRcdFx0cG1kX3QgKnBtZCA9IHBtZF9vZmZzZXQocHVkLCBhZGRyKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9wZ3RhYmxlLmMgYi9hcmNoL3g4Ni9tbS9wZ3RhYmxlLmNcbmluZGV4IGYzMmZhY2RiMzAzNTQzLi5jYjAzZjVhMmIyNDMzOCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L21tL3BndGFibGUuY1xuKysrIGIvYXJjaC94ODYvbW0vcGd0YWJsZS5jXG5AQCAtNzQsOSArNzQsOSBAQCBzdGF0aWMgdm9pZCBwZ2Rfc2V0X21tKHBnZF90ICpwZ2QsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuIFx0dmlydF90b19wdGRlc2MocGdkKS1cdTAwM2VwdF9tbSA9IG1tO1xuIH1cbiBcbi1zdHJ1Y3QgbW1fc3RydWN0ICpwZ2RfcGFnZV9nZXRfbW0oc3RydWN0IHBhZ2UgKnBhZ2UpXG4rc3RydWN0IG1tX3N0cnVjdCAqcGdkX3BhZ2VfZ2V0X21tKHN0cnVjdCBwdGRlc2MgKnB0KVxuIHtcbi1cdHJldHVybiBwYWdlX3B0ZGVzYyhwYWdlKS1cdTAwM2VwdF9tbTtcbitcdHJldHVybiBwdC1cdTAwM2VwdF9tbTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcGdkX2N0b3Ioc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QpXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYveGVuL21tdV9wdi5jIGIvYXJjaC94ODYveGVuL21tdV9wdi5jXG5pbmRleCBhYWI1ZjcwZDQwN2MxYi4uNmZmNWE3MTMwZTUzZTYgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni94ZW4vbW11X3B2LmNcbisrKyBiL2FyY2gveDg2L3hlbi9tbXVfcHYuY1xuQEAgLTgzNiwxNSArODM2LDE1IEBAIHN0YXRpYyB2b2lkIHhlbl9wZ2RfcGluKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuICAqL1xuIHZvaWQgeGVuX21tX3Bpbl9hbGwodm9pZClcbiB7XG4tXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbitcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZpbml0X21tLnBhZ2VfdGFibGVfbG9jayk7XG4gXHRzcGluX2xvY2soXHUwMDI2cGdkX2xvY2spO1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcdTAwMjZwZ2RfbGlzdCwgbHJ1KSB7XG4tXHRcdGlmICghUGFnZVBpbm5lZChwYWdlKSkge1xuLVx0XHRcdF9feGVuX3BnZF9waW4oXHUwMDI2aW5pdF9tbSwgKHBnZF90ICopcGFnZV9hZGRyZXNzKHBhZ2UpKTtcbi1cdFx0XHRTZXRQYWdlU2F2ZVBpbm5lZChwYWdlKTtcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkocHRkZXNjLCBcdTAwMjZwZ2RfbGlzdCwgcHRfbGlzdCkge1xuK1x0XHRpZiAoIVBhZ2VQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSkpIHtcbitcdFx0XHRfX3hlbl9wZ2RfcGluKFx1MDAyNmluaXRfbW0sIChwZ2RfdCAqKXB0ZGVzY19hZGRyZXNzKHB0ZGVzYykpO1xuK1x0XHRcdFNldFBhZ2VTYXZlUGlubmVkKHB0ZGVzY19wYWdlKHB0ZGVzYykpO1xuIFx0XHR9XG4gXHR9XG4gXG5AQCAtOTQ3LDE2ICs5NDcsMTYgQEAgc3RhdGljIHZvaWQgeGVuX3BnZF91bnBpbihzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiAgKi9cbiB2b2lkIHhlbl9tbV91bnBpbl9hbGwodm9pZClcbiB7XG4tXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbitcdHN0cnVjdCBwdGRlc2MgKnB0ZGVzYztcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZpbml0X21tLnBhZ2VfdGFibGVfbG9jayk7XG4gXHRzcGluX2xvY2soXHUwMDI2cGdkX2xvY2spO1xuIFxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeShwYWdlLCBcdTAwMjZwZ2RfbGlzdCwgbHJ1KSB7XG4tXHRcdGlmIChQYWdlU2F2ZVBpbm5lZChwYWdlKSkge1xuLVx0XHRcdEJVR19PTighUGFnZVBpbm5lZChwYWdlKSk7XG4tXHRcdFx0X194ZW5fcGdkX3VucGluKFx1MDAyNmluaXRfbW0sIChwZ2RfdCAqKXBhZ2VfYWRkcmVzcyhwYWdlKSk7XG4tXHRcdFx0Q2xlYXJQYWdlU2F2ZVBpbm5lZChwYWdlKTtcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkocHRkZXNjLCBcdTAwMjZwZ2RfbGlzdCwgcHRfbGlzdCkge1xuK1x0XHRpZiAoUGFnZVNhdmVQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSkpIHtcbitcdFx0XHRCVUdfT04oIVBhZ2VQaW5uZWQocHRkZXNjX3BhZ2UocHRkZXNjKSkpO1xuK1x0XHRcdF9feGVuX3BnZF91bnBpbihcdTAwMjZpbml0X21tLCAocGdkX3QgKilwdGRlc2NfYWRkcmVzcyhwdGRlc2MpKTtcbitcdFx0XHRDbGVhclBhZ2VTYXZlUGlubmVkKHB0ZGVzY19wYWdlKHB0ZGVzYykpO1xuIFx0XHR9XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQyMDozNDo1OS4yNzE2NDcwODFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODEyOTkzMTEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWZhY3RvcmluZyB4ODYgUGFnZSBUYWJsZSBDb2RlOiBXb3J0aCBGdXp6aW5nPyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCdzIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSB4ODYgcGFnZSB0YWJsZSBtYW5hZ2VtZW50IGNvZGUsIHNwZWNpZmljYWxseSBpbnZvbHZpbmcgdGhlIGludHJvZHVjdGlvbiBvZiBgc3RydWN0IHB0ZGVzY2AgaW4gcGxhY2Ugb2YgYHN0cnVjdCBwYWdlYCBpbiBhIGJ1bmNoIG9mIHBsYWNlcyBpdGVyYXRpbmcgb3ZlciBgcGdkX2xpc3RgLiBJdCdzIHJlcGxhY2luZyBgcGFnZWAgd2l0aCBgcHRkZXNjYCwgdXNpbmcgYHB0ZGVzY19hZGRyZXNzYCBpbnN0ZWFkIG9mIGBwYWdlX2FkZHJlc3NgLCBhbmQgY2hhbmdpbmcgdGhlIGxpc3QgaXRlcmF0aW9uIGZyb20gYGxydWAgdG8gYHB0X2xpc3RgLiBJdCBhbHNvIGxvb2tzIGxpa2UgYSBjaGFuZ2UgdG8gYHBnZF9wYWdlX2dldF9tbWAgdG8gaGFuZGxlIGBwdGRlc2NgIGluc3RlYWQgb2YgYHBhZ2VgLiBUaGlzIHNlZW1zIGxpa2UgcGFydCBvZiBhIGxhcmdlciBlZmZvcnQgdG8gZGVjb3VwbGUgcGFnZSB0YWJsZSBkZXNjcmlwdG9ycyBmcm9tIHRoZSBgc3RydWN0IHBhZ2VgLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYSBwdXJlIHJlZmFjdG9yaW5nLCBvciBkb2VzIGl0IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IEkgbmVlZCB0byB3b3JyeSBhYm91dCBmdXp6aW5nPyBMZXQncyBicmVhayBkb3duIHRoZSBjaGFuZ2VzOiB3ZSdyZSBzZWVpbmcgc3Vic3RpdHV0aW9ucyBvZiBgcGFnZWAgd2l0aCBgcHRkZXNjYCB0aHJvdWdob3V0IHRoZSBjb2RlLCB3aGljaCBtZWFucyB1cGRhdGluZyBhcmd1bWVudCB0eXBlcyBmb3IgdGhlIGdldF9tbSBmdW5jdGlvbiwgbGlzdCBpdGVyYXRpbmcsIGFuZCBhZGRyZXNzIGZldGNoaW5nLiBJdCBsb29rcyBsaWtlIGBwdF9saXN0YCBpcyBqdXN0IGFsaWFzaW5nIGBscnVgIGFuZCBgcHRkZXNjX2FkZHJlc3NgIGlzIGp1c3QgdXNpbmcgYHB0ZGVzY19wYWdlYC4gQW5kLCB0aGUgYHBnZF9wYWdlX2dldF9tbWAgZnVuY3Rpb24gaXMganVzdCBhY2Nlc3NpbmcgYHB0X21tYCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBgcGFnZWAgc3RydWN0dXJlLiBPa2F5LCBzbyBmYXIsIGl0ICpzZWVtcyogbGlrZSBhIHN0cmFpZ2h0IHJlZmFjdG9yaW5nLlxuXG5XYWl0LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgaWYgdGhlcmUncyAqYW55KiBzdWJ0bGUgZnVuY3Rpb25hbCBjaGFuZ2UuIExldCdzIGxvb2sgYXQgdGhlIGBpbmNsdWRlL2xpbnV4L3BndGFibGUuaGAgb3Igc2ltaWxhciB0byBzZWUgd2hhdCB0aGUgYHB0ZGVzY2Agc3RydWN0IGlzLiBUaGlzIGlzIHBhcnQgb2YgdGhlIFwibW06IFVzZSBwdGRlc2MgaW4geDg2IG1tdVwiIHNlcmllcywgc28gaXQgZG9lcyBhcHBlYXIgdG8gYmUgYSBzaW1wbGUgcmVmYWN0b3IuIE9rYXksIGV2ZW4gdGhvdWdoIGl0J3MgbW9kaWZ5aW5nIGNvcmUga2VybmVsIGxvZ2ljICh4ODYgcGFnZSB0YWJsZXMpLCBpdCBzZWVtcyBsaWtlIGEgcHVyZSByZWZhY3Rvci4gVGhpcyBzaG91bGRuJ3QgaW50cm9kdWNlIGFueSBuZXcgYnVncyB0byBiZSBmdXp6ZWQsIHVubGVzcyBJIG1pc3Mgc29tZXRoaW5nLlxuXG5MZXQgbWUgZG91YmxlLWNoZWNrLiBJbiBgYXJjaC94ODYvbW0vcGF0L3NldF9tZW1vcnkuY2AsIHRoZXJlJ3MgYSBjaGFuZ2UgZnJvbSBgI2lmZGVmIENPTkZJR19YODZfMzJgIHRvIGBpZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2XzMyKSlgLiBPa2F5LCB0aGF0J3MgbWlub3IsIGJ1dCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhhdCB0aGUgY29kZSBpcyBub3cgY29tcGlsZWQgb24gNjQtYml0LCBldmVuIGlmIGl0J3Mgb3B0aW1pemVkIG91dCBvbiB0aGF0IGFyY2hpdGVjdHVyZSwgYnV0IGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LlxuXG5UaGUgcHJvbXB0IGxpc3RzIGNvbmRpdGlvbnMgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLCBhbmQgYSBwdXJlIHJlZmFjdG9yaW5nIGlzbid0IGV4cGxpY2l0bHkgbWVudGlvbmVkLCBidXQgaXQgc2F5cywgXCJpZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIgSXQncyBtb2RpZnlpbmcgY29yZSBrZXJuZWwgbG9naWMsIGV2ZW4gaWYgaXQncyBhIHJlZmFjdG9yaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBzb21ldGhpbmcuIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IGV2ZW4gcmVmYWN0b3JpbmcgaW50cm9kdWNlcyByaXNrLCBsaWtlIHVzaW5nIHRoZSB3cm9uZyBmaWVsZC4gSXMgdGhlIGFsaWFzIGV4YWN0PyBMZXQncyBkb3VibGUgY2hlY2sgYHB0X2xpc3RgIGFuZCBgbHJ1YCBhcmUgaW4gYSB1bmlvbiB3aXRoaW4gYHN0cnVjdCBwYWdlYC4gVGltZSB0byBmaXJlIHVwIGBncmVwcGVyYCBhbmQgZmluZCB0aGUgZGVmaW5pdGlvbiBvZiBgc3RydWN0IHB0ZGVzY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMTksIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjA6MzU6MzcuNDAxNTgwNDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIwMTAyMTMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgcHRkZXNjIFxcXFx7XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbW1fdHlwZXMuaD01NDc9Rk9MSU9fTUFUQ0goY29tcG91bmRfaW5mbywgX2hlYWRfMyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgtNTcyLSAqL1xcbmluY2x1ZGUvbGludXgvbW1fdHlwZXMuaDo1NzM6c3RydWN0IHB0ZGVzYyB7XFxuaW5jbHVkZS9saW51eC9tbV90eXBlcy5oLTU3NC1cXHRtZW1kZXNjX2ZsYWdzX3QgcHRfZmxhZ3M7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIwOjM1OjQwLjYwMjYwNzIyOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTQ2NTA2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgbW1fdHlwZXMuaGAgLSBTcGVjaWZpY2FsbHksIExpbmUgNTczLi4uKipcblxuT2theSwgdGltZSB0byBnZXQgYSBiaXQgbW9yZSBncmFudWxhci4gSSdtIGdvaW5nIHRvIHB1bGwgdXAgdGhlIGBpbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhgIGhlYWRlciBmaWxlLiBJdCdzIHVzdWFsbHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHdoZW4gZGVhbGluZyB3aXRoIG1lbW9yeSBtYW5hZ2VtZW50IHN0cnVjdHVyZXMgaW4gdGhlIExpbnV4IGtlcm5lbC4gSSdtIGdvaW5nIHRvIGp1bXAgZGlyZWN0bHkgdG8gYXJvdW5kIGxpbmUgNTczLiBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIHdoZXJlIHRoZSBkZWZpbml0aW9uIEkgbmVlZCBpcyBsb2NhdGVkLCBidXQgSSdsbCBkb3VibGUtY2hlY2sgaXQuIFRoaXMgaXMgd2hlcmUgSSBvZnRlbiBmaW5kIHRoZSBjb3JlIHN0cnVjdHVyZXMgZGVmaW5pbmcgbWVtb3J5IG1hcHMgYW5kIHRoZSByZWxhdGVkIGZpZWxkcyB0aGF0IEknbSBpbnRlcmVzdGVkIGluIGZvciB0aGUgY3VycmVudCB0YXNrLiBMZXQncyBzZWUgd2hhdCB0aGF0IHNlY3Rpb24gYWN0dWFsbHkgcmV2ZWFscy4gSSBrbm93IEknbGwgYmUgbG9va2luZyBhdCBzdHJ1Y3R1cmVzIGxpa2UgYHZtX2FyZWFfc3RydWN0YCwgYnV0IEkgd2FudCB0byByZW1pbmQgbXlzZWxmIGV4YWN0bHkgd2hpY2ggZGVmaW5pdGlvbnMgYXJlIGluIHRoaXMgbG9jYXRpb24uIE9rYXksIGxldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE0MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDIwOjM1OjQzLjk5NzI1OTgxN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjc4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L21tX3R5cGVzLmhcIixcbiAgXCJGaXJzdExpbmVcIjogNTYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTYwOlxcdCAqIEBwdF9pbmRleDogICAgICAgICBVc2VkIGZvciBzMzkwIGdtYXAuXFxuIDU2MTpcXHQgKiBAcHRfbW06ICAgICAgICAgICAgVXNlZCBmb3IgeDg2IHBnZHMuXFxuIDU2MjpcXHQgKiBAcHRfZnJhZ19yZWZjb3VudDogRm9yIGZyYWdtZW50ZWQgcGFnZSB0YWJsZSB0cmFja2luZy4gUG93ZXJwYyBvbmx5LlxcbiA1NjM6XFx0ICogQHB0X3NoYXJlX2NvdW50OiAgIFVzZWQgZm9yIEh1Z2VUTEIgUE1EIHBhZ2UgdGFibGUgc2hhcmUgY291bnQuXFxuIDU2NDpcXHQgKiBAX3B0X3BhZF8yOiAgICAgICAgUGFkZGluZyB0byBlbnN1cmUgcHJvcGVyIGFsaWdubWVudC5cXG4gNTY1OlxcdCAqIEBwdGw6ICAgICAgICAgICAgICBMb2NrIGZvciB0aGUgcGFnZSB0YWJsZS5cXG4gNTY2OlxcdCAqIEBfX3BhZ2VfdHlwZTogICAgICBTYW1lIGFzIHBhZ2UtXFx1MDAzZXBhZ2VfdHlwZS4gVW51c2VkIGZvciBwYWdlIHRhYmxlcy5cXG4gNTY3OlxcdCAqIEBfX3BhZ2VfcmVmY291bnQ6ICBTYW1lIGFzIHBhZ2UgcmVmY291bnQuXFxuIDU2ODpcXHQgKiBAcHRfbWVtY2dfZGF0YTogICAgTWVtY2cgZGF0YS4gVHJhY2tlZCBmb3IgcGFnZSB0YWJsZXMgaGVyZS5cXG4gNTY5OlxcdCAqXFxuIDU3MDpcXHQgKiBUaGlzIHN0cnVjdCBvdmVybGF5cyBzdHJ1Y3QgcGFnZSBmb3Igbm93LiBEbyBub3QgbW9kaWZ5IHdpdGhvdXQgYSBnb29kXFxuIDU3MTpcXHQgKiB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpc3N1ZXMuXFxuIDU3MjpcXHQgKi9cXG4gNTczOlxcdHN0cnVjdCBwdGRlc2Mge1xcbiA1NzQ6XFx0XFx0bWVtZGVzY19mbGFnc190IHB0X2ZsYWdzO1xcbiA1NzU6XFx0XFxuIDU3NjpcXHRcXHR1bmlvbiB7XFxuIDU3NzpcXHRcXHRcXHRzdHJ1Y3QgcmN1X2hlYWQgcHRfcmN1X2hlYWQ7XFxuIDU3ODpcXHRcXHRcXHRzdHJ1Y3QgbGlzdF9oZWFkIHB0X2xpc3Q7XFxuIDU3OTpcXHRcXHRcXHRzdHJ1Y3Qge1xcbiA1ODA6XFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyBfcHRfcGFkXzE7XFxuIDU4MTpcXHRcXHRcXHRcXHRwZ3RhYmxlX3QgcG1kX2h1Z2VfcHRlO1xcbiA1ODI6XFx0XFx0XFx0fTtcXG4gNTgzOlxcdFxcdH07XFxuIDU4NDpcXHRcXHR1bnNpZ25lZCBsb25nIF9fcGFnZV9tYXBwaW5nO1xcbiA1ODU6XFx0XFxuIDU4NjpcXHRcXHR1bmlvbiB7XFxuIDU4NzpcXHRcXHRcXHRwZ29mZl90IHB0X2luZGV4O1xcbiA1ODg6XFx0XFx0XFx0c3RydWN0IG1tX3N0cnVjdCAqcHRfbW07XFxuIDU4OTpcXHRcXHRcXHRhdG9taWNfdCBwdF9mcmFnX3JlZmNvdW50O1xcbiA1OTA6XFx0I2lmZGVmIENPTkZJR19IVUdFVExCX1BNRF9QQUdFX1RBQkxFX1NIQVJJTkdcXG4gNTkxOlxcdFxcdFxcdGF0b21pY190IHB0X3NoYXJlX2NvdW50O1xcbiA1OTI6XFx0I2VuZGlmXFxuIDU5MzpcXHRcXHR9O1xcbiA1OTQ6XFx0XFxuIDU5NTpcXHRcXHR1bmlvbiB7XFxuIDU5NjpcXHRcXHRcXHR1bnNpZ25lZCBsb25nIF9wdF9wYWRfMjtcXG4gNTk3OlxcdCNpZiBBTExPQ19TUExJVF9QVExPQ0tTXFxuIDU5ODpcXHRcXHRcXHRzcGlubG9ja190ICpwdGw7XFxuIDU5OTpcXHQjZWxzZVxcbiA2MDA6XFx0XFx0XFx0c3BpbmxvY2tfdCBwdGw7XFxuIDYwMTpcXHQjZW5kaWZcXG4gNjAyOlxcdFxcdH07XFxuIDYwMzpcXHRcXHR1bnNpZ25lZCBpbnQgX19wYWdlX3R5cGU7XFxuIDYwNDpcXHRcXHRhdG9taWNfdCBfX3BhZ2VfcmVmY291bnQ7XFxuIDYwNTpcXHQjaWZkZWYgQ09ORklHX01FTUNHXFxuIDYwNjpcXHRcXHR1bnNpZ25lZCBsb25nIHB0X21lbWNnX2RhdGE7XFxuIDYwNzpcXHQjZW5kaWZcXG4gNjA4OlxcdH07XFxuIDYwOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjA6MzU6NDMuOTk3Mzg0NTc3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ0NjMwMTQzNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBGdXp6aW5nIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBpdCBzZWVtcyBgcHRfbGlzdGAgaXMganVzdCBhbiBhbGlhcyBmb3IgYGxydWAgd2l0aGluIHRoZSBgc3RydWN0IHBhZ2VgIHN0cnVjdHVyZS4gVGhpcyBwYXRjaCBpcyBlc3NlbnRpYWxseSByZWZhY3RvcmluZyDigJMgcmVwbGFjaW5nIGBzdHJ1Y3QgcGFnZWAgd2l0aCBgc3RydWN0IHB0ZGVzY2AgaW4gcGFnZSB0YWJsZSBtYW5hZ2VtZW50LiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgaW50cm9kdWNlICpmdW5jdGlvbmFsKiBjaGFuZ2VzPyBObywgaXQncyBqdXN0IGEgdHlwZSBzd2l0Y2ggYW5kIHVzZXMgbmV3IGFjY2Vzc29ycy5cblxuQWhhLCB3YWl0IGEgbWludXRlLCBJIHNlZSBhIGNvbmRpdGlvbmFsIGNoYW5nZTogYGlmIChJU19FTkFCTEVEKENPTkZJR19YODZfMzIpKWAgcmVwbGFjaW5nIGAjaWZkZWYgQ09ORklHX1g4Nl8zMmAuICBUaGF0IG1lYW5zIHRoZSBjb2RlIGJsb2NrIGlzICpub3cqIGNvbXBpbGVkIG9uIDY0LWJpdCwgZXZlbiB0aG91Z2ggdGhlIGNvbXBpbGVyIHdpbGwgb3B0aW1pemUgaXQgb3V0LiBJdCBjaGFuZ2VzIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzLiBUaGlzIGlzIHRlY2huaWNhbGx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhlIGNvbXBpbGF0aW9uIHN0YWdlLCBidXQgdGhlIGV4ZWN1dGlvbiBwYXRoIHJlbWFpbnMgdW5hZmZlY3RlZCBiZWNhdXNlIG9mIHRoZSBkZWFkIGNvZGUgZWxpbWluYXRpb24uIEl0IGRvZXNuJ3QgY2hhbmdlIHdoYXQgdGhlIGtlcm5lbCAqZG9lcyouXG5cblNpbmNlIHRoaXMgcGF0Y2ggaXMgKnB1cmVseSogcmVmYWN0b3JpbmcgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIG5ldyAqZnVuY3Rpb25hbCogbG9naWMg4oCTIG5vIG5ldyBmZWF0dXJlcyBvciBhbHRlcmVkIGJlaGF2aW9yIOKAkyBJIGluaXRpYWxseSB0aG91Z2h0IGZ1enppbmcgaXQgc3BlY2lmaWNhbGx5IHdvdWxkIGJlIHBvaW50bGVzcy4gVGhlIHByb21wdCBzYXlzLCBzcGVjaWZpY2FsbHksIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cywgUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMsIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdywgQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLlwiLiBJdCBkb2Vzbid0IGV4cGxpY2l0bHkgbWVudGlvbiByZWZhY3RvcmluZywgYnV0IHJlZmFjdG9yaW5nIGRvZXNuJ3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuXG5JIGNvbnNpZGVyZWQgd2hhdCBmdW5jdGlvbnMgYXJlIG1vZGlmaWVkOiBgYXJjaF9zeW5jX2tlcm5lbF9tYXBwaW5nc2AsIGBzeW5jX2dsb2JhbF9wZ2RzX2w1YCwgYHN5bmNfZ2xvYmFsX3BnZHNfbDRgLCBgX19zZXRfcG1kX3B0ZWAsIGBjb2xsYXBzZV9wbWRfcGFnZWAsIGBwZ2RfcGFnZV9nZXRfbW1gLCBgeGVuX21tX3Bpbl9hbGxgLCBhbmQgYHhlbl9tbV91bnBpbl9hbGxgLiBUaGV5J3JlIGxvdy1sZXZlbCBwYWdlIHRhYmxlIGZ1bmN0aW9ucy4gRnV6emluZyB0aGVtIGRpcmVjdGx5IG1pZ2h0IG5vdCBiZSB2ZXJ5IGluc2lnaHRmdWwsIHNpbmNlIHRoZXkncmUgdXN1YWxseSByZWFjaGVkIHZpYSBzdGFuZGFyZCBtZW1vcnkgb3BlcmF0aW9ucy5cblxuU28sIEkgcmUtcmVhZCB0aGUgaW5zdHJ1Y3Rpb25zLiAgXCJUcnVlIGlmIGZ1bmN0aW9uYWwuIEZhbHNlIGlmIG9ubHkgZG9jcy9jb21tZW50cy91bnJlYWNoYWJsZS5cIiBBbmQgaXQgZG9lcyBtb2RpZnkgY29yZSBrZXJuZWwgbG9naWMgKHg4NiBwYWdlIHRhYmxlIGhhbmRsaW5nKS4gQnV0IHRoYXQncyBub3Qgd2hhdCB0aGUgcHJvbXB0IGlzIHJlYWxseSBhc2tpbmcuXG5cbkdpdmVuIHRoZSB3b3JkaW5nLCBcIkZhbHNlIGlmIG9ubHkgZG9jcy9jb21tZW50cy91bnJlYWNoYWJsZVwiLCBhbmQgdGhlIGV4cGxpY2l0IG1lbnRpb24gb2Ygbm8gZnVuY3Rpb25hbCBhbHRlcmF0aW9uIG9mIGV4ZWN1dGlvbiBmbG93LCBJJ20gZ29pbmcgdG8gbGVhbiB0b3dhcmRzIFwiRmFsc2UuXCIgVGhlIHBhdGNoICppcyogY2hhbmdpbmcgY29kZSwgYnV0IHJlZmFjdG9yaW5nIGlzbid0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhpcyBjb250ZXh0IGJlY2F1c2UgaXQncyBub3QgY2hhbmdpbmcgd2hhdCB0aGUga2VybmVsICpkb2VzKi4gSXQncyBhIHR5cGUgY2hhbmdlLCBtb2RpZnlpbmcgdGhlIGNvbXBpbGVyJ3MgYmVoYXZpb3IsIGJ1dCBub3QgdGhlIHJ1bnRpbWUgYmVoYXZpb3IuXG5cblRoZSBjb3JlIG9mIHRoZSByZWZhY3RvcmluZyBpcyBzd2l0Y2hpbmcgZnJvbSBgc3RydWN0IHBhZ2UgKmAgdG8gYHN0cnVjdCBwdGRlc2MgKmAgaW4gZnVuY3Rpb25zIHN1Y2ggYXMgYHBnZF9wYWdlX2dldF9tbWAgYW5kIHVzaW5nIGBwdF9saXN0YCBpbnN0ZWFkIG9mIGBscnVgIGluIGBsaXN0X2Zvcl9lYWNoX2VudHJ5YC4gVGhpcyBtZWFucyB0aGUgY29tcGlsYXRpb24gcHJvY2VzcyBpcyBkaWZmZXJlbnQsIGJ1dCB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cgaXNuJ3QgY2hhbmdlZC5cblxuVGh1cywgSSdtIGdvaW5nIHdpdGggYFdvcnRoRnV6emluZz1mYWxzZWAgYmVjYXVzZSB0aGlzIGlzIHB1cmUgcmVmYWN0b3JpbmcgYW5kIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNDcsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjc2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMjA6MzU6NTguNDYwNDAwNDk2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCByZXBsYWNlcyBgc3RydWN0IHBhZ2VgIHdpdGggYHN0cnVjdCBwdGRlc2NgIGluIHg4NiBwYWdlIHRhYmxlIG1hbmFnZW1lbnQgY29kZS4gSXQgdXBkYXRlcyB0eXBlcyBhbmQgZmllbGQgbmFtZXMgKGUuZy4sIGBscnVgIHRvIGBwdF9saXN0YCkgYnV0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIHRoYXQgcmVwbGFjZXMgYHN0cnVjdCBwYWdlYCB3aXRoIGBzdHJ1Y3QgcHRkZXNjYCBpbiB4ODYgcGFnZSB0YWJsZSBtYW5hZ2VtZW50IGNvZGUuIEl0IHVwZGF0ZXMgdHlwZXMgYW5kIGZpZWxkIG5hbWVzIChlLmcuLCBgbHJ1YCB0byBgcHRfbGlzdGApIGJ1dCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGxvZ2ljIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowzqfn9[1] Phase: Running StartedAt: 2026-06-29 20:36:09 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzqfn9[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-29 20:36:09 +0000 UTC FinishedAt: 2026-06-29 20:36:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}