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:09:09 GMT Message-ID: <178019334927.1.12300832629598065924.rpms-ibus-53ccbbc4add5@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: 53ccbbc4add58d3d92c495f5cd1f6e93501e3e75 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiA1M2NjYmJjNGFkZDU4ZDNkOTJjNDk1ZjVjZDFmNmU5MzUwMWUz ZTc1CkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDI2LTAyLTA0VDAwOjM2OjIwKzA5OjAwClN0YXRzICA6ICswLy0zMzcwIGluIDEgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lidXMvYy81M2Nj YmJjNGFkZDU4ZDNkOTJjNDk1ZjVjZDFmNmU5MzUwMWUzZTc1P2JyYW5jaD1hdXRvdG9vbAoKTG9n OgpEZWxldGUgdXBzdHJlYW1lZCBwYXRjaGVzCgotLS0KZGlmZiAtLWdpdCBhL2lidXMtSEVBRC5w YXRjaCBiL2lidXMtSEVBRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGIy YWYxNS4uMDAwMDAwMAotLS0gYS9pYnVzLUhFQUQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwz MzcwICswLDAgQEAKLUZyb20gNTYzYjQzM2Q3MjEyMDFlNzZiNGU4YWM2ZWE1OTNlODczZmQ3MmEx MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFybm91dCBFbmdlbGVuIDxhcm5vdXRA Ynp6dC5uZXQ+Ci1EYXRlOiBNb24sIDMgTm92IDIwMjUgMDk6NDk6NDYgKzAxMDAKLVN1YmplY3Q6 IFtQQVRDSF0gdWkvZ3RrMzogZG9uJ3QgYnVpbGQgaW4gcGFyYWxsZWwKLQotQXMgdGhhdCBsZWQg dG8gbm9uZGV0ZXJtaW5pc3RpYyBnZW5lcmF0ZWQgbWV0aG9kIG5hbWVzLiBUaGlzCi1vbmx5IHNl ZW1zIHRvIGhhdmUgYSBzbWFsbCBlZmZlY3Qgb24gcGVyZm9ybWFuY2UgKH4xMHMgb24gYQotd2hv bGUgZnJlc2ggYnVpbGQpLgotCi1XaGlsZSBJIGFwcHJlY2lhdGUgdGhlIGlidXMgcHJvamVjdCBk b2Vzbid0IGNvbnNpZGVyIHN1Y2gKLW5vbmRldGVybWluaXNtcyBhcyBwYXJ0aWN1bGFybHkgcHJv YmxlbWF0aWMgKCMyMjcyKSwgaGF2aW5nCi1iaXR3aXNlIHJlcHJvZHVjaWJsZSBidWlsZHMgaXMg aW5jcmVhc2luZ2x5IGRlc2lyYWJsZSBpbiBMaW51eAotZGlzdHJpYnV0aW9ucywgc28gaG9wZWZ1 bGx5IHlvdSBjb3VsZCBjb25zaWRlciBhcHBseWluZyB0aGlzCi1jaGFuZ2Ugbm9uZXRoZWxlc3Mu Ci0KLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL3B1bGwvMjgyMQotLS0tCi0gdWkv Z3RrMy9NYWtlZmlsZS5hbSB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp Ci0KLWRpZmYgLS1naXQgYS91aS9ndGszL01ha2VmaWxlLmFtIGIvdWkvZ3RrMy9NYWtlZmlsZS5h bQotaW5kZXggZDk5ZDhlODIuLjRkZjZjNWViIDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9NYWtlZmls ZS5hbQotKysrIGIvdWkvZ3RrMy9NYWtlZmlsZS5hbQotQEAgLTMxNyw2ICszMTcsOCBAQCBwYW5l bGJpbmRpbmcubzogJChzcmNkaXIpL3BhbmVsYmluZGluZy5jCi0gCSQoQU1fVl9DQ19ubykkKENP TVBJTEUpIC1jIC1vICRAICQ8Ci0gCSQoTlVMTCkKLSAKLSsuTk9UUEFSQUxMRUw6Ci0rCi0gTUFJ TlRBSU5FUkNMRUFORklMRVMgKz0gZXh0ZW5zaW9uLmMgcGFuZWxiaW5kaW5nLmMKLSAKLSBtYW5f c2V2ZW5fREFUQSA9IGlidXMtZW1vamkuNwotLS0gCi0yLjUxLjAKLQotRnJvbSAwMjAzMmJjNWYw ZmM4OWM3ZDE4Nzc0NzU4YWUwNTJkZDM2MDY0MDhiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot RnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogTW9uLCA2 IE9jdCAyMDI1IDIwOjQwOjE3ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS80XSBzcmM6IEZpeCBH Q0MgYC1XdW51c2VkLWJ1dC1zZXQtdmFyaWFibGVgIGZsYWcKLQotQWRkIGBHX0dOVUNfVU5VU0VE YCBmbGFnIGZvciB0aGUgR0NDIHdhcm5pbmdzLgotCi1CVUc9aHR0cHM6Ly9naXRodWIuY29tL2li dXMvaWJ1cy9wdWxsLzI4MDUKLS0tLQotIHNyYy9pYnVzY29tcG9uZW50LmMgICAgfCA0ICsrLS0K LSBzcmMvaWJ1c21lc3NhZ2UuYyAgICAgIHwgMiArLQotIHNyYy9pYnVzc2VyaWFsaXphYmxlLmMg fCA0ICsrLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMo LSkKLQotZGlmZiAtLWdpdCBhL3NyYy9pYnVzY29tcG9uZW50LmMgYi9zcmMvaWJ1c2NvbXBvbmVu dC5jCi1pbmRleCA4MGFjZTMzMi4uYzQ1M2EyZjUgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2NvbXBv bmVudC5jCi0rKysgYi9zcmMvaWJ1c2NvbXBvbmVudC5jCi1AQCAtMiw3ICsyLDcgQEAKLSAvKiB2 aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAgKiBDb3B5cmln aHQgKEMpIDIwMDgtMjAxMCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KLS0g KiBDb3B5cmlnaHQgKEMpIDIwMjAgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjUgVGFrYW8gRnVqaXdhcmEgPHRha2Fv LmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0gICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgUmVkIEhh dCwgSW5jLgotICAqCi0gICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotQEAgLTcyOSw3ICs3MjksNyBAQCBpYnVzX2NvbXBvbmVu dF9uZXdfdmFyYXJncyAoY29uc3QgZ2NoYXIgKmZpcnN0X3Byb3BlcnR5X25hbWUsIC4uLikKLSB7 Ci0gICAgIHZhX2xpc3QgdmFyX2FyZ3M7Ci0gICAgIElCdXNDb21wb25lbnQgKmNvbXBvbmVudDsK LS0gICAgSUJ1c0NvbXBvbmVudFByaXZhdGUgKnByaXY7Ci0rICAgIEdfR05VQ19VTlVTRUQgSUJ1 c0NvbXBvbmVudFByaXZhdGUgKnByaXY7Ci0gCi0gICAgIGdfYXNzZXJ0IChmaXJzdF9wcm9wZXJ0 eV9uYW1lKTsKLSAKLWRpZmYgLS1naXQgYS9zcmMvaWJ1c21lc3NhZ2UuYyBiL3NyYy9pYnVzbWVz c2FnZS5jCi1pbmRleCA4OWUzMTc3MS4uMTJmYmI0OGUgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c21l c3NhZ2UuYwotKysrIGIvc3JjL2lidXNtZXNzYWdlLmMKLUBAIC00NTksNyArNDU5LDcgQEAgaWJ1 c19tZXNzYWdlX25ldyAoZ3VpbnQgZG9tYWluLAotICAgICBHVmFsdWUgKnZhbHVlcywgKnZhbHVl c190bXA7Ci0gICAgIGd1aW50IG5fcHJvcGVydGllcyA9IDQsIGk7Ci0gICAgIElCdXNNZXNzYWdl ICptc2c7Ci0tICAgIElCdXNNZXNzYWdlUHJpdmF0ZSAqcHJpdjsKLSsgICAgR19HTlVDX1VOVVNF RCBJQnVzTWVzc2FnZVByaXZhdGUgKnByaXY7Ci0gCi0gICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls IChkb21haW4gPiAwICYmIGRvbWFpbiA8PSBHX01BWFVJTlQ4LCBOVUxMKTsKLSAgICAgZ19yZXR1 cm5fdmFsX2lmX2ZhaWwgKGNvZGUgPD0gR19NQVhVSU5UOCwgTlVMTCk7Ci1kaWZmIC0tZ2l0IGEv c3JjL2lidXNzZXJpYWxpemFibGUuYyBiL3NyYy9pYnVzc2VyaWFsaXphYmxlLmMKLWluZGV4IDIz MTAyMGI3Li41MDE4NDFiMyAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzc2VyaWFsaXphYmxlLmMKLSsr KyBiL3NyYy9pYnVzc2VyaWFsaXphYmxlLmMKLUBAIC0yLDcgKzIsNyBAQAotIC8qIHZpbTpzZXQg ZXQgc3RzPTQ6ICovCi0gLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAgKiBDb3B5cmlnaHQgKEMp IDIwMDgtMjAxMCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KLS0gKiBDb3B5 cmlnaHQgKEMpIDIwMTgtMjAxOSBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWls LmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyNSBUYWthbyBGdWppd2FyYSA8dGFrYW8u ZnVqaXdhcmExQGdtYWlsLmNvbT4KLSAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBSZWQgSGF0 LCBJbmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi1AQCAtMjY5LDcgKzI2OSw3IEBAIEdWYXJpYW50ICoKLSBp YnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemVfb2JqZWN0IChJQnVzU2VyaWFsaXphYmxlICpvYmpl Y3QpCi0gewotICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19TRVJJQUxJWkFCTEUg KG9iamVjdCksIEZBTFNFKTsKLS0gICAgZ2Jvb2xlYW4gcmV0dmFsOwotKyAgICBHX0dOVUNfVU5V U0VEIGdib29sZWFuIHJldHZhbDsKLSAKLSAgICAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXI7Ci0g ICAgIGdfdmFyaWFudF9idWlsZGVyX2luaXQgKCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9UVVBM RSk7Ci0tLSAKLTIuNTEuMQotCi1Gcm9tIGM5ZDVkMGY1MjFkZTlmMDJhODc2YzMxOWMwMjk3ODIz NWE3NDUzY2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2Fv LmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDYgT2N0IDIwMjUgMjA6NDA6MjUgKzA5 MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIHVpL2d0azMvYXBwbGljYXRpb246IC0tZW5hYmxlLXdh eWxhbmQtaW0gb3B0aW9uIHdpdGhvdXQgZGFlbW9uCi0KLVdpc2ggdG8gcnVuIGlidXMtZGFlbW9u IGFmdGVyIHJ1biBpYnVzLXVpLWd0azMgZm9yIHRoZSBkZWJ1ZyBwdXJwb3NlLgotCi1CVUc9aHR0 cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy9wdWxsLzI4MDUKLS0tLQotIHVpL2d0azMvYXBwbGlj YXRpb24udmFsYSB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQotIDEgZmls ZSBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0 IGEvdWkvZ3RrMy9hcHBsaWNhdGlvbi52YWxhIGIvdWkvZ3RrMy9hcHBsaWNhdGlvbi52YWxhCi1p bmRleCA4MmNjNTM5Ny4uNjVhYjQzY2YgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL2FwcGxpY2F0aW9u LnZhbGEKLSsrKyBiL3VpL2d0azMvYXBwbGljYXRpb24udmFsYQotQEAgLTM3LDYgKzM3LDcgQEAg Y2xhc3MgQXBwbGljYXRpb24gewotICAgICBwcml2YXRlIHN0YXRpYyBib29sIG1fdmVyYm9zZTsK LSAgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbCBtX2VuYWJsZV93YXlsYW5kX2ltOwotICNpZiBVU0Vf R0RLX1dBWUxBTkQKLSsgICAgcHJpdmF0ZSBzdGF0aWMgdWxvbmcgbV9idXNfY29ubmVjdGVkX2lk OwotICAgICBwcml2YXRlIHN0YXRpYyB1bG9uZyBtX3JlYWxpemVfc3VyZmFjZV9pZDsKLSAgICAg cHJpdmF0ZSBzdGF0aWMgdWxvbmcgbV9pYnVzX2ZvY3VzX2luX2lkOwotICAgICBwcml2YXRlIHN0 YXRpYyB1bG9uZyBtX2lidXNfZm9jdXNfb3V0X2lkOwotQEAgLTI4NSw3ICsyODYsNyBAQCBjbGFz cyBBcHBsaWNhdGlvbiB7Ci0gICAgICAgICBidXMgPSBuZXcgSUJ1cy5CdXMoKTsKLSAgICAgICAg IEdMaWIuTWFpbkxvb3A/IGxvb3AgPSBudWxsOwotICAgICAgICAgaWYgKCFidXMuaXNfY29ubmVj dGVkKCkgJiYgbV9leGVjX2RhZW1vbikgewotLSAgICAgICAgICAgIHVsb25nIGhhbmRsZXJfaWQg PSBidXMuY29ubmVjdGVkLmNvbm5lY3QoKGJ1cykgPT4gewotKyAgICAgICAgICAgIG1fYnVzX2Nv bm5lY3RlZF9pZCA9IGJ1cy5jb25uZWN0ZWQuY29ubmVjdCgoYnVzKSA9PiB7Ci0gICAgICAgICAg ICAgICAgIGlmIChsb29wICE9IG51bGwpCi0gICAgICAgICAgICAgICAgICAgICBsb29wLnF1aXQo KTsKLSAgICAgICAgICAgICB9KTsKLUBAIC0yOTUsMTcgKzI5NiwzMSBAQCBjbGFzcyBBcHBsaWNh dGlvbiB7Ci0gICAgICAgICAgICAgICAgICAgICBsb29wLnJ1bigpOwotICAgICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgIGJ1cy5kaXNjb25uZWN0KGhhbmRsZXJf aWQpOwotKyAgICAgICAgICAgIGJ1cy5kaXNjb25uZWN0KG1fYnVzX2Nvbm5lY3RlZF9pZCk7Ci0r ICAgICAgICAgICAgbV9idXNfY29ubmVjdGVkX2lkID0gMDsKLSAgICAgICAgIH0KLSAgICAgICAg IGlmICghYnVzLmlzX2Nvbm5lY3RlZCgpKSB7Ci0tICAgICAgICAgICAgbV9sb2cucHJpbnRmKCJG YWlsZWQgdG8gY29ubmVjdCB0byBpYnVzLWRhZW1vblxuIik7Ci0tICAgICAgICAgICAgbV9sb2cu Zmx1c2goKTsKLS0gICAgICAgICAgICBhc3NlcnRfbm90X3JlYWNoZWQoKTsKLSsgICAgICAgICAg ICBpZiAobV9leGVjX2RhZW1vbikgewotKyAgICAgICAgICAgICAgICBtX2xvZy5wcmludGYoIkZh aWxlZCB0byBjb25uZWN0IHRvIGlidXMtZGFlbW9uXG4iKTsKLSsgICAgICAgICAgICAgICAgbV9s b2cuZmx1c2goKTsKLSsgICAgICAgICAgICAgICAgYXNzZXJ0X25vdF9yZWFjaGVkKCk7Ci0rICAg ICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgbV9idXNfY29ubmVjdGVkX2lkID0g YnVzLmNvbm5lY3RlZC5jb25uZWN0KChidXMpID0+IHsKLSsgICAgICAgICAgICAgICAgICAgIG1f d2F5bGFuZF9pbSA9IG5ldyBJQnVzLldheWxhbmRJTSgiYnVzIiwgYnVzLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3bF9kaXNwbGF5Iiwg d2xfZGlzcGxheSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAibG9nIiwgbV9sb2csCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInZlcmJvc2UiLCBtX3ZlcmJvc2UpOwotKyAgICAgICAg ICAgICAgICAgICAgYnVzLmRpc2Nvbm5lY3QobV9idXNfY29ubmVjdGVkX2lkKTsKLSsgICAgICAg ICAgICAgICAgICAgIG1fYnVzX2Nvbm5lY3RlZF9pZCA9IDA7Ci0rICAgICAgICAgICAgICAgIH0p OwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICAgIGlmIChidXMuaXNfY29ubmVj dGVkKCkpIHsKLSsgICAgICAgICAgICBtX3dheWxhbmRfaW0gPSBuZXcgSUJ1cy5XYXlsYW5kSU0o ImJ1cyIsIGJ1cywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIndsX2Rpc3BsYXkiLCB3bF9kaXNwbGF5LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAibG9nIiwgbV9sb2csCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJ2ZXJib3NlIiwgbV92ZXJib3NlKTsKLSAgICAgICAg IH0KLS0gICAgICAgIG1fd2F5bGFuZF9pbSA9IG5ldyBJQnVzLldheWxhbmRJTSgiYnVzIiwgYnVz LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3bF9kaXNwbGF5 Iiwgd2xfZGlzcGxheSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAibG9nIiwgbV9sb2csCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgInZlcmJvc2UiLCBtX3ZlcmJvc2UpOwotICAgICB9Ci0gCi0gICAgIHByaXZhdGUgdm9pZCBz ZXRfd2F5bGFuZF9zdXJmYWNlKHZvaWQgKnN1cmZhY2UpIHsKLS0tIAotMi41MS4xCi0KLUZyb20g MWE5ZWExNmIxMmQ0ZTkwZTRjYWY3NGM0NTY5YTU5NjY2MGRhNmU5YyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURh dGU6IFdlZCwgMjYgTm92IDIwMjUgMTQ6NTU6MjggKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzRd IHV0aWwvSU1ka2l0OiBGaXggbWVtb3J5IGxlYWtzIHdpdGggZmFpbCBzYWZlCi0KLS0gV2hlbiBt YWxsb2MoKSBpcyBmYWlsZWQsIHRoZSBwb2ludGVyIHNob3VsZCBub3QgYmUgZGVhbGxvY2F0ZWQK LSAgYW5kIGFsc28gb3RoZXIgYWxsb2NhdGVkIG1lbW9yeSBwb2ludGVycyBzaG91bGQgYmUgZnJl ZWQgaW4gRnJhbWVNZ3IuYy4KLS0gVGhlIGBYSU1fU1RSRlVOQ2AgbWFjcm8gaW1wbGVtZW50ZWQg aW4gWGltUHJvdG8uaC4KLS0gR0NDIGAtV2FuYWx5emVyLW1hbGxvYy1sZWFrYCBmbGFnIGRvZXMg bm90IGhhdmUgdG8gd2FybiB0aGUgcmVhbGxvY2F0aW9uCi0gIHNpbmNlIHRoZSBgYWRkcmVzc2Ag cG9pbnRlciBpcyBub3QgY2hhbmdlZCBhbmQgYGFkZHJlc3MtPmltdmFsdWVfbWFza2AKLSAgc2hv dWxkIHdvcmsgaW4gaTE4bk1ldGhvZC5jCi0tIFNlZW1zIEdDQyBkb2VzIG5vdCB1bmRlcnN0YW5k IGBpZiAoIXAtPnZhbHVlKWAgYW5kIHJlcGxhY2UgaXQgd2l0aCBhCi0gIHdyYXBwZXIgdmFyaWFi bGUgaW4gaTE4bk1ldGhvZC5jCi0tIEZpeCBleGl0KCkgZnJvbSB3aXRoaW4gc2lnbmFsIGhhbmRs ZXIgYnkgQ1dFLTQ3OSBhbmQKLSAgYC1XYW5hbHl6ZXItdW5zYWZlLWNhbGwtd2l0aGluLXNpZ25h bC1oYW5kbGVyYCBpbiBjbGllbnQveDExL21haW4uYwotCi1CVUc9aHR0cHM6Ly9naXRodWIuY29t L2lidXMvaWJ1cy9wdWxsLzI4MDUKLS0tLQotIGNsaWVudC94MTEvbWFpbi5jICAgICAgICB8ICAg NyArLQotIHV0aWwvSU1ka2l0L0ZyYW1lTWdyLmMgICB8IDMxNiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0KLSB1dGlsL0lNZGtpdC9YaW1Qcm90by5oICAgfCAgIDcgKy0K LSB1dGlsL0lNZGtpdC9pMThuTWV0aG9kLmMgfCAxMDQgKysrKysrKy0tLS0tLQotIDQgZmlsZXMg Y2hhbmdlZCwgMzUyIGluc2VydGlvbnMoKyksIDgyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0 IGEvY2xpZW50L3gxMS9tYWluLmMgYi9jbGllbnQveDExL21haW4uYwotaW5kZXggYWI5Njc5ZGQu LjVmYWRkNDNkIDEwMDY0NAotLS0tIGEvY2xpZW50L3gxMS9tYWluLmMKLSsrKyBiL2NsaWVudC94 MTEvbWFpbi5jCi1AQCAtMTMwOSw3ICsxMzA5LDEyIEBAIF9hdGV4aXRfY2IgKCkKLSBzdGF0aWMg dm9pZAotIF9zaWdoYW5kbGVyIChpbnQgc2lnKQotIHsKLS0gICAgZXhpdChFWElUX0ZBSUxVUkUp OwotKyAgICAvKiByaGJ6IzE3Njc2OTEgX3NpZ2hhbmRsZXIoKSBpcyBjYWxsZWQgd2l0aCBTSUdU RVJNCi0rICAgICAqIGFuZCBleGl0KCkgY2F1c2VzIFNFR1YgZHVyaW5nIGNhbGxpbmcgYXRleGl0 IGZ1bmN0aW9ucy4KLSsgICAgICogX2F0ZXhpdF9jYigpIG1pZ2h0IGJlIGJyb2tlbi4gX2V4aXQo KSBkb2VzIG5vdCBjYWxsCi0rICAgICAqIGF0ZXhpdCBmdW5jdGlvbnMuCi0rICAgICAqLwotKyAg ICBfZXhpdCAoRVhJVF9GQUlMVVJFKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLWRpZmYgLS1naXQg YS91dGlsL0lNZGtpdC9GcmFtZU1nci5jIGIvdXRpbC9JTWRraXQvRnJhbWVNZ3IuYwotaW5kZXgg ODBkMDE5YTAuLjk3NmRiOTRlIDEwMDY0NAotLS0tIGEvdXRpbC9JTWRraXQvRnJhbWVNZ3IuYwot KysrIGIvdXRpbC9JTWRraXQvRnJhbWVNZ3IuYwotQEAgLTIzLDYgKzIzLDcgQEAgU09GVFdBUkUu Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXlhbW90b0BqcmQuZGVjLmNvbQotIAot ICAgICBUaGlzIHZlcnNpb24gdGlkaWVkIGFuZCBkZWJ1Z2dlZCBieSBTdGV2ZSBVbmRlcndvb2Qg TWF5IDE5OTkKLSsgICAgVGhpcyB2ZXJzaW9uIHRpZGllZCBhbmQgZGVidWdnZWQgYnkgVGFrYW8g RnVqaXdhcmEgTm92IDIwMjUKLSAKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0gCi1AQCAtMzAsNiArMzEsNyBAQCBT T0ZUV0FSRS4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNp bmNsdWRlICJGcmFtZU1nci5oIgotKyNpbmNsdWRlICJYaW1Qcm90by5oIgotIAotIC8qIENvbnZl bmllbnQgbWFjcm8gKi8KLSAKLUBAIC0yMTgsNyArMjIwLDExIEBAIEZyYW1lTWdyIEZyYW1lTWdy SW5pdCAoWGltRnJhbWUgZnJhbWUsIGNoYXIqIGFyZWEsIEJvb2wgYnl0ZV9zd2FwKQotIHsKLSAg ICAgRnJhbWVNZ3IgZm07Ci0gCi0tICAgIGZtID0gKEZyYW1lTWdyKSBYbWFsbG9jIChzaXplb2Yg KEZyYW1lTWdyUmVjKSk7Ci0rICAgIGlmICgoZm0gPSAoRnJhbWVNZ3IpIFhtYWxsb2MgKHNpemVv ZiAoRnJhbWVNZ3JSZWMpKSkgPT0gTlVMTCkgewotKyAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAi KFhJTS1JTWRraXQpIFdBUk5JTkc6IG1hbGxvYyBmYWlsZWQgaW4gJXM6JXMuXG4iLAotKyAgICAg ICAgICAgICAgICAgX19GSUxFX18sIFhJTV9TVFJGVU5DKTsKLSsgICAgICAgIHJldHVybiBOVUxM OwotKyAgICB9Ci0gCi0gICAgIGZtLT5mcmFtZSA9IGZyYW1lOwotICAgICBmbS0+ZmkgPSBGcmFt ZUluc3RJbml0IChmcmFtZSk7Ci1AQCAtMjU5LDcgKzI2NSw4IEBAIHZvaWQgRnJhbWVNZ3JGcmVl IChGcmFtZU1nciBmbSkKLSAgICAgfQotICAgICAvKmVuZHdoaWxlKi8KLSAKLS0gICAgRnJhbWVJ bnN0RnJlZSAoZm0tPmZpKTsKLSsgICAgaWYgKGZtLT5maSkKLSsgICAgICAgIEZyYW1lSW5zdEZy ZWUgKGZtLT5maSk7Ci0gICAgIFhmcmVlIChmbSk7Ci0gfQotIAotQEAgLTg2OCw3ICs4NzUsMTEg QEAgc3RhdGljIEZyYW1lSW5zdCBGcmFtZUluc3RJbml0IChYaW1GcmFtZSBmcmFtZSkKLSB7Ci0g ICAgIEZyYW1lSW5zdCBmaTsKLSAKLS0gICAgZmkgPSAoRnJhbWVJbnN0KSBYbWFsbG9jIChzaXpl b2YgKEZyYW1lSW5zdFJlYykpOwotKyAgICBpZiAoKGZpID0gKEZyYW1lSW5zdCkgWG1hbGxvYyAo c2l6ZW9mIChGcmFtZUluc3RSZWMpKSkgPT0gTlVMTCkgewotKyAgICAgICAgZnByaW50ZiAoc3Rk ZXJyLCAiKFhJTS1JTWRraXQpIFdBUk5JTkc6IG1hbGxvYyBmYWlsZWQgaW4gJXM6JXMuXG4iLAot KyAgICAgICAgICAgICAgICAgX19GSUxFX18sIFhJTV9TVFJGVU5DKTsKLSsgICAgICAgIHJldHVy biBOVUxMOwotKyAgICB9Ci0gCi0gICAgIGZpLT50ZW1wbGF0ZSA9IGZyYW1lOwotICAgICBmaS0+ Y3VyX25vID0gMDsKLUBAIC04ODQsNyArODk1LDcgQEAgc3RhdGljIHZvaWQgRnJhbWVJbnN0RnJl ZSAoRnJhbWVJbnN0IGZpKQotIAotICAgICBDaGFpbkl0ZXJJbml0ICgmY2ksICZmaS0+Y20pOwot IAotLSAgICB3aGlsZSAoQ2hhaW5JdGVyR2V0TmV4dCAoJmNpLCAmZnJhbWVfbm8sICZkKSkKLSsg ICAgd2hpbGUgKENoYWluSXRlckdldE5leHQgKCZjaSwgJmZyYW1lX25vLCAmZCkgJiYgZmktPnRl bXBsYXRlKQotICAgICB7Ci0gICAgICAgICByZWdpc3RlciBYaW1GcmFtZVR5cGUgdHlwZTsKLSAg ICAgICAgIHR5cGUgPSBmaS0+dGVtcGxhdGVbZnJhbWVfbm9dLnR5cGU7Ci1AQCAtOTEyLDYgKzky MywxMSBAQCBzdGF0aWMgWGltRnJhbWVUeXBlIEZyYW1lSW5zdEdldE5leHRUeXBlKEZyYW1lSW5z dCBmaSwgWGltRnJhbWVUeXBlSW5mbyBpbmZvKQotIHsKLSAgICAgWGltRnJhbWVUeXBlIHJldF90 eXBlOwotIAotKyAgICBpZiAoIWZpKSB7Ci0rICAgICAgICBmcHJpbnRmIChzdGRlcnIsICIoWElN LUlNZGtpdCkgV0FSTklORzogZmkgIT0gTlVMTCBpbiAlczolcy5cbiIsCi0rICAgICAgICAgICAg ICAgICBfX0ZJTEVfXywgWElNX1NUUkZVTkMpOwotKyAgICAgICAgcmV0dXJuIC0xOwotKyAgICB9 Ci0gICAgIHJldF90eXBlID0gZmktPnRlbXBsYXRlW2ZpLT5jdXJfbm9dLnR5cGU7Ci0gCi0gICAg IHN3aXRjaCAocmV0X3R5cGUpCi1AQCAtOTQ0LDcgKzk2MCwxMyBAQCBzdGF0aWMgWGltRnJhbWVU eXBlIEZyYW1lSW5zdEdldE5leHRUeXBlKEZyYW1lSW5zdCBmaSwgWGltRnJhbWVUeXBlSW5mbyBp bmZvKQotICAgICAgICAgICAgICAgICBpZiAoKGQgPSBDaGFpbk1nckdldEV4dHJhRGF0YSAoJmZp LT5jbSwgaXRlcl9pZHgpKSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg ICAgICAgICAgICBkci5pdGVyID0gSXRlckluaXQgKCZmaS0+dGVtcGxhdGVbaXRlcl9pZHggKyAx XSwgTk9fVkFMVUUpOwotKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkci5pdGVyKQotKyAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICAgICAgIGQgPSBD aGFpbk1nclNldERhdGEgKCZmaS0+Y20sIGl0ZXJfaWR4LCBkcik7Ci0rICAgICAgICAgICAgICAg ICAgICBpZiAoIWQpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBJdGVyRnJlZSAoZHIuaXRl cik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgICAgICAg ICAgICAgfQotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIC8qZW5kaWYqLwot ICAgICAgICAgICAgICAgICBpbmZvLT5jb3VudGVyLml0ZXIgPSBkLT5pdGVyOwotQEAgLTk4MCw2 ICsxMDAyLDcgQEAgc3RhdGljIFhpbUZyYW1lVHlwZSBGcmFtZUluc3RHZXROZXh0VHlwZShGcmFt ZUluc3QgZmksIFhpbUZyYW1lVHlwZUluZm8gaW5mbykKLSAgICAgICAgICAgICByZWdpc3RlciBp bnQgdW5pdDsKLSAgICAgICAgICAgICByZWdpc3RlciBpbnQgbnVtYmVyOwotICAgICAgICAgICAg IHJlZ2lzdGVyIGludCBzaXplOwotKyAgICAgICAgICAgIHJlZ2lzdGVyIGludCBzOwotICAgICAg ICAgICAgIHJlZ2lzdGVyIGludCBpOwotIAotICAgICAgICAgICAgIHVuaXQgPSBfVU5JVCAoKGxv bmcpIGZpLT50ZW1wbGF0ZVtmaS0+Y3VyX25vXS5kYXRhKTsKLUBAIC05OTEsMTEgKzEwMTQsMjEg QEAgc3RhdGljIFhpbUZyYW1lVHlwZSBGcmFtZUluc3RHZXROZXh0VHlwZShGcmFtZUluc3QgZmks IFhpbUZyYW1lVHlwZUluZm8gaW5mbykKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg IGkgPSBfRnJhbWVJbnN0RGVjcmVtZW50IChmaS0+dGVtcGxhdGUsIGkpOwotICAgICAgICAgICAg ICAgICBhc3NlcnQgKGkgPj0gMCk7Ci0tICAgICAgICAgICAgICAgIHNpemUgKz0gX0ZyYW1lSW5z dEdldEl0ZW1TaXplIChmaSwgaSk7Ci0rICAgICAgICAgICAgICAgIHMgPSBfRnJhbWVJbnN0R2V0 SXRlbVNpemUgKGZpLCBpKTsKLSsgICAgICAgICAgICAgICAgaWYgKHMgPT0gTk9fVkFMVUUpIHsK LSsgICAgICAgICAgICAgICAgICAgIHNpemUgPSBOT19WQUxVRTsKLSsgICAgICAgICAgICAgICAg ICAgIG51bWJlciA9IDA7Ci0rICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAg ICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgIHNpemUgKz0gczsKLSsgICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICAgICBudW1iZXItLTsKLSAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgLyplbmR3aGlsZSovCi0tICAgICAgICAgICAgaW5mby0+bnVtID0gKHVuaXQg LSAoc2l6ZSV1bml0KSkldW5pdDsKLSsgICAgICAgICAgICBpZiAoc2l6ZSA9PSBOT19WQUxVRSkK LSsgICAgICAgICAgICAgICAgaW5mby0+bnVtID0gTk9fVkFMVUU7Ci0rICAgICAgICAgICAgZWxz ZQotKyAgICAgICAgICAgICAgICBpbmZvLT5udW0gPSAodW5pdCAtIChzaXplJXVuaXQpKSV1bml0 OwotICAgICAgICAgfQotICAgICAgICAgLyplbmRpZiovCi0gICAgICAgICBmaS0+Y3VyX25vID0g X0ZyYW1lSW5zdEluY3JlbWVudCAoZmktPnRlbXBsYXRlLCBmaS0+Y3VyX25vKTsKLUBAIC0xMDEx LDcgKzEwNDQsMTMgQEAgc3RhdGljIFhpbUZyYW1lVHlwZSBGcmFtZUluc3RHZXROZXh0VHlwZShG cmFtZUluc3QgZmksIFhpbUZyYW1lVHlwZUluZm8gaW5mbykKLSAgICAgICAgICAgICBpZiAoKGQg PSBDaGFpbk1nckdldEV4dHJhRGF0YSAoJmZpLT5jbSwgZmktPmN1cl9ubykpID09IE5VTEwpCi0g ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBkci5pdGVyID0gSXRlckluaXQgKCZmaS0+ dGVtcGxhdGVbZmktPmN1cl9ubyArIDFdLCBOT19WQUxVRSk7Ci0rICAgICAgICAgICAgICAgIGlm ICghZHIuaXRlcikKLSsgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAg ICAgICAgZCA9IENoYWluTWdyU2V0RGF0YSAoJmZpLT5jbSwgZmktPmN1cl9ubywgZHIpOwotKyAg ICAgICAgICAgICAgICBpZiAoIWQpIHsKLSsgICAgICAgICAgICAgICAgICAgIEl0ZXJGcmVlIChk ci5pdGVyKTsKLSsgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSsgICAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAvKmVuZGlmKi8KLSAgICAgICAgICAg ICBzdWJfdHlwZSA9IEl0ZXJHZXROZXh0VHlwZSAoZC0+aXRlciwgaW5mbyk7Ci1AQCAtMTAzNyw3 ICsxMDc2LDEzIEBAIHN0YXRpYyBYaW1GcmFtZVR5cGUgRnJhbWVJbnN0R2V0TmV4dFR5cGUoRnJh bWVJbnN0IGZpLCBYaW1GcmFtZVR5cGVJbmZvIGluZm8pCi0gICAgICAgICAgICAgaWYgKChkID0g Q2hhaW5NZ3JHZXRFeHRyYURhdGEgKCZmaS0+Y20sIGZpLT5jdXJfbm8pKSA9PSBOVUxMKQotICAg ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgZHIuZmkgPSBGcmFtZUluc3RJbml0IChmaS0+ dGVtcGxhdGVbZmktPmN1cl9ubyArIDFdLmRhdGEpOwotKyAgICAgICAgICAgICAgICBpZiAoIWRy LmZpKQotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgICBk ID0gQ2hhaW5NZ3JTZXREYXRhICgmZmktPmNtLCBmaS0+Y3VyX25vLCBkcik7Ci0rICAgICAgICAg ICAgICAgIGlmICghZCkgewotKyAgICAgICAgICAgICAgICAgICAgRnJhbWVJbnN0RnJlZSAoZHIu ZmkpOwotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIC8qZW5kaWYqLwotICAgICAgICAgICAgIHN1 Yl90eXBlID0gRnJhbWVJbnN0R2V0TmV4dFR5cGUgKGQtPmZpLCBpbmZvKTsKLUBAIC0xMDY0LDYg KzExMDksMTEgQEAgc3RhdGljIFhpbUZyYW1lVHlwZSBGcmFtZUluc3RQZWVrTmV4dFR5cGUgKEZy YW1lSW5zdCBmaSwgWGltRnJhbWVUeXBlSW5mbyBpbmZvKQotIHsKLSAgICAgWGltRnJhbWVUeXBl IHJldF90eXBlOwotIAotKyAgICBpZiAoIWZpKSB7Ci0rICAgICAgICBmcHJpbnRmIChzdGRlcnIs ICIoWElNLUlNZGtpdCkgV0FSTklORzogZmkgIT0gTlVMTCBpbiAlczolcy5cbiIsCi0rICAgICAg ICAgICAgICAgICBfX0ZJTEVfXywgWElNX1NUUkZVTkMpOwotKyAgICAgICAgcmV0dXJuIC0xOwot KyAgICB9Ci0gICAgIHJldF90eXBlID0gZmktPnRlbXBsYXRlW2ZpLT5jdXJfbm9dLnR5cGU7Ci0g Ci0gICAgIHN3aXRjaCAocmV0X3R5cGUpCi1AQCAtMTA5Niw3ICsxMTQ2LDEzIEBAIHN0YXRpYyBY aW1GcmFtZVR5cGUgRnJhbWVJbnN0UGVla05leHRUeXBlIChGcmFtZUluc3QgZmksIFhpbUZyYW1l VHlwZUluZm8gaW5mbykKLSAgICAgICAgICAgICAgICAgaWYgKChkID0gQ2hhaW5NZ3JHZXRFeHRy YURhdGEgKCZmaS0+Y20sIGl0ZXJfaWR4KSkgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgewot ICAgICAgICAgICAgICAgICAgICAgZHIuaXRlciA9IEl0ZXJJbml0ICgmZmktPnRlbXBsYXRlW2l0 ZXJfaWR4ICsgMV0sIE5PX1ZBTFVFKTsKLSsgICAgICAgICAgICAgICAgICAgIGlmICghZHIuaXRl cikKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAg ICAgICBkID0gQ2hhaW5NZ3JTZXREYXRhICgmZmktPmNtLCBpdGVyX2lkeCwgZHIpOwotKyAgICAg ICAgICAgICAgICAgICAgaWYgKCFkKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgSXRlckZy ZWUgKGRyLml0ZXIpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSsgICAg ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAv KmVuZGlmKi8KLSAgICAgICAgICAgICAgICAgaW5mby0+Y291bnRlci5pdGVyID0gZC0+aXRlcjsK LUBAIC0xMTMwLDYgKzExODYsNyBAQCBzdGF0aWMgWGltRnJhbWVUeXBlIEZyYW1lSW5zdFBlZWtO ZXh0VHlwZSAoRnJhbWVJbnN0IGZpLCBYaW1GcmFtZVR5cGVJbmZvIGluZm8pCi0gICAgICAgICAg ICAgcmVnaXN0ZXIgaW50IHVuaXQ7Ci0gICAgICAgICAgICAgcmVnaXN0ZXIgaW50IG51bWJlcjsK LSAgICAgICAgICAgICByZWdpc3RlciBpbnQgc2l6ZTsKLSsgICAgICAgICAgICByZWdpc3RlciBp bnQgczsKLSAgICAgICAgICAgICByZWdpc3RlciBpbnQgaTsKLSAKLSAgICAgICAgICAgICB1bml0 ID0gX1VOSVQgKChsb25nKSBmaS0+dGVtcGxhdGVbZmktPmN1cl9ub10uZGF0YSk7Ci1AQCAtMTE0 MSwxMSArMTE5OCwyMSBAQCBzdGF0aWMgWGltRnJhbWVUeXBlIEZyYW1lSW5zdFBlZWtOZXh0VHlw ZSAoRnJhbWVJbnN0IGZpLCBYaW1GcmFtZVR5cGVJbmZvIGluZm8pCi0gICAgICAgICAgICAgewot ICAgICAgICAgICAgICAgICBpID0gX0ZyYW1lSW5zdERlY3JlbWVudCAoZmktPnRlbXBsYXRlLCBp KTsKLSAgICAgICAgICAgICAgICAgYXNzZXJ0IChpID49IDApOwotLSAgICAgICAgICAgICAgICBz aXplICs9IF9GcmFtZUluc3RHZXRJdGVtU2l6ZSAoZmksIGkpOwotKyAgICAgICAgICAgICAgICBz ID0gX0ZyYW1lSW5zdEdldEl0ZW1TaXplIChmaSwgaSk7Ci0rICAgICAgICAgICAgICAgIGlmIChz ID09IE5PX1ZBTFVFKSB7Ci0rICAgICAgICAgICAgICAgICAgICBzaXplID0gTk9fVkFMVUU7Ci0r ICAgICAgICAgICAgICAgICAgICBudW1iZXIgPSAwOwotKyAgICAgICAgICAgICAgICAgICAgYnJl YWs7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgICAgICBzaXpl ICs9IHM7Ci0rICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgbnVtYmVyLS07Ci0g ICAgICAgICAgICAgfQotICAgICAgICAgICAgIC8qZW5kd2hpbGUqLwotLSAgICAgICAgICAgIGlu Zm8tPm51bSA9ICh1bml0IC0gKHNpemUldW5pdCkpJXVuaXQ7Ci0rICAgICAgICAgICAgaWYgKHNp emUgPT0gTk9fVkFMVUUpCi0rICAgICAgICAgICAgICAgIGluZm8tPm51bSA9IE5PX1ZBTFVFOwot KyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgaW5mby0+bnVtID0gKHVuaXQgLSAo c2l6ZSV1bml0KSkldW5pdDsKLSAgICAgICAgIH0KLSAgICAgICAgIC8qZW5kaWYqLwotICAgICAg ICAgYnJlYWs7Ci1AQCAtMTE1OSw3ICsxMjI2LDEzIEBAIHN0YXRpYyBYaW1GcmFtZVR5cGUgRnJh bWVJbnN0UGVla05leHRUeXBlIChGcmFtZUluc3QgZmksIFhpbUZyYW1lVHlwZUluZm8gaW5mbykK LSAgICAgICAgICAgICBpZiAoKGQgPSBDaGFpbk1nckdldEV4dHJhRGF0YSAoJmZpLT5jbSwgZmkt PmN1cl9ubykpID09IE5VTEwpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBkci5p dGVyID0gSXRlckluaXQgKCZmaS0+dGVtcGxhdGVbZmktPmN1cl9ubyArIDFdLCBOT19WQUxVRSk7 Ci0rICAgICAgICAgICAgICAgIGlmICghZHIuaXRlcikKLSsgICAgICAgICAgICAgICAgICAgIHJl dHVybiAtMTsKLSAgICAgICAgICAgICAgICAgZCA9IENoYWluTWdyU2V0RGF0YSAoJmZpLT5jbSwg ZmktPmN1cl9ubywgZHIpOwotKyAgICAgICAgICAgICAgICBpZiAoIWQpIHsKLSsgICAgICAgICAg ICAgICAgICAgIEl0ZXJGcmVlIChkci5pdGVyKTsKLSsgICAgICAgICAgICAgICAgICAgIHJldHVy biAtMTsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAv KmVuZGlmKi8KLSAgICAgICAgICAgICBzdWJfdHlwZSA9IEl0ZXJQZWVrTmV4dFR5cGUgKGQtPml0 ZXIsIGluZm8pOwotQEAgLTExODAsNyArMTI1MywxMyBAQCBzdGF0aWMgWGltRnJhbWVUeXBlIEZy YW1lSW5zdFBlZWtOZXh0VHlwZSAoRnJhbWVJbnN0IGZpLCBYaW1GcmFtZVR5cGVJbmZvIGluZm8p Ci0gICAgICAgICAgICAgaWYgKChkID0gQ2hhaW5NZ3JHZXRFeHRyYURhdGEgKCZmaS0+Y20sIGZp LT5jdXJfbm8pKSA9PSBOVUxMKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgZHIu ZmkgPSBGcmFtZUluc3RJbml0IChmaS0+dGVtcGxhdGVbZmktPmN1cl9ubyArIDFdLmRhdGEpOwot KyAgICAgICAgICAgICAgICBpZiAoIWRyLmZpKQotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IC0xOwotICAgICAgICAgICAgICAgICBkID0gQ2hhaW5NZ3JTZXREYXRhICgmZmktPmNtLCBmaS0+ Y3VyX25vLCBkcik7Ci0rICAgICAgICAgICAgICAgIGlmICghZCkgewotKyAgICAgICAgICAgICAg ICAgICAgRnJhbWVJbnN0RnJlZSAoZHIuZmkpOwotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IC0xOwotKyAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIC8q ZW5kaWYqLwotICAgICAgICAgICAgIHN1Yl90eXBlID0gRnJhbWVJbnN0UGVla05leHRUeXBlIChk LT5maSwgaW5mbyk7Ci1AQCAtMTIwMiw2ICsxMjgxLDExIEBAIHN0YXRpYyBCb29sIEZyYW1lSW5z dElzSXRlckxvb3BFbmQgKEZyYW1lSW5zdCBmaSkKLSB7Ci0gICAgIEJvb2wgcmV0ID0gRmFsc2U7 Ci0gCi0rICAgIGlmICghZmkpIHsKLSsgICAgICAgIGZwcmludGYgKHN0ZGVyciwgIihYSU0tSU1k a2l0KSBXQVJOSU5HOiBmaSAhPSBOVUxMIGluICVzOiVzLlxuIiwKLSsgICAgICAgICAgICAgICAg IF9fRklMRV9fLCBYSU1fU1RSRlVOQyk7Ci0rICAgICAgICByZXR1cm4gVHJ1ZTsKLSsgICAgfQot ICAgICBpZiAoZmktPnRlbXBsYXRlW2ZpLT5jdXJfbm9dLnR5cGUgPT0gSVRFUikKLSAgICAgewot ICAgICAgICAgRXh0cmFEYXRhIGQgPSBDaGFpbk1nckdldEV4dHJhRGF0YSAoJmZpLT5jbSwgZmkt PmN1cl9ubyk7Ci1AQCAtMTMxMyw2ICsxMzk3LDExIEBAIHN0YXRpYyBGbVN0YXR1cyBGcmFtZUlu c3RTZXRTaXplIChGcmFtZUluc3QgZmksIGludCBudW0pCi0gICAgIFhpbUZyYW1lVHlwZSB0eXBl OwotICAgICByZWdpc3RlciBpbnQgaTsKLSAKLSsgICAgaWYgKCFmaSkgewotKyAgICAgICAgZnBy aW50ZiAoc3RkZXJyLCAiKFhJTS1JTWRraXQpIFdBUk5JTkc6IGZpICE9IE5VTEwgaW4gJXM6JXMu XG4iLAotKyAgICAgICAgICAgICAgICAgX19GSUxFX18sIFhJTV9TVFJGVU5DKTsKLSsgICAgICAg IHJldHVybiBGbU5vTW9yZURhdGE7Ci0rICAgIH0KLSAgICAgaSA9IDA7Ci0gICAgIHdoaWxlICgo dHlwZSA9IGZpLT50ZW1wbGF0ZVtpXS50eXBlKSAhPSBFT0wpCi0gICAgIHsKLUBAIC0xMzIzLDYg KzE0MTIsOCBAQCBzdGF0aWMgRm1TdGF0dXMgRnJhbWVJbnN0U2V0U2l6ZSAoRnJhbWVJbnN0IGZp LCBpbnQgbnVtKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgZHIubnVtID0gLTE7 Ci0gICAgICAgICAgICAgICAgIGQgPSBDaGFpbk1nclNldERhdGEgKCZmaS0+Y20sIGksIGRyKTsK LSsgICAgICAgICAgICAgICAgaWYgKCFkKQotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZt Tm9Nb3JlRGF0YTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgLyplbmRpZiovCi0gICAg ICAgICAgICAgaWYgKGQtPm51bSA9PSBOT19WQUxVRSkKLUBAIC0xMzM2LDcgKzE0MjcsMTMgQEAg c3RhdGljIEZtU3RhdHVzIEZyYW1lSW5zdFNldFNpemUgKEZyYW1lSW5zdCBmaSwgaW50IG51bSkK LSAgICAgICAgICAgICBpZiAoKGQgPSBDaGFpbk1nckdldEV4dHJhRGF0YSAoJmZpLT5jbSwgaSkp ID09IE5VTEwpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBkci5pdGVyID0gSXRl ckluaXQgKCZmaS0+dGVtcGxhdGVbaSArIDFdLCBOT19WQUxVRSk7Ci0rICAgICAgICAgICAgICAg IGlmICghZHIuaXRlcikKLSsgICAgICAgICAgICAgICAgICAgIHJldHVybiBGbU5vTW9yZURhdGE7 Ci0gICAgICAgICAgICAgICAgIGQgPSBDaGFpbk1nclNldERhdGEgKCZmaS0+Y20sIGksIGRyKTsK LSsgICAgICAgICAgICAgICAgaWYgKCFkKSB7Ci0rICAgICAgICAgICAgICAgICAgICBJdGVyRnJl ZSAoZHIuaXRlcik7Ci0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gRm1Ob01vcmVEYXRhOwot KyAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIC8qZW5kaWYq LwotICAgICAgICAgICAgIGlmIChJdGVyU2V0U2l6ZSAoZC0+aXRlciwgbnVtKSA9PSBGbVN1Y2Nl c3MpCi1AQCAtMTM0OCw3ICsxNDQ1LDEzIEBAIHN0YXRpYyBGbVN0YXR1cyBGcmFtZUluc3RTZXRT aXplIChGcmFtZUluc3QgZmksIGludCBudW0pCi0gICAgICAgICAgICAgaWYgKChkID0gQ2hhaW5N Z3JHZXRFeHRyYURhdGEoJmZpLT5jbSwgaSkpID09IE5VTEwpCi0gICAgICAgICAgICAgewotICAg ICAgICAgICAgICAgICBkci5maSA9IEZyYW1lSW5zdEluaXQoZmktPnRlbXBsYXRlW2kgKyAxXS5k YXRhKTsKLS0gICAgICAgICAgICAgICAgZCA9IENoYWluTWdyU2V0RGF0YSgmZmktPmNtLCBpLCBk cik7Ci0rICAgICAgICAgICAgICAgIGlmICghZHIuZmkpCi0rICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gRm1Ob01vcmVEYXRhOwotKyAgICAgICAgICAgICAgICBkID0gQ2hhaW5NZ3JTZXREYXRh ICgmZmktPmNtLCBpLCBkcik7Ci0rICAgICAgICAgICAgICAgIGlmICghZCkgewotKyAgICAgICAg ICAgICAgICAgICAgRnJhbWVJbnN0RnJlZSAoZHIuZmkpOwotKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIEZtTm9Nb3JlRGF0YTsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICAvKmVuZGlmKi8KLSAgICAgICAgICAgICBpZiAoRnJhbWVJbnN0U2V0U2l6 ZShkLT5maSwgbnVtKSA9PSBGbVN1Y2Nlc3MpCi1AQCAtMTM3NCw2ICsxNDc3LDExIEBAIHN0YXRp YyBpbnQgRnJhbWVJbnN0R2V0U2l6ZSAoRnJhbWVJbnN0IGZpKQotICAgICBFeHRyYURhdGFSZWMg ZHI7Ci0gICAgIGludCByZXRfc2l6ZTsKLSAKLSsgICAgaWYgKCFmaSkgewotKyAgICAgICAgZnBy aW50ZiAoc3RkZXJyLCAiKFhJTS1JTWRraXQpIFdBUk5JTkc6IGZpICE9IE5VTEwgaW4gJXM6JXMu XG4iLAotKyAgICAgICAgICAgICAgICAgX19GSUxFX18sIFhJTV9TVFJGVU5DKTsKLSsgICAgICAg IHJldHVybiBOT19WQUxJRF9GSUVMRDsKLSsgICAgfQotICAgICBpID0gZmktPmN1cl9ubzsKLSAg ICAgd2hpbGUgKCh0eXBlID0gZmktPnRlbXBsYXRlW2ldLnR5cGUpICE9IEVPTCkKLSAgICAgewot QEAgLTEzODksNyArMTQ5NywxMyBAQCBzdGF0aWMgaW50IEZyYW1lSW5zdEdldFNpemUgKEZyYW1l SW5zdCBmaSkKLSAgICAgICAgICAgICBpZiAoKGQgPSBDaGFpbk1nckdldEV4dHJhRGF0YSAoJmZp LT5jbSwgaSkpID09IE5VTEwpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBkci5p dGVyID0gSXRlckluaXQgKCZmaS0+dGVtcGxhdGVbaSArIDFdLCBOT19WQUxVRSk7Ci0rICAgICAg ICAgICAgICAgIGlmICghZHIuaXRlcikKLSsgICAgICAgICAgICAgICAgICAgIHJldHVybiBOT19W QUxJRF9GSUVMRDsKLSAgICAgICAgICAgICAgICAgZCA9IENoYWluTWdyU2V0RGF0YSAoJmZpLT5j bSwgaSwgZHIpOwotKyAgICAgICAgICAgICAgICBpZiAoIWQpIHsKLSsgICAgICAgICAgICAgICAg ICAgIEl0ZXJGcmVlIChkci5pdGVyKTsKLSsgICAgICAgICAgICAgICAgICAgIHJldHVybiBOT19W QUxJRF9GSUVMRDsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICAvKmVuZGlmKi8KLSAgICAgICAgICAgICByZXRfc2l6ZSA9IEl0ZXJHZXRTaXplKGQtPml0 ZXIpOwotQEAgLTE0MDIsNyArMTUxNiwxMyBAQCBzdGF0aWMgaW50IEZyYW1lSW5zdEdldFNpemUg KEZyYW1lSW5zdCBmaSkKLSAgICAgICAgICAgICBpZiAoKGQgPSBDaGFpbk1nckdldEV4dHJhRGF0 YSAoJmZpLT5jbSwgaSkpID09IE5VTEwpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAg ICBkci5maSA9IEZyYW1lSW5zdEluaXQgKGZpLT50ZW1wbGF0ZVtpICsgMV0uZGF0YSk7Ci0rICAg ICAgICAgICAgICAgIGlmICghZHIuZmkpCi0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gTk9f VkFMSURfRklFTEQ7Ci0gICAgICAgICAgICAgICAgIGQgPSBDaGFpbk1nclNldERhdGEgKCZmaS0+ Y20sIGksIGRyKTsKLSsgICAgICAgICAgICAgICAgaWYgKCFkKSB7Ci0rICAgICAgICAgICAgICAg ICAgICBGcmFtZUluc3RGcmVlIChkci5maSk7Ci0rICAgICAgICAgICAgICAgICAgICByZXR1cm4g Tk9fVkFMSURfRklFTEQ7Ci0rICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICAgLyplbmRpZiovCi0gICAgICAgICAgICAgcmV0X3NpemUgPSBGcmFtZUluc3RHZXRT aXplIChkLT5maSk7Ci1AQCAtMTQyOCw2ICsxNTQ4LDExIEBAIHN0YXRpYyBGbVN0YXR1cyBGcmFt ZUluc3RTZXRJdGVyQ291bnQgKEZyYW1lSW5zdCBmaSwgaW50IG51bSkKLSAgICAgcmVnaXN0ZXIg aW50IGk7Ci0gICAgIFhpbUZyYW1lVHlwZSB0eXBlOwotIAotKyAgICBpZiAoIWZpKSB7Ci0rICAg ICAgICBmcHJpbnRmIChzdGRlcnIsICIoWElNLUlNZGtpdCkgV0FSTklORzogZmkgIT0gTlVMTCBp biAlczolcy5cbiIsCi0rICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgWElNX1NUUkZVTkMpOwot KyAgICAgICAgcmV0dXJuIEZtTm9Nb3JlRGF0YTsKLSsgICAgfQotICAgICBpID0gMDsKLSAgICAg d2hpbGUgKCh0eXBlID0gZmktPnRlbXBsYXRlW2ldLnR5cGUpICE9IEVPTCkKLSAgICAgewotQEAg LTE0MzcsNyArMTU2MiwxMiBAQCBzdGF0aWMgRm1TdGF0dXMgRnJhbWVJbnN0U2V0SXRlckNvdW50 IChGcmFtZUluc3QgZmksIGludCBudW0pCi0gICAgICAgICAgICAgaWYgKChkID0gQ2hhaW5NZ3JH ZXRFeHRyYURhdGEgKCZmaS0+Y20sIGkpKSA9PSBOVUxMKQotICAgICAgICAgICAgIHsKLSAgICAg ICAgICAgICAgICAgZHIuaXRlciA9IEl0ZXJJbml0ICgmZmktPnRlbXBsYXRlW2kgKyAxXSwgbnVt KTsKLS0gICAgICAgICAgICAgICAgKHZvaWQpQ2hhaW5NZ3JTZXREYXRhICgmZmktPmNtLCBpLCBk cik7Ci0rICAgICAgICAgICAgICAgIGlmICghZHIuaXRlcikKLSsgICAgICAgICAgICAgICAgICAg IHJldHVybiBGbU5vTW9yZURhdGE7Ci0rICAgICAgICAgICAgICAgIGlmICghQ2hhaW5NZ3JTZXRE YXRhICgmZmktPmNtLCBpLCBkcikpIHsKLSsgICAgICAgICAgICAgICAgICAgIEl0ZXJGcmVlIChk ci5pdGVyKTsKLSsgICAgICAgICAgICAgICAgICAgIHJldHVybiBGbU5vTW9yZURhdGE7Ci0rICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgcmV0dXJuIEZtU3VjY2VzczsKLSAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgLyplbmRpZiovCi1AQCAtMTQ1MCw3ICsxNTgwLDEzIEBA IHN0YXRpYyBGbVN0YXR1cyBGcmFtZUluc3RTZXRJdGVyQ291bnQgKEZyYW1lSW5zdCBmaSwgaW50 IG51bSkKLSAgICAgICAgICAgICBpZiAoKGQgPSBDaGFpbk1nckdldEV4dHJhRGF0YSAoJmZpLT5j bSwgaSkpID09IE5VTEwpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBkci5maSA9 IEZyYW1lSW5zdEluaXQgKGZpLT50ZW1wbGF0ZVtpICsgMV0uZGF0YSk7Ci0rICAgICAgICAgICAg ICAgIGlmICghZHIuZmkpCi0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gRm1Ob01vcmVEYXRh OwotICAgICAgICAgICAgICAgICBkID0gQ2hhaW5NZ3JTZXREYXRhICgmZmktPmNtLCBpLCBkcik7 Ci0rICAgICAgICAgICAgICAgIGlmICghZCkgewotKyAgICAgICAgICAgICAgICAgICAgRnJhbWVJ bnN0RnJlZSAoZHIuZmkpOwotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZtTm9Nb3JlRGF0 YTsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAvKmVu ZGlmKi8KLSAgICAgICAgICAgICBpZiAoRnJhbWVJbnN0U2V0SXRlckNvdW50IChkLT5maSwgbnVt KSA9PSBGbVN1Y2Nlc3MpCi1AQCAtMTQ3MiwxNCArMTYwOCwyNiBAQCBzdGF0aWMgRm1TdGF0dXMg RnJhbWVJbnN0U2V0SXRlckNvdW50IChGcmFtZUluc3QgZmksIGludCBudW0pCi0gc3RhdGljIGlu dCBGcmFtZUluc3RHZXRUb3RhbFNpemUgKEZyYW1lSW5zdCBmaSkKLSB7Ci0gICAgIHJlZ2lzdGVy IGludCBzaXplOwotKyAgICByZWdpc3RlciBpbnQgczsKLSAgICAgcmVnaXN0ZXIgaW50IGk7Ci0g Ci0gICAgIHNpemUgPSAwOwotICAgICBpID0gMDsKLSAKLSsgICAgaWYgKCFmaSkgewotKyAgICAg ICAgZnByaW50ZiAoc3RkZXJyLCAiKFhJTS1JTWRraXQpIFdBUk5JTkc6IGZpICE9IE5VTEwgaW4g JXM6JXMuXG4iLAotKyAgICAgICAgICAgICAgICAgX19GSUxFX18sIFhJTV9TVFJGVU5DKTsKLSsg ICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0gICAgIHdoaWxlIChmaS0+dGVtcGxhdGVbaV0udHlw ZSAhPSBFT0wpCi0gICAgIHsKLS0gICAgICAgIHNpemUgKz0gX0ZyYW1lSW5zdEdldEl0ZW1TaXpl IChmaSwgaSk7Ci0rICAgICAgICBzID0gX0ZyYW1lSW5zdEdldEl0ZW1TaXplIChmaSwgaSk7Ci0r ICAgICAgICBpZiAocyA9PSBOT19WQUxVRSkgewotKyAgICAgICAgICAgIHNpemUgPSBOT19WQUxV RTsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAg c2l6ZSArPSBzOwotKyAgICAgICAgfQotICAgICAgICAgYXNzZXJ0IChpID49IDApOwotICAgICAg ICAgaSA9IF9GcmFtZUluc3RJbmNyZW1lbnQgKGZpLT50ZW1wbGF0ZSwgaSk7Ci0gICAgIH0KLUBA IC0xNTI2LDggKzE2NzQsOCBAQCBzdGF0aWMgSXRlciBJdGVySW5pdCAoWGltRnJhbWUgZnJhbWUs IGludCBjb3VudCkKLSAKLSAgICAgaXQgPSAoSXRlcikgWG1hbGxvYyAoc2l6ZW9mIChJdGVyUmVj KSk7Ci0gICAgIGlmICghaXQpIHsKLS0gICAgICAgIGZwcmludGYgKHN0ZGVyciwgIihYSU0tSU1k a2l0KSBXQVJOSU5HOiBtYWxsb2MgZmFpbGVkIGluICVzOiVkLlxuIiwKLS0gICAgICAgICAgICAg ICAgIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0rICAgICAgICBmcHJpbnRmIChzdGRlcnIsICIoWElN LUlNZGtpdCkgV0FSTklORzogbWFsbG9jIGZhaWxlZCBpbiAlczolcy5cbiIsCi0rICAgICAgICAg ICAgICAgICBfX0ZJTEVfXywgWElNX1NUUkZVTkMpOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0g ICAgIH0KLSAgICAgaXQtPnRlbXBsYXRlID0gZnJhbWU7Ci1AQCAtMTYwMCw3ICsxNzQ4LDcgQEAg c3RhdGljIHZvaWQgSXRlckZyZWUgKEl0ZXIgaXQpCi0gICAgICAgICAgICAgRXh0cmFEYXRhUmVj IGRyOwotICAgICAKLSAgICAgICAgICAgICBDaGFpbkl0ZXJJbml0ICgmY2ksICZpdC0+Y20pOwot LSAgICAgICAgICAgIHdoaWxlIChDaGFpbkl0ZXJHZXROZXh0ICgmY2ksICZjb3VudCwgJmRyKSkK LSsgICAgICAgICAgICB3aGlsZSAoQ2hhaW5JdGVyR2V0TmV4dCAoJmNpLCAmY291bnQsICZkcikg JiYgZHIuZmkpCi0gICAgICAgICAgICAgICAgIEZyYW1lSW5zdEZyZWUgKGRyLmZpKTsKLSAgICAg ICAgICAgICAvKmVuZHdoaWxlKi8KLSAgICAgICAgICAgICBDaGFpbkl0ZXJGcmVlICgmY2kpOwot QEAgLTE2MzgsOCArMTc4NiwxMiBAQCBzdGF0aWMgQm9vbCBJdGVySXNMb29wRW5kIChJdGVyIGl0 LCBCb29sICpteXNlbGYpCi0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGVsc2UKLSAgICAg ICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIGlmIChGcmFtZUluc3RJc0VuZCAoZC0+ZmkpKQot LSAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgIGlmICghZC0+ZmkpIHsKLSsgICAg ICAgICAgICAgICAgICAgIGZwcmludGYgKHN0ZGVyciwgIihYSU0tSU1ka2l0KSBXQVJOSU5HOiBk LT5maSAhPSBOVUxMICIgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi aW4gJXM6JXMuXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sIFhJ TV9TVFJGVU5DKTsKLSsgICAgICAgICAgICAgICAgICAgIHJldCA9IFRydWU7Ci0rICAgICAgICAg ICAgICAgIH0gZWxzZSBpZiAoRnJhbWVJbnN0SXNFbmQgKGQtPmZpKSkgewotICAgICAgICAgICAg ICAgICAgICAgaXQtPmN1cl9ubysrOwotICAgICAgICAgICAgICAgICAgICAgaWYgKCFpdC0+YWxs b3dfZXhwYW5zaW9uICAmJiAgaXQtPmN1cl9ubyA9PSBpdC0+bWF4X2NvdW50KQotICAgICAgICAg ICAgICAgICAgICAgewotQEAgLTE2NzcsOSArMTgyOSw5IEBAIHN0YXRpYyBYaW1GcmFtZVR5cGUg SXRlckdldE5leHRUeXBlIChJdGVyIGl0LCBYaW1GcmFtZVR5cGVJbmZvIGluZm8pCi0gICAgIFhp bUZyYW1lVHlwZSB0eXBlOwotIAotICAgICBpZiAoIWl0IHx8ICFpdC0+dGVtcGxhdGUpIHsKLS0g ICAgICAgIGZwcmludGYgKHN0ZGVyciwgIihYSU0tSU1ka2l0KSBXQVJOSU5HOiBtYWxsb2MgZmFp bGVkIGluICVzOiVkLlxuIiwKLS0gICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXyk7 Ci0tCXJldHVybiAoWGltRnJhbWVUeXBlKSBOVUxMOwotKyAgICAgICAgZnByaW50ZiAoc3RkZXJy LCAiKFhJTS1JTWRraXQpIFdBUk5JTkc6IG1hbGxvYyBmYWlsZWQgaW4gJXM6JXMuXG4iLAotKyAg ICAgICAgICAgICAgICAgX19GSUxFX18sIFhJTV9TVFJGVU5DKTsKLSsJcmV0dXJuIChYaW1GcmFt ZVR5cGUpTlVMTDsKLSAgICAgfQotIAotICAgICB0eXBlID0gaXQtPnRlbXBsYXRlLT50eXBlOwot QEAgLTE3MzIsNyArMTg4NCwxMyBAQCBzdGF0aWMgWGltRnJhbWVUeXBlIEl0ZXJHZXROZXh0VHlw ZSAoSXRlciBpdCwgWGltRnJhbWVUeXBlSW5mbyBpbmZvKQotICAgICAgICAgICAgIGlmICgoZCA9 IENoYWluTWdyR2V0RXh0cmFEYXRhICgmaXQtPmNtLCBpdC0+Y3VyX25vKSkgPT0gTlVMTCkKLSAg ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIGRyLml0ZXIgPSBJdGVySW5pdCAoaXQtPnRl bXBsYXRlICsgMSwgTk9fVkFMVUUpOwotKyAgICAgICAgICAgICAgICBpZiAoIWRyLml0ZXIpCi0r CSAgICAgICAgICAgIHJldHVybiAoWGltRnJhbWVUeXBlKU5VTEw7Ci0gICAgICAgICAgICAgICAg IGQgPSBDaGFpbk1nclNldERhdGEgKCZpdC0+Y20sIGl0LT5jdXJfbm8sIGRyKTsKLSsgICAgICAg ICAgICAgICAgaWYgKCFkKSB7Ci0rICAgICAgICAgICAgICAgICAgICBJdGVyRnJlZSAoZHIuaXRl cik7Ci0rCSAgICAgICAgICAgIHJldHVybiAoWGltRnJhbWVUeXBlKU5VTEw7Ci0rICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgLyplbmRpZiovCi0gCi1AQCAt MTc1NSw3ICsxOTEzLDEzIEBAIHN0YXRpYyBYaW1GcmFtZVR5cGUgSXRlckdldE5leHRUeXBlIChJ dGVyIGl0LCBYaW1GcmFtZVR5cGVJbmZvIGluZm8pCi0gICAgICAgICAgICAgaWYgKChkID0gQ2hh aW5NZ3JHZXRFeHRyYURhdGEgKCZpdC0+Y20sIGl0LT5jdXJfbm8pKSA9PSBOVUxMKQotICAgICAg ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgZHIuZmkgPSBGcmFtZUluc3RJbml0IChpdC0+dGVt cGxhdGVbMV0uZGF0YSk7Ci0rICAgICAgICAgICAgICAgIGlmICghZHIuZmkpCi0rCSAgICAgICAg ICAgIHJldHVybiAoWGltRnJhbWVUeXBlKU5VTEw7Ci0gICAgICAgICAgICAgICAgIGQgPSBDaGFp bk1nclNldERhdGEgKCZpdC0+Y20sIGl0LT5jdXJfbm8sIGRyKTsKLSsgICAgICAgICAgICAgICAg aWYgKCFkKSB7Ci0rICAgICAgICAgICAgICAgICAgICBGcmFtZUluc3RGcmVlIChkci5maSk7Ci0r CSAgICAgICAgICAgIHJldHVybiAoWGltRnJhbWVUeXBlKU5VTEw7Ci0rICAgICAgICAgICAgICAg IH0KLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgLyplbmRpZiovCi0gCi1AQCAtMTc4MSw5 ICsxOTQ1LDkgQEAgc3RhdGljIFhpbUZyYW1lVHlwZSBJdGVyUGVla05leHRUeXBlIChJdGVyIGl0 LCBYaW1GcmFtZVR5cGVJbmZvIGluZm8pCi0gICAgIFhpbUZyYW1lVHlwZSB0eXBlOwotIAotICAg ICBpZiAoIWl0LT50ZW1wbGF0ZSkgewotLSAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiKFhJTS1J TWRraXQpIFdBUk5JTkc6IGRlcmVmZXJlbmNlIHBvaW50ZXIgJXM6JWQuXG4iLAotLSAgICAgICAg ICAgICAgICAgX19GSUxFX18sIF9fTElORV9fKTsKLS0gICAgICAgIHJldHVybiAoWGltRnJhbWVU eXBlKSBOVUxMOwotKyAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiKFhJTS1JTWRraXQpIFdBUk5J Tkc6IGRlcmVmZXJlbmNlIHBvaW50ZXIgJXM6JXMuXG4iLAotKyAgICAgICAgICAgICAgICAgX19G SUxFX18sIFhJTV9TVFJGVU5DKTsKLSsgICAgICAgIHJldHVybiAoWGltRnJhbWVUeXBlKU5VTEw7 Ci0gICAgIH0KLSAKLSAgICAgdHlwZSA9IGl0LT50ZW1wbGF0ZS0+dHlwZTsKLUBAIC0xODIzLDcg KzE5ODcsMTMgQEAgc3RhdGljIFhpbUZyYW1lVHlwZSBJdGVyUGVla05leHRUeXBlIChJdGVyIGl0 LCBYaW1GcmFtZVR5cGVJbmZvIGluZm8pCi0gICAgICAgICAgICAgaWYgKChkID0gQ2hhaW5NZ3JH ZXRFeHRyYURhdGEgKCZpdC0+Y20sIGl0LT5jdXJfbm8pKSA9PSBOVUxMKQotICAgICAgICAgICAg IHsKLSAgICAgICAgICAgICAgICAgZHIuaXRlciA9IEl0ZXJJbml0IChpdC0+dGVtcGxhdGUgKyAx LCBOT19WQUxVRSk7Ci0rICAgICAgICAgICAgICAgIGlmICghZHIuaXRlcikKLSsgICAgICAgICAg ICAgICAgICAgIHJldHVybiAoWGltRnJhbWVUeXBlKU5VTEw7Ci0gICAgICAgICAgICAgICAgIGQg PSBDaGFpbk1nclNldERhdGEgKCZpdC0+Y20sIGl0LT5jdXJfbm8sIGRyKTsKLSsgICAgICAgICAg ICAgICAgaWYgKCFkKSB7Ci0rICAgICAgICAgICAgICAgICAgICBJdGVyRnJlZSAoZHIuaXRlcik7 Ci0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFhpbUZyYW1lVHlwZSlOVUxMOwotKyAgICAg ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIC8qZW5kaWYqLwotIAot QEAgLTE4NDMsNyArMjAxMywxMyBAQCBzdGF0aWMgWGltRnJhbWVUeXBlIEl0ZXJQZWVrTmV4dFR5 cGUgKEl0ZXIgaXQsIFhpbUZyYW1lVHlwZUluZm8gaW5mbykKLSAgICAgICAgICAgICBpZiAoKGQg PSBDaGFpbk1nckdldEV4dHJhRGF0YSAoJml0LT5jbSwgaXQtPmN1cl9ubykpID09IE5VTEwpCi0g ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBkci5maSA9IEZyYW1lSW5zdEluaXQgKGl0 LT50ZW1wbGF0ZVsxXS5kYXRhKTsKLSsgICAgICAgICAgICAgICAgaWYgKCFkci5maSkKLSsgICAg ICAgICAgICAgICAgICAgIHJldHVybiAoWGltRnJhbWVUeXBlKU5VTEw7Ci0gICAgICAgICAgICAg ICAgIGQgPSBDaGFpbk1nclNldERhdGEgKCZpdC0+Y20sIGl0LT5jdXJfbm8sIGRyKTsKLSsgICAg ICAgICAgICAgICAgaWYgKCFkKSB7Ci0rICAgICAgICAgICAgICAgICAgICBGcmFtZUluc3RGcmVl IChkci5maSk7Ci0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFhpbUZyYW1lVHlwZSlOVUxM OwotKyAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIC8qZW5k aWYqLwotIAotQEAgLTE4ODUsOSArMjA2MSw4IEBAIHN0YXRpYyBGbVN0YXR1cyBJdGVyU2V0U2l6 ZSAoSXRlciBpdCwgaW50IG51bSkKLSAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg ICAgICAgZHIubnVtID0gTk9fVkFMVUU7Ci0gICAgICAgICAgICAgICAgICAgICBkID0gQ2hhaW5N Z3JTZXREYXRhICgmaXQtPmNtLCBpLCBkcik7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAg ICAgICAgICAgaWYgKCFkKSB7Ci0tICAgICAgICAgICAgICAgICAgICByZXR1cm4gRm1Ob01vcmVE YXRhOwotKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkKQotKyAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBGbU5vTW9yZURhdGE7Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICAgICAgLyplbmRpZiovCi0gICAgICAgICAgICAgICAgIGlmIChkLT5udW0gPT0gTk9fVkFMVUUp Ci1AQCAtMTkwMyw3ICsyMDc4LDggQEAgc3RhdGljIEZtU3RhdHVzIEl0ZXJTZXRTaXplIChJdGVy IGl0LCBpbnQgbnVtKQotICAgICAgICAgICAgICAgICBFeHRyYURhdGFSZWMgZHI7Ci0gICAgICAg ICAgICAgICAgIAotICAgICAgICAgICAgICAgICBkci5udW0gPSBudW07Ci0tICAgICAgICAgICAg ICAgIENoYWluTWdyU2V0RGF0YSAoJml0LT5jbSwgaXQtPm1heF9jb3VudCwgZHIpOwotKyAgICAg ICAgICAgICAgICBpZiAoIUNoYWluTWdyU2V0RGF0YSAoJml0LT5jbSwgaXQtPm1heF9jb3VudCwg ZHIpKQotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZtTm9Nb3JlRGF0YTsKLSAgICAgICAg ICAgICAgICAgaXQtPm1heF9jb3VudCsrOwotICAgICAKLSAgICAgICAgICAgICAgICAgcmV0dXJu IEZtU3VjY2VzczsKLUBAIC0xOTIyLDcgKzIwOTgsMTMgQEAgc3RhdGljIEZtU3RhdHVzIEl0ZXJT ZXRTaXplIChJdGVyIGl0LCBpbnQgbnVtKQotICAgICAgICAgICAgICAgICBpZiAoKGQgPSBDaGFp bk1nckdldEV4dHJhRGF0YSAoJml0LT5jbSwgaSkpID09IE5VTEwpCi0gICAgICAgICAgICAgICAg IHsKLSAgICAgICAgICAgICAgICAgICAgIGRyLml0ZXIgPSBJdGVySW5pdCAoaXQtPnRlbXBsYXRl ICsgMSwgTk9fVkFMVUUpOwotKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkci5pdGVyKQotKyAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGbU5vTW9yZURhdGE7Ci0gICAgICAgICAgICAg ICAgICAgICBkID0gQ2hhaW5NZ3JTZXREYXRhICgmaXQtPmNtLCBpLCBkcik7Ci0rICAgICAgICAg ICAgICAgICAgICBpZiAoIWQpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBJdGVyRnJlZSAo ZHIuaXRlcik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZtTm9Nb3JlRGF0YTsK LSsgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg ICAgICAvKmVuZGlmKi8KLSAgICAgICAgICAgICAgICAgaWYgKEl0ZXJTZXRTaXplIChkLT5pdGVy LCBudW0pID09IEZtU3VjY2VzcykKLUBAIC0xOTM1LDcgKzIxMTcsMTIgQEAgc3RhdGljIEZtU3Rh dHVzIEl0ZXJTZXRTaXplIChJdGVyIGl0LCBpbnQgbnVtKQotICAgICAgICAgICAgICAgICBFeHRy YURhdGFSZWMgZHI7Ci0gCi0gICAgICAgICAgICAgICAgIGRyLml0ZXIgPSBJdGVySW5pdCAoaXQt PnRlbXBsYXRlICsgMSwgTk9fVkFMVUUpOwotLSAgICAgICAgICAgICAgICBDaGFpbk1nclNldERh dGEgKCZpdC0+Y20sIGl0LT5tYXhfY291bnQsIGRyKTsKLSsgICAgICAgICAgICAgICAgaWYgKCFk ci5pdGVyKQotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZtTm9Nb3JlRGF0YTsKLSsgICAg ICAgICAgICAgICAgaWYgKCFDaGFpbk1nclNldERhdGEgKCZpdC0+Y20sIGl0LT5tYXhfY291bnQs IGRyKSkgewotKyAgICAgICAgICAgICAgICAgICAgSXRlckZyZWUgKGRyLml0ZXIpOwotKyAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIEZtTm9Nb3JlRGF0YTsKLSsgICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgICAgICBpdC0+bWF4X2NvdW50Kys7Ci0gCi0gICAgICAgICAgICAgICAgIGlm IChJdGVyU2V0U2l6ZShkci5pdGVyLCBudW0pID09IEZtU3VjY2VzcykKLUBAIC0xOTU2LDcgKzIx NDMsMTMgQEAgc3RhdGljIEZtU3RhdHVzIEl0ZXJTZXRTaXplIChJdGVyIGl0LCBpbnQgbnVtKQot ICAgICAgICAgICAgICAgICBpZiAoKGQgPSBDaGFpbk1nckdldEV4dHJhRGF0YSAoJml0LT5jbSwg aSkpID09IE5VTEwpCi0gICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIGRy LmZpID0gRnJhbWVJbnN0SW5pdCAoaXQtPnRlbXBsYXRlWzFdLmRhdGEpOwotKyAgICAgICAgICAg ICAgICAgICAgaWYgKCFkci5maSkKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRm1O b01vcmVEYXRhOwotICAgICAgICAgICAgICAgICAgICAgZCA9IENoYWluTWdyU2V0RGF0YSAoJml0 LT5jbSwgaSwgZHIpOwotKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkKSB7Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgRnJhbWVJbnN0RnJlZSAoZHIuZmkpOwotKyAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBGbU5vTW9yZURhdGE7Ci0rICAgICAgICAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgLyplbmRpZiovCi0gICAgICAgICAgICAg ICAgIGlmIChGcmFtZUluc3RTZXRTaXplIChkLT5maSwgbnVtKSA9PSBGbVN1Y2Nlc3MpCi1AQCAt MTk2OSw3ICsyMTYyLDEyIEBAIHN0YXRpYyBGbVN0YXR1cyBJdGVyU2V0U2l6ZSAoSXRlciBpdCwg aW50IG51bSkKLSAgICAgICAgICAgICAgICAgRXh0cmFEYXRhUmVjIGRyOwotIAotICAgICAgICAg ICAgICAgICBkci5maSA9IEZyYW1lSW5zdEluaXQgKGl0LT50ZW1wbGF0ZVsxXS5kYXRhKTsKLS0g ICAgICAgICAgICAgICAgQ2hhaW5NZ3JTZXREYXRhICgmaXQtPmNtLCBpdC0+bWF4X2NvdW50LCBk cik7Ci0rICAgICAgICAgICAgICAgIGlmICghZHIuZmkpCi0rICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gRm1Ob01vcmVEYXRhOwotKyAgICAgICAgICAgICAgICBpZiAoIUNoYWluTWdyU2V0RGF0 YSAoJml0LT5jbSwgaXQtPm1heF9jb3VudCwgZHIpKSB7Ci0rICAgICAgICAgICAgICAgICAgICBG cmFtZUluc3RGcmVlIChkci5maSk7Ci0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gRm1Ob01v cmVEYXRhOwotKyAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIGl0LT5tYXhfY291 bnQrKzsKLSAKLSAgICAgICAgICAgICAgICAgaWYgKEZyYW1lSW5zdFNldFNpemUgKGRyLmZpLCBu dW0pID09IEZtU3VjY2VzcykKLUBAIC0yMDEzLDcgKzIyMTEsMTMgQEAgc3RhdGljIGludCBJdGVy R2V0U2l6ZSAoSXRlciBpdCkKLSAgICAgICAgICAgICBpZiAoKGQgPSBDaGFpbk1nckdldEV4dHJh RGF0YSAoJml0LT5jbSwgaSkpID09IE5VTEwpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAg ICAgICBkci5pdGVyID0gSXRlckluaXQgKGl0LT50ZW1wbGF0ZSArIDEsIE5PX1ZBTFVFKTsKLSsg ICAgICAgICAgICAgICAgaWYgKCFkci5pdGVyKQotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IE5PX1ZBTElEX0ZJRUxEOwotICAgICAgICAgICAgICAgICBkID0gQ2hhaW5NZ3JTZXREYXRhICgm aXQtPmNtLCBpLCBkcik7Ci0rICAgICAgICAgICAgICAgIGlmICghZCkgewotKyAgICAgICAgICAg ICAgICAgICAgSXRlckZyZWUgKGRyLml0ZXIpOwotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IE5PX1ZBTElEX0ZJRUxEOwotKyAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfQotICAg ICAgICAgICAgIC8qZW5kaWYqLwotICAgICAgICAgICAgIHJldF9zaXplID0gSXRlckdldFNpemUg KGQtPml0ZXIpOwotQEAgLTIwMzIsNyArMjIzNiwxMyBAQCBzdGF0aWMgaW50IEl0ZXJHZXRTaXpl IChJdGVyIGl0KQotICAgICAgICAgICAgIGlmICgoZCA9IENoYWluTWdyR2V0RXh0cmFEYXRhICgm aXQtPmNtLCBpKSkgPT0gTlVMTCkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIGRy LmZpID0gRnJhbWVJbnN0SW5pdCAoaXQtPnRlbXBsYXRlWzFdLmRhdGEpOwotKyAgICAgICAgICAg ICAgICBpZiAoIWRyLmZpKQotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5PX1ZBTElEX0ZJ RUxEOwotICAgICAgICAgICAgICAgICBkID0gQ2hhaW5NZ3JTZXREYXRhICgmaXQtPmNtLCBpLCBk cik7Ci0rICAgICAgICAgICAgICAgIGlmICghZCkgewotKyAgICAgICAgICAgICAgICAgICAgRnJh bWVJbnN0RnJlZSAoZHIuZmkpOwotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5PX1ZBTElE X0ZJRUxEOwotKyAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAg IC8qZW5kaWYqLwotICAgICAgICAgICAgIHJldF9zaXplID0gRnJhbWVJbnN0R2V0U2l6ZSAoZC0+ ZmkpOwotQEAgLTIwNzcsNyArMjI4NywxMiBAQCBzdGF0aWMgRm1TdGF0dXMgSXRlclNldEl0ZXJD b3VudCAoSXRlciBpdCwgaW50IG51bSkKLSAgICAgICAgICAgICBpZiAoKGQgPSBDaGFpbk1nckdl dEV4dHJhRGF0YSgmaXQtPmNtLCBpKSkgPT0gTlVMTCkKLSAgICAgICAgICAgICB7Ci0gICAgICAg ICAgICAgICAgIGRyLml0ZXIgPSBJdGVySW5pdChpdC0+dGVtcGxhdGUgKyAxLCBudW0pOwotLSAg ICAgICAgICAgICAgICAodm9pZClDaGFpbk1nclNldERhdGEoJml0LT5jbSwgaSwgZHIpOwotKyAg ICAgICAgICAgICAgICBpZiAoIWRyLml0ZXIpCi0rICAgICAgICAgICAgICAgICAgICByZXR1cm4g Rm1Ob01vcmVEYXRhOwotKyAgICAgICAgICAgICAgICBpZiAoIUNoYWluTWdyU2V0RGF0YSgmaXQt PmNtLCBpLCBkcikpIHsKLSsgICAgICAgICAgICAgICAgICAgIEl0ZXJGcmVlIChkci5pdGVyKTsK LSsgICAgICAgICAgICAgICAgICAgIHJldHVybiBGbU5vTW9yZURhdGE7Ci0rICAgICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgICAgICAgcmV0dXJuIEZtU3VjY2VzczsKLSAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgLyplbmRpZiovCi1AQCAtMjA5MSw3ICsyMzA2LDEyIEBAIHN0YXRpYyBG bVN0YXR1cyBJdGVyU2V0SXRlckNvdW50IChJdGVyIGl0LCBpbnQgbnVtKQotICAgICAgICAgICAg IEV4dHJhRGF0YVJlYyBkcjsKLSAKLSAgICAgICAgICAgICBkci5pdGVyID0gSXRlckluaXQgKGl0 LT50ZW1wbGF0ZSArIDEsIG51bSk7Ci0tICAgICAgICAgICAgQ2hhaW5NZ3JTZXREYXRhICgmaXQt PmNtLCBpdC0+bWF4X2NvdW50LCBkcik7Ci0rICAgICAgICAgICAgaWYgKCFkci5pdGVyKQotKyAg ICAgICAgICAgICAgICByZXR1cm4gRm1Ob01vcmVEYXRhOwotKyAgICAgICAgICAgIGlmICghQ2hh aW5NZ3JTZXREYXRhICgmaXQtPmNtLCBpdC0+bWF4X2NvdW50LCBkcikpIHsKLSsgICAgICAgICAg ICAgICAgSXRlckZyZWUgKGRyLml0ZXIpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gRm1Ob01v cmVEYXRhOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBpdC0+bWF4X2NvdW50Kys7Ci0g Ci0gICAgICAgICAgICAgcmV0dXJuIEZtU3VjY2VzczsKLUBAIC0yMTA4LDcgKzIzMjgsMTMgQEAg c3RhdGljIEZtU3RhdHVzIEl0ZXJTZXRJdGVyQ291bnQgKEl0ZXIgaXQsIGludCBudW0pCi0gICAg ICAgICAgICAgaWYgKChkID0gQ2hhaW5NZ3JHZXRFeHRyYURhdGEgKCZpdC0+Y20sIGkpKSA9PSBO VUxMKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgZHIuZmkgPSBGcmFtZUluc3RJ bml0IChpdC0+dGVtcGxhdGVbMV0uZGF0YSk7Ci0rICAgICAgICAgICAgICAgIGlmICghZHIuZmkp Ci0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gRm1Ob01vcmVEYXRhOwotICAgICAgICAgICAg ICAgICBkID0gQ2hhaW5NZ3JTZXREYXRhICgmaXQtPmNtLCBpLCBkcik7Ci0rICAgICAgICAgICAg ICAgIGlmICghZCkgewotKyAgICAgICAgICAgICAgICAgICAgRnJhbWVJbnN0RnJlZSAoZHIuZmkp OwotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZtTm9Nb3JlRGF0YTsKLSsgICAgICAgICAg ICAgICAgfQotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAvKmVuZGlmKi8KLSAgICAgICAg ICAgICBpZiAoRnJhbWVJbnN0U2V0SXRlckNvdW50IChkLT5maSwgbnVtKSA9PSBGbVN1Y2Nlc3Mp Ci1AQCAtMjEyMSw3ICsyMzQ3LDEyIEBAIHN0YXRpYyBGbVN0YXR1cyBJdGVyU2V0SXRlckNvdW50 IChJdGVyIGl0LCBpbnQgbnVtKQotICAgICAgICAgICAgIEV4dHJhRGF0YVJlYyBkcjsKLSAgICAg ICAgICAgICAKLSAgICAgICAgICAgICBkci5maSA9IEZyYW1lSW5zdEluaXQgKGl0LT50ZW1wbGF0 ZVsxXS5kYXRhKTsKLS0gICAgICAgICAgICBDaGFpbk1nclNldERhdGEgKCZpdC0+Y20sIGl0LT5t YXhfY291bnQsIGRyKTsKLSsgICAgICAgICAgICBpZiAoIWRyLmZpKQotKyAgICAgICAgICAgICAg ICByZXR1cm4gRm1Ob01vcmVEYXRhOwotKyAgICAgICAgICAgIGlmICghQ2hhaW5NZ3JTZXREYXRh ICgmaXQtPmNtLCBpdC0+bWF4X2NvdW50LCBkcikpIHsKLSsgICAgICAgICAgICAgICAgRnJhbWVJ bnN0RnJlZSAoZHIuZmkpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gRm1Ob01vcmVEYXRhOwot KyAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBpdC0+bWF4X2NvdW50Kys7Ci0gCi0gICAgICAg ICAgICAgaWYgKEZyYW1lSW5zdFNldEl0ZXJDb3VudCAoZHIuZmksIG51bSkgPT0gRm1TdWNjZXNz KQotQEAgLTIyMTUsNyArMjQ0NiwxMyBAQCBzdGF0aWMgaW50IEl0ZXJHZXRUb3RhbFNpemUgKEl0 ZXIgaXQpCi0gICAgICAgICAgICAgaWYgKChkID0gQ2hhaW5NZ3JHZXRFeHRyYURhdGEgKCZpdC0+ Y20sIGkpKSA9PSBOVUxMKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgZHIuZmkg PSBGcmFtZUluc3RJbml0IChpdC0+dGVtcGxhdGVbMV0uZGF0YSk7Ci0rICAgICAgICAgICAgICAg IGlmICghZHIuZmkpCi0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gTk9fVkFMVUU7Ci0gICAg ICAgICAgICAgICAgIGQgPSBDaGFpbk1nclNldERhdGEgKCZpdC0+Y20sIGksIGRyKTsKLSsgICAg ICAgICAgICAgICAgaWYgKCFkKSB7Ci0rICAgICAgICAgICAgICAgICAgICBGcmFtZUluc3RGcmVl IChkci5maSk7Ci0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gTk9fVkFMVUU7Ci0rICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgLyplbmRpZiovCi0gICAg ICAgICAgICAgaWYgKChudW0gPSBGcmFtZUluc3RHZXRUb3RhbFNpemUgKGQtPmZpKSkgPT0gTk9f VkFMVUUpCi1AQCAtMjI3OCw4ICsyNTE1LDggQEAgc3RhdGljIEV4dHJhRGF0YSBDaGFpbk1nclNl dERhdGEgKENoYWluTWdyIGNtLAotIHsKLSAgICAgQ2hhaW4gY3VyID0gKENoYWluKSBYbWFsbG9j IChzaXplb2YgKENoYWluUmVjKSk7Ci0gICAgIGlmICghY3VyKSB7Ci0tICAgICAgICBmcHJpbnRm IChzdGRlcnIsICIoWElNLUlNZGtpdCkgV0FSTklORzogbWFsbG9jIGZhaWxlZCBpbiAlczolZC5c biIsCi0tICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pOwotKyAgICAgICAgZnBy aW50ZiAoc3RkZXJyLCAiKFhJTS1JTWRraXQpIFdBUk5JTkc6IG1hbGxvYyBmYWlsZWQgaW4gJXM6 JXMuXG4iLAotKyAgICAgICAgICAgICAgICAgX19GSUxFX18sIFhJTV9TVFJGVU5DKTsKLSAgICAg ICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi1AQCAtMjQ0NSw2ICsyNjgyLDcgQEAgc3RhdGlj IGludCBfRnJhbWVJbnN0R2V0SXRlbVNpemUgKEZyYW1lSW5zdCBmaSwgaW50IGN1cl9ubykKLSAg ICAgICAgICAgICByZWdpc3RlciBpbnQgdW5pdDsKLSAgICAgICAgICAgICByZWdpc3RlciBpbnQg bnVtYmVyOwotICAgICAgICAgICAgIHJlZ2lzdGVyIGludCBzaXplOwotKyAgICAgICAgICAgIHJl Z2lzdGVyIGludCBzOwotICAgICAgICAgICAgIHJlZ2lzdGVyIGludCBpOwotIAotICAgICAgICAg ICAgIHVuaXQgPSBfVU5JVCAoKGxvbmcpIGZpLT50ZW1wbGF0ZVtjdXJfbm9dLmRhdGEpOwotQEAg LTI0NTYsMTEgKzI2OTQsMTkgQEAgc3RhdGljIGludCBfRnJhbWVJbnN0R2V0SXRlbVNpemUgKEZy YW1lSW5zdCBmaSwgaW50IGN1cl9ubykKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg IGFzc2VydCAoaSA+PSAwKTsKLSAgICAgICAgICAgICAgICAgaSA9IF9GcmFtZUluc3REZWNyZW1l bnQgKGZpLT50ZW1wbGF0ZSwgaSk7Ci0tICAgICAgICAgICAgICAgIHNpemUgKz0gX0ZyYW1lSW5z dEdldEl0ZW1TaXplIChmaSwgaSk7Ci0rICAgICAgICAgICAgICAgIHMgPSBfRnJhbWVJbnN0R2V0 SXRlbVNpemUgKGZpLCBpKTsKLSsgICAgICAgICAgICAgICAgaWYgKHMgPT0gTk9fVkFMVUUpIHsK LSsgICAgICAgICAgICAgICAgICAgIHNpemUgPSBOT19WQUxVRTsKLSsgICAgICAgICAgICAgICAg ICAgIG51bWJlciA9IDA7Ci0rICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAg ICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgIHNpemUgKz0gczsKLSsgICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICAgICBudW1iZXItLTsKLSAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgLyplbmR3aGlsZSovCi0tICAgICAgICAgICAgc2l6ZSA9ICh1bml0IC0gKHNp emUldW5pdCkpJXVuaXQ7Ci0rICAgICAgICAgICAgaWYgKHNpemUgIT0gTk9fVkFMVUUpCi0rICAg ICAgICAgICAgICAgIHNpemUgPSAodW5pdCAtIChzaXplJXVuaXQpKSV1bml0OwotICAgICAgICAg ICAgIHJldHVybiBzaXplOwotICAgICAgICAgfQotIAotZGlmZiAtLWdpdCBhL3V0aWwvSU1ka2l0 L1hpbVByb3RvLmggYi91dGlsL0lNZGtpdC9YaW1Qcm90by5oCi1pbmRleCBlM2VkMTY4Yy4uYTI1 MjEzZjUgMTAwNjQ0Ci0tLS0gYS91dGlsL0lNZGtpdC9YaW1Qcm90by5oCi0rKysgYi91dGlsL0lN ZGtpdC9YaW1Qcm90by5oCi1AQCAtMSw0ICsxLDQgQEAKLS0vKiAkWENvbnNvcnRpdW06IFhpbVBy b3RvLmgsdiAxLjIgOTQvMDEvMjAgMTg6MDI6MjQgcndzIEV4cCAkICovCi0rLyogJFhDb25zb3J0 aXVtOiBYaW1Qcm90by5oLHYgMS4zIDI1LzA5LzI0IDAwOjAwOjAwIHJ3cyBFeHAgJCAqLwotIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKLSAKLSAgICAgICAgICAgIENvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0IGJ5IEZV SklUU1UgTElNSVRFRAotQEAgLTIyNiw1ICsyMjYsMTAgQEAgdHlwZWRlZiBDQVJEMTYJWElDSUQ7 CQkvKiBJbnB1dCBDb250ZXh0IElEICovCi0gCX0JCQkJCQkJCVwKLSAgICAgfQotIAotKyNpZiAo ZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID4gMTMwMCkpCi0rI2RlZmluZSBYSU1fU1RS RlVOQyAgICAgKChjb25zdCBjaGFyKikgKF9fRlVOQ1RJT05fXykpCi0rI2Vsc2UKLSsjZGVmaW5l IFhJTV9TVFJGVU5DICAgICAoKGNvbnN0IGNoYXIqKSAoX19mdW5jX18pKQotICNlbmRpZgotIAot KyNlbmRpZgotZGlmZiAtLWdpdCBhL3V0aWwvSU1ka2l0L2kxOG5NZXRob2QuYyBiL3V0aWwvSU1k a2l0L2kxOG5NZXRob2QuYwotaW5kZXggN2YzNDNkODcuLmY3YTUzZjQwIDEwMDY0NAotLS0tIGEv dXRpbC9JTWRraXQvaTE4bk1ldGhvZC5jCi0rKysgYi91dGlsL0lNZGtpdC9pMThuTWV0aG9kLmMK LUBAIC0yLDcgKzIsOCBAQAotICAKLSAgICAgICAgICBDb3B5cmlnaHQgMTk5NCwgMTk5NSBieSBT dW4gTWljcm9zeXN0ZW1zLCBJbmMuCi0gICAgICAgICAgQ29weXJpZ2h0IDE5OTMsIDE5OTQgYnkg SGV3bGV0dC1QYWNrYXJkIENvbXBhbnkKLS0gICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMTQtMjAy NSBSZWQgSGF0LCBJbmMuCi0rICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjUgUmVkIEhh dCwgSW5jLgotKyAgICAgICAgIENvcHlyaWdodCAoQykgMjAxOC0yMDI1IFRha2FvIEZ1aml3YXJh Ci0gIAotIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUsIGFuZCBz ZWxsIHRoaXMgc29mdHdhcmUKLSBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3Nl IGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLAotQEAgLTM3LDYgKzM4LDggQEAgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KLSAj ZW5kaWYKLSAjaW5jbHVkZSA8WDExL1hwcm90by5oPgotICN1bmRlZiBORUVEX0VWRU5UUwotKyNp bmNsdWRlIDxhc3NlcnQuaD4KLSsKLSAjaW5jbHVkZSAiRnJhbWVNZ3IuaCIKLSAjaW5jbHVkZSAi SU1ka2l0LmgiCi0gI2luY2x1ZGUgIlhpMThuLmgiCi1AQCAtMTk0LDE3ICsxOTcsMTggQEAgc3Rh dGljIGNoYXIgKlBhcnNlQXJncyAoWGkxOG4gaTE4bl9jb3JlLCBpbnQgbW9kZSwgWElNQXJnICph cmdzKQotICAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcy0+aW12YWx1ZV9tYXNrICYgSTE4Tl9J TV9MT0NBTEUpCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU1Mb2NhbGU7Ci0gICAgICAg ICAgICAgICAgIC8qZW5kaWYqLwotLSAgICAgICAgICAgICAgICAvKiBhZGRyZXNzLT5pbV9sb2Nh bGUgd2lsbCBiZSByZWxlYXNlZCBsYXRlciBhbmQgZG9uJ3QgbmVlZAotLSAgICAgICAgICAgICAg ICAgKiAtV2FuYWx5emVyLW1hbGxvYy1sZWFrIGZsYWcgaW4gZ2NjIDExLjAuMS4KLSsgICAgICAg ICAgICAgICAgLyogeGkxOG5fc2V0dXAoKSBpbml0aWFsaXplIHRoZSBgYWRkcmVzc2Agc3RydWN0 dXJlIHdpdGggMCBhbmQKLSsgICAgICAgICAgICAgICAgICogdGhlIHBvaW50ZXIgb2YgdGhlIGBh ZGRyZXNzYCBpcyBub3QgY2hhbmdlZCBhbmQKLSsgICAgICAgICAgICAgICAgICogYGFkZHJlc3Mt PmltdmFsdWVfbWFza2Agc2hvdWxkIGF2b2lkIHRoZSByZWFsbG9jYXRpb24gc28KLSsgICAgICAg ICAgICAgICAgICogdGhlIGAtV2FuYWx5emVyLW1hbGxvYy1sZWFrYCBmbGFnIGluIEdDQyAxMS4w LjEgc2hvdWxkIG5vdAotKyAgICAgICAgICAgICAgICAgKiB3YXJuIGFib3V0IGxlYWtzIG9mIENX RS00MDEuCi0gICAgICAgICAgICAgICAgICAqLwotLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVz aAotLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdhbmFseXplci1tYWxsb2MtbGVh ayIKLS0gICAgICAgICAgICAgICAgYWRkcmVzcy0+aW1fbG9jYWxlID0gKGNoYXIgKikgbWFsbG9j IChzdHJsZW4gKHAtPnZhbHVlKSArIDEpOwotKyAgICAgICAgICAgICAgICBhc3NlcnQgKCFhZGRy ZXNzLT5pbV9sb2NhbGUpOwotKyAgICAgICAgICAgICAgICBhZGRyZXNzLT5pbV9sb2NhbGUgPSAo Y2hhciAqKW1hbGxvYyAoc3RybGVuIChwLT52YWx1ZSkgKyAxKTsKLSAgICAgICAgICAgICAgICAg aWYgKCFhZGRyZXNzLT5pbV9sb2NhbGUpCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU1M b2NhbGU7Ci0gICAgICAgICAgICAgICAgIC8qZW5kaWYqLwotICAgICAgICAgICAgICAgICBzdHJj cHkgKGFkZHJlc3MtPmltX2xvY2FsZSwgcC0+dmFsdWUpOwotLSNwcmFnbWEgR0NDIGRpYWdub3N0 aWMgcG9wCi0gICAgICAgICAgICAgICAgIGFkZHJlc3MtPmltdmFsdWVfbWFzayB8PSBJMThOX0lN X0xPQ0FMRTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgZWxzZSBpZiAoc3RyY21wIChw LT5uYW1lLCBJTVNlcnZlclRyYW5zcG9ydCkgPT0gMCkKLUBAIC0yMTIsMTQgKzIxNiwxMiBAQCBz dGF0aWMgY2hhciAqUGFyc2VBcmdzIChYaTE4biBpMThuX2NvcmUsIGludCBtb2RlLCBYSU1Bcmcg KmFyZ3MpCi0gICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzLT5pbXZhbHVlX21hc2sgJiBJMThO X0lNX0FERFJFU1MpCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU1TZXJ2ZXJUcmFuc3Bv cnQ7Ci0gICAgICAgICAgICAgICAgIC8qZW5kaWYqLwotLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMg cHVzaAotLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdhbmFseXplci1tYWxsb2Mt bGVhayIKLS0gICAgICAgICAgICAgICAgYWRkcmVzcy0+aW1fYWRkciA9IChjaGFyICopIG1hbGxv YyAoc3RybGVuIChwLT52YWx1ZSkgKyAxKTsKLSsgICAgICAgICAgICAgICAgYXNzZXJ0ICghYWRk cmVzcy0+aW1fYWRkcik7Ci0rICAgICAgICAgICAgICAgIGFkZHJlc3MtPmltX2FkZHIgPSAoY2hh ciAqKW1hbGxvYyAoc3RybGVuIChwLT52YWx1ZSkgKyAxKTsKLSAgICAgICAgICAgICAgICAgaWYg KCFhZGRyZXNzLT5pbV9hZGRyKQotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElNU2VydmVy VHJhbnNwb3J0OwotICAgICAgICAgICAgICAgICAvKmVuZGlmKi8KLSAgICAgICAgICAgICAgICAg c3RyY3B5KGFkZHJlc3MtPmltX2FkZHIsIHAtPnZhbHVlKTsKLS0jcHJhZ21hIEdDQyBkaWFnbm9z dGljIHBvcAotICAgICAgICAgICAgICAgICBhZGRyZXNzLT5pbXZhbHVlX21hc2sgfD0gSTE4Tl9J TV9BRERSRVNTOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAg KHAtPm5hbWUsIElNU2VydmVyTmFtZSkgPT0gMCkKLUBAIC0yMjcsMTQgKzIyOSwxMiBAQCBzdGF0 aWMgY2hhciAqUGFyc2VBcmdzIChYaTE4biBpMThuX2NvcmUsIGludCBtb2RlLCBYSU1BcmcgKmFy Z3MpCi0gICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzLT5pbXZhbHVlX21hc2sgJiBJMThOX0lN X05BTUUpCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU1TZXJ2ZXJOYW1lOwotICAgICAg ICAgICAgICAgICAvKmVuZGlmKi8KLS0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKLS0jcHJh Z21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XYW5hbHl6ZXItbWFsbG9jLWxlYWsiCi0tICAg ICAgICAgICAgICAgIGFkZHJlc3MtPmltX25hbWUgPSAoY2hhciAqKSBtYWxsb2MgKHN0cmxlbiAo cC0+dmFsdWUpICsgMSk7Ci0rICAgICAgICAgICAgICAgIGFzc2VydCAoIWFkZHJlc3MtPmltX25h bWUpOwotKyAgICAgICAgICAgICAgICBhZGRyZXNzLT5pbV9uYW1lID0gKGNoYXIgKiltYWxsb2Mg KHN0cmxlbiAocC0+dmFsdWUpICsgMSk7Ci0gICAgICAgICAgICAgICAgIGlmICghYWRkcmVzcy0+ aW1fbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJTVNlcnZlck5hbWU7Ci0gICAg ICAgICAgICAgICAgIC8qZW5kaWYqLwotICAgICAgICAgICAgICAgICBzdHJjcHkgKGFkZHJlc3Mt PmltX25hbWUsIHAtPnZhbHVlKTsKLS0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAotICAgICAg ICAgICAgICAgICBhZGRyZXNzLT5pbXZhbHVlX21hc2sgfD0gSTE4Tl9JTV9OQU1FOwotICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAgKHAtPm5hbWUsIElNU2VydmVy V2luZG93KSA9PSAwKQotQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgY2hhciAqUGFyc2VBcmdz IChYaTE4biBpMThuX2NvcmUsIGludCBtb2RlLCBYSU1BcmcgKmFyZ3MpCi0gICAgICAgICAgICAg ICAgIGlmIChhZGRyZXNzLT5pbXZhbHVlX21hc2sgJiBJMThOX0lNU0VSVkVSX1dJTikKLSAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBJTVNlcnZlcldpbmRvdzsKLSAgICAgICAgICAgICAgICAg LyplbmRpZiovCi0tICAgICAgICAgICAgICAgIGFkZHJlc3MtPmltX3dpbmRvdyA9IChXaW5kb3cp IHAtPnZhbHVlOwotKyAgICAgICAgICAgICAgICBhZGRyZXNzLT5pbV93aW5kb3cgPSAoV2luZG93 KXAtPnZhbHVlOwotICAgICAgICAgICAgICAgICBhZGRyZXNzLT5pbXZhbHVlX21hc2sgfD0gSTE4 Tl9JTVNFUlZFUl9XSU47Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGVsc2UgaWYgKHN0 cmNtcCAocC0+bmFtZSwgSU1JbnB1dFN0eWxlcykgPT0gMCkKLUBAIC0yNTIsMTkgKzI1MiwyMSBA QCBzdGF0aWMgY2hhciAqUGFyc2VBcmdzIChYaTE4biBpMThuX2NvcmUsIGludCBtb2RlLCBYSU1B cmcgKmFyZ3MpCi0gICAgICAgICAgICAgICAgIC8qZW5kaWYqLwotICAgICAgICAgICAgICAgICBh ZGRyZXNzLT5pbnB1dF9zdHlsZXMuY291bnRfc3R5bGVzID0KLSAgICAgICAgICAgICAgICAgICAg ICgoWElNU3R5bGVzKilwLT52YWx1ZSktPmNvdW50X3N0eWxlczsKLS0gICAgICAgICAgICAgICAg YWRkcmVzcy0+aW5wdXRfc3R5bGVzLnN1cHBvcnRlZF9zdHlsZXMgPQotLSAgICAgICAgICAgICAg ICAgICAgKFhJTVN0eWxlICopIG1hbGxvYyAoc2l6ZW9mIChYSU1TdHlsZSkqYWRkcmVzcy0+aW5w dXRfc3R5bGVzLmNvdW50X3N0eWxlcyk7Ci0tICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzLT5p bnB1dF9zdHlsZXMuc3VwcG9ydGVkX3N0eWxlcyA9PSAoWElNU3R5bGUgKikgTlVMTCkKLSsgICAg ICAgICAgICAgICAgYXNzZXJ0ICghYWRkcmVzcy0+aW5wdXRfc3R5bGVzLnN1cHBvcnRlZF9zdHls ZXMpOwotKyAgICAgICAgICAgICAgICBhZGRyZXNzLT5pbnB1dF9zdHlsZXMuc3VwcG9ydGVkX3N0 eWxlcyA9IChYSU1TdHlsZSAqKW1hbGxvYyAoCi0rICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZW9mIChYSU1TdHlsZSkgKiBhZGRyZXNzLT5pbnB1dF9zdHlsZXMuY291bnRfc3R5bGVzKTsKLSsg ICAgICAgICAgICAgICAgaWYgKGFkZHJlc3MtPmlucHV0X3N0eWxlcy5zdXBwb3J0ZWRfc3R5bGVz ID09IChYSU1TdHlsZSAqKU5VTEwpCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU1JbnB1 dFN0eWxlczsKLSAgICAgICAgICAgICAgICAgLyplbmRpZiovCi0gICAgICAgICAgICAgICAgIG1l bW1vdmUgKGFkZHJlc3MtPmlucHV0X3N0eWxlcy5zdXBwb3J0ZWRfc3R5bGVzLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAoKFhJTVN0eWxlcyAqKSBwLT52YWx1ZSktPnN1cHBvcnRlZF9zdHls ZXMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoWElNU3R5bGUpKmFkZHJlc3Mt PmlucHV0X3N0eWxlcy5jb3VudF9zdHlsZXMpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAo KFhJTVN0eWxlcyAqKXAtPnZhbHVlKS0+c3VwcG9ydGVkX3N0eWxlcywKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZW9mIChYSU1TdHlsZSkgKgotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFkZHJlc3MtPmlucHV0X3N0eWxlcy5jb3VudF9zdHlsZXMpOwotICAgICAgICAg ICAgICAgICBhZGRyZXNzLT5pbXZhbHVlX21hc2sgfD0gSTE4Tl9JTlBVVF9TVFlMRVM7Ci0gICAg ICAgICAgICAgfQotICAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNtcCAocC0+bmFtZSwgSU1Qcm90 b2NvbEhhbmRsZXIpID09IDApCi0gICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBhZGRy ZXNzLT5pbXByb3RvID0gKElNUHJvdG9IYW5kbGVyKSBwLT52YWx1ZTsKLSsgICAgICAgICAgICAg ICAgYWRkcmVzcy0+aW1wcm90byA9IChJTVByb3RvSGFuZGxlcilwLT52YWx1ZTsKLSAgICAgICAg ICAgICAgICAgYWRkcmVzcy0+aW12YWx1ZV9tYXNrIHw9IEkxOE5fSU1fSEFORExFUjsKLSAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgZWxzZSBpZiAoc3RyY21wIChwLT5uYW1lLCBJTU9uS2V5 c0xpc3QpID09IDApCi1AQCAtMjczLDE1ICsyNzUsMTYgQEAgc3RhdGljIGNoYXIgKlBhcnNlQXJn cyAoWGkxOG4gaTE4bl9jb3JlLCBpbnQgbW9kZSwgWElNQXJnICphcmdzKQotICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIElNT25LZXlzTGlzdDsKLSAgICAgICAgICAgICAgICAgLyplbmRpZiov Ci0gICAgICAgICAgICAgICAgIGFkZHJlc3MtPm9uX2tleXMuY291bnRfa2V5cyA9Ci0tICAgICAg ICAgICAgICAgICAgICAoKFhJTVRyaWdnZXJLZXlzICopIHAtPnZhbHVlKS0+Y291bnRfa2V5czsK LS0gICAgICAgICAgICAgICAgYWRkcmVzcy0+b25fa2V5cy5rZXlsaXN0ID0KLS0gICAgICAgICAg ICAgICAgICAgIChYSU1UcmlnZ2VyS2V5ICopIG1hbGxvYyAoc2l6ZW9mIChYSU1UcmlnZ2VyS2V5 KSphZGRyZXNzLT5vbl9rZXlzLmNvdW50X2tleXMpOwotLSAgICAgICAgICAgICAgICBpZiAoYWRk cmVzcy0+b25fa2V5cy5rZXlsaXN0ID09IChYSU1UcmlnZ2VyS2V5ICopIE5VTEwpCi0rICAgICAg ICAgICAgICAgICAgICAoKFhJTVRyaWdnZXJLZXlzICopcC0+dmFsdWUpLT5jb3VudF9rZXlzOwot KyAgICAgICAgICAgICAgICBhc3NlcnQgKCFhZGRyZXNzLT5vbl9rZXlzLmtleWxpc3QpOwotKyAg ICAgICAgICAgICAgICBhZGRyZXNzLT5vbl9rZXlzLmtleWxpc3QgPSAoWElNVHJpZ2dlcktleSAq KW1hbGxvYyAoCi0rICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChYSU1UcmlnZ2VyS2V5 KSAqIGFkZHJlc3MtPm9uX2tleXMuY291bnRfa2V5cyk7Ci0rICAgICAgICAgICAgICAgIGlmIChh ZGRyZXNzLT5vbl9rZXlzLmtleWxpc3QgPT0gKFhJTVRyaWdnZXJLZXkgKilOVUxMKQotICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIElNT25LZXlzTGlzdDsKLSAgICAgICAgICAgICAgICAgLypl bmRpZiovCi0gICAgICAgICAgICAgICAgIG1lbW1vdmUgKGFkZHJlc3MtPm9uX2tleXMua2V5bGlz dCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgKChYSU1UcmlnZ2VyS2V5cyAqKSBwLT52YWx1 ZSktPmtleWxpc3QsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoWElNVHJpZ2dl cktleSkqYWRkcmVzcy0+b25fa2V5cy5jb3VudF9rZXlzKTsKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgKChYSU1UcmlnZ2VyS2V5cyAqKXAtPnZhbHVlKS0+a2V5bGlzdCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mIChYSU1UcmlnZ2VyS2V5KSAqIGFkZHJlc3MtPm9uX2tleXMu Y291bnRfa2V5cyk7Ci0gICAgICAgICAgICAgICAgIGFkZHJlc3MtPmltdmFsdWVfbWFzayB8PSBJ MThOX09OX0tFWVM7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNt cCAocC0+bmFtZSwgSU1PZmZLZXlzTGlzdCkgPT0gMCkKLUBAIC0yOTAsMTUgKzI5MywxNiBAQCBz dGF0aWMgY2hhciAqUGFyc2VBcmdzIChYaTE4biBpMThuX2NvcmUsIGludCBtb2RlLCBYSU1Bcmcg KmFyZ3MpCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU1PZmZLZXlzTGlzdDsKLSAgICAg ICAgICAgICAgICAgLyplbmRpZiovCi0gICAgICAgICAgICAgICAgIGFkZHJlc3MtPm9mZl9rZXlz LmNvdW50X2tleXMgPQotLSAgICAgICAgICAgICAgICAgICAgKChYSU1UcmlnZ2VyS2V5cyAqKSBw LT52YWx1ZSktPmNvdW50X2tleXM7Ci0tICAgICAgICAgICAgICAgIGFkZHJlc3MtPm9mZl9rZXlz LmtleWxpc3QgPQotLSAgICAgICAgICAgICAgICAgICAgKFhJTVRyaWdnZXJLZXkgKikgbWFsbG9j IChzaXplb2YgKFhJTVRyaWdnZXJLZXkpKmFkZHJlc3MtPm9mZl9rZXlzLmNvdW50X2tleXMpOwot LSAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcy0+b2ZmX2tleXMua2V5bGlzdCA9PSAoWElNVHJp Z2dlcktleSAqKSBOVUxMKQotKyAgICAgICAgICAgICAgICAgICAgKChYSU1UcmlnZ2VyS2V5cyAq KXAtPnZhbHVlKS0+Y291bnRfa2V5czsKLSsgICAgICAgICAgICAgICAgYXNzZXJ0ICghYWRkcmVz cy0+b2ZmX2tleXMua2V5bGlzdCk7Ci0rICAgICAgICAgICAgICAgIGFkZHJlc3MtPm9mZl9rZXlz LmtleWxpc3QgPSAoWElNVHJpZ2dlcktleSAqKW1hbGxvYyAoCi0rICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZW9mIChYSU1UcmlnZ2VyS2V5KSAqIGFkZHJlc3MtPm9mZl9rZXlzLmNvdW50X2tl eXMpOwotKyAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcy0+b2ZmX2tleXMua2V5bGlzdCA9PSAo WElNVHJpZ2dlcktleSAqKU5VTEwpCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU1PZmZL ZXlzTGlzdDsKLSAgICAgICAgICAgICAgICAgLyplbmRpZiovCi0gICAgICAgICAgICAgICAgIG1l bW1vdmUgKGFkZHJlc3MtPm9mZl9rZXlzLmtleWxpc3QsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICgoWElNVHJpZ2dlcktleXMgKikgcC0+dmFsdWUpLT5rZXlsaXN0LAotLSAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplb2YgKFhJTVRyaWdnZXJLZXkpKmFkZHJlc3MtPm9mZl9rZXlzLmNv dW50X2tleXMpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAoKFhJTVRyaWdnZXJLZXlzICop cC0+dmFsdWUpLT5rZXlsaXN0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKFhJ TVRyaWdnZXJLZXkpICogYWRkcmVzcy0+b2ZmX2tleXMuY291bnRfa2V5cyk7Ci0gICAgICAgICAg ICAgICAgIGFkZHJlc3MtPmltdmFsdWVfbWFzayB8PSBJMThOX09GRl9LRVlTOwotICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAgKHAtPm5hbWUsIElNRW5jb2RpbmdM aXN0KSA9PSAwKQotQEAgLTMwOCwxNyArMzEyLDE5IEBAIHN0YXRpYyBjaGFyICpQYXJzZUFyZ3Mg KFhpMThuIGkxOG5fY29yZSwgaW50IG1vZGUsIFhJTUFyZyAqYXJncykKLSAgICAgICAgICAgICAg ICAgLyplbmRpZiovCi0gICAgICAgICAgICAgICAgIGFkZHJlc3MtPmVuY29kaW5nX2xpc3QuY291 bnRfZW5jb2RpbmdzID0KLSAgICAgICAgICAgICAgICAgICAgICgoWElNRW5jb2RpbmdzICopIHAt PnZhbHVlKS0+Y291bnRfZW5jb2RpbmdzOwotKyAgICAgICAgICAgICAgICBhc3NlcnQgKCFhZGRy ZXNzLT5lbmNvZGluZ19saXN0LnN1cHBvcnRlZF9lbmNvZGluZ3MpOwotICAgICAgICAgICAgICAg ICBhZGRyZXNzLT5lbmNvZGluZ19saXN0LnN1cHBvcnRlZF9lbmNvZGluZ3MgPQotLSAgICAgICAg ICAgICAgICAgICAgKFhJTUVuY29kaW5nICopIG1hbGxvYyAoc2l6ZW9mIChYSU1FbmNvZGluZykq YWRkcmVzcy0+ZW5jb2RpbmdfbGlzdC5jb3VudF9lbmNvZGluZ3MpOwotKyAgICAgICAgICAgICAg ICAgICAgICAgIChYSU1FbmNvZGluZyAqKW1hbGxvYyAoc2l6ZW9mIChYSU1FbmNvZGluZykgKgot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcy0+ZW5jb2RpbmdfbGlzdC5j b3VudF9lbmNvZGluZ3MpOwotICAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcy0+ZW5jb2Rpbmdf bGlzdC5zdXBwb3J0ZWRfZW5jb2RpbmdzCi0tICAgICAgICAgICAgICAgICAgICA9PSAoWElNRW5j b2RpbmcgKikgTlVMTCkKLS0gICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgICAg PT0gKFhJTUVuY29kaW5nICopTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElN RW5jb2RpbmdMaXN0OwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIC8qZW5k aWYqLwotICAgICAgICAgICAgICAgICBtZW1tb3ZlIChhZGRyZXNzLT5lbmNvZGluZ19saXN0LnN1 cHBvcnRlZF9lbmNvZGluZ3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICgoWElNRW5jb2Rp bmdzICopIHAtPnZhbHVlKS0+c3VwcG9ydGVkX2VuY29kaW5ncywKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZW9mIChYSU1FbmNvZGluZykqYWRkcmVzcy0+ZW5jb2RpbmdfbGlzdC5jb3Vu dF9lbmNvZGluZ3MpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAoKFhJTUVuY29kaW5ncyAq KXAtPnZhbHVlKS0+c3VwcG9ydGVkX2VuY29kaW5ncywKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZW9mIChYSU1FbmNvZGluZykgKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFkZHJlc3MtPmVuY29kaW5nX2xpc3QuY291bnRfZW5jb2RpbmdzKTsKLSAgICAgICAgICAg ICAgICAgYWRkcmVzcy0+aW12YWx1ZV9tYXNrIHw9IEkxOE5fRU5DT0RJTkdTOwotICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAgKHAtPm5hbWUsIElNRmlsdGVyRXZl bnRNYXNrKSA9PSAwKQotQEAgLTM1NCwzMCArMzYwLDM4IEBAIHN0YXRpYyBjaGFyICpQYXJzZUFy Z3MgKFhpMThuIGkxOG5fY29yZSwgaW50IG1vZGUsIFhJTUFyZyAqYXJncykKLSAgICAgewotICAg ICAgICAgZm9yIChwID0gYXJnczsgIHAtPm5hbWUgIT0gTlVMTDsgIHArKykKLSAgICAgICAgIHsK LSsgICAgICAgICAgICByZWdpc3RlciBjaGFyICpfcCA9IE5VTEw7Ci0gICAgICAgICAgICAgaWYg KHN0cmNtcCAocC0+bmFtZSwgSU1Mb2NhbGUpID09IDApCi0gICAgICAgICAgICAgewotLSAgICAg ICAgICAgICAgICBwLT52YWx1ZSA9IChjaGFyICopIG1hbGxvYyAoc3RybGVuIChhZGRyZXNzLT5p bV9sb2NhbGUpICsgMSk7Ci0tICAgICAgICAgICAgICAgIGlmICghcC0+dmFsdWUpCi0rICAgICAg ICAgICAgICAgIF9wID0gKGNoYXIgKiltYWxsb2MgKHN0cmxlbiAoYWRkcmVzcy0+aW1fbG9jYWxl KSArIDEpOwotKyAgICAgICAgICAgICAgICAvKiBXb3JrYXJvdW5kIHRvIGF2b2lkIHRoZSB3YXJu aW5nIG9mIHRoZSBsZWFrIG9mICcqcC52YWx1ZScKLSsgICAgICAgICAgICAgICAgICogQ1dFLTQw MSBhbmQgLVdhbmFseXplci1tYWxsb2MtbGVhay4gU2VlbXMgR0NDIGRvZXMgbm90Ci0rICAgICAg ICAgICAgICAgICAqIHVuZGVyc3RhbmQgdGhlIGBpZiAoIXAtPnZhbHVlKWAgc2VudGVuY2UuCi0r ICAgICAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgICAgICBpZiAoIV9wKQotICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIElNTG9jYWxlOwotICAgICAgICAgICAgICAgICAvKmVuZGlmKi8K LSsgICAgICAgICAgICAgICAgcC0+dmFsdWUgPSBfcDsKLSAgICAgICAgICAgICAgICAgc3RyY3B5 IChwLT52YWx1ZSwgYWRkcmVzcy0+aW1fbG9jYWxlKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgZWxzZSBpZiAoc3RyY21wIChwLT5uYW1lLCBJTVNlcnZlclRyYW5zcG9ydCkgPT0gMCkK LSAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIHAtPnZhbHVlID0gKGNoYXIgKikgbWFs bG9jIChzdHJsZW4gKGFkZHJlc3MtPmltX2FkZHIpICsgMSk7Ci0tICAgICAgICAgICAgICAgIGlm ICghcC0+dmFsdWUpCi0rICAgICAgICAgICAgICAgIF9wID0gKGNoYXIgKiltYWxsb2MgKHN0cmxl biAoYWRkcmVzcy0+aW1fYWRkcikgKyAxKTsKLSsgICAgICAgICAgICAgICAgaWYgKCFfcCkKLSAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBJTVNlcnZlclRyYW5zcG9ydDsKLSAgICAgICAgICAg ICAgICAgLyplbmRpZiovCi0rICAgICAgICAgICAgICAgIHAtPnZhbHVlID0gX3A7Ci0gICAgICAg ICAgICAgICAgIHN0cmNweSAocC0+dmFsdWUsIGFkZHJlc3MtPmltX2FkZHIpOwotICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAgKHAtPm5hbWUsIElNU2VydmVyTmFt ZSkgPT0gMCkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzLT5p bXZhbHVlX21hc2sgJiBJMThOX0lNX05BTUUpCi0gICAgICAgICAgICAgICAgIHsKLS0gICAgICAg ICAgICAgICAgICAgIHAtPnZhbHVlID0gKGNoYXIgKikgbWFsbG9jIChzdHJsZW4gKGFkZHJlc3Mt PmltX25hbWUpICsgMSk7Ci0tICAgICAgICAgICAgICAgICAgICBpZiAoIXAtPnZhbHVlKQotKyAg ICAgICAgICAgICAgICAgICAgX3AgPSAoY2hhciAqKW1hbGxvYyAoc3RybGVuIChhZGRyZXNzLT5p bV9uYW1lKSArIDEpOwotKyAgICAgICAgICAgICAgICAgICAgaWYgKCFfcCkKLSAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gSU1TZXJ2ZXJOYW1lOwotICAgICAgICAgICAgICAgICAgICAg LyplbmRpZiovCi0rICAgICAgICAgICAgICAgICAgICBwLT52YWx1ZSA9IF9wOwotICAgICAgICAg ICAgICAgICAgICAgc3RyY3B5IChwLT52YWx1ZSwgYWRkcmVzcy0+aW1fbmFtZSk7Ci0gICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgZWxzZQotLS0gCi0yLjUxLjEKLQotRnJvbSA1 OWJkYWY2MTY5ZjM0YTMzNTNkNmJmNTk3ZmVmMGU4NGUyY2E3M2M4IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0 ZTogVHVlLCAxNCBPY3QgMjAyNSAwOTowMDoyNCArMDkwMAotU3ViamVjdDogW1BBVENIIDQvNF0g Rml4IG1lbW9yeSBsZWFrcyAjMgotCi0tIEZpeCBsZWFrcyBvZiBHT3B0aW9uQ29udGV4dCBpbiBi dXMvbWFpbi5jCi0tIEZpeCBsZWFrcyBvZiBJQnVzRW5naW5lRGVzYyB3aGVuIElNRSBpcyBzd2l0 Y2hlZCBpbgotICBjbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMKLS0gRml4IGxlYWtzIG9m IElCdXNUZXh0Q2xhc3M6Y29weSgpLCB3aGljaCBpcyB1c2VkIGluCi0gIEVtb2ppZXI6Z2V0X29u ZV9kaW1lbnNpb25fbG9va3VwX3RhYmxlKCksIGluIHNyYy9pYnVzdGV4dC5jCi0tIEZpeCBsZWFr IG9mIElCdXNFeHRlbnNpb25FdmVudCB3aXRoIGNvbW1pdC10ZXh0IHNpZ25hbCBhbmQgY2xpY2tp bmcgY2xvc2UKLSAgYnV0dG9uIHNpbmNlIGl0J3Mgbm90IGZsb2F0aW5nIGluIHVpL2d0azMvcGFu ZWxiaW5kaW5nLnZhbGEKLQotRml4ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvY29t bWl0L2E4MDA5NTcKLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL3B1bGwvMjgwNQot LS0tCi0gYnVzL21haW4uYyAgICAgICAgICAgICAgICAgICAgIHwgMzUgKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLQotIGNsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYyB8ICAx ICsKLSBzcmMvaWJ1c3RleHQuYyAgICAgICAgICAgICAgICAgfCAxMSArKysrKysrKy0tLQotIHVp L2d0azMvcGFuZWxiaW5kaW5nLnZhbGEgICAgICB8ICA2ICsrKysrKwotIDQgZmlsZXMgY2hhbmdl ZCwgMzcgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9idXMv bWFpbi5jIGIvYnVzL21haW4uYwotaW5kZXggZTBkYjE1YjMuLmZmOTk0MWVjIDEwMDY0NAotLS0t IGEvYnVzL21haW4uYwotKysrIGIvYnVzL21haW4uYwotQEAgLTE4Miw2ICsxODIsMTQgQEAgX29u X3NpZ3VzcjEgKHZvaWQpCi0gfQotICNlbmRpZgotIAotK3N0YXRpYyBpbmxpbmUgdm9pZAotK2V4 aXRfYW5kX2ZyZWVfY29udGV4dCAoaW50ICAgICAgICAgICAgIHN0YXR1cywKLSsgICAgICAgICAg ICAgICAgICAgICAgIEdPcHRpb25Db250ZXh0ICpjb250ZXh0KQotK3sKLSsgICAgZ19vcHRpb25f Y29udGV4dF9mcmVlIChjb250ZXh0KTsKLSsgICAgZXhpdCAoc3RhdHVzKTsKLSt9Ci0rCi0gZ2lu dAotIG1haW4gKGdpbnQgYXJnYywgZ2NoYXIgKiphcmd2KQotIHsKLUBAIC0yMDMsMTEgKzIxMSwx MSBAQCBtYWluIChnaW50IGFyZ2MsIGdjaGFyICoqYXJndikKLSAgICAgaWYgKCFnX29wdGlvbl9j b250ZXh0X3BhcnNlIChjb250ZXh0LCAmYXJnYywgJmFyZ3YsICZlcnJvcikpIHsKLSAgICAgICAg IGdfcHJpbnRlcnIgKCJPcHRpb24gcGFyc2luZyBmYWlsZWQ6ICVzXG4iLCBlcnJvci0+bWVzc2Fn ZSk7Ci0gCWdfZXJyb3JfZnJlZSAoZXJyb3IpOwotLSAgICAgICAgZXhpdCAoLTEpOwotKyAgICAg ICAgZXhpdF9hbmRfZnJlZV9jb250ZXh0IChFWElUX0ZBSUxVUkUsIGNvbnRleHQpOwotICAgICB9 Ci0gICAgIGlmIChnX2dkYnVzX3RpbWVvdXQgPCAtMSkgewotICAgICAgICAgZ19wcmludGVyciAo IkJhZCB0aW1lb3V0IChtdXN0IGJlID49IC0xKTogJWRcbiIsIGdfZ2RidXNfdGltZW91dCk7Ci0t ICAgICAgICBleGl0ICgtMSk7Ci0rICAgICAgICBleGl0X2FuZF9mcmVlX2NvbnRleHQgKEVYSVRf RkFJTFVSRSwgY29udGV4dCk7Ci0gICAgIH0KLSAKLSAgICAgaWYgKGdfbWVtcHJvKSB7Ci1AQCAt MjIwLDcgKzIyOCw3IEBAIG1haW4gKGdpbnQgYXJnYywgZ2NoYXIgKiphcmd2KQotIAotICAgICAg ICAgaWYgKHB3ZCA9PSBOVUxMIHx8IGdfc3RyY21wMCAocHdkLT5wd19uYW1lLCB1c2VybmFtZSkg IT0gMCkgewotICAgICAgICAgICAgIGdfcHJpbnRlcnIgKCJQbGVhc2UgcnVuIGlidXMtZGFlbW9u IHdpdGggbG9naW4gdXNlciEgRG8gbm90IHJ1biBpYnVzLWRhZW1vbiB3aXRoIHN1ZG8gb3Igc3Uu XG4iKTsKLS0gICAgICAgICAgICBleGl0ICgtMSk7Ci0rICAgICAgICAgICAgZXhpdF9hbmRfZnJl ZV9jb250ZXh0IChFWElUX0ZBSUxVUkUsIGNvbnRleHQpOwotICAgICAgICAgfQotICAgICB9Ci0g Ci1AQCAtMjQ1LDcgKzI1Myw3IEBAIG1haW4gKGdpbnQgYXJnYywgZ2NoYXIgKiphcmd2KQotICAg ICBpZiAoZGFlbW9uaXplKSB7Ci0gICAgICAgICBpZiAoZGFlbW9uICgxLCAwKSAhPSAwKSB7Ci0g ICAgICAgICAgICAgZ19wcmludGVyciAoIkNhbm5vdCBkYWVtb25pemUgaWJ1cy5cbiIpOwotLSAg ICAgICAgICAgIGV4aXQgKC0xKTsKLSsgICAgICAgICAgICBleGl0X2FuZF9mcmVlX2NvbnRleHQg KEVYSVRfRkFJTFVSRSwgY29udGV4dCk7Ci0gICAgICAgICB9Ci0gICAgIH0KLSAKLUBAIC0yNjcs NyArMjc1LDcgQEAgbWFpbiAoZ2ludCBhcmdjLCBnY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZiAo aWJ1c19idXNfaXNfY29ubmVjdGVkIChidXMpKSB7Ci0gICAgICAgICAgICAgaWYgKCFyZXBsYWNl KSB7Ci0gICAgICAgICAgICAgICAgIGdfcHJpbnRlcnIgKCJjdXJyZW50IHNlc3Npb24gYWxyZWFk eSBoYXMgYW4gaWJ1cy1kYWVtb24uXG4iKTsKLS0gICAgICAgICAgICAgICAgZXhpdCAoLTEpOwot KyAgICAgICAgICAgICAgICBleGl0X2FuZF9mcmVlX2NvbnRleHQgKEVYSVRfRkFJTFVSRSwgY29u dGV4dCk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGlidXNfYnVzX2V4aXQgKGJ1cywg RkFMU0UpOwotICAgICAgICAgICAgIHdoaWxlIChpYnVzX2J1c19pc19jb25uZWN0ZWQgKGJ1cykp IHsKLUBAIC0zMDEsMTEgKzMwOSwxMSBAQCBtYWluIChnaW50IGFyZ2MsIGdjaGFyICoqYXJndikK LSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgaWYgKGNvbXBvbmVudCA9PSBOVUxMIHx8ICFi dXNfY29tcG9uZW50X3N0YXJ0IChjb21wb25lbnQsIGdfdmVyYm9zZSkpIHsKLSAgICAgICAgICAg ICAgICAgZ19wcmludGVyciAoIkNhbiBub3QgZXhlY3V0ZSBkZWZhdWx0IGNvbmZpZyBwcm9ncmFt XG4iKTsKLS0gICAgICAgICAgICAgICAgZXhpdCAoLTEpOwotKyAgICAgICAgICAgICAgICBleGl0 X2FuZF9mcmVlX2NvbnRleHQgKEVYSVRfRkFJTFVSRSwgY29udGV4dCk7Ci0gICAgICAgICAgICAg fQotICAgICAgICAgfSBlbHNlIGlmIChnX3N0cmNtcDAgKGNvbmZpZywgImRpc2FibGUiKSAhPSAw ICYmIGdfc3RyY21wMCAoY29uZmlnLCAiIikgIT0gMCkgewotICAgICAgICAgICAgIGlmICghZXhl Y3V0ZV9jbWRsaW5lIChjb25maWcpKQotLSAgICAgICAgICAgICAgICBleGl0ICgtMSk7Ci0rICAg ICAgICAgICAgICAgIGV4aXRfYW5kX2ZyZWVfY29udGV4dCAoRVhJVF9GQUlMVVJFLCBjb250ZXh0 KTsKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIC8qIGV4ZWN1dGUgcGFuZWwgY29tcG9uZW50ICov Ci1AQCAtMzE4LDExICszMjYsMTEgQEAgbWFpbiAoZ2ludCBhcmdjLCBnY2hhciAqKmFyZ3YpCi0g ICAgICAgICAgICAgfQotICAgICAgICAgICAgIGlmIChjb21wb25lbnQgPT0gTlVMTCB8fCAhYnVz X2NvbXBvbmVudF9zdGFydCAoY29tcG9uZW50LCBnX3ZlcmJvc2UpKSB7Ci0gICAgICAgICAgICAg ICAgIGdfcHJpbnRlcnIgKCJDYW4gbm90IGV4ZWN1dGUgZGVmYXVsdCBwYW5lbCBwcm9ncmFtXG4i KTsKLS0gICAgICAgICAgICAgICAgZXhpdCAoLTEpOwotKyAgICAgICAgICAgICAgICBleGl0X2Fu ZF9mcmVlX2NvbnRleHQgKEVYSVRfRkFJTFVSRSwgY29udGV4dCk7Ci0gICAgICAgICAgICAgfQot ICAgICAgICAgfSBlbHNlIGlmIChnX3N0cmNtcDAgKHBhbmVsLCAiZGlzYWJsZSIpICE9IDAgJiYg Z19zdHJjbXAwIChwYW5lbCwgIiIpICE9IDApIHsKLSAgICAgICAgICAgICBpZiAoIWV4ZWN1dGVf Y21kbGluZSAocGFuZWwpKQotLSAgICAgICAgICAgICAgICBleGl0ICgtMSk7Ci0rICAgICAgICAg ICAgICAgIGV4aXRfYW5kX2ZyZWVfY29udGV4dCAoRVhJVF9GQUlMVVJFLCBjb250ZXh0KTsKLSAg ICAgICAgIH0KLSAgICAgfQotIAotQEAgLTMzNywyNSArMzQ1LDI1IEBAIG1haW4gKGdpbnQgYXJn YywgZ2NoYXIgKiphcmd2KQotICAgICAgICAgaWYgKGNvbXBvbmVudCAhPSBOVUxMICYmCi0gICAg ICAgICAgICAgIWJ1c19jb21wb25lbnRfc3RhcnQgKGNvbXBvbmVudCwgZ192ZXJib3NlKSkgewot ICAgICAgICAgICAgIGdfcHJpbnRlcnIgKCJDYW4gbm90IGV4ZWN1dGUgZGVmYXVsdCBwYW5lbCBw cm9ncmFtXG4iKTsKLS0gICAgICAgICAgICBleGl0ICgtMSk7Ci0rICAgICAgICAgICAgZXhpdF9h bmRfZnJlZV9jb250ZXh0IChFWElUX0ZBSUxVUkUsIGNvbnRleHQpOwotICAgICAgICAgfQotICAg ICB9IGVsc2UgaWYgKGdfc3RyY21wMCAoZW1vamlfZXh0ZW5zaW9uLCAiZGlzYWJsZSIpICE9IDAg JiYKLSAgICAgICAgICAgICAgICBnX3N0cmNtcDAgKGVtb2ppX2V4dGVuc2lvbiwgIiIpICE9IDAp IHsKLSAgICAgICAgIGlmICghZXhlY3V0ZV9jbWRsaW5lIChlbW9qaV9leHRlbnNpb24pKQotLSAg ICAgICAgICAgIGV4aXQgKC0xKTsKLSsgICAgICAgICAgICBleGl0X2FuZF9mcmVlX2NvbnRleHQg KEVYSVRfRkFJTFVSRSwgY29udGV4dCk7Ci0gICAgIH0KLSAjZW5kaWYKLSAKLSAgICAgLyogZXhl Y3V0ZSBpYnVzIHhpbSBzZXJ2ZXIgKi8KLSAgICAgaWYgKHhpbSkgewotICAgICAgICAgaWYgKCFl eGVjdXRlX2NtZGxpbmUgKExJQkVYRUNESVIgIi9pYnVzLXgxMSAtLWtpbGwtZGFlbW9uIikpCi0t ICAgICAgICAgICAgZXhpdCAoLTEpOwotKyAgICAgICAgICAgIGV4aXRfYW5kX2ZyZWVfY29udGV4 dCAoRVhJVF9GQUlMVVJFLCBjb250ZXh0KTsKLSAgICAgfQotIAotICAgICBpZiAoIWRhZW1vbml6 ZSkgewotICAgICAgICAgaWYgKGdldHBwaWQgKCkgPT0gMSkgewotICAgICAgICAgICAgIGdfd2Fy bmluZyAoIlRoZSBwYXJlbnQgcHJvY2VzcyBkaWVkLiIpOwotLSAgICAgICAgICAgIGV4aXQgKDAp OwotKyAgICAgICAgICAgIGV4aXRfYW5kX2ZyZWVfY29udGV4dCAoRVhJVF9TVUNDRVNTLCBjb250 ZXh0KTsKLSAgICAgICAgIH0KLSAjaWZkZWYgSEFWRV9TWVNfUFJDVExfSAotICNpZmRlZiBHX09T X1VOSVgKLUBAIC0zOTYsNSArNDA0LDYgQEAgbWFpbiAoZ2ludCBhcmdjLCBnY2hhciAqKmFyZ3Yp Ci0gI2VuZGlmCi0gICAgIH0KLSAgICAgYnVzX3NlcnZlcl9ydW4gKCk7Ci0rICAgIGdfb3B0aW9u X2NvbnRleHRfZnJlZSAoY29udGV4dCk7Ci0gICAgIHJldHVybiAwOwotIH0KLWRpZmYgLS1naXQg YS9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMgYi9jbGllbnQvd2F5bGFuZC9pYnVzd2F5 bGFuZGltLmMKLWluZGV4IGUwNTgwNDRmLi42MDI1Nzc3OSAxMDA2NDQKLS0tLSBhL2NsaWVudC93 YXlsYW5kL2lidXN3YXlsYW5kaW0uYwotKysrIGIvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRp bS5jCi1AQCAtOTI0LDYgKzkyNCw3IEBAIF9idXNfZ2xvYmFsX2VuZ2luZV9jaGFuZ2VkX2NiIChJ QnVzQnVzICAgICAgICpidXMsCi0gICAgIGtleW1hcCA9IGNyZWF0ZV91c2VyX3hrYl9rZXltYXAg KHByaXYtPnhrYl9jb250ZXh0LCBkZXNjKTsKLSAgICAgaWYgKGtleW1hcCAmJiAhaWJ1c193YXls YW5kX2ltX3VwZGF0ZV94a2Jfc3RhdGUgKHdsaW0sIGtleW1hcCkpCi0gICAgICAgICB4a2Jfa2V5 bWFwX3VucmVmIChrZXltYXApOwotKyAgICBnX29iamVjdF91bnJlZiAoZGVzYyk7Ci0gfQotIAot IAotZGlmZiAtLWdpdCBhL3NyYy9pYnVzdGV4dC5jIGIvc3JjL2lidXN0ZXh0LmMKLWluZGV4IDcz ZDNkMTBjLi4wNTc2ZjZjOCAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzdGV4dC5jCi0rKysgYi9zcmMv aWJ1c3RleHQuYwotQEAgLTIsNyArMiw3IEBACi0gLyogdmltOnNldCBldCBzdHM9NDogKi8KLSAv KiBJQnVzIC0gVGhlIElucHV0IEJ1cwotICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEwIFBlbmcg SHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSAqIENvcHlyaWdodCAoQykgMjAxMS0y MDIxIFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHly aWdodCAoQykgMjAxMS0yMDI1IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwu Y29tPgotICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIFJlZCBIYXQsIEluYy4KLSAgKgotICAq IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKLUBAIC0xMDksNyArMTA5LDcgQEAgaWJ1c190ZXh0X2Rlc2VyaWFsaXplIChJQnVzVGV4 dCAqdGV4dCwKLSAgICAgcmV0dmFsID0gSUJVU19TRVJJQUxJWkFCTEVfQ0xBU1MgKGlidXNfdGV4 dF9wYXJlbnRfY2xhc3MpLT5kZXNlcmlhbGl6ZSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChJQnVzU2VyaWFsaXphYmxlICopdGV4dCwgdmFyaWFudCk7Ci0gCi0tICAgIGlmICh0ZXh0 LT5pc19zdGF0aWMgPT0gRkFMU0UpCi0rICAgIGlmICghdGV4dC0+aXNfc3RhdGljKQotICAgICAg ICAgZ19mcmVlICh0ZXh0LT50ZXh0KTsKLSAgICAgZ192YXJpYW50X2dldF9jaGlsZCAodmFyaWFu dCwgcmV0dmFsKyssICJzIiwgJnRleHQtPnRleHQpOwotICAgICB0ZXh0LT5pc19zdGF0aWMgPSBG QUxTRTsKLUBAIC0xMzksMTAgKzEzOSwxNSBAQCBpYnVzX3RleHRfY29weSAoSUJ1c1RleHQgICAg ICAgKmRlc3QsCi0gICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1RFWFQgKGRlc3Qp LCBGQUxTRSk7Ci0gICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1RFWFQgKHNyYyks IEZBTFNFKTsKLSAKLSsgICAgaWYgKCFkZXN0LT5pc19zdGF0aWMpCi0rICAgICAgICBnX2ZyZWUg KGRlc3QtPnRleHQpOwotICAgICBkZXN0LT50ZXh0ID0gZ19zdHJkdXAgKHNyYy0+dGV4dCk7Ci0g ICAgIGRlc3QtPmlzX3N0YXRpYyA9IEZBTFNFOwotKyAgICBpZiAoZGVzdC0+YXR0cnMpCi0rICAg ICAgICBnX2NsZWFyX29iamVjdCAoJmRlc3QtPmF0dHJzKTsKLSAgICAgaWYgKHNyYy0+YXR0cnMp IHsKLS0gICAgICAgIGRlc3QtPmF0dHJzID0gKElCdXNBdHRyTGlzdCAqKWlidXNfc2VyaWFsaXph YmxlX2NvcHkgKChJQnVzU2VyaWFsaXphYmxlICopc3JjLT5hdHRycyk7Ci0rICAgICAgICBkZXN0 LT5hdHRycyA9IChJQnVzQXR0ckxpc3QgKilpYnVzX3NlcmlhbGl6YWJsZV9jb3B5ICgKLSsgICAg ICAgICAgICAgICAgKElCdXNTZXJpYWxpemFibGUgKilzcmMtPmF0dHJzKTsKLSAgICAgICAgIGdf b2JqZWN0X3JlZl9zaW5rIChkZXN0LT5hdHRycyk7Ci0gICAgIH0KLSAKLWRpZmYgLS1naXQgYS91 aS9ndGszL3BhbmVsYmluZGluZy52YWxhIGIvdWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFsYQotaW5k ZXggNDljOTE1NzUuLjUwN2IzZGFjIDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9wYW5lbGJpbmRpbmcu dmFsYQotKysrIGIvdWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFsYQotQEAgLTkxMCw2ICs5MTAsOSBA QCBjbGFzcyBQYW5lbEJpbmRpbmcgOiBJQnVzLlBhbmVsU2VydmljZSB7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgImlzLWVuYWJsZWQiLCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAiaXMtZXh0ZW5zaW9uIiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgIHBhbmVsX2V4dGVuc2lv bihjbG9zZV9ldmVudCk7Ci0rICAgICAgICAgICAgICAgIC8vIFZhbGEgY2FsbHMgZXZlbnQucmVm X3NpbmsoKSBhbmQgcGFuZWxfZXh0ZW5zaW9uKCkgZG9lcyBub3QKLSsgICAgICAgICAgICAgICAg Ly8gdW5yZWYgdGhlIGV2ZW50IGFuZCBuZWVkIHRvIGNhbGwgZXZlbnQudW5yZWYoKSBoZXJlLgot KyAgICAgICAgICAgICAgICBjbG9zZV9ldmVudC51bnJlZigpOwotICAgICAgICAgICAgIH0pOwot ICAgICAgICAgICAgIG1fZW1vamllci5zZW5kX21lc3NhZ2UuY29ubmVjdCgobSkgPT4gewotICAg ICAgICAgICAgICAgICBzZW5kX21lc3NhZ2UobSk7Ci1AQCAtMTE3NSw2ICsxMTc4LDkgQEAgY2xh c3MgUGFuZWxCaW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2UgewotICAgICAgICAgICAgICAgICAg ICAgImlzLWVuYWJsZWQiLCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICJpcy1leHRlbnNp b24iLCB0cnVlKTsKLSAgICAgICAgICAgICBwYW5lbF9leHRlbnNpb24oZXZlbnQpOwotKyAgICAg ICAgICAgIC8vIFZhbGEgY2FsbHMgZXZlbnQucmVmX3NpbmsoKSBhbmQgcGFuZWxfZXh0ZW5zaW9u KCkgZG9lcyBub3QgdW5yZWYKLSsgICAgICAgICAgICAvLyB0aGUgZXZlbnQgYW5kIG5lZWQgdG8g Y2FsbCBldmVudC51bnJlZigpIGhlcmUuCi0rICAgICAgICAgICAgZXZlbnQudW5yZWYoKTsKLSAg ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci0gICAgICAgICBpZiAobV9lbW9qaWVyID09 IG51bGwpCi0tLSAKLTIuNTEuMQotCi1Gcm9tIDI5NjE5MmJkNjk0NDhlNWQ3ODJhMzMxNjJkZTI1 NTM0ZGIwYTc5ZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRh a2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE3IE9jdCAyMDI1IDEzOjE0OjMy ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS81XSB1aS9ndGszOiBGaXggbW91c2UgcG9zaXRpb24g aW4gRW1vamllciBjYXRlZ29yeSBsaXN0Ci0KLUJVRz1yaGJ6IzIyMzc2NjQKLS0tLQotIHVpL2d0 azMvZW1vamllci52YWxhIHwgMTcgKysrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwg MTEgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3VpL2d0azMv ZW1vamllci52YWxhIGIvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKLWluZGV4IGZmYThjZGFhLi43MTQy MjI2NiAxMDA2NDQKLS0tLSBhL3VpL2d0azMvZW1vamllci52YWxhCi0rKysgYi91aS9ndGszL2Vt b2ppZXIudmFsYQotQEAgLTI5LDYgKzI5LDggQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDog R3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgICAgICAgICAgdmFsaWduIDogR3RrLkFs aWduLkZJTEwKLSAgICAgICAgICAgICApOwotICAgICAgICAgICAgIHRoaXMubW90aW9uX25vdGlm eV9ldmVudC5jb25uZWN0KChlKSA9PiB7Ci0rICAgICAgICAgICAgICAgIGlmICghbV9lbnRlcl9u b3RpZnlfZW5hYmxlKQotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg ICAgICAgICAgICBHZGsuRXZlbnRNb3Rpb24gcGUgPSBlOwotICAgICAgICAgICAgICAgICBpZiAo bV9tb3VzZV94ID09IHBlLnhfcm9vdCAmJiBtX21vdXNlX3kgPT0gcGUueV9yb290KQotICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotQEAgLTM3LDYgKzM5LDcgQEAgcHVibGljIGNs YXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKLSAgICAgICAgICAgICAg ICAgdmFyIHJvdyA9IHRoaXMuZ2V0X3Jvd19hdF95KChpbnQpZS55KTsKLSAgICAgICAgICAgICAg ICAgaWYgKHJvdyAhPSBudWxsKQotICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rfcm93 KHJvdyk7Ci0rICAgICAgICAgICAgICAgIG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4ID0gcm93Lmdl dF9pbmRleCgpOwotICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAg fSk7Ci0gICAgICAgICAgICAgdGhpcy5lbnRlcl9ub3RpZnlfZXZlbnQuY29ubmVjdCgoZSkgPT4g ewotQEAgLTI3OSw2ICsyODIsMTIgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFw cGxpY2F0aW9uV2luZG93IHsKLSAgICAgcHJpdmF0ZSBjb25zdCB1bmljaGFyW10gRU1PSklfVkFS SUFOVF9MSVNUID0gewotICAgICAgICAgICAgIDB4MWYzZmIsIDB4MWYzZmMsIDB4MWYzZmQsIDB4 MWYzZmUsIDB4MWYzZmYsIDB4MjAwZCB9OwotIAotKyAgICAvLyBBY2Nlc3MgYm90aCBjbGFzcyBt ZXRob2RzIGFuZCBpbnN0YW5jZXMuCi0rICAgIHByb3RlY3RlZCBzdGF0aWMgaW50IG1fY2F0ZWdv cnlfYWN0aXZlX2luZGV4ID0gLTE7Ci0rICAgIHByb3RlY3RlZCBzdGF0aWMgYm9vbCBtX2VudGVy X25vdGlmeV9lbmFibGUgPSB0cnVlOwotKyAgICBwcm90ZWN0ZWQgc3RhdGljIGRvdWJsZSBtX21v dXNlX3g7Ci0rICAgIHByb3RlY3RlZCBzdGF0aWMgZG91YmxlIG1fbW91c2VfeTsKLSsKLSAgICAg Ly8gU2V0IHRoZSBhY3R1YWwgZGVmYXVsdCB2YWx1ZXMgaW4gdGhlIGNvbnN0cnVjdG9yCi0gICAg IC8vIGJlY2F1c2UgdGhlc2UgZmllbGRzIGFyZSB1c2VkIGZvciBjbGFzc19pbml0KCkgYW5kIHN0 YXRpYyBmdW5jdGlvbnMsCi0gICAgIC8vIGUuZy4gc2V0X2Vtb2ppX2ZvbnQoKSwgY2FuIGJlIGNh bGxlZCBiZWZvcmUgY2xhc3NfaW5pdCgpIGlzIGNhbGxlZC4KLUBAIC0zNDgsMTQgKzM1NywxMCBA QCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAg ICAgKiBVbmljb2RlIGNhdGVnb3J5IGxpc3QuCi0gICAgICAqLwotICAgICBwcml2YXRlIGJvb2wg bV9jYW5kaWRhdGVfcGFuZWxfbW9kZTsKLS0gICAgcHJpdmF0ZSBpbnQgbV9jYXRlZ29yeV9hY3Rp dmVfaW5kZXggPSAtMTsKLSAgICAgcHJpdmF0ZSBJQnVzLkxvb2t1cFRhYmxlIG1fbG9va3VwX3Rh YmxlOwotICAgICBwcml2YXRlIEd0ay5MYWJlbFtdIG1fY2FuZGlkYXRlczsKLS0gICAgcHJpdmF0 ZSBib29sIG1fZW50ZXJfbm90aWZ5X2VuYWJsZSA9IHRydWU7Ci0gICAgIHByaXZhdGUgdWludCBt X2VudHJ5X25vdGlmeV9zaG93X2lkOwotICAgICBwcml2YXRlIHVpbnQgbV9lbnRyeV9ub3RpZnlf ZGlzYWJsZV9pZDsKLS0gICAgcHJvdGVjdGVkIHN0YXRpYyBkb3VibGUgbV9tb3VzZV94OwotLSAg ICBwcm90ZWN0ZWQgc3RhdGljIGRvdWJsZSBtX21vdXNlX3k7Ci0gICAgIHByaXZhdGUgR3RrLlBy b2dyZXNzQmFyIG1fdW5pY29kZV9wcm9ncmVzc19iYXI7Ci0gICAgIHByaXZhdGUgdWludCBtX3Vu aWNvZGVfcHJvZ3Jlc3NfaWQ7Ci0gICAgIHByaXZhdGUgR3RrLkxhYmVsIG1fdW5pY29kZV9wZXJj ZW50X2xhYmVsOwotQEAgLTk4OCw3ICs5OTMsNyBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIg OiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewotICAgICAgICAgICAgIEVQYWRkZWRMYWJlbEJveCB3 aWRnZXQgPQotICAgICAgICAgICAgICAgICAgICAgbmV3IEVQYWRkZWRMYWJlbEJveChfKGNhdGVn b3J5KSwgR3RrLkFsaWduLkNFTlRFUik7Ci0gICAgICAgICAgICAgcm93LmFkZCh3aWRnZXQpOwot LSAgICAgICAgICAgIG1fbGlzdF9ib3guYWRkKHJvdyk7Ci0rICAgICAgICAgICAgbV9saXN0X2Jv eC5pbnNlcnQocm93LCAtMSk7Ci0gICAgICAgICAgICAgaWYgKGkgPT0gbV9jYXRlZ29yeV9hY3Rp dmVfaW5kZXgpCi0gICAgICAgICAgICAgICAgIG1fbGlzdF9ib3guc2VsZWN0X3Jvdyhyb3cpOwot ICAgICAgICAgfQotQEAgLTExMTMsNyArMTExOCw3IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamll ciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRyYXZlbERpcmVjdGlvbi5OT05FLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjYXB0aW9uKTsKLSAgICAgICAgICAgICByb3cuYWRkKHdpZGdl dCk7Ci0tICAgICAgICAgICAgbV9saXN0X2JveC5hZGQocm93KTsKLSsgICAgICAgICAgICBtX2xp c3RfYm94Lmluc2VydChyb3csIC0xKTsKLSAgICAgICAgICAgICBpZiAobisrID09IG1fY2F0ZWdv cnlfYWN0aXZlX2luZGV4KSB7Ci0gICAgICAgICAgICAgICAgIG1fbGlzdF9ib3guc2VsZWN0X3Jv dyhyb3cpOwotICAgICAgICAgICAgIH0KLS0tIAotMi41MS4xCi0KLUZyb20gYjAwZDk0NjRlMWE1 NDYzMDA5OGZlN2I1YmJkZjM3MmE1ZjliODMyYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZy b206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTcg T2N0IDIwMjUgMTM6MTQ6MzQgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzVdIHVpL2d0azM6IFNl dCBNZXNzYWdlRGlhbG9nIGF0IGlucHV0IGN1cnNvcgotCi0tLS0KLSB1aS9ndGszL2NhbmRpZGF0 ZXBhbmVsLnZhbGEgfCA0ICsrKysKLSB1aS9ndGszL21lc3NhZ2UudmFsYSAgICAgICAgfCA2ICsr KysrKwotIHVpL2d0azMvcGFuZWwudmFsYSAgICAgICAgICB8IDQgKysrKwotIDMgZmlsZXMgY2hh bmdlZCwgMTQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvdWkvZ3RrMy9jYW5kaWRhdGVw YW5lbC52YWxhIGIvdWkvZ3RrMy9jYW5kaWRhdGVwYW5lbC52YWxhCi1pbmRleCAzY2MyYzA4Ni4u NzRkZTZmNzQgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL2NhbmRpZGF0ZXBhbmVsLnZhbGEKLSsrKyBi L3VpL2d0azMvY2FuZGlkYXRlcGFuZWwudmFsYQotQEAgLTE2MSw2ICsxNjEsMTAgQEAgcHVibGlj IGNsYXNzIENhbmRpZGF0ZVBhbmVsIDogR3RrLkJveHsKLSAgICAgICAgIH0KLSAgICAgfQotIAot KyAgICBwdWJsaWMgR2RrLlJlY3RhbmdsZT8gZ2V0X2N1cnNvcl9yZWN0KCkgewotKyAgICAgICAg cmV0dXJuIG1fY3Vyc29yX2xvY2F0aW9uOwotKyAgICB9Ci0rCi0gICAgIHB1YmxpYyB2b2lkIHNl dF9jdXJzb3JfbG9jYXRpb24oaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsK LSAgICAgICAgIEdkay5SZWN0YW5nbGUgbG9jYXRpb24gPSBHZGsuUmVjdGFuZ2xlKCl7Ci0gICAg ICAgICAgICAgeCA9IHgsIHkgPSB5LCB3aWR0aCA9IHdpZHRoLCBoZWlnaHQgPSBoZWlnaHQgfTsK LWRpZmYgLS1naXQgYS91aS9ndGszL21lc3NhZ2UudmFsYSBiL3VpL2d0azMvbWVzc2FnZS52YWxh Ci1pbmRleCAwYzdkZDQ3OC4uYjYzNjY1NTcgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL21lc3NhZ2Uu dmFsYQotKysrIGIvdWkvZ3RrMy9tZXNzYWdlLnZhbGEKLUBAIC05MSw2ICs5MSwxMiBAQCBwdWJs aWMgY2xhc3MgTWVzc2FnZURpYWxvZyA6IEd0ay5Cb3h7Ci0gICAgICAgICBjcmVhdGVfdWkobWVz c2FnZSk7Ci0gICAgIH0KLSAKLSsgICAgcHVibGljIHZvaWQgc2V0X2N1cnNvcl9yZWN0KEdkay5S ZWN0YW5nbGUgbG9jYXRpb24pIHsKLSsgICAgICAgIGlmIChtX2N1cnNvcl9sb2NhdGlvbiA9PSBs b2NhdGlvbikKLSsgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICBtX2N1cnNvcl9sb2NhdGlv biA9IGxvY2F0aW9uOwotKyAgICB9Ci0rCi0gICAgIHB1YmxpYyB2b2lkIHNldF9jdXJzb3JfbG9j YXRpb24oaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKLSAgICAgICAgIEdk ay5SZWN0YW5nbGUgbG9jYXRpb24gPSBHZGsuUmVjdGFuZ2xlKCl7Ci0gICAgICAgICAgICAgeCA9 IHgsIHkgPSB5LCB3aWR0aCA9IHdpZHRoLCBoZWlnaHQgPSBoZWlnaHQgfTsKLWRpZmYgLS1naXQg YS91aS9ndGszL3BhbmVsLnZhbGEgYi91aS9ndGszL3BhbmVsLnZhbGEKLWluZGV4IGZjYjMwMjIw Li45MDE5NDUyOSAxMDA2NDQKLS0tLSBhL3VpL2d0azMvcGFuZWwudmFsYQotKysrIGIvdWkvZ3Rr My9wYW5lbC52YWxhCi1AQCAtOTMwLDYgKzkzMCwxMCBAQCBjbGFzcyBQYW5lbCA6IElCdXMuUGFu ZWxTZXJ2aWNlIHsKLSAgICAgICAgICAgICAgICAgICAgICh3LCBzKSA9PiB0aGlzLnJlYWxpemVf c3VyZmFjZShzKSk7Ci0gI2VuZGlmCi0gICAgICAgICAgICAgbV9wb3B1cF9kaWFsb2dzLmluc2Vy dChzZXJpYWwsIHBvcHVwKTsKLSsgICAgICAgICAgICBpZiAobV9jYW5kaWRhdGVfcGFuZWxfYWN0 aXZlICE9IG51bGwpIHsKLSsgICAgICAgICAgICAgICAgcG9wdXAuc2V0X2N1cnNvcl9yZWN0KAot KyAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FuZGlkYXRlX3BhbmVsX2FjdGl2ZS5nZXRfY3Vy c29yX3JlY3QoKSk7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIHBvcHVwLnNob3coKTsK LSAgICAgICAgIH0KLSAgICAgfQotLS0gCi0yLjUxLjEKLQotRnJvbSAwMzE0Y2Y1YmY1YmIzYTQ2 ZmY5NmNmYjRmOTNhYzkzN2MxMjliN2ZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTog ZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogRnJpLCAxNyBPY3Qg MjAyNSAyMzozODowMCArMDkwMAotU3ViamVjdDogW1BBVENIIDMvNV0gY2xpZW50L3dheWxhbmQ6 IEZyZWUgSUJ1c0lucHV0Q29udGV4dCBpbiBpbnB1dF9tZXRob2RfYWN0aXZhdGUoKQotCi1DYWxs IGlucHV0X21ldGhvZF9kZWFjdGl2YXRlKCkgd2hlbiBpbnB1dF9tZXRob2RfYWN0aXZhdGUoKSBp cwotY2FsbGVkIHR3aWNlIGFuZCB6d3BfaW5wdXRfbWV0aG9kX2NvbnRleHRfdjEgaXMgbnVsbCBi dXQKLUlCdXNJbnB1dENvbnRleHQgaXMgbm90IG51bGwuCi1UaGlzIGVuaGFuY2VzIG5vdCB0byBj YXVzZSBhIFNFR1YgaW4gX2NvbnRleHRfaGlkZV9wcmVlZGl0X3RleHRfY2IoKQotCi1CVUc9cmhi eiMyMzI2NDU1Ci0tLS0KLSBjbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMgfCAxMCArKyst LS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkK LQotZGlmZiAtLWdpdCBhL2NsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYyBiL2NsaWVudC93 YXlsYW5kL2lidXN3YXlsYW5kaW0uYwotaW5kZXggZTA1ODA0NGYuLjYzMWJlYTkzIDEwMDY0NAot LS0tIGEvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jCi0rKysgYi9jbGllbnQvd2F5bGFu ZC9pYnVzd2F5bGFuZGltLmMKLUBAIC0xNzk2LDcgKzE3OTYsNyBAQCBpbnB1dF9tZXRob2RfYWN0 aXZhdGUgKHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEsCi0gCi0gICAg IGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfV0FZTEFORF9JTSAod2xpbSkpOwotICAgICBwcml2 ID0gaWJ1c193YXlsYW5kX2ltX2dldF9pbnN0YW5jZV9wcml2YXRlICh3bGltKTsKLS0gICAgaWYg KHByaXYtPmNvbnRleHQpCi0rICAgIGlmIChwcml2LT5jb250ZXh0IHx8IHByaXYtPmlidXNjb250 ZXh0KQotICAgICAgICAgaW5wdXRfbWV0aG9kX2RlYWN0aXZhdGUgKGRhdGEsIGlucHV0X21ldGhv ZCwgY29udGV4dCk7Ci0gCi0gICAgIHByaXYtPmNvbnRleHQgPSBjb250ZXh0OwotQEAgLTE4Mjgs MTAgKzE4MjgsNyBAQCBpbnB1dF9tZXRob2RfYWN0aXZhdGUgKHZvaWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKmRhdGEsCi0gICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsK LSAgICAgfQotIAotLSAgICBpZiAocHJpdi0+aWJ1c2NvbnRleHQpIHsKLS0gICAgICAgIGdfb2Jq ZWN0X3VucmVmIChwcml2LT5pYnVzY29udGV4dCk7Ci0tICAgICAgICBwcml2LT5pYnVzY29udGV4 dCA9IE5VTEw7Ci0tICAgIH0KLSsgICAgZ19hc3NlcnQgKCFwcml2LT5pYnVzY29udGV4dCk7Ci0g Ci0gICAgIHByaXYtPmNhbmNlbGxhYmxlID0gZ19jYW5jZWxsYWJsZV9uZXcgKCk7Ci0gICAgIGli dXNfYnVzX2NyZWF0ZV9pbnB1dF9jb250ZXh0X2FzeW5jIChwcml2LT5pYnVzYnVzLAotQEAgLTE4 ODQsOCArMTg4MSw3IEBAIGlucHV0X21ldGhvZF9kZWFjdGl2YXRlICh2b2lkICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICpkYXRhLAotICAgICAgICAgICAgICAgICBwcml2LT5pYnVzY29u dGV4dCwKLSAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoX2NvbnRleHRfaGlkZV9wcmVlZGl0 X3RleHRfY2IpLAotICAgICAgICAgICAgICAgICB3bGltKTsKLS0gICAgICAgIGdfb2JqZWN0X3Vu cmVmIChwcml2LT5pYnVzY29udGV4dCk7Ci0tICAgICAgICBwcml2LT5pYnVzY29udGV4dCA9IE5V TEw7Ci0rICAgICAgICBnX2NsZWFyX29iamVjdCAoJnByaXYtPmlidXNjb250ZXh0KTsKLSAgICAg ICAgIGdfc2lnbmFsX2VtaXQgKHdsaW0sCi0gICAgICAgICAgICAgICAgICAgICAgICB3YXlsYW5k X2ltX3NpZ25hbHNbSUJVU19GT0NVU19PVVRdLAotICAgICAgICAgICAgICAgICAgICAgICAgMCwK LS0tIAotMi41MS4xCi0KLUZyb20gZjZjNTJjZTBiYWYwYWQxMTcwNWEwZjlhZjE2MDA3NmE5NzEw NGJmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVq aXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjYgTm92IDIwMjUgMTU6MTY6MDMgKzA5MDAK LVN1YmplY3Q6IFtQQVRDSCA0LzVdIHV0aWwvSU1ka2l0OiBGaXggU0VHViB3aXRoIGFsbG9jYXRp b24gZmFpbCBpbiBfWGkxOG5DaGFuZ2VJQygpCi0KLVdoZW4gbWFsbG9jKCkgaXMgZmFpbGVkLCBp dCBzaG91bGQgYnJlYWsgdGhlIGZvciBsb29wIHRvIHNldAotYXR0cmliX251bSB2YWx1ZSBjb3Jy ZWN0bHkgdG8gZnJlZSBhdHRyaWJfbGlzdCBhcnJheS4KLQotQlVHPXJoYnojMjM0NjAzMwotLS0t Ci0gdXRpbC9JTWRraXQvaTE4bkljLmMgfCA1ICsrKystCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdXRpbC9JTWRraXQvaTE4 bkljLmMgYi91dGlsL0lNZGtpdC9pMThuSWMuYwotaW5kZXggMTRhM2RjNTEuLmU4MmZmYmNmIDEw MDY0NAotLS0tIGEvdXRpbC9JTWRraXQvaTE4bkljLmMKLSsrKyBiL3V0aWwvSU1ka2l0L2kxOG5J Yy5jCi1AQCAtMiw2ICsyLDggQEAKLSAgCi0gICAgICAgICAgQ29weXJpZ2h0IDE5OTQsIDE5OTUg YnkgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLgotICAgICAgICAgIENvcHlyaWdodCAxOTkzLCAxOTk0 IGJ5IEhld2xldHQtUGFja2FyZCBDb21wYW55Ci0rICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA4 LTIwMjUgUmVkIEhhdCwgSW5jLgotKyAgICAgICAgIENvcHlyaWdodCAoQykgMjAxNy0yMDI1IFRh a2FvIEZ1aml3YXJhCi0gIAotIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3Ry aWJ1dGUsIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUKLSBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9y IGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLAotQEAgLTcxNCwxMCAr NzE2LDExIEBAIHZvaWQgX1hpMThuQ2hhbmdlSUMgKFhJTVMgaW1zLAotICAgICAgICAgRnJhbWVN Z3JTZXRTaXplIChmbSwgdmFsdWVfbGVuZ3RoKTsKLSAgICAgICAgIGF0dHJpYl9saXN0W2F0dHJp Yl9udW1dLnZhbHVlX2xlbmd0aCA9IHZhbHVlX2xlbmd0aDsKLSAgICAgICAgIEZyYW1lTWdyR2V0 VG9rZW4gKGZtLCB2YWx1ZSk7Ci0tICAgICAgICBhdHRyaWJfbGlzdFthdHRyaWJfbnVtXS52YWx1 ZSA9ICh2b2lkICopIG1hbGxvYyAodmFsdWVfbGVuZ3RoICsgMSk7Ci0rICAgICAgICBhdHRyaWJf bGlzdFthdHRyaWJfbnVtXS52YWx1ZSA9ICh2b2lkICopbWFsbG9jICh2YWx1ZV9sZW5ndGggKyAx KTsKLSAgICAgICAgIGlmICghYXR0cmliX2xpc3RbYXR0cmliX251bV0udmFsdWUpIHsKLSAgICAg ICAgICAgICBmcHJpbnRmIChzdGRlcnIsICIoWElNLUlNZGtpdCkgV0FSTklORzogbWFsbG9jIGZh aWxlZCBpbiAlczolZC5cbiIsCi0gICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElO RV9fKTsKLSsgICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg ICAgbWVtbW92ZSAoYXR0cmliX2xpc3RbYXR0cmliX251bV0udmFsdWUsIHZhbHVlLCB2YWx1ZV9s ZW5ndGgpOwotICAgICAgICAgICAgICgoY2hhciAqKWF0dHJpYl9saXN0W2F0dHJpYl9udW1dLnZh bHVlKVt2YWx1ZV9sZW5ndGhdID0gJ1wwJzsKLS0tIAotMi41MS4xCi0KLUZyb20gY2EwMTkzZjVi MWMxN2Y1YzhhNDU2ZTA5NDIxZDJhODY4OGM1ZDY2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFRodSwg MjMgT2N0IDIwMjUgMjI6NDU6MTEgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIHVpL2d0azM6 IFJlZmVyIFFUX0lNX01PRFVMRVMgdG8gY2hlY2sgV2F5bGFuZCBjb25maWd1cmF0aW9uCi0KLVFU X0lNX01PRFVMRVMgYW5kIFFUX0lNX01PRFVMRSBpcyBhdmFpbGFibGUuIFRoZSB3YXJuaW5nIG1l c3NhZ2UKLWlzIG5vdCBjaGFuZ2VkIGF0IHRoZSBtb21lbnQuCi1pYnVzLXNldHVwIGFsc28gcnVu cyBgaWJ1cyBzdGFydGAgaW5zdGVhZCBpYnVzLWRhZW1vbi4KLQotQlVHPXJoYnojMjM5MjM1OAot LS0tCi0gc2V0dXAvbWFpbi5weSAgICAgIHwgMTkgKysrKysrKysrKysrKystLS0tLQotIHVpL2d0 azMvcGFuZWwudmFsYSB8ICA2ICsrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NldHVwL21haW4ucHkgYi9zZXR1 cC9tYWluLnB5Ci1pbmRleCBkMGUwNTY2Ni4uMzFiNDQwMzcgMTAwNjQ0Ci0tLS0gYS9zZXR1cC9t YWluLnB5Ci0rKysgYi9zZXR1cC9tYWluLnB5Ci1AQCAtNCw4ICs0LDggQEAKLSAjIGlidXMgLSBU aGUgSW5wdXQgQnVzCi0gIwotICMgQ29weXJpZ2h0IChjKSAyMDA3LTIwMTYgUGVuZyBIdWFuZyA8 c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAyMCBUYWth byBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLS0jIENvcHlyaWdodCAoYykg MjAwNy0yMDIwIFJlZCBIYXQsIEluYy4KLSsjIENvcHlyaWdodCAoYykgMjAxMC0yMDI1IFRha2Fv IEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyMgQ29weXJpZ2h0IChjKSAy MDA3LTIwMjUgUmVkIEhhdCwgSW5jLgotICMKLSAjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAjIG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLUBAIC02MDIsMTMgKzYw MiwyMiBAQCBjbGFzcyBTZXR1cChvYmplY3QpOgotICAgICAgICAgR0xpYi50aW1lb3V0X2FkZF9z ZWNvbmRzKHRpbWVvdXQsIGxhbWJkYSAqYXJnczogbWFpbl9sb29wLnF1aXQoKSkKLSAgICAgICAg IHNlbGYuX19idXMuY29ubmVjdCgiY29ubmVjdGVkIiwgbGFtYmRhICphcmdzOiBtYWluX2xvb3Au cXVpdCgpKQotIAotLSAgICAgICAgb3Muc3Bhd25scChvcy5QX05PV0FJVCwgImlidXMtZGFlbW9u IiwgImlidXMtZGFlbW9uIiwgIi0teGltIiwgIi0tZGFlbW9uaXplIikKLSsgICAgICAgIG9zLnNw YXdubHAob3MuUF9OT1dBSVQsICJpYnVzIiwgImlidXMiLCAic3RhcnQiLCAiLS14aW0iLCAiLS1k YWVtb25pemUiKQotIAotICAgICAgICAgbWFpbl9sb29wLnJ1bigpCi0gCi0gICAgICAgICBpZiBz ZWxmLl9fYnVzLmlzX2Nvbm5lY3RlZCgpOgotLSAgICAgICAgICAgIG1lc3NhZ2UgPSBfKCJJQnVz IGhhcyBiZWVuIHN0YXJ0ZWQhICIKLS0gICAgICAgICAgICAgICAgIklmIHlvdSBjYW5ub3QgdXNl IElCdXMsIGFkZCB0aGUgZm9sbG93aW5nIGxpbmVzIHRvIHlvdXIgJEhPTUUvLmJhc2hyYzsgdGhl biByZWxvZyBpbnRvIHlvdXIgZGVza3RvcC5cbiIKLSsgICAgICAgICAgICBtZXNzYWdlID0gXygi SUJ1cyBoYXMgYmVlbiBzdGFydGVkLiAiCi0rICAgICAgICAgICAgICAgICJJZiB5b3UgY2Fubm90 IHVzZSBJQnVzLCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lcyB0byB5b3VyICIKLSsgICAgICAgICAg ICAgICAgIiRIT01FLy5iYXNocmM7IHRoZW4gcmVsb2cgaW50byB5b3VyIGRlc2t0b3AuXG4iCi0r ICAgICAgICAgICAgICAgICJcbiIKLSsgICAgICAgICAgICAgICAgIiAgIyBGb3IgV2F5bGFuZCBz ZXNzaW9ucyAoJFhER19TRVNTSU9OX1RZUEUgaXMgXCJ3YXlsYW5kXCIpXG4iCi0rICAgICAgICAg ICAgICAgICIgIGV4cG9ydCBHVEtfSU1fTU9EVUxFPXdheWxhbmRcbiIKLSsgICAgICAgICAgICAg ICAgIiAgZXhwb3J0IFhNT0RJRklFUlM9QGltPWlidXNcbiIKLSsgICAgICAgICAgICAgICAgIiAg ZXhwb3J0IFFUX0lNX01PRFVMRVM9d2F5bGFuZDtpYnVzXG4iCi0rICAgICAgICAgICAgICAgICIg IGV4cG9ydCBRVF9JTV9NT0RVTEU9aWJ1c1xuIgotKyAgICAgICAgICAgICAgICAiXG4iCi0rICAg ICAgICAgICAgICAgICIgICMgRm9yIFgxMSBzZXNzaW9ucyAoJFhER19TRVNTSU9OX1RZUEUgaXMg XCJ4MTFcIilcbiIKLSAgICAgICAgICAgICAgICAgIiAgZXhwb3J0IEdUS19JTV9NT0RVTEU9aWJ1 c1xuIgotICAgICAgICAgICAgICAgICAiICBleHBvcnQgWE1PRElGSUVSUz1AaW09aWJ1c1xuIgot ICAgICAgICAgICAgICAgICAiICBleHBvcnQgUVRfSU1fTU9EVUxFPWlidXMiCi1kaWZmIC0tZ2l0 IGEvdWkvZ3RrMy9wYW5lbC52YWxhIGIvdWkvZ3RrMy9wYW5lbC52YWxhCi1pbmRleCA5MDE5NDUy OS4uY2ZhNmU1MGQgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL3BhbmVsLnZhbGEKLSsrKyBiL3VpL2d0 azMvcGFuZWwudmFsYQotQEAgLTEwMjcsNyArMTAyNywxMSBAQCBjbGFzcyBQYW5lbCA6IElCdXMu UGFuZWxTZXJ2aWNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAiV2F5bGFuZCIsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgImlidXMgc3RhcnQiKTsKLSAgICAgICAgIH0gZWxzZSBpZiAo bV9pc193YXlsYW5kICYmIG1faXNfd2F5bGFuZF9pbSAmJiAhaXNfZ25vbWUoKSkgewotLSAgICAg ICAgICAgIGlmIChFbnZpcm9ubWVudC5nZXRfdmFyaWFibGUoIlFUX0lNX01PRFVMRSIpID09ICJp YnVzIikgewotKyAgICAgICAgICAgIHZhciBxdF9pbV9tb2R1bGUgPSBFbnZpcm9ubWVudC5nZXRf dmFyaWFibGUoIlFUX0lNX01PRFVMRSIpOwotKyAgICAgICAgICAgIHZhciBxdF9pbV9tb2R1bGVz ID0gRW52aXJvbm1lbnQuZ2V0X3ZhcmlhYmxlKCJRVF9JTV9NT0RVTEVTIik7Ci0rICAgICAgICAg ICAgaWYgKChxdF9pbV9tb2R1bGUgIT0gbnVsbCAmJiBxdF9pbV9tb2R1bGUgIT0gIndheWxhbmQi KSAmJgotKyAgICAgICAgICAgICAgICAocXRfaW1fbW9kdWxlcyA9PSBudWxsIHx8Ci0rICAgICAg ICAgICAgICAgICAhcXRfaW1fbW9kdWxlcy5oYXNfcHJlZml4KCJ3YXlsYW5kIikpKSB7Ci0gICAg ICAgICAgICAgICAgIHZhciBmb3JtYXQgPQotICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlBs ZWFzZSB1bnNldCBRVF9JTV9NT0RVTEUgYW5kIEdUS19JTV9NT0RVTEUgIiArCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAiZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZCAnaWJ1cy1kYWVtb24g LS1wYW5lbCAiICsKLS0tIAotMi41MS4xCi0KLUZyb20gNjllYjRjNmRlMWRjN2Y2MTM3NzgwMTM5 NTEwYjVhMTU5OGRjNzE4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvYW4gVG9y cmVzIExvcGV6IDxqb2FudG9sb0ByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAyNiBOb3YgMjAyNSAx NjowMjoxOCArMDkwMAotU3ViamVjdDogW1BBVENIXSBzcmM6IE1vdmUgZ3JvdXAgbmFtZSBkZXRl Y3Rpb24gdG8gaWJ1c19nZXRfZ3JvdXBfbmFtZSgpCi0KLVJlc29sdmVzOiBodHRwczovL2dpdGh1 Yi5jb20vaWJ1cy9pYnVzL2NvbW1pdC9jMTU4ODAwCi1CVUc9aHR0cHM6Ly9naXRodWIuY29tL2li dXMvaWJ1cy9wdWxsLzI4MDYKLS0tLQotIGJ1cy9tYWluLmMgICAgICB8IDQ3ICsrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL2lidXNzaGFyZS5jIHwg MzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIHNyYy9pYnVzc2hhcmUuaCB8 IDE4ICsrKysrKysrKysrKysrKy0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygr KSwgMzUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9idXMvbWFpbi5jIGIvYnVzL21haW4u YwotaW5kZXggZTBkYjE1YjMuLjg2OTViMDY1IDEwMDY0NAotLS0tIGEvYnVzL21haW4uYwotKysr IGIvYnVzL21haW4uYwotQEAgLTM5LDcgKzM5LDYgQEAKLSAKLSAjaWZkZWYgR19PU19VTklYCi0g I2luY2x1ZGUgPGdsaWItdW5peC5oPgotLSNpbmNsdWRlIDxncnAuaD4KLSAjZW5kaWYKLSAKLSAj aW5jbHVkZSAiZ2xvYmFsLmgiCi1AQCAtMTk1LDExICsxOTQsNyBAQCBtYWluIChnaW50IGFyZ2Ms IGdjaGFyICoqYXJndikKLSB7Ci0gICAgIGludCBpOwotICAgICBjb25zdCBnY2hhciAqdXNlcm5h bWUgPSBpYnVzX2dldF91c2VyX25hbWUgKCk7Ci0tICAgIGNvbnN0IGdjaGFyICpncm91cG5hbWUg PSBOVUxMOwotLSNpZmRlZiBIQVZFX0dFVEdSR0lEX1IKLS0gICAgY2hhciBidWZmZXJbNDA5Nl07 Ci0tICAgIHN0cnVjdCBncm91cCBnYnVmOwotLSNlbmRpZgotKyAgICBjb25zdCBnY2hhciAqZ3Jv dXBuYW1lID0gaWJ1c19nZXRfZ3JvdXBfbmFtZSAoKTsKLSAKLSAgICAgc2V0bG9jYWxlIChMQ19B TEwsICIiKTsKLSAKLUBAIC0yMjcsMjggKzIyMiwxMiBAQCBtYWluIChnaW50IGFyZ2MsIGdjaGFy ICoqYXJndikKLSAgICAgICAgIHN0cnVjdCBwYXNzd2QgKnB3ZCA9IGdldHB3dWlkIChnZXR1aWQg KCkpOwotIAotICAgICAgICAgaWYgKHB3ZCA9PSBOVUxMIHx8IGdfc3RyY21wMCAocHdkLT5wd19u YW1lLCB1c2VybmFtZSkgIT0gMCkgewotLSAgICAgICAgICAgIGdfcHJpbnRlcnIgKCJQbGVhc2Ug cnVuIGlidXMtZGFlbW9uIHdpdGggbG9naW4gdXNlciEgRG8gbm90IHJ1biBpYnVzLWRhZW1vbiB3 aXRoIHN1ZG8gb3Igc3UuXG4iKTsKLSsgICAgICAgICAgICBnX3ByaW50ZXJyICgiUGxlYXNlIHJ1 biBpYnVzLWRhZW1vbiB3aXRoIGxvZ2luIHVzZXIhIERvIG5vdCBydW4gIgotKyAgICAgICAgICAg ICAgICAgICAgICAgICJpYnVzLWRhZW1vbiB3aXRoIHN1ZG8gb3Igc3UuXG4iKTsKLSAgICAgICAg ICAgICBleGl0X2FuZF9mcmVlX2NvbnRleHQgKEVYSVRfRkFJTFVSRSwgY29udGV4dCk7Ci0gICAg ICAgICB9Ci0gICAgIH0KLSAKLS0gICAgLyogZ2V0IGdyb3VwIG5hbWUgKi8KLS0gICAgewotLSAg ICAgICAgc3RydWN0IGdyb3VwICpncnAgPSBOVUxMOwotLSNpZmRlZiBIQVZFX0dFVEdSR0lEX1IK LS0gICAgICAgIC8qIE1ULVNhZmUgbG9jYWxlICovCi0tICAgICAgICBnZXRncmdpZF9yIChnZXRn aWQgKCksICZnYnVmLCBidWZmZXIsIHNpemVvZihidWZmZXIpLCAmZ3JwKTsKLS0jZWxzZQotLSAg ICAgICAgLyogTVQtVW5zYWZlIHJhY2U6Z3JnaWQgbG9jYWxlICovCi0tICAgICAgICBncnAgPSBn ZXRncmdpZCAoZ2V0Z2lkICgpKTsKLS0jZW5kaWYKLS0KLS0gICAgICAgIGlmIChncnAgJiYgZ3Jw LT5ncl9uYW1lICYmIGdycC0+Z3JfbmFtZVswXSkKLS0gICAgICAgICAgICBncm91cG5hbWUgPSBn cnAtPmdyX25hbWU7Ci0tICAgICAgICBlbHNlCi0tICAgICAgICAgICAgZ193YXJuaW5nICgiQ291 bGRuJ3QgZ2V0IGdyb3VwIG5hbWUiKTsKLS0gICAgfQotLQotICAgICAvKiBkYWVtb25pemUgcHJv Y2VzcyAqLwotICAgICBpZiAoZGFlbW9uaXplKSB7Ci0gICAgICAgICBpZiAoZGFlbW9uICgxLCAw KSAhPSAwKSB7Ci1AQCAtMjU3LDcgKzIzNiw5IEBAIG1haW4gKGdpbnQgYXJnYywgZ2NoYXIgKiph cmd2KQotICAgICAgICAgfQotICAgICB9Ci0gCi0tICAgIC8qIGNyZWF0ZSBhIG5ldyBwcm9jZXNz IGdyb3VwLiB0aGlzIGlzIGltcG9ydGFudCB0byBraWxsIGFsbCBvZiBpdHMgY2hpbGRyZW4gYnkg U0lHVEVSTSBhdCBhIHRpbWUgaW4gYnVzX2lidXNfaW1wbF9kZXN0cm95LiAqLwotKyAgICAvKiBj cmVhdGUgYSBuZXcgcHJvY2VzcyBncm91cC4gdGhpcyBpcyBpbXBvcnRhbnQgdG8ga2lsbCBhbGwg b2YgaXRzCi0rICAgICAqIGNoaWxkcmVuIGJ5IFNJR1RFUk0gYXQgYSB0aW1lIGluIGJ1c19pYnVz X2ltcGxfZGVzdHJveS4KLSsgICAgICovCi0gICAgIHNldHBnaWQgKDAsIDApOwotIAotICAgICBp YnVzX2luaXQgKCk7Ci1AQCAtMjg2LDEzICsyNjcsMTMgQEAgbWFpbiAoZ2ludCBhcmdjLCBnY2hh ciAqKmFyZ3YpCi0gICAgIH0KLSAKLSAgICAgYnVzX3NlcnZlcl9pbml0ICgpOwotLSAgICBmb3Ig KGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTKHBhbmVsX2V4dGVuc2lvbl9kaXNhYmxlX3VzZXJzKTsg aSsrKSB7Ci0rICAgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKHBhbmVsX2V4dGVuc2lv bl9kaXNhYmxlX3VzZXJzKTsgaSsrKSB7Ci0gICAgICAgICBpZiAoIWdfc3RyY21wMCAodXNlcm5h bWUsIHBhbmVsX2V4dGVuc2lvbl9kaXNhYmxlX3VzZXJzW2ldKSAhPSAwKSB7Ci0gICAgICAgICAg ICAgZW1vamlfZXh0ZW5zaW9uID0gImRpc2FibGUiOwotICAgICAgICAgICAgIGJyZWFrOwotICAg ICAgICAgfQotICAgICB9Ci0tICAgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMocGFuZWxf ZXh0ZW5zaW9uX2Rpc2FibGVfZ3JvdXBzKTsgaSsrKSB7Ci0rICAgIGZvciAoaSA9IDA7IGkgPCBH X05fRUxFTUVOVFMgKHBhbmVsX2V4dGVuc2lvbl9kaXNhYmxlX2dyb3Vwcyk7IGkrKykgewotICAg ICAgICAgaWYgKGdfc3RyY21wMCAoZ3JvdXBuYW1lLCBwYW5lbF9leHRlbnNpb25fZGlzYWJsZV9n cm91cHNbaV0pID09IDApIHsKLSAgICAgICAgICAgICBlbW9qaV9leHRlbnNpb24gPSAiZGlzYWJs ZSI7Ci0gICAgICAgICAgICAgYnJlYWs7Ci1AQCAtMzA3LDExICsyODgsMTMgQEAgbWFpbiAoZ2lu dCBhcmdjLCBnY2hhciAqKmFyZ3YpCi0gICAgICAgICAgICAgaWYgKGNvbXBvbmVudCkgewotICAg ICAgICAgICAgICAgICBidXNfY29tcG9uZW50X3NldF9yZXN0YXJ0IChjb21wb25lbnQsIHJlc3Rh cnQpOwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBpZiAoY29tcG9uZW50ID09IE5VTEwg fHwgIWJ1c19jb21wb25lbnRfc3RhcnQgKGNvbXBvbmVudCwgZ192ZXJib3NlKSkgewotKyAgICAg ICAgICAgIGlmIChjb21wb25lbnQgPT0gTlVMTCB8fAotKyAgICAgICAgICAgICAgICAhYnVzX2Nv bXBvbmVudF9zdGFydCAoY29tcG9uZW50LCBnX3ZlcmJvc2UpKSB7Ci0gICAgICAgICAgICAgICAg IGdfcHJpbnRlcnIgKCJDYW4gbm90IGV4ZWN1dGUgZGVmYXVsdCBjb25maWcgcHJvZ3JhbVxuIik7 Ci0gICAgICAgICAgICAgICAgIGV4aXRfYW5kX2ZyZWVfY29udGV4dCAoRVhJVF9GQUlMVVJFLCBj b250ZXh0KTsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICB9IGVsc2UgaWYgKGdfc3RyY21wMCAo Y29uZmlnLCAiZGlzYWJsZSIpICE9IDAgJiYgZ19zdHJjbXAwIChjb25maWcsICIiKSAhPSAwKSB7 Ci0rICAgICAgICB9IGVsc2UgaWYgKGdfc3RyY21wMCAoY29uZmlnLCAiZGlzYWJsZSIpICE9IDAg JiYKLSsgICAgICAgICAgICAgICAgICAgZ19zdHJjbXAwIChjb25maWcsICIiKSAhPSAwKSB7Ci0g ICAgICAgICAgICAgaWYgKCFleGVjdXRlX2NtZGxpbmUgKGNvbmZpZykpCi0gICAgICAgICAgICAg ICAgIGV4aXRfYW5kX2ZyZWVfY29udGV4dCAoRVhJVF9GQUlMVVJFLCBjb250ZXh0KTsKLSAgICAg ICAgIH0KLUBAIC0zMjQsMTEgKzMwNywxMyBAQCBtYWluIChnaW50IGFyZ2MsIGdjaGFyICoqYXJn dikKLSAgICAgICAgICAgICBpZiAoY29tcG9uZW50KSB7Ci0gICAgICAgICAgICAgICAgIGJ1c19j b21wb25lbnRfc2V0X3Jlc3RhcnQgKGNvbXBvbmVudCwgcmVzdGFydCk7Ci0gICAgICAgICAgICAg fQotLSAgICAgICAgICAgIGlmIChjb21wb25lbnQgPT0gTlVMTCB8fCAhYnVzX2NvbXBvbmVudF9z dGFydCAoY29tcG9uZW50LCBnX3ZlcmJvc2UpKSB7Ci0rICAgICAgICAgICAgaWYgKGNvbXBvbmVu dCA9PSBOVUxMIHx8Ci0rICAgICAgICAgICAgICAgICFidXNfY29tcG9uZW50X3N0YXJ0IChjb21w b25lbnQsIGdfdmVyYm9zZSkpIHsKLSAgICAgICAgICAgICAgICAgZ19wcmludGVyciAoIkNhbiBu b3QgZXhlY3V0ZSBkZWZhdWx0IHBhbmVsIHByb2dyYW1cbiIpOwotICAgICAgICAgICAgICAgICBl eGl0X2FuZF9mcmVlX2NvbnRleHQgKEVYSVRfRkFJTFVSRSwgY29udGV4dCk7Ci0gICAgICAgICAg ICAgfQotLSAgICAgICAgfSBlbHNlIGlmIChnX3N0cmNtcDAgKHBhbmVsLCAiZGlzYWJsZSIpICE9 IDAgJiYgZ19zdHJjbXAwIChwYW5lbCwgIiIpICE9IDApIHsKLSsgICAgICAgIH0gZWxzZSBpZiAo Z19zdHJjbXAwIChwYW5lbCwgImRpc2FibGUiKSAhPSAwICYmCi0rICAgICAgICAgICAgICAgICAg IGdfc3RyY21wMCAocGFuZWwsICIiKSAhPSAwKSB7Ci0gICAgICAgICAgICAgaWYgKCFleGVjdXRl X2NtZGxpbmUgKHBhbmVsKSkKLSAgICAgICAgICAgICAgICAgZXhpdF9hbmRfZnJlZV9jb250ZXh0 IChFWElUX0ZBSUxVUkUsIGNvbnRleHQpOwotICAgICAgICAgfQotZGlmZiAtLWdpdCBhL3NyYy9p YnVzc2hhcmUuYyBiL3NyYy9pYnVzc2hhcmUuYwotaW5kZXggNTdlM2VmMTQuLjlkNjZhNjBjIDEw MDY0NAotLS0tIGEvc3JjL2lidXNzaGFyZS5jCi0rKysgYi9zcmMvaWJ1c3NoYXJlLmMKLUBAIC0y LDcgKzIsNyBAQAotIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogaWJ1cyAtIFRoZSBJbnB1 dCBCdXMKLSAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1 YW5nQGdtYWlsLmNvbT4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyNCBUYWthbyBGdWppd2Fy YSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAy NSBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSAgKiBDb3B5cmln aHQgKEMpIDIwMDgtMjAxOCBSZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi1AQCAtMzcsNiAr MzcsMTAgQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGlidXMuaD4KLSAKLSsj aWZkZWYgR19PU19VTklYCi0rI2luY2x1ZGUgPGdycC5oPgotKyNlbmRpZgotKwotIHN0YXRpYyBn Y2hhciAqX2Rpc3BsYXkgPSBOVUxMOwotIAotIGNvbnN0IGdjaGFyICoKLUBAIC04Miw2ICs4Niwz NCBAQCBpYnVzX2dldF91c2VyX25hbWUgKHZvaWQpCi0gICAgIHJldHVybiBnX2dldF91c2VyX25h bWUgKCk7Ci0gfQotIAotK2NvbnN0IGdjaGFyICoKLStpYnVzX2dldF9ncm91cF9uYW1lICh2b2lk KQotK3sKLSsgICAgc3RhdGljIGdjaGFyICpncm91cG5hbWUgPSBOVUxMOwotKyAgICBzdHJ1Y3Qg Z3JvdXAgKmdycCA9IE5VTEw7Ci0rI2lmZGVmIEhBVkVfR0VUR1JHSURfUgotKyAgICBjaGFyIGJ1 ZmZlcls0MDk2XTsKLSsgICAgc3RydWN0IGdyb3VwIGdidWY7Ci0rI2VuZGlmCi0rCi0rICAgIGlm IChncm91cG5hbWUpCi0rICAgICAgICByZXR1cm4gZ3JvdXBuYW1lOwotKwotKyNpZmRlZiBIQVZF X0dFVEdSR0lEX1IKLSsgICAgLyogTVQtU2FmZSBsb2NhbGUgKi8KLSsgICAgZ2V0Z3JnaWRfciAo Z2V0Z2lkICgpLCAmZ2J1ZiwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgJmdycCk7Ci0rI2Vsc2UK LSsgICAgLyogTVQtVW5zYWZlIHJhY2U6Z3JnaWQgbG9jYWxlICovCi0rICAgIGdycCA9IGdldGdy Z2lkIChnZXRnaWQgKCkpOwotKyNlbmRpZgotKwotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAo Z3JwICYmIGdycC0+Z3JfbmFtZSAmJiBncnAtPmdyX25hbWVbMF0sIE5VTEwpOwotKwotKyAgICAv KiBidWZmZXIgd2lsbCBiZSBlcmFzZWQgb3V0IG9mIHRoaXMgZnVuY3Rpb24uICovCi0rICAgIGdy b3VwbmFtZSA9IGdfc3RyZHVwIChncnAtPmdyX25hbWUpOwotKyAgICByZXR1cm4gZ3JvdXBuYW1l OwotK30KLSsKLSBnbG9uZwotIGlidXNfZ2V0X2RhZW1vbl91aWQgKHZvaWQpCi0gewotZGlmZiAt LWdpdCBhL3NyYy9pYnVzc2hhcmUuaCBiL3NyYy9pYnVzc2hhcmUuaAotaW5kZXggNjM3OWM1MWQu LjdlOTI3NGU0IDEwMDY0NAotLS0tIGEvc3JjL2lidXNzaGFyZS5oCi0rKysgYi9zcmMvaWJ1c3No YXJlLmgKLUBAIC0yMDUsNyArMjA1LDcgQEAgR19CRUdJTl9ERUNMUwotICAqCi0gICogT2J0YWlu cyB0aGUgbWFjaGluZSBVVUlEIG9mIHRoZSBtYWNoaW5lIHRoaXMgcHJvY2VzcyBpcyBydW5uaW5n IG9uLgotICAqCi0tICogUmV0dXJuczogQSBuZXdseSBhbGxvY2F0ZWQgc3RyaW5nIHRoYXQgc2hv d3MgdGhlIFVVSUQgb2YgdGhlIG1hY2hpbmUuCi0rICogUmV0dXJuczogQSBjb25zdCBzdHJpbmcg dGhhdCBzaG93cyB0aGUgVVVJRCBvZiB0aGUgbWFjaGluZS4KLSAgKi8KLSBjb25zdCBnY2hhciAg ICAgKmlidXNfZ2V0X2xvY2FsX21hY2hpbmVfaWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHZvaWQpOwotQEAgLTI1OSwxMCArMjU5LDIyIEBAIHZvaWQgICAgICAg ICAgICAgaWJ1c193cml0ZV9hZGRyZXNzICAgICAoY29uc3QgZ2NoYXIgICAgKmFkZHJlc3MpOwot ICAqICAgIDxsaXN0aXRlbT48cGFyYT5FbnZpcm9ubWVudCB2YXJpYWJsZSBMTkFNRTwvcGFyYT48 L2xpc3RpdGVtPgotICAqIDwvb3JkZXJlZGxpc3Q+Ci0gICoKLS0gKiBSZXR1cm5zOiBBIG5ld2x5 IGFsbG9jYXRlZCBzdHJpbmcgdGhhdCBzdG9yZXMgY3VycmVudCB1c2VyIG5hbWUuCi0rICogUmV0 dXJuczogQSBjb25zdCBzdHJpbmcgdGhhdCBzdG9yZXMgY3VycmVudCB1c2VyIG5hbWUuCi0gICov Ci0gY29uc3QgZ2NoYXIgICAgICppYnVzX2dldF91c2VyX25hbWUgICAgICh2b2lkKTsKLSAKLSsv KioKLSsgKiBpYnVzX2dldF9ncm91cF9uYW1lOgotKyAqCi0rICogR2V0IHRoZSBjdXJyZW50IHVz ZXIgZ3JvdXAgbmFtZS4KLSsgKgotKyAqIFJldHVybnM6IEEgY29uc3Qgc3RyaW5nIHRoYXQgc3Rv cmVzIGN1cnJlbnQgdXNlciBncm91cCBuYW1lLgotKyAqCi0rICogU2luY2U6IDEuNS4zNAotKyAq IFN0YWJpbGl0eTogVW5zdGFibGUKLSsgKi8KLStjb25zdCBnY2hhciAgICAgKmlidXNfZ2V0X2dy b3VwX25hbWUgICAgKHZvaWQpOwotKwotIC8qKgotICAqIGlidXNfZ2V0X2RhZW1vbl91aWQ6Ci0g ICoKLUBAIC0yODAsNyArMjkyLDcgQEAgZ2xvbmcgICAgICAgICAgICBpYnVzX2dldF9kYWVtb25f dWlkICAgICh2b2lkKSBHX0dOVUNfREVQUkVDQVRFRDsKLSAgKgotICAqIEdldCB0aGUgcGF0aCBv ZiBzb2NrZXQgZmlsZS4KLSAgKgotLSAqIFJldHVybnM6IEEgbmV3bHkgYWxsb2NhdGVkIHN0cmlu ZyB0aGF0IHN0b3JlcyB0aGUgcGF0aCBvZiBzb2NrZXQgZmlsZS4KLSsgKiBSZXR1cm5zOiBBIGNv bnN0IHN0cmluZyB0aGF0IHN0b3JlcyB0aGUgcGF0aCBvZiBzb2NrZXQgZmlsZS4KLSAgKi8KLSBj b25zdCBnY2hhciAgICAgKmlidXNfZ2V0X3NvY2tldF9wYXRoICAgKHZvaWQpOwotIAotLS0gCi0y LjUxLjEKLQotRnJvbSAyZjdhNzRlYmVmNWFhYzJlZDUyOTMwNGJlYWNmZjI1NTkxZDI5MDQ0IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFA Z21haWwuY29tPgotRGF0ZTogVGh1LCA0IERlYyAyMDI1IDE5OjQxOjU5ICswOTAwCi1TdWJqZWN0 OiBbUEFUQ0hdIHNyYy90ZXN0cy9pYnVzLWtleXByZXNzOiBGaXggR1RLMyBidWlsZAotCi1CVUc9 aHR0cHM6Ly9naXRodWIuY29tL2lidXMvaWJ1cy9pc3N1ZXMvMjgyOQotLS0tCi0gc3JjL3Rlc3Rz L2lidXMta2V5cHJlc3MuYyB8IDE2ICsrKysrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwg MTIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy90ZXN0 cy9pYnVzLWtleXByZXNzLmMgYi9zcmMvdGVzdHMvaWJ1cy1rZXlwcmVzcy5jCi1pbmRleCBjZDhh ZmU4My4uMTcwMjk1MTIgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdHMvaWJ1cy1rZXlwcmVzcy5jCi0r KysgYi9zcmMvdGVzdHMvaWJ1cy1rZXlwcmVzcy5jCi1AQCAtNDMxLDggKzQzMSwxMSBAQCBkZXN0 cm95X3dpbmRvdyAoZ3BvaW50ZXIgdXNlcl9kYXRhKQotICAgICBkYXRhLT5zb3VyY2UgPSAwOwot IAotICAgICBnX2luZm8gKCJEZXN0cm95aW5nIHdpbmRvdyBhZnRlciB0aW1lb3V0Iik7Ci0rI2lm IEdUS19DSEVDS19WRVJTSU9OICg0LCAwLCAwKQotICAgICBndGtfd2luZG93X2Rlc3Ryb3kgKEdU S19XSU5ET1cgKGRhdGEtPndpbmRvdykpOwotLQotKyNlbHNlCi0rICAgIGd0a193aWRnZXRfZGVz dHJveSAoZGF0YS0+d2luZG93KTsKLSsjZW5kaWYKLSAgICAgZGF0YS0+d2luZG93ID0gTlVMTDsK LSAKLSAgICAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKLUBAIC00NzAsOCArNDczLDkgQEAgY3Jl YXRlX2tleXByZXNzICh2b2lkKQotICNlbmRpZgotIAotICAgICBpZiAoIW1fcmVwbGF5KSB7Ci0t ICAgICAgICBnX3Rlc3RfZmFpbF9wcmludGYgKCJGYWlsZWQgdG8gY3JlYXRlIHVpbnB1dCBkZXZp Y2U6ICVzIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3ItPm1lc3NhZ2UpOwot KyAgICAgICAgZ190ZXN0X2ZhaWxfcHJpbnRmICgiRmFpbGVkIHRvIGNyZWF0ZSB1aW5wdXQgZGV2 aWNlOiAlczogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvci0+bWVzc2Fn ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb2JhYmx5IHlvdSBzaG91bGQgcnVu IGBjaG1vZCBhK3J3IC9kZXYvdWlucHV0YCIpOwotICAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJv cik7Ci0gICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgIH0KLUBAIC03NDEsNyArNzQ1LDcgQEAg dGVzdF9rZXlwcmVzcyAoZ2NvbnN0cG9pbnRlciB1c2VyX2RhdGEpCi0gI2lmIEdUS19DSEVDS19W RVJTSU9OICg0LCAwLCAwKQotICAgICBndGtfaW5pdCAoKTsKLSAjZWxzZQotLSAgICBndGtfaW5p dCAoZGF0YS0+YXJnYywgZGF0YS0+YXJndik7Ci0rICAgIGd0a19pbml0ICgmZGF0YS0+YXJnYywg JmRhdGEtPmFyZ3YpOwotICNlbmRpZgotIAotICAgICBnX2Fzc2VydCAoKGNoYW5uZWwgPSAgZ19p b19jaGFubmVsX3VuaXhfbmV3IChtX3BpcGVfZW5naW5lWzBdKSkpOwotQEAgLTc3MCw3ICs3NzQs MTEgQEAgdGVzdF9rZXlwcmVzcyAoZ2NvbnN0cG9pbnRlciB1c2VyX2RhdGEpCi0gICAgIGlmIChk ZXN0cm95X2RhdGEuc291cmNlKQotIAlnX3NvdXJjZV9yZW1vdmUgKGRlc3Ryb3lfZGF0YS5zb3Vy Y2UpOwotICAgICBpZiAoZGVzdHJveV9kYXRhLndpbmRvdykKLSsjaWYgR1RLX0NIRUNLX1ZFUlNJ T04gKDQsIDAsIDApCi0gCWd0a193aW5kb3dfZGVzdHJveSAoR1RLX1dJTkRPVyAoZGVzdHJveV9k YXRhLndpbmRvdykpOwotKyNlbHNlCi0rICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kgKGRlc3Ry b3lfZGF0YS53aW5kb3cpOwotKyNlbmRpZgotICAgICBjbG9zZSAobV9waXBlX2VuZ2luZVswXSk7 Ci0gICAgIGNsb3NlIChtX3BpcGVfZW5naW5lWzFdKTsKLSB9Ci0tLSAKLTIuNTIuMAotCi1Gcm9t IDdmNWI1YzU5Yzk2MzEyOTJkNDFiYjI3MmI3NzE2ZjVjZGIzNTZkYjUgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1E YXRlOiBXZWQsIDEwIERlYyAyMDI1IDEwOjE4OjQ5ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVp L2d0azMvcHJvcGVydHlwYW5lbDogRGlzYWJsZSBYMTEgZGlzcGxheSBpbiBXYXlsYW5kCi0KLUFk ZCBhIHdvcmthcm91bmQgdW50aWwgSUJ1cyBwYW5lbCBpcyBtaWdyYXRlZCB0byBHVEs0LgotR1RL MyBjYXVzZXMgYSBTRUdWIHdoZW4gdGhlIHNlc3Npb24gaXMgc3dpdGNoZWQgdG8gdGhlIGNvbnNv bGUKLWluIFdheWxhbmQgd2l0aCBDdHJsLUFsdC1GMyBiZWNhdXNlIGl0IGNhbGxzCi1nZGtfZGlz cGxheV9nZXRfZGVmYXVsdCgpIGJ5Ci1nZGtfeDExX2dldF94YXRvbV9ieV9uYW1lKCJXYWNvbSBT ZXJpYWwgSURzIikgYW5kIHRoZSBkaXNwbGF5Ci1pcyBub3QgWDExLgotCi1CVUc9cmhieiMyNDE4 NjcwCi0tLS0KLSB1aS9ndGszL3Byb3BlcnR5cGFuZWwudmFsYSB8IDEzICsrKysrKysrKysrKy0K LSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZm IC0tZ2l0IGEvdWkvZ3RrMy9wcm9wZXJ0eXBhbmVsLnZhbGEgYi91aS9ndGszL3Byb3BlcnR5cGFu ZWwudmFsYQotaW5kZXggZjFlY2Q3ZjcuLjFiYTE2ODFmIDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9w cm9wZXJ0eXBhbmVsLnZhbGEKLSsrKyBiL3VpL2d0azMvcHJvcGVydHlwYW5lbC52YWxhCi1AQCAt NTQsNyArNTQsMTggQEAgcHVibGljIGNsYXNzIFByb3BlcnR5UGFuZWwgOiBHdGsuQm94IHsKLSAg ICAgICAgIHNldF92aXNpYmxlKHRydWUpOwotIAotICNpZiBFTkFCTEVfWElNCi0tICAgICAgICB2 YXIgZGlzcGxheSA9IEJpbmRpbmdDb21tb24uZ2V0X3hkaXNwbGF5KCk7Ci0rICAgICAgICBHZGsu WDExLkRpc3BsYXk/IGRpc3BsYXkgPSBudWxsOwotKyAgICAgICAgLy8gRGlzYWJsZSBYMTEgZGlz cGxheSBpbiBXYXlsYW5kIGFzIGEgd29ya2Fyb3VuZC4KLSsgICAgICAgIC8vIEdUSzMgY2F1c2Vz IGEgU0VHViB3aGVuIHRoZSBzZXNzaW9uIGlzIHN3aXRjaGVkIHRvIHRoZSBjb25zb2xlCi0rICAg ICAgICAvLyBpbiBXYXlsYW5kIHdpdGggQ3RybC1BbHQtRjMgYmVjYXVzZSBpdCBjYWxscwotKyAg ICAgICAgLy8gZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSBieQotKyAgICAgICAgLy8gZ2RrX3gx MV9nZXRfeGF0b21fYnlfbmFtZSgiV2Fjb20gU2VyaWFsIElEcyIpIGFuZCB0aGUgZGlzcGxheQot KyAgICAgICAgLy8gaXMgbm90IFgxMS4KLSsgICAgICAgIC8vIE5lZWQgdG8gYmFja3BvcnQgdGhl IGZpeCB0byBHVEszOgotKyAgICAgICAgLy8gaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01F L2d0ay8tL2NvbW1pdC85MjAyNTljMgotKyAgICAgICAgLy8gb3IgbmVlZCB0byBtaWdyYXRlIElC dXMgcGFuZWwgdG8gR1RLNC4KLSsgICAgICAgIGlmIChCaW5kaW5nQ29tbW9uLmRlZmF1bHRfaXNf eGRpc3BsYXkoKSkKLSsgICAgICAgICAgICBkaXNwbGF5ID0gQmluZGluZ0NvbW1vbi5nZXRfeGRp c3BsYXkoKTsKLSAgICAgICAgIGlmIChkaXNwbGF5ICE9IG51bGwpIHsKLSAgICAgICAgICAgICBt X3hkaXNwbGF5ID0gZGlzcGxheS5nZXRfeGRpc3BsYXkoKTsKLSAgICAgICAgICAgICB2YXIgc2Ny ZWVuID0gZGlzcGxheS5nZXRfZGVmYXVsdF9zY3JlZW4oKTsKLS0tIAotMi41Mi4wCi0KLUZyb20g YjY3NjI0Yzc5YWQ2YzI2YTUwMTk0YjYyNmIzMjk4OTRiMzIzNjdmOSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURh dGU6IEZyaSwgMTkgRGVjIDIwMjUgMjA6NTY6MjcgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29u ZmlndXJlOiBBZGQgd2FybmluZyB0byBydW4gYG1ha2UgLUMgdG9vbHMgbWFpbnRhaW5lci1jbGVh bi1nZW5lcmljYAotCi1XaGVuIHVzZXJzIHNwZWNpZnkgLS1kaXNhYmxlLXdheWxhbmQgb3B0aW9u IGZvciBjb25maWd1cmUsCi10aGUgYmVoYXZpb3IgZWZmZWN0cyBWQUxBIGZpbGVzIGluIHRvb2xz IGFuZCBuZWVkIHRvCi1yZWdlbmVyYXRlIEMgZmlsZXMgYnV0IG1hbnkgdXNlcnMgZG9uJ3Qga25v dyB0aGUgc3RlcHMgc28gYWRkZWQKLWEgd2FybmluZyBpbiB0aGUgY29uZmlndXJlIG91dHB1dCB0 byBpbmZvcm0gdG8gcnVuCi1gbWFrZSAtQyB0b29scyBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWNg IG9mIHRoZSB1c2Vycy4KLQotRml4ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvY29t bWl0LzJiYzIzZWQKLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL2lzc3Vlcy8yODM2 Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxMSArKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAx MSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUu YWMKLWluZGV4IDQwMWZjZDI3Li40MDFlNWYyNyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwot KysrIGIvY29uZmlndXJlLmFjCi1AQCAtOTMxLDYgKzkzMSwxNyBAQCBBQ19TVUJTVChbR0RCVVNf Q09ERUdFTl0sIFtgJFBLR19DT05GSUcgLS12YXJpYWJsZSBnZGJ1c19jb2RlZ2VuIGdpby0yLjBg XSkKLSAKLSBPVVRQVVRfVEFJTD0nJwotIEhBU19PVVRQVVRfVEFJTD0wCi0rQVNfSUYoW3Rlc3Qg eCIkZW5hYmxlX3dheWxhbmQiID0geCJubyJdLAotKyAgICAgIFtPVVRQVVRfVEFJTD0iJE9VVFBV VF9UQUlMCi0rWW91IGludm9rZWQgdGhlIFxgY29uZmlndXJlXGAgc2NyaXB0IHdpdGggZGlzYWJs ZWQgd2F5bGFuZCBvcHRpb24KLStzbyB5b3UgaGF2ZSB0byBydW4KLStcYG1ha2UgLUMgdG9vbHMg bWFpbnRhaW5lci1jbGVhbi1nZW5lcmljXGAgdG8gcmVnZW5lcmF0ZSBDIGZpbGVzIHdpdGggVkFM QQotK2JlZm9yZSBydW4gXGBtYWtlXGAuCi0rIgotKyAgICAgICBIQVNfT1VUUFVUX1RBSUw9MQot KyAgICAgIF0sCi0rICAgICAgW10KLSspCi0gQVNfSUYoW3Rlc3QgeCIkZW5hYmxlX3VpIiAhPSB4 Im5vIiAmJgotICAgICAgICB0ZXN0IC1mICIkYWNfY29uZmRpci91aS9ndGszL2FwcGxpY2F0aW9u LmMiCi0gICAgICAgXSwKLS0tIAotMi41Mi4wCi0KLUZyb20gOWM1YWUyMTk0ZTVkYjg0Yzc0Y2Zj ODk0YTA0NmYyNmMzMThkYWI0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3 YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgNCBEZWMgMjAyNSAw OTowMzozNyArMDkwMAotU3ViamVjdDogW1BBVENIXSBzcmMvaWJ1c2NvbXBvc2V0YWJsZTogT3Jk ZXIgbG9jYWxlIGNvbXBvc2UgYW5kIHVzZXIgY29tcG9zZQotCi1BbHNvIG1ha2UgQ0kgb2YgVVMg Y29tcG9zZSB3aXRoIGxvY2FsZSBjb21wb3NlCi0KLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1 cy9pYnVzL3B1bGwvMjgzMgotLS0tCi0gc3JjL2lidXNjb21wb3NldGFibGUuYyAgICAgICAgfCAg MzAgKysrKystCi0gc3JjL3Rlc3RzL01ha2VmaWxlLmFtICAgICAgICAgfCAgIDYgKysKLSBzcmMv dGVzdHMvaWJ1cy1jb21wb3NlLmJhc2ljMiB8ICAgNSArCi0gc3JjL3Rlc3RzL2lidXMtY29tcG9z ZS5jICAgICAgfCAxNzYgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIHNyYy90 ZXN0cy9pYnVzLWNvbXBvc2UuZW52ICAgIHwgICA3ICstCi0gc3JjL3Rlc3RzL2lidXMtY29tcG9z ZS51c21pbiAgfCAgIDggKysKLSBzcmMvdGVzdHMvaWJ1cy1jb21wb3NlLnVzbWluMiB8ICAgNiAr KwotIDcgZmlsZXMgY2hhbmdlZCwgMTY3IGluc2VydGlvbnMoKyksIDcxIGRlbGV0aW9ucygtKQot IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdHMvaWJ1cy1jb21wb3NlLmJhc2ljMgotIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdHMvaWJ1cy1jb21wb3NlLnVzbWluCi0gY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0cy9pYnVzLWNvbXBvc2UudXNtaW4yCi0KLWRpZmYgLS1naXQgYS9zcmMv aWJ1c2NvbXBvc2V0YWJsZS5jIGIvc3JjL2lidXNjb21wb3NldGFibGUuYwotaW5kZXggM2M1YmM1 MWYuLjExNmQwMTMxIDEwMDY0NAotLS0tIGEvc3JjL2lidXNjb21wb3NldGFibGUuYwotKysrIGIv c3JjL2lidXNjb21wb3NldGFibGUuYwotQEAgLTE3NDEsNiArMTc0MSwyNyBAQCBvdXQ6Ci0gfQot IAotIAotK2dpbnQKLStmaW5kX3N5c3RlbV9jb21vcHNlX3RhYmxlIChnY29uc3Rwb2ludGVyICBh LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjb25zdHBvaW50ZXIgIGIpCi0rewotKyAg ICBJQnVzQ29tcG9zZVRhYmxlRXggKnRhYmxlX2EgPSAoSUJ1c0NvbXBvc2VUYWJsZUV4ICopYTsK LSsgICAgSUJ1c0NvbXBvc2VUYWJsZUV4ICp0YWJsZV9iID0gKElCdXNDb21wb3NlVGFibGVFeCAq KWI7Ci0rCi0rICAgIGlmIChhID09IGIpCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgZWxzZSBp ZiAoIWEpCi0rICAgICAgICByZXR1cm4gLTE7Ci0rICAgIGdfYXNzZXJ0IChiKTsKLSsgICAgaWYg KHRhYmxlX2EtPmlzX3N5c3RlbSA9PSB0YWJsZV9iLT5pc19zeXN0ZW0pCi0rICAgICAgICByZXR1 cm4gMDsKLSsgICAgaWYgKHRhYmxlX2EtPmlzX3N5c3RlbSkKLSsgICAgICAgIHJldHVybiAxOwot KyAgICBlbHNlCi0rICAgICAgICByZXR1cm4gLTE7Ci0rfQotKwotKwotIC8qIGlmIGlidXNfY29t cG9zZV9zZXFzW04gLSAxXSBpcyBhbiBvdXRwdXRlZCBjb21wb3NlIGNoYXJhY3RlciwKLSAgKiBp YnVzX2NvbXBvc2Vfc2Vxc1tOICogMiAtIDFdIGlzIGFsc28gYW4gb3V0cHV0ZWQgY29tcG9zZSBj aGFyYWN0ZXIuCi0gICogYW5kIGlidXNfY29tcG9zZV9zZXFzWzBdIHRvIGlidXNfY29tcG9zZV9z ZXFzWzAgKyBOIC0gM10gYXJlIHRoZQotQEAgLTE3ODQsNyArMTgwNSw4IEBAIGlidXNfY29tcG9z ZV90YWJsZV9saXN0X2FkZF9hcnJheSAoR1NMaXN0ICAgICAgICAqY29tcG9zZV90YWJsZXMsCi0g ICAgIGNvbXBvc2VfdGFibGUtPm5fc2VxcyA9IG5fc2VxczsKLSAgICAgY29tcG9zZV90YWJsZS0+ aWQgPSBoYXNoOwotIAotLSAgICByZXR1cm4gZ19zbGlzdF9wcmVwZW5kIChjb21wb3NlX3RhYmxl cywgY29tcG9zZV90YWJsZSk7Ci0rICAgIHJldHVybiBnX3NsaXN0X2luc2VydF9zb3J0ZWQgKGNv bXBvc2VfdGFibGVzLCBjb21wb3NlX3RhYmxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmaW5kX3N5c3RlbV9jb21vcHNlX3RhYmxlKTsKLSB9Ci0gCi0gCi1AQCAtMTgxMiw3 ICsxODM0LDggQEAgaWJ1c19jb21wb3NlX3RhYmxlX2xpc3RfYWRkX2ZpbGUgKEdTTGlzdCAgICAg ICpjb21wb3NlX3RhYmxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmc2F2ZWRfdmVyc2lvbik7Ci0gICAgIGlmIChjb21wb3NlX3RhYmxlICE9 IE5VTEwpIHsKLSAgICAgICAgIGNvbXBvc2VfdGFibGUtPmlzX3N5c3RlbSA9IF9kYXRhZmlsZV9p c19zeXN0ZW0gKGNvbXBvc2VfZmlsZSk7Ci0tICAgICAgICByZXR1cm4gZ19zbGlzdF9wcmVwZW5k IChjb21wb3NlX3RhYmxlcywgY29tcG9zZV90YWJsZSk7Ci0rICAgICAgICByZXR1cm4gZ19zbGlz dF9pbnNlcnRfc29ydGVkIChjb21wb3NlX3RhYmxlcywgY29tcG9zZV90YWJsZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRfc3lzdGVtX2NvbW9wc2VfdGFibGUp OwotICAgICB9Ci0gCi0gcGFyc2U6Ci1AQCAtMTg2Nyw3ICsxODkwLDggQEAgcGFyc2U6Ci0gICAg IH0KLSAKLSAgICAgaWJ1c19jb21wb3NlX3RhYmxlX3NhdmVfY2FjaGUgKGNvbXBvc2VfdGFibGUp OwotLSAgICByZXR1cm4gZ19zbGlzdF9wcmVwZW5kIChjb21wb3NlX3RhYmxlcywgY29tcG9zZV90 YWJsZSk7Ci0rICAgIHJldHVybiBnX3NsaXN0X2luc2VydF9zb3J0ZWQgKGNvbXBvc2VfdGFibGVz LCBjb21wb3NlX3RhYmxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5k X3N5c3RlbV9jb21vcHNlX3RhYmxlKTsKLSB9Ci0gCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3Rz L01ha2VmaWxlLmFtIGIvc3JjL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCAxOWMxZjE0Yy4uMWE2 MzkxN2YgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy90ZXN0 cy9NYWtlZmlsZS5hbQotQEAgLTEwNyw4ICsxMDcsMTEgQEAgdGVzdF9tZXRhcyA9ICQoYWRkc3Vm Zml4IC50ZXN0LCAkKF90ZXN0X2V4ZWNzKSkKLSB0ZXN0X3NvdXJjZXNfREFUQSA9IFwKLSAgICAg JCh0ZXN0X21ldGFzKSBcCi0gICAgIGlidXMtY29tcG9zZS5iYXNpYyBcCi0rICAgIGlidXMtY29t cG9zZS5iYXNpYzIgXAotICAgICBpYnVzLWNvbXBvc2UuZW1vamkgXAotICAgICBpYnVzLWNvbXBv c2UuZW52IFwKLSsgICAgaWJ1cy1jb21wb3NlLnVzbWluIFwKLSsgICAgaWJ1cy1jb21wb3NlLnVz bWluMiBcCi0gICAgIGxpYmlucHV0LXRlc3QueW1sIFwKLSAgICAgJChOVUxMKQotIHRlc3Rfc291 cmNlc2RpciA9ICQoZGF0YWRpcikvaW5zdGFsbGVkLXRlc3RzL2lidXMKLUBAIC0xOTMsOCArMTk2 LDExIEBAIEVYVFJBX0RJU1QgPSBcCi0gICAgICQoVEVTVFNfU0NSSVBUKSBcCi0gICAgIHJ1bnRl c3QgXAotICAgICBpYnVzLWNvbXBvc2UuYmFzaWMgXAotKyAgICBpYnVzLWNvbXBvc2UuYmFzaWMy IFwKLSAgICAgaWJ1cy1jb21wb3NlLmVtb2ppIFwKLSAgICAgaWJ1cy1jb21wb3NlLmVudiBcCi0r ICAgIGlidXMtY29tcG9zZS51c21pbiBcCi0rICAgIGlidXMtY29tcG9zZS51c21pbjIgXAotICAg ICBpYnVzLWNvbXBvc2UtbG9jYWxlcy5pbiBcCi0gICAgIGlidXMtZGVza3RvcC10ZXN0aW5nLmRl c2t0b3AuaW4gXAotICAgICBpYnVzLWRlc2t0b3AtdGVzdGluZy1hdXRvc3RhcnQuaW4gXAotZGlm ZiAtLWdpdCBhL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYmFzaWMyIGIvc3JjL3Rlc3RzL2lidXMt Y29tcG9zZS5iYXNpYzIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMC4uMjdk Yjk4ODkKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYmFzaWMy Ci1AQCAtMCwwICsxLDUgQEAKLStpbmNsdWRlICIlTCIKLSsjIFN5bWJvbCB0ZXN0cyBvZiBNdWx0 aV9rZXksIHF1b3RlZGJsIEN5cmlsbGljX3poZQotKyMgVGhpcyBjYXNlIHN3YXBzIFUwNERDIGFu ZCBVMDRERCBpbiBlbi1VUwotKzxNdWx0aV9rZXk+IDxxdW90ZWRibD4gPEN5cmlsbGljX3poZT4g ICA6ICLTnCIgICBVMDREQwotKzxNdWx0aV9rZXk+IDxxdW90ZWRibD4gPEN5cmlsbGljX1pIRT4g ICA6ICLTnSIgICBVMDRERAotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYyBi L3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYwotaW5kZXggZWQwODc2ZGYuLjY5Zjg0NGIyIDEwMDY0 NAotLS0tIGEvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jCi0rKysgYi9zcmMvdGVzdHMvaWJ1cy1j b21wb3NlLmMKLUBAIC03LDEyICs3LDE1IEBACi0gI2RlZmluZSBSRUQgICAiXDAzM1swOzMxbSIK LSAjZGVmaW5lIE5DICAgICJcMDMzWzBtIgotIAotK3N0YXRpYyBnY2hhciAqbV90ZXN0X2xvY2Fs ZTsKLSBzdGF0aWMgZ2NoYXIgKm1fdGVzdF9uYW1lOwotIHN0YXRpYyBnY2hhciAqbV9zZXNzaW9u X25hbWU7Ci0gc3RhdGljIElCdXNCdXMgKm1fYnVzOwotIHN0YXRpYyBJQnVzQ29tcG9uZW50ICpt X2NvbXBvbmVudDsKLSBzdGF0aWMgZ2NoYXIgKm1fY29tcG9zZV9maWxlOwotK3N0YXRpYyBnY2hh ciAqbV9ub19sb2FkX2NvbXBvc2VfZmlsZTsKLSBzdGF0aWMgSUJ1c0NvbXBvc2VUYWJsZUV4ICpt X2NvbXBvc2VfdGFibGU7Ci0rc3RhdGljIElCdXNDb21wb3NlVGFibGVFeCAqbV9ub19sb2FkX2Nv bXBvc2VfdGFibGU7Ci0gc3RhdGljIElCdXNFbmdpbmUgKm1fZW5naW5lOwotIHN0YXRpYyBnY2hh ciAqbV9zcmNkaXI7Ci0gc3RhdGljIGdib29sZWFuIG1faXNfZ3RrXzMyYml0X2NvbXBvc2VfZXJy b3I7Ci1AQCAtODMsNyArODYsNyBAQCBnZXRfY29tcG9zZV9wYXRoICgpCi0gICAgIGdjaGFyICpj b21wb3NlX3BhdGggPSBOVUxMOwotIAotICAgICBpZiAobV9pc19ndGtfMzJiaXRfY29tcG9zZV9l cnJvcikKLS0gICAgICAgIGdfYXNzZXJ0IChnX3NldGVudiAoIkxBTkciLCBtX3Rlc3RfbmFtZSwg VFJVRSkpOwotKyAgICAgICAgZ19hc3NlcnQgKGdfc2V0ZW52ICgiTEFORyIsIG1fdGVzdF9sb2Nh bGUsIFRSVUUpKTsKLSAjaWYgR0xJQl9DSEVDS19WRVJTSU9OICgyLCA1OCwgMCkKLSAgICAgbGFu Z3MgPSBnX2dldF9sYW5ndWFnZV9uYW1lc193aXRoX2NhdGVnb3J5ICgiTENfQ1RZUEUiKTsKLSAj ZWxzZQotQEAgLTI1MCw3ICsyNTMsMTcgQEAgY3JlYXRlX2VuZ2luZV9jYiAoSUJ1c0ZhY3Rvcnkg KmZhY3RvcnksCi0gICAgICAgICBpZiAobV9jb21wb3NlX3RhYmxlKQotICAgICAgICAgICAgIGdf YXNzZXJ0IChzYXZlZF92ZXJzaW9uKTsKLSAgICAgfQotLSAgICBnX2ZyZWUgKGNvbXBvc2VfcGF0 aCk7Ci0rICAgIGdfY2xlYXJfcG9pbnRlciAoJmNvbXBvc2VfcGF0aCwgZ19mcmVlKTsKLSsgICAg aWYgKG1fbm9fbG9hZF9jb21wb3NlX2ZpbGUpIHsKLSsgICAgICAgIGNvbXBvc2VfcGF0aCA9IGdf YnVpbGRfZmlsZW5hbWUgKG1fc3JjZGlyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbV9ub19sb2FkX2NvbXBvc2VfZmlsZSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotKyAgICB9Ci0rICAgIGlmIChjb21wb3NlX3Bh dGgpIHsKLSsgICAgICAgIG1fbm9fbG9hZF9jb21wb3NlX3RhYmxlID0KLSsgICAgICAgICAgICAg ICAgaWJ1c19jb21wb3NlX3RhYmxlX25ld193aXRoX2ZpbGUgKGNvbXBvc2VfcGF0aCwgTlVMTCk7 Ci0rICAgIH0KLSsgICAgZ19jbGVhcl9wb2ludGVyICgmY29tcG9zZV9wYXRoLCBnX2ZyZWUpOwot ICAgICByZXR1cm4gbV9lbmdpbmU7Ci0gfQotIAotQEAgLTMxMyw1NyArMzI2LDIwIEBAIHdpbmRv d19kZXN0cm95X2NiICh2b2lkKQotIAotIAotIHN0YXRpYyB2b2lkCi0tc2V0X2VuZ2luZV9jYiAo R09iamVjdCAgICAgICpvYmplY3QsCi0tICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICpyZXMs Ci0tICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICB1c2VyX2RhdGEpCi0rc2VuZF9rZXlfZXZl bnQgKElCdXNDb21wb3NlVGFibGVFeCAqY29tcG9zZV90YWJsZSkKLSB7Ci0tICAgIElCdXNCdXMg KmJ1cyA9IElCVVNfQlVTIChvYmplY3QpOwotLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoNCwgMCwg MCkKLS0gICAgR3RrRXZlbnRDb250cm9sbGVyICpjb250cm9sbGVyID0gR1RLX0VWRU5UX0NPTlRS T0xMRVIgKHVzZXJfZGF0YSk7Ci0tI2Vsc2UKLS0gICAgR3RrV2lkZ2V0ICplbnRyeSA9IEdUS19X SURHRVQgKHVzZXJfZGF0YSk7Ci0tI2VuZGlmCi0tICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwot ICAgICBzdGF0aWMgVGVzdElkbGVEYXRhIGRhdGEgPSB7IC5jYXRlZ29yeSA9IFRFU1RfQ09NTUlU X1RFWFQsIC5pZGxlX2lkID0gMCB9OwotICAgICBpbnQgaSwgajsKLSAgICAgaW50IGluZGV4X3N0 cmlkZTsKLSAgICAgSUJ1c0NvbXBvc2VUYWJsZVByaXZhdGUgKnByaXY7Ci0gCi0tICAgIGlmICgh aWJ1c19idXNfc2V0X2dsb2JhbF9lbmdpbmVfYXN5bmNfZmluaXNoIChidXMsIHJlcywgJmVycm9y KSkgewotLSAgICAgICAgZ190ZXN0X2ZhaWxfcHJpbnRmICgic2V0IGVuZ2luZSBmYWlsZWQ6ICVz IiwgZXJyb3ItPm1lc3NhZ2UpOwotLSAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0tICAg ICAgICByZXR1cm47Ci0tICAgIH0KLS0KLS0gICAgLyogaWJ1c19pbV9jb250ZXh0X2ZvY3VzX2lu KCkgaXMgY2FsbGVkIGFmdGVyIEdsYm9hbEVuZ2luZSBpcyBzZXQuCi0tICAgICAqIFRoZSBmb2N1 cy1pbi9vdXQgZXZlbnRzIGhhcHBlbiBtb3JlIHNsb3dseSBpbiBhIGJ1c3kgc3lzdGVtCi0tICAg ICAqIGxpa2VzIHdpdGggYSBUTVQgdG9vbC4KLS0gICAgICovCi0tICAgIGlmIChpc19pbnRlZ3Jh dGVkX2Rlc2t0b3AgKCkgJiYgZ19nZXRlbnYgKCJJQlVTX0RBRU1PTl9XSVRIX1NZU1RFTUQiKSkg ewotLSAgICAgICAgZ190ZXN0X21lc3NhZ2UgKCJTdGFydCB0aW55IFwiZm9jdXMtaW5cIiBzaWdu YWwgdGVzdCIpOwotLSAgICAgICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykgewotLSAgICAgICAg ICAgIGRhdGEuY2F0ZWdvcnkgPSBURVNUX0RFTEFZRURfRk9DVVNfSU47Ci0tICAgICAgICAgICAg ZGF0YS5pZGxlX2lkID0gZ190aW1lb3V0X2FkZF9zZWNvbmRzICgxLCBpZGxlX2NiLCAmZGF0YSk7 Ci0tICAgICAgICAgICAgZ19tYWluX2xvb3BfcnVuIChtX2xvb3ApOwotLSAgICAgICAgICAgIGlm IChkYXRhLmlkbGVfaWQgIT0gMCkKLS0gICAgICAgICAgICAgICAgcmV0dXJuOwotLSAgICAgICAg fQotLSAgICAgICAgZ190ZXN0X21lc3NhZ2UgKCJFbmQgdGlueSBcImZvY3VzLWluXCIgc2lnbmFs IHRlc3QiKTsKLS0gICAgICAgIGRhdGEuY2F0ZWdvcnkgPSBURVNUX0NPTU1JVF9URVhUOwotLSAg ICB9Ci0tICAgIGlmIChtX2NvbXBvc2VfdGFibGUgPT0gTlVMTCkgewotLSAgICAgICAgZ190ZXN0 X3NraXAgKCJZb3VyIGxvY2FsZSB1c2VzIGVuX1VTIGNvbXBvc2UgdGFibGUuIik7Ci0tICAgICAg ICBpZGxlX2NiICgmZGF0YSk7Ci0tICAgICAgICByZXR1cm47Ci0tICAgIH0KLS0KLS0gICAgaW5k ZXhfc3RyaWRlID0gbV9jb21wb3NlX3RhYmxlLT5tYXhfc2VxX2xlbiArIDI7Ci0rICAgIGluZGV4 X3N0cmlkZSA9IGNvbXBvc2VfdGFibGUtPm1heF9zZXFfbGVuICsgMjsKLSAgICAgZm9yIChpID0g MDsKLS0gICAgICAgICBpIDwgKG1fY29tcG9zZV90YWJsZS0+bl9zZXFzICogaW5kZXhfc3RyaWRl KTsKLSsgICAgICAgICBpIDwgKGNvbXBvc2VfdGFibGUtPm5fc2VxcyAqIGluZGV4X3N0cmlkZSk7 Ci0gICAgICAgICAgaSArPSBpbmRleF9zdHJpZGUpIHsKLSAgICAgICAgIGRhdGEuaWRsZV9pZCA9 IGdfdGltZW91dF9hZGRfc2Vjb25kcyAoMjAsIGlkbGVfY2IsICZkYXRhKTsKLSAgICAgICAgIGZv ciAoaiA9IGk7IGogPCBpICsgKGluZGV4X3N0cmlkZSAtIDIpOyBqKyspIHsKLS0gICAgICAgICAg ICBndWludCBrZXl2YWwgPSBtX2NvbXBvc2VfdGFibGUtPmRhdGFbal07Ci0rICAgICAgICAgICAg Z3VpbnQga2V5dmFsID0gY29tcG9zZV90YWJsZS0+ZGF0YVtqXTsKLSAgICAgICAgICAgICBndWlu dCBrZXljb2RlID0gMDsKLSAgICAgICAgICAgICBndWludCBtb2RpZmllcnMgPSAwOwotICAgICAg ICAgICAgIGdib29sZWFuIHJldHZhbDsKLUBAIC0zODcsNyArMzYzLDcgQEAgc2V0X2VuZ2luZV9j YiAoR09iamVjdCAgICAgICpvYmplY3QsCi0gICAgICAgICAgICAgZGF0YS5pZGxlX2lkID0gMDsK LSAgICAgICAgIH0KLSAgICAgfQotLSAgICBwcml2ID0gbV9jb21wb3NlX3RhYmxlLT5wcml2Owot KyAgICBwcml2ID0gY29tcG9zZV90YWJsZS0+cHJpdjsKLSAgICAgaWYgKHByaXYpIHsKLSAgICAg ICAgIGZvciAoaSA9IDA7Ci0gICAgICAgICAgICAgIGkgPCAocHJpdi0+Zmlyc3Rfbl9zZXFzICog aW5kZXhfc3RyaWRlKTsKLUBAIC00MTUsNiArMzkxLDU0IEBAIHNldF9lbmdpbmVfY2IgKEdPYmpl Y3QgICAgICAqb2JqZWN0LAotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgfQotK30K LSsKLStzdGF0aWMgdm9pZAotK3NldF9lbmdpbmVfY2IgKEdPYmplY3QgICAgICAqb2JqZWN0LAot KyAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAqcmVzLAotKyAgICAgICAgICAgICAgIGdwb2lu dGVyICAgICAgdXNlcl9kYXRhKQotK3sKLSsgICAgSUJ1c0J1cyAqYnVzID0gSUJVU19CVVMgKG9i amVjdCk7Ci0rI2lmIEdUS19DSEVDS19WRVJTSU9OICg0LCAwLCAwKQotKyAgICBHdGtFdmVudENv bnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBHVEtfRVZFTlRfQ09OVFJPTExFUiAodXNlcl9kYXRhKTsK LSsjZWxzZQotKyAgICBHdGtXaWRnZXQgKmVudHJ5ID0gR1RLX1dJREdFVCAodXNlcl9kYXRhKTsK LSsjZW5kaWYKLSsgICAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0rICAgIHN0YXRpYyBUZXN0SWRs ZURhdGEgZGF0YSA9IHsgLmNhdGVnb3J5ID0gVEVTVF9DT01NSVRfVEVYVCwgLmlkbGVfaWQgPSAw IH07Ci0rICAgIGludCBpOwotKwotKyAgICBpZiAoIWlidXNfYnVzX3NldF9nbG9iYWxfZW5naW5l X2FzeW5jX2ZpbmlzaCAoYnVzLCByZXMsICZlcnJvcikpIHsKLSsgICAgICAgIGdfdGVzdF9mYWls X3ByaW50ZiAoInNldCBlbmdpbmUgZmFpbGVkOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLSsgICAg ICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0r ICAgIC8qIGlidXNfaW1fY29udGV4dF9mb2N1c19pbigpIGlzIGNhbGxlZCBhZnRlciBHbGJvYWxF bmdpbmUgaXMgc2V0LgotKyAgICAgKiBUaGUgZm9jdXMtaW4vb3V0IGV2ZW50cyBoYXBwZW4gbW9y ZSBzbG93bHkgaW4gYSBidXN5IHN5c3RlbQotKyAgICAgKiBsaWtlcyB3aXRoIGEgVE1UIHRvb2wu Ci0rICAgICAqLwotKyAgICBpZiAoaXNfaW50ZWdyYXRlZF9kZXNrdG9wICgpICYmIGdfZ2V0ZW52 ICgiSUJVU19EQUVNT05fV0lUSF9TWVNURU1EIikpIHsKLSsgICAgICAgIGdfdGVzdF9tZXNzYWdl ICgiU3RhcnQgdGlueSBcImZvY3VzLWluXCIgc2lnbmFsIHRlc3QiKTsKLSsgICAgICAgIGZvciAo aSA9IDA7IGkgPCAzOyBpKyspIHsKLSsgICAgICAgICAgICBkYXRhLmNhdGVnb3J5ID0gVEVTVF9E RUxBWUVEX0ZPQ1VTX0lOOwotKyAgICAgICAgICAgIGRhdGEuaWRsZV9pZCA9IGdfdGltZW91dF9h ZGRfc2Vjb25kcyAoMSwgaWRsZV9jYiwgJmRhdGEpOwotKyAgICAgICAgICAgIGdfbWFpbl9sb29w X3J1biAobV9sb29wKTsKLSsgICAgICAgICAgICBpZiAoZGF0YS5pZGxlX2lkICE9IDApCi0rICAg ICAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgIH0KLSsgICAgICAgIGdfdGVzdF9tZXNzYWdl ICgiRW5kIHRpbnkgXCJmb2N1cy1pblwiIHNpZ25hbCB0ZXN0Iik7Ci0rICAgICAgICBkYXRhLmNh dGVnb3J5ID0gVEVTVF9DT01NSVRfVEVYVDsKLSsgICAgfQotKyAgICBpZiAobV9jb21wb3NlX3Rh YmxlID09IE5VTEwpIHsKLSsgICAgICAgIGdfdGVzdF9za2lwICgiWW91ciBsb2NhbGUgdXNlcyBl bl9VUyBjb21wb3NlIHRhYmxlLiIpOwotKyAgICAgICAgaWRsZV9jYiAoJmRhdGEpOwotKyAgICAg ICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICAgIHNlbmRfa2V5X2V2ZW50IChtX2NvbXBvc2VfdGFi bGUpOwotKyAgICBpZiAobV9ub19sb2FkX2NvbXBvc2VfdGFibGUpCi0rICAgICAgICBzZW5kX2tl eV9ldmVudCAobV9ub19sb2FkX2NvbXBvc2VfdGFibGUpOwotIAotICNpZiBHVEtfQ0hFQ0tfVkVS U0lPTiAoNCwgMCwgMCkKLSAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5j ICgKLUBAIC01NDcsNiArNTcxLDcgQEAgd2luZG93X2luc2VydGVkX3RleHRfY2IgKEd0a0VudHJ5 QnVmZmVyICpidWZmZXIsCi0gICAgIHN0YXRpYyBpbnQgbl9sb29wID0gMDsKLSAjZW5kaWYKLSAg ICAgc3RhdGljIGd1aW50IHN0cmlkZSA9IDA7Ci0rICAgIHN0YXRpYyBnYm9vbGVhbiBzdGFydF9u b19sb2FkX2NvbXBvc2UgPSBGQUxTRTsKLSAgICAgc3RhdGljIGdib29sZWFuIGVuYWJsZV8zMmJp dCA9IEZBTFNFOwotICAgICBndWludCBpOwotICAgICBpbnQgc2VxOwotQEAgLTU1NSwxMiArNTgw LDE3IEBAIHdpbmRvd19pbnNlcnRlZF90ZXh0X2NiIChHdGtFbnRyeUJ1ZmZlciAqYnVmZmVyLAot ICNpZiAhIEdUS19DSEVDS19WRVJTSU9OICg0LCAwLCAwKQotICAgICBHdGtFbnRyeSAqZW50cnkg PSBHVEtfRU5UUlkgKHVzZXJfZGF0YSk7Ci0gI2VuZGlmCi0rICAgIElCdXNDb21wb3NlVGFibGVF eCAqY29tcG9zZV90YWJsZSA9IE5VTEw7Ci0gICAgIElCdXNDb21wb3NlVGFibGVQcml2YXRlICpw cml2OwotICAgICBzdGF0aWMgVGVzdElkbGVEYXRhIGRhdGEgPSB7IC5jYXRlZ29yeSA9IFRFU1Rf Q09NTUlUX1RFWFQsIC5pZGxlX2lkID0gMCB9OwotIAotICAgICBnX2Fzc2VydCAobV9jb21wb3Nl X3RhYmxlICE9IE5VTEwpOwotIAotLSAgICBwcml2ID0gbV9jb21wb3NlX3RhYmxlLT5wcml2Owot KyAgICBpZiAoIXN0YXJ0X25vX2xvYWRfY29tcG9zZSkKLSsgICAgICAgIGNvbXBvc2VfdGFibGUg PSBtX2NvbXBvc2VfdGFibGU7Ci0rICAgIGVsc2UKLSsgICAgICAgIGNvbXBvc2VfdGFibGUgPSBt X25vX2xvYWRfY29tcG9zZV90YWJsZTsKLSsgICAgcHJpdiA9IGNvbXBvc2VfdGFibGUtPnByaXY7 Ci0gCi0gI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTiAoMywgMjIsIDE2KQotICAgICBpZiAobl9sb29w ICUgMiA9PSAxKSB7Ci1AQCAtNTcyLDEyICs2MDIsMTIgQEAgd2luZG93X2luc2VydGVkX3RleHRf Y2IgKEd0a0VudHJ5QnVmZmVyICpidWZmZXIsCi0gICAgIGlmIChjb2RlID09IDApCi0gICAgICAg ICByZXR1cm47Ci0gI2VuZGlmCi0tICAgIGkgPSBzdHJpZGUgKyAobV9jb21wb3NlX3RhYmxlLT5t YXhfc2VxX2xlbiArIDIpIC0gMjsKLS0gICAgc2VxID0gKGkgKyAyKSAvIChtX2NvbXBvc2VfdGFi bGUtPm1heF9zZXFfbGVuICsgMik7Ci0tICAgIGlmICghZW5hYmxlXzMyYml0ICYmICFtX2NvbXBv c2VfdGFibGUtPm5fc2VxcyAmJiBwcml2KQotKyAgICBpID0gc3RyaWRlICsgKGNvbXBvc2VfdGFi bGUtPm1heF9zZXFfbGVuICsgMikgLSAyOwotKyAgICBzZXEgPSAoaSArIDIpIC8gKGNvbXBvc2Vf dGFibGUtPm1heF9zZXFfbGVuICsgMik7Ci0rICAgIGlmICghZW5hYmxlXzMyYml0ICYmICFjb21w b3NlX3RhYmxlLT5uX3NlcXMgJiYgcHJpdikKLSAgICAgICAgIGVuYWJsZV8zMmJpdCA9IFRSVUU7 Ci0gICAgIGlmICghZW5hYmxlXzMyYml0KSB7Ci0tICAgICAgICBpZiAobV9jb21wb3NlX3RhYmxl LT5kYXRhW2ldID09IGNvZGUpIHsKLSsgICAgICAgIGlmIChjb21wb3NlX3RhYmxlLT5kYXRhW2ld ID09IGNvZGUpIHsKLSAgICAgICAgICAgICB0ZXN0ID0gR1JFRU4gIlBBU1MiIE5DOwotICAgICAg ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICB0ZXN0ID0gUkVEICJGQUlMIiBOQzsKLUBAIC01ODUs OSArNjE1LDkgQEAgd2luZG93X2luc2VydGVkX3RleHRfY2IgKEd0a0VudHJ5QnVmZmVyICpidWZm ZXIsCi0gICAgICAgICB9Ci0gICAgICAgICBnX3Rlc3RfbWVzc2FnZSAoIiUwNWQvJTA1ZCAlcyBl eHBlY3RlZDogJTA0WCB0eXBlZDogJTA0WCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2Vx LAotLSAgICAgICAgICAgICAgICAgICAgICAgIG1fY29tcG9zZV90YWJsZS0+bl9zZXFzLAotKyAg ICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2VfdGFibGUtPm5fc2VxcywKLSAgICAgICAgICAg ICAgICAgICAgICAgICB0ZXN0LAotLSAgICAgICAgICAgICAgICAgICAgICAgIG1fY29tcG9zZV90 YWJsZS0+ZGF0YVtpXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NlX3RhYmxlLT5k YXRhW2ldLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUpOwotICAgICB9IGVsc2Ugewot ICAgICAgICAgY29uc3QgZ2NoYXIgKnAgPSBjaGFyczsKLUBAIC02MTksMTMgKzY0OSwxOCBAQCB3 aW5kb3dfaW5zZXJ0ZWRfdGV4dF9jYiAoR3RrRW50cnlCdWZmZXIgKmJ1ZmZlciwKLSAgICAgICAg ICAgICAgICAgICAgICAgICB2YWxpZF9vdXRwdXQgPyBnX3V0ZjhfZ2V0X2NoYXIgKGNoYXJzKSA6 IGNvZGUpOwotICAgICB9Ci0gCi0tICAgIHN0cmlkZSArPSBtX2NvbXBvc2VfdGFibGUtPm1heF9z ZXFfbGVuICsgMjsKLSsgICAgc3RyaWRlICs9IGNvbXBvc2VfdGFibGUtPm1heF9zZXFfbGVuICsg MjsKLSAKLS0gICAgaWYgKCFlbmFibGVfMzJiaXQgJiYgc2VxID09IG1fY29tcG9zZV90YWJsZS0+ bl9zZXFzKSB7Ci0rICAgIGlmICghZW5hYmxlXzMyYml0ICYmIHNlcSA9PSBjb21wb3NlX3RhYmxl LT5uX3NlcXMpIHsKLSAgICAgICAgIGlmIChwcml2KSB7Ci0gICAgICAgICAgICAgZW5hYmxlXzMy Yml0ID0gVFJVRTsKLSAgICAgICAgICAgICBzdHJpZGUgPSAwOwotICAgICAgICAgICAgIHNlcSA9 IDA7Ci0rICAgICAgICB9IGVsc2UgaWYgKCFzdGFydF9ub19sb2FkX2NvbXBvc2UgJiYgbV9ub19s b2FkX2NvbXBvc2VfdGFibGUpIHsKLSsgICAgICAgICAgICBzdGFydF9ub19sb2FkX2NvbXBvc2Ug PSBUUlVFOwotKyAgICAgICAgICAgIGVuYWJsZV8zMmJpdCA9IEZBTFNFOwotKyAgICAgICAgICAg IHN0cmlkZSA9IDA7Ci0rICAgICAgICAgICAgc2VxID0gMDsKLSAgICAgICAgIH0gZWxzZSB7Ci0g ICAgICAgICAgICAgLyogRmluaXNoIHRlc3RzICovCi0gICAgICAgICAgICAgaWRsZV9jYiAoJmRh dGEpOwotQEAgLTYzMyw5ICs2NjgsMTYgQEAgd2luZG93X2luc2VydGVkX3RleHRfY2IgKEd0a0Vu dHJ5QnVmZmVyICpidWZmZXIsCi0gICAgICAgICB9Ci0gICAgIH0KLSAgICAgaWYgKGVuYWJsZV8z MmJpdCAmJiBzZXEgPT0gcHJpdi0+Zmlyc3Rfbl9zZXFzKSB7Ci0tICAgICAgICAvKiBGaW5pc2gg dGVzdHMgKi8KLS0gICAgICAgIGlkbGVfY2IgKCZkYXRhKTsKLS0gICAgICAgIHJldHVybjsKLSsg ICAgICAgIGlmICghc3RhcnRfbm9fbG9hZF9jb21wb3NlICYmIG1fbm9fbG9hZF9jb21wb3NlX3Rh YmxlKSB7Ci0rICAgICAgICAgICAgc3RhcnRfbm9fbG9hZF9jb21wb3NlID0gVFJVRTsKLSsgICAg ICAgICAgICBlbmFibGVfMzJiaXQgPSBGQUxTRTsKLSsgICAgICAgICAgICBzdHJpZGUgPSAwOwot KyAgICAgICAgICAgIHNlcSA9IDA7Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIC8q IEZpbmlzaCB0ZXN0cyAqLwotKyAgICAgICAgICAgIGlkbGVfY2IgKCZkYXRhKTsKLSsgICAgICAg ICAgICByZXR1cm47Ci0rICAgICAgICB9Ci0gICAgIH0KLSAKLSAjaWYgIUdUS19DSEVDS19WRVJT SU9OICgzLCAyMiwgMTYpCi1AQCAtNzc3LDI0ICs4MTksMjUgQEAgbWFpbiAoaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKLSAgICAgbV9zcmNkaXIgPSAoYXJnYyA+IDEgJiYgc3RybGVuIChhcmd2WzFd KSA8IEZJTEVOQU1FX01BWCkKLSAgICAgICAgICAgICA/IGdfc3RyZHVwIChhcmd2WzFdKSA6IGdf c3RyZHVwICgiLiIpOwotICAgICBtX2NvbXBvc2VfZmlsZSA9IGdfc3RyZHVwIChnX2dldGVudiAo IkNPTVBPU0VfRklMRSIpKTsKLSsgICAgbV9ub19sb2FkX2NvbXBvc2VfZmlsZSA9IGdfc3RyZHVw IChnX2dldGVudiAoIk5PX0xPQURfQ09NUE9TRV9GSUxFIikpOwotICNpZiBHTElCX0NIRUNLX1ZF UlNJT04gKDIsIDU4LCAwKQotLSAgICBtX3Rlc3RfbmFtZSA9IGdfc3RyZHVwIChnX2dldF9sYW5n dWFnZV9uYW1lc193aXRoX2NhdGVnb3J5ICgiTENfQ1RZUEUiKVswXSk7Ci0rICAgIG1fdGVzdF9s b2NhbGUgPSBnX3N0cmR1cCAoCi0rICAgICAgICAgICAgZ19nZXRfbGFuZ3VhZ2VfbmFtZXNfd2l0 aF9jYXRlZ29yeSAoIkxDX0NUWVBFIilbMF0pOwotICNlbHNlCi0tICAgIG1fdGVzdF9uYW1lID0g Z19zdHJkdXAgKGdfZ2V0ZW52ICgiTEFORyIpKTsKLSsgICAgbV90ZXN0X2xvY2FsZSA9IGdfc3Ry ZHVwIChnX2dldGVudiAoIkxBTkciKSk7Ci0gI2VuZGlmCi0tICAgIGlmIChtX2NvbXBvc2VfZmls ZSAmJgotLSAgICAgICAgKCFtX3Rlc3RfbmFtZSB8fCAhZ19hc2NpaV9zdHJuY2FzZWNtcCAobV90 ZXN0X25hbWUsICJlbl9VUyIsIDUpKSkgewotLSAgICAgICAgZ19mcmVlIChtX3Rlc3RfbmFtZSk7 Ci0tICAgICAgICBtX3Rlc3RfbmFtZSA9IGdfcGF0aF9nZXRfYmFzZW5hbWUgKG1fY29tcG9zZV9m aWxlKTsKLS0gICAgfQotKyAgICBtX3Rlc3RfbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzOiVz OiVzIiwKLSsgICAgICAgICAgICBtX3Rlc3RfbG9jYWxlID8gbV90ZXN0X2xvY2FsZSA6ICIiLAot KyAgICAgICAgICAgIG1fY29tcG9zZV9maWxlID8gbV9jb21wb3NlX2ZpbGUgOiAiIiwKLSsgICAg ICAgICAgICBtX25vX2xvYWRfY29tcG9zZV9maWxlID8gbV9ub19sb2FkX2NvbXBvc2VfZmlsZSA6 ICIiKTsKLSAgICAgLyogVGhlIHBhcmVudCBvZiBHdGtJTUNvbnRleHRXYXlsYW5kIGlzIEd0a0lN Q29udGV4dFNpbXBsZSBhbmQKLSAgICAgICogaXQgb3V0cHV0cyBhIHdhcm5pbmcgb2YgIkNhbid0 IGhhbmRsZSA+MTZiaXQga2V5dmFscyIgaW4KLSAgICAgICogZ3RrL2d0a2NvbXBvc2V0YWJsZS5j OnBhcnNlX2NvbXBvc2Vfc2VxdWVuY2UoKSBpbiBwdC1CUiBsb2NhbGVzCi0gICAgICAqIGFuZCBh bnkgd2FybmluZ3MgYXJlIHRyZWF0ZWQgYXMgZXJyb3JzIHdpdGggZ190ZXN0X3J1bigpCi0gICAg ICAqIFNvIGV4cG9ydCBMQU5HPWVuX1VTLlVURi04IGZvciBHTk9NRSBXYXlsYW5kIGFzIGEgd29y a2Fyb3VuZC4KLSAgICAgICovCi0tICAgIGlmIChtX3Rlc3RfbmFtZSAmJiAoIWdfYXNjaWlfc3Ry bmNhc2VjbXAgKG1fdGVzdF9uYW1lLCAicHRfQlIiLCA1KSB8fAotLSAgICAgICAgICAgICAgICAg ICAgICAgICFnX2FzY2lpX3N0cm5jYXNlY21wIChtX3Rlc3RfbmFtZSwgImZpX0ZJIiwgNSkKLSsg ICAgaWYgKG1fdGVzdF9sb2NhbGUgJiYgKCFnX2FzY2lpX3N0cm5jYXNlY21wIChtX3Rlc3RfbG9j YWxlLCAicHRfQlIiLCA1KSB8fAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIWdfYXNjaWlf c3RybmNhc2VjbXAgKG1fdGVzdF9sb2NhbGUsICJmaV9GSSIsIDUpCi0gICAgICAgICAgICAgICAg ICAgICAgICApKSB7Ci0gICAgICAgICBtX2lzX2d0a18zMmJpdF9jb21wb3NlX2Vycm9yID0gVFJV RTsKLSAgICAgfQotQEAgLTgxNSw1ICs4NTgsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJn dltdKQotIAotICAgICByZXR2YWwgPSBnX3Rlc3RfcnVuICgpOwotICAgICBnX2ZyZWUgKG1fdGVz dF9uYW1lKTsKLSsgICAgZ19mcmVlIChtX3Rlc3RfbG9jYWxlKTsKLSsgICAgZ19mcmVlIChtX2Nv bXBvc2VfZmlsZSk7Ci0rICAgIGdfZnJlZSAobV9ub19sb2FkX2NvbXBvc2VfZmlsZSk7Ci0gICAg IHJldHVybiByZXR2YWw7Ci0gfQotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2Uu ZW52IGIvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5lbnYKLWluZGV4IDJhZTk5NDM5Li5lMmUwODkz OSAxMDA2NDQKLS0tLSBhL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuZW52Ci0rKysgYi9zcmMvdGVz dHMvaWJ1cy1jb21wb3NlLmVudgotQEAgLTEsNSArMSw2IEBACi0tTEFORz1lbF9HUi5VVEYtOAot LUxBTkc9ZmlfRkkuVVRGLTgKLS1MQU5HPXB0X0JSLlVURi04Ci0rTEFORz1lbF9HUi5VVEYtOCBO T19MT0FEX0NPTVBPU0VfRklMRT1pYnVzLWNvbXBvc2UudXNtaW4yCi0rTEFORz1maV9GSS5VVEYt OCBOT19MT0FEX0NPTVBPU0VfRklMRT1pYnVzLWNvbXBvc2UudXNtaW4KLStMQU5HPXB0X0JSLlVU Ri04IE5PX0xPQURfQ09NUE9TRV9GSUxFPWlidXMtY29tcG9zZS51c21pbgotIExBTkc9ZW5fVVMu VVRGLTggQ09NUE9TRV9GSUxFPWlidXMtY29tcG9zZS5iYXNpYwotK0xBTkc9ZW5fVVMuVVRGLTgg Tk9fTE9BRF9DT01QT1NFX0ZJTEU9aWJ1cy1jb21wb3NlLnVzbWluIENPTVBPU0VfRklMRT1pYnVz LWNvbXBvc2UuYmFzaWMyCi0gTEFORz1lbl9VUy5VVEYtOCBDT01QT1NFX0ZJTEU9aWJ1cy1jb21w b3NlLmVtb2ppCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS51c21pbiBiL3Ny Yy90ZXN0cy9pYnVzLWNvbXBvc2UudXNtaW4KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwMC4uMGEyZGI1NDEKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy90ZXN0cy9pYnVzLWNv bXBvc2UudXNtaW4KLUBAIC0wLDAgKzEsOCBAQAotKzxkZWFkX3RpbGRlPiA8c3BhY2U+ICAgICAg ICAgICAgICAgICAgICA6ICJ+IiAgIGFzY2lpdGlsZGUgIyBUSUxERQotKzxkZWFkX3RpbGRlPiA8 ZGVhZF90aWxkZT4gICAgICAgICAgICAgICA6ICJ+IiAgIGFzY2lpdGlsZGUgIyBUSUxERQotKzxk ZWFkX3RpbGRlPiA8YT4gICAgICAgICAgICAgICAgICAgICAgICA6ICLDoyIgICBhdGlsZGUgIyBM QVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCi0rPE11bHRpX2tleT4gPGFzY2lpdGlsZGU+ IDxhPiAgICAgICAgICAgIDogIsOjIiAgIGF0aWxkZSAjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJ VEggVElMREUKLSs8ZGVhZF9jaXJjdW1mbGV4PiA8c3BhY2U+ICAgICAgICAgICAgICAgOiAiXiIg ICBhc2NpaWNpcmN1bSAjIENJUkNVTUZMRVggQUNDRU5UCi0rPGRlYWRfY2lyY3VtZmxleD4gPGRl YWRfY2lyY3VtZmxleD4gICAgIDogIl4iICAgYXNjaWljaXJjdW0gIyBDSVJDVU1GTEVYIEFDQ0VO VAotKzxkZWFkX2NpcmN1bWZsZXg+IDxhPiAgICAgICAgICAgICAgICAgICA6ICLDoiIgICBhY2ly Y3VtZmxleCAjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAotKzxNdWx0aV9r ZXk+IDxhc2NpaWNpcmN1bT4gPGE+ICAgICAgICAgICA6ICLDoiIgICBhY2lyY3VtZmxleCAjIExB VElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAotZGlmZiAtLWdpdCBhL3NyYy90ZXN0 cy9pYnVzLWNvbXBvc2UudXNtaW4yIGIvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS51c21pbjIKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMC4uNzFmNTMwZGEKLS0tLSAvZGV2L251 bGwKLSsrKyBiL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UudXNtaW4yCi1AQCAtMCwwICsxLDYgQEAK LSs8ZGVhZF90aWxkZT4gPGE+ICAgICAgICAgICAgICAgICAgICAgICAgOiAiw6MiICAgYXRpbGRl ICMgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQotKzxNdWx0aV9rZXk+IDxhc2NpaXRp bGRlPiA8YT4gICAgICAgICAgICA6ICLDoyIgICBhdGlsZGUgIyBMQVRJTiBTTUFMTCBMRVRURVIg QSBXSVRIIFRJTERFCi0rPGRlYWRfY2lyY3VtZmxleD4gPHNwYWNlPiAgICAgICAgICAgICAgIDog Il4iICAgYXNjaWljaXJjdW0gIyBDSVJDVU1GTEVYIEFDQ0VOVAotKzxkZWFkX2NpcmN1bWZsZXg+ IDxkZWFkX2NpcmN1bWZsZXg+ICAgICA6ICJeIiAgIGFzY2lpY2lyY3VtICMgQ0lSQ1VNRkxFWCBB Q0NFTlQKLSs8ZGVhZF9jaXJjdW1mbGV4PiA8YT4gICAgICAgICAgICAgICAgICAgOiAiw6IiICAg YWNpcmN1bWZsZXggIyBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKLSs8TXVs dGlfa2V5PiA8YXNjaWljaXJjdW0+IDxhPiAgICAgICAgICAgOiAiw6IiICAgYWNpcmN1bWZsZXgg IyBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKLS0tIAotMi41Mi4wCi0KLUZy b20gZDc3ZDY5OTgwMDE1NTdjODBjNGFjMGExZWVjMzFmMGExOGFjZmQ2NSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IERhdmlkIEVkbXVuZHNvbiA8a2RlQGRhdmlkZWRtdW5kc29uLmNv LnVrPgotRGF0ZTogVGh1LCA4IEphbiAyMDI2IDIzOjEwOjE2ICswOTAwCi1TdWJqZWN0OiBbUEFU Q0hdIGNsaWVudC93YXlsYW5kOiBDb25uZWN0IGRlbGV0ZSBzdXJyb3VuZGluZyB0ZXh0Ci0KLVRo aXMgd2Fzbid0IGhvb2tlZCB1cCBpbiB0aGUgd2F5bGFuZCBicmlkZ2UgbGVhZGluZyB0byB0eXBp bmcgbm90Ci13b3JraW5nIGNvcnJlY3RseSB3aGVuIHRoZSBiYWNrZW5kIHJlbGllcyBvbiBpdC4K LQotQXMgd2VsbCBhcyBicmlkZ2luZyB3ZSBuZWVkIHRvIHRyYW5zbGF0ZSB0aGUgb2Zmc2V0IGlu IG51bWJlciBvZiB1bmljb2RlCi1jaGFyYWN0ZXJzIGludG8gYSBudW1iZXIgb2YgYnl0ZXMgZm9y IHRoZSB3YXlsYW5kIHdpcmUgZm9ybWF0LiBUaGUgbG9naWMKLWZvciB0aGlzIHRyYW5zbGF0aW9u IGlzIGluc3BpcmVkIGJ5IGhvdyBpdCB3b3JrcyBpbiBNdXR0ZXIgd2hpY2gKLWNvbnZlcnRzIElC dXMtPlRleHRJbnB1dCBkaXJlY3RseS4KLQotTm90ZSB0aGF0IElucHV0TWV0aG9kVjEgdGFrZXMg YW4gb2Zmc2V0ICsgbGVuZ3RoLCB3aGVyZWFzIFYyIGhhcyBhCi1sZW5ndGggYmVmb3JlIGFuZCBh ZnRlci4KLQotQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvcHVsbC8yODMwCi0tLS0K LSBjbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMgfCA4OCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDg2IGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMg Yi9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMKLWluZGV4IDJkOWY4MjJlLi42NTgwYjhh NCAxMDA2NDQKLS0tLSBhL2NsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYwotKysrIGIvY2xp ZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jCi1AQCAtMTI0LDYgKzEyNCwxMSBAQCBzdHJ1Y3Qg X0lCdXNXYXlsYW5kSU1Qcml2YXRlCi0gICAgIGd1aW50IHByZWVkaXRfbW9kZTsKLSAgICAgSUJ1 c01vZGlmaWVyVHlwZSBtb2RpZmllcnM7Ci0gCi0rI2lmIEVOQUJMRV9TVVJST1VORElORwotKyAg ICBJQnVzVGV4dCAqc3Vycm91bmRpbmdfdGV4dDsKLSsgICAgZ3VpbnQgc3Vycm91bmRpbmdfY3Vy c29yX3BvczsKLSsjZW5kaWYKLSsKLSAgICAgc3RydWN0IHhrYl9jb250ZXh0ICp4a2JfY29udGV4 dDsKLSAKLSAgICAgc3RydWN0IHhrYl9rZXltYXAgKmtleW1hcDsKLUBAIC02MTYsNiArNjIxLDcg QEAgaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV9wcmVlZGl0X3N0eWxlIChJQnVzV2F5bGFuZElNICp3 bGltKQotICAgICB9Ci0gfQotIAotKwotIHN0YXRpYyB2b2lkCi0gX2NvbnRleHRfc2hvd19wcmVl ZGl0X3RleHRfY2IgKElCdXNJbnB1dENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIElCdXNXYXlsYW5kSU0gICAgKndsaW0pCi1AQCAtNzA2LDYgKzcxMiw2 MSBAQCBfY29udGV4dF91cGRhdGVfcHJlZWRpdF90ZXh0X2NiIChJQnVzSW5wdXRDb250ZXh0ICpj b250ZXh0LAotIH0KLSAKLSAKLSsjaWYgRU5BQkxFX1NVUlJPVU5ESU5HCi0rc3RhdGljIHZvaWQK LStfY29udGV4dF9kZWxldGVfc3Vycm91bmRpbmdfdGV4dF9jYiAoSUJ1c0lucHV0Q29udGV4dCAq Y29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAg ICAgICAgICAgb2Zmc2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn dWludCAgICAgICAgICAgICBuY2hhcnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElCdXNXYXlsYW5kSU0gICAgKndsaW0pCi0rewotKyAgICBJQnVzV2F5bGFuZElNUHJp dmF0ZSAqcHJpdjsKLSsgICAgY29uc3QgY2hhciAqc3RhcnQsICplbmQ7Ci0rICAgIGNvbnN0IGNo YXIgKmJlZm9yZSwgKmFmdGVyOwotKyAgICBjb25zdCBjaGFyICpjdXJzb3I7Ci0rICAgIHVpbnQz Ml90IGJlZm9yZV9sZW5ndGg7Ci0rICAgIHVpbnQzMl90IGFmdGVyX2xlbmd0aDsKLSsKLSsgICAg Z19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19XQVlMQU5EX0lNICh3bGltKSk7Ci0rICAgIHByaXYg PSBpYnVzX3dheWxhbmRfaW1fZ2V0X2luc3RhbmNlX3ByaXZhdGUgKHdsaW0pOwotKwotKyAgICBp ZiAoIXByaXYtPnN1cnJvdW5kaW5nX3RleHQpCi0rICAgICAgICByZXR1cm47Ci0rCi0rICAgIG9m ZnNldCA9IE1JTiAob2Zmc2V0LCAwKTsKLSsKLSsgICAgc3RhcnQgPSBwcml2LT5zdXJyb3VuZGlu Z190ZXh0LT50ZXh0OwotKyAgICBlbmQgPSBzdGFydCArIHN0cmxlbiAocHJpdi0+c3Vycm91bmRp bmdfdGV4dC0+dGV4dCk7Ci0rICAgIGN1cnNvciA9IHN0YXJ0ICsgcHJpdi0+c3Vycm91bmRpbmdf Y3Vyc29yX3BvczsKLSsKLSsgICAgYmVmb3JlID0gZ191dGY4X29mZnNldF90b19wb2ludGVyIChj dXJzb3IsIG9mZnNldCk7Ci0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGJlZm9yZSA+PSBzdGFydCk7 Ci0rICAgIGFmdGVyID0gZ191dGY4X29mZnNldF90b19wb2ludGVyIChjdXJzb3IsIG9mZnNldCAr IG5jaGFycyk7Ci0rICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGFmdGVyIDw9IGVuZCk7Ci0rCi0rICAg IGJlZm9yZV9sZW5ndGggPSBjdXJzb3IgLSBiZWZvcmU7Ci0rICAgIGFmdGVyX2xlbmd0aCA9IGFm dGVyIC0gY3Vyc29yOwotKwotKyAgICBzd2l0Y2ggKHByaXYtPnZlcnNpb24pIHsKLSsgICAgY2Fz ZSBJTlBVVF9NRVRIT0RfVjE6Ci0rICAgICAgICB6d3BfaW5wdXRfbWV0aG9kX2NvbnRleHRfdjFf ZGVsZXRlX3N1cnJvdW5kaW5nX3RleHQgKAotKyAgICAgICAgICAgICAgICBwcml2LT5jb250ZXh0 LAotKyAgICAgICAgICAgICAgICAtYmVmb3JlX2xlbmd0aCwKLSsgICAgICAgICAgICAgICAgYmVm b3JlX2xlbmd0aCArIGFmdGVyX2xlbmd0aCk7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBJ TlBVVF9NRVRIT0RfVjI6Ci0rICAgICAgICB6d3BfaW5wdXRfbWV0aG9kX3YyX2RlbGV0ZV9zdXJy b3VuZGluZ190ZXh0ICgKLSsgICAgICAgICAgICAgICAgcHJpdi0+c2VhdC0+aW5wdXRfbWV0aG9k X3YyLAotKyAgICAgICAgICAgICAgICBiZWZvcmVfbGVuZ3RoLAotKyAgICAgICAgICAgICAgICBh ZnRlcl9sZW5ndGgpOwotKyAgICAgICAgendwX2lucHV0X21ldGhvZF92Ml9jb21taXQgKHByaXYt PnNlYXQtPmlucHV0X21ldGhvZF92MiwgcHJpdi0+c2VyaWFsKTsKLSsgICAgICAgIGJyZWFrOwot KyAgICBkZWZhdWx0OgotKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7Ci0rICAgIH0K LSt9Ci0rI2VuZGlmCi0rCi0rCi0gc3RhdGljIHZvaWQKLSBoYW5kbGVfc3Vycm91bmRpbmdfdGV4 dCAodm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHp3cF9pbnB1dF9tZXRob2RfY29udGV4dF91bmlvbiAq Y29udGV4dCwKLUBAIC03MTYsMTUgKzc3NywyMyBAQCBoYW5kbGVfc3Vycm91bmRpbmdfdGV4dCAo dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGF0YSwKLSAjaWYgRU5BQkxF X1NVUlJPVU5ESU5HCi0gICAgIElCdXNXYXlsYW5kSU0gKndsaW0gPSBkYXRhOwotICAgICBJQnVz V2F5bGFuZElNUHJpdmF0ZSAqcHJpdjsKLSsgICAgSUJ1c1RleHQgKmlidXN0ZXh0OwotIAotICAg ICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX1dBWUxBTkRfSU0gKHdsaW0pKTsKLSAgICAgcHJp diA9IGlidXNfd2F5bGFuZF9pbV9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAod2xpbSk7Ci0rCi0rICAg IGlidXN0ZXh0ID0gaWJ1c190ZXh0X25ld19mcm9tX3N0cmluZyAodGV4dCk7Ci0rCi0rICAgIGlm IChwcml2LT5zdXJyb3VuZGluZ190ZXh0KQotKyAgICAgICAgZ19vYmplY3RfdW5yZWYgKHByaXYt PnN1cnJvdW5kaW5nX3RleHQpOwotKyAgICBwcml2LT5zdXJyb3VuZGluZ190ZXh0ID0gZ19vYmpl Y3RfcmVmX3NpbmsgKGlidXN0ZXh0KTsKLSsgICAgcHJpdi0+c3Vycm91bmRpbmdfY3Vyc29yX3Bv cyA9IGN1cnNvcjsKLSsKLSAgICAgaWYgKHByaXYtPmlidXNjb250ZXh0ICE9IE5VTEwgJiYKLSAg ICAgICAgIGlidXNfaW5wdXRfY29udGV4dF9uZWVkc19zdXJyb3VuZGluZ190ZXh0IChwcml2LT5p YnVzY29udGV4dCkpIHsKLSAgICAgICAgIC8qIENVUlNPUl9QT1MgYW5kIEFOQ0hPUl9QT1MgYXJl IGNoYXJhY3RlciBvZmZzZXQuICAqLwotICAgICAgICAgZ3VpbnQgY3Vyc29yX3BvcyA9IGdfdXRm OF9wb2ludGVyX3RvX29mZnNldCAodGV4dCwgdGV4dCArIGN1cnNvcik7Ci0gICAgICAgICBndWlu dCBhbmNob3JfcG9zID0gZ191dGY4X3BvaW50ZXJfdG9fb2Zmc2V0ICh0ZXh0LCB0ZXh0ICsgYW5j aG9yKTsKLS0gICAgICAgIElCdXNUZXh0ICppYnVzdGV4dCA9IGlidXNfdGV4dF9uZXdfZnJvbV9z dHJpbmcgKHRleHQpOwotIAotICAgICAgICAgaWJ1c19pbnB1dF9jb250ZXh0X3NldF9zdXJyb3Vu ZGluZ190ZXh0IChwcml2LT5pYnVzY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWJ1c3RleHQsCi1AQCAtMTc2Miw4ICsxODMxLDEyIEBA IF9jcmVhdGVfaW5wdXRfY29udGV4dF9kb25lIChHT2JqZWN0ICAgICAgKm9iamVjdCwKLSAgICAg ICAgIGdfc2lnbmFsX2Nvbm5lY3QgKHByaXYtPmlidXNjb250ZXh0LCAiaGlkZS1wcmVlZGl0LXRl eHQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoX2NvbnRleHRfaGlk ZV9wcmVlZGl0X3RleHRfY2IpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgd2xpbSk7Ci0t ICAgIAotKwotICNpZmRlZiBFTkFCTEVfU1VSUk9VTkRJTkcKLSsgICAgICAgIGdfc2lnbmFsX2Nv bm5lY3QgKHByaXYtPmlidXNjb250ZXh0LCAiZGVsZXRlLXN1cnJvdW5kaW5nLXRleHQiLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoX2NvbnRleHRfZGVsZXRlX3N1cnJv dW5kaW5nX3RleHRfY2IpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2xpbSk7Ci0rCi0g ICAgICAgICBjYXBhYmlsaXRpZXMgfD0gSUJVU19DQVBfU1VSUk9VTkRJTkdfVEVYVDsKLSAjZW5k aWYKLSAgICAgICAgIGlmIChfdXNlX3N5bmNfbW9kZSA9PSAxKQotQEAgLTE4ODIsNyArMTk1NSwx NCBAQCBpbnB1dF9tZXRob2RfZGVhY3RpdmF0ZSAodm9pZCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqZGF0YSwKLSAgICAgICAgICAgICAgICAgcHJpdi0+aWJ1c2NvbnRleHQsCi0gICAg ICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKF9jb250ZXh0X2hpZGVfcHJlZWRpdF90ZXh0X2NiKSwK LSAgICAgICAgICAgICAgICAgd2xpbSk7Ci0rI2lmZGVmIEVOQUJMRV9TVVJST1VORElORwotKyAg ICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jICgKLSsgICAgICAgICAg ICAgICAgcHJpdi0+aWJ1c2NvbnRleHQsCi0rICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKF9j b250ZXh0X2RlbGV0ZV9zdXJyb3VuZGluZ190ZXh0X2NiKSwKLSsgICAgICAgICAgICAgICAgd2xp bSk7Ci0rI2VuZGlmCi0gICAgICAgICBnX2NsZWFyX29iamVjdCAoJnByaXYtPmlidXNjb250ZXh0 KTsKLSsKLSAgICAgICAgIGdfc2lnbmFsX2VtaXQgKHdsaW0sCi0gICAgICAgICAgICAgICAgICAg ICAgICB3YXlsYW5kX2ltX3NpZ25hbHNbSUJVU19GT0NVU19PVVRdLAotICAgICAgICAgICAgICAg ICAgICAgICAgMCwKLUBAIC0xODkyLDYgKzE5NzIsMTAgQEAgaW5wdXRfbWV0aG9kX2RlYWN0aXZh dGUgKHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEsCi0gCi0gICAgIGlm IChwcml2LT5wcmVlZGl0X3RleHQpCi0gICAgICAgICBnX2NsZWFyX29iamVjdCAoJnByaXYtPnBy ZWVkaXRfdGV4dCk7Ci0rI2lmIEVOQUJMRV9TVVJST1VORElORwotKyAgICBpZiAocHJpdi0+c3Vy cm91bmRpbmdfdGV4dCkKLSsgICAgICAgIGdfY2xlYXJfb2JqZWN0ICgmcHJpdi0+c3Vycm91bmRp bmdfdGV4dCk7Ci0rI2VuZGlmCi0gCi0gICAgIHN3aXRjaCAocHJpdi0+dmVyc2lvbikgewotICAg ICBjYXNlIElOUFVUX01FVEhPRF9WMToKLS0tIAotMi41Mi4wCi0KLUZyb20gNjk2MjYxMTA4Yzg4 MzBlMWUzMDMyN2EwYTQ3Y2ZiMzBiYTVkYTdkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZy b206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjYg RGVjIDIwMjUgMTA6MTU6MzAgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gY2xpZW50L3dheWxhbmQ6 IEZpeCBCYWNrc3BhY2UgYWZ0ZXIgY29tbWl0LXRleHQgaW4gR2hvc3R0eQotCi1HaG9zdHR5IHJl cXVpcmVzIHRvIGhpZGUgdGhlIHByZWVkaXQtdGV4dCB0byByZWNvdmVyIHRvIGNvbW1pdCB0aGUK LWNvbnRyb2wgY2hhcmFjdGVycy4gR3RrSU1Db250ZXh0V2F5bGFuZCBjYW4gZW1pdCB0aGUgJ3By ZWVkaXQtZW5kJwotc2lnbmFsIGluIGNhc2UgendwX3RleHRfaW5wdXRfdjNfbGlzdGVuZXIuZG9u ZSBpcyBlbWl0dGVkLgotVW5mb3J0dW5hdGVseSB6d3BfaW5wdXRfbWV0aG9kX3YyX3NldF9wcmVl ZGl0X3N0cmluZygpIGRvZXMgbm90IHN1cHBvcnQKLXRvIHNlbmQgYSAlTlVMTCBzdHJpbmcgd2hp bGUgendwX3RleHRfaW5wdXRfdjNfbGlzdGVuZXIucHJlZWRpdF9zdHJpbmcoKQotKmRvZXMqIHN1 cHBvcnQgYSAlTlVMTCBzdHJpbmcuCi1UbyBtYWtlIHN1cmUgdGhlIGhpZGluZyBwcmVlZGl0LXRl eHQsIGlidXMtd2F5bGFuZCBjYWxscwotendwX2lucHV0X21ldGhvZF92Ml9jb21taXQoKSBhZnRl ciB0aGUgaW1fc2VyaWFsIGlzIHVwZGF0ZWQuCi0KLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1 cy9pYnVzL2lzc3Vlcy8yODE5Ci0tLS0KLSBjbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMg fCA5MSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQs IDU3IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2xpZW50 L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jIGIvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5j Ci1pbmRleCAyZDlmODIyZS4uYmNlMDUwZDQgMTAwNjQ0Ci0tLS0gYS9jbGllbnQvd2F5bGFuZC9p YnVzd2F5bGFuZGltLmMKLSsrKyBiL2NsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYwotQEAg LTEyMyw2ICsxMjMsNyBAQCBzdHJ1Y3QgX0lCdXNXYXlsYW5kSU1Qcml2YXRlCi0gICAgIGd1aW50 IHByZWVkaXRfY3Vyc29yX3BvczsKLSAgICAgZ3VpbnQgcHJlZWRpdF9tb2RlOwotICAgICBJQnVz TW9kaWZpZXJUeXBlIG1vZGlmaWVyczsKLSsgICAgZ2Jvb2xlYW4gaGlkaW5nX3ByZWVkaXRfdGV4 dDsKLSAKLSAjaWYgRU5BQkxFX1NVUlJPVU5ESU5HCi0gICAgIElCdXNUZXh0ICpzdXJyb3VuZGlu Z190ZXh0OwotQEAgLTE0Nyw3ICsxNDgsNyBAQCBzdHJ1Y3QgX0lCdXNXYXlsYW5kSU1Qcml2YXRl Ci0gICAgIHhrYl9tb2RfbWFza190IGh5cGVyX21hc2s7Ci0gICAgIHhrYl9tb2RfbWFza190IG1l dGFfbWFzazsKLSAKLS0gICAgdWludDMyX3Qgc2VyaWFsOwotKyAgICB1aW50MzJfdCBpbV9zZXJp YWw7Ci0gICAgIGludDMyX3QgcmVwZWF0X3JhdGU7Ci0gICAgIGludDMyX3QgcmVwZWF0X2RlbGF5 OwotIAotQEAgLTE1Nyw3ICsxNTgsNyBAQCBzdHJ1Y3QgX0lCdXNXYXlsYW5kSU1Qcml2YXRlCi0g c3RydWN0IF9JQnVzV2F5bGFuZEtleUV2ZW50Ci0gewotICAgICBzdHJ1Y3QgendwX2lucHV0X21l dGhvZF9jb250ZXh0X3YxICpjb250ZXh0OwotLSAgICB1aW50MzJfdCBzZXJpYWw7Ci0rICAgIHVp bnQzMl90IGtleV9zZXJpYWw7Ci0gICAgIHVpbnQzMl90IHRpbWU7Ci0gICAgIHVpbnQzMl90IGtl eTsKLSAgICAgZW51bSB3bF9rZXlib2FyZF9rZXlfc3RhdGUgc3RhdGU7Ci1AQCAtMzI0LDEyICsz MjUsMTMgQEAgaWJ1c193YXlsYW5kX2ltX2NvbW1pdF90ZXh0IChJQnVzV2F5bGFuZElNICp3bGlt LAotICAgICBzd2l0Y2ggKHByaXYtPnZlcnNpb24pIHsKLSAgICAgY2FzZSBJTlBVVF9NRVRIT0Rf VjE6Ci0gICAgICAgICB6d3BfaW5wdXRfbWV0aG9kX2NvbnRleHRfdjFfY29tbWl0X3N0cmluZyAo cHJpdi0+Y29udGV4dCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwcml2LT5zZXJpYWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJpdi0+aW1fc2VyaWFsLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cik7Ci0gICAgICAgICBicmVhazsK LSAgICAgY2FzZSBJTlBVVF9NRVRIT0RfVjI6Ci0gICAgICAgICB6d3BfaW5wdXRfbWV0aG9kX3Yy X2NvbW1pdF9zdHJpbmcgKHByaXYtPnNlYXQtPmlucHV0X21ldGhvZF92Miwgc3RyKTsKLS0gICAg ICAgIHp3cF9pbnB1dF9tZXRob2RfdjJfY29tbWl0IChwcml2LT5zZWF0LT5pbnB1dF9tZXRob2Rf djIsIHByaXYtPnNlcmlhbCk7Ci0rICAgICAgICB6d3BfaW5wdXRfbWV0aG9kX3YyX2NvbW1pdCAo cHJpdi0+c2VhdC0+aW5wdXRfbWV0aG9kX3YyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHByaXYtPmltX3NlcmlhbCk7Ci0gICAgICAgICBicmVhazsKLSAgICAgZGVmYXVs dDoKLSAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotQEAgLTMzOSw3ICszNDEsNyBA QCBpYnVzX3dheWxhbmRfaW1fY29tbWl0X3RleHQgKElCdXNXYXlsYW5kSU0gKndsaW0sCi0gCi0g c3RhdGljIHZvaWQKLSBpYnVzX3dheWxhbmRfaW1fa2V5IChJQnVzV2F5bGFuZElNICp3bGltLAot LSAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgIHNlcmlhbCwKLSsgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCAgICAgICBrZXlfc2VyaWFsLAotICAgICAgICAgICAgICAgICAg ICAgIHVpbnQzMl90ICAgICAgIHRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg ICAgICAga2V5LAotICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgIHN0YXRlKQot QEAgLTM1MCw3ICszNTIsNyBAQCBpYnVzX3dheWxhbmRfaW1fa2V5IChJQnVzV2F5bGFuZElNICp3 bGltLAotICAgICBzd2l0Y2ggKHByaXYtPnZlcnNpb24pIHsKLSAgICAgY2FzZSBJTlBVVF9NRVRI T0RfVjE6Ci0gICAgICAgICB6d3BfaW5wdXRfbWV0aG9kX2NvbnRleHRfdjFfa2V5IChwcml2LT5j b250ZXh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFs LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5X3NlcmlhbCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSk7Ci1AQCAtMzY3LDcgKzM2OSw3IEBAIGli dXNfd2F5bGFuZF9pbV9rZXkgKElCdXNXYXlsYW5kSU0gKndsaW0sCi0gCi0gc3RhdGljIHZvaWQK LSBpYnVzX3dheWxhbmRfaW1fa2V5c3ltIChJQnVzV2F5bGFuZElNICp3bGltLAotLSAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgIHNlcmlhbCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCAgICAgICBpbV9zZXJpYWwsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgZ3VpbnQgICAgICAgICAga2V5dmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90ICAgICAgIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAg IG1vZGlmaWVycykKLUBAIC0zNzgsNyArMzgwLDcgQEAgaWJ1c193YXlsYW5kX2ltX2tleXN5bSAo SUJ1c1dheWxhbmRJTSAqd2xpbSwKLSAgICAgc3dpdGNoIChwcml2LT52ZXJzaW9uKSB7Ci0gICAg IGNhc2UgSU5QVVRfTUVUSE9EX1YxOgotICAgICAgICAgendwX2lucHV0X21ldGhvZF9jb250ZXh0 X3YxX2tleXN5bSAocHJpdi0+Y29udGV4dCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlcmlhbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGltX3NlcmlhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBrZXl2YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdGF0ZSwKLUBAIC00MjAsNyArNDIyLDcgQEAgX2NvbnRleHRfZm9yd2FyZF9rZXlfZXZlbnRf Y2IgKElCdXNJbnB1dENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICBzdGF0ZSA9IFdMX0tFWUJP QVJEX0tFWV9TVEFURV9QUkVTU0VEOwotIAotICAgICBpYnVzX3dheWxhbmRfaW1fa2V5c3ltICh3 bGltLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5zZXJpYWwsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmltX3NlcmlhbCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAga2V5dmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzKTsKLUBAIC02NDUsNyArNjQ3 LDcgQEAgX2NvbnRleHRfc2hvd19wcmVlZGl0X3RleHRfY2IgKElCdXNJbnB1dENvbnRleHQgKmNv bnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGN1cnNvcik7Ci0gICAgICAgICBpYnVzX3dheWxhbmRfaW1fdXBkYXRlX3ByZWVkaXRfc3R5 bGUgKHdsaW0pOwotICAgICAgICAgendwX2lucHV0X21ldGhvZF9jb250ZXh0X3YxX3ByZWVkaXRf c3RyaW5nIChwcml2LT5jb250ZXh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwcml2LT5zZXJpYWwsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmltX3NlcmlhbCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+cHJlZWRp dF90ZXh0LT50ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb21taXQpOwotICAgICAgICAgYnJlYWs7Ci1AQCAtNjU1LDcgKzY1Nyw5IEBA IF9jb250ZXh0X3Nob3dfcHJlZWRpdF90ZXh0X2NiIChJQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0 LAotICAgICAgICAgICAgICAgICBwcml2LT5wcmVlZGl0X3RleHQtPnRleHQsCi0gICAgICAgICAg ICAgICAgIGN1cnNvciwKLSAgICAgICAgICAgICAgICAgc3RybGVuIChwcml2LT5wcmVlZGl0X3Rl eHQtPnRleHQpKTsKLS0gICAgICAgIHp3cF9pbnB1dF9tZXRob2RfdjJfY29tbWl0IChwcml2LT5z ZWF0LT5pbnB1dF9tZXRob2RfdjIsIHByaXYtPnNlcmlhbCk7Ci0rICAgICAgICB6d3BfaW5wdXRf bWV0aG9kX3YyX2NvbW1pdCAocHJpdi0+c2VhdC0+aW5wdXRfbWV0aG9kX3YyLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmltX3NlcmlhbCk7Ci0rICAgICAgICBw cml2LT5oaWRpbmdfcHJlZWRpdF90ZXh0ID0gRkFMU0U7Ci0gICAgICAgICBicmVhazsKLSAgICAg ZGVmYXVsdDoKLSAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotQEAgLTY3MywxNCAr Njc3LDE2IEBAIF9jb250ZXh0X2hpZGVfcHJlZWRpdF90ZXh0X2NiIChJQnVzSW5wdXRDb250ZXh0 ICpjb250ZXh0LAotICAgICBzd2l0Y2ggKHByaXYtPnZlcnNpb24pIHsKLSAgICAgY2FzZSBJTlBV VF9NRVRIT0RfVjE6Ci0gICAgICAgICB6d3BfaW5wdXRfbWV0aG9kX2NvbnRleHRfdjFfcHJlZWRp dF9zdHJpbmcgKHByaXYtPmNvbnRleHQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHByaXYtPnNlcmlhbCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+aW1fc2VyaWFsLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIpOwotICAg ICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgSU5QVVRfTUVUSE9EX1YyOgotICAgICAgICAgendwX2lu cHV0X21ldGhvZF92Ml9zZXRfcHJlZWRpdF9zdHJpbmcgIChwcml2LT5zZWF0LT5pbnB1dF9tZXRo b2RfdjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIiLCAwLCAwKTsKLS0gICAgICAgIHp3cF9pbnB1dF9tZXRob2RfdjJfY29tbWl0IChwcml2LT5z ZWF0LT5pbnB1dF9tZXRob2RfdjIsIHByaXYtPnNlcmlhbCk7Ci0rICAgICAgICB6d3BfaW5wdXRf bWV0aG9kX3YyX2NvbW1pdCAocHJpdi0+c2VhdC0+aW5wdXRfbWV0aG9kX3YyLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmltX3NlcmlhbCk7Ci0rICAgICAgICBw cml2LT5oaWRpbmdfcHJlZWRpdF90ZXh0ID0gVFJVRTsKLSAgICAgICAgIGJyZWFrOwotICAgICBk ZWZhdWx0OgotICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7Ci1AQCAtNzU4LDcgKzc2 NCw4IEBAIF9jb250ZXh0X2RlbGV0ZV9zdXJyb3VuZGluZ190ZXh0X2NiIChJQnUKLSAgICAgICAg ICAgICAgICAgcHJpdi0+c2VhdC0+aW5wdXRfbWV0aG9kX3YyLAotICAgICAgICAgICAgICAgICBi ZWZvcmVfbGVuZ3RoLAotICAgICAgICAgICAgICAgICBhZnRlcl9sZW5ndGgpOwotLSAgICAgICAg endwX2lucHV0X21ldGhvZF92Ml9jb21taXQgKHByaXYtPnNlYXQtPmlucHV0X21ldGhvZF92Miwg cHJpdi0+c2VyaWFsKTsKLSsgICAgICAgIHp3cF9pbnB1dF9tZXRob2RfdjJfY29tbWl0IChwcml2 LT5zZWF0LT5pbnB1dF9tZXRob2RfdjIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHJpdi0+aW1fc2VyaWFsKTsKLSAgICAgICAgIGJyZWFrOwotICAgICBkZWZhdWx0Ogot ICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7Ci1AQCAtODUxLDcgKzg1OCw3IEBAIGNv bnRleHRfY29tbWl0X3N0YXRlX3YxICh2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICpkYXRhLAotICAgICBJQnVzV2F5bGFuZElNUHJpdmF0ZSAqcHJpdjsKLSAgICAgZ19yZXR1cm5f aWZfZmFpbCAoSUJVU19JU19XQVlMQU5EX0lNICh3bGltKSk7Ci0gICAgIHByaXYgPSBpYnVzX3dh eWxhbmRfaW1fZ2V0X2luc3RhbmNlX3ByaXZhdGUgKHdsaW0pOwotLSAgICBwcml2LT5zZXJpYWwg PSBzZXJpYWw7Ci0rICAgIHByaXYtPmltX3NlcmlhbCA9IHNlcmlhbDsKLSB9Ci0gCi0gCi1AQCAt MTE1MSw3ICsxMTU4LDcgQEAgX3Byb2Nlc3Nfa2V5X2V2ZW50X2RvbmUgKEdPYmplY3QgICAgICAq b2JqZWN0LAotICAgICAvKiBDaGVjayByZXRyYWwgZnJvbSBpYnVzX3dheWxhbmRfaW1fcG9zdF9r ZXkoKSAqLwotICAgICBpZiAocHJpdi0+aWJ1c2NvbnRleHQgJiYgIXJldHZhbCkgewotICAgICAg ICAgaWJ1c193YXlsYW5kX2ltX2tleSAoZXZlbnQtPndsaW0sCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBldmVudC0+c2VyaWFsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZXZlbnQtPmtleV9zZXJpYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+ dGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5rZXksCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+c3RhdGUpOwotQEAgLTEyMzQsNyArMTI0MSw3 IEBAIF9wcm9jZXNzX2tleV9ldmVudF9zeW5jIChJQnVzV2F5bGFuZElNICAgICAgICp3bGltLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHZhbCk7Ci0gICAgIGlm ICghcmV0dmFsKSB7Ci0gICAgICAgICBpYnVzX3dheWxhbmRfaW1fa2V5ICh3bGltLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnNlcmlhbCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGV2ZW50LT5rZXlfc2VyaWFsLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXZlbnQtPnRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+ a2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnN0YXRlKTsKLUBAIC0x MjY0LDcgKzEyNzEsNyBAQCBfcHJvY2Vzc19rZXlfZXZlbnRfYXN5bmMgKElCdXNXYXlsYW5kSU0g ICAgICAgKndsaW0sCi0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAgICAgYXN5bmNfZXZlbnQt PmNvbnRleHQgPSBwcml2LT5jb250ZXh0OwotLSAgICBhc3luY19ldmVudC0+c2VyaWFsID0gZXZl bnQtPnNlcmlhbDsKLSsgICAgYXN5bmNfZXZlbnQtPmtleV9zZXJpYWwgPSBldmVudC0+a2V5X3Nl cmlhbDsKLSAgICAgYXN5bmNfZXZlbnQtPnRpbWUgPSBldmVudC0+dGltZTsKLSAgICAgYXN5bmNf ZXZlbnQtPmtleSA9IGV2ZW50LT5rZXk7Ci0gICAgIGFzeW5jX2V2ZW50LT5tb2RpZmllcnMgPSBl dmVudC0+bW9kaWZpZXJzICYgfklCVVNfUkVMRUFTRV9NQVNLOwotQEAgLTEzMzYsNyArMTM0Myw3 IEBAIF9wcm9jZXNzX2tleV9ldmVudF9oeWJyaWRfYXN5bmMgKElCdXNXYXlsYW5kSU0gICAgICAg KndsaW0sCi0gICAgIH0KLSAgICAgaWYgKHByaXYtPmlidXNjb250ZXh0ICYmICFhc3luY19ldmVu dC0+cmV0dmFsKSB7Ci0gICAgICAgICBpYnVzX3dheWxhbmRfaW1fa2V5ICh3bGltLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnNlcmlhbCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGV2ZW50LT5rZXlfc2VyaWFsLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXZlbnQtPnRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+ a2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnN0YXRlKTsKLUBAIC0x NTA2LDcgKzE1MTMsNyBAQCBrZXlfZXZlbnRfY2hlY2tfcmVwZWF0IChJQnVzV2F5bGFuZElNICAg ICAgICp3bGltLAotIHN0YXRpYyB2b2lkCi0gaW5wdXRfbWV0aG9kX2tleWJvYXJkX2tleSAodm9p ZCAgICAgICAgICAgICAgICAgICAgICAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgendwX2tleWJvYXJkX3VuaW9uICprZXlib2FyZCwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICBzZXJpYWwsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAga2V5X3NlcmlhbCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICB0 aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAg ICAgIGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAg ICAgICAgICBzdGF0ZSkKLUBAIC0xNTI4LDExICsxNTM1LDExIEBAIGlucHV0X21ldGhvZF9rZXli b2FyZF9rZXkgKHZvaWQgICAgICAgICAgICAgICAgICAgICAgKmRhdGEsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSk7Ci0gICAg ICAgICBpZiAoIXJldHZhbCkKLS0gICAgICAgICAgICBpYnVzX3dheWxhbmRfaW1fa2V5ICh3bGlt LCBzZXJpYWwsIHRpbWUsIGtleSwgc3RhdGUpOwotKyAgICAgICAgICAgIGlidXNfd2F5bGFuZF9p bV9rZXkgKHdsaW0sIGtleV9zZXJpYWwsIHRpbWUsIGtleSwgc3RhdGUpOwotICAgICAgICAgcmV0 dXJuOwotICAgICB9Ci0gCi0tICAgIGV2ZW50LnNlcmlhbCA9IHNlcmlhbDsKLSsgICAgZXZlbnQu a2V5X3NlcmlhbCA9IGtleV9zZXJpYWw7Ci0gICAgIGV2ZW50LnRpbWUgPSB0aW1lOwotICAgICBl dmVudC5rZXkgPSBrZXk7Ci0gICAgIGV2ZW50LnN0YXRlID0gc3RhdGU7Ci1AQCAtMTU2Myw3ICsx NTcwLDcgQEAgaW5wdXRfbWV0aG9kX2tleWJvYXJkX2tleSAodm9pZCAgICAgICAgICAgICAgICAg ICAgICAqZGF0YSwKLSBzdGF0aWMgdm9pZAotIGlucHV0X21ldGhvZF9rZXlib2FyZF9tb2RpZmll cnMgKHZvaWQgICAgICAgICAgICAgICAgICAgICAgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHp3cF9rZXlib2FyZF91bmlvbiAqa2V5Ym9hcmQsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAg c2VyaWFsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAg ICAgICAgICAgICAgIGtleV9zZXJpYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgbW9kc19kZXByZXNzZWQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgbW9kc19s YXRjaGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAg ICAgICAgICAgICAgIG1vZHNfbG9ja2VkLAotQEAgLTE2MDcsNyArMTYxNCw3IEBAIGlucHV0X21l dGhvZF9rZXlib2FyZF9tb2RpZmllcnMgKHZvaWQgICAgICAgICAgICAgICAgICAgICAgKmRhdGEs Ci0gCi0gICAgIHN3aXRjaCAocHJpdi0+dmVyc2lvbikgewotICAgICBjYXNlIElOUFVUX01FVEhP RF9WMToKLS0gICAgICAgIHp3cF9pbnB1dF9tZXRob2RfY29udGV4dF92MV9tb2RpZmllcnMgKHBy aXYtPmNvbnRleHQsIHNlcmlhbCwKLSsgICAgICAgIHp3cF9pbnB1dF9tZXRob2RfY29udGV4dF92 MV9tb2RpZmllcnMgKHByaXYtPmNvbnRleHQsIGtleV9zZXJpYWwsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RzX2RlcHJlc3NlZCwgbW9kc19sYXRj aGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9k c19sb2NrZWQsIGdyb3VwKTsKLSAgICAgICAgIGJyZWFrOwotQEAgLTE2NTksMjEgKzE2NjYsMjEg QEAgaW5wdXRfbWV0aG9kX2tleWJvYXJkX2tleW1hcF92MSAodm9pZCAgICAgICAgICAgICAgICpk YXRhLAotIHN0YXRpYyB2b2lkCi0gaW5wdXRfbWV0aG9kX2tleWJvYXJkX2tleV92MSAodm9pZCAg ICAgICAgICAgICAgICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCB3bF9rZXlib2FyZCAqa2V5Ym9hcmRfdjEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgICAgICAgICAgICBzZXJpYWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgICAgICAgICAgICBrZXlfc2VyaWFsLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgdGltZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAgIGtleSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAgIHN0YXRlKQotIHsKLSAgICAgc3RydWN0 IHp3cF9rZXlib2FyZF91bmlvbiBrZXlib2FyZDsKLSAgICAga2V5Ym9hcmQudS5rZXlib2FyZF92 MSA9IGtleWJvYXJkX3YxOwotLSAgICBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRfa2V5IChkYXRhLCAm a2V5Ym9hcmQsIHNlcmlhbCwgdGltZSwga2V5LCBzdGF0ZSk7Ci0rICAgIGlucHV0X21ldGhvZF9r ZXlib2FyZF9rZXkgKGRhdGEsICZrZXlib2FyZCwga2V5X3NlcmlhbCwgdGltZSwga2V5LCBzdGF0 ZSk7Ci0gfQotIAotIAotIHN0YXRpYyB2b2lkCi0gaW5wdXRfbWV0aG9kX2tleWJvYXJkX21vZGlm aWVyc192MSAodm9pZCAgICAgICAgICAgICAgICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB3bF9rZXlib2FyZCAqa2V5Ym9hcmRfdjEsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgICAgICBzZXJpYWws Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgICAg ICBrZXlfc2VyaWFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90ICAgICAgICAgICAgbW9kc19kZXByZXNzZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDMyX3QgICAgICAgICAgICBtb2RzX2xhdGNoZWQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgICAgICBtb2RzX2xvY2tl ZCwKLUBAIC0xNjgzLDcgKzE2OTAsNyBAQCBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRfbW9kaWZpZXJz X3YxICh2b2lkICAgICAgICAgICAgICAgKmRhdGEsCi0gICAgIGtleWJvYXJkLnUua2V5Ym9hcmRf djEgPSBrZXlib2FyZF92MTsKLSAgICAgaW5wdXRfbWV0aG9kX2tleWJvYXJkX21vZGlmaWVycyAo ZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtleWJvYXJkLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWwsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9zZXJpYWwsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1vZHNfZGVwcmVzc2VkLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtb2RzX2xhdGNoZWQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1vZHNfbG9ja2VkLAotQEAgLTE3MjEsMTQgKzE3MjgsMTQgQEAgc3Rh dGljIHZvaWQKLSBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRfa2V5X3YyICh2b2lkICAgICpkYXRhLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB6d3BfaW5wdXRfbWV0aG9kX2tl eWJvYXJkX2dyYWJfdjIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpr ZXlib2FyZF92MiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzZXJp YWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qga2V5X3NlcmlhbCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0aW1lLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGtleSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCBzdGF0ZSkKLSB7Ci0gICAgIHN0cnVjdCB6d3Bfa2V5Ym9hcmRf dW5pb24ga2V5Ym9hcmQ7Ci0gICAgIGtleWJvYXJkLnUua2V5Ym9hcmRfdjIgPSBrZXlib2FyZF92 MjsKLS0gICAgaW5wdXRfbWV0aG9kX2tleWJvYXJkX2tleSAoZGF0YSwgJmtleWJvYXJkLCBzZXJp YWwsIHRpbWUsIGtleSwgc3RhdGUpOwotKyAgICBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRfa2V5IChk YXRhLCAma2V5Ym9hcmQsIGtleV9zZXJpYWwsIHRpbWUsIGtleSwgc3RhdGUpOwotIH0KLSAKLSAK LUBAIC0xNzM2LDcgKzE3NDMsNyBAQCBzdGF0aWMgdm9pZAotIGlucHV0X21ldGhvZF9rZXlib2Fy ZF9tb2RpZmllcnNfdjIgKHZvaWQgICAgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHp3cF9pbnB1dF9tZXRob2Rfa2V5Ym9hcmRfZ3JhYl92MgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmtleWJvYXJkX3YyLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNlcmlhbCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBrZXlfc2VyaWFsLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1vZHNfZGVwcmVz c2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1vZHNf bGF0Y2hlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBt b2RzX2xvY2tlZCwKLUBAIC0xNzQ2LDcgKzE3NTMsNyBAQCBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRf bW9kaWZpZXJzX3YyICh2b2lkICAgICpkYXRhLAotICAgICBrZXlib2FyZC51LmtleWJvYXJkX3Yy ID0ga2V5Ym9hcmRfdjI7Ci0gICAgIGlucHV0X21ldGhvZF9rZXlib2FyZF9tb2RpZmllcnMgKGRh dGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrZXlib2FyZCwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfc2VyaWFsLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtb2RzX2RlcHJlc3NlZCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbW9kc19sYXRjaGVkLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtb2RzX2xvY2tlZCwKLUBAIC0xODc1LDcgKzE4ODIsNyBAQCBpbnB1dF9t ZXRob2RfYWN0aXZhdGUgKHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEs Ci0gCi0gICAgIHByaXYtPmNvbnRleHQgPSBjb250ZXh0OwotICAgICBpZiAoY29udGV4dCkKLS0g ICAgICAgIHByaXYtPnNlcmlhbCA9IDA7Ci0rICAgICAgICBwcml2LT5pbV9zZXJpYWwgPSAwOwot IAotICAgICBzd2l0Y2ggKHByaXYtPnZlcnNpb24pIHsKLSAgICAgY2FzZSBJTlBVVF9NRVRIT0Rf VjE6Ci1AQCAtMjA4OCw5ICsyMDk1LDI2IEBAIGlucHV0X21ldGhvZF9kb25lX3YyICh2b2lkICAg ICAgICAgICAgICAgICAgICAgICAqZGF0YSwKLSAKLSAgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJV U19JU19XQVlMQU5EX0lNICh3bGltKSk7Ci0gICAgIHByaXYgPSBpYnVzX3dheWxhbmRfaW1fZ2V0 X2luc3RhbmNlX3ByaXZhdGUgKHdsaW0pOwotLSAgICBwcml2LT5zZXJpYWwrKzsKLSsgICAgcHJp di0+aW1fc2VyaWFsKys7Ci0gICAgIGlucHV0X21ldGhvZC51LmlucHV0X21ldGhvZF92MiA9IGlu cHV0X21ldGhvZF92MjsKLSAKLSsgICAgLyogR2hvc3R0eSByZXF1aXJlcyB0byByZWNlaXZlIHRo ZSAnaW1fcHJlZWRpdF9lbmQnIHNpZ25hbCB3aXRoCi0rICAgICAqIHp3cF9pbnB1dF9tZXRob2Rf djJfc2V0X3ByZWVkaXRfc3RyaW5nKCkgdG8gcmVjb3ZlciB0aGUgJ2ltX2NvbW1pdCcKLSsgICAg ICogc2lnbmFsIGJ1dCBHdGtJTUNvbnRleHRXYXlsYW5kOjp0ZXh0X2lucHV0X3ByZWVkaXRfYXBw bHkoKSBjYW4gZW1pdAotKyAgICAgKiB0aGUgJ3ByZWVkaXQtZW5kJyBzaWduYWwgaW4gY2FzZSB0 aGF0Ci0rICAgICAqIEd0a0lNQ29udGV4dFdheWxhbmQtPmN1cnJlbnRfcHJlZWRpdC50ZXh0IGlz ICVOVUxMIGFuZCBpdCBoYXBwZW5zCi0rICAgICAqIGlmIHp3cF90ZXh0X2lucHV0X3YzX2xpc3Rl bmVyLmRvbmUgaXMgZW1pdHRlZC4KLSsgICAgICogVG8gbWFrZSBzdXJlIHp3cF90ZXh0X2lucHV0 X3YzX2xpc3RlbmVyLmRvbmUsCi0rICAgICAqIHp3cF9pbnB1dF9tZXRob2RfdjJfY29tbWl0KCkg aXMgY2FsbGVkIGFmdGVyIHRoZSBpbV9zZXJpYWwgaXMgYnVtcGVkLgotKyAgICAgKi8KLSsgICAg aWYgKHByaXYtPmhpZGluZ19wcmVlZGl0X3RleHQgJiYKLSsgICAgICAgICFwcml2LT5zZWF0LT5w ZW5kaW5nX2FjdGl2YXRlICYmCi0rICAgICAgICBwcml2LT5zZWF0LT5hY3RpdmUpIHsKLSsgICAg ICAgIHp3cF9pbnB1dF9tZXRob2RfdjJfY29tbWl0IChwcml2LT5zZWF0LT5pbnB1dF9tZXRob2Rf djIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+aW1fc2VyaWFs KTsKLSsgICAgICAgIHByaXYtPmhpZGluZ19wcmVlZGl0X3RleHQgPSBGQUxTRTsKLSsgICAgfQot KwotICAgICBpZiAocHJpdi0+c2VhdC0+cGVuZGluZ19hY3RpdmF0ZSAmJiAhcHJpdi0+c2VhdC0+ YWN0aXZlKSB7Ci0gICAgICAgICBwcml2LT5zZWF0LT5hY3RpdmUgPSBUUlVFOwotICAgICAgICAg aW5wdXRfbWV0aG9kX2FjdGl2YXRlIChkYXRhLCAmaW5wdXRfbWV0aG9kLCBOVUxMKTsKLUBAIC0y MTY5LDcgKzIxOTMsNyBAQCByZWdpc3RyeV9oYW5kbGVfZ2xvYmFsICh2b2lkICAgICAgICAgICAg ICAgKmRhdGEsCi0gICAgICAgICAgICAgICAgICBpbnRlcmZhY2UsIG5hbWUsIHZlcnNpb24pOwot ICAgICAgICAgZmZsdXNoIChwcml2LT5sb2cpOwotICAgICB9Ci0tICAgIHByaXYtPnNlcmlhbCA9 IDA7Ci0rICAgIHByaXYtPmltX3NlcmlhbCA9IDA7Ci0gICAgIGlmICghZ19zdHJjbXAwIChpbnRl cmZhY2UsIHp3cF9pbnB1dF9tZXRob2RfbWFuYWdlcl92Ml9pbnRlcmZhY2UubmFtZSkpIHsKLSAg ICAgICAgIHByaXYtPnZlcnNpb24gPSBJTlBVVF9NRVRIT0RfVjI7Ci0gICAgICAgICBwcml2LT5p bnB1dF9tZXRob2RfbWFuYWdlcl92MiA9Ci0tLSAKLTIuNTIuMAotCi1Gcm9tIDYzYmJlMGI0MzQw OGExMzA4YmU3OTdjZmFiNzljOWQ1NGJkMWMxNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDgg SmFuIDIwMjYgMTk6NDg6MzUgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIHVpL2d0azMvZXh0 ZW5zaW9uOiBGaXggYXNzZXJ0aW9uIGluIHBhbmVsX2JpbmRpbmdfY29uc3RydWN0KCkKLQotQ2hl Y2sgbV9pYnVzIGluIGV4dGVuc2lvbi52YWxhOmJ1c19uYW1lX2FjcXVpcmVkX2NiKCkuCi0KLUJV Rz1yaGJ6IzE3OTcxMjAKLS0tLQotIHVpL2d0azMvZXh0ZW5zaW9uLnZhbGEgfCA0ICsrKysKLSAx IGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS91aS9ndGszL2V4 dGVuc2lvbi52YWxhIGIvdWkvZ3RrMy9leHRlbnNpb24udmFsYQotaW5kZXggNWNkMWE2YWQuLjNh Y2Q3NmVhIDEwMDY0NAotLS0tIGEvdWkvZ3RrMy9leHRlbnNpb24udmFsYQotKysrIGIvdWkvZ3Rr My9leHRlbnNpb24udmFsYQotQEAgLTczLDYgKzczLDEwIEBAIGNsYXNzIEV4dGVuc2lvbkd0ayA6 IEd0ay5BcHBsaWNhdGlvbiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJpbmcgICAgICAgICBzaWduYWxfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFZhcmlhbnQgICAgICAgIHBhcmFtZXRlcnMpIHsKLSAgICAgICAgIGRlYnVn KCJzaWduYWxfbmFtZSA9ICVzIiwgc2lnbmFsX25hbWUpOwotKyAgICAgICAgLyogcmhieiMxNzk3 MTIwIEZpeCBhc3NlcnQoYnVzLmlzX2Nvbm5lY3RlZCgpKSBpbgotKyAgICAgICAgICogcGFuZWxf YmluZGluZ19jb25zdHJ1Y3QoKQotKyAgICAgICAgICovCi0rICAgICAgICByZXR1cm5faWZfZmFp bChtX2J1cy5pc19jb25uZWN0ZWQoKSk7Ci0gICAgICAgICBtX3BhbmVsID0gbmV3IFBhbmVsQmlu ZGluZyhtX2J1cywgdGhpcyk7Ci0gICAgICAgICBtX3BhbmVsLmxvYWRfc2V0dGluZ3MoKTsKLSAg ICAgfQotLS0gCi0yLjUyLjAKLQotRnJvbSBlODYyOGY1MDY0MDU2Nzg5MGUwOGQyZTVmYjAyMzBl ODkxYmJlMGZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWth by5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogVGh1LCA4IEphbiAyMDI2IDE5OjUyOjEyICsw OTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSB1aS9ndGszOiBGaXggU0VHViB3aXRoIGRvdWJsZSBi dXNfbmFtZV9hY3F1aXJlZF9jYigpCi0KLVdoZW4gUGFuZWxCaW5kaW5nKCkgaXMgY2FsbGVkIHR3 aWNlLCBnX2RidXNfY29ubmVjdGlvbl9yZWdpc3Rlcl9vYmplY3QoKQotaXMgZmFpbGVkIGluIGli dXNfc2VydmljZV9yZWdpc3RlcigpIGR1ZSB0byB0aGUgZHVwbGljYXRlZCBvYmplY3QgcGF0aAot YW5kIGl0IGNhbGxzIHVubmVjZXNzYXJ5IGdfb2JqZWN0X3VucmVmKCkgYWx0aG91Z2ggZ19vYmpl Y3RfdW5yZWYoKSBpcwotY2FsbGVkIGluIGdfZGJ1c19jb25uZWN0aW9uX3JlZ2lzdGVyX29iamVj dCgpIGFuZCBpdCBjYXVzZXMgYSBTRUdWLgotCi1CdXQgQHVzZXJfZGF0YV9mcmVlX2Z1bmMgaW4g Z19kYnVzX2Nvbm5lY3Rpb25fcmVnaXN0ZXJfb2JqZWN0KCkgaXMgbm90Ci1jYWxsZWQgd2l0aCBn X2RidXNfY29ubmVjdGlvbl91bnJlZ2lzdGVyX29iamVjdCgpIGltbWVkaWF0ZWx5IGFuZCBJJ2QK LXRoaW5rIG5vdCB0byB1c2UgQHVzZXJfZGF0YV9mcmVlX2Z1bmMuCi0KLUJVRz1yaGJ6IzI0MTk0 NjkKLS0tLQotIHNyYy9pYnVzc2VydmljZS5jICAgICAgICB8IDE4ICsrKysrKysrKysrKysrKyst LQotIHVpL2d0azMvYXBwbGljYXRpb24udmFsYSB8IDE2ICsrKysrKysrKysrKysrLS0KLSB1aS9n dGszL2V4dGVuc2lvbi52YWxhICAgfCAxNiArKysrKysrKysrKysrKy0tCi0gMyBmaWxlcyBjaGFu Z2VkLCA0NCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3Jj L2lidXNzZXJ2aWNlLmMgYi9zcmMvaWJ1c3NlcnZpY2UuYwotaW5kZXggNTFiZDJlZTQuLjNjN2Mw NGE0IDEwMDY0NAotLS0tIGEvc3JjL2lidXNzZXJ2aWNlLmMKLSsrKyBiL3NyYy9pYnVzc2Vydmlj ZS5jCi1AQCAtMiw3ICsyLDcgQEAKLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGlidXMg LSBUaGUgSW5wdXQgQnVzCi0gICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTUgUGVuZyBIdWFuZyA8 c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjMgVGFr YW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChD KSAyMDE1LTIwMjYgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0g ICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgUmVkIEhhdCwgSW5jLgotICAqCi0gICogVGhpcyBs aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot QEAgLTQ5NSw5ICs0OTUsMTUgQEAgaWJ1c19zZXJ2aWNlX3VucmVnaXN0ZXJfY2IgKEdEQnVzQ29u bmVjdGlvbiAgICAqY29ubmVjdGlvbiwKLSAgICAgZ3VpbnQgKnAgPSBpZHM7Ci0gICAgIHdoaWxl ICgqcCAhPSAwKSB7Ci0gICAgICAgICBnX2RidXNfY29ubmVjdGlvbl91bnJlZ2lzdGVyX29iamVj dCAoY29ubmVjdGlvbiwgKnArKyk7Ci0rICAgICAgICAvKiBnX2RidXNfY29ubmVjdGlvbl9yZWdp c3Rlcl9vYmplY3QoY29ubmVjdGlvbikgY2FsbHMKLSsgICAgICAgICAqIGdfb2JqZWN0X3JlZihz ZXJ2aWNlKS4KLSsgICAgICAgICAqLwotKyAgICAgICAgZ19vYmplY3RfdW5yZWYgKHNlcnZpY2Up OwotICAgICB9Ci0gICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyAoY29u bmVjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKGlidXNfc2VydmljZV9j b25uZWN0aW9uX2Nsb3NlZF9jYiksIHNlcnZpY2UpOwotKyAgICAvKiBnX2hhc2hfdGFibGVfaW5z ZXJ0KHNlcnZpY2UtPnByaXYtPnRhYmxlKSBjYWxscyBnX29iamVjdF9yZWYoY29ubmVjdGlvbikK LSsgICAgICovCi0gICAgIGdfb2JqZWN0X3VucmVmIChjb25uZWN0aW9uKTsKLSAgICAgZ19mcmVl IChpZHMpOwotIH0KLUBAIC01NjYsMTIgKzU3MiwxOSBAQCBpYnVzX3NlcnZpY2VfcmVnaXN0ZXIg KElCdXNTZXJ2aWNlICAgICAqc2VydmljZSwKLSAKLSAgICAgYXJyYXkgPSBnX2FycmF5X25ldyAo VFJVRSwgVFJVRSwgc2l6ZW9mIChndWludCkpOwotICAgICB3aGlsZSAoKnAgIT0gTlVMTCkgewot KyAgICAgICAgLyogUHJvYmFibHkgSSB0aGluayBAdXNlcl9kYXRhX2ZyZWVfZnVuYyBpbgotKyAg ICAgICAgICogZ19kYnVzX2Nvbm5lY3Rpb25fcmVnaXN0ZXJfb2JqZWN0KCkgaXMgbm90IHVzZWZ1 bCBpbiB0aGlzIGNhc2UKLSsgICAgICAgICAqIHNpbmNlIHRoZSBmcmVlIGZ1bmMgaXMgbm90IGNh bGxlZCB1bnRpbCB0aGUgQGNvbm5lY3Rpb24gaXMgY2xvc2VkCi0rICAgICAgICAgKiBidXQgdGhl IEBjb25uZWN0aW9uIGlzIHNoYXJlZCB3aXRoIG90aGVyIGluc3RhbmNlcwotKyAgICAgICAgICog c28gaXQgd291bGQgYmUgYmV0dGVyIHRvIGNhbGwgZ19vYmplY3RfdW5yZWYoc2VydmljZSkKLSsg ICAgICAgICAqIGFmdGVyIGdfZGJ1c19jb25uZWN0aW9uX3VucmVnaXN0ZXJfb2JqZWN0KCkgaXMg Y2FsbGVkLgotKyAgICAgICAgICovCi0gICAgICAgICBndWludCBpZCA9IGdfZGJ1c19jb25uZWN0 aW9uX3JlZ2lzdGVyX29iamVjdCAoY29ubmVjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLT5wcml2LT5vYmplY3RfcGF0 aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmaWJ1c19zZXJ2aWNlX2ludGVyZmFjZV92dGFibGUsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19vYmplY3RfcmVmIChzZXJ2aWNl KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoR0Rlc3Ryb3lOb3RpZnkpZ19vYmplY3RfdW5yZWYsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcik7Ci0gICAgICAgICBp ZiAoaWQgIT0gMCkgewotICAgICAgICAgICAgIGdfYXJyYXlfYXBwZW5kX3ZhbCAoYXJyYXksIGlk KTsKLUBAIC01OTQsNiArNjA3LDcgQEAgZXJyb3Jfb3V0OgotICAgICAgICAgZ3VpbnQgKmlkcyA9 IChndWludCopIGFycmF5LT5kYXRhOwotICAgICAgICAgd2hpbGUgKCppZHMgIT0gMCkgewotICAg ICAgICAgICAgIGdfZGJ1c19jb25uZWN0aW9uX3VucmVnaXN0ZXJfb2JqZWN0IChjb25uZWN0aW9u LCAqaWRzKyspOwotKyAgICAgICAgICAgIGdfb2JqZWN0X3VucmVmIChzZXJ2aWNlKTsKLSAgICAg ICAgIH0KLSAgICAgICAgIGdfYXJyYXlfZnJlZSAoYXJyYXksIFRSVUUpOwotICAgICB9Ci1kaWZm IC0tZ2l0IGEvdWkvZ3RrMy9hcHBsaWNhdGlvbi52YWxhIGIvdWkvZ3RrMy9hcHBsaWNhdGlvbi52 YWxhCi1pbmRleCA2NWFiNDNjZi4uZGNhYmM4OTIgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL2FwcGxp Y2F0aW9uLnZhbGEKLSsrKyBiL3VpL2d0azMvYXBwbGljYXRpb24udmFsYQotQEAgLTMsNyArMyw3 IEBACi0gICogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAgKgotICAqIENvcHlyaWdodChjKSAyMDEx IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSAqIENvcHlyaWdodChjKSAy MDE3LTIwMjUgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICog Q29weXJpZ2h0KGMpIDIwMTctMjAyNiBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdt YWlsLmNvbT4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAtOTgsNiArOTgsMTYgQEAgY2xhc3Mg QXBwbGljYXRpb24gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry aW5nICAgICAgICAgc2lnbmFsX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBWYXJpYW50ICAgICAgICBwYXJhbWV0ZXJzKSB7Ci0gICAgICAgICBkZWJ1Zygic2ln bmFsX25hbWUgPSAlcyIsIHNpZ25hbF9uYW1lKTsKLSsgICAgICAgIGlmIChtX3BhbmVsICE9IG51 bGwpIHsKLSsgICAgICAgICAgICAvLyBpYnVzX29iamVjdF9kZXN0cm95KCkgaXMgbmVlZGVkIGJl Y2F1c2UgZ19vYmplY3RfdW5yZWYoKSBpcwotKyAgICAgICAgICAgIC8vIGNhbGxlZCBieSBpYnVz X3NlcnZpY2VfdW5yZWdpc3Rlcl9jYigpIGJ1dCBhbm90aGVyCi0rICAgICAgICAgICAgLy8gZ19v YmplY3RfdW5yZWYoKSBpcyBhbHNvIGNhbGxlZCBieSBnX29iamVjdF9ydW5fZGlzcG9zZSgpCi0r ICAgICAgICAgICAgLy8gYW5kIG9uZSBnX29iamVjdF91bnJlZigpIGlzIG5vdCBuZWVkZWQgYmVj YXVzZSBWYWxhIGNhbGxzIGl0Ci0rICAgICAgICAgICAgLy8gd2l0aCBgbV9wYW5lbCA9IG51bGxg LgotKyAgICAgICAgICAgIG1fcGFuZWwucmVmKCk7Ci0rICAgICAgICAgICAgKChJQnVzLk9iamVj dCltX3BhbmVsKS5kZXN0cm95KCk7Ci0rICAgICAgICAgICAgbV9wYW5lbC5kaXNjb25uZWN0X3Np Z25hbHMoKTsKLSsgICAgICAgIH0KLSAgICAgICAgIG1fcGFuZWwgPSBuZXcgUGFuZWwoYnVzLCBt X2VuYWJsZV93YXlsYW5kX2ltKTsKLSAgICAgICAgIGlmIChtX2xvZyAhPSBudWxsKQotICAgICAg ICAgICAgIG1fcGFuZWwuc2V0X2xvZyhtX2xvZywgbV92ZXJib3NlKTsKLUBAIC0xMjgsNyArMTM4 LDggQEAgY2xhc3MgQXBwbGljYXRpb24gewotICAgICAgICAgLy8gZ19kYnVzX2Nvbm5lY3Rpb25f cmVnaXN0ZXJfb2JqZWN0KCkKLSAgICAgICAgIGRlYnVnKCJzaWduYWxfbmFtZSA9ICVzIiwgc2ln bmFsX25hbWUpOwotIAotLSAgICAgICAgLy8gdW5yZWYgbV9wYW5lbAotKyAgICAgICAgbV9wYW5l bC5yZWYoKTsKLSsgICAgICAgICgoSUJ1cy5PYmplY3QpbV9wYW5lbCkuZGVzdHJveSgpOwotICAg ICAgICAgbV9wYW5lbC5kaXNjb25uZWN0X3NpZ25hbHMoKTsKLSAjaWYgVVNFX0dES19XQVlMQU5E Ci0gICAgICAgICBpZiAobV9yZWFsaXplX3N1cmZhY2VfaWQgIT0gMCkgewotQEAgLTE0NCw2ICsx NTUsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbiB7Ci0gICAgICAgICAgICAgbV9pYnVzX2ZvY3VzX291 dF9pZCA9IDA7Ci0gICAgICAgICB9Ci0gI2VuZGlmCi0rICAgICAgICAvLyB1bnJlZiBtX3BhbmVs Ci0gICAgICAgICBtX3BhbmVsID0gbnVsbDsKLSAgICAgfQotIAotZGlmZiAtLWdpdCBhL3VpL2d0 azMvZXh0ZW5zaW9uLnZhbGEgYi91aS9ndGszL2V4dGVuc2lvbi52YWxhCi1pbmRleCAzYWNkNzZl YS4uN2VlNTRjZDMgMTAwNjQ0Ci0tLS0gYS91aS9ndGszL2V4dGVuc2lvbi52YWxhCi0rKysgYi91 aS9ndGszL2V4dGVuc2lvbi52YWxhCi1AQCAtMyw3ICszLDcgQEAKLSAgKiBpYnVzIC0gVGhlIElu cHV0IEJ1cwotICAqCi0gICogQ29weXJpZ2h0KGMpIDIwMTggUGVuZyBIdWFuZyA8c2hhd24ucC5o dWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0KGMpIDIwMTgtMjAyNSBUYWthbyBGdWppd2Fy YSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQoYykgMjAxOC0yMDI2 IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotICAqCi0gICogVGhp cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v cgotICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKLUBAIC03Nyw2ICs3NywxNiBAQCBjbGFzcyBFeHRlbnNpb25HdGsgOiBHdGsuQXBw bGljYXRpb24gewotICAgICAgICAgICogcGFuZWxfYmluZGluZ19jb25zdHJ1Y3QoKQotICAgICAg ICAgICovCi0gICAgICAgICByZXR1cm5faWZfZmFpbChtX2J1cy5pc19jb25uZWN0ZWQoKSk7Ci0r ICAgICAgICBpZiAobV9wYW5lbCAhPSBudWxsKSB7Ci0rICAgICAgICAgICAgLy8gaWJ1c19vYmpl Y3RfZGVzdHJveSgpIGlzIG5lZWRlZCBiZWNhdXNlIGdfb2JqZWN0X3VucmVmKCkgaXMKLSsgICAg ICAgICAgICAvLyBjYWxsZWQgYnkgaWJ1c19zZXJ2aWNlX3VucmVnaXN0ZXJfY2IoKSBidXQgYW5v dGhlcgotKyAgICAgICAgICAgIC8vIGdfb2JqZWN0X3VucmVmKCkgaXMgYWxzbyBjYWxsZWQgYnkg Z19vYmplY3RfcnVuX2Rpc3Bvc2UoKQotKyAgICAgICAgICAgIC8vIGFuZCBvbmUgZ19vYmplY3Rf dW5yZWYoKSBpcyBub3QgbmVlZGVkIGJlY2F1c2UgVmFsYSBjYWxscyBpdAotKyAgICAgICAgICAg IC8vIHdpdGggYG1fcGFuZWwgPSBudWxsYC4KLSsgICAgICAgICAgICBtX3BhbmVsLnJlZigpOwot KyAgICAgICAgICAgICgoSUJ1cy5PYmplY3QpbV9wYW5lbCkuZGVzdHJveSgpOwotKyAgICAgICAg ICAgIG1fcGFuZWwuZGlzY29ubmVjdF9zaWduYWxzKCk7Ci0rICAgICAgICB9Ci0gICAgICAgICBt X3BhbmVsID0gbmV3IFBhbmVsQmluZGluZyhtX2J1cywgdGhpcyk7Ci0gICAgICAgICBtX3BhbmVs LmxvYWRfc2V0dGluZ3MoKTsKLSAgICAgfQotQEAgLTk1LDggKzEwNSwxMCBAQCBjbGFzcyBFeHRl bnNpb25HdGsgOiBHdGsuQXBwbGljYXRpb24gewotICAgICAgICAgLy8gZ19kYnVzX2Nvbm5lY3Rp b25fcmVnaXN0ZXJfb2JqZWN0KCkKLSAgICAgICAgIGRlYnVnKCJzaWduYWxfbmFtZSA9ICVzIiwg c2lnbmFsX25hbWUpOwotIAotLSAgICAgICAgLy8gdW5yZWYgbV9wYW5lbAotKyAgICAgICAgbV9w YW5lbC5yZWYoKTsKLSsgICAgICAgICgoSUJ1cy5PYmplY3QpbV9wYW5lbCkuZGVzdHJveSgpOwot ICAgICAgICAgbV9wYW5lbC5kaXNjb25uZWN0X3NpZ25hbHMoKTsKLSsgICAgICAgIC8vIHVucmVm IG1fcGFuZWwKLSAgICAgICAgIG1fcGFuZWwgPSBudWxsOwotICAgICB9Ci0gCi0tLSAKLTIuNTIu MAotCg==