From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Takao Fujiwara To: git-commits@fedoraproject.org Subject: [rpms/ibus] autotool: Delete ibus-HEAD.patch Date: Sun, 31 May 2026 02:06:39 GMT Message-ID: <178019319906.1.2017495390622560238.rpms-ibus-4950bbe7d42c@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: 4950bbe7d42cf6e36b52e9367cc176598b36750d QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiA0OTUwYmJlN2Q0MmNmNmUzNmI1MmU5MzY3Y2MxNzY1OThiMzY3 NTBkCkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDE3LTEwLTIyVDIwOjE2OjI0KzA5OjAwClN0YXRzICA6ICswLy00MzU4IGluIDEgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lidXMvYy80OTUw YmJlN2Q0MmNmNmUzNmI1MmU5MzY3Y2MxNzY1OThiMzY3NTBkP2JyYW5jaD1hdXRvdG9vbAoKTG9n OgpEZWxldGUgaWJ1cy1IRUFELnBhdGNoCgotLS0KZGlmZiAtLWdpdCBhL2lidXMtSEVBRC5wYXRj aCBiL2lidXMtSEVBRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjViN2Ri Ny4uMDAwMDAwMAotLS0gYS9pYnVzLUhFQUQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MzU4 ICswLDAgQEAKLUZyb20gZTZiYWI3YWI3OGM2OWQyMzhhNzBhNjRlNjA5NjNkZDVhNjcxMWZmZSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZlbGl4IFlhbiA8ZmVsaXhvbm1hcnNAYXJj aGxpbnV4Lm9yZz4KLURhdGU6IEZyaSwgMTkgTWF5IDIwMTcgMTI6MTM6MDQgKzA5MDAKLVN1Ympl Y3Q6IFtQQVRDSF0gRml4IGEgdHlwbyBpbiBjb25maWd1cmUuYWMKLQotQlVHPWh0dHBzOi8vZ2l0 aHViLmNvbS9pYnVzL2lidXMvcHVsbC8xOTI3Ci1SPVNoYXduLlAuSHVhbmdAZ21haWwuY29tCi0K LVJldmlldyBVUkw6IGh0dHBzOi8vY29kZXJldmlldy5hcHBzcG90LmNvbS8zMTc2NDAwNDMKLQot UGF0Y2ggZnJvbSBGZWxpeCBZYW4gPGZlbGl4b25tYXJzQGFyY2hsaW51eC5vcmc+LgotLS0tCi0g Y29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1p bmRleCAyMTliODlkLi4yY2M5NmQxIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9j b25maWd1cmUuYWMKLUBAIC03MjcsNyArNzI3LDcgQEAgQnVpbGQgb3B0aW9uczoKLSAgIEVuYWJs ZSBzdXJyb3VuZGluZy10ZXh0ICAgICAgICRlbmFibGVfc3Vycm91bmRpbmdfdGV4dAotICAgRW5h YmxlIGxpYm5vdGlmeSAgICAgICAgICAgICAgJGVuYWJsZV9saWJub3RpZnkKLSAgIEVuYWJsZSBF bW9qaSBkaWN0ICAgICAgICAgICAgICRlbmFibGVfZW1vamlfZGljdAotLSAgVWljb2RlIEVtb2pp IGRpcmVjdG9yeSAgICAgICAgJFVOSUNPREVfRU1PSklfRElSCi0rICBVbmljb2RlIEVtb2ppIGRp cmVjdG9yeSAgICAgICAkVU5JQ09ERV9FTU9KSV9ESVIKLSAgIENMRFIgYW5ub3RhdGlvbiBkaXJl Y3RvcnkgICAgICRFTU9KSV9BTk5PVEFUSU9OX0RJUgotICAgUnVuIHRlc3QgY2FzZXMgICAgICAg ICAgICAgICAgJGVuYWJsZV90ZXN0cwotIF0pCi0tLSAKLTIuOS4zCi0KLUZyb20gNGZlMzA1MGVm YTczMzVmODI4NzBmYjFkNWExZDE3MGQyMGFmYzE2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwg MjIgTWF5IDIwMTcgMTI6MDQ6MjggKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBD aGFuZ2UgcmVsYXRpdmUgcGF0aHMgdG8gYWJzb2x1dGUgb25lcwotCi1CVUc9aHR0cHM6Ly9naXRo dWIuY29tL2lidXMvaWJ1cy9pc3N1ZXMvMTkyNgotUj1TaGF3bi5QLkh1YW5nQGdtYWlsLmNvbQot Ci1SZXZpZXcgVVJMOiBodHRwczovL2NvZGVyZXZpZXcuYXBwc3BvdC5jb20vMzIyOTkwMDQzCi0t LS0KLSBjb25maWd1cmUuYWMgfCAxMSArKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMSBp bnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMK LWluZGV4IDJjYzk2ZDEuLmNiNDhhZDQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBi L2NvbmZpZ3VyZS5hYwotQEAgLTYzNCwxMCArNjM0LDIxIEBAIGlmIHRlc3QgeCIkZW5hYmxlX2Vt b2ppX2RpY3QiID0geCJ5ZXMiOyB0aGVuCi0gICAgIGlmIHRlc3QgISAtZiAkVU5JQ09ERV9FTU9K SV9ESVIvZW1vamktdGVzdC50eHQgOyB0aGVuCi0gICAgICAgICBBQ19NU0dfRVJST1IoTm90IGZv dW5kICRVTklDT0RFX0VNT0pJX0RJUi9lbW9qaS10ZXN0LnR4dC4gWW91IGNhbiBnZXQgXAotIHRo ZSBlbW9qaSBmaWxlcyBmcm9tIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL2Vtb2ppLzQu MC8pCi0rICAgIGVsc2UKLSsgICAgICAgICMgUE9TSVggU0hFTEwgaGFzIG5vICR7Rk9POjA6MX0K LSsgICAgICAgIGhlYWQ9YGVjaG8gIiRVTklDT0RFX0VNT0pJX0RJUiIgfCBjdXQgLWMxYDsKLSsg ICAgICAgIGlmIHRlc3QgJGhlYWQgIT0gIi8iIDsgdGhlbgotKyAgICAgICAgICAgIFVOSUNPREVf RU1PSklfRElSPWByZWFscGF0aCAiJFVOSUNPREVfRU1PSklfRElSImAKLSsgICAgICAgIGZpCi0g ICAgIGZpCi0gICAgIGlmIHRlc3QgISAtZiAkRU1PSklfQU5OT1RBVElPTl9ESVIvZW4ueG1sIDsg dGhlbgotICAgICAgICAgQUNfTVNHX0VSUk9SKE5vdCBmb3VuZCAkRU1PSklfQU5OT1RBVElPTl9E SVIvZW4ueG1sLiBZb3UgY2FuIGdldCBcCi0gaHR0cHM6Ly9naXRodWIuY29tL2Z1aml3YXJhdC9j bGRyLWVtb2ppLWFubm90YXRpb24pCi0rICAgIGVsc2UKLSsgICAgICAgIGhlYWQ9YGVjaG8gIiRF TU9KSV9BTk5PVEFUSU9OX0RJUiIgfCBjdXQgLWMxYDsKLSsgICAgICAgIGlmIHRlc3QgJGhlYWQg IT0gIi8iIDsgdGhlbgotKyAgICAgICAgICAgIEVNT0pJX0FOTk9UQVRJT05fRElSPWByZWFscGF0 aCAiJEVNT0pJX0FOTk9UQVRJT05fRElSImAKLSsgICAgICAgIGZpCi0gICAgIGZpCi0gICAgIGVu YWJsZV9lbW9qaV9kaWN0PSJ5ZXMgKGVuYWJsZWQsIHVzZSAtLWRpc2FibGUtZW1vamktZGljdCB0 byBkaXNhYmxlKSIKLSBmaQotLS0gCi0yLjkuMwotCi1Gcm9tIDQ0ZDA1MzU3N2E2YWMxMTVmM2Zk M2I3YmViN2JkZDY1ZGE4MWFhNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWpp d2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDI0IE1heSAyMDE3 IDExOjUyOjE5ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGVuZ2luZTogQWRkIE1hbGF5IGFuZCBN b25nb2xpYW4ga2V5bWFwcwotCi1SPVNoYXduLlAuSHVhbmdAZ21haWwuY29tCi0KLVJldmlldyBV Ukw6IGh0dHBzOi8vY29kZXJldmlldy5hcHBzcG90LmNvbS8zMjU3OTAwNDMKLS0tLQotIGVuZ2lu ZS9zaW1wbGUueG1sLmluIHwgMjIgKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFu Z2VkLCAyMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9lbmdpbmUvc2ltcGxlLnhtbC5p biBiL2VuZ2luZS9zaW1wbGUueG1sLmluCi1pbmRleCBjMDgwMDBmLi5mMzVkN2E1IDEwMDY0NAot LS0tIGEvZW5naW5lL3NpbXBsZS54bWwuaW4KLSsrKyBiL2VuZ2luZS9zaW1wbGUueG1sLmluCi1A QCAtNzA2LDUgKzcwNiwyNyBAQAotICAgICAgICAgICAgICAgICAgICAgICAgIDxpY29uPmlidXMt a2V5Ym9hcmQ8L2ljb24+Ci0gCQkJPHJhbms+MTwvcmFuaz4KLSAJCTwvZW5naW5lPgotKyAgICAg ICAgICAgICAgICA8ZW5naW5lPgotKyAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPnhrYjpt eTo6bXNhPC9uYW1lPgotKyAgICAgICAgICAgICAgICAgICAgICAgIDxsYW5ndWFnZT5tczwvbGFu Z3VhZ2U+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgPGxpY2Vuc2U+R1BMPC9saWNlbnNlPgot KyAgICAgICAgICAgICAgICAgICAgICAgIDxhdXRob3I+UGVuZyBIdWFuZyAmbHQ7c2hhd24ucC5o dWFuZ0BnbWFpbC5jb20mZ3Q7PC9hdXRob3I+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgPGxh eW91dD5teTwvbGF5b3V0PgotKyAgICAgICAgICAgICAgICAgICAgICAgIDxsb25nbmFtZT5NYWxh eSAoSmF3aSk8L2xvbmduYW1lPgotKyAgICAgICAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlv bj5NYWxheSAoSmF3aSk8L2Rlc2NyaXB0aW9uPgotKyAgICAgICAgICAgICAgICAgICAgICAgIDxp Y29uPmlidXMta2V5Ym9hcmQ8L2ljb24+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgPHJhbms+ MTwvcmFuaz4KLSsgICAgICAgICAgICAgICAgPC9lbmdpbmU+Ci0rICAgICAgICAgICAgICAgIDxl bmdpbmU+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+eGtiOm1uOjptb248L25hbWU+ Ci0rICAgICAgICAgICAgICAgICAgICAgICAgPGxhbmd1YWdlPm1uPC9sYW5ndWFnZT4KLSsgICAg ICAgICAgICAgICAgICAgICAgICA8bGljZW5zZT5HUEw8L2xpY2Vuc2U+Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgPGF1dGhvcj5QZW5nIEh1YW5nICZsdDtzaGF3bi5wLmh1YW5nQGdtYWlsLmNv bSZndDs8L2F1dGhvcj4KLSsgICAgICAgICAgICAgICAgICAgICAgICA8bGF5b3V0Pm1uPC9sYXlv dXQ+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgPGxvbmduYW1lPk1vbmdvbGlhbjwvbG9uZ25h bWU+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPk1vbmdvbGlhbjwvZGVz Y3JpcHRpb24+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgPGljb24+aWJ1cy1rZXlib2FyZDwv aWNvbj4KLSsgICAgICAgICAgICAgICAgICAgICAgICA8cmFuaz4xPC9yYW5rPgotKyAgICAgICAg ICAgICAgICA8L2VuZ2luZT4KLSAJPC9lbmdpbmVzPgotIDwvY29tcG9uZW50PgotLS0gCi0yLjku MwotCi1Gcm9tIDA4MWQwOWYxYTkyN2Y0NTlkYWNkYTNiY2M1OWExNjc4Y2EyZjlhOTUgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci1EYXRlOiBNb24sIDI5IE1heSAyMDE3IDExOjU0OjMxICswOTAwCi1TdWJqZWN0OiBb UEFUQ0hdIHVpL2d0azM6IEVtb2ppZXIgc3VwcG9ydHMgQ3RybC1jLHYseCBhbmQgQ3RybC1TaGlm dC1jCi0KLUN0cmwtW2N8dnx4XSBjb3B5LCBwYXN0ZSwgb3IgY3V0IHRoZSBlbW9qaSBhbm5vdGF0 b25zLgotQ3RybC1TaGlmdC1jIGNvcGllcyB0aGUgc2VsZWN0ZWQgZW1vamkuCi1BbHNvIEN0cmwt QmFja3NwYWNlIGlzIGltcGxlbWVudGVkIHRvIGRlbGV0ZSBhbiBhbm5vdGF0aW9uIHdvcmQuCi1B bHNvIHVwZGF0ZWQgaWJ1cy1lbW9qaS43LmluIG1hbiBwYWdlLgotCi1SPXBlbmdodWFuZ0Bnb29n bGUuY29tCi0KLVJldmlldyBVUkw6IGh0dHBzOi8vY29kZXJldmlldy5hcHBzcG90LmNvbS8zMTY2 NTAwNDMKLS0tLQotIHVpL2d0azMvZW1vamllci52YWxhICAgIHwgNTggKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQotIHVpL2d0azMvaWJ1cy1lbW9qaS43 LmluIHwgMTEgKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3VpL2d0azMvZW1vamllci52YWxhIGIvdWkv Z3RrMy9lbW9qaWVyLnZhbGEKLWluZGV4IGQwZDY5ZWQuLjFkMTA1ZmQgMTAwNjQ0Ci0tLS0gYS91 aS9ndGszL2Vtb2ppZXIudmFsYQotKysrIGIvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKLUBAIC0xMzky LDcgKzEzOTIsMjYgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cg ewotICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgY2FzZSBHZGsuS2V5LkJhY2tT cGFjZToKLSAgICAgICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbigpID4gMCkgewot LSAgICAgICAgICAgICAgICBHTGliLlNpZ25hbC5lbWl0X2J5X25hbWUobV9lbnRyeSwgImJhY2tz cGFjZSIpOwotKyAgICAgICAgICAgICAgICBpZiAoKG1vZGlmaWVycyAmIEdkay5Nb2RpZmllclR5 cGUuQ09OVFJPTF9NQVNLKSAhPSAwKSB7Ci0rICAgICAgICAgICAgICAgICAgICBHTGliLlNpZ25h bC5lbWl0X2J5X25hbWUobV9lbnRyeSwgImRlbGV0ZS1mcm9tLWN1cnNvciIsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrLkRlbGV0ZVR5cGUuV09SRF9F TkRTLCAtMSk7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgICAg ICBHTGliLlNpZ25hbC5lbWl0X2J5X25hbWUobV9lbnRyeSwgImJhY2tzcGFjZSIpOwotKyAgICAg ICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotKyAgICAgICAgICAg IH0KLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgR2RrLktleS5EZWxldGU6Ci0r ICAgICAgICBjYXNlIEdkay5LZXkuS1BfRGVsZXRlOgotKyAgICAgICAgICAgIGlmIChtX2VudHJ5 LmdldF90ZXh0KCkubGVuKCkgPiAwKSB7Ci0rICAgICAgICAgICAgICAgIGlmICgobW9kaWZpZXJz ICYgR2RrLk1vZGlmaWVyVHlwZS5DT05UUk9MX01BU0spICE9IDApIHsKLSsgICAgICAgICAgICAg ICAgICAgIEdMaWIuU2lnbmFsLmVtaXRfYnlfbmFtZShtX2VudHJ5LCAiZGVsZXRlLWZyb20tY3Vy c29yIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGsu RGVsZXRlVHlwZS5XT1JEX0VORFMsIDEpOwotKyAgICAgICAgICAgICAgICB9IGVsc2UgewotKyAg ICAgICAgICAgICAgICAgICAgR0xpYi5TaWduYWwuZW1pdF9ieV9uYW1lKG1fZW50cnksICJkZWxl dGUtZnJvbS1jdXJzb3IiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEd0ay5EZWxldGVUeXBlLkNIQVJTLCAxKTsKLSsgICAgICAgICAgICAgICAgfQotKyAg ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg YnJlYWs7Ci0gICAgICAgICBjYXNlIEdkay5LZXkuc3BhY2U6Ci1AQCAtMTQ0NSw2ICsxNDY0LDEw IEBAIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAg ICAgICBpZiAoa2V5X3ByZXNzX2N1cnNvcl9ob21lX2VuZChrZXl2YWwsIG1vZGlmaWVycykpCi0g ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgIGJyZWFrOwotKyAgICAg ICAgY2FzZSBHZGsuS2V5Lkluc2VydDoKLSsgICAgICAgIGNhc2UgR2RrLktleS5LUF9JbnNlcnQ6 Ci0rICAgICAgICAgICAgR0xpYi5TaWduYWwuZW1pdF9ieV9uYW1lKG1fZW50cnksICJ0b2dnbGUt b3ZlcndyaXRlIik7Ci0rICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICB9Ci0gCi0g ICAgICAgICBpZiAoKG1vZGlmaWVycyAmIEdkay5Nb2RpZmllclR5cGUuQ09OVFJPTF9NQVNLKSAh PSAwKSB7Ci1AQCAtMTQ3MCw4ICsxNDkzLDEzIEBAIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFw cGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICBjYXNlIEdkay5LZXkudToKLS0gICAg ICAgICAgICAgICAgaWYgKGtleV9wcmVzc19lc2NhcGUoKSkKLSsgICAgICAgICAgICAgICAgaWYg KG1fZW50cnkuZ2V0X3RleHQoKS5sZW4oKSA+IDApIHsKLSsgICAgICAgICAgICAgICAgICAgIEdM aWIuU2lnbmFsLmVtaXRfYnlfbmFtZShtX2VudHJ5LAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJkZWxldGUtZnJvbS1jdXJzb3IiLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5EZWxldGVUeXBlLlBBUkFHUkFQ SF9FTkRTLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0x KTsKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotKyAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIGNhc2UgR2RrLktleS5hOgot ICAgICAgICAgICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbigpID4gMCkgewotQEAg LTE0NzksNiArMTUwNywzMiBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldp bmRvdyB7Ci0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICBjYXNlIEdkay5LZXku eDoKLSsgICAgICAgICAgICAgICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW4oKSA+IDApIHsK LSsgICAgICAgICAgICAgICAgICAgIEdMaWIuU2lnbmFsLmVtaXRfYnlfbmFtZShtX2VudHJ5LCAi Y3V0LWNsaXBib2FyZCIpOwotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0rICAg ICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgY2Fz ZSBHZGsuS2V5LkM6Ci0rICAgICAgICAgICAgY2FzZSBHZGsuS2V5LmM6Ci0rICAgICAgICAgICAg ICAgIGlmICgobW9kaWZpZXJzICYgR2RrLk1vZGlmaWVyVHlwZS5TSElGVF9NQVNLKSAhPSAwKSB7 Ci0rICAgICAgICAgICAgICAgICAgICBpZiAobV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJsZSkg ewotKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgaW5kZXggPSBtX2xvb2t1cF90YWJsZS5n ZXRfY3Vyc29yX3BvcygpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gbV9s b29rdXBfdGFibGUuZ2V0X2NhbmRpZGF0ZShpbmRleCkudGV4dDsKLSsgICAgICAgICAgICAgICAg ICAgICAgICBHdGsuQ2xpcGJvYXJkIGNsaXBib2FyZCA9Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHdGsuQ2xpcGJvYXJkLmdldChHZGsuU0VMRUNUSU9OX0NMSVBCT0FSRCk7Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgY2xpcGJvYXJkLnNldF90ZXh0KHRleHQsIC0xKTsKLSsg ICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmQuc3RvcmUoKTsKLSsgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAg ICAgICAgICAgfSBlbHNlIGlmIChtX2VudHJ5LmdldF90ZXh0KCkubGVuKCkgPiAwKSB7Ci0rICAg ICAgICAgICAgICAgICAgICBHTGliLlNpZ25hbC5lbWl0X2J5X25hbWUobV9lbnRyeSwgImNvcHkt Y2xpcGJvYXJkIik7Ci0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgICAg ICAgICAgICAgfQotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICBjYXNlIEdk ay5LZXkudjoKLSsgICAgICAgICAgICAgICAgR0xpYi5TaWduYWwuZW1pdF9ieV9uYW1lKG1fZW50 cnksICJwYXN0ZS1jbGlwYm9hcmQiKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g ICAgICAgICAgICAgfQotICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLWRp ZmYgLS1naXQgYS91aS9ndGszL2lidXMtZW1vamkuNy5pbiBiL3VpL2d0azMvaWJ1cy1lbW9qaS43 LmluCi1pbmRleCBhNTA0NWY2Li40ZWU4NjM2IDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9pYnVzLWVt b2ppLjcuaW4KLSsrKyBiL3VpL2d0azMvaWJ1cy1lbW9qaS43LmluCi1AQCAtODMsNiArODMsMTcg QEAgTW92ZSB0byB0aGUgbmV4dCBvciBwcmV2aW91cyBwYWdlIGluIHRoZSBlbW9qaSBsaXN0Lgot IFxmQkhlYWQsIEVuZCwgQ29udHJvbC1oIG9yIENvbnRyb2wtZVxmUgotIFNlbGVjdCB0aGUgZmly c3Qgb3IgbGFzdCBlbW9qaSBvbiB0aGUgbGlzdCBpZiBhbiBhbm5vdGF0aW9uIGlzIG5vdCB0eXBl ZC4KLSBPdGhlcndpc2UgbW92ZSB0aGUgY3Vyc29yIHRvIHRoZSBoZWFkIG9yIGVuZCBpbiB0aGUg dHlwZWQgYW5ub3RhdGlvbi4KLSsuVFAKLStcZkJDb250cm9sLXVcZlIKLStFcmFzZSB0aGUgdHlw ZWQgYW5ub3RhdGlvbi4KLSsuVFAKLStcZkJDb250cm9sLXggb3IgQ29udHJvbC12IG9yIENvbnRy b2wtY1xmUgotK0N1dCB0aGUgc2VsZWN0ZWQgYW5ub3RhdGlvbiB0byB0aGUgY2xpcGJvYXJkIHdp dGggQ29udHJvbC14LiBQYXN0ZQotK3RoZSBjb250ZW50cyBvZiB0aGUgY2xpcGJvYXJkIGludG8g dGhlIGFubm90YXRpb24gZW50cnkgd2l0aCBDb250cm9sLXYuCi0rQ29weSB0aGUgc2VsZWN0ZWQg YW5ub3RhdGlvbiB0byB0aGUgY2xpcGJvYXJkIHdpdGggQ29udHJvbC1jLgotKy5UUAotK1xmQkNv bnRyb2wtU2hpZnQtY1xmUgotK0NvcHkgdGhlIHNlbGVjdGVkIGVtb2ppIHRvIHRoZSBjbGlwYm9h cmQuCi0gCi0gLlNIIEJVR1MKLSBJZiB5b3UgZmluZCBhIGJ1ZywgcGxlYXNlIHJlcG9ydCBpdCBh dCBodHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3VlcwotLS0gCi0yLjkuMwotCi1Gcm9t IGFkODA5OTlmNWExMGZhZWUxYTY2NWEyMjMyZTFjZjYwYmU5MDFjYzggTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1E YXRlOiBNb24sIDI5IE1heSAyMDE3IDEyOjAzOjQxICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1h a2UgYWxsIGVtb2ppIGRpY3RzIGZvciBmdWxseSBxdWFsaWZpZWQKLQotQ3VycmVudGx5IG9ubHkg ZW1vamktZW4uZGljdCBlbmFibGVzIGZ1bGx5IHF1YWxpZmllZCBzaW5jZSBpdCBpbXBvcnRzCi1l bW9qaS10ZXN0LnR4dCBhbmQgaXQgY2F1c2VzIHRvIGhhcmRseSBjb21wYXJlIGVtb2ppcyBiZXR3 ZWVuCi1lbW9qaS1lbi5kaWN0IGFuZCBlbW9qaS0kbGFuZy5kaWN0IHdoZW4gbV9zaG93X2Vtb2pp X3ZhcmlhbnQKLWlzIGVuYWJsZWQuIEUuZy4gVSsxRjNDQy1GRTBGLTIwMEQtMjY0Mi1GRTBGCi1O b3cgZW1vamktJGxhbmcuZGljdCBhbHNvIGltcG9ydCBlbW9qaS10ZXN0LnR4dCBhbmQgZW5hYmxl cwotZnVsbHkgcXVhbGlmaWVkLgotCi1SPXBlbmdodWFuZ0Bnb29nbGUuY29tCi0KLVJldmlldyBV Ukw6IGh0dHBzOi8vY29kZXJldmlldy5hcHBzcG90LmNvbS8zMjM4NjAwNDMKLS0tLQotIHNyYy9N YWtlZmlsZS5hbSAgICAgIHwgICAxICsKLSBzcmMvZW1vamktcGFyc2VyLmMgICB8IDE2NyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KLSBzcmMvaWJ1 c2Vtb2ppLmMgICAgICB8ICAgMiArLQotIHVpL2d0azMvZW1vamllci52YWxhIHwgIDM0ICsrKysr LS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCAxNjkgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWlu ZGV4IDI3Y2QxNjguLmU3YmM4YmUgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBi L3NyYy9NYWtlZmlsZS5hbQotQEAgLTI2Myw2ICsyNjMsNyBAQCBkaWN0cy9lbW9qaS1lbi5kaWN0 OiBlbW9qaS1wYXJzZXIKLSAJICAgICAgICAgICAgLS1vdXQgJEA7IFwKLSAJICAgIGVsc2UgXAot IAkgICAgICAgICQoYnVpbGRkaXIpL2Vtb2ppLXBhcnNlciBcCi0rCSAgICAgICAgICAgIC0tdW5p Y29kZS1lbW9qaS1kaXIgJChVTklDT0RFX0VNT0pJX0RJUikgXAotIAkgICAgICAgICAgICAtLXht bCAkKEVNT0pJX0FOTk9UQVRJT05fRElSKS8kJGYueG1sIFwKLSAJICAgICAgICAgICAgJCR4bWxf ZGVyaXZlZF9vcHRpb24gXAotIAkgICAgICAgICAgICAtLW91dCBkaWN0cy9lbW9qaS0kJGYuZGlj dDsgXAotZGlmZiAtLWdpdCBhL3NyYy9lbW9qaS1wYXJzZXIuYyBiL3NyYy9lbW9qaS1wYXJzZXIu YwotaW5kZXggNWU2MTU1Yi4uZmUzZTRlZiAxMDA2NDQKLS0tLSBhL3NyYy9lbW9qaS1wYXJzZXIu YwotKysrIGIvc3JjL2Vtb2ppLXBhcnNlci5jCi1AQCAtMzEsMTIgKzMxLDIwIEBACi0gICogQVND SUkgZW1vamkgYW5ub3RhdGlvbnMgYXJlIHNhdmVkIGluIC4uL2RhdGEvYW5ub3RhdGlvbnMvZW5f YXNjaWkueG1sCi0gICovCi0gCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSA8Y29u ZmlnLmg+Ci0rI2VuZGlmCi0rCi0gI2luY2x1ZGUgPGdsaWIuaD4KLSAKLSAjaWZkZWYgSEFWRV9K U09OX0dMSUIxCi0gI2luY2x1ZGUgPGpzb24tZ2xpYi9qc29uLWdsaWIuaD4KLSAjZW5kaWYKLSAK LSsjaWZkZWYgSEFWRV9MT0NBTEVfSAotKyNpbmNsdWRlIDxsb2NhbGUuaD4KLSsjZW5kaWYKLSsK LSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0gI2luY2x1ZGUgImlidXNlbW9qaS5oIgotQEAgLTY1 LDggKzczLDczIEBAIHN0cnVjdCBfRW1vamlEYXRhIHsKLSAgICAgRW1vamlEYXRhU2VhcmNoVHlw ZSBzZWFyY2hfdHlwZTsKLSB9OwotIAotK3R5cGVkZWYgc3RydWN0IF9Ob1RyYW5zRGF0YSBOb1Ry YW5zRGF0YTsKLStzdHJ1Y3QgX05vVHJhbnNEYXRhIHsKLSsgICAgY29uc3QgZ2NoYXIgKnhtbF9m aWxlOwotKyAgICBjb25zdCBnY2hhciAqeG1sX2Rlcml2ZWRfZmlsZTsKLSsgICAgR1NMaXN0ICAg ICAgKmVtb2ppX2xpc3Q7Ci0rfTsKLSsKLSBzdGF0aWMgZ2NoYXIgKnVuaWNvZGVfZW1vamlfdmVy c2lvbjsKLSAKLSsKLStzdGF0aWMgdm9pZAotK2luaXRfYW5ub3RhdGlvbnMgKElCdXNFbW9qaURh dGEgKmVtb2ppLAotKyAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgIHVzZXJfZGF0YSkK LSt7Ci0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfRU1PSklfREFUQSAoZW1vamkpKTsK LSsgICAgaWJ1c19lbW9qaV9kYXRhX3NldF9hbm5vdGF0aW9ucyAoZW1vamksIE5VTEwpOwotKyAg ICBpYnVzX2Vtb2ppX2RhdGFfc2V0X2Rlc2NyaXB0aW9uIChlbW9qaSwgIiIpOwotK30KLSsKLStz dGF0aWMgdm9pZAotK2NoZWNrX25vX3RyYW5zIChJQnVzRW1vamlEYXRhICplbW9qaSwKLSsgICAg ICAgICAgICAgICAgTm9UcmFuc0RhdGEgICAqbm9fdHJhbnNfZGF0YSkKLSt7Ci0rICAgIGNvbnN0 IGdjaGFyICpzdHIgPSBOVUxMOwotKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX0VNT0pJ X0RBVEEgKGVtb2ppKSk7Ci0rICAgIGlmIChpYnVzX2Vtb2ppX2RhdGFfZ2V0X2Fubm90YXRpb25z IChlbW9qaSkgIT0gTlVMTCkKLSsgICAgICAgIHJldHVybjsKLSsgICAgc3RyID0gaWJ1c19lbW9q aV9kYXRhX2dldF9lbW9qaSAoZW1vamkpOwotKyAgICBpZiAoZ19nZXRlbnYgKCJJQlVTX0VNT0pJ X1BBUlNFUl9ERUJVRyIpICE9IE5VTEwpIHsKLSsgICAgICAgIGdjaGFyICpiYXNlbmFtZSA9IE5V TEw7Ci0rICAgICAgICBpZiAobm9fdHJhbnNfZGF0YS0+eG1sX2ZpbGUpCi0rICAgICAgICAgICAg YmFzZW5hbWUgPSBnX3BhdGhfZ2V0X2Jhc2VuYW1lIChub190cmFuc19kYXRhLT54bWxfZmlsZSk7 Ci0rICAgICAgICBlbHNlIGlmIChub190cmFuc19kYXRhLT54bWxfZGVyaXZlZF9maWxlKQotKyAg ICAgICAgICAgIGJhc2VuYW1lID0gZ19wYXRoX2dldF9iYXNlbmFtZSAobm9fdHJhbnNfZGF0YS0+ eG1sX2Rlcml2ZWRfZmlsZSk7Ci0rICAgICAgICBlbHNlCi0rICAgICAgICAgICAgYmFzZW5hbWUg PSBnX3N0cmR1cCAoIldST05HIEZJTEUiKTsKLSsgICAgICAgIGdfd2FybmluZyAoIk5vdCBmb3Vu ZCBlbW9qaSAlcyBpbiB0aGUgZmlsZSAlcyIsIHN0ciwgYmFzZW5hbWUpOwotKyAgICAgICAgZ19m cmVlIChiYXNlbmFtZSk7Ci0rICAgIH0KLSsgICAgbm9fdHJhbnNfZGF0YS0+ZW1vamlfbGlzdCA9 Ci0rICAgICAgICAgICAgZ19zbGlzdF9hcHBlbmQgKG5vX3RyYW5zX2RhdGEtPmVtb2ppX2xpc3Qs IGdfc3RyZHVwIChzdHIpKTsKLSt9Ci0rCi0raW50Ci0rc3RyY21wX2lidXNfZW1vamlfZGF0YV9z dHIgKElCdXNFbW9qaURhdGEgKmVtb2ppLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBnY2hhciAgICpzdHIpCi0rewotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19J U19FTU9KSV9EQVRBIChlbW9qaSksIC0xKTsKLSsgICAgcmV0dXJuIGdfc3RyY21wMCAoaWJ1c19l bW9qaV9kYXRhX2dldF9lbW9qaSAoZW1vamkpLCBzdHIpOwotK30KLSsKLStzdGF0aWMgdm9pZAot K2RlbGV0ZV9lbW9qaV9mcm9tX2xpc3QgKGNvbnN0IGdjaGFyICAqc3RyLAotKyAgICAgICAgICAg ICAgICAgICAgICAgIEdTTGlzdCAgICAgICoqbGlzdCkKLSt7Ci0rICAgIElCdXNFbW9qaURhdGEg KmVtb2ppOwotKwotKyAgICBnX3JldHVybl9pZl9mYWlsIChsaXN0ICE9IE5VTEwpOwotKyAgICBH U0xpc3QgKnAgPSBnX3NsaXN0X2ZpbmRfY3VzdG9tICgqbGlzdCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoR0NvbXBhcmVGdW5jKXN0cmNtcF9pYnVzX2Vtb2ppX2RhdGFfc3RyKTsKLSsgICAg Z19yZXR1cm5faWZfZmFpbCAocCAhPSBOVUxMKTsKLSsgICAgZW1vamkgPSBwLT5kYXRhOwotKyAg ICAqbGlzdCA9IGdfc2xpc3RfcmVtb3ZlICgqbGlzdCwgZW1vamkpOwotKyAgICBnX29iamVjdF91 bnJlZiAoZW1vamkpOwotK30KLSsKLSBzdGF0aWMgdm9pZAotIHJlc2V0X2Vtb2ppX2VsZW1lbnQg KEVtb2ppRGF0YSAqZGF0YSkKLSB7Ci1AQCAtNzksNiArMTUyLDEzIEBAIHJlc2V0X2Vtb2ppX2Vs ZW1lbnQgKEVtb2ppRGF0YSAqZGF0YSkKLSAgICAgZ19jbGVhcl9wb2ludGVyICgmZGF0YS0+ZGVz Y3JpcHRpb24sIGdfZnJlZSk7Ci0gfQotIAotKy8qKgotKyAqIHN0cmNtcF9ub3ZhcmlhbnQ6Ci0r ICoKLSsgKiBSZXR1cm4gMCBiZXR3ZWVuIG5vbi1mdWxseS1xdWFsaWZpZWQgYW5kIGZ1bGx5LXF1 YWxpZmllZCBlbW9qaXMuCi0rICogRS5nLiBVKzFGM0NDLTIwMEQtMjY0MiBhbmQgVSsxRjNDQy1G RTBGLTIwMEQtMjY0Mi1GRTBGCi0rICogaW4gY2FzZSBAYV92YXJpYW50IG9yIEBiX3ZhcmlhbnQg PT0gVStGRTBGCi0rICovCi0gZ2ludAotIHN0cmNtcF9ub3ZhcmlhbnQgKGNvbnN0IGdjaGFyICph LAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICpiLAotQEAgLTg2LDQwICsxNjYsNTQg QEAgc3RyY21wX25vdmFyaWFudCAoY29uc3QgZ2NoYXIgKmEsCi0gICAgICAgICAgICAgICAgICAg Z3VuaWNoYXIgICAgIGJfdmFyaWFudCkKLSB7Ci0gICAgIGdpbnQgcmV0dmFsOwotLSAgICBnY2hh ciAqcCA9IE5VTEw7Ci0gICAgIEdTdHJpbmcgKmJ1ZmYgPSBOVUxMOzsKLSsgICAgZ2NoYXIgKmhl YWQgPSBOVUxMOwotKyAgICBnY2hhciAqcDsKLSsgICAgZ2NoYXIgKnZhcmlhbnQgPSBOVUxMOwot ICAgICBnY2hhciAqc3Vic3RyID0gTlVMTDsKLSAKLSAgICAgaWYgKGFfdmFyaWFudCA+IDApIHsK LS0gICAgICAgIGlmICgocCA9IGdfdXRmOF9zdHJjaHIgKGEsIC0xLCBhX3ZhcmlhbnQpKSAhPSBO VUxMKSB7Ci0rICAgICAgICBpZiAoZ191dGY4X3N0cmNociAoYSwgLTEsIGFfdmFyaWFudCkgIT0g TlVMTCkgewotICAgICAgICAgICAgIGJ1ZmYgPSBnX3N0cmluZ19uZXcgKE5VTEwpOwotLSAgICAg ICAgICAgIGlmIChhICE9IHApIHsKLS0gICAgICAgICAgICAgICAgc3Vic3RyID0gZ19zdHJuZHVw IChhLCBwIC0gYSk7Ci0tICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgc3Vi c3RyKTsKLS0gICAgICAgICAgICAgICAgZ19mcmVlIChzdWJzdHIpOwotKyAgICAgICAgICAgIHAg PSBoZWFkID0gZ19zdHJkdXAgKGEpOwotKyAgICAgICAgICAgIHdoaWxlICgqcCAhPSAnXDAnKSB7 Ci0rICAgICAgICAgICAgICAgIGlmICgodmFyaWFudCA9IGdfdXRmOF9zdHJjaHIgKHAsIC0xLCBh X3ZhcmlhbnQpKSA9PSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBl bmQgKGJ1ZmYsIHApOwotKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAg ICAgIH0KLSsgICAgICAgICAgICAgICAgaWYgKHAgIT0gdmFyaWFudCkgewotKyAgICAgICAgICAg ICAgICAgICAgc3Vic3RyID0gZ19zdHJuZHVwIChwLCB2YXJpYW50IC0gcCk7Ci0rICAgICAgICAg ICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKGJ1ZmYsIHN1YnN0cik7Ci0rICAgICAgICAgICAg ICAgICAgICBnX2ZyZWUgKHN1YnN0cik7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAg ICAgICAgcCA9IGdfdXRmOF9uZXh0X2NoYXIgKHZhcmlhbnQpOwotICAgICAgICAgICAgIH0KLS0g ICAgICAgICAgICBwID0gZ191dGY4X25leHRfY2hhciAocCk7Ci0tICAgICAgICAgICAgaWYgKCpw ICE9ICdcMCcpCi0tICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgcCk7Ci0g ICAgICAgICAgICAgcmV0dmFsID0gZ19zdHJjbXAwIChidWZmLT5zdHIsIGIpOwotICAgICAgICAg ICAgIGdfc3RyaW5nX2ZyZWUgKGJ1ZmYsIFRSVUUpOwotKyAgICAgICAgICAgIGdfZnJlZSAoaGVh ZCk7Ci0gICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsKLSAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgfQotICAgICB9IGVsc2UgaWYgKGJfdmFyaWFu dCA+IDApIHsKLS0gICAgICAgIGlmICgocCA9IGdfdXRmOF9zdHJjaHIgKGIsIC0xLCBiX3Zhcmlh bnQpKSAhPSBOVUxMKSB7Ci0rICAgICAgICBpZiAoZ191dGY4X3N0cmNociAoYiwgLTEsIGJfdmFy aWFudCkgIT0gTlVMTCkgewotICAgICAgICAgICAgIGJ1ZmYgPSBnX3N0cmluZ19uZXcgKE5VTEwp OwotLSAgICAgICAgICAgIGlmIChiICE9IHApIHsKLS0gICAgICAgICAgICAgICAgc3Vic3RyID0g Z19zdHJuZHVwIChiLCBwIC0gYik7Ci0tICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAo YnVmZiwgc3Vic3RyKTsKLS0gICAgICAgICAgICAgICAgZ19mcmVlIChzdWJzdHIpOwotKyAgICAg ICAgICAgIHAgPSBoZWFkID0gZ19zdHJkdXAgKGIpOwotKyAgICAgICAgICAgIHdoaWxlICgqcCAh PSAnXDAnKSB7Ci0rICAgICAgICAgICAgICAgIGlmICgodmFyaWFudCA9IGdfdXRmOF9zdHJjaHIg KHAsIC0xLCBiX3ZhcmlhbnQpKSA9PSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAgICAgICBnX3N0 cmluZ19hcHBlbmQgKGJ1ZmYsIHApOwotKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAg ICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgaWYgKHAgIT0gdmFyaWFudCkgewotKyAg ICAgICAgICAgICAgICAgICAgc3Vic3RyID0gZ19zdHJuZHVwIChwLCB2YXJpYW50IC0gcCk7Ci0r ICAgICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKGJ1ZmYsIHN1YnN0cik7Ci0rICAg ICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN1YnN0cik7Ci0rICAgICAgICAgICAgICAgIH0KLSsg ICAgICAgICAgICAgICAgcCA9IGdfdXRmOF9uZXh0X2NoYXIgKHZhcmlhbnQpOwotICAgICAgICAg ICAgIH0KLS0gICAgICAgICAgICBwID0gZ191dGY4X25leHRfY2hhciAocCk7Ci0tICAgICAgICAg ICAgaWYgKCpwICE9ICdcMCcpCi0tICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVm ZiwgcCk7Ci0gICAgICAgICAgICAgcmV0dmFsID0gZ19zdHJjbXAwIChhLCBidWZmLT5zdHIpOwot ICAgICAgICAgICAgIGdfc3RyaW5nX2ZyZWUgKGJ1ZmYsIFRSVUUpOwotKyAgICAgICAgICAgIGdf ZnJlZSAoaGVhZCk7Ci0gICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsKLSAgICAgICAgIH0gZWxz ZSB7Ci0gICAgICAgICAgICAgcmV0dXJuIC0xOwotQEAgLTExMTcsNiArMTIxMSwxMiBAQCBtYWlu IChpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgICBHT3B0aW9uQ29udGV4dCAqY29udGV4dDsK LSAgICAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0gICAgIEdTTGlzdCAqbGlzdCA9IE5VTEw7Ci0r ICAgIGdib29sZWFuIGlzX2VuID0gVFJVRTsKLSsKLSsjaWZkZWYgSEFWRV9MT0NBTEVfSAotKyAg ICAvKiBUbyBvdXRwdXQgZW1vamkgd2FybmluZ3MuICovCi0rICAgIHNldGxvY2FsZSAoTENfQUxM LCAiIik7Ci0rI2VuZGlmCi0gCi0gICAgIHByZ25hbWUgPSBnX3BhdGhfZ2V0X2Jhc2VuYW1lIChh cmd2WzBdKTsKLSAgICAgZ19zZXRfcHJnbmFtZSAocHJnbmFtZSk7Ci1AQCAtMTE0NCwxMiArMTI0 NCw0NSBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotICNlbmRpZgotICAgICBpZiAo ZW1vamlfZGlyKQotICAgICAgICAgdW5pY29kZV9lbW9qaV9wYXJzZV9kaXIgKGVtb2ppX2Rpciwg Jmxpc3QpOwotKyAgICBpZiAobGlzdCkgewotKyNkZWZpbmUgQ0hFQ0tfSVNfRU4oZmlsZSkgaWYg KChmaWxlKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIGdj aGFyICpiYXNlbmFtZSA9IGdfcGF0aF9nZXRfYmFzZW5hbWUgKChmaWxlKSk7ICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgaXNfZW4gPSAoZ19hc2NpaV9zdHJuY2FzZWNtcCAoYmFzZW5h bWUsICJlbi4iLCAzKSA9PSAwKSA/ICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIFRSVUUg OiBGQUxTRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICAgIGdfZnJlZSAoYmFzZW5hbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSt9Ci0rCi0rICAgICAgICBDSEVDS19JU19FTih4 bWxfZGVyaXZlZF9maWxlKTsKLSsgICAgICAgIENIRUNLX0lTX0VOKHhtbF9maWxlKTsKLSsjdW5k ZWYgQ0hFQ0tfSVNfRU4KLSsKLSsgICAgICAgIC8qIFVzZSBFbmdsaXNoIGVtb2ppLXRlc3QudHh0 IHRvIGdldCBmdWxseS1xdWFsaWZpZWQuICovCi0rICAgICAgICBpZiAoIWlzX2VuKQotKyAgICAg ICAgICAgIGdfc2xpc3RfZm9yZWFjaCAobGlzdCwgKEdGdW5jKWluaXRfYW5ub3RhdGlvbnMsIE5V TEwpOwotKyAgICB9Ci0gICAgIGlmICh4bWxfZmlsZSkKLSAgICAgICAgIHVuaWNvZGVfYW5ub3Rh dGlvbnNfcGFyc2VfeG1sX2ZpbGUgKHhtbF9maWxlLCAmbGlzdCwgRkFMU0UpOwotICAgICBpZiAo eG1sX2Rlcml2ZWRfZmlsZSkKLSAgICAgICAgIHVuaWNvZGVfYW5ub3RhdGlvbnNfcGFyc2VfeG1s X2ZpbGUgKHhtbF9kZXJpdmVkX2ZpbGUsICZsaXN0LCBUUlVFKTsKLSAgICAgaWYgKHhtbF9hc2Np aV9maWxlKQotICAgICAgICAgdW5pY29kZV9hbm5vdGF0aW9uc19wYXJzZV94bWxfZmlsZSAoeG1s X2FzY2lpX2ZpbGUsICZsaXN0LCBGQUxTRSk7Ci0rICAgIGlmIChsaXN0ICE9IE5VTEwgJiYgIWlz X2VuKSB7Ci0rICAgICAgICAvKiBJZiBlbW9qaS10ZXN0LnR4dCBoYXMgYW4gZW1vamkgYnV0ICRs YW5nLnhtbCBkb2VzIG5vdCwgY2xlYXIgaXQKLSsgICAgICAgICAqIHNpbmNlIHRoZSBsYW5ndWFn ZSBkaWN0cyBkbyBub3Qgd2FudCBFbmdsaXNoIGFubm90YXRpb25zLgotKyAgICAgICAgICovCi0r ICAgICAgICBOb1RyYW5zRGF0YSBub190cmFuc19kYXRhID0gewotKyAgICAgICAgICAgIHhtbF9m aWxlLAotKyAgICAgICAgICAgIHhtbF9kZXJpdmVkX2ZpbGUsCi0rICAgICAgICAgICAgTlVMTAot KyAgICAgICAgfTsKLSsgICAgICAgIGdfc2xpc3RfZm9yZWFjaCAobGlzdCwgKEdGdW5jKWNoZWNr X25vX3RyYW5zLCAmbm9fdHJhbnNfZGF0YSk7Ci0rICAgICAgICBpZiAobm9fdHJhbnNfZGF0YS5l bW9qaV9saXN0KSB7Ci0rICAgICAgICAgICAgZ19zbGlzdF9mb3JlYWNoIChub190cmFuc19kYXRh LmVtb2ppX2xpc3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR0Z1bmMpZGVsZXRl X2Vtb2ppX2Zyb21fbGlzdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsaXN0KTsK LSsgICAgICAgICAgICBnX3NsaXN0X2ZyZWVfZnVsbCAobm9fdHJhbnNfZGF0YS5lbW9qaV9saXN0 LCBnX2ZyZWUpOwotKyAgICAgICAgfQotKyAgICB9Ci0gICAgIGlmIChsaXN0ICE9IE5VTEwgJiYg b3V0cHV0KQotICAgICAgICAgaWJ1c19lbW9qaV9kYXRhX3NhdmUgKG91dHB1dCwgbGlzdCk7Ci0g ICAgIGlmIChsaXN0ICE9IE5VTEwgJiYgb3V0cHV0X2NhdGVnb3J5KQotZGlmZiAtLWdpdCBhL3Ny Yy9pYnVzZW1vamkuYyBiL3NyYy9pYnVzZW1vamkuYwotaW5kZXggZDJlMTZjNS4uM2QzOGMyYSAx MDA2NDQKLS0tLSBhL3NyYy9pYnVzZW1vamkuYwotKysrIGIvc3JjL2lidXNlbW9qaS5jCi1AQCAt MjksNyArMjksNyBAQAotICNpbmNsdWRlICJpYnVzaW50ZXJuYWwuaCIKLSAKLSAjZGVmaW5lIElC VVNfRU1PSklfREFUQV9NQUdJQyAiSUJ1c0Vtb2ppRGF0YSIKLS0jZGVmaW5lIElCVVNfRU1PSklf REFUQV9WRVJTSU9OICg0KQotKyNkZWZpbmUgSUJVU19FTU9KSV9EQVRBX1ZFUlNJT04gKDUpCi0g Ci0gZW51bSB7Ci0gICAgIFBST1BfMCA9IDAsCi1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVy LnZhbGEgYi91aS9ndGszL2Vtb2ppZXIudmFsYQotaW5kZXggMWQxMDVmZC4uOTU5MTJiZiAxMDA2 NDQKLS0tLSBhL3VpL2d0azMvZW1vamllci52YWxhCi0rKysgYi91aS9ndGszL2Vtb2ppZXIudmFs YQotQEAgLTE5MCw5ICsxOTAsNiBAQCBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlv bldpbmRvdyB7Ci0gICAgIHByaXZhdGUgY29uc3Qgc3RyaW5nIEVNT0pJX0NBVEVHT1JZX09USEVS UyA9IE5fKCJPdGhlcnMiKTsKLSAgICAgcHJpdmF0ZSBjb25zdCB1bmljaGFyW10gRU1PSklfVkFS SUFOVF9MSVNUID0gewotICAgICAgICAgICAgIDB4MWYzZmIsIDB4MWYzZmMsIDB4MWYzZmQsIDB4 MWYzZmUsIDB4MWYzZmYsIDB4MjAwZCB9OwotLSAgICBwcml2YXRlIGNvbnN0IEdMaWIuQWN0aW9u RW50cnlbXSBtX2FjdGlvbl9lbnRyaWVzID0gewotLSAgICAgICAgeyAidmFyaWFudCIsIGNoZWNr X2FjdGlvbl92YXJpYW50X2NiLCBudWxsLCAiZmFsc2UiLCBudWxsIH0KLS0gICAgfTsKLSAKLSAg ICAgLy8gU2V0IHRoZSBhY3R1YWwgZGVmYXVsdCB2YWx1ZXMgaW4gdGhlIGNvbnN0cnVjdG9yCi0g ICAgIC8vIGJlY2F1c2UgdGhlc2UgZmllbGRzIGFyZSB1c2VkIGZvciBjbGFzc19pbml0KCkgYW5k IHN0YXRpYyBmdW5jdGlvbnMsCi1AQCAtMjUzLDcgKzI1MCwxMyBAQCBjbGFzcyBJQnVzRW1vamll ciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAgICAgZm9jdXNfdmlzaWJsZSA6 IHRydWUKLSAgICAgICAgICk7Ci0gCi0tICAgICAgICBhZGRfYWN0aW9uX2VudHJpZXMobV9hY3Rp b25fZW50cmllcywgdGhpcyk7Ci0rICAgICAgICAvLyBHTGliLkFjdGlvbkVudHJ5IGFjY2VwdHMg Y29uc3QgdmFyaWFibGVzIG9ubHkuCi0rICAgICAgICB2YXIgYWN0aW9uID0gbmV3IEdMaWIuU2lt cGxlQWN0aW9uLnN0YXRlZnVsKAotKyAgICAgICAgICAgICAgICAidmFyaWFudCIsCi0rICAgICAg ICAgICAgICAgIG51bGwsCi0rICAgICAgICAgICAgICAgIG5ldyBHTGliLlZhcmlhbnQuYm9vbGVh bihtX3Nob3dfZW1vamlfdmFyaWFudCkpOwotKyAgICAgICAgYWN0aW9uLmFjdGl2YXRlLmNvbm5l Y3QoY2hlY2tfYWN0aW9uX3ZhcmlhbnRfY2IpOwotKyAgICAgICAgYWRkX2FjdGlvbihhY3Rpb24p OwotICAgICAgICAgaWYgKG1fY3VycmVudF9sYW5nX2lkID09IG51bGwpCi0gICAgICAgICAgICAg bV9jdXJyZW50X2xhbmdfaWQgPSAiZW4iOwotICAgICAgICAgaWYgKG1fZW1vamlfZm9udF9mYW1p bHkgPT0gbnVsbCkKLUBAIC01MjEsMTggKzUyNCw3IEBAIGNsYXNzIElCdXNFbW9qaWVyIDogR3Rr LkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgICAgICBtX2Vtb2ppX3RvX2RhdGFfZGljdC5y ZXBsYWNlKGVtb2ppLCBkYXRhKTsKLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgdW5v d25lZCBJQnVzLkVtb2ppRGF0YT8gZW5fZGF0YSA9IG51bGw7Ci0tICAgICAgICAgICAgLy8gSWYg ZW1vamkgcHJlc2VudGF0aW9uICgrPSAweGZlMGYpIGlzIGFscmVhZHkgc2F2ZWQgaW4gZGljdCwK LS0gICAgICAgICAgICAvLyB1cGRhdGUgaXQgaW5zdGVhZCBvZiBubyBwcmVzZW50YXRpb24uCi0t ICAgICAgICAgICAgLy8gZW1vamktdGVzdC50eHQgaGFzIGFsbCBlbW9qaSBwcmVzZW50YXRpb25z IGJ1dCAkbGFuZy54bWwgaGFzCi0tICAgICAgICAgICAgLy8gc29tZSBubyBlbW9qaSBwcmVzZW50 YXRpb25zLgotLSAgICAgICAgICAgIGlmIChlbW9qaS5jaHIoLTEsIDB4ZmUwZikgPT0gbnVsbCkg ewotLSAgICAgICAgICAgICAgICB2YXIgYnVmZiA9IG5ldyBHTGliLlN0cmluZ0J1aWxkZXIoKTsK LS0gICAgICAgICAgICAgICAgYnVmZi5hcHBlbmQoZW1vamkpOwotLSAgICAgICAgICAgICAgICBi dWZmLmFwcGVuZF91bmljaGFyKDB4ZmUwZik7Ci0tICAgICAgICAgICAgICAgIGVuX2RhdGEgPSBt X2Vtb2ppX3RvX2RhdGFfZGljdC5sb29rdXAoYnVmZi5zdHIpOwotLSAgICAgICAgICAgIH0KLS0g ICAgICAgICAgICBpZiAoZW5fZGF0YSA9PSBudWxsKQotLSAgICAgICAgICAgICAgICBlbl9kYXRh ID0gbV9lbW9qaV90b19kYXRhX2RpY3QubG9va3VwKGVtb2ppKTsKLSsgICAgICAgICAgICBlbl9k YXRhID0gbV9lbW9qaV90b19kYXRhX2RpY3QubG9va3VwKGVtb2ppKTsKLSAgICAgICAgICAgICBp ZiAoZW5fZGF0YSA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgIG1fZW1vamlfdG9fZGF0YV9k aWN0Lmluc2VydChlbW9qaSwgZGF0YSk7Ci0gICAgICAgICAgICAgICAgIHJldHVybjsKLUBAIC05 MjMsNyArOTE1LDEyIEBAIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93 IHsKLSAgICAgICAgICAgICBtX3Zib3guYWRkKGJ1dHRvbik7Ci0gICAgICAgICAgICAgYnV0dG9u LnNob3dfYWxsKCk7Ci0gICAgICAgICAgICAgYnV0dG9uLmJ1dHRvbl9wcmVzc19ldmVudC5jb25u ZWN0KCh3LCBlKSA9PiB7Ci0tICAgICAgICAgICAgICAgIGhpZGVfY2FuZGlkYXRlX3BhbmVsKCk7 Ci0rICAgICAgICAgICAgICAgIC8vIEJyaW5nIGJhY2sgdG8gZW1vamkgY2FuZGlkYXRlIHBhbmVs IGluIGNhc2UKLSsgICAgICAgICAgICAgICAgLy8gbV9zaG93X2Vtb2ppX3ZhcmlhbnQgaXMgZW5h YmxlZCBhbmQgc2hvd3MgdmFyaWFudHMuCi0rICAgICAgICAgICAgICAgIGlmIChtX2JhY2t3YXJk X2luZGV4ID49IDAgJiYgbV9iYWNrd2FyZCAhPSBudWxsKQotKyAgICAgICAgICAgICAgICAgICAg c2hvd19lbW9qaV9mb3JfY2F0ZWdvcnkobV9iYWNrd2FyZCk7Ci0rICAgICAgICAgICAgICAgIGVs c2UKLSsgICAgICAgICAgICAgICAgICAgIGhpZGVfY2FuZGlkYXRlX3BhbmVsKCk7Ci0gICAgICAg ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgIH0pOwotICAgICAgICAgfQotQEAg LTEyNjksNiArMTI2Niw5IEBAIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2lu ZG93IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaWIuVmFy aWFudD8gICAgIHBhcmFtZXRlcikgewotICAgICAgICAgbV9zaG93X2Vtb2ppX3ZhcmlhbnQgPSAh YWN0aW9uLmdldF9zdGF0ZSgpLmdldF9ib29sZWFuKCk7Ci0gICAgICAgICBhY3Rpb24uc2V0X3N0 YXRlKG5ldyBHTGliLlZhcmlhbnQuYm9vbGVhbihtX3Nob3dfZW1vamlfdmFyaWFudCkpOwotKyAg ICAgICAgLy8gUmVkcmF3IGVtb2ppIGNhbmRpZGF0ZSBwYW5lbCBmb3IgbV9zaG93X2Vtb2ppX3Zh cmlhbnQKLSsgICAgICAgIGlmIChtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNpYmxlKQotKyAgICAg ICAgICAgIHNob3dfY2FuZGlkYXRlX3BhbmVsKCk7Ci0gICAgIH0KLSAKLSAKLS0tIAotMi45LjMK LQotRnJvbSBiYzBmOTEzNDJjNmYzYTZlNTU0NDkzYWY5NDMwZDYzNGQ5MDZlZTE5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwu Y29tPgotRGF0ZTogVHVlLCAyNSBKdWwgMjAxNyAxMjowMDoxNCArMDkwMAotU3ViamVjdDogW1BB VENIXSB1aS9ndGszOiBGaXggU0VHViBvZiBJQnVzRW1vamllciBvbiBkZV9ERS5VVEYtOAotCi1k ZSdzIGRlY2ltYWxfcG9pbnQgaXMgJywnIGluc3RlYWQgb2YgJy4nIGFuZCBmYWlsZWQgdG8gbG9h ZCB0aGUKLUNTUyBkYXRhIGluIEd0ay5Dc3NQcm92aWRlci5sb2FkX2Zyb21fZGF0YSgpLCBsYXVu Y2hlZCBudWxsCi13aW5kb3cgb2YgZW1vamlzIGFuZCBmaW5hbGx5IGNhdXNlZCBhIFNFR1YgZHVl IHRvIHRoZSBudWxsIHdpbmRvdy4KLVRoaXMgYWxzbyBmaXhlcyBzb21lIG1lbW9yeSBsZWFrcy4K LQotQlVHPXJoYnojMTQ3MTA3OQotCi1SZXZpZXcgVVJMOiBodHRwczovL2NvZGVyZXZpZXcuYXBw c3BvdC5jb20vMzIzMzEwMDQzCi0tLS0KLSBzcmMvaWJ1c2Vtb2ppLmMgICAgICB8ICAxICsKLSB1 aS9ndGszL2Vtb2ppZXIudmFsYSB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LQotIDIgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQot ZGlmZiAtLWdpdCBhL3NyYy9pYnVzZW1vamkuYyBiL3NyYy9pYnVzZW1vamkuYwotaW5kZXggM2Qz OGMyYS4uZDU2YzQ4YSAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzZW1vamkuYwotKysrIGIvc3JjL2li dXNlbW9qaS5jCi1AQCAtNTkxLDYgKzU5MSw3IEBAIG91dF9sb2FkX2NhY2hlOgotICAgICAgICAg Z192YXJpYW50X3VucmVmICh2YXJpYW50KTsKLSAgICAgaWYgKHZhcmlhbnRfdGFibGUpCi0gICAg ICAgICBnX3ZhcmlhbnRfdW5yZWYgKHZhcmlhbnRfdGFibGUpOwotKyAgICBnX2ZyZWUgKGNvbnRl bnRzKTsKLSAKLSAgICAgcmV0dXJuIHJldHZhbDsKLSB9Ci1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9l bW9qaWVyLnZhbGEgYi91aS9ndGszL2Vtb2ppZXIudmFsYQotaW5kZXggOTU5MTJiZi4uOWRmNTlh YyAxMDA2NDQKLS0tLSBhL3VpL2d0azMvZW1vamllci52YWxhCi0rKysgYi91aS9ndGszL2Vtb2pp ZXIudmFsYQotQEAgLTI3Niw2ICsyNzYsMTcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBw bGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAgIHdhcm5pbmcoIkNvdWxkIG5vdCBvcGVuIGRp c3BsYXkuIik7Ci0gICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotKyAgICAgICAgLy8g U2V0IGVuIGxvY2FsZSBiZWNhdXNlIGRlX0RFJ3MgZGVjaW1hbF9wb2ludCBpcyAnLCcgaW5zdGVh ZCBvZiAnLicKLSsgICAgICAgIHN0cmluZz8gYmFja3VwX2xvY2FsZSA9Ci0rICAgICAgICAgICAg SW50bC5zZXRsb2NhbGUoTG9jYWxlQ2F0ZWdvcnkuTlVNRVJJQywgbnVsbCkuZHVwKCk7Ci0rICAg ICAgICBpZiAoSW50bC5zZXRsb2NhbGUoTG9jYWxlQ2F0ZWdvcnkuTlVNRVJJQywgImVuX1VTLlVU Ri04IikgPT0gbnVsbCkgewotKyAgICAgICAgICBpZiAoSW50bC5zZXRsb2NhbGUoTG9jYWxlQ2F0 ZWdvcnkuTlVNRVJJQywgIkMuVVRGLTgiKSA9PSBudWxsKSB7Ci0rICAgICAgICAgICAgICBpZiAo SW50bC5zZXRsb2NhbGUoTG9jYWxlQ2F0ZWdvcnkuTlVNRVJJQywgIkMiKSA9PSBudWxsKSB7Ci0r ICAgICAgICAgICAgICAgICAgd2FybmluZygiWW91IGRvbid0IGluc3RhbGwgZWl0aGVyIGVuX1VT LlVURi04IG9yIEMuVVRGLTggIiArCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAib3IgQyBs b2NhbGUiKTsKLSsgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgfQotKyAgICAgICAgfQotICAg ICAgICAgbV9yZ2JhID0gbmV3IFRoZW1lZFJHQkEodGhpcyk7Ci0gICAgICAgICB1aW50IGJnX3Jl ZCA9ICh1aW50KShtX3JnYmEubm9ybWFsX2JnLnJlZCAqIDI1NSk7Ci0gICAgICAgICB1aW50IGJn X2dyZWVuID0gKHVpbnQpKG1fcmdiYS5ub3JtYWxfYmcuZ3JlZW4gKiAyNTUpOwotQEAgLTMyMSw2 ICszMzIsMTAgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewot ICAgICAgICAgICAgIHdhcm5pbmcoIkZhaWxlZCBjc3NfcHJvdmlkZXJfZnJvbV9kYXRhOiAlcyIs IGUubWVzc2FnZSk7Ci0gICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotKyAgICAgICAg aWYgKGJhY2t1cF9sb2NhbGUgIT0gbnVsbCkKLSsgICAgICAgICAgICBJbnRsLnNldGxvY2FsZShM b2NhbGVDYXRlZ29yeS5OVU1FUklDLCBiYWNrdXBfbG9jYWxlKTsKLSsgICAgICAgIGVsc2UKLSsg ICAgICAgICAgICBJbnRsLnNldGxvY2FsZShMb2NhbGVDYXRlZ29yeS5OVU1FUklDLCAiIik7Ci0g Ci0gICAgICAgICBHdGsuU3R5bGVDb250ZXh0LmFkZF9wcm92aWRlcl9mb3Jfc2NyZWVuKAotICAg ICAgICAgICAgICAgICBzY3JlZW4sCi1AQCAtNDI0LDggKzQzOSw5IEBAIGNsYXNzIElCdXNFbW9q aWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgIHVub3duZWQgR0xpYi5TTGlz dDxzdHJpbmc+IGFubm90YXRpb25zID0gZGF0YS5nZXRfYW5ub3RhdGlvbnMoKTsKLSAgICAgICAg IGZvcmVhY2ggKHN0cmluZyBhbm5vdGF0aW9uIGluIGFubm90YXRpb25zKSB7Ci0gICAgICAgICAg ICAgYm9vbCBoYXNfZW1vamkgPSBmYWxzZTsKLS0gICAgICAgICAgICB1bm93bmVkIEdMaWIuU0xp c3Q8c3RyaW5nPiBoaXRzID0KLS0gICAgICAgICAgICAgICAgICAgIG1fYW5ub3RhdGlvbl90b19l bW9qaXNfZGljdC5sb29rdXAoYW5ub3RhdGlvbik7Ci0rICAgICAgICAgICAgR0xpYi5TTGlzdDxz dHJpbmc+IGhpdHMgPQotKyAgICAgICAgICAgICAgICAgICAgbV9hbm5vdGF0aW9uX3RvX2Vtb2pp c19kaWN0Lmxvb2t1cChhbm5vdGF0aW9uKS5jb3B5X2RlZXAoCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMaWIuc3RyZHVwKTsKLSAgICAgICAgICAgICBmb3JlYWNoIChzdHJpbmcgaGl0 X2Vtb2ppIGluIGhpdHMpIHsKLSAgICAgICAgICAgICAgICAgaWYgKGhpdF9lbW9qaSA9PSBlbW9q aSkgewotICAgICAgICAgICAgICAgICAgICAgaGFzX2Vtb2ppID0gdHJ1ZTsKLUBAIC00ODUsNyAr NTAxLDggQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAg ICBwcml2YXRlIHN0YXRpYyB2b2lkCi0gICAgIHVwZGF0ZV9hbm5vdGF0aW9uc193aXRoX2Rlc2Ny aXB0aW9uIChJQnVzLkVtb2ppRGF0YSBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgZGVzY3JpcHRpb24pIHsKLS0gICAgICAgIHVu b3duZWQgR0xpYi5TTGlzdDxzdHJpbmc+IGFubm90YXRpb25zID0gZGF0YS5nZXRfYW5ub3RhdGlv bnMoKTsKLSsgICAgICAgIEdMaWIuU0xpc3Q8c3RyaW5nPiBhbm5vdGF0aW9ucyA9Ci0rICAgICAg ICAgICAgICAgIGRhdGEuZ2V0X2Fubm90YXRpb25zKCkuY29weV9kZWVwKEdMaWIuc3RyZHVwKTsK LSAgICAgICAgIGJvb2wgdXBkYXRlX2Fubm90YXRpb25zID0gZmFsc2U7Ci0gICAgICAgICBzdHJp bmcgZm9ybWVyID0gbnVsbDsKLSAgICAgICAgIHN0cmluZyBsYXRlciA9IG51bGw7Ci1AQCAtNTc0 LDggKzU5MSw5IEBAIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsK LSAgICAgICAgICAgICAgICAgYnVmZi5hcHBlbmRfdW5pY2hhcigweGZlMGYpOwotICAgICAgICAg ICAgICAgICBpZiAobV9lbW9qaV90b19kYXRhX2RpY3QubG9va3VwKGJ1ZmYuc3RyKSAhPSBudWxs KQotICAgICAgICAgICAgICAgICAgICAgYmFzZV9lbW9qaSA9IGJ1ZmYuc3RyOwotLSAgICAgICAg ICAgICAgICB1bm93bmVkIEdMaWIuU0xpc3Q8c3RyaW5nPj8gdmFyaWFudHMgPQotLSAgICAgICAg ICAgICAgICAgICAgbV9lbW9qaV90b19lbW9qaV92YXJpYW50c19kaWN0Lmxvb2t1cChiYXNlX2Vt b2ppKTsKLSsgICAgICAgICAgICAgICAgR0xpYi5TTGlzdDxzdHJpbmc+PyB2YXJpYW50cyA9Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgbV9lbW9qaV90b19lbW9qaV92YXJpYW50c19kaWN0Lmxv b2t1cCgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VfZW1vamkpLmNvcHlf ZGVlcChHTGliLnN0cmR1cCk7Ci0gICAgICAgICAgICAgICAgIGlmICh2YXJpYW50cy5maW5kX2N1 c3RvbShlbW9qaSwgR0xpYi5zdHJjbXApID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAg IGlmICh2YXJpYW50cyA9PSBudWxsKQotICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRz LmFwcGVuZChiYXNlX2Vtb2ppKTsKLUBAIC01ODcsOCArNjA1LDkgQEAgY2xhc3MgSUJ1c0Vtb2pp ZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAgICAgICByZXR1cm47Ci0g ICAgICAgICAgICAgfQotICAgICAgICAgICAgIGJvb2wgaGFzX2Vtb2ppID0gZmFsc2U7Ci0tICAg ICAgICAgICAgdW5vd25lZCBHTGliLlNMaXN0PHN0cmluZz4gaGl0cyA9Ci0tICAgICAgICAgICAg ICAgICAgICBtX2NhdGVnb3J5X3RvX2Vtb2ppc19kaWN0Lmxvb2t1cChjYXRlZ29yeSk7Ci0rICAg ICAgICAgICAgR0xpYi5TTGlzdDxzdHJpbmc+IGhpdHMgPQotKyAgICAgICAgICAgICAgICAgICAg bV9jYXRlZ29yeV90b19lbW9qaXNfZGljdC5sb29rdXAoY2F0ZWdvcnkpLmNvcHlfZGVlcCgKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpYi5zdHJkdXApOwotICAgICAgICAgICAgIGZv cmVhY2ggKHN0cmluZyBoaXRfZW1vamkgaW4gaGl0cykgewotICAgICAgICAgICAgICAgICBpZiAo aGl0X2Vtb2ppID09IGVtb2ppKSB7Ci0gICAgICAgICAgICAgICAgICAgICBoYXNfZW1vamkgPSB0 cnVlOwotLS0gCi0yLjkuMwotCi1Gcm9tIDQxMzQxMTNhMWFlMzA1MzQzNjdhOWNhNzI5YzdmMzZh MGE4ZTM2NjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2Fv LmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDI3IEp1bCAyMDE3IDE0OjA3OjAwICsw OTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVpL2d0azM6IEZpeCBTRUdWIG9mIFhLZXlzeW1Ub0tleWNv ZGUoKSBvbiBXYXlsYW5kCi0KLUJVRz1yaGJ6IzEzNjg1OTMKLS0tLQotIHVpL2d0azMvYXBwbGlj YXRpb24udmFsYSB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQot ZGlmZiAtLWdpdCBhL3VpL2d0azMvYXBwbGljYXRpb24udmFsYSBiL3VpL2d0azMvYXBwbGljYXRp b24udmFsYQotaW5kZXggNWFlNmU4My4uZmE4MDI3MiAxMDA2NDQKLS0tLSBhL3VpL2d0azMvYXBw bGljYXRpb24udmFsYQotKysrIGIvdWkvZ3RrMy9hcHBsaWNhdGlvbi52YWxhCi1AQCAtMyw2ICsz LDcgQEAKLSAgKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotICAqCi0gICogQ29weXJpZ2h0KGMpIDIw MTEgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0KGMp IDIwMTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0gICoKLSAg KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yCi0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYwotQEAgLTk5LDYgKzEwMCw5IEBAIGNsYXNzIEFwcGxpY2F0aW9uIHsKLSAg ICAgfQotIAotICAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihzdHJpbmdbXSBhcmd2KSB7Ci0r ICAgICAgICAvLyBmb3IgR2RrLlgxMS5nZXRfZGVmYXVsdF94ZGlzcGxheSgpCi0rICAgICAgICBH ZGsuc2V0X2FsbG93ZWRfYmFja2VuZHMoIngxMSIpOwotKwotICAgICAgICAgQXBwbGljYXRpb24g YXBwID0gbmV3IEFwcGxpY2F0aW9uKGFyZ3YpOwotICAgICAgICAgYXBwLnJ1bigpOwotICAgICB9 Ci0tLSAKLTIuOS4zCi0KLUZyb20gNmEzMzAxZGI4NWU3N2UwNjUyZjdlMDA4OTRjY2U0OTNiNmE5 NDJmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFhpYW5nIEZhbiA8c2ZhbnhpYW5n QGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTAgQXVnIDIwMTcgMTE6MjQ6MzkgKzA5MDAKLVN1Ympl Y3Q6IFtQQVRDSCAwMS8xNF0gY2xpZW50L2d0azI6IGluY2x1ZGUgdGhlIHNjYWxpbmcgZmFjdG9y Ci0KLVNjYWxpbmcgZmFjdG9yLCB3aGljaCBleGlzdHMgZm9yIEhpRFBJIGRpc3BsYXlzLCBuZWVk cyB0byBiZSBpbmNsdWRlZCBpbgotdGhlIGNhbGN1bGF0aW9uIG9mIGN1cnNvciBsb2NhdGlvbi4g VGhpcyBkb2VzIG5vdCBhZmZlY3QgZGV2aWNlcyB3aXRob3V0Ci1hIEhpRFBJIGRpc3BsYXkuCi0K LUNhbmRpZGF0ZSB3aW5kb3dzIHdvdWxkIGJlIG1pc3BsYWNlZCB0byBzbWFsbGVyIGNvb3JkaW5h dGVzIHdpdGhvdXQgdGhpcwotcGF0Y2guCi0KLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9p YnVzL2lzc3Vlcy8xODA2Ci0KLVJldmlldyBVUkw6IGh0dHBzOi8vY29kZXJldmlldy5hcHBzcG90 LmNvbS8zMjgyNTAwNDMKLQotUGF0Y2ggZnJvbSBYaWFuZyBGYW4gPHNmYW54aWFuZ0BnbWFpbC5j b20+LgotLS0tCi0gY2xpZW50L2d0azIvaWJ1c2ltY29udGV4dC5jIHwgMjEgKysrKysrKysrKysr KysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdp dCBhL2NsaWVudC9ndGsyL2lidXNpbWNvbnRleHQuYyBiL2NsaWVudC9ndGsyL2lidXNpbWNvbnRl eHQuYwotaW5kZXggMGRmMDA2MjAuLjQxYzdhM2FmIDEwMDY0NAotLS0tIGEvY2xpZW50L2d0azIv aWJ1c2ltY29udGV4dC5jCi0rKysgYi9jbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMKLUBAIC05 OTksNiArOTk5LDI0IEBAIGlidXNfaW1fY29udGV4dF9zZXRfY2xpZW50X3dpbmRvdyAoR3RrSU1D b250ZXh0ICpjb250ZXh0LCBHZGtXaW5kb3cgKmNsaWVudCkKLSAgICAgICAgIGd0a19pbV9jb250 ZXh0X3NldF9jbGllbnRfd2luZG93IChpYnVzaW1jb250ZXh0LT5zbGF2ZSwgY2xpZW50KTsKLSB9 Ci0gCi0rc3RhdGljIHZvaWQKLStfc2V0X3JlY3Rfc2NhbGVfZmFjdG9yX3dpdGhfd2luZG93IChH ZGtSZWN0YW5nbGUgKmFyZWEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R2RrV2luZG93ICAgICp3aW5kb3cpCi0rewotKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoMywgMTAs IDApCi0rICAgIGludCBzY2FsZV9mYWN0b3I7Ci0rCi0rICAgIGdfYXNzZXJ0IChhcmVhKTsKLSsg ICAgZ19hc3NlcnQgKEdES19JU19XSU5ET1cgKHdpbmRvdykpOwotKwotKyAgICBzY2FsZV9mYWN0 b3IgPSBnZGtfd2luZG93X2dldF9zY2FsZV9mYWN0b3IgKHdpbmRvdyk7Ci0rICAgIGFyZWEtPngg Kj0gc2NhbGVfZmFjdG9yOwotKyAgICBhcmVhLT55ICo9IHNjYWxlX2ZhY3RvcjsKLSsgICAgYXJl YS0+d2lkdGggKj0gc2NhbGVfZmFjdG9yOwotKyAgICBhcmVhLT5oZWlnaHQgKj0gc2NhbGVfZmFj dG9yOwotKyNlbmRpZgotK30KLSsKLSBzdGF0aWMgZ2Jvb2xlYW4KLSBfc2V0X2N1cnNvcl9sb2Nh dGlvbl9pbnRlcm5hbCAoSUJ1c0lNQ29udGV4dCAqaWJ1c2ltY29udGV4dCkKLSB7Ci1AQCAtMTAy NCw2ICsxMDQyLDggQEAgX3NldF9jdXJzb3JfbG9jYXRpb25faW50ZXJuYWwgKElCdXNJTUNvbnRl eHQgKmlidXNpbWNvbnRleHQpCi0gICAgICAgICAgICAgd2luZG93ID0gcGFyZW50OwotICAgICAg ICAgfQotIAotKyAgICAgICAgX3NldF9yZWN0X3NjYWxlX2ZhY3Rvcl93aXRoX3dpbmRvdyAoJmFy ZWEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzaW1j b250ZXh0LT5jbGllbnRfd2luZG93KTsKLSAgICAgICAgIGlidXNfaW5wdXRfY29udGV4dF9zZXRf Y3Vyc29yX2xvY2F0aW9uX3JlbGF0aXZlICgKLSAgICAgICAgICAgICBpYnVzaW1jb250ZXh0LT5p YnVzY29udGV4dCwKLSAgICAgICAgICAgICBhcmVhLngsCi1AQCAtMTA0OSw2ICsxMDY5LDcgQEAg X3NldF9jdXJzb3JfbG9jYXRpb25faW50ZXJuYWwgKElCdXNJTUNvbnRleHQgKmlidXNpbWNvbnRl eHQpCi0gICAgIGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRzIChpYnVzaW1jb250ZXh0LT5jbGll bnRfd2luZG93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS54LCBhcmVh LnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJlYS54LCAmYXJlYS55KTsK LSsgICAgX3NldF9yZWN0X3NjYWxlX2ZhY3Rvcl93aXRoX3dpbmRvdyAoJmFyZWEsIGlidXNpbWNv bnRleHQtPmNsaWVudF93aW5kb3cpOwotICAgICBpYnVzX2lucHV0X2NvbnRleHRfc2V0X2N1cnNv cl9sb2NhdGlvbiAoaWJ1c2ltY29udGV4dC0+aWJ1c2NvbnRleHQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhLngsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhLnksCi0tLSAKLTIuMTMuNAotCi1Gcm9tIGMx YjkzZjkzM2Y1Y2JkNzRmM2UwNjU3NWQyNmVkNzQzMmE1NDIwZmQgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiBNYXJpbyBCb2RlbWFubiA8bWFyaW8uYm9kZW1hbm5AZ21haWwuY29tPgot RGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxMjoxMDo1NiArMDkwMAotU3ViamVjdDogW1BBVENIIDAy LzE0XSBUeXBvIGZpeAotCi1CVUc9aHR0cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy9wdWxsLzE5 MzkKLQotUmV2aWV3IFVSTDogaHR0cHM6Ly9jb2RlcmV2aWV3LmFwcHNwb3QuY29tLzMyNzA4MDA0 MwotCi1QYXRjaCBmcm9tIE1hcmlvIEJvZGVtYW5uIDxtYXJpby5ib2RlbWFubkBnbWFpbC5jb20+ LgotLS0tCi0gdWkvZ3RrMy9pYnVzLWVtb2ppLjcuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS91aS9ndGszL2li dXMtZW1vamkuNy5pbiBiL3VpL2d0azMvaWJ1cy1lbW9qaS43LmluCi1pbmRleCA0ZWU4NjM2NC4u ZDVlYWUzMTAgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL2lidXMtZW1vamkuNy5pbgotKysrIGIvdWkv Z3RrMy9pYnVzLWVtb2ppLjcuaW4KLUBAIC0xNSw3ICsxNSw3IEBACi0gLlNIICJERVNDUklQVElP TiIKLSAKLSAuUFAKLS1JQnVzIEVtb2ppZXIgcHJvdmlkZXMgYSBHVUkgdG8gc2VsZWN0IGFuIGVt b2ppIGJ5IHR5cGluZyBhbiBlbW9qaSBhbm5vdGFpb24KLStJQnVzIEVtb2ppZXIgcHJvdmlkZXMg YSBHVUkgdG8gc2VsZWN0IGFuIGVtb2ppIGJ5IHR5cGluZyBhbiBlbW9qaSBhbm5vdGF0aW9uCi0g b3IgY2hvb3NpbmcgYSBjaGFyYWN0ZXIgd2l0aCBtb3VzZSBjbGljayBhbmQgaXQncyBkZXNpZ25l ZCB0byB3b3JrIGFzCi0gYW4gZXh0ZW5kZWQgSUJ1cyBsb29rdXAgd2luZG93IHVzaW5nIFNwYWNl LCBFbnRlciwgYW5kIEFycm93IGtleXMuCi0gVGhlIHRleHQgZW50cnkgYWNjZXB0cyBhbiBlbW9q aSBhbm5vdGF0aW9uIG9yIFVuaWNvZGUgcG9pbnRzLgotLS0gCi0yLjEzLjQKLQotRnJvbSAyMDNh M2RmNWEyMzlkNjQ0Y2Y0MmI3YmFjMDNhMjY4ZWI1YmFiZmM3IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogQWxleGFuZGVyIExhcnNzb24gPGFsZXhsQHJlZGhhdC5jb20+Ci1EYXRlOiBX ZWQsIDMwIEF1ZyAyMDE3IDExOjM4OjA5ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMTRdIElu aXRpYWwgdmVyc2lvbiBvZiBpYnVzIHBvcnRhbAotCi1UaGlzIGFkZHMgYSBkYnVzIHNlcnZpY2Ug Y2FsbGVkIG9yZy5mcmVlZGVza3RvcC5wb3J0YWwuSUJ1cyBvbiB0aGUKLXNlc3Npb24gYnVzLiBJ dCBpcyBhIHZlcnkgbGltaXRlZCBzZXJ2aWNlIHRoYXQgb25seSBpbXBsZW1lbnRzCi1DcmVhdGVJ bnB1dENvbnRleHQgYW5kIHRoZSBJbnB1dENvbnRleHQgaW50ZXJmYWNlIChhbmQgU2VydmljZS5E ZXN0cm95Ci1mb3IgbGlmZXRpbWUgYWNjZXNzKS4KLQotSXQgdXNlcyBnZGJ1cyBjb2RlIGdlbmVy YXRpb24gZm9yIGRlbWFyc2hhbGxpbmcgdGhlIG1ldGhvZCBjYWxscyB3aGljaAotbWVhbnMgaXQg d2lsbCB2ZXJpZnkgdGhhdCBhbGwgYXJndW1lbnRzIGhhdmUgdGhlIHJpZ2h0IHR5cGUuCi0KLUFk ZGl0aW9uYWxseSBhbGwgbWV0aG9kIGNhbGxzIHRvIHRoZSBpbnB1dCBjb250ZXh0IG9iamVjdCBo YXZlIHRvIGJlCi1mcm9tIHRoZSBjbGllbnQgdGhhdCBjcmVhdGVkIGl0LCBzbyBlYWNoIGNsaWVu dCBpcyBpc29sYXRlZC4KLQotQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9mbGF0cGFrL2ZsYXRwYWsv aXNzdWVzLzY3NQotUj1TaGF3bi5QLkh1YW5nQGdtYWlsLmNvbQotCi1SZXZpZXcgVVJMOiBodHRw czovL2NvZGVyZXZpZXcuYXBwc3BvdC5jb20vMzI2MzUwMDQzCi0KLVBhdGNoIGZyb20gQWxleGFu ZGVyIExhcnNzb24gPGFsZXhsQHJlZGhhdC5jb20+LgotLS0tCi0gTWFrZWZpbGUuYW0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKLSBjb25maWd1cmUuYWMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KLSBwb3J0YWwvTWFrZWZpbGUuYW0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOTUgKysrKwotIHBvcnRhbC9vcmcuZnJlZWRl c2t0b3AuSUJ1cy5Qb3J0YWwueG1sICAgICAgICB8IDEzMiArKysrKwotIHBvcnRhbC9vcmcuZnJl ZWRlc2t0b3AucG9ydGFsLklCdXMuc2VydmljZS5pbiB8ICAgMyArCi0gcG9ydGFsL3BvcnRhbC5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjk4ICsrKysrKysrKysrKysrKysrKysr KysrKysrCi0gc3JjL2lidXNzaGFyZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDE0ICsKLSA3IGZpbGVzIGNoYW5nZWQsIDk0NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p Ci0gY3JlYXRlIG1vZGUgMTAwNjQ0IHBvcnRhbC9NYWtlZmlsZS5hbQotIGNyZWF0ZSBtb2RlIDEw MDY0NCBwb3J0YWwvb3JnLmZyZWVkZXNrdG9wLklCdXMuUG9ydGFsLnhtbAotIGNyZWF0ZSBtb2Rl IDEwMDY0NCBwb3J0YWwvb3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5JQnVzLnNlcnZpY2UuaW4KLSBj cmVhdGUgbW9kZSAxMDA2NDQgcG9ydGFsL3BvcnRhbC5jCi0KLWRpZmYgLS1naXQgYS9NYWtlZmls ZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBmNzAzZDRjNi4uYzhlODAyZGEgMTAwNjQ0Ci0tLS0g YS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC01MSw2ICs1MSw3IEBAIFNVQkRJ UlMgPSBcCi0gCXV0aWwgXAotIAljb25mIFwKLSAJY2xpZW50IFwKLSsJcG9ydGFsIFwKLSAJZGF0 YSBcCi0gCW00IFwKLSAJcG8gXAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3Vy ZS5hYwotaW5kZXggY2I0OGFkNGMuLjE0NTU2YTNhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFj Ci0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNTMsNyArMTUzLDcgQEAgUEtHX0NIRUNLX01PRFVM RVMoR09CSkVDVDIsIFsKLSAgICAgZ29iamVjdC0yLjAgPj0gZ2xpYl9yZXF1aXJlZF92ZXJzaW9u Ci0gXSkKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhHSU8yLCBbCi0tICAgIGdpby0yLjAgPj0gZ2xpYl9y ZXF1aXJlZF92ZXJzaW9uCi0rICAgIGdpby0yLjAgZ2lvLXVuaXgtMi4wID49IGdsaWJfcmVxdWly ZWRfdmVyc2lvbgotIF0pCi0gUEtHX0NIRUNLX01PRFVMRVMoR1RIUkVBRDIsIFsKLSAgICAgZ3Ro cmVhZC0yLjAgPj0gZ2xpYl9yZXF1aXJlZF92ZXJzaW9uCi1AQCAtNjYwLDYgKzY2MCw4IEBAIFBL R19DSEVDS19NT0RVTEVTKElTT0NPREVTLCBbCi0gSVNPQ09ERVNfUFJFRklYPWAkUEtHX0NPTkZJ RyBpc28tY29kZXMgLS12YXJpYWJsZT1wcmVmaXhgCi0gQUNfU1VCU1QoSVNPQ09ERVNfUFJFRklY KQotIAotK0FDX1NVQlNUKFtHREJVU19DT0RFR0VOXSwgW2AkUEtHX0NPTkZJRyAtLXZhcmlhYmxl IGdkYnVzX2NvZGVnZW4gZ2lvLTIuMGBdKQotKwotICMgT1VUUFVUIGZpbGVzCi0gQUNfQ09ORklH X0ZJTEVTKFsgcG8vTWFrZWZpbGUuaW4KLSBNYWtlZmlsZQotQEAgLTY3NCw2ICs2NzYsNyBAQCBz cmMvTWFrZWZpbGUKLSBzcmMvaWJ1c3ZlcnNpb24uaAotIHNyYy90ZXN0cy9NYWtlZmlsZQotIGJ1 cy9NYWtlZmlsZQotK3BvcnRhbC9NYWtlZmlsZQotIGVuZ2luZS9NYWtlZmlsZQotIHV0aWwvTWFr ZWZpbGUKLSB1dGlsL0lNZGtpdC9NYWtlZmlsZQotZGlmZiAtLWdpdCBhL3BvcnRhbC9NYWtlZmls ZS5hbSBiL3BvcnRhbC9NYWtlZmlsZS5hbQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAwLi45NTRmYzU5MQotLS0tIC9kZXYvbnVsbAotKysrIGIvcG9ydGFsL01ha2VmaWxlLmFt Ci1AQCAtMCwwICsxLDk1IEBACi0rIyB2aW06c2V0IG5vZXQgdHM9NDoKLSsjCi0rIyBpYnVzIC0g VGhlIElucHV0IEJ1cwotKyMKLSsjIENvcHlyaWdodCAoYykgMjAwNy0yMDEzIFBlbmcgSHVhbmcg PHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotKyMgQ29weXJpZ2h0IChjKSAyMDA3LTIwMTMgUmVk IEhhdCwgSW5jLgotKyMKLSsjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyMgdmVyc2lvbiAyLjEgb2Yg dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwot KyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsjIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyMgTGljZW5zZSBh bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZQotKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg Qm9zdG9uLCBNQSAgMDIxMTAtMTMwMQotKyMgVVNBCi0rCi0rTlVMTCA9Ci0rCi0rbGliaWJ1cyA9 ICQodG9wX2J1aWxkZGlyKS9zcmMvbGliaWJ1cy1ASUJVU19BUElfVkVSU0lPTkAubGEKLSsKLStB TV9DUFBGTEFHUyA9IFwKLSsJLUkkKHRvcF9zcmNkaXIpL3NyYyAgIFwKLSsJLUkkKHRvcF9idWls ZGRpcikvc3JjIFwKLSsJJChOVUxMKQotKwotK0FNX0NGTEFHUyA9IFwKLSsJQEdMSUIyX0NGTEFH U0AgXAotKwlAR0lPMl9DRkxBR1NAIFwKLSsJQEdUSFJFQUQyX0NGTEFHU0AgXAotKwktREdfTE9H X0RPTUFJTj1cIklCVVNcIiBcCi0rCS1EUEtHREFUQURJUj1cIiQocGtnZGF0YWRpcilcIiBcCi0r CS1ETElCRVhFQ0RJUj1cIiQobGliZXhlY2RpcilcIiBcCi0rCS1EQklORElSPVwiQGJpbmRpckBc IiBcCi0rCS1ESUJVU19ESVNBQkxFX0RFUFJFQ0FURUQgXAotKwkkKE5VTEwpCi0rQU1fTERBREQg PSBcCi0rCUBHT0JKRUNUMl9MSUJTQCBcCi0rCUBHTElCMl9MSUJTQCBcCi0rCUBHSU8yX0xJQlNA IFwKLSsJQEdUSFJFQUQyX0xJQlNAIFwKLSsJJChsaWJpYnVzKSBcCi0rCSQoTlVMTCkKLSsKLStp YnVzX2RidXNfYnVpbHRfc291cmNlcyA9IGlidXMtcG9ydGFsLWRidXMuYyBpYnVzLXBvcnRhbC1k YnVzLmgKLStCVUlMVF9TT1VSQ0VTID0gJChpYnVzX2RidXNfYnVpbHRfc291cmNlcykKLSsKLSts aWJleGVjX1BST0dSQU1TID0gaWJ1cy1wb3J0YWwKLStpYnVzX3BvcnRhbF9ERVBFTkRFTkNJRVMg PSBcCi0rCSQobGliaWJ1cykgXAotKwkkKE5VTEwpCi0raWJ1c19wb3J0YWxfU09VUkNFUyA9IFwK LSsJcG9ydGFsLmMgXAotKwkkKGlidXNfZGJ1c19idWlsdF9zb3VyY2VzKSBcCi0rCSQoTlVMTCkK LStpYnVzX3BvcnRhbF9DRkxBR1MgPSBcCi0rCSQoQU1fQ0ZMQUdTKSBcCi0rCSQoTlVMTCkKLStp YnVzX3BvcnRhbF9MREFERCA9IFwKLSsJJChBTV9MREFERCkgXAotKwkkKE5VTEwpCi0rCi0rRVhU UkFfRElTVCA9IFwKLSsJJChOVUxMKQotKwotK0NMRUFORklMRVMgPSBcCi0rCSQoTlVMTCkKLSsK LSskKGxpYmlidXMpOgotKwkkKE1BS0UpIC1DICQodG9wX2J1aWxkZGlyKS9zcmMKLSsKLStkYnVz c2VydmljZV9pbl9maWxlcyA9IG9yZy5mcmVlZGVza3RvcC5wb3J0YWwuSUJ1cy5zZXJ2aWNlLmlu Ci0rZGJ1c3NlcnZpY2VfREFUQSA9ICQoZGJ1c3NlcnZpY2VfaW5fZmlsZXM6LnNlcnZpY2UuaW49 LnNlcnZpY2UpCi0rZGJ1c3NlcnZpY2VkaXI9JHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMKLSsK LStvcmcuZnJlZWRlc2t0b3AucG9ydGFsLklCdXMuc2VydmljZTogb3JnLmZyZWVkZXNrdG9wLnBv cnRhbC5JQnVzLnNlcnZpY2UuaW4KLSsJJChBTV9WX0dFTikgc2VkIC1lICJzfFxAbGliZXhlY2Rp clxAfCQobGliZXhlY2Rpcil8IiAgJDwgPiAkQC50bXAgJiYgbXYgJEAudG1wICRACi0rCi0rJChp YnVzX2RidXNfYnVpbHRfc291cmNlcykgOiBvcmcuZnJlZWRlc2t0b3AuSUJ1cy5Qb3J0YWwueG1s Ci0rCSQoQU1fVl9HRU4pICQoR0RCVVNfQ09ERUdFTikgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKwkJLS1pbnRlcmZhY2UtcHJlZml4IG9yZy5mcmVlZGVza3RvcC5JQnVzLiAgICAgICAg XAotKwkJLS1jLW5hbWVzcGFjZSBJQnVzRGJ1cyAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KwkJLS1nZW5lcmF0ZS1jLWNvZGUgJChidWlsZGRpcikvaWJ1cy1wb3J0YWwtZGJ1cyAgXAotKwkJ JF4gXAotKwkJJChOVUxMKQotKwotK0VYVFJBX0RJU1QgKz0gJChkYnVzc2VydmljZV9pbl9maWxl cykKLStDTEVBTkZJTEVTICs9ICQoZGJ1c3NlcnZpY2VfREFUQSkKLSsKLSstaW5jbHVkZSAkKHRv cF9zcmNkaXIpL2dpdC5tawotZGlmZiAtLWdpdCBhL3BvcnRhbC9vcmcuZnJlZWRlc2t0b3AuSUJ1 cy5Qb3J0YWwueG1sIGIvcG9ydGFsL29yZy5mcmVlZGVza3RvcC5JQnVzLlBvcnRhbC54bWwKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMC4uYWZjZTRkYWEKLS0tLSAvZGV2L251 bGwKLSsrKyBiL3BvcnRhbC9vcmcuZnJlZWRlc2t0b3AuSUJ1cy5Qb3J0YWwueG1sCi1AQCAtMCww ICsxLDEzMiBAQAotKzw/eG1sIHZlcnNpb249IjEuMCI/PgotKzwhLS0KLSsgQ29weXJpZ2h0IChD KSAyMDE3IFJlZCBIYXQsIEluYy4KLSsKLSsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyB2ZXJzaW9uIDIg b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r Ci0rIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rIExpY2Vuc2UgYWxvbmcg d2l0aCB0aGlzIGxpYnJhcnkuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSsKLSsgQXV0aG9yOiBBbGV4YW5kZXIgTGFyc3NvbiA8YWxleGxAcmVkaGF0LmNvbT4K LSstLT4KLSsKLSs8bm9kZSBuYW1lPSIvIiB4bWxuczpkb2M9Imh0dHA6Ly93d3cuZnJlZWRlc2t0 b3Aub3JnL2RidXMvMS4wL2RvYy5kdGQiPgotKyAgPCEtLQotKyAgICAgIG9yZy5mcmVlZGVza3Rv cC5JQnVzLlBvcnRhbDoKLSsgICAgICBAc2hvcnRfZGVzY3JpcHRpb246IFBvcnRhbCBmb3IgaWJ1 cyBjbGllbnQgYWNjZXNzCi0rCi0rICAgICAgVGhpcyBpbnRlcmZhY2UgaXMgYSBtaW5pbWFsIGlu dGVyZmFjZSB0byBJQnVzIHRoYXQgaXMgc2FmZSB0byBleHBvc2UgdG8KLSsgICAgICBjbGllbnRz LgotKyAgLS0+Ci0rICA8aW50ZXJmYWNlIG5hbWU9Im9yZy5mcmVlZGVza3RvcC5JQnVzLlBvcnRh bCI+Ci0rICAgIDxtZXRob2QgbmFtZT0nQ3JlYXRlSW5wdXRDb250ZXh0Jz4KLSsgICAgICA8YXJn IGRpcmVjdGlvbj0naW4nICB0eXBlPSdzJyBuYW1lPSdjbGllbnRfbmFtZScgLz4KLSsgICAgICA8 YXJnIGRpcmVjdGlvbj0nb3V0JyB0eXBlPSdvJyBuYW1lPSdvYmplY3RfcGF0aCcgLz4KLSsgICAg PC9tZXRob2Q+Ci0rICA8L2ludGVyZmFjZT4KLSsKLSsgIDwhLS0gVGhpcyBpcyBhIGNvcHkgb2Yg dGhlIGludGVyZmFjZSBpbiBpbnB1dGNvbnRleHQuYywgdGhleSBzaG91bGQgYmUgc2hhcmVkLgot KyAgICAgICBXZSB3YW50IHRoaXMgZm9yIHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGF0IHdlIGNh biBiZSBzdXJlIHdlIHZlcmlmeSBhbGwKLSsgICAgICAgY2FsbGVyIHR5cGVzLCBldGMuCi0rICAt LT4KLSsgIDxpbnRlcmZhY2UgbmFtZT0nb3JnLmZyZWVkZXNrdG9wLklCdXMuSW5wdXRDb250ZXh0 Jz4KLSsgICAgPG1ldGhvZCBuYW1lPSdQcm9jZXNzS2V5RXZlbnQnPgotKyAgICAgIDxhcmcgZGly ZWN0aW9uPSdpbicgIHR5cGU9J3UnIG5hbWU9J2tleXZhbCcgLz4KLSsgICAgICA8YXJnIGRpcmVj dGlvbj0naW4nICB0eXBlPSd1JyBuYW1lPSdrZXljb2RlJyAvPgotKyAgICAgIDxhcmcgZGlyZWN0 aW9uPSdpbicgIHR5cGU9J3UnIG5hbWU9J3N0YXRlJyAvPgotKyAgICAgIDxhcmcgZGlyZWN0aW9u PSdvdXQnIHR5cGU9J2InIG5hbWU9J2hhbmRsZWQnIC8+Ci0rICAgIDwvbWV0aG9kPgotKyAgICA8 bWV0aG9kIG5hbWU9J1NldEN1cnNvckxvY2F0aW9uJz4KLSsgICAgICA8YXJnIGRpcmVjdGlvbj0n aW4nIHR5cGU9J2knIG5hbWU9J3gnIC8+Ci0rICAgICAgPGFyZyBkaXJlY3Rpb249J2luJyB0eXBl PSdpJyBuYW1lPSd5JyAvPgotKyAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgdHlwZT0naScgbmFt ZT0ndycgLz4KLSsgICAgICA8YXJnIGRpcmVjdGlvbj0naW4nIHR5cGU9J2knIG5hbWU9J2gnIC8+ Ci0rICAgIDwvbWV0aG9kPgotKyAgICA8bWV0aG9kIG5hbWU9J1NldEN1cnNvckxvY2F0aW9uUmVs YXRpdmUnPgotKyAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgdHlwZT0naScgbmFtZT0neCcgLz4K LSsgICAgICA8YXJnIGRpcmVjdGlvbj0naW4nIHR5cGU9J2knIG5hbWU9J3knIC8+Ci0rICAgICAg PGFyZyBkaXJlY3Rpb249J2luJyB0eXBlPSdpJyBuYW1lPSd3JyAvPgotKyAgICAgIDxhcmcgZGly ZWN0aW9uPSdpbicgdHlwZT0naScgbmFtZT0naCcgLz4KLSsgICAgPC9tZXRob2Q+Ci0rICAgIDxt ZXRob2QgbmFtZT0nUHJvY2Vzc0hhbmRXcml0aW5nRXZlbnQnPgotKyAgICAgIDxhcmcgZGlyZWN0 aW9uPSdpbicgdHlwZT0nYWQnIG5hbWU9J2Nvb3JkaW5hdGVzJyAvPgotKyAgICA8L21ldGhvZD4K LSsgICAgPG1ldGhvZCBuYW1lPSdDYW5jZWxIYW5kV3JpdGluZyc+Ci0rICAgICAgPGFyZyBkaXJl Y3Rpb249J2luJyB0eXBlPSd1JyBuYW1lPSduX3N0cm9rZXMnIC8+Ci0rICAgIDwvbWV0aG9kPgot KyAgICA8bWV0aG9kIG5hbWU9J0ZvY3VzSW4nIC8+Ci0rICAgIDxtZXRob2QgbmFtZT0nRm9jdXNP dXQnIC8+Ci0rICAgIDxtZXRob2QgbmFtZT0nUmVzZXQnIC8+Ci0rICAgIDxtZXRob2QgbmFtZT0n U2V0Q2FwYWJpbGl0aWVzJz4KLSsgICAgICA8YXJnIGRpcmVjdGlvbj0naW4nIHR5cGU9J3UnIG5h bWU9J2NhcHMnIC8+Ci0rICAgIDwvbWV0aG9kPgotKyAgICA8bWV0aG9kIG5hbWU9J1Byb3BlcnR5 QWN0aXZhdGUnPgotKyAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgdHlwZT0ncycgbmFtZT0nbmFt ZScgLz4KLSsgICAgICA8YXJnIGRpcmVjdGlvbj0naW4nIHR5cGU9J3UnIG5hbWU9J3N0YXRlJyAv PgotKyAgICA8L21ldGhvZD4KLSsgICAgPG1ldGhvZCBuYW1lPSdTZXRFbmdpbmUnPgotKyAgICAg IDxhcmcgZGlyZWN0aW9uPSdpbicgdHlwZT0ncycgbmFtZT0nbmFtZScgLz4KLSsgICAgPC9tZXRo b2Q+Ci0rICAgIDxtZXRob2QgbmFtZT0nR2V0RW5naW5lJz4KLSsgICAgICA8YXJnIGRpcmVjdGlv bj0nb3V0JyB0eXBlPSd2JyBuYW1lPSdkZXNjJyAvPgotKyAgICA8L21ldGhvZD4KLSsgICAgPG1l dGhvZCBuYW1lPSdTZXRTdXJyb3VuZGluZ1RleHQnPgotKyAgICAgIDxhcmcgZGlyZWN0aW9uPSdp bicgdHlwZT0ndicgbmFtZT0ndGV4dCcgLz4KLSsgICAgICA8YXJnIGRpcmVjdGlvbj0naW4nIHR5 cGU9J3UnIG5hbWU9J2N1cnNvcl9wb3MnIC8+Ci0rICAgICAgPGFyZyBkaXJlY3Rpb249J2luJyB0 eXBlPSd1JyBuYW1lPSdhbmNob3JfcG9zJyAvPgotKyAgICA8L21ldGhvZD4KLSsKLSsgICAgPHNp Z25hbCBuYW1lPSdDb21taXRUZXh0Jz4KLSsgICAgICA8YXJnIHR5cGU9J3YnIG5hbWU9J3RleHQn IC8+Ci0rICAgIDwvc2lnbmFsPgotKyAgICA8c2lnbmFsIG5hbWU9J0ZvcndhcmRLZXlFdmVudCc+ Ci0rICAgICAgPGFyZyB0eXBlPSd1JyBuYW1lPSdrZXl2YWwnIC8+Ci0rICAgICAgPGFyZyB0eXBl PSd1JyBuYW1lPSdrZXljb2RlJyAvPgotKyAgICAgIDxhcmcgdHlwZT0ndScgbmFtZT0nc3RhdGUn IC8+Ci0rICAgIDwvc2lnbmFsPgotKyAgICA8c2lnbmFsIG5hbWU9J1VwZGF0ZVByZWVkaXRUZXh0 Jz4KLSsgICAgICA8YXJnIHR5cGU9J3YnIG5hbWU9J3RleHQnIC8+Ci0rICAgICAgPGFyZyB0eXBl PSd1JyBuYW1lPSdjdXJzb3JfcG9zJyAvPgotKyAgICAgIDxhcmcgdHlwZT0nYicgbmFtZT0ndmlz aWJsZScgLz4KLSsgICAgPC9zaWduYWw+Ci0rICAgIDxzaWduYWwgbmFtZT0nU2hvd1ByZWVkaXRU ZXh0Jy8+Ci0rICAgIDxzaWduYWwgbmFtZT0nSGlkZVByZWVkaXRUZXh0Jy8+Ci0rICAgIDxzaWdu YWwgbmFtZT0nVXBkYXRlQXV4aWxpYXJ5VGV4dCc+Ci0rICAgICAgPGFyZyB0eXBlPSd2JyBuYW1l PSd0ZXh0JyAvPgotKyAgICAgIDxhcmcgdHlwZT0nYicgbmFtZT0ndmlzaWJsZScgLz4KLSsgICAg PC9zaWduYWw+Ci0rICAgIDxzaWduYWwgbmFtZT0nU2hvd0F1eGlsaWFyeVRleHQnLz4KLSsgICAg PHNpZ25hbCBuYW1lPSdIaWRlQXV4aWxpYXJ5VGV4dCcvPgotKyAgICA8c2lnbmFsIG5hbWU9J1Vw ZGF0ZUxvb2t1cFRhYmxlJz4KLSsgICAgICA8YXJnIHR5cGU9J3YnIG5hbWU9J3RhYmxlJyAvPgot KyAgICAgIDxhcmcgdHlwZT0nYicgbmFtZT0ndmlzaWJsZScgLz4KLSsgICAgPC9zaWduYWw+Ci0r ICAgIDxzaWduYWwgbmFtZT0nU2hvd0xvb2t1cFRhYmxlJy8+Ci0rICAgIDxzaWduYWwgbmFtZT0n SGlkZUxvb2t1cFRhYmxlJy8+Ci0rICAgIDxzaWduYWwgbmFtZT0nUGFnZVVwTG9va3VwVGFibGUn Lz4KLSsgICAgPHNpZ25hbCBuYW1lPSdQYWdlRG93bkxvb2t1cFRhYmxlJy8+Ci0rICAgIDxzaWdu YWwgbmFtZT0nQ3Vyc29yVXBMb29rdXBUYWJsZScvPgotKyAgICA8c2lnbmFsIG5hbWU9J0N1cnNv ckRvd25Mb29rdXBUYWJsZScvPgotKyAgICA8c2lnbmFsIG5hbWU9J1JlZ2lzdGVyUHJvcGVydGll cyc+Ci0rICAgICAgPGFyZyB0eXBlPSd2JyBuYW1lPSdwcm9wcycgLz4KLSsgICAgPC9zaWduYWw+ Ci0rICAgIDxzaWduYWwgbmFtZT0nVXBkYXRlUHJvcGVydHknPgotKyAgICAgIDxhcmcgdHlwZT0n dicgbmFtZT0ncHJvcCcgLz4KLSsgICAgPC9zaWduYWw+Ci0rCi0rICAgIDxwcm9wZXJ0eSBuYW1l PSdDb250ZW50VHlwZScgdHlwZT0nKHV1KScgYWNjZXNzPSd3cml0ZScgLz4KLSsgIDwvaW50ZXJm YWNlPgotKwotKyAgPGludGVyZmFjZSBuYW1lPSdvcmcuZnJlZWRlc2t0b3AuSUJ1cy5TZXJ2aWNl Jz4KLSsgICAgPG1ldGhvZCBuYW1lPSdEZXN0cm95JyAvPgotKyAgPC9pbnRlcmZhY2U+Ci0rCi0r PC9ub2RlPgotZGlmZiAtLWdpdCBhL3BvcnRhbC9vcmcuZnJlZWRlc2t0b3AucG9ydGFsLklCdXMu c2VydmljZS5pbiBiL3BvcnRhbC9vcmcuZnJlZWRlc2t0b3AucG9ydGFsLklCdXMuc2VydmljZS5p bgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwLi40N2FlOWZmYwotLS0tIC9k ZXYvbnVsbAotKysrIGIvcG9ydGFsL29yZy5mcmVlZGVza3RvcC5wb3J0YWwuSUJ1cy5zZXJ2aWNl LmluCi1AQCAtMCwwICsxLDMgQEAKLStbRC1CVVMgU2VydmljZV0KLStOYW1lPW9yZy5mcmVlZGVz a3RvcC5wb3J0YWwuSUJ1cwotK0V4ZWM9QGxpYmV4ZWNkaXJAL2lidXMtcG9ydGFsCi1kaWZmIC0t Z2l0IGEvcG9ydGFsL3BvcnRhbC5jIGIvcG9ydGFsL3BvcnRhbC5jCi1uZXcgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggMDAwMDAwMDAuLjA0MTVmOTk2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9wb3J0 YWwvcG9ydGFsLmMKLUBAIC0wLDAgKzEsNjk4IEBACi0rLyogLSotIG1vZGU6IEM7IGMtYmFzaWMt b2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IC0qLSAqLwotKy8qIHZpbTpzZXQgZXQg c3RzPTQ6ICovCi0rLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSsgKiBDb3B5cmlnaHQgKEMpIDIw MTcgUmVkIEhhdCwgSW5jLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgKiB2ZXJz aW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgKiBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAqCi0rICogWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYwotKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxCi0rICogVVNBCi0rICov Ci0rI2luY2x1ZGUgPGNvbmZpZy5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotKyNpbmNsdWRlIDxn bGliLmg+Ci0rI2luY2x1ZGUgPGdpby9naW8uaD4KLSsjaW5jbHVkZSA8aWJ1cy5oPgotKyNpbmNs dWRlIDxsb2NhbGUuaD4KLSsjaW5jbHVkZSA8cHdkLmg+Ci0rI2luY2x1ZGUgPHNpZ25hbC5oPgot KyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUg PHN5cy9zdGF0Lmg+Ci0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKwotKyNpbmNsdWRlICJpYnVzLXBv cnRhbC1kYnVzLmgiCi0rCi0rdHlwZWRlZiBzdHJ1Y3QgX0lCdXNQb3J0YWwgSUJ1c1BvcnRhbDsK LSt0eXBlZGVmIHN0cnVjdCBfSUJ1c1BvcnRhbENsYXNzIElCdXNQb3J0YWxDbGFzczsKLSt0eXBl ZGVmIHN0cnVjdCBfSUJ1c1BvcnRhbENvbnRleHQgSUJ1c1BvcnRhbENvbnRleHQ7Ci0rdHlwZWRl ZiBzdHJ1Y3QgX0lCdXNQb3J0YWxDb250ZXh0Q2xhc3MgSUJ1c1BvcnRhbENvbnRleHRDbGFzczsK LSsKLStzdHJ1Y3QgX0lCdXNQb3J0YWxDb250ZXh0Ci0rewotKyAgICBJQnVzRGJ1c0lucHV0Q29u dGV4dFNrZWxldG9uIHBhcmVudF9pbnN0YW5jZTsKLSsgICAgSUJ1c0lucHV0Q29udGV4dCAqY29u dGV4dDsKLSsgICAgZ3VpbnQgaWQ7Ci0rICAgIGNoYXIgKm93bmVyOwotKyAgICBjaGFyICpvYmpl Y3RfcGF0aDsKLSsgICAgSUJ1c0RidXNTZXJ2aWNlICpzZXJ2aWNlOwotK307Ci0rCi0rc3RydWN0 IF9JQnVzUG9ydGFsQ29udGV4dENsYXNzCi0rewotKyAgICBJQnVzRGJ1c0lucHV0Q29udGV4dFNr ZWxldG9uQ2xhc3MgcGFyZW50X2NsYXNzOwotK307Ci0rCi0rc3RydWN0IF9JQnVzUG9ydGFsCi0r ewotKyAgICBJQnVzRGJ1c1BvcnRhbFNrZWxldG9uIHBhcmVudF9pbnN0YW5jZTsKLSsKLSt9Owot KwotK3N0cnVjdCBfSUJ1c1BvcnRhbENsYXNzCi0rewotKyAgICBJQnVzRGJ1c1BvcnRhbFNrZWxl dG9uQ2xhc3MgcGFyZW50X2NsYXNzOwotK307Ci0rCi0rZW51bQotK3sKLSsgICAgUFJPUF9DT05U RU5UX1RZUEUgPSAxLAotKyAgICBOX1BST1BFUlRJRVMKLSt9OwotKwotK3N0YXRpYyBHTWFpbkxv b3AgKmxvb3AgPSBOVUxMOwotK3N0YXRpYyBJQnVzQnVzICppYnVzX2J1czsKLStzdGF0aWMgSUJ1 c1BvcnRhbCAqaWJ1c19wb3J0YWwgPSBOVUxMOwotK3N0YXRpYyBnYm9vbGVhbiBvcHRfdmVyYm9z ZTsKLStzdGF0aWMgZ2Jvb2xlYW4gb3B0X3JlcGxhY2U7Ci0rCi0rc3RhdGljIEdMaXN0ICphbGxf Y29udGV4dHMgPSBOVUxMOwotKwotK3N0YXRpYyBndWludCBuZXh0X2NvbnRleHRfaWQ7Ci0rCi0r R1R5cGUgaWJ1c19wb3J0YWxfY29udGV4dF9nZXRfdHlwZSAodm9pZCkgR19HTlVDX0NPTlNUOwot K3N0YXRpYyB2b2lkIGlidXNfcG9ydGFsX2NvbnRleHRfaWZhY2VfaW5pdCAoSUJ1c0RidXNJbnB1 dENvbnRleHRJZmFjZSAqaWZhY2UpOwotKwotK3N0YXRpYyB2b2lkIHBvcnRhbF9jb250ZXh0X2df c2lnbmFsIChHREJ1c1Byb3h5ICAgICAgICAqcHJveHksCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICpzZW5kZXJfbmFtZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgKnNpZ25hbF9u YW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAg ICAgICAqcGFyYW1ldGVycywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SUJ1c1BvcnRhbENvbnRleHQgKnBvcnRhbF9jb250ZXh0KTsKLSsKLStHX0RFRklORV9UWVBFX1dJ VEhfQ09ERSAoSUJ1c1BvcnRhbENvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGli dXNfcG9ydGFsX2NvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfREJVU19U WVBFX0lOUFVUX0NPTlRFWFRfU0tFTEVUT04sCi0rICAgICAgICAgICAgICAgICAgICAgICAgIEdf SU1QTEVNRU5UX0lOVEVSRkFDRSAoSUJVU19EQlVTX1RZUEVfSU5QVVRfQ09OVEVYVCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzX3BvcnRhbF9jb250ZXh0X2lmYWNlX2lu aXQpKTsKLSsKLStzdGF0aWMgdm9pZAotK19mb3J3YXJkX21ldGhvZF9jYiAoR09iamVjdCAqc291 cmNlX29iamVjdCwKLSsgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAqcmVzLAotKyAg ICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKQotK3sKLSsgICAgR0RCdXNNZXRo b2RJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gdXNlcl9kYXRhOwotKyAgICBJQnVzUG9ydGFsQ29u dGV4dCAqcG9ydGFsX2NvbnRleHQgPQotKyAgICAgICAgICAgIChJQnVzUG9ydGFsQ29udGV4dCAq KSBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fZ2V0X3VzZXJfZGF0YSAoCi0rICAgICAgICAgICAg ICAgICAgICBpbnZvY2F0aW9uKTsKLSsgICAgSUJ1c0VuZ2luZURlc2MgKmRlc2M7Ci0rICAgIEdF cnJvciAqZXJyb3IgPSBOVUxMOwotKwotKyAgICBHVmFyaWFudCAqdmFyaWFudCA9IGdfZGJ1c19w cm94eV9jYWxsX2ZpbmlzaCAoKEdEQnVzUHJveHkgKikgc291cmNlX29iamVjdCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcywgJmVycm9yKTsK LSsgICAgaWYgKHZhcmlhbnQgPT0gTlVMTCkgewotKyAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZv Y2F0aW9uX3JldHVybl9nZXJyb3IgKGludm9jYXRpb24sIGVycm9yKTsKLSsgICAgICAgIGdfZXJy b3JfZnJlZSAoZXJyb3IpOwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICAgIGdfZGJ1 c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUgKGludm9jYXRpb24sIHZhcmlhbnQpOwot K30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStfZm9yd2FyZF9tZXRob2QgKElCdXNEYnVzSW5wdXRD b250ZXh0ICAqb2JqZWN0LAotKyAgICAgICAgICAgICAgICAgR0RCdXNNZXRob2RJbnZvY2F0aW9u ICppbnZvY2F0aW9uKQotK3sKLSsgICAgSUJ1c1BvcnRhbENvbnRleHQgKnBvcnRhbF9jb250ZXh0 ID0gKElCdXNQb3J0YWxDb250ZXh0ICopb2JqZWN0OwotKyAgICBHREJ1c01lc3NhZ2UgKm1lc3Nh Z2UgPSBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fZ2V0X21lc3NhZ2UgKGludm9jYXRpb24pOwot KwotKyAgICBnX2RidXNfcHJveHlfY2FsbCAoR19EQlVTX1BST1hZIChwb3J0YWxfY29udGV4dC0+ Y29udGV4dCksCi0rICAgICAgICAgICAgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRp b25fZ2V0X21ldGhvZF9uYW1lIChpbnZvY2F0aW9uKSwKLSsgICAgICAgICAgICAgICAgICAgICAg IGdfZGJ1c19tZXNzYWdlX2dldF9ib2R5IChtZXNzYWdlKSwKLSsgICAgICAgICAgICAgICAgICAg ICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCi0rICAgICAgICAgICAgICAgICAgICAgICAtMSwK LSsgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIC8qIGNhbmNlbGxhYmxlICovCi0rICAgICAg ICAgICAgICAgICAgICAgICBfZm9yd2FyZF9tZXRob2RfY2IsIGludm9jYXRpb24pOwotKyAgICBy ZXR1cm4gVFJVRTsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0raWJ1c19kYnVzX2NvbnRleHRf Y2FuY2VsX2hhbmRfd3JpdGluZyAoSUJ1c0RidXNJbnB1dENvbnRleHQgICpvYmplY3QsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCdXNNZXRob2RJbnZvY2F0aW9u ICppbnZvY2F0aW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1 aW50ICAgICAgICAgICAgICAgICAgYXJnX25fc3Ryb2tlcykKLSt7Ci0rICAgIHJldHVybiBfZm9y d2FyZF9tZXRob2QgKG9iamVjdCwgaW52b2NhdGlvbik7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVh bgotK2lidXNfZGJ1c19jb250ZXh0X2ZvY3VzX2luIChJQnVzRGJ1c0lucHV0Q29udGV4dCAgKm9i amVjdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCdXNNZXRob2RJbnZvY2F0aW9u ICppbnZvY2F0aW9uKQotK3sKLSsgICAgcmV0dXJuIF9mb3J3YXJkX21ldGhvZCAob2JqZWN0LCBp bnZvY2F0aW9uKTsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0raWJ1c19kYnVzX2NvbnRleHRf Zm9jdXNfb3V0IChJQnVzRGJ1c0lucHV0Q29udGV4dCAgKm9iamVjdCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdEQnVzTWV0aG9kSW52b2NhdGlvbiAqaW52b2NhdGlvbikKLSt7Ci0r ICAgIHJldHVybiBfZm9yd2FyZF9tZXRob2QgKG9iamVjdCwgaW52b2NhdGlvbik7Ci0rfQotKwot K3N0YXRpYyBnYm9vbGVhbgotK2lidXNfZGJ1c19jb250ZXh0X2dldF9lbmdpbmUgKElCdXNEYnVz SW5wdXRDb250ZXh0ICAqb2JqZWN0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdE QnVzTWV0aG9kSW52b2NhdGlvbiAqaW52b2NhdGlvbikKLSt7Ci0rICAgIHJldHVybiBfZm9yd2Fy ZF9tZXRob2QgKG9iamVjdCwgaW52b2NhdGlvbik7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgot K2lidXNfZGJ1c19jb250ZXh0X3Byb2Nlc3NfaGFuZF93cml0aW5nX2V2ZW50IChJQnVzRGJ1c0lu cHV0Q29udGV4dCAgKm9iamVjdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0RCdXNNZXRob2RJbnZvY2F0aW9uICppbnZvY2F0aW9uLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICph cmdfY29vcmRpbmF0ZXMpCi0rewotKyAgICByZXR1cm4gX2ZvcndhcmRfbWV0aG9kIChvYmplY3Qs IGludm9jYXRpb24pOwotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStpYnVzX2RidXNfY29udGV4 dF9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0RidXNJbnB1dENvbnRleHQgICpvYmplY3QsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQnVzTWV0aG9kSW52b2NhdGlvbiAq aW52b2NhdGlvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQg ICAgICAgICAgICAgICAgICBhcmdfa2V5dmFsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICAgIGFyZ19rZXljb2RlLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICAgIGFyZ19z dGF0ZSkKLSt7Ci0rICAgIHJldHVybiBfZm9yd2FyZF9tZXRob2QgKG9iamVjdCwgaW52b2NhdGlv bik7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2lidXNfZGJ1c19jb250ZXh0X3Byb3BlcnR5 X2FjdGl2YXRlIChJQnVzRGJ1c0lucHV0Q29udGV4dCAgKm9iamVjdCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0RCdXNNZXRob2RJbnZvY2F0aW9uICppbnZvY2F0aW9u LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAg ICAgICAgKmFyZ19uYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn dWludCAgICAgICAgICAgICAgICAgIGFyZ19zdGF0ZSkKLSt7Ci0rICAgIHJldHVybiBfZm9yd2Fy ZF9tZXRob2QgKG9iamVjdCwgaW52b2NhdGlvbik7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgot K2lidXNfZGJ1c19jb250ZXh0X3Jlc2V0IChJQnVzRGJ1c0lucHV0Q29udGV4dCAgKm9iamVjdCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgR0RCdXNNZXRob2RJbnZvY2F0aW9uICppbnZvY2F0 aW9uKQotK3sKLSsgICAgcmV0dXJuIF9mb3J3YXJkX21ldGhvZCAob2JqZWN0LCBpbnZvY2F0aW9u KTsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0raWJ1c19kYnVzX2NvbnRleHRfc2V0X2NhcGFi aWxpdGllcyAoSUJ1c0RidXNJbnB1dENvbnRleHQgICpvYmplY3QsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0RCdXNNZXRob2RJbnZvY2F0aW9uICppbnZvY2F0aW9uLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAg ICAgYXJnX2NhcHMpCi0rewotKyAgICByZXR1cm4gX2ZvcndhcmRfbWV0aG9kIChvYmplY3QsIGlu dm9jYXRpb24pOwotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStpYnVzX2RidXNfY29udGV4dF9z ZXRfY3Vyc29yX2xvY2F0aW9uIChJQnVzRGJ1c0lucHV0Q29udGV4dCAgKm9iamVjdCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJ1c01ldGhvZEludm9jYXRpb24g Kmludm9jYXRpb24sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2lu dCAgICAgICAgICAgICAgICAgICBhcmdfeCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnaW50ICAgICAgICAgICAgICAgICAgIGFyZ195LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgICAgYXJnX3csCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAgICAg ICAgICBhcmdfaCkKLSt7Ci0rICAgIHJldHVybiBfZm9yd2FyZF9tZXRob2QgKG9iamVjdCwgaW52 b2NhdGlvbik7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2lidXNfZGJ1c19jb250ZXh0X3Nl dF9jdXJzb3JfbG9jYXRpb25fcmVsYXRpdmUgKElCdXNEYnVzSW5wdXRDb250ZXh0ICAqb2JqZWN0 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQnVz TWV0aG9kSW52b2NhdGlvbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmludm9jYXRpb24sCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAgICAgICAg ICBhcmdfeCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnaW50ICAgICAgICAgICAgICAgICAgIGFyZ195LAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgICAgYXJnX3csCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAg ICAgICAgICAgICAgICBhcmdfaCkKLSt7Ci0rICAgIHJldHVybiBfZm9yd2FyZF9tZXRob2QgKG9i amVjdCwgaW52b2NhdGlvbik7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2lidXNfZGJ1c19j b250ZXh0X3NldF9lbmdpbmUgKElCdXNEYnVzSW5wdXRDb250ZXh0ICAqb2JqZWN0LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdEQnVzTWV0aG9kSW52b2NhdGlvbiAqaW52b2NhdGlv biwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAg KmFyZ19uYW1lKQotK3sKLSsgICAgcmV0dXJuIF9mb3J3YXJkX21ldGhvZCAob2JqZWN0LCBpbnZv Y2F0aW9uKTsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0raWJ1c19kYnVzX2NvbnRleHRfc2V0 X3N1cnJvdW5kaW5nX3RleHQgKElCdXNEYnVzSW5wdXRDb250ZXh0ICAqb2JqZWN0LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJ1c01ldGhvZEludm9jYXRpb24g Kmludm9jYXRpb24sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdW YXJpYW50ICAgICAgICAgICAgICAqYXJnX3RleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgYXJnX2N1cnNvcl9wb3MsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAg ICAgICAgYXJnX2FuY2hvcl9wb3MpCi0rewotKyAgICByZXR1cm4gX2ZvcndhcmRfbWV0aG9kIChv YmplY3QsIGludm9jYXRpb24pOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2lidXNfcG9ydGFsX2Nv bnRleHRfaWZhY2VfaW5pdCAoSUJ1c0RidXNJbnB1dENvbnRleHRJZmFjZSAqaWZhY2UpCi0rewot KyAgICBpZmFjZS0+aGFuZGxlX2NhbmNlbF9oYW5kX3dyaXRpbmcgPSBpYnVzX2RidXNfY29udGV4 dF9jYW5jZWxfaGFuZF93cml0aW5nOwotKyAgICBpZmFjZS0+aGFuZGxlX2ZvY3VzX2luID0gaWJ1 c19kYnVzX2NvbnRleHRfZm9jdXNfaW47Ci0rICAgIGlmYWNlLT5oYW5kbGVfZm9jdXNfb3V0ID0g aWJ1c19kYnVzX2NvbnRleHRfZm9jdXNfb3V0OwotKyAgICBpZmFjZS0+aGFuZGxlX2dldF9lbmdp bmUgPSBpYnVzX2RidXNfY29udGV4dF9nZXRfZW5naW5lOwotKyAgICBpZmFjZS0+aGFuZGxlX3By b2Nlc3NfaGFuZF93cml0aW5nX2V2ZW50ID0KLSsgICAgICAgICAgICBpYnVzX2RidXNfY29udGV4 dF9wcm9jZXNzX2hhbmRfd3JpdGluZ19ldmVudDsKLSsgICAgaWZhY2UtPmhhbmRsZV9wcm9jZXNz X2tleV9ldmVudCA9IGlidXNfZGJ1c19jb250ZXh0X3Byb2Nlc3Nfa2V5X2V2ZW50OwotKyAgICBp ZmFjZS0+aGFuZGxlX3Byb3BlcnR5X2FjdGl2YXRlID0gaWJ1c19kYnVzX2NvbnRleHRfcHJvcGVy dHlfYWN0aXZhdGU7Ci0rICAgIGlmYWNlLT5oYW5kbGVfcmVzZXQgPSBpYnVzX2RidXNfY29udGV4 dF9yZXNldDsKLSsgICAgaWZhY2UtPmhhbmRsZV9zZXRfY2FwYWJpbGl0aWVzID0gaWJ1c19kYnVz X2NvbnRleHRfc2V0X2NhcGFiaWxpdGllczsKLSsgICAgaWZhY2UtPmhhbmRsZV9zZXRfY3Vyc29y X2xvY2F0aW9uID0gaWJ1c19kYnVzX2NvbnRleHRfc2V0X2N1cnNvcl9sb2NhdGlvbjsKLSsgICAg aWZhY2UtPmhhbmRsZV9zZXRfY3Vyc29yX2xvY2F0aW9uX3JlbGF0aXZlID0KLSsgICAgICAgICAg ICBpYnVzX2RidXNfY29udGV4dF9zZXRfY3Vyc29yX2xvY2F0aW9uX3JlbGF0aXZlOwotKyAgICBp ZmFjZS0+aGFuZGxlX3NldF9lbmdpbmUgPSBpYnVzX2RidXNfY29udGV4dF9zZXRfZW5naW5lOwot KyAgICBpZmFjZS0+aGFuZGxlX3NldF9zdXJyb3VuZGluZ190ZXh0ID0gaWJ1c19kYnVzX2NvbnRl eHRfc2V0X3N1cnJvdW5kaW5nX3RleHQ7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0raWJ1c19wb3J0 YWxfY29udGV4dF9pbml0IChJQnVzUG9ydGFsQ29udGV4dCAqcG9ydGFsX2NvbnRleHQpCi0rewot K30KLSsKLStzdGF0aWMgdm9pZAotK2lidXNfcG9ydGFsX2NvbnRleHRfZmluYWxpemUgKEdPYmpl Y3QgKm9iamVjdCkKLSt7Ci0rICAgIElCdXNQb3J0YWxDb250ZXh0ICpwb3J0YWxfY29udGV4dCA9 IChJQnVzUG9ydGFsQ29udGV4dCAqKW9iamVjdDsKLSsKLSsgICAgYWxsX2NvbnRleHRzID0gZ19s aXN0X3JlbW92ZSAoYWxsX2NvbnRleHRzLCBwb3J0YWxfY29udGV4dCk7Ci0rCi0rICAgIGdfZGJ1 c19pbnRlcmZhY2Vfc2tlbGV0b25fdW5leHBvcnQgKAotKyAgICAgICAgICAgIEdfREJVU19JTlRF UkZBQ0VfU0tFTEVUT04gKHBvcnRhbF9jb250ZXh0LT5zZXJ2aWNlKSk7Ci0rICAgIGdfZGJ1c19p bnRlcmZhY2Vfc2tlbGV0b25fdW5leHBvcnQgKAotKyAgICAgICAgICAgIEdfREJVU19JTlRFUkZB Q0VfU0tFTEVUT04gKHBvcnRhbF9jb250ZXh0KSk7Ci0rCi0rICAgIGdfZnJlZSAocG9ydGFsX2Nv bnRleHQtPm93bmVyKTsKLSsgICAgZ19mcmVlIChwb3J0YWxfY29udGV4dC0+b2JqZWN0X3BhdGgp OwotKyAgICBnX29iamVjdF91bnJlZiAocG9ydGFsX2NvbnRleHQtPnNlcnZpY2UpOwotKwotKyAg ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMgKAotKyAgICAgICAgICAgIHBv cnRhbF9jb250ZXh0LT5jb250ZXh0LAotKyAgICAgICAgICAgIEdfQ0FMTEJBQ0socG9ydGFsX2Nv bnRleHRfZ19zaWduYWwpLAotKyAgICAgICAgICAgIHBvcnRhbF9jb250ZXh0KTsKLSsgICAgZ19v YmplY3RfdW5yZWYgKHBvcnRhbF9jb250ZXh0LT5jb250ZXh0KTsKLSsKLSsgICAgR19PQkpFQ1Rf Q0xBU1MgKGlidXNfcG9ydGFsX2NvbnRleHRfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVj dCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0raWJ1c19wb3J0YWxfY29udGV4dF9zZXRfcHJvcGVy dHkgKElCdXNQb3J0YWxDb250ZXh0ICpwb3J0YWxfY29udGV4dCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgIHByb3BfaWQsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdWYWx1ZSAgICAgICp2YWx1ZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BhcmFtU3BlYyAgICAgICAgKnBzcGVjKQot K3sKLSsgICAgc3dpdGNoIChwcm9wX2lkKSB7Ci0rICAgIGNhc2UgUFJPUF9DT05URU5UX1RZUEU6 Ci0rICAgICAgICBnX2RidXNfcHJveHlfY2FsbCAoR19EQlVTX1BST1hZIChwb3J0YWxfY29udGV4 dC0+Y29udGV4dCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3Rv cC5EQnVzLlByb3BlcnRpZXMuU2V0IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3Zh cmlhbnRfbmV3ICgiKHNzdikiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElCVVNfSU5URVJGQUNFX0lOUFVUX0NPTlRFWFQsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnRUeXBlIiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnX3ZhbHVlX2dldF92YXJpYW50ICh2YWx1ZSkpLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgLTEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg TlVMTCwgLyogY2FuY2VsbGFibGUgKi8KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM LCAvKiBjYWxsYmFjayAqLwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgIC8qIHVz ZXJfZGF0YSAqLwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0rICAgICAgICBicmVh azsKLSsgICAgZGVmYXVsdDoKLSsgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJU WV9JRCAocG9ydGFsX2NvbnRleHQsIHByb3BfaWQsIHBzcGVjKTsKLSsgICAgfQotK30KLSsKLStz dGF0aWMgdm9pZAotK2lidXNfcG9ydGFsX2NvbnRleHRfZ2V0X3Byb3BlcnR5IChJQnVzUG9ydGFs Q29udGV4dCAqcG9ydGFsX2NvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGd1aW50ICAgICAgICAgICAgICBwcm9wX2lkLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHVmFsdWUgICAgICAgICAgICAqdmFsdWUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdQYXJhbVNwZWMgICAgICAgICpwc3BlYykKLSt7Ci0rICAgIHN3aXRj aCAocHJvcF9pZCkgewotKyAgICBjYXNlIFBST1BfQ09OVEVOVF9UWVBFOgotKyAgICAgICAgZ193 YXJuaW5nICgiTm8gc3VwcG9ydCBmb3Igc2V0dGluZyBjb250ZW50IHR5cGUiKTsKLSsgICAgICAg IGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS T1BFUlRZX0lEIChwb3J0YWxfY29udGV4dCwgcHJvcF9pZCwgcHNwZWMpOwotKyAgICB9Ci0rfQot KwotK3N0YXRpYyBnYm9vbGVhbgotK2lidXNfcG9ydGFsX2NvbnRleHRfZ19hdXRob3JpemVfbWV0 aG9kIChHREJ1c0ludGVyZmFjZVNrZWxldG9uICppbnRlcmZhY2UsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdEQnVzTWV0aG9kSW52b2NhdGlvbiAgKmludm9jYXRp b24pCi0rewotKyAgICBJQnVzUG9ydGFsQ29udGV4dCAqcG9ydGFsX2NvbnRleHQgPSAoSUJ1c1Bv cnRhbENvbnRleHQgKilpbnRlcmZhY2U7Ci0rCi0rICAgIGlmIChnX3N0cmNtcDAgKGdfZGJ1c19t ZXRob2RfaW52b2NhdGlvbl9nZXRfc2VuZGVyIChpbnZvY2F0aW9uKSwKLSsgICAgICAgICAgICAg ICAgICAgcG9ydGFsX2NvbnRleHQtPm93bmVyKSA9PSAwKSB7Ci0rICAgICAgICByZXR1cm4gVFJV RTsKLSsgICAgfQotKwotKyAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX2Vycm9y IChpbnZvY2F0aW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHX0RCVVNfRVJST1IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdfREJVU19FUlJPUl9GQUlMRUQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJBY2Nlc3MgZGVuaWVkIik7Ci0rICAgIHJldHVybiBGQUxTRTsKLSt9Ci0r Ci0rCi0rc3RhdGljIHZvaWQKLStpYnVzX3BvcnRhbF9jb250ZXh0X2NsYXNzX2luaXQgKElCdXNQ b3J0YWxDb250ZXh0Q2xhc3MgKmtsYXNzKQotK3sKLSsgICAgR09iamVjdENsYXNzICpnb2JqZWN0 X2NsYXNzOwotKyAgICBHREJ1c0ludGVyZmFjZVNrZWxldG9uQ2xhc3MgKnNrZWxldG9uX2NsYXNz OwotKwotKyAgICBnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKLSsgICAg Z29iamVjdF9jbGFzcy0+ZmluYWxpemUgID0gaWJ1c19wb3J0YWxfY29udGV4dF9maW5hbGl6ZTsK LSsgICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ICA9Ci0rICAgICAgICAgICAgKEdPYmpl Y3RTZXRQcm9wZXJ0eUZ1bmMpIGlidXNfcG9ydGFsX2NvbnRleHRfc2V0X3Byb3BlcnR5OwotKyAg ICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgID0KLSsgICAgICAgICAgICAoR09iamVjdEdl dFByb3BlcnR5RnVuYykgaWJ1c19wb3J0YWxfY29udGV4dF9nZXRfcHJvcGVydHk7Ci0rCi0rICAg IHNrZWxldG9uX2NsYXNzID0gR19EQlVTX0lOVEVSRkFDRV9TS0VMRVRPTl9DTEFTUyhrbGFzcyk7 Ci0rICAgIHNrZWxldG9uX2NsYXNzLT5nX2F1dGhvcml6ZV9tZXRob2QgPSBpYnVzX3BvcnRhbF9j b250ZXh0X2dfYXV0aG9yaXplX21ldGhvZDsKLSsKLSsgICAgaWJ1c19kYnVzX2lucHV0X2NvbnRl eHRfb3ZlcnJpZGVfcHJvcGVydGllcyAoZ29iamVjdF9jbGFzcywKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9DT05URU5UX1RZUEUpOwotK30K LSsKLStzdGF0aWMgdm9pZAotK3BvcnRhbF9jb250ZXh0X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAg ICAgICAqcHJveHksCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAg ICpzZW5kZXJfbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAg ICAgKnNpZ25hbF9uYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAg ICAgICAqcGFyYW1ldGVycywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1BvcnRhbENv bnRleHQgKnBvcnRhbF9jb250ZXh0KQotK3sKLSsgICAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0r ICAgIEdEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbjsKLSsKLSsgICAgaWYgKGdfc3RyY21wMCAo c2VuZGVyX25hbWUsIElCVVNfU0VSVklDRV9JQlVTKSAhPSAwKQotKyAgICAgICAgcmV0dXJuOwot KwotKyAgICBjb25uZWN0aW9uID0gZ19kYnVzX2ludGVyZmFjZV9za2VsZXRvbl9nZXRfY29ubmVj dGlvbiAoCi0rICAgICAgICAgICAgR19EQlVTX0lOVEVSRkFDRV9TS0VMRVRPTiAocG9ydGFsX2Nv bnRleHQpKTsKLSsgICAgaWYgKCFnX2RidXNfY29ubmVjdGlvbl9lbWl0X3NpZ25hbCAoY29ubmVj dGlvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydGFsX2Nv bnRleHQtPm93bmVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw b3J0YWxfY29udGV4dC0+b2JqZWN0X3BhdGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElCVVNfSU5URVJGQUNFX0lOUFVUX0NPTlRFWFQsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbF9uYW1lLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IpKSB7Ci0rICAgICAgICBnX3dhcm5pbmcgKCJV bmFibGUgdG8gZW1pdCBzaWduYWwgJXM6ICVzIiwgc2lnbmFsX25hbWUsIGVycm9yLT5tZXNzYWdl KTsKLSsgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotKyAgICB9Ci0rCi0rICAgIGdfc2ln bmFsX3N0b3BfZW1pc3Npb25fYnlfbmFtZSAocHJveHksICJnLXNpZ25hbCIpOwotK30KLSsKLStz dGF0aWMgZ2Jvb2xlYW4KLStpYnVzX3BvcnRhbF9jb250ZXh0X2hhbmRsZV9kZXN0cm95IChJQnVz RGJ1c1NlcnZpY2UgICAgICAgKm9iamVjdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHREJ1c01ldGhvZEludm9jYXRpb24gKmludm9jYXRpb24sCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1BvcnRhbENvbnRleHQgICAgICpwb3J0YWxfY29u dGV4dCkKLSt7Ci0rICAgIGdfb2JqZWN0X3VucmVmIChwb3J0YWxfY29udGV4dCk7Ci0rfQotKwot K3N0YXRpYyBJQnVzUG9ydGFsQ29udGV4dCAqCi0raWJ1c19wb3J0YWxfY29udGV4dF9uZXcgKElC dXNJbnB1dENvbnRleHQgKmNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIEdEQnVz Q29ubmVjdGlvbiAgKmNvbm5lY3Rpb24sCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgICAgICAgKm93bmVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAg ICAgICAgKiplcnJvcikKLSt7Ci0rICAgIElCdXNQb3J0YWxDb250ZXh0ICpwb3J0YWxfY29udGV4 dCA9Ci0rICAgICAgICAgICAgZ19vYmplY3RfbmV3IChpYnVzX3BvcnRhbF9jb250ZXh0X2dldF90 eXBlICgpLCBOVUxMKTsKLSsKLSsgICAgZ19zaWduYWxfY29ubmVjdCAoY29udGV4dCwKLSsgICAg ICAgICAgICAgICAgICAgICAgImctc2lnbmFsIiwKLSsgICAgICAgICAgICAgICAgICAgICAgR19D QUxMQkFDSyhwb3J0YWxfY29udGV4dF9nX3NpZ25hbCksCi0rICAgICAgICAgICAgICAgICAgICAg IHBvcnRhbF9jb250ZXh0KTsKLSsKLSsgICAgcG9ydGFsX2NvbnRleHQtPmlkID0gKytuZXh0X2Nv bnRleHRfaWQ7Ci0rICAgIHBvcnRhbF9jb250ZXh0LT5jb250ZXh0ID0gZ19vYmplY3RfcmVmIChj b250ZXh0KTsKLSsgICAgcG9ydGFsX2NvbnRleHQtPm93bmVyID0gZ19zdHJkdXAgKG93bmVyKTsK LSsgICAgcG9ydGFsX2NvbnRleHQtPm9iamVjdF9wYXRoID0KLSsgICAgICAgICAgICBnX3N0cmR1 cF9wcmludGYgKElCVVNfUEFUSF9JTlBVVF9DT05URVhULCBwb3J0YWxfY29udGV4dC0+aWQpOwot KyAgICBwb3J0YWxfY29udGV4dC0+c2VydmljZSA9IGlidXNfZGJ1c19zZXJ2aWNlX3NrZWxldG9u X25ldyAoKTsKLSsKLSsgICAgZ19zaWduYWxfY29ubmVjdCAocG9ydGFsX2NvbnRleHQtPnNlcnZp Y2UsCi0rICAgICAgICAgICAgICAgICAgICAgICJoYW5kbGUtZGVzdHJveSIsCi0rICAgICAgICAg ICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKGlidXNfcG9ydGFsX2NvbnRleHRfaGFuZGxlX2Rlc3Ry b3kpLAotKyAgICAgICAgICAgICAgICAgICAgICBwb3J0YWxfY29udGV4dCk7Ci0rCi0rICAgIGlm ICghZ19kYnVzX2ludGVyZmFjZV9za2VsZXRvbl9leHBvcnQgKAotKyAgICAgICAgICAgICAgICBH X0RCVVNfSU5URVJGQUNFX1NLRUxFVE9OIChwb3J0YWxfY29udGV4dC0+c2VydmljZSksCi0rICAg ICAgICAgICAgICAgIGNvbm5lY3Rpb24sIHBvcnRhbF9jb250ZXh0LT5vYmplY3RfcGF0aCwKLSsg ICAgICAgICAgICAgICAgZXJyb3IpIHx8Ci0rICAgICAgICAhZ19kYnVzX2ludGVyZmFjZV9za2Vs ZXRvbl9leHBvcnQgKAotKyAgICAgICAgICAgICAgICBHX0RCVVNfSU5URVJGQUNFX1NLRUxFVE9O IChwb3J0YWxfY29udGV4dCksCi0rICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24sIHBvcnRhbF9j b250ZXh0LT5vYmplY3RfcGF0aCwKLSsgICAgICAgICAgICAgICAgZXJyb3IpKSB7Ci0rICAgICAg ICBnX29iamVjdF91bnJlZiAocG9ydGFsX2NvbnRleHQpOwotKyAgICAgICAgcmV0dXJuIE5VTEw7 Ci0rICAgIH0KLSsKLSsgICAgYWxsX2NvbnRleHRzID0gZ19saXN0X3ByZXBlbmQgKGFsbF9jb250 ZXh0cywgcG9ydGFsX2NvbnRleHQpOwotKwotKyAgICByZXR1cm4gcG9ydGFsX2NvbnRleHQ7Ci0r fQotKwotK0dUeXBlIGlidXNfcG9ydGFsX2dldF90eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7Ci0r c3RhdGljIHZvaWQgaWJ1c19wb3J0YWxfaWZhY2VfaW5pdCAoSUJ1c0RidXNQb3J0YWxJZmFjZSAq aWZhY2UpOwotKwotK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChJQnVzUG9ydGFsLCBpYnVzX3Bv cnRhbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19EQlVTX1RZUEVfUE9SVEFMX1NL RUxFVE9OLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0Ug KElCVVNfREJVU19UWVBFX1BPUlRBTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpYnVzX3BvcnRhbF9pZmFjZV9pbml0KSk7Ci0rCi0rCi0rc3RhdGlj IHZvaWQKLStjcmVhdGVfaW5wdXRfY29udGV4dF9kb25lIChJQnVzQnVzICAgICAgICAgICAgICAg KmJ1cywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAg KnJlcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJ1c01ldGhvZEludm9jYXRpb24g Kmludm9jYXRpb24pCi0rewotKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSsgICAgSUJ1c0lu cHV0Q29udGV4dCAqY29udGV4dDsKLSsgICAgSUJ1c1BvcnRhbENvbnRleHQgKnBvcnRhbF9jb250 ZXh0OwotKyAgICBjaGFyICpvYmplY3RfcGF0aDsKLSsKLSsgICAgY29udGV4dCA9IGlidXNfYnVz X2NyZWF0ZV9pbnB1dF9jb250ZXh0X2FzeW5jX2ZpbmlzaCAoaWJ1c19idXMsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcywKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JmVycm9yKTsKLSsgICAgaWYgKGNvbnRleHQgPT0gTlVMTCkgewotKyAgICAgICAgZ19kYnVzX21l dGhvZF9pbnZvY2F0aW9uX3JldHVybl9nZXJyb3IgKGludm9jYXRpb24sIGVycm9yKTsKLSsgICAg ICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0r ICAgIHBvcnRhbF9jb250ZXh0ID0gaWJ1c19wb3J0YWxfY29udGV4dF9uZXcgKAotKyAgICAgICAg ICAgIGNvbnRleHQsCi0rICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX2dldF9j b25uZWN0aW9uIChpbnZvY2F0aW9uKSwKLSsgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9j YXRpb25fZ2V0X3NlbmRlciAoaW52b2NhdGlvbiksCi0rICAgICAgICAgICAgJmVycm9yKTsKLSsg ICAgZ19vYmplY3RfdW5yZWYgKGNvbnRleHQpOwotKwotKyAgICBpZiAocG9ydGFsX2NvbnRleHQg PT0gTlVMTCkgewotKyAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl9nZXJy b3IgKGludm9jYXRpb24sIGVycm9yKTsKLSsgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwot KyAgICAgICAgZ19vYmplY3RfdW5yZWYgKHBvcnRhbF9jb250ZXh0KTsKLSsgICAgICAgIHJldHVy bjsKLSsgICAgfQotKwotKyAgICBpYnVzX2RidXNfcG9ydGFsX2NvbXBsZXRlX2NyZWF0ZV9pbnB1 dF9jb250ZXh0ICgKLSsgICAgICAgICAgICBJQlVTX0RCVVNfUE9SVEFMKGlidXNfcG9ydGFsKSwK LSsgICAgICAgICAgICBpbnZvY2F0aW9uLCBwb3J0YWxfY29udGV4dC0+b2JqZWN0X3BhdGgpOwot K30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStpYnVzX3BvcnRhbF9oYW5kbGVfY3JlYXRlX2lucHV0 X2NvbnRleHQgKElCdXNEYnVzUG9ydGFsICAgICAgICAqb2JqZWN0LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCdXNNZXRob2RJbnZvY2F0aW9uICppbnZvY2F0 aW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No YXIgICAgICAgICAgICphcmdfY2xpZW50X25hbWUpCi0rewotKyAgICBpYnVzX2J1c19jcmVhdGVf aW5wdXRfY29udGV4dF9hc3luYyAoCi0rICAgICAgICAgICAgaWJ1c19idXMsCi0rICAgICAgICAg ICAgYXJnX2NsaWVudF9uYW1lLCAtMSwKLSsgICAgICAgICAgICBOVUxMLAotKyAgICAgICAgICAg IChHQXN5bmNSZWFkeUNhbGxiYWNrKWNyZWF0ZV9pbnB1dF9jb250ZXh0X2RvbmUsCi0rICAgICAg ICAgICAgaW52b2NhdGlvbik7Ci0rICAgIHJldHVybiBUUlVFOwotK30KLSsKLStzdGF0aWMgdm9p ZAotK2lidXNfcG9ydGFsX2lmYWNlX2luaXQgKElCdXNEYnVzUG9ydGFsSWZhY2UgKmlmYWNlKQot K3sKLSsgICAgaWZhY2UtPmhhbmRsZV9jcmVhdGVfaW5wdXRfY29udGV4dCA9Ci0rICAgICAgICAg ICAgaWJ1c19wb3J0YWxfaGFuZGxlX2NyZWF0ZV9pbnB1dF9jb250ZXh0OwotK30KLSsKLStzdGF0 aWMgdm9pZAotK2lidXNfcG9ydGFsX2luaXQgKElCdXNQb3J0YWwgKnBvcnRhbCkKLSt7Ci0rfQot KwotK3N0YXRpYyB2b2lkCi0raWJ1c19wb3J0YWxfY2xhc3NfaW5pdCAoSUJ1c1BvcnRhbENsYXNz ICprbGFzcykKLSt7Ci0rfQotKwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd192ZXJzaW9uX2FuZF9x dWl0ICh2b2lkKQotK3sKLSsgICAgZ19wcmludCAoIiVzIC0gVmVyc2lvbiAlc1xuIiwgZ19nZXRf YXBwbGljYXRpb25fbmFtZSAoKSwgVkVSU0lPTik7Ci0rICAgIGV4aXQgKEVYSVRfU1VDQ0VTUyk7 Ci0rfQotKwotK3N0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgZW50cmllc1tdID0KLSt7Ci0rICAg IHsgInZlcnNpb24iLCAgICdWJywgR19PUFRJT05fRkxBR19OT19BUkcsIEdfT1BUSU9OX0FSR19D QUxMQkFDSywKLSsgICAgICBzaG93X3ZlcnNpb25fYW5kX3F1aXQsICJTaG93IHRoZSBhcHBsaWNh dGlvbidzIHZlcnNpb24uIiwgTlVMTCB9LAotKyAgICB7ICJ2ZXJib3NlIiwgICAndicsIDAsIEdf T1BUSU9OX0FSR19OT05FLCAKLSsgICAgICAmb3B0X3ZlcmJvc2UsICAgInZlcmJvc2UuIiwgTlVM TCB9LAotKyAgICB7ICJyZXBsYWNlIiwgICAncicsIDAsIEdfT1BUSU9OX0FSR19OT05FLAotKyAg ICAgICZvcHRfcmVwbGFjZSwgICAiUmVwbGFjZS4iLCBOVUxMIH0sCi0rICAgIHsgTlVMTCB9LAot K307Ci0rCi0rc3RhdGljIHZvaWQKLStvbl9idXNfYWNxdWlyZWQgKEdEQnVzQ29ubmVjdGlvbiAq Y29ubmVjdGlvbiwKLSsgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAqbmFtZSwKLSsg ICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgdXNlcl9kYXRhKQotK3sKLSsgICAgR0Vy cm9yICplcnJvciA9IE5VTEw7Ci0rCi0rICAgIGlidXNfcG9ydGFsID0gZ19vYmplY3RfbmV3IChp YnVzX3BvcnRhbF9nZXRfdHlwZSAoKSwgTlVMTCk7Ci0rCi0rICAgIGlmICghZ19kYnVzX2ludGVy ZmFjZV9za2VsZXRvbl9leHBvcnQgKAotKyAgICAgICAgICAgICAgICBHX0RCVVNfSU5URVJGQUNF X1NLRUxFVE9OIChpYnVzX3BvcnRhbCksCi0rICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24sCi0r ICAgICAgICAgICAgICAgIElCVVNfUEFUSF9JQlVTLAotKyAgICAgICAgICAgICAgICAmZXJyb3Ip KSB7Ci0rICAgICAgICBnX3dhcm5pbmcgKCJFcnJvciBleHBvcnRpbmcgcG9ydGFsOiAlcyIsIGVy cm9yLT5tZXNzYWdlKTsKLSsgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotKyAgICAgICAg cmV0dXJuOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rb25fbmFtZV9hY3F1aXJlZCAo R0RCdXNDb25uZWN0aW9uICpjb25uZWN0aW9uLAotKyAgICAgICAgICAgICAgICAgIGNvbnN0IGdj aGFyICAgICAqbmFtZSwKLSsgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgIHVzZXJf ZGF0YSkKLSt7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rb25fbmFtZV9sb3N0IChHREJ1c0Nvbm5l Y3Rpb24gKmNvbm5lY3Rpb24sCi0rICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgKm5hbWUs Ci0rICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgIHVzZXJfZGF0YSkKLSt7Ci0rICAgIGdf bWFpbl9sb29wX3F1aXQgKGxvb3ApOwotK30KLSsKLStzdGF0aWMgdm9pZAotK25hbWVfb3duZXJf Y2hhbmdlZCAoR0RCdXNDb25uZWN0aW9uICpjb25uZWN0aW9uLAotKyAgICAgICAgICAgICAgICAg ICAgY29uc3QgZ2NoYXIgICAgICpzZW5kZXJfbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgIGNv bnN0IGdjaGFyICAgICAqb2JqZWN0X3BhdGgsCi0rICAgICAgICAgICAgICAgICAgICBjb25zdCBn Y2hhciAgICAgKmludGVyZmFjZV9uYW1lLAotKyAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No YXIgICAgICpzaWduYWxfbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAg ICAqcGFyYW1ldGVycywKLSsgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgdXNl cl9kYXRhKQotK3sKLSsgIGNvbnN0IGNoYXIgKm5hbWUsICpmcm9tLCAqdG87Ci0rCi0rICBnX3Zh cmlhbnRfZ2V0IChwYXJhbWV0ZXJzLCAiKHNzcykiLCAmbmFtZSwgJmZyb20sICZ0byk7Ci0rCi0r ICBpZiAobmFtZVswXSA9PSAnOicgJiYKLSsgICAgICBnX3N0cmNtcDAgKG5hbWUsIGZyb20pID09 IDAgJiYKLSsgICAgICBnX3N0cmNtcDAgKHRvLCAiIikgPT0gMCkKLSsgICAgewotKyAgICAgICAg R0xpc3QgKmwsICpuZXh0OwotKyAgICAgICAgLyogQ2xpZW50IGRpc2Nvbm5lY3RlZCwgZnJlZSBh bnkgaW5wdXQgY29udGV4dHMgaXQgbWF5IGhhdmUgKi8KLSsgICAgICAgIGZvciAobCA9IGFsbF9j b250ZXh0czsgbCAhPSBOVUxMOyBsID0gbmV4dCkgewotKyAgICAgICAgICAgIElCdXNQb3J0YWxD b250ZXh0ICpwb3J0YWxfY29udGV4dCA9IGwtPmRhdGE7Ci0rICAgICAgICAgICAgbmV4dCA9IGwt Pm5leHQ7Ci0rCi0rICAgICAgICAgICAgaWYgKGdfc3RyY21wMCAocG9ydGFsX2NvbnRleHQtPm93 bmVyLCBuYW1lKSA9PSAwKSB7Ci0rICAgICAgICAgICAgICAgIGdfb2JqZWN0X3VucmVmIChwb3J0 YWxfY29udGV4dCk7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICB9Ci0rfQotKwot K3N0YXRpYyB2b2lkCi0rX2J1c19kaXNjb25uZWN0ZWRfY2IgKElCdXNCdXMgICAgICAgICAgICAq aWJ1c2J1cykKLSt7Ci0rICAgIGdfbWFpbl9sb29wX3F1aXQgKGxvb3ApOwotK30KLSsKLStnaW50 Ci0rbWFpbiAoZ2ludCBhcmdjLCBnY2hhciAqKmFyZ3YpCi0rewotKyAgICBHREJ1c0Nvbm5lY3Rp b24gKnNlc3Npb25fYnVzID0gTlVMTDsKLSsgICAgZ3VpbnQgb3duZXJfaWQ7Ci0rCi0rICAgIHNl dGxvY2FsZSAoTENfQUxMLCAiIik7Ci0rCi0rICAgIEdPcHRpb25Db250ZXh0ICpjb250ZXh0ID0g Z19vcHRpb25fY29udGV4dF9uZXcgKCItIGlidXMgZGFlbW9uIik7Ci0rICAgIGdfb3B0aW9uX2Nv bnRleHRfYWRkX21haW5fZW50cmllcyAoY29udGV4dCwgZW50cmllcywgImlidXMtZGFlbW9uIik7 Ci0rCi0rICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwotKyAgICBpZiAoIWdfb3B0aW9uX2NvbnRl eHRfcGFyc2UgKGNvbnRleHQsICZhcmdjLCAmYXJndiwgJmVycm9yKSkgewotKyAgICAgICAgZ19w cmludGVyciAoIk9wdGlvbiBwYXJzaW5nIGZhaWxlZDogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsK LSsgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotKyAgICAgICAgZXhpdCAoLTEpOwotKyAg ICB9Ci0rCi0rICAgIC8qIEF2b2lkIGV2ZW4gbG9hZGluZyBndmZzIHRvIGF2b2lkIGFjY2lkZW50 YWwgY29uZnVzaW9uICovCi0rICAgIGdfc2V0ZW52ICgiR0lPX1VTRV9WRlMiLCAibG9jYWwiLCBU UlVFKTsKLSsKLSsgICAgaWJ1c19pbml0ICgpOwotKwotKyAgICBpYnVzX3NldF9sb2dfaGFuZGxl ciAob3B0X3ZlcmJvc2UpOwotKwotKyAgICBpYnVzX2J1cyA9IGlidXNfYnVzX25ldyAoKTsKLSsg ICAgaWYgKCFpYnVzX2J1c19pc19jb25uZWN0ZWQgKGlidXNfYnVzKSkgewotKyAgICAgICAgZ19w cmludGVyciAoIk5vdCBjb25uZWN0ZWQgdG8gdGhlIGlidXMgYnVzXG4iKTsKLSsgICAgICAgIGV4 aXQgKDEpOwotKyAgICB9Ci0rCi0rICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGlidXNfYnVzLCAiZGlz Y29ubmVjdGVkIiwKLSsgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoX2J1c19kaXNj b25uZWN0ZWRfY2IpLCBOVUxMKTsKLSsKLSsgICAgbG9vcCA9IGdfbWFpbl9sb29wX25ldyAoTlVM TCwgRkFMU0UpOwotKwotKyAgICBzZXNzaW9uX2J1cyA9IGdfYnVzX2dldF9zeW5jIChHX0JVU19U WVBFX1NFU1NJT04sIE5VTEwsICZlcnJvcik7Ci0rICAgIGlmIChzZXNzaW9uX2J1cyA9PSBOVUxM KSB7Ci0rICAgICAgICBnX3ByaW50ZXJyICgiTm8gc2Vzc2lvbiBidXM6ICVzIiwgZXJyb3ItPm1l c3NhZ2UpOwotKyAgICAgICAgZXhpdCAoLTEpOwotKyAgICB9Ci0rCi0rICAgIGdfZGJ1c19jb25u ZWN0aW9uX3NpZ25hbF9zdWJzY3JpYmUgKHNlc3Npb25fYnVzLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLkRCdXMiLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLkRCdXMiLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmFtZU93bmVyQ2hhbmdl ZCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvb3JnL2ZyZWVk ZXNrdG9wL0RCdXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO VUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0RCVVNfU0lH TkFMX0ZMQUdTX05PTkUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5hbWVfb3duZXJfY2hhbmdlZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTlVMTCwgTlVMTCk7Ci0rCi0rICAgIG93bmVyX2lkID0gZ19idXNfb3duX25hbWUgKEdf QlVTX1RZUEVfU0VTU0lPTiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19T RVJWSUNFX1BPUlRBTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19CVVNfTkFN RV9PV05FUl9GTEFHU19BTExPV19SRVBMQUNFTUVOVCB8Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChvcHRfcmVwbGFjZSA/IEdfQlVTX05BTUVfT1dORVJfRkxBR1NfUkVQTEFDRQot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwKSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb25fYnVzX2FjcXVpcmVkLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvbl9uYW1lX2FjcXVpcmVkLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvbl9uYW1lX2xvc3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotKwotKyAg ICBnX21haW5fbG9vcF9ydW4gKGxvb3ApOwotKwotKyAgICBnX2J1c191bm93bl9uYW1lIChvd25l cl9pZCk7Ci0rICAgIGdfbWFpbl9sb29wX3VucmVmIChsb29wKTsKLSsKLSsgICAgcmV0dXJuIDA7 Ci0rfQotZGlmZiAtLWdpdCBhL3NyYy9pYnVzc2hhcmUuaCBiL3NyYy9pYnVzc2hhcmUuaAotaW5k ZXggYmNhNDc3YzAuLmYzZTIwMTFlIDEwMDY0NAotLS0tIGEvc3JjL2lidXNzaGFyZS5oCi0rKysg Yi9zcmMvaWJ1c3NoYXJlLmgKLUBAIC01Miw2ICs1MiwxMyBAQAotICNkZWZpbmUgSUJVU19TRVJW SUNFX0lCVVMgICAgICAgIm9yZy5mcmVlZGVza3RvcC5JQnVzIgotIAotIC8qKgotKyAqIElCVVNf U0VSVklDRV9QT1JUQUw6Ci0rICoKLSsgKiBBZGRyZXNzIG9mIElCdXMgcG9ydGFsc2VydmljZS4K LSsgKi8KLSsjZGVmaW5lIElCVVNfU0VSVklDRV9QT1JUQUwgICAgICJvcmcuZnJlZWRlc2t0b3Au cG9ydGFsLklCdXMiCi0rCi0rLyoqCi0gICogSUJVU19TRVJWSUNFX1BBTkVMOgotICAqCi0gICog QWRkcmVzcyBvZiBJQnVzIHBhbmVsIHNlcnZpY2UuCi1AQCAtMTIyLDYgKzEyOSwxMyBAQAotICNk ZWZpbmUgSUJVU19JTlRFUkZBQ0VfSUJVUyAgICAgIm9yZy5mcmVlZGVza3RvcC5JQnVzIgotIAot IC8qKgotKyAqIElCVVNfSU5URVJGQUNFX1BPUlRBTDoKLSsgKgotKyAqIEQtQnVzIGludGVyZmFj ZSBmb3IgSUJ1cyBwb3J0YWwuCi0rICovCi0rI2RlZmluZSBJQlVTX0lOVEVSRkFDRV9QT1JUQUwg ICAib3JnLmZyZWVkZXNrdG9wLklCdXMuUG9ydGFsIgotKwotKy8qKgotICAqIElCVVNfSU5URVJG QUNFX0lOUFVUX0NPTlRFWFQ6Ci0gICoKLSAgKiBELUJ1cyBpbnRlcmZhY2UgZm9yIElCdXMgaW5w dXQgY29udGV4dC4KLS0tIAotMi4xMy40Ci0KLUZyb20gMzVjZTYyNDc0ZmE5N2E1NDYwZDcyYzM2 MDk0MzcwMGE0MTNhMDdhZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRl ciBMYXJzc29uIDxhbGV4bEByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAzMSBBdWcgMjAxNyAxMjow MzozNyArMDkwMAotU3ViamVjdDogW1BBVENIIDA0LzE0XSBTdXBwb3J0IHRoZSBwb3J0YWwgaW4g dGhlIGd0ayBpbSBtb2R1bGVzCi0KLVRoaXMgYWRkcyBhIG5ldyB3YXkgdG8gY3JlYXRlIGFuIEli dXNCdXMsIGlidXNfYnVzX25ld19hc3luY19jbGllbnQoKS4KLVRoaXMgcmV0dXJucyBhbiBvYmpl Y3QgdGhhdCBpcyBub3QgZ3VhcmFudGVlIHRvIGhhbmRsZSBhbnkgY2FsbHMKLXRoYXQgYXJlIG5v dCBuZWVkZWQgYnkgYSBjbGllbnQsIG1lYW5pbmcgQ3JlYXRlSW5wdXRDb250ZXh0IGFuZAotaGFu ZGxpbmcgdGhlIGlucHV0IGNvbnRleHQuCi0KLUlmIHlvdSBhcmUgcnVubmluZyBpbiBhIGZsYXRw YWssIG9yIGlmIElCVVNfVVNFX1BPUlRBTCBpcyBzZXQsIHRoZW4KLWluc3RlYWQgb2YgdGFsa2lu ZyB0byB0aGUgcmVndWxhciBpYnVzIGJ1cyB3ZSBjb25uZWN0IHRvCi1vcmcuZnJlZWRlc2t0b3Au cG9ydGFsLklCdXMgb24gdGhlIHNlc3Npb24gYnVzIGFuZCB1c2UgdGhlCi1saW1pdGVkIG9yZy5m cmVlZGVza3RvcC5JQnVzLlBvcnRhbCBpbnRlcmZhY2UgaW5zdGVhZCBvZiB0aGUKLW9yZy5mcmVl ZGVza3RvcC5JQnVzIGludGVyZmFjZS4KLQotVGhpcyBhbGxvd3MgZmxhdHBha3MgKG9yIG90aGVy IHNhbmRib3ggc3lzdGVtcykgdG8gc2FmZWx5IHVzZQotZGJ1cyBjbGllbnRzIChhcHBzKS4KLQot QlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9mbGF0cGFrL2ZsYXRwYWsvaXNzdWVzLzY3NQotCi1SZXZp ZXcgVVJMOiBodHRwczovL2NvZGVyZXZpZXcuYXBwc3BvdC5jb20vMzI4NDEwMDQzCi0KLVBhdGNo IGZyb20gQWxleGFuZGVyIExhcnNzb24gPGFsZXhsQHJlZGhhdC5jb20+LgotLS0tCi0gY2xpZW50 L2d0azIvaWJ1c2ltY29udGV4dC5jIHwgICA0ICstCi0gc3JjL2lidXNidXMuYyAgICAgICAgICAg ICAgIHwgMjQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCi0g c3JjL2lidXNidXMuaCAgICAgICAgICAgICAgIHwgIDIzICsrKysKLSBzcmMvaWJ1c2lucHV0Y29u dGV4dC5jICAgICAgfCAgMTIgKystCi0gNCBmaWxlcyBjaGFuZ2VkLCAyNTYgaW5zZXJ0aW9ucygr KSwgMzEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQvZ3RrMi9pYnVzaW1jb250 ZXh0LmMgYi9jbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMKLWluZGV4IDQxYzdhM2FmLi5iNGNh ODgyOCAxMDA2NDQKLS0tLSBhL2NsaWVudC9ndGsyL2lidXNpbWNvbnRleHQuYwotKysrIGIvY2xp ZW50L2d0azIvaWJ1c2ltY29udGV4dC5jCi1AQCAtNTgzLDcgKzU4Myw3IEBAIGlidXNfaW1fY29u dGV4dF9jbGFzc19pbml0IChJQnVzSU1Db250ZXh0Q2xhc3MgKmNsYXNzKQotIAotICAgICAvKiBp bml0IGJ1cyBvYmplY3QgKi8KLSAgICAgaWYgKF9idXMgPT0gTlVMTCkgewotLSAgICAgICAgX2J1 cyA9IGlidXNfYnVzX25ld19hc3luYyAoKTsKLSsgICAgICAgIF9idXMgPSBpYnVzX2J1c19uZXdf YXN5bmNfY2xpZW50ICgpOwotIAotICAgICAgICAgLyogaW5pdCB0aGUgZ2xvYmFsIGZha2UgY29u dGV4dCAqLwotICAgICAgICAgaWYgKGlidXNfYnVzX2lzX2Nvbm5lY3RlZCAoX2J1cykpIHsKLUBA IC02MDMsNyArNjAzLDcgQEAgaWJ1c19pbV9jb250ZXh0X2NsYXNzX2luaXQgKElCdXNJTUNvbnRl eHRDbGFzcyAqY2xhc3MpCi0gICAgIH0KLSAKLSAgICAgX2RhZW1vbl9uYW1lX3dhdGNoX2lkID0g Z19idXNfd2F0Y2hfbmFtZSAoR19CVVNfVFlQRV9TRVNTSU9OLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX1NFUlZJQ0VfSUJVUywKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1c19idXNfZ2V0X3NlcnZp Y2VfbmFtZSAoX2J1cyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdfQlVTX05BTUVfV0FUQ0hFUl9GTEFHU19OT05FLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYWVtb25fbmFtZV9hcHBlYXJlZCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFlbW9uX25hbWVfdmFu aXNoZWQsCi1kaWZmIC0tZ2l0IGEvc3JjL2lidXNidXMuYyBiL3NyYy9pYnVzYnVzLmMKLWluZGV4 IDc1NDA2YTM3Li5mYzBjOTAzMyAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzYnVzLmMKLSsrKyBiL3Ny Yy9pYnVzYnVzLmMKLUBAIC00OCwxMiArNDgsMTQgQEAgZW51bSB7Ci0gZW51bSB7Ci0gICAgIFBS T1BfMCA9IDAsCi0gICAgIFBST1BfQ09OTkVDVF9BU1lOQywKLSsgICAgUFJPUF9DTElFTlRfT05M WSwKLSB9OwotIAotIC8qIElCdXNCdXNQcml2ICovCi0gc3RydWN0IF9JQnVzQnVzUHJpdmF0ZSB7 Ci0gICAgIEdGaWxlTW9uaXRvciAqbW9uaXRvcjsKLSAgICAgR0RCdXNDb25uZWN0aW9uICpjb25u ZWN0aW9uOwotKyAgICBnYm9vbGVhbiBjb25uZWN0ZWQ7Ci0gICAgIGdib29sZWFuIHdhdGNoX2Ri dXNfc2lnbmFsOwotICAgICBndWludCB3YXRjaF9kYnVzX3NpZ25hbF9pZDsKLSAgICAgZ2Jvb2xl YW4gd2F0Y2hfaWJ1c19zaWduYWw7Ci1AQCAtNjIsNyArNjQsMTAgQEAgc3RydWN0IF9JQnVzQnVz UHJpdmF0ZSB7Ci0gICAgIGdjaGFyICp1bmlxdWVfbmFtZTsKLSAgICAgZ2Jvb2xlYW4gY29ubmVj dF9hc3luYzsKLSAgICAgZ2NoYXIgKmJ1c19hZGRyZXNzOwotKyAgICBnYm9vbGVhbiB1c2VfcG9y dGFsOwotKyAgICBnYm9vbGVhbiBjbGllbnRfb25seTsKLSAgICAgR0NhbmNlbGxhYmxlICpjYW5j ZWxsYWJsZTsKLSsgICAgZ3VpbnQgcG9ydGFsX25hbWVfd2F0Y2hfaWQ7Ci0gfTsKLSAKLSBzdGF0 aWMgZ3VpbnQgICAgYnVzX3NpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwIH07Ci1AQCAtNzQsNiAr NzksNyBAQCBzdGF0aWMgR09iamVjdCAgKmlidXNfYnVzX2NvbnN0cnVjdG9yICAgICAgICAgICAo R1R5cGUgICAgICAgICAgICAgICAgICAgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgbl9wYXJhbXMs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdPYmpl Y3RDb25zdHJ1Y3RQYXJhbSAgKnBhcmFtcyk7Ci0gc3RhdGljIHZvaWQgICAgICBpYnVzX2J1c19k ZXN0cm95ICAgICAgICAgICAgICAgKElCdXNPYmplY3QgICAgICAgICAgICAgKm9iamVjdCk7Ci0r c3RhdGljIHZvaWQgICAgICBpYnVzX2J1c19jb25uZWN0X2FzeW5jICAgICAgICAgKElCdXNCdXMg ICAgICAgICAgICAgICAgKmJ1cyk7Ci0gc3RhdGljIHZvaWQgICAgICBpYnVzX2J1c193YXRjaF9k YnVzX3NpZ25hbCAgICAgKElCdXNCdXMgICAgICAgICAgICAgICAgKmJ1cyk7Ci0gc3RhdGljIHZv aWQgICAgICBpYnVzX2J1c191bndhdGNoX2RidXNfc2lnbmFsICAgKElCdXNCdXMgICAgICAgICAg ICAgICAgKmJ1cyk7Ci0gc3RhdGljIHZvaWQgICAgICBpYnVzX2J1c193YXRjaF9pYnVzX3NpZ25h bCAgICAgKElCdXNCdXMgICAgICAgICAgICAgICAgKmJ1cyk7Ci1AQCAtMTE3LDggKzEyMywxMCBA QCBpYnVzX2J1c19jbGFzc19pbml0IChJQnVzQnVzQ2xhc3MgKmNsYXNzKQotICAgICBJQnVzT2Jq ZWN0Q2xhc3MgKmlidXNfb2JqZWN0X2NsYXNzID0gSUJVU19PQkpFQ1RfQ0xBU1MgKGNsYXNzKTsK LSAKLSAgICAgZ29iamVjdF9jbGFzcy0+Y29uc3RydWN0b3IgPSBpYnVzX2J1c19jb25zdHJ1Y3Rv cjsKLS0gICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gKEdPYmplY3RTZXRQcm9wZXJ0 eUZ1bmMpIGlidXNfYnVzX3NldF9wcm9wZXJ0eTsKLS0gICAgZ29iamVjdF9jbGFzcy0+Z2V0X3By b3BlcnR5ID0gKEdPYmplY3RHZXRQcm9wZXJ0eUZ1bmMpIGlidXNfYnVzX2dldF9wcm9wZXJ0eTsK LSsgICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0KLSsgICAgICAgICAgICAoR09iamVj dFNldFByb3BlcnR5RnVuYykgaWJ1c19idXNfc2V0X3Byb3BlcnR5OwotKyAgICBnb2JqZWN0X2Ns YXNzLT5nZXRfcHJvcGVydHkgPQotKyAgICAgICAgICAgIChHT2JqZWN0R2V0UHJvcGVydHlGdW5j KSBpYnVzX2J1c19nZXRfcHJvcGVydHk7Ci0gICAgIGlidXNfb2JqZWN0X2NsYXNzLT5kZXN0cm95 ID0gaWJ1c19idXNfZGVzdHJveTsKLSAKLSAgICAgLyogaW5zdGFsbCBwcm9wZXJ0aWVzICovCi1A QCAtMTI4LDEzICsxMzYsMjggQEAgaWJ1c19idXNfY2xhc3NfaW5pdCAoSUJ1c0J1c0NsYXNzICpj bGFzcykKLSAgICAgICogV2hldGhlciB0aGUgI0lCdXNCdXMgb2JqZWN0IHNob3VsZCBjb25uZWN0 IGFzeW5jaHJvbm91c2x5IHRvIHRoZSBidXMuCi0gICAgICAqCi0gICAgICAqLwotLSAgICBnX29i amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0NPTk5FQ1RfQVNZTkMsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgiY29ubmVj dC1hc3luYyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiQ29ubmVjdCBBc3luYyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdCBhc3luY2hyb25vdXNs eSB0byB0aGUgYnVzIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEZBTFNFLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFN X0NPTlNUUlVDVF9PTkxZKSk7Ci0rICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkg KAotKyAgICAgICAgICAgIGdvYmplY3RfY2xhc3MsCi0rICAgICAgICAgICAgUFJPUF9DT05ORUNU X0FTWU5DLAotKyAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgiY29ubmVjdC1hc3lu YyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0IEFzeW5jIiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3QgYXN5bmNocm9ub3Vz bHkgdG8gdGhlIGJ1cyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNF LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8 IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKLSsgICAgLyoqCi0rICAgICAqIElCdXNCdXM6Y2xp ZW50LW9ubHk6Ci0rICAgICAqCi0rICAgICAqIFdoZXRoZXIgdGhlICNJQnVzQnVzIG9iamVjdCBp cyBmb3IgY2xpZW50IHVzZSBvbmx5LgotKyAgICAgKgotKyAgICAgKi8KLSsgICAgZ19vYmplY3Rf Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoCi0rICAgICAgICAgICAgZ29iamVjdF9jbGFzcywKLSsg ICAgICAgICAgICBQUk9QX0NMSUVOVF9PTkxZLAotKyAgICAgICAgICAgIGdfcGFyYW1fc3BlY19i b29sZWFuICgiY2xpZW50LW9ubHkiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiQ2xpZW50T25seSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbGll bnQgdXNlIG9ubHkiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBH X1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7Ci0gCi0gICAgIC8qIGluc3RhbGwgc2lnbmFscyAqLwot ICAgICAvKioKLUBAIC0yOTQsNiArMzE3LDggQEAgaWJ1c19idXNfY2xvc2VfY29ubmVjdGlvbiAo SUJ1c0J1cyAqYnVzKQotICAgICBnX2NhbmNlbGxhYmxlX2NhbmNlbCAoYnVzLT5wcml2LT5jYW5j ZWxsYWJsZSk7Ci0gICAgIGdfY2FuY2VsbGFibGVfcmVzZXQgKGJ1cy0+cHJpdi0+Y2FuY2VsbGFi bGUpOwotIAotKyAgICBidXMtPnByaXYtPmNvbm5lY3RlZCA9IEZBTFNFOwotKwotICAgICAvKiB1 bnJlZiB0aGUgb2xkIGNvbm5lY3Rpb24gYXQgZmlyc3QgKi8KLSAgICAgaWYgKGJ1cy0+cHJpdi0+ Y29ubmVjdGlvbiAhPSBOVUxMKSB7Ci0gICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25u ZWN0X2J5X2Z1bmMgKGJ1cy0+cHJpdi0+Y29ubmVjdGlvbiwKLUBAIC0zMTEsNiArMzM2LDggQEAg c3RhdGljIHZvaWQKLSBpYnVzX2J1c19jb25uZWN0X2NvbXBsZXRlZCAoSUJ1c0J1cyAqYnVzKQot IHsKLSAgICAgZ19hc3NlcnQgKGJ1cy0+cHJpdi0+Y29ubmVjdGlvbik7Ci0rCi0rICAgIGJ1cy0+ cHJpdi0+Y29ubmVjdGVkID0gVFJVRTsKLSAgICAgLyogRklYTUUgKi8KLSAgICAgaWJ1c19idXNf aGVsbG8gKGJ1cyk7Ci0gCi1AQCAtMzI5LDkgKzM1NiwzOCBAQCBpYnVzX2J1c19jb25uZWN0X2Nv bXBsZXRlZCAoSUJ1c0J1cyAqYnVzKQotIH0KLSAKLSBzdGF0aWMgdm9pZAotK19idXNfY29ubmVj dF9zdGFydF9wb3J0YWxfY2IgKEdPYmplY3QgICAgICAqc291cmNlX29iamVjdCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgKnJlcywKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgIHVzZXJfZGF0YSkKLSt7Ci0rICAgIElCdXNC dXMgKmJ1cyA9IElCVVNfQlVTICh1c2VyX2RhdGEpOwotKyAgICBHVmFyaWFudCAqcmVzdWx0Owot KyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSsKLSsgICAgcmVzdWx0ID0gZ19kYnVzX2Nvbm5l Y3Rpb25fY2FsbF9maW5pc2ggKEdfREJVU19DT05ORUNUSU9OIChzb3VyY2Vfb2JqZWN0KSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcywKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvcik7Ci0rICAgIGlmIChy ZXN1bHQgIT0gTlVMTCkgewotKyAgICAgICAgaWJ1c19idXNfY29ubmVjdF9jb21wbGV0ZWQgKGJ1 cyk7Ci0rICAgICAgICBnX3ZhcmlhbnRfdW5yZWYgKHJlc3VsdCk7Ci0rICAgIH0gZWxzZSB7Ci0r ICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKLSsKLSsgICAgICAgIGdfZGJ1c19jb25uZWN0 aW9uX2Nsb3NlIChidXMtPnByaXYtPmNvbm5lY3Rpb24sIE5VTEwsIE5VTEwsIE5VTEwpOwotKyAg ICAgICAgZ19vYmplY3RfdW5yZWYgKGJ1cy0+cHJpdi0+Y29ubmVjdGlvbik7Ci0rICAgICAgICBi dXMtPnByaXYtPmNvbm5lY3Rpb24gPSBOVUxMOwotKwotKyAgICAgICAgZ19mcmVlIChidXMtPnBy aXYtPmJ1c19hZGRyZXNzKTsKLSsgICAgICAgIGJ1cy0+cHJpdi0+YnVzX2FkZHJlc3MgPSBOVUxM OwotKyAgICB9Ci0rCi0rICAgIGdfb2JqZWN0X3VucmVmIChidXMpOwotK30KLSsKLStzdGF0aWMg dm9pZAotIF9idXNfY29ubmVjdF9hc3luY19jYiAoR09iamVjdCAgICAgICpzb3VyY2Vfb2JqZWN0 LAotLSAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAqcmVzLAotLSAgICAgICAg ICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgdXNlcl9kYXRhKQotKyAgICAgICAgICAgICAg ICAgICAgICAgR0FzeW5jUmVzdWx0ICpyZXMsCi0rICAgICAgICAgICAgICAgICAgICAgICBncG9p bnRlciAgICAgIHVzZXJfZGF0YSkKLSB7Ci0gICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHVzZXJfZGF0 YSAhPSBOVUxMKTsKLSAgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19CVVMgKHVzZXJfZGF0 YSkpOwotQEAgLTM0OSw3ICs0MDUsMjYgQEAgX2J1c19jb25uZWN0X2FzeW5jX2NiIChHT2JqZWN0 ICAgICAgKnNvdXJjZV9vYmplY3QsCi0gICAgIH0KLSAKLSAgICAgaWYgKGJ1cy0+cHJpdi0+Y29u bmVjdGlvbiAhPSBOVUxMKSB7Ci0tICAgICAgICBpYnVzX2J1c19jb25uZWN0X2NvbXBsZXRlZCAo YnVzKTsKLSsgICAgICAgIGlmIChidXMtPnByaXYtPnVzZV9wb3J0YWwpIHsKLSsgICAgICAgICAg ICBnX29iamVjdF9zZXRfZGF0YSAoR19PQkpFQ1QgKGJ1cy0+cHJpdi0+Y29ubmVjdGlvbiksCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpYnVzLXBvcnRhbC1jb25uZWN0aW9uIiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0lOVF9UT19QT0lOVEVSIChUUlVFKSk7 Ci0rICAgICAgICAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fY2FsbCAoCi0rICAgICAgICAgICAgICAg ICAgICBidXMtPnByaXYtPmNvbm5lY3Rpb24sCi0rICAgICAgICAgICAgICAgICAgICBJQlVTX1NF UlZJQ0VfUE9SVEFMLAotKyAgICAgICAgICAgICAgICAgICAgSUJVU19QQVRIX0lCVVMsCi0rICAg ICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLkRCdXMuUGVlciIsCi0rICAgICAgICAg ICAgICAgICAgICAiUGluZyIsCi0rICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3ICgi KCkiKSwKLSsgICAgICAgICAgICAgICAgICAgIEdfVkFSSUFOVF9UWVBFICgiKCkiKSwKLSsgICAg ICAgICAgICAgICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCi0rICAgICAgICAgICAgICAg ICAgICAtMSwKLSsgICAgICAgICAgICAgICAgICAgIGJ1cy0+cHJpdi0+Y2FuY2VsbGFibGUsCi0r ICAgICAgICAgICAgICAgICAgICAoR0FzeW5jUmVhZHlDYWxsYmFjaykgX2J1c19jb25uZWN0X3N0 YXJ0X3BvcnRhbF9jYiwKLSsgICAgICAgICAgICAgICAgICAgIGdfb2JqZWN0X3JlZiAoYnVzKSk7 Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIGlidXNfYnVzX2Nvbm5lY3RfY29tcGxl dGVkIChidXMpOwotKyAgICAgICAgfQotICAgICB9Ci0gICAgIGVsc2UgewotICAgICAgICAgZ19m cmVlIChidXMtPnByaXYtPmJ1c19hZGRyZXNzKTsKLUBAIC0zNjAsMjEgKzQzNSwzMiBAQCBfYnVz X2Nvbm5lY3RfYXN5bmNfY2IgKEdPYmplY3QgICAgICAqc291cmNlX29iamVjdCwKLSAgICAgZ19v YmplY3RfdW5yZWYgKGJ1cyk7Ci0gfQotIAotK3N0YXRpYyBnY2hhciAqCi0raWJ1c19idXNfZ2V0 X2J1c19hZGRyZXNzIChJQnVzQnVzICpidXMpCi0rewotKyAgICBpZiAoX2J1cy0+cHJpdi0+dXNl X3BvcnRhbCkKLSsgICAgICAgIHJldHVybiBnX2RidXNfYWRkcmVzc19nZXRfZm9yX2J1c19zeW5j IChHX0JVU19UWVBFX1NFU1NJT04sIE5VTEwsIE5VTEwpOwotKyAgICBlbHNlCi0rICAgICAgICBy ZXR1cm4gZ19zdHJkdXAgKGlidXNfZ2V0X2FkZHJlc3MgKCkpOwotK30KLSsKLSBzdGF0aWMgdm9p ZAotIGlidXNfYnVzX2Nvbm5lY3RfYXN5bmMgKElCdXNCdXMgKmJ1cykKLSB7Ci0tICAgIGNvbnN0 IGdjaGFyICpidXNfYWRkcmVzcyA9IGlidXNfZ2V0X2FkZHJlc3MgKCk7Ci0rICAgIGdjaGFyICpi dXNfYWRkcmVzcyA9IGlidXNfYnVzX2dldF9idXNfYWRkcmVzcyAoYnVzKTsKLSAKLSAgICAgaWYg KGJ1c19hZGRyZXNzID09IE5VTEwpCi0gICAgICAgICByZXR1cm47Ci0gCi0tICAgIGlmIChnX3N0 cmNtcDAgKGJ1cy0+cHJpdi0+YnVzX2FkZHJlc3MsIGJ1c19hZGRyZXNzKSA9PSAwKQotKyAgICBp ZiAoZ19zdHJjbXAwIChidXMtPnByaXYtPmJ1c19hZGRyZXNzLCBidXNfYWRkcmVzcykgPT0gMCkg ewotKyAgICAgICAgZ19mcmVlIChidXNfYWRkcmVzcyk7Ci0gICAgICAgICByZXR1cm47Ci0rICAg IH0KLSAKLSAgICAgLyogQ2xvc2UgY3VycmVudCBjb25uZWN0aW9uIGFuZCBjYW5jZWwgb25nb2lu ZyBjb25uZWN0IHJlcXVlc3QuICovCi0gICAgIGlidXNfYnVzX2Nsb3NlX2Nvbm5lY3Rpb24gKGJ1 cyk7Ci0gCi0tICAgIGJ1cy0+cHJpdi0+YnVzX2FkZHJlc3MgPSBnX3N0cmR1cCAoYnVzX2FkZHJl c3MpOwotKyAgICBidXMtPnByaXYtPmJ1c19hZGRyZXNzID0gYnVzX2FkZHJlc3M7Ci0gICAgIGdf b2JqZWN0X3JlZiAoYnVzKTsKLSAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fbmV3X2Zvcl9hZGRyZXNz ICgKLSAgICAgICAgICAgICBidXNfYWRkcmVzcywKLUBAIC0zODUsNiArNDcxLDI4IEBAIGlidXNf YnVzX2Nvbm5lY3RfYXN5bmMgKElCdXNCdXMgKmJ1cykKLSAgICAgICAgICAgICBfYnVzX2Nvbm5l Y3RfYXN5bmNfY2IsIGJ1cyk7Ci0gfQotIAotK3N0YXRpYyBnYm9vbGVhbgotK2lzX2luX2ZsYXRw YWsgKHZvaWQpCi0rewotKyAgICBzdGF0aWMgZ2Jvb2xlYW4gZmxhdHBha19pbmZvX3JlYWQ7Ci0r ICAgIHN0YXRpYyBnYm9vbGVhbiBpbl9mbGF0cGFrOwotKwotKyAgICBpZiAoZmxhdHBha19pbmZv X3JlYWQpCi0rICAgICAgICByZXR1cm4gaW5fZmxhdHBhazsKLSsKLSsgICAgZmxhdHBha19pbmZv X3JlYWQgPSBUUlVFOwotKyAgICBpZiAoZ19maWxlX3Rlc3QgKCIvLmZsYXRwYWstaW5mbyIsIEdf RklMRV9URVNUX0VYSVNUUykpCi0rICAgICAgICBpbl9mbGF0cGFrID0gVFJVRTsKLSsgICAgcmV0 dXJuIGluX2ZsYXRwYWs7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2lidXNfYnVzX3Nob3Vs ZF9jb25uZWN0X3BvcnRhbCAoSUJ1c0J1cyAqYnVzKQotK3sKLSsgICAgcmV0dXJuIGJ1cy0+cHJp di0+Y2xpZW50X29ubHkgJiYKLSsgICAgICAgIChpc19pbl9mbGF0cGFrICgpIHx8IGdfZ2V0ZW52 ICgiSUJVU19VU0VfUE9SVEFMIikgIT0gTlVMTCk7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gaWJ1 c19idXNfY29ubmVjdCAoSUJ1c0J1cyAqYnVzKQotIHsKLUBAIC00MzEsNyArNTM5LDYgQEAgaWJ1 c19idXNfaW5pdCAoSUJ1c0J1cyAqYnVzKQotIHsKLSAgICAgc3RydWN0IHN0YXQgYnVmOwotICAg ICBnY2hhciAqcGF0aDsKLS0gICAgR0ZpbGUgKmZpbGU7Ci0gCi0gICAgIGJ1cy0+cHJpdiA9IElC VVNfQlVTX0dFVF9QUklWQVRFIChidXMpOwotIAotQEAgLTQ0Myw2ICs1NTAsNyBAQCBpYnVzX2J1 c19pbml0IChJQnVzQnVzICpidXMpCi0gICAgIGJ1cy0+cHJpdi0+d2F0Y2hfaWJ1c19zaWduYWxf aWQgPSAwOwotICAgICBidXMtPnByaXYtPnVuaXF1ZV9uYW1lID0gTlVMTDsKLSAgICAgYnVzLT5w cml2LT5jb25uZWN0X2FzeW5jID0gRkFMU0U7Ci0rICAgIGJ1cy0+cHJpdi0+Y2xpZW50X29ubHkg PSBGQUxTRTsKLSAgICAgYnVzLT5wcml2LT5idXNfYWRkcmVzcyA9IE5VTEw7Ci0gICAgIGJ1cy0+ cHJpdi0+Y2FuY2VsbGFibGUgPSBnX2NhbmNlbGxhYmxlX25ldyAoKTsKLSAKLUBAIC00NTMsMTcg KzU2MSwxMiBAQCBpYnVzX2J1c19pbml0IChJQnVzQnVzICpidXMpCi0gCi0gICAgIGlmIChzdGF0 IChwYXRoLCAmYnVmKSA9PSAwKSB7Ci0gICAgICAgICBpZiAoYnVmLnN0X3VpZCAhPSBnZXR1aWQg KCkpIHsKLS0gICAgICAgICAgICBnX3dhcm5pbmcgKCJUaGUgb3duZXIgb2YgJXMgaXMgbm90ICVz ISIsIHBhdGgsIGlidXNfZ2V0X3VzZXJfbmFtZSAoKSk7Ci0rICAgICAgICAgICAgZ193YXJuaW5n ICgiVGhlIG93bmVyIG9mICVzIGlzIG5vdCAlcyEiLAotKyAgICAgICAgICAgICAgICAgICAgICAg cGF0aCwgaWJ1c19nZXRfdXNlcl9uYW1lICgpKTsKLSAgICAgICAgICAgICByZXR1cm47Ci0gICAg ICAgICB9Ci0gICAgIH0KLSAKLS0gICAgZmlsZSA9IGdfZmlsZV9uZXdfZm9yX3BhdGggKGlidXNf Z2V0X3NvY2tldF9wYXRoICgpKTsKLS0gICAgYnVzLT5wcml2LT5tb25pdG9yID0gZ19maWxlX21v bml0b3JfZmlsZSAoZmlsZSwgMCwgTlVMTCwgTlVMTCk7Ci0tCi0tICAgIGdfc2lnbmFsX2Nvbm5l Y3QgKGJ1cy0+cHJpdi0+bW9uaXRvciwgImNoYW5nZWQiLCAoR0NhbGxiYWNrKSBfY2hhbmdlZF9j YiwgYnVzKTsKLS0KLS0gICAgZ19vYmplY3RfdW5yZWYgKGZpbGUpOwotICAgICBnX2ZyZWUgKHBh dGgpOwotIH0KLSAKLUBAIC00NzcsNiArNTgwLDkgQEAgaWJ1c19idXNfc2V0X3Byb3BlcnR5IChJ QnVzQnVzICAgICAgKmJ1cywKLSAgICAgY2FzZSBQUk9QX0NPTk5FQ1RfQVNZTkM6Ci0gICAgICAg ICBidXMtPnByaXYtPmNvbm5lY3RfYXN5bmMgPSBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSk7 Ci0gICAgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX0NMSUVOVF9PTkxZOgotKyAgICAgICAg YnVzLT5wcml2LT5jbGllbnRfb25seSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKLSsg ICAgICAgIGJyZWFrOwotICAgICBkZWZhdWx0OgotICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZB TElEX1BST1BFUlRZX0lEIChidXMsIHByb3BfaWQsIHBzcGVjKTsKLSAgICAgfQotQEAgLTQ5Miwy NSArNTk4LDczIEBAIGlidXNfYnVzX2dldF9wcm9wZXJ0eSAoSUJ1c0J1cyAgICAqYnVzLAotICAg ICBjYXNlIFBST1BfQ09OTkVDVF9BU1lOQzoKLSAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4g KHZhbHVlLCBidXMtPnByaXYtPmNvbm5lY3RfYXN5bmMpOwotICAgICAgICAgYnJlYWs7Ci0rICAg IGNhc2UgUFJPUF9DTElFTlRfT05MWToKLSsgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKHZh bHVlLCBidXMtPnByaXYtPmNsaWVudF9vbmx5KTsKLSsgICAgICAgIGJyZWFrOwotICAgICBkZWZh dWx0OgotICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChidXMsIHBy b3BfaWQsIHBzcGVjKTsKLSAgICAgfQotIH0KLSAKLStzdGF0aWMgdm9pZAotK3BvcnRhbF9uYW1l X2FwcGVhcmVkIChHREJ1c0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sCi0rICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGdjaGFyICAgICAqbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgY29u c3QgZ2NoYXIgICAgICpvd25lciwKLSsgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAg ICAgICB1c2VyX2RhdGEpCi0rewotKyAgICBJQnVzQnVzICpidXMgPSBJQlVTX0JVUyAodXNlcl9k YXRhKTsKLSsKLSsgICAgaWYgKGJ1cy0+cHJpdi0+Y29ubmVjdGlvbiA9PSBOVUxMKQotKyAgICAg ICAgaWJ1c19idXNfY29ubmVjdF9hc3luYyAoYnVzKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStw b3J0YWxfbmFtZV92YW5pc2hlZCAoR0RCdXNDb25uZWN0aW9uICpjb25uZWN0aW9uLAotKyAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgKm5hbWUsCi0rICAgICAgICAgICAgICAg ICAgICAgIGdwb2ludGVyICAgICAgICAgdXNlcl9kYXRhKQotK3sKLSsgICAgSUJ1c0J1cyAqYnVz ID0gSUJVU19CVVMgKHVzZXJfZGF0YSk7Ci0rCi0rICAgIGlmIChidXMtPnByaXYtPmNvbm5lY3Rp b24pCi0rICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9jbG9zZSAoYnVzLT5wcml2LT5jb25uZWN0 aW9uLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSt9Ci0rCi0rCi0gc3RhdGljIEdPYmplY3QqCi0gaWJ1 c19idXNfY29uc3RydWN0b3IgKEdUeXBlICAgICAgICAgICAgICAgICAgdHlwZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICBuX3BhcmFtcywKLSAgICAgICAg ICAgICAgICAgICAgICAgR09iamVjdENvbnN0cnVjdFBhcmFtICpwYXJhbXMpCi0gewotICAgICBH T2JqZWN0ICpvYmplY3Q7Ci0rICAgIEdGaWxlICpmaWxlOwotIAotICAgICAvKiBzaGFyZSBvbmUg SUJ1c0J1cyBpbnN0YW5jZSBpbiB3aG9sZSBhcHBsaWNhdGlvbiAqLwotICAgICBpZiAoX2J1cyA9 PSBOVUxMKSB7Ci0tICAgICAgICBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyAoaWJ1c19idXNfcGFy ZW50X2NsYXNzKS0+Y29uc3RydWN0b3IgKHR5cGUsIG5fcGFyYW1zLCBwYXJhbXMpOwotKyAgICAg ICAgb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1MgKGlidXNfYnVzX3BhcmVudF9jbGFzcyktPmNvbnN0 cnVjdG9yICgKLSsgICAgICAgICAgICAgICAgdHlwZSwgbl9wYXJhbXMsIHBhcmFtcyk7Ci0gICAg ICAgICAvKiBtYWtlIGJ1cyBvYmplY3Qgc2luayAqLwotICAgICAgICAgZ19vYmplY3RfcmVmX3Np bmsgKG9iamVjdCk7Ci0gICAgICAgICBfYnVzID0gSUJVU19CVVMgKG9iamVjdCk7Ci0gCi0rICAg ICAgICBfYnVzLT5wcml2LT51c2VfcG9ydGFsID0gaWJ1c19idXNfc2hvdWxkX2Nvbm5lY3RfcG9y dGFsIChfYnVzKTsKLSsKLSsgICAgICAgIGlmICghX2J1cy0+cHJpdi0+dXNlX3BvcnRhbCkgewot KyAgICAgICAgICAgIGZpbGUgPSBnX2ZpbGVfbmV3X2Zvcl9wYXRoIChpYnVzX2dldF9zb2NrZXRf cGF0aCAoKSk7Ci0rICAgICAgICAgICAgX2J1cy0+cHJpdi0+bW9uaXRvciA9IGdfZmlsZV9tb25p dG9yX2ZpbGUgKGZpbGUsIDAsIE5VTEwsIE5VTEwpOwotKyAgICAgICAgICAgIGdfc2lnbmFsX2Nv bm5lY3QgKF9idXMtPnByaXYtPm1vbml0b3IsICJjaGFuZ2VkIiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoR0NhbGxiYWNrKSBfY2hhbmdlZF9jYiwgX2J1cyk7Ci0rICAgICAgICAg ICAgZ19vYmplY3RfdW5yZWYgKGZpbGUpOwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAg ICBfYnVzLT5wcml2LT5wb3J0YWxfbmFtZV93YXRjaF9pZCA9Ci0rICAgICAgICAgICAgICAgIGdf YnVzX3dhdGNoX25hbWUgKEdfQlVTX1RZUEVfU0VTU0lPTiwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSUJVU19TRVJWSUNFX1BPUlRBTCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR19CVVNfTkFNRV9XQVRDSEVSX0ZMQUdTX05PTkUsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbF9uYW1lX2FwcGVhcmVkLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0YWxfbmFtZV92YW5pc2hlZCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgX2J1cywgTlVMTCk7Ci0rICAgICAgICB9Ci0rCi0r Ci0gICAgICAgICBpZiAoX2J1cy0+cHJpdi0+Y29ubmVjdF9hc3luYykKLSAgICAgICAgICAgICBp YnVzX2J1c19jb25uZWN0X2FzeW5jIChfYnVzKTsKLSAgICAgICAgIGVsc2UKLUBAIC01NjEsNiAr NzE1LDExIEBAIGlidXNfYnVzX2Rlc3Ryb3kgKElCdXNPYmplY3QgKm9iamVjdCkKLSAgICAgZ19v YmplY3RfdW5yZWYgKGJ1cy0+cHJpdi0+Y2FuY2VsbGFibGUpOwotICAgICBidXMtPnByaXYtPmNh bmNlbGxhYmxlID0gTlVMTDsKLSAKLSsgICAgaWYgKGJ1cy0+cHJpdi0+cG9ydGFsX25hbWVfd2F0 Y2hfaWQpIHsKLSsgICAgICAgIGdfYnVzX3Vud2F0Y2hfbmFtZSAoYnVzLT5wcml2LT5wb3J0YWxf bmFtZV93YXRjaF9pZCk7Ci0rICAgICAgICBidXMtPnByaXYtPnBvcnRhbF9uYW1lX3dhdGNoX2lk ID0gMDsKLSsgICAgfQotKwotICAgICBJQlVTX09CSkVDVF9DTEFTUyAoaWJ1c19idXNfcGFyZW50 X2NsYXNzKS0+ZGVzdHJveSAob2JqZWN0KTsKLSB9Ci0gCi1AQCAtNjU2LDYgKzgxNSw3IEBAIGli dXNfYnVzX25ldyAodm9pZCkKLSB7Ci0gICAgIElCdXNCdXMgKmJ1cyA9IElCVVNfQlVTIChnX29i amVjdF9uZXcgKElCVVNfVFlQRV9CVVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJjb25uZWN0LWFzeW5jIiwgRkFMU0UsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJjbGllbnQtb25seSIsIEZBTFNFLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSk7Ci0gCi0gICAgIHJldHVy biBidXM7Ci1AQCAtNjY2LDYgKzgyNiwxOCBAQCBpYnVzX2J1c19uZXdfYXN5bmMgKHZvaWQpCi0g ewotICAgICBJQnVzQnVzICpidXMgPSBJQlVTX0JVUyAoZ19vYmplY3RfbmV3IChJQlVTX1RZUEVf QlVTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29ubmVj dC1hc3luYyIsIFRSVUUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJjbGllbnQtb25seSIsIEZBTFNFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOVUxMKSk7Ci0rCi0rICAgIHJldHVybiBidXM7Ci0rfQotKwotK0lCdXNC dXMgKgotK2lidXNfYnVzX25ld19hc3luY19jbGllbnQgKHZvaWQpCi0rewotKyAgICBJQnVzQnVz ICpidXMgPSBJQlVTX0JVUyAoZ19vYmplY3RfbmV3IChJQlVTX1RZUEVfQlVTLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29ubmVjdC1hc3luYyIsIFRSVUUs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbGllbnQtb25s eSIsIFRSVUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwpKTsKLSAKLSAgICAgcmV0dXJuIGJ1czsKLUBAIC02NzksNyArODUxLDcgQEAgaWJ1c19idXNf aXNfY29ubmVjdGVkIChJQnVzQnVzICpidXMpCi0gICAgIGlmIChidXMtPnByaXYtPmNvbm5lY3Rp b24gPT0gTlVMTCB8fCBnX2RidXNfY29ubmVjdGlvbl9pc19jbG9zZWQgKGJ1cy0+cHJpdi0+Y29u bmVjdGlvbikpCi0gICAgICAgICByZXR1cm4gRkFMU0U7Ci0gCi0tICAgIHJldHVybiBUUlVFOwot KyAgICByZXR1cm4gYnVzLT5wcml2LT5jb25uZWN0ZWQ7Ci0gfQotIAotIElCdXNJbnB1dENvbnRl eHQgKgotQEAgLTc5NSw5ICs5NjcsOSBAQCBpYnVzX2J1c19jcmVhdGVfaW5wdXRfY29udGV4dF9h c3luYyAoSUJ1c0J1cyAgICAgICAgICAgICpidXMsCi0gICAgICAqIDIuIE5ldyBsb2NhbCBJQnVz SW5wdXRDb250ZXh0IHByb3h5IG9mIHRoZSByZW1vdGUgSUMKLSAgICAgICovCi0gICAgIGdfZGJ1 c19jb25uZWN0aW9uX2NhbGwgKGJ1cy0+cHJpdi0+Y29ubmVjdGlvbiwKLS0gICAgICAgICAgICBJ QlVTX1NFUlZJQ0VfSUJVUywKLSsgICAgICAgICAgICBpYnVzX2J1c19nZXRfc2VydmljZV9uYW1l IChidXMpLAotICAgICAgICAgICAgIElCVVNfUEFUSF9JQlVTLAotLSAgICAgICAgICAgIElCVVNf SU5URVJGQUNFX0lCVVMsCi0rICAgICAgICAgICAgYnVzLT5wcml2LT51c2VfcG9ydGFsID8gSUJV U19JTlRFUkZBQ0VfUE9SVEFMIDogSUJVU19JTlRFUkZBQ0VfSUJVUywKLSAgICAgICAgICAgICAi Q3JlYXRlSW5wdXRDb250ZXh0IiwKLSAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3ICgiKHMpIiwg Y2xpZW50X25hbWUpLAotICAgICAgICAgICAgIEdfVkFSSUFOVF9UWVBFKCIobykiKSwKLUBAIC0x NDU0LDYgKzE2MjYsMTQgQEAgaWJ1c19idXNfZ2V0X2Nvbm5lY3Rpb24gKElCdXNCdXMgKmJ1cykK LSAgICAgcmV0dXJuIGJ1cy0+cHJpdi0+Y29ubmVjdGlvbjsKLSB9Ci0gCi0rY29uc3QgZ2NoYXIg KgotK2lidXNfYnVzX2dldF9zZXJ2aWNlX25hbWUgKElCdXNCdXMgKmJ1cykKLSt7Ci0rICAgIGlm IChidXMtPnByaXYtPnVzZV9wb3J0YWwpCi0rICAgICAgICByZXR1cm4gSUJVU19TRVJWSUNFX1BP UlRBTDsKLSsgICAgcmV0dXJuIElCVVNfU0VSVklDRV9JQlVTOwotK30KLSsKLSBnYm9vbGVhbgot IGlidXNfYnVzX2V4aXQgKElCdXNCdXMgKmJ1cywKLSAgICAgICAgICAgICAgICBnYm9vbGVhbiBy ZXN0YXJ0KQotQEAgLTIzNjksNiArMjU0OSwxMyBAQCBpYnVzX2J1c19jYWxsX3N5bmMgKElCdXNC dXMgICAgICAgICAgICAqYnVzLAotICAgICBnX2Fzc2VydCAobWVtYmVyICE9IE5VTEwpOwotICAg ICBnX3JldHVybl92YWxfaWZfZmFpbCAoaWJ1c19idXNfaXNfY29ubmVjdGVkIChidXMpLCBOVUxM KTsKLSAKLSsgICAgaWYgKGJ1cy0+cHJpdi0+dXNlX3BvcnRhbCAmJgotKyAgICAgICAgZ19zdHJj bXAwIChidXNfbmFtZSwgSUJVU19TRVJWSUNFX0lCVVMpID09IDApICB7Ci0rICAgICAgICBidXNf bmFtZSA9IElCVVNfU0VSVklDRV9QT1JUQUw7Ci0rICAgICAgICBpZiAoZ19zdHJjbXAwIChpbnRl cmZhY2UsIElCVVNfSU5URVJGQUNFX0lCVVMpID09IDApCi0rICAgICAgICAgICAgaW50ZXJmYWNl ID0gSUJVU19JTlRFUkZBQ0VfUE9SVEFMOwotKyAgICB9Ci0rCi0gICAgIEdFcnJvciAqZXJyb3Ig PSBOVUxMOwotICAgICBHVmFyaWFudCAqcmVzdWx0OwotICAgICByZXN1bHQgPSBnX2RidXNfY29u bmVjdGlvbl9jYWxsX3N5bmMgKGJ1cy0+cHJpdi0+Y29ubmVjdGlvbiwKLUBAIC0yNDM2LDYgKzI2 MjMsMTMgQEAgaWJ1c19idXNfY2FsbF9hc3luYyAoSUJ1c0J1cyAgICAgICAgICAgICpidXMsCi0g ICAgIHRhc2sgPSBnX3Rhc2tfbmV3IChidXMsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlcl9k YXRhKTsKLSAgICAgZ190YXNrX3NldF9zb3VyY2VfdGFnICh0YXNrLCBzb3VyY2VfdGFnKTsKLSAK LSsgICAgaWYgKGJ1cy0+cHJpdi0+dXNlX3BvcnRhbCAmJgotKyAgICAgICAgZ19zdHJjbXAwIChi dXNfbmFtZSwgSUJVU19TRVJWSUNFX0lCVVMpID09IDApICB7Ci0rICAgICAgICBidXNfbmFtZSA9 IElCVVNfU0VSVklDRV9QT1JUQUw7Ci0rICAgICAgICBpZiAoZ19zdHJjbXAwIChpbnRlcmZhY2Us IElCVVNfSU5URVJGQUNFX0lCVVMpID09IDApCi0rICAgICAgICAgICAgaW50ZXJmYWNlID0gSUJV U19JTlRFUkZBQ0VfUE9SVEFMOwotKyAgICB9Ci0rCi0gICAgIGdfZGJ1c19jb25uZWN0aW9uX2Nh bGwgKGJ1cy0+cHJpdi0+Y29ubmVjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YnVzX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsCi1kaWZmIC0tZ2l0 IGEvc3JjL2lidXNidXMuaCBiL3NyYy9pYnVzYnVzLmgKLWluZGV4IDlmNjVkMzZhLi5kZmYzZGZi NyAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzYnVzLmgKLSsrKyBiL3NyYy9pYnVzYnVzLmgKLUBAIC0x MDUsNiArMTA1LDE5IEBAIElCdXNCdXMgICAgICppYnVzX2J1c19uZXcgICAgICAgICAgICAgICAo dm9pZCk7Ci0gICovCi0gSUJ1c0J1cyAgICAgKmlidXNfYnVzX25ld19hc3luYyAgICAgICAgICh2 b2lkKTsKLSAKLSsvKioKLSsgKiBpYnVzX2J1c19uZXdfYXN5bmNfY2xpZW50OgotKyAqCi0rICog Q3JlYXRlcyBhIG5ldyAjSUJ1c0J1cyBpbnN0YW5jZSBmb3IgY2xpZW50IHVzZSBvbmx5LiBJdCB3 aWxsIHBvc3NpYmx5Ci0rICogYmUgbGltaXRlZCBpbiB3aGF0IGl0IGNhbiBkby4KLSsgKgotKyAq IFRoZSBpbnN0YW5jZSB3aWxsIGFzeW5jaHJvbm91c2x5IGNvbm5lY3QgdG8gdGhlIElCdXMgZGFl bW9uLgotKyAqCi0rICogUmV0dXJuczogQSBuZXdseSBhbGxvY2F0ZWQgI0lCdXNCdXMgaW5zdGFu Y2UsIGFuZCB0aGUgaW5zdGFuY2UgaXMgbm90Ci0rICogZmxvYXRpbmcuCi0rICovCi0rSUJ1c0J1 cyAgICAgKmlidXNfYnVzX25ld19hc3luY19jbGllbnQgICh2b2lkKTsKLSsKLSAKLSAvKioKLSAg KiBpYnVzX2J1c19pc19jb25uZWN0ZWQ6Ci1AQCAtMTI4LDYgKzE0MSwxNiBAQCBHREJ1c0Nvbm5l Y3Rpb24gKgotICAgICAgICAgICAgICBpYnVzX2J1c19nZXRfY29ubmVjdGlvbiAgICAoSUJ1c0J1 cyAgICAgICAgKmJ1cyk7Ci0gCi0gLyoqCi0rICogaWJ1c19idXNfZ2V0X3NlcnZpY2VfbmFtZToK LSsgKiBAYnVzOiBBbiAjSUJ1c0J1cy4KLSsgKgotKyAqIFJldHVybiB0aGUgbWFpbiBzZXJ2aWNl IG5hbWUgdG8gdXNlIGZvciBjYWxscyBvbiB0aGUgaWJ1cyBjb25uZWN0aW9uLgotKyAqCi0rICog UmV0dXJuczogYXQgZGJ1cyBuYW1lLgotKyAqLwotK2NvbnN0IGdjaGFyICogaWJ1c19idXNfZ2V0 X3NlcnZpY2VfbmFtZSAoSUJ1c0J1cyAgICAgICAgKmJ1cyk7Ci0rCi0rLyoqCi0gICogaWJ1c19i dXNfaGVsbG86Ci0gICogQGJ1czogQW4gI0lCdXNCdXMuCi0gICoKLWRpZmYgLS1naXQgYS9zcmMv aWJ1c2lucHV0Y29udGV4dC5jIGIvc3JjL2lidXNpbnB1dGNvbnRleHQuYwotaW5kZXggOWE1MGFj YzAuLmFlNzA0OGFkIDEwMDY0NAotLS0tIGEvc3JjL2lidXNpbnB1dGNvbnRleHQuYwotKysrIGIv c3JjL2lidXNpbnB1dGNvbnRleHQuYwotQEAgLTY4NCwxNiArNjg0LDIwIEBAIGlidXNfaW5wdXRf Y29udGV4dF9uZXcgKGNvbnN0IGdjaGFyICAgICAqcGF0aCwKLSB7Ci0gICAgIGdfYXNzZXJ0IChw YXRoICE9IE5VTEwpOwotICAgICBnX2Fzc2VydCAoR19JU19EQlVTX0NPTk5FQ1RJT04gKGNvbm5l Y3Rpb24pKTsKLSsgICAgY29uc3QgZ2NoYXIgKnNlcnZpY2VfbmFtZSA9IElCVVNfU0VSVklDRV9J QlVTOwotIAotICAgICBHSW5pdGFibGUgKmluaXRhYmxlOwotIAotICAgICBHREJ1c1Byb3h5Rmxh Z3MgZmxhZ3MgPSBHX0RCVVNfUFJPWFlfRkxBR1NfRE9fTk9UX0FVVE9fU1RBUlQ7Ci0gCi0rICAg IGlmIChnX29iamVjdF9nZXRfZGF0YSAoR19PQkpFQ1QgKGNvbm5lY3Rpb24pLCAiaWJ1cy1wb3J0 YWwtY29ubmVjdGlvbiIpKQotKyAgICAgICAgc2VydmljZV9uYW1lID0gSUJVU19TRVJWSUNFX1BP UlRBTDsKLSsKLSAgICAgaW5pdGFibGUgPSBnX2luaXRhYmxlX25ldyAoSUJVU19UWVBFX0lOUFVU X0NPTlRFWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbGxhYmxlLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImctY29ubmVjdGlvbiIsICAgICAgY29ubmVjdGlvbiwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImctbmFtZSIsICAgICAgICAgICAgSUJVU19TRVJWSUNF X0lCVVMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnLW5hbWUiLCAgICAgICAg ICAgIHNlcnZpY2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImctZmxh Z3MiLCAgICAgICAgICAgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJn LWludGVyZmFjZS1uYW1lIiwgIElCVVNfSU5URVJGQUNFX0lOUFVUX0NPTlRFWFQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJnLW9iamVjdC1wYXRoIiwgICAgIHBhdGgsCi1AQCAt NzE0LDE2ICs3MTgsMjAgQEAgaWJ1c19pbnB1dF9jb250ZXh0X25ld19hc3luYyAoY29uc3QgZ2No YXIgICAgICAgICAqcGF0aCwKLSAgICAgZ19hc3NlcnQgKHBhdGggIT0gTlVMTCk7Ci0gICAgIGdf YXNzZXJ0IChHX0lTX0RCVVNfQ09OTkVDVElPTiAoY29ubmVjdGlvbikpOwotICAgICBnX2Fzc2Vy dCAoY2FsbGJhY2sgIT0gTlVMTCk7Ci0rICAgIGNvbnN0IGdjaGFyICpzZXJ2aWNlX25hbWUgPSBJ QlVTX1NFUlZJQ0VfSUJVUzsKLSAKLSAgICAgR0RCdXNQcm94eUZsYWdzIGZsYWdzID0gR19EQlVT X1BST1hZX0ZMQUdTX0RPX05PVF9BVVRPX1NUQVJUOwotIAotKyAgICBpZiAoZ19vYmplY3RfZ2V0 X2RhdGEgKEdfT0JKRUNUIChjb25uZWN0aW9uKSwgImlidXMtcG9ydGFsLWNvbm5lY3Rpb24iKSkK LSsgICAgICAgIHNlcnZpY2VfbmFtZSA9IElCVVNfU0VSVklDRV9QT1JUQUw7Ci0rCi0gICAgIGdf YXN5bmNfaW5pdGFibGVfbmV3X2FzeW5jIChJQlVTX1RZUEVfSU5QVVRfQ09OVEVYVCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfUFJJT1JJVFlfREVGQVVMVCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbGxhYmxlLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1c2VyX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZy1jb25uZWN0 aW9uIiwgICAgICBjb25uZWN0aW9uLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ImctbmFtZSIsICAgICAgICAgICAgSUJVU19TRVJWSUNFX0lCVVMsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiZy1uYW1lIiwgICAgICAgICAgICBzZXJ2aWNlX25hbWUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZy1mbGFncyIsICAgICAgICAgICBmbGFncywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnLWludGVyZmFjZS1uYW1lIiwgIElC VVNfSU5URVJGQUNFX0lOUFVUX0NPTlRFWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiZy1vYmplY3QtcGF0aCIsICAgICBwYXRoLAotLS0gCi0yLjEzLjQKLQotRnJvbSA5Nzcy ZTgwMGYzZTY5Mzc1MTBmMjYwOWM1Y2U5YTY4NjBjNTljYjgxIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogQWxleGFuZGVyIExhcnNzb24gPGFsZXhsQHJlZGhhdC5jb20+Ci1EYXRlOiBN b24sIDQgU2VwIDIwMTcgMTI6MDI6MTcgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8xNF0gdGVz dDogVGVzdGluZyBpbiBmbGF0cGFrCi0KLVRlc3Qgd2l0aDoKLWZsYXRwYWstYnVpbGRlciAtLWZv cmNlLWNsZWFuIGFwcCBvcmcudGVzdC5JQnVzLmpzb24KLWZsYXRwYWstYnVpbGRlciAtLXJ1biAt LW5vZmlsZXN5c3RlbT1ob3N0IGFwcCBvcmcudGVzdC5JQnVzLmpzb24gemVuaXR5IC0tZW50cnkK LQotQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9mbGF0cGFrL2ZsYXRwYWsvaXNzdWVzLzY3NQotUj1T aGF3bi5QLkh1YW5nQGdtYWlsLmNvbQotCi1SZXZpZXcgVVJMOiBodHRwczovL2NvZGVyZXZpZXcu YXBwc3BvdC5jb20vMzI5MDkwMDQzCi0KLVBhdGNoIGZyb20gQWxleGFuZGVyIExhcnNzb24gPGFs ZXhsQHJlZGhhdC5jb20+LgotLS0tCi0gdGVzdC9vcmcudGVzdC5JQnVzLmpzb24gfCA0MyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQs IDQzIGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9vcmcudGVzdC5JQnVz Lmpzb24KLQotZGlmZiAtLWdpdCBhL3Rlc3Qvb3JnLnRlc3QuSUJ1cy5qc29uIGIvdGVzdC9vcmcu dGVzdC5JQnVzLmpzb24KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMC4uZGMz Y2FhNjIKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3Qvb3JnLnRlc3QuSUJ1cy5qc29uCi1AQCAt MCwwICsxLDQzIEBACi0rewotKyAgICAiYXBwLWlkIjogIm9yZy50ZXN0LklCdXMiLAotKyAgICAi cnVudGltZSI6ICJvcmcuZ25vbWUuUGxhdGZvcm0iLAotKyAgICAicnVudGltZS12ZXJzaW9uIjog IjMuMjQiLAotKyAgICAic2RrIjogIm9yZy5nbm9tZS5TZGsiLAotKyAgICAiY29tbWFuZCI6ICIv dXNyL2Jpbi96ZW5pdHkiLAotKyAgICAiZmluaXNoLWFyZ3MiOiBbCi0rICAgICAgICAvKiBYMTEg KyBYU2htIGFjY2VzcyAqLwotKyAgICAgICAgIi0tc2hhcmU9aXBjIiwgIi0tc29ja2V0PXgxMSIs Ci0rICAgICAgICAvKiBXYXlsYW5kIGFjY2VzcyAqLwotKyAgICAgICAgIi0tc29ja2V0PXdheWxh bmQiLAotKyAgICAgICAgLyogTmVlZGVkIGZvciBkY29uZiB0byB3b3JrICovCi0rICAgICAgICAi LS1maWxlc3lzdGVtPXhkZy1ydW4vZGNvbmYiLCAiLS1maWxlc3lzdGVtPX4vLmNvbmZpZy9kY29u ZjpybyIsCi0rICAgICAgICAiLS10YWxrLW5hbWU9Y2EuZGVzcnQuZGNvbmYiLCAiLS1lbnY9RENP TkZfVVNFUl9DT05GSUdfRElSPS5jb25maWcvZGNvbmYiLAotKyAgICAgICAgIi0tZW52PUdUS19J TV9NT0RVTEVfRklMRT0vYXBwL2xpYi9ndGstMy4wLzMuMC4wL2ltbW9kdWxlcy5jYWNoZSIKLSsg ICAgXSwKLSsgICAgImJ1aWxkLW9wdGlvbnMiIDogewotKyAgICAgICAgImNmbGFncyI6ICItTzIg LWciLAotKyAgICAgICAgImN4eGZsYWdzIjogIi1PMiAtZyIsCi0rICAgICAgICAiZW52Ijogewot KyAgICAgICAgICAgICJWIjogIjEiCi0rICAgICAgICB9Ci0rICAgIH0sCi0rICAgICJjbGVhbnVw IjogWyIvaW5jbHVkZSIsICIvbGliL3BrZ2NvbmZpZyIsCi0rICAgICAgICAgICAgICAgICIvc2hh cmUvcGtnY29uZmlnIiwgIi9zaGFyZS9hY2xvY2FsIiwKLSsgICAgICAgICAgICAgICAgIi9tYW4i LCAiL3NoYXJlL21hbiIsICIvc2hhcmUvZ3RrLWRvYyIsCi0rICAgICAgICAgICAgICAgICIvc2hh cmUvdmFsYSIsCi0rICAgICAgICAgICAgICAgICIqLmxhIiwgIiouYSJdLAotKyAgICAibW9kdWxl cyI6IFsKLSsgICAgICAgIHsKLSsgICAgICAgICAgICAibmFtZSI6ICJpYnVzIiwKLSsgICAgICAg ICAgICAic291cmNlcyI6IFsKLSsgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAg ICAgInR5cGUiOiAiZ2l0IiwKLSsgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9n aXRodWIuY29tL2FsZXhsYXJzc29uL2lidXMiLAotKyAgICAgICAgICAgICAgICAgICAgImJyYW5j aCI6ICJpYnVzLXBvcnRhbCIKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIF0sCi0r ICAgICAgICAgICAgImNvbmZpZy1vcHRzIjogWyItLWRpc2FibGUtZW1vamktZGljdCIsICItLWRp c2FibGUtZGNvbmYiXSwKLSsgICAgICAgICAgICAicG9zdC1pbnN0YWxsIjogWyJndGstcXVlcnkt aW1tb2R1bGVzLTMuMCAvYXBwL2xpYi9ndGstMy4wLzMuMC4wL2ltbW9kdWxlcy9pbS1pYnVzLnNv ID4gL2FwcC9saWIvZ3RrLTMuMC8zLjAuMC9pbW1vZHVsZXMuY2FjaGUiXQotKyAgICAgICAgfQot KyAgICBdCi0rfQotLS0gCi0yLjEzLjQKLQotRnJvbSA5OTM3YTBlNDUwMWNjZjBjZmQyMzhjZTdj OTc3MzNjMzA5OWRiM2Y3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0 IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogTW9uLCA0IFNlcCAyMDE3IDEyOjE5 OjA3ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMTRdIGJ1czogaWJ1cy1kYWVtb24gYWN0aXZh dGVzIGlidXMtcG9ydGFsCi0KLVdoZW4gaWJ1cy1kYWVtb24gcmVzdGFydHMsIGlidXMtcG9ydGFs IGV4aXRzIHdpdGggb25fbmFtZV9sb3N0KCkgYW5kCi10aGUgY2xpZW50cyB3YWl0IGZvciBwb3J0 YWxfbmFtZV9hcHBlYXJlZCgpIHVudGlsIGlidXMtcG9yYWwgcmVzdGFydHMuCi1Ob3cgdGhlIGNs aWVudHMgY2FuIGNvbm5lY3QgdG8gaWJ1cy1kYWVtb24gd2l0aCB0aGlzIHdheSBhbmQgYWxzbwot dGhleSBkb24ndCBoYXZlIHRvIGFjdGl2YXRlIGlidXMtcG9ydGFsLgotCi1CVUc9aHR0cHM6Ly9n aXRodWIuY29tL2ZsYXRwYWsvZmxhdHBhay9pc3N1ZXMvNjc1Ci1SPVNoYXduLlAuSHVhbmdAZ21h aWwuY29tCi0KLVJldmlldyBVUkw6IGh0dHBzOi8vY29kZXJldmlldy5hcHBzcG90LmNvbS8zMjE1 MzAwNDMKLS0tLQotIGJ1cy9zZXJ2ZXIuYyAgICB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLQotIHBvcnRhbC9wb3J0YWwuYyB8ICA2ICstLS0tLQotIDIg ZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAt LWdpdCBhL2J1cy9zZXJ2ZXIuYyBiL2J1cy9zZXJ2ZXIuYwotaW5kZXggZmYzZWEwOTMuLmUyODk4 Mjc0IDEwMDY0NAotLS0tIGEvYnVzL3NlcnZlci5jCi0rKysgYi9idXMvc2VydmVyLmMKLUBAIC05 Myw2ICs5Myw0NSBAQCBidXNfbmV3X2Nvbm5lY3Rpb25fY2IgKEdEQnVzU2VydmVyICAgICAqc2Vy dmVyLAotICAgICByZXR1cm4gVFJVRTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQKLStfc2VydmVyX2Nv bm5lY3Rfc3RhcnRfcG9ydGFsX2NiIChHT2JqZWN0ICAgICAgKnNvdXJjZV9vYmplY3QsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICpyZXMsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICB1c2VyX2RhdGEpCi0rewot KyAgICBHVmFyaWFudCAqcmVzdWx0OwotKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSsKLSsg ICAgcmVzdWx0ID0gZ19kYnVzX2Nvbm5lY3Rpb25fY2FsbF9maW5pc2ggKEdfREJVU19DT05ORUNU SU9OIChzb3VyY2Vfb2JqZWN0KSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZlcnJvcik7Ci0rICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewotKyAgICAgICAgZ192YXJp YW50X3VucmVmIChyZXN1bHQpOwotKyAgICB9IGVsc2UgewotKyAgICAgICAgZ19wcmludCAoInBv cnRhbCBpcyBub3QgcnVubmluZzogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKLSsgICAgICAgIGdf ZXJyb3JfZnJlZSAoZXJyb3IpOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rYnVzX2Fj cXVpcmVkX2hhbmRsZXIgKEdEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwKLSsgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICpuYW1lLAotKyAgICAgICAgICAgICAgICAgICAg ICBncG9pbnRlciAgICAgICAgIHVzZXJfZGF0YSkKLSt7Ci0rICAgIGdfZGJ1c19jb25uZWN0aW9u X2NhbGwgKGNvbm5lY3Rpb24sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfU0VS VklDRV9QT1JUQUwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfUEFUSF9JQlVT LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLkRCdXMuUGVl ciIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQaW5nIiwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ192YXJpYW50X25ldyAoIigpIiksCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdfVkFSSUFOVF9UWVBFICgiKCkiKSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLTEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgLyogY2FuY2VsbGFibGUg Ki8sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHQXN5bmNSZWFkeUNhbGxiYWNrKQot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZXJ2ZXJfY29ubmVjdF9zdGFy dF9wb3J0YWxfY2IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotK30KLSsK LSB2b2lkCi0gYnVzX3NlcnZlcl9pbml0ICh2b2lkKQotIHsKLUBAIC0xMzQsOCArMTczLDEwIEBA IGJ1c19zZXJ2ZXJfaW5pdCAodm9pZCkKLSAgICAgaWJ1c193cml0ZV9hZGRyZXNzIChhZGRyZXNz KTsKLSAKLSAgICAgLyogb3duIGEgc2Vzc2lvbiBidXMgbmFtZSBzbyB0aGF0IHRoaXJkIHBhcnRp ZXMgY2FuIGVhc2lseSB0cmFjayBvdXIgbGlmZS1jeWNsZSAqLwotLSAgICBnX2J1c19vd25fbmFt ZSAoR19CVVNfVFlQRV9TRVNTSU9OLCBJQlVTX1NFUlZJQ0VfSUJVUywgR19CVVNfTkFNRV9PV05F Ul9GTEFHU19OT05FLAotLSAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTCk7Ci0rICAgIGdfYnVzX293bl9uYW1lIChHX0JVU19UWVBFX1NFU1NJT04sIElCVVNf U0VSVklDRV9JQlVTLAotKyAgICAgICAgICAgICAgICAgICAgR19CVVNfTkFNRV9PV05FUl9GTEFH U19OT05FLAotKyAgICAgICAgICAgICAgICAgICAgYnVzX2FjcXVpcmVkX2hhbmRsZXIsCi0rICAg ICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSB9Ci0gCi0gY29uc3Qg Z2NoYXIgKgotZGlmZiAtLWdpdCBhL3BvcnRhbC9wb3J0YWwuYyBiL3BvcnRhbC9wb3J0YWwuYwot aW5kZXggMDQxNWY5OTYuLmNiMjRkMjU3IDEwMDY0NAotLS0tIGEvcG9ydGFsL3BvcnRhbC5jCi0r KysgYi9wb3J0YWwvcG9ydGFsLmMKLUBAIC0xMDEsMTAgKzEwMSw2IEBAIF9mb3J3YXJkX21ldGhv ZF9jYiAoR09iamVjdCAqc291cmNlX29iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgIGdwb2lu dGVyIHVzZXJfZGF0YSkKLSB7Ci0gICAgIEdEQnVzTWV0aG9kSW52b2NhdGlvbiAqaW52b2NhdGlv biA9IHVzZXJfZGF0YTsKLS0gICAgSUJ1c1BvcnRhbENvbnRleHQgKnBvcnRhbF9jb250ZXh0ID0K LS0gICAgICAgICAgICAoSUJ1c1BvcnRhbENvbnRleHQgKikgZ19kYnVzX21ldGhvZF9pbnZvY2F0 aW9uX2dldF91c2VyX2RhdGEgKAotLSAgICAgICAgICAgICAgICAgICAgaW52b2NhdGlvbik7Ci0t ICAgIElCdXNFbmdpbmVEZXNjICpkZXNjOwotICAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSAK LSAgICAgR1ZhcmlhbnQgKnZhcmlhbnQgPSBnX2RidXNfcHJveHlfY2FsbF9maW5pc2ggKChHREJ1 c1Byb3h5ICopIHNvdXJjZV9vYmplY3QsCi1AQCAtNDEzLDYgKzQwOSw3IEBAIGlidXNfcG9ydGFs X2NvbnRleHRfaGFuZGxlX2Rlc3Ryb3kgKElCdXNEYnVzU2VydmljZSAgICAgICAqb2JqZWN0LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNQb3J0YWxDb250ZXh0ICAg ICAqcG9ydGFsX2NvbnRleHQpCi0gewotICAgICBnX29iamVjdF91bnJlZiAocG9ydGFsX2NvbnRl eHQpOwotKyAgICByZXR1cm4gRkFMU0U7Ci0gfQotIAotIHN0YXRpYyBJQnVzUG9ydGFsQ29udGV4 dCAqCi1AQCAtNDc1LDcgKzQ3Miw2IEBAIGNyZWF0ZV9pbnB1dF9jb250ZXh0X2RvbmUgKElCdXNC dXMgICAgICAgICAgICAgICAqYnVzLAotICAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSAgICAg SUJ1c0lucHV0Q29udGV4dCAqY29udGV4dDsKLSAgICAgSUJ1c1BvcnRhbENvbnRleHQgKnBvcnRh bF9jb250ZXh0OwotLSAgICBjaGFyICpvYmplY3RfcGF0aDsKLSAKLSAgICAgY29udGV4dCA9IGli dXNfYnVzX2NyZWF0ZV9pbnB1dF9jb250ZXh0X2FzeW5jX2ZpbmlzaCAoaWJ1c19idXMsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl cywKLS0tIAotMi4xMy40Ci0KLUZyb20gM2UwMWJhYjk3MmFkMTJiOTJjNTVhOWRkZTU1NGEwMzU5 YzIxNzI5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8u ZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNiBTZXAgMjAxNyAxMjowNDo1MiArMDkw MAotU3ViamVjdDogW1BBVENIIDA3LzE0XSBwb3J0YWw6IEFkZCBvcmcuZnJlZWRlc2t0b3AuSUJ1 cy5Qb3J0YWwueG1sIGluCi0gRVhUUkFfRElTVAotCi1SZXZpZXcgVVJMOiBodHRwczovL2NvZGVy ZXZpZXcuYXBwc3BvdC5jb20vMzI1MzcwMDQzCi0tLS0KLSBwb3J0YWwvTWFrZWZpbGUuYW0gfCAx NyArKysrKysrKystLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDgg ZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wb3J0YWwvTWFrZWZpbGUuYW0gYi9wb3J0YWwv TWFrZWZpbGUuYW0KLWluZGV4IDk1NGZjNTkxLi5kMWUyMDUxYSAxMDA2NDQKLS0tLSBhL3BvcnRh bC9NYWtlZmlsZS5hbQotKysrIGIvcG9ydGFsL01ha2VmaWxlLmFtCi1AQCAtNjUsMTIgKzY1LDYg QEAgaWJ1c19wb3J0YWxfTERBREQgPSBcCi0gCSQoQU1fTERBREQpIFwKLSAJJChOVUxMKQotIAot LUVYVFJBX0RJU1QgPSBcCi0tCSQoTlVMTCkKLS0KLS1DTEVBTkZJTEVTID0gXAotLQkkKE5VTEwp Ci0tCi0gJChsaWJpYnVzKToKLSAJJChNQUtFKSAtQyAkKHRvcF9idWlsZGRpcikvc3JjCi0gCi1A QCAtODksNyArODMsMTQgQEAgJChpYnVzX2RidXNfYnVpbHRfc291cmNlcykgOiBvcmcuZnJlZWRl c2t0b3AuSUJ1cy5Qb3J0YWwueG1sCi0gCQkkXiBcCi0gCQkkKE5VTEwpCi0gCi0tRVhUUkFfRElT VCArPSAkKGRidXNzZXJ2aWNlX2luX2ZpbGVzKQotLUNMRUFORklMRVMgKz0gJChkYnVzc2Vydmlj ZV9EQVRBKQotK0VYVFJBX0RJU1QgPSBcCi0rICAgICQoZGJ1c3NlcnZpY2VfaW5fZmlsZXMpIFwK LSsgICAgb3JnLmZyZWVkZXNrdG9wLklCdXMuUG9ydGFsLnhtbCBcCi0rICAgICQoTlVMTCkKLSsK LStDTEVBTkZJTEVTID0gXAotKyAgICAkKGRidXNzZXJ2aWNlX0RBVEEpIFwKLSsgICAgJChOVUxM KQotKwotIAotIC1pbmNsdWRlICQodG9wX3NyY2RpcikvZ2l0Lm1rCi0tLSAKLTIuMTMuNAotCi1G cm9tIDIxYmFjNDczMzY4NGNhNmE3NGRkYjAyZjQ1N2MwZmUxOWViOTE4MGQgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+ Ci1EYXRlOiBXZWQsIDYgU2VwIDIwMTcgMTI6MTE6MDEgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAw OC8xNF0gdWkvZ3RrMzogTW92ZSBpYnVzLWVtb2ppLWRpYWxvZy52YXBpIGZyb20gdWkvZ3RrMyB0 bwotIGJpbmRpbmdzL3ZhbGEKLQotUj1TaGF3bi5QLkh1YW5nQGdtYWlsLmNvbQotCi1SZXZpZXcg VVJMOiBodHRwczovL2NvZGVyZXZpZXcuYXBwc3BvdC5jb20vMzIyNTkwMDQzCi0tLS0KLSAuLi4v dmFsYX0vSUJ1c0Vtb2ppRGlhbG9nLTEuMC5tZXRhZGF0YSAgICAgICAgICAgICB8ICAgMAotIGJp bmRpbmdzL3ZhbGEvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYxICsr KysrKysrKysrKysrKysrKystLQotIC4uLi92YWxhfS9pYnVzLWVtb2ppLWRpYWxvZy0xLjAuZGVw cyAgICAgICAgICAgICAgIHwgICAwCi0gcG8vUE9URklMRVMuc2tpcCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDUgKwotIHVpL2d0azMvTWFrZWZpbGUuYW0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMTEzICsrKystLS0tLS0tLS0tLQotIHVpL2d0azMvZW1v amllci52YWxhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE5ICstLQotIHVpL2d0 azMvaWJ1c2Vtb2ppZGlhbG9nLmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI2ICsrKysK LSA3IGZpbGVzIGNoYW5nZWQsIDIxMyBpbnNlcnRpb25zKCspLCAxMTEgZGVsZXRpb25zKC0pCi0g cmVuYW1lIHt1aS9ndGszID0+IGJpbmRpbmdzL3ZhbGF9L0lCdXNFbW9qaURpYWxvZy0xLjAubWV0 YWRhdGEgKDEwMCUpCi0gcmVuYW1lIHt1aS9ndGszID0+IGJpbmRpbmdzL3ZhbGF9L2lidXMtZW1v amktZGlhbG9nLTEuMC5kZXBzICgxMDAlKQotCi1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9JQnVzRW1v amlEaWFsb2ctMS4wLm1ldGFkYXRhIGIvYmluZGluZ3MvdmFsYS9JQnVzRW1vamlEaWFsb2ctMS4w Lm1ldGFkYXRhCi1zaW1pbGFyaXR5IGluZGV4IDEwMCUKLXJlbmFtZSBmcm9tIHVpL2d0azMvSUJ1 c0Vtb2ppRGlhbG9nLTEuMC5tZXRhZGF0YQotcmVuYW1lIHRvIGJpbmRpbmdzL3ZhbGEvSUJ1c0Vt b2ppRGlhbG9nLTEuMC5tZXRhZGF0YQotZGlmZiAtLWdpdCBhL2JpbmRpbmdzL3ZhbGEvTWFrZWZp bGUuYW0gYi9iaW5kaW5ncy92YWxhL01ha2VmaWxlLmFtCi1pbmRleCA0ZTM0YWZjNy4uZmM4ZTJm MDEgMTAwNjQ0Ci0tLS0gYS9iaW5kaW5ncy92YWxhL01ha2VmaWxlLmFtCi0rKysgYi9iaW5kaW5n cy92YWxhL01ha2VmaWxlLmFtCi1AQCAtMyw3ICszLDggQEAKLSAjIGlidXMgLSBUaGUgSW5wdXQg QnVzCi0gIwotICMgQ29weXJpZ2h0IChjKSAyMDA3LTIwMTYgUGVuZyBIdWFuZyA8c2hhd24ucC5o dWFuZ0BnbWFpbC5jb20+Ci0tIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNiBSZWQgSGF0LCBJbmMu Ci0rIyBDb3B5cmlnaHQgKGMpIDIwMTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBn bWFpbC5jb20+Ci0rIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNyBSZWQgSGF0LCBJbmMuCi0gIwot ICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vcgotICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYwotQEAgLTIyLDE1ICsyMyw0NyBAQAotIAotIC1pbmNsdWRlICQoVkFQSUdF Tl9NQUtFRklMRSkKLSAKLStsaWJpYnVzID0gJCh0b3BfYnVpbGRkaXIpL3NyYy9saWJpYnVzLUBJ QlVTX0FQSV9WRVJTSU9OQC5sYQotKwotK25vaW5zdF9MVExJQlJBUklFUyA9Ci0rbm9pbnN0X0RB VEEgPQotK0lOVFJPU1BFQ1RJT05fR0lSUyA9Ci0rZ2lyZGlyID0gJChkYXRhZGlyKS9naXItMS4w Ci0rCi0rQU1fQ1BQRkxBR1MgPSBcCi0rICAgIC1JJCh0b3Bfc3JjZGlyKS9zcmMgXAotKyAgICAt SSQodG9wX2J1aWxkZGlyKS9zcmMgXAotKyAgICAtaW5jbHVkZSAkKENPTkZJR19IRUFERVIpIFwK LSsgICAgJChOVUxMKQotK0FNX0NGTEFHUyA9IFwKLSsgICAgLURHX0xPR19ET01BSU49XCJJQlVT XCIgXAotKyAgICAtRFBLR0RBVEFESVI9XCIkKHBrZ2RhdGFkaXIpXCIgXAotKyAgICAtRElCVVNf RElTQUJMRV9ERVBSRUNBVEVEIFwKLSsgICAgLVduby11bnVzZWQtdmFyaWFibGUgXAotKyAgICAt V25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlIFwKLSsgICAgLVduby11bnVzZWQtZnVuY3Rpb24g XAotKyAgICAkKE5VTEwpCi0rQU1fVkFMQUZMQUdTID0gXAotKyAgICAtLXZhcGlkaXI9JChidWls ZGRpcikgXAotKyAgICAtLXZhcGlkaXI9JChzcmNkaXIpIFwKLSsgICAgLS1wa2c9cG9zaXggXAot KyAgICAtLXBrZz1ndGsrLTMuMCBcCi0rICAgIC0tcGtnPWdkay14MTEtMy4wIFwKLSsgICAgLS1w a2c9aWJ1cy0xLjAgXAotKyAgICAtLXBrZz1jb25maWcgXAotKyAgICAtLXBrZz14aSBcCi0rICAg IC0tdGFyZ2V0LWdsaWI9IiQoVkFMQV9UQVJHRVRfR0xJQl9WRVJTSU9OKSIgXAotKyAgICAkKE5V TEwpCi0rCi0gdmFwaV9kZXBzID0gXAotIAlJQnVzLTEuMC5tZXRhZGF0YSBcCi0tCUlCdXMtMS4w LWN1c3RvbS52YWxhIFwKLSAJJCh0b3BfYnVpbGRkaXIpL3NyYy9JQnVzLTEuMC5naXIgXAotIAkk KE5VTEwpCi0gCi0gaWJ1cy0xLjAudmFwaTogJCh2YXBpX2RlcHMpCi0gCi0tVkFQSUdFTl9WQVBJ UyA9IGlidXMtMS4wLnZhcGkKLStpYnVzX3ZhcGkgPSBpYnVzLTEuMC52YXBpCi0rVkFQSUdFTl9W QVBJUyA9ICQoaWJ1c192YXBpKQotIAotIGlidXNfMV8wX3ZhcGlfREVQUyA9IGdpby0yLjAKLSBp YnVzXzFfMF92YXBpX01FVEFEQVRBRElSUyA9ICQoc3JjZGlyKQotQEAgLTQwLDE4ICs3MywxMTgg QEAgaWJ1c18xXzBfdmFwaV9GSUxFUyA9IFwKLSAJJChOVUxMKQotIAotIHZhcGlkaXIgPSAkKGRh dGFkaXIpL3ZhbGEvdmFwaQotLXZhcGlfREFUQSA9ICQoVkFQSUdFTl9WQVBJUykgJChWQVBJR0VO X1ZBUElTOi52YXBpPS5kZXBzKQotK3ZhcGlfREFUQSA9ICQoaWJ1c192YXBpKSAkKGlidXNfdmFw aToudmFwaT0uZGVwcykKLSAKLS1NQUlOVEFJTkVSQ0xFQU5GSUxFUyA9ICQoVkFQSUdFTl9WQVBJ UykKLS1ESVNUQ0xFQU5GSUxFUyA9ICQoVkFQSUdFTl9WQVBJUykKLStNQUlOVEFJTkVSQ0xFQU5G SUxFUyA9ICQoaWJ1c192YXBpKQotK0RJU1RDTEVBTkZJTEVTID0gJChpYnVzX3ZhcGkpCi0gCi0t RVhUUkFfRElTVCA9IFwKLS0JJChWQVBJR0VOX1ZBUElTKSBcCi0tCUlCdXMtMS4wLm1ldGFkYXRh IFwKLS0JSUJ1cy0xLjAtY3VzdG9tLnZhbGEgXAotLQlpYnVzLTEuMC5kZXBzIFwKLS0JY29uZmln LnZhcGkgXAotLQl4aS52YXBpIFwKLS0JJChOVUxMKQotK0VYVFJBX0RJU1QgPSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgJChpYnVzX3ZhcGkpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0rICAgIElCdXMtMS4wLm1ldGFkYXRhICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgICBJQnVzLTEuMC1jdXN0b20udmFsYSAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgICAgSUJ1c0Vtb2ppRGlhbG9nLTEuMC5tZXRhZGF0YSAgICAgICAgICAg ICAgICBcCi0rICAgIGlidXMtMS4wLmRlcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgICBpYnVzLWVtb2ppLWRpYWxvZy0xLjAuZGVwcyAgICAgICAgICAgICAgICAgIFwKLSsg ICAgY29uZmlnLnZhcGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIHhp LnZhcGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAkKE5VTEwp Ci0rCi0raWYgRU5BQkxFX0VNT0pJX0RJQ1QKLStBTV9WQUxBRkxBR1MgKz0gLS1kZWZpbmU9RU1P SklfRElDVAotKwotK2xpYmlidXNfZW1vamlfZGlhbG9nID0gbGliaWJ1cy1lbW9qaS1kaWFsb2ct MS4wLmxhCi0rbm9pbnN0X0xUTElCUkFSSUVTICs9ICQobGliaWJ1c19lbW9qaV9kaWFsb2cpCi0r Ci0rbGliaWJ1c19lbW9qaV9kaWFsb2dfMV8wX2xhX1NPVVJDRVMgPSAgICAgICAgICAgXAotKyAg ICBjYW5kaWRhdGVhcmVhLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgZW1v amllci52YWxhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIGljb253aWRn ZXQudmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBwYW5nby52YWxhICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgc2VwYXJhdG9yLnZhbGEgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICQoTlVMTCkKLStsaWJpYnVzX2Vtb2pp X2RpYWxvZ18xXzBfbGFfQ0ZMQUdTID0gICAgICAgICAgICBcCi0rICAgICQoQU1fQ0ZMQUdTKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBAR0xJQjJfQ0ZMQUdTQCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgQEdJTzJfQ0ZMQUdTQCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0rICAgIEBHVEhSRUFEMl9DRkxBR1NAICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgICBAR1RLM19DRkxBR1NAICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgICAgQFgxMV9DRkxBR1NAICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICAgIC1EQklORElSPVwiJChiaW5kaXIpXCIgICAgICAgICAgICAgICAgICAgICAg XAotKyAgICAkKE5VTEwpCi0rbGliaWJ1c19lbW9qaV9kaWFsb2dfMV8wX2xhX0xJQkFERCA9ICAg ICAgICAgICAgXAotKyAgICBAR0xJQjJfTElCU0AgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgICAgQEdJTzJfTElCU0AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICAgIEBHVEhSRUFEMl9MSUJTQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg ICBAR1RLM19MSUJTQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgQFgx MV9MSUJTQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIC1sWGkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAkKGxpYmlidXMpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgJChOVUxMKQotK2xpYmlidXNf ZW1vamlfZGlhbG9nXzFfMF9sYV9MREZMQUdTID0gICAgICAgICAgIFwKLSsgICAgLW5vLXVuZGVm aW5lZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIC1leHBvcnQtc3ltYm9s cy1yZWdleCAiaWJ1c18uKiIgICAgICAgICAgICAgXAotKyAgICAkKE5VTEwpCi0rCi0rIyBwZXIg ZmlsZSBzZXR0aW5nIGlzIG5lZWRlZCB0byBhdm9pZCBjb25mbGljdGluZyBMTl9TIGJ5IGNhbGxp bmcKLSsjIGR1cGxpY2F0ZWQgdGltZXMgaW4gcGFyYWxsZWwgbWFrZQotKyUudmFsYTogJChpYnVz X3ZhcGkpCi0rCWlmIHRlc3QgISAtZiAkQCA7IHRoZW4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotKwkgICAgJChMTl9TKSAkKHRvcF9zcmNkaXIpL3VpL2d0 azMvJEAgLjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsJZmk7Ci0rCi0rTUFJTlRB SU5FUkNMRUFORklMRVMgKz0gJChsaWJpYnVzX2Vtb2ppX2RpYWxvZ18xXzBfbGFfU09VUkNFUykK LStESVNUQ0xFQU5GSUxFUyArPSAkKGxpYmlidXNfZW1vamlfZGlhbG9nXzFfMF9sYV9TT1VSQ0VT KQotKwotK2lmIEhBVkVfSU5UUk9TUEVDVElPTgotKy1pbmNsdWRlICQoSU5UUk9TUEVDVElPTl9N QUtFRklMRSkKLStJTlRST1NQRUNUSU9OX1NDQU5ORVJfQVJHUyA9Ci0rSU5UUk9TUEVDVElPTl9D T01QSUxFUl9BUkdTID0gICAgICAgICAgICAgICAgICAgXAotKyAgICAtLWluY2x1ZGVkaXI9JChz cmNkaXIpICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgLS1pbmNsdWRlZGlyPS4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIC0taW5jbHVkZWRpcj0kKHRvcF9zcmNkaXIp L3NyYyAgICAgICAgICAgICAgXAotKyAgICAkKE5VTEwpCi0rCi0rCi0rZW1vamlfaGVhZGVycyA9 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAkKHRvcF9zcmNkaXIpL3Vp L2d0azMvaWJ1c2Vtb2ppZGlhbG9nLmggICAgIFwKLSsgICAgJChOVUxMKQotKwotK0lCdXNFbW9q aURpYWxvZy0xLjAuZ2lyOiAkKGxpYmlidXNfZW1vamlfZGlhbG9nKSBNYWtlZmlsZQotK0lCdXNF bW9qaURpYWxvZ18xXzBfZ2lyX1NDQU5ORVJGTEFHUyA9ICAgICAgICAgIFwKLSsgICAgLS1wa2ct ZXhwb3J0PWlidXMtMS4wICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIC0tcGtnPWd0ayst My4wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAkKElCVVNfR0lSX1NDQU5O RVJGTEFHUykgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgJChOVUxMKQotK0lCdXNFbW9qaURp YWxvZ18xXzBfZ2lyX0lOQ0xVREVTID0gR3RrLTMuMCBHTGliLTIuMCBHT2JqZWN0LTIuMCBHaW8t Mi4wCi0rSUJ1c0Vtb2ppRGlhbG9nXzFfMF9naXJfTElCUyA9ICQobGliaWJ1c19lbW9qaV9kaWFs b2cpICQobGliaWJ1cykKLStJQnVzRW1vamlEaWFsb2dfMV8wX2dpcl9GSUxFUyA9ICQoZW1vamlf aGVhZGVycykKLStJQnVzRW1vamlEaWFsb2dfMV8wX2dpcl9DRkxBR1MgPSAgICAgICAgICAgICAg ICBcCi0rICAgIC1JJChzcmNkaXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KyAgICAtSSQoYnVpbGRkaXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAg LUkkKHRvcF9zcmNkaXIpL3NyYyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICQoTlVM TCkKLSsKLStpYnVzX2Vtb2ppX2RpYWxvZ19naXIgPSBJQnVzRW1vamlEaWFsb2ctMS4wLmdpcgot K0lOVFJPU1BFQ1RJT05fR0lSUyArPSAkKGlidXNfZW1vamlfZGlhbG9nX2dpcikKLStub2luc3Rf REFUQSArPSAkKGlidXNfZW1vamlfZGlhbG9nX2dpcikKLStFWFRSQV9ESVNUICs9ICQoaWJ1c19l bW9qaV9kaWFsb2dfZ2lyKQotK01BSU5UQUlORVJDTEVBTkZJTEVTICs9ICQoaWJ1c19lbW9qaV9k aWFsb2dfZ2lyKQotK0RJU1RDTEVBTkZJTEVTICs9ICQoaWJ1c19lbW9qaV9kaWFsb2dfZ2lyKQot KwotK2lidXMtZW1vamktZGlhbG9nLTEuMC52YXBpOiAkKGlidXNfZW1vamlfZGlhbG9nX2dpcikg SUJ1c0Vtb2ppRGlhbG9nLTEuMC5tZXRhZGF0YQotK2lidXNfZW1vamlfZGlhbG9nX3ZhcGkgPSBp YnVzLWVtb2ppLWRpYWxvZy0xLjAudmFwaQotK2lidXNfZW1vamlfZGlhbG9nXzFfMF92YXBpX0RF UFMgPSBndGsrLTMuMCBnaW8tMi4wCi0raWJ1c19lbW9qaV9kaWFsb2dfMV8wX3ZhcGlfTUVUQURB VEFESVJTID0gJChzcmNkaXIpCi0raWJ1c19lbW9qaV9kaWFsb2dfMV8wX3ZhcGlfRklMRVMgPSBJ QnVzRW1vamlEaWFsb2ctMS4wLmdpcgotK1ZBUElHRU5fVkFQSVMgKz0gJChpYnVzX2Vtb2ppX2Rp YWxvZ192YXBpKQotK25vaW5zdF9EQVRBICs9ICQoaWJ1c19lbW9qaV9kaWFsb2dfdmFwaSkKLStF WFRSQV9ESVNUICs9ICQoaWJ1c19lbW9qaV9kaWFsb2dfdmFwaSkKLStNQUlOVEFJTkVSQ0xFQU5G SUxFUyArPSAkKGlidXNfZW1vamlfZGlhbG9nX3ZhcGkpCi0rRElTVENMRUFORklMRVMgKz0gJChp YnVzX2Vtb2ppX2RpYWxvZ192YXBpKQotKwotK2VuZGlmCi0rI2VuZCBvZiBIQVZFX0lOVFJPU1BF Q1RJT04KLStlbmRpZgotKyMgZW5kIG9mIEVOQUJMRV9FTU9KSV9ESUNUCi0gCi0gLWluY2x1ZGUg JCh0b3Bfc3JjZGlyKS9naXQubWsKLWRpZmYgLS1naXQgYS91aS9ndGszL2lidXMtZW1vamktZGlh bG9nLTEuMC5kZXBzIGIvYmluZGluZ3MvdmFsYS9pYnVzLWVtb2ppLWRpYWxvZy0xLjAuZGVwcwot c2ltaWxhcml0eSBpbmRleCAxMDAlCi1yZW5hbWUgZnJvbSB1aS9ndGszL2lidXMtZW1vamktZGlh bG9nLTEuMC5kZXBzCi1yZW5hbWUgdG8gYmluZGluZ3MvdmFsYS9pYnVzLWVtb2ppLWRpYWxvZy0x LjAuZGVwcwotZGlmZiAtLWdpdCBhL3BvL1BPVEZJTEVTLnNraXAgYi9wby9QT1RGSUxFUy5za2lw Ci1pbmRleCA3MTkwMjIxZC4uMTBiODgyOTggMTAwNjQ0Ci0tLS0gYS9wby9QT1RGSUxFUy5za2lw Ci0rKysgYi9wby9QT1RGSUxFUy5za2lwCi1AQCAtMiw2ICsyLDExIEBACi0gIyBQbGVhc2Uga2Vl cCB0aGlzIGZpbGUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgotICMgRmlsZXMgdW5kZXIgdWkvZ3Rr Mi8gYXJlIG5vdCBzaGlwcGVkIGluIHRoZSBkaXN0cmlidXRpb24sIGJ1dCBrZXB0Ci0gIyBpbiB0 aGUgZ2l0IHJlcG9zaXRvcnkgZm9yIHJlZmVyZW5jZS4KLStiaW5kaW5ncy92YWxhL2NhbmRpZGF0 ZWFyZWEuYwotK2JpbmRpbmdzL3ZhbGEvZW1vamllci5jCi0rYmluZGluZ3MvdmFsYS9pY29ud2lk Z2V0LmMKLStiaW5kaW5ncy92YWxhL3BhbmdvLmMKLStiaW5kaW5ncy92YWxhL3NlcGFyYXRvci5j Ci0gaWJ1cy9fY29uZmlnLnB5Ci0gdG9vbHMvbWFpbi5jCi0gdWkvZ3RrMi9jYW5kaWRhdGVwYW5l bC5weQotZGlmZiAtLWdpdCBhL3VpL2d0azMvTWFrZWZpbGUuYW0gYi91aS9ndGszL01ha2VmaWxl LmFtCi1pbmRleCBjNzk2NDFhNS4uNzg2YjgwZTYgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL01ha2Vm aWxlLmFtCi0rKysgYi91aS9ndGszL01ha2VmaWxlLmFtCi1AQCAtODEsMTAgKzgxLDYgQEAgQU1f VkFMQUZMQUdTID0gXAotIAktLXRhcmdldC1nbGliPSIkKFZBTEFfVEFSR0VUX0dMSUJfVkVSU0lP TikiIFwKLSAJJChOVUxMKQotIAotLU1BSU5UQUlORVJDTEVBTkZJTEVTID0KLS1ESVNUQ0xFQU5G SUxFUyA9Ci0tbm9pbnN0X0RBVEEgPQotLQotIGlmIEVOQUJMRV9MSUJOT1RJRlkKLSBBTV9DRkxB R1MgKz0gXAotIAlATElCTk9USUZZX0NGTEFHU0AgXAotQEAgLTE1OCw5ICsxNTQsOCBAQCBtYW5f c2V2ZW5faW5fZmlsZXMgPSBpYnVzLWVtb2ppLjcuaW4KLSBFWFRSQV9ESVNUID0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotICAgICAkKGVtb2ppX2hlYWRlcnMpICAgICAgICAgICAgICAg ICAgICBcCi0gICAgICQobWFuX3NldmVuX2luX2ZpbGVzKSAgICAgICAgICAgICAgIFwKLS0gICAg SUJ1c0Vtb2ppRGlhbG9nLTEuMC5tZXRhZGF0YSAgICAgICAgXAotKyAgICBlbW9qaWVyYXBwLnZh bGEgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIGd0a3BhbmVsLnhtbC5pbiAgICAgICAgICAg ICAgICAgICAgIFwKLS0gICAgaWJ1cy1lbW9qaS1kaWFsb2ctMS4wLmRlcHMgICAgICAgICAgXAot ICAgICBub3RpZmljYXRpb24taXRlbS54bWwgICAgICAgICAgICAgICBcCi0gICAgIG5vdGlmaWNh dGlvbi13YXRjaGVyLnhtbCAgICAgICAgICAgIFwKLSAgICAgJChOVUxMKQotQEAgLTE2OCw5OCAr MTYzLDQwIEBAIEVYVFJBX0RJU1QgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gaWYg RU5BQkxFX0VNT0pJX0RJQ1QKLSBBTV9WQUxBRkxBR1MgKz0gLS1kZWZpbmU9RU1PSklfRElDVAot IAotLWxpYmlidXNfZW1vamlfZGlhbG9nID0gbGliaWJ1cy1lbW9qaS1kaWFsb2ctMS4wLmxhCi0t Ci0tbm9pbnN0X0xUTElCUkFSSUVTID0gJChsaWJpYnVzX2Vtb2ppX2RpYWxvZykKLS0KLS1saWJp YnVzX2Vtb2ppX2RpYWxvZ18xXzBfbGFfQ0ZMQUdTID0gJChBTV9DRkxBR1MpCi0tbGliaWJ1c19l bW9qaV9kaWFsb2dfMV8wX2xhX0xERkxBR1MgPSAgIFwKLS0gICAgLW5vLXVuZGVmaW5lZCAgICAg ICAgICAgICAgICAgICAgICAgXAotLSAgICAtZXhwb3J0LXN5bWJvbHMtcmVnZXggImlidXNfLioi ICAgICBcCi0tICAgIC12ZXJzaW9uLWluZm8gQExUX1ZFUlNJT05fSU5GT0AgICAgIFwKLS0gICAg JChOVUxMKQotLWxpYmlidXNfZW1vamlfZGlhbG9nXzFfMF9sYV9TT1VSQ0VTID0gICBcCi0tICAg IGNhbmRpZGF0ZWFyZWEudmFsYSAgICAgICAgICAgICAgICAgIFwKLS0gICAgZW1vamllci52YWxh ICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBpY29ud2lkZ2V0LnZhbGEgICAgICAgICAg ICAgICAgICAgICBcCi0tICAgIHBhbmdvLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LS0gICAgc2VwYXJhdG9yLnZhbGEgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAkKE5VTEwp Ci0tCi0gbGliZXhlY19QUk9HUkFNUyArPSBpYnVzLXVpLWVtb2ppZXIKLSAKLS1pYnVzX3VpX2Vt b2ppZXJfU09VUkNFUyA9ICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICQobGliaWJ1c19l bW9qaV9kaWFsb2dfMV8wX2xhX1NPVVJDRVMpICAgICAgXAotK2lidXNfdWlfZW1vamllcl9WQUxB U09VUkNFUyA9ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgZW1vamllcmFwcC52YWxhICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIGNhbmRpZGF0ZWFyZWEudmFsYSAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgICBlbW9qaWVyLnZhbGEgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgaWNvbndpZGdldC52YWxhICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0rICAgIHBhbmdvLnZhbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgICBzZXBhcmF0b3IudmFsYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSsgICAgJChOVUxMKQotK2lidXNfdWlfZW1vamllcl9TT1VSQ0VTID0gICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgJChpYnVzX3VpX2Vtb2ppZXJfVkFMQVNPVVJDRVM6LnZhbGE9LmMpICAg ICBcCi0gICAgICQoTlVMTCkKLSAKLSBpYnVzX3VpX2Vtb2ppZXJfTERBREQgPSAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgICQoQU1fTERBREQpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICAkKE5VTEwpCi0gCi0tLWluY2x1ZGUgJChJTlRST1NQRUNUSU9OX01B S0VGSUxFKQotLUlOVFJPU1BFQ1RJT05fU0NBTk5FUl9BUkdTID0KLS1JTlRST1NQRUNUSU9OX0NP TVBJTEVSX0FSR1MgPSAgICAgIFwKLS0gICAgLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSAgICAgICAg IFwKLS0gICAgLS1pbmNsdWRlZGlyPS4gICAgICAgICAgICAgICAgIFwKLS0gICAgLS1pbmNsdWRl ZGlyPSQodG9wX3NyY2Rpcikvc3JjIFwKLS0gICAgJChOVUxMKQotLQotLWlmIEhBVkVfSU5UUk9T UEVDVElPTgotLWludHJvc3BlY3Rpb25fc291cmNlcyA9ICAgICAgICAgICAgICAgIFwKLS0gICAg JChlbW9qaV9oZWFkZXJzKSAgICAgICAgICAgICAgICAgICBcCi0tICAgICQoTlVMTCkKLS1JQnVz RW1vamlEaWFsb2ctMS4wLmdpcjogJChsaWJpYnVzX2Vtb2ppX2RpYWxvZykgTWFrZWZpbGUKLS1J QnVzRW1vamlEaWFsb2dfMV8wX2dpcl9TQ0FOTkVSRkxBR1MgPSBcCi0tICAgIC0tcGtnLWV4cG9y dD1pYnVzLTEuMCAgICAgICAgICAgICAgXAotLSAgICAtLXBrZz1ndGsrLTMuMCAgICAgICAgICAg ICAgICAgICAgIFwKLS0gICAgJChJQlVTX0dJUl9TQ0FOTkVSRkxBR1MpICAgICAgICAgICBcCi0r aWJ1c191aV9lbW9qaWVyX1ZBTEFGTEFHUyA9ICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAk KEFNX1ZBTEFGTEFHUykgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgJChOVUxM KQotLUlCdXNFbW9qaURpYWxvZy0xLjAuZ2lyOiAkKGxpYmlidXNfZW1vamlfZGlhbG9nKSBNYWtl ZmlsZQotLUlCdXNFbW9qaURpYWxvZ18xXzBfZ2lyX0lOQ0xVREVTID0gR3RrLTMuMCBHTGliLTIu MCBHT2JqZWN0LTIuMCBHaW8tMi4wCi0tSUJ1c0Vtb2ppRGlhbG9nXzFfMF9naXJfTElCUyA9ICQo bGliaWJ1c19lbW9qaV9kaWFsb2cpICQobGliaWJ1cykKLS1JQnVzRW1vamlEaWFsb2dfMV8wX2dp cl9GSUxFUyA9ICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgJChhZGRwcmVmaXggJChzcmNk aXIpLywkKGludHJvc3BlY3Rpb25fc291cmNlcykpIFwKLS0gICAgJChOVUxMKQotLUlCdXNFbW9q aURpYWxvZ18xXzBfZ2lyX0NGTEFHUyA9ICAgICAgIFwKLS0gICAgLURJQlVTX0NPTVBJTEFUSU9O ICAgICAgICAgICAgICAgICBcCi0tICAgIC1JJChzcmNkaXIpICAgICAgICAgICAgICAgICAgICAg ICAgXAotLSAgICAtSSQoYnVpbGRkaXIpICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgLUkk KHRvcF9zcmNkaXIpL3NyYyAgICAgICAgICAgICAgICBcCi0tICAgICQoTlVMTCkKLS1JTlRST1NQ RUNUSU9OX0dJUlMgPSBJQnVzRW1vamlEaWFsb2ctMS4wLmdpcgotLQotLWdpcmRpciA9ICQoZGF0 YWRpcikvZ2lyLTEuMAotLW5vaW5zdF9EQVRBICs9ICQoSU5UUk9TUEVDVElPTl9HSVJTKQotLUNM RUFORklMRVMgKz0gJChJTlRST1NQRUNUSU9OX0dJUlMpCi0gCi0tdHlwZWxpYnNkaXIgPSAkKGxp YmRpcikvZ2lyZXBvc2l0b3J5LTEuMAotLW5vaW5zdF9EQVRBICs9ICQoSU5UUk9TUEVDVElPTl9H SVJTOi5naXI9LnR5cGVsaWIpCi0tQ0xFQU5GSUxFUyArPSAkKElOVFJPU1BFQ1RJT05fR0lSUzou Z2lyPS50eXBlbGliKQotLQotLQotLWlmIEVOQUJMRV9WQVBJR0VOCi0tLWluY2x1ZGUgJChWQVBJ R0VOX01BS0VGSUxFKQotLQotLWlidXMtZW1vamktZGlhbG9nLTEuMC52YXBpOiAkKElOVFJPU1BF Q1RJT05fR0lSUykgSUJ1c0Vtb2ppRGlhbG9nLTEuMC5tZXRhZGF0YQotLQotLVZBUElHRU5fVkFQ SVMgPSBpYnVzLWVtb2ppLWRpYWxvZy0xLjAudmFwaQotLQotLWlidXNfZW1vamlfZGlhbG9nXzFf MF92YXBpX0RFUFMgPSBndGsrLTMuMCBnaW8tMi4wCi0taWJ1c19lbW9qaV9kaWFsb2dfMV8wX3Zh cGlfTUVUQURBVEFESVJTID0gJChzcmNkaXIpCi0taWJ1c19lbW9qaV9kaWFsb2dfMV8wX3ZhcGlf RklMRVMgPSAkKElOVFJPU1BFQ1RJT05fR0lSUykKLS0KLS12YXBpZGlyID0gJChkYXRhZGlyKS92 YWxhL3ZhcGkKLS1ub2luc3RfREFUQSArPSAkKFZBUElHRU5fVkFQSVMpICQoVkFQSUdFTl9WQVBJ UzoudmFwaT0uZGVwcykKLS0KLS1NQUlOVEFJTkVSQ0xFQU5GSUxFUyArPSAkKFZBUElHRU5fVkFQ SVMpCi0tRElTVENMRUFORklMRVMgKz0gJChWQVBJR0VOX1ZBUElTKQotLUVYVFJBX0RJU1QgKz0g JChWQVBJR0VOX1ZBUElTKQotLQotLSMgZW5kIG9mIEVOQUJMRV9WQVBJR0VOCi0tZW5kaWYKLS0j IGVuZCBvZiBIQVZFX0lOVFJPU1BFQ1RJT04KLS1lbmRpZgotKyMgVGhpcyBsaW5lIGFuZCBmb29f VkFMQVNPVVJDRVMgbGluZSBjYW4gZGVsZXRlIHRoZSBkdXBsaWNhdGVkIGVudHJpZXMKLSsjIG9m IGVtb2ppZXIuYzogZW1vamllci52YWxhCi0rZW1vamllcmFwcC5jOiAkKGlidXNfdWlfZW1vamll cl9WQUxBU09VUkNFUykKLSsJJChBTV9WX1ZBTEFDKSQoYW1fX2NkKSAkKHNyY2RpcikgJiYgJChW QUxBQykgJChBTV9WQUxBRkxBR1MpIFwKLSskKFZBTEFGTEFHUykgLUMgJChpYnVzX3VpX2Vtb2pp ZXJfVkFMQVNPVVJDRVMpCi0rCSQoTlVMTCkKLSsjIG1ha2UgZGlzdCBjcmVhdGVzIC5jIGZpbGVz IGluIGEgZGlmZmVyZW50IHNyY2RpcgotK2Vtb2ppZXJhcHAubzogJChzcmNkaXIpL2Vtb2ppZXJh cHAuYwotKwkkKEFNX1ZfQ0Mpc291cmNlPSckPCcgb2JqZWN0PSckQCcgbGlidG9vbD1ubyBcCi0r CURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgXAotKwkkKEFNX1ZfQ0Nf bm8pJChDT01QSUxFKSAtYyAtbyAkQCAkPAotKwkkKE5VTEwpCi0gCi0gbWFuX3NldmVuX2ZpbGVz ID0gJChtYW5fc2V2ZW5faW5fZmlsZXM6LjcuaW49LjcpCi0gbWFuX3NldmVuX0RBVEEgPSQobWFu X3NldmVuX2ZpbGVzOi43PS43Lmd6KQotQEAgLTI3Niw3ICsyMTMsNyBAQCBDTEVBTkZJTEVTICs9 IFwKLSAgICAgJChtYW5fc2V2ZW5fZmlsZXMpIFwKLSAgICAgJChOVUxMKQotIAotLSMgZW5kIG9m IEVOQUJMRV9FTU9KSV9ESUNUCi0gZW5kaWYKLSsjIGVuZCBvZiBFTkFCTEVfRU1PSklfRElDVAot IAotIC1pbmNsdWRlICQodG9wX3NyY2RpcikvZ2l0Lm1rCi1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9l bW9qaWVyLnZhbGEgYi91aS9ndGszL2Vtb2ppZXIudmFsYQotaW5kZXggOWRmNTlhYzQuLjM2YWI0 YmFiIDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKLSsrKyBiL3VpL2d0azMvZW1v amllci52YWxhCi1AQCAtMTEzOSw2ICsxMTM5LDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsu QXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAgICAgICAgICAgbV9jYXRlZ29yeV9hY3Rp dmVfaW5kZXggPSAoaW50KWxpc3QubGVuZ3RoKCk7Ci0gICAgICAgICB9Ci0gICAgICAgICBHdGsu QWRqdXN0bWVudCBhZGp1c3RtZW50ID0gbV9saXN0X2JveC5nZXRfYWRqdXN0bWVudCgpOwotKyAg ICAgICAgbV9zY3JvbGxlZF93aW5kb3cuc2V0X2hhZGp1c3RtZW50KG5ldyBHdGsuQWRqdXN0bWVu dCgwLCAwLCAwLCAwLCAwLCAwKSk7Ci0gICAgICAgICBtX3Njcm9sbGVkX3dpbmRvdy5zZXRfdmFk anVzdG1lbnQoYWRqdXN0bWVudCk7Ci0gICAgICAgICBzaG93X2NhdGVnb3J5X2xpc3QoKTsKLSAg ICAgfQotQEAgLTExNTYsNyArMTE1Nyw3IEBAIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxp Y2F0aW9uV2luZG93IHsKLSAgICAgICAgICAgICBlbHNlIGlmIChrZXl2YWwgPT0gR2RrLktleS5S aWdodCkKLSAgICAgICAgICAgICAgICAgbV9sb29rdXBfdGFibGUuY3Vyc29yX2Rvd24oKTsKLSAg ICAgICAgICAgICBzaG93X2NhbmRpZGF0ZV9wYW5lbCgpOwotLSAgICAgICAgfSBlbHNlIGlmICht X2VudHJ5LmdldF90ZXh0KCkubGVuKCkgPiAwKSB7Ci0rICAgICAgICB9IGVsc2UgaWYgKG1fZW50 cnkuZ2V0X3RleHQoKS5sZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICAgaW50IHN0ZXAgPSAwOwot ICAgICAgICAgICAgIGlmIChrZXl2YWwgPT0gR2RrLktleS5MZWZ0KQotICAgICAgICAgICAgICAg ICBzdGVwID0gLTE7Ci1AQCAtMTIxMSw3ICsxMjEyLDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBH dGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlX3BhbmVs KCk7Ci0gICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICB9Ci0tICAgICAgICBpZiAo bV9lbnRyeS5nZXRfdGV4dCgpLmxlbigpID4gMCkgewotKyAgICAgICAgaWYgKG1fZW50cnkuZ2V0 X3RleHQoKS5sZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICAgaW50IHN0ZXAgPSAwOwotICAgICAg ICAgICAgIGlmIChrZXl2YWwgPT0gR2RrLktleS5Ib21lKQotICAgICAgICAgICAgICAgICBzdGVw ID0gLTE7Ci1AQCAtMTQxMCw3ICsxNDExLDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBw bGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAgIGtleV9wcmVzc19lbnRlcigpOwotICAgICAg ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgY2FzZSBHZGsuS2V5LkJhY2tTcGFjZToKLS0g ICAgICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbigpID4gMCkgewotKyAgICAgICAg ICAgIGlmIChtX2VudHJ5LmdldF90ZXh0KCkubGVuZ3RoID4gMCkgewotICAgICAgICAgICAgICAg ICBpZiAoKG1vZGlmaWVycyAmIEdkay5Nb2RpZmllclR5cGUuQ09OVFJPTF9NQVNLKSAhPSAwKSB7 Ci0gICAgICAgICAgICAgICAgICAgICBHTGliLlNpZ25hbC5lbWl0X2J5X25hbWUobV9lbnRyeSwg ImRlbGV0ZS1mcm9tLWN1cnNvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR3RrLkRlbGV0ZVR5cGUuV09SRF9FTkRTLCAtMSk7Ci1AQCAtMTQyMiw3ICsx NDIzLDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAg ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSBHZGsuS2V5LkRlbGV0ZToKLSAgICAgICAg IGNhc2UgR2RrLktleS5LUF9EZWxldGU6Ci0tICAgICAgICAgICAgaWYgKG1fZW50cnkuZ2V0X3Rl eHQoKS5sZW4oKSA+IDApIHsKLSsgICAgICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxl bmd0aCA+IDApIHsKLSAgICAgICAgICAgICAgICAgaWYgKChtb2RpZmllcnMgJiBHZGsuTW9kaWZp ZXJUeXBlLkNPTlRST0xfTUFTSykgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgR0xpYi5T aWduYWwuZW1pdF9ieV9uYW1lKG1fZW50cnksICJkZWxldGUtZnJvbS1jdXJzb3IiLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5EZWxldGVUeXBlLldP UkRfRU5EUywgMSk7Ci1AQCAtMTQzNiw3ICsxNDM3LDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBH dGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgY2FzZSBHZGsuS2V5LnNwYWNlOgotICAg ICAgICAgY2FzZSBHZGsuS2V5LktQX1NwYWNlOgotICAgICAgICAgICAgIGlmICgobW9kaWZpZXJz ICYgR2RrLk1vZGlmaWVyVHlwZS5TSElGVF9NQVNLKSAhPSAwKSB7Ci0tICAgICAgICAgICAgICAg IGlmIChtX2VudHJ5LmdldF90ZXh0KCkubGVuKCkgPiAwKQotKyAgICAgICAgICAgICAgICBpZiAo bV9lbnRyeS5nZXRfdGV4dCgpLmxlbmd0aCA+IDApCi0gICAgICAgICAgICAgICAgICAgICBlbnRy eV9lbnRlcl9rZXl2YWwoa2V5dmFsKTsKLSAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fY2FuZGlk YXRlX3BhbmVsX2lzX3Zpc2libGUpIHsKLSAgICAgICAgICAgICAgICAgZW50ZXJfbm90aWZ5X2Rp c2FibGVfd2l0aF90aW1lcigpOwotQEAgLTE1MTIsNyArMTUxMyw3IEBAIGNsYXNzIElCdXNFbW9q aWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgICAgICAgICAgICAgIHJldHVy biB0cnVlOwotICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICBjYXNlIEdkay5L ZXkudToKLS0gICAgICAgICAgICAgICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW4oKSA+IDAp IHsKLSsgICAgICAgICAgICAgICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW5ndGggPiAwKSB7 Ci0gICAgICAgICAgICAgICAgICAgICBHTGliLlNpZ25hbC5lbWl0X2J5X25hbWUobV9lbnRyeSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRlLWZy b20tY3Vyc29yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHdGsuRGVsZXRlVHlwZS5QQVJBR1JBUEhfRU5EUywKLUBAIC0xNTIxLDEzICsxNTIyLDEzIEBA IGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgICAg ICAgICAgfQotICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICBjYXNlIEdkay5L ZXkuYToKLS0gICAgICAgICAgICAgICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW4oKSA+IDAp IHsKLSsgICAgICAgICAgICAgICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW5ndGggPiAwKSB7 Ci0gICAgICAgICAgICAgICAgICAgICBtX2VudHJ5LnNlbGVjdF9yZWdpb24oMCwgLTEpOwotICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgY2FzZSBHZGsuS2V5Lng6Ci0tICAgICAg ICAgICAgICAgIGlmIChtX2VudHJ5LmdldF90ZXh0KCkubGVuKCkgPiAwKSB7Ci0rICAgICAgICAg ICAgICAgIGlmIChtX2VudHJ5LmdldF90ZXh0KCkubGVuZ3RoID4gMCkgewotICAgICAgICAgICAg ICAgICAgICAgR0xpYi5TaWduYWwuZW1pdF9ieV9uYW1lKG1fZW50cnksICJjdXQtY2xpcGJvYXJk Iik7Ci0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg fQotQEAgLTE1NDQsNyArMTU0NSw3IEBAIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0 aW9uV2luZG93IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmQuc3RvcmUoKTsK LSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg ICAgIH0KLS0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX2VudHJ5LmdldF90ZXh0KCkubGVu KCkgPiAwKSB7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV9lbnRyeS5nZXRfdGV4dCgp Lmxlbmd0aCA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgIEdMaWIuU2lnbmFsLmVtaXRfYnlf bmFtZShtX2VudHJ5LCAiY29weS1jbGlwYm9hcmQiKTsKLSAgICAgICAgICAgICAgICAgICAgIHJl dHVybiB0cnVlOwotICAgICAgICAgICAgICAgICB9Ci1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9pYnVz ZW1vamlkaWFsb2cuaCBiL3VpL2d0azMvaWJ1c2Vtb2ppZGlhbG9nLmgKLWluZGV4IDI0ZDE5NWM4 Li5lZDg4ODZhOCAxMDA2NDQKLS0tLSBhL3VpL2d0azMvaWJ1c2Vtb2ppZGlhbG9nLmgKLSsrKyBi L3VpL2d0azMvaWJ1c2Vtb2ppZGlhbG9nLmgKLUBAIC0xNzAsNSArMTcwLDMxIEBAIHZvaWQgICAg ICAgICAgaWJ1c19lbW9qaWVyX3NldF9mYXZvcml0ZXMgICAgICAgICAgKGdjaGFyKiogICAgICBm YXZvcml0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZmF2b3JpdGVfYW5ub3RhdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZmF2b3JpdGVfYW5ub3RhdGlvbnNfbGVuZ3RoKTsKLSsK LSsvKioKLSsgKiBpYnVzX2Vtb2ppZXJfc2V0X3BhcnRpYWxfbWF0Y2g6Ci0rICogQGhhc19wYXJ0 aWFsX21hdGNoOiBFbmFibGUgdGhlIHBhcnRpYWwgbWF0Y2ggaWYgJVRSVUUuIE90aGVyd2lzZSBp ZiAlRkFMU0UuCi0rICoKLSsgKiBTZXQgcGFydGlhbCBtYXRjaCBmb3IgZW1vamkgYW5ub3RhdGlv bnMuCi0rICovCi0rdm9pZCAgICAgICAgICBpYnVzX2Vtb2ppZXJfc2V0X3BhcnRpYWxfbWF0Y2gg ICAgICAoZ2Jvb2xlYW4gIGhhc19wYXJ0aWFsX21hdGNoKTsKLSsKLSsvKioKLSsgKiBpYnVzX2Vt b2ppZXJfc2V0X3BhcnRpYWxfbWF0Y2hfbGVuZ3RoOgotKyAqIEBsZW5ndGg6IG1pbmltdW0gbGVu Z2h0IHRvIG1hdGNoIHBhcnRpYWxseS4KLSsgKgotKyAqIFNldCB0aGUgbWluaW11bSBsZW5naHQg dG8gbWF0Y2ggcGFydGlhbGx5LgotKyAqLwotK3ZvaWQgICAgICAgICAgaWJ1c19lbW9qaWVyX3Nl dF9wYXJ0aWFsX21hdGNoX2xlbmd0aAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGdpbnQgICAgICAgICBsZW5ndGgpOwotKwotKy8qKgotKyAqIGli dXNfZW1vamllcl9zZXRfcGFydGlhbF9tYXRjaF9jb25kaXRpb246Ci0rICogQGNvbmRpdGlvbjog Y29uZGl0aW9uIGlkIGJldHdlZW4gMCBhbmQgMi4KLSsgKgotKyAqIFNldCB0aGUgcGFydGlhbCBt YXRjaCBjb25kaXRpb24gd2l0aCB0aGUgaW50ZWdlci4KLSsgKi8KLSt2b2lkICAgICAgICAgIGli dXNfZW1vamllcl9zZXRfcGFydGlhbF9tYXRjaF9jb25kaXRpb24KLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnaW50ICAgICAgICAgY29uZGl0aW9u KTsKLSBHX0VORF9ERUNMUwotICNlbmRpZgotLS0gCi0yLjEzLjQKLQotRnJvbSBkNzg4OTE4YjYz NTI3NWQwMjQ3ZTY4ZjI2ZjljODQwMTAwYmNhMzY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot RnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogV2VkLCA2 IFNlcCAyMDE3IDEyOjE3OjMwICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTRdIHVpL2d0azM6 IFN3aXRjaGVyIHNob3VsZCBpZ25vcmUgbW91c2UgdW50aWwgaXQgbW92ZXMKLQotQlVHPWh0dHBz Oi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvaXNzdWVzLzE5MjkKLQotUmV2aWV3IFVSTDogaHR0cHM6 Ly9jb2RlcmV2aWV3LmFwcHNwb3QuY29tLzMyOTEwMDA0MwotLS0tCi0gdWkvZ3RrMy9zd2l0Y2hl ci52YWxhIHwgMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2Vk LCAyNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS91aS9ndGsz L3N3aXRjaGVyLnZhbGEgYi91aS9ndGszL3N3aXRjaGVyLnZhbGEKLWluZGV4IGNmMTg3NTU1Li4y NjlhNjhkNCAxMDA2NDQKLS0tLSBhL3VpL2d0azMvc3dpdGNoZXIudmFsYQotKysrIGIvdWkvZ3Rr My9zd2l0Y2hlci52YWxhCi1AQCAtOTEsNiArOTEsOSBAQCBjbGFzcyBTd2l0Y2hlciA6IEd0ay5X aW5kb3cgewotICAgICBwcml2YXRlIHVpbnQgbV9wb3B1cF9kZWxheV90aW1lX2lkID0gMDsKLSAg ICAgcHJpdmF0ZSBpbnQgbV9yb290X3g7Ci0gICAgIHByaXZhdGUgaW50IG1fcm9vdF95OwotKyAg ICBwcml2YXRlIGRvdWJsZSBtX21vdXNlX2luaXRfeDsKLSsgICAgcHJpdmF0ZSBkb3VibGUgbV9t b3VzZV9pbml0X3k7Ci0rICAgIHByaXZhdGUgYm9vbCAgIG1fbW91c2VfbW92ZWQ7Ci0gICAgIHBy aXZhdGUgR0xpYi5IYXNoVGFibGU8c3RyaW5nLCBzdHJpbmc+IG1feGtiX2xhbmd1YWdlcyA9Ci0g ICAgICAgICAgICAgbmV3IEdMaWIuSGFzaFRhYmxlPHN0cmluZywgc3RyaW5nPihHTGliLnN0cl9o YXNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp Yi5zdHJfZXF1YWwpOwotQEAgLTIyMSw2ICsyMjQsMTEgQEAgY2xhc3MgU3dpdGNoZXIgOiBHdGsu V2luZG93IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGsuQ1VSUkVOVF9USU1F KTsKLSAgICAgICAgIGlmIChzdGF0dXMgIT0gR2RrLkdyYWJTdGF0dXMuU1VDQ0VTUykKLSAgICAg ICAgICAgICB3YXJuaW5nKCJHcmFiIHBvaW50ZXIgZmFpbGVkISBzdGF0dXMgPSAlZCIsIHN0YXR1 cyk7Ci0rICAgICAgICAvLyBQcm9iYWJseSB3ZSBjYW4gZGVsZXRlIG1fcG9wdXBfZGVsYXlfdGlt ZSBpbiAxLjYKLSsgICAgICAgIHBvaW50ZXIuZ2V0X3Bvc2l0aW9uX2RvdWJsZShudWxsLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBtX21vdXNlX2luaXRfeCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgbV9tb3VzZV9pbml0X3kpOwot KyAgICAgICAgbV9tb3VzZV9tb3ZlZCA9IGZhbHNlOwotIAotIAotICAgICAgICAgbV9sb29wID0g bmV3IEdMaWIuTWFpbkxvb3AoKTsKLUBAIC0yNjMsMTIgKzI3MSwzMCBAQCBjbGFzcyBTd2l0Y2hl ciA6IEd0ay5XaW5kb3cgewotICAgICAgICAgICAgIHZhciBidXR0b24gPSBuZXcgSUJ1c0VuZ2lu ZUJ1dHRvbihlbmdpbmUsIHRoaXMpOwotICAgICAgICAgICAgIHZhciBsb25nbmFtZSA9IGVuZ2lu ZS5nZXRfbG9uZ25hbWUoKTsKLSAgICAgICAgICAgICBidXR0b24uc2V0X3JlbGllZihHdGsuUmVs aWVmU3R5bGUuTk9ORSk7Ci0rICAgICAgICAgICAgYnV0dG9uLmFkZF9ldmVudHMoR2RrLkV2ZW50 TWFzay5QT0lOVEVSX01PVElPTl9NQVNLKTsKLSAgICAgICAgICAgICBidXR0b24uc2hvdygpOwot IAotICAgICAgICAgICAgIGJ1dHRvbi5lbnRlcl9ub3RpZnlfZXZlbnQuY29ubmVjdCgoZSkgPT4g ewotKyAgICAgICAgICAgICAgICAvLyBhdm9pZCBndGtfYnV0dG9uX3VwZGF0ZV9zdGF0ZSgpCi0r ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotKyAgICAgICAgICAgIH0pOwotKyAgICAgICAg ICAgIGJ1dHRvbi5tb3Rpb25fbm90aWZ5X2V2ZW50LmNvbm5lY3QoKGUpID0+IHsKLSsjaWYgVkFM QV8wXzI0Ci0rICAgICAgICAgICAgICAgIEdkay5FdmVudE1vdGlvbiBwZSA9IGU7Ci0rI2Vsc2UK LSsgICAgICAgICAgICAgICAgR2RrLkV2ZW50TW90aW9uICpwZSA9ICZlOwotKyNlbmRpZgotKyAg ICAgICAgICAgICAgICBpZiAobV9zZWxlY3RlZF9lbmdpbmUgPT0gaW5kZXgpCi0rICAgICAgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgICAgICAgICAgICAgIGlmICghbV9tb3VzZV9t b3ZlZCAmJgotKyAgICAgICAgICAgICAgICAgICAgbV9tb3VzZV9pbml0X3ggPT0gcGUueF9yb290 ICYmCi0rICAgICAgICAgICAgICAgICAgICBtX21vdXNlX2luaXRfeSA9PSBwZS55X3Jvb3QpIHsK LSsgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgICAgICAgICAgICAgfQot KyAgICAgICAgICAgICAgICBtX21vdXNlX21vdmVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg YnV0dG9uLmdyYWJfZm9jdXMoKTsKLSAgICAgICAgICAgICAgICAgbV9zZWxlY3RlZF9lbmdpbmUg PSBpbmRleDsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0rICAgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICB9KTsKLSAKLSAgICAgICAgICAgICBidXR0b24u YnV0dG9uX3ByZXNzX2V2ZW50LmNvbm5lY3QoKGUpID0+IHsKLS0tIAotMi4xMy40Ci0KLUZyb20g YmJmYjNkNzM4YjlkNjFkMWViMDY1OGE5Y2U1NmUzY2Q4YzExMWFjNCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURh dGU6IFdlZCwgNiBTZXAgMjAxNyAxNDowODo0MCArMDkwMAotU3ViamVjdDogW1BBVENIIDEwLzE0 XSBjbGllbnQvZ3RrMjogRG8gbm90IHNlbmQga2V5IGV2ZW50cyB0bwotIEd0a0lNQ29udGV4dFNp bXBsZQotCi1HdGtJTUNvbnRleHRTaW1wbGUgYmluZHMgQ3RybC1TaGlmdC11IGJ1dCBJQnVzIGNs aWVudHMgZG8gbm90IG5vdy4KLQotQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvaXNz dWVzLzE4ODkKLVI9U2hhd24uUC5IdWFuZ0BnbWFpbC5jb20KLQotUmV2aWV3IFVSTDogaHR0cHM6 Ly9jb2RlcmV2aWV3LmFwcHNwb3QuY29tLzMyNzI5MDA0MwotLS0tCi0gY2xpZW50L2d0azIvaWJ1 c2ltY29udGV4dC5jIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0KLSBzcmMvaWJ1c2VuZ2luZXNpbXBsZS5jICAgICAgfCAyMyArKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQotIHNyYy9pYnVzZW5naW5lc2ltcGxlLmggICAgICB8IDI0ICsrKysrKysrKysrKysrKysr KysrKystLQotIDMgZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMgYi9jbGllbnQv Z3RrMi9pYnVzaW1jb250ZXh0LmMKLWluZGV4IGI0Y2E4ODI4Li4zZWE0Njk1MSAxMDA2NDQKLS0t LSBhL2NsaWVudC9ndGsyL2lidXNpbWNvbnRleHQuYwotKysrIGIvY2xpZW50L2d0azIvaWJ1c2lt Y29udGV4dC5jCi1AQCAtMiw3ICsyLDggQEAKLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8q IGlidXMgLSBUaGUgSW5wdXQgQnVzCi0gICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUGVuZyBI dWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDA4LTIw MTMgUmVkIEhhdCwgSW5jLgotKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IFRha2FvIEZ1aml3 YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAwOC0y MDE3IFJlZCBIYXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAtMjQ3LDYgKzI0OCwz OSBAQCBfZm9jdXNfb3V0X2NiIChHdGtXaWRnZXQgICAgICp3aWRnZXQsCi0gICAgIHJldHVybiBG QUxTRTsKLSB9Ci0gCi0rc3RhdGljIGdib29sZWFuCi0raWJ1c19pbV9jb250ZXh0X2NvbW1pdF9l dmVudCAoSUJ1c0lNQ29udGV4dCAqaWJ1c2ltY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHZGtFdmVudEtleSAgICpldmVudCkKLSt7Ci0rICAgIGludCBpOwotKyAgICBH ZGtNb2RpZmllclR5cGUgbm9fdGV4dF9pbnB1dF9tYXNrOwotKyAgICBndW5pY2hhciBjaDsKLSsK LSsgICAgaWYgKGV2ZW50LT50eXBlID09IEdES19LRVlfUkVMRUFTRSkKLSsgICAgICAgIHJldHVy biBGQUxTRTsKLSsgICAgLyogSWdub3JlIG1vZGlmaWVyIGtleSBwcmVzc2VzICovCi0rICAgIGZv ciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKElCVVNfQ09NUE9TRV9JR05PUkVfS0VZTElTVCk7 IGkrKykKLSsgICAgICAgIGlmIChldmVudC0+a2V5dmFsID09IElCVVNfQ09NUE9TRV9JR05PUkVf S0VZTElTVFtpXSkKLSsgICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0rICAgIG5vX3RleHRfaW5w dXRfbWFzayA9IGdka19rZXltYXBfZ2V0X21vZGlmaWVyX21hc2sgKAotKyAgICAgICAgICAgIGdk a19rZXltYXBfZ2V0X2Zvcl9kaXNwbGF5IChnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCAoKSksCi0r ICAgICAgICAgICAgR0RLX01PRElGSUVSX0lOVEVOVF9OT19URVhUX0lOUFVUKTsKLSsgICAgaWYg KGV2ZW50LT5zdGF0ZSAmIG5vX3RleHRfaW5wdXRfbWFzayB8fAotKyAgICAgICAgZXZlbnQtPmtl eXZhbCA9PSBHREtfS0VZX1JldHVybiB8fAotKyAgICAgICAgZXZlbnQtPmtleXZhbCA9PSBHREtf S0VZX0lTT19FbnRlciB8fAotKyAgICAgICAgZXZlbnQtPmtleXZhbCA9PSBHREtfS0VZX0tQX0Vu dGVyKSB7Ci0rICAgICAgICByZXR1cm4gRkFMU0U7Ci0rICAgIH0KLSsgICAgY2ggPSBpYnVzX2tl eXZhbF90b191bmljb2RlIChldmVudC0+a2V5dmFsKTsKLSsgICAgaWYgKGNoICE9IDAgJiYgIWdf dW5pY2hhcl9pc2NudHJsIChjaCkpIHsKLSsgICAgICAgIElCdXNUZXh0ICp0ZXh0ID0gaWJ1c190 ZXh0X25ld19mcm9tX3VuaWNoYXIgKGNoKTsKLSsgICAgICAgIGdfc2lnbmFsX2VtaXQgKGlidXNp bWNvbnRleHQsIF9zaWduYWxfY29tbWl0X2lkLCAwLCB0ZXh0LT50ZXh0KTsKLSsgICAgICAgIGdf b2JqZWN0X3VucmVmICh0ZXh0KTsKLSsgICAgICAgIHJldHVybiBUUlVFOwotKyAgICB9Ci0rICAg cmV0dXJuIEZBTFNFOwotK30KLSsKLSBzdGF0aWMgdm9pZAotIF9wcm9jZXNzX2tleV9ldmVudF9k b25lIChHT2JqZWN0ICAgICAgKm9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR0Fz eW5jUmVzdWx0ICpyZXMsCi1AQCAtNzk3LDggKzgzMSwxMSBAQCBpYnVzX2ltX2NvbnRleHRfZmls dGVyX2tleXByZXNzIChHdGtJTUNvbnRleHQgKmNvbnRleHQsCi0gICAgIGlmIChldmVudC0+c3Rh dGUgJiBJQlVTX0hBTkRMRURfTUFTSykKLSAgICAgICAgIHJldHVybiBUUlVFOwotIAotKyAgICAv KiBEbyBub3QgY2FsbCBndGtfaW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MoKSBiZWNhdXNlCi0r ICAgICAqIGd0a19pbV9jb250ZXh0X3NpbXBsZV9maWx0ZXJfa2V5cHJlc3MoKSBiaW5kcyBDdHJs LVNoaWZ0LXUKLSsgICAgICovCi0gICAgIGlmIChldmVudC0+c3RhdGUgJiBJQlVTX0lHTk9SRURf TUFTSykKLS0gICAgICAgIHJldHVybiBndGtfaW1fY29udGV4dF9maWx0ZXJfa2V5cHJlc3MgKGli dXNpbWNvbnRleHQtPnNsYXZlLCBldmVudCk7Ci0rICAgICAgICByZXR1cm4gaWJ1c19pbV9jb250 ZXh0X2NvbW1pdF9ldmVudCAoaWJ1c2ltY29udGV4dCwgZXZlbnQpOwotIAotICAgICAvKiBYWFgg aXQgaXMgYSB3b3JrYXJvdW5kIGZvciBzb21lIGFwcGxpY2F0aW9ucyBkbyBub3Qgc2V0IGNsaWVu dAotICAgICAgKiB3aW5kb3cuICovCi1kaWZmIC0tZ2l0IGEvc3JjL2lidXNlbmdpbmVzaW1wbGUu YyBiL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMKLWluZGV4IGNkZGQ5MzJjLi42Mzc4NTIyMyAxMDA2 NDQKLS0tLSBhL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMKLSsrKyBiL3NyYy9pYnVzZW5naW5lc2lt cGxlLmMKLUBAIC04MSwyNSArODEsNiBAQCBjb25zdCBJQnVzQ29tcG9zZVRhYmxlQ29tcGFjdCBp YnVzX2NvbXBvc2VfdGFibGVfY29tcGFjdCA9IHsKLSAKLSBzdGF0aWMgR1NMaXN0ICpnbG9iYWxf dGFibGVzOwotIAotLXN0YXRpYyBjb25zdCBndWludDE2IGlidXNfY29tcG9zZV9pZ25vcmVbXSA9 IHsKLS0gICAgSUJVU19LRVlfU2hpZnRfTCwKLS0gICAgSUJVU19LRVlfU2hpZnRfUiwKLS0gICAg SUJVU19LRVlfQ29udHJvbF9MLAotLSAgICBJQlVTX0tFWV9Db250cm9sX1IsCi0tICAgIElCVVNf S0VZX0NhcHNfTG9jaywKLS0gICAgSUJVU19LRVlfU2hpZnRfTG9jaywKLS0gICAgSUJVU19LRVlf TWV0YV9MLAotLSAgICBJQlVTX0tFWV9NZXRhX1IsCi0tICAgIElCVVNfS0VZX0FsdF9MLAotLSAg ICBJQlVTX0tFWV9BbHRfUiwKLS0gICAgSUJVU19LRVlfU3VwZXJfTCwKLS0gICAgSUJVU19LRVlf U3VwZXJfUiwKLS0gICAgSUJVU19LRVlfSHlwZXJfTCwKLS0gICAgSUJVU19LRVlfSHlwZXJfUiwK LS0gICAgSUJVU19LRVlfTW9kZV9zd2l0Y2gsCi0tICAgIElCVVNfS0VZX0lTT19MZXZlbDNfU2hp ZnQKLS19OwotLQotIC8qIGZ1bmN0aW9ucyBwcm90b3R5cGUgKi8KLSBzdGF0aWMgdm9pZCAgICAg aWJ1c19lbmdpbmVfc2ltcGxlX2Rlc3Ryb3kgICAgICAoSUJ1c0VuZ2luZVNpbXBsZSAgICpzaW1w bGUpOwotIHN0YXRpYyB2b2lkICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfcmVzZXQgICAgICAgIChJ QnVzRW5naW5lICAgICAgICAgKmVuZ2luZSk7Ci1AQCAtMTA0NSw4ICsxMDI2LDggQEAgaWJ1c19l bmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2ZW50IChJQnVzRW5naW5lICplbmdpbmUsCi0gICAg IH0KLSAKLSAgICAgLyogSWdub3JlIG1vZGlmaWVyIGtleSBwcmVzc2VzICovCi0tICAgIGZvciAo aSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKGlidXNfY29tcG9zZV9pZ25vcmUpOyBpKyspCi0tICAg ICAgICBpZiAoa2V5dmFsID09IGlidXNfY29tcG9zZV9pZ25vcmVbaV0pCi0rICAgIGZvciAoaSA9 IDA7IGkgPCBHX05fRUxFTUVOVFMgKElCVVNfQ09NUE9TRV9JR05PUkVfS0VZTElTVCk7IGkrKykK LSsgICAgICAgIGlmIChrZXl2YWwgPT0gSUJVU19DT01QT1NFX0lHTk9SRV9LRVlMSVNUW2ldKQot ICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAKLSAgICAgaWYgKChwcml2LT5pbl9oZXhfc2Vx dWVuY2UgfHwgcHJpdi0+aW5fZW1vamlfc2VxdWVuY2UpCi1kaWZmIC0tZ2l0IGEvc3JjL2lidXNl bmdpbmVzaW1wbGUuaCBiL3NyYy9pYnVzZW5naW5lc2ltcGxlLmgKLWluZGV4IDg3MTI2NTljLi5h NWVmMzRmYiAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzZW5naW5lc2ltcGxlLmgKLSsrKyBiL3NyYy9p YnVzZW5naW5lc2ltcGxlLmgKLUBAIC0yLDggKzIsOCBAQAotIC8qIHZpbTpzZXQgZXQgc3RzPTQ6 ICovCi0gLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAx NSBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KLS0gKiBDb3B5cmlnaHQgKEMp IDIwMTUtMjAxNiBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLS0g KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNiBSZWQgSGF0LCBJbmMuCi0rICogQ29weXJpZ2h0IChD KSAyMDE1LTIwMTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0r ICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgUmVkIEhhdCwgSW5jLgotICAqCi0gICogVGhpcyBs aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMKLUBAIC00MCw2ICs0MCw3IEBACi0gICovCi0gCi0gI2luY2x1ZGUgImlidXNlbmdpbmUu aCIKLSsjaW5jbHVkZSAiaWJ1c2tleXN5bXMuaCIKLSAKLSBHX0JFR0lOX0RFQ0xTCi0gCi1AQCAt OTQsNiArOTUsMjUgQEAgc3RydWN0IF9JQnVzRW5naW5lU2ltcGxlQ2xhc3MgewotICAgICBncG9p bnRlciBwZHVtbXlbOF07Ci0gfTsKLSAKLStzdGF0aWMgY29uc3QgZ3VpbnQxNiBJQlVTX0NPTVBP U0VfSUdOT1JFX0tFWUxJU1RbXSA9IHsKLSsgICAgSUJVU19LRVlfU2hpZnRfTCwKLSsgICAgSUJV U19LRVlfU2hpZnRfUiwKLSsgICAgSUJVU19LRVlfQ29udHJvbF9MLAotKyAgICBJQlVTX0tFWV9D b250cm9sX1IsCi0rICAgIElCVVNfS0VZX0NhcHNfTG9jaywKLSsgICAgSUJVU19LRVlfU2hpZnRf TG9jaywKLSsgICAgSUJVU19LRVlfTWV0YV9MLAotKyAgICBJQlVTX0tFWV9NZXRhX1IsCi0rICAg IElCVVNfS0VZX0FsdF9MLAotKyAgICBJQlVTX0tFWV9BbHRfUiwKLSsgICAgSUJVU19LRVlfU3Vw ZXJfTCwKLSsgICAgSUJVU19LRVlfU3VwZXJfUiwKLSsgICAgSUJVU19LRVlfSHlwZXJfTCwKLSsg ICAgSUJVU19LRVlfSHlwZXJfUiwKLSsgICAgSUJVU19LRVlfTW9kZV9zd2l0Y2gsCi0rICAgIElC VVNfS0VZX0lTT19MZXZlbDNfU2hpZnQKLSt9OwotKwotIEdUeXBlICAgaWJ1c19lbmdpbmVfc2lt cGxlX2dldF90eXBlICAgICAgICh2b2lkKTsKLSAKLSAvKioKLS0tIAotMi4xMy40Ci0KLUZyb20g ZDc4NGUwNGMzOGVlYjA2OWY5YThkYThiMzA3NDNmNDQ2M2ZhMzRjMyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURh dGU6IFRodSwgNyBTZXAgMjAxNyAxMDo1NzoxNCArMDkwMAotU3ViamVjdDogW1BBVENIIDExLzE0 XSBjbGllbnQvZ3RrMjogRml4IGEgYnVpbGQgZmFpbHVyZSB3aXRoCi0gR0RLX01PRElGSUVSX0lO VEVOVF9OT19URVhUX0lOUFVUCi0KLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lz c3Vlcy8xOTQyCi0KLVJldmlldyBVUkw6IGh0dHBzOi8vY29kZXJldmlldy5hcHBzcG90LmNvbS8z MjczMDAwNDMKLS0tLQotIGNsaWVudC9ndGsyL2lidXNpbWNvbnRleHQuYyB8IDEyICsrKysrKysr KysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9j bGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMgYi9jbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMK LWluZGV4IDNlYTQ2OTUxLi5hODA2MzgyZCAxMDA2NDQKLS0tLSBhL2NsaWVudC9ndGsyL2lidXNp bWNvbnRleHQuYwotKysrIGIvY2xpZW50L2d0azIvaWJ1c2ltY29udGV4dC5jCi1AQCAtMjYyLDkg KzI2MiwyMSBAQCBpYnVzX2ltX2NvbnRleHRfY29tbWl0X2V2ZW50IChJQnVzSU1Db250ZXh0ICpp YnVzaW1jb250ZXh0LAotICAgICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTIChJQlVTX0NP TVBPU0VfSUdOT1JFX0tFWUxJU1QpOyBpKyspCi0gICAgICAgICBpZiAoZXZlbnQtPmtleXZhbCA9 PSBJQlVTX0NPTVBPU0VfSUdOT1JFX0tFWUxJU1RbaV0pCi0gICAgICAgICAgICAgcmV0dXJuIEZB TFNFOwotKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoMywgNCwgMCkKLSAgICAgbm9fdGV4dF9pbnB1 dF9tYXNrID0gZ2RrX2tleW1hcF9nZXRfbW9kaWZpZXJfbWFzayAoCi0gICAgICAgICAgICAgZ2Rr X2tleW1hcF9nZXRfZm9yX2Rpc3BsYXkgKGdka19kaXNwbGF5X2dldF9kZWZhdWx0ICgpKSwKLSAg ICAgICAgICAgICBHREtfTU9ESUZJRVJfSU5URU5UX05PX1RFWFRfSU5QVVQpOwotKyNlbHNlCi0r IyAgaWZuZGVmIEdES19XSU5ET1dJTkdfUVVBUlRaCi0rIyAgICBkZWZpbmUgX0lCVVNfTk9fVEVY VF9JTlBVVF9NT0RfTUFTSyAoR0RLX01PRDFfTUFTSyB8IEdES19DT05UUk9MX01BU0spCi0rIyAg ZWxzZQotKyMgICAgZGVmaW5lIF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0sgKEdES19NT0Qy X01BU0sgfCBHREtfQ09OVFJPTF9NQVNLKQotKyMgIGVuZGlmCi0rCi0rICAgIG5vX3RleHRfaW5w dXRfbWFzayA9IF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0s7Ci0rCi0rIyAgdW5kZWYgX0lC VVNfTk9fVEVYVF9JTlBVVF9NT0RfTUFTSwotKyNlbmRpZgotICAgICBpZiAoZXZlbnQtPnN0YXRl ICYgbm9fdGV4dF9pbnB1dF9tYXNrIHx8Ci0gICAgICAgICBldmVudC0+a2V5dmFsID09IEdES19L RVlfUmV0dXJuIHx8Ci0gICAgICAgICBldmVudC0+a2V5dmFsID09IEdES19LRVlfSVNPX0VudGVy IHx8Ci0tLSAKLTIuMTMuNAotCi1Gcm9tIDA2MzJjYmJiYjU3Mzc0OWJiY2E5NmE0MTZmZGUxNDkw ODEwZTUyZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2Fv LmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDEzIFNlcCAyMDE3IDE4OjE1OjA2ICsw OTAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMTRdIHVpL2d0azM6IEZpeCBQcm9wZXJ0eVBhbmVsIHBv c2l0aW9uIGluIHdvcmthcmVhCi0KLWdka19zY3JlZW5fZ2V0X21vbml0b3Jfd29ya2FyZWEoKSBu byBsb25nZXIgcmV0dXJuIHRoZSBjb3JyZWN0IGFyZWEKLWZyb20gIl9ORVRfV09SS0FSRUEiIGF0 b20gaW4gR1RLIDMuMjIgYW5kIG5vdyB1c2UKLWdka19tb25pdG9yX2dldF93b3JrYXJlYSgpIGlu c3RlYWQuCi0KLVVzZSBnZGtfc2VhdF9ncmFiKCkgaW5zdGVhZCBvZiBkZXByZWNhdGVkIGdka19k ZXZpY2VfZ3JhYigpLgotCi1Vc2UgZ3RrX21lbnVfcG9wdXBfYXRfcmVjdCgpIGluc3RlYWQgb2Yg ZGVwcmVjYXRlZCBndGtfbWVudV9wb3B1cCgpIGFuZAotZ2VuZXJhdGUgYSBuZXcgZm9yZWlnbiBH ZGtXaW5kb3cgd2l0aCBtb3VzZSBjdXJzb3IgZm9yIHRoZSBRdCBXaW5kb3cuCi0KLUFsc28gZml4 ZWQgc29tZSBkZXByZWNhdGVkIEFQSXMuCi0KLVI9U2hhd24uUC5IdWFuZ0BnbWFpbC5jb20KLQot UmV2aWV3IFVSTDogaHR0cHM6Ly9jb2RlcmV2aWV3LmFwcHNwb3QuY29tLzMzMDE5MDA0MwotLS0t Ci0gdWkvZ3RrMy9jYW5kaWRhdGVwYW5lbC52YWxhICAgIHwgIDQwICsrKysrKysrLS0tLS0tLQot IHVpL2d0azMvZW1vamllci52YWxhICAgICAgICAgICB8ICAyNCArKysrKystLS0KLSB1aS9ndGsz L2hhbmRsZS52YWxhICAgICAgICAgICAgfCAgIDcgKy0tCi0gdWkvZ3RrMy9pbmRpY2F0b3IudmFs YSAgICAgICAgIHwgIDY4ICsrKysrKysrKysrKysrKysrKysrKysrKy0tCi0gdWkvZ3RrMy9rZXli aW5kaW5nbWFuYWdlci52YWxhIHwgICAyICstCi0gdWkvZ3RrMy9wYW5lbC52YWxhICAgICAgICAg ICAgIHwgMTA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCi0gdWkv Z3RrMy9wcm9wZXJ0eXBhbmVsLnZhbGEgICAgIHwgIDIxICsrKysrKystCi0gdWkvZ3RrMy9zd2l0 Y2hlci52YWxhICAgICAgICAgIHwgIDg0ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t Ci0gOCBmaWxlcyBjaGFuZ2VkLCAyNzAgaW5zZXJ0aW9ucygrKSwgODQgZGVsZXRpb25zKC0pCi0K LWRpZmYgLS1naXQgYS91aS9ndGszL2NhbmRpZGF0ZXBhbmVsLnZhbGEgYi91aS9ndGszL2NhbmRp ZGF0ZXBhbmVsLnZhbGEKLWluZGV4IDBlNWUzYmMyLi5lYzJkM2RiNCAxMDA2NDQKLS0tLSBhL3Vp L2d0azMvY2FuZGlkYXRlcGFuZWwudmFsYQotKysrIGIvdWkvZ3RrMy9jYW5kaWRhdGVwYW5lbC52 YWxhCi1AQCAtMyw3ICszLDcgQEAKLSAgKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotICAqCi0gICog Q29weXJpZ2h0KGMpIDIwMTEtMjAxNSBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNv bT4KLS0gKiBDb3B5cmlnaHQoYykgMjAxNS0yMDE2IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWpp d2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodChjKSAyMDE1LTIwMTcgVGFrYW8gRnVqaXdh cmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICogbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAg LTI5Miw2ICsyOTIsMjYgQEAgcHVibGljIGNsYXNzIENhbmRpZGF0ZVBhbmVsIDogR3RrLkJveHsK LSAgICAgICAgICAgICBhZGp1c3Rfd2luZG93X3Bvc2l0aW9uX3ZlcnRpY2FsKCk7Ci0gICAgIH0K LSAKLSsgICAgcHJpdmF0ZSBHZGsuUmVjdGFuZ2xlIGdldF9tb25pdG9yX2dlb21ldHJ5KCkgewot KyAgICAgICAgR2RrLlJlY3RhbmdsZSBtb25pdG9yX2FyZWEgPSB7IDAsIH07Ci0rCi0rICAgICAg ICAvLyBVc2UgZ2V0X21vbml0b3JfZ2VvbWV0cnkoKSBpbnN0ZWFkIG9mIGdldF9tb25pdG9yX2Fy ZWEoKS4KLSsgICAgICAgIC8vIGdldF9tb25pdG9yX2FyZWEoKSBleGNsdWRlcyBkb2NrcywgYnV0 IHRoZSBsb29rdXAgd2luZG93IHNob3VsZCBiZQotKyAgICAgICAgLy8gc2hvd24gb3ZlciB0aGVt LgotKyNpZiBWQUxBXzBfMzQKLSsgICAgICAgIEdkay5Nb25pdG9yIG1vbml0b3IgPSBHZGsuRGlz cGxheS5nZXRfZGVmYXVsdCgpLmdldF9tb25pdG9yX2F0X3BvaW50KAotKyAgICAgICAgICAgICAg ICBtX2N1cnNvcl9sb2NhdGlvbi54LAotKyAgICAgICAgICAgICAgICBtX2N1cnNvcl9sb2NhdGlv bi55KTsKLSsgICAgICAgIG1vbml0b3JfYXJlYSA9IG1vbml0b3IuZ2V0X2dlb21ldHJ5KCk7Ci0r I2Vsc2UKLSsgICAgICAgIEdkay5TY3JlZW4gc2NyZWVuID0gR2RrLlNjcmVlbi5nZXRfZGVmYXVs dCgpOwotKyAgICAgICAgaW50IG1vbml0b3JfbnVtID0gc2NyZWVuLmdldF9tb25pdG9yX2F0X3Bv aW50KG1fY3Vyc29yX2xvY2F0aW9uLngsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueSk7Ci0rICAgICAgICBz Y3JlZW4uZ2V0X21vbml0b3JfZ2VvbWV0cnkobW9uaXRvcl9udW0sIG91dCBtb25pdG9yX2FyZWEp OwotKyNlbmRpZgotKyAgICAgICAgcmV0dXJuIG1vbml0b3JfYXJlYTsKLSsgICAgfQotKwotICAg ICBwcml2YXRlIHZvaWQgYWRqdXN0X3dpbmRvd19wb3NpdGlvbl9ob3Jpem9udGFsKCkgewotICAg ICAgICAgR2RrLlBvaW50IGN1cnNvcl9yaWdodF9ib3R0b20gPSB7Ci0gICAgICAgICAgICAgICAg IG1fY3Vyc29yX2xvY2F0aW9uLnggKyBtX2N1cnNvcl9sb2NhdGlvbi53aWR0aCwKLUBAIC0zMDUs MTQgKzMyNSw3IEBAIHB1YmxpYyBjbGFzcyBDYW5kaWRhdGVQYW5lbCA6IEd0ay5Cb3h7Ci0gICAg ICAgICAgICAgY3Vyc29yX3JpZ2h0X2JvdHRvbS55ICsgYWxsb2NhdGlvbi5oZWlnaHQKLSAgICAg ICAgIH07Ci0gCi0tICAgICAgICBHZGsuU2NyZWVuIHNjcmVlbiA9IEdkay5TY3JlZW4uZ2V0X2Rl ZmF1bHQoKTsKLS0gICAgICAgIGludCBtb25pdG9yX251bSA9IHNjcmVlbi5nZXRfbW9uaXRvcl9h dF9wb2ludChtX2N1cnNvcl9sb2NhdGlvbi54LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY3Vyc29yX2xvY2F0aW9uLnkpOwotLSAgICAg ICAgLy8gVXNlIGdldF9tb25pdG9yX2dlb21ldHJ5KCkgaW5zdGVhZCBvZiBnZXRfbW9uaXRvcl9h cmVhKCkuCi0tICAgICAgICAvLyBnZXRfbW9uaXRvcl9hcmVhKCkgZXhjbHVkZXMgZG9ja3MsIGJ1 dCB0aGUgbG9va3VwIHdpbmRvdyBzaG91bGQgYmUKLS0gICAgICAgIC8vIHNob3duIG92ZXIgdGhl bS4KLS0gICAgICAgIEdkay5SZWN0YW5nbGUgbW9uaXRvcl9hcmVhOwotLSAgICAgICAgc2NyZWVu LmdldF9tb25pdG9yX2dlb21ldHJ5KG1vbml0b3JfbnVtLCBvdXQgbW9uaXRvcl9hcmVhKTsKLSsg ICAgICAgIEdkay5SZWN0YW5nbGUgbW9uaXRvcl9hcmVhID0gZ2V0X21vbml0b3JfZ2VvbWV0cnko KTsKLSAgICAgICAgIGludCBtb25pdG9yX3JpZ2h0ID0gbW9uaXRvcl9hcmVhLnggKyBtb25pdG9y X2FyZWEud2lkdGg7Ci0gICAgICAgICBpbnQgbW9uaXRvcl9ib3R0b20gPSBtb25pdG9yX2FyZWEu eSArIG1vbml0b3JfYXJlYS5oZWlnaHQ7Ci0gCi1AQCAtMzU4LDE0ICszNzEsNyBAQCBwdWJsaWMg Y2xhc3MgQ2FuZGlkYXRlUGFuZWwgOiBHdGsuQm94ewotICAgICAgICAgICAgIG1fY3Vyc29yX2xv Y2F0aW9uLnkgKyBhbGxvY2F0aW9uLmhlaWdodAotICAgICAgICAgfTsKLSAKLS0gICAgICAgIEdk ay5TY3JlZW4gc2NyZWVuID0gR2RrLlNjcmVlbi5nZXRfZGVmYXVsdCgpOwotLSAgICAgICAgaW50 IG1vbml0b3JfbnVtID0gc2NyZWVuLmdldF9tb25pdG9yX2F0X3BvaW50KG1fY3Vyc29yX2xvY2F0 aW9uLngsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueSk7Ci0tICAgICAgICAvLyBVc2UgZ2V0X21vbml0b3Jf Z2VvbWV0cnkoKSBpbnN0ZWFkIG9mIGdldF9tb25pdG9yX2FyZWEoKS4KLS0gICAgICAgIC8vIGdl dF9tb25pdG9yX2FyZWEoKSBleGNsdWRlcyBkb2NrcywgYnV0IHRoZSBsb29rdXAgd2luZG93IHNo b3VsZCBiZQotLSAgICAgICAgLy8gc2hvd24gb3ZlciB0aGVtLgotLSAgICAgICAgR2RrLlJlY3Rh bmdsZSBtb25pdG9yX2FyZWE7Ci0tICAgICAgICBzY3JlZW4uZ2V0X21vbml0b3JfZ2VvbWV0cnko bW9uaXRvcl9udW0sIG91dCBtb25pdG9yX2FyZWEpOwotKyAgICAgICAgR2RrLlJlY3RhbmdsZSBt b25pdG9yX2FyZWEgPSBnZXRfbW9uaXRvcl9nZW9tZXRyeSgpOwotICAgICAgICAgaW50IG1vbml0 b3JfcmlnaHQgPSBtb25pdG9yX2FyZWEueCArIG1vbml0b3JfYXJlYS53aWR0aDsKLSAgICAgICAg IGludCBtb25pdG9yX2JvdHRvbSA9IG1vbml0b3JfYXJlYS55ICsgbW9uaXRvcl9hcmVhLmhlaWdo dDsKLSAKLWRpZmYgLS1naXQgYS91aS9ndGszL2Vtb2ppZXIudmFsYSBiL3VpL2d0azMvZW1vamll ci52YWxhCi1pbmRleCAzNmFiNGJhYi4uOWNkOTgxNDAgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL2Vt b2ppZXIudmFsYQotKysrIGIvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKLUBAIC01NzUsNyArNTc1LDcg QEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAg aWYgKGxhbmcgPT0gImVuIikgewotICAgICAgICAgICAgIGJvb2wgaGFzX3ZhcmlhbnQgPSBmYWxz ZTsKLSAgICAgICAgICAgICBmb3JlYWNoICh1bmljaGFyIGNoIGluIEVNT0pJX1ZBUklBTlRfTElT VCkgewotLSAgICAgICAgICAgICAgICBpZiAoZW1vamkuY2hyKC0xLCBjaCkgIT0gbnVsbCkgewot KyAgICAgICAgICAgICAgICBpZiAoZW1vamkuaW5kZXhfb2ZfY2hhcihjaCkgPj0gMCkgewotICAg ICAgICAgICAgICAgICAgICAgaGFzX3ZhcmlhbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgIH0KLUBAIC03ODIsMTUgKzc4MiwxNyBAQCBjbGFz cyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgIHByaXZhdGUgYm9v bCBjaGVja191bmljb2RlX3BvaW50KCkgewotICAgICAgICAgc3RyaW5nIGFubm90YXRpb24gPSBt X2VudHJ5LmdldF90ZXh0KCk7Ci0gICAgICAgICBtX3VuaWNvZGVfcG9pbnQgPSBudWxsOwotLSAg ICAgICAgdmFyIGJ1ZmYgPSBuZXcgR0xpYi5TdHJpbmdCdWlsZGVyKCk7Ci0rICAgICAgICAvLyBB ZGQgIjB4IiBiZWNhdXNlIHVpbnQ2NC5hc2NpaV9zdHJ0b3VsbCgpIGlzIG5vdCBhY2Nlc3NpYmxl Ci0rICAgICAgICAvLyBhbmQgbmVlZCB0byB1c2UgdWludDY0LnBhcnNlKCkKLSsgICAgICAgIHZh ciBidWZmID0gbmV3IEdMaWIuU3RyaW5nQnVpbGRlcigiMHgiKTsKLSAgICAgICAgIHZhciByZXR2 YWwgPSBuZXcgR0xpYi5TdHJpbmdCdWlsZGVyKCk7Ci0gICAgICAgICBmb3IgKGludCBpID0gMDsg aSA8IGFubm90YXRpb24uY2hhcl9jb3VudCgpOyBpKyspIHsKLSAgICAgICAgICAgICB1bmljaGFy IGNoID0gYW5ub3RhdGlvbi5nZXRfY2hhcihpKTsKLSAgICAgICAgICAgICBpZiAoY2ggPT0gMCkK LSAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgIGlmIChjaC5pc3Nw YWNlKCkpIHsKLS0gICAgICAgICAgICAgICAgdW5pY2hhciBjb2RlID0gKHVuaWNoYXIpYnVmZi5z dHIudG9fdWxvbmcobnVsbCwgMTYpOwotLSAgICAgICAgICAgICAgICBidWZmLmVyYXNlKCk7Ci0r ICAgICAgICAgICAgICAgIHVuaWNoYXIgY29kZSA9ICh1bmljaGFyKXVpbnQ2NC5wYXJzZShidWZm LnN0cik7Ci0rICAgICAgICAgICAgICAgIGJ1ZmYuYXNzaWduKCIweCIpOwotICAgICAgICAgICAg ICAgICBpZiAoIWNvZGUudmFsaWRhdGUoKSkKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm YWxzZTsKLSAgICAgICAgICAgICAgICAgcmV0dmFsLmFwcGVuZChjb2RlLnRvX3N0cmluZygpKTsK LUBAIC04MDAsNyArODAyLDcgQEAgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25X aW5kb3cgewotICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgYnVm Zi5hcHBlbmRfdW5pY2hhcihjaCk7Ci0gICAgICAgICB9Ci0tICAgICAgICB1bmljaGFyIGNvZGUg PSAodW5pY2hhcilidWZmLnN0ci50b191bG9uZyhudWxsLCAxNik7Ci0rICAgICAgICB1bmljaGFy IGNvZGUgPSAodW5pY2hhcil1aW50NjQucGFyc2UoYnVmZi5zdHIpOwotICAgICAgICAgaWYgKCFj b2RlLnZhbGlkYXRlKCkpCi0gICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgcmV0 dmFsLmFwcGVuZChjb2RlLnRvX3N0cmluZygpKTsKLUBAIC04MzQsNyArODM2LDcgQEAgY2xhc3Mg SUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAgICAgICAg ICAgICAgIG1hdGNoZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg ICAgICAgICAgICAgIGNhc2UgMjoKLS0gICAgICAgICAgICAgICAgICAgIGlmIChrZXkuc3RyKGFu bm90YXRpb24pICE9IG51bGwpCi0rICAgICAgICAgICAgICAgICAgICBpZiAoa2V5LmluZGV4X29m KGFubm90YXRpb24pID49IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IHRy dWU7Ci0gICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgZGVmYXVs dDoKLUBAIC0xNTg2LDEwICsxNTg4LDE2IEBAIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxp Y2F0aW9uV2luZG93IHsKLSAgICAgcHVibGljIHZvaWQgcHJlc2VudF9jZW50cmFsaXplKEdkay5F dmVudCBldmVudCkgewotICAgICAgICAgR3RrLkFsbG9jYXRpb24gYWxsb2NhdGlvbjsKLSAgICAg ICAgIGdldF9hbGxvY2F0aW9uKG91dCBhbGxvY2F0aW9uKTsKLS0gICAgICAgIEdkay5TY3JlZW4g c2NyZWVuID0gR2RrLlNjcmVlbi5nZXRfZGVmYXVsdCgpOwotLSAgICAgICAgaW50IG1vbml0b3Jf bnVtID0gc2NyZWVuLmdldF9tb25pdG9yX2F0X3dpbmRvdyhnZXRfd2luZG93KCkpOwotICAgICAg ICAgR2RrLlJlY3RhbmdsZSBtb25pdG9yX2FyZWE7Ci0rI2lmIFZBTEFfMF8zNAotKyAgICAgICAg R2RrLkRpc3BsYXkgZGlzcGxheSA9IEdkay5EaXNwbGF5LmdldF9kZWZhdWx0KCk7Ci0rICAgICAg ICBHZGsuTW9uaXRvciBtb25pdG9yID0gZGlzcGxheS5nZXRfbW9uaXRvcl9hdF93aW5kb3codGhp cy5nZXRfd2luZG93KCkpOwotKyAgICAgICAgbW9uaXRvcl9hcmVhID0gbW9uaXRvci5nZXRfZ2Vv bWV0cnkoKTsKLSsjZWxzZQotKyAgICAgICAgR2RrLlNjcmVlbiBzY3JlZW4gPSBHZGsuU2NyZWVu LmdldF9kZWZhdWx0KCk7Ci0rICAgICAgICBpbnQgbW9uaXRvcl9udW0gPSBzY3JlZW4uZ2V0X21v bml0b3JfYXRfd2luZG93KHRoaXMuZ2V0X3dpbmRvdygpKTsKLSAgICAgICAgIHNjcmVlbi5nZXRf bW9uaXRvcl9nZW9tZXRyeShtb25pdG9yX251bSwgb3V0IG1vbml0b3JfYXJlYSk7Ci0rI2VuZGlm Ci0gICAgICAgICBpbnQgeCA9IChtb25pdG9yX2FyZWEueCArIG1vbml0b3JfYXJlYS53aWR0aCAt IGFsbG9jYXRpb24ud2lkdGgpLzI7Ci0gICAgICAgICBpbnQgeSA9IChtb25pdG9yX2FyZWEueSAr IG1vbml0b3JfYXJlYS5oZWlnaHQKLSAgICAgICAgICAgICAgICAgIC0gYWxsb2NhdGlvbi5oZWln aHQpLzI7Ci1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9oYW5kbGUudmFsYSBiL3VpL2d0azMvaGFuZGxl LnZhbGEKLWluZGV4IGJlZjVlOGJhLi5mYzkxNjRhMCAxMDA2NDQKLS0tLSBhL3VpL2d0azMvaGFu ZGxlLnZhbGEKLSsrKyBiL3VpL2d0azMvaGFuZGxlLnZhbGEKLUBAIC0zLDcgKzMsNyBAQAotICAq IGlidXMgLSBUaGUgSW5wdXQgQnVzCi0gICoKLSAgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2IFBl bmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSAqIENvcHlyaWdodChjKSAyMDE2 IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdo dChjKSAyMDE2LTIwMTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+ Ci0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCi0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAgLTU5LDcgKzU5LDYgQEAgY2xhc3MgSGFuZGxlIDog R3RrLkV2ZW50Qm94IHsKLSAKLSAgICAgcHVibGljIG92ZXJyaWRlIHZvaWQgcmVhbGl6ZSgpIHsK LSAgICAgICAgIGJhc2UucmVhbGl6ZSgpOwotLSAgICAgICAgLy8gZ2V0X3dpbmRvdygpLnNldF9j dXJzb3IobmV3IEdkay5DdXJzb3IoR2RrLkN1cnNvclR5cGUuRkxFVVIpKTsKLSAgICAgfQotIAot ICAgICBwdWJsaWMgb3ZlcnJpZGUgYm9vbCBidXR0b25fcHJlc3NfZXZlbnQoR2RrLkV2ZW50QnV0 dG9uIGV2ZW50KSB7Ci1AQCAtMTM4LDcgKzEzNyw5IEBAIGNsYXNzIEhhbmRsZSA6IEd0ay5FdmVu dEJveCB7Ci0gICAgICAgICBtX21vdmVfYmVnaW5lZCA9IGZhbHNlOwotICAgICAgICAgbV9wcmVz c19wb3MueCA9IDA7Ci0gICAgICAgICBtX3ByZXNzX3Bvcy55ID0gMDsKLS0gICAgICAgIGdldF93 aW5kb3coKS5zZXRfY3Vyc29yKG5ldyBHZGsuQ3Vyc29yKEdkay5DdXJzb3JUeXBlLkxFRlRfUFRS KSk7Ci0rICAgICAgICBnZXRfd2luZG93KCkuc2V0X2N1cnNvcihuZXcgR2RrLkN1cnNvci5mb3Jf ZGlzcGxheSgKLSsgICAgICAgICAgICAgICAgICAgR2RrLkRpc3BsYXkuZ2V0X2RlZmF1bHQoKSwK LSsgICAgICAgICAgICAgICAgICAgR2RrLkN1cnNvclR5cGUuRkxFVVIpKTsKLSAgICAgICAgIG1v dmVfZW5kKCk7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgfQotZGlmZiAtLWdpdCBhL3Vp L2d0azMvaW5kaWNhdG9yLnZhbGEgYi91aS9ndGszL2luZGljYXRvci52YWxhCi1pbmRleCBkYWM3 MmI0OS4uNGQxMTFhNjQgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL2luZGljYXRvci52YWxhCi0rKysg Yi91aS9ndGszL2luZGljYXRvci52YWxhCi1AQCAtMiw3ICsyLDcgQEAKLSAgKgotICAqIGlidXMg LSBUaGUgSW5wdXQgQnVzCi0gICoKLS0gKiBDb3B5cmlnaHQoYykgMjAxNSBUYWthbyBGdWppd2Fy YSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQoYykgMjAxNS0yMDE3 IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotICAqIENvcHlyaWdo dChjKSAyMDE1IFJlZCBIYXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLUBAIC05Nyw2ICs5Nyw3IEBA IGNsYXNzIEluZGljYXRvciA6IElCdXMuU2VydmljZQotICAgICBwcml2YXRlIGludCBtX2NvbnRl eHRfbWVudV95OwotICAgICBwcml2YXRlIGludCBtX2FjdGl2YXRlX21lbnVfeDsKLSAgICAgcHJp dmF0ZSBpbnQgbV9hY3RpdmF0ZV9tZW51X3k7Ci0rICAgIHByaXZhdGUgR2RrLldpbmRvdyBtX2lu ZGljYXRvcl93aW5kb3c7Ci0gCi0gICAgIHB1YmxpYyBJbmRpY2F0b3Ioc3RyaW5nIGlkLAotICAg ICAgICAgICAgICAgICAgICAgIEdMaWIuREJ1c0Nvbm5lY3Rpb24gY29ubmVjdGlvbiwKLUBAIC0y MDYsNyArMjA3LDggQEAgY2xhc3MgSW5kaWNhdG9yIDogSUJ1cy5TZXJ2aWNlCi0gICAgICAgICBH TGliLlZhcmlhbnQgdmFyX3kgPSBwYXJhbWV0ZXJzLmdldF9jaGlsZF92YWx1ZSgxKTsKLSAgICAg ICAgIG1fY29udGV4dF9tZW51X3ggPSB2YXJfeC5nZXRfaW50MzIoKTsKLSAgICAgICAgIG1fY29u dGV4dF9tZW51X3kgPSB2YXJfeS5nZXRfaW50MzIoKTsKLS0gICAgICAgIGNvbnRleHRfbWVudSgy LCAwKTsKLSsgICAgICAgIEdkay5XaW5kb3cgd2luZG93ID0gcXVlcnlfZ2RrX3dpbmRvdygpOwot KyAgICAgICAgY29udGV4dF9tZW51KG1fY29udGV4dF9tZW51X3gsIG1fY29udGV4dF9tZW51X3ks IHdpbmRvdywgMiwgMCk7Ci0gICAgIH0KLSAKLSAgICAgcHJpdmF0ZSB2b2lkIF9hY3RpdmF0ZV9t ZW51X2NiKEdMaWIuREJ1c0Nvbm5lY3Rpb24gICAgICAgY29ubmVjdGlvbiwKLUBAIC0yMTYsNyAr MjE4LDU3IEBAIGNsYXNzIEluZGljYXRvciA6IElCdXMuU2VydmljZQotICAgICAgICAgR0xpYi5W YXJpYW50IHZhcl95ID0gcGFyYW1ldGVycy5nZXRfY2hpbGRfdmFsdWUoMSk7Ci0gICAgICAgICBt X2FjdGl2YXRlX21lbnVfeCA9IHZhcl94LmdldF9pbnQzMigpOwotICAgICAgICAgbV9hY3RpdmF0 ZV9tZW51X3kgPSB2YXJfeS5nZXRfaW50MzIoKTsKLS0gICAgICAgIGFjdGl2YXRlKCk7Ci0rICAg ICAgICBHZGsuV2luZG93IHdpbmRvdyA9IHF1ZXJ5X2dka193aW5kb3coKTsKLSsgICAgICAgIGFj dGl2YXRlKG1fYWN0aXZhdGVfbWVudV94LCBtX2FjdGl2YXRlX21lbnVfeSwgd2luZG93KTsKLSsg ICAgfQotKwotKyAgICBwcml2YXRlIEdkay5XaW5kb3c/IHF1ZXJ5X2dka193aW5kb3coKSB7Ci0r ICAgICAgICBpZiAobV9pbmRpY2F0b3Jfd2luZG93ICE9IG51bGwpCi0rICAgICAgICAgICAgcmV0 dXJuIG1faW5kaWNhdG9yX3dpbmRvdzsKLSsKLSsgICAgICAgIEdkay5EaXNwbGF5IGRpc3BsYXkg PSBHZGsuRGlzcGxheS5nZXRfZGVmYXVsdCgpOwotKyAgICAgICAgdW5vd25lZCBYLkRpc3BsYXkg eGRpc3BsYXkgPQotKyAgICAgICAgICAgICAgICAoZGlzcGxheSBhcyBHZGsuWDExLkRpc3BsYXkp LmdldF94ZGlzcGxheSgpOwotKyAgICAgICAgWC5XaW5kb3cgY3VycmVudCA9IHhkaXNwbGF5LmRl ZmF1bHRfcm9vdF93aW5kb3coKTsKLSsgICAgICAgIFguV2luZG93IHBhcmVudCA9IDA7Ci0rICAg ICAgICBYLldpbmRvdyBjaGlsZCA9IDA7Ci0rICAgICAgICBpbnQgcm9vdF94LCByb290X3ksIHdp bl94LCB3aW5feTsKLSsgICAgICAgIHVpbnQgbWFzayA9IDA7Ci0rICAgICAgICByb290X3ggPSBy b290X3kgPSB3aW5feCA9IHdpbl95ID0gMDsKLSsgICAgICAgIGJvb2wgcmV0dmFsOwotKyAgICAg ICAgLy8gTmVlZCBYU2V0RXJyb3JIYW5kbGVyIGZvciBCYWRXaW5kb3c/Ci0rICAgICAgICB3aGls ZSAoKHJldHZhbCA9IHhkaXNwbGF5LnF1ZXJ5X3BvaW50ZXIoY3VycmVudCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBwYXJlbnQsIG91dCBjaGlsZCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCByb290X3gsIG91dCByb290X3ks Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgd2luX3gsIG91dCB3 aW5feSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCBtYXNrKSkp IHsKLSsgICAgICAgICAgICBpZiAoY2hpbGQgPT0gMCkKLSsgICAgICAgICAgICAgICAgYnJlYWs7 Ci0rICAgICAgICAgICAgY3VycmVudCA9IGNoaWxkOwotKyAgICAgICAgfQotKyAgICAgICAgaWYg KCFyZXR2YWwpIHsKLSsgICAgICAgICAgICBzdHJpbmcgZm9ybWF0ID0KLSsgICAgICAgICAgICAg ICAgICAgICJYUXVlcnlQb2ludGVyIGlzIGZhaWxlZDogY3VycmVudDogJXggcm9vdDogJXggIiAr Ci0rICAgICAgICAgICAgICAgICAgICAiY2hpbGQ6ICV4ICglZCwgJWQpLCAoJWQsICVkKSwgJXUi OwotKyAgICAgICAgICAgIHN0cmluZyBtZXNzYWdlID0gZm9ybWF0LnByaW50ZigodWludCljdXJy ZW50LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludCl4 ZGlzcGxheS5kZWZhdWx0X3Jvb3Rfd2luZG93KCksCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh1aW50KWNoaWxkLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByb290X3gsIHJvb3RfeSwgd2luX3gsIHdpbl95LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrKTsKLSsgICAgICAgICAg ICB3YXJuaW5nKCJYUXVlcnlQb2ludGVyIGlzIGZhaWxlZDogJXMiLCBtZXNzYWdlKTsKLSsgICAg ICAgICAgICByZXR1cm4gbnVsbDsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmIChjdXJyZW50ID09 IHhkaXNwbGF5LmRlZmF1bHRfcm9vdF93aW5kb3coKSkKLSsgICAgICAgICAgICB3YXJuaW5nKCJU aGUgcXVlcnkgd2luZG93IGlzIHJvb3Qgd2luZG93Iik7Ci0rICAgICAgICBtX2luZGljYXRvcl93 aW5kb3cgPSBHZGsuWDExLldpbmRvdy5sb29rdXBfZm9yX2Rpc3BsYXkoCi0rICAgICAgICAgICAg ICAgIGRpc3BsYXkgYXMgR2RrLlgxMS5EaXNwbGF5LAotKyAgICAgICAgICAgICAgICBjdXJyZW50 KTsKLSsgICAgICAgIGlmIChtX2luZGljYXRvcl93aW5kb3cgIT0gbnVsbCkKLSsgICAgICAgICAg ICByZXR1cm4gbV9pbmRpY2F0b3Jfd2luZG93OwotKyAgICAgICAgbV9pbmRpY2F0b3Jfd2luZG93 ID0gbmV3IEdkay5YMTEuV2luZG93LmZvcmVpZ25fZm9yX2Rpc3BsYXkoCi0rICAgICAgICAgICAg ICAgIGRpc3BsYXkgYXMgR2RrLlgxMS5EaXNwbGF5LAotKyAgICAgICAgICAgICAgICBjdXJyZW50 KTsKLSsgICAgICAgIHJldHVybiBtX2luZGljYXRvcl93aW5kb3c7Ci0gICAgIH0KLSAKLSAgICAg cHJpdmF0ZSBHTGliLlZhcmlhbnQ/IF9nZXRfaWQoR0xpYi5EQnVzQ29ubmVjdGlvbiBjb25uZWN0 aW9uKSB7Ci1AQCAtNDc5LDcgKzUzMSwxMyBAQCBjbGFzcyBJbmRpY2F0b3IgOiBJQnVzLlNlcnZp Y2UKLSAgICAgICAgIHB1c2hfaW4gPSBmYWxzZTsKLSAgICAgfQotIAotLSAgICBwdWJsaWMgc2ln bmFsIHZvaWQgY29udGV4dF9tZW51KHVpbnQgYnV0dG9uLCB1aW50IGFjdGl2YXRlX3RpbWUpOwot LSAgICBwdWJsaWMgc2lnbmFsIHZvaWQgYWN0aXZhdGUoKTsKLSsgICAgcHVibGljIHNpZ25hbCB2 b2lkIGNvbnRleHRfbWVudShpbnQgICAgICAgIHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50ICAgICAgICB5LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdkay5XaW5kb3cgd2luZG93LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQgICAgICAgYnV0dG9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQgICAgICAgYWN0aXZhdGVfdGltZSk7Ci0rICAgIHB1YmxpYyBzaWduYWwgdm9p ZCBhY3RpdmF0ZShpbnQgICAgICAgIHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgICAgICAgIHksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGsuV2lu ZG93IHdpbmRvdyk7Ci0gICAgIHB1YmxpYyBzaWduYWwgdm9pZCByZWdpc3RlcmVkX3N0YXR1c19u b3RpZmllcl9pdGVtKCk7Ci0gfQotZGlmZiAtLWdpdCBhL3VpL2d0azMva2V5YmluZGluZ21hbmFn ZXIudmFsYSBiL3VpL2d0azMva2V5YmluZGluZ21hbmFnZXIudmFsYQotaW5kZXggNDkwMTNiOGQu LmM4YjFlN2Y2IDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9rZXliaW5kaW5nbWFuYWdlci52YWxhCi0r KysgYi91aS9ndGszL2tleWJpbmRpbmdtYW5hZ2VyLnZhbGEKLUBAIC0xOCw3ICsxOCw3IEBAIHB1 YmxpYyBjbGFzcyBLZXliaW5kaW5nTWFuYWdlciA6IEdMaWIuT2JqZWN0IHsKLSAKLSAgICAgcHJp dmF0ZSBzdGF0aWMgS2V5YmluZGluZ01hbmFnZXIgbV9pbnN0YW5jZSA9IG51bGw7Ci0gCi0tICAg IHB1YmxpYyBzdGF0aWMgY29uc3QgdWludCBNT0RJRklFUl9GSUxURVIgPQotKyAgICBwdWJsaWMg Y29uc3QgdWludCBNT0RJRklFUl9GSUxURVIgPQotICAgICAgICAgR2RrLk1vZGlmaWVyVHlwZS5N T0RJRklFUl9NQVNLICYgfigKLSAgICAgICAgIEdkay5Nb2RpZmllclR5cGUuTE9DS19NQVNLIHwg IC8vIENhcHMgTG9jawotICAgICAgICAgLy8gR2RrLk1vZGlmaWVyVHlwZS5NT0QxX01BU0sgfCAg Ly8gQWx0Ci1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9wYW5lbC52YWxhIGIvdWkvZ3RrMy9wYW5lbC52 YWxhCi1pbmRleCBiZjQzY2JmOS4uNjI5ZGFkY2UgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL3BhbmVs LnZhbGEKLSsrKyBiL3VpL2d0azMvcGFuZWwudmFsYQotQEAgLTI2Nyw2ICsyNjcsMjcgQEAgY2xh c3MgUGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7Ci0gICAgICAgICB9KTsKLSAgICAgfQotIAot KyAgICBwcml2YXRlIHZvaWQgcG9wdXBfbWVudV9hdF9hcmVhX3dpbmRvdyhHdGsuTWVudSAgICAg ICAgICAgICAgbWVudSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR2RrLlJlY3RhbmdsZSAgICAgICAgIGFyZWEsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdkay5XaW5kb3c/ICAgICAgICAgICB3aW5kb3csCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5NZW51UG9zaXRpb25GdW5j PyBmdW5jKSB7Ci0rI2lmIFZBTEFfMF8zNAotKyAgICAgICAgR2RrLkdyYXZpdHkgcmVjdF9hbmNo b3IgPSBHZGsuR3Jhdml0eS5TT1VUSF9XRVNUOwotKyAgICAgICAgR2RrLkdyYXZpdHkgbWVudV9h bmNob3IgPSBHZGsuR3Jhdml0eS5OT1JUSF9XRVNUOwotKwotKyAgICAgICAgLy8gR3RrLk1lbnUu cG9wdXAoKSBpcyBub3cgZGVwcmVjYXRlZCBidXQKLSsgICAgICAgIC8vIEd0ay5NZW51LnBvcHVw X2F0X3JlY3QoKSByZXF1aXJlcyBhIEdkay5XaW5kb3cgYW5kCi0rICAgICAgICAvLyBHdGsuTWVu dS5wb3B1cF9hdF9yZWN0KCkgb3V0cHV0cyBhIHdhcm5pbmcgb2YKLSsgICAgICAgIC8vICJubyB0 cmlnZ2VyIGV2ZW50IGZvciBtZW51IHBvcHVwIgotKyAgICAgICAgLy8gZm9yIHRoZSBmb3JlaWdu ZXIgUVQgd2luZG93IHdoaWNoIGlzIGdlbmVyYXRlZCBieQotKyAgICAgICAgLy8gR2RrLlgxMS5X aW5kb3cuZm9yZWlnbl9mb3JfZGlzcGxheS4KLSsgICAgICAgIC8vIGh0dHBzOi8vZ2l0Lmdub21l Lm9yZy9icm93c2UvZ3RrKy90cmVlL2d0ay9ndGttZW51LmM/aD1ndGstMy0yMiNuMjI1MQotKyAg ICAgICAgbWVudS5wb3B1cF9hdF9yZWN0KHdpbmRvdywgYXJlYSwgcmVjdF9hbmNob3IsIG1lbnVf YW5jaG9yLCBudWxsKTsKLSsjZWxzZQotKyAgICAgICAgbWVudS5wb3B1cChudWxsLCBudWxsLCBm dW5jLCAwLCBHdGsuZ2V0X2N1cnJlbnRfZXZlbnRfdGltZSgpKTsKLSsjZW5kaWYKLSsgICAgfQot KwotICNpZiBJTkRJQ0FUT1IKLSAgICAgcHJpdmF0ZSBib29sIGlzX2tkZSgpIHsKLSAgICAgICAg IGlmIChFbnZpcm9ubWVudC5nZXRfdmFyaWFibGUoIlhER19DVVJSRU5UX0RFU0tUT1AiKSA9PSAi S0RFIikKLUBAIC0yNzYsNiArMjk3LDE5IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZp Y2UgewotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICB9Ci0gCi0rICAgIHByaXZhdGUgdm9p ZCBwb3B1cF9tZW51X2F0X3BvaW50ZXJfd2luZG93KEd0ay5NZW51ICAgICAgICAgICAgICBtZW51 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAg ICAgICAgICAgICAgICAgeCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgIHksCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdkay5XaW5kb3c/ICAgICAgICAgICB3aW5kb3csCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5NZW51UG9z aXRpb25GdW5jPyBmdW5jKSB7Ci0rICAgICAgICBpbnQgd2luX3ggPSAwOwotKyAgICAgICAgaW50 IHdpbl95ID0gMDsKLSsgICAgICAgIHdpbmRvdy5nZXRfb3JpZ2luKG91dCB3aW5feCwgb3V0IHdp bl95KTsKLSsgICAgICAgIEdkay5SZWN0YW5nbGUgYXJlYSA9IHsgeCAtIHdpbl94LCB5IC0gd2lu X3ksIDEsIDEgfTsKLSsgICAgICAgIC8vIHdpbmRvdyBpcyBhIGJvdHRvbSB3aWRlIHBhbmVsIGlu c3RlYWQgb2Ygc3RhdHVzIGljb24KLSsgICAgICAgIHBvcHVwX21lbnVfYXRfYXJlYV93aW5kb3co bWVudSwgYXJlYSwgd2luZG93LCBmdW5jKTsKLSsgICAgfQotKwotICAgICBwcml2YXRlIHZvaWQg aW5pdF9pbmRpY2F0b3IoKSB7Ci0gICAgICAgICBtX2ljb25fdHlwZSA9IEljb25UeXBlLklORElD QVRPUjsKLSAgICAgICAgIEdMaWIuQnVzLmdldC5iZWdpbihHTGliLkJ1c1R5cGUuU0VTU0lPTiwg bnVsbCwgKG9iaiwgcmVzKSA9PiB7Ci1AQCAtMjkwLDIxICszMjQsMTcgQEAgY2xhc3MgUGFuZWwg OiBJQnVzLlBhbmVsU2VydmljZSB7Ci0gICAgICAgICAgICAgICAgICAgICBtX2luZGljYXRvci5z ZXRfc3RhdHVzKEluZGljYXRvci5TdGF0dXMuQUNUSVZFKTsKLSAgICAgICAgICAgICAgICAgICAg IHN0YXRlX2NoYW5nZWQoKTsKLSAgICAgICAgICAgICAgICAgfSk7Ci0tICAgICAgICAgICAgICAg IG1faW5kaWNhdG9yLmNvbnRleHRfbWVudS5jb25uZWN0KChiLCB0KSA9PiB7Ci0tICAgICAgICAg ICAgICAgICAgICBHdGsuTWVudSBtZW51ID0gY3JlYXRlX2NvbnRleHRfbWVudSgpOwotLSAgICAg ICAgICAgICAgICAgICAgbWVudS5wb3B1cChudWxsLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBudWxsLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGljYXRv ci5wb3NpdGlvbl9jb250ZXh0X21lbnUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDAsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5nZXRfY3VycmVudF9ldmVu dF90aW1lKCkpOwotKyAgICAgICAgICAgICAgICBtX2luZGljYXRvci5jb250ZXh0X21lbnUuY29u bmVjdCgoeCwgeSwgdywgYiwgdCkgPT4gewotKyAgICAgICAgICAgICAgICAgICAgcG9wdXBfbWVu dV9hdF9wb2ludGVyX3dpbmRvdygKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl X2NvbnRleHRfbWVudSgpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LCB5LCB3LAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGljYXRvci5wb3NpdGlvbl9jb250ZXh0 X21lbnUpOwotICAgICAgICAgICAgICAgICB9KTsKLS0gICAgICAgICAgICAgICAgbV9pbmRpY2F0 b3IuYWN0aXZhdGUuY29ubmVjdCgoKSA9PiB7Ci0tICAgICAgICAgICAgICAgICAgICBHdGsuTWVu dSBtZW51ID0gY3JlYXRlX2FjdGl2YXRlX21lbnUoKTsKLS0gICAgICAgICAgICAgICAgICAgIG1l bnUucG9wdXAobnVsbCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmRpY2F0b3IucG9zaXRpb25fYWN0aXZh dGVfbWVudSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR3RrLmdldF9jdXJyZW50X2V2ZW50X3RpbWUoKSk7Ci0rICAg ICAgICAgICAgICAgIG1faW5kaWNhdG9yLmFjdGl2YXRlLmNvbm5lY3QoKHgsIHksIHcpID0+IHsK LSsgICAgICAgICAgICAgICAgICAgIHBvcHVwX21lbnVfYXRfcG9pbnRlcl93aW5kb3coCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZV9hY3RpdmF0ZV9tZW51KCksCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHgsIHksIHcsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1faW5kaWNhdG9yLnBvc2l0aW9uX2FjdGl2YXRlX21lbnUpOwotICAgICAgICAgICAgICAg ICB9KTsKLSAgICAgICAgICAgICB9IGNhdGNoIChHTGliLklPRXJyb3IgZSkgewotICAgICAgICAg ICAgICAgICB3YXJuaW5nKCJGYWlsZWQgdG8gZ2V0IHRoZSBzZXNzaW9uIGJ1czogJXMiLCBlLm1l c3NhZ2UpOwotQEAgLTMxNywyMSArMzQ3LDQ3IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNl cnZpY2UgewotICAgICAgICAgbV9zdGF0dXNfaWNvbiA9IG5ldyBHdGsuU3RhdHVzSWNvbigpOwot ICAgICAgICAgbV9zdGF0dXNfaWNvbi5zZXRfbmFtZSgiaWJ1cy11aS1ndGsiKTsKLSAgICAgICAg IG1fc3RhdHVzX2ljb24uc2V0X3RpdGxlKF8oIklCdXMgUGFuZWwiKSk7Ci0rCi0rICAgICAgICAv LyBHZGsuV2luZG93LmdldF93aWR0aCgpIGlzIG5lZWRlZCBmb3IgdGhlIG1lbnUgcG9zaXRpb24K LSsgICAgICAgIGlmIChtX3N0YXR1c19pY29uLmdldF9zaXplKCkgPiAwKQotKyAgICAgICAgICAg IGluaXRfc3RhdHVzX2ljb25fbWVudSgpOwotKyAgICAgICAgZWxzZQotKyAgICAgICAgICAgIG1f c3RhdHVzX2ljb24ubm90aWZ5WyJzaXplIl0uY29ubmVjdChpbml0X3N0YXR1c19pY29uX21lbnUp OwotKyAgICB9Ci0rCi0rICAgIHByaXZhdGUgdm9pZCBpbml0X3N0YXR1c19pY29uX21lbnUoKSB7 Ci0rICAgICAgICBHZGsuUmVjdGFuZ2xlIGFyZWEgPSB7IDAsIDAsIDAsIDAgfTsKLSsgICAgICAg IEdkay5XaW5kb3c/IHdpbmRvdyA9IG51bGw7Ci0rICAgICAgICBHdGsuTWVudVBvc2l0aW9uRnVu Yz8gZnVuYyA9IG51bGw7Ci0rI2lmIFZBTEFfMF8zNAotKyAgICAgICAgd2luZG93ID0gR2RrLlgx MS5XaW5kb3cubG9va3VwX2Zvcl9kaXNwbGF5KAotKyAgICAgICAgICAgICAgICBHZGsuRGlzcGxh eS5nZXRfZGVmYXVsdCgpIGFzIEdkay5YMTEuRGlzcGxheSwKLSsgICAgICAgICAgICAgICAgbV9z dGF0dXNfaWNvbi5nZXRfeDExX3dpbmRvd19pZCgpKSBhcyBHZGsuV2luZG93OwotKyAgICAgICAg aWYgKHdpbmRvdyA9PSBudWxsKSB7Ci0rICAgICAgICAgICAgd2FybmluZygiU3RhdHVzSWNvbiBk b2VzIG5vdCBoYXZlIEdka1dpbmRvdyIpOwotKyAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAg IH0KLSsgICAgICAgIEd0ay5PcmllbnRhdGlvbiBvcmllbnQ7Ci0rICAgICAgICBtX3N0YXR1c19p Y29uLmdldF9nZW9tZXRyeShudWxsLCBvdXQgYXJlYSwgb3V0IG9yaWVudCk7Ci0rICAgICAgICBp bnQgd2luX3ggPSAwOwotKyAgICAgICAgaW50IHdpbl95ID0gMDsKLSsgICAgICAgIHdpbmRvdy5n ZXRfb3JpZ2luKG91dCB3aW5feCwgb3V0IHdpbl95KTsKLSsgICAgICAgIC8vIFRoZSAoeCwgeSkg aXMgY29udmVydGVkIGJ5IGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRzKCkKLSsgICAgICAgIC8v IGluIGdka193aW5kb3dfaW1wbF9tb3ZlX3RvX3JlY3QoKQotKyAgICAgICAgYXJlYS54IC09IHdp bl94OwotKyAgICAgICAgYXJlYS55IC09IHdpbl95OwotKyNlbHNlCi0rICAgICAgICBmdW5jID0g bV9zdGF0dXNfaWNvbi5wb3NpdGlvbl9tZW51OwotKyNlbmRpZgotICAgICAgICAgbV9zdGF0dXNf aWNvbi5wb3B1cF9tZW51LmNvbm5lY3QoKGIsIHQpID0+IHsKLS0gICAgICAgICAgICAgICAgR3Rr Lk1lbnUgbWVudSA9IGNyZWF0ZV9jb250ZXh0X21lbnUoKTsKLS0gICAgICAgICAgICAgICAgbWVu dS5wb3B1cChudWxsLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgbV9zdGF0dXNfaWNvbi5wb3NpdGlvbl9tZW51LAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIDAsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgR3Rr LmdldF9jdXJyZW50X2V2ZW50X3RpbWUoKSk7Ci0rICAgICAgICAgICAgICAgIHBvcHVwX21lbnVf YXRfYXJlYV93aW5kb3coCi0rICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlX2NvbnRleHRf bWVudSgpLAotKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEsIHdpbmRvdywgZnVuYyk7Ci0g ICAgICAgICB9KTsKLSAgICAgICAgIG1fc3RhdHVzX2ljb24uYWN0aXZhdGUuY29ubmVjdCgoKSA9 PiB7Ci0tICAgICAgICAgICAgICAgIEd0ay5NZW51IG1lbnUgPSBjcmVhdGVfYWN0aXZhdGVfbWVu dSgpOwotLSAgICAgICAgICAgICAgICBtZW51LnBvcHVwKG51bGwsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgbnVsbCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXR1c19p Y29uLnBvc2l0aW9uX21lbnUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICBHdGsuZ2V0X2N1cnJlbnRfZXZlbnRfdGltZSgpKTsKLSsg ICAgICAgICAgICAgICAgcG9wdXBfbWVudV9hdF9hcmVhX3dpbmRvdygKLSsgICAgICAgICAgICAg ICAgICAgICAgICBjcmVhdGVfYWN0aXZhdGVfbWVudSgpLAotKyAgICAgICAgICAgICAgICAgICAg ICAgIGFyZWEsIHdpbmRvdywgZnVuYyk7Ci0gICAgICAgICB9KTsKLSAgICAgICAgIG1fc3RhdHVz X2ljb24uc2V0X2Zyb21faWNvbl9uYW1lKCJpYnVzLWtleWJvYXJkIik7Ci0gICAgIH0KLWRpZmYg LS1naXQgYS91aS9ndGszL3Byb3BlcnR5cGFuZWwudmFsYSBiL3VpL2d0azMvcHJvcGVydHlwYW5l bC52YWxhCi1pbmRleCBkZDQzNDJlYy4uODU3ZjhlMjAgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL3By b3BlcnR5cGFuZWwudmFsYQotKysrIGIvdWkvZ3RrMy9wcm9wZXJ0eXBhbmVsLnZhbGEKLUBAIC00 LDcgKzQsNyBAQAotICAqCi0gICogQ29weXJpZ2h0KGMpIDIwMTMtMjAxNiBSZWQgSGF0LCBJbmMu Ci0gICogQ29weXJpZ2h0KGMpIDIwMTMtMjAxNSBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdt YWlsLmNvbT4KLS0gKiBDb3B5cmlnaHQoYykgMjAxMy0yMDE2IFRha2FvIEZ1aml3YXJhIDx0YWth by5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodChjKSAyMDEzLTIwMTcgVGFrYW8g RnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0gICoKLSAgKiBUaGlzIGxpYnJh cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICog bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YwotQEAgLTMzMCw4ICszMzAsMTYgQEAgcHVibGljIGNsYXNzIFByb3BlcnR5UGFuZWwgOiBHdGsu Qm94IHsKLSAgICAgICAgIEd0ay5BbGxvY2F0aW9uIGFsbG9jYXRpb247Ci0gICAgICAgICBtX3Rv cGxldmVsLmdldF9hbGxvY2F0aW9uKG91dCBhbGxvY2F0aW9uKTsKLSAKLSsgICAgICAgIEdkay5S ZWN0YW5nbGUgbW9uaXRvcl9hcmVhOwotKyNpZiBWQUxBXzBfMzQKLSsgICAgICAgIC8vIGdka19z Y3JlZW5fZ2V0X21vbml0b3Jfd29ya2FyZWEoKSBubyBsb25nZXIgcmV0dXJuIHRoZSBjb3JyZWN0 Ci0rICAgICAgICAvLyBhcmVhIGZyb20gIl9ORVRfV09SS0FSRUEiIGF0b20gaW4gR1RLIDMuMjIK LSsgICAgICAgIEdkay5Nb25pdG9yIG1vbml0b3IgPSBHZGsuRGlzcGxheS5nZXRfZGVmYXVsdCgp LmdldF9tb25pdG9yKDApOwotKyAgICAgICAgbW9uaXRvcl9hcmVhID0gbW9uaXRvci5nZXRfd29y a2FyZWEoKTsKLSsjZWxzZQotICAgICAgICAgR2RrLlNjcmVlbiBzY3JlZW4gPSBHZGsuU2NyZWVu LmdldF9kZWZhdWx0KCk7Ci0tICAgICAgICBHZGsuUmVjdGFuZ2xlIG1vbml0b3JfYXJlYSA9IHNj cmVlbi5nZXRfbW9uaXRvcl93b3JrYXJlYSgwKTsKLSsgICAgICAgIG1vbml0b3JfYXJlYSA9IHNj cmVlbi5nZXRfbW9uaXRvcl93b3JrYXJlYSgwKTsKLSsjZW5kaWYKLSAgICAgICAgIGludCBtb25p dG9yX3JpZ2h0ID0gbW9uaXRvcl9hcmVhLnggKyBtb25pdG9yX2FyZWEud2lkdGg7Ci0gICAgICAg ICBpbnQgbW9uaXRvcl9ib3R0b20gPSBtb25pdG9yX2FyZWEueSArIG1vbml0b3JfYXJlYS5oZWln aHQ7Ci0gICAgICAgICBpbnQgeCwgeTsKLUBAIC00NzIsOCArNDgwLDE1IEBAIHB1YmxpYyBjbGFz cyBQcm9wTWVudSA6IEd0ay5NZW51LCBJUHJvcFRvb2xJdGVtIHsKLSAgICAgcHVibGljIG5ldyB2 b2lkIHBvcHVwKHVpbnQgICAgICAgYnV0dG9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDMyICAgICBhY3RpdmF0ZV90aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR3Rr LldpZGdldCB3aWRnZXQpIHsKLSsjaWYgVkFMQV8wXzM0Ci0rICAgICAgICBiYXNlLnBvcHVwX2F0 X3dpZGdldCh3aWRnZXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGsuR3Jhdml0 eS5TT1VUSF9XRVNULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrLkdyYXZpdHku Tk9SVEhfV0VTVCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwpOwotKyNlbHNl Ci0gICAgICAgICBtX3BhcmVudF9idXR0b24gPSB3aWRnZXQ7Ci0gICAgICAgICBiYXNlLnBvcHVw KG51bGwsIG51bGwsIG1lbnVfcG9zaXRpb24sIGJ1dHRvbiwgYWN0aXZhdGVfdGltZSk7Ci0rI2Vu ZGlmCi0gICAgIH0KLSAKLSAgICAgcHVibGljIG92ZXJyaWRlIHZvaWQgZGVzdHJveSgpIHsKLUBA IC01MzIsNiArNTQ3LDcgQEAgcHVibGljIGNsYXNzIFByb3BNZW51IDogR3RrLk1lbnUsIElQcm9w VG9vbEl0ZW0gewotICAgICAgICAgfQotICAgICB9Ci0gCi0rI2lmICFWQUxBXzBfMzQKLSAgICAg cHJpdmF0ZSB2b2lkIG1lbnVfcG9zaXRpb24oR3RrLk1lbnUgbWVudSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb3V0IGludCAgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3V0IGludCAgeSwKLUBAIC01ODAsNiArNTk2LDcgQEAgcHVibGljIGNsYXNzIFByb3BN ZW51IDogR3RrLk1lbnUsIElQcm9wVG9vbEl0ZW0gewotIAotICAgICAgICAgcHVzaF9pbiA9IGZh bHNlOwotICAgICB9Ci0rI2VuZGlmCi0gfQotIAotIHB1YmxpYyBjbGFzcyBQcm9wVG9vbEJ1dHRv biA6IEd0ay5Ub29sQnV0dG9uLCBJUHJvcFRvb2xJdGVtIHsKLWRpZmYgLS1naXQgYS91aS9ndGsz L3N3aXRjaGVyLnZhbGEgYi91aS9ndGszL3N3aXRjaGVyLnZhbGEKLWluZGV4IDI2OWE2OGQ0Li4w Y2U3NDJhMSAxMDA2NDQKLS0tLSBhL3VpL2d0azMvc3dpdGNoZXIudmFsYQotKysrIGIvdWkvZ3Rr My9zd2l0Y2hlci52YWxhCi1AQCAtMTU3LDYgKzE1Nyw1NSBAQCBjbGFzcyBTd2l0Y2hlciA6IEd0 ay5XaW5kb3cgewotICAgICAgICAgbV9sYWJlbC5zZXRfdGV4dChtX2J1dHRvbnNbaW5kZXhdLmxv bmduYW1lKTsKLSAgICAgICAgIG1fYnV0dG9uc1tpbmRleF0uZ3JhYl9mb2N1cygpOwotIAotKyAg ICAgICAgLy8gQXZvaWQgcmVncmVzc2lvbnMuCi0rICAgICAgICBpZiAobV9wb3B1cF9kZWxheV90 aW1lID4gMCkgewotKyAgICAgICAgICAgIGdldF9wb3NpdGlvbihvdXQgbV9yb290X3gsIG91dCBt X3Jvb3RfeSk7Ci0rICAgICAgICAgICAgLy8gUHVsbCB0aGUgd2luZG93IGZyb20gdGhlIHNjcmVl biBzbyB0aGF0IHRoZSB3aW5kb3cgZ2V0cwotKyAgICAgICAgICAgIC8vIHRoZSBrZXkgcHJlc3Mg YW5kIHJlbGVhc2UgZXZlbnRzIGJ1dCBtb3VzZSBkb2VzIG5vdCBzZWxlY3QKLSsgICAgICAgICAg ICAvLyBhbiBJTUUgdW5leHBlY3RlZGx5LgotKyAgICAgICAgICAgIG1vdmUoLTEwMDAsIC0xMDAw KTsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIHNob3dfYWxsKCk7Ci0rCi0rICAgICAgICBpZiAo bV9wb3B1cF9kZWxheV90aW1lID4gMCkgewotKyAgICAgICAgICAgIC8vIFJlc3RvcmUgdGhlIHdp bmRvdyBwb3NpdGlvbiBhZnRlciBtX3BvcHVwX2RlbGF5X3RpbWUKLSsgICAgICAgICAgICBtX3Bv cHVwX2RlbGF5X3RpbWVfaWQgPSBHTGliLlRpbWVvdXQuYWRkKG1fcG9wdXBfZGVsYXlfdGltZSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgp ID0+IHsKLSsgICAgICAgICAgICAgICAgcmVzdG9yZV93aW5kb3dfcG9zaXRpb24oInRpbWVvdXQi KTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICAgICAgICAgIH0pOwotKyAg ICAgICAgfQotKwotKyAgICAgICAgR2RrLkRldmljZSBwb2ludGVyOwotKyNpZiBWQUxBXzBfMzQK LSsgICAgICAgIEdkay5TZWF0IHNlYXQgPSBldmVudC5nZXRfc2VhdCgpOwotKyAgICAgICAgaWYg KHNlYXQgPT0gbnVsbCkgewotKyAgICAgICAgICAgIHZhciBkaXNwbGF5ID0gZ2V0X2Rpc3BsYXko KTsKLSsgICAgICAgICAgICBzZWF0ID0gZGlzcGxheS5nZXRfZGVmYXVsdF9zZWF0KCk7Ci0rICAg ICAgICB9Ci0rICAgICAgICAvL2tleWJvYXJkID0gc2VhdC5nZXRfa2V5Ym9hcmQoKTsKLSsgICAg ICAgIHBvaW50ZXIgPSBzZWF0LmdldF9wb2ludGVyKCk7Ci0rCi0rICAgICAgICBHZGsuR3JhYlN0 YXR1cyBzdGF0dXM7Ci0rICAgICAgICAvLyBHcmFiIGFsbCBrZXlib2FyZCBldmVudHMKLSsgICAg ICAgIHN0YXR1cyA9IHNlYXQuZ3JhYihnZXRfd2luZG93KCksCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgR2RrLlNlYXRDYXBhYmlsaXRpZXMuS0VZQk9BUkQsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgdHJ1ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIG51bGwpOwotKyAgICAgICAgaWYgKHN0YXR1cyAhPSBHZGsuR3JhYlN0YXR1cy5TVUNDRVNT KQotKyAgICAgICAgICAgIHdhcm5pbmcoIkdyYWIga2V5Ym9hcmQgZmFpbGVkISBzdGF0dXMgPSAl ZCIsIHN0YXR1cyk7Ci0rICAgICAgICBzdGF0dXMgPSBzZWF0LmdyYWIoZ2V0X3dpbmRvdygpLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkay5TZWF0Q2FwYWJpbGl0aWVzLlBPSU5URVIs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICBudWxsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIG51bGwpOwotKyAgICAgICAgaWYgKHN0YXR1cyAhPSBHZGsu R3JhYlN0YXR1cy5TVUNDRVNTKQotKyAgICAgICAgICAgIHdhcm5pbmcoIkdyYWIgcG9pbnRlciBm YWlsZWQhIHN0YXR1cyA9ICVkIiwgc3RhdHVzKTsKLSsjZWxzZQotICAgICAgICAgR2RrLkRldmlj ZSBkZXZpY2UgPSBldmVudC5nZXRfZGV2aWNlKCk7Ci0gICAgICAgICBpZiAoZGV2aWNlID09IG51 bGwpIHsKLSAgICAgICAgICAgICB2YXIgZGlzcGxheSA9IGdldF9kaXNwbGF5KCk7Ci1AQCAtMTc0 LDcgKzIyMyw2IEBAIGNsYXNzIFN3aXRjaGVyIDogR3RrLldpbmRvdyB7Ci0gICAgICAgICB9Ci0g Ci0gICAgICAgICBHZGsuRGV2aWNlIGtleWJvYXJkOwotLSAgICAgICAgR2RrLkRldmljZSBwb2lu dGVyOwotICAgICAgICAgaWYgKGRldmljZS5nZXRfc291cmNlKCkgPT0gR2RrLklucHV0U291cmNl LktFWUJPQVJEKSB7Ci0gICAgICAgICAgICAga2V5Ym9hcmQgPSBkZXZpY2U7Ci0gICAgICAgICAg ICAgcG9pbnRlciA9IGRldmljZS5nZXRfYXNzb2NpYXRlZF9kZXZpY2UoKTsKLUBAIC0xODMsMjYg KzIzMSw2IEBAIGNsYXNzIFN3aXRjaGVyIDogR3RrLldpbmRvdyB7Ci0gICAgICAgICAgICAga2V5 Ym9hcmQgPSBkZXZpY2UuZ2V0X2Fzc29jaWF0ZWRfZGV2aWNlKCk7Ci0gICAgICAgICB9Ci0gCi0t ICAgICAgICAvLyBBdm9pZCByZWdyZXNzaW9ucy4KLS0gICAgICAgIGlmIChtX3BvcHVwX2RlbGF5 X3RpbWUgPiAwKSB7Ci0tICAgICAgICAgICAgZ2V0X3Bvc2l0aW9uKG91dCBtX3Jvb3RfeCwgb3V0 IG1fcm9vdF95KTsKLS0gICAgICAgICAgICAvLyBQdWxsIHRoZSB3aW5kb3cgZnJvbSB0aGUgc2Ny ZWVuIHNvIHRoYXQgdGhlIHdpbmRvdyBnZXRzCi0tICAgICAgICAgICAgLy8gdGhlIGtleSBwcmVz cyBhbmQgcmVsZWFzZSBldmVudHMgYnV0IG1vdXNlIGRvZXMgbm90IHNlbGVjdAotLSAgICAgICAg ICAgIC8vIGFuIElNRSB1bmV4cGVjdGVkbHkuCi0tICAgICAgICAgICAgbW92ZSgtMTAwMCwgLTEw MDApOwotLSAgICAgICAgfQotLQotLSAgICAgICAgc2hvd19hbGwoKTsKLS0KLS0gICAgICAgIGlm IChtX3BvcHVwX2RlbGF5X3RpbWUgPiAwKSB7Ci0tICAgICAgICAgICAgLy8gUmVzdG9yZSB0aGUg d2luZG93IHBvc2l0aW9uIGFmdGVyIG1fcG9wdXBfZGVsYXlfdGltZQotLSAgICAgICAgICAgIG1f cG9wdXBfZGVsYXlfdGltZV9pZCA9IEdMaWIuVGltZW91dC5hZGQobV9wb3B1cF9kZWxheV90aW1l LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KCkgPT4gewotLSAgICAgICAgICAgICAgICByZXN0b3JlX3dpbmRvd19wb3NpdGlvbigidGltZW91 dCIpOwotLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0tICAgICAgICAgICAgfSk7Ci0t ICAgICAgICB9Ci0tCi0gICAgICAgICBHZGsuR3JhYlN0YXR1cyBzdGF0dXM7Ci0gICAgICAgICAv LyBHcmFiIGFsbCBrZXlib2FyZCBldmVudHMKLSAgICAgICAgIHN0YXR1cyA9IGtleWJvYXJkLmdy YWIoZ2V0X3dpbmRvdygpLAotQEAgLTIyNCw2ICsyNTIsOCBAQCBjbGFzcyBTd2l0Y2hlciA6IEd0 ay5XaW5kb3cgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdkay5DVVJSRU5UX1RJ TUUpOwotICAgICAgICAgaWYgKHN0YXR1cyAhPSBHZGsuR3JhYlN0YXR1cy5TVUNDRVNTKQotICAg ICAgICAgICAgIHdhcm5pbmcoIkdyYWIgcG9pbnRlciBmYWlsZWQhIHN0YXR1cyA9ICVkIiwgc3Rh dHVzKTsKLSsjZW5kaWYKLSsKLSAgICAgICAgIC8vIFByb2JhYmx5IHdlIGNhbiBkZWxldGUgbV9w b3B1cF9kZWxheV90aW1lIGluIDEuNgotICAgICAgICAgcG9pbnRlci5nZXRfcG9zaXRpb25fZG91 YmxlKG51bGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IG1fbW91 c2VfaW5pdF94LAotQEAgLTIzNSw4ICsyNjUsMTIgQEAgY2xhc3MgU3dpdGNoZXIgOiBHdGsuV2lu ZG93IHsKLSAgICAgICAgIG1fbG9vcC5ydW4oKTsKLSAgICAgICAgIG1fbG9vcCA9IG51bGw7Ci0g Ci0rI2lmIFZBTEFfMF8zNAotKyAgICAgICAgc2VhdC51bmdyYWIoKTsKLSsjZWxzZQotICAgICAg ICAga2V5Ym9hcmQudW5ncmFiKEdkay5DVVJSRU5UX1RJTUUpOwotICAgICAgICAgcG9pbnRlci51 bmdyYWIoR2RrLkNVUlJFTlRfVElNRSk7Ci0rI2VuZGlmCi0gCi0gICAgICAgICBoaWRlKCk7Ci0g ICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHN3aXRjaGVyIGlzIGhpZGRlbiBiZWZvcmUgcmV0dXJu aW5nIGZyb20gdGhpcyBmdW5jdGlvbi4KLUBAIC0zMTksMTMgKzM1MywxOSBAQCBjbGFzcyBTd2l0 Y2hlciA6IEd0ay5XaW5kb3cgewotICAgICAgICAgbV9sYWJlbC5zZXRfZWxsaXBzaXplKFBhbmdv LkVsbGlwc2l6ZU1vZGUuRU5EKTsKLSAKLSAgICAgICAgIEdkay5EaXNwbGF5IGRpc3BsYXkgPSBH ZGsuRGlzcGxheS5nZXRfZGVmYXVsdCgpOwotKyAgICAgICAgaW50IHNjcmVlbl93aWR0aCA9IDA7 Ci0rI2lmIFZBTEFfMF8zNAotKyAgICAgICAgR2RrLk1vbml0b3IgbW9uaXRvciA9IGRpc3BsYXku Z2V0X21vbml0b3JfYXRfd2luZG93KHRoaXMuZ2V0X3dpbmRvdygpKTsKLSsgICAgICAgIEdkay5S ZWN0YW5nbGUgYXJlYSA9IG1vbml0b3IuZ2V0X2dlb21ldHJ5KCk7Ci0rICAgICAgICBzY3JlZW5f d2lkdGggPSBhcmVhLndpZHRoOwotKyNlbHNlCi0gICAgICAgICBHZGsuU2NyZWVuIHNjcmVlbiA9 IChkaXNwbGF5ICE9IG51bGwpID8KLSAgICAgICAgICAgICAgICAgZGlzcGxheS5nZXRfZGVmYXVs dF9zY3JlZW4oKSA6IG51bGw7Ci0tICAgICAgICBpbnQgc2NyZWVuX3dpZHRoID0gMDsKLSAKLSAg ICAgICAgIGlmIChzY3JlZW4gIT0gbnVsbCkgewotICAgICAgICAgICAgIHNjcmVlbl93aWR0aCA9 IHNjcmVlbi5nZXRfd2lkdGgoKTsKLSAgICAgICAgIH0KLSsjZW5kaWYKLSAKLSAgICAgICAgIGlm IChzY3JlZW5fd2lkdGggPiAwICYmIG1heF9sYWJlbF93aWR0aCA+IChzY3JlZW5fd2lkdGggLyA0 KSkgewotICAgICAgICAgICAgIG1heF9sYWJlbF93aWR0aCA9IHNjcmVlbl93aWR0aCAvIDQ7Ci0t LSAKLTIuMTMuNAotCi1Gcm9tIDRhNTQxNjM5ZjUwZjA1YmYwMWIxYjg0NzkyYTdmNDAzOWI4OGMy OTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3 YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE1IFNlcCAyMDE3IDE3OjQ5OjU3ICswOTAwCi1T dWJqZWN0OiBbUEFUQ0hdIHVpL2d0azM6IEZpeCB0byBlbmFibGUgbWVudSBidXR0b24gb24gUHJv cGVydHlQYW5lbAotCi1SZXZpZXcgVVJMOiBodHRwczovL2NvZGVyZXZpZXcuYXBwc3BvdC5jb20v MzMwNzIwMDQzCi0tLS0KLSB1aS9ndGszL3Byb3BlcnR5cGFuZWwudmFsYSB8IDE3ICsrKysrKysr KysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdp dCBhL3VpL2d0azMvcHJvcGVydHlwYW5lbC52YWxhIGIvdWkvZ3RrMy9wcm9wZXJ0eXBhbmVsLnZh bGEKLWluZGV4IDg1N2Y4ZTIwLi5mNWQ5Y2ZmNyAxMDA2NDQKLS0tLSBhL3VpL2d0azMvcHJvcGVy dHlwYW5lbC52YWxhCi0rKysgYi91aS9ndGszL3Byb3BlcnR5cGFuZWwudmFsYQotQEAgLTg0LDYg Kzg0LDIzIEBAIHB1YmxpYyBjbGFzcyBQcm9wZXJ0eVBhbmVsIDogR3RrLkJveCB7Ci0gICAgIHB1 YmxpYyB2b2lkIHNldF9wcm9wZXJ0aWVzKElCdXMuUHJvcExpc3QgcHJvcHMpIHsKLSAgICAgICAg IGRlYnVnKCJzZXRfcHJvcGVydGllcygpXG4iKTsKLSAKLSsgICAgICAgIC8vIFdoZW4gY2xpY2sg UHJvcE1lbnVUb29sQnV0dG9uLCB0aGUgZm9jdXMgaXMgY2hhbmdlZCBhbmQKLSsgICAgICAgIC8v IHNldF9wcm9wZXJ0aWVzKCkgaXMgY2FsbGVkIGhlcmUgd2hpbGUgdGhlIG1lbnUgYnV0dG9uIGlz IGFjdGl2ZS4KLSsgICAgICAgIC8vIElnbm9yZSB0aGF0IGNhc2UgaGVyZSBub3QgdG8gcmVtb3Zl IGl0ZW1zLgotKyAgICAgICAgYm9vbCBoYXNfYWN0aXZlID0gZmFsc2U7Ci0rICAgICAgICBmb3Jl YWNoICh2YXIgaXRlbSBpbiBtX2l0ZW1zKSB7Ci0rICAgICAgICAgICAgVHlwZSB0eXBlID0gaXRl bS5nZXRfdHlwZSgpOwotKyAgICAgICAgICAgIGlmICh0eXBlID09IHR5cGVvZihQcm9wTWVudVRv b2xCdXR0b24pIHx8Ci0rICAgICAgICAgICAgICAgIHR5cGUgPT0gdHlwZW9mKFByb3BUb2dnbGVU b29sQnV0dG9uKSkgewotKyAgICAgICAgICAgICAgICBpZiAoKGl0ZW0gYXMgR3RrLlRvZ2dsZVRv b2xCdXR0b24pLmdldF9hY3RpdmUoKSkgewotKyAgICAgICAgICAgICAgICAgICAgaGFzX2FjdGl2 ZSA9IHRydWU7Ci0rICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICAgICAg fQotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICAgIGlmIChoYXNfYWN0aXZlKQot KyAgICAgICAgICAgIHJldHVybjsKLSsKLSAgICAgICAgIGZvcmVhY2ggKHZhciBpdGVtIGluIG1f aXRlbXMpCi0gICAgICAgICAgICAgcmVtb3ZlKChpdGVtIGFzIEd0ay5XaWRnZXQpKTsKLSAgICAg ICAgIG1faXRlbXMgPSB7fTsKLS0tIAotMi4xMy40Ci0KLUZyb20gZjZhMDEwMGZjZDEyM2RjMjg3 YjYwNmQ3MjJiNGQ4M2E3ZDZiMWVhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1 aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjEgU2VwIDIw MTcgMDU6Mjc6MTkgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gdWkvZ3RrMzogVW5zZXQgR0RLX0NP UkVfREVWSUNFX0VWRU5UUwotCi1QbGFzbWEgZGVza29wIHNldHMgdGhpcyB2YXJpYWJsZSBhbmQg cHJldmVudHMgU3VwZXIrc3BhY2UsCi1hbmQgQ3RybC1TaGlmdC1lIHdoZW4gaWJ1cy11aS1ndGsz IHJ1bnMgYWZ0ZXIgdGhlCi1kZXNrdG9wIGlzIGxhdW5jaGVkLgotQWxzbyBmaXhlZCBhIFNFR1Yg aW4gZGlzcGxheS5nZXRfbW9uaXRvcl9hdF93aW5kb3coKQotUmVncmVzc2lvbiBmcm9tIHJoYnoj MjI2NDY1Ci0tLS0KLSB1aS9ndGszL2FwcGxpY2F0aW9uLnZhbGEgfCA2ICsrKysrKwotIHVpL2d0 azMvc3dpdGNoZXIudmFsYSAgICB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3VpL2d0azMvYXBwbGljYXRpb24u dmFsYSBiL3VpL2d0azMvYXBwbGljYXRpb24udmFsYQotaW5kZXggZmE4MDI3MjEuLjc3MGEzMmYy IDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9hcHBsaWNhdGlvbi52YWxhCi0rKysgYi91aS9ndGszL2Fw cGxpY2F0aW9uLnZhbGEKLUBAIC0xMDAsNiArMTAwLDEyIEBAIGNsYXNzIEFwcGxpY2F0aW9uIHsK LSAgICAgfQotIAotICAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihzdHJpbmdbXSBhcmd2KSB7 Ci0rICAgICAgICAvLyBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lk PTEyMjY0NjUjYzIwCi0rICAgICAgICAvLyBJbiAvZXRjL3hkZy9wbGFzbWEtd29ya3NwYWNlL2Vu di9ndGszX3Njcm9sbGluZy5zaAotKyAgICAgICAgLy8gUGxhc21hIGRlc2tvcCBzZXRzIHRoaXMg dmFyaWFibGUgYW5kIHByZXZlbnRzIFN1cGVyK3NwYWNlLAotKyAgICAgICAgLy8gYW5kIEN0cmwt U2hpZnQtZSB3aGVuIGlidXMtdWktZ3RrMyBydW5zIGFmdGVyIHRoZQotKyAgICAgICAgLy8gZGVz a3RvcCBpcyBsYXVuY2hlZC4KLSsgICAgICAgIEdMaWIuRW52aXJvbm1lbnQudW5zZXRfdmFyaWFi bGUoIkdES19DT1JFX0RFVklDRV9FVkVOVFMiKTsKLSAgICAgICAgIC8vIGZvciBHZGsuWDExLmdl dF9kZWZhdWx0X3hkaXNwbGF5KCkKLSAgICAgICAgIEdkay5zZXRfYWxsb3dlZF9iYWNrZW5kcygi eDExIik7Ci0gCi1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9zd2l0Y2hlci52YWxhIGIvdWkvZ3RrMy9z d2l0Y2hlci52YWxhCi1pbmRleCAwY2U3NDJhMS4uMmE0OGMxZjEgMTAwNjQ0Ci0tLS0gYS91aS9n dGszL3N3aXRjaGVyLnZhbGEKLSsrKyBiL3VpL2d0azMvc3dpdGNoZXIudmFsYQotQEAgLTM1NSw3 ICszNTUsOCBAQCBjbGFzcyBTd2l0Y2hlciA6IEd0ay5XaW5kb3cgewotICAgICAgICAgR2RrLkRp c3BsYXkgZGlzcGxheSA9IEdkay5EaXNwbGF5LmdldF9kZWZhdWx0KCk7Ci0gICAgICAgICBpbnQg c2NyZWVuX3dpZHRoID0gMDsKLSAjaWYgVkFMQV8wXzM0Ci0tICAgICAgICBHZGsuTW9uaXRvciBt b25pdG9yID0gZGlzcGxheS5nZXRfbW9uaXRvcl9hdF93aW5kb3codGhpcy5nZXRfd2luZG93KCkp OwotKyAgICAgICAgLy8gZGlzcGxheS5nZXRfbW9uaXRvcl9hdF93aW5kb3coKSBpcyBudWxsIGJl Y2F1c2Ugb2YgdW5yZWFsaXplZCB3aW5kb3cKLSsgICAgICAgIEdkay5Nb25pdG9yIG1vbml0b3Ig PSBkaXNwbGF5LmdldF9wcmltYXJ5X21vbml0b3IoKTsKLSAgICAgICAgIEdkay5SZWN0YW5nbGUg YXJlYSA9IG1vbml0b3IuZ2V0X2dlb21ldHJ5KCk7Ci0gICAgICAgICBzY3JlZW5fd2lkdGggPSBh cmVhLndpZHRoOwotICNlbHNlCi0tLSAKLTIuMTMuNAotCg==