ZGlmZiAtLWdpdCBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKaW5kZXggNTA1ZmJkZS4uNGZkZTBiNyAxMDA2NDQKLS0tIGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKKysrIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKQEAgLTYsNiArNiw0NiBAQAogICAgICAgICAgICAgdGl0bGU9Im5naW54Ij4KIAogCis8Y2hhbmdlcyB2ZXI9IjAuMS4xMiIgZGF0ZT0iMDYuMTIuMjAwNCI+CisKKzxjaGFuZ2UgdHlwZT0iZmVhdHVyZSI+Cis8cGFyYSBsYW5nPSJydSI+CivQwdLBzcXU0iDMz8fBICVyZXF1ZXN0X2xlbmd0aC4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3RoZSAlcmVxdWVzdF9sZW5ndGggbG9nIHBhcmFtZXRlci4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivQ0skgydPQz8zY2s/Xwc7JySAvZGV2L3BvbGwsIHNlbGVjdCDJIHBvbGwgzsEg0MzB1MbP0s3ByCwgx8TFINfP2s3P1s7ZCivMz9bO2cUg09LBwsHU2dfBzsnRINXLwdrBzs7ZyCDNxdTPxM/XLCDNz8fMySDC2dTYIMTMydTFzNjO2cUg2sHExdLWy8kKK9DSySDPwtLBws/Uy8Ug2sHQ0s/TwSDQzyBrZWVwLWFsaXZlINPPxcTJzsXOycAuCivuwcLMwMTBzM/T2CDQzyDL0sHKzsXKIM3F0sUgzsEgU29sYXJpcyDTIMnT0M/M2NrP18HOycXNIC9kZXYvcG9sbC4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3doZW4gdXNpbmcgdGhlIC9kZXYvcG9sbCwgc2VsZWN0IGFuZCBwb2xsIG9uIHRoZSBwbGF0Zm9ybXMsIHdoZXJlCit0aGVzZSBtZXRob2RzIG1heSBkbyB0aGUgZmFsc2UgcmVwb3J0cywgdGhlcmUgbWF5IGJlIHRoZSBsb25nIGRlbGF5IHdoZW4KK3RoZSByZXF1ZXN0IHdhcyBwYXNzZWQgdmlhIHRoZSBrZWVwLWFsaXZlIGNvbm5lY3Rpb24uCitJdCBtYXkgYmUgYXQgbGVhc3Qgb24gU29sYXJpcyB3aGVuIHVzaW5nIHRoZSAvZGV2L3BvbGwuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPGNoYW5nZSB0eXBlPSJidWdmaXgiPgorPHBhcmEgbGFuZz0icnUiPgorxMnSxcvUydfBIHNlbmRfbG93YXQgycfOz9LJ0tXF1NPRIM7BIExpbnV4LCDUwcsgy8HLIExpbnV4IM7FINDPxMTF0tbJ18HF1Aorz9DDycAgU09fU05ETE9XQVQuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgc2VuZF9sb3dhdCBkaXJlY3RpdmUgaXMgaWdub3JlZCBvbiBMaW51eCBiZWNhdXNlIExpbnV4IGRvZXMgbm90IHN1cHBvcnQKK3RoZSBTT19TTkRMT1dBVCBvcHRpb24uCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPC9jaGFuZ2VzPgorCisKIDxjaGFuZ2VzIHZlcj0iMC4xLjExIiBkYXRlPSIwMi4xMi4yMDA0Ij4KIAogPGNoYW5nZSB0eXBlPSJmZWF0dXJlIj4KZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25naW54LmggYi9zcmMvY29yZS9uZ2lueC5oCmluZGV4IDNhYzI4ZjEuLmEzNjg5NWUgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25naW54LmgKKysrIGIvc3JjL2NvcmUvbmdpbnguaApAQCAtOCw3ICs4LDcgQEAKICNkZWZpbmUgX05HSU5YX0hfSU5DTFVERURfCiAKIAotI2RlZmluZSBOR0lOWF9WRVIgICAgICAgICAgIm5naW54LzAuMS4xMSIKKyNkZWZpbmUgTkdJTlhfVkVSICAgICAgICAgICJuZ2lueC8wLjEuMTIiCiAKICNkZWZpbmUgTkdJTlhfVkFSICAgICAgICAgICJOR0lOWCIKICNkZWZpbmUgTkdYX05FV1BJRF9FWFQgICAgICIubmV3YmluIgpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9pbmRleF9oYW5kbGVyLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2luZGV4X2hhbmRsZXIuYwppbmRleCA3NGNjZjBhLi44OTJiODI1IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2luZGV4X2hhbmRsZXIuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2luZGV4X2hhbmRsZXIuYwpAQCAtNDc3LDEyICs0NzcsMTIgQEAKICAgICAgICAgfQogICAgIH0KIAotI2VuZGlmCi0KICAgICBpZiAoY29uZi0+bWF4X2luZGV4X2xlbiA8IHByZXYtPm1heF9pbmRleF9sZW4pIHsKICAgICAgICAgY29uZi0+bWF4X2luZGV4X2xlbiA9IHByZXYtPm1heF9pbmRleF9sZW47CiAgICAgfQogCisjZW5kaWYKKwogICAgIGlmIChjb25mLT5pbmRleF9jYWNoZSA9PSBOVUxMKSB7CiAgICAgICAgIGNvbmYtPmluZGV4X2NhY2hlID0gcHJldi0+aW5kZXhfY2FjaGU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfbG9nX2hhbmRsZXIuYyBiL3NyYy9odHRwL25neF9odHRwX2xvZ19oYW5kbGVyLmMKaW5kZXggZmQzNzM0NC4uNzFjYmIyOSAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfbG9nX2hhbmRsZXIuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9sb2dfaGFuZGxlci5jCkBAIC0yOCw2ICsyOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnRwdHJfdCBkYXRhKTsKIHN0YXRpYyB1X2NoYXIgKm5neF9odHRwX2xvZ19hcGFjaGVfbGVuZ3RoKG5neF9odHRwX3JlcXVlc3RfdCAqciwgdV9jaGFyICpidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50cHRyX3QgZGF0YSk7CitzdGF0aWMgdV9jaGFyICpuZ3hfaHR0cF9sb2dfcmVxdWVzdF9sZW5ndGgobmd4X2h0dHBfcmVxdWVzdF90ICpyLCB1X2NoYXIgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50cHRyX3QgZGF0YSk7CiBzdGF0aWMgdV9jaGFyICpuZ3hfaHR0cF9sb2dfaGVhZGVyX2luKG5neF9odHRwX3JlcXVlc3RfdCAqciwgdV9jaGFyICpidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnRwdHJfdCBkYXRhKTsKIHN0YXRpYyB1X2NoYXIgKm5neF9odHRwX2xvZ19jb25uZWN0aW9uX2hlYWRlcl9vdXQobmd4X2h0dHBfcmVxdWVzdF90ICpyLApAQCAtMTE4LDYgKzEyMCw4IEBACiAgICAgeyBuZ3hfc3RyaW5nKCJzdGF0dXMiKSwgMywgbmd4X2h0dHBfbG9nX3N0YXR1cyB9LAogICAgIHsgbmd4X3N0cmluZygibGVuZ3RoIiksIE5HWF9PRkZfVF9MRU4sIG5neF9odHRwX2xvZ19sZW5ndGggfSwKICAgICB7IG5neF9zdHJpbmcoImFwYWNoZV9sZW5ndGgiKSwgTkdYX09GRl9UX0xFTiwgbmd4X2h0dHBfbG9nX2FwYWNoZV9sZW5ndGggfSwKKyAgICB7IG5neF9zdHJpbmcoInJlcXVlc3RfbGVuZ3RoIiksIE5HWF9PRkZfVF9MRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ3hfaHR0cF9sb2dfcmVxdWVzdF9sZW5ndGggfSwKICAgICB7IG5neF9zdHJpbmcoImkiKSwgTkdYX0hUVFBfTE9HX0FSRywgbmd4X2h0dHBfbG9nX2hlYWRlcl9pbiB9LAogICAgIHsgbmd4X3N0cmluZygibyIpLCBOR1hfSFRUUF9MT0dfQVJHLCBuZ3hfaHR0cF9sb2dfaGVhZGVyX291dCB9LAogICAgIHsgbmd4X251bGxfc3RyaW5nLCAwLCBOVUxMIH0KQEAgLTI4Myw2ICsyODcsMTMgQEAKIH0KIAogCitzdGF0aWMgdV9jaGFyICpuZ3hfaHR0cF9sb2dfcmVxdWVzdF9sZW5ndGgobmd4X2h0dHBfcmVxdWVzdF90ICpyLCB1X2NoYXIgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50cHRyX3QgZGF0YSkKK3sKKyAgICByZXR1cm4gbmd4X3NwcmludGYoYnVmLCAiJU8iLCByLT5yZXF1ZXN0X2xlbmd0aCk7Cit9CisKKwogc3RhdGljIHVfY2hhciAqbmd4X2h0dHBfbG9nX2hlYWRlcl9pbihuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIHVfY2hhciAqYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50cHRyX3QgZGF0YSkKIHsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYyBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYwppbmRleCBmZTNkNTE2Li5iMmMzNTE2IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jCkBAIC03OTUsNiArNzk1LDggQEAKICAgICAgICAgICAgIG5neF9sb2dfZGVidWcwKE5HWF9MT0dfREVCVUdfSFRUUCwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHAgaGVhZGVyIGRvbmUiKTsKIAorICAgICAgICAgICAgci0+cmVxdWVzdF9sZW5ndGggKz0gci0+aGVhZGVyX2luLT5wb3MgLSByLT5oZWFkZXJfaW4tPnN0YXJ0OworCiAgICAgICAgICAgICByLT5odHRwX3N0YXRlID0gTkdYX0hUVFBfUFJPQ0VTU19SRVFVRVNUX1NUQVRFOwogCiAgICAgICAgICAgICByYyA9IG5neF9odHRwX3Byb2Nlc3NfcmVxdWVzdF9oZWFkZXIocik7CkBAIC05MjIsNiArOTI0LDggQEAKIAogICAgICAgICAvKiB0aGUgY2xpZW50IGZpbGxzIHVwIHRoZSBidWZmZXIgd2l0aCAiXHJcbiIgKi8KIAorICAgICAgICByLT5yZXF1ZXN0X2xlbmd0aCArPSByLT5oZWFkZXJfaW4tPmVuZCAtIHItPmhlYWRlcl9pbi0+c3RhcnQ7CisKICAgICAgICAgci0+aGVhZGVyX2luLT5wb3MgPSByLT5oZWFkZXJfaW4tPnN0YXJ0OwogICAgICAgICByLT5oZWFkZXJfaW4tPmxhc3QgPSByLT5oZWFkZXJfaW4tPnN0YXJ0OwogCkBAIC05ODEsNiArOTg1LDggQEAKICAgICAgICAgICogdG8gcmVsb2NhdGUgdGhlIHBhcnNlciBoZWFkZXIgcG9pbnRlcnMKICAgICAgICAgICovCiAKKyAgICAgICAgci0+cmVxdWVzdF9sZW5ndGggKz0gci0+aGVhZGVyX2luLT5lbmQgLSByLT5oZWFkZXJfaW4tPnN0YXJ0OworCiAgICAgICAgIHItPmhlYWRlcl9pbiA9IGI7CiAKICAgICAgICAgcmV0dXJuIE5HWF9PSzsKQEAgLTk4OSw2ICs5OTUsOCBAQAogICAgIG5neF9sb2dfZGVidWcxKE5HWF9MT0dfREVCVUdfSFRUUCwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAogICAgICAgICAgICAgICAgICAgICJodHRwIGxhcmdlIGhlYWRlciBjb3B5OiAlZCIsIHItPmhlYWRlcl9pbi0+cG9zIC0gb2xkKTsKIAorICAgIHItPnJlcXVlc3RfbGVuZ3RoICs9IG9sZCAtIHItPmhlYWRlcl9pbi0+c3RhcnQ7CisKICAgICBuZXcgPSBiLT5zdGFydDsKIAogICAgIG5neF9tZW1jcHkobmV3LCBvbGQsIHItPmhlYWRlcl9pbi0+cG9zIC0gb2xkKTsKQEAgLTE4MTAsNiArMTgxOCwxMCBAQAogICAgIGMtPmxvZ19lcnJvciA9IE5HWF9FUlJPUl9JTkZPOwogCiAgICAgaWYgKG4gPT0gTkdYX0FHQUlOKSB7CisgICAgICAgIGlmIChuZ3hfaGFuZGxlX2xldmVsX3JlYWRfZXZlbnQocmV2KSA9PSBOR1hfRVJST1IpIHsKKyAgICAgICAgICAgIG5neF9odHRwX2Nsb3NlX2Nvbm5lY3Rpb24oYyk7CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xOTMyLDYgKzE5NDQsMTEgQEAKIAogICAgIH0gd2hpbGUgKHJldi0+cmVhZHkpOwogCisgICAgaWYgKG5neF9oYW5kbGVfbGV2ZWxfcmVhZF9ldmVudChyZXYpID09IE5HWF9FUlJPUikgeworICAgICAgICBuZ3hfaHR0cF9jbG9zZV9jb25uZWN0aW9uKGMpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2xjZiA9IG5neF9odHRwX2dldF9tb2R1bGVfbG9jX2NvbmYociwgbmd4X2h0dHBfY29yZV9tb2R1bGUpOwogCiAgICAgdGltZXIgKj0gMTAwMDsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuaCBiL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuaAppbmRleCAxNDFkYWExLi5iZGM5Y2IyIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmgKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5oCkBAIC0yOTgsNiArMjk4LDggQEAKICAgICAvKiB1c2VkIHRvIGxlYXJuIHRoZSBBcGFjaGUgY29tcGF0aWJsZSByZXNwb25zZSBsZW5ndGggd2l0aG91dCBhIGhlYWRlciAqLwogICAgIHNpemVfdCAgICAgICAgICAgICAgIGhlYWRlcl9zaXplOwogCisgICAgc2l6ZV90ICAgICAgICAgICAgICAgcmVxdWVzdF9sZW5ndGg7CisKICAgICB1X2NoYXIgICAgICAgICAgICAgICpkaXNjYXJkZWRfYnVmZmVyOwogICAgIHZvaWQgICAgICAgICAgICAgICAqKmVycl9jdHg7CiAgICAgbmd4X3VpbnRfdCAgICAgICAgICAgZXJyX3N0YXR1czsKZGlmZiAtLWdpdCBhL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3RfYm9keS5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdF9ib2R5LmMKaW5kZXggYzllYzZmYS4uZWI2YWViZiAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdF9ib2R5LmMKKysrIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdF9ib2R5LmMKQEAgLTQyLDYgKzQyLDcgQEAKICAgICAgICAgICAgIC8qIHRoZSB3aG9sZSByZXF1ZXN0IGJvZHkgd2FzIHByZS1yZWFkICovCiAKICAgICAgICAgICAgIHItPmhlYWRlcl9pbi0+cG9zICs9IHItPmhlYWRlcnNfaW4uY29udGVudF9sZW5ndGhfbjsKKyAgICAgICAgICAgIHItPnJlcXVlc3RfbGVuZ3RoICs9IHItPmhlYWRlcnNfaW4uY29udGVudF9sZW5ndGhfbjsKIAogICAgICAgICAgICAgci0+cmVxdWVzdF9ib2R5LT5oYW5kbGVyKHItPnJlcXVlc3RfYm9keS0+ZGF0YSk7CiAKQEAgLTQ5LDYgKzUwLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIHItPmhlYWRlcl9pbi0+cG9zID0gci0+aGVhZGVyX2luLT5sYXN0OworICAgICAgICByLT5yZXF1ZXN0X2xlbmd0aCArPSBzaXplOwogICAgIH0KIAogCkBAIC0xNzMsNiArMTc1LDcgQEAKIAogICAgICAgICByLT5yZXF1ZXN0X2JvZHktPmJ1Zi0+bGFzdCArPSBuOwogICAgICAgICByLT5yZXF1ZXN0X2JvZHktPnJlc3QgLT0gbjsKKyAgICAgICAgci0+cmVxdWVzdF9sZW5ndGggKz0gbjsKIAogICAgICAgICBpZiAoci0+cmVxdWVzdF9ib2R5LT5yZXN0ID09IDApIHsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X2xpbnV4X2NvbmZpZy5oIGIvc3JjL29zL3VuaXgvbmd4X2xpbnV4X2NvbmZpZy5oCmluZGV4IDg0ZWFmNWMuLmJiMDhmNDEgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9saW51eF9jb25maWcuaAorKysgYi9zcmMvb3MvdW5peC9uZ3hfbGludXhfY29uZmlnLmgKQEAgLTgwLDYgKzgwLDEyIEBACiAjZW5kaWYKIAogCisjaWZuZGVmIE5HWF9IQVZFX1NPX1NORExPV0FUCisvKiBzZXRzb2Nrb3B0KFNPX1NORExPV0FUKSByZXR1cm5zIEVOT1BST1RPT1BUICovCisjZGVmaW5lIE5HWF9IQVZFX1NPX1NORExPV0FUICAgICAgICAgMAorI2VuZGlmCisKKwogI2lmbmRlZiBOR1hfSEFWRV9JTkhFUklURURfTk9OQkxPQ0sKICNkZWZpbmUgTkdYX0hBVkVfSU5IRVJJVEVEX05PTkJMT0NLICAwCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9zb2xhcmlzX2NvbmZpZy5oIGIvc3JjL29zL3VuaXgvbmd4X3NvbGFyaXNfY29uZmlnLmgKaW5kZXggNDUyODUwYy4uZTM4NzAwNiAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X3NvbGFyaXNfY29uZmlnLmgKKysrIGIvc3JjL29zL3VuaXgvbmd4X3NvbGFyaXNfY29uZmlnLmgKQEAgLTc2LDcgKzc2LDcgQEAKIAogCiAjaWZuZGVmIE5HWF9IQVZFX1NPX1NORExPV0FUCi0vKiBzZXRzb2Nrb3B0KFNPX1NORExPV0FUKSByZXR1cm5zIGVycm9yICJPcHRpb24gbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbCIgKi8KKy8qIHNldHNvY2tvcHQoU09fU05ETE9XQVQpIHJldHVybnMgRU5PUFJPVE9PUFQgKi8KICNkZWZpbmUgTkdYX0hBVkVfU09fU05ETE9XQVQgICAgICAgICAwCiAjZW5kaWYKIAo=