Name: series-workflowzwr8t Phase: Failed StartedAt: 2026-09-02 04:27:38 +0000 UTC FinishedAt: 2026-09-02 04:50:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzwr8t[0] Phase: Succeeded StartedAt: 2026-09-02 04:27:38 +0000 UTC FinishedAt: 2026-09-02 04:49:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzwr8t[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 04:27:38 +0000 UTC FinishedAt: 2026-09-02 04:49: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+CgkJCTx0ZD4yMDI2LzA5LzAyIDA0OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwgcnVudGltZSBvciBjb3JlIHN1YnN5c3RlbXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA0OjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjgwYzlhZmI0OWRkYWEyZDQyMmIzMDYyZDBkZDEyNzMxNzBjNGU3NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDQ6NDk6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jXG5pbmRleCBiZmIxYmYzZmQ0MjdiLi44NDlmMzMyNTljMDAzIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmNcbkBAIC0yLDI5ICYjNDM7Miw0NSBAQFxuIC8qIENvcHlyaWdodCAoYykgMjAyMiBCeXRlZGFuY2UgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2N0ZXN0X3Byb2dzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7YnBmL2xpYmJwZl9pbnRlcm5hbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7dGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLnNrZWwuaFwmIzM0O1xuIFxuIHZvaWQgdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKHZvaWQpXG4ge1xuIFx0c3RydWN0IHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSAqc2tlbDtcbi1cdF9fdTY0IGtleSA9IDAsIHN1bTtcbi1cdGludCByZXQsIGksIG5yX2NwdXMgPSBsaWJicGZfbnVtX3Bvc3NpYmxlX2NwdXMoKTtcbiYjNDM7XHRib29sICpwb3NzaWJsZSA9IE5VTEw7XG4mIzQzO1x0X191NjQga2V5ID0gMCwgc3VtID0gMDtcbiYjNDM7XHRpbnQgY3B1LCBucl9jcHVfaWRzLCBucl9jcHVzLCByZXQsIHNsb3QgPSAwO1xuIFx0X191NjQgKmJ1ZjtcbiBcbi1cdGJ1ZiA9IG1hbGxvYyhucl9jcHVzKnNpemVvZihfX3U2NCkpO1xuLVx0aWYgKCFBU1NFUlRfT0tfUFRSKGJ1ZiwgXCYjMzQ7bWFsbG9jXCYjMzQ7KSlcbiYjNDM7XHRyZXQgPSBwYXJzZV9jcHVfbWFza19maWxlKFwmIzM0Oy9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L3Bvc3NpYmxlXCYjMzQ7LCBcdTAwMjZwb3NzaWJsZSxcbiYjNDM7XHRcdFx0XHQgIFx1MDAyNm5yX2NwdV9pZHMpO1xuJiM0MztcdGlmICghQVNTRVJUX09LKHJldCwgXCYjMzQ7cGFyc2UgcG9zc2libGUgQ1BVIG1hc2tcJiMzNDspKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9jcHVzOyBpJiM0MzsmIzQzOylcbi1cdFx0YnVmW2ldID0gaTtcbi1cdHN1bSA9IChucl9jcHVzIC0gMSkgKiBucl9jcHVzIC8gMjtcbiYjNDM7XHRucl9jcHVzID0gbGliYnBmX251bV9wb3NzaWJsZV9jcHVzKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfR1QobnJfY3B1cywgMCwgXCYjMzQ7bGliYnBmX251bV9wb3NzaWJsZV9jcHVzXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZnJlZV9tYXNrO1xuJiM0MztcbiYjNDM7XHRidWYgPSBtYWxsb2MobnJfY3B1cyAqIHNpemVvZigqYnVmKSk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKGJ1ZiwgXCYjMzQ7bWFsbG9jXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZnJlZV9tYXNrO1xuJiM0MztcbiYjNDM7XHRmb3IgKGNwdSA9IDA7IGNwdSBcdTAwM2MgbnJfY3B1X2lkczsgY3B1JiM0MzsmIzQzOykge1xuJiM0MztcdFx0aWYgKCFwb3NzaWJsZVtjcHVdKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdGJ1ZltzbG90JiM0MzsmIzQzO10gPSBjcHU7XG4mIzQzO1x0XHRzdW0gJiM0Mzs9IGNwdTtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKCFBU1NFUlRfRVEoc2xvdCwgbnJfY3B1cywgXCYjMzQ7cG9zc2libGUgQ1BVIG1hc2sgd2VpZ2h0XCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZXhpdDtcbiBcbiBcdHNrZWwgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW4oKTtcbiBcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDt0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW5cJiMzNDspKVxuIFx0XHRnb3RvIGV4aXQ7XG4gXG4gXHRza2VsLVx1MDAzZXJvZGF0YS1cdTAwM2VteV9waWQgPSBnZXRwaWQoKTtcbi1cdHNrZWwtXHUwMDNlcm9kYXRhLVx1MDAzZW5yX2NwdXMgPSBucl9jcHVzO1xuJiM0MztcdHNrZWwtXHUwMDNlcm9kYXRhLVx1MDAzZW5yX2NwdV9pZHMgPSBucl9jcHVfaWRzO1xuIFxuIFx0cmV0ID0gdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19sb2FkKHNrZWwpO1xuIFx0aWYgKCFBU1NFUlRfT0socmV0LCBcJiMzNDt0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2xvYWRcJiMzNDspKVxuQEAgLTU1LDQgJiM0Mzs3MSw2IEBAIHZvaWQgdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKHZvaWQpXG4gXHR0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2Rlc3Ryb3koc2tlbCk7XG4gZXhpdDpcbiBcdGZyZWUoYnVmKTtcbiYjNDM7ZnJlZV9tYXNrOlxuJiM0MztcdGZyZWUocG9zc2libGUpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmNcbmluZGV4IGNhODI3YjEwOTJkYWEuLmQ4ZGEwNjk2Yjk3Y2YgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uY1xuQEAgLTcsNyAmIzQzOzcsNyBAQFxuIF9fdTY0IHBlcmNwdV9hcnJheV9lbGVtX3N1bSA9IDA7XG4gX191NjQgcGVyY3B1X2hhc2hfZWxlbV9zdW0gPSAwO1xuIF9fdTY0IHBlcmNwdV9scnVfaGFzaF9lbGVtX3N1bSA9IDA7XG4tY29uc3Qgdm9sYXRpbGUgaW50IG5yX2NwdXM7XG4mIzQzO2NvbnN0IHZvbGF0aWxlIGludCBucl9jcHVfaWRzO1xuIGNvbnN0IHZvbGF0aWxlIGludCBteV9waWQ7XG4gXG4gc3RydWN0IHtcbkBAIC01NywxNyAmIzQzOzU3LDE3IEBAIGludCBzeXNlbnRlcl9nZXR1aWQoY29uc3Qgdm9pZCAqY3R4KVxuIFxuIFx0bWFwX2N0eC5tYXAgPSBcdTAwMjZwZXJjcHVfYXJyYXlfbWFwO1xuIFx0bWFwX2N0eC5zdW0gPSAwO1xuLVx0YnBmX2xvb3AobnJfY3B1cywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4mIzQzO1x0YnBmX2xvb3AobnJfY3B1X2lkcywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4gXHRwZXJjcHVfYXJyYXlfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTtcbiBcbiBcdG1hcF9jdHgubWFwID0gXHUwMDI2cGVyY3B1X2hhc2hfbWFwO1xuIFx0bWFwX2N0eC5zdW0gPSAwO1xuLVx0YnBmX2xvb3AobnJfY3B1cywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4mIzQzO1x0YnBmX2xvb3AobnJfY3B1X2lkcywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4gXHRwZXJjcHVfaGFzaF9lbGVtX3N1bSA9IG1hcF9jdHguc3VtO1xuIFxuIFx0bWFwX2N0eC5tYXAgPSBcdTAwMjZwZXJjcHVfbHJ1X2hhc2hfbWFwO1xuIFx0bWFwX2N0eC5zdW0gPSAwO1xuLVx0YnBmX2xvb3AobnJfY3B1cywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4mIzQzO1x0YnBmX2xvb3AobnJfY3B1X2lkcywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4gXHRwZXJjcHVfbHJ1X2hhc2hfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTtcbiBcbiBcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA0OjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgTGludXgga2VybmVsIHJ1bnRpbWUgb3IgY29yZSBzdWJzeXN0ZW1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI4MGM5YWZiNDlkZGFhMmQ0MjJiMzA2MmQwZGQxMjczMTcwYzRlNzUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCAyIDA0OjQ5OjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jCmluZGV4IGJmYjFiZjNmZDQyN2IuLjg0OWYzMzI1OWMwMDMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMKQEAgLTIsMjkgJiM0MzsyLDQ1IEBACiAvKiBDb3B5cmlnaHQgKGMpIDIwMjIgQnl0ZWRhbmNlICovCiAKICNpbmNsdWRlICZsdDt0ZXN0X3Byb2dzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDticGYvbGliYnBmX2ludGVybmFsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uc2tlbC5oJiMzNDsKIAogdm9pZCB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0odm9pZCkKIHsKIAlzdHJ1Y3QgdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtICpza2VsOwotCV9fdTY0IGtleSA9IDAsIHN1bTsKLQlpbnQgcmV0LCBpLCBucl9jcHVzID0gbGliYnBmX251bV9wb3NzaWJsZV9jcHVzKCk7CiYjNDM7CWJvb2wgKnBvc3NpYmxlID0gTlVMTDsKJiM0MzsJX191NjQga2V5ID0gMCwgc3VtID0gMDsKJiM0MzsJaW50IGNwdSwgbnJfY3B1X2lkcywgbnJfY3B1cywgcmV0LCBzbG90ID0gMDsKIAlfX3U2NCAqYnVmOwogCi0JYnVmID0gbWFsbG9jKG5yX2NwdXMqc2l6ZW9mKF9fdTY0KSk7Ci0JaWYgKCFBU1NFUlRfT0tfUFRSKGJ1ZiwgJiMzNDttYWxsb2MmIzM0OykpCiYjNDM7CXJldCA9IHBhcnNlX2NwdV9tYXNrX2ZpbGUoJiMzNDsvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9wb3NzaWJsZSYjMzQ7LCAmYW1wO3Bvc3NpYmxlLAomIzQzOwkJCQkgICZhbXA7bnJfY3B1X2lkcyk7CiYjNDM7CWlmICghQVNTRVJUX09LKHJldCwgJiMzNDtwYXJzZSBwb3NzaWJsZSBDUFUgbWFzayYjMzQ7KSkKIAkJcmV0dXJuOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IG5yX2NwdXM7IGkmIzQzOyYjNDM7KQotCQlidWZbaV0gPSBpOwotCXN1bSA9IChucl9jcHVzIC0gMSkgKiBucl9jcHVzIC8gMjsKJiM0MzsJbnJfY3B1cyA9IGxpYmJwZl9udW1fcG9zc2libGVfY3B1cygpOwomIzQzOwlpZiAoIUFTU0VSVF9HVChucl9jcHVzLCAwLCAmIzM0O2xpYmJwZl9udW1fcG9zc2libGVfY3B1cyYjMzQ7KSkKJiM0MzsJCWdvdG8gZnJlZV9tYXNrOwomIzQzOwomIzQzOwlidWYgPSBtYWxsb2MobnJfY3B1cyAqIHNpemVvZigqYnVmKSk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihidWYsICYjMzQ7bWFsbG9jJiMzNDspKQomIzQzOwkJZ290byBmcmVlX21hc2s7CiYjNDM7CiYjNDM7CWZvciAoY3B1ID0gMDsgY3B1ICZsdDsgbnJfY3B1X2lkczsgY3B1JiM0MzsmIzQzOykgewomIzQzOwkJaWYgKCFwb3NzaWJsZVtjcHVdKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJYnVmW3Nsb3QmIzQzOyYjNDM7XSA9IGNwdTsKJiM0MzsJCXN1bSAmIzQzOz0gY3B1OwomIzQzOwl9CiYjNDM7CWlmICghQVNTRVJUX0VRKHNsb3QsIG5yX2NwdXMsICYjMzQ7cG9zc2libGUgQ1BVIG1hc2sgd2VpZ2h0JiMzNDspKQomIzQzOwkJZ290byBleGl0OwogCiAJc2tlbCA9IHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9fb3BlbigpOwogCWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O3Rlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9fb3BlbiYjMzQ7KSkKIAkJZ290byBleGl0OwogCiAJc2tlbC0mZ3Q7cm9kYXRhLSZndDtteV9waWQgPSBnZXRwaWQoKTsKLQlza2VsLSZndDtyb2RhdGEtJmd0O25yX2NwdXMgPSBucl9jcHVzOwomIzQzOwlza2VsLSZndDtyb2RhdGEtJmd0O25yX2NwdV9pZHMgPSBucl9jcHVfaWRzOwogCiAJcmV0ID0gdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19sb2FkKHNrZWwpOwogCWlmICghQVNTRVJUX09LKHJldCwgJiMzNDt0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2xvYWQmIzM0OykpCkBAIC01NSw0ICYjNDM7NzEsNiBAQCB2b2lkIHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSh2b2lkKQogCXRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9fZGVzdHJveShza2VsKTsKIGV4aXQ6CiAJZnJlZShidWYpOwomIzQzO2ZyZWVfbWFzazoKJiM0MzsJZnJlZShwb3NzaWJsZSk7CiB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMKaW5kZXggY2E4MjdiMTA5MmRhYS4uZDhkYTA2OTZiOTdjZiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYwpAQCAtNyw3ICYjNDM7Nyw3IEBACiBfX3U2NCBwZXJjcHVfYXJyYXlfZWxlbV9zdW0gPSAwOwogX191NjQgcGVyY3B1X2hhc2hfZWxlbV9zdW0gPSAwOwogX191NjQgcGVyY3B1X2xydV9oYXNoX2VsZW1fc3VtID0gMDsKLWNvbnN0IHZvbGF0aWxlIGludCBucl9jcHVzOwomIzQzO2NvbnN0IHZvbGF0aWxlIGludCBucl9jcHVfaWRzOwogY29uc3Qgdm9sYXRpbGUgaW50IG15X3BpZDsKIAogc3RydWN0IHsKQEAgLTU3LDE3ICYjNDM7NTcsMTcgQEAgaW50IHN5c2VudGVyX2dldHVpZChjb25zdCB2b2lkICpjdHgpCiAKIAltYXBfY3R4Lm1hcCA9ICZhbXA7cGVyY3B1X2FycmF5X21hcDsKIAltYXBfY3R4LnN1bSA9IDA7Ci0JYnBmX2xvb3AobnJfY3B1cywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgJmFtcDttYXBfY3R4LCAwKTsKJiM0MzsJYnBmX2xvb3AobnJfY3B1X2lkcywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgJmFtcDttYXBfY3R4LCAwKTsKIAlwZXJjcHVfYXJyYXlfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTsKIAogCW1hcF9jdHgubWFwID0gJmFtcDtwZXJjcHVfaGFzaF9tYXA7CiAJbWFwX2N0eC5zdW0gPSAwOwotCWJwZl9sb29wKG5yX2NwdXMsIHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2ssICZhbXA7bWFwX2N0eCwgMCk7CiYjNDM7CWJwZl9sb29wKG5yX2NwdV9pZHMsIHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2ssICZhbXA7bWFwX2N0eCwgMCk7CiAJcGVyY3B1X2hhc2hfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTsKIAogCW1hcF9jdHgubWFwID0gJmFtcDtwZXJjcHVfbHJ1X2hhc2hfbWFwOwogCW1hcF9jdHguc3VtID0gMDsKLQlicGZfbG9vcChucl9jcHVzLCByZWFkX3BlcmNwdV9lbGVtX2NhbGxiYWNrLCAmYW1wO21hcF9jdHgsIDApOwomIzQzOwlicGZfbG9vcChucl9jcHVfaWRzLCByZWFkX3BlcmNwdV9lbGVtX2NhbGxiYWNrLCAmYW1wO21hcF9jdHgsIDApOwogCXBlcmNwdV9scnVfaGFzaF9lbGVtX3N1bSA9IG1hcF9jdHguc3VtOwogCiAJcmV0dXJuIDA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTcKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSSYjMzk7dmUgZ290IHR3byBmaWxlcywgYm90aCB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gOiBgbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jYCBhbmQgYHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jYC4gRXNzZW50aWFsbHksIHRoZXNlIGFyZSB1c2Vyc3BhY2Ugc2VsZnRlc3RzIGZvciBCUEYsIGxvY2F0ZWQgaW4gdGhlIHVzdWFsIHBsYWNlIGZvciB0aGVzZSB0aGluZ3MuIFRoZSBrZXkgaXMsIEkmIzM5O20gbm90IHNlZWluZyAqYW55KiBtb2RpZmljYXRpb25zIHRvIHRoZSBrZXJuZWwgc291cmNlIGl0c2VsZiDigJMgbm8gY29yZSBsb2dpYywgbm8gZHJpdmVyIGNoYW5nZXMsIG5vdGhpbmcgdGhhdCB3b3VsZCBpbXBhY3QgdGhlIGtlcm5lbCBydW50aW1lIGRpcmVjdGx5LgoKTm93LCBsZXQmIzM5O3MgZ28gb3ZlciB0aGUgcnVsZXMgaGVyZS4gTXkgdW5kZXJzdGFuZGluZyBpcywgd2Ugc2hvdWxkbiYjMzk7dCB0cmlnZ2VyIGZ1enppbmcgaWYgdGhlIHBhdGNoICpvbmx5KiBjb250YWlucyBjaGFuZ2VzIHRvIGRvY3VtZW50YXRpb24sIEtjb25maWcgZmlsZXMsIG9yIGNvbW1lbnRzLiBJbiB0aGlzIGNhc2UsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9gIGFyZSBub3QgcGFydCBvZiB0aGUga2VybmVsIHJ1bnRpbWUuIFRoZXkgYXJlIHB1cmVseSB1c2Vyc3BhY2UgdGVzdHMuIFNlbGZ0ZXN0cyBhcmUgaW5kZXBlbmRlbnQgYW5kIGRvbiYjMzk7dCBtb2RpZnkga2VybmVsIGJlaGF2aW9yLiBUaGlzIG1lYW5zIHRoZSBwcm9wb3NlZCBjaGFuZ2VzIHdvbiYjMzk7dCBiZSByZWFjaGFibGUgdGhyb3VnaCBzeXprYWxsZXIuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGNvbW1pdCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5IGNoYW5nZXMgZWxzZXdoZXJlLCBidXQgYmFzZWQgb24gd2hhdCBJJiMzOTt2ZSBzZWVuIHNvIGZhciwgdGhpcyBsb29rcyBsaWtlIGEgY2xlYXIgY2FzZSBvZiAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA0OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hcF9sb29rdXBfcGVyY3B1X2VsZW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9icGYvbWFwX2FycmF5LnJzdD03Mz1DUFUuXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfYXJyYXkucnN0LTc0LVxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2FycmF5LnJzdDo3NTpicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSgpXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfYXJyYXkucnN0LTc2LX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5cbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfYXJyYXkucnN0LTc5LVxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2FycmF5LnJzdDo4MDogICB2b2lkICpicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB2b2lkICprZXksIHUzMiBjcHUpXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfYXJyYXkucnN0LTgxLVxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2FycmF5LnJzdDo4MjpUaGUgYGBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSgpYGAgaGVscGVyIGNhbiBiZSB1c2VkIHRvIGxvb2t1cCB0aGUgYXJyYXlcbkRvY3VtZW50YXRpb24vYnBmL21hcF9hcnJheS5yc3QtODMtdmFsdWUgZm9yIGEgc3BlY2lmaWMgQ1BVLiBSZXR1cm5zIHZhbHVlIG9uIHN1Y2Nlc3MgLCBvciBgYE5VTExgYCBpZiBubyBlbnRyeSB3YXNcbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfaGFzaC5yc3Q9OTY9YXV0b21hdGljYWxseSBhY2Nlc3MgdGhlIGhhc2ggc2xvdCBmb3IgdGhlIGN1cnJlbnQgQ1BVLlxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2hhc2gucnN0LTk3LVxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2hhc2gucnN0Ojk4OmJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKClcbkRvY3VtZW50YXRpb24vYnBmL21hcF9oYXNoLnJzdC05OS1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG4tLVxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2hhc2gucnN0LTEwMi1cbkRvY3VtZW50YXRpb24vYnBmL21hcF9oYXNoLnJzdDoxMDM6ICAgdm9pZCAqYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3Qgdm9pZCAqa2V5LCB1MzIgY3B1KVxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2hhc2gucnN0LTEwNC1cbkRvY3VtZW50YXRpb24vYnBmL21hcF9oYXNoLnJzdDoxMDU6VGhlIGBgYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oKWBgIGhlbHBlciBjYW4gYmUgdXNlZCB0byBsb29rdXAgdGhlXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfaGFzaC5yc3QtMTA2LXZhbHVlIGluIHRoZSBoYXNoIHNsb3QgZm9yIGEgc3BlY2lmaWMgQ1BVLiBSZXR1cm5zIHZhbHVlIGFzc29jaWF0ZWQgd2l0aFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9ODc9c3RydWN0IGJwZl9tYXBfb3BzIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTExNS1cdGxvbmcgKCptYXBfcGVla19lbGVtKShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICp2YWx1ZSk7XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjExNjpcdHZvaWQgKigqbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSkoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB1MzIgY3B1KTtcbmluY2x1ZGUvbGludXgvYnBmLmgtMTE3LVx0aW50ICgqbWFwX2dldF9oYXNoKShzdHJ1Y3QgYnBmX21hcCAqbWFwKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTM4Nzg9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX3BlZWtfZWxlbV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3OTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaC0zODgwLVxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xNTI3PXVuaW9uIGJwZl9hdHRyIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNTczOC0gKlxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjU3Mzk6ICogdm9pZCAqYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3Qgdm9pZCAqa2V5LCB1MzIgY3B1KVxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTU3NDAtICogXHREZXNjcmlwdGlvblxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC02MTk3LVx0Rk4oa3B0cl94Y2hnLCAxOTQsICMjY3R4KVx0XHRcdFxcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6NjE5ODpcdEZOKG1hcF9sb29rdXBfcGVyY3B1X2VsZW0sIDE5NSwgIyNjdHgpXHRcdFxcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNjE5OS1cdEZOKHNrY190b19tcHRjcF9zb2NrLCAxOTYsICMjY3R4KVx0XHRcXFxuLS1cbmtlcm5lbC9icGYvYXJyYXltYXAuYz0yOTQ9c3RhdGljIGludCBwZXJjcHVfYXJyYXlfbWFwX2dlbl9sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1Zilcbi0tXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtMzI0LVxua2VybmVsL2JwZi9hcnJheW1hcC5jOjMyNTpzdGF0aWMgdm9pZCAqcGVyY3B1X2FycmF5X21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB1MzIgY3B1KVxua2VybmVsL2JwZi9hcnJheW1hcC5jLTMyNi17XG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jPTg4NT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcGVyY3B1X2FycmF5X21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jLTg5Ni1cdC5tYXBfZGVsZXRlX2VsZW0gPSBhcnJheV9tYXBfZGVsZXRlX2VsZW0sXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM6ODk3Olx0Lm1hcF9sb29rdXBfcGVyY3B1X2VsZW0gPSBwZXJjcHVfYXJyYXlfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy04OTgtXHQubWFwX3NlcV9zaG93X2VsZW0gPSBwZXJjcHVfYXJyYXlfbWFwX3NlcV9zaG93X2VsZW0sXG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MzE1Mj1jb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF9wZWVrX2VsZW1fcHJvdG8gX193ZWFrO1xua2VybmVsL2JwZi9jb3JlLmM6MzE1Mzpjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW1fcHJvdG8gX193ZWFrO1xua2VybmVsL2JwZi9jb3JlLmMtMzE1NC1jb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NwaW5fbG9ja19wcm90byBfX3dlYWs7XG4tLVxua2VybmVsL2JwZi9maXh1cHMuYz0xNTA4PWludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNTUtXHRcdCAgICAgaW5zbi1cdTAwM2VpbW0gPT0gQlBGX0ZVTkNfZm9yX2VhY2hfbWFwX2VsZW0gfHxcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA1NjpcdFx0ICAgICBpbnNuLVx1MDAzZWltbSA9PSBCUEZfRlVOQ19tYXBfbG9va3VwX3BlcmNwdV9lbGVtKSkge1xua2VybmVsL2JwZi9maXh1cHMuYy0yMDU3LVx0XHRcdGF1eCA9IFx1MDAyNmVudi1cdTAwM2VpbnNuX2F1eF9kYXRhW2kgJiM0MzsgZGVsdGFdO1xuLS1cbmtlcm5lbC9icGYvZml4dXBzLmMtMjEwNy1cdFx0XHRcdFx0ICAgICAgdTY0IGZsYWdzKSlOVUxMKSk7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIxMDg6XHRcdFx0QlVJTERfQlVHX09OKCFfX3NhbWVfdHlwZShvcHMtXHUwMDNlbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSxcbmtlcm5lbC9icGYvZml4dXBzLmMtMjEwOS1cdFx0XHRcdCAgICAgKHZvaWQgKigqKShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXksIHUzMiBjcHUpKU5VTEwpKTtcbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIxMzYtXHRcdFx0XHRnb3RvIG5leHRfaW5zbjtcbmtlcm5lbC9icGYvZml4dXBzLmM6MjEzNzpcdFx0XHRjYXNlIEJQRl9GVU5DX21hcF9sb29rdXBfcGVyY3B1X2VsZW06XG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIxMzg6XHRcdFx0XHRpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShvcHMtXHUwMDNlbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSk7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIxMzktXHRcdFx0XHRnb3RvIG5leHRfaW5zbjtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNDE0PXN0YXRpYyBpbnQgaHRhYl9wZXJjcHVfbWFwX2dlbl9sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1Zilcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNDMyLVxua2VybmVsL2JwZi9oYXNodGFiLmM6MjQzMzpzdGF0aWMgdm9pZCAqaHRhYl9wZXJjcHVfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXksIHUzMiBjcHUpXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNDM0LXtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNDQ3PXN0YXRpYyB2b2lkICpodGFiX2xydV9wZXJjcHVfbWFwX2xvb2t1cF9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSlcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNDU4LVxua2VybmVsL2JwZi9oYXNodGFiLmM6MjQ1OTpzdGF0aWMgdm9pZCAqaHRhYl9scnVfcGVyY3B1X21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB1MzIgY3B1KVxua2VybmVsL2JwZi9oYXNodGFiLmMtMjQ2MC17XG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmM9MjU2MD1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9wZXJjcHVfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNTcwLVx0Lm1hcF9kZWxldGVfZWxlbSA9IGh0YWJfbWFwX2RlbGV0ZV9lbGVtLFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjU3MTpcdC5tYXBfbG9va3VwX3BlcmNwdV9lbGVtID0gaHRhYl9wZXJjcHVfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI1NzItXHQubWFwX3NlcV9zaG93X2VsZW0gPSBodGFiX3BlcmNwdV9tYXBfc2VxX3Nob3dfZWxlbSxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNTgyPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBodGFiX2xydV9wZXJjcHVfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNTkxLVx0Lm1hcF9kZWxldGVfZWxlbSA9IGh0YWJfbHJ1X21hcF9kZWxldGVfZWxlbSxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI1OTI6XHQubWFwX2xvb2t1cF9wZXJjcHVfZWxlbSA9IGh0YWJfbHJ1X3BlcmNwdV9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5My1cdC5tYXBfc2VxX3Nob3dfZWxlbSA9IGh0YWJfcGVyY3B1X21hcF9zZXFfc2hvd19lbGVtLFxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTEyNT1jb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF9wZWVrX2VsZW1fcHJvdG8gPSB7XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTMyLVxua2VybmVsL2JwZi9oZWxwZXJzLmM6MTMzOkJQRl9DQUxMXzMoYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0sIHN0cnVjdCBicGZfbWFwICosIG1hcCwgdm9pZCAqLCBrZXksIHUzMiwgY3B1KVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTM0LXtcbmtlcm5lbC9icGYvaGVscGVycy5jLTEzNS1cdFdBUk5fT05fT05DRSghYnBmX3JjdV9sb2NrX2hlbGQoKSk7XG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoxMzY6XHRyZXR1cm4gKHVuc2lnbmVkIGxvbmcpIG1hcC1cdTAwM2VvcHMtXHUwMDNlbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShtYXAsIGtleSwgY3B1KTtcbmtlcm5lbC9icGYvaGVscGVycy5jLTEzNy19XG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0xMzgtXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoxMzk6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX3Byb3RvID0ge1xua2VybmVsL2JwZi9oZWxwZXJzLmM6MTQwOlx0LmZ1bmNcdFx0PSBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSxcbmtlcm5lbC9icGYvaGVscGVycy5jLTE0MS1cdC5ncGxfb25seVx0PSBmYWxzZSxcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz0yMDY3PWJwZl9iYXNlX2Z1bmNfcHJvdG8oZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjA4MS1cdFx0cmV0dXJuIFx1MDAyNmJwZl9tYXBfcGVla19lbGVtX3Byb3RvO1xua2VybmVsL2JwZi9oZWxwZXJzLmM6MjA4MjpcdGNhc2UgQlBGX0ZVTkNfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbTpcbmtlcm5lbC9icGYvaGVscGVycy5jOjIwODM6XHRcdHJldHVybiBcdTAwMjZicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9wcm90bztcbmtlcm5lbC9icGYvaGVscGVycy5jLTIwODQtXHRjYXNlIEJQRl9GVU5DX2dldF9wcmFuZG9tX3UzMjpcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9OTAyND1zdGF0aWMgaW50IGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTIzOS1cdFx0YnJlYWs7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTI0MDpcdGNhc2UgQlBGX0ZVTkNfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbTpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjQxLVx0XHRpZiAobWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9QRVJDUFVfQVJSQVkgXHUwMDI2XHUwMDI2XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwNTIxPXJlY29yZF9mdW5jX21hcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNTM1LVx0ICAgIGZ1bmNfaWQgIT0gQlBGX0ZVTkNfcmVkaXJlY3RfbWFwIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwNTM2Olx0ICAgIGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDUzNy1cdFx0cmV0dXJuIDA7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTE1Mjc9dW5pb24gYnBmX2F0dHIge1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC01NzM4LSAqXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6NTczOTogKiB2b2lkICpicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB2b2lkICprZXksIHUzMiBjcHUpXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNTc0MC0gKiBcdERlc2NyaXB0aW9uXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTYxOTctXHRGTihrcHRyX3hjaGcsIDE5NCwgIyNjdHgpXHRcdFx0XFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDo2MTk4Olx0Rk4obWFwX2xvb2t1cF9wZXJjcHVfZWxlbSwgMTk1LCAjI2N0eClcdFx0XFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC02MTk5LVx0Rk4oc2tjX3RvX21wdGNwX3NvY2ssIDE5NiwgIyNjdHgpXHRcdFxcXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTUtI2luY2x1ZGUgXCYjMzQ7YnBmL2xpYmJwZl9pbnRlcm5hbC5oXCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmM6NjojaW5jbHVkZSBcJiMzNDt0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uc2tlbC5oXCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNy1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo4OnZvaWQgdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKHZvaWQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtOS17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmM6MTA6XHRzdHJ1Y3QgdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtICpza2VsO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTExLVx0Ym9vbCAqcG9zc2libGUgPSBOVUxMO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYy0zNy1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzozODpcdHNrZWwgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW4oKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzozOTpcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDt0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW5cJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTQwLVx0XHRnb3RvIGV4aXQ7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTQ0LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jOjQ1Olx0cmV0ID0gdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19sb2FkKHNrZWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jOjQ2Olx0aWYgKCFBU1NFUlRfT0socmV0LCBcJiMzNDt0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2xvYWRcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTQ3LVx0XHRnb3RvIGNsZWFudXA7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNDgtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmM6NDk6XHRyZXQgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2F0dGFjaChza2VsKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo1MDpcdGlmICghQVNTRVJUX09LKHJldCwgXCYjMzQ7dGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19hdHRhY2hcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTUxLVx0XHRnb3RvIGNsZWFudXA7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTYzLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jOjY0Olx0dGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19kZXRhY2goc2tlbCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNjUtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTcwLWNsZWFudXA6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmM6NzE6XHR0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2Rlc3Ryb3koc2tlbCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNzItZXhpdDpcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY2dyb3VwX2hpZXJhcmNoaWNhbF9zdGF0cy5jPTg0PWludCBCUEZfUFJPRyhmbHVzaGVyLCBzdHJ1Y3QgY2dyb3VwICpjZ3JwLCBzdHJ1Y3QgY2dyb3VwICpwYXJlbnQsIGludCBjcHUpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2Nncm91cF9oaWVyYXJjaGljYWxfc3RhdHMuYy05My1cdC8qIEFkZCBDUFUgY2hhbmdlcyBvbiB0aGlzIGxldmVsIHNpbmNlIHRoZSBsYXN0IGZsdXNoICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY2dyb3VwX2hpZXJhcmNoaWNhbF9zdGF0cy5jOjk0Olx0cGNwdV9jb3VudGVyID0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oXHUwMDI2cGVyY3B1X2F0dGFjaF9jb3VudGVycyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jZ3JvdXBfaGllcmFyY2hpY2FsX3N0YXRzLmMtOTUtXHRcdFx0XHRcdFx0ICBcdTAwMjZjZ19pZCwgY3B1KTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWFwX2twdHIuYz0zNzI9aW50IHRlc3RfbWFwX2twdHJfcmVmX3Bvc3Qoc3RydWN0IG1hcF92YWx1ZSAqdilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWFwX2twdHIuYy00MDctI2RlZmluZSBURVNUX1BDUFUobWFwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWFwX2twdHIuYzo0MDg6XHR2ID0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oXHUwMDI2bWFwLCBcdTAwMjZrZXksIDApOyBcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21hcF9rcHRyLmMtNDA5LVx0aWYgKCF2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0ci5jPTQxNj1pbnQgdGVzdF9tYXBfa3B0cl9yZWYxKHN0cnVjdCBfX3NrX2J1ZmYgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWFwX2twdHIuYy00NTMtI2RlZmluZSBURVNUX1BDUFUobWFwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWFwX2twdHIuYzo0NTQ6XHR2ID0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oXHUwMDI2bWFwLCBcdTAwMjZrZXksIDApOyBcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21hcF9rcHRyLmMtNDU1LVx0aWYgKCF2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0cl9yYWNlLmM9ODk9aW50IHRlc3RfcGVyY3B1X2h0YWJfbGVhayhzdHJ1Y3QgX19za19idWZmICpza2IpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21hcF9rcHRyX3JhY2UuYy05OS1cdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBucl9jcHVzOyBpJiM0MzsmIzQzOykge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21hcF9rcHRyX3JhY2UuYzoxMDA6XHRcdHYgPSBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShcdTAwMjZyYWNlX3BlcmNwdV9oYXNoX21hcCwgXHUwMDI2a2V5LCBpKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0cl9yYWNlLmMtMTAxLVx0XHRpZiAoIXYpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTEwMzQ9aW50IHBlcmNwdV9oYXNoX3JlZmNvdW50X2xlYWsodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDM4LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjEwMzk6XHR2ID0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oXHUwMDI2cGVyY3B1X2hhc2gsIFx1MDAyNmtleSwgMCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTA0MC1cdGlmICghdilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9MTA0Nz1pbnQgY2xlYXJfcGVyY3B1X2hhc2hfa3B0cih2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTEwNTItXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6MTA1MzpcdHYgPSBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShcdTAwMjZwZXJjcHVfaGFzaCwgXHUwMDI2a2V5LCAwKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDU0LVx0aWYgKCF2KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYz0zOT1zdGF0aWMgaW50IHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2soX191MzIgaW5kZXgsIHN0cnVjdCByZWFkX3BlcmNwdV9lbGVtX2N0eCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYy00My1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo0NDpcdHZhbHVlID0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oY3R4LVx1MDAzZW1hcCwgXHUwMDI2a2V5LCBpbmRleCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNDUtXHRpZiAodmFsdWUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDQ6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQ3MAoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQgb2YgdGhpcyBzaXR1YXRpb246CgoqKldvcnRoRnV6emluZyBEZWNpc2lvbioqCgpBbHJpZ2h0LCBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZS4gQWZ0ZXIgYSBxdWljayBsb29rLCBpdCYjMzk7cyBjbGVhciB0aGUgY2hhbmdlcyBhcmUgKm9ubHkqIHRvdWNoaW5nIHRoZSB0ZXN0IHN1aXRlIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIFRoZXJlJiMzOTtzIGFic29sdXRlbHkgbm90aGluZyBoZXJlIHRoYXQgdG91Y2hlcyBjb3JlIGtlcm5lbCBzb3VyY2UgY29kZSwgcmlnaHQ/IFNvLCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBgV29ydGhGdXp6aW5nYCBpcyBkZXRlcm1pbmVkLCB0aGUgYW5zd2VyIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEdpdmVuIHRoYXQgdGhlcmUmIzM5O3Mgbm8gYWx0ZXJhdGlvbiB0byB0aGUga2VybmVsIGl0c2VsZiwgdGhlIGZ1enppbmcgcG90ZW50aWFsIGhlcmUgaXMgZWZmZWN0aXZlbHkgemVyby4gYFdvcnRoRnV6emluZ2AgYWJzb2x1dGVseSBoYXMgdG8gYmUgYGZhbHNlYCBpbiB0aGlzIGNhc2UuIE5vIHBvaW50IHdhc3RpbmcgY3ljbGVzIG9uIHNvbWV0aGluZyB0aGF0IHdvbiYjMzk7dCBnaXZlIHVzIGFueSB2YWx1YWJsZSBpbnNpZ2h0cyBpbnRvIGtlcm5lbCBzdGFiaWxpdHkgb3Igc2VjdXJpdHkuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBtb3ZlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA0OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwgcnVudGltZSBvciBjb3JlIHN1YnN5c3RlbXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIExpbnV4IGtlcm5lbCBydW50aW1lIG9yIGNvcmUgc3Vic3lzdGVtcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDQ6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA0OjQ5OjM4LjA0NTQ1NTkxOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5MjIxNDQ2MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIExpbnV4IGtlcm5lbCBydW50aW1lIG9yIGNvcmUgc3Vic3lzdGVtcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA0OjQ5OjM4LjA0NTQ2MTM2OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ5MDQxMTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjgwYzlhZmI0OWRkYWEyZDQyMmIzMDYyZDBkZDEyNzMxNzBjNGU3NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDA0OjQ5OjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uY1xcbmluZGV4IGJmYjFiZjNmZDQyN2IuLjg0OWYzMzI1OWMwMDMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jXFxuQEAgLTIsMjkgKzIsNDUgQEBcXG4gLyogQ29weXJpZ2h0IChjKSAyMDIyIEJ5dGVkYW5jZSAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY3Rlc3RfcHJvZ3MuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcImJwZi9saWJicGZfaW50ZXJuYWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5za2VsLmhcXFwiXFxuIFxcbiB2b2lkIHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSh2b2lkKVxcbiB7XFxuIFxcdHN0cnVjdCB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0gKnNrZWw7XFxuLVxcdF9fdTY0IGtleSA9IDAsIHN1bTtcXG4tXFx0aW50IHJldCwgaSwgbnJfY3B1cyA9IGxpYmJwZl9udW1fcG9zc2libGVfY3B1cygpO1xcbitcXHRib29sICpwb3NzaWJsZSA9IE5VTEw7XFxuK1xcdF9fdTY0IGtleSA9IDAsIHN1bSA9IDA7XFxuK1xcdGludCBjcHUsIG5yX2NwdV9pZHMsIG5yX2NwdXMsIHJldCwgc2xvdCA9IDA7XFxuIFxcdF9fdTY0ICpidWY7XFxuIFxcbi1cXHRidWYgPSBtYWxsb2MobnJfY3B1cypzaXplb2YoX191NjQpKTtcXG4tXFx0aWYgKCFBU1NFUlRfT0tfUFRSKGJ1ZiwgXFxcIm1hbGxvY1xcXCIpKVxcbitcXHRyZXQgPSBwYXJzZV9jcHVfbWFza19maWxlKFxcXCIvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9wb3NzaWJsZVxcXCIsIFxcdTAwMjZwb3NzaWJsZSxcXG4rXFx0XFx0XFx0XFx0ICBcXHUwMDI2bnJfY3B1X2lkcyk7XFxuK1xcdGlmICghQVNTRVJUX09LKHJldCwgXFxcInBhcnNlIHBvc3NpYmxlIENQVSBtYXNrXFxcIikpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9jcHVzOyBpKyspXFxuLVxcdFxcdGJ1ZltpXSA9IGk7XFxuLVxcdHN1bSA9IChucl9jcHVzIC0gMSkgKiBucl9jcHVzIC8gMjtcXG4rXFx0bnJfY3B1cyA9IGxpYmJwZl9udW1fcG9zc2libGVfY3B1cygpO1xcbitcXHRpZiAoIUFTU0VSVF9HVChucl9jcHVzLCAwLCBcXFwibGliYnBmX251bV9wb3NzaWJsZV9jcHVzXFxcIikpXFxuK1xcdFxcdGdvdG8gZnJlZV9tYXNrO1xcbitcXG4rXFx0YnVmID0gbWFsbG9jKG5yX2NwdXMgKiBzaXplb2YoKmJ1ZikpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoYnVmLCBcXFwibWFsbG9jXFxcIikpXFxuK1xcdFxcdGdvdG8gZnJlZV9tYXNrO1xcbitcXG4rXFx0Zm9yIChjcHUgPSAwOyBjcHUgXFx1MDAzYyBucl9jcHVfaWRzOyBjcHUrKykge1xcbitcXHRcXHRpZiAoIXBvc3NpYmxlW2NwdV0pXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRidWZbc2xvdCsrXSA9IGNwdTtcXG4rXFx0XFx0c3VtICs9IGNwdTtcXG4rXFx0fVxcbitcXHRpZiAoIUFTU0VSVF9FUShzbG90LCBucl9jcHVzLCBcXFwicG9zc2libGUgQ1BVIG1hc2sgd2VpZ2h0XFxcIikpXFxuK1xcdFxcdGdvdG8gZXhpdDtcXG4gXFxuIFxcdHNrZWwgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW4oKTtcXG4gXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJ0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW5cXFwiKSlcXG4gXFx0XFx0Z290byBleGl0O1xcbiBcXG4gXFx0c2tlbC1cXHUwMDNlcm9kYXRhLVxcdTAwM2VteV9waWQgPSBnZXRwaWQoKTtcXG4tXFx0c2tlbC1cXHUwMDNlcm9kYXRhLVxcdTAwM2Vucl9jcHVzID0gbnJfY3B1cztcXG4rXFx0c2tlbC1cXHUwMDNlcm9kYXRhLVxcdTAwM2Vucl9jcHVfaWRzID0gbnJfY3B1X2lkcztcXG4gXFxuIFxcdHJldCA9IHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9fbG9hZChza2VsKTtcXG4gXFx0aWYgKCFBU1NFUlRfT0socmV0LCBcXFwidGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19sb2FkXFxcIikpXFxuQEAgLTU1LDQgKzcxLDYgQEAgdm9pZCB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0odm9pZClcXG4gXFx0dGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19kZXN0cm95KHNrZWwpO1xcbiBleGl0OlxcbiBcXHRmcmVlKGJ1Zik7XFxuK2ZyZWVfbWFzazpcXG4rXFx0ZnJlZShwb3NzaWJsZSk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jXFxuaW5kZXggY2E4MjdiMTA5MmRhYS4uZDhkYTA2OTZiOTdjZiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmNcXG5AQCAtNyw3ICs3LDcgQEBcXG4gX191NjQgcGVyY3B1X2FycmF5X2VsZW1fc3VtID0gMDtcXG4gX191NjQgcGVyY3B1X2hhc2hfZWxlbV9zdW0gPSAwO1xcbiBfX3U2NCBwZXJjcHVfbHJ1X2hhc2hfZWxlbV9zdW0gPSAwO1xcbi1jb25zdCB2b2xhdGlsZSBpbnQgbnJfY3B1cztcXG4rY29uc3Qgdm9sYXRpbGUgaW50IG5yX2NwdV9pZHM7XFxuIGNvbnN0IHZvbGF0aWxlIGludCBteV9waWQ7XFxuIFxcbiBzdHJ1Y3Qge1xcbkBAIC01NywxNyArNTcsMTcgQEAgaW50IHN5c2VudGVyX2dldHVpZChjb25zdCB2b2lkICpjdHgpXFxuIFxcbiBcXHRtYXBfY3R4Lm1hcCA9IFxcdTAwMjZwZXJjcHVfYXJyYXlfbWFwO1xcbiBcXHRtYXBfY3R4LnN1bSA9IDA7XFxuLVxcdGJwZl9sb29wKG5yX2NwdXMsIHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2ssIFxcdTAwMjZtYXBfY3R4LCAwKTtcXG4rXFx0YnBmX2xvb3AobnJfY3B1X2lkcywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXFx1MDAyNm1hcF9jdHgsIDApO1xcbiBcXHRwZXJjcHVfYXJyYXlfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTtcXG4gXFxuIFxcdG1hcF9jdHgubWFwID0gXFx1MDAyNnBlcmNwdV9oYXNoX21hcDtcXG4gXFx0bWFwX2N0eC5zdW0gPSAwO1xcbi1cXHRicGZfbG9vcChucl9jcHVzLCByZWFkX3BlcmNwdV9lbGVtX2NhbGxiYWNrLCBcXHUwMDI2bWFwX2N0eCwgMCk7XFxuK1xcdGJwZl9sb29wKG5yX2NwdV9pZHMsIHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2ssIFxcdTAwMjZtYXBfY3R4LCAwKTtcXG4gXFx0cGVyY3B1X2hhc2hfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTtcXG4gXFxuIFxcdG1hcF9jdHgubWFwID0gXFx1MDAyNnBlcmNwdV9scnVfaGFzaF9tYXA7XFxuIFxcdG1hcF9jdHguc3VtID0gMDtcXG4tXFx0YnBmX2xvb3AobnJfY3B1cywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXFx1MDAyNm1hcF9jdHgsIDApO1xcbitcXHRicGZfbG9vcChucl9jcHVfaWRzLCByZWFkX3BlcmNwdV9lbGVtX2NhbGxiYWNrLCBcXHUwMDI2bWFwX2N0eCwgMCk7XFxuIFxcdHBlcmNwdV9scnVfaGFzaF9lbGVtX3N1bSA9IG1hcF9jdHguc3VtO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA0OjQ5OjM4LjQ5NTQzMjczNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6OTQ3MjE1MTI3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwgcnVudGltZSBvciBjb3JlIHN1YnN5c3RlbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyODBjOWFmYjQ5ZGRhYTJkNDIyYjMwNjJkMGRkMTI3MzE3MGM0ZTc1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAwNDo0OTozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uY1xuaW5kZXggYmZiMWJmM2ZkNDI3Yi4uODQ5ZjMzMjU5YzAwMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jXG5AQCAtMiwyOSArMiw0NSBAQFxuIC8qIENvcHlyaWdodCAoYykgMjAyMiBCeXRlZGFuY2UgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2N0ZXN0X3Byb2dzLmhcdTAwM2VcbisjaW5jbHVkZSBcImJwZi9saWJicGZfaW50ZXJuYWwuaFwiXG4gI2luY2x1ZGUgXCJ0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uc2tlbC5oXCJcbiBcbiB2b2lkIHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSh2b2lkKVxuIHtcbiBcdHN0cnVjdCB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0gKnNrZWw7XG4tXHRfX3U2NCBrZXkgPSAwLCBzdW07XG4tXHRpbnQgcmV0LCBpLCBucl9jcHVzID0gbGliYnBmX251bV9wb3NzaWJsZV9jcHVzKCk7XG4rXHRib29sICpwb3NzaWJsZSA9IE5VTEw7XG4rXHRfX3U2NCBrZXkgPSAwLCBzdW0gPSAwO1xuK1x0aW50IGNwdSwgbnJfY3B1X2lkcywgbnJfY3B1cywgcmV0LCBzbG90ID0gMDtcbiBcdF9fdTY0ICpidWY7XG4gXG4tXHRidWYgPSBtYWxsb2MobnJfY3B1cypzaXplb2YoX191NjQpKTtcbi1cdGlmICghQVNTRVJUX09LX1BUUihidWYsIFwibWFsbG9jXCIpKVxuK1x0cmV0ID0gcGFyc2VfY3B1X21hc2tfZmlsZShcIi9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L3Bvc3NpYmxlXCIsIFx1MDAyNnBvc3NpYmxlLFxuK1x0XHRcdFx0ICBcdTAwMjZucl9jcHVfaWRzKTtcbitcdGlmICghQVNTRVJUX09LKHJldCwgXCJwYXJzZSBwb3NzaWJsZSBDUFUgbWFza1wiKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3B1czsgaSsrKVxuLVx0XHRidWZbaV0gPSBpO1xuLVx0c3VtID0gKG5yX2NwdXMgLSAxKSAqIG5yX2NwdXMgLyAyO1xuK1x0bnJfY3B1cyA9IGxpYmJwZl9udW1fcG9zc2libGVfY3B1cygpO1xuK1x0aWYgKCFBU1NFUlRfR1QobnJfY3B1cywgMCwgXCJsaWJicGZfbnVtX3Bvc3NpYmxlX2NwdXNcIikpXG4rXHRcdGdvdG8gZnJlZV9tYXNrO1xuK1xuK1x0YnVmID0gbWFsbG9jKG5yX2NwdXMgKiBzaXplb2YoKmJ1ZikpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKGJ1ZiwgXCJtYWxsb2NcIikpXG4rXHRcdGdvdG8gZnJlZV9tYXNrO1xuK1xuK1x0Zm9yIChjcHUgPSAwOyBjcHUgXHUwMDNjIG5yX2NwdV9pZHM7IGNwdSsrKSB7XG4rXHRcdGlmICghcG9zc2libGVbY3B1XSlcbitcdFx0XHRjb250aW51ZTtcbitcdFx0YnVmW3Nsb3QrK10gPSBjcHU7XG4rXHRcdHN1bSArPSBjcHU7XG4rXHR9XG4rXHRpZiAoIUFTU0VSVF9FUShzbG90LCBucl9jcHVzLCBcInBvc3NpYmxlIENQVSBtYXNrIHdlaWdodFwiKSlcbitcdFx0Z290byBleGl0O1xuIFxuIFx0c2tlbCA9IHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9fb3BlbigpO1xuIFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwidGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19vcGVuXCIpKVxuIFx0XHRnb3RvIGV4aXQ7XG4gXG4gXHRza2VsLVx1MDAzZXJvZGF0YS1cdTAwM2VteV9waWQgPSBnZXRwaWQoKTtcbi1cdHNrZWwtXHUwMDNlcm9kYXRhLVx1MDAzZW5yX2NwdXMgPSBucl9jcHVzO1xuK1x0c2tlbC1cdTAwM2Vyb2RhdGEtXHUwMDNlbnJfY3B1X2lkcyA9IG5yX2NwdV9pZHM7XG4gXG4gXHRyZXQgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2xvYWQoc2tlbCk7XG4gXHRpZiAoIUFTU0VSVF9PSyhyZXQsIFwidGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19sb2FkXCIpKVxuQEAgLTU1LDQgKzcxLDYgQEAgdm9pZCB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0odm9pZClcbiBcdHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9fZGVzdHJveShza2VsKTtcbiBleGl0OlxuIFx0ZnJlZShidWYpO1xuK2ZyZWVfbWFzazpcbitcdGZyZWUocG9zc2libGUpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmNcbmluZGV4IGNhODI3YjEwOTJkYWEuLmQ4ZGEwNjk2Yjk3Y2YgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uY1xuQEAgLTcsNyArNyw3IEBAXG4gX191NjQgcGVyY3B1X2FycmF5X2VsZW1fc3VtID0gMDtcbiBfX3U2NCBwZXJjcHVfaGFzaF9lbGVtX3N1bSA9IDA7XG4gX191NjQgcGVyY3B1X2xydV9oYXNoX2VsZW1fc3VtID0gMDtcbi1jb25zdCB2b2xhdGlsZSBpbnQgbnJfY3B1cztcbitjb25zdCB2b2xhdGlsZSBpbnQgbnJfY3B1X2lkcztcbiBjb25zdCB2b2xhdGlsZSBpbnQgbXlfcGlkO1xuIFxuIHN0cnVjdCB7XG5AQCAtNTcsMTcgKzU3LDE3IEBAIGludCBzeXNlbnRlcl9nZXR1aWQoY29uc3Qgdm9pZCAqY3R4KVxuIFxuIFx0bWFwX2N0eC5tYXAgPSBcdTAwMjZwZXJjcHVfYXJyYXlfbWFwO1xuIFx0bWFwX2N0eC5zdW0gPSAwO1xuLVx0YnBmX2xvb3AobnJfY3B1cywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4rXHRicGZfbG9vcChucl9jcHVfaWRzLCByZWFkX3BlcmNwdV9lbGVtX2NhbGxiYWNrLCBcdTAwMjZtYXBfY3R4LCAwKTtcbiBcdHBlcmNwdV9hcnJheV9lbGVtX3N1bSA9IG1hcF9jdHguc3VtO1xuIFxuIFx0bWFwX2N0eC5tYXAgPSBcdTAwMjZwZXJjcHVfaGFzaF9tYXA7XG4gXHRtYXBfY3R4LnN1bSA9IDA7XG4tXHRicGZfbG9vcChucl9jcHVzLCByZWFkX3BlcmNwdV9lbGVtX2NhbGxiYWNrLCBcdTAwMjZtYXBfY3R4LCAwKTtcbitcdGJwZl9sb29wKG5yX2NwdV9pZHMsIHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2ssIFx1MDAyNm1hcF9jdHgsIDApO1xuIFx0cGVyY3B1X2hhc2hfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTtcbiBcbiBcdG1hcF9jdHgubWFwID0gXHUwMDI2cGVyY3B1X2xydV9oYXNoX21hcDtcbiBcdG1hcF9jdHguc3VtID0gMDtcbi1cdGJwZl9sb29wKG5yX2NwdXMsIHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2ssIFx1MDAyNm1hcF9jdHgsIDApO1xuK1x0YnBmX2xvb3AobnJfY3B1X2lkcywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4gXHRwZXJjcHVfbHJ1X2hhc2hfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTtcbiBcbiBcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDQ6NDk6MzguNDk1NDM1NzQ2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQxNTcwMzYyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEkndmUgZ290IHR3byBmaWxlcywgYm90aCB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gOiBgbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jYCBhbmQgYHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jYC4gRXNzZW50aWFsbHksIHRoZXNlIGFyZSB1c2Vyc3BhY2Ugc2VsZnRlc3RzIGZvciBCUEYsIGxvY2F0ZWQgaW4gdGhlIHVzdWFsIHBsYWNlIGZvciB0aGVzZSB0aGluZ3MuIFRoZSBrZXkgaXMsIEknbSBub3Qgc2VlaW5nICphbnkqIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGtlcm5lbCBzb3VyY2UgaXRzZWxmIOKAkyBubyBjb3JlIGxvZ2ljLCBubyBkcml2ZXIgY2hhbmdlcywgbm90aGluZyB0aGF0IHdvdWxkIGltcGFjdCB0aGUga2VybmVsIHJ1bnRpbWUgZGlyZWN0bHkuXG5cbk5vdywgbGV0J3MgZ28gb3ZlciB0aGUgcnVsZXMgaGVyZS4gTXkgdW5kZXJzdGFuZGluZyBpcywgd2Ugc2hvdWxkbid0IHRyaWdnZXIgZnV6emluZyBpZiB0aGUgcGF0Y2ggKm9ubHkqIGNvbnRhaW5zIGNoYW5nZXMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgb3IgY29tbWVudHMuIEluIHRoaXMgY2FzZSwgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2AgYXJlIG5vdCBwYXJ0IG9mIHRoZSBrZXJuZWwgcnVudGltZS4gVGhleSBhcmUgcHVyZWx5IHVzZXJzcGFjZSB0ZXN0cy4gU2VsZnRlc3RzIGFyZSBpbmRlcGVuZGVudCBhbmQgZG9uJ3QgbW9kaWZ5IGtlcm5lbCBiZWhhdmlvci4gVGhpcyBtZWFucyB0aGUgcHJvcG9zZWQgY2hhbmdlcyB3b24ndCBiZSByZWFjaGFibGUgdGhyb3VnaCBzeXprYWxsZXIuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb21taXQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgc25lYWt5IGNoYW5nZXMgZWxzZXdoZXJlLCBidXQgYmFzZWQgb24gd2hhdCBJJ3ZlIHNlZW4gc28gZmFyLCB0aGlzIGxvb2tzIGxpa2UgYSBjbGVhciBjYXNlIG9mIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MTcsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNDo0OTo0My45MTExNDE5NjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMzA3ODYxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYXBfbG9va3VwX3BlcmNwdV9lbGVtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYnBmL21hcF9hcnJheS5yc3Q9NzM9Q1BVLlxcbkRvY3VtZW50YXRpb24vYnBmL21hcF9hcnJheS5yc3QtNzQtXFxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2FycmF5LnJzdDo3NTpicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSgpXFxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2FycmF5LnJzdC03Ni1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfYXJyYXkucnN0LTc5LVxcbkRvY3VtZW50YXRpb24vYnBmL21hcF9hcnJheS5yc3Q6ODA6ICAgdm9pZCAqYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3Qgdm9pZCAqa2V5LCB1MzIgY3B1KVxcbkRvY3VtZW50YXRpb24vYnBmL21hcF9hcnJheS5yc3QtODEtXFxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2FycmF5LnJzdDo4MjpUaGUgYGBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSgpYGAgaGVscGVyIGNhbiBiZSB1c2VkIHRvIGxvb2t1cCB0aGUgYXJyYXlcXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfYXJyYXkucnN0LTgzLXZhbHVlIGZvciBhIHNwZWNpZmljIENQVS4gUmV0dXJucyB2YWx1ZSBvbiBzdWNjZXNzICwgb3IgYGBOVUxMYGAgaWYgbm8gZW50cnkgd2FzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfaGFzaC5yc3Q9OTY9YXV0b21hdGljYWxseSBhY2Nlc3MgdGhlIGhhc2ggc2xvdCBmb3IgdGhlIGN1cnJlbnQgQ1BVLlxcbkRvY3VtZW50YXRpb24vYnBmL21hcF9oYXNoLnJzdC05Ny1cXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfaGFzaC5yc3Q6OTg6YnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oKVxcbkRvY3VtZW50YXRpb24vYnBmL21hcF9oYXNoLnJzdC05OS1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfaGFzaC5yc3QtMTAyLVxcbkRvY3VtZW50YXRpb24vYnBmL21hcF9oYXNoLnJzdDoxMDM6ICAgdm9pZCAqYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3Qgdm9pZCAqa2V5LCB1MzIgY3B1KVxcbkRvY3VtZW50YXRpb24vYnBmL21hcF9oYXNoLnJzdC0xMDQtXFxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2hhc2gucnN0OjEwNTpUaGUgYGBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSgpYGAgaGVscGVyIGNhbiBiZSB1c2VkIHRvIGxvb2t1cCB0aGVcXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfaGFzaC5yc3QtMTA2LXZhbHVlIGluIHRoZSBoYXNoIHNsb3QgZm9yIGEgc3BlY2lmaWMgQ1BVLiBSZXR1cm5zIHZhbHVlIGFzc29jaWF0ZWQgd2l0aFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD04Nz1zdHJ1Y3QgYnBmX21hcF9vcHMge1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0xMTUtXFx0bG9uZyAoKm1hcF9wZWVrX2VsZW0pKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlKTtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjExNjpcXHR2b2lkICooKm1hcF9sb29rdXBfcGVyY3B1X2VsZW0pKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdTMyIGNwdSk7XFxuaW5jbHVkZS9saW51eC9icGYuaC0xMTctXFx0aW50ICgqbWFwX2dldF9oYXNoKShzdHJ1Y3QgYnBmX21hcCAqbWFwKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9Mzg3OD1leHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfcGVla19lbGVtX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3OTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMzg4MC1cXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xNTI3PXVuaW9uIGJwZl9hdHRyIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC01NzM4LSAqXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjU3Mzk6ICogdm9pZCAqYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3Qgdm9pZCAqa2V5LCB1MzIgY3B1KVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC01NzQwLSAqIFxcdERlc2NyaXB0aW9uXFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNjE5Ny1cXHRGTihrcHRyX3hjaGcsIDE5NCwgIyNjdHgpXFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDo2MTk4OlxcdEZOKG1hcF9sb29rdXBfcGVyY3B1X2VsZW0sIDE5NSwgIyNjdHgpXFx0XFx0XFxcXFxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC02MTk5LVxcdEZOKHNrY190b19tcHRjcF9zb2NrLCAxOTYsICMjY3R4KVxcdFxcdFxcXFxcXG4tLVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYz0yOTQ9c3RhdGljIGludCBwZXJjcHVfYXJyYXlfbWFwX2dlbl9sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZilcXG4tLVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy0zMjQtXFxua2VybmVsL2JwZi9hcnJheW1hcC5jOjMyNTpzdGF0aWMgdm9pZCAqcGVyY3B1X2FycmF5X21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB1MzIgY3B1KVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy0zMjYte1xcbi0tXFxua2VybmVsL2JwZi9hcnJheW1hcC5jPTg4NT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcGVyY3B1X2FycmF5X21hcF9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtODk2LVxcdC5tYXBfZGVsZXRlX2VsZW0gPSBhcnJheV9tYXBfZGVsZXRlX2VsZW0sXFxua2VybmVsL2JwZi9hcnJheW1hcC5jOjg5NzpcXHQubWFwX2xvb2t1cF9wZXJjcHVfZWxlbSA9IHBlcmNwdV9hcnJheV9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLFxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy04OTgtXFx0Lm1hcF9zZXFfc2hvd19lbGVtID0gcGVyY3B1X2FycmF5X21hcF9zZXFfc2hvd19lbGVtLFxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MzE1Mj1jb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF9wZWVrX2VsZW1fcHJvdG8gX193ZWFrO1xcbmtlcm5lbC9icGYvY29yZS5jOjMxNTM6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX3Byb3RvIF9fd2VhaztcXG5rZXJuZWwvYnBmL2NvcmUuYy0zMTU0LWNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc3Bpbl9sb2NrX3Byb3RvIF9fd2VhaztcXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmM9MTUwOD1pbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuLS1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNTUtXFx0XFx0ICAgICBpbnNuLVxcdTAwM2VpbW0gPT0gQlBGX0ZVTkNfZm9yX2VhY2hfbWFwX2VsZW0gfHxcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIwNTY6XFx0XFx0ICAgICBpbnNuLVxcdTAwM2VpbW0gPT0gQlBGX0ZVTkNfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSkpIHtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNTctXFx0XFx0XFx0YXV4ID0gXFx1MDAyNmVudi1cXHUwMDNlaW5zbl9hdXhfZGF0YVtpICsgZGVsdGFdO1xcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0yMTA3LVxcdFxcdFxcdFxcdFxcdCAgICAgIHU2NCBmbGFncykpTlVMTCkpO1xcbmtlcm5lbC9icGYvZml4dXBzLmM6MjEwODpcXHRcXHRcXHRCVUlMRF9CVUdfT04oIV9fc2FtZV90eXBlKG9wcy1cXHUwMDNlbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSxcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIxMDktXFx0XFx0XFx0XFx0ICAgICAodm9pZCAqKCopKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdTMyIGNwdSkpTlVMTCkpO1xcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0yMTM2LVxcdFxcdFxcdFxcdGdvdG8gbmV4dF9pbnNuO1xcbmtlcm5lbC9icGYvZml4dXBzLmM6MjEzNzpcXHRcXHRcXHRjYXNlIEJQRl9GVU5DX21hcF9sb29rdXBfcGVyY3B1X2VsZW06XFxua2VybmVsL2JwZi9maXh1cHMuYzoyMTM4OlxcdFxcdFxcdFxcdGluc24tXFx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShvcHMtXFx1MDAzZW1hcF9sb29rdXBfcGVyY3B1X2VsZW0pO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtMjEzOS1cXHRcXHRcXHRcXHRnb3RvIG5leHRfaW5zbjtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI0MTQ9c3RhdGljIGludCBodGFiX3BlcmNwdV9tYXBfZ2VuX2xvb2t1cChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmKVxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjQzMi1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyNDMzOnN0YXRpYyB2b2lkICpodGFiX3BlcmNwdV9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdTMyIGNwdSlcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNDM0LXtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI0NDc9c3RhdGljIHZvaWQgKmh0YWJfbHJ1X3BlcmNwdV9tYXBfbG9va3VwX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5KVxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjQ1OC1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyNDU5OnN0YXRpYyB2b2lkICpodGFiX2xydV9wZXJjcHVfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXksIHUzMiBjcHUpXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjQ2MC17XFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNTYwPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBodGFiX3BlcmNwdV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU3MC1cXHQubWFwX2RlbGV0ZV9lbGVtID0gaHRhYl9tYXBfZGVsZXRlX2VsZW0sXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjU3MTpcXHQubWFwX2xvb2t1cF9wZXJjcHVfZWxlbSA9IGh0YWJfcGVyY3B1X21hcF9sb29rdXBfcGVyY3B1X2VsZW0sXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU3Mi1cXHQubWFwX3NlcV9zaG93X2VsZW0gPSBodGFiX3BlcmNwdV9tYXBfc2VxX3Nob3dfZWxlbSxcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI1ODI9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfbHJ1X3BlcmNwdV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5MS1cXHQubWFwX2RlbGV0ZV9lbGVtID0gaHRhYl9scnVfbWFwX2RlbGV0ZV9lbGVtLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI1OTI6XFx0Lm1hcF9sb29rdXBfcGVyY3B1X2VsZW0gPSBodGFiX2xydV9wZXJjcHVfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSxcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNTkzLVxcdC5tYXBfc2VxX3Nob3dfZWxlbSA9IGh0YWJfcGVyY3B1X21hcF9zZXFfc2hvd19lbGVtLFxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9MTI1PWNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX3BlZWtfZWxlbV9wcm90byA9IHtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTEzMi1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoxMzM6QlBGX0NBTExfMyhicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSwgc3RydWN0IGJwZl9tYXAgKiwgbWFwLCB2b2lkICosIGtleSwgdTMyLCBjcHUpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTM0LXtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0xMzUtXFx0V0FSTl9PTl9PTkNFKCFicGZfcmN1X2xvY2tfaGVsZCgpKTtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoxMzY6XFx0cmV0dXJuICh1bnNpZ25lZCBsb25nKSBtYXAtXFx1MDAzZW9wcy1cXHUwMDNlbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShtYXAsIGtleSwgY3B1KTtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0xMzctfVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTEzOC1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoxMzk6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX3Byb3RvID0ge1xcbmtlcm5lbC9icGYvaGVscGVycy5jOjE0MDpcXHQuZnVuY1xcdFxcdD0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0sXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTQxLVxcdC5ncGxfb25seVxcdD0gZmFsc2UsXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz0yMDY3PWJwZl9iYXNlX2Z1bmNfcHJvdG8oZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yMDgxLVxcdFxcdHJldHVybiBcXHUwMDI2YnBmX21hcF9wZWVrX2VsZW1fcHJvdG87XFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjA4MjpcXHRjYXNlIEJQRl9GVU5DX21hcF9sb29rdXBfcGVyY3B1X2VsZW06XFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjA4MzpcXHRcXHRyZXR1cm4gXFx1MDAyNmJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX3Byb3RvO1xcbmtlcm5lbC9icGYvaGVscGVycy5jLTIwODQtXFx0Y2FzZSBCUEZfRlVOQ19nZXRfcHJhbmRvbV91MzI6XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9OTAyND1zdGF0aWMgaW50IGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjM5LVxcdFxcdGJyZWFrO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5MjQwOlxcdGNhc2UgQlBGX0ZVTkNfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbTpcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI0MS1cXHRcXHRpZiAobWFwLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfUEVSQ1BVX0FSUkFZIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTA1MjE9cmVjb3JkX2Z1bmNfbWFwKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDUzNS1cXHQgICAgZnVuY19pZCAhPSBCUEZfRlVOQ19yZWRpcmVjdF9tYXAgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA1MzY6XFx0ICAgIGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA1MzctXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg9MTUyNz11bmlvbiBicGZfYXR0ciB7XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNTczOC0gKlxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDo1NzM5OiAqIHZvaWQgKmJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIGNvbnN0IHZvaWQgKmtleSwgdTMyIGNwdSlcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNTc0MC0gKiBcXHREZXNjcmlwdGlvblxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTYxOTctXFx0Rk4oa3B0cl94Y2hnLCAxOTQsICMjY3R4KVxcdFxcdFxcdFxcXFxcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6NjE5ODpcXHRGTihtYXBfbG9va3VwX3BlcmNwdV9lbGVtLCAxOTUsICMjY3R4KVxcdFxcdFxcXFxcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNjE5OS1cXHRGTihza2NfdG9fbXB0Y3Bfc29jaywgMTk2LCAjI2N0eClcXHRcXHRcXFxcXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNS0jaW5jbHVkZSBcXFwiYnBmL2xpYmJwZl9pbnRlcm5hbC5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo2OiNpbmNsdWRlIFxcXCJ0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uc2tlbC5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYy03LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo4OnZvaWQgdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKHZvaWQpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTkte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzoxMDpcXHRzdHJ1Y3QgdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtICpza2VsO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYy0xMS1cXHRib29sICpwb3NzaWJsZSA9IE5VTEw7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtMzctXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jOjM4OlxcdHNrZWwgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW4oKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmM6Mzk6XFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJ0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW5cXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNDAtXFx0XFx0Z290byBleGl0O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTQ0LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo0NTpcXHRyZXQgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2xvYWQoc2tlbCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jOjQ2OlxcdGlmICghQVNTRVJUX09LKHJldCwgXFxcInRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9fbG9hZFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYy00Ny1cXHRcXHRnb3RvIGNsZWFudXA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTQ4LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo0OTpcXHRyZXQgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2F0dGFjaChza2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmM6NTA6XFx0aWYgKCFBU1NFUlRfT0socmV0LCBcXFwidGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19hdHRhY2hcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNTEtXFx0XFx0Z290byBjbGVhbnVwO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTYzLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo2NDpcXHR0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2RldGFjaChza2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNjUtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNzAtY2xlYW51cDpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmM6NzE6XFx0dGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19kZXN0cm95KHNrZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYy03Mi1leGl0Olxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2Nncm91cF9oaWVyYXJjaGljYWxfc3RhdHMuYz04ND1pbnQgQlBGX1BST0coZmx1c2hlciwgc3RydWN0IGNncm91cCAqY2dycCwgc3RydWN0IGNncm91cCAqcGFyZW50LCBpbnQgY3B1KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2Nncm91cF9oaWVyYXJjaGljYWxfc3RhdHMuYy05My1cXHQvKiBBZGQgQ1BVIGNoYW5nZXMgb24gdGhpcyBsZXZlbCBzaW5jZSB0aGUgbGFzdCBmbHVzaCAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jZ3JvdXBfaGllcmFyY2hpY2FsX3N0YXRzLmM6OTQ6XFx0cGNwdV9jb3VudGVyID0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oXFx1MDAyNnBlcmNwdV9hdHRhY2hfY291bnRlcnMsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2Nncm91cF9oaWVyYXJjaGljYWxfc3RhdHMuYy05NS1cXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZjZ19pZCwgY3B1KTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0ci5jPTM3Mj1pbnQgdGVzdF9tYXBfa3B0cl9yZWZfcG9zdChzdHJ1Y3QgbWFwX3ZhbHVlICp2KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21hcF9rcHRyLmMtNDA3LSNkZWZpbmUgVEVTVF9QQ1BVKG1hcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21hcF9rcHRyLmM6NDA4OlxcdHYgPSBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShcXHUwMDI2bWFwLCBcXHUwMDI2a2V5LCAwKTsgXFxcXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0ci5jLTQwOS1cXHRpZiAoIXYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0ci5jPTQxNj1pbnQgdGVzdF9tYXBfa3B0cl9yZWYxKHN0cnVjdCBfX3NrX2J1ZmYgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0ci5jLTQ1My0jZGVmaW5lIFRFU1RfUENQVShtYXApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0ci5jOjQ1NDpcXHR2ID0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oXFx1MDAyNm1hcCwgXFx1MDAyNmtleSwgMCk7IFxcXFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWFwX2twdHIuYy00NTUtXFx0aWYgKCF2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWFwX2twdHJfcmFjZS5jPTg5PWludCB0ZXN0X3BlcmNwdV9odGFiX2xlYWsoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21hcF9rcHRyX3JhY2UuYy05OS1cXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIG5yX2NwdXM7IGkrKykge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0cl9yYWNlLmM6MTAwOlxcdFxcdHYgPSBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShcXHUwMDI2cmFjZV9wZXJjcHVfaGFzaF9tYXAsIFxcdTAwMjZrZXksIGkpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0cl9yYWNlLmMtMTAxLVxcdFxcdGlmICghdilcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0xMDM0PWludCBwZXJjcHVfaGFzaF9yZWZjb3VudF9sZWFrKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDM4LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzoxMDM5OlxcdHYgPSBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShcXHUwMDI2cGVyY3B1X2hhc2gsIFxcdTAwMjZrZXksIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDQwLVxcdGlmICghdilcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0xMDQ3PWludCBjbGVhcl9wZXJjcHVfaGFzaF9rcHRyKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDUyLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzoxMDUzOlxcdHYgPSBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShcXHUwMDI2cGVyY3B1X2hhc2gsIFxcdTAwMjZrZXksIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDU0LVxcdGlmICghdilcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYz0zOT1zdGF0aWMgaW50IHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2soX191MzIgaW5kZXgsIHN0cnVjdCByZWFkX3BlcmNwdV9lbGVtX2N0eCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTQzLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo0NDpcXHR2YWx1ZSA9IGJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKGN0eC1cXHUwMDNlbWFwLCBcXHUwMDI2a2V5LCBpbmRleCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTQ1LVxcdGlmICh2YWx1ZSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDQ6NDk6NDUuNzE0MjI4MzQxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI1MzMyNzIzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhpcyBzaXR1YXRpb246XG5cbioqV29ydGhGdXp6aW5nIERlY2lzaW9uKipcblxuQWxyaWdodCwgSSd2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZS4gQWZ0ZXIgYSBxdWljayBsb29rLCBpdCdzIGNsZWFyIHRoZSBjaGFuZ2VzIGFyZSAqb25seSogdG91Y2hpbmcgdGhlIHRlc3Qgc3VpdGUgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC4gVGhlcmUncyBhYnNvbHV0ZWx5IG5vdGhpbmcgaGVyZSB0aGF0IHRvdWNoZXMgY29yZSBrZXJuZWwgc291cmNlIGNvZGUsIHJpZ2h0PyBTbywgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgYFdvcnRoRnV6emluZ2AgaXMgZGV0ZXJtaW5lZCwgdGhlIGFuc3dlciBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBHaXZlbiB0aGF0IHRoZXJlJ3Mgbm8gYWx0ZXJhdGlvbiB0byB0aGUga2VybmVsIGl0c2VsZiwgdGhlIGZ1enppbmcgcG90ZW50aWFsIGhlcmUgaXMgZWZmZWN0aXZlbHkgemVyby4gYFdvcnRoRnV6emluZ2AgYWJzb2x1dGVseSBoYXMgdG8gYmUgYGZhbHNlYCBpbiB0aGlzIGNhc2UuIE5vIHBvaW50IHdhc3RpbmcgY3ljbGVzIG9uIHNvbWV0aGluZyB0aGF0IHdvbid0IGdpdmUgdXMgYW55IHZhbHVhYmxlIGluc2lnaHRzIGludG8ga2VybmVsIHN0YWJpbGl0eSBvciBzZWN1cml0eS4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AgYW5kIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NzAsIk91dHB1dFRva2VucyI6NjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNDo0OTo0Ny45Njc1NTg4MjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgTGludXgga2VybmVsIHJ1bnRpbWUgb3IgY29yZSBzdWJzeXN0ZW1zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwgcnVudGltZSBvciBjb3JlIHN1YnN5c3RlbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNDo0OTo0Ny45Njc1ODY0OTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzwr8t[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 04:27:38 +0000 UTC FinishedAt: 2026-09-02 04:49:49 +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+CgkJCTx0ZD4yMDI2LzA5LzAyIDA0OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwgcnVudGltZSBvciBjb3JlIHN1YnN5c3RlbXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA0OjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjgwYzlhZmI0OWRkYWEyZDQyMmIzMDYyZDBkZDEyNzMxNzBjNGU3NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMDQ6NDk6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jXG5pbmRleCBiZmIxYmYzZmQ0MjdiLi44NDlmMzMyNTljMDAzIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmNcbkBAIC0yLDI5ICYjNDM7Miw0NSBAQFxuIC8qIENvcHlyaWdodCAoYykgMjAyMiBCeXRlZGFuY2UgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2N0ZXN0X3Byb2dzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7YnBmL2xpYmJwZl9pbnRlcm5hbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7dGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLnNrZWwuaFwmIzM0O1xuIFxuIHZvaWQgdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKHZvaWQpXG4ge1xuIFx0c3RydWN0IHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSAqc2tlbDtcbi1cdF9fdTY0IGtleSA9IDAsIHN1bTtcbi1cdGludCByZXQsIGksIG5yX2NwdXMgPSBsaWJicGZfbnVtX3Bvc3NpYmxlX2NwdXMoKTtcbiYjNDM7XHRib29sICpwb3NzaWJsZSA9IE5VTEw7XG4mIzQzO1x0X191NjQga2V5ID0gMCwgc3VtID0gMDtcbiYjNDM7XHRpbnQgY3B1LCBucl9jcHVfaWRzLCBucl9jcHVzLCByZXQsIHNsb3QgPSAwO1xuIFx0X191NjQgKmJ1ZjtcbiBcbi1cdGJ1ZiA9IG1hbGxvYyhucl9jcHVzKnNpemVvZihfX3U2NCkpO1xuLVx0aWYgKCFBU1NFUlRfT0tfUFRSKGJ1ZiwgXCYjMzQ7bWFsbG9jXCYjMzQ7KSlcbiYjNDM7XHRyZXQgPSBwYXJzZV9jcHVfbWFza19maWxlKFwmIzM0Oy9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L3Bvc3NpYmxlXCYjMzQ7LCBcdTAwMjZwb3NzaWJsZSxcbiYjNDM7XHRcdFx0XHQgIFx1MDAyNm5yX2NwdV9pZHMpO1xuJiM0MztcdGlmICghQVNTRVJUX09LKHJldCwgXCYjMzQ7cGFyc2UgcG9zc2libGUgQ1BVIG1hc2tcJiMzNDspKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9jcHVzOyBpJiM0MzsmIzQzOylcbi1cdFx0YnVmW2ldID0gaTtcbi1cdHN1bSA9IChucl9jcHVzIC0gMSkgKiBucl9jcHVzIC8gMjtcbiYjNDM7XHRucl9jcHVzID0gbGliYnBmX251bV9wb3NzaWJsZV9jcHVzKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfR1QobnJfY3B1cywgMCwgXCYjMzQ7bGliYnBmX251bV9wb3NzaWJsZV9jcHVzXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZnJlZV9tYXNrO1xuJiM0MztcbiYjNDM7XHRidWYgPSBtYWxsb2MobnJfY3B1cyAqIHNpemVvZigqYnVmKSk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKGJ1ZiwgXCYjMzQ7bWFsbG9jXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZnJlZV9tYXNrO1xuJiM0MztcbiYjNDM7XHRmb3IgKGNwdSA9IDA7IGNwdSBcdTAwM2MgbnJfY3B1X2lkczsgY3B1JiM0MzsmIzQzOykge1xuJiM0MztcdFx0aWYgKCFwb3NzaWJsZVtjcHVdKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdGJ1ZltzbG90JiM0MzsmIzQzO10gPSBjcHU7XG4mIzQzO1x0XHRzdW0gJiM0Mzs9IGNwdTtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKCFBU1NFUlRfRVEoc2xvdCwgbnJfY3B1cywgXCYjMzQ7cG9zc2libGUgQ1BVIG1hc2sgd2VpZ2h0XCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZXhpdDtcbiBcbiBcdHNrZWwgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW4oKTtcbiBcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDt0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW5cJiMzNDspKVxuIFx0XHRnb3RvIGV4aXQ7XG4gXG4gXHRza2VsLVx1MDAzZXJvZGF0YS1cdTAwM2VteV9waWQgPSBnZXRwaWQoKTtcbi1cdHNrZWwtXHUwMDNlcm9kYXRhLVx1MDAzZW5yX2NwdXMgPSBucl9jcHVzO1xuJiM0MztcdHNrZWwtXHUwMDNlcm9kYXRhLVx1MDAzZW5yX2NwdV9pZHMgPSBucl9jcHVfaWRzO1xuIFxuIFx0cmV0ID0gdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19sb2FkKHNrZWwpO1xuIFx0aWYgKCFBU1NFUlRfT0socmV0LCBcJiMzNDt0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2xvYWRcJiMzNDspKVxuQEAgLTU1LDQgJiM0Mzs3MSw2IEBAIHZvaWQgdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKHZvaWQpXG4gXHR0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2Rlc3Ryb3koc2tlbCk7XG4gZXhpdDpcbiBcdGZyZWUoYnVmKTtcbiYjNDM7ZnJlZV9tYXNrOlxuJiM0MztcdGZyZWUocG9zc2libGUpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmNcbmluZGV4IGNhODI3YjEwOTJkYWEuLmQ4ZGEwNjk2Yjk3Y2YgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uY1xuQEAgLTcsNyAmIzQzOzcsNyBAQFxuIF9fdTY0IHBlcmNwdV9hcnJheV9lbGVtX3N1bSA9IDA7XG4gX191NjQgcGVyY3B1X2hhc2hfZWxlbV9zdW0gPSAwO1xuIF9fdTY0IHBlcmNwdV9scnVfaGFzaF9lbGVtX3N1bSA9IDA7XG4tY29uc3Qgdm9sYXRpbGUgaW50IG5yX2NwdXM7XG4mIzQzO2NvbnN0IHZvbGF0aWxlIGludCBucl9jcHVfaWRzO1xuIGNvbnN0IHZvbGF0aWxlIGludCBteV9waWQ7XG4gXG4gc3RydWN0IHtcbkBAIC01NywxNyAmIzQzOzU3LDE3IEBAIGludCBzeXNlbnRlcl9nZXR1aWQoY29uc3Qgdm9pZCAqY3R4KVxuIFxuIFx0bWFwX2N0eC5tYXAgPSBcdTAwMjZwZXJjcHVfYXJyYXlfbWFwO1xuIFx0bWFwX2N0eC5zdW0gPSAwO1xuLVx0YnBmX2xvb3AobnJfY3B1cywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4mIzQzO1x0YnBmX2xvb3AobnJfY3B1X2lkcywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4gXHRwZXJjcHVfYXJyYXlfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTtcbiBcbiBcdG1hcF9jdHgubWFwID0gXHUwMDI2cGVyY3B1X2hhc2hfbWFwO1xuIFx0bWFwX2N0eC5zdW0gPSAwO1xuLVx0YnBmX2xvb3AobnJfY3B1cywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4mIzQzO1x0YnBmX2xvb3AobnJfY3B1X2lkcywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4gXHRwZXJjcHVfaGFzaF9lbGVtX3N1bSA9IG1hcF9jdHguc3VtO1xuIFxuIFx0bWFwX2N0eC5tYXAgPSBcdTAwMjZwZXJjcHVfbHJ1X2hhc2hfbWFwO1xuIFx0bWFwX2N0eC5zdW0gPSAwO1xuLVx0YnBmX2xvb3AobnJfY3B1cywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4mIzQzO1x0YnBmX2xvb3AobnJfY3B1X2lkcywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4gXHRwZXJjcHVfbHJ1X2hhc2hfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTtcbiBcbiBcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA0OjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgTGludXgga2VybmVsIHJ1bnRpbWUgb3IgY29yZSBzdWJzeXN0ZW1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI4MGM5YWZiNDlkZGFhMmQ0MjJiMzA2MmQwZGQxMjczMTcwYzRlNzUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCAyIDA0OjQ5OjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jCmluZGV4IGJmYjFiZjNmZDQyN2IuLjg0OWYzMzI1OWMwMDMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMKQEAgLTIsMjkgJiM0MzsyLDQ1IEBACiAvKiBDb3B5cmlnaHQgKGMpIDIwMjIgQnl0ZWRhbmNlICovCiAKICNpbmNsdWRlICZsdDt0ZXN0X3Byb2dzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDticGYvbGliYnBmX2ludGVybmFsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uc2tlbC5oJiMzNDsKIAogdm9pZCB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0odm9pZCkKIHsKIAlzdHJ1Y3QgdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtICpza2VsOwotCV9fdTY0IGtleSA9IDAsIHN1bTsKLQlpbnQgcmV0LCBpLCBucl9jcHVzID0gbGliYnBmX251bV9wb3NzaWJsZV9jcHVzKCk7CiYjNDM7CWJvb2wgKnBvc3NpYmxlID0gTlVMTDsKJiM0MzsJX191NjQga2V5ID0gMCwgc3VtID0gMDsKJiM0MzsJaW50IGNwdSwgbnJfY3B1X2lkcywgbnJfY3B1cywgcmV0LCBzbG90ID0gMDsKIAlfX3U2NCAqYnVmOwogCi0JYnVmID0gbWFsbG9jKG5yX2NwdXMqc2l6ZW9mKF9fdTY0KSk7Ci0JaWYgKCFBU1NFUlRfT0tfUFRSKGJ1ZiwgJiMzNDttYWxsb2MmIzM0OykpCiYjNDM7CXJldCA9IHBhcnNlX2NwdV9tYXNrX2ZpbGUoJiMzNDsvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9wb3NzaWJsZSYjMzQ7LCAmYW1wO3Bvc3NpYmxlLAomIzQzOwkJCQkgICZhbXA7bnJfY3B1X2lkcyk7CiYjNDM7CWlmICghQVNTRVJUX09LKHJldCwgJiMzNDtwYXJzZSBwb3NzaWJsZSBDUFUgbWFzayYjMzQ7KSkKIAkJcmV0dXJuOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IG5yX2NwdXM7IGkmIzQzOyYjNDM7KQotCQlidWZbaV0gPSBpOwotCXN1bSA9IChucl9jcHVzIC0gMSkgKiBucl9jcHVzIC8gMjsKJiM0MzsJbnJfY3B1cyA9IGxpYmJwZl9udW1fcG9zc2libGVfY3B1cygpOwomIzQzOwlpZiAoIUFTU0VSVF9HVChucl9jcHVzLCAwLCAmIzM0O2xpYmJwZl9udW1fcG9zc2libGVfY3B1cyYjMzQ7KSkKJiM0MzsJCWdvdG8gZnJlZV9tYXNrOwomIzQzOwomIzQzOwlidWYgPSBtYWxsb2MobnJfY3B1cyAqIHNpemVvZigqYnVmKSk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihidWYsICYjMzQ7bWFsbG9jJiMzNDspKQomIzQzOwkJZ290byBmcmVlX21hc2s7CiYjNDM7CiYjNDM7CWZvciAoY3B1ID0gMDsgY3B1ICZsdDsgbnJfY3B1X2lkczsgY3B1JiM0MzsmIzQzOykgewomIzQzOwkJaWYgKCFwb3NzaWJsZVtjcHVdKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJYnVmW3Nsb3QmIzQzOyYjNDM7XSA9IGNwdTsKJiM0MzsJCXN1bSAmIzQzOz0gY3B1OwomIzQzOwl9CiYjNDM7CWlmICghQVNTRVJUX0VRKHNsb3QsIG5yX2NwdXMsICYjMzQ7cG9zc2libGUgQ1BVIG1hc2sgd2VpZ2h0JiMzNDspKQomIzQzOwkJZ290byBleGl0OwogCiAJc2tlbCA9IHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9fb3BlbigpOwogCWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O3Rlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9fb3BlbiYjMzQ7KSkKIAkJZ290byBleGl0OwogCiAJc2tlbC0mZ3Q7cm9kYXRhLSZndDtteV9waWQgPSBnZXRwaWQoKTsKLQlza2VsLSZndDtyb2RhdGEtJmd0O25yX2NwdXMgPSBucl9jcHVzOwomIzQzOwlza2VsLSZndDtyb2RhdGEtJmd0O25yX2NwdV9pZHMgPSBucl9jcHVfaWRzOwogCiAJcmV0ID0gdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19sb2FkKHNrZWwpOwogCWlmICghQVNTRVJUX09LKHJldCwgJiMzNDt0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2xvYWQmIzM0OykpCkBAIC01NSw0ICYjNDM7NzEsNiBAQCB2b2lkIHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSh2b2lkKQogCXRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9fZGVzdHJveShza2VsKTsKIGV4aXQ6CiAJZnJlZShidWYpOwomIzQzO2ZyZWVfbWFzazoKJiM0MzsJZnJlZShwb3NzaWJsZSk7CiB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMKaW5kZXggY2E4MjdiMTA5MmRhYS4uZDhkYTA2OTZiOTdjZiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYwpAQCAtNyw3ICYjNDM7Nyw3IEBACiBfX3U2NCBwZXJjcHVfYXJyYXlfZWxlbV9zdW0gPSAwOwogX191NjQgcGVyY3B1X2hhc2hfZWxlbV9zdW0gPSAwOwogX191NjQgcGVyY3B1X2xydV9oYXNoX2VsZW1fc3VtID0gMDsKLWNvbnN0IHZvbGF0aWxlIGludCBucl9jcHVzOwomIzQzO2NvbnN0IHZvbGF0aWxlIGludCBucl9jcHVfaWRzOwogY29uc3Qgdm9sYXRpbGUgaW50IG15X3BpZDsKIAogc3RydWN0IHsKQEAgLTU3LDE3ICYjNDM7NTcsMTcgQEAgaW50IHN5c2VudGVyX2dldHVpZChjb25zdCB2b2lkICpjdHgpCiAKIAltYXBfY3R4Lm1hcCA9ICZhbXA7cGVyY3B1X2FycmF5X21hcDsKIAltYXBfY3R4LnN1bSA9IDA7Ci0JYnBmX2xvb3AobnJfY3B1cywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgJmFtcDttYXBfY3R4LCAwKTsKJiM0MzsJYnBmX2xvb3AobnJfY3B1X2lkcywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgJmFtcDttYXBfY3R4LCAwKTsKIAlwZXJjcHVfYXJyYXlfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTsKIAogCW1hcF9jdHgubWFwID0gJmFtcDtwZXJjcHVfaGFzaF9tYXA7CiAJbWFwX2N0eC5zdW0gPSAwOwotCWJwZl9sb29wKG5yX2NwdXMsIHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2ssICZhbXA7bWFwX2N0eCwgMCk7CiYjNDM7CWJwZl9sb29wKG5yX2NwdV9pZHMsIHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2ssICZhbXA7bWFwX2N0eCwgMCk7CiAJcGVyY3B1X2hhc2hfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTsKIAogCW1hcF9jdHgubWFwID0gJmFtcDtwZXJjcHVfbHJ1X2hhc2hfbWFwOwogCW1hcF9jdHguc3VtID0gMDsKLQlicGZfbG9vcChucl9jcHVzLCByZWFkX3BlcmNwdV9lbGVtX2NhbGxiYWNrLCAmYW1wO21hcF9jdHgsIDApOwomIzQzOwlicGZfbG9vcChucl9jcHVfaWRzLCByZWFkX3BlcmNwdV9lbGVtX2NhbGxiYWNrLCAmYW1wO21hcF9jdHgsIDApOwogCXBlcmNwdV9scnVfaGFzaF9lbGVtX3N1bSA9IG1hcF9jdHguc3VtOwogCiAJcmV0dXJuIDA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTcKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSSYjMzk7dmUgZ290IHR3byBmaWxlcywgYm90aCB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gOiBgbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jYCBhbmQgYHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jYC4gRXNzZW50aWFsbHksIHRoZXNlIGFyZSB1c2Vyc3BhY2Ugc2VsZnRlc3RzIGZvciBCUEYsIGxvY2F0ZWQgaW4gdGhlIHVzdWFsIHBsYWNlIGZvciB0aGVzZSB0aGluZ3MuIFRoZSBrZXkgaXMsIEkmIzM5O20gbm90IHNlZWluZyAqYW55KiBtb2RpZmljYXRpb25zIHRvIHRoZSBrZXJuZWwgc291cmNlIGl0c2VsZiDigJMgbm8gY29yZSBsb2dpYywgbm8gZHJpdmVyIGNoYW5nZXMsIG5vdGhpbmcgdGhhdCB3b3VsZCBpbXBhY3QgdGhlIGtlcm5lbCBydW50aW1lIGRpcmVjdGx5LgoKTm93LCBsZXQmIzM5O3MgZ28gb3ZlciB0aGUgcnVsZXMgaGVyZS4gTXkgdW5kZXJzdGFuZGluZyBpcywgd2Ugc2hvdWxkbiYjMzk7dCB0cmlnZ2VyIGZ1enppbmcgaWYgdGhlIHBhdGNoICpvbmx5KiBjb250YWlucyBjaGFuZ2VzIHRvIGRvY3VtZW50YXRpb24sIEtjb25maWcgZmlsZXMsIG9yIGNvbW1lbnRzLiBJbiB0aGlzIGNhc2UsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9gIGFyZSBub3QgcGFydCBvZiB0aGUga2VybmVsIHJ1bnRpbWUuIFRoZXkgYXJlIHB1cmVseSB1c2Vyc3BhY2UgdGVzdHMuIFNlbGZ0ZXN0cyBhcmUgaW5kZXBlbmRlbnQgYW5kIGRvbiYjMzk7dCBtb2RpZnkga2VybmVsIGJlaGF2aW9yLiBUaGlzIG1lYW5zIHRoZSBwcm9wb3NlZCBjaGFuZ2VzIHdvbiYjMzk7dCBiZSByZWFjaGFibGUgdGhyb3VnaCBzeXprYWxsZXIuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGNvbW1pdCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5IGNoYW5nZXMgZWxzZXdoZXJlLCBidXQgYmFzZWQgb24gd2hhdCBJJiMzOTt2ZSBzZWVuIHNvIGZhciwgdGhpcyBsb29rcyBsaWtlIGEgY2xlYXIgY2FzZSBvZiAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA0OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hcF9sb29rdXBfcGVyY3B1X2VsZW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9icGYvbWFwX2FycmF5LnJzdD03Mz1DUFUuXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfYXJyYXkucnN0LTc0LVxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2FycmF5LnJzdDo3NTpicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSgpXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfYXJyYXkucnN0LTc2LX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5cbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfYXJyYXkucnN0LTc5LVxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2FycmF5LnJzdDo4MDogICB2b2lkICpicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB2b2lkICprZXksIHUzMiBjcHUpXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfYXJyYXkucnN0LTgxLVxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2FycmF5LnJzdDo4MjpUaGUgYGBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSgpYGAgaGVscGVyIGNhbiBiZSB1c2VkIHRvIGxvb2t1cCB0aGUgYXJyYXlcbkRvY3VtZW50YXRpb24vYnBmL21hcF9hcnJheS5yc3QtODMtdmFsdWUgZm9yIGEgc3BlY2lmaWMgQ1BVLiBSZXR1cm5zIHZhbHVlIG9uIHN1Y2Nlc3MgLCBvciBgYE5VTExgYCBpZiBubyBlbnRyeSB3YXNcbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfaGFzaC5yc3Q9OTY9YXV0b21hdGljYWxseSBhY2Nlc3MgdGhlIGhhc2ggc2xvdCBmb3IgdGhlIGN1cnJlbnQgQ1BVLlxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2hhc2gucnN0LTk3LVxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2hhc2gucnN0Ojk4OmJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKClcbkRvY3VtZW50YXRpb24vYnBmL21hcF9oYXNoLnJzdC05OS1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG4tLVxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2hhc2gucnN0LTEwMi1cbkRvY3VtZW50YXRpb24vYnBmL21hcF9oYXNoLnJzdDoxMDM6ICAgdm9pZCAqYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3Qgdm9pZCAqa2V5LCB1MzIgY3B1KVxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2hhc2gucnN0LTEwNC1cbkRvY3VtZW50YXRpb24vYnBmL21hcF9oYXNoLnJzdDoxMDU6VGhlIGBgYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oKWBgIGhlbHBlciBjYW4gYmUgdXNlZCB0byBsb29rdXAgdGhlXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfaGFzaC5yc3QtMTA2LXZhbHVlIGluIHRoZSBoYXNoIHNsb3QgZm9yIGEgc3BlY2lmaWMgQ1BVLiBSZXR1cm5zIHZhbHVlIGFzc29jaWF0ZWQgd2l0aFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9ODc9c3RydWN0IGJwZl9tYXBfb3BzIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTExNS1cdGxvbmcgKCptYXBfcGVla19lbGVtKShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICp2YWx1ZSk7XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjExNjpcdHZvaWQgKigqbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSkoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB1MzIgY3B1KTtcbmluY2x1ZGUvbGludXgvYnBmLmgtMTE3LVx0aW50ICgqbWFwX2dldF9oYXNoKShzdHJ1Y3QgYnBmX21hcCAqbWFwKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oPTM4Nzg9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX3BlZWtfZWxlbV9wcm90bztcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3OTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX3Byb3RvO1xuaW5jbHVkZS9saW51eC9icGYuaC0zODgwLVxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xNTI3PXVuaW9uIGJwZl9hdHRyIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNTczOC0gKlxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjU3Mzk6ICogdm9pZCAqYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3Qgdm9pZCAqa2V5LCB1MzIgY3B1KVxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTU3NDAtICogXHREZXNjcmlwdGlvblxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC02MTk3LVx0Rk4oa3B0cl94Y2hnLCAxOTQsICMjY3R4KVx0XHRcdFxcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6NjE5ODpcdEZOKG1hcF9sb29rdXBfcGVyY3B1X2VsZW0sIDE5NSwgIyNjdHgpXHRcdFxcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNjE5OS1cdEZOKHNrY190b19tcHRjcF9zb2NrLCAxOTYsICMjY3R4KVx0XHRcXFxuLS1cbmtlcm5lbC9icGYvYXJyYXltYXAuYz0yOTQ9c3RhdGljIGludCBwZXJjcHVfYXJyYXlfbWFwX2dlbl9sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1Zilcbi0tXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtMzI0LVxua2VybmVsL2JwZi9hcnJheW1hcC5jOjMyNTpzdGF0aWMgdm9pZCAqcGVyY3B1X2FycmF5X21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB1MzIgY3B1KVxua2VybmVsL2JwZi9hcnJheW1hcC5jLTMyNi17XG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jPTg4NT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcGVyY3B1X2FycmF5X21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jLTg5Ni1cdC5tYXBfZGVsZXRlX2VsZW0gPSBhcnJheV9tYXBfZGVsZXRlX2VsZW0sXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM6ODk3Olx0Lm1hcF9sb29rdXBfcGVyY3B1X2VsZW0gPSBwZXJjcHVfYXJyYXlfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy04OTgtXHQubWFwX3NlcV9zaG93X2VsZW0gPSBwZXJjcHVfYXJyYXlfbWFwX3NlcV9zaG93X2VsZW0sXG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MzE1Mj1jb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF9wZWVrX2VsZW1fcHJvdG8gX193ZWFrO1xua2VybmVsL2JwZi9jb3JlLmM6MzE1Mzpjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW1fcHJvdG8gX193ZWFrO1xua2VybmVsL2JwZi9jb3JlLmMtMzE1NC1jb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX3NwaW5fbG9ja19wcm90byBfX3dlYWs7XG4tLVxua2VybmVsL2JwZi9maXh1cHMuYz0xNTA4PWludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNTUtXHRcdCAgICAgaW5zbi1cdTAwM2VpbW0gPT0gQlBGX0ZVTkNfZm9yX2VhY2hfbWFwX2VsZW0gfHxcbmtlcm5lbC9icGYvZml4dXBzLmM6MjA1NjpcdFx0ICAgICBpbnNuLVx1MDAzZWltbSA9PSBCUEZfRlVOQ19tYXBfbG9va3VwX3BlcmNwdV9lbGVtKSkge1xua2VybmVsL2JwZi9maXh1cHMuYy0yMDU3LVx0XHRcdGF1eCA9IFx1MDAyNmVudi1cdTAwM2VpbnNuX2F1eF9kYXRhW2kgJiM0MzsgZGVsdGFdO1xuLS1cbmtlcm5lbC9icGYvZml4dXBzLmMtMjEwNy1cdFx0XHRcdFx0ICAgICAgdTY0IGZsYWdzKSlOVUxMKSk7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIxMDg6XHRcdFx0QlVJTERfQlVHX09OKCFfX3NhbWVfdHlwZShvcHMtXHUwMDNlbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSxcbmtlcm5lbC9icGYvZml4dXBzLmMtMjEwOS1cdFx0XHRcdCAgICAgKHZvaWQgKigqKShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXksIHUzMiBjcHUpKU5VTEwpKTtcbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIxMzYtXHRcdFx0XHRnb3RvIG5leHRfaW5zbjtcbmtlcm5lbC9icGYvZml4dXBzLmM6MjEzNzpcdFx0XHRjYXNlIEJQRl9GVU5DX21hcF9sb29rdXBfcGVyY3B1X2VsZW06XG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIxMzg6XHRcdFx0XHRpbnNuLVx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShvcHMtXHUwMDNlbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSk7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIxMzktXHRcdFx0XHRnb3RvIG5leHRfaW5zbjtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNDE0PXN0YXRpYyBpbnQgaHRhYl9wZXJjcHVfbWFwX2dlbl9sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1Zilcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNDMyLVxua2VybmVsL2JwZi9oYXNodGFiLmM6MjQzMzpzdGF0aWMgdm9pZCAqaHRhYl9wZXJjcHVfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXksIHUzMiBjcHUpXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNDM0LXtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNDQ3PXN0YXRpYyB2b2lkICpodGFiX2xydV9wZXJjcHVfbWFwX2xvb2t1cF9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSlcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNDU4LVxua2VybmVsL2JwZi9oYXNodGFiLmM6MjQ1OTpzdGF0aWMgdm9pZCAqaHRhYl9scnVfcGVyY3B1X21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB1MzIgY3B1KVxua2VybmVsL2JwZi9oYXNodGFiLmMtMjQ2MC17XG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmM9MjU2MD1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9wZXJjcHVfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNTcwLVx0Lm1hcF9kZWxldGVfZWxlbSA9IGh0YWJfbWFwX2RlbGV0ZV9lbGVtLFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjU3MTpcdC5tYXBfbG9va3VwX3BlcmNwdV9lbGVtID0gaHRhYl9wZXJjcHVfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI1NzItXHQubWFwX3NlcV9zaG93X2VsZW0gPSBodGFiX3BlcmNwdV9tYXBfc2VxX3Nob3dfZWxlbSxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNTgyPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBodGFiX2xydV9wZXJjcHVfbWFwX29wcyA9IHtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNTkxLVx0Lm1hcF9kZWxldGVfZWxlbSA9IGh0YWJfbHJ1X21hcF9kZWxldGVfZWxlbSxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI1OTI6XHQubWFwX2xvb2t1cF9wZXJjcHVfZWxlbSA9IGh0YWJfbHJ1X3BlcmNwdV9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5My1cdC5tYXBfc2VxX3Nob3dfZWxlbSA9IGh0YWJfcGVyY3B1X21hcF9zZXFfc2hvd19lbGVtLFxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTEyNT1jb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF9wZWVrX2VsZW1fcHJvdG8gPSB7XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTMyLVxua2VybmVsL2JwZi9oZWxwZXJzLmM6MTMzOkJQRl9DQUxMXzMoYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0sIHN0cnVjdCBicGZfbWFwICosIG1hcCwgdm9pZCAqLCBrZXksIHUzMiwgY3B1KVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTM0LXtcbmtlcm5lbC9icGYvaGVscGVycy5jLTEzNS1cdFdBUk5fT05fT05DRSghYnBmX3JjdV9sb2NrX2hlbGQoKSk7XG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoxMzY6XHRyZXR1cm4gKHVuc2lnbmVkIGxvbmcpIG1hcC1cdTAwM2VvcHMtXHUwMDNlbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShtYXAsIGtleSwgY3B1KTtcbmtlcm5lbC9icGYvaGVscGVycy5jLTEzNy19XG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0xMzgtXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoxMzk6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX3Byb3RvID0ge1xua2VybmVsL2JwZi9oZWxwZXJzLmM6MTQwOlx0LmZ1bmNcdFx0PSBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSxcbmtlcm5lbC9icGYvaGVscGVycy5jLTE0MS1cdC5ncGxfb25seVx0PSBmYWxzZSxcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz0yMDY3PWJwZl9iYXNlX2Z1bmNfcHJvdG8oZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMjA4MS1cdFx0cmV0dXJuIFx1MDAyNmJwZl9tYXBfcGVla19lbGVtX3Byb3RvO1xua2VybmVsL2JwZi9oZWxwZXJzLmM6MjA4MjpcdGNhc2UgQlBGX0ZVTkNfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbTpcbmtlcm5lbC9icGYvaGVscGVycy5jOjIwODM6XHRcdHJldHVybiBcdTAwMjZicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9wcm90bztcbmtlcm5lbC9icGYvaGVscGVycy5jLTIwODQtXHRjYXNlIEJQRl9GVU5DX2dldF9wcmFuZG9tX3UzMjpcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9OTAyND1zdGF0aWMgaW50IGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTIzOS1cdFx0YnJlYWs7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTI0MDpcdGNhc2UgQlBGX0ZVTkNfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbTpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjQxLVx0XHRpZiAobWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9QRVJDUFVfQVJSQVkgXHUwMDI2XHUwMDI2XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwNTIxPXJlY29yZF9mdW5jX21hcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwNTM1LVx0ICAgIGZ1bmNfaWQgIT0gQlBGX0ZVTkNfcmVkaXJlY3RfbWFwIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwNTM2Olx0ICAgIGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDUzNy1cdFx0cmV0dXJuIDA7XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTE1Mjc9dW5pb24gYnBmX2F0dHIge1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC01NzM4LSAqXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6NTczOTogKiB2b2lkICpicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB2b2lkICprZXksIHUzMiBjcHUpXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNTc0MC0gKiBcdERlc2NyaXB0aW9uXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTYxOTctXHRGTihrcHRyX3hjaGcsIDE5NCwgIyNjdHgpXHRcdFx0XFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDo2MTk4Olx0Rk4obWFwX2xvb2t1cF9wZXJjcHVfZWxlbSwgMTk1LCAjI2N0eClcdFx0XFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC02MTk5LVx0Rk4oc2tjX3RvX21wdGNwX3NvY2ssIDE5NiwgIyNjdHgpXHRcdFxcXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTUtI2luY2x1ZGUgXCYjMzQ7YnBmL2xpYmJwZl9pbnRlcm5hbC5oXCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmM6NjojaW5jbHVkZSBcJiMzNDt0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uc2tlbC5oXCYjMzQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNy1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo4OnZvaWQgdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKHZvaWQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtOS17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmM6MTA6XHRzdHJ1Y3QgdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtICpza2VsO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTExLVx0Ym9vbCAqcG9zc2libGUgPSBOVUxMO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYy0zNy1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzozODpcdHNrZWwgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW4oKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzozOTpcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDt0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW5cJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTQwLVx0XHRnb3RvIGV4aXQ7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTQ0LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jOjQ1Olx0cmV0ID0gdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19sb2FkKHNrZWwpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jOjQ2Olx0aWYgKCFBU1NFUlRfT0socmV0LCBcJiMzNDt0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2xvYWRcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTQ3LVx0XHRnb3RvIGNsZWFudXA7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNDgtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmM6NDk6XHRyZXQgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2F0dGFjaChza2VsKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo1MDpcdGlmICghQVNTRVJUX09LKHJldCwgXCYjMzQ7dGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19hdHRhY2hcJiMzNDspKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTUxLVx0XHRnb3RvIGNsZWFudXA7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTYzLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jOjY0Olx0dGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19kZXRhY2goc2tlbCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNjUtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTcwLWNsZWFudXA6XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmM6NzE6XHR0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2Rlc3Ryb3koc2tlbCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNzItZXhpdDpcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY2dyb3VwX2hpZXJhcmNoaWNhbF9zdGF0cy5jPTg0PWludCBCUEZfUFJPRyhmbHVzaGVyLCBzdHJ1Y3QgY2dyb3VwICpjZ3JwLCBzdHJ1Y3QgY2dyb3VwICpwYXJlbnQsIGludCBjcHUpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2Nncm91cF9oaWVyYXJjaGljYWxfc3RhdHMuYy05My1cdC8qIEFkZCBDUFUgY2hhbmdlcyBvbiB0aGlzIGxldmVsIHNpbmNlIHRoZSBsYXN0IGZsdXNoICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY2dyb3VwX2hpZXJhcmNoaWNhbF9zdGF0cy5jOjk0Olx0cGNwdV9jb3VudGVyID0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oXHUwMDI2cGVyY3B1X2F0dGFjaF9jb3VudGVycyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jZ3JvdXBfaGllcmFyY2hpY2FsX3N0YXRzLmMtOTUtXHRcdFx0XHRcdFx0ICBcdTAwMjZjZ19pZCwgY3B1KTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWFwX2twdHIuYz0zNzI9aW50IHRlc3RfbWFwX2twdHJfcmVmX3Bvc3Qoc3RydWN0IG1hcF92YWx1ZSAqdilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWFwX2twdHIuYy00MDctI2RlZmluZSBURVNUX1BDUFUobWFwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWFwX2twdHIuYzo0MDg6XHR2ID0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oXHUwMDI2bWFwLCBcdTAwMjZrZXksIDApOyBcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21hcF9rcHRyLmMtNDA5LVx0aWYgKCF2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0ci5jPTQxNj1pbnQgdGVzdF9tYXBfa3B0cl9yZWYxKHN0cnVjdCBfX3NrX2J1ZmYgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWFwX2twdHIuYy00NTMtI2RlZmluZSBURVNUX1BDUFUobWFwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWFwX2twdHIuYzo0NTQ6XHR2ID0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oXHUwMDI2bWFwLCBcdTAwMjZrZXksIDApOyBcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21hcF9rcHRyLmMtNDU1LVx0aWYgKCF2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0cl9yYWNlLmM9ODk9aW50IHRlc3RfcGVyY3B1X2h0YWJfbGVhayhzdHJ1Y3QgX19za19idWZmICpza2IpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21hcF9rcHRyX3JhY2UuYy05OS1cdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBucl9jcHVzOyBpJiM0MzsmIzQzOykge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21hcF9rcHRyX3JhY2UuYzoxMDA6XHRcdHYgPSBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShcdTAwMjZyYWNlX3BlcmNwdV9oYXNoX21hcCwgXHUwMDI2a2V5LCBpKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0cl9yYWNlLmMtMTAxLVx0XHRpZiAoIXYpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jPTEwMzQ9aW50IHBlcmNwdV9oYXNoX3JlZmNvdW50X2xlYWsodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDM4LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jOjEwMzk6XHR2ID0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oXHUwMDI2cGVyY3B1X2hhc2gsIFx1MDAyNmtleSwgMCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmMtMTA0MC1cdGlmICghdilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM9MTA0Nz1pbnQgY2xlYXJfcGVyY3B1X2hhc2hfa3B0cih2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JlZmNvdW50ZWRfa3B0ci5jLTEwNTItXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvcmVmY291bnRlZF9rcHRyLmM6MTA1MzpcdHYgPSBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShcdTAwMjZwZXJjcHVfaGFzaCwgXHUwMDI2a2V5LCAwKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDU0LVx0aWYgKCF2KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYz0zOT1zdGF0aWMgaW50IHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2soX191MzIgaW5kZXgsIHN0cnVjdCByZWFkX3BlcmNwdV9lbGVtX2N0eCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYy00My1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo0NDpcdHZhbHVlID0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oY3R4LVx1MDAzZW1hcCwgXHUwMDI2a2V5LCBpbmRleCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNDUtXHRpZiAodmFsdWUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDQ6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQ3MAoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQgb2YgdGhpcyBzaXR1YXRpb246CgoqKldvcnRoRnV6emluZyBEZWNpc2lvbioqCgpBbHJpZ2h0LCBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZS4gQWZ0ZXIgYSBxdWljayBsb29rLCBpdCYjMzk7cyBjbGVhciB0aGUgY2hhbmdlcyBhcmUgKm9ubHkqIHRvdWNoaW5nIHRoZSB0ZXN0IHN1aXRlIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIFRoZXJlJiMzOTtzIGFic29sdXRlbHkgbm90aGluZyBoZXJlIHRoYXQgdG91Y2hlcyBjb3JlIGtlcm5lbCBzb3VyY2UgY29kZSwgcmlnaHQ/IFNvLCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBgV29ydGhGdXp6aW5nYCBpcyBkZXRlcm1pbmVkLCB0aGUgYW5zd2VyIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEdpdmVuIHRoYXQgdGhlcmUmIzM5O3Mgbm8gYWx0ZXJhdGlvbiB0byB0aGUga2VybmVsIGl0c2VsZiwgdGhlIGZ1enppbmcgcG90ZW50aWFsIGhlcmUgaXMgZWZmZWN0aXZlbHkgemVyby4gYFdvcnRoRnV6emluZ2AgYWJzb2x1dGVseSBoYXMgdG8gYmUgYGZhbHNlYCBpbiB0aGlzIGNhc2UuIE5vIHBvaW50IHdhc3RpbmcgY3ljbGVzIG9uIHNvbWV0aGluZyB0aGF0IHdvbiYjMzk7dCBnaXZlIHVzIGFueSB2YWx1YWJsZSBpbnNpZ2h0cyBpbnRvIGtlcm5lbCBzdGFiaWxpdHkgb3Igc2VjdXJpdHkuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBtb3ZlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDA0OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwgcnVudGltZSBvciBjb3JlIHN1YnN5c3RlbXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIExpbnV4IGtlcm5lbCBydW50aW1lIG9yIGNvcmUgc3Vic3lzdGVtcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMDQ6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA0OjQ5OjM4LjA0NTQ1NTkxOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5MjIxNDQ2MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIExpbnV4IGtlcm5lbCBydW50aW1lIG9yIGNvcmUgc3Vic3lzdGVtcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA0OjQ5OjM4LjA0NTQ2MTM2OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ5MDQxMTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjgwYzlhZmI0OWRkYWEyZDQyMmIzMDYyZDBkZDEyNzMxNzBjNGU3NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCAyIDA0OjQ5OjM3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uY1xcbmluZGV4IGJmYjFiZjNmZDQyN2IuLjg0OWYzMzI1OWMwMDMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jXFxuQEAgLTIsMjkgKzIsNDUgQEBcXG4gLyogQ29weXJpZ2h0IChjKSAyMDIyIEJ5dGVkYW5jZSAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY3Rlc3RfcHJvZ3MuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcImJwZi9saWJicGZfaW50ZXJuYWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5za2VsLmhcXFwiXFxuIFxcbiB2b2lkIHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSh2b2lkKVxcbiB7XFxuIFxcdHN0cnVjdCB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0gKnNrZWw7XFxuLVxcdF9fdTY0IGtleSA9IDAsIHN1bTtcXG4tXFx0aW50IHJldCwgaSwgbnJfY3B1cyA9IGxpYmJwZl9udW1fcG9zc2libGVfY3B1cygpO1xcbitcXHRib29sICpwb3NzaWJsZSA9IE5VTEw7XFxuK1xcdF9fdTY0IGtleSA9IDAsIHN1bSA9IDA7XFxuK1xcdGludCBjcHUsIG5yX2NwdV9pZHMsIG5yX2NwdXMsIHJldCwgc2xvdCA9IDA7XFxuIFxcdF9fdTY0ICpidWY7XFxuIFxcbi1cXHRidWYgPSBtYWxsb2MobnJfY3B1cypzaXplb2YoX191NjQpKTtcXG4tXFx0aWYgKCFBU1NFUlRfT0tfUFRSKGJ1ZiwgXFxcIm1hbGxvY1xcXCIpKVxcbitcXHRyZXQgPSBwYXJzZV9jcHVfbWFza19maWxlKFxcXCIvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9wb3NzaWJsZVxcXCIsIFxcdTAwMjZwb3NzaWJsZSxcXG4rXFx0XFx0XFx0XFx0ICBcXHUwMDI2bnJfY3B1X2lkcyk7XFxuK1xcdGlmICghQVNTRVJUX09LKHJldCwgXFxcInBhcnNlIHBvc3NpYmxlIENQVSBtYXNrXFxcIikpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9jcHVzOyBpKyspXFxuLVxcdFxcdGJ1ZltpXSA9IGk7XFxuLVxcdHN1bSA9IChucl9jcHVzIC0gMSkgKiBucl9jcHVzIC8gMjtcXG4rXFx0bnJfY3B1cyA9IGxpYmJwZl9udW1fcG9zc2libGVfY3B1cygpO1xcbitcXHRpZiAoIUFTU0VSVF9HVChucl9jcHVzLCAwLCBcXFwibGliYnBmX251bV9wb3NzaWJsZV9jcHVzXFxcIikpXFxuK1xcdFxcdGdvdG8gZnJlZV9tYXNrO1xcbitcXG4rXFx0YnVmID0gbWFsbG9jKG5yX2NwdXMgKiBzaXplb2YoKmJ1ZikpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoYnVmLCBcXFwibWFsbG9jXFxcIikpXFxuK1xcdFxcdGdvdG8gZnJlZV9tYXNrO1xcbitcXG4rXFx0Zm9yIChjcHUgPSAwOyBjcHUgXFx1MDAzYyBucl9jcHVfaWRzOyBjcHUrKykge1xcbitcXHRcXHRpZiAoIXBvc3NpYmxlW2NwdV0pXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRidWZbc2xvdCsrXSA9IGNwdTtcXG4rXFx0XFx0c3VtICs9IGNwdTtcXG4rXFx0fVxcbitcXHRpZiAoIUFTU0VSVF9FUShzbG90LCBucl9jcHVzLCBcXFwicG9zc2libGUgQ1BVIG1hc2sgd2VpZ2h0XFxcIikpXFxuK1xcdFxcdGdvdG8gZXhpdDtcXG4gXFxuIFxcdHNrZWwgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW4oKTtcXG4gXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJ0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW5cXFwiKSlcXG4gXFx0XFx0Z290byBleGl0O1xcbiBcXG4gXFx0c2tlbC1cXHUwMDNlcm9kYXRhLVxcdTAwM2VteV9waWQgPSBnZXRwaWQoKTtcXG4tXFx0c2tlbC1cXHUwMDNlcm9kYXRhLVxcdTAwM2Vucl9jcHVzID0gbnJfY3B1cztcXG4rXFx0c2tlbC1cXHUwMDNlcm9kYXRhLVxcdTAwM2Vucl9jcHVfaWRzID0gbnJfY3B1X2lkcztcXG4gXFxuIFxcdHJldCA9IHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9fbG9hZChza2VsKTtcXG4gXFx0aWYgKCFBU1NFUlRfT0socmV0LCBcXFwidGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19sb2FkXFxcIikpXFxuQEAgLTU1LDQgKzcxLDYgQEAgdm9pZCB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0odm9pZClcXG4gXFx0dGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19kZXN0cm95KHNrZWwpO1xcbiBleGl0OlxcbiBcXHRmcmVlKGJ1Zik7XFxuK2ZyZWVfbWFzazpcXG4rXFx0ZnJlZShwb3NzaWJsZSk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jXFxuaW5kZXggY2E4MjdiMTA5MmRhYS4uZDhkYTA2OTZiOTdjZiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmNcXG5AQCAtNyw3ICs3LDcgQEBcXG4gX191NjQgcGVyY3B1X2FycmF5X2VsZW1fc3VtID0gMDtcXG4gX191NjQgcGVyY3B1X2hhc2hfZWxlbV9zdW0gPSAwO1xcbiBfX3U2NCBwZXJjcHVfbHJ1X2hhc2hfZWxlbV9zdW0gPSAwO1xcbi1jb25zdCB2b2xhdGlsZSBpbnQgbnJfY3B1cztcXG4rY29uc3Qgdm9sYXRpbGUgaW50IG5yX2NwdV9pZHM7XFxuIGNvbnN0IHZvbGF0aWxlIGludCBteV9waWQ7XFxuIFxcbiBzdHJ1Y3Qge1xcbkBAIC01NywxNyArNTcsMTcgQEAgaW50IHN5c2VudGVyX2dldHVpZChjb25zdCB2b2lkICpjdHgpXFxuIFxcbiBcXHRtYXBfY3R4Lm1hcCA9IFxcdTAwMjZwZXJjcHVfYXJyYXlfbWFwO1xcbiBcXHRtYXBfY3R4LnN1bSA9IDA7XFxuLVxcdGJwZl9sb29wKG5yX2NwdXMsIHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2ssIFxcdTAwMjZtYXBfY3R4LCAwKTtcXG4rXFx0YnBmX2xvb3AobnJfY3B1X2lkcywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXFx1MDAyNm1hcF9jdHgsIDApO1xcbiBcXHRwZXJjcHVfYXJyYXlfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTtcXG4gXFxuIFxcdG1hcF9jdHgubWFwID0gXFx1MDAyNnBlcmNwdV9oYXNoX21hcDtcXG4gXFx0bWFwX2N0eC5zdW0gPSAwO1xcbi1cXHRicGZfbG9vcChucl9jcHVzLCByZWFkX3BlcmNwdV9lbGVtX2NhbGxiYWNrLCBcXHUwMDI2bWFwX2N0eCwgMCk7XFxuK1xcdGJwZl9sb29wKG5yX2NwdV9pZHMsIHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2ssIFxcdTAwMjZtYXBfY3R4LCAwKTtcXG4gXFx0cGVyY3B1X2hhc2hfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTtcXG4gXFxuIFxcdG1hcF9jdHgubWFwID0gXFx1MDAyNnBlcmNwdV9scnVfaGFzaF9tYXA7XFxuIFxcdG1hcF9jdHguc3VtID0gMDtcXG4tXFx0YnBmX2xvb3AobnJfY3B1cywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXFx1MDAyNm1hcF9jdHgsIDApO1xcbitcXHRicGZfbG9vcChucl9jcHVfaWRzLCByZWFkX3BlcmNwdV9lbGVtX2NhbGxiYWNrLCBcXHUwMDI2bWFwX2N0eCwgMCk7XFxuIFxcdHBlcmNwdV9scnVfaGFzaF9lbGVtX3N1bSA9IG1hcF9jdHguc3VtO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDA0OjQ5OjM4LjQ5NTQzMjczNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6OTQ3MjE1MTI3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwgcnVudGltZSBvciBjb3JlIHN1YnN5c3RlbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyODBjOWFmYjQ5ZGRhYTJkNDIyYjMwNjJkMGRkMTI3MzE3MGM0ZTc1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAwNDo0OTozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uY1xuaW5kZXggYmZiMWJmM2ZkNDI3Yi4uODQ5ZjMzMjU5YzAwMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jXG5AQCAtMiwyOSArMiw0NSBAQFxuIC8qIENvcHlyaWdodCAoYykgMjAyMiBCeXRlZGFuY2UgKi9cbiBcbiAjaW5jbHVkZSBcdTAwM2N0ZXN0X3Byb2dzLmhcdTAwM2VcbisjaW5jbHVkZSBcImJwZi9saWJicGZfaW50ZXJuYWwuaFwiXG4gI2luY2x1ZGUgXCJ0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uc2tlbC5oXCJcbiBcbiB2b2lkIHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSh2b2lkKVxuIHtcbiBcdHN0cnVjdCB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0gKnNrZWw7XG4tXHRfX3U2NCBrZXkgPSAwLCBzdW07XG4tXHRpbnQgcmV0LCBpLCBucl9jcHVzID0gbGliYnBmX251bV9wb3NzaWJsZV9jcHVzKCk7XG4rXHRib29sICpwb3NzaWJsZSA9IE5VTEw7XG4rXHRfX3U2NCBrZXkgPSAwLCBzdW0gPSAwO1xuK1x0aW50IGNwdSwgbnJfY3B1X2lkcywgbnJfY3B1cywgcmV0LCBzbG90ID0gMDtcbiBcdF9fdTY0ICpidWY7XG4gXG4tXHRidWYgPSBtYWxsb2MobnJfY3B1cypzaXplb2YoX191NjQpKTtcbi1cdGlmICghQVNTRVJUX09LX1BUUihidWYsIFwibWFsbG9jXCIpKVxuK1x0cmV0ID0gcGFyc2VfY3B1X21hc2tfZmlsZShcIi9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L3Bvc3NpYmxlXCIsIFx1MDAyNnBvc3NpYmxlLFxuK1x0XHRcdFx0ICBcdTAwMjZucl9jcHVfaWRzKTtcbitcdGlmICghQVNTRVJUX09LKHJldCwgXCJwYXJzZSBwb3NzaWJsZSBDUFUgbWFza1wiKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3B1czsgaSsrKVxuLVx0XHRidWZbaV0gPSBpO1xuLVx0c3VtID0gKG5yX2NwdXMgLSAxKSAqIG5yX2NwdXMgLyAyO1xuK1x0bnJfY3B1cyA9IGxpYmJwZl9udW1fcG9zc2libGVfY3B1cygpO1xuK1x0aWYgKCFBU1NFUlRfR1QobnJfY3B1cywgMCwgXCJsaWJicGZfbnVtX3Bvc3NpYmxlX2NwdXNcIikpXG4rXHRcdGdvdG8gZnJlZV9tYXNrO1xuK1xuK1x0YnVmID0gbWFsbG9jKG5yX2NwdXMgKiBzaXplb2YoKmJ1ZikpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKGJ1ZiwgXCJtYWxsb2NcIikpXG4rXHRcdGdvdG8gZnJlZV9tYXNrO1xuK1xuK1x0Zm9yIChjcHUgPSAwOyBjcHUgXHUwMDNjIG5yX2NwdV9pZHM7IGNwdSsrKSB7XG4rXHRcdGlmICghcG9zc2libGVbY3B1XSlcbitcdFx0XHRjb250aW51ZTtcbitcdFx0YnVmW3Nsb3QrK10gPSBjcHU7XG4rXHRcdHN1bSArPSBjcHU7XG4rXHR9XG4rXHRpZiAoIUFTU0VSVF9FUShzbG90LCBucl9jcHVzLCBcInBvc3NpYmxlIENQVSBtYXNrIHdlaWdodFwiKSlcbitcdFx0Z290byBleGl0O1xuIFxuIFx0c2tlbCA9IHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9fb3BlbigpO1xuIFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwidGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19vcGVuXCIpKVxuIFx0XHRnb3RvIGV4aXQ7XG4gXG4gXHRza2VsLVx1MDAzZXJvZGF0YS1cdTAwM2VteV9waWQgPSBnZXRwaWQoKTtcbi1cdHNrZWwtXHUwMDNlcm9kYXRhLVx1MDAzZW5yX2NwdXMgPSBucl9jcHVzO1xuK1x0c2tlbC1cdTAwM2Vyb2RhdGEtXHUwMDNlbnJfY3B1X2lkcyA9IG5yX2NwdV9pZHM7XG4gXG4gXHRyZXQgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2xvYWQoc2tlbCk7XG4gXHRpZiAoIUFTU0VSVF9PSyhyZXQsIFwidGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19sb2FkXCIpKVxuQEAgLTU1LDQgKzcxLDYgQEAgdm9pZCB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0odm9pZClcbiBcdHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9fZGVzdHJveShza2VsKTtcbiBleGl0OlxuIFx0ZnJlZShidWYpO1xuK2ZyZWVfbWFzazpcbitcdGZyZWUocG9zc2libGUpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmNcbmluZGV4IGNhODI3YjEwOTJkYWEuLmQ4ZGEwNjk2Yjk3Y2YgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uY1xuQEAgLTcsNyArNyw3IEBAXG4gX191NjQgcGVyY3B1X2FycmF5X2VsZW1fc3VtID0gMDtcbiBfX3U2NCBwZXJjcHVfaGFzaF9lbGVtX3N1bSA9IDA7XG4gX191NjQgcGVyY3B1X2xydV9oYXNoX2VsZW1fc3VtID0gMDtcbi1jb25zdCB2b2xhdGlsZSBpbnQgbnJfY3B1cztcbitjb25zdCB2b2xhdGlsZSBpbnQgbnJfY3B1X2lkcztcbiBjb25zdCB2b2xhdGlsZSBpbnQgbXlfcGlkO1xuIFxuIHN0cnVjdCB7XG5AQCAtNTcsMTcgKzU3LDE3IEBAIGludCBzeXNlbnRlcl9nZXR1aWQoY29uc3Qgdm9pZCAqY3R4KVxuIFxuIFx0bWFwX2N0eC5tYXAgPSBcdTAwMjZwZXJjcHVfYXJyYXlfbWFwO1xuIFx0bWFwX2N0eC5zdW0gPSAwO1xuLVx0YnBmX2xvb3AobnJfY3B1cywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4rXHRicGZfbG9vcChucl9jcHVfaWRzLCByZWFkX3BlcmNwdV9lbGVtX2NhbGxiYWNrLCBcdTAwMjZtYXBfY3R4LCAwKTtcbiBcdHBlcmNwdV9hcnJheV9lbGVtX3N1bSA9IG1hcF9jdHguc3VtO1xuIFxuIFx0bWFwX2N0eC5tYXAgPSBcdTAwMjZwZXJjcHVfaGFzaF9tYXA7XG4gXHRtYXBfY3R4LnN1bSA9IDA7XG4tXHRicGZfbG9vcChucl9jcHVzLCByZWFkX3BlcmNwdV9lbGVtX2NhbGxiYWNrLCBcdTAwMjZtYXBfY3R4LCAwKTtcbitcdGJwZl9sb29wKG5yX2NwdV9pZHMsIHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2ssIFx1MDAyNm1hcF9jdHgsIDApO1xuIFx0cGVyY3B1X2hhc2hfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTtcbiBcbiBcdG1hcF9jdHgubWFwID0gXHUwMDI2cGVyY3B1X2xydV9oYXNoX21hcDtcbiBcdG1hcF9jdHguc3VtID0gMDtcbi1cdGJwZl9sb29wKG5yX2NwdXMsIHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2ssIFx1MDAyNm1hcF9jdHgsIDApO1xuK1x0YnBmX2xvb3AobnJfY3B1X2lkcywgcmVhZF9wZXJjcHVfZWxlbV9jYWxsYmFjaywgXHUwMDI2bWFwX2N0eCwgMCk7XG4gXHRwZXJjcHVfbHJ1X2hhc2hfZWxlbV9zdW0gPSBtYXBfY3R4LnN1bTtcbiBcbiBcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDQ6NDk6MzguNDk1NDM1NzQ2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTQxNTcwMzYyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEkndmUgZ290IHR3byBmaWxlcywgYm90aCB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gOiBgbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jYCBhbmQgYHRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jYC4gRXNzZW50aWFsbHksIHRoZXNlIGFyZSB1c2Vyc3BhY2Ugc2VsZnRlc3RzIGZvciBCUEYsIGxvY2F0ZWQgaW4gdGhlIHVzdWFsIHBsYWNlIGZvciB0aGVzZSB0aGluZ3MuIFRoZSBrZXkgaXMsIEknbSBub3Qgc2VlaW5nICphbnkqIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGtlcm5lbCBzb3VyY2UgaXRzZWxmIOKAkyBubyBjb3JlIGxvZ2ljLCBubyBkcml2ZXIgY2hhbmdlcywgbm90aGluZyB0aGF0IHdvdWxkIGltcGFjdCB0aGUga2VybmVsIHJ1bnRpbWUgZGlyZWN0bHkuXG5cbk5vdywgbGV0J3MgZ28gb3ZlciB0aGUgcnVsZXMgaGVyZS4gTXkgdW5kZXJzdGFuZGluZyBpcywgd2Ugc2hvdWxkbid0IHRyaWdnZXIgZnV6emluZyBpZiB0aGUgcGF0Y2ggKm9ubHkqIGNvbnRhaW5zIGNoYW5nZXMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgb3IgY29tbWVudHMuIEluIHRoaXMgY2FzZSwgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2AgYXJlIG5vdCBwYXJ0IG9mIHRoZSBrZXJuZWwgcnVudGltZS4gVGhleSBhcmUgcHVyZWx5IHVzZXJzcGFjZSB0ZXN0cy4gU2VsZnRlc3RzIGFyZSBpbmRlcGVuZGVudCBhbmQgZG9uJ3QgbW9kaWZ5IGtlcm5lbCBiZWhhdmlvci4gVGhpcyBtZWFucyB0aGUgcHJvcG9zZWQgY2hhbmdlcyB3b24ndCBiZSByZWFjaGFibGUgdGhyb3VnaCBzeXprYWxsZXIuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb21taXQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgc25lYWt5IGNoYW5nZXMgZWxzZXdoZXJlLCBidXQgYmFzZWQgb24gd2hhdCBJJ3ZlIHNlZW4gc28gZmFyLCB0aGlzIGxvb2tzIGxpa2UgYSBjbGVhciBjYXNlIG9mIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MTcsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNDo0OTo0My45MTExNDE5NjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMzA3ODYxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYXBfbG9va3VwX3BlcmNwdV9lbGVtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYnBmL21hcF9hcnJheS5yc3Q9NzM9Q1BVLlxcbkRvY3VtZW50YXRpb24vYnBmL21hcF9hcnJheS5yc3QtNzQtXFxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2FycmF5LnJzdDo3NTpicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSgpXFxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2FycmF5LnJzdC03Ni1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfYXJyYXkucnN0LTc5LVxcbkRvY3VtZW50YXRpb24vYnBmL21hcF9hcnJheS5yc3Q6ODA6ICAgdm9pZCAqYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3Qgdm9pZCAqa2V5LCB1MzIgY3B1KVxcbkRvY3VtZW50YXRpb24vYnBmL21hcF9hcnJheS5yc3QtODEtXFxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2FycmF5LnJzdDo4MjpUaGUgYGBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSgpYGAgaGVscGVyIGNhbiBiZSB1c2VkIHRvIGxvb2t1cCB0aGUgYXJyYXlcXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfYXJyYXkucnN0LTgzLXZhbHVlIGZvciBhIHNwZWNpZmljIENQVS4gUmV0dXJucyB2YWx1ZSBvbiBzdWNjZXNzICwgb3IgYGBOVUxMYGAgaWYgbm8gZW50cnkgd2FzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfaGFzaC5yc3Q9OTY9YXV0b21hdGljYWxseSBhY2Nlc3MgdGhlIGhhc2ggc2xvdCBmb3IgdGhlIGN1cnJlbnQgQ1BVLlxcbkRvY3VtZW50YXRpb24vYnBmL21hcF9oYXNoLnJzdC05Ny1cXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfaGFzaC5yc3Q6OTg6YnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oKVxcbkRvY3VtZW50YXRpb24vYnBmL21hcF9oYXNoLnJzdC05OS1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfaGFzaC5yc3QtMTAyLVxcbkRvY3VtZW50YXRpb24vYnBmL21hcF9oYXNoLnJzdDoxMDM6ICAgdm9pZCAqYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3Qgdm9pZCAqa2V5LCB1MzIgY3B1KVxcbkRvY3VtZW50YXRpb24vYnBmL21hcF9oYXNoLnJzdC0xMDQtXFxuRG9jdW1lbnRhdGlvbi9icGYvbWFwX2hhc2gucnN0OjEwNTpUaGUgYGBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSgpYGAgaGVscGVyIGNhbiBiZSB1c2VkIHRvIGxvb2t1cCB0aGVcXG5Eb2N1bWVudGF0aW9uL2JwZi9tYXBfaGFzaC5yc3QtMTA2LXZhbHVlIGluIHRoZSBoYXNoIHNsb3QgZm9yIGEgc3BlY2lmaWMgQ1BVLiBSZXR1cm5zIHZhbHVlIGFzc29jaWF0ZWQgd2l0aFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD04Nz1zdHJ1Y3QgYnBmX21hcF9vcHMge1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0xMTUtXFx0bG9uZyAoKm1hcF9wZWVrX2VsZW0pKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlKTtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjExNjpcXHR2b2lkICooKm1hcF9sb29rdXBfcGVyY3B1X2VsZW0pKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdTMyIGNwdSk7XFxuaW5jbHVkZS9saW51eC9icGYuaC0xMTctXFx0aW50ICgqbWFwX2dldF9oYXNoKShzdHJ1Y3QgYnBmX21hcCAqbWFwKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9Mzg3OD1leHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfcGVla19lbGVtX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmg6Mzg3OTpleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX3Byb3RvO1xcbmluY2x1ZGUvbGludXgvYnBmLmgtMzg4MC1cXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xNTI3PXVuaW9uIGJwZl9hdHRyIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC01NzM4LSAqXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjU3Mzk6ICogdm9pZCAqYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3Qgdm9pZCAqa2V5LCB1MzIgY3B1KVxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC01NzQwLSAqIFxcdERlc2NyaXB0aW9uXFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNjE5Ny1cXHRGTihrcHRyX3hjaGcsIDE5NCwgIyNjdHgpXFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDo2MTk4OlxcdEZOKG1hcF9sb29rdXBfcGVyY3B1X2VsZW0sIDE5NSwgIyNjdHgpXFx0XFx0XFxcXFxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC02MTk5LVxcdEZOKHNrY190b19tcHRjcF9zb2NrLCAxOTYsICMjY3R4KVxcdFxcdFxcXFxcXG4tLVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYz0yOTQ9c3RhdGljIGludCBwZXJjcHVfYXJyYXlfbWFwX2dlbl9sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZilcXG4tLVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy0zMjQtXFxua2VybmVsL2JwZi9hcnJheW1hcC5jOjMyNTpzdGF0aWMgdm9pZCAqcGVyY3B1X2FycmF5X21hcF9sb29rdXBfcGVyY3B1X2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB1MzIgY3B1KVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy0zMjYte1xcbi0tXFxua2VybmVsL2JwZi9hcnJheW1hcC5jPTg4NT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcGVyY3B1X2FycmF5X21hcF9vcHMgPSB7XFxuLS1cXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtODk2LVxcdC5tYXBfZGVsZXRlX2VsZW0gPSBhcnJheV9tYXBfZGVsZXRlX2VsZW0sXFxua2VybmVsL2JwZi9hcnJheW1hcC5jOjg5NzpcXHQubWFwX2xvb2t1cF9wZXJjcHVfZWxlbSA9IHBlcmNwdV9hcnJheV9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLFxcbmtlcm5lbC9icGYvYXJyYXltYXAuYy04OTgtXFx0Lm1hcF9zZXFfc2hvd19lbGVtID0gcGVyY3B1X2FycmF5X21hcF9zZXFfc2hvd19lbGVtLFxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MzE1Mj1jb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX21hcF9wZWVrX2VsZW1fcHJvdG8gX193ZWFrO1xcbmtlcm5lbC9icGYvY29yZS5jOjMxNTM6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX3Byb3RvIF9fd2VhaztcXG5rZXJuZWwvYnBmL2NvcmUuYy0zMTU0LWNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfc3Bpbl9sb2NrX3Byb3RvIF9fd2VhaztcXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmM9MTUwOD1pbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuLS1cXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNTUtXFx0XFx0ICAgICBpbnNuLVxcdTAwM2VpbW0gPT0gQlBGX0ZVTkNfZm9yX2VhY2hfbWFwX2VsZW0gfHxcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjIwNTY6XFx0XFx0ICAgICBpbnNuLVxcdTAwM2VpbW0gPT0gQlBGX0ZVTkNfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSkpIHtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIwNTctXFx0XFx0XFx0YXV4ID0gXFx1MDAyNmVudi1cXHUwMDNlaW5zbl9hdXhfZGF0YVtpICsgZGVsdGFdO1xcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0yMTA3LVxcdFxcdFxcdFxcdFxcdCAgICAgIHU2NCBmbGFncykpTlVMTCkpO1xcbmtlcm5lbC9icGYvZml4dXBzLmM6MjEwODpcXHRcXHRcXHRCVUlMRF9CVUdfT04oIV9fc2FtZV90eXBlKG9wcy1cXHUwMDNlbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSxcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTIxMDktXFx0XFx0XFx0XFx0ICAgICAodm9pZCAqKCopKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdTMyIGNwdSkpTlVMTCkpO1xcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0yMTM2LVxcdFxcdFxcdFxcdGdvdG8gbmV4dF9pbnNuO1xcbmtlcm5lbC9icGYvZml4dXBzLmM6MjEzNzpcXHRcXHRcXHRjYXNlIEJQRl9GVU5DX21hcF9sb29rdXBfcGVyY3B1X2VsZW06XFxua2VybmVsL2JwZi9maXh1cHMuYzoyMTM4OlxcdFxcdFxcdFxcdGluc24tXFx1MDAzZWltbSA9IEJQRl9DQUxMX0lNTShvcHMtXFx1MDAzZW1hcF9sb29rdXBfcGVyY3B1X2VsZW0pO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtMjEzOS1cXHRcXHRcXHRcXHRnb3RvIG5leHRfaW5zbjtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI0MTQ9c3RhdGljIGludCBodGFiX3BlcmNwdV9tYXBfZ2VuX2xvb2t1cChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmKVxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjQzMi1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyNDMzOnN0YXRpYyB2b2lkICpodGFiX3BlcmNwdV9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdTMyIGNwdSlcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNDM0LXtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI0NDc9c3RhdGljIHZvaWQgKmh0YWJfbHJ1X3BlcmNwdV9tYXBfbG9va3VwX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5KVxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjQ1OC1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyNDU5OnN0YXRpYyB2b2lkICpodGFiX2xydV9wZXJjcHVfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXksIHUzMiBjcHUpXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjQ2MC17XFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNTYwPWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBodGFiX3BlcmNwdV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU3MC1cXHQubWFwX2RlbGV0ZV9lbGVtID0gaHRhYl9tYXBfZGVsZXRlX2VsZW0sXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjU3MTpcXHQubWFwX2xvb2t1cF9wZXJjcHVfZWxlbSA9IGh0YWJfcGVyY3B1X21hcF9sb29rdXBfcGVyY3B1X2VsZW0sXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU3Mi1cXHQubWFwX3NlcV9zaG93X2VsZW0gPSBodGFiX3BlcmNwdV9tYXBfc2VxX3Nob3dfZWxlbSxcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI1ODI9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfbHJ1X3BlcmNwdV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5MS1cXHQubWFwX2RlbGV0ZV9lbGVtID0gaHRhYl9scnVfbWFwX2RlbGV0ZV9lbGVtLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI1OTI6XFx0Lm1hcF9sb29rdXBfcGVyY3B1X2VsZW0gPSBodGFiX2xydV9wZXJjcHVfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSxcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNTkzLVxcdC5tYXBfc2VxX3Nob3dfZWxlbSA9IGh0YWJfcGVyY3B1X21hcF9zZXFfc2hvd19lbGVtLFxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9MTI1PWNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfbWFwX3BlZWtfZWxlbV9wcm90byA9IHtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTEzMi1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoxMzM6QlBGX0NBTExfMyhicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSwgc3RydWN0IGJwZl9tYXAgKiwgbWFwLCB2b2lkICosIGtleSwgdTMyLCBjcHUpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTM0LXtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0xMzUtXFx0V0FSTl9PTl9PTkNFKCFicGZfcmN1X2xvY2tfaGVsZCgpKTtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoxMzY6XFx0cmV0dXJuICh1bnNpZ25lZCBsb25nKSBtYXAtXFx1MDAzZW9wcy1cXHUwMDNlbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShtYXAsIGtleSwgY3B1KTtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0xMzctfVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTEzOC1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoxMzk6Y29uc3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvIGJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX3Byb3RvID0ge1xcbmtlcm5lbC9icGYvaGVscGVycy5jOjE0MDpcXHQuZnVuY1xcdFxcdD0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0sXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTQxLVxcdC5ncGxfb25seVxcdD0gZmFsc2UsXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz0yMDY3PWJwZl9iYXNlX2Z1bmNfcHJvdG8oZW51bSBicGZfZnVuY19pZCBmdW5jX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yMDgxLVxcdFxcdHJldHVybiBcXHUwMDI2YnBmX21hcF9wZWVrX2VsZW1fcHJvdG87XFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjA4MjpcXHRjYXNlIEJQRl9GVU5DX21hcF9sb29rdXBfcGVyY3B1X2VsZW06XFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MjA4MzpcXHRcXHRyZXR1cm4gXFx1MDAyNmJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX3Byb3RvO1xcbmtlcm5lbC9icGYvaGVscGVycy5jLTIwODQtXFx0Y2FzZSBCUEZfRlVOQ19nZXRfcHJhbmRvbV91MzI6XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9OTAyND1zdGF0aWMgaW50IGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjM5LVxcdFxcdGJyZWFrO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5MjQwOlxcdGNhc2UgQlBGX0ZVTkNfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbTpcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI0MS1cXHRcXHRpZiAobWFwLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfUEVSQ1BVX0FSUkFZIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTA1MjE9cmVjb3JkX2Z1bmNfbWFwKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDUzNS1cXHQgICAgZnVuY19pZCAhPSBCUEZfRlVOQ19yZWRpcmVjdF9tYXAgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA1MzY6XFx0ICAgIGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA1MzctXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg9MTUyNz11bmlvbiBicGZfYXR0ciB7XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNTczOC0gKlxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDo1NzM5OiAqIHZvaWQgKmJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIGNvbnN0IHZvaWQgKmtleSwgdTMyIGNwdSlcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNTc0MC0gKiBcXHREZXNjcmlwdGlvblxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTYxOTctXFx0Rk4oa3B0cl94Y2hnLCAxOTQsICMjY3R4KVxcdFxcdFxcdFxcXFxcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6NjE5ODpcXHRGTihtYXBfbG9va3VwX3BlcmNwdV9lbGVtLCAxOTUsICMjY3R4KVxcdFxcdFxcXFxcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtNjE5OS1cXHRGTihza2NfdG9fbXB0Y3Bfc29jaywgMTk2LCAjI2N0eClcXHRcXHRcXFxcXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNS0jaW5jbHVkZSBcXFwiYnBmL2xpYmJwZl9pbnRlcm5hbC5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo2OiNpbmNsdWRlIFxcXCJ0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uc2tlbC5oXFxcIlxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYy03LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo4OnZvaWQgdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKHZvaWQpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTkte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzoxMDpcXHRzdHJ1Y3QgdGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtICpza2VsO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYy0xMS1cXHRib29sICpwb3NzaWJsZSA9IE5VTEw7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtMzctXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jOjM4OlxcdHNrZWwgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW4oKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmM6Mzk6XFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJ0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX29wZW5cXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNDAtXFx0XFx0Z290byBleGl0O1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTQ0LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo0NTpcXHRyZXQgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2xvYWQoc2tlbCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jOjQ2OlxcdGlmICghQVNTRVJUX09LKHJldCwgXFxcInRlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbV9fbG9hZFxcXCIpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYy00Ny1cXHRcXHRnb3RvIGNsZWFudXA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTQ4LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo0OTpcXHRyZXQgPSB0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2F0dGFjaChza2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmM6NTA6XFx0aWYgKCFBU1NFUlRfT0socmV0LCBcXFwidGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19hdHRhY2hcXFwiKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNTEtXFx0XFx0Z290byBjbGVhbnVwO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTYzLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo2NDpcXHR0ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW1fX2RldGFjaChza2VsKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNjUtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmMtNzAtY2xlYW51cDpcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9tYXBfbG9va3VwX3BlcmNwdV9lbGVtLmM6NzE6XFx0dGVzdF9tYXBfbG9va3VwX3BlcmNwdV9lbGVtX19kZXN0cm95KHNrZWwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYy03Mi1leGl0Olxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2Nncm91cF9oaWVyYXJjaGljYWxfc3RhdHMuYz04ND1pbnQgQlBGX1BST0coZmx1c2hlciwgc3RydWN0IGNncm91cCAqY2dycCwgc3RydWN0IGNncm91cCAqcGFyZW50LCBpbnQgY3B1KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2Nncm91cF9oaWVyYXJjaGljYWxfc3RhdHMuYy05My1cXHQvKiBBZGQgQ1BVIGNoYW5nZXMgb24gdGhpcyBsZXZlbCBzaW5jZSB0aGUgbGFzdCBmbHVzaCAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jZ3JvdXBfaGllcmFyY2hpY2FsX3N0YXRzLmM6OTQ6XFx0cGNwdV9jb3VudGVyID0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oXFx1MDAyNnBlcmNwdV9hdHRhY2hfY291bnRlcnMsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2Nncm91cF9oaWVyYXJjaGljYWxfc3RhdHMuYy05NS1cXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZjZ19pZCwgY3B1KTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0ci5jPTM3Mj1pbnQgdGVzdF9tYXBfa3B0cl9yZWZfcG9zdChzdHJ1Y3QgbWFwX3ZhbHVlICp2KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21hcF9rcHRyLmMtNDA3LSNkZWZpbmUgVEVTVF9QQ1BVKG1hcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21hcF9rcHRyLmM6NDA4OlxcdHYgPSBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShcXHUwMDI2bWFwLCBcXHUwMDI2a2V5LCAwKTsgXFxcXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0ci5jLTQwOS1cXHRpZiAoIXYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0ci5jPTQxNj1pbnQgdGVzdF9tYXBfa3B0cl9yZWYxKHN0cnVjdCBfX3NrX2J1ZmYgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0ci5jLTQ1My0jZGVmaW5lIFRFU1RfUENQVShtYXApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0ci5jOjQ1NDpcXHR2ID0gYnBmX21hcF9sb29rdXBfcGVyY3B1X2VsZW0oXFx1MDAyNm1hcCwgXFx1MDAyNmtleSwgMCk7IFxcXFxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWFwX2twdHIuYy00NTUtXFx0aWYgKCF2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbWFwX2twdHJfcmFjZS5jPTg5PWludCB0ZXN0X3BlcmNwdV9odGFiX2xlYWsoc3RydWN0IF9fc2tfYnVmZiAqc2tiKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL21hcF9rcHRyX3JhY2UuYy05OS1cXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIG5yX2NwdXM7IGkrKykge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0cl9yYWNlLmM6MTAwOlxcdFxcdHYgPSBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShcXHUwMDI2cmFjZV9wZXJjcHVfaGFzaF9tYXAsIFxcdTAwMjZrZXksIGkpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9tYXBfa3B0cl9yYWNlLmMtMTAxLVxcdFxcdGlmICghdilcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0xMDM0PWludCBwZXJjcHVfaGFzaF9yZWZjb3VudF9sZWFrKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDM4LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzoxMDM5OlxcdHYgPSBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShcXHUwMDI2cGVyY3B1X2hhc2gsIFxcdTAwMjZrZXksIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDQwLVxcdGlmICghdilcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYz0xMDQ3PWludCBjbGVhcl9wZXJjcHVfaGFzaF9rcHRyKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDUyLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYzoxMDUzOlxcdHYgPSBicGZfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbShcXHUwMDI2cGVyY3B1X2hhc2gsIFxcdTAwMjZrZXksIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yZWZjb3VudGVkX2twdHIuYy0xMDU0LVxcdGlmICghdilcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYz0zOT1zdGF0aWMgaW50IHJlYWRfcGVyY3B1X2VsZW1fY2FsbGJhY2soX191MzIgaW5kZXgsIHN0cnVjdCByZWFkX3BlcmNwdV9lbGVtX2N0eCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTQzLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X21hcF9sb29rdXBfcGVyY3B1X2VsZW0uYzo0NDpcXHR2YWx1ZSA9IGJwZl9tYXBfbG9va3VwX3BlcmNwdV9lbGVtKGN0eC1cXHUwMDNlbWFwLCBcXHUwMDI2a2V5LCBpbmRleCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3RfbWFwX2xvb2t1cF9wZXJjcHVfZWxlbS5jLTQ1LVxcdGlmICh2YWx1ZSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMDQ6NDk6NDUuNzE0MjI4MzQxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI1MzMyNzIzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhpcyBzaXR1YXRpb246XG5cbioqV29ydGhGdXp6aW5nIERlY2lzaW9uKipcblxuQWxyaWdodCwgSSd2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZS4gQWZ0ZXIgYSBxdWljayBsb29rLCBpdCdzIGNsZWFyIHRoZSBjaGFuZ2VzIGFyZSAqb25seSogdG91Y2hpbmcgdGhlIHRlc3Qgc3VpdGUgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC4gVGhlcmUncyBhYnNvbHV0ZWx5IG5vdGhpbmcgaGVyZSB0aGF0IHRvdWNoZXMgY29yZSBrZXJuZWwgc291cmNlIGNvZGUsIHJpZ2h0PyBTbywgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgYFdvcnRoRnV6emluZ2AgaXMgZGV0ZXJtaW5lZCwgdGhlIGFuc3dlciBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBHaXZlbiB0aGF0IHRoZXJlJ3Mgbm8gYWx0ZXJhdGlvbiB0byB0aGUga2VybmVsIGl0c2VsZiwgdGhlIGZ1enppbmcgcG90ZW50aWFsIGhlcmUgaXMgZWZmZWN0aXZlbHkgemVyby4gYFdvcnRoRnV6emluZ2AgYWJzb2x1dGVseSBoYXMgdG8gYmUgYGZhbHNlYCBpbiB0aGlzIGNhc2UuIE5vIHBvaW50IHdhc3RpbmcgY3ljbGVzIG9uIHNvbWV0aGluZyB0aGF0IHdvbid0IGdpdmUgdXMgYW55IHZhbHVhYmxlIGluc2lnaHRzIGludG8ga2VybmVsIHN0YWJpbGl0eSBvciBzZWN1cml0eS4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AgYW5kIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NzAsIk91dHB1dFRva2VucyI6NjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNDo0OTo0Ny45Njc1NTg4MjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgTGludXgga2VybmVsIHJ1bnRpbWUgb3IgY29yZSBzdWJzeXN0ZW1zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwgcnVudGltZSBvciBjb3JlIHN1YnN5c3RlbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQwNDo0OTo0Ny45Njc1ODY0OTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzwr8t[1] Phase: Running StartedAt: 2026-09-02 04:49:59 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzwr8t[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-02 04:49:59 +0000 UTC FinishedAt: 2026-09-02 04:50:04 +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,}