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 upstreamed patches Date: Sun, 31 May 2026 02:07:57 GMT Message-ID: <178019327714.1.14866051828136667805.rpms-ibus-e9877b0a75da@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: e9877b0a75da53b799a87b1adb106e10658c05fb QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiBlOTg3N2IwYTc1ZGE1M2I3OTlhODdiMWFkYjEwNmUxMDY1OGMw NWZiCkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDIyLTA5LTAxVDA3OjQ2OjU0KzA5OjAwClN0YXRzICA6ICswLy00NTYzIGluIDEgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lidXMvYy9lOTg3 N2IwYTc1ZGE1M2I3OTlhODdiMWFkYjEwNmUxMDY1OGMwNWZiP2JyYW5jaD1hdXRvdG9vbAoKTG9n OgpEZWxldGUgdXBzdHJlYW1lZCBwYXRjaGVzCgotLS0KZGlmZiAtLWdpdCBhL2lidXMtSEVBRC5w YXRjaCBiL2lidXMtSEVBRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRj ZmJmZC4uMDAwMDAwMAotLS0gYS9pYnVzLUhFQUQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0 NTYzICswLDAgQEAKLUZyb20gMTc2NDhmMDUyMjkxMDQ4MGI2YzVkZDRmNTM1NmNhMWY2YzE2MGJm NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENhcmxvcyBHYXJuYWNobyA8Y2FybG9z Z0Bnbm9tZS5vcmc+Ci1EYXRlOiBUdWUsIDI5IE1hciAyMDIyIDIyOjQ4OjE5ICswMjAwCi1TdWJq ZWN0OiBbUEFUQ0hdIHNyYzogRml4IHJlZmNvdW50aW5nIGlzc3VlcwotCi1Db21taXQgNWE0NTVi MWVhZCBhdHRlbXB0ZWQgdG8gZml4IGJvdGggR0xpYiB3YXJuaW5ncyBhcm91bmQKLWZsb2F0aW5n IHJlZmVyZW5jZXMgYW5kIG90aGVyIHByZXN1bWVkIHJlZmNvdW50aW5nIGlzc3Vlcy4gSG93ZXZl cgotaXQgbWlzc2VkIDIga2luZHMgb2YgYnVnczoKLQotLSBUaGUgcGxhY2VzIHRoYXQgdGFrZSBh biBJQnVzVGV4dCBjcmVhdGVkIGZyb20gYSBzdGF0aWMgc3RyaW5nCi0gIHdlcmUgbWFkZSB0byBh dm9pZCBmcmVlaW5nIGl0IGFmdGVyd2FyZHMsIGJ1dCB0aGUgc3RhdGljbmVzcyByZWZlcnMKLSAg dG8gdGhlIHN0cmluZyBjb250ZW50LCBub3QgdGhlIG9iamVjdCBpdHNlbGYuCi0tIFRoZSBwbGFj ZXMgdGhhdCBhcmUgZG9jdW1lbnRlZCB0byBlbWl0IHNpZ25hbHMgb24gZmxvYXRpbmcgb2JqZWN0 Ci0gIHJlZmVyZW5jZXMgdXNlZCB0byBkbyB0aGUgZm9sbG93aW5nIGFmdGVyIHNpZ25hbCBlbWlz c2lvbjoKLQotICBpZiAoZ19vYmplY3RfaXNfZmxvYXRpbmcgKG9iamVjdCkpCi0gICAgZ19vYmpl Y3RfdW5yZWYgKG9iamVjdCkKLQotICBBbmQgZGlkIHBvc3NpYmx5IHRyaWdnZXIgR0xpYiB3YXJu aW5ncyB3ZXJlIGNoYW5nZWQgdG86Ci0KLSAgaWYgKGdfb2JqZWN0X2lzX2Zsb2F0aW5nIChvYmpl Y3QpKQotICAgIGdfb2JqZWN0X3NpbmtfcmVmIChvYmplY3QpOwotICBnX29iamVjdF91bnJlZiAo b2JqZWN0KTsKLQotICBXaGljaCBmaXhlcyB0aGUgR0xpYiB3YXJuaW5nIGZvciBmbG9hdGluZyBy ZWZlcmVuY2VzLCBidXQgZG8KLSAgdW5pbnRlbmRlZGx5IHN0ZWFsIG9uZSByZWZlcmVuY2UgYXdh eSBmb3Igbm9uIGZsb2F0aW5nIHJlZmVyZW5jZXMuCi0KLVRoaXMgY29tbWl0IGlzIGVzc2VudGlh bGx5IGEgcmV2ZXJ0IG9mIGNvbW1pdCA1YTQ1NWIxZWFkLCBidXQKLWFkZHJlc3NpbmcgYm90aCB0 aGluZ3MgZGlmZmVyZW50bHk6Ci0KLS0gQWxsIGxhYmVsL3Rvb2x0aXAvc3ltYm9sIElCdXNUZXh0 IHByb3BlcnRpZXMgaW4gSUJ1c1Byb3BlcnR5IGRvCi0gIG5vdyBhbHdheXMgc2luayB0aGUgcmVm ZXJlbmNlIG9mIHRoZSBzdG9yZWQgb2JqZWN0LgotCi0tIEFsbCBwbGFjZXMgZG9jdW1lbnRlZCBh cyBtYXliZSB1c2luZyBvYmplY3RzIHdpdGggYSBmbG9hdGluZyByZWZlcmVuY2UKLSAgb24gc2ln bmFscyBjaGFuZ2VkIHRvIGRvaW5nOgotCi0gIGlmIChnX29iamVjdF9pc19mbG9hdGluZyAob2Jq ZWN0KSkgewotICAgIGdfb2JqZWN0X3JlZl9zaW5rIChvYmplY3QpOwotICAgIGdfb2JqZWN0X3Vu cmVmIChvYmplY3QpOwotICB9Ci0KLSAgU28gdGhlIGZsb2F0aW5nIHJlZmVyZW5jZSBpcyBvd25l ZCBhbmQgdW5yZWZlcmVuY2VkIHdpdGhvdXQgd2FybmluZ3MsCi0gIGJ1dCBhbHJlYWR5IG93bmVk IHJlZmVyZW5jZXMgYXJlIGxlZnQgdW5jaGFuZ2VkLgotCi1UaGlzIGFkZHJlc3NlcyB0aGUgcG9z c2libGUgR0xpYiB3YXJuaW5ncywgZml4ZXMgdGhlIHBvc3NpYmxlIGRvdWJsZQotdW5yZWZzIGhh cHBlbmluZyBvbiBJQnVzVGV4dCB1c2VkIGluIHNpZ25hbHMsIGFuZCBmaXhlcyB0aGUgbWlzc2lu ZwotdW5yZWZzIG9uIElCdXNUZXh0IG9iamVjdHMgY3JlYXRlZCBmcm9tIHN0YXRpYyBzdHJpbmdz LgotCi1CVUc9aHR0cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy9pc3N1ZXMvMjM5MwotQlVHPWh0 dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvaXNzdWVzLzIzODcKLS0tLQotIHNyYy9pYnVzaW5w dXRjb250ZXh0LmMgfCAzNSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIHNy Yy9pYnVzcHJvcGVydHkuYyAgICAgfCAzMiArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LQotIDIgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCi0K LWRpZmYgLS1naXQgYS9zcmMvaWJ1c2lucHV0Y29udGV4dC5jIGIvc3JjL2lidXNpbnB1dGNvbnRl eHQuYwotaW5kZXggNGIyNzU1MWIuLjc5ODFkZTM4IDEwMDY0NAotLS0tIGEvc3JjL2lidXNpbnB1 dGNvbnRleHQuYwotKysrIGIvc3JjL2lidXNpbnB1dGNvbnRleHQuYwotQEAgLTU0OSw5ICs1NDks MTAgQEAgaWJ1c19pbnB1dF9jb250ZXh0X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCi0g ICAgICAgICBnX3ZhcmlhbnRfdW5yZWYgKHZhcmlhbnQpOwotICAgICAgICAgZ19zaWduYWxfZW1p dCAoY29udGV4dCwgY29udGV4dF9zaWduYWxzW0NPTU1JVF9URVhUXSwgMCwgdGV4dCk7Ci0gCi0t ICAgICAgICBpZiAoZ19vYmplY3RfaXNfZmxvYXRpbmcgKHRleHQpKQotKyAgICAgICAgaWYgKGdf b2JqZWN0X2lzX2Zsb2F0aW5nICh0ZXh0KSkgewotICAgICAgICAgICAgIGdfb2JqZWN0X3JlZl9z aW5rICh0ZXh0KTsKLS0gICAgICAgIGdfb2JqZWN0X3VucmVmICh0ZXh0KTsKLSsgICAgICAgICAg ICBnX29iamVjdF91bnJlZiAodGV4dCk7Ci0rICAgICAgICB9Ci0gICAgICAgICByZXR1cm47Ci0g ICAgIH0KLSAgICAgaWYgKGdfc3RyY21wMCAoc2lnbmFsX25hbWUsICJVcGRhdGVQcmVlZGl0VGV4 dCIpID09IDApIHsKLUBAIC01NjksOSArNTcwLDEwIEBAIGlidXNfaW5wdXRfY29udGV4dF9nX3Np Z25hbCAoR0RCdXNQcm94eSAgKnByb3h5LAotICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29y X3BvcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGUpOwotIAotLSAgICAgICAgaWYg KGdfb2JqZWN0X2lzX2Zsb2F0aW5nICh0ZXh0KSkKLSsgICAgICAgIGlmIChnX29iamVjdF9pc19m bG9hdGluZyAodGV4dCkpIHsKLSAgICAgICAgICAgICBnX29iamVjdF9yZWZfc2luayAodGV4dCk7 Ci0tICAgICAgICBnX29iamVjdF91bnJlZiAodGV4dCk7Ci0rICAgICAgICAgICAgZ19vYmplY3Rf dW5yZWYgKHRleHQpOwotKyAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICB9Ci0gICAg IGlmIChnX3N0cmNtcDAgKHNpZ25hbF9uYW1lLCAiVXBkYXRlUHJlZWRpdFRleHRXaXRoTW9kZSIp ID09IDApIHsKLUBAIC01OTIsOSArNTk0LDEwIEBAIGlidXNfaW5wdXRfY29udGV4dF9nX3NpZ25h bCAoR0RCdXNQcm94eSAgKnByb3h5LAotICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZSwK LSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUpOwotIAotLSAgICAgICAgaWYgKGdfb2JqZWN0 X2lzX2Zsb2F0aW5nICh0ZXh0KSkKLSsgICAgICAgIGlmIChnX29iamVjdF9pc19mbG9hdGluZyAo dGV4dCkpIHsKLSAgICAgICAgICAgICBnX29iamVjdF9yZWZfc2luayAodGV4dCk7Ci0tICAgICAg ICBnX29iamVjdF91bnJlZiAodGV4dCk7Ci0rICAgICAgICAgICAgZ19vYmplY3RfdW5yZWYgKHRl eHQpOwotKyAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi1AQCAtNjIxLDkg KzYyNCwxMCBAQCBpYnVzX2lucHV0X2NvbnRleHRfZ19zaWduYWwgKEdEQnVzUHJveHkgICpwcm94 eSwKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICB0 ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZSk7Ci0tICAgICAgICBpZiAoZ19v YmplY3RfaXNfZmxvYXRpbmcgKHRleHQpKQotKyAgICAgICAgaWYgKGdfb2JqZWN0X2lzX2Zsb2F0 aW5nICh0ZXh0KSkgewotICAgICAgICAgICAgIGdfb2JqZWN0X3JlZl9zaW5rICh0ZXh0KTsKLS0g ICAgICAgIGdfb2JqZWN0X3VucmVmICh0ZXh0KTsKLSsgICAgICAgICAgICBnX29iamVjdF91bnJl ZiAodGV4dCk7Ci0rICAgICAgICB9Ci0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLUBAIC02 NDAsOSArNjQ0LDEwIEBAIGlidXNfaW5wdXRfY29udGV4dF9nX3NpZ25hbCAoR0RCdXNQcm94eSAg KnByb3h5LAotICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAg ICAgIHRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZSk7Ci0tICAgICAgICBp ZiAoZ19vYmplY3RfaXNfZmxvYXRpbmcgKHRhYmxlKSkKLSsgICAgICAgIGlmIChnX29iamVjdF9p c19mbG9hdGluZyAodGFibGUpKSB7Ci0gICAgICAgICAgICAgZ19vYmplY3RfcmVmX3NpbmsgKHRh YmxlKTsKLS0gICAgICAgIGdfb2JqZWN0X3VucmVmICh0YWJsZSk7Ci0rICAgICAgICAgICAgZ19v YmplY3RfdW5yZWYgKHRhYmxlKTsKLSsgICAgICAgIH0KLSAgICAgICAgIHJldHVybjsKLSAKLSAg ICAgfQotQEAgLTY1OSw5ICs2NjQsMTAgQEAgaWJ1c19pbnB1dF9jb250ZXh0X2dfc2lnbmFsIChH REJ1c1Byb3h5ICAqcHJveHksCi0gICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAg ICAgICAgICAgICAgICAgcHJvcF9saXN0KTsKLSAKLS0gICAgICAgIGlmIChnX29iamVjdF9pc19m bG9hdGluZyAocHJvcF9saXN0KSkKLSsgICAgICAgIGlmIChnX29iamVjdF9pc19mbG9hdGluZyAo cHJvcF9saXN0KSkgewotICAgICAgICAgICAgIGdfb2JqZWN0X3JlZl9zaW5rIChwcm9wX2xpc3Qp OwotLSAgICAgICAgZ19vYmplY3RfdW5yZWYgKHByb3BfbGlzdCk7Ci0rICAgICAgICAgICAgZ19v YmplY3RfdW5yZWYgKHByb3BfbGlzdCk7Ci0rICAgICAgICB9Ci0gICAgICAgICByZXR1cm47Ci0g ICAgIH0KLSAKLUBAIC02NzMsOSArNjc5LDEwIEBAIGlidXNfaW5wdXRfY29udGV4dF9nX3NpZ25h bCAoR0RCdXNQcm94eSAgKnByb3h5LAotIAotICAgICAgICAgZ19zaWduYWxfZW1pdCAoY29udGV4 dCwgY29udGV4dF9zaWduYWxzW1VQREFURV9QUk9QRVJUWV0sIDAsIHByb3ApOwotIAotLSAgICAg ICAgaWYgKGdfb2JqZWN0X2lzX2Zsb2F0aW5nIChwcm9wKSkKLSsgICAgICAgIGlmIChnX29iamVj dF9pc19mbG9hdGluZyAocHJvcCkpIHsKLSAgICAgICAgICAgICBnX29iamVjdF9yZWZfc2luayAo cHJvcCk7Ci0tICAgICAgICBnX29iamVjdF91bnJlZiAocHJvcCk7Ci0rICAgICAgICAgICAgZ19v YmplY3RfdW5yZWYgKHByb3ApOwotKyAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICB9 Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2lidXNwcm9wZXJ0eS5jIGIvc3JjL2lidXNwcm9wZXJ0eS5j Ci1pbmRleCA2ZDRlZDA4OC4uY2Q4YTBlMmEgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c3Byb3BlcnR5 LmMKLSsrKyBiL3NyYy9pYnVzcHJvcGVydHkuYwotQEAgLTMzNiwyMCArMzM2LDE3IEBAIGlidXNf cHJvcGVydHlfZGVzdHJveSAoSUJ1c1Byb3BlcnR5ICpwcm9wKQotICAgICBwcm9wLT5wcml2LT5p Y29uID0gTlVMTDsKLSAKLSAgICAgaWYgKHByb3AtPnByaXYtPmxhYmVsKSB7Ci0tICAgICAgICBp ZiAoIWlidXNfdGV4dF9nZXRfaXNfc3RhdGljIChwcm9wLT5wcml2LT5sYWJlbCkpCi0tICAgICAg ICAgICAgZ19vYmplY3RfdW5yZWYgKHByb3AtPnByaXYtPmxhYmVsKTsKLSsgICAgICAgIGdfb2Jq ZWN0X3VucmVmIChwcm9wLT5wcml2LT5sYWJlbCk7Ci0gICAgICAgICBwcm9wLT5wcml2LT5sYWJl bCA9IE5VTEw7Ci0gICAgIH0KLSAKLSAgICAgaWYgKHByb3AtPnByaXYtPnN5bWJvbCkgewotLSAg ICAgICAgaWYgKCFpYnVzX3RleHRfZ2V0X2lzX3N0YXRpYyAocHJvcC0+cHJpdi0+c3ltYm9sKSkK LS0gICAgICAgICAgICBnX29iamVjdF91bnJlZiAocHJvcC0+cHJpdi0+c3ltYm9sKTsKLSsgICAg ICAgIGdfb2JqZWN0X3VucmVmIChwcm9wLT5wcml2LT5zeW1ib2wpOwotICAgICAgICAgcHJvcC0+ cHJpdi0+c3ltYm9sID0gTlVMTDsKLSAgICAgfQotIAotICAgICBpZiAocHJvcC0+cHJpdi0+dG9v bHRpcCkgewotLSAgICAgICAgaWYgKCFpYnVzX3RleHRfZ2V0X2lzX3N0YXRpYyAocHJvcC0+cHJp di0+dG9vbHRpcCkpCi0tICAgICAgICAgICAgZ19vYmplY3RfdW5yZWYgKHByb3AtPnByaXYtPnRv b2x0aXApOwotKyAgICAgICAgZ19vYmplY3RfdW5yZWYgKHByb3AtPnByaXYtPnRvb2x0aXApOwot ICAgICAgICAgcHJvcC0+cHJpdi0+dG9vbHRpcCA9IE5VTEw7Ci0gICAgIH0KLSAKLUBAIC00MDQs NyArNDAxLDcgQEAgaWJ1c19wcm9wZXJ0eV9kZXNlcmlhbGl6ZSAoSUJ1c1Byb3BlcnR5ICpwcm9w LAotICAgICBnX3ZhcmlhbnRfZ2V0X2NoaWxkICh2YXJpYW50LCByZXR2YWwrKywgInUiLCAmcHJv cC0+cHJpdi0+dHlwZSk7Ci0gCi0gICAgIEdWYXJpYW50ICpzdWJ2YXIgPSBnX3ZhcmlhbnRfZ2V0 X2NoaWxkX3ZhbHVlICh2YXJpYW50LCByZXR2YWwrKyk7Ci0tICAgIGlmIChwcm9wLT5wcml2LT5s YWJlbCAmJiAhaWJ1c190ZXh0X2dldF9pc19zdGF0aWMgKHByb3AtPnByaXYtPmxhYmVsKSkgewot KyAgICBpZiAocHJvcC0+cHJpdi0+bGFiZWwpIHsKLSAgICAgICAgIGdfb2JqZWN0X3VucmVmIChw cm9wLT5wcml2LT5sYWJlbCk7Ci0gICAgIH0KLSAgICAgcHJvcC0+cHJpdi0+bGFiZWwgPSBJQlVT X1RFWFQgKGlidXNfc2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplIChzdWJ2YXIpKTsKLUBAIC00MTQs NyArNDExLDcgQEAgaWJ1c19wcm9wZXJ0eV9kZXNlcmlhbGl6ZSAoSUJ1c1Byb3BlcnR5ICpwcm9w LAotICAgICBpYnVzX2dfdmFyaWFudF9nZXRfY2hpbGRfc3RyaW5nICh2YXJpYW50LCByZXR2YWwr KywgJnByb3AtPnByaXYtPmljb24pOwotIAotICAgICBzdWJ2YXIgPSBnX3ZhcmlhbnRfZ2V0X2No aWxkX3ZhbHVlICh2YXJpYW50LCByZXR2YWwrKyk7Ci0tICAgIGlmIChwcm9wLT5wcml2LT50b29s dGlwICYmICFpYnVzX3RleHRfZ2V0X2lzX3N0YXRpYyAocHJvcC0+cHJpdi0+dG9vbHRpcCkpIHsK LSsgICAgaWYgKHByb3AtPnByaXYtPnRvb2x0aXApIHsKLSAgICAgICAgIGdfb2JqZWN0X3VucmVm IChwcm9wLT5wcml2LT50b29sdGlwKTsKLSAgICAgfQotICAgICBwcm9wLT5wcml2LT50b29sdGlw ID0gSUJVU19URVhUIChpYnVzX3NlcmlhbGl6YWJsZV9kZXNlcmlhbGl6ZSAoc3VidmFyKSk7Ci1A QCAtNDM1LDcgKzQzMiw3IEBAIGlidXNfcHJvcGVydHlfZGVzZXJpYWxpemUgKElCdXNQcm9wZXJ0 eSAqcHJvcCwKLSAKLSAgICAgLyogS2VlcCB0aGUgc2VyaWFsaXplZCBvcmRlciBmb3IgdGhlIGNv bXBhdGliaWxpdHkgd2hlbiBhZGQgbmV3IG1lbWJlcnMuICovCi0gICAgIHN1YnZhciA9IGdfdmFy aWFudF9nZXRfY2hpbGRfdmFsdWUgKHZhcmlhbnQsIHJldHZhbCsrKTsKLS0gICAgaWYgKHByb3At PnByaXYtPnN5bWJvbCAmJiAhaWJ1c190ZXh0X2dldF9pc19zdGF0aWMgKHByb3AtPnByaXYtPnN5 bWJvbCkpIHsKLSsgICAgaWYgKHByb3AtPnByaXYtPnN5bWJvbCkgewotICAgICAgICAgZ19vYmpl Y3RfdW5yZWYgKHByb3AtPnByaXYtPnN5bWJvbCk7Ci0gICAgIH0KLSAgICAgcHJvcC0+cHJpdi0+ c3ltYm9sID0gSUJVU19URVhUIChpYnVzX3NlcmlhbGl6YWJsZV9kZXNlcmlhbGl6ZSAoc3VidmFy KSk7Ci1AQCAtNTY3LDcgKzU2NCw3IEBAIGlidXNfcHJvcGVydHlfc2V0X2xhYmVsIChJQnVzUHJv cGVydHkgKnByb3AsCi0gICAgIGdfYXNzZXJ0IChJQlVTX0lTX1BST1BFUlRZIChwcm9wKSk7Ci0g ICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGxhYmVsID09IE5VTEwgfHwgSUJVU19JU19URVhUIChsYWJl bCkpOwotIAotLSAgICBpZiAocHJvcC0+cHJpdi0+bGFiZWwgJiYgIWlidXNfdGV4dF9nZXRfaXNf c3RhdGljIChwcm9wLT5wcml2LT5sYWJlbCkpIHsKLSsgICAgaWYgKHByb3AtPnByaXYtPmxhYmVs KSB7Ci0gICAgICAgICBnX29iamVjdF91bnJlZiAocHJvcC0+cHJpdi0+bGFiZWwpOwotICAgICB9 Ci0gCi1AQCAtNTc1LDggKzU3MiwxMCBAQCBpYnVzX3Byb3BlcnR5X3NldF9sYWJlbCAoSUJ1c1By b3BlcnR5ICpwcm9wLAotICAgICAgICAgcHJvcC0+cHJpdi0+bGFiZWwgPSBpYnVzX3RleHRfbmV3 X2Zyb21fc3RhdGljX3N0cmluZyAoIiIpOwotICAgICB9Ci0gICAgIGVsc2UgewotLSAgICAgICAg cHJvcC0+cHJpdi0+bGFiZWwgPSBnX29iamVjdF9yZWZfc2luayAobGFiZWwpOwotKyAgICAgICAg cHJvcC0+cHJpdi0+bGFiZWwgPSBsYWJlbDsKLSAgICAgfQotKwotKyAgICBnX29iamVjdF9yZWZf c2luayAocHJvcC0+cHJpdi0+bGFiZWwpOwotIH0KLSAKLSB2b2lkCi1AQCAtNTg2LDcgKzU4NSw3 IEBAIGlidXNfcHJvcGVydHlfc2V0X3N5bWJvbCAoSUJ1c1Byb3BlcnR5ICpwcm9wLAotICAgICBn X2Fzc2VydCAoSUJVU19JU19QUk9QRVJUWSAocHJvcCkpOwotICAgICBnX3JldHVybl9pZl9mYWls IChzeW1ib2wgPT0gTlVMTCB8fCBJQlVTX0lTX1RFWFQgKHN5bWJvbCkpOwotIAotLSAgICBpZiAo cHJvcC0+cHJpdi0+c3ltYm9sICYmICFpYnVzX3RleHRfZ2V0X2lzX3N0YXRpYyAocHJvcC0+cHJp di0+c3ltYm9sKSkgewotKyAgICBpZiAocHJvcC0+cHJpdi0+c3ltYm9sKSB7Ci0gICAgICAgICBn X29iamVjdF91bnJlZiAocHJvcC0+cHJpdi0+c3ltYm9sKTsKLSAgICAgfQotIAotQEAgLTU5NCw4 ICs1OTMsMTAgQEAgaWJ1c19wcm9wZXJ0eV9zZXRfc3ltYm9sIChJQnVzUHJvcGVydHkgKnByb3As Ci0gICAgICAgICBwcm9wLT5wcml2LT5zeW1ib2wgPSBpYnVzX3RleHRfbmV3X2Zyb21fc3RhdGlj X3N0cmluZyAoIiIpOwotICAgICB9Ci0gICAgIGVsc2UgewotLSAgICAgICAgcHJvcC0+cHJpdi0+ c3ltYm9sID0gZ19vYmplY3RfcmVmX3NpbmsgKHN5bWJvbCk7Ci0rICAgICAgICBwcm9wLT5wcml2 LT5zeW1ib2wgPSBzeW1ib2w7Ci0gICAgIH0KLSsKLSsgICAgZ19vYmplY3RfcmVmX3NpbmsgKHBy b3AtPnByaXYtPnN5bWJvbCk7Ci0gfQotIAotIHZvaWQKLUBAIC02MTUsNyArNjE2LDcgQEAgaWJ1 c19wcm9wZXJ0eV9zZXRfdG9vbHRpcCAoSUJ1c1Byb3BlcnR5ICpwcm9wLAotICAgICBnX2Fzc2Vy dCAoSUJVU19JU19QUk9QRVJUWSAocHJvcCkpOwotICAgICBnX2Fzc2VydCAodG9vbHRpcCA9PSBO VUxMIHx8IElCVVNfSVNfVEVYVCAodG9vbHRpcCkpOwotIAotLSAgICBpZiAocHJvcC0+cHJpdi0+ dG9vbHRpcCAmJiAhaWJ1c190ZXh0X2dldF9pc19zdGF0aWMgKHByb3AtPnByaXYtPnRvb2x0aXAp KSB7Ci0rICAgIGlmIChwcm9wLT5wcml2LT50b29sdGlwKSB7Ci0gICAgICAgICBnX29iamVjdF91 bnJlZiAocHJvcC0+cHJpdi0+dG9vbHRpcCk7Ci0gICAgIH0KLSAKLUBAIC02MjQsOCArNjI1LDkg QEAgaWJ1c19wcm9wZXJ0eV9zZXRfdG9vbHRpcCAoSUJ1c1Byb3BlcnR5ICpwcm9wLAotICAgICB9 Ci0gICAgIGVsc2UgewotICAgICAgICAgcHJvcC0+cHJpdi0+dG9vbHRpcCA9IHRvb2x0aXA7Ci0t ICAgICAgICBnX29iamVjdF9yZWZfc2luayAocHJvcC0+cHJpdi0+dG9vbHRpcCk7Ci0gICAgIH0K LSsKLSsgICAgZ19vYmplY3RfcmVmX3NpbmsgKHByb3AtPnByaXYtPnRvb2x0aXApOwotIH0KLSAK LSB2b2lkCi0tLSAKLTIuMzQuMQotCi1Gcm9tIDFiNWI5NTQ4YWQ0MTg3NjU3MTdjZTFmYmRjNzBi M2YzZWFhZTY3ZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRh a2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE0IE1hciAyMDIyIDE0OjI1OjEw ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNsaWVudC9ndGsyOiBSZXZlcnQgQ0NlZGlsbGEgY2hh bmdlIGZvciBwdC1CUgotCi1ndGtfaW1fY29udGV4dF9zaW1wbGVfYWRkX3RhYmxlKCkgaXMgZGVw cmVjYXRlZCBpbiBHVEs0LgotSSBkZWNpZGUgdG8gZGVsZXRlIGd0a19pbV9jb250ZXh0X3NpbXBs ZV9hZGRfdGFibGUoKSBoZXJlIGJlY2F1c2UKLXRoZSBjaGFuZ2UgMDNjOWU1OTE0MzBjNjIzNTRi YmYyNmVmN2JkNGEyZTZhY2ZiN2M4ZiBpcyBubyBsb25nZXIgbmVlZGVkCi1iZWNhdXNlIElCdXNF bmdpbmVTaW1wbGUgaGFzIGltcGxlbWVudGVkIHRvIGxvYWQgcHRfYnIgY29tcG9zZSBrZXkKLWJ5 IGxvY2FsZQotCi1CVUc9Y2hyb21pdW0tb3M6MTE0MjEKLUJVRz1odHRwOi8vY29kZXJldmlldy5h cHBzcG90LmNvbS8zOTg5MDYwCi0tLS0KLSBjbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMgfCAz MyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDMyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2xpZW50L2d0azIv aWJ1c2ltY29udGV4dC5jIGIvY2xpZW50L2d0azIvaWJ1c2ltY29udGV4dC5jCi1pbmRleCBhNWU1 ZTc5Mi4uZTMxNGFlOTggMTAwNjQ0Ci0tLS0gYS9jbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMK LSsrKyBiL2NsaWVudC9ndGsyL2lidXNpbWNvbnRleHQuYwotQEAgLTIsNyArMiw3IEBACi0gLyog dmltOnNldCBldCBzdHM9NDogKi8KLSAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotICAqIENvcHly aWdodCAoQykgMjAwOC0yMDEzIFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgot LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2Fy YTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIyIFRha2FvIEZ1aml3YXJh IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIx IFJlZCBIYXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLUBAIC04NzQsMzMgKzg3NCw2IEBAIGlidXNf aW1fY29udGV4dF9jbGFzc19maW5pIChJQnVzSU1Db250ZXh0Q2xhc3MgKmNsYXNzKQotICAgICBn X2J1c191bndhdGNoX25hbWUgKF9kYWVtb25fbmFtZV93YXRjaF9pZCk7Ci0gfQotIAotLS8qIENv cGllZCBmcm9tIGd0aysyLjAtMi4yMC4xL21vZHVsZXMvaW5wdXQvaW1jZWRpbGxhLmMgdG8gZml4 IGNyb3NidWcuY29tLzExNDIxLgotLSAqIE92ZXJ3cml0ZSB0aGUgb3JpZ2luYWwgR3RrKydzIGNv bXBvc2UgdGFibGUgaW4gZ3RrKy0yLngueS9ndGsvZ3RraW1jb250ZXh0c2ltcGxlLmMuICovCi0t Ci0tLyogVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGFuZCB0aGUgZGVmYXVsdCBpbnB1dCBt ZXRob2QgaXMgdGhlIGhhbmRsaW5nCi0tICogb2YgQythY3V0ZSAtIHRoaXMgbWV0aG9kIHByb2R1 Y2VzIEMgV0lUSCBDRURJTExBIHJhdGhlciB0aGFuIEMgV0lUSCBBQ1VURS4KLS0gKiBGb3IgbGFu Z3VhZ2VzIHRoYXQgdXNlIENDZWRpbGxhIGFuZCBub3QgYWN1dGUsIHRoaXMgaXMgdGhlIHByZWZl cnJlZCBtYXBwaW5nLAotLSAqIGFuZCBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGZvciBwdF9C Uiwgd2hlcmUgdGhlIHVzLWludGwga2V5Ym9hcmQgaXMKLS0gKiB1c2VkIGV4dGVuc2l2ZWx5Lgot LSAqLwotLXN0YXRpYyBndWludDE2IGNlZGlsbGFfY29tcG9zZV9zZXFzW10gPSB7Ci0tI2lmZGVm IERFUFJFQ0FURURfR0RLX0tFWVNZTVMKLS0gIEdES19kZWFkX2FjdXRlLAlHREtfQywJMCwJMCwJ MCwJMHgwMEM3LAkvKiBMQVRJTl9DQVBJVEFMX0xFVFRFUl9DX1dJVEhfQ0VESUxMQSAqLwotLSAg R0RLX2RlYWRfYWN1dGUsCUdES19jLAkwLAkwLAkwLAkweDAwRTcsCS8qIExBVElOX1NNQUxMX0xF VFRFUl9DX1dJVEhfQ0VESUxMQSAqLwotLSAgR0RLX011bHRpX2tleSwJR0RLX2Fwb3N0cm9waGUs CUdES19DLCAgMCwgICAgICAwLCAgICAgIDB4MDBDNywgLyogTEFUSU5fQ0FQSVRBTF9MRVRURVJf Q19XSVRIX0NFRElMTEEgKi8KLS0gIEdES19NdWx0aV9rZXksCUdES19hcG9zdHJvcGhlLAlHREtf YywgIDAsICAgICAgMCwgICAgICAweDAwRTcsIC8qIExBVElOX1NNQUxMX0xFVFRFUl9DX1dJVEhf Q0VESUxMQSAqLwotLSAgR0RLX011bHRpX2tleSwJR0RLX0MsICBHREtfYXBvc3Ryb3BoZSwJMCwg ICAgICAwLCAgICAgIDB4MDBDNywgLyogTEFUSU5fQ0FQSVRBTF9MRVRURVJfQ19XSVRIX0NFRElM TEEgKi8KLS0gIEdES19NdWx0aV9rZXksCUdES19jLCAgR0RLX2Fwb3N0cm9waGUsCTAsICAgICAg MCwgICAgICAweDAwRTcsIC8qIExBVElOX1NNQUxMX0xFVFRFUl9DX1dJVEhfQ0VESUxMQSAqLwot LSNlbHNlCi0tICBHREtfS0VZX2RlYWRfYWN1dGUsCUdES19LRVlfQywJMCwJMCwJMCwJMHgwMEM3 LAkvKiBMQVRJTl9DQVBJVEFMX0xFVFRFUl9DX1dJVEhfQ0VESUxMQSAqLwotLSAgR0RLX0tFWV9k ZWFkX2FjdXRlLAlHREtfS0VZX2MsCTAsCTAsCTAsCTB4MDBFNywJLyogTEFUSU5fU01BTExfTEVU VEVSX0NfV0lUSF9DRURJTExBICovCi0tICBHREtfS0VZX011bHRpX2tleSwJR0RLX0tFWV9hcG9z dHJvcGhlLAlHREtfS0VZX0MsICAwLCAgICAgIDAsICAgICAgMHgwMEM3LCAvKiBMQVRJTl9DQVBJ VEFMX0xFVFRFUl9DX1dJVEhfQ0VESUxMQSAqLwotLSAgR0RLX0tFWV9NdWx0aV9rZXksCUdES19L RVlfYXBvc3Ryb3BoZSwJR0RLX0tFWV9jLCAgMCwgICAgICAwLCAgICAgIDB4MDBFNywgLyogTEFU SU5fU01BTExfTEVUVEVSX0NfV0lUSF9DRURJTExBICovCi0tICBHREtfS0VZX011bHRpX2tleSwJ R0RLX0tFWV9DLCAgR0RLX0tFWV9hcG9zdHJvcGhlLAkwLCAgICAgIDAsICAgICAgMHgwMEM3LCAv KiBMQVRJTl9DQVBJVEFMX0xFVFRFUl9DX1dJVEhfQ0VESUxMQSAqLwotLSAgR0RLX0tFWV9NdWx0 aV9rZXksCUdES19LRVlfYywgIEdES19LRVlfYXBvc3Ryb3BoZSwJMCwgICAgICAwLCAgICAgIDB4 MDBFNywgLyogTEFUSU5fU01BTExfTEVUVEVSX0NfV0lUSF9DRURJTExBICovCi0tI2VuZGlmCi0t fTsKLS0KLSBzdGF0aWMgdm9pZAotIGlidXNfaW1fY29udGV4dF9pbml0IChHT2JqZWN0ICpvYmop Ci0gewotQEAgLTkzNiwxMCArOTA5LDYgQEAgaWJ1c19pbV9jb250ZXh0X2luaXQgKEdPYmplY3Qg Km9iaikKLSAKLSAgICAgLy8gQ3JlYXRlIHNsYXZlIGltIGNvbnRleHQKLSAgICAgaWJ1c2ltY29u dGV4dC0+c2xhdmUgPSBndGtfaW1fY29udGV4dF9zaW1wbGVfbmV3ICgpOwotLSAgICBndGtfaW1f Y29udGV4dF9zaW1wbGVfYWRkX3RhYmxlIChHVEtfSU1fQ09OVEVYVF9TSU1QTEUgKGlidXNpbWNv bnRleHQtPnNsYXZlKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Vk aWxsYV9jb21wb3NlX3NlcXMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfTl9FTEVNRU5UUyAo Y2VkaWxsYV9jb21wb3NlX3NlcXMpIC8gKDQgKyAyKSk7Ci0gCi0gICAgIGdfc2lnbmFsX2Nvbm5l Y3QgKGlidXNpbWNvbnRleHQtPnNsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAiY29tbWl0 IiwKLS0tIAotMi4zNC4xCi0KLUZyb20gMzc5MDA1NzQ5MzRiYjAxY2MzMTg2MGFlM2FlMmY2Njhl NDM2MDgzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8u ZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjggTWFyIDIwMjIgMjM6MTg6NTggKzA5 MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3JjL3Rlc3RzOiBSdW4gaWJ1cy1kYWVtb24gZnJvbSBDSSBl dmVuIGlmIEdOT01FIGRlc2t0b3AKLQotZ25vbWUtc2hlbGwgbm8gbG9uZ2VyIGxhdW5jaCBpYnVz LWRhZW1vbiB3aXRoIElCdXMgc3lzdGVtZCBmaWxlLgotVGhpcyBpcyBhIHdvcmthcm91bmQgdG8g Y2FsbCBpYnVzLWRhZW1vbiBhZnRlciBHTk9NRSBmYWlscyB0bwotbGF1bmNoIGlidXMtZGFlbW9u Ci0KLUJVRz1odHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ2RtLy0vaXNzdWVzLzc3Nwot LS0tCi0gc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLXJ1bm5lci5pbiB8IDM4ICsrKysr KysrKysrKysrKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCA0 IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0 aW5nLXJ1bm5lci5pbiBiL3NyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy1ydW5uZXIuaW4K LWluZGV4IDQ4NTI4MzI2Li42YjIwODM0NSAxMDA3NTUKLS0tLSBhL3NyYy90ZXN0cy9pYnVzLWRl c2t0b3AtdGVzdGluZy1ydW5uZXIuaW4KLSsrKyBiL3NyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVz dGluZy1ydW5uZXIuaW4KLUBAIC01NSw2ICs1NSw3IEBAIEdSRUVOPSdcMDMzWzA7MzJtJwotIFJF RD0nXDAzM1swOzMxbScKLSBOQz0nXDAzM1swbScKLSAKLSsKLSBwcmludF9sb2coKQotIHsKLSAg ICAgaWYgWyB4IiRSRVNVTFRfTE9HIiAhPSB4IF0gOyB0aGVuCi1AQCAtNjksNiArNzAsNyBAQCBw cmludF9sb2coKQotICAgICBmaQotIH0KLSAKLSsKLSB1c2FnZSgpCi0gewotICAgICAkRUNITyAt ZSBcCi1AQCAtOTUsNiArOTcsNyBAQCB1c2FnZSgpCi0gIiIKLSB9Ci0gCi0rCi0gcGFyc2VfYXJn cygpCi0gewotICAgICAjIFRoaXMgaXMgR05VIGdldG9wdC4gInN1ZG8gcG9ydCBnZXRvcHQiIGlu IEJTRD8KLUBAIC0xMjksNiArMTMyLDcgQEAgcGFyc2VfYXJncygpCi0gICAgIGZpCi0gfQotIAot KwotIGluaXRfZGVza3RvcCgpCi0gewotICAgICBpZiBbICIkUkVTVUxUX0xPRyIgIT0gIiIgXSA7 IHRoZW4KLUBAIC0yMDcsNiArMjExLDcgQEAgX0VPRgotICAgICAjZXhwb3J0IFhER19TRUFUPXNl YXQwCi0gfQotIAotKwotIHJ1bl9kYnVzX2RhZW1vbigpCi0gewotICAgICAjIFVzZSBkYnVzLWxh dW5jaCAtLWV4aXQtd2l0aC1zZXNzaW9uIGxhdGVyIGluc3RlYWQgb2YgLS1zaC1zeW50YXgKLUBA IC0yMTYsNiArMjIxLDcgQEAgcnVuX2RidXNfZGFlbW9uKCkKLSAgICAgZXhwb3J0IERCVVNfU0VT U0lPTl9CVVNfQUREUkVTUz0idW5peDpwYXRoPS9ydW4vdXNlci8kVUlEL2J1cyIKLSB9Ci0gCi0r Ci0gaW5pdF9nbm9tZSgpCi0gewotICAgICAjIGdzZXR0aW5ncyBzZXQgY29tbWFuZCBuZWVkcyBk Y29uZi1zZXJ2aWNlIHdpdGggdGhlIHNhbWUgJERJU1BMQVkKLUBAIC0yNTgsNiArMjY0LDcgQEAg aW5pdF9nbm9tZSgpCi0gICAgIGZpCi0gfQotIAotKwotIHJ1bl9kZXNrdG9wKCkKLSB7Ci0gICAg IGVjaG8gIiRERVNLVE9QX0NPTU1BTkQiIHwgZ3JlcCBnbm9tZS1zZXNzaW9uID4gL2Rldi9udWxs Ci1AQCAtMjc4LDEyICsyODUsMjggQEAgcnVuX2Rlc2t0b3AoKQotICAgICAkREVTS1RPUF9DT01N QU5EICYKLSAgICAgUElEX0dOT01FX1NFU1NJT049JCEKLSAgICAgc2xlZXAgMzAKLS0gICAgaWYg WyAgJEhBU19HTk9NRSAtbmUgMCBdIDsgdGhlbgotLSAgICAgICAgaWJ1cy1kYWVtb24gLS1kYWVt b25pemUgLS12ZXJib3NlCi0tICAgICAgICBzbGVlcCAzCi0tICAgIGZpCi0rCi0rICAgICMgZ25v bWUtc2hlbGwgNDIgY2hlY2tzIGlmIG9yZy5mcmVlZGVza3RvcC5JQnVzLnNlc3Npb24uR05PTUUu c2VydmljZQotKyAgICAjIHN5c3RlbWQgZmlsZSBpcyBhdmFpbGFibGUgd2l0aCBvcmcuZnJlZWRl c2t0b3Auc3lzdGVtZDEuTWFuYWdlci5HZXRVbml0Ci0rICAgICMgRC1CdXMgbWV0aG9kLCB3aGlj aCBpcyBwcm92aWRlZCBieSBJQnVzIDEuNS4yNiwgYW5kIGlmIHRoZSBmaWxlCi0rICAgICMgaXMg YXZhaWxhYmxlLCBnbm9tZS1zaGVsbCBubyBsb25nZXIgbGF1bmNoIGlidXMtZGFlbW9uCi0rICAg ICMgYmVjYXVzZSBnbm9tZS1zaGVsbCBhc3N1bWVzIGdub21lLXNlc3Npb24gd291bGQgbGF1bmNo IGlidXMtZGFlbW9uCi0rICAgICMgd2l0aCBvcmcuZnJlZWRlc2t0b3Auc3lzdGVtZDEuTWFuYWdl ci5TdGFydFVuaXQgRC1CdXMgbWV0aG9kLgotKyAgICAjIEJ1dCBhY3R1YWxseSBnbm9tZS1zZXNz aW9uIGZhaWxlZCB0byBsYXVuY2ggaWJ1cy1kYWVtb24KLSsgICAgIyBiZWNhdXNlIHRoZSBJQnVz IHN5c3RlbWQgZmlsZSBkZXBlbmRzIG9uIGdub21lLXNlc3Npb24udGFyZ2V0Ci0rICAgICMgYnV0 IHRoaXMgQ0kgbGF1bmNoZXMgZ25vbWUtc2Vzc2lvbiBkaXJlY3RseS4KLSsgICAgIwotKyAgICAj IFNvIGlidXMtZGFtZW9uIGlzIG5vdyBhbHdheXMgY2FsbGVkIGhlcmUgYWZ0ZXIgZ25vbWUtc2hl bGwgZmFpbHMgdG8KLSsgICAgIyBsYXVuY2ggaWJ1cy1kYWVtb24uCi0rICAgICMgSXQgbWF5IGJl IGJldHRlciB0aGlzIENJIGxhdW5jaGVzIEdETSBhdXRvbG9naW4gdG8gcnVuIGdub21lLXNlc3Np b24KLSsgICAgIyB3aXRoIGdub21lLXNlc3Npb24udGFyZ2V0IHN5c3RlbWQgZmlsZS4KLSsgICAg IyBCdXQgYHN5c3RlbWN0bCBzdGFydCBnZG1gIHRlcm1pbmF0ZXMgdGhlIHBhcmVudCBzY3JpcHQg Zm9yY2libHkKLSsgICAgIyBhbmQgdGhlIHNjcmlwdCBjYW5ub3QgZ2V0IHRoZSBDSSByZXN1bHQu Ci0rICAgIGlidXMtZGFlbW9uIC0tZGFlbW9uaXplIC0tdmVyYm9zZQotKyAgICBzbGVlcCAzCi0g fQotIAotKwotIGNvdW50X2Nhc2VfcmVzdWx0KCkKLSB7Ci0gICAgIHJldHZhbD0kMQotQEAgLTI5 OCw2ICszMjEsNyBAQCBjb3VudF9jYXNlX3Jlc3VsdCgpCi0gICAgIGVjaG8gJHBhc3MgJGZhaWwK LSB9Ci0gCi0rCi0gZWNob19jYXNlX3Jlc3VsdCgpCi0gewotICAgICByZXR2YWw9JDEKLUBAIC0z MTEsNiArMzM1LDcgQEAgZWNob19jYXNlX3Jlc3VsdCgpCi0gICAgIGZpCi0gfQotIAotKwotIHJ1 bl9kaXJlY3RfdGVzdF9jYXNlcygpCi0gewotICAgICBwYXNzPTAKLUBAIC0zNjMsNiArMzg4LDcg QEAgRU9GX0VOVlMKLSAgICAgZWNobyAkcGFzcyAkZmFpbAotIH0KLSAKLSsKLSBydW5fZ25vbWVf ZGVza3RvcF90ZXN0aW5nX3J1bm5lcigpCi0gewotICAgICBwYXNzPTAKLUBAIC0zOTcsNiArNDIz LDcgQEAgRU9GCi0gICAgIGVjaG8gJHBhc3MgJGZhaWwKLSB9Ci0gCi0rCi0gcnVuX3Rlc3Rfc3Vp dGUoKQotIHsKLSAgICAgcGFzcz0wCi1AQCAtNDM1LDYgKzQ2Miw3IEBAIEVPRl9SVU5ORVIKLSAg ICAgZmkKLSB9Ci0gCi0rCi0gZmluaXQoKQotIHsKLSAgICAgZWNobyAiIyBLaWxsaW5nIGxlZnQg Z25vbWUtc2Vzc2lvbiBhbmQgWG9yZyIKLUBAIC00NTEsNiArNDc5LDcgQEAgZmluaXQoKQotICAg ICBlY2hvICIjIEZpbmlzaGVkICRQUk9HTkFNRSB0ZXN0aW5nIgotIH0KLSAKLSsKLSBtYWluKCkK LSB7Ci0gICAgIHBhcnNlX2FyZ3MgIiRAIgotQEAgLTQ3MCw1ICs0OTksNiBAQCBtYWluKCkKLSAg ICAgZmluaXQKLSB9Ci0gCi0rCi0gIyBOZWVkIHRvIGVuY2xvc2UgJEAgd2l0aCBkb3VibGUgcXVv dGVzIG5vdCB0byBzcGxpdCB0aGUgYXJyYXkuCi0gbWFpbiAiJEAiCi0tLSAKLTIuMzQuMQotCi1G cm9tIGIwMjRlYThmY2VlNmZlMWEyMDU3MGE2ZjgwY2M0ZjlmOGY0MjA3MDYgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+ Ci1EYXRlOiBXZWQsIDIwIEFwciAyMDIyIDE5OjM2OjEwICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hd IHVpL2d0azM6IERpc2FibGUgWEtCIGVuZ2luZXMgaW4gUGxhc21hIFdheWxhbmQKLQotQ3VycmVu dGx5IGlidXMtdWktZ3RrMyBydW5zIHRoZSBzZXR4a2JtYXAgY29tbWFuZCBpbnRlcm5hbGx5IHRv IHNldAotdGhlIFhLQiBrZXltYXBzIGZyb20gWEtCIGVuZ2luZXMgYnV0IHNldHhrYm1hcCBkb2Vz IG5vdCB3b3JrIGluIFdheWxhbmQKLXNlc3Npb24uCi1UaGUgSUJ1cyBYS0IgZW5naW5lcyBhcmUg ZGlzYWJsZWQgYXQgdGhlIG1vbWVudCBpbiBQbGFtc2EgV2F5bGFuZAotYW5kIGlidXMtdWktZ3Rr MyBhc2tzIHVzZXJzIHRvIHVzZSBzeXN0ZW1zZXR0aW5nczUuCi0KLVdpbGwgdXNlIGxpYmlucHV0 IGFuZCBsaWJ4a2Jjb21tb24gbGF0ZXIgYnV0IGl0IHdvdWxkIGJlIGJldHRlcgotdG8gaW1wbGVt ZW50IElCdXMgaW4gUGxhbXNhIFdheWxhbmQgY29tcG9zaXRvci4KLQotQlVHPXJoYnojMjA3NjU5 NgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICB8IDE2ICsrKysrKysrKysKLSB1aS9ndGszL01h a2VmaWxlLmFtIHwgMTcgKysrKysrKysrKy0KLSB1aS9ndGszL3BhbmVsLnZhbGEgIHwgNzQgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCi0gMyBmaWxlcyBjaGFu Z2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Nv bmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYTNjZGIyZGEuLjc5YjljMTFhIDEwMDY0 NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02MzYsNiArNjM2 LDIxIEBAIGlmIHRlc3QgeCIkZW5hYmxlX2VuZ2luZSIgPSB4InllcyI7IHRoZW4KLSAgICAgZW5h YmxlX2VuZ2luZT0ieWVzIChlbmFibGVkLCB1c2UgLS1kaXNhYmxlLWVuZ2luZSB0byBkaXNhYmxl KSIKLSBmaQotIAotKyMgLS1kaXNhYmxlLWxpYm5vdGlmeQotK0FDX0FSR19FTkFCTEUobGlibm90 aWZ5LAotKyAgICBBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWxpYm5vdGlmeV0sCi0rICAgICAg ICAgICAgICAgICAgIFtEaXNhYmxlIHRvIGxpbmsgbGlibm90aWZ5XSksCi0rICAgIFtlbmFibGVf bGlibm90aWZ5PSRlbmFibGV2YWxdLAotKyAgICBbZW5hYmxlX2xpYm5vdGlmeT15ZXNdCi0rKQot K0FNX0NPTkRJVElPTkFMKFtFTkFCTEVfTElCTk9USUZZXSwgW3Rlc3QgeCIkZW5hYmxlX2xpYm5v dGlmeSIgPSB4InllcyJdKQotK2lmIHRlc3QgeCIkZW5hYmxlX2xpYm5vdGlmeSIgPSB4InllcyI7 IHRoZW4KLSsgICAgUEtHX0NIRUNLX01PRFVMRVMoTElCTk9USUZZLCBbCi0rICAgICAgICBsaWJu b3RpZnkgPj0gMC43Ci0rICAgIF0pCi0rICAgIGVuYWJsZV9saWJub3RpZnk9InllcyAoZW5hYmxl ZCwgdXNlIC0tZGlzYWJsZS1saWJub3RpZnkgdG8gZGlzYWJsZSkiCi0rZmkKLSsKLSBQS0dfQ0hF Q0tfTU9EVUxFUyhYVEVTVCwKLSAgICAgW3gxMSB4dHN0XSwKLSAgICAgW2VuYWJsZV94dGVzdD15 ZXNdLAotQEAgLTg3MSw2ICs4ODYsNyBAQCBCdWlsZCBvcHRpb25zOgotICAgTm8gc25vb3BlciBy ZWdleGVzICAgICAgICAgICAgIiROT19TTk9PUEVSX0FQUFMiCi0gICBQYW5lbCBpY29uICAgICAg ICAgICAgICAgICAgICAiJElCVVNfSUNPTl9LRVlCT0FSRCIKLSAgIEVuYWJsZSBzdXJyb3VuZGlu Zy10ZXh0ICAgICAgICRlbmFibGVfc3Vycm91bmRpbmdfdGV4dAotKyAgRW5hYmxlIGxpYm5vdGlm eSAgICAgICAgICAgICAgJGVuYWJsZV9saWJub3RpZnkKLSAgIEVuYWJsZSBFbW9qaSBkaWN0ICAg ICAgICAgICAgICRlbmFibGVfZW1vamlfZGljdAotICAgVW5pY29kZSBFbW9qaSBkaXJlY3Rvcnkg ICAgICAgJFVOSUNPREVfRU1PSklfRElSCi0gICBDTERSIGFubm90YXRpb24gZGlyZWN0b3J5ICAg ICAkRU1PSklfQU5OT1RBVElPTl9ESVIKLWRpZmYgLS1naXQgYS91aS9ndGszL01ha2VmaWxlLmFt IGIvdWkvZ3RrMy9NYWtlZmlsZS5hbQotaW5kZXggYWIzNzkzMjguLjJhOWNhYmRlIDEwMDY0NAot LS0tIGEvdWkvZ3RrMy9NYWtlZmlsZS5hbQotKysrIGIvdWkvZ3RrMy9NYWtlZmlsZS5hbQotQEAg LTMsNyArMyw3IEBACi0gIyBpYnVzIC0gVGhlIElucHV0IEJ1cwotICMKLSAjIENvcHlyaWdodCAo YykgMjAwNy0yMDE1IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSMgQ29w eXJpZ2h0IChjKSAyMDE1LTIwMjAgVGFrYW8gRnVqd2lhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci0rIyBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyMiBUYWthbyBGdWp3aWFyYSA8dGFrYW8u ZnVqaXdhcmExQGdtYWlsLmNvbT4KLSAjIENvcHlyaWdodCAoYykgMjAwNy0yMDIwIFJlZCBIYXQs IEluYy4KLSAjCi0gIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yCi1AQCAtODEsNiArODEsMjEgQEAgQU1fVkFMQUZMQUdTID0gXAot IAktLXRhcmdldC1nbGliPSIkKFZBTEFfVEFSR0VUX0dMSUJfVkVSU0lPTikiIFwKLSAJJChOVUxM KQotIAotK2lmIEVOQUJMRV9MSUJOT1RJRlkKLStBTV9DRkxBR1MgKz0gXAotKyAgICAgICBATElC Tk9USUZZX0NGTEFHU0AgXAotKyAgICAgICAkKE5VTEwpCi0rCi0rQU1fTERBREQgKz0gXAotKyAg ICAgICBATElCTk9USUZZX0xJQlNAIFwKLSsgICAgICAgJChOVUxMKQotKwotK0FNX1ZBTEFGTEFH UyArPSBcCi0rICAgICAgIC0tcGtnPWxpYm5vdGlmeSBcCi0rICAgICAgIC1EIEVOQUJMRV9MSUJO T1RJRlkgXAotKyAgICAgICAkKE5VTEwpCi0rZW5kaWYKLSsKLSBpZiBFTkFCTEVfQVBQSU5ESUNB VE9SCi0gQU1fVkFMQUZMQUdTICs9IC0tZGVmaW5lPUlORElDQVRPUgotIGVuZGlmCi1kaWZmIC0t Z2l0IGEvdWkvZ3RrMy9wYW5lbC52YWxhIGIvdWkvZ3RrMy9wYW5lbC52YWxhCi1pbmRleCAwN2Nl NjUyNC4uYmQ3MGQ3ZDIgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL3BhbmVsLnZhbGEKLSsrKyBiL3Vp L2d0azMvcGFuZWwudmFsYQotQEAgLTczLDYgKzczLDcgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBh bmVsU2VydmljZSB7Ci0gICAgIHByaXZhdGUgc3RyaW5nIG1faWNvbl9wcm9wX2tleSA9ICIiOwot ICAgICBwcml2YXRlIGludCBtX3Byb3BlcnR5X2ljb25fZGVsYXlfdGltZSA9IDUwMDsKLSAgICAg cHJpdmF0ZSB1aW50IG1fcHJvcGVydHlfaWNvbl9kZWxheV90aW1lX2lkOwotKyAgICBwcml2YXRl IGJvb2wgbV9pc193YXlsYW5kOwotICNpZiBJTkRJQ0FUT1IKLSAgICAgcHJpdmF0ZSBib29sIG1f aXNfa2RlID0gaXNfa2RlKCk7Ci0gI2Vsc2UKLUBAIC05Myw2ICs5NCwxOCBAQCBjbGFzcyBQYW5l bCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAKLSAgICAgICAgIG1fYnVzID0gYnVzOwotIAotKyNp ZiBVU0VfR0RLX1dBWUxBTkQKLSsgICAgICAgIEdkay5zZXRfYWxsb3dlZF9iYWNrZW5kcygiKiIp OwotKyAgICAgICAgdmFyIGRpc3BsYXkgPSBHZGsuRGlzcGxheU1hbmFnZXIuZ2V0KCkub3Blbl9k aXNwbGF5KG51bGwpOwotKyAgICAgICAgVHlwZSBpbnN0YW5jZV90eXBlID0gZGlzcGxheS5nZXRf dHlwZSgpOwotKyAgICAgICAgVHlwZSB3YXlsYW5kX3R5cGUgPSB0eXBlb2YoR2RrV2F5bGFuZC5E aXNwbGF5KTsKLSsgICAgICAgIG1faXNfd2F5bGFuZCA9IGluc3RhbmNlX3R5cGUuaXNfYSh3YXls YW5kX3R5cGUpOwotKyAgICAgICAgR2RrLnNldF9hbGxvd2VkX2JhY2tlbmRzKCJ4MTEiKTsKLSsj ZWxzZQotKyAgICAgICAgbV9pc193YXlsYW5kID0gZmFsc2U7Ci0rICAgICAgICB3YXJuaW5nKCJD aGVja2luZyBXYXlsYW5kIGlzIGRpc2FibGVkIik7Ci0rI2VuZGlmCi0rCi0gICAgICAgICBpbml0 X3NldHRpbmdzKCk7Ci0gCi0gICAgICAgICAvLyBpbml0IHVpCi1AQCAtNTUzLDYgKzU2NiwxMSBA QCBjbGFzcyBQYW5lbCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAgICAgIEdMaWIuTGlzdDxJ QnVzLkVuZ2luZURlc2M+IGltX2VuZ2luZXMgPQotICAgICAgICAgICAgICAgICBnZXRfZW5naW5l c19mcm9tX2xvY2FsZShlbmdpbmVzKTsKLSAKLSsgICAgICAgIGlmIChtX2lzX3dheWxhbmQpIHsK LSsgICAgICAgICAgICBpZiAoeGtiX2VuZ2luZXMubGVuZ3RoKCkgPiAwKQotKyAgICAgICAgICAg ICAgICB4a2JfZW5naW5lcyA9IG5ldyBHTGliLkxpc3Q8SUJ1cy5FbmdpbmVEZXNjPigpOwotKyAg ICAgICAgfQotKwotICAgICAgICAgc3RyaW5nW10gbmFtZXMgPSB7fTsKLSAgICAgICAgIGZvcmVh Y2ggKHVub3duZWQgSUJ1cy5FbmdpbmVEZXNjIGVuZ2luZSBpbiB4a2JfZW5naW5lcykKLSAgICAg ICAgICAgICBuYW1lcyArPSBlbmdpbmUuZ2V0X25hbWUoKTsKLUBAIC03MjgsNiArNzQ2LDMyIEBA IGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAgaW5pdGVkX2VuZ2lu ZXNfb3JkZXIgPSBmYWxzZTsKLSAgICAgfQotIAotKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlX3Zl cnNpb25fMV81XzI2KCkgewotKyNpZiBFTkFCTEVfTElCTk9USUZZCi0rICAgICAgICBpZiAoIU5v dGlmeS5pc19pbml0dGVkKCkpIHsKLSsgICAgICAgICAgICBOb3RpZnkuaW5pdCAoImlidXMiKTsK LSsgICAgICAgIH0KLSsKLSsgICAgICAgIHZhciBub3RpZmljYXRpb24gPSBuZXcgTm90aWZ5Lk5v dGlmaWNhdGlvbigKLSsgICAgICAgICAgICAgICAgXygiSUJ1cyBBdHRlbnRpb24iKSwKLSsgICAg ICAgICAgICAgICAgXygiTGF5b3V0IGNoYW5nZXMgZG8gbm90IHdvcmsgaW4gUGxhc21hIFdheWxh bmQuICIgKwotKyAgICAgICAgICAgICAgICAgICJQbGVhc2UgdXNlIHN5c3RlbXNldHRpbmdzNS4i KSwKLSsgICAgICAgICAgICAgICAgImlidXMiKTsKLSsgICAgICAgIG5vdGlmaWNhdGlvbi5zZXRf dGltZW91dCgzMCAqIDEwMDApOwotKyAgICAgICAgbm90aWZpY2F0aW9uLnNldF9jYXRlZ29yeSgi aG90a2V5Iik7Ci0rCi0rICAgICAgICB0cnkgewotKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5z aG93KCk7Ci0rICAgICAgICB9IGNhdGNoIChHTGliLkVycm9yIGUpewotKyAgICAgICAgICAgIHdh cm5pbmcgKF8oIkxheW91dCBjaGFuZ2VzIGRvIG5vdCB3b3JrIGluIFBsYXNtYSBXYXlsYW5kLiAi ICsKLSsgICAgICAgICAgICAgICAgICAgICAgICAiUGxlYXNlIHVzZSBzeXN0ZW1zZXR0aW5nczUu IikpOwotKyAgICAgICAgfQotKyNlbHNlCi0rICAgICAgICB3YXJuaW5nIChfKCJMYXlvdXQgY2hh bmdlcyBkbyBub3Qgd29yayBpbiBQbGFzbWEgV2F5bGFuZC4gIiArCi0rICAgICAgICAgICAgICAg ICAgICJQbGVhc2UgdXNlIHN5c3RlbXNldHRpbmdzNS4iKSk7Ci0rI2VuZGlmCi0rICAgIH0KLSsK LSAgICAgcHJpdmF0ZSB2b2lkIHNldF92ZXJzaW9uKCkgewotICAgICAgICAgc3RyaW5nIHByZXZf dmVyc2lvbiA9IG1fc2V0dGluZ3NfZ2VuZXJhbC5nZXRfc3RyaW5nKCJ2ZXJzaW9uIik7Ci0gICAg ICAgICBzdHJpbmcgY3VycmVudF92ZXJzaW9uID0gbnVsbDsKLUBAIC03MzUsNiArNzc5LDkgQEAg Y2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7Ci0gICAgICAgICBpZiAoY29tcGFyZV92 ZXJzaW9ucyhwcmV2X3ZlcnNpb24sICIxLjUuOCIpIDwgMCkKLSAgICAgICAgICAgICB1cGRhdGVf dmVyc2lvbl8xXzVfOCgpOwotIAotKyAgICAgICAgaWYgKGNvbXBhcmVfdmVyc2lvbnMocHJldl92 ZXJzaW9uLCAiMS41LjI2IikgPCAwKQotKyAgICAgICAgICAgIHVwZGF0ZV92ZXJzaW9uXzFfNV8y NigpOwotKwotICAgICAgICAgY3VycmVudF92ZXJzaW9uID0gIiVkLiVkLiVkIi5wcmludGYoSUJ1 cy5NQUpPUl9WRVJTSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSUJ1cy5NSU5PUl9WRVJTSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSUJ1cy5NSUNST19WRVJTSU9OKTsKLUBAIC04NTYsNyArOTAzLDcgQEAg Y2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7Ci0gICAgICAgICBtX2ljb25fcHJvcF9r ZXkgPSAiIjsKLSAKLSAgICAgICAgIC8vIHNldCB4a2IgbGF5b3V0Ci0tICAgICAgICBpZiAoIW1f dXNlX3N5c3RlbV9rZXlib2FyZF9sYXlvdXQpCi0rICAgICAgICBpZiAoIW1fdXNlX3N5c3RlbV9r ZXlib2FyZF9sYXlvdXQgJiYgIW1faXNfd2F5bGFuZCkKLSAgICAgICAgICAgICBtX3hrYmxheW91 dC5zZXRfbGF5b3V0KGVuZ2luZSk7Ci0gCi0gICAgICAgICBzZXRfbGFuZ3VhZ2VfZnJvbV9lbmdp bmUoZW5naW5lKTsKLUBAIC05NjAsMTcgKzEwMDcsMjUgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBh bmVsU2VydmljZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdbXT8g b3JkZXJfbmFtZXMpIHsKLSAgICAgICAgIHN0cmluZ1tdPyBlbmdpbmVfbmFtZXMgPSB1bm93bmVk X2VuZ2luZV9uYW1lczsKLSAKLS0gICAgICAgIGlmIChlbmdpbmVfbmFtZXMgPT0gbnVsbCB8fCBl bmdpbmVfbmFtZXMubGVuZ3RoID09IDApCi0tICAgICAgICAgICAgZW5naW5lX25hbWVzID0geyJ4 a2I6dXM6OmVuZyJ9OwotKyAgICAgICAgaWYgKGVuZ2luZV9uYW1lcyA9PSBudWxsIHx8IGVuZ2lu ZV9uYW1lcy5sZW5ndGggPT0gMCkgewotKyAgICAgICAgICAgIGlmIChtX2lzX3dheWxhbmQpCi0r ICAgICAgICAgICAgICAgIGVuZ2luZV9uYW1lcyA9IHt9OwotKyAgICAgICAgICAgIGVsc2UKLSsg ICAgICAgICAgICAgICAgZW5naW5lX25hbWVzID0geyJ4a2I6dXM6OmVuZyJ9OwotKyAgICAgICAg fQotIAotICAgICAgICAgc3RyaW5nW10gbmFtZXMgPSB7fTsKLSAKLSAgICAgICAgIGZvcmVhY2gg KHZhciBuYW1lIGluIG9yZGVyX25hbWVzKSB7Ci0rICAgICAgICAgICAgaWYgKG1faXNfd2F5bGFu ZCAmJiBuYW1lLmhhc19wcmVmaXgoInhrYjoiKSkKLSsgICAgICAgICAgICAgICAgY29udGludWU7 Ci0gICAgICAgICAgICAgaWYgKG5hbWUgaW4gZW5naW5lX25hbWVzKQotICAgICAgICAgICAgICAg ICBuYW1lcyArPSBuYW1lOwotICAgICAgICAgfQotIAotICAgICAgICAgZm9yZWFjaCAodmFyIG5h bWUgaW4gZW5naW5lX25hbWVzKSB7Ci0rICAgICAgICAgICAgaWYgKG1faXNfd2F5bGFuZCAmJiBu YW1lLmhhc19wcmVmaXgoInhrYjoiKSkKLSsgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg ICAgICAgICAgaWYgKG5hbWUgaW4gbmFtZXMpCi0gICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot ICAgICAgICAgICAgIG5hbWVzICs9IG5hbWU7Ci1AQCAtMTAxMSw5ICsxMDY2LDE0IEBAIGNsYXNz IFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotIAl9Ci0gCi0gICAgICAgICBpZiAobV9lbmdp bmVzLmxlbmd0aCA9PSAwKSB7Ci0tICAgICAgICAgICAgbV9lbmdpbmVzID0gZW5naW5lczsKLS0g ICAgICAgICAgICBzd2l0Y2hfZW5naW5lKDAsIHRydWUpOwotLSAgICAgICAgICAgIHJ1bl9wcmVs b2FkX2VuZ2luZXMoZW5naW5lcywgMSk7Ci0rICAgICAgICAgICAgaWYgKGVuZ2luZXMubGVuZ3Ro ID4gMCkgewotKyAgICAgICAgICAgICAgICBtX2VuZ2luZXMgPSBlbmdpbmVzOwotKyAgICAgICAg ICAgICAgICBzd2l0Y2hfZW5naW5lKDAsIHRydWUpOwotKyAgICAgICAgICAgICAgICBydW5fcHJl bG9hZF9lbmdpbmVzKGVuZ2luZXMsIDEpOwotKyAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAg ICAgICAgICAgIG1fY2FuZGlkYXRlX3BhbmVsLnNldF9sYW5ndWFnZShuZXcgUGFuZ28uQXR0ckxh bmd1YWdlKAotKyAgICAgICAgICAgICAgICAgICAgICAgIFBhbmdvLkxhbmd1YWdlLmZyb21fc3Ry aW5nKG51bGwpKSk7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg ICAgICB2YXIgY3VycmVudF9lbmdpbmUgPSBtX2VuZ2luZXNbMF07Ci0gICAgICAgICAgICAgbV9l bmdpbmVzID0gZW5naW5lczsKLUBAIC0xNDc4LDYgKzE1MzgsOCBAQCBjbGFzcyBQYW5lbCA6IElC dXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAgICAgIC8qIERvIG5vdCBjaGFuZ2UgdGhlIG9yZGVyIG9m IG1fZW5naW5lcyBkdXJpbmcgcnVubmluZyBzd2l0Y2hlci4gKi8KLSAgICAgICAgIGlmIChtX3N3 aXRjaGVyLmlzX3J1bm5pbmcoKSkKLSAgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICBpZiAo bV9lbmdpbmVzLmxlbmd0aCA9PSAwKQotKyAgICAgICAgICAgIHJldHVybjsKLSAKLSAgICAgICAg IGlmIChtX2ljb25fdHlwZSA9PSBJY29uVHlwZS5JTkRJQ0FUT1IpIHsKLSAgICAgICAgICAgICAv LyBXYWl0IGZvciB0aGUgY2FsbGJhY2sgb2YgdGhlIHNlc3Npb24gYnVzLgotLS0gCi0yLjM0LjEK LQotRnJvbSBiY2E3YmYwZjk3MjMwODA2YTI2ZjUzYzc5ODA1MDQwODEwOGNmYjNkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWlrZSBGQUJJQU4gPG1mYWJpYW5AcmVkaGF0LmNvbT4K LURhdGU6IFdlZCwgMjUgTWF5IDIwMjIgMjM6MDc6MjQgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0g ZGF0YS9kY29uZjogVXBkYXRlIHhrYi1sYXRpbi1sYXlvdXRzIGluIGdzY2hlbWEKLQotQWRkIG1v cmUga2V5Ym9hcmQgbGF5b3V0cyB3aGljaCBjYW5ub3QgcHJvZHVjZSBBU0NJSSB0bwotZGF0YS9k Y29uZi9vcmcuZnJlZWRlc2t0b3AuaWJ1cy5nc2NoZW1hLnhtbAotUmVtb3ZlICJtYWwiIGFuZCAi bWtkIiwgdGhlcmUgYXJlIG5vIHN1Y2ggbGF5b3V0cy4KLQotQlVHPWh0dHBzOi8vZ2l0aHViLmNv bS9pYnVzL2lidXMvaXNzdWVzLzI0MDQKLS0tLQotIGRhdGEvZGNvbmYvb3JnLmZyZWVkZXNrdG9w LmlidXMuZ3NjaGVtYS54bWwgfCA0NyArKysrKysrKysrKysrKysrKysrKy0KLSAxIGZpbGUgY2hh bmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZGF0 YS9kY29uZi9vcmcuZnJlZWRlc2t0b3AuaWJ1cy5nc2NoZW1hLnhtbCBiL2RhdGEvZGNvbmYvb3Jn LmZyZWVkZXNrdG9wLmlidXMuZ3NjaGVtYS54bWwKLWluZGV4IDUxNmY3NTIwLi44YjE4MWQ3NiAx MDA2NDQKLS0tLSBhL2RhdGEvZGNvbmYvb3JnLmZyZWVkZXNrdG9wLmlidXMuZ3NjaGVtYS54bWwK LSsrKyBiL2RhdGEvZGNvbmYvb3JnLmZyZWVkZXNrdG9wLmlidXMuZ3NjaGVtYS54bWwKLUBAIC0y OCw3ICsyOCw1MiBAQAotICAgICAgIDxkZXNjcmlwdGlvbj5UaGUgc2F2ZWQgdmVyc2lvbiBudW1i ZXIgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHZlcnNp b24gb2YgdGhlIHByZXZpb3VzIGluc3RhbGxlZCBpYnVzIGFuZCBvbmUgb2YgdGhlIGN1cnJlbnQg aWJ1cy48L2Rlc2NyaXB0aW9uPgotICAgICA8L2tleT4KLSAgICAgPGtleSBuYW1lPSJ4a2ItbGF0 aW4tbGF5b3V0cyIgdHlwZT0iYXMiPgotLSAgICAgIDxkZWZhdWx0PlsgJ2FyYScsICdiZycsICdj eicsICdkZXYnLCAnZ3InLCAnZ3VyJywgJ2luJywgJ2pwKGthbmEpJywgJ21hbCcsICdta2QnLCAn cnUnLCAndWEnIF08L2RlZmF1bHQ+Ci0rICAgICAgPGRlZmF1bHQ+Ci0rICAgICAgICBbICdhZics ICdhZihmYS1vbHBjKScsICdhZihwcy1vbHBjKScsICdhZihwcyknLCAnYWYodXopJywKLSsgICAg ICAgICdhZih1ei1vbHBjKScsICdhbScsICdhbShlYXN0ZXJuKScsICdhbShlYXN0ZXJuLWFsdCkn LAotKyAgICAgICAgJ2FtKHBob25ldGljKScsICdhbShwaG9uZXRpYy1hbHQpJywgJ2FtKHdlc3Rl cm4pJywgJ2FyYScsCi0rICAgICAgICAnYXJhKGF6ZXJ0eSknLCAnYXJhKGF6ZXJ0eV9kaWdpdHMp JywgJ2FyYShidWNrd2FsdGVyKScsCi0rICAgICAgICAnYXJhKGRpZ2l0cyknLCAnYXJhKHF3ZXJ0 eSknLCAnYXJhKHF3ZXJ0eV9kaWdpdHMpJywKLSsgICAgICAgICdheihjeXJpbGxpYyknLCAnYmQn LCAnYmQocHJvYmhhdCknLCAnYmcnLCAnYmcoYmFzX3Bob25ldGljKScsCi0rICAgICAgICAnYmco cGhvbmV0aWMpJywgJ2JyYWknLCAnYnJhaShsZWZ0X2hhbmQpJywgJ2JyYWkocmlnaHRfaGFuZCkn LAotKyAgICAgICAgJ2J0JywgJ2J5JywgJ2J5KGxlZ2FjeSknLCAnY2EoaWtlKScsICdjYShtdWx0 aS0yZ3IpJywKLSsgICAgICAgICdjbih0aWIpJywgJ2NuKHRpYl9hc2NpaW51bSknLCAnY24odWcp JywgJ2N6JywgJ2N6KHVjdyknLAotKyAgICAgICAgJ2RlKHJ1KScsICdkZXYnLCAnZXQnLCAnZnIo Z2VvKScsICdnZScsICdnZShvcyknLCAnZ3InLAotKyAgICAgICAgJ2dyKGV4dGVuZGVkKScsICdn cihub2RlYWRrZXlzKScsICdncihwb2x5dG9uaWMpJywKLSsgICAgICAgICdncihzaW1wbGUpJywg J2d1cicsICdpbCcsICdpbChiaWJsaWNhbCknLCAnaWwobHl4KScsCi0rICAgICAgICAnaWwocGhv bmV0aWMpJywgJ2luJywgJ2luKGJlbiknLCAnaW4oYmVuX2JhaXNoYWtoaSknLAotKyAgICAgICAg J2luKGJlbl9ib3Jub25hKScsICdpbihiZW5fZ2l0YW5qYWxpKScsICdpbihiZW5faW5zY3JpcHQp JywKLSsgICAgICAgICdpbihiZW5fcHJvYmhhdCknLCAnaW4oYm9sbmFncmkpJywgJ2luKGRldmEp JywgJ2luKGd1aiknLAotKyAgICAgICAgJ2luKGd1cnUpJywgJ2luKGhpbi1rYWdhcGEpJywgJ2lu KGhpbi13eCknLCAnaW4oamhlbHVtKScsCi0rICAgICAgICAnaW4oa2FuKScsICdpbihrYW4ta2Fn YXBhKScsICdpbihtYWwpJywgJ2luKG1hbF9lbmhhbmNlZCknLAotKyAgICAgICAgJ2luKG1hbF9s YWxpdGhhKScsICdpbihtYXIta2FnYXBhKScsICdpbihvcmkpJywKLSsgICAgICAgICdpbihzYW4t a2FnYXBhKScsICdpbih0YW0pJywgJ2luKHRhbV90YW1pbG5ldCknLAotKyAgICAgICAgJ2luKHRh bV90YW1pbG5ldF9UQUIpJywgJ2luKHRhbV90YW1pbG5ldF9UU0NJSSknLAotKyAgICAgICAgJ2lu KHRhbV90YW1pbG5ldF93aXRoX3RhbV9udW1zKScsICdpbih0ZWwpJywgJ2luKHRlbC1rYWdhcGEp JywKLSsgICAgICAgICdpbih1cmQtcGhvbmV0aWMpJywgJ2luKHVyZC1waG9uZXRpYzMpJywgJ2lu KHVyZC13aW5rZXlzKScsCi0rICAgICAgICAnaXEnLCAnaXInLCAnaXIocGVzX2tleXBhZCknLCAn anAoa2FuYSknLCAnanAobWFjKScsICdrZycsCi0rICAgICAgICAna2cocGhvbmV0aWMpJywgJ2to JywgJ2t6JywgJ2t6KGthenJ1cyknLCAna3oocnVza2F6KScsICdsYScsCi0rICAgICAgICAnbGEo c3RlYSknLCAnbGsnLCAnbGsodGFtX1RBQiknLCAnbGsodGFtX3VuaWNvZGUpJywgJ21hJywKLSsg ICAgICAgICdtYSh0aWZpbmFnaCknLCAnbWEodGlmaW5hZ2gtYWx0KScsCi0rICAgICAgICAnbWEo dGlmaW5hZ2gtYWx0LXBob25ldGljKScsICdtYSh0aWZpbmFnaC1leHRlbmRlZCknLAotKyAgICAg ICAgJ21hKHRpZmluYWdoLWV4dGVuZGVkLXBob25ldGljKScsICdtYSh0aWZpbmFnaC1waG9uZXRp YyknLAotKyAgICAgICAgJ21lKGN5cmlsbGljKScsICdtZShjeXJpbGxpY2FsdGVybmF0ZXF1b3Rl cyknLAotKyAgICAgICAgJ21lKGN5cmlsbGljeXopJywgJ21rJywgJ21rKG5vZGVhZGtleXMpJywg J21tJywgJ21uJywgJ212JywKLSsgICAgICAgICducCcsICdwaChjYXBld2VsbC1kdm9yYWstYmF5 KScsICdwaChjYXBld2VsbC1xd2VyZjJrNi1iYXkpJywKLSsgICAgICAgICdwaChjb2xlbWFrLWJh eSknLCAncGgoZHZvcmFrLWJheSknLCAncGgocXdlcnR5LWJheSknLCAncGsnLAotKyAgICAgICAg J3BrKGFyYSknLCAncGsoc25kKScsICdwayh1cmQtY3J1bHApJywgJ3BrKHVyZC1ubGEpJywKLSsg ICAgICAgICdwbChydV9waG9uZXRpY19kdm9yYWspJywgJ3JzJywgJ3JzKGFsdGVybmF0ZXF1b3Rl cyknLAotKyAgICAgICAgJ3JzKHJ1ZSknLCAncnMoeXopJywgJ3J1JywgJ3J1KGJhayknLCAncnUo Y2htKScsICdydShjdiknLAotKyAgICAgICAgJ3J1KGRvcyknLCAncnUoa29tKScsICdydShsZWdh Y3kpJywgJ3J1KG1hYyknLAotKyAgICAgICAgJ3J1KG9zX2xlZ2FjeSknLCAncnUob3Nfd2lua2V5 cyknLCAncnUocGhvbmV0aWMpJywKLSsgICAgICAgICdydShwaG9uZXRpY193aW5rZXlzKScsICdy dShzYWgpJywgJ3J1KHNycCknLCAncnUodHQpJywKLSsgICAgICAgICdydSh0eXBld3JpdGVyKScs ICdydSh0eXBld3JpdGVyLWxlZ2FjeSknLCAncnUodWRtKScsCi0rICAgICAgICAncnUoeGFsKScs ICdzZShydXMpJywgJ3NlKHJ1c19ub2RlYWRrZXlzKScsICdzZShzd2wpJywgJ3N5JywKLSsgICAg ICAgICdzeShzeWMpJywgJ3N5KHN5Y19waG9uZXRpYyknLCAndGgnLCAndGgocGF0KScsICd0aCh0 aXMpJywKLSsgICAgICAgICd0aicsICd0aihsZWdhY3kpJywgJ3R6JywgJ3VhJywgJ3VhKGhvbW9w aG9uaWMpJywKLSsgICAgICAgICd1YShsZWdhY3kpJywgJ3VhKHBob25ldGljKScsICd1YShyc3R1 KScsICd1YShyc3R1X3J1KScsCi0rICAgICAgICAndWEodHlwZXdyaXRlciknLCAndWEod2lua2V5 cyknLCAndXMoY2hyKScsICd1cyhydXMpJywgJ3V6JyBdCi0rICAgICAgPC9kZWZhdWx0PgotICAg ICAgIDxzdW1tYXJ5PkxhdGluIGxheW91dHMgd2hpY2ggaGF2ZSBubyBBU0NJSTwvc3VtbWFyeT4K LSAgICAgICA8ZGVzY3JpcHRpb24+VVMgbGF5b3V0IGlzIGFwcGVuZGVkIHRvIHRoZSBMYXRpbiBs YXlvdXRzLiB2YXJpYW50IGNhbiBiZSBvbWl0dGVkLjwvZGVzY3JpcHRpb24+Ci0gICAgIDwva2V5 PgotLS0gCi0yLjM1LjMKLQotRnJvbSAxNmRmNjRlZGFkYzIxZjUwOTA2ZTU0NDJiNzM0MjViOTI1 NmZiZjY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5m dWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyNSBNYXkgMjAyMiAyMzowNzozMyArMDkw MAotU3ViamVjdDogW1BBVENIXSBzcmMvdGVzdHM6IEFkZCB4a2ItbGF0aW4tbGF5b3V0cyBjYXNl Ci0KLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3Vlcy8yNDA0Ci0tLS0KLSBz cmMvdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgfCAgMjYgKysrKysrLS0KLSBzcmMvdGVzdHMvcnVu dGVzdCAgICAgICAgICAgfCAgIDEgKwotIHNyYy90ZXN0cy94a2ItbGF0aW4tbGF5b3V0cyB8IDEz MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQs IDE1MCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDc1NSBz cmMvdGVzdHMveGtiLWxhdGluLWxheW91dHMKLQotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9NYWtl ZmlsZS5hbSBiL3NyYy90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggZjkzMmYxOGYuLmNhNTI4NWJk IDEwMDY0NAotLS0tIGEvc3JjL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvdGVzdHMvTWFr ZWZpbGUuYW0KLUBAIC00MSw4ICs0MSw5IEBAIHByb2dfbGRhZGQgPVwKLSAgICAgJCh0b3BfYnVp bGRkaXIpL3NyYy9saWJpYnVzLUBJQlVTX0FQSV9WRVJTSU9OQC5sYSAgICAgICAgICAgICAgICAg ICBcCi0gICAgICQoTlVMTCkKLSAKLS1ub2luc3RfUFJPR1JBTVMgPSAkKFRFU1RTKQotLVRFU1RT ID0gXAotK25vaW5zdF9QUk9HUkFNUyA9ICQoVEVTVFNfQykKLStub2luc3RfU0NSSVBUUyA9ICQo VEVTVFNfU0NSSVBUKQotK1RFU1RTX0MgPSBcCi0gICAgIGlidXMtYnVzICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICBpYnVzLWNvbmZpZyAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg aWJ1cy1jb25maWdzZXJ2aWNlICAgICAgICAgICAgICBcCi1AQCAtNTYsMTYgKzU3LDI1IEBAIFRF U1RTID0gXAotICAgICBpYnVzLXV0aWwgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgJChO VUxMKQotIAotK1RFU1RTX1NDUklQVCA9IFwKLSsgICAgeGtiLWxhdGluLWxheW91dHMgICAgICAg ICAgICAgICBcCi0rICAgICQoTlVMTCkKLSsKLStURVNUUyA9IFwKLSsgICAgJChURVNUU19DKSAg ICAgICAgICAgICAgICAgICAgICBcCi0rICAgICQoVEVTVFNfU0NSSVBUKSAgICAgICAgICAgICAg ICAgXAotKyAgICAkKE5VTEwpCi0rCi0gQ0xFQU5GSUxFUyA9Ci0gCi0gaWYgRU5BQkxFX0VOR0lO RQotLVRFU1RTICs9IGlidXMtZW5naW5lLXN3aXRjaAotK1RFU1RTX0MgKz0gaWJ1cy1lbmdpbmUt c3dpdGNoCi0gZW5kaWYKLSAKLSBpZiBFTkFCTEVfR1RLMwotLVRFU1RTICs9IGlidXMtY29tcG9z ZQotK1RFU1RTX0MgKz0gaWJ1cy1jb21wb3NlCi0gaWYgRU5BQkxFX1hURVNUCi0tVEVTVFMgKz0g aWJ1cy1rZXlwcmVzcwotK1RFU1RTX0MgKz0gaWJ1cy1rZXlwcmVzcwotIGVuZGlmCi0gZW5kaWYK LSAKLUBAIC05OSw5ICsxMDksMTAgQEAgQ0xFQU5GSUxFUyArPSBcCi0gICAgIG9yZy5mcmVlZGVz a3RvcC5JQnVzLkRlc2t0b3AuVGVzdGluZy5kZXNrdG9wIFwKLSAgICAgJChOVUxMKQotIAotLXRl c3RfZXhlY3NfUFJPR1JBTVMgPSAkKFRFU1RTKQotK3Rlc3RfZXhlY3NfUFJPR1JBTVMgPSAkKFRF U1RTX0MpCi0rdGVzdF9leGVjc19TQ1JJUFRTID0gJChURVNUU19TQ1JJUFQpCi0gaWYgRU5BQkxF X0dUSzMKLS10ZXN0X2V4ZWNzX1NDUklQVFMgPSBpYnVzLWNvbXBvc2UtbG9jYWxlcwotK3Rlc3Rf ZXhlY3NfU0NSSVBUUyArPSBpYnVzLWNvbXBvc2UtbG9jYWxlcwotIENMRUFORklMRVMgKz0gXAot ICAgICBpYnVzLWNvbXBvc2UtbG9jYWxlcyBcCi0gICAgICQoTlVMTCkKLUBAIC0xMzgsNiArMTQ5 LDcgQEAgaWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVubmVyOiBpYnVzLWRlc2t0b3AtdGVzdGluZy1y dW5uZXIuaW4KLSAKLSBFWFRSQV9ESVNUID0gXAotICAgICAkKHRlc3RfbWV0YXNfaW4pIFwKLSsg ICAgJChURVNUU19TQ1JJUFQpIFwKLSAgICAgcnVudGVzdCBcCi0gICAgIGlidXMtY29tcG9zZS5l bW9qaSBcCi0gICAgIGlidXMtY29tcG9zZS5lbnYgXAotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9y dW50ZXN0IGIvc3JjL3Rlc3RzL3J1bnRlc3QKLWluZGV4IGE2ZTQxOTRiLi5hMjI5MTQwYSAxMDA3 NTUKLS0tLSBhL3NyYy90ZXN0cy9ydW50ZXN0Ci0rKysgYi9zcmMvdGVzdHMvcnVudGVzdAotQEAg LTM1LDYgKzM1LDcgQEAgaWJ1cy1lbmdpbmUtc3dpdGNoCi0gaWJ1cy1jb21wb3NlCi0gaWJ1cy1r ZXlwcmVzcwotIHRlc3Qtc3RyZXNzCi0reGtiLWxhdGluLWxheW91dHMKLSAiCi0gSUJVU19TQ0hF TUFfRklMRT0nb3JnLmZyZWVkZXNrdG9wLmlidXMuZ3NjaGVtYS54bWwnCi0gR1RLX1FVRVJZX01P RFVMRT1ndGstcXVlcnktaW1tb2R1bGVzLTMuMC0zMgotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy94 a2ItbGF0aW4tbGF5b3V0cyBiL3NyYy90ZXN0cy94a2ItbGF0aW4tbGF5b3V0cwotbmV3IGZpbGUg bW9kZSAxMDA3NTUKLWluZGV4IDAwMDAwMDAwLi5mOGRjZWQ2YgotLS0tIC9kZXYvbnVsbAotKysr IGIvc3JjL3Rlc3RzL3hrYi1sYXRpbi1sYXlvdXRzCi1AQCAtMCwwICsxLDEzMCBAQAotKyMhL2Jp bi9iYXNoCi0rCi0rUFJPR05BTUU9YGJhc2VuYW1lICQwYAotK1ZFUlNJT049MC4xCi0rIyBQT1NJ WCBzaCBoYXMgbm8gJ2VjaG8gLWUnCi0rOiAke0VDSE86PScvdXNyL2Jpbi9lY2hvJ30KLStUTVBE SVI9Ci0rSU5TVEFMTEVEX1NDSEVNQVNfRElSPQotKwotKwotK3VzYWdlKCkKLSt7Ci0rICAgICRF Q0hPIC1lIFwKLSsiVGhpcyB0ZXN0IHJ1bnMgc2V0eGtibWFwIGNvbW1hbmQgZm9yIGdzZXR0aW5n cyB4a2ItbGF0aW4tbGF5b3V0cyB2YWx1ZVxuIiAgICAgXAotKyIkUFJPR05BTUUgW09QVElPTlPi gKZdXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsiXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyJPUFRJT05TOlxuIiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rIi1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaGVscFxuIiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsiLXYsIC0tdmVyc2lvbiAgICAgICAgICAgICAg ICAgICAgU2hvdyB2ZXJzaW9uXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyIt RCwgLS1zY2hlbWFzZGlyPURJUiAgICAgICAgICAgICBMb2FkIHRoZSBsYXRlc3Qgc2NoZW1hIGZp bGUgaW4gRElSXG4iICAgICAgICBcCi0rIiIKLSt9Ci0rCi0rCi0rcGFyc2VfYXJncygpCi0rewot KyAgICAjIFRoaXMgaXMgR05VIGdldG9wdC4gInN1ZG8gcG9ydCBnZXRvcHQiIGluIEJTRD8KLSsg ICAgQVJHUz1gZ2V0b3B0IC1vIGhEOlR2IC0tbG9uZyBcCi0rICAgICAgICAgIGhlbHAsc2NoZW1h c2RpcjosdGFwLHZlcnNpb25cCi0rICAgICAgICAtLSAiJEAiYDsKLSsgICAgZXZhbCBzZXQgLS0g IiRBUkdTIgotKyAgICB3aGlsZSBbIDEgXSA7IGRvCi0rICAgICAgICBjYXNlICIkMSIgaW4KLSsg ICAgICAgIC1oIHwgLS1oZWxwICkgICAgICAgIHVzYWdlOyBleGl0IDA7OwotKyAgICAgICAgLUQg fCAtLXNjaGVtYXNkaXIgKSAgSU5TVEFMTEVEX1NDSEVNQVNfRElSPSIkMiI7IHNoaWZ0IDI7Owot KyAgICAgICAgLVQgfCAtLXRhcCApICAgICAgICAgc2hpZnQ7OyAjIGlnbm9yZSB0aGUgb3B0aW9u Ci0rICAgICAgICAtdiB8IC0tdmVyc2lvbiApICAgICAkRUNITyAtZSAiJFZFUlNJT04iOyBleGl0 IDA7OwotKyAgICAgICAgLS0gKSAgICAgICAgICAgICAgICAgc2hpZnQ7IGJyZWFrOzsKLSsgICAg ICAgICogKSAgICAgICAgICAgICAgICAgIHNoaWZ0OzsKLSsgICAgICAgIGVzYWMKLSsgICAgZG9u ZQotK30KLSsKLSsKLStpbml0KCkKLSt7Ci0rICAgIHNldCAtZQotKwotKyAgICAjIGdub21lLWNv bnRpbnVvdXMgZG9lc24ndCBoYXZlIGEgbWFjaGluZS1pZCBzZXQsIHdoaWNoCi0rICAgICMgYnJl YWtzIGRidXMtbGF1bmNoLiAgVGhlcmUncyBkYnVzLXJ1bi1zZXNzaW9uIHdoaWNoIGlzCi0rICAg ICMgYmV0dGVyLCBidXQgbm90IGV2ZXJ5b25lIGhhcyBpdCB5ZXQuCi0rICAgIGV4cG9ydCBEQlVT X0ZBVEFMX1dBUk5JTkdTPTAKLSsgICAgZXhwb3J0IFRNUERJUj0kKG1rdGVtcCAtZCAtLXRtcGRp cj0iJFBXRCIpCi0rICAgIGV4cG9ydCBYREdfQ09ORklHX0hPTUU9IiRUTVBESVIvY29uZmlnIgot KyAgICBleHBvcnQgWERHX0NBQ0hFX0hPTUU9IiRUTVBESVIvY2FjaGUiCi0rICAgIGV4cG9ydCBH U0VUVElOR1NfU0NIRU1BX0RJUj0iJFRNUERJUi9zY2hlbWFzIgotKyAgICBta2RpciAtcCAkWERH X0NPTkZJR19IT01FICRYREdfQ0FDSEVfSE9NRSAkR1NFVFRJTkdTX1NDSEVNQV9ESVIKLSsKLSsg ICAgZXZhbCBgZGJ1cy1sYXVuY2ggLS1zaC1zeW50YXhgCi0rCi0rICAgIHRyYXAgJ3JtIC1yZiAk VE1QRElSOyBraWxsICREQlVTX1NFU1NJT05fQlVTX1BJRDsgc2V0eGtibWFwIC1sYXlvdXQgdXMn IEVSUgotKwotKyAgICAjIGluIGNhc2UgdGhhdCBzY2hlbWEgaXMgbm90IGluc3RhbGxlZCBvbiB0 aGUgc3lzdGVtCi0rICAgIGdsaWItY29tcGlsZS1zY2hlbWFzIC0tdGFyZ2V0ZGlyICIkR1NFVFRJ TkdTX1NDSEVNQV9ESVIiICIkSU5TVEFMTEVEX1NDSEVNQVNfRElSIgotK30KLSsKLSsKLStmaW5p dCgpCi0rewotKyAgICAjIGRidXMtbGF1bmNoIGFuZCBnc2V0dGluZ3MgcnVuIC91c3IvbGliKi9n dmZzZC1mdXNlICRUTVBESVIvY2FjaGUvZ3ZmcyAtZgotKyAgICAjIHZpYSBzeXN0ZW1kIHNpbmNl IGd2ZnMgMS40NS45MCBpbiBGZWRvcmEgMzMKLSsgICAgIyBhbmQgcm0gJFRNUERJUiBjb3VsZCBi ZSBmYWlsZWQgdW50aWwgdW1vdW50IHdvdWxkIGJlIGNhbGxlZC4KLSsgICAgaWYgWyAtZCAkVE1Q RElSL2NhY2hlL2d2ZnMgXSA7IHRoZW4KLSsgICAgICAgIHVtb3VudCAkVE1QRElSL2NhY2hlL2d2 ZnMKLSsgICAgZmkKLSsgICAgcm0gLXJmICRUTVBESVIKLSsKLSsgICAga2lsbCAkREJVU19TRVNT SU9OX0JVU19QSUQKLSsgICAgZXhpdCAwCi0rfQotKwotKwotK3Rlc3RfeGtiX2tleW1hcHMoKQot K3sKLSsgICAgIyBMb29wIG92ZXIgdG9wIGxldmVsIHNjaGVtYXMgc2luY2UgImdzZXR0aW5ncyBs aXN0LXJlY3Vyc2l2ZWx5IiBvbmx5Ci0rICAgICMgbG9va3MgZm9yIGRpcmVjdCBjaGlsZHJlbi4K LSsgICAgeGtiX2xhdGluX2xheW91dHM9YGdzZXR0aW5ncyBnZXQgb3JnLmZyZWVkZXNrdG9wLmli dXMuZ2VuZXJhbCB4a2ItbGF0aW4tbGF5b3V0c2AKLSsgICAgd2hpbGUgcmVhZCBrZXltYXAgOyBk bwotKyAgICAgICAgZXZhbCBrZXltYXA9IiRrZXltYXAiCi0rICAgICAgICBIQVNfVkFSSUFOVD0k KCRFQ0hPICIka2V5bWFwIiB8IGdyZXAgJygnIDI+IC9kZXYvbnVsbCkgfHw6Ci0rICAgICAgICBp ZiBbICJ4JEhBU19WQVJJQU5UIiAhPSAieCIgXSA7IHRoZW4KLSsgICAgICAgICAgICBsYXlvdXQ9 JCgkRUNITyAiJGtleW1hcCIgfCBzZWQgLWUgJ3MvXChbXihdKlwpKFteKV0qKS9cMS8nKQotKyAg ICAgICAgICAgIHZhcmlhbnQ9JCgkRUNITyAiJGtleW1hcCIgfCBzZWQgLWUgJ3MvW14oXSooXChb XildKlwpKS9cMS8nKQotKyAgICAgICAgICAgICRFQ0hPIHNldHhrYm1hcCAtbGF5b3V0ICRsYXlv dXQgLXZhcmlhbnQgJHZhcmlhbnQKLSsgICAgICAgICAgICBzZXR4a2JtYXAgLWxheW91dCAkbGF5 b3V0IC12YXJpYW50ICR2YXJpYW50Ci0rICAgICAgICBlbHNlCi0rICAgICAgICAgICAgbGF5b3V0 PSIka2V5bWFwIgotKyAgICAgICAgICAgICRFQ0hPIHNldHhrYm1hcCAtbGF5b3V0ICRsYXlvdXQK LSsgICAgICAgICAgICBzZXR4a2JtYXAgLWxheW91dCAkbGF5b3V0Ci0rICAgICAgICBmaQotKyAg ICAgICAgaWYgWyAkPyAtbmUgMCBdIDsgdGhlbgotKyAgICAgICAgICAgICRFQ0hPICJFcnJvciBp biBsYXlvdXQgJGxheW91dCB2YXJpYW50ICR2YXJpYW50IgotKyAgICAgICAgICAgIHNldHhrYm1h cCAtbGF5b3V0IHVzCi0rICAgICAgICAgICAgZXhpdCAxCi0rICAgICAgICBmaQotKyAgICBkb25l IDw8IEVPRl9SRUFEX1hLQgotKyAgICBgJEVDSE8gJHhrYl9sYXRpbl9sYXlvdXRzIHwgc2VkIC1l ICdzL15cWy8vJyAtZSAncy9cXSQvLycgfCB0ciAiLCIgIlxuImAKLStFT0ZfUkVBRF9YS0IKLSsK LSsgICAgc2V0eGtibWFwIC1sYXlvdXQgdXMKLSt9Ci0rCi0rCi0rbWFpbigpCi0rewotKyAgICBw YXJzZV9hcmdzICIkQCIKLSsKLSsgICAgaWYgWyB4IiRJTlNUQUxMRURfU0NIRU1BU19ESVIiICE9 IHggXSA7IHRoZW4KLSsgICAgICAgIGluaXQKLSsgICAgZmkKLSsKLSsgICAgdGVzdF94a2Jfa2V5 bWFwcwotKwotKyAgICBpZiBbIHgiJElOU1RBTExFRF9TQ0hFTUFTX0RJUiIgIT0geCBdIDsgdGhl bgotKyAgICAgICAgZmluaXQKLSsgICAgZmkKLSt9Ci0rCi0rCi0rbWFpbiAiJEAiCi0tLSAKLTIu MzUuMwotCi1Gcm9tIDIzM2EzZjRkNGQzZGM2NzgyZTc0ZGI1YmY0ZTdjMjhmYWU3MjliYzkgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb2xsb3cgTWFuIDxob2xsb3dtYW5Ab3BlbnN1 c2Uub3JnPgotRGF0ZTogV2VkLCAyNiBKYW4gMjAyMiAwOTozNToxMSArMDgwMAotU3ViamVjdDog W1BBVENIIDEvM10gQWRkIGZ1bmN0aW9uYWxpdHkgdG8gY2hhbmdlIElCdXMgcGFuZWwgdGhlbWVz IHdpdGgKLSBhdmFpbGFibGUgR1RLIHRoZW1lcwotCi1UbyBhbGxvdyBJQnVzIHRvIGhhdmUgdGhl aXIgb3duIGNvbnRyb2wgb2YgdGhlbWVzLgotCi1odHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05P TUUvZ25vbWUtdHdlYWtzLy0vYmxvYi9iOWJhZGM0N2I5MmRkNzNmOGNlZGJkMmVmYzY2Y2JhZjNl YTI1NzczL2d0d2Vhay90d2Vha3MvdHdlYWtfZ3JvdXBfYXBwZWFyYW5jZS5weSNMNjkKLQotQlVH PWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvcHVsbC8yMzI3Ci0KLVNpZ25lZC1vZmYtYnk6 IEhvbGxvdyBNYW4gPGhvbGxvd21hbkBvcGVuc3VzZS5vcmc+Ci0tLS0KLSBkYXRhL2Rjb25mL29y Zy5mcmVlZGVza3RvcC5pYnVzLmdzY2hlbWEueG1sIHwgIDIwICsrKwotIHNldHVwL21haW4ucHkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMzcgKysrKysrKysrKysrKysrKysrKysK LSBzZXR1cC9zZXR1cC51aSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDk3ICsrKysr KysrKysrKystCi0gdWkvZ3RrMy9iaW5kaW5nY29tbW9uLnZhbGEgICAgICAgICAgICAgICAgICB8 ICA0NiArKysrKysrCi0gdWkvZ3RrMy9wYW5lbC52YWxhICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAxOCArKysKLSB1aS9ndGszL3BhbmVsYmluZGluZy52YWxhICAgICAgICAgICAgICAgICAg IHwgIDE4ICsrKwotIDYgZmlsZXMgY2hhbmdlZCwgMzM1IGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKLQotZGlmZiAtLWdpdCBhL2RhdGEvZGNvbmYvb3JnLmZyZWVkZXNrdG9wLmlidXMuZ3Nj aGVtYS54bWwgYi9kYXRhL2Rjb25mL29yZy5mcmVlZGVza3RvcC5pYnVzLmdzY2hlbWEueG1sCi1p bmRleCA4YjE4MWQ3Ni4uMDUxZjIxYTUgMTAwNjQ0Ci0tLS0gYS9kYXRhL2Rjb25mL29yZy5mcmVl ZGVza3RvcC5pYnVzLmdzY2hlbWEueG1sCi0rKysgYi9kYXRhL2Rjb25mL29yZy5mcmVlZGVza3Rv cC5pYnVzLmdzY2hlbWEueG1sCi1AQCAtMjEwLDYgKzIxMCwyNiBAQAotICAgICAgIDxzdW1tYXJ5 PkN1c3RvbSBmb250PC9zdW1tYXJ5PgotICAgICAgIDxkZXNjcmlwdGlvbj5DdXN0b20gZm9udCBu YW1lIGZvciBsYW5ndWFnZSBwYW5lbDwvZGVzY3JpcHRpb24+Ci0gICAgIDwva2V5PgotKyAgICA8 a2V5IG5hbWU9InVzZS1jdXN0b20tdGhlbWUiIHR5cGU9ImIiPgotKyAgICAgIDxkZWZhdWx0PmZh bHNlPC9kZWZhdWx0PgotKyAgICAgIDxzdW1tYXJ5PlVzZSBjdXN0b20gdGhlbWU8L3N1bW1hcnk+ Ci0rICAgICAgPGRlc2NyaXB0aW9uPlVzZSBjdXN0b20gdGhlbWUgbmFtZSBmb3IgbGFuZ3VhZ2Ug cGFuZWw8L2Rlc2NyaXB0aW9uPgotKyAgICA8L2tleT4KLSsgICAgPGtleSBuYW1lPSJjdXN0b20t dGhlbWUiIHR5cGU9InMiPgotKyAgICAgIDxkZWZhdWx0PidBZHdhaXRhJzwvZGVmYXVsdD4KLSsg ICAgICA8c3VtbWFyeT5DdXN0b20gdGhlbWU8L3N1bW1hcnk+Ci0rICAgICAgPGRlc2NyaXB0aW9u PkN1c3RvbSB0aGVtZSBuYW1lIGZvciBsYW5ndWFnZSBwYW5lbDwvZGVzY3JpcHRpb24+Ci0rICAg IDwva2V5PgotKyAgICA8a2V5IG5hbWU9InVzZS1jdXN0b20taWNvbiIgdHlwZT0iYiI+Ci0rICAg ICAgPGRlZmF1bHQ+ZmFsc2U8L2RlZmF1bHQ+Ci0rICAgICAgPHN1bW1hcnk+VXNlIGN1c3RvbSBp Y29uPC9zdW1tYXJ5PgotKyAgICAgIDxkZXNjcmlwdGlvbj5Vc2UgY3VzdG9tIGljb24gbmFtZSBm b3IgbGFuZ3VhZ2UgcGFuZWw8L2Rlc2NyaXB0aW9uPgotKyAgICA8L2tleT4KLSsgICAgPGtleSBu YW1lPSJjdXN0b20taWNvbiIgdHlwZT0icyI+Ci0rICAgICAgPGRlZmF1bHQ+J0Fkd2FpdGEnPC9k ZWZhdWx0PgotKyAgICAgIDxzdW1tYXJ5PkN1c3RvbSBpY29uPC9zdW1tYXJ5PgotKyAgICAgIDxk ZXNjcmlwdGlvbj5DdXN0b20gaWNvbiBuYW1lIGZvciBsYW5ndWFnZSBwYW5lbDwvZGVzY3JpcHRp b24+Ci0rICAgIDwva2V5PgotICAgICA8a2V5IG5hbWU9InVzZS1nbHlwaC1mcm9tLWVuZ2luZS1s YW5nIiB0eXBlPSJiIj4KLSAgICAgICA8ZGVmYXVsdD50cnVlPC9kZWZhdWx0PgotICAgICAgIDxz dW1tYXJ5PkNob29zZSBnbHlwaHMgd2l0aCBpbnB1dCBtZXRob2QncyBsYW5ndWFnZSBvbiBjYW5k aWRhdGUgd2luZG93PC9zdW1tYXJ5PgotZGlmZiAtLWdpdCBhL3NldHVwL21haW4ucHkgYi9zZXR1 cC9tYWluLnB5Ci1pbmRleCAxYjkwNTZhNi4uNzE4OTY2OTMgMTAwNjQ0Ci0tLS0gYS9zZXR1cC9t YWluLnB5Ci0rKysgYi9zZXR1cC9tYWluLnB5Ci1AQCAtMjksNiArMjksNyBAQCBpbXBvcnQgb3MK LSBpbXBvcnQgc2lnbmFsCi0gaW1wb3J0IHN5cwotIGltcG9ydCB0aW1lCi0raW1wb3J0IGdsb2IK LSAKLSBmcm9tIGdpIGltcG9ydCByZXF1aXJlX3ZlcnNpb24gYXMgZ2lfcmVxdWlyZV92ZXJzaW9u Ci0gZ2lfcmVxdWlyZV92ZXJzaW9uKCdHTGliJywgJzIuMCcpCi1AQCAtMTk2LDYgKzE5Nyw3OSBA QCBjbGFzcyBTZXR1cChvYmplY3QpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ3NlbnNpdGl2ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaW8u U2V0dGluZ3NCaW5kRmxhZ3MuR0VUKQotIAotKyAgICAgICAgIyBjdXN0b20gdGhlbWUKLSsgICAg ICAgIHNlbGYuX19tb2RlbF9jdXN0b21fdGhlbWUgPSBzZWxmLl9fYnVpbGRlci5nZXRfb2JqZWN0 KAotKyAgICAgICAgICAgICAgICAibW9kZWxfY3VzdG9tX3RoZW1lIikKLSsgICAgICAgIHNlbGYu X19jb21ib2JveF9jdXN0b21fdGhlbWUgPSBzZWxmLl9fYnVpbGRlci5nZXRfb2JqZWN0KAotKyAg ICAgICAgICAgICAgICAiY29tYm9ib3hfY3VzdG9tX3RoZW1lIikKLSsgICAgICAgIHNlbGYuX19j aGVja2J1dHRvbl9jdXN0b21fdGhlbWUgPSBzZWxmLl9fYnVpbGRlci5nZXRfb2JqZWN0KAotKyAg ICAgICAgICAgICAgICAiY2hlY2tidXR0b25fY3VzdG9tX3RoZW1lIikKLSsKLSsgICAgICAgIGRl ZiB1cGRhdGVfY29tYm9ib3hfY3VzdG9tX3RoZW1lKHNldHRpbmdzLCBrZXkpOgotKyAgICAgICAg ICAgIHRoZW1lX25hbWVfbGlzdCA9IHNlbGYuX19pbml0X2F2YWlsYWJsZV9ndGtfdGhlbWVzKCkK LSsgICAgICAgICAgICBzZWxmLl9fbW9kZWxfY3VzdG9tX3RoZW1lLmNsZWFyKCkKLSsgICAgICAg ICAgICBmb3IgbmFtZSBpbiB0aGVtZV9uYW1lX2xpc3Q6Ci0rICAgICAgICAgICAgICAgIHNlbGYu X19tb2RlbF9jdXN0b21fdGhlbWUuYXBwZW5kKFtuYW1lXSkKLSsgICAgICAgICAgICBjdXJyZW50 X3RoZW1lID0gc2VsZi5fX3NldHRpbmdzX3BhbmVsLmdldF9zdHJpbmcoa2V5KQotKyAgICAgICAg ICAgIHRyeToKLSsgICAgICAgICAgICAgICAgY3VycmVudF90aGVtZV9udW1iZXIgPSB0aGVtZV9u YW1lX2xpc3QuaW5kZXgoY3VycmVudF90aGVtZSkKLSsgICAgICAgICAgICBleGNlcHQgVmFsdWVF cnJvcjoKLSsgICAgICAgICAgICAgICAgc2VsZi5fX3NldHRpbmdzX3BhbmVsLnJlc2V0KGtleSkK LSsgICAgICAgICAgICAgICAgY3VycmVudF90aGVtZSA9IHNlbGYuX19zZXR0aW5nc19wYW5lbC5n ZXRfc3RyaW5nKGtleSkKLSsgICAgICAgICAgICAgICAgY3VycmVudF90aGVtZV9udW1iZXIgPSB0 aGVtZV9uYW1lX2xpc3QuaW5kZXgoY3VycmVudF90aGVtZSkKLSsgICAgICAgICAgICBzZWxmLl9f Y29tYm9ib3hfY3VzdG9tX3RoZW1lLnNldF9hY3RpdmUoY3VycmVudF90aGVtZV9udW1iZXIpCi0r Ci0rICAgICAgICB1cGRhdGVfY29tYm9ib3hfY3VzdG9tX3RoZW1lKE5vbmUsICdjdXN0b20tdGhl bWUnKQotKyAgICAgICAgc2VsZi5fX3NldHRpbmdzX3BhbmVsLmJpbmQoJ3VzZS1jdXN0b20tdGhl bWUnLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NoZWNrYnV0 dG9uX2N1c3RvbV90aGVtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdh Y3RpdmUnLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2lvLlNldHRpbmdz QmluZEZsYWdzLkRFRkFVTFQpCi0rICAgICAgICBzZWxmLl9fc2V0dGluZ3NfcGFuZWwuY29ubmVj dCgnY2hhbmdlZDo6Y3VzdG9tLXRoZW1lJywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVwZGF0ZV9jb21ib2JveF9jdXN0b21fdGhlbWUpCi0rICAgICAgICBzZWxmLl9fc2V0 dGluZ3NfcGFuZWwuYmluZCgndXNlLWN1c3RvbS10aGVtZScsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLl9fY29tYm9ib3hfY3VzdG9tX3RoZW1lLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbnNpdGl2ZScsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHaW8uU2V0dGluZ3NCaW5kRmxhZ3MuREVGQVVMVCkKLSsgICAg ICAgIHNlbGYuX19jb21ib2JveF9jdXN0b21fdGhlbWUuY29ubmVjdCgiY2hhbmdlZCIsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fb25fY29tYm9ib3hfY3VzdG9t X3RoZW1lX2NoYW5nZWQpCi0rCi0rCi0rICAgICAgICAjIGN1c3RvbSBpY29uCi0rICAgICAgICBz ZWxmLl9fbW9kZWxfY3VzdG9tX2ljb24gPSBzZWxmLl9fYnVpbGRlci5nZXRfb2JqZWN0KAotKyAg ICAgICAgICAgICAgICAibW9kZWxfY3VzdG9tX2ljb24iKQotKyAgICAgICAgc2VsZi5fX2NvbWJv Ym94X2N1c3RvbV9pY29uID0gc2VsZi5fX2J1aWxkZXIuZ2V0X29iamVjdCgKLSsgICAgICAgICAg ICAgICAgImNvbWJvYm94X2N1c3RvbV9pY29uIikKLSsgICAgICAgIHNlbGYuX19jaGVja2J1dHRv bl9jdXN0b21faWNvbiA9IHNlbGYuX19idWlsZGVyLmdldF9vYmplY3QoCi0rICAgICAgICAgICAg ICAgICJjaGVja2J1dHRvbl9jdXN0b21faWNvbiIpCi0rCi0rICAgICAgICBkZWYgdXBkYXRlX2Nv bWJvYm94X2N1c3RvbV9pY29uKHNldHRpbmdzLCBrZXkpOgotKyAgICAgICAgICAgIGljb25fbmFt ZV9saXN0ID0gc2VsZi5fX2luaXRfYXZhaWxhYmxlX2d0a19pY29ucygpCi0rICAgICAgICAgICAg c2VsZi5fX21vZGVsX2N1c3RvbV9pY29uLmNsZWFyKCkKLSsgICAgICAgICAgICBmb3IgbmFtZSBp biBpY29uX25hbWVfbGlzdDoKLSsgICAgICAgICAgICAgICAgc2VsZi5fX21vZGVsX2N1c3RvbV9p Y29uLmFwcGVuZChbbmFtZV0pCi0rICAgICAgICAgICAgY3VycmVudF9pY29uID0gc2VsZi5fX3Nl dHRpbmdzX3BhbmVsLmdldF9zdHJpbmcoa2V5KQotKyAgICAgICAgICAgIHRyeToKLSsgICAgICAg ICAgICAgICAgY3VycmVudF9pY29uX251bWJlciA9IGljb25fbmFtZV9saXN0LmluZGV4KGN1cnJl bnRfaWNvbikKLSsgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSsgICAgICAgICAgICAg ICAgc2VsZi5fX3NldHRpbmdzX3BhbmVsLnJlc2V0KGtleSkKLSsgICAgICAgICAgICAgICAgY3Vy cmVudF9pY29uID0gc2VsZi5fX3NldHRpbmdzX3BhbmVsLmdldF9zdHJpbmcoa2V5KQotKyAgICAg ICAgICAgICAgICBjdXJyZW50X2ljb25fbnVtYmVyID0gaWNvbl9uYW1lX2xpc3QuaW5kZXgoY3Vy cmVudF9pY29uKQotKyAgICAgICAgICAgIHNlbGYuX19jb21ib2JveF9jdXN0b21faWNvbi5zZXRf YWN0aXZlKGN1cnJlbnRfaWNvbl9udW1iZXIpCi0rCi0rICAgICAgICB1cGRhdGVfY29tYm9ib3hf Y3VzdG9tX2ljb24oTm9uZSwgJ2N1c3RvbS1pY29uJykKLSsgICAgICAgIHNlbGYuX19zZXR0aW5n c19wYW5lbC5iaW5kKCd1c2UtY3VzdG9tLWljb24nLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5fX2NoZWNrYnV0dG9uX2N1c3RvbV9pY29uLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZScsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHaW8uU2V0dGluZ3NCaW5kRmxhZ3MuREVGQVVMVCkKLSsgICAgICAgIHNl bGYuX19zZXR0aW5nc19wYW5lbC5jb25uZWN0KCdjaGFuZ2VkOjpjdXN0b20taWNvbicsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfY29tYm9ib3hfY3VzdG9tX2lj b24pCi0rICAgICAgICBzZWxmLl9fc2V0dGluZ3NfcGFuZWwuYmluZCgndXNlLWN1c3RvbS1pY29u JywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jb21ib2JveF9j dXN0b21faWNvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZW5zaXRp dmUnLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2lvLlNldHRpbmdzQmlu ZEZsYWdzLkRFRkFVTFQpCi0rICAgICAgICBzZWxmLl9fY29tYm9ib3hfY3VzdG9tX2ljb24uY29u bmVjdCgiY2hhbmdlZCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm Ll9fb25fY29tYm9ib3hfY3VzdG9tX2ljb25fY2hhbmdlZCkKLSsKLSAgICAgICAgICMgc2hvdyBp Y29uIG9uIHN5c3RlbSB0cmF5Ci0gICAgICAgICBzZWxmLl9fY2hlY2tidXR0b25fc2hvd19pY29u X29uX3N5c3RyYXkgPSBzZWxmLl9fYnVpbGRlci5nZXRfb2JqZWN0KAotICAgICAgICAgICAgICAg ICAiY2hlY2tidXR0b25fc2hvd19pY29uX29uX3N5c3RyYXkiKQotQEAgLTU4OCw2ICs2NjIsNjkg QEAgY2xhc3MgU2V0dXAob2JqZWN0KToKLSAgICAgICAgICAgICBfKCJVc2Ugc2hvcnRjdXQgd2l0 aCBzaGlmdCB0byBzd2l0Y2ggdG8gdGhlIHByZXZpb3VzIGlucHV0IG1ldGhvZCIpIAotICAgICAg ICAgZW50cnkuc2V0X3Rvb2x0aXBfdGV4dCh0b29sdGlwKQotIAotKyAgICBkZWYgX19pbml0X2F2 YWlsYWJsZV9ndGtfdGhlbWVzKHNlbGYpOgotKyAgICAgICAgcGF0aF9saXN0ID0gW10KLSsgICAg ICAgIHBhdGhfbGlzdC5hcHBlbmQob3MucGF0aC5qb2luKEdMaWIuZ2V0X2hvbWVfZGlyKCksICIu dGhlbWVzIikpCi0rICAgICAgICBwYXRoX2xpc3QuYXBwZW5kKG9zLnBhdGguam9pbihHTGliLmdl dF91c2VyX2RhdGFfZGlyKCksICJ0aGVtZXMiKSkKLSsgICAgICAgIHBhdGhfbGlzdC5leHRlbmQo bGlzdChtYXAobGFtYmRhIHg6IG9zLnBhdGguam9pbigKLSsgICAgICAgICAgICB4LCAidGhlbWVz IiksIEdMaWIuZ2V0X3N5c3RlbV9kYXRhX2RpcnMoKSkpKQotKyAgICAgICAgdGhlbWVfbmFtZV9s aXN0ID0gW10KLSsgICAgICAgIGd0a190aGVtZV9wYXRoID0gW10KLSsgICAgICAgIGZvciBwYXRo IGluIHBhdGhfbGlzdDoKLSsgICAgICAgICAgICBndGtfdGhlbWVfcGF0aC5leHRlbmQoZ2xvYi5n bG9iKHBhdGggKyAiLyovZ3RrLSovZ3RrLmNzcyIpKQotKyAgICAgICAgICAgIGd0a190aGVtZV9w YXRoLmV4dGVuZChnbG9iLmdsb2IocGF0aCArICIvKi9ndGstKi9ndGstZGFyay5jc3MiKSkKLSsg ICAgICAgIGZvciBwYXRoIGluIGd0a190aGVtZV9wYXRoOgotKyAgICAgICAgICAgIGZpbGVuYW1l ID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQotKyAgICAgICAgICAgIGFwcGVuZGl4ID0gIiIKLSsg ICAgICAgICAgICBpZiBmaWxlbmFtZSA9PSAiZ3RrLWRhcmsuY3NzIjoKLSsgICAgICAgICAgICAg ICAgYXBwZW5kaXggPSAiOmRhcmsiCi0rICAgICAgICAgICAgdGhlbWVfbmFtZV9saXN0LmFwcGVu ZChvcy5wYXRoLmJhc2VuYW1lKAotKyAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3Mu cGF0aC5kaXJuYW1lKHBhdGgpKSkgKyBhcHBlbmRpeCkKLSsKLSsgICAgICAgIHRoZW1lX25hbWVf bGlzdC5leHRlbmQoWwotKyAgICAgICAgICAgICdBZHdhaXRhJywgJ0Fkd2FpdGE6ZGFyaycsCi0r ICAgICAgICAgICAgJ0hpZ2hDb250cmFzdCcsICdIaWdoQ29udHJhc3RJbnZlcnNlJwotKyAgICAg ICAgXSkKLSsgICAgICAgIHRoZW1lX25hbWVfbGlzdCA9IGxpc3Qoc2V0KHRoZW1lX25hbWVfbGlz dCkpCi0rICAgICAgICB0aGVtZV9uYW1lX2xpc3Quc29ydCgpCi0rCi0rICAgICAgICByZXR1cm4g dGhlbWVfbmFtZV9saXN0Ci0rCi0rICAgIGRlZiBfX29uX2NvbWJvYm94X2N1c3RvbV90aGVtZV9j aGFuZ2VkKHNlbGYsIGNvbWJvYm94KToKLSsgICAgICAgIHRyZWVfaXRlciA9IHNlbGYuX19jb21i b2JveF9jdXN0b21fdGhlbWUuZ2V0X2FjdGl2ZV9pdGVyKCkKLSsgICAgICAgIGlmIHRyZWVfaXRl ciBpcyBub3QgTm9uZToKLSsgICAgICAgICAgICBtb2RlbCA9IHNlbGYuX19jb21ib2JveF9jdXN0 b21fdGhlbWUuZ2V0X21vZGVsKCkKLSsgICAgICAgICAgICB0aGVtZV9uYW1lID0gbW9kZWxbdHJl ZV9pdGVyXVswXQotKyAgICAgICAgICAgIHNlbGYuX19zZXR0aW5nc19wYW5lbC5zZXRfc3RyaW5n KCdjdXN0b20tdGhlbWUnLCB0aGVtZV9uYW1lKQotKwotKyAgICBkZWYgX19pbml0X2F2YWlsYWJs ZV9ndGtfaWNvbnMoc2VsZik6Ci0rICAgICAgICBwYXRoX2xpc3QgPSBbXQotKyAgICAgICAgcGF0 aF9saXN0LmFwcGVuZChvcy5wYXRoLmpvaW4oR0xpYi5nZXRfaG9tZV9kaXIoKSwgIi5pY29ucyIp KQotKyAgICAgICAgcGF0aF9saXN0LmFwcGVuZChvcy5wYXRoLmpvaW4oR0xpYi5nZXRfdXNlcl9k YXRhX2RpcigpLCAiaWNvbnMiKSkKLSsgICAgICAgIHBhdGhfbGlzdC5leHRlbmQobGlzdChtYXAo bGFtYmRhIHg6IG9zLnBhdGguam9pbigKLSsgICAgICAgICAgICB4LCAiaWNvbnMiKSwgR0xpYi5n ZXRfc3lzdGVtX2RhdGFfZGlycygpKSkpCi0rICAgICAgICBpY29uX25hbWVfbGlzdCA9IFtdCi0r ICAgICAgICBndGtfaWNvbl9wYXRoID0gW10KLSsgICAgICAgIGZvciBwYXRoIGluIHBhdGhfbGlz dDoKLSsgICAgICAgICAgICBndGtfaWNvbl9wYXRoLmV4dGVuZChnbG9iLmdsb2IocGF0aCArICIv Ki9pbmRleC50aGVtZSIpKQotKyAgICAgICAgZm9yIHBhdGggaW4gZ3RrX2ljb25fcGF0aDoKLSsg ICAgICAgICAgICBkaXIgPSBvcy5wYXRoLmRpcm5hbWUocGF0aCkKLSsgICAgICAgICAgICBpZiBu b3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGRpciwgImN1cnNvcnMiKSk6Ci0rICAgICAg ICAgICAgICAgIGljb25fbmFtZV9saXN0LmFwcGVuZChvcy5wYXRoLmJhc2VuYW1lKGRpcikpCi0r Ci0rICAgICAgICBpY29uX25hbWVfbGlzdC5leHRlbmQoWyJBZHdhaXRhIl0pCi0rICAgICAgICBp Y29uX25hbWVfbGlzdCA9IGxpc3Qoc2V0KGljb25fbmFtZV9saXN0KSkKLSsgICAgICAgIGljb25f bmFtZV9saXN0LnNvcnQoKQotKwotKyAgICAgICAgcmV0dXJuIGljb25fbmFtZV9saXN0Ci0rCi0r ICAgIGRlZiBfX29uX2NvbWJvYm94X2N1c3RvbV9pY29uX2NoYW5nZWQoc2VsZiwgY29tYm9ib3gp OgotKyAgICAgICAgdHJlZV9pdGVyID0gc2VsZi5fX2NvbWJvYm94X2N1c3RvbV9pY29uLmdldF9h Y3RpdmVfaXRlcigpCi0rICAgICAgICBpZiB0cmVlX2l0ZXIgaXMgbm90IE5vbmU6Ci0rICAgICAg ICAgICAgbW9kZWwgPSBzZWxmLl9fY29tYm9ib3hfY3VzdG9tX2ljb24uZ2V0X21vZGVsKCkKLSsg ICAgICAgICAgICBpY29uX25hbWUgPSBtb2RlbFt0cmVlX2l0ZXJdWzBdCi0rICAgICAgICAgICAg c2VsZi5fX3NldHRpbmdzX3BhbmVsLnNldF9zdHJpbmcoJ2N1c3RvbS1pY29uJywgaWNvbl9uYW1l KQotKwotICAgICBkZWYgX19pdGVtX3N0YXJ0ZWRfY29sdW1uX3RvZ2dsZWRfY2Ioc2VsZiwgY2Vs bCwgcGF0aF9zdHIsIG1vZGVsKToKLSAKLSAgICAgICAgICMgZ2V0IHRvZ2dsZWQgaXRlcgotZGlm ZiAtLWdpdCBhL3NldHVwL3NldHVwLnVpIGIvc2V0dXAvc2V0dXAudWkKLWluZGV4IGExNWI5MDgz Li41YTk4MDRmOSAxMDA2NDQKLS0tLSBhL3NldHVwL3NldHVwLnVpCi0rKysgYi9zZXR1cC9zZXR1 cC51aQotQEAgLTU1LDYgKzU1LDE4IEBACi0gICAgICAgPC9yb3c+Ci0gICAgIDwvZGF0YT4KLSAg IDwvb2JqZWN0PgotKyAgPG9iamVjdCBjbGFzcz0iR3RrTGlzdFN0b3JlIiBpZD0ibW9kZWxfY3Vz dG9tX3RoZW1lIj4KLSsgICAgPGNvbHVtbnM+Ci0rICAgICAgPCEtLSBjb2x1bW4tbmFtZSBnY2hh cmFycmF5IC0tPgotKyAgICAgIDxjb2x1bW4gdHlwZT0iZ2NoYXJhcnJheSIvPgotKyAgICA8L2Nv bHVtbnM+Ci0rICA8L29iamVjdD4KLSsgIDxvYmplY3QgY2xhc3M9Ikd0a0xpc3RTdG9yZSIgaWQ9 Im1vZGVsX2N1c3RvbV9pY29uIj4KLSsgICAgPGNvbHVtbnM+Ci0rICAgICAgPCEtLSBjb2x1bW4t bmFtZSBnY2hhcmFycmF5IC0tPgotKyAgICAgIDxjb2x1bW4gdHlwZT0iZ2NoYXJhcnJheSIvPgot KyAgICA8L2NvbHVtbnM+Ci0rICA8L29iamVjdD4KLSAgIDxvYmplY3QgY2xhc3M9Ikd0a0FkanVz dG1lbnQiIGlkPSJhZGp1c3RtZW50X2Vtb2ppX3BhcnRpYWxfbWF0Y2giPgotICAgICA8cHJvcGVy dHkgbmFtZT0idmFsdWUiPjMuMDwvcHJvcGVydHk+Ci0gICAgIDxwcm9wZXJ0eSBuYW1lPSJsb3dl ciI+MS4wPC9wcm9wZXJ0eT4KLUBAIC0xMzE4LDEzICsxMzMwLDk2IEBACi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+MDwvcHJvcGVydHk+Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgPC9jaGlsZD4KLSsgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtHcmlkIiBpZD0idGFibGUzIj4K LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRy dWU8L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwcm9wZXJ0eSBuYW1lPSJjb2x1bW5fc3BhY2luZyI+MTI8L3Byb3BlcnR5PgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icm93X3NwYWNpbmciPjY8L3By b3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQ2hlY2tCdXR0b24iIGlkPSJj aGVja2J1dHRvbl9jdXN0b21fdGhlbWUiPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+VXNlIGN1c3RvbSB0 aGVtZTo8L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9InVzZV9hY3Rpb25fYXBwZWFyYW5jZSI+RmFsc2U8L3Byb3BlcnR5PgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8 L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5h bWU9ImNhbl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0icmVjZWl2ZXNfZGVmYXVsdCI+RmFsc2U8L3Byb3BlcnR5 PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InVzZV9h Y3Rpb25fYXBwZWFyYW5jZSI+RmFsc2U8L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InVzZV91bmRlcmxpbmUiPlRydWU8L3Byb3BlcnR5 PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhhbGln biI+c3RhcnQ8L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBy b3BlcnR5IG5hbWU9ImRyYXdfaW5kaWNhdG9yIj5UcnVlPC9wcm9wZXJ0eT4KLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoZXhwYW5kIj5UcnVlPC9wcm9w ZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsZWZ0X2F0dGFjaCI+MDwvcHJvcGVydHk+Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idG9wX2F0dGFjaCI+ MDwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8Y2hpbGQ+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVj dCBjbGFzcz0iR3RrQ29tYm9Cb3giIGlkPSJjb21ib2JveF9jdXN0b21fdGhlbWUiPgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8 L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5h bWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1vZGVsIj5tb2RlbF9jdXN0b21fdGhlbWU8L3Byb3Bl cnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Imhl eHBhbmQiPlRydWU8L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PGNoaWxkPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNz PSJHdGtDZWxsUmVuZGVyZXJUZXh0IiBpZD0icmVuZGVyZXI0Ii8+Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGVzPgotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dCI+MDwvYXR0cmlidXRlPgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F0dHJpYnV0ZXM+Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDwvb2JqZWN0PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxlZnRfYXR0 YWNoIj4xPC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj4wPC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8L3BhY2tpbmc+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hp bGQ+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtDaGVja0J1dHRvbiIgaWQ9ImNoZWNr YnV0dG9uX2N1c3RvbV9pY29uIj4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlVzZSBjdXN0b20gaWNvbjo8 L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5h bWU9InVzZV9hY3Rpb25fYXBwZWFyYW5jZSI+RmFsc2U8L3Byb3BlcnR5PgotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3Bl cnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNh bl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8cHJvcGVydHkgbmFtZT0icmVjZWl2ZXNfZGVmYXVsdCI+RmFsc2U8L3Byb3BlcnR5PgotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InVzZV9hY3Rpb25f YXBwZWFyYW5jZSI+RmFsc2U8L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9InVzZV91bmRlcmxpbmUiPlRydWU8L3Byb3BlcnR5PgotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhhbGlnbiI+c3Rh cnQ8L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9ImRyYXdfaW5kaWNhdG9yIj5UcnVlPC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8L29iamVjdD4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cGFja2luZz4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJsZWZ0X2F0dGFjaCI+MDwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0idG9wX2F0dGFjaCI+MTwvcHJvcGVydHk+Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8L2NoaWxkPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQ29tYm9Cb3giIGlk PSJjb21ib2JveF9jdXN0b21faWNvbiI+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJv cGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0i bW9kZWwiPm1vZGVsX2N1c3RvbV9pY29uPC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxjaGlsZD4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PG9iamVjdCBjbGFzcz0iR3RrQ2VsbFJlbmRlcmVyVGV4dCIgaWQ9InJlbmRlcmVyNSIvPgotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlcz4KLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InRleHQiPjA8L2F0dHJp YnV0ZT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hdHRyaWJ1dGVzPgot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8L29iamVjdD4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8cGFja2luZz4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBu YW1lPSJsZWZ0X2F0dGFjaCI+MTwvcHJvcGVydHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0idG9wX2F0dGFjaCI+MTwvcHJvcGVydHk+Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8L2NoaWxkPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+RmFsc2U8L3Byb3Bl cnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRp b24iPjE8L3Byb3BlcnR5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgot KyAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+Ci0gICAgICAgICAgICAgICAgICAgICAg IDwvb2JqZWN0PgotICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KLSAgICAgICAgICAgICAg ICAgICAgIDxjaGlsZCB0eXBlPSJsYWJlbCI+Ci0gICAgICAgICAgICAgICAgICAgICAgIDxvYmpl Y3QgY2xhc3M9Ikd0a0xhYmVsIiBpZD0ibGFiZWwyMCI+Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgotICAgICAgICAgICAg ICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4K LS0gICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0 YWJsZT0ieWVzIj4mbHQ7YiZndDtGb250cyZsdDsvYiZndDs8L3Byb3BlcnR5PgotKyAgICAgICAg ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMi PiZsdDtiJmd0O0ZvbnQgYW5kIFRoZW1lJmx0Oy9iJmd0OzwvcHJvcGVydHk+Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InVzZV9tYXJrdXAiPlRydWU8L3Byb3BlcnR5 PgotICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KLSAgICAgICAgICAgICAgICAgICAg IDwvY2hpbGQ+Ci1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9iaW5kaW5nY29tbW9uLnZhbGEgYi91aS9n dGszL2JpbmRpbmdjb21tb24udmFsYQotaW5kZXggMTUwZDRjMzkuLmU4MjUxNjdiIDEwMDY0NAot LS0tIGEvdWkvZ3RrMy9iaW5kaW5nY29tbW9uLnZhbGEKLSsrKyBiL3VpL2d0azMvYmluZGluZ2Nv bW1vbi52YWxhCi1AQCAtMjEyLDQgKzIxMiw1MCBAQCBjbGFzcyBCaW5kaW5nQ29tbW9uIHsKLSAg ICAgICAgICAgICAgICAgY3NzX3Byb3ZpZGVyLAotICAgICAgICAgICAgICAgICBHdGsuU1RZTEVf UFJPVklERVJfUFJJT1JJVFlfQVBQTElDQVRJT04pOwotICAgICB9Ci0rCi0rICAgIHB1YmxpYyBz dGF0aWMgdm9pZAotKyAgICBzZXRfY3VzdG9tX3RoZW1lKEdMaWIuU2V0dGluZ3M/IHNldHRpbmdz X3BhbmVsKSB7Ci0rICAgICAgICBpZiAoc2V0dGluZ3NfcGFuZWwgPT0gbnVsbCkKLSsgICAgICAg ICAgICByZXR1cm47Ci0rCi0rICAgICAgICBib29sIHVzZV9jdXN0b21fdGhlbWUgPSBzZXR0aW5n c19wYW5lbC5nZXRfYm9vbGVhbigidXNlLWN1c3RvbS10aGVtZSIpOwotKyAgICAgICAgc3RyaW5n IGN1c3RvbV90aGVtZSA9IHNldHRpbmdzX3BhbmVsLmdldF9zdHJpbmcoImN1c3RvbS10aGVtZSIp OwotKwotKyAgICAgICAgR3RrLlNldHRpbmdzIGd0a19zZXR0aW5ncyA9IEd0ay5TZXR0aW5ncy5n ZXRfZGVmYXVsdCgpOwotKwotKyAgICAgICAgaWYgKHVzZV9jdXN0b21fdGhlbWUgPT0gZmFsc2Up Ci0rICAgICAgICAgICAgY3VzdG9tX3RoZW1lID0gIiI7Ci0rCi0rICAgICAgICBpZiAoY3VzdG9t X3RoZW1lID09IG51bGwgfHwgY3VzdG9tX3RoZW1lID09ICIiKSB7Ci0rICAgICAgICAgICAgZ3Rr X3NldHRpbmdzLnJlc2V0X3Byb3BlcnR5KCJndGstdGhlbWUtbmFtZSIpOwotKyAgICAgICAgICAg IGd0a19zZXR0aW5ncy5yZXNldF9wcm9wZXJ0eSgiZ3RrLWFwcGxpY2F0aW9uLXByZWZlci1kYXJr LXRoZW1lIik7Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIHN0cmluZ1tdIGN1c3Rv bV90aGVtZV9zcGxpdHRlZCA9IGN1c3RvbV90aGVtZS5zcGxpdCgiOiIpOwotKyAgICAgICAgICAg IGd0a19zZXR0aW5ncy5ndGtfdGhlbWVfbmFtZSA9IGN1c3RvbV90aGVtZV9zcGxpdHRlZFswXTsK LSsgICAgICAgICAgICBpZiAoY3VzdG9tX3RoZW1lX3NwbGl0dGVkLmxlbmd0aCA9PSAyICYmCi0r ICAgICAgICAgICAgY3VzdG9tX3RoZW1lX3NwbGl0dGVkWzFdID09ICJkYXJrIikKLSsgICAgICAg ICAgICAgICAgZ3RrX3NldHRpbmdzLmd0a19hcHBsaWNhdGlvbl9wcmVmZXJfZGFya190aGVtZSA9 IHRydWU7Ci0rICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICBndGtfc2V0dGluZ3Mu Z3RrX2FwcGxpY2F0aW9uX3ByZWZlcl9kYXJrX3RoZW1lID0gZmFsc2U7Ci0rICAgICAgICB9Ci0r ICAgIH0KLSsKLSsgICAgcHVibGljIHN0YXRpYyB2b2lkCi0rICAgIHNldF9jdXN0b21faWNvbihH TGliLlNldHRpbmdzPyBzZXR0aW5nc19wYW5lbCkgewotKyAgICAgICAgaWYgKHNldHRpbmdzX3Bh bmVsID09IG51bGwpCi0rICAgICAgICAgICAgcmV0dXJuOwotKwotKyAgICAgICAgYm9vbCB1c2Vf Y3VzdG9tX2ljb24gPSBzZXR0aW5nc19wYW5lbC5nZXRfYm9vbGVhbigidXNlLWN1c3RvbS1pY29u Iik7Ci0rICAgICAgICBzdHJpbmcgY3VzdG9tX2ljb24gPSBzZXR0aW5nc19wYW5lbC5nZXRfc3Ry aW5nKCJjdXN0b20taWNvbiIpOwotKwotKyAgICAgICAgR3RrLlNldHRpbmdzIGd0a19zZXR0aW5n cyA9IEd0ay5TZXR0aW5ncy5nZXRfZGVmYXVsdCgpOwotKwotKyAgICAgICAgaWYgKHVzZV9jdXN0 b21faWNvbiA9PSBmYWxzZSkKLSsgICAgICAgICAgICBjdXN0b21faWNvbiA9ICIiOwotKwotKyAg ICAgICAgaWYgKGN1c3RvbV9pY29uID09IG51bGwgfHwgY3VzdG9tX2ljb24gPT0gIiIpCi0rICAg ICAgICAgICAgZ3RrX3NldHRpbmdzLnJlc2V0X3Byb3BlcnR5KCJndGstaWNvbi10aGVtZS1uYW1l Iik7Ci0rICAgICAgICBlbHNlCi0rICAgICAgICAgICAgZ3RrX3NldHRpbmdzLmd0a19pY29uX3Ro ZW1lX25hbWUgPSBjdXN0b21faWNvbjsKLSsgICAgfQotIH0KLWRpZmYgLS1naXQgYS91aS9ndGsz L3BhbmVsLnZhbGEgYi91aS9ndGszL3BhbmVsLnZhbGEKLWluZGV4IDYxYmZhMWI2Li4xMDFjMmIz ZCAxMDA2NDQKLS0tLSBhL3VpL2d0azMvcGFuZWwudmFsYQotKysrIGIvdWkvZ3RrMy9wYW5lbC52 YWxhCi1AQCAtMjExLDYgKzIxMSwyMiBAQCBjbGFzcyBQYW5lbCA6IElCdXMuUGFuZWxTZXJ2aWNl IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmIG1f Y3NzX3Byb3ZpZGVyKTsKLSAgICAgICAgIH0pOwotIAotKyAgICAgICAgbV9zZXR0aW5nc19wYW5l bC5jaGFuZ2VkWyJjdXN0b20tdGhlbWUiXS5jb25uZWN0KChrZXkpID0+IHsKLSsgICAgICAgICAg ICAgICAgQmluZGluZ0NvbW1vbi5zZXRfY3VzdG9tX3RoZW1lKG1fc2V0dGluZ3NfcGFuZWwpOwot KyAgICAgICAgfSk7Ci0rCi0rICAgICAgICBtX3NldHRpbmdzX3BhbmVsLmNoYW5nZWRbInVzZS1j dXN0b20tdGhlbWUiXS5jb25uZWN0KChrZXkpID0+IHsKLSsgICAgICAgICAgICAgICAgQmluZGlu Z0NvbW1vbi5zZXRfY3VzdG9tX3RoZW1lKG1fc2V0dGluZ3NfcGFuZWwpOwotKyAgICAgICAgfSk7 Ci0rCi0rICAgICAgICBtX3NldHRpbmdzX3BhbmVsLmNoYW5nZWRbImN1c3RvbS1pY29uIl0uY29u bmVjdCgoa2V5KSA9PiB7Ci0rICAgICAgICAgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3Rv bV9pY29uKG1fc2V0dGluZ3NfcGFuZWwpOwotKyAgICAgICAgfSk7Ci0rCi0rICAgICAgICBtX3Nl dHRpbmdzX3BhbmVsLmNoYW5nZWRbInVzZS1jdXN0b20taWNvbiJdLmNvbm5lY3QoKGtleSkgPT4g ewotKyAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9uLnNldF9jdXN0b21faWNvbihtX3NldHRp bmdzX3BhbmVsKTsKLSsgICAgICAgIH0pOwotKwotICAgICAgICAgbV9zZXR0aW5nc19wYW5lbC5j aGFuZ2VkWyJ1c2UtZ2x5cGgtZnJvbS1lbmdpbmUtbGFuZyJdLmNvbm5lY3QoKGtleSkgPT4KLSAg ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgbV91c2VfZW5naW5lX2xhbmcgPSBtX3NldHRpbmdz X3BhbmVsLmdldF9ib29sZWFuKAotQEAgLTgxNiw2ICs4MzIsOCBAQCBjbGFzcyBQYW5lbCA6IElC dXMuUGFuZWxTZXJ2aWNlIHsKLSAgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV9mb250 KG1fc2V0dGluZ3NfcGFuZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBudWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmIG1fY3Nz X3Byb3ZpZGVyKTsKLSsgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV90aGVtZShtX3Nl dHRpbmdzX3BhbmVsKTsKLSsgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV9pY29uKG1f c2V0dGluZ3NfcGFuZWwpOwotICAgICAgICAgc2V0X3Nob3dfaWNvbl9vbl9zeXN0cmF5KCk7Ci0g ICAgICAgICBzZXRfbG9va3VwX3RhYmxlX29yaWVudGF0aW9uKCk7Ci0gICAgICAgICBzZXRfc2hv d19wcm9wZXJ0eV9wYW5lbCgpOwotZGlmZiAtLWdpdCBhL3VpL2d0azMvcGFuZWxiaW5kaW5nLnZh bGEgYi91aS9ndGszL3BhbmVsYmluZGluZy52YWxhCi1pbmRleCBlNjNkOTNmMi4uM2M1MTZhZmQg MTAwNjQ0Ci0tLS0gYS91aS9ndGszL3BhbmVsYmluZGluZy52YWxhCi0rKysgYi91aS9ndGszL3Bh bmVsYmluZGluZy52YWxhCi1AQCAtMjcwLDYgKzI3MCwyMiBAQCBjbGFzcyBQYW5lbEJpbmRpbmcg OiBJQnVzLlBhbmVsU2VydmljZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlZiBtX2Nzc19wcm92aWRlcik7Ci0gICAgICAgICB9KTsKLSAKLSsgICAg ICAgIG1fc2V0dGluZ3NfcGFuZWwuY2hhbmdlZFsiY3VzdG9tLXRoZW1lIl0uY29ubmVjdCgoa2V5 KSA9PiB7Ci0rICAgICAgICAgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV90aGVtZSht X3NldHRpbmdzX3BhbmVsKTsKLSsgICAgICAgIH0pOwotKwotKyAgICAgICAgbV9zZXR0aW5nc19w YW5lbC5jaGFuZ2VkWyJ1c2UtY3VzdG9tLXRoZW1lIl0uY29ubmVjdCgoa2V5KSA9PiB7Ci0rICAg ICAgICAgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV90aGVtZShtX3NldHRpbmdzX3Bh bmVsKTsKLSsgICAgICAgIH0pOwotKwotKyAgICAgICAgbV9zZXR0aW5nc19wYW5lbC5jaGFuZ2Vk WyJjdXN0b20taWNvbiJdLmNvbm5lY3QoKGtleSkgPT4gewotKyAgICAgICAgICAgICAgICBCaW5k aW5nQ29tbW9uLnNldF9jdXN0b21faWNvbihtX3NldHRpbmdzX3BhbmVsKTsKLSsgICAgICAgIH0p OwotKwotKyAgICAgICAgbV9zZXR0aW5nc19wYW5lbC5jaGFuZ2VkWyJ1c2UtY3VzdG9tLWljb24i XS5jb25uZWN0KChrZXkpID0+IHsKLSsgICAgICAgICAgICAgICAgQmluZGluZ0NvbW1vbi5zZXRf Y3VzdG9tX2ljb24obV9zZXR0aW5nc19wYW5lbCk7Ci0rICAgICAgICB9KTsKLSsKLSAgICAgICAg IG1fc2V0dGluZ3NfZW1vamkuY2hhbmdlZFsidW5pY29kZS1ob3RrZXkiXS5jb25uZWN0KChrZXkp ID0+IHsKLSAgICAgICAgICAgICAgICAgc2V0X2Vtb2ppX2hvdGtleSgpOwotICAgICAgICAgfSk7 Ci1AQCAtNDIyLDYgKzQzOCw4IEBAIGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2 aWNlIHsKLSAgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV9mb250KG1fc2V0dGluZ3Nf cGFuZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NldHRpbmdz X2Vtb2ppLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmIG1fY3Nz X3Byb3ZpZGVyKTsKLSsgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV90aGVtZShtX3Nl dHRpbmdzX3BhbmVsKTsKLSsgICAgICAgIEJpbmRpbmdDb21tb24uc2V0X2N1c3RvbV9pY29uKG1f c2V0dGluZ3NfcGFuZWwpOwotICAgICAgICAgc2V0X2Vtb2ppX2Zhdm9yaXRlcygpOwotICAgICAg ICAgaWYgKG1fbG9hZF9lbW9qaV9hdF9zdGFydHVwICYmICFtX2xvYWRlZF9lbW9qaSkKLSAgICAg ICAgICAgICBzZXRfZW1vamlfbGFuZygpOwotLS0gCi0yLjM1LjMKLQotRnJvbSBhZGRhYjlmZGM3 Zjk4YzE3MmI2ZmNiMWUyNGZhYTEzMzM2OGJkYWYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot RnJvbTogSG9sbG93IE1hbiA8aG9sbG93bWFuQG9wZW5zdXNlLm9yZz4KLURhdGU6IFdlZCwgMjYg SmFuIDIwMjIgMTA6MDM6MDQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzNdIFJldmVydCBzdXBw b3J0IGZvciBjaG9vc2luZyBHVEsgdGhlbWVzIGRhcmsgdmFyaWFudAotCi1TbyB0aGF0IHRoZSB0 aGVtZSBsaXN0IHdvbid0IGdldCB0b28gbWVzc3kKLQotQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9p YnVzL2lidXMvcHVsbC8yMzI3Ci0KLVNpZ25lZC1vZmYtYnk6IEhvbGxvdyBNYW4gPGhvbGxvd21h bkBvcGVuc3VzZS5vcmc+Ci0tLS0KLSBzZXR1cC9tYWluLnB5ICAgICAgICAgICAgICB8IDEwICsr LS0tLS0tLS0KLSB1aS9ndGszL2JpbmRpbmdjb21tb24udmFsYSB8IDE0ICsrKy0tLS0tLS0tLS0t Ci0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1k aWZmIC0tZ2l0IGEvc2V0dXAvbWFpbi5weSBiL3NldHVwL21haW4ucHkKLWluZGV4IDcxODk2Njkz Li5kMGUwNTY2NiAxMDA2NDQKLS0tLSBhL3NldHVwL21haW4ucHkKLSsrKyBiL3NldHVwL21haW4u cHkKLUBAIC02NzIsMTggKzY3MiwxMiBAQCBjbGFzcyBTZXR1cChvYmplY3QpOgotICAgICAgICAg Z3RrX3RoZW1lX3BhdGggPSBbXQotICAgICAgICAgZm9yIHBhdGggaW4gcGF0aF9saXN0OgotICAg ICAgICAgICAgIGd0a190aGVtZV9wYXRoLmV4dGVuZChnbG9iLmdsb2IocGF0aCArICIvKi9ndGst Ki9ndGsuY3NzIikpCi0tICAgICAgICAgICAgZ3RrX3RoZW1lX3BhdGguZXh0ZW5kKGdsb2IuZ2xv YihwYXRoICsgIi8qL2d0ay0qL2d0ay1kYXJrLmNzcyIpKQotICAgICAgICAgZm9yIHBhdGggaW4g Z3RrX3RoZW1lX3BhdGg6Ci0tICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1l KHBhdGgpCi0tICAgICAgICAgICAgYXBwZW5kaXggPSAiIgotLSAgICAgICAgICAgIGlmIGZpbGVu YW1lID09ICJndGstZGFyay5jc3MiOgotLSAgICAgICAgICAgICAgICBhcHBlbmRpeCA9ICI6ZGFy ayIKLSAgICAgICAgICAgICB0aGVtZV9uYW1lX2xpc3QuYXBwZW5kKG9zLnBhdGguYmFzZW5hbWUo Ci0tICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUocGF0aCkp KSArIGFwcGVuZGl4KQotKyAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5k aXJuYW1lKHBhdGgpKSkpCi0gCi0gICAgICAgICB0aGVtZV9uYW1lX2xpc3QuZXh0ZW5kKFsKLS0g ICAgICAgICAgICAnQWR3YWl0YScsICdBZHdhaXRhOmRhcmsnLAotLSAgICAgICAgICAgICdIaWdo Q29udHJhc3QnLCAnSGlnaENvbnRyYXN0SW52ZXJzZScKLSsgICAgICAgICAgICAnQWR3YWl0YScs ICdIaWdoQ29udHJhc3QnLCAnSGlnaENvbnRyYXN0SW52ZXJzZScKLSAgICAgICAgIF0pCi0gICAg ICAgICB0aGVtZV9uYW1lX2xpc3QgPSBsaXN0KHNldCh0aGVtZV9uYW1lX2xpc3QpKQotICAgICAg ICAgdGhlbWVfbmFtZV9saXN0LnNvcnQoKQotZGlmZiAtLWdpdCBhL3VpL2d0azMvYmluZGluZ2Nv bW1vbi52YWxhIGIvdWkvZ3RrMy9iaW5kaW5nY29tbW9uLnZhbGEKLWluZGV4IGU4MjUxNjdiLi40 ZWNiNzE1OSAxMDA2NDQKLS0tLSBhL3VpL2d0azMvYmluZGluZ2NvbW1vbi52YWxhCi0rKysgYi91 aS9ndGszL2JpbmRpbmdjb21tb24udmFsYQotQEAgLTIyNiwxOCArMjI2LDEwIEBAIGNsYXNzIEJp bmRpbmdDb21tb24gewotICAgICAgICAgaWYgKHVzZV9jdXN0b21fdGhlbWUgPT0gZmFsc2UpCi0g ICAgICAgICAgICAgY3VzdG9tX3RoZW1lID0gIiI7Ci0gCi0tICAgICAgICBpZiAoY3VzdG9tX3Ro ZW1lID09IG51bGwgfHwgY3VzdG9tX3RoZW1lID09ICIiKSB7Ci0rICAgICAgICBpZiAoY3VzdG9t X3RoZW1lID09IG51bGwgfHwgY3VzdG9tX3RoZW1lID09ICIiKQotICAgICAgICAgICAgIGd0a19z ZXR0aW5ncy5yZXNldF9wcm9wZXJ0eSgiZ3RrLXRoZW1lLW5hbWUiKTsKLS0gICAgICAgICAgICBn dGtfc2V0dGluZ3MucmVzZXRfcHJvcGVydHkoImd0ay1hcHBsaWNhdGlvbi1wcmVmZXItZGFyay10 aGVtZSIpOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICBzdHJpbmdbXSBjdXN0b21f dGhlbWVfc3BsaXR0ZWQgPSBjdXN0b21fdGhlbWUuc3BsaXQoIjoiKTsKLS0gICAgICAgICAgICBn dGtfc2V0dGluZ3MuZ3RrX3RoZW1lX25hbWUgPSBjdXN0b21fdGhlbWVfc3BsaXR0ZWRbMF07Ci0t ICAgICAgICAgICAgaWYgKGN1c3RvbV90aGVtZV9zcGxpdHRlZC5sZW5ndGggPT0gMiAmJgotLSAg ICAgICAgICAgIGN1c3RvbV90aGVtZV9zcGxpdHRlZFsxXSA9PSAiZGFyayIpCi0tICAgICAgICAg ICAgICAgIGd0a19zZXR0aW5ncy5ndGtfYXBwbGljYXRpb25fcHJlZmVyX2RhcmtfdGhlbWUgPSB0 cnVlOwotLSAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgZ3RrX3NldHRpbmdzLmd0 a19hcHBsaWNhdGlvbl9wcmVmZXJfZGFya190aGVtZSA9IGZhbHNlOwotLSAgICAgICAgfQotKyAg ICAgICAgZWxzZQotKyAgICAgICAgICAgIGd0a19zZXR0aW5ncy5ndGtfdGhlbWVfbmFtZSA9IGN1 c3RvbV90aGVtZTsKLSAgICAgfQotIAotICAgICBwdWJsaWMgc3RhdGljIHZvaWQKLS0tIAotMi4z NS4zCi0KLUZyb20gZmY5OTgyOGNiNjA5MTUzMThlZDBmNDA5OThhMWEyM2Q1ZGVhNDJjNyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbGxvdyBNYW4gPGhvbGxvd21hbkBvcGVuc3Vz ZS5vcmc+Ci1EYXRlOiBXZWQsIDI2IEphbiAyMDIyIDExOjE5OjQwICswODAwCi1TdWJqZWN0OiBb UEFUQ0ggMy8zXSBBZGQgdG9vbHRpcCB0ZXh0IGZvciB1c2UgY3VzdG9tIGljb24gYW5kIHRoZW1l Ci0KLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL3B1bGwvMjMyNwotCi1TaWduZWQt b2ZmLWJ5OiBIb2xsb3cgTWFuIDxob2xsb3dtYW5Ab3BlbnN1c2Uub3JnPgotLS0tCi0gc2V0dXAv c2V0dXAudWkgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZm IC0tZ2l0IGEvc2V0dXAvc2V0dXAudWkgYi9zZXR1cC9zZXR1cC51aQotaW5kZXggNWE5ODA0Zjku LjZkZWQyMDYxIDEwMDY0NAotLS0tIGEvc2V0dXAvc2V0dXAudWkKLSsrKyBiL3NldHVwL3NldHVw LnVpCi1AQCAtMTMzOSw2ICsxMzM5LDcgQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PGNoaWxkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0 a0NoZWNrQnV0dG9uIiBpZD0iY2hlY2tidXR0b25fY3VzdG9tX3RoZW1lIj4KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxl PSJ5ZXMiPlVzZSBjdXN0b20gdGhlbWU6PC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b29sdGlwX3RleHQiIHRyYW5zbGF0YWJsZT0i eWVzIj5DaG9vc2UgYSB0aGVtZSBvZiB0aGUgY2FuZGlkYXRlIHdpbmRvdzwvcHJvcGVydHk+Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idXNlX2FjdGlv bl9hcHBlYXJhbmNlIj5GYWxzZTwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVl PC9wcm9wZXJ0eT4KLUBAIC0xMzc1LDYgKzEzNzYsNyBAQAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8Y2hpbGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBj bGFzcz0iR3RrQ2hlY2tCdXR0b24iIGlkPSJjaGVja2J1dHRvbl9jdXN0b21faWNvbiI+Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5z bGF0YWJsZT0ieWVzIj5Vc2UgY3VzdG9tIGljb246PC9wcm9wZXJ0eT4KLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b29sdGlwX3RleHQiIHRyYW5zbGF0 YWJsZT0ieWVzIj5DaG9vc2UgYSB0aGVtZSBvZiB0aGUgYXJyb3cgYnV0dG9ucyBvbiB0aGUgY2Fu ZGlkYXRlIHdpbmRvdzwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8cHJvcGVydHkgbmFtZT0idXNlX2FjdGlvbl9hcHBlYXJhbmNlIj5GYWxzZTwvcHJvcGVydHk+ Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJs ZSI+VHJ1ZTwvcHJvcGVydHk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJv cGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KLS0tIAotMi4zNS4zCi0KLUZy b20gOWFkMDYzNzQ2ZWMzZDkxOTIxN2FlMThhY2NlMmQ0NzY4YmNmY2EwNSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4K LURhdGU6IE1vbiwgMjAgSnVuIDIwMjIgMjE6MDE6MzEgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0g dWkvZ3RrMzogSGlkZSBYS0IgZW5naW5lIGJ1dCBlbmFibGUgaXQgaW4gUGxhc21hIFdheWxhbmQK LQotSUJ1cyBqdXN0IGNhbm5vdCBkZWZlciBrZXkgZXZlbnRzIHRvIHRoZSBzZWNvbmRhcnkgaW5w dXQgbWV0aG9kcwotdG8gc3dpdGNoIFhLQiBrZXltYXBzIGluIFBsYXNtYSBXYXlsYW5kIGJlY2F1 c2UgSUJ1cyBoYXMgdG8gaGFuZGxlIHRoZQotY29tcG9zZSBrZXlzIGJlZm9yZSBkZWZlciB0aGUg a2V5IGV2ZW50cy4KLQotQWxzbyB1cGRhdGUgdGhlIFBPVCBmaWxlLgotCi1CVUc9cmhieiMyMDg4 NjU2Ci0tLS0KLSBkYXRhL2Rjb25mL29yZy5mcmVlZGVza3RvcC5pYnVzLmdzY2hlbWEueG1sIHwg ICA0ICstCi0gdWkvZ3RrMy9wYW5lbC52YWxhICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1 MCArKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDI0OCBpbnNlcnRpb25zKCspLCAxODAgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9kYXRhL2Rjb25mL29yZy5mcmVlZGVza3RvcC5pYnVzLmdzY2hl bWEueG1sIGIvZGF0YS9kY29uZi9vcmcuZnJlZWRlc2t0b3AuaWJ1cy5nc2NoZW1hLnhtbAotaW5k ZXggMDUxZjIxYTUuLjBlY2UyYjRmIDEwMDY0NAotLS0tIGEvZGF0YS9kY29uZi9vcmcuZnJlZWRl c2t0b3AuaWJ1cy5nc2NoZW1hLnhtbAotKysrIGIvZGF0YS9kY29uZi9vcmcuZnJlZWRlc2t0b3Au aWJ1cy5nc2NoZW1hLnhtbAotQEAgLTIyMywxMiArMjIzLDEyIEBACi0gICAgIDxrZXkgbmFtZT0i dXNlLWN1c3RvbS1pY29uIiB0eXBlPSJiIj4KLSAgICAgICA8ZGVmYXVsdD5mYWxzZTwvZGVmYXVs dD4KLSAgICAgICA8c3VtbWFyeT5Vc2UgY3VzdG9tIGljb248L3N1bW1hcnk+Ci0tICAgICAgPGRl c2NyaXB0aW9uPlVzZSBjdXN0b20gaWNvbiBuYW1lIGZvciBsYW5ndWFnZSBwYW5lbDwvZGVzY3Jp cHRpb24+Ci0rICAgICAgPGRlc2NyaXB0aW9uPlVzZSBjdXN0b20gaWNvbiBuYW1lIGZvciBhcnJv dyBidXR0b25zIG9uIGNhbmRpZGF0ZSB3aW5kb3c8L2Rlc2NyaXB0aW9uPgotICAgICA8L2tleT4K LSAgICAgPGtleSBuYW1lPSJjdXN0b20taWNvbiIgdHlwZT0icyI+Ci0gICAgICAgPGRlZmF1bHQ+ J0Fkd2FpdGEnPC9kZWZhdWx0PgotICAgICAgIDxzdW1tYXJ5PkN1c3RvbSBpY29uPC9zdW1tYXJ5 PgotLSAgICAgIDxkZXNjcmlwdGlvbj5DdXN0b20gaWNvbiBuYW1lIGZvciBsYW5ndWFnZSBwYW5l bDwvZGVzY3JpcHRpb24+Ci0rICAgICAgPGRlc2NyaXB0aW9uPkN1c3RvbSBpY29uIG5hbWUgZm9y IGFycm93IGJ1dHRvbnMgb24gY2FuZGlkYXRlIHdpbmRvdzwvZGVzY3JpcHRpb24+Ci0gICAgIDwv a2V5PgotICAgICA8a2V5IG5hbWU9InVzZS1nbHlwaC1mcm9tLWVuZ2luZS1sYW5nIiB0eXBlPSJi Ij4KLSAgICAgICA8ZGVmYXVsdD50cnVlPC9kZWZhdWx0PgotZGlmZiAtLWdpdCBhL3VpL2d0azMv cGFuZWwudmFsYSBiL3VpL2d0azMvcGFuZWwudmFsYQotaW5kZXggMTAxYzJiM2QuLjQ1MmIxNGM4 IDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9wYW5lbC52YWxhCi0rKysgYi91aS9ndGszL3BhbmVsLnZh bGEKLUBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2Ugewot ICAgICBwcml2YXRlIEd0ay5NZW51IG1faW1lX21lbnU7Ci0gICAgIHByaXZhdGUgR3RrLk1lbnUg bV9zeXNfbWVudTsKLSAgICAgcHJpdmF0ZSBJQnVzLkVuZ2luZURlc2NbXSBtX2VuZ2luZXMgPSB7 fTsKLSsgICAgcHJpdmF0ZSBJQnVzLkVuZ2luZURlc2MgbV9lbl9lbmdpbmU7Ci0gICAgIHByaXZh dGUgR0xpYi5IYXNoVGFibGU8c3RyaW5nLCBJQnVzLkVuZ2luZURlc2M+IG1fZW5naW5lX2NvbnRl eHRzID0KLSAgICAgICAgICAgICBuZXcgR0xpYi5IYXNoVGFibGU8c3RyaW5nLCBJQnVzLkVuZ2lu ZURlc2M+KEdMaWIuc3RyX2hhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGliLnN0cl9lcXVhbCk7Ci1AQCAtOTI4LDEzICs5Mjks MjAgQEAgY2xhc3MgUGFuZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7Ci0gICAgIH0KLSAKLSAgICAg cHJpdmF0ZSB2b2lkIHN3aXRjaF9lbmdpbmUoaW50IGksIGJvb2wgZm9yY2UgPSBmYWxzZSkgewot LSAgICAgICAgR0xpYi5hc3NlcnQoaSA+PSAwICYmIGkgPCBtX2VuZ2luZXMubGVuZ3RoKTsKLSsg ICAgICAgIGlmIChtX2lzX3dheWxhbmQpCi0rICAgICAgICAgICAgR0xpYi5hc3NlcnQoaSA+PSAw ICYmIGkgPD0gbV9lbmdpbmVzLmxlbmd0aCk7Ci0rICAgICAgICBlbHNlCi0rICAgICAgICAgICAg R0xpYi5hc3NlcnQoaSA+PSAwICYmIGkgPCBtX2VuZ2luZXMubGVuZ3RoKTsKLSAKLSAgICAgICAg IC8vIERvIG5vdCBuZWVkIHN3aXRjaAotICAgICAgICAgaWYgKGkgPT0gMCAmJiAhZm9yY2UpCi0g ICAgICAgICAgICAgcmV0dXJuOwotIAotLSAgICAgICAgSUJ1cy5FbmdpbmVEZXNjIGVuZ2luZSA9 IG1fZW5naW5lc1tpXTsKLSsgICAgICAgIElCdXMuRW5naW5lRGVzYyBlbmdpbmU7Ci0rICAgICAg ICBpZiAobV9pc193YXlsYW5kICYmIG1fZW5naW5lcy5sZW5ndGggPT0gMCkKLSsgICAgICAgICAg ICBlbmdpbmUgPSBtX2VuX2VuZ2luZTsKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgICBlbmdp bmUgPSBtX2VuZ2luZXNbaV07Ci0gCi0gICAgICAgICBzZXRfZW5naW5lKGVuZ2luZSk7Ci0gICAg IH0KLUBAIC0xMDI0LDE3ICsxMDMyLDE1IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZp Y2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nW10/IG9yZGVyX25h bWVzKSB7Ci0gICAgICAgICBzdHJpbmdbXT8gZW5naW5lX25hbWVzID0gdW5vd25lZF9lbmdpbmVf bmFtZXM7Ci0gCi0tICAgICAgICBpZiAoZW5naW5lX25hbWVzID09IG51bGwgfHwgZW5naW5lX25h bWVzLmxlbmd0aCA9PSAwKSB7Ci0tICAgICAgICAgICAgaWYgKG1faXNfd2F5bGFuZCkKLS0gICAg ICAgICAgICAgICAgZW5naW5lX25hbWVzID0ge307Ci0tICAgICAgICAgICAgZWxzZQotLSAgICAg ICAgICAgICAgICBlbmdpbmVfbmFtZXMgPSB7InhrYjp1czo6ZW5nIn07Ci0tICAgICAgICB9Ci0r ICAgICAgICBpZiAoZW5naW5lX25hbWVzID09IG51bGwgfHwgZW5naW5lX25hbWVzLmxlbmd0aCA9 PSAwKQotKyAgICAgICAgICAgIGVuZ2luZV9uYW1lcyA9IHsieGtiOnVzOjplbmcifTsKLSAKLSAg ICAgICAgIHN0cmluZ1tdIG5hbWVzID0ge307Ci0gCi0gICAgICAgICBmb3JlYWNoICh2YXIgbmFt ZSBpbiBvcmRlcl9uYW1lcykgewotICAgICAgICAgICAgIGlmIChtX2lzX3dheWxhbmQgJiYgbmFt ZS5oYXNfcHJlZml4KCJ4a2I6IikpCi0rICAgICAgICAgICAgICAgIG5hbWUgPSAieGtiOnVzOjpl bmciOwotKyAgICAgICAgICAgIGlmIChuYW1lIGluIG5hbWVzKQotICAgICAgICAgICAgICAgICBj b250aW51ZTsKLSAgICAgICAgICAgICBpZiAobmFtZSBpbiBlbmdpbmVfbmFtZXMpCi0gICAgICAg ICAgICAgICAgIG5hbWVzICs9IG5hbWU7Ci1AQCAtMTA0Miw3ICsxMDQ4LDcgQEAgY2xhc3MgUGFu ZWwgOiBJQnVzLlBhbmVsU2VydmljZSB7Ci0gCi0gICAgICAgICBmb3JlYWNoICh2YXIgbmFtZSBp biBlbmdpbmVfbmFtZXMpIHsKLSAgICAgICAgICAgICBpZiAobV9pc193YXlsYW5kICYmIG5hbWUu aGFzX3ByZWZpeCgieGtiOiIpKQotLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAg ICAgICAgICAgbmFtZSA9ICJ4a2I6dXM6OmVuZyI7Ci0gICAgICAgICAgICAgaWYgKG5hbWUgaW4g bmFtZXMpCi0gICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgIG5hbWVzICs9 IG5hbWU7Ci1AQCAtMTA4MywxNCArMTA4OSwyMCBAQCBjbGFzcyBQYW5lbCA6IElCdXMuUGFuZWxT ZXJ2aWNlIHsKLSAJfQotIAotICAgICAgICAgaWYgKG1fZW5naW5lcy5sZW5ndGggPT0gMCkgewot LSAgICAgICAgICAgIGlmIChlbmdpbmVzLmxlbmd0aCA+IDApIHsKLS0gICAgICAgICAgICAgICAg bV9lbmdpbmVzID0gZW5naW5lczsKLS0gICAgICAgICAgICAgICAgc3dpdGNoX2VuZ2luZSgwLCB0 cnVlKTsKLS0gICAgICAgICAgICAgICAgcnVuX3ByZWxvYWRfZW5naW5lcyhlbmdpbmVzLCAxKTsK LS0gICAgICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICBtX2NhbmRpZGF0ZV9wYW5l bC5zZXRfbGFuZ3VhZ2UobmV3IFBhbmdvLkF0dHJMYW5ndWFnZSgKLS0gICAgICAgICAgICAgICAg ICAgICAgICBQYW5nby5MYW5ndWFnZS5mcm9tX3N0cmluZyhudWxsKSkpOwotKyAgICAgICAgICAg IG1fZW5naW5lcyA9IGVuZ2luZXM7Ci0rICAgICAgICAgICAgLy8gRG8gbm90IHNob3cgZW5naW5l cyBpbiBwYW5lbCBpY29uIGFuZCBzdWdnZXN0IHN5c3RlbXNldHRpbmdzNQotKyAgICAgICAgICAg IC8vIGluIFBsYXNtYSBXYXlsYW5kIGluIGNhc2UgYWxsIGVuZ2luZXMgYXJlIFhLQi4KLSsgICAg ICAgICAgICBpZiAobV9pc193YXlsYW5kICYmIG1fZW5naW5lcy5sZW5ndGggPT0gMSAmJgotKyAg ICAgICAgICAgICAgICBtX2VuZ2luZXNbMF0uZ2V0X25hbWUoKSA9PSAieGtiOnVzOjplbmciKSB7 Ci0rICAgICAgICAgICAgICAgIG1fZW5naW5lcyA9IHt9OwotKyAgICAgICAgICAgICAgICBpZiAo bV9lbl9lbmdpbmUgPT0gbnVsbCkgewotKyAgICAgICAgICAgICAgICAgICAgbV9lbl9lbmdpbmUg PQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2J1cy5nZXRfZW5naW5lc19ieV9uYW1l cyh7InhrYjp1czo6ZW5nIn0pWzBdOwotKyAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg fQotKyAgICAgICAgICAgIHN3aXRjaF9lbmdpbmUoMCwgdHJ1ZSk7Ci0rICAgICAgICAgICAgaWYg KG1fZW5naW5lcy5sZW5ndGggPiAwKQotKyAgICAgICAgICAgICAgICBydW5fcHJlbG9hZF9lbmdp bmVzKG1fZW5naW5lcywgMSk7Ci0gICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgIHZhciBj dXJyZW50X2VuZ2luZSA9IG1fZW5naW5lc1swXTsKLSAgICAgICAgICAgICBtX2VuZ2luZXMgPSBl bmdpbmVzOwotQEAgLTEzMDcsNiArMTMxOSwxMCBAQCBjbGFzcyBQYW5lbCA6IElCdXMuUGFuZWxT ZXJ2aWNlIHsKLSAgICAgICAgICAgICB2YXIgbG9uZ25hbWUgPSBlbmdpbmUuZ2V0X2xvbmduYW1l KCk7Ci0gICAgICAgICAgICAgdmFyIHRleHRkb21haW4gPSBlbmdpbmUuZ2V0X3RleHRkb21haW4o KTsKLSAgICAgICAgICAgICB2YXIgdHJhbnNuYW1lID0gR0xpYi5kZ2V0dGV4dCh0ZXh0ZG9tYWlu LCBsb25nbmFtZSk7Ci0rICAgICAgICAgICAgaWYgKG1faXNfd2F5bGFuZCAmJiBlbmdpbmUuZ2V0 X25hbWUoKS5oYXNfcHJlZml4KCJ4a2I6IikpIHsKLSsgICAgICAgICAgICAgICAgbGFuZ3VhZ2Ug PSBfKCJPdGhlciIpOwotKyAgICAgICAgICAgICAgICB0cmFuc25hbWUgPSBfKCJObyBpbnB1dCBt ZXRob2QiKTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgR3Rr Lk1lbnVJdGVtLndpdGhfbGFiZWwoCi0gICAgICAgICAgICAgICAgICIlcyAtICVzIi5wcmludGYg KElCdXMuZ2V0X2xhbmd1YWdlX25hbWUobGFuZ3VhZ2UpLCB0cmFuc25hbWUpKTsKLSAgICAgICAg ICAgICAvLyBNYWtlIGEgY29weSBvZiBlbmdpbmUgdG8gd29ya2Fyb3VuZCBhIGJ1ZyBpbiB2YWxh LgotQEAgLTE1ODQsNyArMTYwMCw3IEBAIGNsYXNzIFBhbmVsIDogSUJ1cy5QYW5lbFNlcnZpY2Ug ewotIAotICAgICAgICAgICAgIGlmIChlbmdpbmUgIT0gbnVsbCkgewotICAgICAgICAgICAgICAg ICB2YXIgbmFtZSA9IGVuZ2luZS5nZXRfbmFtZSgpOwotLSAgICAgICAgICAgICAgICBpZiAobmFt ZS5sZW5ndGggPj0gNCAmJiBuYW1lWzA6NF0gPT0gInhrYjoiKQotKyAgICAgICAgICAgICAgICBp ZiAoIW1faXNfd2F5bGFuZCAmJiBuYW1lLmxlbmd0aCA+PSA0ICYmIG5hbWVbMDo0XSA9PSAieGti OiIpCi0gICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSA9IG1fc3dpdGNoZXIuZ2V0X3hrYl9s YW5ndWFnZShlbmdpbmUpOwotICAgICAgICAgICAgIH0KLSAKLS0tIAotMi4zNS4zCi0KLUZyb20g Yjk0ZjBjMWNlYTVkMGU0MjNmZWYzYmNjMTNiMjNmMjEyZjA0YzkzMCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURh dGU6IFRodSwgNyBKdWwgMjAyMiAwODoxMzo1NyArMDkwMAotU3ViamVjdDogW1BBVENIXSBzcmM6 IEFkZCBJQlVTX0NBUF9PU0sgdG8gSUJ1c0NhcGFiaWxpdGUKLQotU29tZSBJTUVzJyBiZWhhdmlv ciBpcyBkaWZmZXJlbnQgYmV0d2VlbiB0aGUgb24tc2NyZWVuIGtleWJvYXJkIGFuZAotdGhlIGRp cmVjdCBwaHlzaWNhbCBrZXlib2FyZCBhbmQgdGhpcyBmbGFnIGlzIHVzZWZ1bCBmb3IgdGhlIElN RXMuCi0KLUFsc28gZml4IHNyYy9pYnVzYWNjZWxncm91cC5jIGZvciBndGtkb2MtbWtodG1sLgot SWYgdGhlIEFQSSBjb21tZW50IG9mIElCdXNDYXBhYmlsaXRlIGlzIHVwZGF0ZWQsIFhNTCAmIEhU TUwgZmlsZXMKLWFyZSByZWJ1aWx0IGFuZCBndGstZG9jLTEuMzMuMiBubyBsb25nZXIgYWNjZXB0 cyBIVE1MIHRhZ3MgaW4KLXRoZSBjb21tZW50cy4KLS0tLQotIHNyYy9pYnVzYWNjZWxncm91cC5j IHwgMTQgKysrKysrKy0tLS0tLS0KLSBzcmMvaWJ1c3R5cGVzLmggICAgICB8ICAyICsrCi0gMiBm aWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1n aXQgYS9zcmMvaWJ1c2FjY2VsZ3JvdXAuYyBiL3NyYy9pYnVzYWNjZWxncm91cC5jCi1pbmRleCBl ZjJkMzk3Ni4uYWVjMWM3ZTQgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2FjY2VsZ3JvdXAuYwotKysr IGIvc3JjL2lidXNhY2NlbGdyb3VwLmMKLUBAIC0yNjcsMTQgKzI2NywxNCBAQCBpc19rZXljb2Rl IChjb25zdCBnY2hhciAqc3RyaW5nKQotICAqICAgICBtb2RpZmllciBtYXNrLCAlTlVMTAotICAq Ci0gICogUGFyc2VzIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhbiBhY2NlbGVyYXRvci4gVGhlIGZv cm1hdCBsb29rcyBsaWtlCi0tICog4oCcPENvbnRyb2w+YeKAnSBvciDigJw8U2hpZnQ+PEFsdD5G MeKAnSBvciDigJw8UmVsZWFzZT564oCdICh0aGUgbGFzdCBvbmUgaXMKLS0gKiBmb3Iga2V5IHJl bGVhc2UpLgotKyAqIOKAnCZsdDtDb250cm9sJmd0O2HigJ0gb3Ig4oCcJmx0O1NoaWZ0Jmd0OyZs dDtBbHQmZ3Q7RjHigJ0gb3Ig4oCcJmx0O1JlbGVhc2UlZ3Q7euKAnQotKyAqICh0aGUgbGFzdCBv bmUgaXMgZm9yIGtleSByZWxlYXNlKS4KLSAgKgotICAqIFRoZSBwYXJzZXIgaXMgZmFpcmx5IGxp YmVyYWwgYW5kIGFsbG93cyBsb3dlciBvciB1cHBlciBjYXNlLCBhbmQgYWxzbwotLSAqIGFiYnJl dmlhdGlvbnMgc3VjaCBhcyDigJw8Q3RsPuKAnSBhbmQg4oCcPEN0cmw+4oCdLiBLZXkgbmFtZXMg YXJlIHBhcnNlZCB1c2luZwotLSAqIGdka19rZXl2YWxfZnJvbV9uYW1lKCkuIEZvciBjaGFyYWN0 ZXIga2V5cyB0aGUgbmFtZSBpcyBub3QgdGhlIHN5bWJvbCwKLS0gKiBidXQgdGhlIGxvd2VyY2Fz ZSBuYW1lLCBlLmcuIG9uZSB3b3VsZCB1c2Ug4oCcPEN0cmw+bWludXPigJ0gaW5zdGVhZCBvZgot LSAqIOKAnDxDdHJsPi3igJ0uCi0rICogYWJicmV2aWF0aW9ucyBzdWNoIGFzIOKAnCZsdDtDdGwm Z3Q74oCdIGFuZCDigJwmbHQ7Q3RybCZndDvigJ0uIEtleSBuYW1lcyBhcmUKLSsgKiBwYXJzZWQg dXNpbmcgZ2RrX2tleXZhbF9mcm9tX25hbWUoKS4gRm9yIGNoYXJhY3RlciBrZXlzIHRoZSBuYW1l IGlzIG5vdCB0aGUKLSsgKiBzeW1ib2wsIGJ1dCB0aGUgbG93ZXJjYXNlIG5hbWUsIGUuZy4gb25l IHdvdWxkIHVzZSDigJwmbHQ7Q3RybCZndDttaW51c+KAnQotKyAqIGluc3RlYWQgb2Yg4oCcJmx0 O0N0cmwmZ3Q7LeKAnS4KLSAgKgotICAqIElmIHRoZSBwYXJzZSBmYWlscywgQGFjY2VsZXJhdG9y X2tleSBhbmQgQGFjY2VsZXJhdG9yX21vZHMgd2lsbAotICAqIGJlIHNldCB0byAwICh6ZXJvKS4K LUBAIC00MDMsNyArNDAzLDcgQEAgb3V0OgotICAqCi0gICogQ29udmVydHMgYW4gYWNjZWxlcmF0 b3Iga2V5dmFsIGFuZCBtb2RpZmllciBtYXNrIGludG8gYSBzdHJpbmcKLSAgKiBwYXJzZWFibGUg YnkgZ3RrX2FjY2VsZXJhdG9yX3BhcnNlKCkuIEZvciBleGFtcGxlLCBpZiB5b3UgcGFzcyBpbgot LSAqICNJQlVTX0tFWV9xIGFuZCAjSUJVU19DT05UUk9MX01BU0ssIHRoaXMgZnVuY3Rpb24gcmV0 dXJucyDigJw8Q29udHJvbD5x4oCdLgotKyAqICNJQlVTX0tFWV9xIGFuZCAjSUJVU19DT05UUk9M X01BU0ssIHRoaXMgZnVuY3Rpb24gcmV0dXJucyDigJwmbHQ7Q29udHJvbCZndDtx4oCdLgotICAq Ci0gICogSWYgeW91IG5lZWQgdG8gZGlzcGxheSBhY2NlbGVyYXRvcnMgaW4gdGhlIHVzZXIgaW50 ZXJmYWNlLAotICAqIHNlZSBndGtfYWNjZWxlcmF0b3JfZ2V0X2xhYmVsKCkuCi1kaWZmIC0tZ2l0 IGEvc3JjL2lidXN0eXBlcy5oIGIvc3JjL2lidXN0eXBlcy5oCi1pbmRleCA5OTA2NTlhYy4uNjBi Y2I5MmIgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c3R5cGVzLmgKLSsrKyBiL3NyYy9pYnVzdHlwZXMu aAotQEAgLTEwOCw2ICsxMDgsNyBAQCB0eXBlZGVmIGVudW0KLSAgKiBASUJVU19DQVBfUFJPUEVS VFk6IFVJIGlzIGNhcGFibGUgdG8gaGF2ZSBwcm9wZXJ0eS4KLSAgKiBASUJVU19DQVBfU1VSUk9V TkRJTkdfVEVYVDogQ2xpZW50IGNhbiBwcm92aWRlIHN1cnJvdW5kIHRleHQsCi0gICogIG9yIElN RSBjYW4gaGFuZGxlIHN1cnJvdW5kIHRleHQuCi0rICogQElCVVNfQ0FQX09TSzogVUkgaXMgb3du ZWQgYnkgb24tc2NyZWVuIGtleWJvYXJkLgotICAqCi0gICogQ2FwYWJpbGl0eSBmbGFncyBvZiBV SS4KLSAgKi8KLUBAIC0xMTgsNiArMTE5LDcgQEAgdHlwZWRlZiBlbnVtIHsKLSAgICAgSUJVU19D QVBfRk9DVVMgICAgICAgICAgICAgID0gMSA8PCAzLAotICAgICBJQlVTX0NBUF9QUk9QRVJUWSAg ICAgICAgICAgPSAxIDw8IDQsCi0gICAgIElCVVNfQ0FQX1NVUlJPVU5ESU5HX1RFWFQgICA9IDEg PDwgNSwKLSsgICAgSUJVU19DQVBfT1NLICAgICAgICAgICAgICAgID0gMSA8PCA2LAotIH0gSUJ1 c0NhcGFiaWxpdGU7Ci0gCi0gLyoqCi0tLSAKLTIuMzUuMwotCi1Gcm9tIDRlNDhlNzIzN2Q3M2Qy MGYwNDI2MjY1ZGJiNmI2OTJiMTQ4OTE5MzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDcgSnVs IDIwMjIgMDg6MjE6MjQgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gdG9vbHM6IEVuYWJsZSBpYnVz IHJlc3RhcnQgaW4gR05PTUUgZGVza3RvcAotCi1JZiBpYnVzLWRhZW1vbiBpcyBjYWxsZWQgdmlh IHN5c3RlbWQsIElCdXMgcmVzdGFydCBBUEkgY2Fubm90IHJlc3RhcnQKLWlidXMtZGFlbW9uIGJ1 dCBqdXN0IHRlcm1pbmF0ZXMgaXQuCi1Ob3cgaWJ1cyByZXN0YXJ0IGNvbW1hbmQgY2hlY2tzIHRo ZSBzeXN0ZW1kIGF2YWlhYmlsaXR5IGFuZCByZXN0YXJ0Ci1pYnVzLWRhZW1vbiB2aWEgc3lzdGVt ZC4KLWlidXMgc3RhcnQgY29tbWFuZCBpcyBhbHNvIGFkZGVkIHRvIGxhdW5jaCBpYnVzLWRhZW1v biB3aXRoIHN5c3RlbWQuCi0KLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3Vl cy8yNDA3Ci0tLS0KLSB0b29scy9NYWtlZmlsZS5hbSB8ICAgMyArLQotIHRvb2xzL2lidXMuMS5p biAgIHwgIDMwICsrKysrLQotIHRvb2xzL21haW4udmFsYSAgIHwgMjYxICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDMzMCBp bnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rvb2xzL01ha2Vm aWxlLmFtIGIvdG9vbHMvTWFrZWZpbGUuYW0KLWluZGV4IDVjMThkM2Q2Li5lMzgwYTlhYSAxMDA2 NDQKLS0tLSBhL3Rvb2xzL01ha2VmaWxlLmFtCi0rKysgYi90b29scy9NYWtlZmlsZS5hbQotQEAg LTMsNyArMyw3IEBACi0gIyBpYnVzIC0gVGhlIElucHV0IEJ1cwotICMKLSAjIENvcHlyaWdodCAo YykgMjAwNy0yMDEzIFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSMgQ29w eXJpZ2h0IChjKSAyMDE1LTIwMTcgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci0rIyBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyMiBUYWthbyBGdWppd2FyYSA8dGFrYW8u ZnVqaXdhcmExQGdtYWlsLmNvbT4KLSAjIENvcHlyaWdodCAoYykgMjAwNy0yMDE3IFJlZCBIYXQs IEluYy4KLSAjCi0gIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yCi1AQCAtNTcsNiArNTcsNyBAQCBBTV9MREFERCA9IFwKLSBBTV9W QUxBRkxBR1MgPSBcCi0gCS0tdmFwaWRpcj0kKHRvcF9idWlsZGRpcikvYmluZGluZ3MvdmFsYSBc Ci0gCS0tdmFwaWRpcj0kKHRvcF9zcmNkaXIpL2JpbmRpbmdzL3ZhbGEgXAotKwktLXBrZz1naW8t Mi4wIFwKLSAJLS1wa2c9aWJ1cy0xLjAgXAotIAktLXBrZz1wb3NpeCBcCi0gCS0tcGtnPWNvbmZp ZyBcCi1kaWZmIC0tZ2l0IGEvdG9vbHMvaWJ1cy4xLmluIGIvdG9vbHMvaWJ1cy4xLmluCi1pbmRl eCA1MjVkOTcyZS4uZmUxYjcxNTcgMTAwNjQ0Ci0tLS0gYS90b29scy9pYnVzLjEuaW4KLSsrKyBi L3Rvb2xzL2lidXMuMS5pbgotQEAgLTMsNyArMyw3IEBACi0gLlwiIENvcHlyaWdodCAoQykgVGFr YW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+LCAyMDEzLTIwMTcuCi0gLlwi IENvcHlyaWdodCAoYykgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+LCAyMDEz LgotIC5cIgotLS5USCAiSUJVUyIgMSAiTWF5IDIwMTciICJAVkVSU0lPTkAiICJVc2VyIENvbW1h bmRzIgotKy5USCAiSUJVUyIgMSAiSnVsIDIwMjIiICJAVkVSU0lPTkAiICJVc2VyIENvbW1hbmRz IgotIC5TSCBOQU1FCi0gLkIgaWJ1cwotIFwtIGNvbW1hbmQgbGluZSB1dGlsaXR5IGZvciBpYnVz Ci1AQCAtNDUsMTMgKzQ1LDMzIEBAIEV4aXQgaWJ1cy1kYWVtb24uCi0gXGZCbGlzdC1lbmdpbmVc ZlIKLSBTaG93IGlidXMgZW5naW5lcyBsaXN0LgotIC5UUAotLVxmQnJlc3RhcnRcZlIKLS1SZXN0 YXJ0IGlidXMtZGFlbW9uLgotK1xmQnJlc3RhcnRcZlIgW1xmQlwtXC10eXBlPVRZUEV8XC1cLXZl cmJvc2V8XC1cLWhlbHBcZlJdCi0rUmVzdGFydCBpYnVzLWRhZW1vbi4gVGhpcyBjb21tYW5kIHRy aWVzIHRvIHJlc3RhcnQgaWJ1cy1kYWVtb24gdmlhIHN5c3RlbWQKLStmaXJzdGx5IGFuZCBkaXJl Y3RseSBzZWNvbmRhcnkgYnkgZGVmYXVsdC4gSWYKLSsuQiBcLVwtdHlwZT1zeXN0ZW1kCi0raXMg Z2l2ZW4sIEl0IHRyaWVzIHRvIHJlc3RhcnQgdmlhIHN5c3RlbWQgb25seS4gSWYKLSsuQiBcLVwt dHlwZT1kaXJlY3QKLStpcyBnaXZlbiwgSXQgdHJpZXMgdG8gcmVzdGFydCB3aXRoIGFuIElCdXMg QVBJIG9ubHkuIEdOT01FIGRlc2t0b3AgcnVucwotK2lidXMtZGFlbW9uIHZpYSBzeXN0ZW1kIGFu ZCBvdGhlciBkZXNrdG9wcyBydW4gaWJ1cy1kYWVtb24gZGlyZWN0bHkuCi0rLlRQCi0rXGZCc3Rh cnRcZlIgW1xmQlwtXC10eXBlPVRZUEV8XC1cLXZlcmJvc2V8XC1cLWhlbHBcZlJdCi0rU3RhcnQg aWJ1cy1kYWVtb24uIFRoaXMgY29tbWFuZCB0cmllcyB0byBzdGFydCBpYnVzLWRhZW1vbiB2aWEg c3lzdGVtZAotK2ZpcnN0bHkgYW5kIGRpcmVjdGx5IHNlY29uZGFyeSBieSBkZWZhdWx0LiBJZgot Ky5CIFwtXC10eXBlPXN5c3RlbWQKLStpcyBnaXZlbiwgSXQgdHJpZXMgdG8gc3RhcnQgYXMgYSBi YWNrZ3JvdW5kIHByb2Nlc3MgdmlhIHN5c3RlbWQgb25seS4gSWYKLSsuQiBcLVwtdHlwZT1kaXJl Y3QKLStpcyBnaXZlbiwgSXQgdHJpZXMgdG8gc3RhcnQgZGlyZWN0bHkgb25seSBhcyBhIGZvcmVn cm91bmQgcHJvY2VzcyBhbmQgb3RoZXIKLStvcHRpb24gYXJndW1lbnRzIG9mIGlidXMgY29tbWFu ZCBhcmUgc2VudCB0byBpYnVzLWRhZW1vbi4gRS5nLgotK2lidXMgc3RhcnQKLSsuQiBcLVwtdHlw ZT1kaXJlY3QKLSsuQiBcLVwteGltCi0rJgotK0dOT01FIGRlc2t0b3AgcnVucyBpYnVzLWRhZW1v biB2aWEgc3lzdGVtZCBhbmQgb3RoZXIgZGVza3RvcHMgcnVuIGlidXMtZGFlbW9uIGRpcmVjdGx5 LgotIC5UUAotIFxmQnZlcnNpb25cZlIKLSBTaG93IHRoZSBpYnVzIHZlcnNpb24uCi0gLlRQCi0t XGZCcmVhZFwtY2FjaGVcZlIgW1xmQlwtXC1zeXN0ZW18XC1cLWZpbGU9RklMRVxmUl0KLStcZkJy ZWFkXC1jYWNoZVxmUiBbXGZCXC1cLXN5c3RlbXxcLVwtZmlsZT1GSUxFfFwtXC1oZWxwXGZSXQot IFNob3cgdGhlIGNvbnRlbnQgb2YgdGhlIHVzZXIgcmVnaXN0cnkgY2FjaGUgaWYKLSAuQiBcLVwt c3lzdGVtCi0gaXMgbm90IGdpdmVuLgotQEAgLTY0LDcgKzg0LDcgQEAgaWYKLSAuQiBcLVwtZmls ZT1GSUxFCi0gaXMgZ2l2ZW4uCi0gLlRQCi0tXGZCd3JpdGVcLWNhY2hlXGZSIFtcZkJcLVwtc3lz dGVtfFwtXC1maWxlPUZJTEVcZlJdCi0rXGZCd3JpdGVcLWNhY2hlXGZSIFtcZkJcLVwtc3lzdGVt fFwtXC1maWxlPUZJTEV8XC1cLWhlbHBcZlJdCi0gU2F2ZSB0aGUgdXNlciByZWdpc3RyeSBjYWNo ZSBpZgotIC5CIFwtXC1zeXN0ZW0KLSBpcyBub3QgZ2l2ZW4uCi1kaWZmIC0tZ2l0IGEvdG9vbHMv bWFpbi52YWxhIGIvdG9vbHMvbWFpbi52YWxhCi1pbmRleCAyNmU3ZmQ4OC4uNDA3ZWFmNzQgMTAw NjQ0Ci0tLS0gYS90b29scy9tYWluLnZhbGEKLSsrKyBiL3Rvb2xzL21haW4udmFsYQotQEAgLTMs NyArMyw3IEBACi0gICogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAgKgotICAqIENvcHlyaWdodChj KSAyMDEzIFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSAqIENvcHlyaWdo dChjKSAyMDE1LTIwMjAgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+ Ci0rICogQ29weXJpZ2h0KGMpIDIwMTUtMjAyMiBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdh cmExQGdtYWlsLmNvbT4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAtMjcsMTcgKzI3LDIzIEBA IHByaXZhdGUgY29uc3Qgc3RyaW5nIElCVVNfU0NIRU1BU19HRU5FUkFMX0hPVEtFWSA9Ci0gcHJp dmF0ZSBjb25zdCBzdHJpbmcgSUJVU19TQ0hFTUFTX1BBTkVMID0gIm9yZy5mcmVlZGVza3RvcC5p YnVzLnBhbmVsIjsKLSBwcml2YXRlIGNvbnN0IHN0cmluZyBJQlVTX1NDSEVNQVNfUEFORUxfRU1P SkkgPQotICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5pYnVzLnBhbmVsLmVtb2ppIjsKLStwcml2 YXRlIGNvbnN0IHN0cmluZyBTWVNURU1EX1NFU1NJT05fR05PTUVfRklMRSA9Ci0rICAgICAgICAi b3JnLmZyZWVkZXNrdG9wLklCdXMuc2Vzc2lvbi5HTk9NRS5zZXJ2aWNlIjsKLSAKLSBib29sIG5h bWVfb25seSA9IGZhbHNlOwotIC8qIHN5c3RlbSgpIGV4aXN0cyBhcyBhIHB1YmxpYyBBUEkuICov Ci0gYm9vbCBpc19zeXN0ZW0gPSBmYWxzZTsKLSBzdHJpbmcgY2FjaGVfZmlsZSA9IG51bGw7Ci0g c3RyaW5nIGVuZ2luZV9pZCA9IG51bGw7Ci0rYm9vbCB2ZXJib3NlID0gZmFsc2U7Ci0rc3RyaW5n IGRhZW1vbl90eXBlID0gbnVsbDsKLStzdHJpbmcgc3lzdGVtZF9zZXJ2aWNlX2ZpbGUgPSBudWxs OwotIAotIGNsYXNzIEVuZ2luZUxpc3QgewotICAgICBwdWJsaWMgSUJ1cy5FbmdpbmVEZXNjW10g ZGF0YSA9IHt9OwotIH0KLSAKLSsKLSBJQnVzLkJ1cz8gZ2V0X2J1cygpIHsKLSAgICAgdmFyIGJ1 cyA9IG5ldyBJQnVzLkJ1cygpOwotICAgICBpZiAoIWJ1cy5pc19jb25uZWN0ZWQgKCkpCi1AQCAt NDUsNiArNTEsMTMxIEBAIElCdXMuQnVzPyBnZXRfYnVzKCkgewotICAgICByZXR1cm4gYnVzOwot IH0KLSAKLSsKLStHTGliLkRCdXNDb25uZWN0aW9uPyAgZ2V0X3Nlc3Npb25fYnVzKGJvb2wgdmVy Ym9zZSkgewotKyAgICB0cnkgewotKyAgICAgICAgcmV0dXJuIEdMaWIuQnVzLmdldF9zeW5jIChH TGliLkJ1c1R5cGUuU0VTU0lPTiwgbnVsbCk7Ci0rICAgIH0gY2F0Y2ggKEdMaWIuSU9FcnJvciBl KSB7Ci0rICAgICAgICBpZiAodmVyYm9zZSkKLSsgICAgICAgICAgICBzdGRlcnIucHJpbnRmKCIl c1xuIiwgZS5tZXNzYWdlKTsKLSsgICAgfQotKyAgICByZXR1cm4gbnVsbDsKLSt9Ci0rCi0rc3Ry aW5nPwotK2dldF9pYnVzX3N5c3RlbWRfb2JqZWN0X3BhdGgoR0xpYi5EQnVzQ29ubmVjdGlvbiBj b25uZWN0aW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAgICAgICAgICAg ICAgICB2ZXJib3NlKSB7Ci0rICAgIHN0cmluZyBvYmplY3RfcGF0aCA9IG51bGw7Ci0rICAgIGFz c2VydChzeXN0ZW1kX3NlcnZpY2VfZmlsZSAhPSBudWxsKTsKLSsgICAgdHJ5IHsKLSsgICAgICAg IHZhciB2YXJpYW50ID0gY29ubmVjdGlvbi5jYWxsX3N5bmMgKAotKyAgICAgICAgICAgICAgICAi b3JnLmZyZWVkZXNrdG9wLnN5c3RlbWQxIiwKLSsgICAgICAgICAgICAgICAgIi9vcmcvZnJlZWRl c2t0b3Avc3lzdGVtZDEiLAotKyAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLnN5c3Rl bWQxLk1hbmFnZXIiLAotKyAgICAgICAgICAgICAgICAiR2V0VW5pdCIsCi0rICAgICAgICAgICAg ICAgIG5ldyBHTGliLlZhcmlhbnQoIihzKSIsIHN5c3RlbWRfc2VydmljZV9maWxlKSwKLSsgICAg ICAgICAgICAgICAgbmV3IEdMaWIuVmFyaWFudFR5cGUoIihvKSIpLAotKyAgICAgICAgICAgICAg ICBHTGliLkRCdXNDYWxsRmxhZ3MuTk9ORSwKLSsgICAgICAgICAgICAgICAgLTEsCi0rICAgICAg ICAgICAgICAgIG51bGwpOwotKyAgICAgICAgdmFyaWFudC5nZXQoIihvKSIsIHJlZiBvYmplY3Rf cGF0aCk7Ci0rICAgICAgICBpZiAodmVyYm9zZSkgewotKyAgICAgICAgICAgIHN0ZGVyci5wcmlu dGYoIlN1Y2NlZWQgdG8gZ2V0IGFuIG9iamVjdCBwYXRoIFwiJXNcIiBmb3IgSUJ1cyAiICsKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICJzeXN0ZW1kIHNlcnZpY2UgZmlsZSBcIiVzXCIuXG4i LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0X3BhdGgsIHN5c3RlbWRfc2Vydmlj ZV9maWxlKTsKLSsgICAgICAgIH0KLSsgICAgICAgIHJldHVybiBvYmplY3RfcGF0aDsKLSsgICAg fSBjYXRjaCAoR0xpYi5FcnJvciBlKSB7Ci0rICAgICAgICBpZiAodmVyYm9zZSkgewotKyAgICAg ICAgICAgIHN0ZGVyci5wcmludGYoIklCdXMgc3lzdGVtZCBzZXJ2aWNlIGZpbGUgXCIlc1wiIGlz IG5vdCBpbnN0YWxsZWQgIiArCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4geW91ciBz eXN0ZW06ICVzXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZF9zZXJ2aWNl X2ZpbGUsIGUubWVzc2FnZSk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgICAgcmV0dXJuIG51bGw7 Ci0rfQotKwotKwotK2Jvb2wKLStpc19ydW5uaW5nX2RhZW1vbl92aWFfc3lzdGVtZChHTGliLkRC dXNDb25uZWN0aW9uIGNvbm5lY3Rpb24sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RyaW5nICAgICAgICAgICAgICBvYmplY3RfcGF0aCwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBib29sICAgICAgICAgICAgICAgIHZlcmJvc2UpIHsKLSsgICAgc3RyaW5nPyBzdGF0 ZSA9IG51bGw7Ci0rICAgIHRyeSB7Ci0rICAgICAgICB3aGlsZSAodHJ1ZSkgewotKyAgICAgICAg ICAgIHZhciB2YXJpYW50ID0gY29ubmVjdGlvbi5jYWxsX3N5bmMgKAotKyAgICAgICAgICAgICAg ICAgICAgIm9yZy5mcmVlZGVza3RvcC5zeXN0ZW1kMSIsCi0rICAgICAgICAgICAgICAgICAgICBv YmplY3RfcGF0aCwKLSsgICAgICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AuREJ1cy5Q cm9wZXJ0aWVzIiwKLSsgICAgICAgICAgICAgICAgICAgICJHZXQiLAotKyAgICAgICAgICAgICAg ICAgICAgbmV3IEdMaWIuVmFyaWFudCgiKHNzKSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3Auc3lzdGVtZDEuVW5pdCIsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBY3RpdmVTdGF0ZSIpLAotKyAgICAgICAgICAg ICAgICAgICAgbmV3IEdMaWIuVmFyaWFudFR5cGUoIih2KSIpLAotKyAgICAgICAgICAgICAgICAg ICAgR0xpYi5EQnVzQ2FsbEZsYWdzLk5PTkUsCi0rICAgICAgICAgICAgICAgICAgICAtMSwKLSsg ICAgICAgICAgICAgICAgICAgIG51bGwpOwotKyAgICAgICAgICAgIEdMaWIuVmFyaWFudCBjaGls ZCA9IG51bGw7Ci0rICAgICAgICAgICAgdmFyaWFudC5nZXQoIih2KSIsIHJlZiBjaGlsZCk7Ci0r ICAgICAgICAgICAgc3RhdGUgPSBjaGlsZC5kdXBfc3RyaW5nKCk7Ci0rICAgICAgICAgICAgaWYg KHZlcmJvc2UpIHsKLSsgICAgICAgICAgICAgICAgc3RkZXJyLnByaW50Zigic3lzdGVtZCBzdGF0 ZSBpcyBcIiVzXCIgZm9yIGFuIG9iamVjdCAiICsKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAicGF0aCBcIiVzXCIuXG4iLCBzdGF0ZSwgb2JqZWN0X3BhdGgpOwotKyAgICAgICAgICAg IH0KLSsgICAgICAgICAgICBpZiAoc3RhdGUgIT0gImFjdGl2YXRpbmciKQotKyAgICAgICAgICAg ICAgICBicmVhazsKLSsgICAgICAgICAgICBQb3NpeC5zbGVlcCgxKTsKLSsgICAgICAgIH0KLSsg ICAgfSBjYXRjaCAoR0xpYi5FcnJvciBlKSB7Ci0rICAgICAgICBpZiAodmVyYm9zZSkKLSsgICAg ICAgICAgICBzdGRlcnIucHJpbnRmKCIlc1xuIiwgZS5tZXNzYWdlKTsKLSsgICAgICAgIHJldHVy biBmYWxzZTsKLSsgICAgfQotKyAgICBpZiAoc3RhdGUgPT0gImFjdGl2ZSIpCi0rICAgICAgICBy ZXR1cm4gdHJ1ZTsKLSsgICAgcmV0dXJuIGZhbHNlOwotK30KLSsKLSsKLStib29sCi0rc3RhcnRf ZGFlbW9uX3ZpYV9zeXN0ZW1kKEdMaWIuREJ1c0Nvbm5lY3Rpb24gY29ubmVjdGlvbiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICByZXN0YXJ0LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICBib29sICAgICAgICAgICAgICAgIHZlcmJvc2UpIHsKLSsgICAg c3RyaW5nIG9iamVjdF9wYXRoID0gbnVsbDsKLSsgICAgc3RyaW5nIG1ldGhvZCA9ICJTdGFydFVu aXQiOwotKyAgICBhc3NlcnQoc3lzdGVtZF9zZXJ2aWNlX2ZpbGUgIT0gbnVsbCk7Ci0rICAgIGlm IChyZXN0YXJ0KQotKyAgICAgICAgbWV0aG9kID0gIlJlc3RhcnRVbml0IjsKLSsgICAgdHJ5IHsK LSsgICAgICAgIHZhciB2YXJpYW50ID0gY29ubmVjdGlvbi5jYWxsX3N5bmMgKAotKyAgICAgICAg ICAgICAgICAib3JnLmZyZWVkZXNrdG9wLnN5c3RlbWQxIiwKLSsgICAgICAgICAgICAgICAgIi9v cmcvZnJlZWRlc2t0b3Avc3lzdGVtZDEiLAotKyAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNr dG9wLnN5c3RlbWQxLk1hbmFnZXIiLAotKyAgICAgICAgICAgICAgICBtZXRob2QsCi0rICAgICAg ICAgICAgICAgIG5ldyBHTGliLlZhcmlhbnQoIihzcykiLCBzeXN0ZW1kX3NlcnZpY2VfZmlsZSwg ImZhaWwiKSwKLSsgICAgICAgICAgICAgICAgbmV3IEdMaWIuVmFyaWFudFR5cGUoIihvKSIpLAot KyAgICAgICAgICAgICAgICBHTGliLkRCdXNDYWxsRmxhZ3MuTk9ORSwKLSsgICAgICAgICAgICAg ICAgLTEsCi0rICAgICAgICAgICAgICAgIG51bGwpOwotKyAgICAgICAgdmFyaWFudC5nZXQoIihv KSIsIHJlZiBvYmplY3RfcGF0aCk7Ci0rICAgICAgICBpZiAodmVyYm9zZSkgewotKyAgICAgICAg ICAgIHN0ZGVyci5wcmludGYoIlN1Y2NlZWQgdG8gcmVzdGFydCBJQnVzIGRhZW1vbiB2aWEgSUJ1 cyBzeXN0ZW1kICIgKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgInNlcnZpY2UgZmlsZSBc IiVzXCI6IFwiJXNcIlxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbWRfc2Vy dmljZV9maWxlLCBvYmplY3RfcGF0aCk7Ci0rICAgICAgICB9Ci0rICAgICAgICByZXR1cm4gdHJ1 ZTsKLSsgICAgfSBjYXRjaCAoR0xpYi5FcnJvciBlKSB7Ci0rICAgICAgICBpZiAodmVyYm9zZSkg ewotKyAgICAgICAgICAgIHN0ZGVyci5wcmludGYoIkZhaWxlZCB0byAlcyBJQnVzIGRhZW1vbiB2 aWEgSUJ1cyBzeXN0ZW1kICIgKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgInNlcnZpY2Ug ZmlsZSBcIiVzXCI6ICVzXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdGFydCA/ ICJyZXN0YXJ0IiA6ICJzdGFydCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1k X3NlcnZpY2VfZmlsZSwgZS5tZXNzYWdlKTsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICByZXR1 cm4gZmFsc2U7Ci0rfQotKwotKwotIGludCBsaXN0X2VuZ2luZShzdHJpbmdbXSBhcmd2KSB7Ci0g ICAgIGNvbnN0IE9wdGlvbkVudHJ5W10gb3B0aW9ucyA9IHsKLSAgICAgICAgIHsgIm5hbWUtb25s eSIsIDAsIDAsIE9wdGlvbkFyZy5OT05FLCBvdXQgbmFtZV9vbmx5LAotQEAgLTk5LDYgKzIzMCw3 IEBAIGludCBsaXN0X2VuZ2luZShzdHJpbmdbXSBhcmd2KSB7Ci0gICAgIHJldHVybiBQb3NpeC5F WElUX1NVQ0NFU1M7Ci0gfQotIAotKwotIHByaXZhdGUgaW50IGV4ZWNfc2V0eGtibWFwKElCdXMu RW5naW5lRGVzYyBlbmdpbmUpIHsKLSAgICAgc3RyaW5nIGxheW91dCA9IGVuZ2luZS5nZXRfbGF5 b3V0KCk7Ci0gICAgIHN0cmluZyB2YXJpYW50ID0gZW5naW5lLmdldF9sYXlvdXRfdmFyaWFudCgp OwotQEAgLTE0OSw2ICsyODEsNyBAQCBwcml2YXRlIGludCBleGVjX3NldHhrYm1hcChJQnVzLkVu Z2luZURlc2MgZW5naW5lKSB7Ci0gICAgIHJldHVybiBQb3NpeC5FWElUX1NVQ0NFU1M7Ci0gfQot IAotKwotIGludCBnZXRfc2V0X2VuZ2luZShzdHJpbmdbXSBhcmd2KSB7Ci0gICAgIHZhciBidXMg PSBnZXRfYnVzKCk7Ci0gICAgIHN0cmluZyBlbmdpbmUgPSBudWxsOwotQEAgLTE4MiwyMCArMzE1 LDEyMSBAQCBpbnQgZ2V0X3NldF9lbmdpbmUoc3RyaW5nW10gYXJndikgewotICAgICByZXR1cm4g UG9zaXguRVhJVF9TVUNDRVNTOwotIH0KLSAKLSsKLSBpbnQgbWVzc2FnZV93YXRjaChzdHJpbmdb XSBhcmd2KSB7Ci0gICAgIHJldHVybiBQb3NpeC5FWElUX1NVQ0NFU1M7Ci0gfQotIAotLWludCBy ZXN0YXJ0X2RhZW1vbihzdHJpbmdbXSBhcmd2KSB7Ci0tICAgIHZhciBidXMgPSBnZXRfYnVzKCk7 Ci0tICAgIGlmIChidXMgPT0gbnVsbCkgewotLSAgICAgICAgc3RkZXJyLnByaW50ZihfKCJDYW4n dCBjb25uZWN0IHRvIElCdXMuXG4iKSk7Ci0rCi0raW50IHN0YXJ0X2RhZW1vbl9yZWFsKHN0cmlu Z1tdIGFyZ3YsCi0rICAgICAgICAgICAgICAgICAgICAgIGJvb2wgICAgIHJlc3RhcnQpIHsKLSsg ICAgY29uc3QgT3B0aW9uRW50cnlbXSBvcHRpb25zID0gewotKyAgICAgICAgeyAidHlwZSIsIDAs IDAsIE9wdGlvbkFyZy5TVFJJTkcsIG91dCBkYWVtb25fdHlwZSwKLSsgICAgICAgICAgTl8oIlN0 YXJ0IG9yIHJlc3RhcnQgZGFlbW9uIHdpdGggXCJkaXJlY3RcIiBvciBcInN5c3RlbWRcIiBUWVBF LiIpLAotKyAgICAgICAgICAiVFlQRSIgfSwKLSsgICAgICAgIHsgInNlcnZpY2UtZmlsZSIsIDAs IDAsIE9wdGlvbkFyZy5TVFJJTkcsIG91dCBzeXN0ZW1kX3NlcnZpY2VfZmlsZSwKLSsgICAgICAg ICAgTl8oIlN0YXJ0IG9yIHJlc3RhcnQgZGFlbW9uIHdpdGggU1lTVEVNRF9TRVJWSUNFIGZpbGUu IiksCi0rICAgICAgICAgICJTWVNURU1EX1NFUlZJQ0UiIH0sCi0rICAgICAgICB7ICJ2ZXJib3Nl IiwgMCwgMCwgT3B0aW9uQXJnLk5PTkUsIG91dCB2ZXJib3NlLAotKyAgICAgICAgICBOXygiU2hv dyBkZWJ1ZyBtZXNzYWdlcy4iKSwgbnVsbCB9LAotKyAgICAgICAgeyBudWxsIH0KLSsgICAgfTsK LSsKLSsgICAgdmFyIG9wdGlvbiA9IG5ldyBPcHRpb25Db250ZXh0KCk7Ci0rICAgIG9wdGlvbi5h ZGRfbWFpbl9lbnRyaWVzKG9wdGlvbnMsIENvbmZpZy5HRVRURVhUX1BBQ0tBR0UpOwotKyAgICBv cHRpb24uc2V0X2lnbm9yZV91bmtub3duX29wdGlvbnModHJ1ZSk7Ci0rCi0rICAgIHRyeSB7Ci0r ICAgICAgICBvcHRpb24ucGFyc2UocmVmIGFyZ3YpOwotKyAgICB9IGNhdGNoIChPcHRpb25FcnJv ciBlKSB7Ci0rICAgICAgICBzdGRlcnIucHJpbnRmKCIlc1xuIiwgZS5tZXNzYWdlKTsKLSsgICAg ICAgIHJldHVybiBQb3NpeC5FWElUX0ZBSUxVUkU7Ci0rICAgIH0KLSsgICAgaWYgKGRhZW1vbl90 eXBlICE9IG51bGwgJiYgZGFlbW9uX3R5cGUgIT0gImRpcmVjdCIgJiYKLSsgICAgICAgIGRhZW1v bl90eXBlICE9ICJzeXN0ZW1kIikgewotKyAgICAgICAgc3RkZXJyLnByaW50ZigidHlwZSBhcmd1 bWVudCBtdXN0IGJlIFwiZGlyZWN0XCIgb3IgXCJzeXN0ZW1kXCJcbiIpOwotKyAgICAgICAgcmV0 dXJuIFBvc2l4LkVYSVRfRkFJTFVSRTsKLSsgICAgfQotKyAgICBpZiAoc3lzdGVtZF9zZXJ2aWNl X2ZpbGUgPT0gbnVsbCkKLSsgICAgICAgIHN5c3RlbWRfc2VydmljZV9maWxlID0gU1lTVEVNRF9T RVNTSU9OX0dOT01FX0ZJTEU7Ci0rCi0rICAgIGRvIHsKLSsgICAgICAgIGlmIChkYWVtb25fdHlw ZSA9PSAiZGlyZWN0IikKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIEdMaWIuREJ1c0Nv bm5lY3Rpb24/IGNvbm5lY3Rpb24gPSBnZXRfc2Vzc2lvbl9idXModmVyYm9zZSk7Ci0rICAgICAg ICBpZiAoY29ubmVjdGlvbiA9PSBudWxsKQotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAg c3RyaW5nPyBvYmplY3RfcGF0aCA9IG51bGw7Ci0rICAgICAgICBpZiAocmVzdGFydCkgewotKyAg ICAgICAgICAgIG9iamVjdF9wYXRoID0gZ2V0X2lidXNfc3lzdGVtZF9vYmplY3RfcGF0aChjb25u ZWN0aW9uLCB2ZXJib3NlKTsKLSsgICAgICAgICAgICBpZiAob2JqZWN0X3BhdGggPT0gbnVsbCkK LSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgaWYgKCFpc19ydW5uaW5nX2Rh ZW1vbl92aWFfc3lzdGVtZChjb25uZWN0aW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb2JqZWN0X3BhdGgsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJib3NlKSkgewotKyAgICAgICAgICAgICAgICBi cmVhazsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAoIXN0YXJ0X2Rh ZW1vbl92aWFfc3lzdGVtZChjb25uZWN0aW9uLCByZXN0YXJ0LCB2ZXJib3NlKSkKLSsgICAgICAg ICAgICBicmVhazsKLSsgICAgICAgIC8vIERvIG5vdCBjaGVjayB0aGUgc3lzdGVtZCBzdGF0ZSBp biBjYXNlIG9mIHJlc3RhcnQgYmVjYXVzZQotKyAgICAgICAgLy8gdGhlIHN5c3RlbWQgZmlsZSB2 YWxpZGF0aW9uIGlzIGFscmVhZHkgZG9uZSBhbmQgYWxzbyBzdG9wcGluZwotKyAgICAgICAgLy8g ZGFlbW9uIGFuZCBzdGFydGluZyBkYWVtb24gdGFrZSB0aW1lIGFuZCB0aGUgc3RhdGUgY291bGQg YmUKLSsgICAgICAgIC8vICJpbmFjdGl2ZSIgd2l0aCB0aGUgdGltZSBsYWcuCi0rICAgICAgICBp ZiAocmVzdGFydCkKLSsgICAgICAgICAgICByZXR1cm4gUG9zaXguRVhJVF9TVUNDRVNTOwotKyAg ICAgICAgb2JqZWN0X3BhdGggPSBnZXRfaWJ1c19zeXN0ZW1kX29iamVjdF9wYXRoKGNvbm5lY3Rp b24sIHZlcmJvc2UpOwotKyAgICAgICAgaWYgKG9iamVjdF9wYXRoID09IG51bGwpCi0rICAgICAg ICAgICAgYnJlYWs7Ci0rICAgICAgICBpZiAoIWlzX3J1bm5pbmdfZGFlbW9uX3ZpYV9zeXN0ZW1k KGNvbm5lY3Rpb24sIG9iamVjdF9wYXRoLCB2ZXJib3NlKSkKLSsgICAgICAgICAgICBicmVhazsK LSsgICAgICAgIHJldHVybiBQb3NpeC5FWElUX1NVQ0NFU1M7Ci0rICAgIH0gd2hpbGUgKGZhbHNl KTsKLSsKLSsgICAgaWYgKGRhZW1vbl90eXBlID09ICJzeXN0ZW1kIikKLSAgICAgICAgIHJldHVy biBQb3NpeC5FWElUX0ZBSUxVUkU7Ci0rICAgIGlmIChyZXN0YXJ0KSB7Ci0rICAgICAgICB2YXIg YnVzID0gZ2V0X2J1cygpOwotKyAgICAgICAgaWYgKGJ1cyA9PSBudWxsKSB7Ci0rICAgICAgICAg ICAgc3RkZXJyLnByaW50ZihfKCJDYW4ndCBjb25uZWN0IHRvIElCdXMuXG4iKSk7Ci0rICAgICAg ICAgICAgcmV0dXJuIFBvc2l4LkVYSVRfRkFJTFVSRTsKLSsgICAgICAgIH0KLSsgICAgICAgIGJ1 cy5leGl0KHRydWUpOwotKyAgICAgICAgaWYgKHZlcmJvc2UpIHsKLSsgICAgICAgICAgICBzdGRl cnIucHJpbnRmKCJTdWNjZWVkIHRvIHJlc3RhcnQgaWJ1cy1kYWVtb24gd2l0aCBhbiBJQnVzIEFQ SSAiICsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJlY3RseS5cbiIpOwotKyAgICAg ICAgfQotKyAgICB9IGVsc2UgewotKyAgICAgICAgc3RyaW5nIHN0YXJ0YXJnID0gImlidXMtZGFl bW9uIjsKLSsgICAgICAgIGFyZ3ZbMF0gPSBzdGFydGFyZzsKLSsgICAgICAgIHZhciBwYXRocyA9 IEdMaWIuRW52aXJvbm1lbnQuZ2V0X3ZhcmlhYmxlKCJQQVRIIikuc3BsaXQoIjoiKTsKLSsgICAg ICAgIGZvcmVhY2ggKHVub3duZWQgc3RyaW5nIHBhdGggaW4gcGF0aHMpIHsKLSsgICAgICAgICAg ICB2YXIgZnVsbF9wYXRoID0gIiVzLyVzIi5wcmludGYocGF0aCwgc3RhcnRhcmcpOwotKyAgICAg ICAgICAgIGlmIChHTGliLkZpbGVVdGlscy50ZXN0KGZ1bGxfcGF0aCwgR0xpYi5GaWxlVGVzdC5J U19FWEVDVVRBQkxFKSkgewotKyAgICAgICAgICAgICAgICBzdGFydGFyZyA9IGZ1bGxfcGF0aDsK LSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKyAg ICAgICAgLy8gV2hlbiBpYnVzLWRhZW1vbiBpcyBsYXVuY2hlZCBieSBHTGliLlByb2Nlc3Muc3Bh d25fYXN5bmMoKSwKLSsgICAgICAgIC8vIHRoZSBwYXJlbnQgcHJvY2VzcyB3aWxsIGJlIHN5c3Rl bWQKLSsgICAgICAgIGlmICh2ZXJib3NlKSB7Ci0rICAgICAgICAgICAgc3RkZXJyLnByaW50Zigi UnVubmluZyBcIiVzXCIgZGlyZWN0bHkgYXMgYSBmb3JlZ3JvdW5kICIgKwotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgInByb2Nlc3MuXG4iLCBzdGFydGFyZyk7Ci0rICAgICAgICB9Ci0rICAg ICAgICBQb3NpeC5leGVjdihzdGFydGFyZywgYXJndik7Ci0gICAgIH0KLS0gICAgYnVzLmV4aXQo dHJ1ZSk7Ci0gICAgIHJldHVybiBQb3NpeC5FWElUX1NVQ0NFU1M7Ci0gfQotIAotKwotK2ludCBy ZXN0YXJ0X2RhZW1vbihzdHJpbmdbXSBhcmd2KSB7Ci0rICAgIHJldHVybiBzdGFydF9kYWVtb25f cmVhbChhcmd2LCB0cnVlKTsKLSt9Ci0rCi0raW50IHN0YXJ0X2RhZW1vbihzdHJpbmdbXSBhcmd2 KSB7Ci0rICAgIHJldHVybiBzdGFydF9kYWVtb25fcmVhbChhcmd2LCBmYWxzZSk7Ci0rfQotKwot IGludCBleGl0X2RhZW1vbihzdHJpbmdbXSBhcmd2KSB7Ci0gICAgIHZhciBidXMgPSBnZXRfYnVz KCk7Ci0gICAgIGlmIChidXMgPT0gbnVsbCkgewotQEAgLTIwNiwxMSArNDQwLDEzIEBAIGludCBl eGl0X2RhZW1vbihzdHJpbmdbXSBhcmd2KSB7Ci0gICAgIHJldHVybiBQb3NpeC5FWElUX1NVQ0NF U1M7Ci0gfQotIAotKwotIGludCBwcmludF92ZXJzaW9uKHN0cmluZ1tdIGFyZ3YpIHsKLSAgICAg cHJpbnQoIklCdXMgJXNcbiIsIENvbmZpZy5QQUNLQUdFX1ZFUlNJT04pOwotICAgICByZXR1cm4g UG9zaXguRVhJVF9TVUNDRVNTOwotIH0KLSAKLSsKLSBpbnQgcmVhZF9jYWNoZSAoc3RyaW5nW10g YXJndikgewotICAgICBjb25zdCBPcHRpb25FbnRyeVtdIG9wdGlvbnMgPSB7Ci0gICAgICAgICB7 ICJzeXN0ZW0iLCAwLCAwLCBPcHRpb25BcmcuTk9ORSwgb3V0IGlzX3N5c3RlbSwKLUBAIC0yNTEs NiArNDg3LDcgQEAgaW50IHJlYWRfY2FjaGUgKHN0cmluZ1tdIGFyZ3YpIHsKLSAgICAgcmV0dXJu IFBvc2l4LkVYSVRfU1VDQ0VTUzsKLSB9Ci0gCi0rCi0gaW50IHdyaXRlX2NhY2hlIChzdHJpbmdb XSBhcmd2KSB7Ci0gICAgIGNvbnN0IE9wdGlvbkVudHJ5W10gb3B0aW9ucyA9IHsKLSAgICAgICAg IHsgInN5c3RlbSIsIDAsIDAsIE9wdGlvbkFyZy5OT05FLCBvdXQgaXNfc3lzdGVtLAotQEAgLTI4 MywxMiArNTIwLDE0IEBAIGludCB3cml0ZV9jYWNoZSAoc3RyaW5nW10gYXJndikgewotICAgICAg ICAgICAgIFBvc2l4LkVYSVRfU1VDQ0VTUyA6IFBvc2l4LkVYSVRfRkFJTFVSRTsKLSB9Ci0gCi0r Ci0gaW50IHByaW50X2FkZHJlc3Moc3RyaW5nW10gYXJndikgewotICAgICBzdHJpbmcgYWRkcmVz cyA9IElCdXMuZ2V0X2FkZHJlc3MoKTsKLSAgICAgcHJpbnQoIiVzXG4iLCBhZGRyZXNzICE9IG51 bGwgPyBhZGRyZXNzIDogIihudWxsKSIpOwotICAgICByZXR1cm4gUG9zaXguRVhJVF9TVUNDRVNT OwotIH0KLSAKLSsKLSBwcml2YXRlIGludCByZWFkX2NvbmZpZ19vcHRpb25zKHN0cmluZ1tdIGFy Z3YpIHsKLSAgICAgY29uc3QgT3B0aW9uRW50cnlbXSBvcHRpb25zID0gewotICAgICAgICAgeyAi ZW5naW5lLWlkIiwgMCwgMCwgT3B0aW9uQXJnLlNUUklORywgb3V0IGVuZ2luZV9pZCwKLUBAIC0z MDksNiArNTQ4LDcgQEAgcHJpdmF0ZSBpbnQgcmVhZF9jb25maWdfb3B0aW9ucyhzdHJpbmdbXSBh cmd2KSB7Ci0gICAgIHJldHVybiBQb3NpeC5FWElUX1NVQ0NFU1M7Ci0gfQotIAotKwotIHByaXZh dGUgR0xpYi5TTGlzdDxzdHJpbmc+IGdldF9pYnVzX3NjaGVtYXMoKSB7Ci0gICAgIHN0cmluZ1td IGlkcyA9IHt9OwotICAgICBpZiAoZW5naW5lX2lkICE9IG51bGwpIHsKLUBAIC0zNDIsNiArNTgy LDcgQEAgcHJpdmF0ZSBHTGliLlNMaXN0PHN0cmluZz4gZ2V0X2lidXNfc2NoZW1hcygpIHsKLSAg ICAgcmV0dXJuIGlidXNfc2NoZW1hczsKLSB9Ci0gCi0rCi0gaW50IHJlYWRfY29uZmlnKHN0cmlu Z1tdIGFyZ3YpIHsKLSAgICAgaWYgKHJlYWRfY29uZmlnX29wdGlvbnMoYXJndikgPT0gUG9zaXgu RVhJVF9GQUlMVVJFKQotICAgICAgICAgcmV0dXJuIFBvc2l4LkVYSVRfRkFJTFVSRTsKLUBAIC0z NzAsNiArNjExLDcgQEAgaW50IHJlYWRfY29uZmlnKHN0cmluZ1tdIGFyZ3YpIHsKLSAgICAgcmV0 dXJuIFBvc2l4LkVYSVRfU1VDQ0VTUzsKLSB9Ci0gCi0rCi0gaW50IHJlc2V0X2NvbmZpZyhzdHJp bmdbXSBhcmd2KSB7Ci0gICAgIGlmIChyZWFkX2NvbmZpZ19vcHRpb25zKGFyZ3YpID09IFBvc2l4 LkVYSVRfRkFJTFVSRSkKLSAgICAgICAgIHJldHVybiBQb3NpeC5FWElUX0ZBSUxVUkU7Ci1AQCAt NDAxLDYgKzY0Myw3IEBAIGludCByZXNldF9jb25maWcoc3RyaW5nW10gYXJndikgewotICAgICBy ZXR1cm4gUG9zaXguRVhJVF9TVUNDRVNTOwotIH0KLSAKLSsKLSAjaWYgRU1PSklfRElDVAotIGlu dCBlbW9qaV9kaWFsb2coc3RyaW5nW10gYXJndikgewotICAgICBzdHJpbmcgY21kID0gQ29uZmln LkxJQkVYRUNESVIgKyAiL2lidXMtdWktZW1vamllciI7Ci1AQCAtNDI3LDExICs2NzAsMTMgQEAg aW50IGVtb2ppX2RpYWxvZyhzdHJpbmdbXSBhcmd2KSB7Ci0gfQotICNlbmRpZgotIAotKwotIGlu dCBwcmludF9oZWxwKHN0cmluZ1tdIGFyZ3YpIHsKLSAgICAgcHJpbnRfdXNhZ2Uoc3Rkb3V0KTsK LSAgICAgcmV0dXJuIFBvc2l4LkVYSVRfU1VDQ0VTUzsKLSB9Ci0gCi0rCi0gZGVsZWdhdGUgaW50 IEVudHJ5RnVuYyhzdHJpbmdbXSBhcmd2KTsKLSAKLSBzdHJ1Y3QgQ29tbWFuZEVudHJ5IHsKLUBA IC00NDAsMTIgKzY4NSwxNCBAQCBzdHJ1Y3QgQ29tbWFuZEVudHJ5IHsKLSAgICAgdW5vd25lZCBF bnRyeUZ1bmMgZW50cnk7Ci0gfQotIAotKwotIGNvbnN0IENvbW1hbmRFbnRyeSBjb21tYW5kc1td ICA9IHsKLSAgICAgeyAiZW5naW5lIiwgTl8oIlNldCBvciBnZXQgZW5naW5lIiksIGdldF9zZXRf ZW5naW5lIH0sCi0gICAgIHsgImV4aXQiLCBOXygiRXhpdCBpYnVzLWRhZW1vbiIpLCBleGl0X2Rh ZW1vbiB9LAotICAgICB7ICJsaXN0LWVuZ2luZSIsIE5fKCJTaG93IGF2YWlsYWJsZSBlbmdpbmVz IiksIGxpc3RfZW5naW5lIH0sCi0gICAgIHsgIndhdGNoIiwgTl8oIihOb3QgaW1wbGVtZW50ZWQp IiksIG1lc3NhZ2Vfd2F0Y2ggfSwKLSAgICAgeyAicmVzdGFydCIsIE5fKCJSZXN0YXJ0IGlidXMt ZGFlbW9uIiksIHJlc3RhcnRfZGFlbW9uIH0sCi0rICAgIHsgInN0YXJ0IiwgTl8oIlN0YXJ0IGli dXMtZGFlbW9uIiksIHN0YXJ0X2RhZW1vbiB9LAotICAgICB7ICJ2ZXJzaW9uIiwgTl8oIlNob3cg dmVyc2lvbiIpLCBwcmludF92ZXJzaW9uIH0sCi0gICAgIHsgInJlYWQtY2FjaGUiLCBOXygiU2hv dyB0aGUgY29udGVudCBvZiByZWdpc3RyeSBjYWNoZSIpLCByZWFkX2NhY2hlIH0sCi0gICAgIHsg IndyaXRlLWNhY2hlIiwgTl8oIkNyZWF0ZSByZWdpc3RyeSBjYWNoZSIpLCB3cml0ZV9jYWNoZSB9 LAotQEAgLTQ2MCw2ICs3MDcsNyBAQCBjb25zdCBDb21tYW5kRW50cnkgY29tbWFuZHNbXSAgPSB7 Ci0gCi0gc3RhdGljIHN0cmluZyBwcm9ncmFtX25hbWU7Ci0gCi0rCi0gdm9pZCBwcmludF91c2Fn ZShGaWxlU3RyZWFtIHN0cmVhbSkgewotICAgICBzdHJlYW0ucHJpbnRmKF8oIlVzYWdlOiAlcyBD T01NQU5EIFtPUFRJT04uLi5dXG5cbiIpLCBwcm9ncmFtX25hbWUpOwotICAgICBzdHJlYW0ucHJp bnRmKF8oIkNvbW1hbmRzOlxuIikpOwotQEAgLTQ3MCw2ICs3MTgsNyBAQCB2b2lkIHByaW50X3Vz YWdlKEZpbGVTdHJlYW0gc3RyZWFtKSB7Ci0gICAgIH0KLSB9Ci0gCi0rCi0gcHVibGljIGludCBt YWluKHN0cmluZ1tdIGFyZ3YpIHsKLSAgICAgR0xpYi5JbnRsLnNldGxvY2FsZShHTGliLkxvY2Fs ZUNhdGVnb3J5LkFMTCwgIiIpOwotICAgICBHTGliLkludGwuYmluZHRleHRkb21haW4oQ29uZmln LkdFVFRFWFRfUEFDS0FHRSwgQ29uZmlnLkxPQ0FMRURJUik7Ci0tLSAKLTIuMzUuMwotCi1Gcm9t IDViNDQxZmFiYzlkNzY2ZTY5NGI5OTJlMGUyZjI4OTI0ZDAwYTc0MDIgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1E YXRlOiBUaHUsIDcgSnVsIDIwMjIgMDg6MjI6MjYgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gdG9v bHM6IEFkZCBpYnVzIGltLW1vZHVsZSBjb21tYW5kCi0KLWlidXMgaW0tbW9kdWxlIGNvbW1hbmQg Y2FuIHJldHJpdmUgZ3RrLWltLW1vZHVsZSB2YWx1ZSBmcm9tIGFuCi1pbnN0YW5jZSBvZiBHdGtJ TU11bHRpQ29udGV4dC4KLVRoZSBHVEsgdmVyc2lvbiBjYW4gYmUgc3BlY2lmaWVkIGJ5IC0tdHlw ZSBvcHRpb24gYW5kIHRoZSBkZWZhdWx0Ci1pcyAtLXR5cGU9Z3RrMyBhbmQgR1RLMyBpbS1pYnVz LnNvIGlzIGRsb3BlbmVkLgotLS0tCi0gY2xpZW50L2d0azIvaWJ1c2ltLmMgICAgICAgICAgICB8 ICAyMCArKysrKysKLSBjbGllbnQvZ3RrNC9pYnVzaW0uYyAgICAgICAgICAgIHwgIDIwICsrKysr KwotIHRvb2xzL0lCdXNJTU1vZHVsZS0xLjAubWV0YWRhdGEgfCAgIDEgKwotIHRvb2xzL01ha2Vm aWxlLmFtICAgICAgICAgICAgICAgfCAxMTYgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0KLSB0b29scy9pYnVzLjEuaW4gICAgICAgICAgICAgICAgIHwgIDEwICsrKwotIHRvb2xzL2li dXNpbW1vZHVsZS5jICAgICAgICAgICAgfCAgODcgKysrKysrKysrKysrKysrKysrKysrKysrCi0g dG9vbHMvaWJ1c2ltbW9kdWxlLmggICAgICAgICAgICB8ICAzNiArKysrKysrKysrCi0gdG9vbHMv bWFpbi52YWxhICAgICAgICAgICAgICAgICB8ICAxMSArKysKLSA4IGZpbGVzIGNoYW5nZWQsIDMw OCBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdG9v bHMvSUJ1c0lNTW9kdWxlLTEuMC5tZXRhZGF0YQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9p YnVzaW1tb2R1bGUuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9pYnVzaW1tb2R1bGUuaAot Ci1kaWZmIC0tZ2l0IGEvY2xpZW50L2d0azIvaWJ1c2ltLmMgYi9jbGllbnQvZ3RrMi9pYnVzaW0u YwotaW5kZXggNTU2MDljZTcuLmUxOTZkNTM2IDEwMDY0NAotLS0tIGEvY2xpZW50L2d0azIvaWJ1 c2ltLmMKLSsrKyBiL2NsaWVudC9ndGsyL2lidXNpbS5jCi1AQCAtNzcsMyArNzcsMjMgQEAgaW1f bW9kdWxlX2xpc3QgKGNvbnN0IEd0a0lNQ29udGV4dEluZm8gKioqY29udGV4dHMsCi0gICAgICpu X2NvbnRleHRzID0gR19OX0VMRU1FTlRTIChpbmZvX2xpc3QpOwotIH0KLSAKLStHX01PRFVMRV9F WFBPUlQgY29uc3QgY2hhciAqCi0raW1fZ2V0X2NvbnRleHRfaWQgKGludCAgICAqYXJnYywKLSsg ICAgICAgICAgICAgICAgICAgY2hhciAqKiphcmd2KQotK3sKLSsgICAgR3RrSU1Db250ZXh0ICpj b250ZXh0OwotKyAgICBjaGFyICpwcmVlZGl0X3N0cmluZyA9IE5VTEw7Ci0rICAgIFBhbmdvQXR0 ckxpc3QgKnByZWVkaXRfYXR0cnMgPSBOVUxMOwotKyAgICBjb25zdCBjaGFyICpjb250ZXh0X2lk OwotKwotKyAgICBndGtfaW5pdCAoYXJnYywgYXJndik7Ci0rICAgIGNvbnRleHQgPSBndGtfaW1f bXVsdGljb250ZXh0X25ldyAoKTsKLSsgICAgZ3RrX2ltX2NvbnRleHRfZ2V0X3ByZWVkaXRfc3Ry aW5nIChjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZw cmVlZGl0X3N0cmluZywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm cHJlZWRpdF9hdHRycywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw KTsKLSsgICAgY29udGV4dF9pZCA9IGd0a19pbV9tdWx0aWNvbnRleHRfZ2V0X2NvbnRleHRfaWQg KAotKyAgICAgICAgICAgIEdUS19JTV9NVUxUSUNPTlRFWFQgKGNvbnRleHQpKTsKLSsgICAgcmV0 dXJuIGNvbnRleHRfaWQ7Ci0rfQotKwotZGlmZiAtLWdpdCBhL2NsaWVudC9ndGs0L2lidXNpbS5j IGIvY2xpZW50L2d0azQvaWJ1c2ltLmMKLWluZGV4IDVlY2Y5Nzc4Li41NjJiZGYyZCAxMDA2NDQK LS0tLSBhL2NsaWVudC9ndGs0L2lidXNpbS5jCi0rKysgYi9jbGllbnQvZ3RrNC9pYnVzaW0uYwot QEAgLTUwLDMgKzUwLDIzIEBAIGdfaW9faW1faWJ1c191bmxvYWQgKEdUeXBlTW9kdWxlICp0eXBl X21vZHVsZSkKLSAgICAgZ190eXBlX21vZHVsZV91bnVzZSAodHlwZV9tb2R1bGUpOwotIH0KLSAK LStHX01PRFVMRV9FWFBPUlQgY29uc3QgY2hhciAqCi0raW1fZ2V0X2NvbnRleHRfaWQgKGludCAg ICAqYXJnYywKLSsgICAgICAgICAgICAgICAgICAgY2hhciAqKiphcmd2KQotK3sKLSsgICAgR3Rr SU1Db250ZXh0ICpjb250ZXh0OwotKyAgICBjaGFyICpwcmVlZGl0X3N0cmluZyA9IE5VTEw7Ci0r ICAgIFBhbmdvQXR0ckxpc3QgKnByZWVkaXRfYXR0cnMgPSBOVUxMOwotKyAgICBjb25zdCBjaGFy ICpjb250ZXh0X2lkOwotKwotKyAgICBndGtfaW5pdCAoKTsKLSsgICAgY29udGV4dCA9IGd0a19p bV9tdWx0aWNvbnRleHRfbmV3ICgpOwotKyAgICBndGtfaW1fY29udGV4dF9nZXRfcHJlZWRpdF9z dHJpbmcgKGNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JnByZWVkaXRfc3RyaW5nLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZwcmVlZGl0X2F0dHJzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDApOwotKyAgICBjb250ZXh0X2lkID0gZ3RrX2ltX211bHRpY29udGV4dF9nZXRfY29udGV4dF9p ZCAoCi0rICAgICAgICAgICAgR1RLX0lNX01VTFRJQ09OVEVYVCAoY29udGV4dCkpOwotKyAgICBy ZXR1cm4gY29udGV4dF9pZDsKLSt9Ci0rCi1kaWZmIC0tZ2l0IGEvdG9vbHMvSUJ1c0lNTW9kdWxl LTEuMC5tZXRhZGF0YSBiL3Rvb2xzL0lCdXNJTU1vZHVsZS0xLjAubWV0YWRhdGEKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMC4uMTRhZGM5ZWUKLS0tLSAvZGV2L251bGwKLSsr KyBiL3Rvb2xzL0lCdXNJTU1vZHVsZS0xLjAubWV0YWRhdGEKLUBAIC0wLDAgKzEgQEAKLStJQnVz SU1Nb2R1bGUgY2hlYWRlcl9maWxlbmFtZT0iaWJ1c2ltbW9kdWxlLmgiIG5hbWU9IklCdXNJTU1v ZHVsZSIKLWRpZmYgLS1naXQgYS90b29scy9NYWtlZmlsZS5hbSBiL3Rvb2xzL01ha2VmaWxlLmFt Ci1pbmRleCBlMzgwYTlhYS4uYTkyNjJlZTAgMTAwNjQ0Ci0tLS0gYS90b29scy9NYWtlZmlsZS5h bQotKysrIGIvdG9vbHMvTWFrZWZpbGUuYW0KLUBAIC0yNCw5ICsyNCwxOSBAQAotIE5VTEwgPQot IAotIGxpYmlidXMgPSAkKHRvcF9idWlsZGRpcikvc3JjL2xpYmlidXMtQElCVVNfQVBJX1ZFUlNJ T05ALmxhCi0rbGliaWJ1c2ltbW9kdWxlID0gbGliaWJ1c2ltbW9kdWxlLmxhCi0raWJ1c2ltbW9k dWxlX2dpciA9IElCdXNJTU1vZHVsZS0xLjAuZ2lyCi0raWJ1c19pbW1vZHVsZV92YXBpID0gaWJ1 cy1pbW1vZHVsZS0xLjAudmFwaQotIGxpYmlidXNfZW1vamlfZGlhbG9nID0gXAotICAgICAkKHRv cF9idWlsZGRpcikvdWkvZ3RrMy9saWJpYnVzLWVtb2ppLWRpYWxvZy1ASUJVU19BUElfVkVSU0lP TkAubGEKLSAKLStub2luc3RfTFRMSUJSQVJJRVMgPSAkKGxpYmlidXNpbW1vZHVsZSkKLStub2lu c3RfREFUQSA9Ci0rSU5UUk9TUEVDVElPTl9HSVJTID0KLStNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9 Ci0rRElTVENMRUFORklMRVMgPQotK1ZBUElHRU5fVkFQSVMgPQotKwotICMgZm9yY2UgaW5jbHVk ZSBjb25maWcuaCBiZWZvcmUgZ2kxOG4uaC4KLSBBTV9DUFBGTEFHUyA9IFwKLSAJLUkkKHRvcF9z cmNkaXIpL3NyYyBcCi1AQCAtNDcsMjIgKzU3LDI2IEBAIEFNX0NGTEFHUyA9IFwKLSAJJChOVUxM KQotIAotIEFNX0xEQUREID0gXAotLQlAR09CSkVDVDJfTElCU0AgXAotLQlAR0xJQjJfTElCU0Ag XAotLQlAR0lPMl9MSUJTQCBcCi0tCUBHVEhSRUFEMl9MSUJTQCBcCi0tCSQobGliaWJ1cykgXAot LQkkKE5VTEwpCi0rICAgIEBHT0JKRUNUMl9MSUJTQCBcCi0rICAgIEBHTElCMl9MSUJTQCBcCi0r ICAgIEBHSU8yX0xJQlNAIFwKLSsgICAgQEdUSFJFQUQyX0xJQlNAIFwKLSsgICAgJChsaWJpYnVz KSBcCi0rICAgICQobGliaWJ1c2ltbW9kdWxlKSBcCi0rICAgICQoTlVMTCkKLSAKLSBBTV9WQUxB RkxBR1MgPSBcCi0tCS0tdmFwaWRpcj0kKHRvcF9idWlsZGRpcikvYmluZGluZ3MvdmFsYSBcCi0t CS0tdmFwaWRpcj0kKHRvcF9zcmNkaXIpL2JpbmRpbmdzL3ZhbGEgXAotLQktLXBrZz1naW8tMi4w IFwKLS0JLS1wa2c9aWJ1cy0xLjAgXAotLQktLXBrZz1wb3NpeCBcCi0tCS0tcGtnPWNvbmZpZyBc Ci0tCS0tdGFyZ2V0LWdsaWI9IiQoVkFMQV9UQVJHRVRfR0xJQl9WRVJTSU9OKSIgXAotLQkkKE5V TEwpCi0rICAgIC0tdmFwaWRpcj0kKHRvcF9idWlsZGRpcikvYmluZGluZ3MvdmFsYSBcCi0rICAg IC0tdmFwaWRpcj0kKHRvcF9zcmNkaXIpL2JpbmRpbmdzL3ZhbGEgXAotKyAgICAtLXZhcGlkaXI9 JChidWlsZGRpcikgXAotKyAgICAtLXZhcGlkaXI9JChzcmNkaXIpIFwKLSsgICAgLS1wa2c9Z2lv LTIuMCBcCi0rICAgIC0tcGtnPWlidXMtMS4wIFwKLSsgICAgLS1wa2c9aWJ1cy1pbW1vZHVsZS0x LjAgXAotKyAgICAtLXBrZz1wb3NpeCBcCi0rICAgIC0tcGtnPWNvbmZpZyBcCi0rICAgIC0tdGFy Z2V0LWdsaWI9IiQoVkFMQV9UQVJHRVRfR0xJQl9WRVJTSU9OKSIgXAotKyAgICAkKE5VTEwpCi0g Ci0gYmluX1BST0dSQU1TID0gaWJ1cwotIAotQEAgLTc5LDkgKzkzLDI3IEBAIGJhc2hfY29tcGxl dGlvbl9EQVRBPSBcCi0gCSQoTlVMTCkKLSBiYXNoX2NvbXBsZXRpb25kaXI9QGRhdGFkaXJAL2Jh c2gtY29tcGxldGlvbi9jb21wbGV0aW9ucwotIAotK2xpYmlidXNpbW1vZHVsZV9sYV9TT1VSQ0VT ID0gXAotKyAgICBpYnVzaW1tb2R1bGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotKyAgICBpYnVzaW1tb2R1bGUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgICAkKE5VTEwpCi0rbGliaWJ1c2ltbW9kdWxlX2xhX0NGTEFHUyA9IFwK LSsgICAgQEdMSUIyX0NGTEFHU0AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSsgICAgLURHVEsyX0lNX01PRFVMRURJUj1cIiQoR1RLMl9JTV9NT0RVTEVESVIpXCIgICAg ICAgIFwKLSsgICAgLURHVEszX0lNX01PRFVMRURJUj1cIiQoR1RLM19JTV9NT0RVTEVESVIpXCIg ICAgICAgIFwKLSsgICAgLURHVEs0X0lNX01PRFVMRURJUj1cIiQoR1RLNF9JTV9NT0RVTEVESVIp XCIgICAgICAgIFwKLSsgICAgJChOVUxMKQotK2xpYmlidXNpbW1vZHVsZV9sYV9MSUJBREQgPSBc Ci0rICAgIEBHTElCMl9MSUJTQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICAgICQoTlVMTCkKLStsaWJpYnVzaW1tb2R1bGVfbGFfTERGTEFHUyA9IFwKLSsgICAg LW5vLXVuZGVmaW5lZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg ICAgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4ICJpYnVzXy4qIiAgICAgICAgICAgICAgICAgICAgIFwK LSsgICAgJChOVUxMKQotKwotIG1hbl9vbmVfaW5fZmlsZXMgPSBpYnVzLjEuaW4KLSBtYW5fb25l X2ZpbGVzID0gJChtYW5fb25lX2luX2ZpbGVzOi4xLmluPS4xKQotLW1hbl9vbmVfREFUQSA9JCht YW5fb25lX2ZpbGVzOi4xPS4xLmd6KSAKLSttYW5fb25lX0RBVEEgPSQobWFuX29uZV9maWxlczou MT0uMS5neikKLSBtYW5fb25lZGlyID0gJChtYW5kaXIpL21hbjEKLSAlLjE6ICUuMS5pbgotIAkk KEFNX1ZfR0VOKSBzZWQgXAotQEAgLTkxLDE0ICsxMjMsMTcgQEAgbWFuX29uZWRpciA9ICQobWFu ZGlyKS9tYW4xCi0gCSQoQU1fVl9HRU4pIGd6aXAgLWMgJDwgPiAkQC50bXAgJiYgbXYgJEAudG1w ICRACi0gCi0gRVhUUkFfRElTVCA9IFwKLS0JJChtYW5fb25lX2luX2ZpbGVzKSBcCi0tCWlidXMu YmFzaCBcCi0tCSQoTlVMTCkKLSsgICAgJChpYnVzX2ltbW9kdWxlX3ZhcGkpIFwKLSsgICAgJChp YnVzaW1tb2R1bGVfZ2lyKSBcCi0rICAgICQobWFuX29uZV9pbl9maWxlcykgXAotKyAgICBpYnVz LmJhc2ggXAotKyAgICBJQnVzSU1Nb2R1bGUtMS4wLm1ldGFkYXRhIFwKLSsgICAgJChOVUxMKQot IAotIENMRUFORklMRVMgPSBcCi0tCSQobWFuX29uZV9EQVRBKSBcCi0tCSQobWFuX29uZV9maWxl cykgXAotLQkkKE5VTEwpCi0rICAgICQobWFuX29uZV9EQVRBKSBcCi0rICAgICQobWFuX29uZV9m aWxlcykgXAotKyAgICAkKE5VTEwpCi0gCi0gaWYgRU5BQkxFX0VNT0pJX0RJQ1QKLSBpZiBFTkFC TEVfVUkKLUBAIC0xMDgsNCArMTQzLDQzIEBAIEFNX1ZBTEFGTEFHUyArPSBcCi0gZW5kaWYKLSBl bmRpZgotIAotK2lmIEhBVkVfSU5UUk9TUEVDVElPTgotK0JVSUxUX1NPVVJDRVMgPSAkKElOVFJP U1BFQ1RJT05fR0lSUykgJChWQVBJR0VOX1ZBUElTKQotKwotKy1pbmNsdWRlICQoSU5UUk9TUEVD VElPTl9NQUtFRklMRSkKLStJTlRST1NQRUNUSU9OX1NDQU5ORVJfQVJHUyA9Ci0rSU5UUk9TUEVD VElPTl9DT01QSUxFUl9BUkdTID0gXAotKyAgICAtLWluY2x1ZGVkaXI9JChzcmNkaXIpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAtLWluY2x1ZGVkaXI9LiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAkKE5VTEwpCi0rCi0rSUJ1c0lNTW9k dWxlLTEuMC5naXI6ICQobGliaWJ1c2ltbW9kdWxlKSBNYWtlZmlsZQotK0lCdXNJTU1vZHVsZV8x XzBfZ2lyX1NDQU5ORVJGTEFHUyA9IFwKLSsgICAgLS1wa2c9Z2xpYi0yLjAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgJChJQlVTX0dJUl9TQ0FOTkVSRkxBR1Mp ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgJChOVUxMKQotK0lCdXNJTU1vZHVs ZV8xXzBfZ2lyX0lOQ0xVREVTID0gR0xpYi0yLjAKLStJQnVzSU1Nb2R1bGVfMV8wX2dpcl9MSUJT ID0gJChsaWJpYnVzaW1tb2R1bGUpCi0rSUJ1c0lNTW9kdWxlXzFfMF9naXJfRklMRVMgPSBpYnVz aW1tb2R1bGUuaAotK0lCdXNJTU1vZHVsZV8xXzBfZ2lyX0NGTEFHUyA9IFwKLSsgICAgLUkkKHNy Y2RpcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgLUkk KGJ1aWxkZGlyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAg JChOVUxMKQotKwotK0lOVFJPU1BFQ1RJT05fR0lSUyArPSAkKGlidXNpbW1vZHVsZV9naXIpCi0r bm9pbnN0X0RBVEEgKz0gJChpYnVzaW1tb2R1bGVfZ2lyKQotK01BSU5UQUlORVJDTEVBTkZJTEVT ICs9ICQoaWJ1c2ltbW9kdWxlX2dpcikKLStESVNUQ0xFQU5GSUxFUyArPSAkKGlidXNpbW1vZHVs ZV9naXIpCi0rCi0rLWluY2x1ZGUgJChWQVBJR0VOX01BS0VGSUxFKQotK2lidXMtaW1tb2R1bGUt MS4wLnZhcGk6ICQoaWJ1c2ltbW9kdWxlX2dpcikgSUJ1c0lNTW9kdWxlLTEuMC5tZXRhZGF0YQot K2lidXNfaW1tb2R1bGVfMV8wX3ZhcGlfREVQUyA9IGdsaWItMi4wCi0raWJ1c19pbW1vZHVsZV8x XzBfdmFwaV9NRVRBREFUQURJUlMgPSAkKHNyY2RpcikKLStpYnVzX2ltbW9kdWxlXzFfMF92YXBp X0ZJTEVTID0gSUJ1c0lNTW9kdWxlLTEuMC5naXIKLStWQVBJR0VOX1ZBUElTICs9ICQoaWJ1c19p bW1vZHVsZV92YXBpKQotK25vaW5zdF9EQVRBICs9ICQoaWJ1c19pbW1vZHVsZV92YXBpKQotK01B SU5UQUlORVJDTEVBTkZJTEVTICs9ICQoaWJ1c19pbW1vZHVsZV92YXBpKQotK0RJU1RDTEVBTkZJ TEVTICs9ICQoaWJ1c19pbW1vZHVsZV92YXBpKQotK2VuZGlmCi0rCi0gLWluY2x1ZGUgJCh0b3Bf c3JjZGlyKS9naXQubWsKLWRpZmYgLS1naXQgYS90b29scy9pYnVzLjEuaW4gYi90b29scy9pYnVz LjEuaW4KLWluZGV4IGZlMWI3MTU3Li44NGVmNWZmZiAxMDA2NDQKLS0tLSBhL3Rvb2xzL2lidXMu MS5pbgotKysrIGIvdG9vbHMvaWJ1cy4xLmluCi1AQCAtMTI4LDYgKzEyOCwxNiBAQCBvcHRpb24g ZW5hYmxlcyB0byBtYXRjaCBhbm5vdGF0aW9ucyB3aXRoIGEgcGFydGlhbCBzdHJpbmcuIFRoZXNl IHNldHRpbmdzCi0gYXJlIGF2YWlsYWJsZSB3aXRoCi0gLkIgaWJ1c1wtc2V0dXAgKDEpCi0gdXRp bGl0eS4KLSsuVFAKLStcZkJpbS1tb2R1bGVcZlIgW1xmQlwtXC10eXBlPVRZUEV8XC1cLWhlbHBc ZlJdCi0rU2hvdyBhbiBpbnRlcm5hbCBpbS1tb2R1bGUgdmFsdWUgaW4gYSB2aXJ0dWFsIEdUSyBh cHBsaWNhdGlvbi4gSWYgSUJ1cyBpcwotK2luc3RhbGxlZCBhbmQgY29uZmlndXJlZCBwcm9wZXJs eSwgdGhlIG91dHB1dCBpcyAiaWJ1cyIuIFRoaXMgc3ViLWNvbW1hbmQKLStpcyB1c2VmdWwgZm9y IHNvbWUgdXNlcnMgd2hvIGJ1aWxkIElCdXMgZnJvbSB0aGUgc291cmNlIGNvZGVzIGFuZCBjaGVj awotK3RoZSBjb25maWd1cmF0aW9ucy4gQ3VycmVudGx5IHRoZSBzdWItY29tbWFuZCBzdXBwb3J0 cyBHVEsgYXBwbGljYXRpb25zIG9ubHkKLSthbmQgdGhlIGRlZmF1bHQgaXMgR1RLMy4gSWYgeW91 IHdpc2ggdG8gY2hlY2sgYSBHVEs0IGFwcGxpY2F0aW9uLCB5b3UgY2FuCi0rc3BlY2lmeQotKy5C IFwtXC10eXBlPWd0azQKLStvcHRpb24gYW5kIHlvdSBjYW4gY2hvb3NlIG9uZSBvZiAiZ3RrMiIs ICJndGszIiBhbmQgImd0azQiLgotIAotIC5TSCBCVUdTCi0gSWYgeW91IGZpbmQgYSBidWcsIHBs ZWFzZSByZXBvcnQgaXQgYXQgaHR0cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy9pc3N1ZXMKLWRp ZmYgLS1naXQgYS90b29scy9pYnVzaW1tb2R1bGUuYyBiL3Rvb2xzL2lidXNpbW1vZHVsZS5jCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAuLjIwY2NjNzQ4Ci0tLS0gL2Rldi9u dWxsCi0rKysgYi90b29scy9pYnVzaW1tb2R1bGUuYwotQEAgLTAsMCArMSw4NyBAQAotKyNpbmNs dWRlIDxnbGliLmg+Ci0rI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Ci0rI2luY2x1ZGUgPGRs ZmNuLmg+Ci0rCi0rI2lmbmRlZiBERUZBVUxUX0lNX01PRFVMRV9UWVBFCi0rI2RlZmluZSBERUZB VUxUX0lNX01PRFVMRV9UWVBFICJndGszIgotKyNlbmRpZgotKwotKyNkZWZpbmUgT1BUSU9OX1RZ UEVfTUVTU0FHRSBcCi0rICBOXygiVHlwZSBpbS1tb2R1bGUgVFlQRSA9IFwiZ3RrMlwiLCAgXCJn dGszXCIsIFwiZ3RrNFwiLiBEZWZhdWx0IGlzICIgXAotKyAgICAgIlwiZ3RrM1wiLiIpCi0rCi0r dHlwZWRlZiBjb25zdCBjaGFyICogKCogSUJ1c0lNR2V0Q29udGV4dElkRnVuYykgKGludCAqYXJn YywgY2hhciAqKiphcmd2KTsKLSsKLStzdGF0aWMgY2hhciAqaW1fbW9kdWxlX3R5cGU7Ci0rCi0r Ci0rY2hhciAqCi0raWJ1c19pbV9tb2R1bGVfZ2V0X2lkIChpbnQgYXJnYywgY2hhciAqYXJndltd KQotK3sKLSsgICAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBvcHRpb25zWzNdID0gewotKyAg ICAgICAgeyAidHlwZSIsIChjaGFyKTAsIChpbnQpMCwgR19PUFRJT05fQVJHX1NUUklORywgJmlt X21vZHVsZV90eXBlLAotKyAgICAgICAgICBPUFRJT05fVFlQRV9NRVNTQUdFLAotKyAgICAgICAg ICJUWVBFIn0sCi0rICAgICAgICB7IE5VTEwgfQotKyAgICB9OwotKyAgICBHT3B0aW9uQ29udGV4 dCAqb3B0aW9uOwotKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSsgICAgdm9pZCAqbW9kdWxl OwotKyAgICBjaGFyICppbV9jb250ZXh0X2lkOwotKyAgICBJQnVzSU1HZXRDb250ZXh0SWRGdW5j IGltX2dldF9jb250ZXh0X2lkOwotKwotKyAgICBpZiAoIShvcHRpb24gPSBnX29wdGlvbl9jb250 ZXh0X25ldyAoTlVMTCkpKSB7Ci0rICAgICAgICBnX2NyaXRpY2FsICgibWFsbG9jIEdPcHRpb25D b250ZXh0IGlzIGZhaWxlZC4iKTsKLSsgICAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rICAg IGdfb3B0aW9uX2NvbnRleHRfYWRkX21haW5fZW50cmllcyAob3B0aW9uLCBvcHRpb25zLCBHRVRU RVhUX1BBQ0tBR0UpOwotKyAgICBnX29wdGlvbl9jb250ZXh0X3BhcnNlIChvcHRpb24sICZhcmdj LCAmYXJndiwgJmVycm9yKTsKLSsgICAgaWYgKGVycm9yKSB7Ci0rICAgICAgICBnX2NyaXRpY2Fs ICgiJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0rICAgICAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3Ip OwotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsgICAgZ19vcHRpb25fY29udGV4dF9m cmVlIChvcHRpb24pOwotKyAgICBpZiAoIWltX21vZHVsZV90eXBlKQotKyAgICAgICAgaW1fbW9k dWxlX3R5cGUgPSBnX3N0cmR1cCAoREVGQVVMVF9JTV9NT0RVTEVfVFlQRSk7Ci0rCi0rICAgIGlm IChHX0xJS0VMWSAoIWdfc3RyY21wMCAoaW1fbW9kdWxlX3R5cGUsICJndGszIikpKSB7Ci0rICAg ICAgICBtb2R1bGUgPSBkbG9wZW4gKEdUSzNfSU1fTU9EVUxFRElSICIvaW0taWJ1cy5zbyIsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgIFJUTERfTEFaWSk7Ci0rICAgIH0gZWxzZSBpZiAoIWdf c3RyY21wMCAoaW1fbW9kdWxlX3R5cGUsICJndGs0IikpIHsKLSsgICAgICAgIGNvbnN0IGNoYXIg Km1vZHVsZV9wYXRoX2VudiA9IGdfZ2V0ZW52ICgiR1RLX1BBVEgiKTsKLSsgICAgICAgIGNoYXIg Km1vZHVsZV9wYXRoOwotKyAgICAgICAgaWYgKG1vZHVsZV9wYXRoX2VudikgewotKyAgICAgICAg ICAgIG1vZHVsZV9wYXRoID0gZ19idWlsZF9maWxlbmFtZSAobW9kdWxlX3BhdGhfZW52LAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLNF9JTV9NT0RVTEVE SVIgIi9saWJpbS1pYnVzLnNvIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwpOwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBtb2R1bGVf cGF0aCA9IGdfc3RyZHVwIChHVEs0X0lNX01PRFVMRURJUiAiL2xpYmltLWlidXMuc28iKTsKLSsg ICAgICAgIH0KLSsgICAgICAgIG1vZHVsZSA9IGRsb3BlbiAobW9kdWxlX3BhdGgsIFJUTERfTEFa WSk7Ci0rICAgICAgICBnX2ZyZWUgKG1vZHVsZV9wYXRoKTsKLSsgICAgfSBlbHNlIGlmICghZ19z dHJjbXAwIChpbV9tb2R1bGVfdHlwZSwgImd0azIiKSkgewotKyAgICAgICAgbW9kdWxlID0gZGxv cGVuIChHVEsyX0lNX01PRFVMRURJUiAiL2ltLWlidXMuc28iLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICBSVExEX0xBWlkpOwotKyAgICB9IGVsc2UgewotKyAgICAgICAgbW9kdWxlID0gZGxv cGVuIChpbV9tb2R1bGVfdHlwZSwgUlRMRF9MQVpZKTsKLSsgICAgfQotKyAgICBpZiAoIW1vZHVs ZSkgewotKyAgICAgICAgZ193YXJuaW5nICgiTm90IGZvdW5kIG1vZHVsZTogJXMiLCBkbGVycm9y ICgpKTsKLSsgICAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rICAgIGltX2dldF9jb250 ZXh0X2lkID0gZGxzeW0gKG1vZHVsZSwgImltX2dldF9jb250ZXh0X2lkIik7Ci0rICAgIGlmICgh aW1fZ2V0X2NvbnRleHRfaWQpIHsKLSsgICAgICAgIGdfd2FybmluZyAoIk5vdCBmb3VuZCBpbV9n ZXRfY29udGV4dF9pZDogJXMiLCBkbGVycm9yICgpKTsKLSsgICAgICAgIGRsY2xvc2UgKG1vZHVs ZSk7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyAgICBpbV9jb250ZXh0X2lk ID0gc3RyZHVwIChpbV9nZXRfY29udGV4dF9pZCAoJmFyZ2MsICZhcmd2KSk7Ci0rICAgIGRsY2xv c2UgKG1vZHVsZSk7Ci0rICAgIHJldHVybiBpbV9jb250ZXh0X2lkOwotK30KLSsKLSsjdW5kZWYg REVGQVVMVF9JTV9NT0RVTEVfVFlQRQotKwotZGlmZiAtLWdpdCBhL3Rvb2xzL2lidXNpbW1vZHVs ZS5oIGIvdG9vbHMvaWJ1c2ltbW9kdWxlLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwMC4uZTc2MmE3NDcKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rvb2xzL2lidXNpbW1vZHVs ZS5oCi1AQCAtMCwwICsxLDM2IEBACi0rLyogLSotIG1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiA0 OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IC0qLSAqLwotKy8qIHZpbTpzZXQgZXQgc3RzPTQ6ICov Ci0rLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGFrYW8g RnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICoKLSsgKiBUaGlzIGxpYnJh cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICog bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlcgotKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsg KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVQotKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAqIEZvdW5kYXRpb24s IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw LTEzMDEKLSsgKiBVU0EKLSsgKi8KLSsKLSsjaWZuZGVmIF9fSUJVU19JTV9NT0RVTEVfQ09OVEVY VF9IXwotKyNkZWZpbmUgX19JQlVTX0lNX01PRFVMRV9DT05URVhUX0hfCi0rCi0rLyoqCi0rICog aWJ1c19pbV9tb2R1bGVfZ2V0X2lkOgotKyAqIEBhcmdjOiBUaGUgbGVuZ3RoIG9mIGFyZ3YKLSsg KiBAYXJndjogKGFycmF5IGxlbmd0aD1hcmdjKSAoZWxlbWVudC10eXBlIHV0ZjgpOiBhcmd2IGZy b20gbWFpbigpCi0rICoKLSsgKiBSZXRyaWV2ZSBpbS1tb2R1bGUgdmFsdWUgZnJvbSBHVEsgaW5z dGFuY2UuCi0rICoKLSsgKiBSZXR1cm5zOiAobnVsbGFibGUpOiBpbS1tb2R1bGUgdmFsdWUuCi0r ICovCi0rY2hhciAqIGlidXNfaW1fbW9kdWxlX2dldF9pZCAoaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSk7Ci0rCi0rI2VuZGlmCi1kaWZmIC0tZ2l0IGEvdG9vbHMvbWFpbi52YWxhIGIvdG9vbHMvbWFp bi52YWxhCi1pbmRleCA0MDdlYWY3NC4uMWZlZDI0NDAgMTAwNjQ0Ci0tLS0gYS90b29scy9tYWlu LnZhbGEKLSsrKyBiL3Rvb2xzL21haW4udmFsYQotQEAgLTY3MSw2ICs2NzEsMTUgQEAgaW50IGVt b2ppX2RpYWxvZyhzdHJpbmdbXSBhcmd2KSB7Ci0gI2VuZGlmCi0gCi0gCi0raW50IHJlYWRfaW1f bW9kdWxlKHN0cmluZ1tdIGFyZ3YpIHsKLSsgICAgc3RyaW5nPyBpbV9tb2R1bGUgPSBJQnVzSU1N b2R1bGUuaW1fbW9kdWxlX2dldF9pZChhcmd2KTsKLSsgICAgaWYgKGltX21vZHVsZSA9PSBudWxs KQotKyAgICAgICAgcmV0dXJuIFBvc2l4LkVYSVRfRkFJTFVSRTsKLSsgICAgcHJpbnQoIiVzXG4i LnByaW50ZihpbV9tb2R1bGUpKTsKLSsgICAgcmV0dXJuIFBvc2l4LkVYSVRfU1VDQ0VTUzsKLSt9 Ci0rCi0rCi0gaW50IHByaW50X2hlbHAoc3RyaW5nW10gYXJndikgewotICAgICBwcmludF91c2Fn ZShzdGRvdXQpOwotICAgICByZXR1cm4gUG9zaXguRVhJVF9TVUNDRVNTOwotQEAgLTcwMiw2ICs3 MTEsOCBAQCBjb25zdCBDb21tYW5kRW50cnkgY29tbWFuZHNbXSAgPSB7Ci0gI2lmIEVNT0pJX0RJ Q1QKLSAgICAgeyAiZW1vamkiLCBOXygiU2F2ZSBlbW9qaSBvbiBkaWFsb2cgdG8gY2xpcGJvYXJk IiksIGVtb2ppX2RpYWxvZyB9LAotICNlbmRpZgotKyAgICB7ICJpbS1tb2R1bGUiLCBOXygiUmV0 cmlldmUgaW0tbW9kdWxlIHZhbHVlIGZyb20gR1RLIGluc3RhbmNlIiksCi0rICAgICAgcmVhZF9p bV9tb2R1bGUgfSwKLSAgICAgeyAiaGVscCIsIE5fKCJTaG93IHRoaXMgaW5mb3JtYXRpb24iKSwg cHJpbnRfaGVscCB9Ci0gfTsKLSAKLS0tIAotMi4zNS4zCi0KLUZyb20gN2U0MmI0MzdjOTAxYmI1 NmNhMmY3NzZhYWQ1ZmU2NWQwZDhjMjQ2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206 IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgNyBKdWwg MjAyMiAwODoyMjo0MiArMDkwMAotU3ViamVjdDogW1BBVENIXSBjbGllbnQvZ3RrMjogSW1wbGVt ZW50IG5ldyBwcm9jZXNzX2tleV9ldmVudCBmb3IgR1RLNAotCi0tLS0KLSBjbGllbnQvZ3RrMi9p YnVzaW1jb250ZXh0LmMgfCAxNDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t Ci0gc3JjL2lidXN0eXBlcy5oICAgICAgICAgICAgIHwgICA0ICsKLSAyIGZpbGVzIGNoYW5nZWQs IDEyNyBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NsaWVu dC9ndGsyL2lidXNpbWNvbnRleHQuYyBiL2NsaWVudC9ndGsyL2lidXNpbWNvbnRleHQuYwotaW5k ZXggYzdmMjMyOTMuLmJjMTRkZjAwIDEwMDY0NAotLS0tIGEvY2xpZW50L2d0azIvaWJ1c2ltY29u dGV4dC5jCi0rKysgYi9jbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMKLUBAIC0xMTEsMTMgKzEx MSwxMyBAQCBzdGF0aWMgZ3VpbnQgICAgX3NpZ25hbF9kZWxldGVfc3Vycm91bmRpbmdfaWQgPSAw OwotIHN0YXRpYyBndWludCAgICBfc2lnbmFsX3JldHJpZXZlX3N1cnJvdW5kaW5nX2lkID0gMDsK LSAKLSAjaWYgR1RLX0NIRUNLX1ZFUlNJT04gKDMsIDk4LCA0KQotLXN0YXRpYyBnYm9vbGVhbiBf dXNlX3N5bmNfbW9kZSA9IFRSVUU7Ci0rc3RhdGljIGNoYXIgX3VzZV9zeW5jX21vZGUgPSAyOwot ICNlbHNlCi0gc3RhdGljIGNvbnN0IGdjaGFyICpfbm9fc25vb3Blcl9hcHBzID0gTk9fU05PT1BF Ul9BUFBTOwotIHN0YXRpYyBnYm9vbGVhbiBfdXNlX2tleV9zbm9vcGVyID0gRU5BQkxFX1NOT09Q RVI7Ci0gc3RhdGljIGd1aW50ICAgIF9rZXlfc25vb3Blcl9pZCA9IDA7Ci0gCi0tc3RhdGljIGdi b29sZWFuIF91c2Vfc3luY19tb2RlID0gRkFMU0U7Ci0rc3RhdGljIGNoYXIgX3VzZV9zeW5jX21v ZGUgPSAwOwotICNlbmRpZgotIAotIHN0YXRpYyBjb25zdCBnY2hhciAqX2Rpc2NhcmRfcGFzc3dv cmRfYXBwcyAgPSAiIjsKLUBAIC0zNzUsMTIgKzM3NSwxNSBAQCBpYnVzX2ltX2NvbnRleHRfY29t bWl0X2V2ZW50IChJQnVzSU1Db250ZXh0ICppYnVzaW1jb250ZXh0LAotICAgIHJldHVybiBGQUxT RTsKLSB9Ci0gCi0tc3RydWN0IF9Qcm9jZXNzS2V5RXZlbnREYXRhIHsKLSt0eXBlZGVmIHN0cnVj dCB7Ci0gICAgIEdka0V2ZW50ICpldmVudDsKLSAgICAgSUJ1c0lNQ29udGV4dCAqaWJ1c2ltY29u dGV4dDsKLS19OwotK30gUHJvY2Vzc0tleUV2ZW50RGF0YTsKLSAKLS10eXBlZGVmIHN0cnVjdCBf UHJvY2Vzc0tleUV2ZW50RGF0YSBQcm9jZXNzS2V5RXZlbnREYXRhOwotK3R5cGVkZWYgc3RydWN0 IHsKLSsgICAgR01haW5Mb29wICpsb29wOwotKyAgICBnYm9vbGVhbiAgICByZXR2YWw7Ci0rfSBQ cm9jZXNzS2V5RXZlbnRSZXBseURhdGE7Ci0gCi0gc3RhdGljIHZvaWQKLSBfcHJvY2Vzc19rZXlf ZXZlbnRfZG9uZSAoR09iamVjdCAgICAgICpvYmplY3QsCi1AQCAtMzk1LDEyICszOTgsMTIgQEAg X3Byb2Nlc3Nfa2V5X2V2ZW50X2RvbmUgKEdPYmplY3QgICAgICAqb2JqZWN0LAotICAgICBJQnVz SU1Db250ZXh0ICppYnVzaW1jb250ZXh0ID0gZGF0YS0+aWJ1c2ltY29udGV4dDsKLSAjZW5kaWYK LSAgICAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0rICAgIGdib29sZWFuIHJldHZhbDsKLSAKLSAg ICAgZ19zbGljZV9mcmVlIChQcm9jZXNzS2V5RXZlbnREYXRhLCBkYXRhKTsKLS0gICAgZ2Jvb2xl YW4gcmV0dmFsID0gaWJ1c19pbnB1dF9jb250ZXh0X3Byb2Nlc3Nfa2V5X2V2ZW50X2FzeW5jX2Zp bmlzaCAoCi0tICAgICAgICAgICAgY29udGV4dCwKLS0gICAgICAgICAgICByZXMsCi0tICAgICAg ICAgICAgJmVycm9yKTsKLSsgICAgcmV0dmFsID0gaWJ1c19pbnB1dF9jb250ZXh0X3Byb2Nlc3Nf a2V5X2V2ZW50X2FzeW5jX2ZpbmlzaCAoY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm ZXJyb3IpOwotIAotICAgICBpZiAoZXJyb3IgIT0gTlVMTCkgewotICAgICAgICAgZ193YXJuaW5n ICgiUHJvY2VzcyBLZXkgRXZlbnQgZmFpbGVkOiAlcy4iLCBlcnJvci0+bWVzc2FnZSk7Ci1AQCAt NDMxLDYgKzQzNCwyNyBAQCBfcHJvY2Vzc19rZXlfZXZlbnRfZG9uZSAoR09iamVjdCAgICAgICpv YmplY3QsCi0gI2VuZGlmCi0gfQotIAotK3N0YXRpYyB2b2lkCi0rX3Byb2Nlc3Nfa2V5X2V2ZW50 X3JlcGx5X2RvbmUgKEdPYmplY3QgICAgICAqb2JqZWN0LAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHQXN5bmNSZXN1bHQgKnJlcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3BvaW50ZXIgICAgICB1c2VyX2RhdGEpCi0rewotKyAgICBJQnVzSW5wdXRDb250ZXh0 ICpjb250ZXh0ID0gKElCdXNJbnB1dENvbnRleHQgKilvYmplY3Q7Ci0rICAgIFByb2Nlc3NLZXlF dmVudFJlcGx5RGF0YSAqZGF0YSA9IChQcm9jZXNzS2V5RXZlbnRSZXBseURhdGEgKil1c2VyX2Rh dGE7Ci0rICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwotKyAgICBnYm9vbGVhbiByZXR2YWwgPSBp YnVzX2lucHV0X2NvbnRleHRfcHJvY2Vzc19rZXlfZXZlbnRfYXN5bmNfZmluaXNoICgKLSsgICAg ICAgICAgICBjb250ZXh0LAotKyAgICAgICAgICAgIHJlcywKLSsgICAgICAgICAgICAmZXJyb3Ip OwotKyAgICBpZiAoZXJyb3IgIT0gTlVMTCkgewotKyAgICAgICAgZ193YXJuaW5nICgiUHJvY2Vz cyBLZXkgRXZlbnQgZmFpbGVkOiAlcy4iLCBlcnJvci0+bWVzc2FnZSk7Ci0rICAgICAgICBnX2Vy cm9yX2ZyZWUgKGVycm9yKTsKLSsgICAgfQotKyAgICBnX3JldHVybl9pZl9mYWlsIChkYXRhKTsK LSsgICAgZGF0YS0+cmV0dmFsID0gcmV0dmFsOwotKyAgICBnX21haW5fbG9vcF9xdWl0IChkYXRh LT5sb29wKTsKLSt9Ci0rCi0gc3RhdGljIGdib29sZWFuCi0gX3Byb2Nlc3Nfa2V5X2V2ZW50IChJ QnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAotICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoMywgOTgs IDQpCi1AQCAtNDYyLDEzICs0ODYsNDUgQEAgX3Byb2Nlc3Nfa2V5X2V2ZW50IChJQnVzSW5wdXRD b250ZXh0ICpjb250ZXh0LAotICNlbmRpZgotICAgICBrZXljb2RlID0gaGFyZHdhcmVfa2V5Y29k ZTsKLSAKLS0gICAgaWYgKF91c2Vfc3luY19tb2RlKSB7Ci0rICAgIHN3aXRjaCAoX3VzZV9zeW5j X21vZGUpIHsKLSsgICAgY2FzZSAxOiB7Ci0gICAgICAgICByZXR2YWwgPSBpYnVzX2lucHV0X2Nv bnRleHRfcHJvY2Vzc19rZXlfZXZlbnQgKGNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXZhbCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5Y29kZSAtIDgsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 YXRlKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIGNhc2UgMjogewotKyAgICAgICAg R01haW5Mb29wICpsb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBUUlVFKTsKLSsgICAgICAg IFByb2Nlc3NLZXlFdmVudFJlcGx5RGF0YSAqZGF0YSA9IE5VTEw7Ci0rCi0rICAgICAgICBpZiAo bG9vcCkKLSsgICAgICAgICAgICBkYXRhID0gZ19zbGljZV9uZXcwIChQcm9jZXNzS2V5RXZlbnRS ZXBseURhdGEpOwotKyAgICAgICAgaWYgKCFkYXRhKSB7Ci0rICAgICAgICAgICAgZ193YXJuaW5n ICgiQ2Fubm90IHdhaXQgZm9yIHRoZSByZXBseSBvZiB0aGUgcHJvY2VzcyBrZXkgZXZlbnQuIik7 Ci0rICAgICAgICAgICAgcmV0dmFsID0gaWJ1c19pbnB1dF9jb250ZXh0X3Byb2Nlc3Nfa2V5X2V2 ZW50IChjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAga2V5dmFsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5Y29kZSAtIDgsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSk7Ci0r ICAgICAgICAgICAgaWYgKGxvb3ApCi0rICAgICAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQg KGxvb3ApOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICAgICAgZGF0YS0+ bG9vcCA9IGxvb3A7Ci0rICAgICAgICBpYnVzX2lucHV0X2NvbnRleHRfcHJvY2Vzc19rZXlfZXZl bnRfYXN5bmMgKGNvbnRleHQsCi0gICAgICAgICAgICAga2V5dmFsLAotICAgICAgICAgICAgIGtl eWNvZGUgLSA4LAotLSAgICAgICAgICAgIHN0YXRlKTsKLSsgICAgICAgICAgICBzdGF0ZSwKLSsg ICAgICAgICAgICAtMSwKLSsgICAgICAgICAgICBOVUxMLAotKyAgICAgICAgICAgIF9wcm9jZXNz X2tleV9ldmVudF9yZXBseV9kb25lLAotKyAgICAgICAgICAgIGRhdGEpOwotKyAgICAgICAgZ19t YWluX2xvb3BfcnVuIChsb29wKTsKLSsgICAgICAgIHJldHZhbCA9IGRhdGEtPnJldHZhbDsKLSsg ICAgICAgIGdfc2xpY2VfZnJlZSAoUHJvY2Vzc0tleUV2ZW50UmVwbHlEYXRhLCBkYXRhKTsKLSsg ICAgICAgIGJyZWFrOwotICAgICB9Ci0tICAgIGVsc2UgewotKyAgICBkZWZhdWx0OiB7Ci0gICAg ICAgICBQcm9jZXNzS2V5RXZlbnREYXRhICpkYXRhID0gZ19zbGljZV9uZXcwIChQcm9jZXNzS2V5 RXZlbnREYXRhKTsKLSAjaWYgR1RLX0NIRUNLX1ZFUlNJT04gKDMsIDk4LCA0KQotICAgICAgICAg ZGF0YS0+ZXZlbnQgPSBnZGtfZXZlbnRfcmVmIChldmVudCk7Ci1AQCAtNDg3LDYgKzU0Myw3IEBA IF9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0lucHV0Q29udGV4dCAqY29udGV4dCwKLSAKLSAgICAg ICAgIHJldHZhbCA9IFRSVUU7Ci0gICAgIH0KLSsgICAgfQotIAotICAgICAvKiBHVEs0IGRvZXMg bm90IHByb3ZpZGUgZ3RrX2tleV9zbm9vcGVyX2luc3RhbGwoKSBhbmQgYWxzbwotICAgICAgKiBH dGtJTUNvbnRleHRDbGFzcy0+ZmlsdGVyX2tleXByZXNzKCkgY2Fubm90IHNlbmQgdGhlIHVwZGF0 ZWQKLUBAIC02NzYsMjQgKzczMyw0NyBAQCBfa2V5X3Nub29wZXJfY2IgKEd0a1dpZGdldCAgICp3 aWRnZXQsCi0gI2VuZGlmCi0gCi0gc3RhdGljIGdib29sZWFuCi0tX2dldF9ib29sZWFuX2Vudihj b25zdCBnY2hhciAqbmFtZSwKLS0gICAgICAgICAgICAgICAgIGdib29sZWFuICAgICBkZWZ2YWwp Ci0rX2dldF9ib29sZWFuX2VudiAoY29uc3QgZ2NoYXIgKm5hbWUsCi0rICAgICAgICAgICAgICAg ICAgZ2Jvb2xlYW4gICAgIGRlZnZhbCkKLSB7Ci0gICAgIGNvbnN0IGdjaGFyICp2YWx1ZSA9IGdf Z2V0ZW52IChuYW1lKTsKLSAKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpCi0tICAgICAgcmV0dXJu IGRlZnZhbDsKLSsgICAgICAgIHJldHVybiBkZWZ2YWw7Ci0gCi0gICAgIGlmIChnX3N0cmNtcDAg KHZhbHVlLCAiIikgPT0gMCB8fAotICAgICAgICAgZ19zdHJjbXAwICh2YWx1ZSwgIjAiKSA9PSAw IHx8Ci0gICAgICAgICBnX3N0cmNtcDAgKHZhbHVlLCAiZmFsc2UiKSA9PSAwIHx8Ci0gICAgICAg ICBnX3N0cmNtcDAgKHZhbHVlLCAiRmFsc2UiKSA9PSAwIHx8Ci0tICAgICAgICBnX3N0cmNtcDAg KHZhbHVlLCAiRkFMU0UiKSA9PSAwKQotLSAgICAgIHJldHVybiBGQUxTRTsKLSsgICAgICAgIGdf c3RyY21wMCAodmFsdWUsICJGQUxTRSIpID09IDApIHsKLSsgICAgICAgIHJldHVybiBGQUxTRTsK LSsgICAgfQotIAotICAgICByZXR1cm4gVFJVRTsKLSB9Ci0gCi0rc3RhdGljIGNoYXIKLStfZ2V0 X2NoYXJfZW52IChjb25zdCBnY2hhciAqbmFtZSwKLSsgICAgICAgICAgICAgICBjaGFyICAgICAg ICAgZGVmdmFsKQotK3sKLSsgICAgY29uc3QgZ2NoYXIgKnZhbHVlID0gZ19nZXRlbnYgKG5hbWUp OwotKwotKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSsgICAgICAgIHJldHVybiBkZWZ2YWw7Ci0r Ci0rICAgIGlmIChnX3N0cmNtcDAgKHZhbHVlLCAiIikgPT0gMCB8fAotKyAgICAgICAgZ19zdHJj bXAwICh2YWx1ZSwgIjAiKSA9PSAwIHx8Ci0rICAgICAgICBnX3N0cmNtcDAgKHZhbHVlLCAiZmFs c2UiKSA9PSAwIHx8Ci0rICAgICAgICBnX3N0cmNtcDAgKHZhbHVlLCAiRmFsc2UiKSA9PSAwIHx8 Ci0rICAgICAgICBnX3N0cmNtcDAgKHZhbHVlLCAiRkFMU0UiKSA9PSAwKSB7Ci0rICAgICAgICBy ZXR1cm4gMDsKLSsgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwICh2YWx1ZSwgIjIiKSkgewotKyAg ICAgICAgcmV0dXJuIDI7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotIHN0YXRp YyB2b2lkCi0gZGFlbW9uX25hbWVfYXBwZWFyZWQgKEdEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlv biwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICpuYW1lLAotQEAgLTc3 NywxMSArODU3LDExIEBAIGlidXNfaW1fY29udGV4dF9jbGFzc19pbml0IChJQnVzSU1Db250ZXh0 Q2xhc3MgKmNsYXNzKQotICAgICBnX2Fzc2VydCAoX3NpZ25hbF9yZXRyaWV2ZV9zdXJyb3VuZGlu Z19pZCAhPSAwKTsKLSAKLSAjaWYgR1RLX0NIRUNLX1ZFUlNJT04gKDMsIDk4LCA0KQotLSAgICBf dXNlX3N5bmNfbW9kZSA9IF9nZXRfYm9vbGVhbl9lbnYgKCJJQlVTX0VOQUJMRV9TWU5DX01PREUi LCBUUlVFKTsKLSsgICAgX3VzZV9zeW5jX21vZGUgPSBfZ2V0X2NoYXJfZW52ICgiSUJVU19FTkFC TEVfU1lOQ19NT0RFIiwgMik7Ci0gI2Vsc2UKLSAgICAgX3VzZV9rZXlfc25vb3BlciA9ICFfZ2V0 X2Jvb2xlYW5fZW52ICgiSUJVU19ESVNBQkxFX1NOT09QRVIiLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICEoRU5BQkxFX1NOT09QRVIpKTsKLS0gICAgX3VzZV9z eW5jX21vZGUgPSBfZ2V0X2Jvb2xlYW5fZW52ICgiSUJVU19FTkFCTEVfU1lOQ19NT0RFIiwgRkFM U0UpOwotKyAgICBfdXNlX3N5bmNfbW9kZSA9IChjaGFyKV9nZXRfY2hhcl9lbnYgKCJJQlVTX0VO QUJMRV9TWU5DX01PREUiLCAwKTsKLSAjZW5kaWYKLSAgICAgX3VzZV9kaXNjYXJkX3Bhc3N3b3Jk ID0gX2dldF9ib29sZWFuX2VudiAoIklCVVNfRElTQ0FSRF9QQVNTV09SRCIsIEZBTFNFKTsKLSAK LUBAIC05MDQsNiArOTg0LDggQEAgaWJ1c19pbV9jb250ZXh0X2luaXQgKEdPYmplY3QgKm9iaikK LSAjZWxzZQotICAgICBpYnVzaW1jb250ZXh0LT5jYXBzID0gSUJVU19DQVBfUFJFRURJVF9URVhU IHwgSUJVU19DQVBfRk9DVVM7Ci0gI2VuZGlmCi0rICAgIGlmIChfdXNlX3N5bmNfbW9kZSAhPSAx KQotKyAgICAgICAgaWJ1c2ltY29udGV4dC0+Y2FwcyB8PSBJQlVTX0NBUF9TWU5DX1BST0NFU1Nf S0VZOwotIAotICAgICBpYnVzaW1jb250ZXh0LT5ldmVudHNfcXVldWUgPSBnX3F1ZXVlX25ldyAo KTsKLSAKLUBAIC0xMjQ2LDcgKzEzMjgsNyBAQCBpYnVzX2ltX2NvbnRleHRfcmVzZXQgKEd0a0lN Q29udGV4dCAqY29udGV4dCkKLSAgICAgICAgICAqIElCdXMgdXNlcyBidXR0b24tcHJlc3MtZXZl bnQgaW5zdGVhZCB1bnRpbCBHVEsgaXMgZml4ZWQuCi0gICAgICAgICAgKiBodHRwczovL2dpdGxh Yi5nbm9tZS5vcmcvR05PTUUvZ3RrL2lzc3Vlcy8xNTM0Ci0gICAgICAgICAgKi8KLS0gICAgICAg IGlmIChfdXNlX3N5bmNfbW9kZSkKLSsgICAgICAgIGlmIChfdXNlX3N5bmNfbW9kZSA9PSAxKQot ICAgICAgICAgICAgIGlidXNfaW1fY29udGV4dF9jbGVhcl9wcmVlZGl0X3RleHQgKGlidXNpbWNv bnRleHQpOwotICAgICAgICAgaWJ1c19pbnB1dF9jb250ZXh0X3Jlc2V0IChpYnVzaW1jb250ZXh0 LT5pYnVzY29udGV4dCk7Ci0gICAgIH0KLUBAIC0xMzYxLDcgKzE0NDMsNyBAQCBpYnVzX2ltX2Nv bnRleHRfc2V0X2NsaWVudF93aW5kb3cgKEd0a0lNQ29udGV4dCAqY29udGV4dCwKLSAKLSAgICAg aWYgKGlidXNpbWNvbnRleHQtPmNsaWVudF93aW5kb3cpIHsKLSAjaWYgIUdUS19DSEVDS19WRVJT SU9OICgzLCA5OCwgNCkKLS0gICAgICAgIGlmIChpYnVzaW1jb250ZXh0LT51c2VfYnV0dG9uX3By ZXNzX2V2ZW50ICYmICFfdXNlX3N5bmNfbW9kZSkKLSsgICAgICAgIGlmIChpYnVzaW1jb250ZXh0 LT51c2VfYnV0dG9uX3ByZXNzX2V2ZW50ICYmIF91c2Vfc3luY19tb2RlICE9IDEpCi0gICAgICAg ICAgICAgX2Nvbm5lY3RfYnV0dG9uX3ByZXNzX2V2ZW50IChpYnVzaW1jb250ZXh0LCBGQUxTRSk7 Ci0gI2VuZGlmCi0gICAgICAgICBnX29iamVjdF91bnJlZiAoaWJ1c2ltY29udGV4dC0+Y2xpZW50 X3dpbmRvdyk7Ci1AQCAtMTM3MSw3ICsxNDUzLDcgQEAgaWJ1c19pbV9jb250ZXh0X3NldF9jbGll bnRfd2luZG93IChHdGtJTUNvbnRleHQgKmNvbnRleHQsCi0gICAgIGlmIChjbGllbnQgIT0gTlVM TCkgewotICAgICAgICAgaWJ1c2ltY29udGV4dC0+Y2xpZW50X3dpbmRvdyA9IGdfb2JqZWN0X3Jl ZiAoY2xpZW50KTsKLSAjaWYgIUdUS19DSEVDS19WRVJTSU9OICgzLCA5OCwgNCkKLS0gICAgICAg IGlmICghaWJ1c2ltY29udGV4dC0+dXNlX2J1dHRvbl9wcmVzc19ldmVudCAmJiAhX3VzZV9zeW5j X21vZGUpCi0rICAgICAgICBpZiAoIWlidXNpbWNvbnRleHQtPnVzZV9idXR0b25fcHJlc3NfZXZl bnQgJiYgX3VzZV9zeW5jX21vZGUgIT0gMSkKLSAgICAgICAgICAgICBfY29ubmVjdF9idXR0b25f cHJlc3NfZXZlbnQgKGlidXNpbWNvbnRleHQsIFRSVUUpOwotICNlbmRpZgotICAgICB9Ci1AQCAt MTk5Myw3ICsyMDc1LDcgQEAgX2lidXNfY29udGV4dF91cGRhdGVfcHJlZWRpdF90ZXh0X2NiIChJ QnVzSW5wdXRDb250ZXh0ICAqaWJ1c2NvbnRleHQsCi0gI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTiAo MywgOTgsIDQpCi0gICAgIGlmICghaWJ1c2ltY29udGV4dC0+dXNlX2J1dHRvbl9wcmVzc19ldmVu dCAmJgotICAgICAgICAgbW9kZSA9PSBJQlVTX0VOR0lORV9QUkVFRElUX0NPTU1JVCAmJgotLSAg ICAgICAgIV91c2Vfc3luY19tb2RlKSB7Ci0rICAgICAgICBfdXNlX3N5bmNfbW9kZSAhPSAxKSB7 Ci0gICAgICAgICBpZiAoaWJ1c2ltY29udGV4dC0+Y2xpZW50X3dpbmRvdykgewotICAgICAgICAg ICAgIF9jb25uZWN0X2J1dHRvbl9wcmVzc19ldmVudCAoaWJ1c2ltY29udGV4dCwgVFJVRSk7Ci0g ICAgICAgICB9Ci1AQCAtMjIwMCw2ICsyMjgyLDggQEAgX2NyZWF0ZV9pbnB1dF9jb250ZXh0X2Rv bmUgKElCdXNCdXMgICAgICAgKmJ1cywKLSBzdGF0aWMgdm9pZAotIF9jcmVhdGVfaW5wdXRfY29u dGV4dCAoSUJ1c0lNQ29udGV4dCAqaWJ1c2ltY29udGV4dCkKLSB7Ci0rICAgIGdjaGFyICpwcmdu YW1lID0gZ19zdHJkdXAgKGdfZ2V0X3ByZ25hbWUoKSk7Ci0rICAgIGdjaGFyICpjbGllbnRfbmFt ZTsKLSAgICAgSURFQlVHICgiJXMiLCBfX0ZVTkNUSU9OX18pOwotIAotICAgICBnX2Fzc2VydCAo aWJ1c2ltY29udGV4dC0+aWJ1c2NvbnRleHQgPT0gTlVMTCk7Ci1AQCAtMjIwOCwxMSArMjI5Miwy NCBAQCBfY3JlYXRlX2lucHV0X2NvbnRleHQgKElCdXNJTUNvbnRleHQgKmlidXNpbWNvbnRleHQp Ci0gCi0gICAgIGlidXNpbWNvbnRleHQtPmNhbmNlbGxhYmxlID0gZ19jYW5jZWxsYWJsZV9uZXcg KCk7Ci0gCi0rICAgIGlmICghcHJnbmFtZSkKLSsgICAgICAgIHByZ25hbWUgPSBnX3N0cmR1cF9w cmludGYgKCIoJWQpIiwgZ2V0cGlkICgpKTsKLSsgICAgY2xpZW50X25hbWUgPSBnX3N0cmR1cF9w cmludGYgKCIlczolcyIsCi0rI2lmIEdUS19DSEVDS19WRVJTSU9OICgzLCA5OCwgNCkKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJndGs0LWltIiwKLSsjZWxpZiBHVEtfQ0hF Q0tfVkVSU0lPTiAoMiwgOTEsIDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiZ3RrMy1pbSIsCi0rI2Vsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJndGstaW0iLAotKyNlbmRpZgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cHJnbmFtZSk7Ci0rICAgIGdfZnJlZSAocHJnbmFtZSk7Ci0gICAgIGlidXNfYnVzX2NyZWF0ZV9p bnB1dF9jb250ZXh0X2FzeW5jIChfYnVzLAotLSAgICAgICAgICAgICJndGstaW0iLCAtMSwKLSsg ICAgICAgICAgICBjbGllbnRfbmFtZSwgLTEsCi0gICAgICAgICAgICAgaWJ1c2ltY29udGV4dC0+ Y2FuY2VsbGFibGUsCi0gICAgICAgICAgICAgKEdBc3luY1JlYWR5Q2FsbGJhY2spX2NyZWF0ZV9p bnB1dF9jb250ZXh0X2RvbmUsCi0gICAgICAgICAgICAgZ19vYmplY3RfcmVmIChpYnVzaW1jb250 ZXh0KSk7Ci0rICAgIGdfZnJlZSAoY2xpZW50X25hbWUpOwotIH0KLSAKLSAvKiBDYWxsYmFjayBm dW5jdGlvbnMgZm9yIHNsYXZlIGNvbnRleHQgKi8KLUBAIC0yMzI5LDYgKzI0MjYsOCBAQCBfY3Jl YXRlX2Zha2VfaW5wdXRfY29udGV4dF9kb25lIChJQnVzQnVzICAgICAgICpidXMsCi0gICAgICAg ICAgICAgICAgICAgICAgIE5VTEwpOwotIAotICAgICBndWludDMyIGNhcHMgPSBJQlVTX0NBUF9Q UkVFRElUX1RFWFQgfCBJQlVTX0NBUF9GT0NVUyB8IElCVVNfQ0FQX1NVUlJPVU5ESU5HX1RFWFQ7 Ci0rICAgIGlmIChfdXNlX3N5bmNfbW9kZSAhPSAxKQotKyAgICAgICAgY2FwcyB8PSBJQlVTX0NB UF9TWU5DX1BST0NFU1NfS0VZOwotICAgICBpYnVzX2lucHV0X2NvbnRleHRfc2V0X2NhcGFiaWxp dGllcyAoX2Zha2VfY29udGV4dCwgY2Fwcyk7Ci0gCi0gICAgIC8qIGZvY3VzIGluL291dCB0aGUg ZmFrZSBjb250ZXh0ICovCi1kaWZmIC0tZ2l0IGEvc3JjL2lidXN0eXBlcy5oIGIvc3JjL2lidXN0 eXBlcy5oCi1pbmRleCA2MGJjYjkyYi4uYThlZWUzMTkgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c3R5 cGVzLmgKLSsrKyBiL3NyYy9pYnVzdHlwZXMuaAotQEAgLTEwOSw2ICsxMDksOSBAQCB0eXBlZGVm IGVudW0KLSAgKiBASUJVU19DQVBfU1VSUk9VTkRJTkdfVEVYVDogQ2xpZW50IGNhbiBwcm92aWRl IHN1cnJvdW5kIHRleHQsCi0gICogIG9yIElNRSBjYW4gaGFuZGxlIHN1cnJvdW5kIHRleHQuCi0g ICogQElCVVNfQ0FQX09TSzogVUkgaXMgb3duZWQgYnkgb24tc2NyZWVuIGtleWJvYXJkLgotKyAq IEBJQlVTX0NBUF9TWU5DX1BST0NFU1NfS0VZOiBBc3luY2hyb25vdXMgcHJvY2VzcyBrZXkgZXZl bnRzIGFyZSBub3QKLSsgKiAgc3VwcG9ydGVkIGFuZCB0aGUgaWJ1c19lbmdpbmVfZm9yd2FyZF9r ZXlfZXZlbnQoKSBzaG91bGQgbm90IGJlCi0rICogIHVzZWQgZm9yIHRoZSByZXR1cm4gdmFsdWUg b2YgI0lCdXNFbmdpbmU6OnByb2Nlc3Nfa2V5X2V2ZW50KCkuCi0gICoKLSAgKiBDYXBhYmlsaXR5 IGZsYWdzIG9mIFVJLgotICAqLwotQEAgLTEyMCw2ICsxMjMsNyBAQCB0eXBlZGVmIGVudW0gewot ICAgICBJQlVTX0NBUF9QUk9QRVJUWSAgICAgICAgICAgPSAxIDw8IDQsCi0gICAgIElCVVNfQ0FQ X1NVUlJPVU5ESU5HX1RFWFQgICA9IDEgPDwgNSwKLSAgICAgSUJVU19DQVBfT1NLICAgICAgICAg ICAgICAgID0gMSA8PCA2LAotKyAgICBJQlVTX0NBUF9TWU5DX1BST0NFU1NfS0VZICAgPSAxIDw8 IDcsCi0gfSBJQnVzQ2FwYWJpbGl0ZTsKLSAKLSAvKioKLS0tIAotMi4zNS4zCi0KLUZyb20gYjE0 Y2FiMzc1M2M2NTEwYTBhNDhlZWM2NzNhYTZlYWM4OWM3OTNhMSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6 IFRodSwgNyBKdWwgMjAyMiAwODoyMjo0NSArMDkwMAotU3ViamVjdDogW1BBVENIXSBzcmMvaWJ1 c2VuZ2luZTogQWRkIGZvY3VzX2luX2lkKCkvZm9jdXNfb3V0X2lkKCkgY2xhc3MKLSBtZXRob2Rz Ci0KLUlCdXNFbmdpbmUgY29uc3RydWN0b3Igbm93IGhhcyBhICdoYXMtZm9jdXMtaWQnIHByb3Bl cnR5IGFuZCBpZiBpdCdzICVUUlVFLAotSUJ1c0VuZ2luZTo6Zm9jdXNfaW5faWQoKS9mb2N1c19v dXRfaWQoKSBhcmUgY2FsbGVkIGluc3RhZWQgb2YKLUlCdXNFbmdpbmU6OmZvY3VzX2luKCkvZm9j dXNfb3V0KCkgYW5kIHRoZSBjbGFzcyBtZXRob2QgaGFzIGFuIG9iamVjdF9wYXRoCi1hcmd1bWVu dCBmb3IgdGhlIHVuaXF1ZSBpbnB1dCBjb250ZXh0IElEIGFuZCBhIGNsaWVudCBhcmd1bWVudCBm b3IKLXRoZSBjbGllbnQgYXBwbGljYXRpb24gdHlwZSBsaWtlcyBpYnVzLWd0aywgaWJ1cy1ndGs0 LCB4aW0uCi0tLS0KLSBidXMvZW5naW5lcHJveHkuYyAgICAgICB8IDMwNCArKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCi0gYnVzL2VuZ2luZXByb3h5LmggICAgICAgfCAg MTIgKy0KLSBidXMvaWJ1c2ltcGwuYyAgICAgICAgICB8ICAxMyArKwotIGJ1cy9pYnVzaW1wbC5o ICAgICAgICAgIHwgIDEzICstCi0gYnVzL2lucHV0Y29udGV4dC5jICAgICAgfCAgNTAgKysrKyst LQotIHNyYy9pYnVzZW5naW5lLmMgICAgICAgIHwgMjE3ICsrKysrKysrKysrKysrKysrKysrKysr KysrLS0KLSBzcmMvaWJ1c2VuZ2luZS5oICAgICAgICB8ICAxMCArLQotIHNyYy9pYnVzbWFyc2hh bGVycy5saXN0IHwgICAxICsKLSA4IGZpbGVzIGNoYW5nZWQsIDUwNSBpbnNlcnRpb25zKCspLCAx MTUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9idXMvZW5naW5lcHJveHkuYyBiL2J1cy9l bmdpbmVwcm94eS5jCi1pbmRleCAyZDk4OTk1Yy4uZmQxZjM0ZmIgMTAwNjQ0Ci0tLS0gYS9idXMv ZW5naW5lcHJveHkuYwotKysrIGIvYnVzL2VuZ2luZXByb3h5LmMKLUBAIC0yLDcgKzIsNyBAQAot IC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAgKiBD b3B5cmlnaHQgKEMpIDIwMDgtMjAxMyBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNv bT4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVq aXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMiBUYWthbyBGdWpp d2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSAgKiBDb3B5cmlnaHQgKEMpIDIwMDgt MjAxNiBSZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi1AQCAtNTksNiArNTksNyBAQCBzdHJ1 Y3QgX0J1c0VuZ2luZVByb3h5IHsKLSAKLSAgICAgLyogY2FjaGVkIHByb3BlcnRpZXMgKi8KLSAg ICAgSUJ1c1Byb3BMaXN0ICpwcm9wX2xpc3Q7Ci0rICAgIGdib29sZWFuIGhhc19mb2N1c19pZDsK LSB9OwotIAotIHN0cnVjdCBfQnVzRW5naW5lUHJveHlDbGFzcyB7Ci1AQCAtMTA1LDMwICsxMDYs MzUgQEAgc3RhdGljIElCdXNUZXh0ICp0ZXh0X2VtcHR5ID0gTlVMTDsKLSBzdGF0aWMgSUJ1c1By b3BMaXN0ICpwcm9wX2xpc3RfZW1wdHkgPSBOVUxMOwotIAotIC8qIGZ1bmN0aW9ucyBwcm90b3R5 cGUgKi8KLS1zdGF0aWMgdm9pZCAgICAgYnVzX2VuZ2luZV9wcm94eV9zZXRfcHJvcGVydHkgICAo QnVzRW5naW5lUHJveHkgICAgICAqZW5naW5lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICBwcm9wX2lkLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHVmFs dWUgICAgICAgICp2YWx1ZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR1BhcmFtU3BlYyAgICAgICAgICAqcHNwZWMpOwotLXN0YXRpYyB2b2lkICAg ICBidXNfZW5naW5lX3Byb3h5X2dldF9wcm9wZXJ0eSAgIChCdXNFbmdpbmVQcm94eSAgICAgICpl bmdpbmUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGd1aW50ICAgICAgICAgICAgICAgIHByb3BfaWQsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdWYWx1ZSAgICAgICAgICAgICAgKnZhbHVlLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1TcGVj ICAgICAgICAgICpwc3BlYyk7Ci0rc3RhdGljIHZvaWQgICAgIGJ1c19lbmdpbmVfcHJveHlfc2V0 X3Byb3BlcnR5ICAgKEJ1c0VuZ2luZVByb3h5ICAgICplbmdpbmUsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICBwcm9w X2lkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBHVmFsdWUgICAgICAqdmFsdWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdQYXJhbVNwZWMgICAgICAgICpwc3BlYyk7Ci0rc3RhdGljIHZv aWQgICAgIGJ1c19lbmdpbmVfcHJveHlfZ2V0X3Byb3BlcnR5ICAgKEJ1c0VuZ2luZVByb3h5ICAg ICplbmdpbmUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGd1aW50ICAgICAgICAgICAgICBwcm9wX2lkLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFsdWUgICAgICAgICAgICAqdmFsdWUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQYXJhbVNwZWMg ICAgICAgICpwc3BlYyk7Ci0gc3RhdGljIHZvaWQgICAgIGJ1c19lbmdpbmVfcHJveHlfcmVhbF9y ZWdpc3Rlcl9wcm9wZXJ0aWVzCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKEJ1c0VuZ2luZVByb3h5ICAgICAgKmVuZ2luZSwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1Byb3BMaXN0ICAgICAgICAq cHJvcF9saXN0KTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoQnVzRW5naW5lUHJveHkgICAgKmVuZ2luZSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1Byb3BMaXN0ICAgICAgKnByb3BfbGlzdCk7 Ci0gc3RhdGljIHZvaWQgICAgIGJ1c19lbmdpbmVfcHJveHlfcmVhbF91cGRhdGVfcHJvcGVydHkK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVzRW5n aW5lUHJveHkgICAgICAqZW5naW5lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJQnVzUHJvcGVydHkgICAgICAgICpwcm9wKTsKLS1zdGF0aWMgdm9p ZCAgICAgYnVzX2VuZ2luZV9wcm94eV9yZWFsX2Rlc3Ryb3kgICAoSUJ1c1Byb3h5ICAgICAgICAg ICAqcHJveHkpOwotLXN0YXRpYyB2b2lkICAgICBidXNfZW5naW5lX3Byb3h5X2dfc2lnbmFsICAg ICAgIChHREJ1c1Byb3h5ICAgICAgICAgICpwcm94eSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAqc2VuZGVyX25h bWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGdjaGFyICAgICAgICAgKnNpZ25hbF9uYW1lLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAgICAgICpwYXJhbWV0ZXJz KTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVz RW5naW5lUHJveHkgICAgKmVuZ2luZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSUJ1c1Byb3BlcnR5ICAgICAgKnByb3ApOwotK3N0YXRpYyB2b2lk ICAgICBidXNfZW5naW5lX3Byb3h5X3JlYWxfZGVzdHJveSAgIChJQnVzUHJveHkgICAgICAgICAq cHJveHkpOwotK3N0YXRpYyB2b2lkICAgICBidXNfZW5naW5lX3Byb3h5X2dfc2lnbmFsICAgICAg IChHREJ1c1Byb3h5ICAgICAgICAqcHJveHksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICpzZW5kZXJfbmFtZSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No YXIgICAgICAgKnNpZ25hbF9uYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAgICAqcGFyYW1ldGVycyk7Ci0gc3RhdGlj IHZvaWQgICAgIGJ1c19lbmdpbmVfcHJveHlfaW5pdGFibGVfaWZhY2VfaW5pdAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHSW5pdGFibGVJZmFjZSAg ICAgICppbml0YWJsZV9pZmFjZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKEdJbml0YWJsZUlmYWNlCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmluaXRhYmxlX2lmYWNlKTsK LStzdGF0aWMgdm9pZCAgICAgYnVzX2VuZ2luZV9wcm94eV9nZXRfaGFzX2ZvY3VzX2lkCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJ1c0VuZ2luZVBy b3h5ICAgICplbmdpbmUpOwotIAotIEdfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChCdXNFbmdpbmVQ cm94eSwgYnVzX2VuZ2luZV9wcm94eSwgSUJVU19UWVBFX1BST1hZLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UgKEdfVFlQRV9JTklUQUJMRSwgYnVzX2Vu Z2luZV9wcm94eV9pbml0YWJsZV9pZmFjZV9pbml0KQotKyAgICAgICAgICAgICAgICAgICAgICAg ICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UgKAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdfVFlQRV9JTklUQUJMRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi dXNfZW5naW5lX3Byb3h5X2luaXRhYmxlX2lmYWNlX2luaXQpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgKTsKLSAKLSBzdGF0aWMgR0luaXRhYmxlSWZhY2UgKnBhcmVudF9pbml0YWJsZV9pZmFj ZSA9IE5VTEw7Ci1AQCAtMTM4LDggKzE0NCwxMCBAQCBidXNfZW5naW5lX3Byb3h5X2NsYXNzX2lu aXQgKEJ1c0VuZ2luZVByb3h5Q2xhc3MgKmNsYXNzKQotIHsKLSAgICAgR09iamVjdENsYXNzICpn b2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGNsYXNzKTsKLSAKLS0gICAgZ29iamVjdF9j bGFzcy0+c2V0X3Byb3BlcnR5ID0gKEdPYmplY3RTZXRQcm9wZXJ0eUZ1bmMpYnVzX2VuZ2luZV9w cm94eV9zZXRfcHJvcGVydHk7Ci0tICAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IChH T2JqZWN0R2V0UHJvcGVydHlGdW5jKWJ1c19lbmdpbmVfcHJveHlfZ2V0X3Byb3BlcnR5OwotKyAg ICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPQotKyAgICAgICAgICAgIChHT2JqZWN0U2V0 UHJvcGVydHlGdW5jKWJ1c19lbmdpbmVfcHJveHlfc2V0X3Byb3BlcnR5OwotKyAgICBnb2JqZWN0 X2NsYXNzLT5nZXRfcHJvcGVydHkgPQotKyAgICAgICAgICAgIChHT2JqZWN0R2V0UHJvcGVydHlG dW5jKWJ1c19lbmdpbmVfcHJveHlfZ2V0X3Byb3BlcnR5OwotIAotICAgICBjbGFzcy0+cmVnaXN0 ZXJfcHJvcGVydGllcyA9IGJ1c19lbmdpbmVfcHJveHlfcmVhbF9yZWdpc3Rlcl9wcm9wZXJ0aWVz OwotICAgICBjbGFzcy0+dXBkYXRlX3Byb3BlcnR5ID0gYnVzX2VuZ2luZV9wcm94eV9yZWFsX3Vw ZGF0ZV9wcm9wZXJ0eTsKLUBAIC0xNDcsOCArMTU1LDkgQEAgYnVzX2VuZ2luZV9wcm94eV9jbGFz c19pbml0IChCdXNFbmdpbmVQcm94eUNsYXNzICpjbGFzcykKLSAgICAgSUJVU19QUk9YWV9DTEFT UyAoY2xhc3MpLT5kZXN0cm95ID0gYnVzX2VuZ2luZV9wcm94eV9yZWFsX2Rlc3Ryb3k7Ci0gICAg IEdfREJVU19QUk9YWV9DTEFTUyAoY2xhc3MpLT5nX3NpZ25hbCA9IGJ1c19lbmdpbmVfcHJveHlf Z19zaWduYWw7Ci0gCi0tICAgIHBhcmVudF9pbml0YWJsZV9pZmFjZSA9Ci0tICAgICAgICAgICAg KEdJbml0YWJsZUlmYWNlICopZ190eXBlX2ludGVyZmFjZV9wZWVrIChidXNfZW5naW5lX3Byb3h5 X3BhcmVudF9jbGFzcywgR19UWVBFX0lOSVRBQkxFKTsKLSsgICAgcGFyZW50X2luaXRhYmxlX2lm YWNlID0gKEdJbml0YWJsZUlmYWNlICopZ190eXBlX2ludGVyZmFjZV9wZWVrICgKLSsgICAgICAg ICAgICBidXNfZW5naW5lX3Byb3h5X3BhcmVudF9jbGFzcywKLSsgICAgICAgICAgICBHX1RZUEVf SU5JVEFCTEUpOwotIAotICAgICAvKiBpbnN0YWxsIHByb3BlcnRpZXMgKi8KLSAgICAgZ19vYmpl Y3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKLUBAIC0xNjQsNyArMTcz LDkgQEAgYnVzX2VuZ2luZV9wcm94eV9jbGFzc19pbml0IChCdXNFbmdpbmVQcm94eUNsYXNzICpj bGFzcykKLSAgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1NUQVRJQ19OSUNLCi0gICAg ICAgICAgICAgICAgICAgICAgICAgKSk7Ci0gCi0tICAgIC8qIGluc3RhbGwgZ2xpYiBzaWduYWxz IHRoYXQgd2lsbCBiZSBzZW50IHdoZW4gY29ycmVzcG9uZGluZyBELUJ1cyBzaWduYWxzIGFyZSBz ZW50IGZyb20gYW4gZW5naW5lIHByb2Nlc3MuICovCi0rICAgIC8qIGluc3RhbGwgZ2xpYiBzaWdu YWxzIHRoYXQgd2lsbCBiZSBzZW50IHdoZW4gY29ycmVzcG9uZGluZyBELUJ1cyBzaWduYWxzCi0r ICAgICAqIGFyZSBzZW50IGZyb20gYW4gZW5naW5lIHByb2Nlc3MuCi0rICAgICAqLwotICAgICBl bmdpbmVfc2lnbmFsc1tDT01NSVRfVEVYVF0gPQotICAgICAgICAgZ19zaWduYWxfbmV3IChJXygi Y29tbWl0LXRleHQiKSwKLSAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyAoY2xhc3MpLAot QEAgLTQ3Myw3ICs0ODQsOCBAQCBidXNfZW5naW5lX3Byb3h5X3JlYWxfZGVzdHJveSAoSUJ1c1By b3h5ICpwcm94eSkKLSAgICAgICAgIGVuZ2luZS0+cHJvcF9saXN0ID0gTlVMTDsKLSAgICAgfQot IAotLSAgICBJQlVTX1BST1hZX0NMQVNTIChidXNfZW5naW5lX3Byb3h5X3BhcmVudF9jbGFzcykt PmRlc3Ryb3kgKChJQnVzUHJveHkgKillbmdpbmUpOwotKyAgICBJQlVTX1BST1hZX0NMQVNTIChi dXNfZW5naW5lX3Byb3h5X3BhcmVudF9jbGFzcyktPmRlc3Ryb3kgKAotKyAgICAgICAgICAgIChJ QnVzUHJveHkgKillbmdpbmUpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotQEAgLTQ4Niw3ICs0OTgs OCBAQCBfZ19vYmplY3RfdW5yZWZfaWZfZmxvYXRpbmcgKGdwb2ludGVyIGluc3RhbmNlKQotIC8q KgotICAqIGJ1c19lbmdpbmVfcHJveHlfZ19zaWduYWw6Ci0gICoKLS0gKiBIYW5kbGUgYWxsIEQt QnVzIHNpZ25hbHMgZnJvbSB0aGUgZW5naW5lIHByb2Nlc3MuIFRoaXMgZnVuY3Rpb24gZW1pdHMg Y29ycmVzcG9uZGluZyBnbGliIHNpZ25hbCBmb3IgdGhlIEQtQnVzIHNpZ25hbC4KLSsgKiBIYW5k bGUgYWxsIEQtQnVzIHNpZ25hbHMgZnJvbSB0aGUgZW5naW5lIHByb2Nlc3MuIFRoaXMgZnVuY3Rp b24gZW1pdHMKLSsgKiBjb3JyZXNwb25kaW5nIGdsaWIgc2lnbmFsIGZvciB0aGUgRC1CdXMgc2ln bmFsLgotICAqLwotIHN0YXRpYyB2b2lkCi0gYnVzX2VuZ2luZV9wcm94eV9nX3NpZ25hbCAoR0RC dXNQcm94eSAgKnByb3h5LAotQEAgLTUyMiw3ICs1MzUsOSBAQCBidXNfZW5naW5lX3Byb3h5X2df c2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCi0gICAgICAgICB9Ci0gICAgIH0KLSAKLS0gICAg LyogSGFuZGxlIEQtQnVzIHNpZ25hbHMgd2l0aCBwYXJhbWV0ZXJzLiBEZXNlcmlhbGl6ZSB0aGVt IGFuZCBlbWl0IGEgZ2xpYiBzaWduYWwuICovCi0rICAgIC8qIEhhbmRsZSBELUJ1cyBzaWduYWxz IHdpdGggcGFyYW1ldGVycy4gRGVzZXJpYWxpemUgdGhlbSBhbmQgZW1pdCBhIGdsaWIKLSsgICAg ICogc2lnbmFsLgotKyAgICAgKi8KLSAgICAgaWYgKGdfc3RyY21wMCAoc2lnbmFsX25hbWUsICJD b21taXRUZXh0IikgPT0gMCkgewotICAgICAgICAgR1ZhcmlhbnQgKmFyZzAgPSBOVUxMOwotICAg ICAgICAgZ192YXJpYW50X2dldCAocGFyYW1ldGVycywgIih2KSIsICZhcmcwKTsKLUBAIC01Njgs NyArNTgzLDggQEAgYnVzX2VuZ2luZV9wcm94eV9nX3NpZ25hbCAoR0RCdXNQcm94eSAgKnByb3h5 LAotICAgICAgICAgZ2Jvb2xlYW4gdmlzaWJsZSA9IEZBTFNFOwotICAgICAgICAgZ3VpbnQgbW9k ZSA9IDA7Ci0gCi0tICAgICAgICBnX3ZhcmlhbnRfZ2V0IChwYXJhbWV0ZXJzLCAiKHZ1YnUpIiwg JmFyZzAsICZjdXJzb3JfcG9zLCAmdmlzaWJsZSwgJm1vZGUpOwotKyAgICAgICAgZ192YXJpYW50 X2dldCAocGFyYW1ldGVycywgIih2dWJ1KSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAmYXJn MCwgJmN1cnNvcl9wb3MsICZ2aXNpYmxlLCAmbW9kZSk7Ci0gICAgICAgICBnX3JldHVybl9pZl9m YWlsIChhcmcwICE9IE5VTEwpOwotIAotICAgICAgICAgSUJ1c1RleHQgKnRleHQgPSBJQlVTX1RF WFQgKGlidXNfc2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplIChhcmcwKSk7Ci1AQCAtNTk0LDcgKzYx MCwxMSBAQCBidXNfZW5naW5lX3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCi0g ICAgICAgICBnX3ZhcmlhbnRfdW5yZWYgKGFyZzApOwotICAgICAgICAgZ19yZXR1cm5faWZfZmFp bCAodGV4dCAhPSBOVUxMKTsKLSAKLS0gICAgICAgIGdfc2lnbmFsX2VtaXQgKGVuZ2luZSwgZW5n aW5lX3NpZ25hbHNbVVBEQVRFX0FVWElMSUFSWV9URVhUXSwgMCwgdGV4dCwgdmlzaWJsZSk7Ci0r ICAgICAgICBnX3NpZ25hbF9lbWl0IChlbmdpbmUsCi0rICAgICAgICAgICAgICAgICAgICAgICBl bmdpbmVfc2lnbmFsc1tVUERBVEVfQVVYSUxJQVJZX1RFWFRdLAotKyAgICAgICAgICAgICAgICAg ICAgICAgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgIHRleHQsCi0rICAgICAgICAgICAgICAg ICAgICAgICB2aXNpYmxlKTsKLSAgICAgICAgIF9nX29iamVjdF91bnJlZl9pZl9mbG9hdGluZyAo dGV4dCk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLUBAIC02MDYsMTEgKzYyNiwxNiBAQCBi dXNfZW5naW5lX3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCi0gICAgICAgICBn X3ZhcmlhbnRfZ2V0IChwYXJhbWV0ZXJzLCAiKHZiKSIsICZhcmcwLCAmdmlzaWJsZSk7Ci0gICAg ICAgICBnX3JldHVybl9pZl9mYWlsIChhcmcwICE9IE5VTEwpOwotIAotLSAgICAgICAgSUJ1c0xv b2t1cFRhYmxlICp0YWJsZSA9IElCVVNfTE9PS1VQX1RBQkxFIChpYnVzX3NlcmlhbGl6YWJsZV9k ZXNlcmlhbGl6ZSAoYXJnMCkpOwotKyAgICAgICAgSUJ1c0xvb2t1cFRhYmxlICp0YWJsZSA9Ci0r ICAgICAgICAgICAgICAgIElCVVNfTE9PS1VQX1RBQkxFIChpYnVzX3NlcmlhbGl6YWJsZV9kZXNl cmlhbGl6ZSAoYXJnMCkpOwotICAgICAgICAgZ192YXJpYW50X3VucmVmIChhcmcwKTsKLSAgICAg ICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHRhYmxlICE9IE5VTEwpOwotIAotLSAgICAgICAgZ19zaWdu YWxfZW1pdCAoZW5naW5lLCBlbmdpbmVfc2lnbmFsc1tVUERBVEVfTE9PS1VQX1RBQkxFXSwgMCwg dGFibGUsIHZpc2libGUpOwotKyAgICAgICAgZ19zaWduYWxfZW1pdCAoZW5naW5lLAotKyAgICAg ICAgICAgICAgICAgICAgICAgZW5naW5lX3NpZ25hbHNbVVBEQVRFX0xPT0tVUF9UQUJMRV0sCi0r ICAgICAgICAgICAgICAgICAgICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgdGFibGUs Ci0rICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlKTsKLSAgICAgICAgIF9nX29iamVjdF91 bnJlZl9pZl9mbG9hdGluZyAodGFibGUpOwotICAgICAgICAgcmV0dXJuOwotICAgICB9Ci1AQCAt NjIwLDExICs2NDUsMTUgQEAgYnVzX2VuZ2luZV9wcm94eV9nX3NpZ25hbCAoR0RCdXNQcm94eSAg KnByb3h5LAotICAgICAgICAgZ192YXJpYW50X2dldCAocGFyYW1ldGVycywgIih2KSIsICZhcmcw KTsKLSAgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGFyZzAgIT0gTlVMTCk7Ci0gCi0tICAgICAg ICBJQnVzUHJvcExpc3QgKnByb3BfbGlzdCA9IElCVVNfUFJPUF9MSVNUIChpYnVzX3NlcmlhbGl6 YWJsZV9kZXNlcmlhbGl6ZSAoYXJnMCkpOwotKyAgICAgICAgSUJ1c1Byb3BMaXN0ICpwcm9wX2xp c3QgPQotKyAgICAgICAgICAgICAgICBJQlVTX1BST1BfTElTVCAoaWJ1c19zZXJpYWxpemFibGVf ZGVzZXJpYWxpemUgKGFyZzApKTsKLSAgICAgICAgIGdfdmFyaWFudF91bnJlZiAoYXJnMCk7Ci0g ICAgICAgICBnX3JldHVybl9pZl9mYWlsIChwcm9wX2xpc3QgIT0gTlVMTCk7Ci0gCi0tICAgICAg ICBnX3NpZ25hbF9lbWl0IChlbmdpbmUsIGVuZ2luZV9zaWduYWxzW1JFR0lTVEVSX1BST1BFUlRJ RVNdLCAwLCBwcm9wX2xpc3QpOwotKyAgICAgICAgZ19zaWduYWxfZW1pdCAoZW5naW5lLAotKyAg ICAgICAgICAgICAgICAgICAgICAgZW5naW5lX3NpZ25hbHNbUkVHSVNURVJfUFJPUEVSVElFU10s Ci0rICAgICAgICAgICAgICAgICAgICAgICAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgcHJv cF9saXN0KTsKLSAgICAgICAgIF9nX29iamVjdF91bnJlZl9pZl9mbG9hdGluZyAocHJvcF9saXN0 KTsKLSAgICAgICAgIHJldHVybjsKLSAgICAgfQotQEAgLTYzNCw3ICs2NjMsOCBAQCBidXNfZW5n aW5lX3Byb3h5X2dfc2lnbmFsIChHREJ1c1Byb3h5ICAqcHJveHksCi0gICAgICAgICBnX3Zhcmlh bnRfZ2V0IChwYXJhbWV0ZXJzLCAiKHYpIiwgJmFyZzApOwotICAgICAgICAgZ19yZXR1cm5faWZf ZmFpbCAoYXJnMCAhPSBOVUxMKTsKLSAKLS0gICAgICAgIElCdXNQcm9wZXJ0eSAqcHJvcCA9IElC VVNfUFJPUEVSVFkgKGlidXNfc2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplIChhcmcwKSk7Ci0rICAg ICAgICBJQnVzUHJvcGVydHkgKnByb3AgPQotKyAgICAgICAgICAgICAgICBJQlVTX1BST1BFUlRZ IChpYnVzX3NlcmlhbGl6YWJsZV9kZXNlcmlhbGl6ZSAoYXJnMCkpOwotICAgICAgICAgZ192YXJp YW50X3VucmVmIChhcmcwKTsKLSAgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByb3AgIT0gTlVM TCk7Ci0gCi1AQCAtNjY1LDI2ICs2OTUsNDUgQEAgYnVzX2VuZ2luZV9wcm94eV9uZXdfaW50ZXJu YWwgKGNvbnN0IGdjaGFyICAgICAqcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSUJ1c0VuZ2luZURlc2MgICpkZXNjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHREJ1c0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pCi0gewotKyAgICBHREJ1c1Byb3h5RmxhZ3Mg ZmxhZ3M7Ci0rICAgIEJ1c0VuZ2luZVByb3h5ICplbmdpbmU7Ci0rICAgIEJ1c0lCdXNJbXBsICpp YnVzID0gQlVTX0RFRkFVTFRfSUJVUzsKLSsgICAgR0hhc2hUYWJsZSAqaGFzaF90YWJsZSA9IE5V TEw7Ci0rICAgIEVuZ2luZUZvY3VzQ2F0ZWdvcnkgY2F0ZWdvcnkgPSBFTkdJTkVfRk9DVVNfQ0FU RUdPUllfTk9ORTsKLSsKLSAgICAgZ19hc3NlcnQgKHBhdGgpOwotICAgICBnX2Fzc2VydCAoSUJV U19JU19FTkdJTkVfREVTQyAoZGVzYykpOwotICAgICBnX2Fzc2VydCAoR19JU19EQlVTX0NPTk5F Q1RJT04gKGNvbm5lY3Rpb24pKTsKLSAKLS0gICAgR0RCdXNQcm94eUZsYWdzIGZsYWdzID0gR19E QlVTX1BST1hZX0ZMQUdTX0RPX05PVF9BVVRPX1NUQVJUOwotLSAgICBCdXNFbmdpbmVQcm94eSAq ZW5naW5lID0KLS0gICAgICAgIChCdXNFbmdpbmVQcm94eSAqKSBnX2luaXRhYmxlX25ldyAoQlVT X1RZUEVfRU5HSU5FX1BST1hZLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVz YyIsICAgICAgICAgICAgICBkZXNjLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiZy1jb25uZWN0aW9uIiwgICAgICBjb25uZWN0aW9uLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZy1pbnRlcmZhY2UtbmFtZSIsICBJQlVT X0lOVEVSRkFDRV9FTkdJTkUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJnLW9iamVjdC1wYXRoIiwgICAgIHBhdGgsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJnLWRlZmF1bHQtdGltZW91dCIsIGdfZ2RidXNfdGltZW91 dCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImctZmxhZ3Mi LCAgICAgICAgICAgZmxhZ3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE5VTEwpOwotKyAgICBmbGFncyA9IEdfREJVU19QUk9YWV9GTEFHU19ET19OT1RfQVVU T19TVEFSVDsKLSsgICAgZW5naW5lID0gKEJ1c0VuZ2luZVByb3h5ICopIGdfaW5pdGFibGVfbmV3 ICgKLSsgICAgICAgICAgICBCVVNfVFlQRV9FTkdJTkVfUFJPWFksCi0rICAgICAgICAgICAgTlVM TCwKLSsgICAgICAgICAgICBOVUxMLAotKyAgICAgICAgICAgICJkZXNjIiwgICAgICAgICAgICAg IGRlc2MsCi0rICAgICAgICAgICAgImctY29ubmVjdGlvbiIsICAgICAgY29ubmVjdGlvbiwKLSsg ICAgICAgICAgICAiZy1pbnRlcmZhY2UtbmFtZSIsICBJQlVTX0lOVEVSRkFDRV9FTkdJTkUsCi0r ICAgICAgICAgICAgImctb2JqZWN0LXBhdGgiLCAgICAgcGF0aCwKLSsgICAgICAgICAgICAiZy1k ZWZhdWx0LXRpbWVvdXQiLCBnX2dkYnVzX3RpbWVvdXQsCi0rICAgICAgICAgICAgImctZmxhZ3Mi LCAgICAgICAgICAgZmxhZ3MsCi0rICAgICAgICAgICAgTlVMTCk7Ci0gICAgIGNvbnN0IGdjaGFy ICpsYXlvdXQgPSBpYnVzX2VuZ2luZV9kZXNjX2dldF9sYXlvdXQgKGRlc2MpOwotICAgICBpZiAo bGF5b3V0ICE9IE5VTEwgJiYgbGF5b3V0WzBdICE9ICdcMCcpIHsKLSAgICAgICAgIGVuZ2luZS0+ a2V5bWFwID0gaWJ1c19rZXltYXBfZ2V0IChsYXlvdXQpOwotICAgICB9Ci0rICAgIGlmIChpYnVz KQotKyAgICAgICAgaGFzaF90YWJsZSA9IGJ1c19pYnVzX2ltcGxfZ2V0X2VuZ2luZV9mb2N1c19p ZF90YWJsZSAoaWJ1cyk7Ci0rICAgIGlmIChoYXNoX3RhYmxlKSB7Ci0rICAgICAgICBjYXRlZ29y eSA9IChFbmdpbmVGb2N1c0NhdGVnb3J5KUdQT0lOVEVSX1RPX0lOVCAoCi0rICAgICAgICAgICAg ICAgIGdfaGFzaF90YWJsZV9sb29rdXAgKGhhc2hfdGFibGUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX2Rlc2NfZ2V0X25hbWUgKGRlc2MpKSk7Ci0r ICAgICAgICBpZiAoY2F0ZWdvcnkgPT0gRU5HSU5FX0ZPQ1VTX0NBVEVHT1JZX0hBU19JRCkKLSsg ICAgICAgICAgICBlbmdpbmUtPmhhc19mb2N1c19pZCA9IFRSVUU7Ci0rICAgICAgICBlbHNlIGlm IChjYXRlZ29yeSA9PSBFTkdJTkVfRk9DVVNfQ0FURUdPUllfTk9fSUQpCi0rICAgICAgICAgICAg ZW5naW5lLT5oYXNfZm9jdXNfaWQgPSBGQUxTRTsKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAg ICBidXNfZW5naW5lX3Byb3h5X2dldF9oYXNfZm9jdXNfaWQgKGVuZ2luZSk7Ci0rICAgIH0KLSAg ICAgcmV0dXJuIGVuZ2luZTsKLSB9Ci0gCi1AQCAtNzQwLDcgKzc4OSw4IEBAIGVuZ2luZV9wcm94 eV9uZXdfZGF0YV9mcmVlIChFbmdpbmVQcm94eU5ld0RhdGEgKmRhdGEpCi0gLyoqCi0gICogY3Jl YXRlX2VuZ2luZV9yZWFkeV9jYjoKLSAgKgotLSAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUg Y2FsbGVkIHdoZW4gYnVzX2ZhY3RvcnlfcHJveHlfY3JlYXRlX2VuZ2luZSBmaW5pc2hlcy4KLSsg KiBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGJ1c19mYWN0b3J5X3Byb3h5 X2NyZWF0ZV9lbmdpbmUKLSsgKiBmaW5pc2hlcy4KLSAgKiBDcmVhdGUgYW4gQnVzRW5naW5lUHJv eHkgb2JqZWN0IGFuZCBjYWxsIHRoZSBHQXN5bmNSZWFkeUNhbGxiYWNrLgotICAqLwotIHN0YXRp YyB2b2lkCi1AQCAtNzc1LDggKzgyNSwxMCBAQCBjcmVhdGVfZW5naW5lX3JlYWR5X2NiIChCdXNG YWN0b3J5UHJveHkgICAgKmZhY3RvcnksCi0gLyoqCi0gICogbm90aWZ5X2ZhY3RvcnlfY2I6Ci0g ICoKLS0gKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGJ1c19jb21wb25l bnRfc3RhcnQoKSBlbWl0cyAibm90aWZ5OjpmYWN0b3J5IiBzaWduYWwgd2l0aGluIDUgc2Vjb25k cy4KLS0gKiBDYWxsIGJ1c19mYWN0b3J5X3Byb3h5X2NyZWF0ZV9lbmdpbmUgdG8gY3JlYXRlIHRo ZSBlbmdpbmUgcHJveHkgYXN5bmNocm9ub3VzbHkuCi0rICogQSBjYWxsYmFjayBmdW5jdGlvbiB0 byBiZSBjYWxsZWQgd2hlbiBidXNfY29tcG9uZW50X3N0YXJ0KCkgZW1pdHMKLSsgKiAibm90aWZ5 OjpmYWN0b3J5IiBzaWduYWwgd2l0aGluIDUgc2Vjb25kcy4KLSsgKiBDYWxsIGJ1c19mYWN0b3J5 X3Byb3h5X2NyZWF0ZV9lbmdpbmUgdG8gY3JlYXRlIHRoZSBlbmdpbmUgcHJveHkKLSsgKiBhc3lu Y2hyb25vdXNseS4KLSAgKi8KLSBzdGF0aWMgdm9pZAotIG5vdGlmeV9mYWN0b3J5X2NiIChCdXND b21wb25lbnQgICAgICAgKmNvbXBvbmVudCwKLUBAIC03OTgsMjIgKzg1MCwyNSBAQCBub3RpZnlf ZmFjdG9yeV9jYiAoQnVzQ29tcG9uZW50ICAgICAgICpjb21wb25lbnQsCi0gICAgICAgICAgICAg ZGF0YS0+aGFuZGxlcl9pZCA9IDA7Ci0gICAgICAgICB9Ci0gCi0tICAgICAgICAvKiBXZSAqaGF2 ZSB0byogZGlzY29ubmVjdCB0aGUgY2FuY2VsbGVkX2NiIGhlcmUsIHNpbmNlIGdfZGJ1c19wcm94 eV9jYWxsCi0tICAgICAgICAgKiBjYWxscyBjcmVhdGVfZW5naW5lX3JlYWR5X2NiIGV2ZW4gaWYg dGhlIHByb3h5IGNhbGwgaXMgY2FuY2VsbGVkLCBhbmQKLS0gICAgICAgICAqIGluIHRoaXMgY2Fz ZSwgY3JlYXRlX2VuZ2luZV9yZWFkeV9jYiBpdHNlbGYgd2lsbCByZXR1cm4gZXJyb3IgdXNpbmcK LS0gICAgICAgICAqIGdfdGFza19yZXR1cm5fZXJyb3IoKS4gKi8KLSsgICAgICAgIC8qIFdlICpo YXZlIHRvKiBkaXNjb25uZWN0IHRoZSBjYW5jZWxsZWRfY2IgaGVyZSwgc2luY2UKLSsgICAgICAg ICAqIGdfZGJ1c19wcm94eV9jYWxsIGNhbGxzIGNyZWF0ZV9lbmdpbmVfcmVhZHlfY2IgZXZlbiBp ZiB0aGUgcHJveHkKLSsgICAgICAgICAqIGNhbGwgaXMgY2FuY2VsbGVkLCBhbmQgaW4gdGhpcyBj YXNlLCBjcmVhdGVfZW5naW5lX3JlYWR5X2NiIGl0c2VsZgotKyAgICAgICAgICogd2lsbCByZXR1 cm4gZXJyb3IgdXNpbmcgZ190YXNrX3JldHVybl9lcnJvcigpLgotKyAgICAgICAgICovCi0gICAg ICAgICBpZiAoZGF0YS0+Y2FuY2VsbGFibGUgJiYgZGF0YS0+Y2FuY2VsbGVkX2hhbmRsZXJfaWQg IT0gMCkgewotLSAgICAgICAgICAgIGdfY2FuY2VsbGFibGVfZGlzY29ubmVjdCAoZGF0YS0+Y2Fu Y2VsbGFibGUsIGRhdGEtPmNhbmNlbGxlZF9oYW5kbGVyX2lkKTsKLSsgICAgICAgICAgICBnX2Nh bmNlbGxhYmxlX2Rpc2Nvbm5lY3QgKGRhdGEtPmNhbmNlbGxhYmxlLCAKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmNhbmNlbGxlZF9oYW5kbGVyX2lkKTsKLSAg ICAgICAgICAgICBkYXRhLT5jYW5jZWxsZWRfaGFuZGxlcl9pZCA9IDA7Ci0gICAgICAgICB9Ci0g Ci0gICAgICAgICAvKiBDcmVhdGUgZW5naW5lIGZyb20gZmFjdG9yeS4gKi8KLS0gICAgICAgIGJ1 c19mYWN0b3J5X3Byb3h5X2NyZWF0ZV9lbmdpbmUgKGRhdGEtPmZhY3RvcnksCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5kZXNjLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+dGltZW91dCwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmNhbmNlbGxhYmxlLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdBc3luY1JlYWR5Q2FsbGJhY2sp IGNyZWF0ZV9lbmdpbmVfcmVhZHlfY2IsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhKTsKLSsgICAgICAgIGJ1c19mYWN0b3J5X3Byb3h5X2NyZWF0ZV9lbmdp bmUgKAotKyAgICAgICAgICAgICAgICBkYXRhLT5mYWN0b3J5LAotKyAgICAgICAgICAgICAgICBk YXRhLT5kZXNjLAotKyAgICAgICAgICAgICAgICBkYXRhLT50aW1lb3V0LAotKyAgICAgICAgICAg ICAgICBkYXRhLT5jYW5jZWxsYWJsZSwKLSsgICAgICAgICAgICAgICAgKEdBc3luY1JlYWR5Q2Fs bGJhY2spIGNyZWF0ZV9lbmdpbmVfcmVhZHlfY2IsCi0rICAgICAgICAgICAgICAgIGRhdGEpOwot ICAgICB9Ci0gICAgIC8qIElmIGZhY3RvcnkgaXMgTlVMTCwgd2Ugd2lsbCBjb250aW51ZSB3YWl0 IGZvcgotICAgICAgKiBmYWN0b3J5IG5vdGlmeSBzaWduYWwgb3IgdGltZW91dCAqLwotQEAgLTgy Miw3ICs4NzcsOCBAQCBub3RpZnlfZmFjdG9yeV9jYiAoQnVzQ29tcG9uZW50ICAgICAgICpjb21w b25lbnQsCi0gLyoqCi0gICogdGltZW91dF9jYjoKLSAgKgotLSAqIEEgY2FsbGJhY2sgZnVuY3Rp b24gdG8gYmUgY2FsbGVkIHdoZW4gYnVzX2NvbXBvbmVudF9zdGFydCgpIGRvZXMgbm90IGVtaXQg Im5vdGlmeTo6ZmFjdG9yeSIgc2lnbmFsIHdpdGhpbiA1IHNlY29uZHMuCi0rICogQSBjYWxsYmFj ayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBidXNfY29tcG9uZW50X3N0YXJ0KCkgZG9lcyBu b3QgZW1pdAotKyAqICJub3RpZnk6OmZhY3RvcnkiIHNpZ25hbCB3aXRoaW4gNSBzZWNvbmRzLgot ICAqIENhbGwgdGhlIEdBc3luY1JlYWR5Q2FsbGJhY2sgYW5kIHN0b3AgdGhlIDUgc2VjIHRpbWVy LgotICAqLwotIHN0YXRpYyBnYm9vbGVhbgotQEAgLTkyNywxNiArOTgzLDE4IEBAIGJ1c19lbmdp bmVfcHJveHlfbmV3IChJQnVzRW5naW5lRGVzYyAgICAgICpkZXNjLAotICAgICAgICAgLyogVGhl IGZhY3RvcnkgaXMgcmVhZHkuIFdlJ2xsIGNyZWF0ZSB0aGUgZW5naW5lIHByb3h5IGRpcmVjdGx5 LiAqLwotICAgICAgICAgZ19vYmplY3RfcmVmIChkYXRhLT5mYWN0b3J5KTsKLSAKLS0gICAgICAg IC8qIFdlIGRvbid0IGhhdmUgdG8gY29ubmVjdCB0byBjYW5jZWxsZWRfY2IgaGVyZSwgc2luY2Ug Z19kYnVzX3Byb3h5X2NhbGwKLS0gICAgICAgICAqIGNhbGxzIGNyZWF0ZV9lbmdpbmVfcmVhZHlf Y2IgZXZlbiBpZiB0aGUgcHJveHkgY2FsbCBpcyBjYW5jZWxsZWQsIGFuZAotLSAgICAgICAgICog aW4gdGhpcyBjYXNlLCBjcmVhdGVfZW5naW5lX3JlYWR5X2NiIGl0c2VsZiBjYW4gcmV0dXJuIGVy cm9yIHVzaW5nCi0tICAgICAgICAgKiBnX3Rhc2tfcmV0dXJuX2Vycm9yKCkuICovCi0tICAgICAg ICBidXNfZmFjdG9yeV9wcm94eV9jcmVhdGVfZW5naW5lIChkYXRhLT5mYWN0b3J5LAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+ZGVzYywKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQsCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxsYWJsZSwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHQXN5bmNSZWFkeUNhbGxiYWNrKSBjcmVhdGVf ZW5naW5lX3JlYWR5X2NiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YSk7Ci0rICAgICAgICAvKiBXZSBkb24ndCBoYXZlIHRvIGNvbm5lY3QgdG8gY2FuY2Vs bGVkX2NiIGhlcmUsIHNpbmNlCi0rICAgICAgICAgKiBnX2RidXNfcHJveHlfY2FsbCBjYWxscyBj cmVhdGVfZW5naW5lX3JlYWR5X2NiIGV2ZW4gaWYgdGhlIHByb3h5Ci0rICAgICAgICAgKiBjYWxs IGlzIGNhbmNlbGxlZCwgYW5kIGluIHRoaXMgY2FzZSwgY3JlYXRlX2VuZ2luZV9yZWFkeV9jYiBp dHNlbGYKLSsgICAgICAgICAqIGNhbiByZXR1cm4gZXJyb3IgdXNpbmcgZ190YXNrX3JldHVybl9l cnJvcigpLgotKyAgICAgICAgICovCi0rICAgICAgICBidXNfZmFjdG9yeV9wcm94eV9jcmVhdGVf ZW5naW5lICgKLSsgICAgICAgICAgICAgICAgZGF0YS0+ZmFjdG9yeSwKLSsgICAgICAgICAgICAg ICAgZGF0YS0+ZGVzYywKLSsgICAgICAgICAgICAgICAgdGltZW91dCwKLSsgICAgICAgICAgICAg ICAgY2FuY2VsbGFibGUsCi0rICAgICAgICAgICAgICAgIChHQXN5bmNSZWFkeUNhbGxiYWNrKSBj cmVhdGVfZW5naW5lX3JlYWR5X2NiLAotKyAgICAgICAgICAgICAgICBkYXRhKTsKLSAgICAgfQot IH0KLSAKLUBAIC05NzgsOCArMTAzNiwxMSBAQCBidXNfZW5naW5lX3Byb3h5X3Byb2Nlc3Nfa2V5 X2V2ZW50IChCdXNFbmdpbmVQcm94eSAgICAgICplbmdpbmUsCi0gewotICAgICBnX2Fzc2VydCAo QlVTX0lTX0VOR0lORV9QUk9YWSAoZW5naW5lKSk7Ci0gCi0tICAgIGlmIChrZXljb2RlICE9IDAg JiYgYnVzX2lidXNfaW1wbF9pc191c2Vfc3lzX2xheW91dCAoQlVTX0RFRkFVTFRfSUJVUykgPT0g RkFMU0UpIHsKLS0gICAgICAgIC8qIFNpbmNlIHVzZV9zeXNfbGF5b3V0IGlzIGZhbHNlLCB3ZSBk b24ndCByZWx5IG9uIFhLQi4gVHJ5IHRvIGNvbnZlcnQga2V5dmFsIGZyb20ga2V5Y29kZSBieSB1 c2luZyBvdXIgb3duIG1hcHBpbmcuICovCi0rICAgIGlmIChrZXljb2RlICE9IDAgJiYKLSsgICAg ICAgIGJ1c19pYnVzX2ltcGxfaXNfdXNlX3N5c19sYXlvdXQgKEJVU19ERUZBVUxUX0lCVVMpID09 IEZBTFNFKSB7Ci0rICAgICAgICAvKiBTaW5jZSB1c2Vfc3lzX2xheW91dCBpcyBmYWxzZSwgd2Ug ZG9uJ3QgcmVseSBvbiBYS0IuIFRyeSB0byBjb252ZXJ0Ci0rICAgICAgICAgKiBrZXl2YWwgZnJv bSBrZXljb2RlIGJ5IHVzaW5nIG91ciBvd24gbWFwcGluZy4KLSsgICAgICAgICAqLwotICAgICAg ICAgSUJ1c0tleW1hcCAqa2V5bWFwID0gZW5naW5lLT5rZXltYXA7Ci0gICAgICAgICBpZiAoa2V5 bWFwID09IE5VTEwpCi0gICAgICAgICAgICAga2V5bWFwID0gQlVTX0RFRkFVTFRfS0VZTUFQOwot QEAgLTExNDIsNyArMTIwMyw4IEBAIHZvaWQgYnVzX2VuZ2luZV9wcm94eV9zZXRfc3Vycm91bmRp bmdfdGV4dCAoQnVzRW5naW5lUHJveHkgKmVuZ2luZSwKLSAgICAgICAgIGdfc3RyY21wMCAodGV4 dC0+dGV4dCwgZW5naW5lLT5zdXJyb3VuZGluZ190ZXh0LT50ZXh0KSAhPSAwIHx8Ci0gICAgICAg ICBjdXJzb3JfcG9zICE9IGVuZ2luZS0+c3Vycm91bmRpbmdfY3Vyc29yX3BvcyB8fAotICAgICAg ICAgYW5jaG9yX3BvcyAhPSBlbmdpbmUtPnNlbGVjdGlvbl9hbmNob3JfcG9zKSB7Ci0tICAgICAg ICBHVmFyaWFudCAqdmFyaWFudCA9IGlidXNfc2VyaWFsaXphYmxlX3NlcmlhbGl6ZSAoKElCdXNT ZXJpYWxpemFibGUgKil0ZXh0KTsKLSsgICAgICAgIEdWYXJpYW50ICp2YXJpYW50ID0KLSsgICAg ICAgICAgICAgICAgaWJ1c19zZXJpYWxpemFibGVfc2VyaWFsaXplICgoSUJ1c1NlcmlhbGl6YWJs ZSAqKXRleHQpOwotICAgICAgICAgaWYgKGVuZ2luZS0+c3Vycm91bmRpbmdfdGV4dCkKLSAgICAg ICAgICAgICBnX29iamVjdF91bnJlZiAoZW5naW5lLT5zdXJyb3VuZGluZ190ZXh0KTsKLSAgICAg ICAgIGVuZ2luZS0+c3Vycm91bmRpbmdfdGV4dCA9IChJQnVzVGV4dCAqKSBnX29iamVjdF9yZWZf c2luayAodGV4dCk7Ci1AQCAtMTIwMSw2ICsxMjYzLDYxIEBAIGJ1c19lbmdpbmVfcHJveHlfc2V0 X2NvbnRlbnRfdHlwZSAoQnVzRW5naW5lUHJveHkgKmVuZ2luZSwKLSAgICAgZ192YXJpYW50X3Vu cmVmIChjb250ZW50X3R5cGUpOwotIH0KLSAKLStzdGF0aWMgdm9pZAotK19nZXRfaGFzX2ZvY3Vz X2lkX2NiIChHT2JqZWN0ICAgICAgICAqb2JqZWN0LAotKyAgICAgICAgICAgICAgICAgICAgICBH QXN5bmNSZXN1bHQgICAqcmVzLAotKyAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAg ICAgdXNlcl9kYXRhKQotK3sKLSsgICAgR0hhc2hUYWJsZSAqaGFzaF90YWJsZSA9IChHSGFzaFRh YmxlKil1c2VyX2RhdGE7Ci0rICAgIEJ1c0VuZ2luZVByb3h5ICplbmdpbmU7Ci0rICAgIEdFcnJv ciAqZXJyb3IgPSBOVUxMOwotKyAgICBHVmFyaWFudCAqcmVzdWx0OwotKwotKyAgICBnX3JldHVy bl9pZl9mYWlsIChCVVNfSVNfRU5HSU5FX1BST1hZIChvYmplY3QpKTsKLSsgICAgZW5naW5lID0g QlVTX0VOR0lORV9QUk9YWSAob2JqZWN0KTsKLSsgICAgcmVzdWx0ID0gZ19kYnVzX3Byb3h5X2Nh bGxfZmluaXNoIChHX0RCVVNfUFJPWFkgKG9iamVjdCksIHJlcywgJmVycm9yKTsKLSsKLSsgICAg aWYgKHJlc3VsdCAhPSBOVUxMKSB7Ci0rICAgICAgICBHVmFyaWFudCAqdmFyaWFudCA9IE5VTEw7 Ci0rICAgICAgICBncG9pbnRlciB2YWx1ZTsKLSsgICAgICAgIGdfdmFyaWFudF9nZXQgKHJlc3Vs dCwgIih2KSIsICZ2YXJpYW50KTsKLSsgICAgICAgIGVuZ2luZS0+aGFzX2ZvY3VzX2lkID0gZ192 YXJpYW50X2dldF9ib29sZWFuICh2YXJpYW50KTsKLSsgICAgICAgIGdfdmFyaWFudF91bnJlZiAo dmFyaWFudCk7Ci0rICAgICAgICBnX3ZhcmlhbnRfdW5yZWYgKHJlc3VsdCk7Ci0rICAgICAgICB2 YWx1ZSA9ICBHSU5UX1RPX1BPSU5URVIgKGVuZ2luZS0+aGFzX2ZvY3VzX2lkCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgID8gRU5HSU5FX0ZPQ1VTX0NBVEVHT1JZX0hBU19JRAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEVOR0lORV9GT0NVU19DQVRFR09S WV9OT19JRCk7Ci0rICAgICAgICBnX2hhc2hfdGFibGVfcmVwbGFjZSAoCi0rICAgICAgICAgICAg aGFzaF90YWJsZSwKLSsgICAgICAgICAgICAoZ3BvaW50ZXIpaWJ1c19lbmdpbmVfZGVzY19nZXRf bmFtZSAoZW5naW5lLT5kZXNjKSwKLSsgICAgICAgICAgICB2YWx1ZSk7Ci0rICAgIH0KLSsgICAg Z19oYXNoX3RhYmxlX3VucmVmIChoYXNoX3RhYmxlKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLSti dXNfZW5naW5lX3Byb3h5X2dldF9oYXNfZm9jdXNfaWQgKEJ1c0VuZ2luZVByb3h5ICplbmdpbmUp Ci0rewotKyAgICBCdXNJQnVzSW1wbCAqaWJ1cyA9IEJVU19ERUZBVUxUX0lCVVM7Ci0rICAgIEdI YXNoVGFibGUgKmhhc2hfdGFibGU7Ci0rCi0rICAgIGdfYXNzZXJ0IChCVVNfSVNfRU5HSU5FX1BS T1hZIChlbmdpbmUpKTsKLSsgICAgZ19hc3NlcnQgKGlidXMpOwotKwotKyAgICBoYXNoX3RhYmxl ID0gYnVzX2lidXNfaW1wbF9nZXRfZW5naW5lX2ZvY3VzX2lkX3RhYmxlIChpYnVzKTsKLSsgICAg Z19hc3NlcnQgKGhhc2hfdGFibGUpOwotKyAgICBnX2RidXNfcHJveHlfY2FsbCAoKEdEQnVzUHJv eHkgKikgZW5naW5lLAotKyAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5E QnVzLlByb3BlcnRpZXMuR2V0IiwKLSsgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9u ZXcgKCIoc3MpIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNf SU5URVJGQUNFX0VOR0lORSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJGb2N1c0lkIiksCi0rICAgICAgICAgICAgICAgICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19O T05FLAotKyAgICAgICAgICAgICAgICAgICAgICAgLTEsCi0rICAgICAgICAgICAgICAgICAgICAg ICBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgX2dldF9oYXNfZm9jdXNfaWRfY2IsCi0r ICAgICAgICAgICAgICAgICAgICAgICBnX2hhc2hfdGFibGVfcmVmIChoYXNoX3RhYmxlKSk7Ci0r fQotKwotIC8qIGEgbWFjcm8gdG8gZ2VuZXJhdGUgYSBmdW5jdGlvbiB0byBjYWxsIGEgbnVsbGFy eSBELUJ1cyBtZXRob2QuICovCi0gI2RlZmluZSBERUZJTkVfRlVOQ1RJT04oTmFtZSwgbmFtZSkg ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMjIzLDExICsxMzQwLDI0IEBA IERFRklORV9GVU5DVElPTiAoQ3Vyc29yRG93biwgY3Vyc29yX2Rvd24pCi0gI3VuZGVmIERFRklO RV9GVU5DVElPTgotIAotIHZvaWQKLS1idXNfZW5naW5lX3Byb3h5X2ZvY3VzX2luIChCdXNFbmdp bmVQcm94eSAqZW5naW5lKQotK2J1c19lbmdpbmVfcHJveHlfZm9jdXNfaW4gKEJ1c0VuZ2luZVBy b3h5ICplbmdpbmUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAg Km9iamVjdF9wYXRoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAg ICpjbGllbnQpCi0gewotICAgICBnX2Fzc2VydCAoQlVTX0lTX0VOR0lORV9QUk9YWSAoZW5naW5l KSk7Ci0tICAgIGlmICghZW5naW5lLT5oYXNfZm9jdXMpIHsKLS0gICAgICAgIGVuZ2luZS0+aGFz X2ZvY3VzID0gVFJVRTsKLSsgICAgaWYgKGVuZ2luZS0+aGFzX2ZvY3VzKQotKyAgICAgICAgcmV0 dXJuOwotKyAgICBlbmdpbmUtPmhhc19mb2N1cyA9IFRSVUU7Ci0rICAgIGlmIChlbmdpbmUtPmhh c19mb2N1c19pZCkgewotKyAgICAgICAgZ19kYnVzX3Byb3h5X2NhbGwgKChHREJ1c1Byb3h5ICop ZW5naW5lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJGb2N1c0luSWQiLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXcgKCIoc3MpIiwgb2JqZWN0X3BhdGgs IGNsaWVudCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgR19EQlVTX0NBTExfRkxBR1Nf Tk9ORSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0rICAgIH0gZWxzZSB7Ci0gICAgICAgICBn X2RidXNfcHJveHlfY2FsbCAoKEdEQnVzUHJveHkgKillbmdpbmUsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkZvY3VzSW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws Ci1AQCAtMTI0MCwxMSArMTM3MCwyMyBAQCBidXNfZW5naW5lX3Byb3h5X2ZvY3VzX2luIChCdXNF bmdpbmVQcm94eSAqZW5naW5lKQotIH0KLSAKLSB2b2lkCi0tYnVzX2VuZ2luZV9wcm94eV9mb2N1 c19vdXQgKEJ1c0VuZ2luZVByb3h5ICplbmdpbmUpCi0rYnVzX2VuZ2luZV9wcm94eV9mb2N1c19v dXQgKEJ1c0VuZ2luZVByb3h5ICplbmdpbmUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGdjaGFyICAgICpvYmplY3RfcGF0aCkKLSB7Ci0gICAgIGdfYXNzZXJ0IChCVVNfSVNf RU5HSU5FX1BST1hZIChlbmdpbmUpKTsKLS0gICAgaWYgKGVuZ2luZS0+aGFzX2ZvY3VzKSB7Ci0t ICAgICAgICBlbmdpbmUtPmhhc19mb2N1cyA9IEZBTFNFOwotKyAgICBpZiAoIWVuZ2luZS0+aGFz X2ZvY3VzKQotKyAgICAgICAgcmV0dXJuOwotKyAgICBlbmdpbmUtPmhhc19mb2N1cyA9IEZBTFNF OwotKyAgICBpZiAoZW5naW5lLT5oYXNfZm9jdXNfaWQpIHsKLSsgICAgICAgIGdfZGJ1c19wcm94 eV9jYWxsICgoR0RCdXNQcm94eSAqKWVuZ2luZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAiRm9jdXNPdXRJZCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25l dyAoIihzKSIsIG9iamVjdF9wYXRoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0RC VVNfQ0FMTF9GTEFHU19OT05FLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSsgICAgfSBlbHNl IHsKLSAgICAgICAgIGdfZGJ1c19wcm94eV9jYWxsICgoR0RCdXNQcm94eSAqKWVuZ2luZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiRm9jdXNPdXQiLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwsCi1kaWZmIC0tZ2l0IGEvYnVzL2VuZ2luZXByb3h5LmggYi9idXMvZW5n aW5lcHJveHkuaAotaW5kZXggYTMwMDZiNDcuLjk1N2I3ODUxIDEwMDY0NAotLS0tIGEvYnVzL2Vu Z2luZXByb3h5LmgKLSsrKyBiL2J1cy9lbmdpbmVwcm94eS5oCi1AQCAtMiw3ICsyLDcgQEAKLSAv KiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGlidXMgLSBUaGUgSW5wdXQgQnVzCi0gICogQ29w eXJpZ2h0IChDKSAyMDA4LTIwMTMgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+ Ci0tICogQ29weXJpZ2h0IChDKSAyMDE4IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYUBn bWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgVGFrYW8gRnVqaXdhcmEgPHRh a2FvLmZ1aml3YXJhQGdtYWlsLmNvbT4KLSAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBSZWQg SGF0LCBJbmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi1AQCAtMTI2LDIwICsxMjYsMjYgQEAgdm9pZCAgICAg ICAgICAgIGJ1c19lbmdpbmVfcHJveHlfc2V0X2N1cnNvcl9sb2NhdGlvbgotIC8qKgotICAqIGJ1 c19lbmdpbmVfcHJveHlfZm9jdXNfaW46Ci0gICogQGVuZ2luZTogQSAjQnVzRW5naW5lUHJveHku Ci0rICogQG9iamVjdF9wYXRoOiBBbiBvYmplY3QgcGF0aC4KLSsgKiBAY2xpZW50OiBBIGNsaWVu dCBuYW1lLgotICAqCi0gICogQ2FsbCAiRm9jdXNJbiIgbWV0aG9kIG9mIGFuIGVuZ2luZSBhc3lu Y2hyb25vdXNseS4gRG8gbm90aGluZyBpZgotICAqIHRoZSBlbmdpbmUgYWxyZWFkeSBoYXMgYSBm b2N1cy4KLSAgKi8KLS12b2lkICAgICAgICAgICAgYnVzX2VuZ2luZV9wcm94eV9mb2N1c19pbiAg ICAoQnVzRW5naW5lUHJveHkgICAgICplbmdpbmUpOwotK3ZvaWQgICAgICAgICAgICBidXNfZW5n aW5lX3Byb3h5X2ZvY3VzX2luICAgIChCdXNFbmdpbmVQcm94eSAgICAgKmVuZ2luZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAg ICAgICpvYmplY3RfcGF0aCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICpjbGllbnQpOwotIAotIC8qKgotICAqIGJ1c19l bmdpbmVfcHJveHlfZm9jdXNfb3V0OgotICAqIEBlbmdpbmU6IEEgI0J1c0VuZ2luZVByb3h5Lgot KyAqIEBvYmplY3RfcGF0aDogQW4gb2JqZWN0IHBhdGguCi0gICoKLSAgKiBDYWxsICJGb2N1c091 dCIgbWV0aG9kIG9mIGFuIGVuZ2luZSBhc3luY2hyb25vdXNseS4gRG8gbm90aGluZyBpZgotICAq IHRoZSBlbmdpbmUgZG9lcyBub3QgaGF2ZSBhIGZvY3VzLgotICAqLwotLXZvaWQgICAgICAgICAg ICBidXNfZW5naW5lX3Byb3h5X2ZvY3VzX291dCAgIChCdXNFbmdpbmVQcm94eSAgICAgKmVuZ2lu ZSk7Ci0rdm9pZCAgICAgICAgICAgIGJ1c19lbmdpbmVfcHJveHlfZm9jdXNfb3V0ICAgKEJ1c0Vu Z2luZVByb3h5ICAgICAqZW5naW5lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgKm9iamVjdF9wYXRoKTsKLSAKLSAvKioK LSAgKiBidXNfZW5naW5lX3Byb3h5X3Jlc2V0OgotZGlmZiAtLWdpdCBhL2J1cy9pYnVzaW1wbC5j IGIvYnVzL2lidXNpbXBsLmMKLWluZGV4IDQ5YTEzOGZlLi44YTQ0MzU0NSAxMDA2NDQKLS0tLSBh L2J1cy9pYnVzaW1wbC5jCi0rKysgYi9idXMvaWJ1c2ltcGwuYwotQEAgLTcyLDYgKzcyLDggQEAg c3RydWN0IF9CdXNJQnVzSW1wbCB7Ci0gICAgICAqIElCdXNFbmdpbmVEZXNjIG9iamVjdC4gKi8K LSAgICAgR0hhc2hUYWJsZSAqZW5naW5lX3RhYmxlOwotIAotKyAgICBHSGFzaFRhYmxlICplbmdp bmVfZm9jdXNfaWRfdGFibGU7Ci0rCi0gICAgIEJ1c0lucHV0Q29udGV4dCAqZm9jdXNlZF9jb250 ZXh0OwotICAgICBCdXNQYW5lbFByb3h5ICAgKnBhbmVsOwotICAgICBCdXNQYW5lbFByb3h5ICAg KmVtb2ppX2V4dGVuc2lvbjsKLUBAIC01OTYsNiArNTk4LDcgQEAgYnVzX2lidXNfaW1wbF9pbml0 IChCdXNJQnVzSW1wbCAqaWJ1cykKLSAgICAgaWJ1cy0+dXNlX2dsb2JhbF9lbmdpbmUgPSBUUlVF OwotICAgICBpYnVzLT5nbG9iYWxfZW5naW5lX25hbWUgPSBOVUxMOwotICAgICBpYnVzLT5nbG9i YWxfcHJldmlvdXNfZW5naW5lX25hbWUgPSBOVUxMOwotKyAgICBpYnVzLT5lbmdpbmVfZm9jdXNf aWRfdGFibGUgPSBnX2hhc2hfdGFibGVfbmV3IChnX3N0cl9oYXNoLCBnX3N0cl9lcXVhbCk7Ci0g Ci0gICAgIC8qIGZvY3VzIHRoZSBmYWtlX2NvbnRleHQsIGlmIHVzZV9nbG9iYWxfZW5naW5lIGlz IGVuYWJsZWQuICovCi0gICAgIGlmIChpYnVzLT51c2VfZ2xvYmFsX2VuZ2luZSkKLUBAIC0yMzg0 LDMgKzIzODcsMTMgQEAgYnVzX2lidXNfaW1wbF9nZXRfZm9jdXNlZF9pbnB1dF9jb250ZXh0IChC dXNJQnVzSW1wbCAqaWJ1cykKLSAKLSAgICAgcmV0dXJuIGlidXMtPmZvY3VzZWRfY29udGV4dDsK LSB9Ci0rCi0rR0hhc2hUYWJsZSAqCi0rYnVzX2lidXNfaW1wbF9nZXRfZW5naW5lX2ZvY3VzX2lk X3RhYmxlIChCdXNJQnVzSW1wbCAqaWJ1cykKLSt7Ci0rCi0rICAgIGdfYXNzZXJ0IChCVVNfSVNf SUJVU19JTVBMIChpYnVzKSk7Ci0rCi0rICAgIHJldHVybiBpYnVzLT5lbmdpbmVfZm9jdXNfaWRf dGFibGU7Ci0rfQotKwotZGlmZiAtLWdpdCBhL2J1cy9pYnVzaW1wbC5oIGIvYnVzL2lidXNpbXBs LmgKLWluZGV4IDBiYjE4ZGFmLi5jYmU2ODU2ZCAxMDA2NDQKLS0tLSBhL2J1cy9pYnVzaW1wbC5o Ci0rKysgYi9idXMvaWJ1c2ltcGwuaAotQEAgLTIsNyArMiw4IEBACi0gLyogdmltOnNldCBldCBz dHM9NDogKi8KLSAvKiBidXMgLSBUaGUgSW5wdXQgQnVzCi0gICogQ29weXJpZ2h0IChDKSAyMDA4 LTIwMTMgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0 IChDKSAyMDA4LTIwMTMgUmVkIEhhdCwgSW5jLgotKyAqIENvcHlyaWdodCAoQykgMjAyMiBUYWth byBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMp IDIwMDgtMjAyMiBSZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAgLTU4LDYg KzU5LDEzIEBAIEdfQkVHSU5fREVDTFMKLSB0eXBlZGVmIHN0cnVjdCBfQnVzSUJ1c0ltcGwgQnVz SUJ1c0ltcGw7Ci0gdHlwZWRlZiBzdHJ1Y3QgX0J1c0lCdXNJbXBsQ2xhc3MgQnVzSUJ1c0ltcGxD bGFzczsKLSAKLSt0eXBlZGVmIGVudW0KLSt7Ci0rICAgIEVOR0lORV9GT0NVU19DQVRFR09SWV9O T05FID0gMCwKLSsgICAgRU5HSU5FX0ZPQ1VTX0NBVEVHT1JZX05PX0lELAotKyAgICBFTkdJTkVf Rk9DVVNfQ0FURUdPUllfSEFTX0lECi0rfSBFbmdpbmVGb2N1c0NhdGVnb3J5OwotKwotIEdUeXBl ICAgICAgICAgICAgYnVzX2lidXNfaW1wbF9nZXRfdHlwZSAgICAgICAgICAgICAodm9pZCk7Ci0g Ci0gLyoqCi1AQCAtODEsNiArODksNyBAQCBnYm9vbGVhbiAgICAgICAgIGJ1c19pYnVzX2ltcGxf aXNfZW1iZWRfcHJlZWRpdF90ZXh0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChCdXNJQnVzSW1wbCAgICAgICAgKmlidXMpOwotIEJ1c0lucHV0 Q29udGV4dCAqYnVzX2lidXNfaW1wbF9nZXRfZm9jdXNlZF9pbnB1dF9jb250ZXh0Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdXNJQnVzSW1w bCAgICAgICAgKmlidXMpOwotLQotK0dIYXNoVGFibGUgICAgICAqYnVzX2lidXNfaW1wbF9nZXRf ZW5naW5lX2ZvY3VzX2lkX3RhYmxlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChCdXNJQnVzSW1wbCAgICAgICAgKmlidXMpOwotIEdfRU5EX0RF Q0xTCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvYnVzL2lucHV0Y29udGV4dC5jIGIvYnVzL2lucHV0 Y29udGV4dC5jCi1pbmRleCA4ZDg0ZmQwNS4uNzIwNDFlY2IgMTAwNjQ0Ci0tLS0gYS9idXMvaW5w dXRjb250ZXh0LmMKLSsrKyBiL2J1cy9pbnB1dGNvbnRleHQuYwotQEAgLTg0Niw3ICs4NDYsOCBA QCBfaWNfcHJvY2Vzc19rZXlfZXZlbnRfcmVwbHlfY2IgKEdPYmplY3QgICAgICAgICAgICAgICAq c291cmNlLAotIC8qKgotICAqIF9pY19wcm9jZXNzX2tleV9ldmVudDoKLSAgKgotLSAqIEltcGxl bWVudCB0aGUgIlByb2Nlc3NLZXlFdmVudCIgbWV0aG9kIGNhbGwgb2YgdGhlIG9yZy5mcmVlZGVz a3RvcC5JQnVzLklucHV0Q29udGV4dCBpbnRlcmZhY2UuCi0rICogSW1wbGVtZW50IHRoZSAiUHJv Y2Vzc0tleUV2ZW50IiBtZXRob2QgY2FsbCBvZiB0aGUKLSsgKiBvcmcuZnJlZWRlc2t0b3AuSUJ1 cy5JbnB1dENvbnRleHQgaW50ZXJmYWNlLgotICAqLwotIHN0YXRpYyB2b2lkCi0gX2ljX3Byb2Nl c3Nfa2V5X2V2ZW50ICAoQnVzSW5wdXRDb250ZXh0ICAgICAgICpjb250ZXh0LAotQEAgLTg2MCwx MSArODYxLDEzIEBAIF9pY19wcm9jZXNzX2tleV9ldmVudCAgKEJ1c0lucHV0Q29udGV4dCAgICAg ICAqY29udGV4dCwKLSAgICAgZ192YXJpYW50X2dldCAocGFyYW1ldGVycywgIih1dXUpIiwgJmtl eXZhbCwgJmtleWNvZGUsICZtb2RpZmllcnMpOwotICAgICBpZiAoR19VTkxJS0VMWSAoIWNvbnRl eHQtPmhhc19mb2N1cykpIHsKLSAgICAgICAgIC8qIHdvcmthcm91bmQ6IHNldCBmb2N1cyBpZiBj b250ZXh0IGRvZXMgbm90IGhhdmUgZm9jdXMgKi8KLS0gICAgICAgIEJ1c0lucHV0Q29udGV4dCAq Zm9jdXNlZF9jb250ZXh0ID0gYnVzX2lidXNfaW1wbF9nZXRfZm9jdXNlZF9pbnB1dF9jb250ZXh0 IChCVVNfREVGQVVMVF9JQlVTKTsKLSsgICAgICAgIEJ1c0lucHV0Q29udGV4dCAqZm9jdXNlZF9j b250ZXh0ID0KLSsgICAgICAgICAgICAgICAgYnVzX2lidXNfaW1wbF9nZXRfZm9jdXNlZF9pbnB1 dF9jb250ZXh0IChCVVNfREVGQVVMVF9JQlVTKTsKLSAgICAgICAgIGlmIChmb2N1c2VkX2NvbnRl eHQgPT0gTlVMTCB8fAotICAgICAgICAgICAgIGZvY3VzZWRfY29udGV4dC0+ZmFrZSA9PSBUUlVF IHx8Ci0gICAgICAgICAgICAgY29udGV4dC0+ZmFrZSA9PSBGQUxTRSkgewotLSAgICAgICAgICAg IC8qIGdyYWIgZm9jdXMsIGlmIGNvbnRleHQgaXMgYSByZWFsIElDIG9yIGN1cnJlbnQgZm9jdXNl ZCBJQyBpcyBmYWtlICovCi0rICAgICAgICAgICAgLyogZ3JhYiBmb2N1cywgaWYgY29udGV4dCBp cyBhIHJlYWwgSUMgb3IgY3VycmVudCBmb2N1c2VkIElDIGlzCi0rICAgICAgICAgICAgICogZmFr ZSAqLwotICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2ZvY3VzX2luIChjb250ZXh0KTsK LSAgICAgICAgIH0KLSAgICAgfQotQEAgLTkxNCw3ICs5MTcsOCBAQCBfaWNfcHJvY2Vzc19rZXlf ZXZlbnQgIChCdXNJbnB1dENvbnRleHQgICAgICAgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKTsKLSAgICAgfQotICAgICBlbHNlIHsK LS0gICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUgKGludm9jYXRp b24sIGdfdmFyaWFudF9uZXcgKCIoYikiLCBGQUxTRSkpOwotKyAgICAgICAgZ19kYnVzX21ldGhv ZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZSAoaW52b2NhdGlvbiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXcgKCIoYikiLCBGQUxT RSkpOwotICAgICB9Ci0gfQotIAotQEAgLTE0MzgsNyArMTQ0Miw5IEBAIGJ1c19pbnB1dF9jb250 ZXh0X2ZvY3VzX2luIChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQpCi0gICAgIGNvbnRleHQtPnBy ZXZfbW9kaWZpZXJzID0gMDsKLSAKLSAgICAgaWYgKGNvbnRleHQtPmVuZ2luZSkgewotLSAgICAg ICAgYnVzX2VuZ2luZV9wcm94eV9mb2N1c19pbiAoY29udGV4dC0+ZW5naW5lKTsKLSsgICAgICAg IGNvbnN0IGdjaGFyICpwYXRoID0KLSsgICAgICAgICAgICAgICAgaWJ1c19zZXJ2aWNlX2dldF9v YmplY3RfcGF0aCAoKElCdXNTZXJ2aWNlICopY29udGV4dCk7Ci0rICAgICAgICBidXNfZW5naW5l X3Byb3h5X2ZvY3VzX2luIChjb250ZXh0LT5lbmdpbmUsIHBhdGgsIGNvbnRleHQtPmNsaWVudCk7 Ci0gICAgICAgICBidXNfZW5naW5lX3Byb3h5X2VuYWJsZSAoY29udGV4dC0+ZW5naW5lKTsKLSAg ICAgICAgIGJ1c19lbmdpbmVfcHJveHlfc2V0X2NhcGFiaWxpdGllcyAoY29udGV4dC0+ZW5naW5l LCBjb250ZXh0LT5jYXBhYmlsaXRpZXMpOwotICAgICAgICAgYnVzX2VuZ2luZV9wcm94eV9zZXRf Y3Vyc29yX2xvY2F0aW9uIChjb250ZXh0LT5lbmdpbmUsIGNvbnRleHQtPngsIGNvbnRleHQtPnks IGNvbnRleHQtPncsIGNvbnRleHQtPmgpOwotQEAgLTE1MzgsNyArMTU0NCw5IEBAIGJ1c19pbnB1 dF9jb250ZXh0X2ZvY3VzX291dCAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0KQotICAgICBidXNf aW5wdXRfY29udGV4dF9yZWdpc3Rlcl9wcm9wZXJ0aWVzIChjb250ZXh0LCBwcm9wc19lbXB0eSk7 Ci0gCi0gICAgIGlmIChjb250ZXh0LT5lbmdpbmUpIHsKLS0gICAgICAgIGJ1c19lbmdpbmVfcHJv eHlfZm9jdXNfb3V0IChjb250ZXh0LT5lbmdpbmUpOwotKyAgICAgICAgY29uc3QgZ2NoYXIgKnBh dGggPQotKyAgICAgICAgICAgIGlidXNfc2VydmljZV9nZXRfb2JqZWN0X3BhdGggKChJQnVzU2Vy dmljZSAqKWNvbnRleHQpOwotKyAgICAgICAgYnVzX2VuZ2luZV9wcm94eV9mb2N1c19vdXQgKGNv bnRleHQtPmVuZ2luZSwgcGF0aCk7Ci0gICAgIH0KLSAKLSAgICAgY29udGV4dC0+aGFzX2ZvY3Vz ID0gRkFMU0U7Ci1AQCAtMjM3NiwxMSArMjM4NCwxOSBAQCBidXNfaW5wdXRfY29udGV4dF9lbmFi bGUgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCkKLSAgICAgaWYgKGNvbnRleHQtPmVuZ2luZSA9 PSBOVUxMKQotICAgICAgICAgcmV0dXJuOwotIAotLSAgICBidXNfZW5naW5lX3Byb3h5X2ZvY3Vz X2luIChjb250ZXh0LT5lbmdpbmUpOwotLSAgICBidXNfZW5naW5lX3Byb3h5X2VuYWJsZSAoY29u dGV4dC0+ZW5naW5lKTsKLS0gICAgYnVzX2VuZ2luZV9wcm94eV9zZXRfY2FwYWJpbGl0aWVzIChj b250ZXh0LT5lbmdpbmUsIGNvbnRleHQtPmNhcGFiaWxpdGllcyk7Ci0tICAgIGJ1c19lbmdpbmVf cHJveHlfc2V0X2N1cnNvcl9sb2NhdGlvbiAoY29udGV4dC0+ZW5naW5lLCBjb250ZXh0LT54LCBj b250ZXh0LT55LCBjb250ZXh0LT53LCBjb250ZXh0LT5oKTsKLS0gICAgYnVzX2VuZ2luZV9wcm94 eV9zZXRfY29udGVudF90eXBlIChjb250ZXh0LT5lbmdpbmUsIGNvbnRleHQtPnB1cnBvc2UsIGNv bnRleHQtPmhpbnRzKTsKLSsgICAgewotKyAgICAgICAgY29uc3QgZ2NoYXIgKnBhdGggPQotKyAg ICAgICAgICAgICAgICBpYnVzX3NlcnZpY2VfZ2V0X29iamVjdF9wYXRoICgoSUJ1c1NlcnZpY2Ug Kiljb250ZXh0KTsKLSsgICAgICAgIGJ1c19lbmdpbmVfcHJveHlfZm9jdXNfaW4gKGNvbnRleHQt PmVuZ2luZSwgcGF0aCwgY29udGV4dC0+Y2xpZW50KTsKLSsgICAgICAgIGJ1c19lbmdpbmVfcHJv eHlfZW5hYmxlIChjb250ZXh0LT5lbmdpbmUpOwotKyAgICAgICAgYnVzX2VuZ2luZV9wcm94eV9z ZXRfY2FwYWJpbGl0aWVzIChjb250ZXh0LT5lbmdpbmUsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmNhcGFiaWxpdGllcyk7Ci0rICAgICAgICBi dXNfZW5naW5lX3Byb3h5X3NldF9jdXJzb3JfbG9jYXRpb24gKGNvbnRleHQtPmVuZ2luZSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+eCwg Y29udGV4dC0+eSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGV4dC0+dywgY29udGV4dC0+aCk7Ci0rICAgICAgICBidXNfZW5naW5lX3Byb3h5X3Nl dF9jb250ZW50X3R5cGUgKGNvbnRleHQtPmVuZ2luZSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cHVycG9zZSwgY29udGV4dC0+aGludHMpOwot KyAgICB9Ci0gfQotIAotIHZvaWQKLUBAIC0yMzk3LDcgKzI0MTMsOSBAQCBidXNfaW5wdXRfY29u dGV4dF9kaXNhYmxlIChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQpCi0gICAgIGJ1c19pbnB1dF9j b250ZXh0X3JlZ2lzdGVyX3Byb3BlcnRpZXMgKGNvbnRleHQsIHByb3BzX2VtcHR5KTsKLSAKLSAg ICAgaWYgKGNvbnRleHQtPmVuZ2luZSkgewotLSAgICAgICAgYnVzX2VuZ2luZV9wcm94eV9mb2N1 c19vdXQgKGNvbnRleHQtPmVuZ2luZSk7Ci0rICAgICAgICBjb25zdCBnY2hhciAqcGF0aCA9Ci0r ICAgICAgICAgICAgaWJ1c19zZXJ2aWNlX2dldF9vYmplY3RfcGF0aCAoKElCdXNTZXJ2aWNlICop Y29udGV4dCk7Ci0rICAgICAgICBidXNfZW5naW5lX3Byb3h5X2ZvY3VzX291dCAoY29udGV4dC0+ ZW5naW5lLCBwYXRoKTsKLSAgICAgICAgIGJ1c19lbmdpbmVfcHJveHlfZGlzYWJsZSAoY29udGV4 dC0+ZW5naW5lKTsKLSAgICAgfQotIH0KLUBAIC0yNDQ1LDYgKzI0NjMsOCBAQCBidXNfaW5wdXRf Y29udGV4dF91bnNldF9lbmdpbmUgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCkKLSAKLSAgICAg aWYgKGNvbnRleHQtPmVuZ2luZSkgewotICAgICAgICAgZ2ludCBpOwotKyAgICAgICAgY29uc3Qg Z2NoYXIgKnBhdGggPQotKyAgICAgICAgICAgIGlidXNfc2VydmljZV9nZXRfb2JqZWN0X3BhdGgg KChJQnVzU2VydmljZSAqKWNvbnRleHQpOwotICAgICAgICAgLyogdW5pbnN0YWxsIHNpZ25hbCBo YW5kbGVycyBmb3IgdGhlIGVuZ2luZS4gKi8KLSAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBHX05f RUxFTUVOVFMoZW5naW5lX3NpZ25hbHMpOyBpKyspIHsKLSAgICAgICAgICAgICBnX3NpZ25hbF9o YW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMgKGNvbnRleHQtPmVuZ2luZSwKLUBAIC0yNDUzLDcg KzI0NzMsNyBAQCBidXNfaW5wdXRfY29udGV4dF91bnNldF9lbmdpbmUgKEJ1c0lucHV0Q29udGV4 dCAqY29udGV4dCkKLSAgICAgICAgIC8qIGZvY3VzIG91dCBlbmdpbmUgc28gdGhhdCB0aGUgbmV4 dCBjYWxsIG9mCi0gICAgICAgICAgICBidXNfZW5naW5lX3Byb3h5X2ZvY3VzX2luKCkgd2lsbCB0 YWtlIGVmZmVjdCBhbmQgdHJpZ2dlcgotICAgICAgICAgICAgUmVnaXN0ZXJQcm9wZXJ0aWVzLiAq LwotLSAgICAgICAgYnVzX2VuZ2luZV9wcm94eV9mb2N1c19vdXQgKGNvbnRleHQtPmVuZ2luZSk7 Ci0rICAgICAgICBidXNfZW5naW5lX3Byb3h5X2ZvY3VzX291dCAoY29udGV4dC0+ZW5naW5lLCBw YXRoKTsKLSAgICAgICAgIGdfb2JqZWN0X3VucmVmIChjb250ZXh0LT5lbmdpbmUpOwotICAgICAg ICAgY29udGV4dC0+ZW5naW5lID0gTlVMTDsKLSAgICAgfQotQEAgLTI0ODgsNyArMjUwOCw5IEBA IGJ1c19pbnB1dF9jb250ZXh0X3NldF9lbmdpbmUgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0KTsKLSAgICAgICAgIH0KLSAg ICAgICAgIGlmIChjb250ZXh0LT5oYXNfZm9jdXMpIHsKLS0gICAgICAgICAgICBidXNfZW5naW5l X3Byb3h5X2ZvY3VzX2luIChjb250ZXh0LT5lbmdpbmUpOwotKyAgICAgICAgICAgIGNvbnN0IGdj aGFyICpwYXRoID0KLSsgICAgICAgICAgICAgICAgICAgIGlidXNfc2VydmljZV9nZXRfb2JqZWN0 X3BhdGggKChJQnVzU2VydmljZSAqKWNvbnRleHQpOwotKyAgICAgICAgICAgIGJ1c19lbmdpbmVf cHJveHlfZm9jdXNfaW4gKGNvbnRleHQtPmVuZ2luZSwgcGF0aCwgY29udGV4dC0+Y2xpZW50KTsK LSAgICAgICAgICAgICBidXNfZW5naW5lX3Byb3h5X2VuYWJsZSAoY29udGV4dC0+ZW5naW5lKTsK LSAgICAgICAgICAgICBidXNfZW5naW5lX3Byb3h5X3NldF9jYXBhYmlsaXRpZXMgKGNvbnRleHQt PmVuZ2luZSwgY29udGV4dC0+Y2FwYWJpbGl0aWVzKTsKLSAgICAgICAgICAgICBidXNfZW5naW5l X3Byb3h5X3NldF9jdXJzb3JfbG9jYXRpb24gKGNvbnRleHQtPmVuZ2luZSwgY29udGV4dC0+eCwg Y29udGV4dC0+eSwgY29udGV4dC0+dywgY29udGV4dC0+aCk7Ci1kaWZmIC0tZ2l0IGEvc3JjL2li dXNlbmdpbmUuYyBiL3NyYy9pYnVzZW5naW5lLmMKLWluZGV4IDdlODQ0ODM4Li43Yzc5NzEwMyAx MDA2NDQKLS0tLSBhL3NyYy9pYnVzZW5naW5lLmMKLSsrKyBiL3NyYy9pYnVzZW5naW5lLmMKLUBA IC0yLDcgKzIsNyBAQAotIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogaWJ1cyAtIFRoZSBJ bnB1dCBCdXMKLSAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMyBQZW5nIEh1YW5nIDxzaGF3bi5w Lmh1YW5nQGdtYWlsLmNvbT4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBUYWthbyBGdWpp d2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTgt MjAyMiBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSAgKiBDb3B5 cmlnaHQgKEMpIDIwMDgtMjAyMSBSZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi1AQCAtMzcs NyArMzcsOSBAQAotIGVudW0gewotICAgICBQUk9DRVNTX0tFWV9FVkVOVCwKLSAgICAgRk9DVVNf SU4sCi0rICAgIEZPQ1VTX0lOX0lELAotICAgICBGT0NVU19PVVQsCi0rICAgIEZPQ1VTX09VVF9J RCwKLSAgICAgUkVTRVQsCi0gICAgIEVOQUJMRSwKLSAgICAgRElTQUJMRSwKLUBAIC02MSw2ICs2 Myw3IEBAIGVudW0gewotIGVudW0gewotICAgICBQUk9QXzAsCi0gICAgIFBST1BfRU5HSU5FX05B TUUsCi0rICAgIFBST1BfSEFTX0ZPQ1VTX0lELAotIH07Ci0gCi0gCi1AQCAtODIsNiArODUsNyBA QCBzdHJ1Y3QgX0lCdXNFbmdpbmVQcml2YXRlIHsKLSAgICAgR0hhc2hUYWJsZSAgICAgICAgICAg ICpleHRlbnNpb25fa2V5YmluZGluZ3M7Ci0gICAgIGdib29sZWFuICAgICAgICAgICAgICAgZW5h YmxlX2V4dGVuc2lvbjsKLSAgICAgZ2NoYXIgICAgICAgICAgICAgICAgICpjdXJyZW50X2V4dGVu c2lvbl9uYW1lOwotKyAgICBnYm9vbGVhbiAgICAgICAgICAgICAgIGhhc19mb2N1c19pZDsKLSB9 OwotIAotIAotQEAgLTEwNCw3ICsxMDgsOCBAQCBzdGF0aWMgdm9pZCAgICAgIGlidXNfZW5naW5l X3NlcnZpY2VfbWV0aG9kX2NhbGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdEQnVzQ29ubmVjdGlvbiAgICAqY29ubmVjdGlvbiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAq c2VuZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgZ2NoYXIgICAgICAgICpvYmplY3RfcGF0aCwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAqaW50ZXJmYWNlX25h bWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBnY2hhcgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqaW50ZXJmYWNlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgKm1ldGhvZF9uYW1l LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1Zhcmlh bnQgICAgICAgICAgICpwYXJhbWV0ZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR0RCdXNNZXRob2RJbnZvY2F0aW9uCi1AQCAtMTMyLDcgKzEzNywx MiBAQCBzdGF0aWMgZ2Jvb2xlYW4gIGlidXNfZW5naW5lX3Byb2Nlc3Nfa2V5X2V2ZW50Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAg ICAgICAga2V5Y29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3VpbnQgICAgICAgICAgICAgICBzdGF0ZSk7Ci0gc3RhdGljIHZvaWQgICAgICBpYnVz X2VuZ2luZV9mb2N1c19pbiAgICAgICAgKElCdXNFbmdpbmUgICAgICAgICAqZW5naW5lKTsKLStz dGF0aWMgdm9pZCAgICAgIGlidXNfZW5naW5lX2ZvY3VzX2luX2lkICAgICAoSUJ1c0VuZ2luZSAg ICAgICAgICplbmdpbmUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAqb2JqZWN0X3BhdGgsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAqY2xpZW50 KTsKLSBzdGF0aWMgdm9pZCAgICAgIGlidXNfZW5naW5lX2ZvY3VzX291dCAgICAgICAoSUJ1c0Vu Z2luZSAgICAgICAgICplbmdpbmUpOwotK3N0YXRpYyB2b2lkICAgICAgaWJ1c19lbmdpbmVfZm9j dXNfb3V0X2lkICAgIChJQnVzRW5naW5lICAgICAgICAgKmVuZ2luZSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICpvYmpl Y3RfcGF0aCk7Ci0gc3RhdGljIHZvaWQgICAgICBpYnVzX2VuZ2luZV9yZXNldCAgICAgICAgICAg KElCdXNFbmdpbmUgICAgICAgICAqZW5naW5lKTsKLSBzdGF0aWMgdm9pZCAgICAgIGlidXNfZW5n aW5lX2VuYWJsZSAgICAgICAgICAoSUJ1c0VuZ2luZSAgICAgICAgICplbmdpbmUpOwotIHN0YXRp YyB2b2lkICAgICAgaWJ1c19lbmdpbmVfZGlzYWJsZSAgICAgICAgIChJQnVzRW5naW5lICAgICAg ICAgKmVuZ2luZSk7Ci1AQCAtMTcwLDcgKzE4MCw4IEBAIHN0YXRpYyB2b2lkICAgICAgaWJ1c19l bmdpbmVfc2V0X3N1cnJvdW5kaW5nX3RleHQKLSBzdGF0aWMgdm9pZCAgICAgIGlidXNfZW5naW5l X3Byb2Nlc3NfaGFuZF93cml0aW5nX2V2ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKElCdXNFbmdpbmUgICAgICAgICAqZW5naW5lLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnZG91YmxlICAgICAg KmNvb3JkaW5hdGVzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBndWludCAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzX2xlbik7Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0 ZXNfbGVuKTsKLSBzdGF0aWMgdm9pZCAgICAgIGlidXNfZW5naW5lX2NhbmNlbF9oYW5kX3dyaXRp bmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUJ1c0Vu Z2luZSAgICAgICAgICplbmdpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgbl9zdHJva2VzKTsKLUBAIC0yMzAsNyAr MjQxLDE1IEBAIHN0YXRpYyBjb25zdCBnY2hhciBpbnRyb3NwZWN0aW9uX3htbFtdID0KLSAgICAg IiAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgIHR5cGU9J3UnIG5hbWU9J3N0YXRlJyAvPiIKLSAg ICAgIiAgICA8L21ldGhvZD4iCi0gICAgICIgICAgPG1ldGhvZCBuYW1lPSdGb2N1c0luJyAvPiIK LSsgICAgIiAgICA8bWV0aG9kIG5hbWU9J0ZvY3VzSW5JZCc+IgotKyAgICAiICAgICAgPGFyZyBk aXJlY3Rpb249J2luJyAgdHlwZT0ncycgbmFtZT0nb2JqZWN0X3BhdGgnIC8+IgotKyAgICAiICAg ICAgPGFyZyBkaXJlY3Rpb249J2luJyAgdHlwZT0ncycgbmFtZT0nY2xpZW50JyAvPiIKLSsgICAg IiAgICA8L21ldGhvZD4iCi0rICAgICIgICAgPG1ldGhvZCBuYW1lPSdGb2N1c0luJyAvPiIKLSAg ICAgIiAgICA8bWV0aG9kIG5hbWU9J0ZvY3VzT3V0JyAvPiIKLSsgICAgIiAgICA8bWV0aG9kIG5h bWU9J0ZvY3VzT3V0SWQnPiIKLSsgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgIHR5cGU9 J3MnIG5hbWU9J29iamVjdF9wYXRoJyAvPiIKLSsgICAgIiAgICA8L21ldGhvZD4iCi0gICAgICIg ICAgPG1ldGhvZCBuYW1lPSdSZXNldCcgLz4iCi0gICAgICIgICAgPG1ldGhvZCBuYW1lPSdFbmFi bGUnIC8+IgotICAgICAiICAgIDxtZXRob2QgbmFtZT0nRGlzYWJsZScgLz4iCi1AQCAtMjgzLDYg KzMwMiw3IEBAIHN0YXRpYyBjb25zdCBnY2hhciBpbnRyb3NwZWN0aW9uX3htbFtdID0KLSAgICAg IiAgICA8L3NpZ25hbD4iCi0gICAgIC8qIEZJWE1FIHByb3BlcnRpZXMgKi8KLSAgICAgIiAgICA8 cHJvcGVydHkgbmFtZT0nQ29udGVudFR5cGUnIHR5cGU9Jyh1dSknIGFjY2Vzcz0nd3JpdGUnIC8+ IgotKyAgICAiICAgIDxwcm9wZXJ0eSBuYW1lPSdGb2N1c0lkJyB0eXBlPScoYiknIGFjY2Vzcz0n cmVhZCcgLz4iCi0gICAgICIgIDwvaW50ZXJmYWNlPiIKLSAgICAgIjwvbm9kZT4iOwotIAotQEAg LTMyNCw3ICszNDQsOSBAQCBpYnVzX2VuZ2luZV9jbGFzc19pbml0IChJQnVzRW5naW5lQ2xhc3Mg KmNsYXNzKQotIAotICAgICBjbGFzcy0+cHJvY2Vzc19rZXlfZXZlbnQgPSBpYnVzX2VuZ2luZV9w cm9jZXNzX2tleV9ldmVudDsKLSAgICAgY2xhc3MtPmZvY3VzX2luICAgICA9IGlidXNfZW5naW5l X2ZvY3VzX2luOwotKyAgICBjbGFzcy0+Zm9jdXNfaW5faWQgID0gaWJ1c19lbmdpbmVfZm9jdXNf aW5faWQ7Ci0gICAgIGNsYXNzLT5mb2N1c19vdXQgICAgPSBpYnVzX2VuZ2luZV9mb2N1c19vdXQ7 Ci0rICAgIGNsYXNzLT5mb2N1c19vdXRfaWQgPSBpYnVzX2VuZ2luZV9mb2N1c19vdXRfaWQ7Ci0g ICAgIGNsYXNzLT5yZXNldCAgICAgICAgPSBpYnVzX2VuZ2luZV9yZXNldDsKLSAgICAgY2xhc3Mt PmVuYWJsZSAgICAgICA9IGlidXNfZW5naW5lX2VuYWJsZTsKLSAgICAgY2xhc3MtPmRpc2FibGUg ICAgICA9IGlidXNfZW5naW5lX2Rpc2FibGU7Ci1AQCAtMzYwLDYgKzM4MiwxNSBAQCBpYnVzX2Vu Z2luZV9jbGFzc19pbml0IChJQnVzRW5naW5lQ2xhc3MgKmNsYXNzKQotICAgICAgICAgICAgICAg ICAgICAgICAgIEdfUEFSQU1fQ09OU1RSVUNUX09OTFkgfAotICAgICAgICAgICAgICAgICAgICAg ICAgIEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLSAKLSsgICAgZ19vYmplY3RfY2xhc3NfaW5z dGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKLSsgICAgICAgICAgICAgICAgICAgIFBST1Bf SEFTX0ZPQ1VTX0lELAotKyAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4g KCJoYXMtZm9jdXMtaWQiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJoYXMgZm9jdXMgaWQi LAotKyAgICAgICAgICAgICAgICAgICAgICAgICJIYXMgZm9jdXMgSUQiLAotKyAgICAgICAgICAg ICAgICAgICAgICAgIEZBTFNFLAotKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVB RFdSSVRFIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZ KSk7Ci0rCi0gICAgIC8qIGluc3RhbGwgc2lnbmFscyAqLwotICAgICAvKioKLSAgICAgICogSUJ1 c0VuZ2luZTo6cHJvY2Vzcy1rZXktZXZlbnQ6Ci1AQCAtMzc4LDcgKzQwOSw4IEBAIGlidXNfZW5n aW5lX2NsYXNzX2luaXQgKElCdXNFbmdpbmVDbGFzcyAqY2xhc3MpCi0gICAgICAqIFJldHVybnM6 ICVUUlVFIGZvciBzdWNjZXNzZnVsbHkgcHJvY2VzcyB0aGUga2V5OyAlRkFMU0Ugb3RoZXJ3aXNl LgotICAgICAgKiBTZWUgYWxzbzogIGlidXNfaW5wdXRfY29udGV4dF9wcm9jZXNzX2tleV9ldmVu dCgpLgotICAgICAgKgotLSAgICAgKiA8bm90ZT48cGFyYT5Bcmd1bWVudCBAdXNlcl9kYXRhIGlz IGlnbm9yZWQgaW4gdGhpcyBmdW5jdGlvbi48L3BhcmE+PC9ub3RlPgotKyAgICAgKiA8bm90ZT48 cGFyYT5Bcmd1bWVudCBAdXNlcl9kYXRhIGlzIGlnbm9yZWQgaW4gdGhpcyBmdW5jdGlvbi48L3Bh cmE+Ci0rICAgICAqIDwvbm90ZT4KLSAgICAgICovCi0gICAgIGVuZ2luZV9zaWduYWxzW1BST0NF U1NfS0VZX0VWRU5UXSA9Ci0gICAgICAgICBnX3NpZ25hbF9uZXcgKElfKCJwcm9jZXNzLWtleS1l dmVudCIpLAotQEAgLTQwMiw3ICs0MzQsOCBAQCBpYnVzX2VuZ2luZV9jbGFzc19pbml0IChJQnVz RW5naW5lQ2xhc3MgKmNsYXNzKQotICAgICAgKiBpbiBleHRlbmRlZCBjbGFzcyB0byByZWNlaXZl IHRoaXMgc2lnbmFsLgotICAgICAgKgotICAgICAgKiBTZWUgYWxzbzogaWJ1c19pbnB1dF9jb250 ZXh0X2ZvY3VzX2luKCkKLS0gICAgICogPG5vdGU+PHBhcmE+QXJndW1lbnQgQHVzZXJfZGF0YSBp cyBpZ25vcmVkIGluIHRoaXMgZnVuY3Rpb24uPC9wYXJhPjwvbm90ZT4KLSsgICAgICogPG5vdGU+ PHBhcmE+QXJndW1lbnQgQHVzZXJfZGF0YSBpcyBpZ25vcmVkIGluIHRoaXMgZnVuY3Rpb24uPC9w YXJhPgotKyAgICAgKiA8L25vdGU+Ci0gICAgICAqLwotICAgICBlbmdpbmVfc2lnbmFsc1tGT0NV U19JTl0gPQotICAgICAgICAgZ19zaWduYWxfbmV3IChJXygiZm9jdXMtaW4iKSwKLUBAIC00MTQs NiArNDQ3LDU4IEBAIGlidXNfZW5naW5lX2NsYXNzX2luaXQgKElCdXNFbmdpbmVDbGFzcyAqY2xh c3MpCi0gICAgICAgICAgICAgR19UWVBFX05PTkUsCi0gICAgICAgICAgICAgMCk7Ci0gCi0rICAg IC8qKgotKyAgICAgKiBJQnVzRW5naW5lOjpmb2N1cy1pbi1pZDoKLSsgICAgICogQGVuZ2luZTog QW4gSUJ1c0VuZ2luZS4KLSsgICAgICogQG9iamVjdF9wYXRoOiBBbiBvYmplY3QgcGF0aC4KLSsg ICAgICogQGNsaWVudDogQW4gY2xpZW50IG5hbWUuCi0rICAgICAqCi0rICAgICAqIEVtaXR0ZWQg d2hlbiB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIGdldCB0aGUgZm9jdXMuCi0rICAgICAqIEltcGxl bWVudCB0aGUgbWVtYmVyIGZ1bmN0aW9uIElCdXNFbmdpbmVDbGFzczo6Zm9jdXNfaW4KLSsgICAg ICogaW4gZXh0ZW5kZWQgY2xhc3MgdG8gcmVjZWl2ZSB0aGlzIHNpZ25hbC4KLSsgICAgICogQG9i amVjdF9wYXRoIGlzIGEgdW5pcXVlIGlkIGJ5IGlucHV0IGNvbnRleHQuCi0rICAgICAqIEBjbGll bnQgaW5kaWNhdGVzIGEgY2xpZW50IHR5cGU6Ci0rICAgICAqICdmYWtlJzogICAgZm9jdXMgaXMg b24gZGVza3RvcCBiYWNrZ3JvdW5kIG9yIG90aGVyIHByb2dyYW1zIHdoZXJlIG5vCi0rICAgICAq ICAgICAgICAgICAgaW5wdXQgaXMgcG9zc2libGUKLSsgICAgICogJ3hpbSc6ICAgICBvbGQgWDEx IHByb2dyYW1zIGxpa2UgeHRlcm0sIGVtYWNzLCAuLi4KLSsgICAgICogICAgICAgICAgICBHVEsz IHByb2dyYW1zIGluIGEgR25vbWUgWG9yZyBzZXNzaW9uIHdoZW4gR1RLX0lNX01PRFVMRQotKyAg ICAgKiAgICAgICAgICAgIGlzIHVuc2V0IGFsc28gdXNlIHhpbQotKyAgICAgKiAnZ3RrLWltOiZs dDtjbGllbnQtbmFtZSZndDsnOiAgR3RrMiBpbnB1dCBtb2R1bGUgaXMgdXNlZAotKyAgICAgKiAn Z3RrMy1pbTombHQ7Y2xpZW50LW5hbWUmZ3Q7JzogR3RrMyBpbnB1dCBtb2R1bGUgaXMgdXNlZAot KyAgICAgKiAnZ3RrNC1pbTombHQ7Y2xpZW50LW5hbWUmZ3Q7JzogR3RrNCBpbnB1dCBtb2R1bGUg aXMgdXNlZAotKyAgICAgKiAgICAgICAgICAgIEluIGNhc2Ugb2YgdGhlIEd0ayBpbnB1dCBtb2R1 bGVzLCB0aGUgbmFtZSBvZiB0aGUKLSsgICAgICogICAgICAgICAgICBjbGllbnQgaXMgYWxzbyBz aG93biBhZnRlciB0aGUg4oCcOuKAnSwgZm9yIGV4YW1wbGUKLSsgICAgICogICAgICAgICAgICBs aWtlICdndGszLWltOmZpcmVmb3gnLCAnZ3RrNC1pbTpnbm9tZS10ZXh0LWVkaXRvcicsIOKApgot KyAgICAgKiAnZ25vbWUtc2hlbGwnOiBFbnRyaWVzIGhhbmRsZWQgYnkgZ25vbWUtc2hlbGwKLSsg ICAgICogICAgICAgICAgICAgICAgKGxpa2UgdGhlIGNvbW1hbmQgbGluZSBkaWFsb2cgb3BlbmVk IHdpdGggQWx0K0YyCi0rICAgICAqICAgICAgICAgICAgICAgIG9yIHRoZSBzZWFyY2ggZmllbGQg d2hlbiBwcmVzc2luZyB0aGUgU3VwZXIga2V5LikKLSsgICAgICogICAgICAgICAgICAgICAgV2hl biBHVEtfSU1fTU9EVUxFIGlzIHVuc2V0IGluIGEgR25vbWUgV2F5bGFuZCBzZXNzaW9uCi0rICAg ICAqICAgICAgICAgICAgICAgIGFsbCBwcm9ncmFtcyB3aGljaCB3b3VsZCBzaG93ICdndGszLWlt JyBvciAnZ3RrNC1pbScKLSsgICAgICogICAgICAgICAgICAgICAgd2l0aCBHVEtfSU1fTU9EVUxF PWlidXMgdGhlbiBzaG93ICdnbm9tZS1zaGVsbCcKLSsgICAgICogICAgICAgICAgICAgICAgaW5z dGVhZC4KLSsgICAgICogJ1F0JzogICAgICBRdDQgcHJvZ3JhbXMgbGlrZSBrZWVwYXNzeC0yLjAu MyDigKYKLSsgICAgICogJ1FJQnVzSW5wdXRDb250ZXh0JzogUXQ1IHByb2dyYW1zIGxpa2Uga2Vl cGFzc3hjLTIuNy4xLCBhbmtpLTIuMS4xNQotKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICB0 ZWxlZ3JhbS1kZXNrdG9wLTMuNy4zLCAKLSsgICAgICoKLSsgICAgICogWW91IG5lZWQgdG8gc2V0 ICNJQnVzRW5naW5lOjpoYXMtZm9jdXMtaWQgcHJvcGVydHkgdG8gJVRSVUUgd2hlbiB5b3UKLSsg ICAgICogY29uc3RydWN0IGFuICNJQnVzRW5naW5lIHRvIHVzZSB0aGlzIGNsYXNzIG1ldGhvZC4K LSsgICAgICoKLSsgICAgICogU2VlIGFsc286IGlidXNfaW5wdXRfY29udGV4dF9mb2N1c19pbigp Ci0rICAgICAqIDxub3RlPjxwYXJhPkFyZ3VtZW50IEB1c2VyX2RhdGEgaXMgaWdub3JlZCBpbiB0 aGlzIGZ1bmN0aW9uLjwvcGFyYT4KLSsgICAgICogPC9ub3RlPgotKyAgICAgKi8KLSsgICAgZW5n aW5lX3NpZ25hbHNbRk9DVVNfSU5fSURdID0KLSsgICAgICAgIGdfc2lnbmFsX25ldyAoSV8oImZv Y3VzLWluLWlkIiksCi0rICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1MgKGdvYmplY3RfY2xh c3MpLAotKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAotKyAgICAgICAgICAgIEdfU1RS VUNUX09GRlNFVCAoSUJ1c0VuZ2luZUNsYXNzLCBmb2N1c19pbl9pZCksCi0rICAgICAgICAgICAg TlVMTCwgTlVMTCwKLSsgICAgICAgICAgICBfaWJ1c19tYXJzaGFsX1ZPSURfX1NUUklOR19TVFJJ TkcsCi0rICAgICAgICAgICAgR19UWVBFX05PTkUsCi0rICAgICAgICAgICAgMiwKLSsgICAgICAg ICAgICBHX1RZUEVfU1RSSU5HLAotKyAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcpOwotKwotICAg ICAvKioKLSAgICAgICogSUJ1c0VuZ2luZTo6Zm9jdXMtb3V0OgotICAgICAgKiBAZW5naW5lOiBB biBJQnVzRW5naW5lLgotQEAgLTQyMyw3ICs1MDgsOCBAQCBpYnVzX2VuZ2luZV9jbGFzc19pbml0 IChJQnVzRW5naW5lQ2xhc3MgKmNsYXNzKQotICAgICAgKiBpbiBleHRlbmRlZCBjbGFzcyB0byBy ZWNlaXZlIHRoaXMgc2lnbmFsLgotICAgICAgKgotICAgICAgKiBTZWUgYWxzbzogaWJ1c19pbnB1 dF9jb250ZXh0X2ZvY3VzX291dCgpCi0tICAgICAqIDxub3RlPjxwYXJhPkFyZ3VtZW50IEB1c2Vy X2RhdGEgaXMgaWdub3JlZCBpbiB0aGlzIGZ1bmN0aW9uLjwvcGFyYT48L25vdGU+Ci0rICAgICAq IDxub3RlPjxwYXJhPkFyZ3VtZW50IEB1c2VyX2RhdGEgaXMgaWdub3JlZCBpbiB0aGlzIGZ1bmN0 aW9uLjwvcGFyYT4KLSsgICAgICogPC9ub3RlPgotICAgICAgKi8KLSAgICAgZW5naW5lX3NpZ25h bHNbRk9DVVNfT1VUXSA9Ci0gICAgICAgICBnX3NpZ25hbF9uZXcgKElfKCJmb2N1cy1vdXQiKSwK LUBAIC00MzUsNiArNTIxLDMzIEBAIGlidXNfZW5naW5lX2NsYXNzX2luaXQgKElCdXNFbmdpbmVD bGFzcyAqY2xhc3MpCi0gICAgICAgICAgICAgR19UWVBFX05PTkUsCi0gICAgICAgICAgICAgMCk7 Ci0gCi0rICAgIC8qKgotKyAgICAgKiBJQnVzRW5naW5lOjpmb2N1cy1vdXQtaWQ6Ci0rICAgICAq IEBlbmdpbmU6IEFuIElCdXNFbmdpbmUuCi0rICAgICAqIEBvYmplY3RfcGF0aDogQW4gb2JqZWN0 IHBhdGguCi0rICAgICAqCi0rICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgY2xpZW50IGFwcGxpY2F0 aW9uICBsb3N0IHRoZSBmb2N1cy4KLSsgICAgICogSW1wbGVtZW50IHRoZSBtZW1iZXIgZnVuY3Rp b24gSUJ1c0VuZ2luZUNsYXNzOjpmb2N1c19vdXQKLSsgICAgICogaW4gZXh0ZW5kZWQgY2xhc3Mg dG8gcmVjZWl2ZSB0aGlzIHNpZ25hbC4KLSsgICAgICogQG9iamVjdF9wYXRoIGlzIGEgdW5pcXVl IGlkIGJ5IGlucHV0IGNvbnRleHQuCi0rICAgICAqIFlvdSBuZWVkIHRvIHNldCAjSUJ1c0VuZ2lu ZTo6aGFzLWZvY3VzLWlkIHByb3BlcnR5IHRvICVUUlVFIHdoZW4geW91Ci0rICAgICAqIGNvbnN0 cnVjdCBhbiAjSUJ1c0VuZ2luZSB0byB1c2UgdGhpcyBjbGFzcyBtZXRob2QuCi0rICAgICAqCi0r ICAgICAqIFNlZSBhbHNvOiBpYnVzX2lucHV0X2NvbnRleHRfZm9jdXNfb3V0KCkKLSsgICAgICog PG5vdGU+PHBhcmE+QXJndW1lbnQgQHVzZXJfZGF0YSBpcyBpZ25vcmVkIGluIHRoaXMgZnVuY3Rp b24uPC9wYXJhPgotKyAgICAgKiA8L25vdGU+Ci0rICAgICAqLwotKyAgICBlbmdpbmVfc2lnbmFs c1tGT0NVU19PVVRfSURdID0KLSsgICAgICAgIGdfc2lnbmFsX25ldyAoSV8oImZvY3VzLW91dC1p ZCIpLAotKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTIChnb2JqZWN0X2NsYXNzKSwKLSsg ICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKLSsgICAgICAgICAgICBHX1NUUlVDVF9PRkZT RVQgKElCdXNFbmdpbmVDbGFzcywgZm9jdXNfb3V0X2lkKSwKLSsgICAgICAgICAgICBOVUxMLCBO VUxMLAotKyAgICAgICAgICAgIF9pYnVzX21hcnNoYWxfVk9JRF9fU1RSSU5HLAotKyAgICAgICAg ICAgIEdfVFlQRV9OT05FLAotKyAgICAgICAgICAgIDEsCi0rICAgICAgICAgICAgR19UWVBFX1NU UklORyk7Ci0rCi0gICAgIC8qKgotICAgICAgKiBJQnVzRW5naW5lOjpyZXNldDoKLSAgICAgICog QGVuZ2luZTogQW4gSUJ1c0VuZ2luZS4KLUBAIC04NzIsNiArOTg1LDkgQEAgaWJ1c19lbmdpbmVf c2V0X3Byb3BlcnR5IChJQnVzRW5naW5lICAgKmVuZ2luZSwKLSAgICAgY2FzZSBQUk9QX0VOR0lO RV9OQU1FOgotICAgICAgICAgZW5naW5lLT5wcml2LT5lbmdpbmVfbmFtZSA9IGdfdmFsdWVfZHVw X3N0cmluZyAodmFsdWUpOwotICAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUFJPUF9IQVNfRk9D VVNfSUQ6Ci0rICAgICAgICBlbmdpbmUtPnByaXYtPmhhc19mb2N1c19pZCA9IGdfdmFsdWVfZ2V0 X2Jvb2xlYW4gKHZhbHVlKTsKLSsgICAgICAgIGJyZWFrOwotICAgICBkZWZhdWx0OgotICAgICAg ICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChlbmdpbmUsIHByb3BfaWQsIHBz cGVjKTsKLSAgICAgfQotQEAgLTg4Nyw3ICsxMDAzLDkgQEAgaWJ1c19lbmdpbmVfZ2V0X3Byb3Bl cnR5IChJQnVzRW5naW5lICplbmdpbmUsCi0gICAgIGNhc2UgUFJPUF9FTkdJTkVfTkFNRToKLSAg ICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIGVuZ2luZS0+cHJpdi0+ZW5naW5lX25h bWUpOwotICAgICAgICAgYnJlYWs7Ci0tCi0rICAgIGNhc2UgUFJPUF9IQVNfRk9DVVNfSUQ6Ci0r ICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgZW5naW5lLT5wcml2LT5oYXNfZm9j dXNfaWQpOwotKyAgICAgICAgYnJlYWs7Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAgICBHX09CSkVD VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKGVuZ2luZSwgcHJvcF9pZCwgcHNwZWMpOwotICAg ICB9Ci1AQCAtMTE3Niw2ICsxMjk0LDMwIEBAIGlidXNfZW5naW5lX3NlcnZpY2VfbWV0aG9kX2Nh bGwgKElCdXNTZXJ2aWNlICAgICAgICAgICAqc2VydmljZSwKLSAgICAgICAgIH0KLSAgICAgfQot IAotKyAgICBpZiAoZ19zdHJjbXAwIChtZXRob2RfbmFtZSwgIkZvY3VzSW5JZCIpID09IDApIHsK LSsgICAgICAgIGdjaGFyICpvYmplY3RfcGF0aCA9IE5VTEw7Ci0rICAgICAgICBnY2hhciAqY2xp ZW50ID0gTlVMTDsKLSsgICAgICAgIGdfdmFyaWFudF9nZXQgKHBhcmFtZXRlcnMsICIoJnMmcyki LCAmb2JqZWN0X3BhdGgsICZjbGllbnQpOwotKyAgICAgICAgZ19zaWduYWxfZW1pdCAoZW5naW5l LAotKyAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lX3NpZ25hbHNbRk9DVVNfSU5fSURdLAot KyAgICAgICAgICAgICAgICAgICAgICAgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgIG9iamVj dF9wYXRoLAotKyAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50KTsKLSsgICAgICAgIGdfZGJ1 c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUgKGludm9jYXRpb24sIE5VTEwpOwotKyAg ICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICAgIGlmIChnX3N0cmNtcDAgKG1ldGhvZF9uYW1l LCAiRm9jdXNPdXRJZCIpID09IDApIHsKLSsgICAgICAgIGdjaGFyICpvYmplY3RfcGF0aCA9IE5V TEw7Ci0rICAgICAgICBnX3ZhcmlhbnRfZ2V0IChwYXJhbWV0ZXJzLCAiKCZzKSIsICZvYmplY3Rf cGF0aCk7Ci0rICAgICAgICBnX3NpZ25hbF9lbWl0IChlbmdpbmUsCi0rICAgICAgICAgICAgICAg ICAgICAgICBlbmdpbmVfc2lnbmFsc1tGT0NVU19PVVRfSURdLAotKyAgICAgICAgICAgICAgICAg ICAgICAgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdF9wYXRoKTsKLSsgICAgICAg IGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUgKGludm9jYXRpb24sIE5VTEwp OwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0gICAgIGlmIChnX3N0cmNtcDAgKG1ldGhv ZF9uYW1lLCAiQ2FuZGlkYXRlQ2xpY2tlZCIpID09IDApIHsKLSAgICAgICAgIGd1aW50IGluZGV4 LCBidXR0b24sIHN0YXRlOwotICAgICAgICAgZ192YXJpYW50X2dldCAocGFyYW1ldGVycywgIih1 dXUpIiwgJmluZGV4LCAmYnV0dG9uLCAmc3RhdGUpOwotQEAgLTEzMDMsNiArMTQ0NSwyMyBAQCBp YnVzX2VuZ2luZV9zZXJ2aWNlX21ldGhvZF9jYWxsIChJQnVzU2VydmljZSAgICAgICAgICAgKnNl cnZpY2UsCi0gICAgIGdfcmV0dXJuX2lmX3JlYWNoZWQgKCk7Ci0gfQotIAotKy8qKgotKyAqIF9p YnVzX2VuZ2luZV9oYXNfZm9jdXNfaWQ6Ci0rICoKLSsgKiBJbXBsZW1lbnQgdGhlICJGb2N1c0lk IiBtZXRob2QgY2FsbCBvZiB0aGUgb3JnLmZyZWVkZXNrdG9wLklCdXMgaW50ZXJmYWNlLgotKyAq LwotK3N0YXRpYyBHVmFyaWFudCAqCi0rX2lidXNfZW5naW5lX2hhc19mb2N1c19pZCAoSUJ1c0Vu Z2luZSAgICAgICplbmdpbmUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCdXNDb25u ZWN0aW9uICpjb25uZWN0aW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAg ICAgICAgICoqZXJyb3IpCi0rewotKyAgICBpZiAoZXJyb3IpIHsKLSsgICAgICAgICplcnJvciA9 IE5VTEw7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIGdfdmFyaWFudF9uZXdfYm9vbGVhbiAoZW5n aW5lLT5wcml2LT5oYXNfZm9jdXNfaWQpOwotK30KLSsKLSBzdGF0aWMgR1ZhcmlhbnQgKgotIGli dXNfZW5naW5lX3NlcnZpY2VfZ2V0X3Byb3BlcnR5IChJQnVzU2VydmljZSAgICAgICAgKnNlcnZp Y2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQnVzQ29ubmVjdGlvbiAg ICAqY29ubmVjdGlvbiwKLUBAIC0xMzEyLDcgKzE0NzEsMTggQEAgaWJ1c19lbmdpbmVfc2Vydmlj ZV9nZXRfcHJvcGVydHkgKElCdXNTZXJ2aWNlICAgICAgICAqc2VydmljZSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICpwcm9wZXJ0eV9uYW1l LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAq KmVycm9yKQotIHsKLS0gICAgcmV0dXJuIElCVVNfU0VSVklDRV9DTEFTUyAoaWJ1c19lbmdpbmVf cGFyZW50X2NsYXNzKS0+Ci0rICAgIGludCBpOwotKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHsK LSsgICAgICAgIGNvbnN0IGdjaGFyICptZXRob2RfbmFtZTsKLSsgICAgICAgIEdWYXJpYW50ICog KCogbWV0aG9kX2NhbGxiYWNrKSAoSUJ1c0VuZ2luZSAqLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHREJ1c0Nvbm5lY3Rpb24gKiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqKTsKLSsgICAgfSBtZXRob2RzIFtdID0g IHsKLSsgICAgICAgIHsgIkZvY3VzSWQiLCAgICAgICAgICAgICAgICAgICAgX2lidXNfZW5naW5l X2hhc19mb2N1c19pZCB9LAotKyAgICB9OwotKwotKyAgICBpZiAoZ19zdHJjbXAwIChpbnRlcmZh Y2VfbmFtZSwgSUJVU19JTlRFUkZBQ0VfRU5HSU5FKSAhPSAwKSB7Ci0rICAgICAgICByZXR1cm4g SUJVU19TRVJWSUNFX0NMQVNTIChpYnVzX2VuZ2luZV9wYXJlbnRfY2xhc3MpLT4KLSAgICAgICAg ICAgICAgICAgc2VydmljZV9nZXRfcHJvcGVydHkgKHNlcnZpY2UsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VuZGVyLAotQEAgLTEzMjAsNiArMTQ5MCwxOSBAQCBpYnVzX2Vu Z2luZV9zZXJ2aWNlX2dldF9wcm9wZXJ0eSAoSUJ1c1NlcnZpY2UgICAgICAgICpzZXJ2aWNlLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlX25hbWUsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eV9uYW1lLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IpOwotKyAgICB9Ci0rCi0r ICAgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKG1ldGhvZHMpOyBpKyspIHsKLSsgICAg ICAgIGlmIChnX3N0cmNtcDAgKG1ldGhvZHNbaV0ubWV0aG9kX25hbWUsIHByb3BlcnR5X25hbWUp ID09IDApIHsKLSsgICAgICAgICAgICByZXR1cm4gbWV0aG9kc1tpXS5tZXRob2RfY2FsbGJhY2sg KChJQnVzRW5naW5lICopIHNlcnZpY2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXJyb3IpOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAg IGdfd2FybmluZyAoInNlcnZpY2VfZ2V0X3Byb3BlcnR5IHJlY2VpdmVkIGFuIHVua25vd24gcHJv cGVydHk6ICVzIiwKLSsgICAgICAgICAgICAgICBwcm9wZXJ0eV9uYW1lID8gcHJvcGVydHlfbmFt ZSA6ICIobnVsbCkiKTsKLSsgICAgcmV0dXJuIE5VTEw7Ci0gfQotIAotIHN0YXRpYyBnYm9vbGVh bgotQEAgLTEzODYsMzEgKzE1NjksMzkgQEAgaWJ1c19lbmdpbmVfcHJvY2Vzc19rZXlfZXZlbnQg KElCdXNFbmdpbmUgKmVuZ2luZSwKLSBzdGF0aWMgdm9pZAotIGlidXNfZW5naW5lX2ZvY3VzX2lu IChJQnVzRW5naW5lICplbmdpbmUpCi0gewotLSAgICAvLyBnX2RlYnVnICgiZm9jdXMtaW4iKTsK LSt9Ci0rCi0rc3RhdGljIHZvaWQKLStpYnVzX2VuZ2luZV9mb2N1c19pbl9pZCAoSUJ1c0VuZ2lu ZSAgKmVuZ2luZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKm9iamVj dF9wYXRoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqY2xpZW50KQot K3sKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLSBpYnVzX2VuZ2luZV9mb2N1c19vdXQgKElCdXNFbmdp bmUgKmVuZ2luZSkKLSB7Ci0tICAgIC8vIGdfZGVidWcgKCJmb2N1cy1vdXQiKTsKLSt9Ci0rCi0r c3RhdGljIHZvaWQKLStpYnVzX2VuZ2luZV9mb2N1c19vdXRfaWQgKElCdXNFbmdpbmUgICplbmdp bmUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqb2JqZWN0X3BhdGgp Ci0rewotIH0KLSAKLSBzdGF0aWMgdm9pZAotIGlidXNfZW5naW5lX3Jlc2V0IChJQnVzRW5naW5l ICplbmdpbmUpCi0gewotLSAgICAvLyBnX2RlYnVnICgicmVzZXQiKTsKLSB9Ci0gCi0gc3RhdGlj IHZvaWQKLSBpYnVzX2VuZ2luZV9lbmFibGUgKElCdXNFbmdpbmUgKmVuZ2luZSkKLSB7Ci0tICAg IC8vIGdfZGVidWcgKCJlbmFibGUiKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLSBpYnVzX2VuZ2lu ZV9kaXNhYmxlIChJQnVzRW5naW5lICplbmdpbmUpCi0gewotLSAgICAvLyBnX2RlYnVnICgiZGlz YWJsZSIpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotZGlmZiAtLWdpdCBhL3NyYy9pYnVzZW5naW5l LmggYi9zcmMvaWJ1c2VuZ2luZS5oCi1pbmRleCA0M2VhYTU1NC4uNmFmMGU4NTYgMTAwNjQ0Ci0t LS0gYS9zcmMvaWJ1c2VuZ2luZS5oCi0rKysgYi9zcmMvaWJ1c2VuZ2luZS5oCi1AQCAtMiw3ICsy LDggQEAKLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGlidXMgLSBUaGUgSW5wdXQgQnVz Ci0gICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0Bn bWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUmVkIEhhdCwgSW5jLgotKyAq IENvcHlyaWdodCAoQykgMjAxMi0yMDIyIFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFA Z21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIyIFJlZCBIYXQsIEluYy4KLSAg KgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCi1AQCAtMTUzLDEwICsxNTQsMTUgQEAgc3RydWN0IF9JQnVzRW5n aW5lQ2xhc3MgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJQnVzRW5n aW5lICAgICAqZW5naW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn dWludCAgICAgICAgICAgcHVycG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3VpbnQgICAgICAgICAgIGhpbnRzKTsKLSsgICAgdm9pZCAgICAgICAgKCogZm9jdXNf aW5faWQpICAgICAoSUJ1c0VuZ2luZSAgICAgKmVuZ2luZSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgKm9iamVjdF9wYXRoLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAqY2xpZW50KTsKLSsg ICAgdm9pZCAgICAgICAgKCogZm9jdXNfb3V0X2lkKSAgICAoSUJ1c0VuZ2luZSAgICAgKmVuZ2lu ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAg Km9iamVjdF9wYXRoKTsKLSAKLSAgICAgLyo8IHByaXZhdGUgPiovCi0gICAgIC8qIHBhZGRpbmcg Ki8KLS0gICAgZ3BvaW50ZXIgcGR1bW15WzRdOwotKyAgICBncG9pbnRlciBwZHVtbXlbMl07Ci0g fTsKLSAKLSBHVHlwZSAgICAgICAgaWJ1c19lbmdpbmVfZ2V0X3R5cGUgICAgICAgKHZvaWQpOwot ZGlmZiAtLWdpdCBhL3NyYy9pYnVzbWFyc2hhbGVycy5saXN0IGIvc3JjL2lidXNtYXJzaGFsZXJz Lmxpc3QKLWluZGV4IGFhOWVhODJhLi43NDg5Zjg0MiAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzbWFy c2hhbGVycy5saXN0Ci0rKysgYi9zcmMvaWJ1c21hcnNoYWxlcnMubGlzdAotQEAgLTE5LDYgKzE5 LDcgQEAgVk9JRDpPQkpFQ1QsVUlOVCxVSU5UCi0gVk9JRDpPQkpFQ1QsQk9PTEVBTgotIFZPSUQ6 Qk9YRUQsQk9PTEVBTgotIFZPSUQ6Qk9YRUQKLStWT0lEOlNUUklORyxTVFJJTkcKLSBWT0lEOlNU UklORyxTVFJJTkcsVkFSSUFOVAotIFZPSUQ6U1RSSU5HLFNUUklORyxTVFJJTkcKLSBWT0lEOlVJ TlQKLS0tIAotMi4zNS4zCi0KLUZyb20gNTljMTM1OTc5MThkYjk4ZWM4MTIwY2NkYWMwOWYxZTJk YzU3NmUxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8u ZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgNyBKdWwgMjAyMiAwODoyMjo0OCArMDkw MAotU3ViamVjdDogW1BBVENIXSBzcmMvdGVzdHM6IFVuc2V0IEdfTUVTU0FHRVNfREVCVUcgZm9y IGdzZXR0aW5ncyBpbgotIHhrYi1sYXRpbi1sYXlvdXRzCi0KLWdzZXR0aW5ncyBjYW5ub3QgZ2V0 IHRoZSBrZXkgdmFsdWUgd2hlbiBHX01FU1NBR0VTX0RFQlVHIGlzIGVuYWJsZWQuCi1BZGQgZGVu eWxpc3QudHh0IHRvIGVuZ2luZS9NYWtlZmlsZS5hbQotLS0tCi0gZW5naW5lL01ha2VmaWxlLmFt ICAgICAgICAgIHwgMyArKy0KLSBzcmMvdGVzdHMveGtiLWxhdGluLWxheW91dHMgfCA3ICsrKysr KysKLSAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1k aWZmIC0tZ2l0IGEvZW5naW5lL01ha2VmaWxlLmFtIGIvZW5naW5lL01ha2VmaWxlLmFtCi1pbmRl eCAwMzg2N2Y1Mi4uNzI1NmZiYzggMTAwNjQ0Ci0tLS0gYS9lbmdpbmUvTWFrZWZpbGUuYW0KLSsr KyBiL2VuZ2luZS9NYWtlZmlsZS5hbQotQEAgLTQsNyArNCw3IEBACi0gIwotICMgQ29weXJpZ2h0 IChjKSAyMDEwLTIwMTYsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gIyBDb3B5 cmlnaHQgKGMpIDIwMDctMjAxNiBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4K LS0jIENvcHlyaWdodCAoYykgMjAxMy0yMDIwIFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2Fy YTFAZ21haWwuY29tPgotKyMgQ29weXJpZ2h0IChjKSAyMDEzLTIwMjEgVGFrYW8gRnVqaXdhcmEg PHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0gIwotICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICMgbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotQEAgLTg4LDYg Kzg4LDcgQEAgQ0xFQU5GSUxFUyA9IFwKLSAJJChOVUxMKQotIAotIEVYVFJBX0RJU1QgPSBcCi0r CWRlbnlsaXN0LnR4dCBcCi0gCWdlbnNpbXBsZS5weSBcCi0gCWlzbzYzOWNvbnZlcnRlci5weSBc Ci0gCXNpbXBsZS54bWwuaW4gXAotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy94a2ItbGF0aW4tbGF5 b3V0cyBiL3NyYy90ZXN0cy94a2ItbGF0aW4tbGF5b3V0cwotaW5kZXggZjhkY2VkNmIuLjkyNDY0 MjM0IDEwMDc1NQotLS0tIGEvc3JjL3Rlc3RzL3hrYi1sYXRpbi1sYXlvdXRzCi0rKysgYi9zcmMv dGVzdHMveGtiLWxhdGluLWxheW91dHMKLUBAIC04Miw5ICs4MiwxNiBAQCBmaW5pdCgpCi0gCi0g dGVzdF94a2Jfa2V5bWFwcygpCi0gewotKyAgICAjIEdfTUVTU0FHRVNfREVCVUc9YWxsIG9yIEdf TUVTU0FHRVNfREVCVUc9R0xpYi1HSU8tREVCVUcgd291bGQgYXBwZW5kCi0rICAgICMgZGVidWcg bWVzc2FnZXMgdG8gZ3NldHRpbmdzIG91dHB1dCBhbmQgY291bGQgbm90IGdldCB0aGUgcmVzdWx0 IGNvcnJlY3RseS4KLSsgICAgYmFja3VwX0dfTUVTU0FHRVNfREVCVUc9IiRHX01FU1NBR0VTX0RF QlVHIgotKyAgICB1bnNldCBHX01FU1NBR0VTX0RFQlVHCi0gICAgICMgTG9vcCBvdmVyIHRvcCBs ZXZlbCBzY2hlbWFzIHNpbmNlICJnc2V0dGluZ3MgbGlzdC1yZWN1cnNpdmVseSIgb25seQotICAg ICAjIGxvb2tzIGZvciBkaXJlY3QgY2hpbGRyZW4uCi0gICAgIHhrYl9sYXRpbl9sYXlvdXRzPWBn c2V0dGluZ3MgZ2V0IG9yZy5mcmVlZGVza3RvcC5pYnVzLmdlbmVyYWwgeGtiLWxhdGluLWxheW91 dHNgCi0rICAgIGlmIFsgeCIkYmFja3VwX0dfTUVTU0FHRVNfREVCVUciICE9IHggXSA7IHRoZW4K LSsgICAgICAgIGV4cG9ydCBHX01FU1NBR0VTX0RFQlVHPSRiYWNrdXBfR19NRVNTQUdFU19ERUJV RwotKyAgICBmaQotICAgICB3aGlsZSByZWFkIGtleW1hcCA7IGRvCi0gICAgICAgICBldmFsIGtl eW1hcD0iJGtleW1hcCIKLSAgICAgICAgIEhBU19WQVJJQU5UPSQoJEVDSE8gIiRrZXltYXAiIHwg Z3JlcCAnKCcgMj4gL2Rldi9udWxsKSB8fDoKLS0tIAotMi4zNS4zCi0KLUZyb20gZDQ3ZGJmYWRh NDFhYTRmYjVkZjlmN2NmZmU4NzM3ODZmYzQ4NDljYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwg MjUgSnVsIDIwMjIgMTc6MjI6MjEgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gY2xpZW50L3gxMTog RW5oYW5jZSBYdXRmOFRleHRMaXN0VG9UZXh0UHJvcGVydHkKLQotWENvbXBvdW5kVGV4dFN0eWxl IGRlcGVuZHMgb24gdGhlIGN1cnJlbnQgbG9jYWxlIGFuZCBzb21lIGxvY2FsZXMgZmFpbAotdG8g dG8gZ2V0IHRoZSBjb21wb3VuZCB0ZXh0IHN0eWxlLgotSWYgWHV0ZjhUZXh0TGlzdFRvVGV4dFBy b3BlcnR5KCkgZmFpbHMsIG5vdyBpYnVzLXgxMSB0cmllcyB0byBnZXQKLXRoZSBjb21wb3VuZCB0 ZXh0IHN0eWxlIHdpdGggVVRGLTggZW5jb2RpbmcuCi0KLUJVRz1odHRwczovL2dpdGh1Yi5jb20v aWJ1cy9pYnVzL2lzc3Vlcy8yNDIyCi0tLS0KLSBjbGllbnQveDExL21haW4uYyB8IDQxICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDM0 IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQveDEx L21haW4uYyBiL2NsaWVudC94MTEvbWFpbi5jCi1pbmRleCBmZTMwYzFkNi4uNjA1N2NjMDMgMTAw NjQ0Ci0tLS0gYS9jbGllbnQveDExL21haW4uYwotKysrIGIvY2xpZW50L3gxMS9tYWluLmMKLUBA IC0yLDcgKzIsNyBAQAotIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogaWJ1cwotICAqIENv cHlyaWdodCAoQykgMjAwNy0yMDE1IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29t PgotLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWpp d2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIyIFRha2FvIEZ1aml3 YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotICAqIENvcHlyaWdodCAoQykgMjAwNy0y MDE1IFJlZCBIYXQsIEluYy4KLSAgKgotICAqIG1haW4uYzoKLUBAIC00OCw2ICs0OCw4IEBACi0g Ci0gI2luY2x1ZGUgPGdldG9wdC5oPgotIAotKyNkZWZpbmUgRVNDX1NFUVVFTkNFX0lTTzEwNjQ2 XzEgIlwwMzMlRyIKLSsKLSAjZGVmaW5lIExPRyhsZXZlbCwgZm10X2FyZ3MuLi4pIFwKLSAgICAg aWYgKGdfZGVidWdfbGV2ZWwgPj0gKGxldmVsKSkgeyBcCi0gICAgICAgICBnX2RlYnVnIChmbXRf YXJncyk7IFwKLUBAIC0yNTQsOSArMjU2LDE3IEBAIF94aW1fcHJlZWRpdF9jYWxsYmFja19kcmF3 IChYSU1TIHhpbXMsIFgxMUlDICp4MTFpYywgY29uc3QgZ2NoYXIgKnByZWVkaXRfc3RyaW5nCi0g ICAgIHRleHQuZmVlZGJhY2sgPSBmZWVkYmFjazsKLSAKLSAgICAgaWYgKGxlbiA+IDApIHsKLS0g ICAgICAgIFh1dGY4VGV4dExpc3RUb1RleHRQcm9wZXJ0eSAoR0RLX0RJU1BMQVlfWERJU1BMQVkg KGdka19kaXNwbGF5X2dldF9kZWZhdWx0ICgpKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGNoYXIgKiopJnByZWVkaXRfc3RyaW5nLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxLCBYQ29tcG91bmRUZXh0U3R5bGUsICZ0cCk7Ci0rICAgICAg ICBpbnQgcmV0ID0gWHV0ZjhUZXh0TGlzdFRvVGV4dFByb3BlcnR5ICgKLSsgICAgICAgICAgICAg ICAgR0RLX0RJU1BMQVlfWERJU1BMQVkgKGdka19kaXNwbGF5X2dldF9kZWZhdWx0ICgpKSwKLSsg ICAgICAgICAgICAgICAgKGNoYXIgKiopJnByZWVkaXRfc3RyaW5nLAotKyAgICAgICAgICAgICAg ICAxLCBYQ29tcG91bmRUZXh0U3R5bGUsICZ0cCk7Ci0rICAgICAgICBpZiAocmV0ID09IEVYSVRf RkFJTFVSRSkgewotKyAgICAgICAgICAgIFhGcmVlICh0cC52YWx1ZSk7Ci0rICAgICAgICAgICAg dHAudmFsdWUgPSAodW5zaWduZWQgY2hhciAqKWdfc3RyZHVwX3ByaW50ZiAoCi0rICAgICAgICAg ICAgICAgICAgICAiJXMlcyIsCi0rICAgICAgICAgICAgICAgICAgICBFU0NfU0VRVUVOQ0VfSVNP MTA2NDZfMSwKLSsgICAgICAgICAgICAgICAgICAgIHByZWVkaXRfc3RyaW5nKTsKLSsgICAgICAg IH0KLSAgICAgICAgIHRleHQuZW5jb2RpbmdfaXNfd2NoYXIgPSAwOwotICAgICAgICAgdGV4dC5s ZW5ndGggPSBzdHJsZW4gKChjaGFyKil0cC52YWx1ZSk7Ci0gICAgICAgICB0ZXh0LnN0cmluZy5t dWx0aV9ieXRlID0gKGNoYXIqKXRwLnZhbHVlOwotQEAgLTg4Myw5ICs4OTMsMjYgQEAgX2NvbnRl eHRfY29tbWl0X3RleHRfY2IgKElCdXNJbnB1dENvbnRleHQgKmNvbnRleHQsCi0gCi0gICAgIFhU ZXh0UHJvcGVydHkgdHA7Ci0gICAgIElNQ29tbWl0U3RydWN0IGNtcyA9IHswfTsKLS0KLS0gICAg WHV0ZjhUZXh0TGlzdFRvVGV4dFByb3BlcnR5IChHREtfRElTUExBWV9YRElTUExBWSAoZ2RrX2Rp c3BsYXlfZ2V0X2RlZmF1bHQgKCkpLAotLSAgICAgICAgKGdjaGFyICoqKSYodGV4dC0+dGV4dCks IDEsIFhDb21wb3VuZFRleHRTdHlsZSwgJnRwKTsKLSsgICAgaW50IHJldDsKLSsKLSsgICAgcmV0 ID0gWHV0ZjhUZXh0TGlzdFRvVGV4dFByb3BlcnR5ICgKLSsgICAgICAgICAgICBHREtfRElTUExB WV9YRElTUExBWSAoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQgKCkpLAotKyAgICAgICAgICAgIChn Y2hhciAqKikmKHRleHQtPnRleHQpLCAxLCBYQ29tcG91bmRUZXh0U3R5bGUsICZ0cCk7Ci0rICAg IC8qIFhDb21wb3VuZFRleHRTdHlsZSB1c2VzIHRoZSBlbmNvZGluZyBlc2NhcGVkIHNlcXVlbmNl ICsgZW5jb2RlZCBjaGFycwotKyAgICAgKiBtYXRjaGVkIHRvIHRoZSBzcGVjaWZpZWQgbXVsdGli eXRlIGNoYXJhY3RlcnM6IHRleHQtPnRleHQsIGFuZAotKyAgICAgKiBsaWJYMTEuc28gc29ydHMg dGhlIGVuY29kaW5nIHNldHMgYnkgbG9jYWxlLgotKyAgICAgKiBJZiBhbiBlbmNvZGVkIHN0cmlu ZyBmYWlscyB0byBiZSBtYXRjaGVkLCBpYnVzLXgxMSBzcGVjaWZpZXMgdGhlCi0rICAgICAqIElT TzEwNjQxLTEgZW5jb2RpbmcgYW5kIHRoYXQgZXNjYXBlZCBzZXF1ZW5jZSBpcyAiXDAzMyVHIjoK LSsgICAgICogaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3hvcmcvbGliL2xpYngxMS8t L2Jsb2IvbWFzdGVyL3NyYy94bGliaTE4bi9sY0NULmMKLSsgICAgICogLCBhbmQgdGhlIGVuY29k aW5nIGlzIFVURi04IHdpdGggdXRmOF93Y3RvbWIoKToKLSsgICAgICogaHR0cHM6Ly9naXRsYWIu ZnJlZWRlc2t0b3Aub3JnL3hvcmcvbGliL2xpYngxMS8tL2Jsb2IvbWFzdGVyL3NyYy94bGliaTE4 bi9sY1VuaUNvbnYvdXRmOC5oCi0rICAgICAqLwotKyAgICBpZiAocmV0ID09IEVYSVRfRkFJTFVS RSkgewotKyAgICAgICAgWEZyZWUgKHRwLnZhbHVlKTsKLSsgICAgICAgIHRwLnZhbHVlID0gKHVu c2lnbmVkIGNoYXIgKilnX3N0cmR1cF9wcmludGYgKCIlcyVzIiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTQ19TRVFVRU5DRV9JU08xMDY0 Nl8xLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGV4dC0+dGV4dCk7Ci0rICAgIH0KLSAKLSAgICAgY21zLm1ham9yX2NvZGUgPSBYSU1fQ09N TUlUOwotICAgICBjbXMuaWNpZCA9IHgxMWljLT5pY2lkOwotLS0gCi0yLjM1LjMKLQotRnJvbSA1 M2Q4YTgyNmE2MmYyYjQzZDczNjFmNzE5ZmI3MmUyNmRhODczMmY4IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0 ZTogRnJpLCAxMiBBdWcgMjAyMiAxMTo0MToxNiArMDkwMAotU3ViamVjdDogW1BBVENIXSBkYXRh L2Rjb25mOiBSZXZlcnQgRW1vamkgc2hvZnRjdXQga2V5IHRvIFN1cGVyLXNwYWNlCi0KLUlCdXMg cHJvdmlkZXMgdGhlIEQtQnVzIG1ldGhvZCB0byBvdmVycmlkZSBJQnVzIGVtb2ppIFVJIGFuZCBp IHRoaW5rCi1TdXBlci1wZXJpb2QgaXMgYmV0dGVyIHRoYW4gQ3RybC1wZXJpb2QgZm9yIHRoZSBl bW9qaSBzaG9ydGN1dCBrZXkgdG8KLWNvbXBhcmUgTVMtV2luZG93LCBNYWNpbnRvc2guIElCdXMg ZW1vamkgVUkgY29ubmVjdHMgdG8gdGhlIGlucHV0IG1ldGhvZAotYW5kIHByb3ZpZGVzIHRoZSBs YW5ndWFnZSBlbW9qaSBhbm5vdGF0aW9ucy4KLQotU2VlbXMgbW92aW5nIEdUSyBDb3Ryb2wtcGVy aW9kIHRvIGdub21lLXNoZWxsIFN1ZXItcGVyaW9kIGlzIGRpZmZpY3VsdAotYXQgcHJlc2VudC4K LQotQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvaXNzdWVzLzIzOTAKLUJVRz1odHRw czovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwvLS9pc3N1ZXMvNTcyOAotLS0t Ci0gZGF0YS9kY29uZi9vcmcuZnJlZWRlc2t0b3AuaWJ1cy5nc2NoZW1hLnhtbCB8IDIgKy0KLSAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdp dCBhL2RhdGEvZGNvbmYvb3JnLmZyZWVkZXNrdG9wLmlidXMuZ3NjaGVtYS54bWwgYi9kYXRhL2Rj b25mL29yZy5mcmVlZGVza3RvcC5pYnVzLmdzY2hlbWEueG1sCi1pbmRleCAwZWNlMmI0Zi4uNGQz YjdhZTIgMTAwNjQ0Ci0tLS0gYS9kYXRhL2Rjb25mL29yZy5mcmVlZGVza3RvcC5pYnVzLmdzY2hl bWEueG1sCi0rKysgYi9kYXRhL2Rjb25mL29yZy5mcmVlZGVza3RvcC5pYnVzLmdzY2hlbWEueG1s Ci1AQCAtMjQ4LDcgKzI0OCw3IEBACi0gICAgICAgPGRlc2NyaXB0aW9uPlRoZSBzaG9ydGN1dCBr ZXlzIGZvciB0dXJuaW5nIFVuaWNvZGUgdHlwaW5nIG9uIG9yIG9mZjwvZGVzY3JpcHRpb24+Ci0g ICAgIDwva2V5PgotICAgICA8a2V5IG5hbWU9ImhvdGtleSIgdHlwZT0iYXMiPgotLSAgICAgIDxk ZWZhdWx0PlsgJyZsdDtDb250cm9sJmd0O3BlcmlvZCcsICcmbHQ7Q29udHJvbCZndDtzZW1pY29s b24nIF08L2RlZmF1bHQ+Ci0rICAgICAgPGRlZmF1bHQ+WyAnJmx0O1N1cGVyJmd0O3BlcmlvZCcg XTwvZGVmYXVsdD4KLSAgICAgICA8c3VtbWFyeT5FbW9qaSBzaG9ydGN1dCBrZXlzIGZvciBndGtf YWNjZWxlcmF0b3JfcGFyc2U8L3N1bW1hcnk+Ci0gICAgICAgPGRlc2NyaXB0aW9uPlRoZSBzaG9y dGN1dCBrZXlzIGZvciB0dXJuaW5nIGVtb2ppIHR5cGluZyBvbiBvciBvZmY8L2Rlc2NyaXB0aW9u PgotICAgICA8L2tleT4KLS0tIAotMi4zNy4xCi0K