ZGlmZiAtLWdpdCBhL2F1dG8vbGliL3BlcmwvY29uZiBiL2F1dG8vbGliL3BlcmwvY29uZgppbmRleCAxZDdmZTNiLi45ZGJjMjc5IDEwMDY0NAotLS0gYS9hdXRvL2xpYi9wZXJsL2NvbmYKKysrIGIvYXV0by9saWIvcGVybC9jb25mCkBAIC0yMCw2ICsyMCw4IEBACiAgICAgZmkKIAogICAgIENGTEFHUz0iJENGTEFHUyBgJE5HWF9QRVJMIC1NRXh0VXRpbHM6OkVtYmVkIC1lIGNjb3B0c2AiCisgICAgIyBnY2MgNC4xLzQuMgorICAgIENGTEFHUz1gZWNobyAkQ0ZMQUdTIHwgc2VkIC1lICdzLy1XdW51c2VkLXZhbHVlLy1Xbm8tdW51c2VkLXZhbHVlLydgCiAgICAgbmd4X3BlcmxfbGRvcHRzPWAkTkdYX1BFUkwgLU1FeHRVdGlsczo6RW1iZWQgLWUgbGRvcHRzYAogCiAgICAgaWYgJE5HWF9QRVJMIC1WOnVzZW11bHRpcGxpY2l0eSB8IGdyZXAgZGVmaW5lID4gL2Rldi9udWxsOyB0aGVuCmRpZmYgLS1naXQgYS9kb2NzL3htbC9uZ2lueC9jaGFuZ2VzLnhtbCBiL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sCmluZGV4IDNiN2U2ZjMuLjIwZWMzYjAgMTAwNjQ0Ci0tLSBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sCisrKyBiL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sCkBAIC05LDYgKzksNDEgQEAKIDx0aXRsZSBsYW5nPSJlbiI+bmdpbnggY2hhbmdlbG9nPC90aXRsZT4KIAogCis8Y2hhbmdlcyB2ZXI9IjAuMy41NiIgZGF0ZT0iMDQuMDguMjAwNiI+CisKKzxjaGFuZ2UgdHlwZT0iZmVhdHVyZSI+Cis8cGFyYSBsYW5nPSJydSI+CivEydLFy9TJ18EgZGF2X2FjY2Vzcy4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3RoZSAiZGF2X2FjY2VzcyIgZGlyZWN0aXZlLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iZmVhdHVyZSI+Cis8cGFyYSBsYW5nPSJydSI+CivEydLFy9TJ18EgaWYg0M/ExMXS1snXwcXUIM/QxdLB1M/S2SAiLWQiLCAiIS1kIiwgIi1lIiwgIiEtZSIsICIteCIgySAiIS14Ii4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK3RoZSAiaWYiIGRpcmVjdGl2ZSBzdXBwb3J0cyB0aGUgIi1kIiwgIiEtZCIsICItZSIsICIhLWUiLCAiLXgiLCBhbmQgIiEteCIKK29wZXJhdG9ycy4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivQ0skg2sHQydPJINcgYWNjZXNzX2xvZyDOxcvP1M/S2cgg0MXSxcTB18HFzdnIIMvMycXO1NUg09TSz8sg2sHHz8zP18vP1wor0NLPydPIz8TJzCBzZWdtZW50YXRpb24gZmF1bHQsIMXTzMkg2sHQ0s/TINfP2tfSwd3BzCDSxcTJ0sXL1C4KKzwvcGFyYT4KKzxwYXJhIGxhbmc9ImVuIj4KK2Egc2VnbWVudGF0aW9uIGZhdWx0IG9jY3VycmVkIGlmIGFuIHJlcXVlc3QgcmV0dXJuZWQgYW4gcmVkaXJlY3QgYW5kCitzb21lIHNlbnQgdG8gY2xpZW50IGhlYWRlciBsaW5lcyB3ZXJlIGxvZ2dlZCBpbiB0aGUgYWNjZXNzIGxvZy4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8L2NoYW5nZXM+CisKKwogPGNoYW5nZXMgdmVyPSIwLjMuNTUiIGRhdGU9IjI4LjA3LjIwMDYiPgogCiA8Y2hhbmdlIHR5cGU9ImZlYXR1cmUiPgpAQCAtODUsNyArMTIwLDcgQEAKIAogPGNoYW5nZSB0eXBlPSJidWdmaXgiPgogPHBhcmEgbGFuZz0icnUiPgot0NLJIM7Fy8/Uz9LZyCDV08zP18nRyCDXzyDX0sXN0SDQxdLFy8/OxsnH1dLBw8nJIMvPxNkg08nN18/Mz9cg1wor0NLJIM7Fy8/Uz9LZyCDV08zP18nRyCDXzyDX0sXN0SDQxdLFy8/OxsnH1dLBw8nJIMvPxNkg08nN18/Mz9cKINfO1dTSySDEydLFy9TJ19kgY2hhcnNldF9tYXAgzc/HzMkg097J1MHU2NPRIM7F18XSztnNyTsKIM/bycLLwSDQz9HXyczB09gg1yAwLjMuNTAuCiA8L3BhcmE+CmRpZmYgLS1naXQgYS9zcmMvY29yZS9uZ2lueC5oIGIvc3JjL2NvcmUvbmdpbnguaAppbmRleCA4NmJlYWVhLi5jODVlMmE3IDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ2lueC5oCisrKyBiL3NyYy9jb3JlL25naW54LmgKQEAgLTgsNyArOCw3IEBACiAjZGVmaW5lIF9OR0lOWF9IX0lOQ0xVREVEXwogCiAKLSNkZWZpbmUgTkdJTlhfVkVSICAgICAgICAgICJuZ2lueC8wLjMuNTUiCisjZGVmaW5lIE5HSU5YX1ZFUiAgICAgICAgICAibmdpbngvMC4zLjU2IgogCiAjZGVmaW5lIE5HSU5YX1ZBUiAgICAgICAgICAiTkdJTlgiCiAjZGVmaW5lIE5HWF9PTERQSURfRVhUICAgICAiLm9sZGJpbiIKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25neF9maWxlLmMgYi9zcmMvY29yZS9uZ3hfZmlsZS5jCmluZGV4IGE3MzBlZGUuLmY2YmYwNGIgMTAwNjQ0Ci0tLSBhL3NyYy9jb3JlL25neF9maWxlLmMKKysrIGIvc3JjL2NvcmUvbmd4X2ZpbGUuYwpAQCAtMTY2LDcgKzE2Niw3IEBACiAgICAgICAgIG5neF9sb2dfZGVidWcxKE5HWF9MT0dfREVCVUdfQ09SRSwgZmlsZS0+bG9nLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAidGVtcCBmaWxlOiBcIiVzXCIiLCBmaWxlLT5uYW1lLmRhdGEpOwogCi0gICAgICAgIGlmIChuZ3hfY3JlYXRlX2RpcihmaWxlLT5uYW1lLmRhdGEpID09IE5HWF9GSUxFX0VSUk9SKSB7CisgICAgICAgIGlmIChuZ3hfY3JlYXRlX2RpcihmaWxlLT5uYW1lLmRhdGEsIDA3MDApID09IE5HWF9GSUxFX0VSUk9SKSB7CiAgICAgICAgICAgICBlcnIgPSBuZ3hfZXJybm87CiAgICAgICAgICAgICBpZiAoZXJyICE9IE5HWF9FRVhJU1QpIHsKICAgICAgICAgICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfQ1JJVCwgZmlsZS0+bG9nLCBlcnIsCkBAIC0xODQsNyArMTg0LDcgQEAKIAogCiBuZ3hfZXJyX3QKLW5neF9jcmVhdGVfZnVsbF9wYXRoKHVfY2hhciAqZGlyKQorbmd4X2NyZWF0ZV9mdWxsX3BhdGgodV9jaGFyICpkaXIsIG5neF91aW50X3QgYWNjZXNzKQogewogICAgIHVfY2hhciAgICAgKnAsIGNoOwogICAgIG5neF9lcnJfdCAgIGVycjsKQEAgLTE5OCw3ICsxOTgsNyBAQAogCiAgICAgICAgICpwID0gJ1wwJzsKIAotICAgICAgICBpZiAobmd4X2NyZWF0ZV9kaXIoZGlyKSA9PSBOR1hfRklMRV9FUlJPUikgeworICAgICAgICBpZiAobmd4X2NyZWF0ZV9kaXIoZGlyLCBhY2Nlc3MpID09IE5HWF9GSUxFX0VSUk9SKSB7CiAgICAgICAgICAgICBlcnIgPSBuZ3hfZXJybm87CiAgICAgICAgICAgICBpZiAoZXJyICE9IE5HWF9FRVhJU1QpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwpAQCAtMzcwLDcgKzM3MCw3IEBACiAgICAgcGF0aCA9IGN5Y2xlLT5wYXRoZXMuZWx0czsKICAgICBmb3IgKGkgPSAwOyBpIDwgY3ljbGUtPnBhdGhlcy5uZWx0czsgaSsrKSB7CiAKLSAgICAgICAgaWYgKG5neF9jcmVhdGVfZGlyKHBhdGhbaV0tPm5hbWUuZGF0YSkgPT0gTkdYX0ZJTEVfRVJST1IpIHsKKyAgICAgICAgaWYgKG5neF9jcmVhdGVfZGlyKHBhdGhbaV0tPm5hbWUuZGF0YSwgMDcwMCkgPT0gTkdYX0ZJTEVfRVJST1IpIHsKICAgICAgICAgICAgIGVyciA9IG5neF9lcnJubzsKICAgICAgICAgICAgIGlmIChlcnIgIT0gTkdYX0VFWElTVCkgewogICAgICAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19FTUVSRywgY3ljbGUtPmxvZywgZXJyLApkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbmd4X2ZpbGUuaCBiL3NyYy9jb3JlL25neF9maWxlLmgKaW5kZXggM2VjMzA1Ni4uYjUxY2FkMiAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvbmd4X2ZpbGUuaAorKysgYi9zcmMvY29yZS9uZ3hfZmlsZS5oCkBAIC02MSw3ICs2MSw3IEBACiAgICAgbmd4X3Bvb2xfdCAqcG9vbCwgbmd4X3VpbnRfdCBwZXJzaXN0ZW50LG5neF91aW50X3QgbW9kZSk7CiB2b2lkIG5neF9jcmVhdGVfaGFzaGVkX2ZpbGVuYW1lKG5neF9maWxlX3QgKmZpbGUsIG5neF9wYXRoX3QgKnBhdGgpOwogbmd4X2ludF90IG5neF9jcmVhdGVfcGF0aChuZ3hfZmlsZV90ICpmaWxlLCBuZ3hfcGF0aF90ICpwYXRoKTsKLW5neF9lcnJfdCBuZ3hfY3JlYXRlX2Z1bGxfcGF0aCh1X2NoYXIgKmRpcik7CituZ3hfZXJyX3Qgbmd4X2NyZWF0ZV9mdWxsX3BhdGgodV9jaGFyICpkaXIsIG5neF91aW50X3QgYWNjZXNzKTsKIG5neF9pbnRfdCBuZ3hfYWRkX3BhdGgobmd4X2NvbmZfdCAqY2YsIG5neF9wYXRoX3QgKipzbG90KTsKIG5neF9pbnRfdCBuZ3hfY3JlYXRlX3BhdGhlcyhuZ3hfY3ljbGVfdCAqY3ljbGUsIG5neF91aWRfdCB1c2VyKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9kYXZfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2Rhdl9tb2R1bGUuYwppbmRleCAwZWE5MzdmLi45OTAxMzg2IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2Rhdl9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX2Rhdl9tb2R1bGUuYwpAQCAtMTQsNiArMTQsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIG5neF91aW50X3QgIG1ldGhvZHM7CiAgICAgbmd4X2ZsYWdfdCAgY3JlYXRlX2Z1bGxfcHV0X3BhdGg7CisgICAgbmd4X3VpbnRfdCAgYWNjZXNzOwogfSBuZ3hfaHR0cF9kYXZfbG9jX2NvbmZfdDsKIAogCkBAIC0yMiw2ICsyMyw4IEBACiBzdGF0aWMgbmd4X2ludF90IG5neF9odHRwX2Rhdl9lcnJvcihuZ3hfaHR0cF9yZXF1ZXN0X3QgKiwgbmd4X2Vycl90IGVyciwKICAgICBuZ3hfaW50X3Qgbm90X2ZvdW5kLCBjaGFyICpmYWlsZWQsIHVfY2hhciAqcGF0aCk7CiBzdGF0aWMgbmd4X2ludF90IG5neF9odHRwX2Rhdl9sb2NhdGlvbihuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIsIHVfY2hhciAqcGF0aCk7CitzdGF0aWMgY2hhciAqbmd4X2h0dHBfZGF2X2FjY2VzcyhuZ3hfY29uZl90ICpjZiwgbmd4X2NvbW1hbmRfdCAqY21kLAorICAgIHZvaWQgKmNvbmYpOwogc3RhdGljIHZvaWQgKm5neF9odHRwX2Rhdl9jcmVhdGVfbG9jX2NvbmYobmd4X2NvbmZfdCAqY2YpOwogc3RhdGljIGNoYXIgKm5neF9odHRwX2Rhdl9tZXJnZV9sb2NfY29uZihuZ3hfY29uZl90ICpjZiwKICAgICB2b2lkICpwYXJlbnQsIHZvaWQgKmNoaWxkKTsKQEAgLTUzLDYgKzU2LDEzIEBACiAgICAgICBvZmZzZXRvZihuZ3hfaHR0cF9kYXZfbG9jX2NvbmZfdCwgY3JlYXRlX2Z1bGxfcHV0X3BhdGgpLAogICAgICAgTlVMTCB9LAogCisgICAgeyBuZ3hfc3RyaW5nKCJkYXZfYWNjZXNzIiksCisgICAgICBOR1hfSFRUUF9NQUlOX0NPTkZ8TkdYX0hUVFBfU1JWX0NPTkZ8TkdYX0hUVFBfTE9DX0NPTkZ8TkdYX0NPTkZfVEFLRTEyLAorICAgICAgbmd4X2h0dHBfZGF2X2FjY2VzcywKKyAgICAgIE5HWF9IVFRQX0xPQ19DT05GX09GRlNFVCwKKyAgICAgIDAsCisgICAgICBOVUxMIH0sCisKICAgICAgIG5neF9udWxsX2NvbW1hbmQKIH07CiAKQEAgLTIxNCw3ICsyMjQsNyBAQAogICAgICAgICBuZ3hfbG9nX2RlYnVnMShOR1hfTE9HX0RFQlVHX0hUVFAsIHItPmNvbm5lY3Rpb24tPmxvZywgMCwKICAgICAgICAgICAgICAgICAgICAgICAgImh0dHAgbWtjb2wgcGF0aDogXCIlc1wiIiwgcGF0aC5kYXRhKTsKIAotICAgICAgICBpZiAobmd4X2NyZWF0ZV9kaXIocGF0aC5kYXRhKSAhPSBOR1hfRklMRV9FUlJPUikgeworICAgICAgICBpZiAobmd4X2NyZWF0ZV9kaXIocGF0aC5kYXRhLCBkbGNmLT5hY2Nlc3MpICE9IE5HWF9GSUxFX0VSUk9SKSB7CiAgICAgICAgICAgICBpZiAobmd4X2h0dHBfZGF2X2xvY2F0aW9uKHIsIHBhdGguZGF0YSkgIT0gTkdYX09LKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9IVFRQX0lOVEVSTkFMX1NFUlZFUl9FUlJPUjsKICAgICAgICAgICAgIH0KQEAgLTIzMyw2ICsyNDMsOCBAQAogc3RhdGljIHZvaWQKIG5neF9odHRwX2Rhdl9wdXRfaGFuZGxlcihuZ3hfaHR0cF9yZXF1ZXN0X3QgKnIpCiB7CisgICAgY2hhciAgICAgICAgICAgICAgICAgICAgICpmYWlsZWQ7CisgICAgdV9jaGFyICAgICAgICAgICAgICAgICAgICpuYW1lOwogICAgIG5neF9lcnJfdCAgICAgICAgICAgICAgICAgZXJyOwogICAgIG5neF9zdHJfdCAgICAgICAgICAgICAgICAqdGVtcCwgcGF0aDsKICAgICBuZ3hfdWludF90ICAgICAgICAgICAgICAgIHN0YXR1czsKQEAgLTI2Nyw2ICsyNzksMjUgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIGRsY2YgPSBuZ3hfaHR0cF9nZXRfbW9kdWxlX2xvY19jb25mKHIsIG5neF9odHRwX2Rhdl9tb2R1bGUpOworCisjaWYgIShOR1hfV0lOMzIpCisKKyAgICBpZiAobmd4X2NoYW5nZV9maWxlX2FjY2Vzcyh0ZW1wLT5kYXRhLCBkbGNmLT5hY2Nlc3MgJiB+MDExMSkKKyAgICAgICAgPT0gTkdYX0ZJTEVfRVJST1IpCisgICAgeworICAgICAgICBlcnIgPSBuZ3hfZXJybm87CisgICAgICAgIGZhaWxlZCA9IG5neF9jaGFuZ2VfZmlsZV9hY2Nlc3NfbjsKKyAgICAgICAgbmFtZSA9IHRlbXAtPmRhdGE7CisKKyAgICAgICAgZ290byBmYWlsZWQ7CisgICAgfQorCisjZW5kaWYKKworICAgIGZhaWxlZCA9IG5neF9yZW5hbWVfZmlsZV9uOworICAgIG5hbWUgPSBwYXRoLmRhdGE7CisKICAgICBpZiAobmd4X3JlbmFtZV9maWxlKHRlbXAtPmRhdGEsIHBhdGguZGF0YSkgIT0gTkdYX0ZJTEVfRVJST1IpIHsKICAgICAgICAgZ290byBvazsKICAgICB9CkBAIC0yNzUsMTAgKzMwNiw4IEBACiAKICAgICBpZiAoZXJyID09IE5HWF9FTk9FTlQpIHsKIAotICAgICAgICBkbGNmID0gbmd4X2h0dHBfZ2V0X21vZHVsZV9sb2NfY29uZihyLCBuZ3hfaHR0cF9kYXZfbW9kdWxlKTsKLQogICAgICAgICBpZiAoZGxjZi0+Y3JlYXRlX2Z1bGxfcHV0X3BhdGgpIHsKLSAgICAgICAgICAgIGVyciA9IG5neF9jcmVhdGVfZnVsbF9wYXRoKHBhdGguZGF0YSk7CisgICAgICAgICAgICBlcnIgPSBuZ3hfY3JlYXRlX2Z1bGxfcGF0aChwYXRoLmRhdGEsIGRsY2YtPmFjY2Vzcyk7CiAKICAgICAgICAgICAgIGlmIChlcnIgPT0gMCkgewogICAgICAgICAgICAgICAgIGlmIChuZ3hfcmVuYW1lX2ZpbGUodGVtcC0+ZGF0YSwgcGF0aC5kYXRhKSAhPSBOR1hfRklMRV9FUlJPUikgewpAQCAtMzAzLDYgKzMzMiwxMSBAQAogICAgICAgICBlcnIgPSBuZ3hfZXJybm87CiAgICAgfQogCisKKyNlbHNlCisKK2ZhaWxlZDoKKwogI2VuZGlmCiAKICAgICBpZiAobmd4X2RlbGV0ZV9maWxlKHRlbXAtPmRhdGEpID09IE5HWF9GSUxFX0VSUk9SKSB7CkBAIC0zMTEsOSArMzQ1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLT5kYXRhKTsKICAgICB9CiAKLSAgICBuZ3hfaHR0cF9maW5hbGl6ZV9yZXF1ZXN0KHIsIG5neF9odHRwX2Rhdl9lcnJvcihyLCBlcnIsIE5HWF9IVFRQX0NPTkZMSUNULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5neF9yZW5hbWVfZmlsZV9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguZGF0YSkpOworICAgIG5neF9odHRwX2ZpbmFsaXplX3JlcXVlc3QociwKKyAgICAgICAgICAgICAgICAgIG5neF9odHRwX2Rhdl9lcnJvcihyLCBlcnIsIE5HWF9IVFRQX0NPTkZMSUNULCBmYWlsZWQsIG5hbWUpKTsKKwogICAgIHJldHVybjsKIAogb2s6CkBAIC00MDcsNiArNDQxLDY2IEBACiB9CiAKIAorc3RhdGljIGNoYXIgKgorbmd4X2h0dHBfZGF2X2FjY2VzcyhuZ3hfY29uZl90ICpjZiwgbmd4X2NvbW1hbmRfdCAqY21kLCB2b2lkICpjb25mKQoreworICAgIG5neF9odHRwX2Rhdl9sb2NfY29uZl90ICpsY2YgPSBjb25mOworCisgICAgdV9jaGFyICAgICAgKnA7CisgICAgbmd4X3N0cl90ICAgKnZhbHVlOworICAgIG5neF91aW50X3QgICBpLCByaWdodCwgc2hpZnQ7CisKKyAgICBpZiAobGNmLT5hY2Nlc3MgIT0gTkdYX0NPTkZfVU5TRVRfVUlOVCkgeworICAgICAgICByZXR1cm4gImlzIGR1cGxpY2F0ZSI7CisgICAgfQorCisgICAgdmFsdWUgPSBjZi0+YXJncy0+ZWx0czsKKworICAgIGxjZi0+YWNjZXNzID0gMDcwMDsKKworICAgIGZvciAoaSA9IDE7IGkgPCAzOyBpKyspIHsKKworICAgICAgICBwID0gdmFsdWVbaV0uZGF0YTsKKworICAgICAgICBpZiAobmd4X3N0cm5jbXAocCwgInVzZXI6Iiwgc2l6ZW9mKCJ1c2VyOiIpIC0gMSkgPT0gMCkgeworICAgICAgICAgICAgc2hpZnQgPSA2OworICAgICAgICAgICAgcCArPSBzaXplb2YoInVzZXI6IikgLSAxOworCisgICAgICAgIH0gZWxzZSBpZiAobmd4X3N0cm5jbXAocCwgImdyb3VwOiIsIHNpemVvZigiZ3JvdXA6IikgLSAxKSA9PSAwKSB7CisgICAgICAgICAgICBzaGlmdCA9IDM7CisgICAgICAgICAgICBwICs9IHNpemVvZigiZ3JvdXA6IikgLSAxOworCisgICAgICAgIH0gZWxzZSBpZiAobmd4X3N0cm5jbXAocCwgImFsbDoiLCBzaXplb2YoImFsbDoiKSAtIDEpID09IDApIHsKKyAgICAgICAgICAgIHNoaWZ0ID0gMDsKKyAgICAgICAgICAgIHAgKz0gc2l6ZW9mKCJhbGw6IikgLSAxOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBnb3RvIGludmFsaWQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAobmd4X3N0cmNtcChwLCAicnciKSA9PSAwKSB7CisgICAgICAgICAgICByaWdodCA9IDc7CisKKyAgICAgICAgfSBlbHNlIGlmIChuZ3hfc3RyY21wKHAsICJyIikgPT0gMCkgeworICAgICAgICAgICAgcmlnaHQgPSA1OworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBnb3RvIGludmFsaWQ7CisgICAgICAgIH0KKworICAgICAgICBsY2YtPmFjY2VzcyArPSByaWdodCA8PCBzaGlmdDsKKyAgICB9CisKKyAgICByZXR1cm4gTkdYX0NPTkZfT0s7CisKK2ludmFsaWQ6CisKKyAgICBuZ3hfY29uZl9sb2dfZXJyb3IoTkdYX0xPR19FTUVSRywgY2YsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHZhbHVlIFwiJVZcIiIsICZ2YWx1ZVtpXSk7CisgICAgcmV0dXJuIE5HWF9DT05GX0VSUk9SOworfQorCisKIHN0YXRpYyB2b2lkICoKIG5neF9odHRwX2Rhdl9jcmVhdGVfbG9jX2NvbmYobmd4X2NvbmZfdCAqY2YpCiB7CkBAIC00MjQsNiArNTE4LDcgQEAKICAgICAgKi8KIAogICAgIGNvbmYtPmNyZWF0ZV9mdWxsX3B1dF9wYXRoID0gTkdYX0NPTkZfVU5TRVQ7CisgICAgY29uZi0+YWNjZXNzID0gTkdYX0NPTkZfVU5TRVRfVUlOVDsKIAogICAgIHJldHVybiBjb25mOwogfQpAQCAtNDQxLDYgKzUzNiw4IEBACiAgICAgbmd4X2NvbmZfbWVyZ2VfdmFsdWUoY29uZi0+Y3JlYXRlX2Z1bGxfcHV0X3BhdGgsIHByZXYtPmNyZWF0ZV9mdWxsX3B1dF9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgIDApOwogCisgICAgbmd4X2NvbmZfbWVyZ2VfdWludF92YWx1ZShjb25mLT5hY2Nlc3MsIHByZXYtPmFjY2VzcywgMDYwMCk7CisKICAgICByZXR1cm4gTkdYX0NPTkZfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcmV3cml0ZV9tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcmV3cml0ZV9tb2R1bGUuYwppbmRleCA5ODBkZTE5Li4zMGZiY2Q4IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3Jld3JpdGVfbW9kdWxlLmMKKysrIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9yZXdyaXRlX21vZHVsZS5jCkBAIC04MTcsMTEgKzgxNyw0MSBAQAogICAgICAgICAgICAgcmV0dXJuIE5HWF9DT05GX09LOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHBbMV0gPT0gJ2QnKSB7CisgICAgICAgICAgICBmb3AtPm9wID0gbmd4X2h0dHBfc2NyaXB0X2ZpbGVfZGlyOworICAgICAgICAgICAgcmV0dXJuIE5HWF9DT05GX09LOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBbMV0gPT0gJ2UnKSB7CisgICAgICAgICAgICBmb3AtPm9wID0gbmd4X2h0dHBfc2NyaXB0X2ZpbGVfZXhpc3RzOworICAgICAgICAgICAgcmV0dXJuIE5HWF9DT05GX09LOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBbMV0gPT0gJ3gnKSB7CisgICAgICAgICAgICBmb3AtPm9wID0gbmd4X2h0dHBfc2NyaXB0X2ZpbGVfZXhlYzsKKyAgICAgICAgICAgIHJldHVybiBOR1hfQ09ORl9PSzsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChwWzBdID09ICchJykgewogICAgICAgICAgICAgaWYgKHBbMl0gPT0gJ2YnKSB7CiAgICAgICAgICAgICAgICAgZm9wLT5vcCA9IG5neF9odHRwX3NjcmlwdF9maWxlX25vdF9wbGFpbjsKICAgICAgICAgICAgICAgICByZXR1cm4gTkdYX0NPTkZfT0s7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChwWzJdID09ICdkJykgeworICAgICAgICAgICAgICAgIGZvcC0+b3AgPSBuZ3hfaHR0cF9zY3JpcHRfZmlsZV9ub3RfZGlyOworICAgICAgICAgICAgICAgIHJldHVybiBOR1hfQ09ORl9PSzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHBbMl0gPT0gJ2UnKSB7CisgICAgICAgICAgICAgICAgZm9wLT5vcCA9IG5neF9odHRwX3NjcmlwdF9maWxlX25vdF9leGlzdHM7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9DT05GX09LOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocFsyXSA9PSAneCcpIHsKKyAgICAgICAgICAgICAgICBmb3AtPm9wID0gbmd4X2h0dHBfc2NyaXB0X2ZpbGVfbm90X2V4ZWM7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9DT05GX09LOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgbmd4X2NvbmZfbG9nX2Vycm9yKE5HWF9MT0dfRU1FUkcsIGNmLCAwLApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zc2xfbW9kdWxlLmMgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3NzbF9tb2R1bGUuYwppbmRleCA4Yzc4ZTBmLi4zNDRmNjEzIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3NzbF9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3NzbF9tb2R1bGUuYwpAQCAtMTcsNiArMTcsNyBAQAogI2RlZmluZSBOR1hfREVGTEFVVF9DSVBIRVJTICAiQUxMOiFBREg6UkM0K1JTQTorSElHSDorTUVESVVNOitMT1c6K1NTTHYyOitFWFAiCiAKIAorc3RhdGljIGludCBuZ3hfaHR0cF9zc2xfdmVyaWZ5X2NhbGxiYWNrKGludCBvaywgWDUwOV9TVE9SRV9DVFggKng1MDlfc3RvcmUpOwogc3RhdGljIG5neF9pbnRfdCBuZ3hfaHR0cF9zc2xfdmFyaWFibGUobmd4X2h0dHBfcmVxdWVzdF90ICpyLAogICAgIG5neF9odHRwX3ZhcmlhYmxlX3ZhbHVlX3QgKnYsIHVpbnRwdHJfdCBkYXRhKTsKIHN0YXRpYyBuZ3hfaW50X3Qgbmd4X2h0dHBfc3NsX2NsaWVudF9zX2RuKG5neF9odHRwX3JlcXVlc3RfdCAqciwKQEAgLTM4NCw3ICszODUsOCBAQAogICAgIH0KIAogICAgIGlmIChjb25mLT52ZXJpZnkpIHsKLSAgICAgICAgU1NMX0NUWF9zZXRfdmVyaWZ5KGNvbmYtPnNzbC5jdHgsIE5HWF9TU0xfVkVSSUZZLCBOVUxMKTsKKyAgICAgICAgU1NMX0NUWF9zZXRfdmVyaWZ5KGNvbmYtPnNzbC5jdHgsIE5HWF9TU0xfVkVSSUZZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmd4X2h0dHBfc3NsX3ZlcmlmeV9jYWxsYmFjayk7CiAKICAgICAgICAgU1NMX0NUWF9zZXRfdmVyaWZ5X2RlcHRoKGNvbmYtPnNzbC5jdHgsIGNvbmYtPnZlcmlmeV9kZXB0aCk7CiAKQEAgLTQyMiw2ICs0MjQsMTMgQEAKIH0KIAogCitzdGF0aWMgaW50CituZ3hfaHR0cF9zc2xfdmVyaWZ5X2NhbGxiYWNrKGludCBvaywgWDUwOV9TVE9SRV9DVFggKng1MDlfc3RvcmUpCit7CisgICAgcmV0dXJuIDE7Cit9CisKKwogI2lmICFkZWZpbmVkIChTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFKQogCiBzdGF0aWMgY2hhciAqCmRpZmYgLS1naXQgYS9zcmMvaHR0cC9uZ3hfaHR0cF9oZWFkZXJfZmlsdGVyX21vZHVsZS5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfaGVhZGVyX2ZpbHRlcl9tb2R1bGUuYwppbmRleCBhYzQ1NDNiLi5hMWIwMmY1IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9oZWFkZXJfZmlsdGVyX21vZHVsZS5jCisrKyBiL3NyYy9odHRwL25neF9odHRwX2hlYWRlcl9maWx0ZXJfbW9kdWxlLmMKQEAgLTQ2MCw2ICs0NjAsOCBAQAogCiAgICAgICAgIHItPmhlYWRlcnNfb3V0LmxvY2F0aW9uLT52YWx1ZS5sZW4gPSBiLT5sYXN0IC0gcDsKICAgICAgICAgci0+aGVhZGVyc19vdXQubG9jYXRpb24tPnZhbHVlLmRhdGEgPSBwOworICAgICAgICByLT5oZWFkZXJzX291dC5sb2NhdGlvbi0+a2V5LmxlbiA9IHNpemVvZigiTG9jYXRpb246ICIpIC0gMTsKKyAgICAgICAgci0+aGVhZGVyc19vdXQubG9jYXRpb24tPmtleS5kYXRhID0gKHVfY2hhciAqKSAiTG9jYXRpb246ICI7CiAKICAgICAgICAgKmItPmxhc3QrKyA9IENSOyAqYi0+bGFzdCsrID0gTEY7CiAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jIGIvc3JjL2h0dHAvbmd4X2h0dHBfcmVxdWVzdC5jCmluZGV4IGU2NDVlODEuLjQyOTMzZTggMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL25neF9odHRwX3JlcXVlc3QuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9yZXF1ZXN0LmMKQEAgLTEyNjksMzQgKzEyNjksNiBAQAogICAgICAgICByZXR1cm4gTkdYX0VSUk9SOwogICAgIH0KIAotI2lmIChOR1hfSFRUUF9TU0wpCi0KLSAgICBpZiAoci0+Y29ubmVjdGlvbi0+c3NsKSB7Ci0gICAgICAgIHNzY2YgPSBuZ3hfaHR0cF9nZXRfbW9kdWxlX3Nydl9jb25mKHIsIG5neF9odHRwX3NzbF9tb2R1bGUpOwotCi0gICAgICAgIGlmIChzc2NmLT52ZXJpZnkpIHsKLSAgICAgICAgICAgIHJjID0gU1NMX2dldF92ZXJpZnlfcmVzdWx0KHItPmNvbm5lY3Rpb24tPnNzbC0+Y29ubmVjdGlvbik7Ci0KLSAgICAgICAgICAgIGlmIChyYyAhPSBYNTA5X1ZfT0spIHsKLSAgICAgICAgICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfSU5GTywgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsaWVudCBTU0wgY2VydGlmaWNhdGUgdmVyaWZ5IGVycm9yOiAlbCAiLCByYyk7Ci0gICAgICAgICAgICAgICAgbmd4X2h0dHBfZmluYWxpemVfcmVxdWVzdChyLCBOR1hfSFRUUFNfQ0VSVF9FUlJPUik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9FUlJPUjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKFNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShyLT5jb25uZWN0aW9uLT5zc2wtPmNvbm5lY3Rpb24pCi0gICAgICAgICAgICAgICAgPT0gTlVMTCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfSU5GTywgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsaWVudCBzZW50IG5vIHJlcXVpcmVkIFNTTCBjZXJ0aWZpY2F0ZSIpOwotICAgICAgICAgICAgICAgIG5neF9odHRwX2ZpbmFsaXplX3JlcXVlc3QociwgTkdYX0hUVFBTX05PX0NFUlQpOwotICAgICAgICAgICAgICAgIHJldHVybiBOR1hfRVJST1I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSNlbmRpZgotCiAgICAgaWYgKHItPmhlYWRlcnNfaW4uY29ubmVjdGlvbikgewogICAgICAgICBpZiAoci0+aGVhZGVyc19pbi5jb25uZWN0aW9uLT52YWx1ZS5sZW4gPT0gNQogICAgICAgICAgICAgJiYgbmd4X3N0cmNhc2VjbXAoci0+aGVhZGVyc19pbi5jb25uZWN0aW9uLT52YWx1ZS5kYXRhLCAiY2xvc2UiKQpAQCAtMTM2Miw2ICsxMzM0LDM1IEBACiAgICAgICAgIH0KICAgICB9CiAKKyNpZiAoTkdYX0hUVFBfU1NMKQorCisgICAgaWYgKHItPmNvbm5lY3Rpb24tPnNzbCkgeworICAgICAgICBzc2NmID0gbmd4X2h0dHBfZ2V0X21vZHVsZV9zcnZfY29uZihyLCBuZ3hfaHR0cF9zc2xfbW9kdWxlKTsKKworICAgICAgICBpZiAoc3NjZi0+dmVyaWZ5KSB7CisgICAgICAgICAgICByYyA9IFNTTF9nZXRfdmVyaWZ5X3Jlc3VsdChyLT5jb25uZWN0aW9uLT5zc2wtPmNvbm5lY3Rpb24pOworCisgICAgICAgICAgICBpZiAocmMgIT0gWDUwOV9WX09LKSB7CisgICAgICAgICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0lORk8sIHItPmNvbm5lY3Rpb24tPmxvZywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbGllbnQgU1NMIGNlcnRpZmljYXRlIHZlcmlmeSBlcnJvcjogKCVsOiVzKSAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmMsIFg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nKHJjKSk7CisgICAgICAgICAgICAgICAgbmd4X2h0dHBfZmluYWxpemVfcmVxdWVzdChyLCBOR1hfSFRUUFNfQ0VSVF9FUlJPUik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5HWF9FUlJPUjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKFNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShyLT5jb25uZWN0aW9uLT5zc2wtPmNvbm5lY3Rpb24pCisgICAgICAgICAgICAgICAgPT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfSU5GTywgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsaWVudCBzZW50IG5vIHJlcXVpcmVkIFNTTCBjZXJ0aWZpY2F0ZSIpOworICAgICAgICAgICAgICAgIG5neF9odHRwX2ZpbmFsaXplX3JlcXVlc3QociwgTkdYX0hUVFBTX05PX0NFUlQpOworICAgICAgICAgICAgICAgIHJldHVybiBOR1hfRVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyNlbmRpZgorCiAgICAgcmV0dXJuIE5HWF9PSzsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfc2NyaXB0LmMgYi9zcmMvaHR0cC9uZ3hfaHR0cF9zY3JpcHQuYwppbmRleCA4M2MxOTk4Li45NDdiY2U2IDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9zY3JpcHQuYworKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9zY3JpcHQuYwpAQCAtOTYxLDggKzk2MSwxMyBAQAogCiAgICAgICAgIHN3aXRjaCAoY29kZS0+b3ApIHsKICAgICAgICAgY2FzZSBuZ3hfaHR0cF9zY3JpcHRfZmlsZV9wbGFpbjoKKyAgICAgICAgY2FzZSBuZ3hfaHR0cF9zY3JpcHRfZmlsZV9kaXI6CisgICAgICAgIGNhc2Ugbmd4X2h0dHBfc2NyaXB0X2ZpbGVfZXhpc3RzOgorICAgICAgICBjYXNlIG5neF9odHRwX3NjcmlwdF9maWxlX2V4ZWM6CiAgICAgICAgICAgICAgZ290byBmYWxzZTsKICAgICAgICAgY2FzZSBuZ3hfaHR0cF9zY3JpcHRfZmlsZV9ub3RfcGxhaW46CisgICAgICAgIGNhc2Ugbmd4X2h0dHBfc2NyaXB0X2ZpbGVfbm90X2RpcjoKKyAgICAgICAgY2FzZSBuZ3hfaHR0cF9zY3JpcHRfZmlsZV9ub3RfZXhlYzoKICAgICAgICAgICAgICBnb3RvIHRydWU7CiAgICAgICAgIH0KIApAQCAtOTgxLDYgKzk4Niw1NCBAQAogICAgICAgICAgICAgZ290byBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBnb3RvIHRydWU7CisKKyAgICBjYXNlIG5neF9odHRwX3NjcmlwdF9maWxlX2RpcjoKKyAgICAgICAgaWYgKG5neF9pc19kaXIoJmZpKSkgeworICAgICAgICAgICAgIGdvdG8gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBnb3RvIGZhbHNlOworCisgICAgY2FzZSBuZ3hfaHR0cF9zY3JpcHRfZmlsZV9ub3RfZGlyOgorICAgICAgICBpZiAobmd4X2lzX2RpcigmZmkpKSB7CisgICAgICAgICAgICBnb3RvIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGdvdG8gdHJ1ZTsKKworICAgIGNhc2Ugbmd4X2h0dHBfc2NyaXB0X2ZpbGVfZXhpc3RzOgorICAgICAgICBpZiAobmd4X2lzX2ZpbGUoJmZpKSB8fCBuZ3hfaXNfZGlyKCZmaSkgfHwgbmd4X2lzX2xpbmsoJmZpKSkgeworICAgICAgICAgICAgIGdvdG8gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBnb3RvIGZhbHNlOworCisgICAgY2FzZSBuZ3hfaHR0cF9zY3JpcHRfZmlsZV9ub3RfZXhpc3RzOgorICAgICAgICBpZiAobmd4X2lzX2ZpbGUoJmZpKSB8fCBuZ3hfaXNfZGlyKCZmaSkgfHwgbmd4X2lzX2xpbmsoJmZpKSkgeworICAgICAgICAgICAgZ290byBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBnb3RvIHRydWU7CisKKyNpZiAoTkdYX1dJTjMyKQorCisgICAgY2FzZSBuZ3hfaHR0cF9zY3JpcHRfZmlsZV9leGVjOgorICAgICAgICBnb3RvIGZhbHNlOworCisgICAgY2FzZSBuZ3hfaHR0cF9zY3JpcHRfZmlsZV9ub3RfZXhlYzoKKyAgICAgICAgZ290byB0cnVlOworCisjZWxzZQorCisgICAgY2FzZSBuZ3hfaHR0cF9zY3JpcHRfZmlsZV9leGVjOgorICAgICAgICBpZiAobmd4X2lzX2V4ZWMoJmZpKSkgeworICAgICAgICAgICAgIGdvdG8gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBnb3RvIGZhbHNlOworCisgICAgY2FzZSBuZ3hfaHR0cF9zY3JpcHRfZmlsZV9ub3RfZXhlYzoKKyAgICAgICAgaWYgKG5neF9pc19leGVjKCZmaSkpIHsKKyAgICAgICAgICAgIGdvdG8gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZ290byB0cnVlOworCisjZW5kaWYKICAgICB9CiAKIGZhbHNlOgpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbmd4X2h0dHBfc2NyaXB0LmggYi9zcmMvaHR0cC9uZ3hfaHR0cF9zY3JpcHQuaAppbmRleCBjNGFhNDA4Li5jYWM3NjUwIDEwMDY0NAotLS0gYS9zcmMvaHR0cC9uZ3hfaHR0cF9zY3JpcHQuaAorKysgYi9zcmMvaHR0cC9uZ3hfaHR0cF9zY3JpcHQuaApAQCAtMTQwLDcgKzE0MCwxMyBAQAogCiB0eXBlZGVmIGVudW0gewogICAgIG5neF9odHRwX3NjcmlwdF9maWxlX3BsYWluID0gMCwKLSAgICBuZ3hfaHR0cF9zY3JpcHRfZmlsZV9ub3RfcGxhaW4KKyAgICBuZ3hfaHR0cF9zY3JpcHRfZmlsZV9ub3RfcGxhaW4sCisgICAgbmd4X2h0dHBfc2NyaXB0X2ZpbGVfZGlyLAorICAgIG5neF9odHRwX3NjcmlwdF9maWxlX25vdF9kaXIsCisgICAgbmd4X2h0dHBfc2NyaXB0X2ZpbGVfZXhpc3RzLAorICAgIG5neF9odHRwX3NjcmlwdF9maWxlX25vdF9leGlzdHMsCisgICAgbmd4X2h0dHBfc2NyaXB0X2ZpbGVfZXhlYywKKyAgICBuZ3hfaHR0cF9zY3JpcHRfZmlsZV9ub3RfZXhlYwogfSBuZ3hfaHR0cF9zY3JpcHRfZmlsZV9vcF9lOwogCiAKZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9maWxlcy5oIGIvc3JjL29zL3VuaXgvbmd4X2ZpbGVzLmgKaW5kZXggMjliNjQ5NS4uZGZmZWY1MiAxMDA2NDQKLS0tIGEvc3JjL29zL3VuaXgvbmd4X2ZpbGVzLmgKKysrIGIvc3JjL29zL3VuaXgvbmd4X2ZpbGVzLmgKQEAgLTYxLDYgKzYxLDEwIEBACiAjZGVmaW5lIG5neF9yZW5hbWVfZmlsZV9uICAgICAgICAicmVuYW1lIgogCiAKKyNkZWZpbmUgbmd4X2NoYW5nZV9maWxlX2FjY2VzcyhuLCBhKSBjaG1vZCgoY29uc3QgY2hhciAqKSBuLCBhKQorI2RlZmluZSBuZ3hfY2hhbmdlX2ZpbGVfYWNjZXNzX24gImNobW9kIgorCisKICNkZWZpbmUgbmd4X2ZpbGVfaW5mbyhmaWxlLCBzYikgIHN0YXQoKGNvbnN0IGNoYXIgKikgZmlsZSwgc2IpCiAjZGVmaW5lIG5neF9maWxlX2luZm9fbiAgICAgICAgICAic3RhdCgpIgogCkBAIC02OSw2ICs3Myw4IEBACiAKICNkZWZpbmUgbmd4X2lzX2RpcihzYikgICAgICAgICAgIChTX0lTRElSKChzYiktPnN0X21vZGUpKQogI2RlZmluZSBuZ3hfaXNfZmlsZShzYikgICAgICAgICAgKFNfSVNSRUcoKHNiKS0+c3RfbW9kZSkpCisjZGVmaW5lIG5neF9pc19saW5rKHNiKSAgICAgICAgICAoU19JU0xOSygoc2IpLT5zdF9tb2RlKSkKKyNkZWZpbmUgbmd4X2lzX2V4ZWMoc2IpICAgICAgICAgICgoc2IpLT5zdF9tb2RlICYgU19JWFVTUikKICNkZWZpbmUgbmd4X2ZpbGVfc2l6ZShzYikgICAgICAgIChzYiktPnN0X3NpemUKICNkZWZpbmUgbmd4X2ZpbGVfbXRpbWUoc2IpICAgICAgIChzYiktPnN0X210aW1lCiAjZGVmaW5lIG5neF9maWxlX3VuaXEoc2IpICAgICAgICAoc2IpLT5zdF9pbm8KQEAgLTk1LDcgKzEwMSw3IEBACiAjZGVmaW5lIG5neF9yZWFkX2Rpcl9uICAgICAgICAgICAicmVhZGRpcigpIgogCiAKLSNkZWZpbmUgbmd4X2NyZWF0ZV9kaXIobmFtZSkgICAgIG1rZGlyKChjb25zdCBjaGFyICopIG5hbWUsIDA3MDApCisjZGVmaW5lIG5neF9jcmVhdGVfZGlyKG5hbWUsIGFjY2VzcykgbWtkaXIoKGNvbnN0IGNoYXIgKikgbmFtZSwgYWNjZXNzKQogI2RlZmluZSBuZ3hfY3JlYXRlX2Rpcl9uICAgICAgICAgIm1rZGlyKCkiCiAKIApkaWZmIC0tZ2l0IGEvc3JjL29zL3dpbjMyL25neF9maWxlcy5oIGIvc3JjL29zL3dpbjMyL25neF9maWxlcy5oCmluZGV4IGJlYmEwYTguLmIxYzcyMzAgMTAwNjQ0Ci0tLSBhL3NyYy9vcy93aW4zMi9uZ3hfZmlsZXMuaAorKysgYi9zcmMvb3Mvd2luMzIvbmd4X2ZpbGVzLmgKQEAgLTkwLDYgKzkwLDcgQEAKIAogI2RlZmluZSBuZ3hfaXNfZGlyKGZpKSAgICAgICgoZmkpLT5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQogI2RlZmluZSBuZ3hfaXNfZmlsZShmaSkgICAgICEoKGZpKS0+ZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKKyNkZWZpbmUgbmd4X2lzX2xpbmsoZmkpICAgICAwCiAKIAogI2RlZmluZSBuZ3hfZmlsZV9zaXplKGZpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xMjcsNyArMTI4LDcgQEAKICNkZWZpbmUgbmd4X2Nsb3NlX2Rpcl9uICAgICAgICAgICAgICJGaW5kQ2xvc2UoKSIKIAogCi0jZGVmaW5lIG5neF9jcmVhdGVfZGlyKG5hbWUpICAgICAgICBDcmVhdGVEaXJlY3RvcnkoKGNvbnN0IGNoYXIgKikgbmFtZSwgTlVMTCkKKyNkZWZpbmUgbmd4X2NyZWF0ZV9kaXIobmFtZSwgYWNjZXNzKSBDcmVhdGVEaXJlY3RvcnkoKGNvbnN0IGNoYXIgKikgbmFtZSwgTlVMTCkKICNkZWZpbmUgbmd4X2NyZWF0ZV9kaXJfbiAgICAgICAgICAgICJDcmVhdGVEaXJlY3RvcnkoKSIKIAogCg==