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: Neal Gompa To: git-commits@fedoraproject.org Subject: [rpms/ffmpeg] epel9-next: Rebase to 6.1 Date: Mon, 20 Jul 2026 17:31:13 GMT Message-ID: <178456867364.1.14779716794706872580.rpms-ffmpeg-37bbe8c93acc@fedoraproject.org> List-ID: X-Git-Repo: rpms/ffmpeg X-Git-Branch: epel9-next X-Git-Rev: 37bbe8c93acc59886c441bae7515a010ebd2cbf6 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZmZtcGVnCkJyYW5j aCA6IGVwZWw5LW5leHQKQ29tbWl0IDogMzdiYmU4YzkzYWNjNTk4ODZjNDQxYmFlNzUxNWEwMTBl YmQyY2JmNgpBdXRob3IgOiBOZWFsIEdvbXBhIDxuZ29tcGFAZmVkb3JhcHJvamVjdC5vcmc+CkRh dGUgICA6IDIwMjQtMDEtMDRUMTA6NDg6MTgtMDU6MDAKU3RhdHMgIDogKzE0Mi8tNTU0MiBpbiAx MSBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZmZt cGVnL2MvMzdiYmU4YzkzYWNjNTk4ODZjNDQxYmFlNzUxNWEwMTBlYmQyY2JmNj9icmFuY2g9ZXBl bDktbmV4dAoKTG9nOgpSZWJhc2UgdG8gNi4xCgotLS0KZGlmZiAtLWdpdCBhLzAwMDEtYXZmaWx0 ZXItdmZfbGlicGxhY2Viby1yZW1vdmUtZGVwcmVjYXRlZC1maWVsZC5wYXRjaCBiLzAwMDEtYXZm aWx0ZXItdmZfbGlicGxhY2Viby1yZW1vdmUtZGVwcmVjYXRlZC1maWVsZC5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDgxOWFmNC4uMDAwMDAwMAotLS0gYS8wMDAxLWF2Zmls dGVyLXZmX2xpYnBsYWNlYm8tcmVtb3ZlLWRlcHJlY2F0ZWQtZmllbGQucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSw3MyArMCwwIEBACi1Gcm9tIDEyMzEwMDNjM2M2ZDQ4MzlhOWU4MzhkMDZmOGUx NmVlNzY5MDk1OGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWtsYXMgSGFhcyA8 Z2l0QGhhYXNuLmRldj4KLURhdGU6IE1vbiwgMTMgTWFyIDIwMjMgMTQ6MzM6MTYgKzAxMDAKLVN1 YmplY3Q6IFtQQVRDSF0gYXZmaWx0ZXIvdmZfbGlicGxhY2VibzogcmVtb3ZlIGRlcHJlY2F0ZWQg ZmllbGQKLQotVGhpcyBoYXMgbm90IGJlZW4gZnVuY3Rpb25hbCBzaW5jZSBhIHllYXIgYWdvLCBp bmNsdWRpbmcgaW4gb3VyIGN1cnJlbnQKLW1pbmltdW0gZGVwZW5kZW5jeSBvZiBsaWJwbGFjZWJv ICh2NC4xOTIuMCkuIEl0IGFsc28gY2F1c2VzIGJ1aWxkIGVycm9ycwotYWdhaW5zdCBsaWJwbGFj ZWJvIHY2LCBzbyBpdCBuZWVkcyB0byBiZSByZW1vdmVkIGZyb20gdGhlIGNvZGUuIFdlIGNhbgot a2VlcCB0aGUgb3B0aW9uIGFyb3VuZCBmb3Igbm93LCBidXQgaXQgc2hvdWxkIGFsc28gYmUgcmVt b3ZlZCBzb29uLgotCi1TaWduZWQtb2ZmLWJ5OiBOaWtsYXMgSGFhcyA8Z2l0QGhhYXNuLmRldj4K LVNpZ25lZC1vZmYtYnk6IEphbWVzIEFsbWVyIDxqYW1yaWFsQGdtYWlsLmNvbT4KLS0tLQotIGRv Yy9maWx0ZXJzLnRleGkgICAgICAgICAgICB8IDMgLS0tCi0gbGliYXZmaWx0ZXIvdmZfbGlicGxh Y2Viby5jIHwgNyArKysrLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDYg ZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9kb2MvZmlsdGVycy50ZXhpIGIvZG9jL2ZpbHRl cnMudGV4aQotaW5kZXggN2E3YjJiYTRlNzllLi43N2I1OTRmNjljYjEgMTAwNjQ0Ci0tLS0gYS9k b2MvZmlsdGVycy50ZXhpCi0rKysgYi9kb2MvZmlsdGVycy50ZXhpCi1AQCAtMTYyNDIsOSArMTYy NDIsNiBAQCBEaXNhYmxlIGxpbmVhciBsaWdodCBzY2FsaW5nLgotIEBpdGVtIGRpc2FibGVfYnVp bHRpbgotIERpc2FibGUgYnVpbHQtaW4gR1BVIHNhbXBsaW5nIChmb3JjZXMgTFVUKS4KLSAKLS1A aXRlbSBmb3JjZV9pY2NfbHV0Ci0tRm9yY2UgdGhlIHVzZSBvZiBhIGZ1bGwgSUNDIDNETFVUIGZv ciBnYW11dCBtYXBwaW5nLgotLQotIEBpdGVtIGRpc2FibGVfZmJvcwotIEZvcmNpYmx5IGRpc2Fi bGUgRkJPcywgcmVzdWx0aW5nIGluIGxvc3Mgb2YgYWxtb3N0IGFsbCBmdW5jdGlvbmFsaXR5LCBi dXQKLSBvZmZlcmluZyB0aGUgbWF4aW11bSBwb3NzaWJsZSBzcGVlZC4KLWRpZmYgLS1naXQgYS9s aWJhdmZpbHRlci92Zl9saWJwbGFjZWJvLmMgYi9saWJhdmZpbHRlci92Zl9saWJwbGFjZWJvLmMK LWluZGV4IGQ3NTcyMzI4OTA2OS4uNzU3ZGM1MTllOWFkIDEwMDY0NAotLS0tIGEvbGliYXZmaWx0 ZXIvdmZfbGlicGxhY2Viby5jCi0rKysgYi9saWJhdmZpbHRlci92Zl9saWJwbGFjZWJvLmMKLUBA IC05Nyw3ICs5Nyw2IEBAIHR5cGVkZWYgc3RydWN0IExpYnBsYWNlYm9Db250ZXh0IHsKLSAgICAg ZmxvYXQgcG9sYXJfY3V0b2ZmOwotICAgICBpbnQgZGlzYWJsZV9saW5lYXI7Ci0gICAgIGludCBk aXNhYmxlX2J1aWx0aW47Ci0tICAgIGludCBmb3JjZV9pY2NfbHV0OwotICAgICBpbnQgZm9yY2Vf ZGl0aGVyOwotICAgICBpbnQgZGlzYWJsZV9mYm9zOwotIAotQEAgLTEzOSw2ICsxMzgsNyBAQCB0 eXBlZGVmIHN0cnVjdCBMaWJwbGFjZWJvQ29udGV4dCB7Ci0gICAgIGZsb2F0IGRlc2F0X2V4cDsK LSAgICAgaW50IGdhbXV0X3dhcm5pbmc7Ci0gICAgIGludCBnYW11dF9jbGlwcGluZzsKLSsgICAg aW50IGZvcmNlX2ljY19sdXQ7Ci0gI2VuZGlmCi0gCi0gICAgICAvKiBwbF9kaXRoZXJfcGFyYW1z ICovCi1AQCAtNDYzLDcgKzQ2Myw2IEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19mcmFtZXMoQVZGaWx0 ZXJDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqb3V0LCBBVkZyYW1lICppbikKLSAgICAgICAgIC5w b2xhcl9jdXRvZmYgPSBzLT5wb2xhcl9jdXRvZmYsCi0gICAgICAgICAuZGlzYWJsZV9saW5lYXJf c2NhbGluZyA9IHMtPmRpc2FibGVfbGluZWFyLAotICAgICAgICAgLmRpc2FibGVfYnVpbHRpbl9z Y2FsZXJzID0gcy0+ZGlzYWJsZV9idWlsdGluLAotLSAgICAgICAgLmZvcmNlX2ljY19sdXQgPSBz LT5mb3JjZV9pY2NfbHV0LAotICAgICAgICAgLmZvcmNlX2RpdGhlciA9IHMtPmZvcmNlX2RpdGhl ciwKLSAgICAgICAgIC5kaXNhYmxlX2Zib3MgPSBzLT5kaXNhYmxlX2Zib3MsCi0gICAgIH07Ci1A QCAtODU1LDcgKzg1NCw5IEBAIHN0YXRpYyBjb25zdCBBVk9wdGlvbiBsaWJwbGFjZWJvX29wdGlv bnNbXSA9IHsKLSAgICAgeyAicG9sYXJfY3V0b2ZmIiwgIlBvbGFyIExVVCBjdXRvZmYiLCBPRkZT RVQocG9sYXJfY3V0b2ZmKSwgQVZfT1BUX1RZUEVfRkxPQVQsIHsuZGJsID0gMH0sIDAuMCwgMS4w LCBEWU5BTUlDIH0sCi0gICAgIHsgImRpc2FibGVfbGluZWFyIiwgIkRpc2FibGUgbGluZWFyIHNj YWxpbmciLCBPRkZTRVQoZGlzYWJsZV9saW5lYXIpLCBBVl9PUFRfVFlQRV9CT09MLCB7Lmk2NCA9 IDB9LCAwLCAxLCBEWU5BTUlDIH0sCi0gICAgIHsgImRpc2FibGVfYnVpbHRpbiIsICJEaXNhYmxl IGJ1aWx0LWluIHNjYWxlcnMiLCBPRkZTRVQoZGlzYWJsZV9idWlsdGluKSwgQVZfT1BUX1RZUEVf Qk9PTCwgey5pNjQgPSAwfSwgMCwgMSwgRFlOQU1JQyB9LAotLSAgICB7ICJmb3JjZV9pY2NfbHV0 IiwgIkZvcmNlIHRoZSB1c2Ugb2YgYSBmdWxsIElDQyAzRExVVCBmb3IgY29sb3IgbWFwcGluZyIs IE9GRlNFVChmb3JjZV9pY2NfbHV0KSwgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQgPSAwfSwgMCwg MSwgRFlOQU1JQyB9LAotKyNpZiBGRl9BUElfTElCUExBQ0VCT19PUFRTCi0rICAgIHsgImZvcmNl X2ljY19sdXQiLCAiRGVwcmVjYXRlZCwgZG9lcyBub3RoaW5nIiwgT0ZGU0VUKGZvcmNlX2ljY19s dXQpLCBBVl9PUFRfVFlQRV9CT09MLCB7Lmk2NCA9IDB9LCAwLCAxLCBEWU5BTUlDIHwgQVZfT1BU X0ZMQUdfREVQUkVDQVRFRCB9LAotKyNlbmRpZgotICAgICB7ICJmb3JjZV9kaXRoZXIiLCAiRm9y Y2UgZGl0aGVyaW5nIiwgT0ZGU0VUKGZvcmNlX2RpdGhlciksIEFWX09QVF9UWVBFX0JPT0wsIHsu aTY0ID0gMH0sIDAsIDEsIERZTkFNSUMgfSwKLSAgICAgeyAiZGlzYWJsZV9mYm9zIiwgIkZvcmNl LWRpc2FibGUgRkJPcyIsIE9GRlNFVChkaXNhYmxlX2Zib3MpLCBBVl9PUFRfVFlQRV9CT09MLCB7 Lmk2NCA9IDB9LCAwLCAxLCBEWU5BTUlDIH0sCi0gICAgIHsgTlVMTCB9LAotLS0gCi0yLjM5LjIK LQoKZGlmZiAtLWdpdCBhLzAwMDEtYXZmaWx0ZXItdmZfbGlicGxhY2Viby13cmFwLWRlcHJlY2F0 ZWQtb3B0cy1pbi1GRl9BUC5wYXRjaCBiLzAwMDEtYXZmaWx0ZXItdmZfbGlicGxhY2Viby13cmFw LWRlcHJlY2F0ZWQtb3B0cy1pbi1GRl9BUC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMmQyYTkzOS4uMDAwMDAwMAotLS0gYS8wMDAxLWF2ZmlsdGVyLXZmX2xpYnBsYWNlYm8t d3JhcC1kZXByZWNhdGVkLW9wdHMtaW4tRkZfQVAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3 NiArMCwwIEBACi1Gcm9tIDExZWNhNjAxOGM0MGY1ZWJlNmFmOTNjYmM0YjRkY2U0NDdkOGIzYmMg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWtsYXMgSGFhcyA8Z2l0QGhhYXNuLmRl dj4KLURhdGU6IE1vbiwgMTMgTWFyIDIwMjMgMTU6MTA6MjYgKzAxMDAKLVN1YmplY3Q6IFtQQVRD SF0gYXZmaWx0ZXIvdmZfbGlicGxhY2Vibzogd3JhcCBkZXByZWNhdGVkIG9wdHMgaW4gRkZfQVBJ IGRlZmluZQotCi1TaWduZWQtb2ZmLWJ5OiBOaWtsYXMgSGFhcyA8Z2l0QGhhYXNuLmRldj4KLVNp Z25lZC1vZmYtYnk6IEphbWVzIEFsbWVyIDxqYW1yaWFsQGdtYWlsLmNvbT4KLS0tLQotIGxpYmF2 ZmlsdGVyL3ZlcnNpb25fbWFqb3IuaCB8IDIgKysKLSBsaWJhdmZpbHRlci92Zl9saWJwbGFjZWJv LmMgfCA4ICsrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCi0KLWRp ZmYgLS1naXQgYS9saWJhdmZpbHRlci92ZXJzaW9uX21ham9yLmggYi9saWJhdmZpbHRlci92ZXJz aW9uX21ham9yLmgKLWluZGV4IDg5OWRmZGIyN2RiYS4uMWRlY2M0MDEyZWUwIDEwMDY0NAotLS0t IGEvbGliYXZmaWx0ZXIvdmVyc2lvbl9tYWpvci5oCi0rKysgYi9saWJhdmZpbHRlci92ZXJzaW9u X21ham9yLmgKLUBAIC0zNSw0ICszNSw2IEBACi0gICogdGhlIHB1YmxpYyBBUEkgYW5kIG1heSBj aGFuZ2UsIGJyZWFrIG9yIGRpc2FwcGVhciBhdCBhbnkgdGltZS4KLSAgKi8KLSAKLSsjZGVmaW5l IEZGX0FQSV9MSUJQTEFDRUJPX09QVFMgKExJQkFWRklMVEVSX1ZFUlNJT05fTUFKT1IgPCAxMCkK LSsKLSAjZW5kaWYgLyogQVZGSUxURVJfVkVSU0lPTl9NQUpPUl9IICovCi1kaWZmIC0tZ2l0IGEv bGliYXZmaWx0ZXIvdmZfbGlicGxhY2Viby5jIGIvbGliYXZmaWx0ZXIvdmZfbGlicGxhY2Viby5j Ci1pbmRleCA3Y2Q0OTVkZTI2MTkuLmQ3NTcyMzI4OTA2OSAxMDA2NDQKLS0tLSBhL2xpYmF2Zmls dGVyL3ZmX2xpYnBsYWNlYm8uYwotKysrIGIvbGliYXZmaWx0ZXIvdmZfbGlicGxhY2Viby5jCi1A QCAtMTMyLDExICsxMzIsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgTGlicGxhY2Vib0NvbnRleHQgewot ICAgICBpbnQgaW52ZXJzZV90b25lbWFwcGluZzsKLSAgICAgZmxvYXQgY3Jvc3N0YWxrOwotICAg ICBpbnQgdG9uZW1hcHBpbmdfbHV0X3NpemU7Ci0rCi0rI2lmIEZGX0FQSV9MSUJQTEFDRUJPX09Q VFMKLSAgICAgLyogZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5ICovCi0gICAgIGZsb2F0IGRl c2F0X3N0cjsKLSAgICAgZmxvYXQgZGVzYXRfZXhwOwotICAgICBpbnQgZ2FtdXRfd2FybmluZzsK LSAgICAgaW50IGdhbXV0X2NsaXBwaW5nOwotKyNlbmRpZgotIAotICAgICAgLyogcGxfZGl0aGVy X3BhcmFtcyAqLwotICAgICBpbnQgZGl0aGVyaW5nOwotQEAgLTM4MCw2ICszODMsNyBAQCBzdGF0 aWMgaW50IHByb2Nlc3NfZnJhbWVzKEFWRmlsdGVyQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKm91 dCwgQVZGcmFtZSAqaW4pCi0gICAgICAgICBwbF9yZWN0MmRmX2FzcGVjdF9zZXQoJnRhcmdldC5j cm9wLCBhc3BlY3QsIHMtPnBhZF9jcm9wX3JhdGlvKTsKLSAgICAgfQotIAotKyNpZiBGRl9BUElf TElCUExBQ0VCT19PUFRTCi0gICAgIC8qIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggb2xk ZXIgQVBJICovCi0gICAgIGlmICghdG9uZW1hcHBpbmdfbW9kZSAmJiAocy0+ZGVzYXRfc3RyID49 IDAuMGYgfHwgcy0+ZGVzYXRfZXhwID49IDAuMGYpKSB7Ci0gICAgICAgICBmbG9hdCBzdHIgPSBz LT5kZXNhdF9zdHIgPCAwLjBmID8gMC45ZiA6IHMtPmRlc2F0X3N0cjsKLUBAIC0zOTcsNiArNDAx LDcgQEAgc3RhdGljIGludCBwcm9jZXNzX2ZyYW1lcyhBVkZpbHRlckNvbnRleHQgKmF2Y3R4LCBB VkZyYW1lICpvdXQsIEFWRnJhbWUgKmluKQotICAgICAgICAgZ2FtdXRfbW9kZSA9IFBMX0dBTVVU X1dBUk47Ci0gICAgIGlmIChzLT5nYW11dF9jbGlwcGluZykKLSAgICAgICAgIGdhbXV0X21vZGUg PSBQTF9HQU1VVF9ERVNBVFVSQVRFOwotKyNlbmRpZgotIAotICAgICAvKiBVcGRhdGUgcmVuZGVy IHBhcmFtcyAqLwotICAgICBwYXJhbXMgPSAoc3RydWN0IHBsX3JlbmRlcl9wYXJhbXMpIHsKLUBA IC04MTgsMTEgKzgyMywxNCBAQCBzdGF0aWMgY29uc3QgQVZPcHRpb24gbGlicGxhY2Vib19vcHRp b25zW10gPSB7Ci0gICAgIHsgImludmVyc2VfdG9uZW1hcHBpbmciLCAiSW52ZXJzZSB0b25lIG1h cHBpbmcgKHJhbmdlIGV4cGFuc2lvbikiLCBPRkZTRVQoaW52ZXJzZV90b25lbWFwcGluZyksIEFW X09QVF9UWVBFX0JPT0wsIHsuaTY0ID0gMH0sIDAsIDEsIERZTkFNSUMgfSwKLSAgICAgeyAidG9u ZW1hcHBpbmdfY3Jvc3N0YWxrIiwgIkNyb3NzdGFsayBmYWN0b3IgZm9yIHRvbmUtbWFwcGluZyIs IE9GRlNFVChjcm9zc3RhbGspLCBBVl9PUFRfVFlQRV9GTE9BVCwgey5kYmwgPSAwLjA0fSwgMC4w LCAwLjMwLCBEWU5BTUlDIH0sCi0gICAgIHsgInRvbmVtYXBwaW5nX2x1dF9zaXplIiwgIlRvbmUt bWFwcGluZyBMVVQgc2l6ZSIsIE9GRlNFVCh0b25lbWFwcGluZ19sdXRfc2l6ZSksIEFWX09QVF9U WVBFX0lOVCwgey5pNjQgPSAyNTZ9LCAyLCAxMDI0LCBEWU5BTUlDIH0sCi0rCi0rI2lmIEZGX0FQ SV9MSUJQTEFDRUJPX09QVFMKLSAgICAgLyogZGVwcmVjYXRlZCBvcHRpb25zIGZvciBiYWNrd2Fy ZHMgY29tcGF0aWJpbGl0eSwgZGVmYXVsdGluZyB0byAtMSB0byBub3Qgb3ZlcnJpZGUgdGhlIG5l dyBkZWZhdWx0cyAqLwotICAgICB7ICJkZXNhdHVyYXRpb25fc3RyZW5ndGgiLCAiRGVzYXR1cmF0 aW9uIHN0cmVuZ3RoIiwgT0ZGU0VUKGRlc2F0X3N0ciksIEFWX09QVF9UWVBFX0ZMT0FULCB7LmRi bCA9IC0xLjB9LCAtMS4wLCAxLjAsIERZTkFNSUMgfCBBVl9PUFRfRkxBR19ERVBSRUNBVEVEIH0s Ci0gICAgIHsgImRlc2F0dXJhdGlvbl9leHBvbmVudCIsICJEZXNhdHVyYXRpb24gZXhwb25lbnQi LCBPRkZTRVQoZGVzYXRfZXhwKSwgQVZfT1BUX1RZUEVfRkxPQVQsIHsuZGJsID0gLTEuMH0sIC0x LjAsIDEwLjAsIERZTkFNSUMgfCBBVl9PUFRfRkxBR19ERVBSRUNBVEVEIH0sCi0gICAgIHsgImdh bXV0X3dhcm5pbmciLCAiSGlnaGxpZ2h0IG91dC1vZi1nYW11dCBjb2xvcnMiLCBPRkZTRVQoZ2Ft dXRfd2FybmluZyksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0ID0gMH0sIDAsIDEsIERZTkFNSUMg fCBBVl9PUFRfRkxBR19ERVBSRUNBVEVEIH0sCi0gICAgIHsgImdhbXV0X2NsaXBwaW5nIiwgIkVu YWJsZSBjb2xvcmltZXRyaWMgZ2FtdXQgY2xpcHBpbmciLCBPRkZTRVQoZ2FtdXRfY2xpcHBpbmcp LCBBVl9PUFRfVFlQRV9CT09MLCB7Lmk2NCA9IDB9LCAwLCAxLCBEWU5BTUlDIHwgQVZfT1BUX0ZM QUdfREVQUkVDQVRFRCB9LAotKyNlbmRpZgotIAotICAgICB7ICJkaXRoZXJpbmciLCAiRGl0aGVy IG1ldGhvZCB0byB1c2UiLCBPRkZTRVQoZGl0aGVyaW5nKSwgQVZfT1BUX1RZUEVfSU5ULCB7Lmk2 NCA9IFBMX0RJVEhFUl9CTFVFX05PSVNFfSwgLTEsIFBMX0RJVEhFUl9NRVRIT0RfQ09VTlQgLSAx LCBEWU5BTUlDLCAiZGl0aGVyIiB9LAotICAgICAgICAgeyAibm9uZSIsICJEaXNhYmxlIGRpdGhl cmluZyIsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IC0xfSwgMCwgMCwgU1RBVElDLCAi ZGl0aGVyIiB9LAotLS0gCi0yLjM5LjIKLQoKZGlmZiAtLWdpdCBhLzAwMDEtZmZ0b29scy1mZm1w ZWdfZmlsdGVyLWluaXRpYWxpemUtdGhlLW8tdG8tc2lsZW5jZS10aC5wYXRjaCBiLzAwMDEtZmZ0 b29scy1mZm1wZWdfZmlsdGVyLWluaXRpYWxpemUtdGhlLW8tdG8tc2lsZW5jZS10aC5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODViNDNhNC4uMDAwMDAwMAotLS0gYS8wMDAx LWZmdG9vbHMtZmZtcGVnX2ZpbHRlci1pbml0aWFsaXplLXRoZS1vLXRvLXNpbGVuY2UtdGgucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGEwYTBhODA0OTk4ZGE4ZDFh Mzk3NDc5YzliYWZlYjAwMGU2YmUwODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBK dW4gWmhhbyA8YmFycnlqemhhb0B0ZW5jZW50LmNvbT4KLURhdGU6IFNhdCwgMjUgRmViIDIwMjMg MjE6NTQ6MDAgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gZmZ0b29scy9mZm1wZWdfZmlsdGVyOiBp bml0aWFsaXplIHRoZSAnbycgdG8gc2lsZW5jZSB0aGUKLSB3YXJuaW5nCi0KLXNpbGVuY2UgdGhl IHdhcm5pbmc6IHZhcmlhYmxlICdvJyBpcyB1c2VkIHVuaW5pdGlhbGl6ZWQgd2hlbmV2ZXIKLScm JicgY29uZGl0aW9uIGlzIGZhbHNlCi0KLVNpZ25lZC1vZmYtYnk6IEp1biBaaGFvIDxiYXJyeWp6 aGFvQHRlbmNlbnQuY29tPgotLS0tCi0gZmZ0b29scy9mZm1wZWdfZmlsdGVyLmMgfCAyICstCi0g MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1n aXQgYS9mZnRvb2xzL2ZmbXBlZ19maWx0ZXIuYyBiL2ZmdG9vbHMvZmZtcGVnX2ZpbHRlci5jCi1p bmRleCAxZjViYmY2YzRkLi4zNTA0YTNjYzBhIDEwMDY0NAotLS0tIGEvZmZ0b29scy9mZm1wZWdf ZmlsdGVyLmMKLSsrKyBiL2ZmdG9vbHMvZmZtcGVnX2ZpbHRlci5jCi1AQCAtMzYyLDcgKzM2Miw3 IEBAIGZhaWw6Ci0gCi0gc3RhdGljIGludCBmaWx0ZXJfb3B0X2FwcGx5KEFWRmlsdGVyQ29udGV4 dCAqZiwgY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyICp2YWwpCi0gewotLSAgICBjb25zdCBB Vk9wdGlvbiAqbzsKLSsgICAgY29uc3QgQVZPcHRpb24gKm8gPSBOVUxMOwotICAgICBpbnQgcmV0 OwotIAotICAgICByZXQgPSBhdl9vcHRfc2V0KGYsIGtleSwgdmFsLCBBVl9PUFRfU0VBUkNIX0NI SUxEUkVOKTsKLS0tIAotMi40MS4wCi0KCmRpZmYgLS1naXQgYS8wMDAxLWxhdmMtTWFrZWZpbGUt YnVpbGQtdnVsa2FuLWRlY29kZS1jb2RlLWlmLXZ1bGthbl9hdjEucGF0Y2ggYi8wMDAxLWxhdmMt TWFrZWZpbGUtYnVpbGQtdnVsa2FuLWRlY29kZS1jb2RlLWlmLXZ1bGthbl9hdjEucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIxYWFhZQotLS0gL2Rldi9udWxsCisr KyBiLzAwMDEtbGF2Yy1NYWtlZmlsZS1idWlsZC12dWxrYW4tZGVjb2RlLWNvZGUtaWYtdnVsa2Fu X2F2MS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGI3YzY5NmFmMTA3ODQxMTA4NDRjYzNk YmUwZWMyMTUzODM5M2YzMDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMeW5uZSA8 ZGV2QGx5bm5lLmVlPgorRGF0ZTogU3VuLCAzIERlYyAyMDIzIDIxOjAyOjEzICswMTAwCitTdWJq ZWN0OiBbUEFUQ0hdIGxhdmMvTWFrZWZpbGU6IGJ1aWxkIHZ1bGthbiBkZWNvZGUgY29kZSBpZiB2 dWxrYW5fYXYxIGhhcworIGJlZW4gZW5hYmxlZAorCitGb3Jnb3R0ZW4uCistLS0KKyBsaWJhdmNv ZGVjL01ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2Y29k ZWMvTWFrZWZpbGUKK2luZGV4IDc0ODgwNmU3MDIuLmZkOTg4M2QyY2EgMTAwNjQ0CistLS0gYS9s aWJhdmNvZGVjL01ha2VmaWxlCisrKysgYi9saWJhdmNvZGVjL01ha2VmaWxlCitAQCAtOTk4LDcg Kzk5OCw3IEBAIE9CSlMtJChDT05GSUdfQVYxX0RYVkEyX0hXQUNDRUwpICAgICAgICAgICs9IGR4 dmEyX2F2MS5vCisgT0JKUy0kKENPTkZJR19BVjFfTlZERUNfSFdBQ0NFTCkgICAgICAgICAgKz0g bnZkZWNfYXYxLm8KKyBPQkpTLSQoQ09ORklHX0FWMV9WQUFQSV9IV0FDQ0VMKSAgICAgICAgICAr PSB2YWFwaV9hdjEubworIE9CSlMtJChDT05GSUdfQVYxX1ZEUEFVX0hXQUNDRUwpICAgICAgICAg ICs9IHZkcGF1X2F2MS5vCistT0JKUy0kKENPTkZJR19BVjFfVlVMS0FOX0hXQUNDRUwpICAgICAg ICAgKz0gdnVsa2FuX2F2MS5vCisrT0JKUy0kKENPTkZJR19BVjFfVlVMS0FOX0hXQUNDRUwpICAg ICAgICAgKz0gdnVsa2FuX2RlY29kZS5vIHZ1bGthbl9hdjEubworIE9CSlMtJChDT05GSUdfSDI2 M19WQUFQSV9IV0FDQ0VMKSAgICAgICAgICs9IHZhYXBpX21wZWc0Lm8KKyBPQkpTLSQoQ09ORklH X0gyNjNfVklERU9UT09MQk9YX0hXQUNDRUwpICArPSB2aWRlb3Rvb2xib3gubworIE9CSlMtJChD T05GSUdfSDI2NF9EM0QxMVZBX0hXQUNDRUwpICAgICAgICs9IGR4dmEyX2gyNjQubworLS0gCisy LjQzLjAKKwoKZGlmZiAtLWdpdCBhL0ZGbXBlZy1kZXZlbC12MTAtU3VwcG9ydC1lbmhhbmNlZC1m bHYtaW4tRkZtcGVnLnBhdGNoIGIvRkZtcGVnLWRldmVsLXYxMC1TdXBwb3J0LWVuaGFuY2VkLWZs di1pbi1GRm1wZWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4ZmY3YmIu LjAwMDAwMDAKLS0tIGEvRkZtcGVnLWRldmVsLXYxMC1TdXBwb3J0LWVuaGFuY2VkLWZsdi1pbi1G Rm1wZWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMwICswLDAgQEAKLUZyb20gcGF0Y2h3 b3JrIE1vbiBNYXkgMTUgMDg6MzE6NTYgMjAyMwotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBj aGFyc2V0PSJ1dGYtOCIKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVRyYW5zZmVyLUVuY29k aW5nOiA3Yml0Ci1YLVBhdGNod29yay1TdWJtaXR0ZXI6IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZt cGVnLm9yZz4KLVgtUGF0Y2h3b3JrLUlkOiA0MTYxNQotRGVsaXZlcmVkLVRvOiBmZm1wZWdwYXRj aHdvcmsyQGdtYWlsLmNvbQotUmVjZWl2ZWQ6IGJ5IDIwMDI6YTA1OjZhMjA6YmE5MTpiMDoxMDU6 ZmViOjcxZjIgd2l0aCBTTVRQIGlkCi0gZmIxN2NzcDE0NDM4OTZwemI7Ci0gICAgICAgIE1vbiwg MTUgTWF5IDIwMjMgMDE6MzM6MDEgLTA3MDAgKFBEVCkKLVgtR29vZ2xlLVNtdHAtU291cmNlOiAK LSBBQ0hIVVo2OVBnRzZmcS9LRjZJSWVLb1ZWMjlma2c3Y0FKZm1QRDNMbm5UbUk5WVlWQVBvL2Fs Wm03Qis3ZitGb09nbjlySGRZVW81Ci1YLVJlY2VpdmVkOiBieSAyMDAyOmExNzo5MDc6OTdjYjpi MDo5NmE6NDY1NDo5YTU3IHdpdGggU01UUCBpZAotIGpzMTEtMjAwMjBhMTcwOTA3OTdjYjAwYjAw OTZhNDY1NDlhNTdtcjE2ODY5NzU4ZWpjLjU0LjE2ODQxMzk1ODA5NTE7Ci0gICAgICAgIE1vbiwg MTUgTWF5IDIwMjMgMDE6MzM6MDAgLTA3MDAgKFBEVCkKLUFSQy1TZWFsOiBpPTE7IGE9cnNhLXNo YTI1NjsgdD0xNjg0MTM5NTgwOyBjdj1ub25lOwotICAgICAgICBkPWdvb2dsZS5jb207IHM9YXJj LTIwMTYwODE2OwotICAgICAgICBiPWlPUkVVa3ZXRExxU0psNDB0ck03d2czdWZFUTIzRk9CTGpw c2xYc2RzNUhXeUs0OGIvNzZsRmdRd1JmSEpiSHFiaAotICAgICAgICAgdmM0TjZEb3BCNW1zUmkw VksvcEpuREFkdHV5UVIydHFFZ0x2YlpwSEp6aksxekhVS1JWNUpIbG1WaE52UU9mWVdwTVIKLSAg ICAgICAgIFZMLzFPTW1iVGN0RXphMlo3L1ZZc3JWTEhMeTRRT2xMaDR3L0pkUmN4LzdyaGlPQTFp eHBNeEM0cVViNUlHTWhucWVuCi0gICAgICAgICBQMmREYkFvcWRtR1VadG1BNFZPZnhrZ2tIbklh ZUZ2K1VmZkpHSVpzMUx5YjdjM3p5dHdkcExMaWV6UnpWTFdRYVN0VwotICAgICAgICAgVFZkY0Rr NDVwT3JBMjlsWjQ2VHE4WU5KUDdPNXpmU2V2RklxckI4NW1ValNOb3laaTI0Z3oxOXl4SmEvMDlP MXFiK28KLSAgICAgICAgIHRoenc9PQotQVJDLU1lc3NhZ2UtU2lnbmF0dXJlOiBpPTE7IGE9cnNh LXNoYTI1NjsgYz1yZWxheGVkL3JlbGF4ZWQ7IGQ9Z29vZ2xlLmNvbTsKLSBzPWFyYy0yMDE2MDgx NjsKLSAgICAgICAgaD1zZW5kZXI6ZXJyb3JzLXRvOmNvbnRlbnQtdHJhbnNmZXItZW5jb2Rpbmc6 Y2M6cmVwbHktdG8KLSAgICAgICAgIDpsaXN0LXN1YnNjcmliZTpsaXN0LWhlbHA6bGlzdC1wb3N0 Omxpc3QtYXJjaGl2ZTpsaXN0LXVuc3Vic2NyaWJlCi0gICAgICAgICA6bGlzdC1pZDpwcmVjZWRl bmNlOnN1YmplY3Q6ZmVlZGJhY2staWQ6bWltZS12ZXJzaW9uOnJlZmVyZW5jZXMKLSAgICAgICAg IDppbi1yZXBseS10bzptZXNzYWdlLWlkOmRhdGU6dG86ZnJvbTpkZWxpdmVyZWQtdG87Ci0gICAg ICAgIGJoPVFnN3V1Z082dXFRQ1g2NytTZE5FTFZZRjM5L1dEUFJERnQxK0g3dG9RK3M9OwotICAg ICAgICBiPWIxY3hkcVNWRzFPYzE1N0hsTlVBK0xmSmhrblUvbnIzZzV3blNMWG1QN0RyUitSUXAy Q0Z3R2ZqVit3VGtmV0xvawotICAgICAgICAgV3lkdW1rWUcyYmlPcG1oTWkrbUc0Y2k1V3ZVMlI5 YnYxcXBLR3JlUnBzSW1HbWp1YlF4dTVDQzlnd21lbnozYysxdjgKLSAgICAgICAgIHB1K3FrdzE0 Mnc5dU1lcmpPcGF3Nm9XdmFIcTloV0dWeTZVbmkzM0FxTUpoZmo5V3FTd0JDZXprNjJrcnh6QmFy L1ZOCi0gICAgICAgICBYTmJ6enBBTUl1WGNqMERjSFM3MG9ESE9UYnRMcTR1RExHcGtRd25CcFli c3dmR0QwaDhOK0IrQlNDczNacU4vbDVKYwotICAgICAgICAganVJUVk0aTNqYTJXMXlIbTZabHpl MnFVOGxGUlB6UndWQlpCdjl2cm84OFZ5RmljMFVaeDl3UnVJcUpCOUJaSWIwaC8KLSAgICAgICAg IHZraUE9PQotQVJDLUF1dGhlbnRpY2F0aW9uLVJlc3VsdHM6IGk9MTsgbXguZ29vZ2xlLmNvbTsK LSAgICAgICBzcGY9cGFzcyAoZ29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZlbC1ib3Vu Y2VzQGZmbXBlZy5vcmcKLSBkZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0dGVkIHNl bmRlcikKLSBzbXRwLm1haWxmcm9tPWZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKLVJl dHVybi1QYXRoOiA8ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZz4KLVJlY2VpdmVkOiBm cm9tIGZmYm94MC1iZy5tcGxheWVyaHEuaHUgKGZmYm94MC1iZy5mZm1wZWcub3JnLiBbNzkuMTI0 LjE3LjEwMF0pCi0gICAgICAgIGJ5IG14Lmdvb2dsZS5jb20gd2l0aCBFU01UUCBpZAotIGd0Mzct MjAwMjBhMTcwOTA3MmRhNTAwYjAwOTZiMWMzODQ1OGRzaTI4MjgxMTZlamMuNDA5LjIwMjMuMDUu MTUuMDEuMzMuMDA7Ci0gICAgICAgIE1vbiwgMTUgTWF5IDIwMjMgMDE6MzM6MDAgLTA3MDAgKFBE VCkKLVJlY2VpdmVkLVNQRjogcGFzcyAoZ29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZl bC1ib3VuY2VzQGZmbXBlZy5vcmcKLSBkZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0 dGVkIHNlbmRlcikgY2xpZW50LWlwPTc5LjEyNC4xNy4xMDA7Ci1BdXRoZW50aWNhdGlvbi1SZXN1 bHRzOiBteC5nb29nbGUuY29tOwotICAgICAgIHNwZj1wYXNzIChnb29nbGUuY29tOiBkb21haW4g b2YgZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZwotIGRlc2lnbmF0ZXMgNzkuMTI0LjE3 LjEwMCBhcyBwZXJtaXR0ZWQgc2VuZGVyKQotIHNtdHAubWFpbGZyb209ZmZtcGVnLWRldmVsLWJv dW5jZXNAZmZtcGVnLm9yZwotUmVjZWl2ZWQ6IGZyb20gWzEyNy4wLjEuMV0gKGxvY2FsaG9zdCBb MTI3LjAuMC4xXSkKLQlieSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChQb3N0Zml4KSB3aXRoIEVT TVRQIGlkIEQ5MzA1NjhCRTBDOwotCU1vbiwgMTUgTWF5IDIwMjMgMTE6MzI6NTcgKzAzMDAgKEVF U1QpCi1YLU9yaWdpbmFsLVRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwotRGVsaXZlcmVkLVRv OiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwotUmVjZWl2ZWQ6IGZyb20gYmc0LmV4bWFpbC5xcS5j b20gKGJnNC5leG1haWwucXEuY29tIFs0My4xNTUuNjcuMTU4XSkKLSBieSBmZmJveDAtYmcubXBs YXllcmhxLmh1IChQb3N0Zml4KSB3aXRoIEVTTVRQUyBpZCA1MjJGNzY4MDI3NAotIGZvciA8ZmZt cGVnLWRldmVsQGZmbXBlZy5vcmc+OyBNb24sIDE1IE1heSAyMDIzIDExOjMyOjQ5ICswMzAwIChF RVNUKQotWC1RUS1taWQ6IGJpemVzbXRwNjh0MTY4NDEzOTU2NHRnNjQycGJsCi1SZWNlaXZlZDog ZnJvbSBsb2NhbGhvc3QgKCBbMTAzLjEwMi4yMDMuMjA0XSkgYnkgYml6ZXNtdHAucXEuY29tIChF U01UUCkgd2l0aAotIGlkIDsgTW9uLCAxNSBNYXkgMjAyMyAxNjozMjo0MiArMDgwMCAoQ1NUKQot WC1RUS1TU0Y6IDAxMTAwMDAwMDAwMDAwWjBaMDAwMDAwQTAwMDAwMDAKLVgtUVEtRkVBVDogbkNN VDBZS1MzaTFNVTdJWFNzaVMxUndkZTZpLzRScTJrdVBPMlBvWHczT3Z0SkIyNE1VK1kyR3dkRWc0 WQotIHBnMFpmU2dnTTNWQm1SQ2tISTNpb1NPSDJtdlZ5WUc5TGd3aGh5Zml4UGFGSXRjcEY0RUY2 eG9aZXBRcGExSDV2MUJEaTdzCi0gaXdDd0Yzc2hnSDhkbDk2aUpLS3J5VDRUdGpVVG5ZUm9SaENQ dExDR2ZVdGhhTS9SNDR4ZHF4UnZqRHFJVm4xQlVNYjVHUHUKLSBETXVhc2t6TzhRUUNGeHZkdVV2 b3ZrWGpKYzV2MTdLcm0ybGY5NDVUbW0vcElwVi9xTGpBZ0FoWUhxT294cmdCR0haRFlXWQotIDBY ZVM3UnZZa0tUUjI0ejltOVNrNzV2ZU9US3RGemtzbmJMSllrSURZait2b0FkMWRqWFBKV3R1QjJl bGhtL0RJYTkrNWxXCi0gMkRuS3JKL0JiMk9rMTNnZ1hvQzYwMGpIY3hrTGJ1T3FEdUs1azVEaHVi N0VDT1RQSnl0aGtNVitGWVFDdz09Ci1YLVFRLUdvb2RCZzogMAotWC1CSVpNQUlMLUlEOiAxNDU0 NzM0ODE1NjI4MDYzODc5MQotRnJvbTogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgot VG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCi1EYXRlOiBNb24sIDE1IE1heSAyMDIzIDE2OjMx OjU2ICswODAwCi1NZXNzYWdlLUlkOiA8MjAyMzA1MTUwODMyMDEuNDgyMDEtMi1scUBjaGluYWZm bXBlZy5vcmc+Ci1YLU1haWxlcjogZ2l0LXNlbmQtZW1haWwgMi40MC4wCi1Jbi1SZXBseS1Ubzog PDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTEtbHFAY2hpbmFmZm1wZWcub3JnPgotUmVmZXJlbmNlczog Ci0gPENBRWctSmUtdllEOTdLbmJhcVRrSzU9VUo5VDNodG10SDNReWtjd28zK3JOQ3g9dytqUUBt YWlsLmdtYWlsLmNvbT4KLSA8MjAyMzA1MTUwODMyMDEuNDgyMDEtMS1scUBjaGluYWZmbXBlZy5v cmc+Ci1NSU1FLVZlcnNpb246IDEuMAotWC1RUS1TRU5EU0laRTogNTIwCi1GZWVkYmFjay1JRDog Yml6ZXNtdHA6Y2hpbmFmZm1wZWcub3JnOnF5Ymdsb2dpY3N2cnN6OnF5Ymdsb2dpY3N2cnN6M2Et MwotU3ViamVjdDogW0ZGbXBlZy1kZXZlbF0gW1BBVENIIHYxMCAxLzZdIGF2Zm9ybWF0L2ZsdmVu Yzogc3VwcG9ydCBtdXggaGV2YyBpbgotIGVuaGFuY2VkIGZsdgotWC1CZWVuVGhlcmU6IGZmbXBl Zy1kZXZlbEBmZm1wZWcub3JnCi1YLU1haWxtYW4tVmVyc2lvbjogMi4xLjI5Ci1QcmVjZWRlbmNl OiBsaXN0Ci1MaXN0LUlkOiBGRm1wZWcgZGV2ZWxvcG1lbnQgZGlzY3Vzc2lvbnMgYW5kIHBhdGNo ZXMgPGZmbXBlZy1kZXZlbC5mZm1wZWcub3JnPgotTGlzdC1VbnN1YnNjcmliZTogPGh0dHBzOi8v ZmZtcGVnLm9yZy9tYWlsbWFuL29wdGlvbnMvZmZtcGVnLWRldmVsPiwKLSA8bWFpbHRvOmZmbXBl Zy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD11bnN1YnNjcmliZT4KLUxpc3QtQXJj aGl2ZTogPGh0dHBzOi8vZmZtcGVnLm9yZy9waXBlcm1haWwvZmZtcGVnLWRldmVsPgotTGlzdC1Q b3N0OiA8bWFpbHRvOmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgotTGlzdC1IZWxwOiA8bWFpbHRv OmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD1oZWxwPgotTGlzdC1TdWJz Y3JpYmU6IDxodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWw+ LAotIDxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZz9zdWJqZWN0PXN1YnNj cmliZT4KLVJlcGx5LVRvOiBGRm1wZWcgZGV2ZWxvcG1lbnQgZGlzY3Vzc2lvbnMgYW5kIHBhdGNo ZXMgPGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgotQ2M6IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZt cGVnLm9yZz4KLUVycm9ycy1UbzogZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZwotU2Vu ZGVyOiAiZmZtcGVnLWRldmVsIiA8ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZz4KLVgt VFVJRDogV1VoSEM0L2RYdWsrCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZXZlbiBMaXUgPGxxQGNoaW5h ZmZtcGVnLm9yZz4KLS0tLQotIGxpYmF2Zm9ybWF0L01ha2VmaWxlIHwgIDIgKy0KLSBsaWJhdmZv cm1hdC9mbHYuaCAgICB8IDE1ICsrKysrKysrKysrKysrKwotIGxpYmF2Zm9ybWF0L2ZsdmVuYy5j IHwgMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KLSAzIGZpbGVzIGNo YW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEv bGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQotaW5kZXggZjhhZDdj NmExMS4uMWVmM2QxNTQ2NyAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlCi0rKysg Yi9saWJhdmZvcm1hdC9NYWtlZmlsZQotQEAgLTIxNCw3ICsyMTQsNyBAQCBPQkpTLSQoQ09ORklH X0ZMQUNfTVVYRVIpICAgICAgICAgICAgICAgICs9IGZsYWNlbmMubyBmbGFjZW5jX2hlYWRlci5v IFwKLSBPQkpTLSQoQ09ORklHX0ZMSUNfREVNVVhFUikgICAgICAgICAgICAgICs9IGZsaWMubwot IE9CSlMtJChDT05GSUdfRkxWX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gZmx2ZGVjLm8KLSBP QkpTLSQoQ09ORklHX0xJVkVfRkxWX0RFTVVYRVIpICAgICAgICAgICs9IGZsdmRlYy5vCi0tT0JK Uy0kKENPTkZJR19GTFZfTVVYRVIpICAgICAgICAgICAgICAgICArPSBmbHZlbmMubyBhdmMubwot K09CSlMtJChDT05GSUdfRkxWX01VWEVSKSAgICAgICAgICAgICAgICAgKz0gZmx2ZW5jLm8gYXZj Lm8gaGV2Yy5vCi0gT0JKUy0kKENPTkZJR19GT1VSWE1fREVNVVhFUikgICAgICAgICAgICArPSA0 eG0ubwotIE9CSlMtJChDT05GSUdfRlJBTUVDUkNfTVVYRVIpICAgICAgICAgICAgKz0gZnJhbWVj cmNlbmMubyBmcmFtZWhhc2gubwotIE9CSlMtJChDT05GSUdfRlJBTUVIQVNIX01VWEVSKSAgICAg ICAgICAgKz0gaGFzaGVuYy5vIGZyYW1laGFzaC5vCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQv Zmx2LmggYi9saWJhdmZvcm1hdC9mbHYuaAotaW5kZXggMzU3MWI5MDI3OS4uOTFlMGE0MTQwYyAx MDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L2Zsdi5oCi0rKysgYi9saWJhdmZvcm1hdC9mbHYuaAot QEAgLTM1LDYgKzM1LDEyIEBACi0gCi0gI2RlZmluZSBGTFZfVklERU9fRlJBTUVUWVBFX09GRlNF VCAgIDQKLSAKLSsvKiBFeHRlbmRlZCBWaWRlb1RhZ0hlYWRlcgotKyAqIGRlZmluZWQgaW4gcmVm ZXJlbmNlIGxpbms6Ci0rICogaHR0cHM6Ly9naXRodWIuY29tL3Zlb3ZlcmEvZW5oYW5jZWQtcnRt cC9ibG9iL21haW4vZW5oYW5jZWQtcnRtcC12MS5wZGYKLSsgKiAqLwotKyNkZWZpbmUgRkxWX0lT X0VYX0hFQURFUiAgICAgICAgICAweDgwCi0rCi0gLyogYml0bWFza3MgdG8gaXNvbGF0ZSBzcGVj aWZpYyB2YWx1ZXMgKi8KLSAjZGVmaW5lIEZMVl9BVURJT19DSEFOTkVMX01BU0sgICAgMHgwMQot ICNkZWZpbmUgRkxWX0FVRElPX1NBTVBMRVNJWkVfTUFTSyAweDAyCi1AQCAtMTEyLDYgKzExOCwx NSBAQCBlbnVtIHsKLSAgICAgRkxWX0NPREVDSURfTVBFRzQgICA9IDksCi0gfTsKLSAKLStlbnVt IHsKLSsgICAgUGFja2V0VHlwZVNlcXVlbmNlU3RhcnQgICAgICAgICA9IDAsCi0rICAgIFBhY2tl dFR5cGVDb2RlZEZyYW1lcyAgICAgICAgICAgPSAxLAotKyAgICBQYWNrZXRUeXBlU2VxdWVuY2VF bmQgICAgICAgICAgID0gMiwKLSsgICAgUGFja2V0VHlwZUNvZGVkRnJhbWVzWCAgICAgICAgICA9 IDMsCi0rICAgIFBhY2tldFR5cGVNZXRhZGF0YSAgICAgICAgICAgICAgPSA0LAotKyAgICBQYWNr ZXRUeXBlTVBFRzJUU1NlcXVlbmNlU3RhcnQgID0gNSwKLSt9OwotKwotIGVudW0gewotICAgICBG TFZfRlJBTUVfS0VZICAgICAgICAgICAgPSAxIDw8IEZMVl9WSURFT19GUkFNRVRZUEVfT0ZGU0VU LCAvLy88IGtleSBmcmFtZSAoZm9yIEFWQywgYSBzZWVrYWJsZSBmcmFtZSkKLSAgICAgRkxWX0ZS QU1FX0lOVEVSICAgICAgICAgID0gMiA8PCBGTFZfVklERU9fRlJBTUVUWVBFX09GRlNFVCwgLy8v PCBpbnRlciBmcmFtZSAoZm9yIEFWQywgYSBub24tc2Vla2FibGUgZnJhbWUpCi1kaWZmIC0tZ2l0 IGEvbGliYXZmb3JtYXQvZmx2ZW5jLmMgYi9saWJhdmZvcm1hdC9mbHZlbmMuYwotaW5kZXggNzIx ZjA2MjgxMS4uMzVlMTk4ZmExNSAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L2ZsdmVuYy5jCi0r KysgYi9saWJhdmZvcm1hdC9mbHZlbmMuYwotQEAgLTI4LDYgKzI4LDcgQEAKLSAjaW5jbHVkZSAi bGliYXZjb2RlYy9tcGVnNGF1ZGlvLmgiCi0gI2luY2x1ZGUgImF2aW8uaCIKLSAjaW5jbHVkZSAi YXZjLmgiCi0rI2luY2x1ZGUgImhldmMuaCIKLSAjaW5jbHVkZSAiYXZmb3JtYXQuaCIKLSAjaW5j bHVkZSAiZmx2LmgiCi0gI2luY2x1ZGUgImludGVybmFsLmgiCi1AQCAtNDYsNiArNDcsNyBAQCBz dGF0aWMgY29uc3QgQVZDb2RlY1RhZyBmbHZfdmlkZW9fY29kZWNfaWRzW10gPSB7Ci0gICAgIHsg QVZfQ09ERUNfSURfVlA2LCAgICAgIEZMVl9DT0RFQ0lEX1ZQNiB9LAotICAgICB7IEFWX0NPREVD X0lEX1ZQNkEsICAgICBGTFZfQ09ERUNJRF9WUDZBIH0sCi0gICAgIHsgQVZfQ09ERUNfSURfSDI2 NCwgICAgIEZMVl9DT0RFQ0lEX0gyNjQgfSwKLSsgICAgeyBBVl9DT0RFQ19JRF9IRVZDLCAgICAg TUtCRVRBRygnaCcsICd2JywgJ2MnLCAnMScpIH0sCi0gICAgIHsgQVZfQ09ERUNfSURfTk9ORSwg ICAgIDAgfQotIH07Ci0gCi1AQCAtNDg5LDcgKzQ5MSw3IEBAIHN0YXRpYyB2b2lkIGZsdl93cml0 ZV9jb2RlY19oZWFkZXIoQVZGb3JtYXRDb250ZXh0KiBzLCBBVkNvZGVjUGFyYW1ldGVycyogcGFy LCBpCi0gICAgIEZMVkNvbnRleHQgKmZsdiA9IHMtPnByaXZfZGF0YTsKLSAKLSAgICAgaWYgKHBh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUFDIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfSDI2NAotLSAgICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf TVBFRzQpIHsKLSsgICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01Q RUc0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykgewotICAgICAgICAgaW50 NjRfdCBwb3M7Ci0gICAgICAgICBhdmlvX3c4KHBiLAotICAgICAgICAgICAgICAgICBwYXItPmNv ZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPID8KLUBAIC01MzIsMTAgKzUzNCwxOSBAQCBz dGF0aWMgdm9pZCBmbHZfd3JpdGVfY29kZWNfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCogcywgQVZD b2RlY1BhcmFtZXRlcnMqIHBhciwgaQotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBhdmlv X3dyaXRlKHBiLCBwYXItPmV4dHJhZGF0YSwgcGFyLT5leHRyYWRhdGFfc2l6ZSk7Ci0gICAgICAg ICB9IGVsc2UgewotLSAgICAgICAgICAgIGF2aW9fdzgocGIsIHBhci0+Y29kZWNfdGFnIHwgRkxW X0ZSQU1FX0tFWSk7IC8vIGZsYWdzCi0tICAgICAgICAgICAgYXZpb193OChwYiwgMCk7IC8vIEFW QyBzZXF1ZW5jZSBoZWFkZXIKLS0gICAgICAgICAgICBhdmlvX3diMjQocGIsIDApOyAvLyBjb21w b3NpdGlvbiB0aW1lCi0tICAgICAgICAgICAgZmZfaXNvbV93cml0ZV9hdmNjKHBiLCBwYXItPmV4 dHJhZGF0YSwgcGFyLT5leHRyYWRhdGFfc2l6ZSk7Ci0rICAgICAgICAgICAgaWYgKHBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykgewotKyAgICAgICAgICAgICAgICBhdmlvX3c4KHBi LCBGTFZfSVNfRVhfSEVBREVSIHwgUGFja2V0VHlwZVNlcXVlbmNlU3RhcnQpOyAvLyBFeFZpZGVv VGFnSGVhZGVyIG1vZGUgd2l0aCBQYWNrZXRUeXBlU2VxdWVuY2VTdGFydAotKyAgICAgICAgICAg ICAgICBhdmlvX3dyaXRlKHBiLCAiaHZjMSIsIDQpOwotKyAgICAgICAgICAgIH0gZWxzZSB7Ci0r ICAgICAgICAgICAgICAgIGF2aW9fdzgocGIsIHBhci0+Y29kZWNfdGFnIHwgRkxWX0ZSQU1FX0tF WSk7IC8vIGZsYWdzCi0rICAgICAgICAgICAgICAgIGF2aW9fdzgocGIsIDApOyAvLyBBVkMgc2Vx dWVuY2UgaGVhZGVyCi0rICAgICAgICAgICAgICAgIGF2aW9fd2IyNChwYiwgMCk7IC8vIGNvbXBv c2l0aW9uIHRpbWUKLSsgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAgaWYgKHBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykKLSsgICAgICAgICAgICAgICAgZmZfaXNvbV93cml0 ZV9odmNjKHBiLCBwYXItPmV4dHJhZGF0YSwgcGFyLT5leHRyYWRhdGFfc2l6ZSwgMCk7Ci0rICAg ICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICBmZl9pc29tX3dyaXRlX2F2Y2MocGIsIHBh ci0+ZXh0cmFkYXRhLCBwYXItPmV4dHJhZGF0YV9zaXplKTsKLSAgICAgICAgIH0KLSAgICAgICAg IGRhdGFfc2l6ZSA9IGF2aW9fdGVsbChwYikgLSBwb3M7Ci0gICAgICAgICBhdmlvX3NlZWsocGIs IC1kYXRhX3NpemUgLSAxMCwgU0VFS19DVVIpOwotQEAgLTgzMiwxMyArODQzLDEzIEBAIHN0YXRp YyBpbnQgZmx2X3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3Qp Ci0gICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQNkYgfHwgcGFyLT5jb2Rl Y19pZCA9PSBBVl9DT0RFQ19JRF9WUDZBIHx8Ci0gICAgICAgICBwYXItPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX1ZQNiAgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BQUMpCi0gICAg ICAgICBmbGFnc19zaXplID0gMjsKLS0gICAgZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9D T0RFQ19JRF9IMjY0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQpCi0rICAg IGVsc2UgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fCBwYXItPmNvZGVj X2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf SEVWQykKLSAgICAgICAgIGZsYWdzX3NpemUgPSA1OwotICAgICBlbHNlCi0gICAgICAgICBmbGFn c19zaXplID0gMTsKLSAKLSAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUFD IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NAotLSAgICAgICAgICAgIHx8IHBh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQpIHsKLSsgICAgICAgICAgICB8fCBwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfSEVWQykgewotICAgICAgICAgc2l6ZV90IHNpZGVfc2l6ZTsKLSAgICAgICAgIHVpbnQ4 X3QgKnNpZGUgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YShwa3QsIEFWX1BLVF9EQVRBX05FV19F WFRSQURBVEEsICZzaWRlX3NpemUpOwotICAgICAgICAgaWYgKHNpZGUgJiYgc2lkZV9zaXplID4g MCAmJiAoc2lkZV9zaXplICE9IHBhci0+ZXh0cmFkYXRhX3NpemUgfHwgbWVtY21wKHNpZGUsIHBh ci0+ZXh0cmFkYXRhLCBzaWRlX3NpemUpKSkgewotQEAgLTg1OCw3ICs4NjksNyBAQCBzdGF0aWMg aW50IGZsdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQot ICAgICAgICAgICAgICAgICJQYWNrZXRzIGFyZSBub3QgaW4gdGhlIHByb3BlciBvcmRlciB3aXRo IHJlc3BlY3QgdG8gRFRTXG4iKTsKLSAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Ci0g ICAgIH0KLS0gICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fCBwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0KSB7Ci0rICAgIGlmIChwYXItPmNvZGVjX2lk ID09IEFWX0NPREVDX0lEX0gyNjQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVH NCB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpIHsKLSAgICAgICAgIGlmIChw a3QtPnB0cyA9PSBBVl9OT1BUU19WQUxVRSkgewotICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9M T0dfRVJST1IsICJQYWNrZXQgaXMgbWlzc2luZyBQVFNcbiIpOwotICAgICAgICAgICAgIHJldHVy biBBVkVSUk9SKEVJTlZBTCk7Ci1AQCAtOTAzLDYgKzkxNCwxMCBAQCBzdGF0aWMgaW50IGZsdl93 cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQotICAgICAgICAg aWYgKHBhci0+ZXh0cmFkYXRhX3NpemUgPiAwICYmICoodWludDhfdCopcGFyLT5leHRyYWRhdGEg IT0gMSkKLSAgICAgICAgICAgICBpZiAoKHJldCA9IGZmX2F2Y19wYXJzZV9uYWxfdW5pdHNfYnVm KHBrdC0+ZGF0YSwgJmRhdGEsICZzaXplKSkgPCAwKQotICAgICAgICAgICAgICAgICByZXR1cm4g cmV0OwotKyAgICB9IGVsc2UgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykg ewotKyAgICAgICAgaWYgKHBhci0+ZXh0cmFkYXRhX3NpemUgPiAwICYmICoodWludDhfdCopcGFy LT5leHRyYWRhdGEgIT0gMSkKLSsgICAgICAgICAgICBpZiAoKHJldCA9IGZmX2hldmNfYW5uZXhi Mm1wNF9idWYocGt0LT5kYXRhLCAmZGF0YSwgJnNpemUsIDAsIE5VTEwpKSA8IDApCi0rICAgICAg ICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgIH0gZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9BQUMgJiYgcGt0LT5zaXplID4gMiAmJgotICAgICAgICAgICAgICAgIChBVl9S QjE2KHBrdC0+ZGF0YSkgJiAweGZmZjApID09IDB4ZmZmMCkgewotICAgICAgICAgaWYgKCFzLT5z dHJlYW1zW3BrdC0+c3RyZWFtX2luZGV4XS0+bmJfZnJhbWVzKSB7Ci1AQCAtOTY0LDcgKzk3OSwx MiBAQCBzdGF0aWMgaW50IGZsdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBh Y2tldCAqcGt0KQotICAgICAgICAgYXZpb193YjMyKHBiLCBkYXRhX3NpemUgKyAxMSk7Ci0gICAg IH0gZWxzZSB7Ci0gICAgICAgICBhdl9hc3NlcnQxKGZsYWdzPj0wKTsKLS0gICAgICAgIGF2aW9f dzgocGIsZmxhZ3MpOwotKyAgICAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf SEVWQykgewotKyAgICAgICAgICAgIGF2aW9fdzgocGIsIEZMVl9JU19FWF9IRUFERVIgfCBQYWNr ZXRUeXBlQ29kZWRGcmFtZXNYKTsgLy8gRXhWaWRlb1RhZ0hlYWRlciBtb2RlIHdpdGggUGFja2V0 VHlwZUNvZGVkRnJhbWVzWAotKyAgICAgICAgICAgIGF2aW9fd3JpdGUocGIsICJodmMxIiwgNCk7 Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIGF2aW9fdzgocGIsIGZsYWdzKTsKLSsg ICAgICAgIH0KLSAgICAgICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQNikK LSAgICAgICAgICAgICBhdmlvX3c4KHBiLDApOwotICAgICAgICAgaWYgKHBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfVlA2RiB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQNkEp IHsKLQotRnJvbSBwYXRjaHdvcmsgTW9uIE1heSAxNSAwODozMTo1NyAyMDIzCi1Db250ZW50LVR5 cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKLVgtUGF0Y2h3b3JrLVN1Ym1pdHRlcjogU3RldmVu IExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgotWC1QYXRjaHdvcmstSWQ6IDQxNjE2Ci1EZWxpdmVy ZWQtVG86IGZmbXBlZ3BhdGNod29yazJAZ21haWwuY29tCi1SZWNlaXZlZDogYnkgMjAwMjphMDU6 NmEyMDpiYTkxOmIwOjEwNTpmZWI6NzFmMiB3aXRoIFNNVFAgaWQKLSBmYjE3Y3NwMTQ0NDEyM3B6 YjsKLSAgICAgICAgTW9uLCAxNSBNYXkgMjAyMyAwMTozMzoyMiAtMDcwMCAoUERUKQotWC1Hb29n bGUtU210cC1Tb3VyY2U6IAotIEFDSEhVWjRxU3FuSEFSQVRZdk5UT2lYaE1JSWdHV1VIbzYxMndO M1VpMXIzY1lQUWQ1N0UrQjlraUNSWWlqRGh6Z09iS01La0RtNTQKLVgtUmVjZWl2ZWQ6IGJ5IDIw MDI6YTE3OjkwNzo2ZThlOmIwOjk0ZjozNTIxOjM5NiB3aXRoIFNNVFAgaWQKLSBzaDE0LTIwMDIw YTE3MDkwNzZlOGUwMGIwMDk0ZjM1MjEwMzk2bXIzNTc0MDg4M2VqYy4yMy4xNjg0MTM5NjAyMDEx OwotICAgICAgICBNb24sIDE1IE1heSAyMDIzIDAxOjMzOjIyIC0wNzAwIChQRFQpCi1BUkMtU2Vh bDogaT0xOyBhPXJzYS1zaGEyNTY7IHQ9MTY4NDEzOTYwMTsgY3Y9bm9uZTsKLSAgICAgICAgZD1n b29nbGUuY29tOyBzPWFyYy0yMDE2MDgxNjsKLSAgICAgICAgYj1FRkpneDljbTVldzIrUElwVGVI aTdRQ3pvcy8vb09zNXEvSG5kUXhjMCtkSFlsanU1WDRyVlNBQ21mazlMMERIM2oKLSAgICAgICAg ICtjRzBuMi8zd0FzZ3VBMXJDM0I4YStxWGtSZkFYQzFyb3B1aER3S0NaQ2R3MEl2NDBWbTRKZUhv bEVRV1JuaThLbytGCi0gICAgICAgICBNaFdZN0F2eHJYNEdzTzBwcDRTZktzVkZhSmRvMThkbHBu K0JVZDlGWDVON1Y2bFVUYWRRc1ZjSllKQmQyQjJNSVJVaQotICAgICAgICAgbUphRVBwOFdwUmtp UzkyRGdXaFB6VUM5RUxud3J5U25OTDBtT285RENkOWNqRlhROUtYVzZxalJvUDBibGJMOE4yd3MK LSAgICAgICAgIEJsWTJkSlZtU00zNm4vR0s5Z1piKzZmVWczeFZ1ZkRVZmRScjBtNGpwYS9JTEQ5 My9ud0Fac3FoazNrNGowMHNlK0NPCi0gICAgICAgICA3VnJ3PT0KLUFSQy1NZXNzYWdlLVNpZ25h dHVyZTogaT0xOyBhPXJzYS1zaGEyNTY7IGM9cmVsYXhlZC9yZWxheGVkOyBkPWdvb2dsZS5jb207 Ci0gcz1hcmMtMjAxNjA4MTY7Ci0gICAgICAgIGg9c2VuZGVyOmVycm9ycy10bzpjb250ZW50LXRy YW5zZmVyLWVuY29kaW5nOmNjOnJlcGx5LXRvCi0gICAgICAgICA6bGlzdC1zdWJzY3JpYmU6bGlz dC1oZWxwOmxpc3QtcG9zdDpsaXN0LWFyY2hpdmU6bGlzdC11bnN1YnNjcmliZQotICAgICAgICAg Omxpc3QtaWQ6cHJlY2VkZW5jZTpzdWJqZWN0OmZlZWRiYWNrLWlkOm1pbWUtdmVyc2lvbjpyZWZl cmVuY2VzCi0gICAgICAgICA6aW4tcmVwbHktdG86bWVzc2FnZS1pZDpkYXRlOnRvOmZyb206ZGVs aXZlcmVkLXRvOwotICAgICAgICBiaD15Z1ViNjBUcjVMYlBuaGlTMUFzK2hMK3FYNDVLSUkrb2Nw WTlYM0pxNFRJPTsKLSAgICAgICAgYj1VcEdocWJmby8rbTlXVzVxRTkyTEtPZE9seGtDV3l5MlFW cWlYQ2pYcHhlcGREZDBJS2toR3FTc3B0ZTl6SnJVVDgKLSAgICAgICAgIFFXZzhJaURLNkpUbkdu dnAraE82ZG9aamhYYzFHeXlUeDZjTVFRWCsySnpxVHRiV0YwM1M5NEd3QmdtTi9VMlJJSzlNCi0g ICAgICAgICBmOTgwU1NnZk5aUlNKRjVrSitkTzJpeDRNNVdJV2h4RVlCL01Sem4vUmJ4QXZZa3dM TkcxZ01NQlROaW1vZ2JGc1hSbwotICAgICAgICAgaDVXZ0d4TzRrOG14L3g4UEJydE52MWFQWjg2 RkFjWEMzQWllYW83YVZuUkR2V2plcEV1czVqRWZHdTJRdXFudk0ycUsKLSAgICAgICAgIFdJalV5 RnJwcEpML2NyQU50Z1IrdEZjTDgzOTViUkdZT2JZdElCYmxVUS9nNWRkSHpqc2FDbEovNDJyM2gx dmV6MzlxCi0gICAgICAgICBuUGpRPT0KLUFSQy1BdXRoZW50aWNhdGlvbi1SZXN1bHRzOiBpPTE7 IG14Lmdvb2dsZS5jb207Ci0gICAgICAgc3BmPXBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBm Zm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCi0gZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAw IGFzIHBlcm1pdHRlZCBzZW5kZXIpCi0gc210cC5tYWlsZnJvbT1mZm1wZWctZGV2ZWwtYm91bmNl c0BmZm1wZWcub3JnCi1SZXR1cm4tUGF0aDogPGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5v cmc+Ci1SZWNlaXZlZDogZnJvbSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChmZmJveDAtYmcuZmZt cGVnLm9yZy4gWzc5LjEyNC4xNy4xMDBdKQotICAgICAgICBieSBteC5nb29nbGUuY29tIHdpdGgg RVNNVFAgaWQKLSB2MjEtMjAwMjBhMTcwOTA2MGI1NTAwYjAwOTVlYzU0YTIyYmNzaTEwOTA3NTk1 ZWpnLjEwNi4yMDIzLjA1LjE1LjAxLjMzLjIxOwotICAgICAgICBNb24sIDE1IE1heSAyMDIzIDAx OjMzOjIxIC0wNzAwIChQRFQpCi1SZWNlaXZlZC1TUEY6IHBhc3MgKGdvb2dsZS5jb206IGRvbWFp biBvZiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCi0gZGVzaWduYXRlcyA3OS4xMjQu MTcuMTAwIGFzIHBlcm1pdHRlZCBzZW5kZXIpIGNsaWVudC1pcD03OS4xMjQuMTcuMTAwOwotQXV0 aGVudGljYXRpb24tUmVzdWx0czogbXguZ29vZ2xlLmNvbTsKLSAgICAgICBzcGY9cGFzcyAoZ29v Z2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKLSBkZXNp Z25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0dGVkIHNlbmRlcikKLSBzbXRwLm1haWxmcm9t PWZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKLVJlY2VpdmVkOiBmcm9tIFsxMjcuMC4x LjFdIChsb2NhbGhvc3QgWzEyNy4wLjAuMV0pCi0JYnkgZmZib3gwLWJnLm1wbGF5ZXJocS5odSAo UG9zdGZpeCkgd2l0aCBFU01UUCBpZCBEM0Y3NjY4QzA5MjsKLQlNb24sIDE1IE1heSAyMDIzIDEx OjMzOjE4ICswMzAwIChFRVNUKQotWC1PcmlnaW5hbC1UbzogZmZtcGVnLWRldmVsQGZmbXBlZy5v cmcKLURlbGl2ZXJlZC1UbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKLVJlY2VpdmVkOiBmcm9t IGJnNC5leG1haWwucXEuY29tIChiZzQuZXhtYWlsLnFxLmNvbSBbNDMuMTU1LjY3LjE1OF0pCi0g YnkgZmZib3gwLWJnLm1wbGF5ZXJocS5odSAoUG9zdGZpeCkgd2l0aCBFU01UUFMgaWQgODE4MDM2 OEMwMDQKLSBmb3IgPGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPjsgTW9uLCAxNSBNYXkgMjAyMyAx MTozMzoxMSArMDMwMCAoRUVTVCkKLVgtUVEtbWlkOiBiaXplc210cDYydDE2ODQxMzk1ODV0eGhw MzJvdQotUmVjZWl2ZWQ6IGZyb20gbG9jYWxob3N0ICggWzEwMy4xMDIuMjAzLjIwNF0pIGJ5IGJp emVzbXRwLnFxLmNvbSAoRVNNVFApIHdpdGgKLSBpZCA7IE1vbiwgMTUgTWF5IDIwMjMgMTY6MzM6 MDQgKzA4MDAgKENTVCkKLVgtUVEtU1NGOiAwMTEwMDAwMDAwMDAwMFowWjAwMDAwMEEwMDAwMDAw Ci1YLVFRLUZFQVQ6IDZBcm51U0RKK2luVkMwNk1IMW5ySmV1NTYrMzVkaXB0VzNkQ2RIdDNiTWF5 RlpvQ3lFOFF5VU8wUVk5em0KLSBpWTYySkNTcFNLWUVLNGNhMmtweGtCOTlQSTUwRmlXZk50ekxE WitWelVUeTAxM0dNcEx3aDFDV2VWWDVjRjE1UnlFQUlDOQotIHUzT3pnN0lZOG12K0dpRHRmNkZE Z1N5dW1FMUQ5M3F4VjFSMnNKNXYzOFYzTmJOUGNpa2cwYUR4WlhPbEMrSHIrTGRoc1ppCi0gNFg1 dERpM05vdmhwQ2YrOFdvK1phZWpIT3JFOE1VY1VHcGJoOGRIUmV3NmRubWtka0s1eXRTSFNaRXll OFJzWFpuTWRwNEEKLSBtcUJacUlER3cxYTRlMDRKQWMvTkRDczdxcTRxdGh4TUZCMXNraGFPdjZE TGNMK0VxVjJRRnduSm43VjVPb2Y3QndmamFURwotIG1FQVZwaVpEblFoRnZPZ0hlbUgxdjYxQmx1 YjJuQ25BdXJyR2hHTWF5d0l6RlhUODdhT1NMQ0RsRnByU2c9PQotWC1RUS1Hb29kQmc6IDAKLVgt QklaTUFJTC1JRDogMTEyMTA4MzkxOTEyOTI1ODczNTcKLUZyb206IFN0ZXZlbiBMaXUgPGxxQGNo aW5hZmZtcGVnLm9yZz4KLVRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwotRGF0ZTogTW9uLCAx NSBNYXkgMjAyMyAxNjozMTo1NyArMDgwMAotTWVzc2FnZS1JZDogPDIwMjMwNTE1MDgzMjAxLjQ4 MjAxLTMtbHFAY2hpbmFmZm1wZWcub3JnPgotWC1NYWlsZXI6IGdpdC1zZW5kLWVtYWlsIDIuNDAu MAotSW4tUmVwbHktVG86IDwyMDIzMDUxNTA4MzIwMS40ODIwMS0xLWxxQGNoaW5hZmZtcGVnLm9y Zz4KLVJlZmVyZW5jZXM6IAotIDxDQUVnLUplLXZZRDk3S25iYXFUa0s1PVVKOVQzaHRtdEgzUXlr Y3dvMytyTkN4PXcralFAbWFpbC5nbWFpbC5jb20+Ci0gPDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTEt bHFAY2hpbmFmZm1wZWcub3JnPgotTUlNRS1WZXJzaW9uOiAxLjAKLVgtUVEtU0VORFNJWkU6IDUy MAotRmVlZGJhY2stSUQ6IGJpemVzbXRwOmNoaW5hZmZtcGVnLm9yZzpxeWJnbG9naWNzdnJzejpx eWJnbG9naWNzdnJzejNhLTMKLVN1YmplY3Q6IFtGRm1wZWctZGV2ZWxdIFtQQVRDSCB2MTAgMi82 XSBhdmZvcm1hdC9mbHZkZWM6IHN1cHBvcnQgZGVtdXggaGV2YwotIGluIGVuaGFuY2VkIGZsdgot WC1CZWVuVGhlcmU6IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCi1YLU1haWxtYW4tVmVyc2lvbjog Mi4xLjI5Ci1QcmVjZWRlbmNlOiBsaXN0Ci1MaXN0LUlkOiBGRm1wZWcgZGV2ZWxvcG1lbnQgZGlz Y3Vzc2lvbnMgYW5kIHBhdGNoZXMgPGZmbXBlZy1kZXZlbC5mZm1wZWcub3JnPgotTGlzdC1VbnN1 YnNjcmliZTogPGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL29wdGlvbnMvZmZtcGVnLWRldmVs PiwKLSA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD11bnN1 YnNjcmliZT4KLUxpc3QtQXJjaGl2ZTogPGh0dHBzOi8vZmZtcGVnLm9yZy9waXBlcm1haWwvZmZt cGVnLWRldmVsPgotTGlzdC1Qb3N0OiA8bWFpbHRvOmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgot TGlzdC1IZWxwOiA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVj dD1oZWxwPgotTGlzdC1TdWJzY3JpYmU6IDxodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0 aW5mby9mZm1wZWctZGV2ZWw+LAotIDxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVn Lm9yZz9zdWJqZWN0PXN1YnNjcmliZT4KLVJlcGx5LVRvOiBGRm1wZWcgZGV2ZWxvcG1lbnQgZGlz Y3Vzc2lvbnMgYW5kIHBhdGNoZXMgPGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgotQ2M6IFN0ZXZl biBMaXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KLUVycm9ycy1UbzogZmZtcGVnLWRldmVsLWJvdW5j ZXNAZmZtcGVnLm9yZwotU2VuZGVyOiAiZmZtcGVnLWRldmVsIiA8ZmZtcGVnLWRldmVsLWJvdW5j ZXNAZmZtcGVnLm9yZz4KLVgtVFVJRDogU0ZzakhNSHUySVNsCi0KLVNpZ25lZC1vZmYtYnk6IFN0 ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KLS0tLQotIGxpYmF2Zm9ybWF0L2ZsdmRlYy5j IHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KLSAxIGZp bGUgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdp dCBhL2xpYmF2Zm9ybWF0L2ZsdmRlYy5jIGIvbGliYXZmb3JtYXQvZmx2ZGVjLmMKLWluZGV4IGQ4 M2VkZmY3MjcuLmM4ZTZjYWRmMWMgMTAwNjQ0Ci0tLS0gYS9saWJhdmZvcm1hdC9mbHZkZWMuYwot KysrIGIvbGliYXZmb3JtYXQvZmx2ZGVjLmMKLUBAIC03OSw2ICs3OSw4IEBAIHR5cGVkZWYgc3Ry dWN0IEZMVkNvbnRleHQgewotICAgICBpbnQ2NF90IGxhc3RfdHM7Ci0gICAgIGludDY0X3QgdGlt ZV9vZmZzZXQ7Ci0gICAgIGludDY0X3QgdGltZV9wb3M7Ci0rCi0rICAgIHVpbnQ4X3QgZXhoZWFk ZXI7Ci0gfSBGTFZDb250ZXh0OwotIAotIC8qIEFNRiBkYXRlIHR5cGUgKi8KLUBAIC0zMDIsMTMg KzMwNCwyNSBAQCBzdGF0aWMgdm9pZCBmbHZfc2V0X2F1ZGlvX2NvZGVjKEFWRm9ybWF0Q29udGV4 dCAqcywgQVZTdHJlYW0gKmFzdHJlYW0sCi0gICAgIH0KLSB9Ci0gCi0tc3RhdGljIGludCBmbHZf c2FtZV92aWRlb19jb2RlYyhBVkNvZGVjUGFyYW1ldGVycyAqdnBhciwgaW50IGZsYWdzKQotK3N0 YXRpYyBpbnQgZmx2X3NhbWVfdmlkZW9fY29kZWMoQVZGb3JtYXRDb250ZXh0ICpzLCBBVkNvZGVj UGFyYW1ldGVycyAqdnBhciwgaW50IGZsYWdzKQotIHsKLSAgICAgaW50IGZsdl9jb2RlY2lkID0g ZmxhZ3MgJiBGTFZfVklERU9fQ09ERUNJRF9NQVNLOwotKyAgICBGTFZDb250ZXh0ICpmbHYgPSBz LT5wcml2X2RhdGE7Ci0gCi0gICAgIGlmICghdnBhci0+Y29kZWNfaWQgJiYgIXZwYXItPmNvZGVj X3RhZykKLSAgICAgICAgIHJldHVybiAxOwotIAotKyAgICBpZiAoZmx2LT5leGhlYWRlcikgewot KyAgICAgICAgdWludDhfdCAqY29kZWNfaWRfc3RyID0gKHVpbnQ4X3QgKilzLT5wYi0+YnVmX3B0 cjsKLSsgICAgICAgIHVpbnQzMl90IGNvZGVjX2lkID0gY29kZWNfaWRfc3RyWzNdIHwgY29kZWNf aWRfc3RyWzJdIDw8IDggfCBjb2RlY19pZF9zdHJbMV0gPDwgMTYgfCBjb2RlY19pZF9zdHJbMF0g PDwgMjQ7Ci0rICAgICAgICBzd2l0Y2goY29kZWNfaWQpIHsKLSsgICAgICAgICAgICBjYXNlIE1L QkVUQUcoJ2gnLCAndicsICdjJywgJzEnKToKLSsgICAgICAgICAgICAgICAgcmV0dXJuIHZwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkM7Ci0rICAgICAgICAgICAgZGVmYXVsdDoKLSsg ICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSAgICAgc3dpdGNo IChmbHZfY29kZWNpZCkgewotICAgICBjYXNlIEZMVl9DT0RFQ0lEX0gyNjM6Ci0gICAgICAgICBy ZXR1cm4gdnBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfRkxWMTsKLUBAIC0zMzEsOSArMzQ1 LDI0IEBAIHN0YXRpYyBpbnQgZmx2X3NldF92aWRlb19jb2RlYyhBVkZvcm1hdENvbnRleHQgKnMs IEFWU3RyZWFtICp2c3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg Zmx2X2NvZGVjaWQsIGludCByZWFkKQotIHsKLSAgICAgRkZTdHJlYW0gKmNvbnN0IHZzdHJlYW1p ID0gZmZzdHJlYW0odnN0cmVhbSk7Ci0rICAgIEZMVkNvbnRleHQgKmZsdiA9IHMtPnByaXZfZGF0 YTsKLSAgICAgaW50IHJldCA9IDA7Ci0gICAgIEFWQ29kZWNQYXJhbWV0ZXJzICpwYXIgPSB2c3Ry ZWFtLT5jb2RlY3BhcjsKLSAgICAgZW51bSBBVkNvZGVjSUQgb2xkX2NvZGVjX2lkID0gdnN0cmVh bS0+Y29kZWNwYXItPmNvZGVjX2lkOwotKyAgICBmbHZfY29kZWNpZCAmPSBGTFZfVklERU9fQ09E RUNJRF9NQVNLOwotKwotKyAgICBpZiAoZmx2LT5leGhlYWRlcikgewotKyAgICAgICAgdWludDMy X3QgY29kZWNfaWQgPSBhdmlvX3JiMzIocy0+cGIpOwotKwotKyAgICAgICAgc3dpdGNoKGNvZGVj X2lkKSB7Ci0rICAgICAgICAgICAgY2FzZSBNS0JFVEFHKCdoJywgJ3YnLCAnYycsICcxJyk6Ci0r ICAgICAgICAgICAgICAgIHBhci0+Y29kZWNfaWQgPSBBVl9DT0RFQ19JRF9IRVZDOwotKyAgICAg ICAgICAgICAgICB2c3RyZWFtaS0+bmVlZF9wYXJzaW5nID0gQVZTVFJFQU1fUEFSU0VfSEVBREVS UzsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0rICAgICAgICAgICAgZGVmYXVsdDoKLSsg ICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rICAgIH0KLSAgICAgc3dpdGNoIChm bHZfY29kZWNpZCkgewotICAgICBjYXNlIEZMVl9DT0RFQ0lEX0gyNjM6Ci0gICAgICAgICBwYXIt PmNvZGVjX2lkID0gQVZfQ09ERUNfSURfRkxWMTsKLUBAIC03OTYsNiArODI1LDcgQEAgc3RhdGlj IGludCBmbHZfcmVhZF9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQotICAgICBzLT5zdGFydF90 aW1lID0gMDsKLSAgICAgZmx2LT5zdW1fZmx2X3RhZ19zaXplID0gMDsKLSAgICAgZmx2LT5sYXN0 X2tleWZyYW1lX3N0cmVhbV9pbmRleCA9IC0xOwotKyAgICBmbHYtPmV4aGVhZGVyID0gMDsKLSAK LSAgICAgcmV0dXJuIDA7Ci0gfQotQEAgLTEwNzEsNiArMTEwMSwxMSBAQCByZXRyeToKLSAgICAg fSBlbHNlIGlmICh0eXBlID09IEZMVl9UQUdfVFlQRV9WSURFTykgewotICAgICAgICAgc3RyZWFt X3R5cGUgPSBGTFZfU1RSRUFNX1RZUEVfVklERU87Ci0gICAgICAgICBmbGFncyAgICA9IGF2aW9f cjgocy0+cGIpOwotKyAgICAgICAgLyoKLSsgICAgICAgICAqIFJlZmVyZW5jZSBFbmhhbmNpbmcg RkxWIDIwMjMtMDMtdjEuMC4wLUIuOAotKyAgICAgICAgICogaHR0cHM6Ly9naXRodWIuY29tL3Zl b3ZlcmEvZW5oYW5jZWQtcnRtcC9ibG9iL21haW4vZW5oYW5jZWQtcnRtcC12MS5wZGYKLSsgICAg ICAgICAqICovCi0rICAgICAgICBmbHYtPmV4aGVhZGVyID0gKGZsYWdzID4+IDcpICYgMTsKLSAg ICAgICAgIHNpemUtLTsKLSAgICAgICAgIGlmICgoZmxhZ3MgJiBGTFZfVklERU9fRlJBTUVUWVBF X01BU0spID09IEZMVl9GUkFNRV9WSURFT19JTkZPX0NNRCkKLSAgICAgICAgICAgICBnb3RvIHNr aXA7Ci1AQCAtMTEyOSw3ICsxMTY0LDcgQEAgc2tpcDoKLSAgICAgICAgICAgICAgICAgYnJlYWs7 Ci0gICAgICAgICB9IGVsc2UgaWYgKHN0cmVhbV90eXBlID09IEZMVl9TVFJFQU1fVFlQRV9WSURF TykgewotICAgICAgICAgICAgIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJ QV9UWVBFX1ZJREVPICYmCi0tICAgICAgICAgICAgICAgIChzLT52aWRlb19jb2RlY19pZCB8fCBm bHZfc2FtZV92aWRlb19jb2RlYyhzdC0+Y29kZWNwYXIsIGZsYWdzKSkpCi0rICAgICAgICAgICAg ICAgIChzLT52aWRlb19jb2RlY19pZCB8fCBmbHZfc2FtZV92aWRlb19jb2RlYyhzLCBzdC0+Y29k ZWNwYXIsIGZsYWdzKSkpCi0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfSBlbHNl IGlmIChzdHJlYW1fdHlwZSA9PSBGTFZfU1RSRUFNX1RZUEVfU1VCVElUTEUpIHsKLSAgICAgICAg ICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRM RSkKLUBAIC0xMjMwLDcgKzEyNjUsNyBAQCByZXRyeV9kdXJhdGlvbjoKLSAgICAgICAgICAgICBh dmNvZGVjX3BhcmFtZXRlcnNfZnJlZSgmcGFyKTsKLSAgICAgICAgIH0KLSAgICAgfSBlbHNlIGlm IChzdHJlYW1fdHlwZSA9PSBGTFZfU1RSRUFNX1RZUEVfVklERU8pIHsKLS0gICAgICAgIGludCBy ZXQgPSBmbHZfc2V0X3ZpZGVvX2NvZGVjKHMsIHN0LCBmbGFncyAmIEZMVl9WSURFT19DT0RFQ0lE X01BU0ssIDEpOwotKyAgICAgICAgaW50IHJldCA9IGZsdl9zZXRfdmlkZW9fY29kZWMocywgc3Qs IGZsYWdzLCAxKTsKLSAgICAgICAgIGlmIChyZXQgPCAwKQotICAgICAgICAgICAgIHJldHVybiBy ZXQ7Ci0gICAgICAgICBzaXplIC09IHJldDsKLUBAIC0xMjQyLDE2ICsxMjc3LDIzIEBAIHJldHJ5 X2R1cmF0aW9uOgotIAotICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RF Q19JRF9BQUMgfHwKLSAgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNf SURfSDI2NCB8fAotLSAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9NUEVHNCkgewotLSAgICAgICAgaW50IHR5cGUgPSBhdmlvX3I4KHMtPnBiKTsKLS0gICAgICAg IHNpemUtLTsKLSsgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf TVBFRzQgfHwKLSsgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf SEVWQykgewotKyAgICAgICAgaW50IHR5cGUgPSAwOwotKyAgICAgICAgaWYgKGZsdi0+ZXhoZWFk ZXIgJiYgc3RyZWFtX3R5cGUgPT0gRkxWX1NUUkVBTV9UWVBFX1ZJREVPKSB7Ci0rICAgICAgICAg ICAgdHlwZSA9IGZsYWdzICYgMHgwRjsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAg dHlwZSA9IGF2aW9fcjgocy0+cGIpOwotKyAgICAgICAgICAgIHNpemUtLTsKLSsgICAgICAgIH0K LSAKLSAgICAgICAgIGlmIChzaXplIDwgMCkgewotICAgICAgICAgICAgIHJldCA9IEFWRVJST1Jf SU5WQUxJRERBVEE7Ci0gICAgICAgICAgICAgZ290byBsZWF2ZTsKLSAgICAgICAgIH0KLSAKLS0g ICAgICAgIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwg c3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCkgewotKyAgICAgICAg aWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fCBzdC0+Y29k ZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8Ci0rICAgICAgICAgICAgKHN0 LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQyAmJiB0eXBlID09IFBhY2tl dFR5cGVDb2RlZEZyYW1lcykpIHsKLSAgICAgICAgICAgICAvLyBzaWduIGV4dGVuc2lvbgotICAg ICAgICAgICAgIGludDMyX3QgY3RzID0gKGF2aW9fcmIyNChzLT5wYikgKyAweGZmODAwMDAwKSBe IDB4ZmY4MDAwMDA7Ci0gICAgICAgICAgICAgcHRzID0gYXZfc2F0X2FkZDY0KGR0cywgY3RzKTsK LUBAIC0xMjY3LDcgKzEzMDksNyBAQCByZXRyeV9kdXJhdGlvbjoKLSAgICAgICAgICAgICB9Ci0g ICAgICAgICB9Ci0gICAgICAgICBpZiAodHlwZSA9PSAwICYmICghc3QtPmNvZGVjcGFyLT5leHRy YWRhdGEgfHwgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BQUMgfHwKLS0g ICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQpKSB7 Ci0rICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0 IHx8IHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykpIHsKLSAgICAg ICAgICAgICBBVkRpY3Rpb25hcnlFbnRyeSAqdDsKLSAKLSAgICAgICAgICAgICBpZiAoc3QtPmNv ZGVjcGFyLT5leHRyYWRhdGEpIHsKLQotRnJvbSBwYXRjaHdvcmsgTW9uIE1heSAxNSAwODozMTo1 OCAyMDIzCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgotTUlNRS1W ZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKLVgtUGF0Y2h3b3Jr LVN1Ym1pdHRlcjogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgotWC1QYXRjaHdvcmst SWQ6IDQxNjE3Ci1EZWxpdmVyZWQtVG86IGZmbXBlZ3BhdGNod29yazJAZ21haWwuY29tCi1SZWNl aXZlZDogYnkgMjAwMjphMDU6NmEyMDpiYTkxOmIwOjEwNTpmZWI6NzFmMiB3aXRoIFNNVFAgaWQK LSBmYjE3Y3NwMTQ0NDIwOXB6YjsKLSAgICAgICAgTW9uLCAxNSBNYXkgMjAyMyAwMTozMzozMSAt MDcwMCAoUERUKQotWC1Hb29nbGUtU210cC1Tb3VyY2U6IAotIEFDSEhVWjVOL01XbGQ5Zlh6b2tr UlZTMWUxM0FZYWtrUnlIL1J2eUJpSjd4QTUxMkVXZFdnckdFNGZlcnVnY1RSb0hOYWh2amF5QzkK LVgtUmVjZWl2ZWQ6IGJ5IDIwMDI6YTE3OjkwNzo5NzI0OmIwOjk2YToxMjYwOmRiZjUgd2l0aCBT TVRQIGlkCi0gamczNi0yMDAyMGExNzA5MDc5NzI0MDBiMDA5NmExMjYwZGJmNW1yMTgwODI1NTRl amMuNDUuMTY4NDEzOTYxMTQ0NzsKLSAgICAgICAgTW9uLCAxNSBNYXkgMjAyMyAwMTozMzozMSAt MDcwMCAoUERUKQotQVJDLVNlYWw6IGk9MTsgYT1yc2Etc2hhMjU2OyB0PTE2ODQxMzk2MTE7IGN2 PW5vbmU7Ci0gICAgICAgIGQ9Z29vZ2xlLmNvbTsgcz1hcmMtMjAxNjA4MTY7Ci0gICAgICAgIGI9 b3A2WGwzWWluT1NkOGQvWWE0WXBRakhTYkp4MHQ3ZkhhQ0h2dnF2a0pnVGJLZmptVEpqREZzTVdr ZVQvY2VBMWxBCi0gICAgICAgICB4VjlZMUpHckFsWm11ZHBnYUp0WEh1a0xKZXNzbkJycWFCeTVn bTBsWDZiSjBYNEFLSnQvRjdHQjNGUjNPUElTcTc5dwotICAgICAgICAgN2RqZUhVeDJWQXhmV24x YXdDY0ZyY3l5TVByR0IyR1BNZG9YeGNVVm15U05OSzBvaHVyb1EySmhWUmFqd2owc0lCRmcKLSAg ICAgICAgIGYwcHU3dlhYOWN0NDk5dEZsNXJIRWQvLzJYbDNyWTZrTkhmUGxNT2NKRWNsVCszNVRV YVRXRTg4K3JKT0RhaU1BcmNaCi0gICAgICAgICBSYUZLOHhxZkFPSmp3MFg5dDZZaXdCazFLbC9z RktFajcxRnh1NWtoZzdJdmhGN2t6UkRTWlhMQ2tLVzlVdlBZaEdPbAotICAgICAgICAgMjVCdz09 Ci1BUkMtTWVzc2FnZS1TaWduYXR1cmU6IGk9MTsgYT1yc2Etc2hhMjU2OyBjPXJlbGF4ZWQvcmVs YXhlZDsgZD1nb29nbGUuY29tOwotIHM9YXJjLTIwMTYwODE2OwotICAgICAgICBoPXNlbmRlcjpl cnJvcnMtdG86Y29udGVudC10cmFuc2Zlci1lbmNvZGluZzpjYzpyZXBseS10bwotICAgICAgICAg Omxpc3Qtc3Vic2NyaWJlOmxpc3QtaGVscDpsaXN0LXBvc3Q6bGlzdC1hcmNoaXZlOmxpc3QtdW5z dWJzY3JpYmUKLSAgICAgICAgIDpsaXN0LWlkOnByZWNlZGVuY2U6c3ViamVjdDpmZWVkYmFjay1p ZDptaW1lLXZlcnNpb246cmVmZXJlbmNlcwotICAgICAgICAgOmluLXJlcGx5LXRvOm1lc3NhZ2Ut aWQ6ZGF0ZTp0bzpmcm9tOmRlbGl2ZXJlZC10bzsKLSAgICAgICAgYmg9ME8wa1VHRDVyOGxnWEVp QzJSVWZpWjFjY1ZSUGQwM2xXZHMwZHFkVkVxMD07Ci0gICAgICAgIGI9T0F2WkFUZW9OcS9CSTNw SmQyMVh6Mm5LaCtaSThaa29mZTRPYjZVU3UxWkVPeVp6SzJ4eGd0eEw2U2pKQXhlY0c2Ci0gICAg ICAgICBOZkVDZzhlMTNETGJuVkFCNU9uTUs4VFkvSFYvNE4vaXFQa3NuNlBiSlNrQ3lhZlJxZzQ3 NytTUnM3dE9sODljM2lzcgotICAgICAgICAgQ3A4bytqN3QrZ1cyZmtWOVk2TDhNWmE5ZXRKcHVz YTBMWVhWQkxQRHMrdEhOZ1hOZWM5VVRBMVlub1N5TXFFcnJoNTgKLSAgICAgICAgIGNoTWg2QjZQ KzVhUmNLckJmS1pZMUY4V0F6TWpwaGRRNzhjM1laK2lrZ0dma29QZ1JLVEVVcSt4UUFNbTdVWGly TWNuCi0gICAgICAgICBxdG5kZURpUXlwTjFlZzdMaUViQXNMaGo3SzJqaWJJbERtd1VrKzZKREUx QVN6MDVGVmlBYmszbkZmV3lkTlA4aVVsaAotICAgICAgICAgeitDUT09Ci1BUkMtQXV0aGVudGlj YXRpb24tUmVzdWx0czogaT0xOyBteC5nb29nbGUuY29tOwotICAgICAgIHNwZj1wYXNzIChnb29n bGUuY29tOiBkb21haW4gb2YgZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZwotIGRlc2ln bmF0ZXMgNzkuMTI0LjE3LjEwMCBhcyBwZXJtaXR0ZWQgc2VuZGVyKQotIHNtdHAubWFpbGZyb209 ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZwotUmV0dXJuLVBhdGg6IDxmZm1wZWctZGV2 ZWwtYm91bmNlc0BmZm1wZWcub3JnPgotUmVjZWl2ZWQ6IGZyb20gZmZib3gwLWJnLm1wbGF5ZXJo cS5odSAoZmZib3gwLWJnLmZmbXBlZy5vcmcuIFs3OS4xMjQuMTcuMTAwXSkKLSAgICAgICAgYnkg bXguZ29vZ2xlLmNvbSB3aXRoIEVTTVRQIGlkCi0gcnYyMi0yMDAyMGExNzA5MDcxMGQ2MDBiMDA5 NjVlOGM2N2Q3ZHNpMTEzOTkxOTJlamIuMjg1LjIwMjMuMDUuMTUuMDEuMzMuMzE7Ci0gICAgICAg IE1vbiwgMTUgTWF5IDIwMjMgMDE6MzM6MzEgLTA3MDAgKFBEVCkKLVJlY2VpdmVkLVNQRjogcGFz cyAoZ29vZ2xlLmNvbTogZG9tYWluIG9mIGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcK LSBkZXNpZ25hdGVzIDc5LjEyNC4xNy4xMDAgYXMgcGVybWl0dGVkIHNlbmRlcikgY2xpZW50LWlw PTc5LjEyNC4xNy4xMDA7Ci1BdXRoZW50aWNhdGlvbi1SZXN1bHRzOiBteC5nb29nbGUuY29tOwot ICAgICAgIHNwZj1wYXNzIChnb29nbGUuY29tOiBkb21haW4gb2YgZmZtcGVnLWRldmVsLWJvdW5j ZXNAZmZtcGVnLm9yZwotIGRlc2lnbmF0ZXMgNzkuMTI0LjE3LjEwMCBhcyBwZXJtaXR0ZWQgc2Vu ZGVyKQotIHNtdHAubWFpbGZyb209ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZwotUmVj ZWl2ZWQ6IGZyb20gWzEyNy4wLjEuMV0gKGxvY2FsaG9zdCBbMTI3LjAuMC4xXSkKLQlieSBmZmJv eDAtYmcubXBsYXllcmhxLmh1IChQb3N0Zml4KSB3aXRoIEVTTVRQIGlkIENBRjM2NjhDMDhCOwot CU1vbiwgMTUgTWF5IDIwMjMgMTE6MzM6MjIgKzAzMDAgKEVFU1QpCi1YLU9yaWdpbmFsLVRvOiBm Zm1wZWctZGV2ZWxAZmZtcGVnLm9yZwotRGVsaXZlcmVkLVRvOiBmZm1wZWctZGV2ZWxAZmZtcGVn Lm9yZwotUmVjZWl2ZWQ6IGZyb20gYmc0LmV4bWFpbC5xcS5jb20gKGJnNC5leG1haWwucXEuY29t IFs0My4xNTUuNjcuMTU4XSkKLSBieSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChQb3N0Zml4KSB3 aXRoIEVTTVRQUyBpZCA1NjEzMDY4QzA4QgotIGZvciA8ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+ OyBNb24sIDE1IE1heSAyMDIzIDExOjMzOjE2ICswMzAwIChFRVNUKQotWC1RUS1taWQ6IGJpemVz bXRwNjJ0MTY4NDEzOTU5MXQ1dmY1aXNzCi1SZWNlaXZlZDogZnJvbSBsb2NhbGhvc3QgKCBbMTAz LjEwMi4yMDMuMjA0XSkgYnkgYml6ZXNtdHAucXEuY29tIChFU01UUCkgd2l0aAotIGlkIDsgTW9u LCAxNSBNYXkgMjAyMyAxNjozMzowOSArMDgwMCAoQ1NUKQotWC1RUS1TU0Y6IDAxMTAwMDAwMDAw MDAwWjBaMDAwMDAwQTAwMDAwMDAKLVgtUVEtRkVBVDogMFZZV0xMQ2Y0cmQ4c2Y0QjB4ZEk0NXlP OXBhN2NBNUxrVU41cjhqcnlsLzlIVVRjRU9jRG5xNnNFRkxwVQotIHBaL0pud1NJcWZxRnRSQjhC cTgrMDMyV2N3WklCZEdXbU9VcElaTGNEbEJQSFZ0UzlZd1NPNTZwN3RlMDkzMm1oUUhRVldyCi0g Mk1KNjBFaFBjeGZoWEczTTg5UVN5c1lEZ0xqVUlSYmIvY1AvQnIwNW1DSjA1YytRNE56V3dsUnd3 ZU9HMGxVSjRhTU5saTkKLSBpM1FmOGxTQUs4aEszSldZWlAwRmc2NkphRmtadnc2WXo2TjRFU1Zm NFZwODVyd1dLUGZwQno1MzhJaUN6ZS9lUGJWZ1pXQgotIHp2YlUxbVZBa2FwVDA1Y1RMeXFBbHY3 dGVmZmxnb1ljclc3OVorT3B5MndTWURaTHBDa1JJZSt3NHlXRzdlQ2c3MWRVZ25jCi0gNzlEK01W eUhTSmp1WFMvc1FMYWVGYW5TMVY1NVdLNGl6eTlKL2JGSGRTcHJteVN3bXBrOGhmNXpoSVpPUT09 Ci1YLVFRLUdvb2RCZzogMAotWC1CSVpNQUlMLUlEOiA1Mzc3OTk2MTY1MzQwNTI1NjE5Ci1Gcm9t OiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+Ci1UbzogZmZtcGVnLWRldmVsQGZmbXBl Zy5vcmcKLURhdGU6IE1vbiwgMTUgTWF5IDIwMjMgMTY6MzE6NTggKzA4MDAKLU1lc3NhZ2UtSWQ6 IDwyMDIzMDUxNTA4MzIwMS40ODIwMS00LWxxQGNoaW5hZmZtcGVnLm9yZz4KLVgtTWFpbGVyOiBn aXQtc2VuZC1lbWFpbCAyLjQwLjAKLUluLVJlcGx5LVRvOiA8MjAyMzA1MTUwODMyMDEuNDgyMDEt MS1scUBjaGluYWZmbXBlZy5vcmc+Ci1SZWZlcmVuY2VzOiAKLSA8Q0FFZy1KZS12WUQ5N0tuYmFx VGtLNT1VSjlUM2h0bXRIM1F5a2N3bzMrck5DeD13K2pRQG1haWwuZ21haWwuY29tPgotIDwyMDIz MDUxNTA4MzIwMS40ODIwMS0xLWxxQGNoaW5hZmZtcGVnLm9yZz4KLU1JTUUtVmVyc2lvbjogMS4w Ci1YLVFRLVNFTkRTSVpFOiA1MjAKLUZlZWRiYWNrLUlEOiBiaXplc210cDpjaGluYWZmbXBlZy5v cmc6cXliZ2xvZ2ljc3Zyc3o6cXliZ2xvZ2ljc3Zyc3ozYS0zCi1TdWJqZWN0OiBbRkZtcGVnLWRl dmVsXSBbUEFUQ0ggdjEwIDMvNl0gYXZmb3JtYXQvZmx2ZW5jOiBzdXBwb3J0IG11eCBhdjEgaW4K LSBlbmhhbmNlZCBmbHYKLVgtQmVlblRoZXJlOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwotWC1N YWlsbWFuLVZlcnNpb246IDIuMS4yOQotUHJlY2VkZW5jZTogbGlzdAotTGlzdC1JZDogRkZtcGVn IGRldmVsb3BtZW50IGRpc2N1c3Npb25zIGFuZCBwYXRjaGVzIDxmZm1wZWctZGV2ZWwuZmZtcGVn Lm9yZz4KLUxpc3QtVW5zdWJzY3JpYmU6IDxodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9vcHRp b25zL2ZmbXBlZy1kZXZlbD4sCi0gPG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcu b3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+Ci1MaXN0LUFyY2hpdmU6IDxodHRwczovL2ZmbXBlZy5v cmcvcGlwZXJtYWlsL2ZmbXBlZy1kZXZlbD4KLUxpc3QtUG9zdDogPG1haWx0bzpmZm1wZWctZGV2 ZWxAZmZtcGVnLm9yZz4KLUxpc3QtSGVscDogPG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBm Zm1wZWcub3JnP3N1YmplY3Q9aGVscD4KLUxpc3QtU3Vic2NyaWJlOiA8aHR0cHM6Ly9mZm1wZWcu b3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsPiwKLSA8bWFpbHRvOmZmbXBlZy1kZXZl bC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD1zdWJzY3JpYmU+Ci1SZXBseS1UbzogRkZtcGVn IGRldmVsb3BtZW50IGRpc2N1c3Npb25zIGFuZCBwYXRjaGVzIDxmZm1wZWctZGV2ZWxAZmZtcGVn Lm9yZz4KLUNjOiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+Ci1FcnJvcnMtVG86IGZm bXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKLVNlbmRlcjogImZmbXBlZy1kZXZlbCIgPGZm bXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+Ci1YLVRVSUQ6IGRSZlBkc0l2ZXh6aAotCi1T aWduZWQtb2ZmLWJ5OiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5vcmc+Ci0tLS0KLSBsaWJh dmZvcm1hdC9NYWtlZmlsZSB8ICAyICstCi0gbGliYXZmb3JtYXQvZmx2ZW5jLmMgfCAyMiArKysr KysrKysrKysrKysrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCA1 IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJh dmZvcm1hdC9NYWtlZmlsZQotaW5kZXggMWVmM2QxNTQ2Ny4uYzg2OGUxNjI2YyAxMDA2NDQKLS0t LSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlCi0rKysgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQotQEAg LTIxNCw3ICsyMTQsNyBAQCBPQkpTLSQoQ09ORklHX0ZMQUNfTVVYRVIpICAgICAgICAgICAgICAg ICs9IGZsYWNlbmMubyBmbGFjZW5jX2hlYWRlci5vIFwKLSBPQkpTLSQoQ09ORklHX0ZMSUNfREVN VVhFUikgICAgICAgICAgICAgICs9IGZsaWMubwotIE9CSlMtJChDT05GSUdfRkxWX0RFTVVYRVIp ICAgICAgICAgICAgICAgKz0gZmx2ZGVjLm8KLSBPQkpTLSQoQ09ORklHX0xJVkVfRkxWX0RFTVVY RVIpICAgICAgICAgICs9IGZsdmRlYy5vCi0tT0JKUy0kKENPTkZJR19GTFZfTVVYRVIpICAgICAg ICAgICAgICAgICArPSBmbHZlbmMubyBhdmMubyBoZXZjLm8KLStPQkpTLSQoQ09ORklHX0ZMVl9N VVhFUikgICAgICAgICAgICAgICAgICs9IGZsdmVuYy5vIGF2Yy5vIGhldmMubyBhdjEubwotIE9C SlMtJChDT05GSUdfRk9VUlhNX0RFTVVYRVIpICAgICAgICAgICAgKz0gNHhtLm8KLSBPQkpTLSQo Q09ORklHX0ZSQU1FQ1JDX01VWEVSKSAgICAgICAgICAgICs9IGZyYW1lY3JjZW5jLm8gZnJhbWVo YXNoLm8KLSBPQkpTLSQoQ09ORklHX0ZSQU1FSEFTSF9NVVhFUikgICAgICAgICAgICs9IGhhc2hl bmMubyBmcmFtZWhhc2gubwotZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2ZsdmVuYy5jIGIvbGli YXZmb3JtYXQvZmx2ZW5jLmMKLWluZGV4IDM1ZTE5OGZhMTUuLmMxNzg0YjMzMmQgMTAwNjQ0Ci0t LS0gYS9saWJhdmZvcm1hdC9mbHZlbmMuYwotKysrIGIvbGliYXZmb3JtYXQvZmx2ZW5jLmMKLUBA IC0yOCw2ICsyOCw3IEBACi0gI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBlZzRhdWRpby5oIgotICNp bmNsdWRlICJhdmlvLmgiCi0gI2luY2x1ZGUgImF2Yy5oIgotKyNpbmNsdWRlICJhdjEuaCIKLSAj aW5jbHVkZSAiaGV2Yy5oIgotICNpbmNsdWRlICJhdmZvcm1hdC5oIgotICNpbmNsdWRlICJmbHYu aCIKLUBAIC00OCw2ICs0OSw3IEBAIHN0YXRpYyBjb25zdCBBVkNvZGVjVGFnIGZsdl92aWRlb19j b2RlY19pZHNbXSA9IHsKLSAgICAgeyBBVl9DT0RFQ19JRF9WUDZBLCAgICAgRkxWX0NPREVDSURf VlA2QSB9LAotICAgICB7IEFWX0NPREVDX0lEX0gyNjQsICAgICBGTFZfQ09ERUNJRF9IMjY0IH0s Ci0gICAgIHsgQVZfQ09ERUNfSURfSEVWQywgICAgIE1LQkVUQUcoJ2gnLCAndicsICdjJywgJzEn KSB9LAotKyAgICB7IEFWX0NPREVDX0lEX0FWMSwgICAgICBNS0JFVEFHKCdhJywgJ3YnLCAnMCcs ICcxJykgfSwKLSAgICAgeyBBVl9DT0RFQ19JRF9OT05FLCAgICAgMCB9Ci0gfTsKLSAKLUBAIC00 OTEsNyArNDkzLDggQEAgc3RhdGljIHZvaWQgZmx2X3dyaXRlX2NvZGVjX2hlYWRlcihBVkZvcm1h dENvbnRleHQqIHMsIEFWQ29kZWNQYXJhbWV0ZXJzKiBwYXIsIGkKLSAgICAgRkxWQ29udGV4dCAq Zmx2ID0gcy0+cHJpdl9kYXRhOwotIAotICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RF Q19JRF9BQUMgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0Ci0tICAgICAgICAg ICAgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fCBwYXItPmNvZGVjX2lk ID09IEFWX0NPREVDX0lEX0hFVkMpIHsKLSsgICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX01QRUc0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQwot KyAgICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSB7Ci0gICAg ICAgICBpbnQ2NF90IHBvczsKLSAgICAgICAgIGF2aW9fdzgocGIsCi0gICAgICAgICAgICAgICAg IHBhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8gPwotQEAgLTUzNyw2ICs1NDAs OSBAQCBzdGF0aWMgdm9pZCBmbHZfd3JpdGVfY29kZWNfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCog cywgQVZDb2RlY1BhcmFtZXRlcnMqIHBhciwgaQotICAgICAgICAgICAgIGlmIChwYXItPmNvZGVj X2lkID09IEFWX0NPREVDX0lEX0hFVkMpIHsKLSAgICAgICAgICAgICAgICAgYXZpb193OChwYiwg RkxWX0lTX0VYX0hFQURFUiB8IFBhY2tldFR5cGVTZXF1ZW5jZVN0YXJ0KTsgLy8gRXhWaWRlb1Rh Z0hlYWRlciBtb2RlIHdpdGggUGFja2V0VHlwZVNlcXVlbmNlU3RhcnQKLSAgICAgICAgICAgICAg ICAgYXZpb193cml0ZShwYiwgImh2YzEiLCA0KTsKLSsgICAgICAgICAgICB9IGVsc2UgaWYgKHBh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSB7Ci0rICAgICAgICAgICAgICAgIGF2aW9f dzgocGIsIEZMVl9JU19FWF9IRUFERVIgfCBQYWNrZXRUeXBlU2VxdWVuY2VTdGFydCk7Ci0rICAg ICAgICAgICAgICAgIGF2aW9fd3JpdGUocGIsICJhdjAxIiwgNCk7Ci0gICAgICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAgICAgYXZpb193OChwYiwgcGFyLT5jb2RlY190YWcgfCBGTFZf RlJBTUVfS0VZKTsgLy8gZmxhZ3MKLSAgICAgICAgICAgICAgICAgYXZpb193OChwYiwgMCk7IC8v IEFWQyBzZXF1ZW5jZSBoZWFkZXIKLUBAIC01NDUsNiArNTUxLDggQEAgc3RhdGljIHZvaWQgZmx2 X3dyaXRlX2NvZGVjX2hlYWRlcihBVkZvcm1hdENvbnRleHQqIHMsIEFWQ29kZWNQYXJhbWV0ZXJz KiBwYXIsIGkKLSAKLSAgICAgICAgICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9IRVZDKQotICAgICAgICAgICAgICAgICBmZl9pc29tX3dyaXRlX2h2Y2MocGIsIHBhci0+ZXh0 cmFkYXRhLCBwYXItPmV4dHJhZGF0YV9zaXplLCAwKTsKLSsgICAgICAgICAgICBlbHNlIGlmIChw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkKLSsgICAgICAgICAgICAgICAgZmZfaXNv bV93cml0ZV9hdjFjKHBiLCBwYXItPmV4dHJhZGF0YSwgcGFyLT5leHRyYWRhdGFfc2l6ZSwgMSk7 Ci0gICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICBmZl9pc29tX3dyaXRlX2F2Y2Mo cGIsIHBhci0+ZXh0cmFkYXRhLCBwYXItPmV4dHJhZGF0YV9zaXplKTsKLSAgICAgICAgIH0KLUBA IC04NDMsMTMgKzg1MSwxNSBAQCBzdGF0aWMgaW50IGZsdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRD b250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQotICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9D T0RFQ19JRF9WUDZGIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA2QSB8fAotICAg ICAgICAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDYgIHx8IHBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfQUFDKQotICAgICAgICAgZmxhZ3Nfc2l6ZSA9IDI7Ci0tICAgIGVsc2Ug aWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fCBwYXItPmNvZGVjX2lkID09 IEFWX0NPREVDX0lEX01QRUc0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykK LSsgICAgZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHBhci0+ Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBFRzQgfHwKLSsgICAgICAgICAgICAgcGFyLT5jb2Rl Y19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf QVYxKQotICAgICAgICAgZmxhZ3Nfc2l6ZSA9IDU7Ci0gICAgIGVsc2UKLSAgICAgICAgIGZsYWdz X3NpemUgPSAxOwotIAotICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BQUMg fHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0Ci0tICAgICAgICAgICAgfHwgcGFy LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX0hFVkMpIHsKLSsgICAgICAgICAgICB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVD X0lEX01QRUc0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQwotKyAgICAgICAg ICAgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSB7Ci0gICAgICAgICBzaXpl X3Qgc2lkZV9zaXplOwotICAgICAgICAgdWludDhfdCAqc2lkZSA9IGF2X3BhY2tldF9nZXRfc2lk ZV9kYXRhKHBrdCwgQVZfUEtUX0RBVEFfTkVXX0VYVFJBREFUQSwgJnNpZGVfc2l6ZSk7Ci0gICAg ICAgICBpZiAoc2lkZSAmJiBzaWRlX3NpemUgPiAwICYmIChzaWRlX3NpemUgIT0gcGFyLT5leHRy YWRhdGFfc2l6ZSB8fCBtZW1jbXAoc2lkZSwgcGFyLT5leHRyYWRhdGEsIHNpZGVfc2l6ZSkpKSB7 Ci1AQCAtODY5LDcgKzg3OSw4IEBAIHN0YXRpYyBpbnQgZmx2X3dyaXRlX3BhY2tldChBVkZvcm1h dENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCi0gICAgICAgICAgICAgICAgIlBhY2tldHMgYXJl IG5vdCBpbiB0aGUgcHJvcGVyIG9yZGVyIHdpdGggcmVzcGVjdCB0byBEVFNcbiIpOwotICAgICAg ICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKLSAgICAgfQotLSAgICBpZiAocGFyLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBF RzQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKSB7Ci0rICAgIGlmIChwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RF Q19JRF9NUEVHNCB8fAotKyAgICAgICAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZD IHx8ICBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkgewotICAgICAgICAgaWYgKHBr dC0+cHRzID09IEFWX05PUFRTX1ZBTFVFKSB7Ci0gICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xP R19FUlJPUiwgIlBhY2tldCBpcyBtaXNzaW5nIFBUU1xuIik7Ci0gICAgICAgICAgICAgcmV0dXJu IEFWRVJST1IoRUlOVkFMKTsKLUBAIC05ODIsNiArOTkzLDkgQEAgc3RhdGljIGludCBmbHZfd3Jp dGVfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKLSAgICAgICAgIGlm IChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpIHsKLSAgICAgICAgICAgICBhdmlv X3c4KHBiLCBGTFZfSVNfRVhfSEVBREVSIHwgUGFja2V0VHlwZUNvZGVkRnJhbWVzWCk7IC8vIEV4 VmlkZW9UYWdIZWFkZXIgbW9kZSB3aXRoIFBhY2tldFR5cGVDb2RlZEZyYW1lc1gKLSAgICAgICAg ICAgICBhdmlvX3dyaXRlKHBiLCAiaHZjMSIsIDQpOwotKyAgICAgICAgfSBlbHNlIGlmIChwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkgewotKyAgICAgICAgICAgIGF2aW9fdzgocGIs IEZMVl9JU19FWF9IRUFERVIgfCBQYWNrZXRUeXBlQ29kZWRGcmFtZXMpOwotKyAgICAgICAgICAg IGF2aW9fd3JpdGUocGIsICJhdjAxIiwgNCk7Ci0gICAgICAgICB9IGVsc2UgewotICAgICAgICAg ICAgIGF2aW9fdzgocGIsIGZsYWdzKTsKLSAgICAgICAgIH0KLQotRnJvbSBwYXRjaHdvcmsgTW9u IE1heSAxNSAwODozMTo1OSAyMDIzCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9 InV0Zi04IgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdi aXQKLVgtUGF0Y2h3b3JrLVN1Ym1pdHRlcjogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3Jn PgotWC1QYXRjaHdvcmstSWQ6IDQxNjE4Ci1EZWxpdmVyZWQtVG86IGZmbXBlZ3BhdGNod29yazJA Z21haWwuY29tCi1SZWNlaXZlZDogYnkgMjAwMjphMDU6NmEyMDpiYTkxOmIwOjEwNTpmZWI6NzFm MiB3aXRoIFNNVFAgaWQKLSBmYjE3Y3NwMTQ0NDI5MHB6YjsKLSAgICAgICAgTW9uLCAxNSBNYXkg MjAyMyAwMTozMzo0MSAtMDcwMCAoUERUKQotWC1Hb29nbGUtU210cC1Tb3VyY2U6IAotIEFDSEhV WjdrNUhTWVZwS2x1dERDSDNCVk4wM29RMWVROU5Xakt3QmViTEd2NWZLMGQycVZHR2dDdEJvM1hk RUdsRFREVXV2bER6UlgKLVgtUmVjZWl2ZWQ6IGJ5IDIwMDI6YTE3OjkwNzo5MzQ3OmIwOjk0Zjoz MjJkOjkwOWMgd2l0aCBTTVRQIGlkCi0gYnY3LTIwMDIwYTE3MDkwNzkzNDcwMGIwMDk0ZjMyMmQ5 MDljbXIyNjk5NDExOGVqYy4zNC4xNjg0MTM5NjIwOTg2OwotICAgICAgICBNb24sIDE1IE1heSAy MDIzIDAxOjMzOjQwIC0wNzAwIChQRFQpCi1BUkMtU2VhbDogaT0xOyBhPXJzYS1zaGEyNTY7IHQ9 MTY4NDEzOTYyMDsgY3Y9bm9uZTsKLSAgICAgICAgZD1nb29nbGUuY29tOyBzPWFyYy0yMDE2MDgx NjsKLSAgICAgICAgYj1CQlNnZWdYUjF1MEs3NjdSOU1BeFFkZHQ0OWhaTmhEUytZZ0NIR1lvMEIw N0NsdGVLMDE4NzM5VEs5dHVwVmg3cEsKLSAgICAgICAgIHd1dmsvZ3prRXBJWnBmMkkzTFFucGF4 dlF4MFpubGxTS3l6K3grNTYwd0VWS2tRdzV0bHdwZ3I0cUEzbTBBcEJCbVFSCi0gICAgICAgICAy WlV1NldScEJuVmVYSmJUNW4reW1JVHJMZDFOVlhMTlBxb3o3a0wwaURNTDBiMmlDOVBxQ29HUlRI RjZ6SlpGdENIMgotICAgICAgICAgWllVcTRPZGNiZmx2cXFMQnZLdlNnRXd1Vm9mMGJxRHdEOGtm cTlub0tUZjd3cng1YmNkSWJxNlhNWUcxbjZBblBxN1IKLSAgICAgICAgIFIrZWttaG9zRm9aN0ln b2hBa2o5azhqNmw0aXBDYzZ5Vk4yTThUTjFUZlR3UkMwMXZ6eitTUllPWFpXTE5iMGVxWnpoCi0g ICAgICAgICBacDJBPT0KLUFSQy1NZXNzYWdlLVNpZ25hdHVyZTogaT0xOyBhPXJzYS1zaGEyNTY7 IGM9cmVsYXhlZC9yZWxheGVkOyBkPWdvb2dsZS5jb207Ci0gcz1hcmMtMjAxNjA4MTY7Ci0gICAg ICAgIGg9c2VuZGVyOmVycm9ycy10bzpjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nOmNjOnJlcGx5 LXRvCi0gICAgICAgICA6bGlzdC1zdWJzY3JpYmU6bGlzdC1oZWxwOmxpc3QtcG9zdDpsaXN0LWFy Y2hpdmU6bGlzdC11bnN1YnNjcmliZQotICAgICAgICAgOmxpc3QtaWQ6cHJlY2VkZW5jZTpzdWJq ZWN0OmZlZWRiYWNrLWlkOm1pbWUtdmVyc2lvbjpyZWZlcmVuY2VzCi0gICAgICAgICA6aW4tcmVw bHktdG86bWVzc2FnZS1pZDpkYXRlOnRvOmZyb206ZGVsaXZlcmVkLXRvOwotICAgICAgICBiaD1K NWhJdDgvNmw3OTgzSFdRT0FHQTFxeTZtaldtTVd1NkRKMlJaUmZKZXVRPTsKLSAgICAgICAgYj1y WDg4a1dISnRVaXFuTnV0RVFDT3dVdmZsNWxWL0ZWSHZpYURISXNpYXR2QjkyWEc3MXBnZUZWWG9w VGpKK3N0M0YKLSAgICAgICAgIGx1Ky9yS25ZS0FWWEZxRjRXSE1QNmJ1MFZUNWJGRTJBOTgwNmdU RDVSZjFEMnlHVmpLV1JIOGZoWTZKbDJLaEVoUUErCi0gICAgICAgICBFZmM2Zk1aMnFaUm1keDVT MklORTJrK3NZM3pnV1pzRmt2Mk5Eb3dGTG5qbnBtVEduZVZXODJ5YkNiTDA2RFJIN0p0cwotICAg ICAgICAgd3hXRGZGZlRxbnAyVk53RDBDNDYyZjVvZ0xCOGNIN2Y5dW9GdmlUb3ZFWWNYYzhpTHBI UDM4Y0phM2hkQXVKZzk3MlMKLSAgICAgICAgIGNnakpTdVpVYVEzOGJxbXc3dGgyTURrYUZTenJ5 Y2swd2FmbmVSZEpVeHlLRzdsdGJ3azRoZ0F6ODl5elVCN25aZVU2Ci0gICAgICAgICB5dWNBPT0K LUFSQy1BdXRoZW50aWNhdGlvbi1SZXN1bHRzOiBpPTE7IG14Lmdvb2dsZS5jb207Ci0gICAgICAg c3BmPXBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1w ZWcub3JnCi0gZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFzIHBlcm1pdHRlZCBzZW5kZXIpCi0g c210cC5tYWlsZnJvbT1mZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCi1SZXR1cm4tUGF0 aDogPGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+Ci1SZWNlaXZlZDogZnJvbSBmZmJv eDAtYmcubXBsYXllcmhxLmh1IChmZmJveDAtYmcuZmZtcGVnLm9yZy4gWzc5LjEyNC4xNy4xMDBd KQotICAgICAgICBieSBteC5nb29nbGUuY29tIHdpdGggRVNNVFAgaWQKLSBndjQxLTIwMDIwYTE3 MDkwNzJiZTkwMGIwMDk2NWYxNzE1NDNlc2kxMTU3NTE0OGVqYy4xNDguMjAyMy4wNS4xNS4wMS4z My40MDsKLSAgICAgICAgTW9uLCAxNSBNYXkgMjAyMyAwMTozMzo0MCAtMDcwMCAoUERUKQotUmVj ZWl2ZWQtU1BGOiBwYXNzIChnb29nbGUuY29tOiBkb21haW4gb2YgZmZtcGVnLWRldmVsLWJvdW5j ZXNAZmZtcGVnLm9yZwotIGRlc2lnbmF0ZXMgNzkuMTI0LjE3LjEwMCBhcyBwZXJtaXR0ZWQgc2Vu ZGVyKSBjbGllbnQtaXA9NzkuMTI0LjE3LjEwMDsKLUF1dGhlbnRpY2F0aW9uLVJlc3VsdHM6IG14 Lmdvb2dsZS5jb207Ci0gICAgICAgc3BmPXBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1w ZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCi0gZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFz IHBlcm1pdHRlZCBzZW5kZXIpCi0gc210cC5tYWlsZnJvbT1mZm1wZWctZGV2ZWwtYm91bmNlc0Bm Zm1wZWcub3JnCi1SZWNlaXZlZDogZnJvbSBbMTI3LjAuMS4xXSAobG9jYWxob3N0IFsxMjcuMC4w LjFdKQotCWJ5IGZmYm94MC1iZy5tcGxheWVyaHEuaHUgKFBvc3RmaXgpIHdpdGggRVNNVFAgaWQg RDY1QUQ2OEMwQTg7Ci0JTW9uLCAxNSBNYXkgMjAyMyAxMTozMzoyOSArMDMwMCAoRUVTVCkKLVgt T3JpZ2luYWwtVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCi1EZWxpdmVyZWQtVG86IGZmbXBl Zy1kZXZlbEBmZm1wZWcub3JnCi1SZWNlaXZlZDogZnJvbSBiZzQuZXhtYWlsLnFxLmNvbSAoYmc0 LmV4bWFpbC5xcS5jb20gWzQzLjE1NS42Ny4xNThdKQotIGJ5IGZmYm94MC1iZy5tcGxheWVyaHEu aHUgKFBvc3RmaXgpIHdpdGggRVNNVFBTIGlkIDVBQTY3NjhDMDlGCi0gZm9yIDxmZm1wZWctZGV2 ZWxAZmZtcGVnLm9yZz47IE1vbiwgMTUgTWF5IDIwMjMgMTE6MzM6MjIgKzAzMDAgKEVFU1QpCi1Y LVFRLW1pZDogYml6ZXNtdHA3NXQxNjg0MTM5NTk2dDRva2Y4Nm0KLVJlY2VpdmVkOiBmcm9tIGxv Y2FsaG9zdCAoIFsxMDMuMTAyLjIwMy4yMDRdKSBieSBiaXplc210cC5xcS5jb20gKEVTTVRQKSB3 aXRoCi0gaWQgOyBNb24sIDE1IE1heSAyMDIzIDE2OjMzOjE1ICswODAwIChDU1QpCi1YLVFRLVNT RjogMDExMDAwMDAwMDAwMDBaMFowMDAwMDBBMDAwMDAwMAotWC1RUS1GRUFUOiBLdnZ3Ui9oY1BB M3dZNkg4NHVYMVo0T2hXOUkyYlExUVYzNXpuQno0NGg4R1ovb1V1TWFGcERjclQzZFNnCi0gTVVr VFZUTUV5aFhoSE54MkpJTXhmdzUrcS8zVENVdHZuS1hzeExadFFzeS8wTnEveStwMHhWc0hKelFt TThDdmJUNkw2UTMKLSBPbXh3dkdBTzZsanZJL2lBK1NYVSszK0hVTnlldERFOFVUUlcxWkdDdEc5 aUpSYks5d1hQb2lBTXpMZXBUMitDSEdPMmJycQotIEN3SDZSQS9lOS9JNHhPSExsZXl3dEM0b0Rs UHV5SG92eHp6ZWRzQlRyWFlpYzV0YjArRDY1YWJjNk5qZkhyN3pyWUQvRFF1Ci0gSFkwTk53ZVg5 WVAvakU4akowVFBMaGN4N3dpZ2h3K0tERmJZZitVY1V1YVBIaHpmQVpoMmY2YXBsaWJ6VnV2Vjc4 T1BxMlMKLSB0aFEvWGVNR2YvVzlDL095NEVxMTQ1K0crcFVRN3p4L09LWThKai8zM2Rtdndaa1Vy OD0KLVgtUVEtR29vZEJnOiAwCi1YLUJJWk1BSUwtSUQ6IDk1MzAzODc5OTU5MzAxMjA5MzIKLUZy b206IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KLVRvOiBmZm1wZWctZGV2ZWxAZmZt cGVnLm9yZwotRGF0ZTogTW9uLCAxNSBNYXkgMjAyMyAxNjozMTo1OSArMDgwMAotTWVzc2FnZS1J ZDogPDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTUtbHFAY2hpbmFmZm1wZWcub3JnPgotWC1NYWlsZXI6 IGdpdC1zZW5kLWVtYWlsIDIuNDAuMAotSW4tUmVwbHktVG86IDwyMDIzMDUxNTA4MzIwMS40ODIw MS0xLWxxQGNoaW5hZmZtcGVnLm9yZz4KLVJlZmVyZW5jZXM6IAotIDxDQUVnLUplLXZZRDk3S25i YXFUa0s1PVVKOVQzaHRtdEgzUXlrY3dvMytyTkN4PXcralFAbWFpbC5nbWFpbC5jb20+Ci0gPDIw MjMwNTE1MDgzMjAxLjQ4MjAxLTEtbHFAY2hpbmFmZm1wZWcub3JnPgotTUlNRS1WZXJzaW9uOiAx LjAKLVgtUVEtU0VORFNJWkU6IDUyMAotRmVlZGJhY2stSUQ6IGJpemVzbXRwOmNoaW5hZmZtcGVn Lm9yZzpxeWJnbG9naWNzdnJzejpxeWJnbG9naWNzdnJzejNhLTMKLVN1YmplY3Q6IFtGRm1wZWct ZGV2ZWxdIFtQQVRDSCB2MTAgNC82XSBhdmZvcm1hdC9mbHZkZWM6IHN1cHBvcnQgZGVtdXggYXYx Ci0gaW4gZW5oYW5jZWQgZmx2Ci1YLUJlZW5UaGVyZTogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcK LVgtTWFpbG1hbi1WZXJzaW9uOiAyLjEuMjkKLVByZWNlZGVuY2U6IGxpc3QKLUxpc3QtSWQ6IEZG bXBlZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9ucyBhbmQgcGF0Y2hlcyA8ZmZtcGVnLWRldmVsLmZm bXBlZy5vcmc+Ci1MaXN0LVVuc3Vic2NyaWJlOiA8aHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4v b3B0aW9ucy9mZm1wZWctZGV2ZWw+LAotIDxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZt cGVnLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgotTGlzdC1BcmNoaXZlOiA8aHR0cHM6Ly9mZm1w ZWcub3JnL3BpcGVybWFpbC9mZm1wZWctZGV2ZWw+Ci1MaXN0LVBvc3Q6IDxtYWlsdG86ZmZtcGVn LWRldmVsQGZmbXBlZy5vcmc+Ci1MaXN0LUhlbHA6IDxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVl c3RAZmZtcGVnLm9yZz9zdWJqZWN0PWhlbHA+Ci1MaXN0LVN1YnNjcmliZTogPGh0dHBzOi8vZmZt cGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbD4sCi0gPG1haWx0bzpmZm1wZWct ZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1YmplY3Q9c3Vic2NyaWJlPgotUmVwbHktVG86IEZG bXBlZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9ucyBhbmQgcGF0Y2hlcyA8ZmZtcGVnLWRldmVsQGZm bXBlZy5vcmc+Ci1DYzogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgotRXJyb3JzLVRv OiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCi1TZW5kZXI6ICJmZm1wZWctZGV2ZWwi IDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnPgotWC1UVUlEOiBNS3FqVmluaXdJeSsK LQotU2lnbmVkLW9mZi1ieTogU3RldmVuIExpdSA8bHFAY2hpbmFmZm1wZWcub3JnPgotLS0tCi0g bGliYXZmb3JtYXQvZmx2ZGVjLmMgfCAxMiArKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwg MTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Zm9y bWF0L2ZsdmRlYy5jIGIvbGliYXZmb3JtYXQvZmx2ZGVjLmMKLWluZGV4IGM4ZTZjYWRmMWMuLmEw MzYyZmYxMWMgMTAwNjQ0Ci0tLS0gYS9saWJhdmZvcm1hdC9mbHZkZWMuYwotKysrIGIvbGliYXZm b3JtYXQvZmx2ZGVjLmMKLUBAIC0zMTgsNiArMzE4LDggQEAgc3RhdGljIGludCBmbHZfc2FtZV92 aWRlb19jb2RlYyhBVkZvcm1hdENvbnRleHQgKnMsIEFWQ29kZWNQYXJhbWV0ZXJzICp2cGFyLCBp bnQKLSAgICAgICAgIHN3aXRjaChjb2RlY19pZCkgewotICAgICAgICAgICAgIGNhc2UgTUtCRVRB RygnaCcsICd2JywgJ2MnLCAnMScpOgotICAgICAgICAgICAgICAgICByZXR1cm4gdnBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQzsKLSsgICAgICAgICAgICBjYXNlIE1LQkVUQUcoJ2En LCAndicsICcwJywgJzEnKToKLSsgICAgICAgICAgICAgICAgcmV0dXJuIHZwYXItPmNvZGVjX2lk ID09IEFWX0NPREVDX0lEX0FWMTsKLSAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg ICAgICBicmVhazsKLSAgICAgICAgIH0KLUBAIC0zNTksNiArMzYxLDEwIEBAIHN0YXRpYyBpbnQg Zmx2X3NldF92aWRlb19jb2RlYyhBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICp2c3RyZWFt LAotICAgICAgICAgICAgICAgICBwYXItPmNvZGVjX2lkID0gQVZfQ09ERUNfSURfSEVWQzsKLSAg ICAgICAgICAgICAgICAgdnN0cmVhbWktPm5lZWRfcGFyc2luZyA9IEFWU1RSRUFNX1BBUlNFX0hF QURFUlM7Ci0gICAgICAgICAgICAgICAgIHJldHVybiA0OwotKyAgICAgICAgICAgIGNhc2UgTUtC RVRBRygnYScsICd2JywgJzAnLCAnMScpOgotKyAgICAgICAgICAgICAgICBwYXItPmNvZGVjX2lk ID0gQVZfQ09ERUNfSURfQVYxOwotKyAgICAgICAgICAgICAgICB2c3RyZWFtaS0+bmVlZF9wYXJz aW5nID0gQVZTVFJFQU1fUEFSU0VfSEVBREVSUzsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIDQ7 Ci0gICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg ICB9Ci1AQCAtMTI3OCw3ICsxMjg0LDggQEAgcmV0cnlfZHVyYXRpb246Ci0gICAgIGlmIChzdC0+ Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FBQyB8fAotICAgICAgICAgc3QtPmNv ZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8Ci0gICAgICAgICBzdC0+Y29k ZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8Ci0tICAgICAgICBzdC0+Y29k ZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpIHsKLSsgICAgICAgIHN0LT5jb2Rl Y3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQyB8fAotKyAgICAgICAgc3QtPmNvZGVj cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKLSAgICAgICAgIGludCB0eXBlID0g MDsKLSAgICAgICAgIGlmIChmbHYtPmV4aGVhZGVyICYmIHN0cmVhbV90eXBlID09IEZMVl9TVFJF QU1fVFlQRV9WSURFTykgewotICAgICAgICAgICAgIHR5cGUgPSBmbGFncyAmIDB4MEY7Ci1AQCAt MTMwOSw3ICsxMzE2LDggQEAgcmV0cnlfZHVyYXRpb246Ci0gICAgICAgICAgICAgfQotICAgICAg ICAgfQotICAgICAgICAgaWYgKHR5cGUgPT0gMCAmJiAoIXN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRh IHx8IHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUFDIHx8Ci0tICAgICAg ICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8IHN0LT5j b2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykpIHsKLSsgICAgICAgICAgICBz dC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwgc3QtPmNvZGVjcGFy LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDIHx8Ci0rICAgICAgICAgICAgc3QtPmNvZGVj cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpKSB7Ci0gICAgICAgICAgICAgQVZEaWN0 aW9uYXJ5RW50cnkgKnQ7Ci0gCi0gICAgICAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+ZXh0cmFk YXRhKSB7Ci0KLUZyb20gcGF0Y2h3b3JrIE1vbiBNYXkgMTUgMDg6MzI6MDAgMjAyMwotQ29udGVu dC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKLU1JTUUtVmVyc2lvbjogMS4wCi1D b250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0Ci1YLVBhdGNod29yay1TdWJtaXR0ZXI6IFN0 ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVnLm9yZz4KLVgtUGF0Y2h3b3JrLUlkOiA0MTYxOQotRGVs aXZlcmVkLVRvOiBmZm1wZWdwYXRjaHdvcmsyQGdtYWlsLmNvbQotUmVjZWl2ZWQ6IGJ5IDIwMDI6 YTA1OjZhMjA6YmE5MTpiMDoxMDU6ZmViOjcxZjIgd2l0aCBTTVRQIGlkCi0gZmIxN2NzcDE0NDQ1 MzJwemI7Ci0gICAgICAgIE1vbiwgMTUgTWF5IDIwMjMgMDE6MzQ6MTAgLTA3MDAgKFBEVCkKLVgt R29vZ2xlLVNtdHAtU291cmNlOiAKLSBBQ0hIVVo0UWxGcVhNYTBXTkhLM1ozSExnUG0yVXNrdVFa WDJ3bWJGaFltK1pMMEJzRFJQaEx4SmJvRzBZaERQRmk5OTlhVkNRWkUrCi1YLVJlY2VpdmVkOiBi eSAyMDAyOmEwNTo2NDAyOjE0YzM6YjA6NTBkOmZjZmI6ODYzMyB3aXRoIFNNVFAgaWQKLSBmMy0y MDAyMGEwNTY0MDIxNGMzMDBiMDA1MGRmY2ZiODYzM21yOTYxMzc4OWVkeC45LjE2ODQxMzk2NTAx OTY7Ci0gICAgICAgIE1vbiwgMTUgTWF5IDIwMjMgMDE6MzQ6MTAgLTA3MDAgKFBEVCkKLUFSQy1T ZWFsOiBpPTE7IGE9cnNhLXNoYTI1NjsgdD0xNjg0MTM5NjUwOyBjdj1ub25lOwotICAgICAgICBk PWdvb2dsZS5jb207IHM9YXJjLTIwMTYwODE2OwotICAgICAgICBiPXNqZm00eGhUUHFqR055SGx4 UzMva01QaWx4MTNFQis3UzBZeGpPSTVsUjlNTWc4U3kzS2dMMTg3QzZ0dVpxVXdvWgotICAgICAg ICAgZEpvN0EzcTQxRUs0V0p5V1RUVXlxVU9yOHE4SlBqYkJUQ0pwVnNFUnVNdU1XcEhyaFF4dndF RGlidmZ1REkwWkkydksKLSAgICAgICAgIHk1cHFSWjIzT01OWkxDQytmc2M4NWdRREtQZ3ZrWVpU WWlzU09zV1ZSaVpRR2wwNFRpcGZaRTFVemE4UjdaRVhSZ2RICi0gICAgICAgICBaVzc3MFljZnpW WG1LS3pyYWxINHRoU0ZoR2ZNWlJwWDdrajZvQnRtcFVjbzRaNml1NDJvM2lCVGNhaW9HQnpkV2RQ WQotICAgICAgICAgS0w5NFdBSWFNbkN5TzFKSmFVQUpHekVjUVRHaFBiWFV6RzdKdm1xRXdTYTE2 OEdCU0VqUUozcUpjOG9PcitVVldjdm4KLSAgICAgICAgIEh2YVE9PQotQVJDLU1lc3NhZ2UtU2ln bmF0dXJlOiBpPTE7IGE9cnNhLXNoYTI1NjsgYz1yZWxheGVkL3JlbGF4ZWQ7IGQ9Z29vZ2xlLmNv bTsKLSBzPWFyYy0yMDE2MDgxNjsKLSAgICAgICAgaD1zZW5kZXI6ZXJyb3JzLXRvOmNvbnRlbnQt dHJhbnNmZXItZW5jb2Rpbmc6Y2M6cmVwbHktdG8KLSAgICAgICAgIDpsaXN0LXN1YnNjcmliZTps aXN0LWhlbHA6bGlzdC1wb3N0Omxpc3QtYXJjaGl2ZTpsaXN0LXVuc3Vic2NyaWJlCi0gICAgICAg ICA6bGlzdC1pZDpwcmVjZWRlbmNlOnN1YmplY3Q6ZmVlZGJhY2staWQ6bWltZS12ZXJzaW9uOnJl ZmVyZW5jZXMKLSAgICAgICAgIDppbi1yZXBseS10bzptZXNzYWdlLWlkOmRhdGU6dG86ZnJvbTpk ZWxpdmVyZWQtdG87Ci0gICAgICAgIGJoPWIxU3A1b3FaQU13YWtJN2EzWnZ3NE1kbktQeW9tWm84 Y1hxRG55SmFtamc9OwotICAgICAgICBiPWpjRkpPbGkxNk5QcUdQbk1EY0pWRVIzVEVrV3JlTkoy VnU3NzExR2hKaEZrbVhMTkZoUzJGVUFvVDlRQlR5K0pXbQotICAgICAgICAganhhQmppVnZzMU1N USthM2szeVQ3QXpWU1VNTUREU2FnaUUvald6USt2Qk45ZHIvalFPTXRKV3h3Zm00b1RiQmMwL3IK LSAgICAgICAgIEdjSFRnUEtCMkh2RWlMT1dhSjRDU2ZaY1lCdm9zb2V3L0lmUGdLbTA2UDJCdG1j K2ZhU1hMQ1o2M25LRVZUcTdOQ3B4Ci0gICAgICAgICBxbGxKUGtGbXZsd0IvK3NveE43blpnVHpY bS91dXJTT0JNYWpJbVJHUE9aVU9aUUUxSTVUazhPdEpYWlA2UXRsU3ZYVAotICAgICAgICAgWmNn bGV3aFRZdUhsQVhicFQ0c1l5ZGRNd0tnOXlQdTYvV21yb2wvd2czUXBYUFowbFZ0TGVUb3p1cy8y VVRJU0pyUjUKLSAgICAgICAgIExwM1E9PQotQVJDLUF1dGhlbnRpY2F0aW9uLVJlc3VsdHM6IGk9 MTsgbXguZ29vZ2xlLmNvbTsKLSAgICAgICBzcGY9cGFzcyAoZ29vZ2xlLmNvbTogZG9tYWluIG9m IGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKLSBkZXNpZ25hdGVzIDc5LjEyNC4xNy4x MDAgYXMgcGVybWl0dGVkIHNlbmRlcikKLSBzbXRwLm1haWxmcm9tPWZmbXBlZy1kZXZlbC1ib3Vu Y2VzQGZmbXBlZy5vcmcKLVJldHVybi1QYXRoOiA8ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVn Lm9yZz4KLVJlY2VpdmVkOiBmcm9tIGZmYm94MC1iZy5tcGxheWVyaHEuaHUgKGZmYm94MC1iZy5m Zm1wZWcub3JnLiBbNzkuMTI0LjE3LjEwMF0pCi0gICAgICAgIGJ5IG14Lmdvb2dsZS5jb20gd2l0 aCBFU01UUCBpZAotIGYyNS0yMDAyMGEwNTY0MDIxNTE5MDBiMDA1MGJkMzcyNzhkOXNpMTE4NTY5 MjVlZHcuNDM1LjIwMjMuMDUuMTUuMDEuMzQuMDk7Ci0gICAgICAgIE1vbiwgMTUgTWF5IDIwMjMg MDE6MzQ6MTAgLTA3MDAgKFBEVCkKLVJlY2VpdmVkLVNQRjogcGFzcyAoZ29vZ2xlLmNvbTogZG9t YWluIG9mIGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKLSBkZXNpZ25hdGVzIDc5LjEy NC4xNy4xMDAgYXMgcGVybWl0dGVkIHNlbmRlcikgY2xpZW50LWlwPTc5LjEyNC4xNy4xMDA7Ci1B dXRoZW50aWNhdGlvbi1SZXN1bHRzOiBteC5nb29nbGUuY29tOwotICAgICAgIHNwZj1wYXNzIChn b29nbGUuY29tOiBkb21haW4gb2YgZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZwotIGRl c2lnbmF0ZXMgNzkuMTI0LjE3LjEwMCBhcyBwZXJtaXR0ZWQgc2VuZGVyKQotIHNtdHAubWFpbGZy b209ZmZtcGVnLWRldmVsLWJvdW5jZXNAZmZtcGVnLm9yZwotUmVjZWl2ZWQ6IGZyb20gWzEyNy4w LjEuMV0gKGxvY2FsaG9zdCBbMTI3LjAuMC4xXSkKLQlieSBmZmJveDAtYmcubXBsYXllcmhxLmh1 IChQb3N0Zml4KSB3aXRoIEVTTVRQIGlkIDBEQjY1NjhDMDkyOwotCU1vbiwgMTUgTWF5IDIwMjMg MTE6MzQ6MDcgKzAzMDAgKEVFU1QpCi1YLU9yaWdpbmFsLVRvOiBmZm1wZWctZGV2ZWxAZmZtcGVn Lm9yZwotRGVsaXZlcmVkLVRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwotUmVjZWl2ZWQ6IGZy b20gYmc0LmV4bWFpbC5xcS5jb20gKGJnNC5leG1haWwucXEuY29tIFs0My4xNTQuMjIxLjU4XSkK LSBieSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChQb3N0Zml4KSB3aXRoIEVTTVRQUyBpZCA5NkEx NDY4MDI3NAotIGZvciA8ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+OyBNb24sIDE1IE1heSAyMDIz IDExOjMzOjU5ICswMzAwIChFRVNUKQotWC1RUS1taWQ6IGJpemVzbXRwNzZ0MTY4NDEzOTYzNHRn ODNiZXUwCi1SZWNlaXZlZDogZnJvbSBsb2NhbGhvc3QgKCBbMTAzLjEwMi4yMDMuMjA0XSkgYnkg Yml6ZXNtdHAucXEuY29tIChFU01UUCkgd2l0aAotIGlkIDsgTW9uLCAxNSBNYXkgMjAyMyAxNjoz Mzo1MiArMDgwMCAoQ1NUKQotWC1RUS1TU0Y6IDAxMTAwMDAwMDAwMDAwWjBaMDAwMDAwQTAwMDAw MDAKLVgtUVEtRkVBVDogRFdTQ2N3Vy9hUWI4M1U1QnE5TjAwdzNra0l1b2ZOaVV2bFFiZ1Iwc2dH akZFYXMrdmg3d1h5UnljRlQvegotIHczM1NIN3VOUlg4bG1QKzgraXk2alFIL2dzYVFSVkFhdTJ6 OEswdXRkeDlHdVpNdlkwZTVTWmZCMHpCZm5jYjFOZEJaSnhCCi0gUHR2aWJhdm5qMnJEbHFyR0xP OWR2RkVmbVlqMUs0OEhZcDZyZGpDYit4UlBmeU90bmN0M1pxNlNUN0YxRHhVMStLbXQ4Y3cKLSAy cVZnZUE3OUROSG0xSmJjRHppLzJXL1NweldIV2svamFtTjRjQVFmS3lQOUI0QXZNUGFGZDhrZGw2 YWtZYlIwUTg0SDczTQotIFBjeDhVWHo2aXc0c0NUU1BGemYwenJzSTQrc2hseTlLRnA0VUVTVGZS YkRFSjQ2cGN5dzgrNlV6K1E3dys3Q1J0UGxPc21zCi0gSzZJQWJjTHdpY2YvdjhSbTJuSGRyTlBv dGNhTWdZNXA3SXFta1kvWS9iMmZlcUtpQU09Ci1YLVFRLUdvb2RCZzogMAotWC1CSVpNQUlMLUlE OiA0NjExNzE4NDgzMDU2Nzg5MzY0Ci1Gcm9tOiBTdGV2ZW4gTGl1IDxscUBjaGluYWZmbXBlZy5v cmc+Ci1UbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKLURhdGU6IE1vbiwgMTUgTWF5IDIwMjMg MTY6MzI6MDAgKzA4MDAKLU1lc3NhZ2UtSWQ6IDwyMDIzMDUxNTA4MzIwMS40ODIwMS02LWxxQGNo aW5hZmZtcGVnLm9yZz4KLVgtTWFpbGVyOiBnaXQtc2VuZC1lbWFpbCAyLjQwLjAKLUluLVJlcGx5 LVRvOiA8MjAyMzA1MTUwODMyMDEuNDgyMDEtMS1scUBjaGluYWZmbXBlZy5vcmc+Ci1SZWZlcmVu Y2VzOiAKLSA8Q0FFZy1KZS12WUQ5N0tuYmFxVGtLNT1VSjlUM2h0bXRIM1F5a2N3bzMrck5DeD13 K2pRQG1haWwuZ21haWwuY29tPgotIDwyMDIzMDUxNTA4MzIwMS40ODIwMS0xLWxxQGNoaW5hZmZt cGVnLm9yZz4KLU1JTUUtVmVyc2lvbjogMS4wCi1YLVFRLVNFTkRTSVpFOiA1MjAKLUZlZWRiYWNr LUlEOiBiaXplc210cDpjaGluYWZmbXBlZy5vcmc6cXliZ2xvZ2ljc3Zyc3o6cXliZ2xvZ2ljc3Zy c3ozYS0zCi1TdWJqZWN0OiBbRkZtcGVnLWRldmVsXSBbUEFUQ0ggdjEwIDUvNl0gYXZmb3JtYXQv Zmx2ZW5jOiBzdXBwb3J0IG11eCB2cDkgaW4KLSBlbmhhbmNlZCBmbHYKLVgtQmVlblRoZXJlOiBm Zm1wZWctZGV2ZWxAZmZtcGVnLm9yZwotWC1NYWlsbWFuLVZlcnNpb246IDIuMS4yOQotUHJlY2Vk ZW5jZTogbGlzdAotTGlzdC1JZDogRkZtcGVnIGRldmVsb3BtZW50IGRpc2N1c3Npb25zIGFuZCBw YXRjaGVzIDxmZm1wZWctZGV2ZWwuZmZtcGVnLm9yZz4KLUxpc3QtVW5zdWJzY3JpYmU6IDxodHRw czovL2ZmbXBlZy5vcmcvbWFpbG1hbi9vcHRpb25zL2ZmbXBlZy1kZXZlbD4sCi0gPG1haWx0bzpm Zm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+Ci1MaXN0 LUFyY2hpdmU6IDxodHRwczovL2ZmbXBlZy5vcmcvcGlwZXJtYWlsL2ZmbXBlZy1kZXZlbD4KLUxp c3QtUG9zdDogPG1haWx0bzpmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4KLUxpc3QtSGVscDogPG1h aWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1YmplY3Q9aGVscD4KLUxpc3Qt U3Vic2NyaWJlOiA8aHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRl dmVsPiwKLSA8bWFpbHRvOmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmc/c3ViamVjdD1z dWJzY3JpYmU+Ci1SZXBseS1UbzogRkZtcGVnIGRldmVsb3BtZW50IGRpc2N1c3Npb25zIGFuZCBw YXRjaGVzIDxmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4KLUNjOiBTdGV2ZW4gTGl1IDxscUBjaGlu YWZmbXBlZy5vcmc+Ci1FcnJvcnMtVG86IGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcK LVNlbmRlcjogImZmbXBlZy1kZXZlbCIgPGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+ Ci1YLVRVSUQ6IGFwcGN5TFVKZWVGVwotCi1TaWduZWQtb2ZmLWJ5OiBTdGV2ZW4gTGl1IDxscUBj aGluYWZmbXBlZy5vcmc+Ci0tLS0KLSBsaWJhdmZvcm1hdC9NYWtlZmlsZSB8ICAyICstCi0gbGli YXZmb3JtYXQvZmx2ZW5jLmMgfCAyMiArKysrKysrKysrKysrKy0tLS0tLS0tCi0gMiBmaWxlcyBj aGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEv bGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQotaW5kZXggYzg2OGUx NjI2Yy4uMTZjZmUxMDdlYSAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlCi0rKysg Yi9saWJhdmZvcm1hdC9NYWtlZmlsZQotQEAgLTIxNCw3ICsyMTQsNyBAQCBPQkpTLSQoQ09ORklH X0ZMQUNfTVVYRVIpICAgICAgICAgICAgICAgICs9IGZsYWNlbmMubyBmbGFjZW5jX2hlYWRlci5v IFwKLSBPQkpTLSQoQ09ORklHX0ZMSUNfREVNVVhFUikgICAgICAgICAgICAgICs9IGZsaWMubwot IE9CSlMtJChDT05GSUdfRkxWX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gZmx2ZGVjLm8KLSBP QkpTLSQoQ09ORklHX0xJVkVfRkxWX0RFTVVYRVIpICAgICAgICAgICs9IGZsdmRlYy5vCi0tT0JK Uy0kKENPTkZJR19GTFZfTVVYRVIpICAgICAgICAgICAgICAgICArPSBmbHZlbmMubyBhdmMubyBo ZXZjLm8gYXYxLm8KLStPQkpTLSQoQ09ORklHX0ZMVl9NVVhFUikgICAgICAgICAgICAgICAgICs9 IGZsdmVuYy5vIGF2Yy5vIGhldmMubyBhdjEubyB2cGNjLm8KLSBPQkpTLSQoQ09ORklHX0ZPVVJY TV9ERU1VWEVSKSAgICAgICAgICAgICs9IDR4bS5vCi0gT0JKUy0kKENPTkZJR19GUkFNRUNSQ19N VVhFUikgICAgICAgICAgICArPSBmcmFtZWNyY2VuYy5vIGZyYW1laGFzaC5vCi0gT0JKUy0kKENP TkZJR19GUkFNRUhBU0hfTVVYRVIpICAgICAgICAgICArPSBoYXNoZW5jLm8gZnJhbWVoYXNoLm8K LWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9mbHZlbmMuYyBiL2xpYmF2Zm9ybWF0L2ZsdmVuYy5j Ci1pbmRleCBjMTc4NGIzMzJkLi40NzVkZDBiZjQ0IDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQv Zmx2ZW5jLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L2ZsdmVuYy5jCi1AQCAtMjksNiArMjksNyBAQAot ICNpbmNsdWRlICJhdmlvLmgiCi0gI2luY2x1ZGUgImF2Yy5oIgotICNpbmNsdWRlICJhdjEuaCIK LSsjaW5jbHVkZSAidnBjYy5oIgotICNpbmNsdWRlICJoZXZjLmgiCi0gI2luY2x1ZGUgImF2Zm9y bWF0LmgiCi0gI2luY2x1ZGUgImZsdi5oIgotQEAgLTUwLDYgKzUxLDcgQEAgc3RhdGljIGNvbnN0 IEFWQ29kZWNUYWcgZmx2X3ZpZGVvX2NvZGVjX2lkc1tdID0gewotICAgICB7IEFWX0NPREVDX0lE X0gyNjQsICAgICBGTFZfQ09ERUNJRF9IMjY0IH0sCi0gICAgIHsgQVZfQ09ERUNfSURfSEVWQywg ICAgIE1LQkVUQUcoJ2gnLCAndicsICdjJywgJzEnKSB9LAotICAgICB7IEFWX0NPREVDX0lEX0FW MSwgICAgICBNS0JFVEFHKCdhJywgJ3YnLCAnMCcsICcxJykgfSwKLSsgICAgeyBBVl9DT0RFQ19J RF9WUDksICAgICAgTUtCRVRBRygndicsICdwJywgJzAnLCAnOScpIH0sCi0gICAgIHsgQVZfQ09E RUNfSURfTk9ORSwgICAgIDAgfQotIH07Ci0gCi1AQCAtNDk0LDcgKzQ5Niw3IEBAIHN0YXRpYyB2 b2lkIGZsdl93cml0ZV9jb2RlY19oZWFkZXIoQVZGb3JtYXRDb250ZXh0KiBzLCBBVkNvZGVjUGFy YW1ldGVycyogcGFyLCBpCi0gCi0gICAgIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X0FBQyB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQKLSAgICAgICAgICAgICB8 fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8IHBhci0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfSEVWQwotLSAgICAgICAgICAgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfQVYxKSB7Ci0rICAgICAgICAgICAgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9BVjEgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpIHsKLSAgICAgICAgIGlu dDY0X3QgcG9zOwotICAgICAgICAgYXZpb193OChwYiwKLSAgICAgICAgICAgICAgICAgcGFyLT5j b2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTyA/Ci1AQCAtNTQwLDkgKzU0Miw5IEBAIHN0 YXRpYyB2b2lkIGZsdl93cml0ZV9jb2RlY19oZWFkZXIoQVZGb3JtYXRDb250ZXh0KiBzLCBBVkNv ZGVjUGFyYW1ldGVycyogcGFyLCBpCi0gICAgICAgICAgICAgaWYgKHBhci0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfSEVWQykgewotICAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCBGTFZfSVNf RVhfSEVBREVSIHwgUGFja2V0VHlwZVNlcXVlbmNlU3RhcnQpOyAvLyBFeFZpZGVvVGFnSGVhZGVy IG1vZGUgd2l0aCBQYWNrZXRUeXBlU2VxdWVuY2VTdGFydAotICAgICAgICAgICAgICAgICBhdmlv X3dyaXRlKHBiLCAiaHZjMSIsIDQpOwotLSAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyLT5jb2Rl Y19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKLSsgICAgICAgICAgICB9IGVsc2UgaWYgKHBhci0+ Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNf SURfVlA5KSB7Ci0gICAgICAgICAgICAgICAgIGF2aW9fdzgocGIsIEZMVl9JU19FWF9IRUFERVIg fCBQYWNrZXRUeXBlU2VxdWVuY2VTdGFydCk7Ci0tICAgICAgICAgICAgICAgIGF2aW9fd3JpdGUo cGIsICJhdjAxIiwgNCk7Ci0rICAgICAgICAgICAgICAgIGF2aW9fd3JpdGUocGIsIHBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxID8gImF2MDEiIDogInZwMDkiLCA0KTsKLSAgICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICBhdmlvX3c4KHBiLCBwYXItPmNvZGVjX3Rh ZyB8IEZMVl9GUkFNRV9LRVkpOyAvLyBmbGFncwotICAgICAgICAgICAgICAgICBhdmlvX3c4KHBi LCAwKTsgLy8gQVZDIHNlcXVlbmNlIGhlYWRlcgotQEAgLTU1Myw2ICs1NTUsOCBAQCBzdGF0aWMg dm9pZCBmbHZfd3JpdGVfY29kZWNfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCogcywgQVZDb2RlY1Bh cmFtZXRlcnMqIHBhciwgaQotICAgICAgICAgICAgICAgICBmZl9pc29tX3dyaXRlX2h2Y2MocGIs IHBhci0+ZXh0cmFkYXRhLCBwYXItPmV4dHJhZGF0YV9zaXplLCAwKTsKLSAgICAgICAgICAgICBl bHNlIGlmIChwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkKLSAgICAgICAgICAgICAg ICAgZmZfaXNvbV93cml0ZV9hdjFjKHBiLCBwYXItPmV4dHJhZGF0YSwgcGFyLT5leHRyYWRhdGFf c2l6ZSwgMSk7Ci0rICAgICAgICAgICAgZWxzZSBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RF Q19JRF9WUDkpCi0rICAgICAgICAgICAgICAgIGZmX2lzb21fd3JpdGVfdnBjYyhzLCBwYiwgcGFy LT5leHRyYWRhdGEsIHBhci0+ZXh0cmFkYXRhX3NpemUsIHBhcik7Ci0gICAgICAgICAgICAgZWxz ZQotICAgICAgICAgICAgICAgICBmZl9pc29tX3dyaXRlX2F2Y2MocGIsIHBhci0+ZXh0cmFkYXRh LCBwYXItPmV4dHJhZGF0YV9zaXplKTsKLSAgICAgICAgIH0KLUBAIC04NTIsMTQgKzg1NiwxNSBA QCBzdGF0aWMgaW50IGZsdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tl dCAqcGt0KQotICAgICAgICAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDYgIHx8IHBh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUFDKQotICAgICAgICAgZmxhZ3Nfc2l6ZSA9IDI7 Ci0gICAgIGVsc2UgaWYgKHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fCBwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8Ci0tICAgICAgICAgICAgIHBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQyB8fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X0FWMSkKLSsgICAgICAgICAgICAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDIHx8 IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxIHx8Ci0rICAgICAgICAgICAgIHBhci0+ Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5KQotICAgICAgICAgZmxhZ3Nfc2l6ZSA9IDU7Ci0g ICAgIGVsc2UKLSAgICAgICAgIGZsYWdzX3NpemUgPSAxOwotIAotICAgICBpZiAocGFyLT5jb2Rl Y19pZCA9PSBBVl9DT0RFQ19JRF9BQUMgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9I MjY0Ci0gICAgICAgICAgICAgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCB8 fCBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMKLS0gICAgICAgICAgICB8fCBwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkgewotKyAgICAgICAgICAgIHx8IHBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf VlA5KSB7Ci0gICAgICAgICBzaXplX3Qgc2lkZV9zaXplOwotICAgICAgICAgdWludDhfdCAqc2lk ZSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKHBrdCwgQVZfUEtUX0RBVEFfTkVXX0VYVFJBREFU QSwgJnNpZGVfc2l6ZSk7Ci0gICAgICAgICBpZiAoc2lkZSAmJiBzaWRlX3NpemUgPiAwICYmIChz aWRlX3NpemUgIT0gcGFyLT5leHRyYWRhdGFfc2l6ZSB8fCBtZW1jbXAoc2lkZSwgcGFyLT5leHRy YWRhdGEsIHNpZGVfc2l6ZSkpKSB7Ci1AQCAtODgwLDcgKzg4NSw4IEBAIHN0YXRpYyBpbnQgZmx2 X3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCi0gICAgICAg ICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwotICAgICB9Ci0gICAgIGlmIChwYXItPmNvZGVjX2lk ID09IEFWX0NPREVDX0lEX0gyNjQgfHwgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVH NCB8fAotLSAgICAgICAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDIHx8ICBwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSkgewotKyAgICAgICAgcGFyLT5jb2RlY19pZCA9 PSBBVl9DT0RFQ19JRF9IRVZDIHx8ICBwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSB8 fAotKyAgICAgICAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpIHsKLSAgICAgICAg IGlmIChwa3QtPnB0cyA9PSBBVl9OT1BUU19WQUxVRSkgewotICAgICAgICAgICAgIGF2X2xvZyhz LCBBVl9MT0dfRVJST1IsICJQYWNrZXQgaXMgbWlzc2luZyBQVFNcbiIpOwotICAgICAgICAgICAg IHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Ci1AQCAtOTkzLDkgKzk5OSw5IEBAIHN0YXRpYyBpbnQg Zmx2X3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCi0gICAg ICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDKSB7Ci0gICAgICAgICAg ICAgYXZpb193OChwYiwgRkxWX0lTX0VYX0hFQURFUiB8IFBhY2tldFR5cGVDb2RlZEZyYW1lc1gp OyAvLyBFeFZpZGVvVGFnSGVhZGVyIG1vZGUgd2l0aCBQYWNrZXRUeXBlQ29kZWRGcmFtZXNYCi0g ICAgICAgICAgICAgYXZpb193cml0ZShwYiwgImh2YzEiLCA0KTsKLS0gICAgICAgIH0gZWxzZSBp ZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsKLSsgICAgICAgIH0gZWxzZSBp ZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEgfHwgcGFyLT5jb2RlY19pZCA9PSBB Vl9DT0RFQ19JRF9WUDkpIHsKLSAgICAgICAgICAgICBhdmlvX3c4KHBiLCBGTFZfSVNfRVhfSEVB REVSIHwgUGFja2V0VHlwZUNvZGVkRnJhbWVzKTsKLS0gICAgICAgICAgICBhdmlvX3dyaXRlKHBi LCAiYXYwMSIsIDQpOwotKyAgICAgICAgICAgIGF2aW9fd3JpdGUocGIsIHBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfQVYxID8gImF2MDEiIDogInZwMDkiLCA0KTsKLSAgICAgICAgIH0gZWxz ZSB7Ci0gICAgICAgICAgICAgYXZpb193OChwYiwgZmxhZ3MpOwotICAgICAgICAgfQotCi1Gcm9t IHBhdGNod29yayBNb24gTWF5IDE1IDA4OjMyOjAxIDIwMjMKLUNvbnRlbnQtVHlwZTogdGV4dC9w bGFpbjsgY2hhcnNldD0idXRmLTgiCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UcmFuc2Zl ci1FbmNvZGluZzogN2JpdAotWC1QYXRjaHdvcmstU3VibWl0dGVyOiBTdGV2ZW4gTGl1IDxscUBj aGluYWZmbXBlZy5vcmc+Ci1YLVBhdGNod29yay1JZDogNDE2MjAKLURlbGl2ZXJlZC1UbzogZmZt cGVncGF0Y2h3b3JrMkBnbWFpbC5jb20KLVJlY2VpdmVkOiBieSAyMDAyOmEwNTo2YTIwOmJhOTE6 YjA6MTA1OmZlYjo3MWYyIHdpdGggU01UUCBpZAotIGZiMTdjc3AxNDQ0NjE2cHpiOwotICAgICAg ICBNb24sIDE1IE1heSAyMDIzIDAxOjM0OjE5IC0wNzAwIChQRFQpCi1YLUdvb2dsZS1TbXRwLVNv dXJjZTogCi0gQUNISFVaNEs2ZU9Kd3duN2pQZnkwZGhUUDRJUXIyWHpEQjhQZkI3RXI2YVF0ckNy eG5kZGlSSWdkQnFaQjcyZEhoeXFmYklMWGQ1RQotWC1SZWNlaXZlZDogYnkgMjAwMjphMTc6OTA2 OmVlOGU6YjA6OTVlOmM1NDk6OWFjZSB3aXRoIFNNVFAgaWQKLSB3dDE0LTIwMDIwYTE3MDkwNmVl OGUwMGIwMDk1ZWM1NDk5YWNlbXIyODA4MjE4MmVqYi42Mi4xNjg0MTM5NjU5NDk2OwotICAgICAg ICBNb24sIDE1IE1heSAyMDIzIDAxOjM0OjE5IC0wNzAwIChQRFQpCi1BUkMtU2VhbDogaT0xOyBh PXJzYS1zaGEyNTY7IHQ9MTY4NDEzOTY1OTsgY3Y9bm9uZTsKLSAgICAgICAgZD1nb29nbGUuY29t OyBzPWFyYy0yMDE2MDgxNjsKLSAgICAgICAgYj1GTTlTUWJrWW1xV2FPQWE4WVJLc2RvajNCU29O Ti9Tc0RxWGdFYVJMOGxDeWdKdWFoQ1QxeWJvY1YxSXFtVVNUeFMKLSAgICAgICAgIGw1QWNVSkdi WmJsMkJlTmhLNW1YNDNhQ2ZLQlNTRjNETGhtUkNNQkM4cFUyaVBtdjdUdVNWNThrUmZMWTZyODNq OEljCi0gICAgICAgICBkVjU2UVVZWXROK1ZlMEJXbmFIRk96aXZTTkFnSHh3ZVBzdFFMMDQzTEhE MnJuK0I1Q3lOdnE3bDJDYWhuaE1KOEpVRwotICAgICAgICAgekpOU0JlL0xGRjBMaGt5bXFkODc3 dmtKK3grVWpTV0VJZG9tSUpkQWNBdDJEMDZqRHh3SUYvbm5MRERIbXZRZW55Mk4KLSAgICAgICAg IDh4cXNzRTQwMVFjWUNxNkd0UmkwVVRBeU1yWWlEVTRSVVBPaDhLamI1WW9NWFlwYkkrQkNzcjZW SmxoNi9GNmNGRDU4Ci0gICAgICAgICBZU3R3PT0KLUFSQy1NZXNzYWdlLVNpZ25hdHVyZTogaT0x OyBhPXJzYS1zaGEyNTY7IGM9cmVsYXhlZC9yZWxheGVkOyBkPWdvb2dsZS5jb207Ci0gcz1hcmMt MjAxNjA4MTY7Ci0gICAgICAgIGg9c2VuZGVyOmVycm9ycy10bzpjb250ZW50LXRyYW5zZmVyLWVu Y29kaW5nOmNjOnJlcGx5LXRvCi0gICAgICAgICA6bGlzdC1zdWJzY3JpYmU6bGlzdC1oZWxwOmxp c3QtcG9zdDpsaXN0LWFyY2hpdmU6bGlzdC11bnN1YnNjcmliZQotICAgICAgICAgOmxpc3QtaWQ6 cHJlY2VkZW5jZTpzdWJqZWN0OmZlZWRiYWNrLWlkOm1pbWUtdmVyc2lvbjpyZWZlcmVuY2VzCi0g ICAgICAgICA6aW4tcmVwbHktdG86bWVzc2FnZS1pZDpkYXRlOnRvOmZyb206ZGVsaXZlcmVkLXRv OwotICAgICAgICBiaD1KQ0tmcXR5blA4NVV5TjRPRzVQUXVDMkdPTTQ1RUM3NXJQYS9UTjlQa2lz PTsKLSAgICAgICAgYj1NRjc4aGcrMEtralVOcTVCano2YjRyamNKREpxckZ1ZldIaERXektnV0NH bzE1ZnZuVmczVVk4UER2cHNVWXh4U0EKLSAgICAgICAgIFNYUUpQMXVydnV4THZKOW02TjIwL21C Q2dyTjlDcWNhNTM3b2lXV05iYXlBT0JMdWloWFBORFBaTHFZZ0Q5eWcrMDNVCi0gICAgICAgICBR bzQ2cktzOEJ4a3V6VEtzcWZGdTFjZjhiM3FncXAyd3QybU9GRm5SVThwOUo1Zm9BNUhDcEhvRUIx U1dvOEtxS2pxegotICAgICAgICAgTmVGb3loNGsvQ0hrOFF5MnJoUS9haHVObzB6QnlYRVZ1R3FC RUsxR2FrVzhiQzZEcFgvZ1g5UG5zRTdCdnBPck8vK3oKLSAgICAgICAgIGlFSnhVZDFSeVVGRFJF VGpkY3FmTGVSbEVCTzBOYkZpOUdUUmpnMG9ZN20yT004Z2g5enc3VElPb0tmS2FDVmVwYSsxCi0g ICAgICAgICB6cytnPT0KLUFSQy1BdXRoZW50aWNhdGlvbi1SZXN1bHRzOiBpPTE7IG14Lmdvb2ds ZS5jb207Ci0gICAgICAgc3BmPXBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1wZWctZGV2 ZWwtYm91bmNlc0BmZm1wZWcub3JnCi0gZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFzIHBlcm1p dHRlZCBzZW5kZXIpCi0gc210cC5tYWlsZnJvbT1mZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcu b3JnCi1SZXR1cm4tUGF0aDogPGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+Ci1SZWNl aXZlZDogZnJvbSBmZmJveDAtYmcubXBsYXllcmhxLmh1IChmZmJveDAtYmcuZmZtcGVnLm9yZy4g Wzc5LjEyNC4xNy4xMDBdKQotICAgICAgICBieSBteC5nb29nbGUuY29tIHdpdGggRVNNVFAgaWQK LSBmMjEtMjAwMjBhMTcwOTA2ODI1NTAwYjAwOTY1YzU1YzcxZDlzaTEwNDkyODc2ZWp4Ljk4OC4y MDIzLjA1LjE1LjAxLjM0LjE5OwotICAgICAgICBNb24sIDE1IE1heSAyMDIzIDAxOjM0OjE5IC0w NzAwIChQRFQpCi1SZWNlaXZlZC1TUEY6IHBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiBmZm1w ZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcub3JnCi0gZGVzaWduYXRlcyA3OS4xMjQuMTcuMTAwIGFz IHBlcm1pdHRlZCBzZW5kZXIpIGNsaWVudC1pcD03OS4xMjQuMTcuMTAwOwotQXV0aGVudGljYXRp b24tUmVzdWx0czogbXguZ29vZ2xlLmNvbTsKLSAgICAgICBzcGY9cGFzcyAoZ29vZ2xlLmNvbTog ZG9tYWluIG9mIGZmbXBlZy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKLSBkZXNpZ25hdGVzIDc5 LjEyNC4xNy4xMDAgYXMgcGVybWl0dGVkIHNlbmRlcikKLSBzbXRwLm1haWxmcm9tPWZmbXBlZy1k ZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmcKLVJlY2VpdmVkOiBmcm9tIFsxMjcuMC4xLjFdIChsb2Nh bGhvc3QgWzEyNy4wLjAuMV0pCi0JYnkgZmZib3gwLWJnLm1wbGF5ZXJocS5odSAoUG9zdGZpeCkg d2l0aCBFU01UUCBpZCAzNDg2NDY4QzA3MjsKLQlNb24sIDE1IE1heSAyMDIzIDExOjM0OjEzICsw MzAwIChFRVNUKQotWC1PcmlnaW5hbC1UbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKLURlbGl2 ZXJlZC1UbzogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKLVJlY2VpdmVkOiBmcm9tIGJnNC5leG1h aWwucXEuY29tIChiZzQuZXhtYWlsLnFxLmNvbSBbNDMuMTU0LjIyMS41OF0pCi0gYnkgZmZib3gw LWJnLm1wbGF5ZXJocS5odSAoUG9zdGZpeCkgd2l0aCBFU01UUFMgaWQgNjQ4MkI2OEMwQTAKLSBm b3IgPGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPjsgTW9uLCAxNSBNYXkgMjAyMyAxMTozNDowNSAr MDMwMCAoRUVTVCkKLVgtUVEtbWlkOiBiaXplc210cDcxdDE2ODQxMzk2Mzl0c2ZwNm9zcQotUmVj ZWl2ZWQ6IGZyb20gbG9jYWxob3N0ICggWzEwMy4xMDIuMjAzLjIwNF0pIGJ5IGJpemVzbXRwLnFx LmNvbSAoRVNNVFApIHdpdGgKLSBpZCA7IE1vbiwgMTUgTWF5IDIwMjMgMTY6MzM6NTggKzA4MDAg KENTVCkKLVgtUVEtU1NGOiAwMTEwMDAwMDAwMDAwMFowWjAwMDAwMEEwMDAwMDAwCi1YLVFRLUZF QVQ6IHYyVEJBaHR5aTVIbU9JOFJINjJZWFdWYW1sMHVOWHhjc0p3dFhycVZ6WGRwSndKcGtZY3BL UzBqT241YjgKLSB2cHV0Q1lLMUZOQ2xCTk9tdjlBekVMalQvSzI2Y0ZPc1VZS0JwQXVkcmY4QWwv S213bDhDanlUNm5ESzA2UUJ5ckh1NjdBNAotIHNYOFZRcmF6SVhPNlpQSXJmQTlFbHVzWHRzc21S MjJlOGp1MG5YWDdvTnkvQVM0dDBiWmt1SlJWbVlDb0hTQ25McW52RjlyCi0gWWJvVmRtZzBaYkxv dnJYQnkyNmJnUXI5NDRHL3RRUlRlQUdvckF3RTYxTGY5dHFsUkt1VDhUTzgvQkEvVjd6QnVhWlRT eEEKLSBuZ2hsNjFhd1BvZHVZNHZkOU5lcHc0M1YyQ3VuNHdmUFR2QU1KbjlFUWhyZFVnZTRzSU4w UTRFdVdrQmQ5ZEMvblRPd1ZLVgotIFdzakx4YnlMNmFwRmUwOFhteWVTOU1ESmtMK2JGTjN5a3BE SnFibEJnOEMxQVlPalZ5WUZTMll0L2F0Y1E9PQotWC1RUS1Hb29kQmc6IDAKLVgtQklaTUFJTC1J RDogMTQyMjE1OTUwNTE2MDMwMjI5ODcKLUZyb206IFN0ZXZlbiBMaXUgPGxxQGNoaW5hZmZtcGVn Lm9yZz4KLVRvOiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwotRGF0ZTogTW9uLCAxNSBNYXkgMjAy MyAxNjozMjowMSArMDgwMAotTWVzc2FnZS1JZDogPDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTctbHFA Y2hpbmFmZm1wZWcub3JnPgotWC1NYWlsZXI6IGdpdC1zZW5kLWVtYWlsIDIuNDAuMAotSW4tUmVw bHktVG86IDwyMDIzMDUxNTA4MzIwMS40ODIwMS0xLWxxQGNoaW5hZmZtcGVnLm9yZz4KLVJlZmVy ZW5jZXM6IAotIDxDQUVnLUplLXZZRDk3S25iYXFUa0s1PVVKOVQzaHRtdEgzUXlrY3dvMytyTkN4 PXcralFAbWFpbC5nbWFpbC5jb20+Ci0gPDIwMjMwNTE1MDgzMjAxLjQ4MjAxLTEtbHFAY2hpbmFm Zm1wZWcub3JnPgotTUlNRS1WZXJzaW9uOiAxLjAKLVgtUVEtU0VORFNJWkU6IDUyMAotRmVlZGJh Y2stSUQ6IGJpemVzbXRwOmNoaW5hZmZtcGVnLm9yZzpxeWJnbG9naWNzdnJzejpxeWJnbG9naWNz dnJzejNhLTMKLVN1YmplY3Q6IFtGRm1wZWctZGV2ZWxdIFtQQVRDSCB2MTAgNi82XSBhdmZvcm1h dC9mbHZkZWM6IHN1cHBvcnQgZGVtdXggdnA5Ci0gaW4gZW5oYW5jZWQgZmx2Ci1YLUJlZW5UaGVy ZTogZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKLVgtTWFpbG1hbi1WZXJzaW9uOiAyLjEuMjkKLVBy ZWNlZGVuY2U6IGxpc3QKLUxpc3QtSWQ6IEZGbXBlZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9ucyBh bmQgcGF0Y2hlcyA8ZmZtcGVnLWRldmVsLmZmbXBlZy5vcmc+Ci1MaXN0LVVuc3Vic2NyaWJlOiA8 aHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vb3B0aW9ucy9mZm1wZWctZGV2ZWw+LAotIDxtYWls dG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgot TGlzdC1BcmNoaXZlOiA8aHR0cHM6Ly9mZm1wZWcub3JnL3BpcGVybWFpbC9mZm1wZWctZGV2ZWw+ Ci1MaXN0LVBvc3Q6IDxtYWlsdG86ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+Ci1MaXN0LUhlbHA6 IDxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZz9zdWJqZWN0PWhlbHA+Ci1M aXN0LVN1YnNjcmliZTogPGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBl Zy1kZXZlbD4sCi0gPG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnP3N1Ympl Y3Q9c3Vic2NyaWJlPgotUmVwbHktVG86IEZGbXBlZyBkZXZlbG9wbWVudCBkaXNjdXNzaW9ucyBh bmQgcGF0Y2hlcyA8ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+Ci1DYzogU3RldmVuIExpdSA8bHFA Y2hpbmFmZm1wZWcub3JnPgotRXJyb3JzLVRvOiBmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcu b3JnCi1TZW5kZXI6ICJmZm1wZWctZGV2ZWwiIDxmZm1wZWctZGV2ZWwtYm91bmNlc0BmZm1wZWcu b3JnPgotWC1UVUlEOiB3T3R2VHprK3poZHcKLQotU2lnbmVkLW9mZi1ieTogU3RldmVuIExpdSA8 bHFAY2hpbmFmZm1wZWcub3JnPgotLS0tCi0gbGliYXZmb3JtYXQvZmx2ZGVjLmMgfCAxMSArKysr KysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p Ci0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9mbHZkZWMuYyBiL2xpYmF2Zm9ybWF0L2ZsdmRl Yy5jCi1pbmRleCBhMDM2MmZmMTFjLi5hNmE5NGE0MDIxIDEwMDY0NAotLS0tIGEvbGliYXZmb3Jt YXQvZmx2ZGVjLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L2ZsdmRlYy5jCi1AQCAtMzIwLDYgKzMyMCw4 IEBAIHN0YXRpYyBpbnQgZmx2X3NhbWVfdmlkZW9fY29kZWMoQVZGb3JtYXRDb250ZXh0ICpzLCBB VkNvZGVjUGFyYW1ldGVycyAqdnBhciwgaW50Ci0gICAgICAgICAgICAgICAgIHJldHVybiB2cGFy LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDOwotICAgICAgICAgICAgIGNhc2UgTUtCRVRB RygnYScsICd2JywgJzAnLCAnMScpOgotICAgICAgICAgICAgICAgICByZXR1cm4gdnBhci0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxOwotKyAgICAgICAgICAgIGNhc2UgTUtCRVRBRygndics ICdwJywgJzAnLCAnOScpOgotKyAgICAgICAgICAgICAgICByZXR1cm4gdnBhci0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfVlA5OwotICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg ICAgIGJyZWFrOwotICAgICAgICAgfQotQEAgLTM2NSw2ICszNjcsMTAgQEAgc3RhdGljIGludCBm bHZfc2V0X3ZpZGVvX2NvZGVjKEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnZzdHJlYW0s Ci0gICAgICAgICAgICAgICAgIHBhci0+Y29kZWNfaWQgPSBBVl9DT0RFQ19JRF9BVjE7Ci0gICAg ICAgICAgICAgICAgIHZzdHJlYW1pLT5uZWVkX3BhcnNpbmcgPSBBVlNUUkVBTV9QQVJTRV9IRUFE RVJTOwotICAgICAgICAgICAgICAgICByZXR1cm4gNDsKLSsgICAgICAgICAgICBjYXNlIE1LQkVU QUcoJ3YnLCAncCcsICcwJywgJzknKToKLSsgICAgICAgICAgICAgICAgcGFyLT5jb2RlY19pZCA9 IEFWX0NPREVDX0lEX1ZQOTsKLSsgICAgICAgICAgICAgICAgdnN0cmVhbWktPm5lZWRfcGFyc2lu ZyA9IEFWU1RSRUFNX1BBUlNFX0hFQURFUlM7Ci0rICAgICAgICAgICAgICAgIHJldHVybiA0Owot ICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg fQotQEAgLTEyODUsNyArMTI5MSw4IEBAIHJldHJ5X2R1cmF0aW9uOgotICAgICAgICAgc3QtPmNv ZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0IHx8Ci0gICAgICAgICBzdC0+Y29k ZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8Ci0gICAgICAgICBzdC0+Y29k ZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMgfHwKLS0gICAgICAgIHN0LT5jb2Rl Y3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQVYxKSB7Ci0rICAgICAgICBzdC0+Y29kZWNw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0FWMSB8fAotKyAgICAgICAgc3QtPmNvZGVjcGFy LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpIHsKLSAgICAgICAgIGludCB0eXBlID0gMDsK LSAgICAgICAgIGlmIChmbHYtPmV4aGVhZGVyICYmIHN0cmVhbV90eXBlID09IEZMVl9TVFJFQU1f VFlQRV9WSURFTykgewotICAgICAgICAgICAgIHR5cGUgPSBmbGFncyAmIDB4MEY7Ci1AQCAtMTMx Nyw3ICsxMzI0LDcgQEAgcmV0cnlfZHVyYXRpb246Ci0gICAgICAgICB9Ci0gICAgICAgICBpZiAo dHlwZSA9PSAwICYmICghc3QtPmNvZGVjcGFyLT5leHRyYWRhdGEgfHwgc3QtPmNvZGVjcGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BQUMgfHwKLSAgICAgICAgICAgICBzdC0+Y29kZWNwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9 PSBBVl9DT0RFQ19JRF9IRVZDIHx8Ci0tICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9BVjEpKSB7Ci0rICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2Rl Y19pZCA9PSBBVl9DT0RFQ19JRF9BVjEgfHwgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9D T0RFQ19JRF9WUDkpKSB7Ci0gICAgICAgICAgICAgQVZEaWN0aW9uYXJ5RW50cnkgKnQ7Ci0gCi0g ICAgICAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhKSB7CgpkaWZmIC0tZ2l0IGEv ZmZtcGVnLWRsb3Blbi1vcGVuaDI2NC5wYXRjaCBiL2ZmbXBlZy1kbG9wZW4tb3BlbmgyNjQucGF0 Y2gKaW5kZXggYTI4M2Y4NS4uMzI5NjA2YiAxMDA2NDQKLS0tIGEvZmZtcGVnLWRsb3Blbi1vcGVu aDI2NC5wYXRjaAorKysgYi9mZm1wZWctZGxvcGVuLW9wZW5oMjY0LnBhdGNoCkBAIC0xLDcgKzEs NyBAQAotRnJvbSAxZjQ4NzQwZGIwZGRhOGQ2ZWMxYjk3YTdmNGE3OTRlMzgxYTY1NjM2IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzZGFhNDljYWUwYmZjM2RlNDM0ZGQyOGMzYTIzYWU4 NzdmMDYzOWRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTmVhbCBHb21wYSA8bmdv bXBhQGZlZG9yYXByb2plY3Qub3JnPgotRGF0ZTogV2VkLCAxMiBPY3QgMjAyMiAwOTo0MToyNyAt MDQwMAotU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL29wZW5oMjY0OiBBZGQgdGhlIGFiaWxpdHkg dG8gZGxvcGVuKCkgT3BlbkgyNjQKK0RhdGU6IFRodSwgNCBKYW4gMjAyNCAxMDoyMToxNyAtMDUw MAorU3ViamVjdDogW1BBVENIXSBsYXZjL29wZW5oMjY0OiBBZGQgdGhlIGFiaWxpdHkgdG8gZGxv cGVuKCkgT3BlbkgyNjQKIAogV2UgY2FuJ3QgZGlyZWN0bHkgZGVwZW5kIG9uIE9wZW5IMjY0LCBi dXQgd2UgY2FuIHdlYWtseSBsaW5rIHRvIGl0CiBhbmQgZ3JhY2VmdWxseSBleHBvc2UgdGhlIGNh cGFiaWxpdHkuCkBAIC0yNCwxMCArMjQsMTAgQEAgU2lnbmVkLW9mZi1ieTogTmVhbCBHb21wYSA8 bmdvbXBhQGZlZG9yYXByb2plY3Qub3JnPgogIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVj L2xpYm9wZW5oMjY0X2Rsb3Blbi5oCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1 cmUKLWluZGV4IGJhNTc5M2IyZmYuLjg4NTVjMWE5MDggMTAwNzU1CitpbmRleCAxZjBiOTQ5N2Ni Li45N2ZhNGE1ZDZhIDEwMDc1NQogLS0tIGEvY29uZmlndXJlCiArKysgYi9jb25maWd1cmUKLUBA IC0yNTEsNiArMjUxLDcgQEAgRXh0ZXJuYWwgbGlicmFyeSBzdXBwb3J0OgorQEAgLTI0OSw2ICsy NDksNyBAQCBFeHRlcm5hbCBsaWJyYXJ5IHN1cHBvcnQ6CiAgICAtLWVuYWJsZS1saWJvcGVuY29y ZS1hbXJ3YiBlbmFibGUgQU1SLVdCIGRlY29kaW5nIHZpYSBsaWJvcGVuY29yZS1hbXJ3YiBbbm9d CiAgICAtLWVuYWJsZS1saWJvcGVuY3YgICAgICAgZW5hYmxlIHZpZGVvIGZpbHRlcmluZyB2aWEg bGlib3BlbmN2IFtub10KICAgIC0tZW5hYmxlLWxpYm9wZW5oMjY0ICAgICBlbmFibGUgSC4yNjQg ZW5jb2RpbmcgdmlhIE9wZW5IMjY0IFtub10KQEAgLTM1LDcgKzM1LDcgQEAgaW5kZXggYmE1Nzkz YjJmZi4uODg1NWMxYTkwOCAxMDA3NTUKICAgIC0tZW5hYmxlLWxpYm9wZW5qcGVnICAgICBlbmFi bGUgSlBFRyAyMDAwIGRlL2VuY29kaW5nIHZpYSBPcGVuSlBFRyBbbm9dCiAgICAtLWVuYWJsZS1s aWJvcGVubXB0ICAgICAgZW5hYmxlIGRlY29kaW5nIHRyYWNrZWQgZmlsZXMgdmlhIGxpYm9wZW5t cHQgW25vXQogICAgLS1lbmFibGUtbGlib3BlbnZpbm8gICAgIGVuYWJsZSBPcGVuVklOTyBhcyBh IEROTiBtb2R1bGUgYmFja2VuZAotQEAgLTE4NDQsNiArMTg0NSw3IEBAIEVYVEVSTkFMX0xJQlJB UllfTElTVD0iCitAQCAtMTg3MSw2ICsxODcyLDcgQEAgRVhURVJOQUxfTElCUkFSWV9MSVNUPSIK ICAgICAgbGlibXlzb2ZhCiAgICAgIGxpYm9wZW5jdgogICAgICBsaWJvcGVuaDI2NApAQCAtNDMs NyArNDMsNyBAQCBpbmRleCBiYTU3OTNiMmZmLi44ODU1YzFhOTA4IDEwMDc1NQogICAgICBsaWJv cGVuanBlZwogICAgICBsaWJvcGVubXB0CiAgICAgIGxpYm9wZW52aW5vCi1AQCAtNjU5Niw2ICs2 NTk4LDcgQEAgZW5hYmxlZCBsaWJvcGVuY3YgICAgICAgICAmJiB7IGNoZWNrX2hlYWRlcnMgb3Bl bmN2Mi9jb3JlL2NvcmVfYy5oICYmCitAQCAtNjc2NSw2ICs2NzY3LDcgQEAgZW5hYmxlZCBsaWJv cGVuY3YgICAgICAgICAmJiB7IGNoZWNrX2hlYWRlcnMgb3BlbmN2Mi9jb3JlL2NvcmVfYy5oICYm CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZSBsaWJvcGVuY3Ygb3Bl bmN2Mi9jb3JlL2NvcmVfYy5oIGN2Q3JlYXRlSW1hZ2VIZWFkZXIgLWxvcGVuY3ZfY29yZSAtbG9w ZW5jdl9pbWdwcm9jOyB9IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVp cmVfcGtnX2NvbmZpZyBsaWJvcGVuY3Ygb3BlbmN2IG9wZW5jdi9jeGNvcmUuaCBjdkNyZWF0ZUlt YWdlSGVhZGVyOyB9CiAgZW5hYmxlZCBsaWJvcGVuaDI2NCAgICAgICAmJiByZXF1aXJlX3BrZ19j b25maWcgbGlib3BlbmgyNjQgb3BlbmgyNjQgd2Vscy9jb2RlY19hcGkuaCBXZWxzR2V0Q29kZWNW ZXJzaW9uCkBAIC01MiwxNyArNTIsMTcgQEAgaW5kZXggYmE1NzkzYjJmZi4uODg1NWMxYTkwOCAx MDA3NTUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXF1aXJlX3BrZ19jb25m aWcgbGlib3BlbmpwZWcgImxpYm9wZW5qcDIgPj0gMi4xLjAiIG9wZW5qcGVnLmggb3BqX3ZlcnNp b24gLURPUEpfU1RBVElDICYmIGFkZF9jcHBmbGFncyAtRE9QSl9TVEFUSUM7IH0gfQogIGVuYWJs ZWQgbGlib3Blbm1wdCAgICAgICAgJiYgcmVxdWlyZV9wa2dfY29uZmlnIGxpYm9wZW5tcHQgImxp Ym9wZW5tcHQgPj0gMC4yLjY1NTciIGxpYm9wZW5tcHQvbGlib3Blbm1wdC5oIG9wZW5tcHRfbW9k dWxlX2NyZWF0ZSAtbHN0ZGMrKyAmJiBhcHBlbmQgbGlib3Blbm1wdF9leHRyYWxpYnMgIi1sc3Rk YysrIgogZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvTWFrZWZpbGUgYi9saWJhdmNvZGVjL01ha2Vm aWxlCi1pbmRleCA0NTdlYzU4Mzc3Li4wOGEyNmZiYTVmIDEwMDY0NAoraW5kZXggNTgwYThkNmI1 NC4uYzI3ZDIyOWY2ZCAxMDA2NDQKIC0tLSBhL2xpYmF2Y29kZWMvTWFrZWZpbGUKICsrKyBiL2xp YmF2Y29kZWMvTWFrZWZpbGUKLUBAIC0xMDc1LDYgKzEwNzUsNyBAQCBPQkpTLSQoQ09ORklHX0xJ Qk1QM0xBTUVfRU5DT0RFUikgICAgICAgICArPSBsaWJtcDNsYW1lLm8KK0BAIC0xMTE1LDYgKzEx MTUsNyBAQCBPQkpTLSQoQ09ORklHX0xJQk1QM0xBTUVfRU5DT0RFUikgICAgICAgICArPSBsaWJt cDNsYW1lLm8KICBPQkpTLSQoQ09ORklHX0xJQk9QRU5DT1JFX0FNUk5CX0RFQ09ERVIpICArPSBs aWJvcGVuY29yZS1hbXIubwogIE9CSlMtJChDT05GSUdfTElCT1BFTkNPUkVfQU1STkJfRU5DT0RF UikgICs9IGxpYm9wZW5jb3JlLWFtci5vCiAgT0JKUy0kKENPTkZJR19MSUJPUEVOQ09SRV9BTVJX Ql9ERUNPREVSKSAgKz0gbGlib3BlbmNvcmUtYW1yLm8KICtPQkpTLSQoQ09ORklHX0xJQk9QRU5I MjY0X0RMT1BFTikgICAgICAgICArPSBsaWJvcGVuaDI2NF9kbG9wZW4ubwogIE9CSlMtJChDT05G SUdfTElCT1BFTkgyNjRfREVDT0RFUikgICAgICAgICs9IGxpYm9wZW5oMjY0ZGVjLm8gbGlib3Bl bmgyNjQubwogIE9CSlMtJChDT05GSUdfTElCT1BFTkgyNjRfRU5DT0RFUikgICAgICAgICs9IGxp Ym9wZW5oMjY0ZW5jLm8gbGlib3BlbmgyNjQubwotIE9CSlMtJChDT05GSUdfTElCT1BFTkpQRUdf REVDT0RFUikgICAgICAgICs9IGxpYm9wZW5qcGVnZGVjLm8KKyBPQkpTLSQoQ09ORklHX0xJQk9Q RU5KUEVHX0VOQ09ERVIpICAgICAgICArPSBsaWJvcGVuanBlZ2VuYy5vCiBkaWZmIC0tZ2l0IGEv bGliYXZjb2RlYy9saWJvcGVuaDI2NC5jIGIvbGliYXZjb2RlYy9saWJvcGVuaDI2NC5jCiBpbmRl eCBjODBjODVlYThiLi4xMjhjM2Q5ODQ2IDEwMDY0NAogLS0tIGEvbGliYXZjb2RlYy9saWJvcGVu aDI2NC5jCkBAIC0yOTksNyArMjk5LDcgQEAgaW5kZXggMDAwMDAwMDAwMC4uZDdkOGJiN2NhZAog KwogKyNlbmRpZiAvKiBIQVZFX0xJQk9QRU5IMjY0X0RMT1BFTl9IICovCiBkaWZmIC0tZ2l0IGEv bGliYXZjb2RlYy9saWJvcGVuaDI2NGRlYy5jIGIvbGliYXZjb2RlYy9saWJvcGVuaDI2NGRlYy5j Ci1pbmRleCA3ZTE0ZDRkZDdkLi5hODA1NTk4NDQ2IDEwMDY0NAoraW5kZXggYjZhOWJiYTJkYy4u ZTA0MjE4OTE2MSAxMDA2NDQKIC0tLSBhL2xpYmF2Y29kZWMvbGlib3BlbmgyNjRkZWMuYwogKysr IGIvbGliYXZjb2RlYy9saWJvcGVuaDI2NGRlYy5jCiBAQCAtMTksOCArMTksMTIgQEAKQEAgLTMy OSw3ICszMjksNyBAQCBpbmRleCA3ZTE0ZDRkZDdkLi5hODA1NTk4NDQ2IDEwMDY0NAogICAgICAg ICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJVbmFibGUgdG8gY3JlYXRlIGRlY29kZXJc biIpOwogICAgICAgICAgcmV0dXJuIEFWRVJST1JfVU5LTk9XTjsKIGRpZmYgLS1naXQgYS9saWJh dmNvZGVjL2xpYm9wZW5oMjY0ZW5jLmMgYi9saWJhdmNvZGVjL2xpYm9wZW5oMjY0ZW5jLmMKLWlu ZGV4IDUyNTc5MDY1NjcuLjgwNDgxZjNkMGEgMTAwNjQ0CitpbmRleCA2ZjIzMWQyMmIyLi4zZjBl OTkwZDgwIDEwMDY0NAogLS0tIGEvbGliYXZjb2RlYy9saWJvcGVuaDI2NGVuYy5jCiArKysgYi9s aWJhdmNvZGVjL2xpYm9wZW5oMjY0ZW5jLmMKIEBAIC0xOSw4ICsxOSwxMiBAQApAQCAtMzU5LDUg KzM1OSw1IEBAIGluZGV4IDUyNTc5MDY1NjcuLjgwNDgxZjNkMGEgMTAwNjQ0CiAgICAgICAgICBh dl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIlVuYWJsZSB0byBjcmVhdGUgZW5jb2RlclxuIik7 CiAgICAgICAgICByZXR1cm4gQVZFUlJPUl9VTktOT1dOOwogLS0gCi0yLjM2LjEKKzIuNDMuMAog CgpkaWZmIC0tZ2l0IGEvZmZtcGVnLWdlLWF2MS12YWFwaS1lbmNvZGUtc3VwcG9ydC5wYXRjaCBi L2ZmbXBlZy1nZS1hdjEtdmFhcGktZW5jb2RlLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDZhZTgyNTguLjAwMDAwMDAKLS0tIGEvZmZtcGVnLWdlLWF2MS12YWFw aS1lbmNvZGUtc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ODQgKzAsMCBAQAot RnJvbSA3YzJlYTQ1MDUzYjdhM2Q0MTkzYmIwYWJiOWMwZjNiMGNkYmVlYzdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQotRnJvbTogR2xvcmlvdXNFZ2dyb2xsIDxnbG9yaW91c2VnZ3JvbGxAZ21h aWwuY29tPgotRGF0ZTogVGh1LCA5IE5vdiAyMDIzIDE3OjUxOjE5IC0wNzAwCi1TdWJqZWN0OiBb UEFUQ0hdIGJhY2twb3J0IGF2MSBlbmNvZGUgc3VwcG9ydAotCi1BZGFwdGVkIGZyb20gaHR0cHM6 Ly9wYXRjaHdvcmsuZmZtcGVnLm9yZy9wcm9qZWN0L2ZmbXBlZy9saXN0Lz9zZXJpZXM9OTU5NAot Ci0tLS0KLSBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwotIGRv Yy9lbmNvZGVycy50ZXhpICAgICAgICAgICAgICAgICAgICB8ICAxNCArCi0gbGliYXZjb2RlYy9N YWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgICAyICsKLSBsaWJhdmNvZGVjL2FsbGNvZGVjcy5j ICAgICAgICAgICAgICAgfCAgIDEgKwotIGxpYmF2Y29kZWMvYXYxLmggICAgICAgICAgICAgICAg ICAgICB8ICAgNyArCi0gbGliYXZjb2RlYy9hdjFfbGV2ZWxzLmMgICAgICAgICAgICAgIHwgIDky ICsrKwotIGxpYmF2Y29kZWMvYXYxX2xldmVscy5oICAgICAgICAgICAgICB8ICA1OCArKwotIGxp YmF2Y29kZWMvY2JzLmMgICAgICAgICAgICAgICAgICAgICB8IDE1NSArKystLQotIGxpYmF2Y29k ZWMvY2JzLmggICAgICAgICAgICAgICAgICAgICB8ICA4OCArKy0KLSBsaWJhdmNvZGVjL2Nic19h djEuYyAgICAgICAgICAgICAgICAgfCAyNjIgKysrLS0tLS0KLSBsaWJhdmNvZGVjL2Nic19hdjEu aCAgICAgICAgICAgICAgICAgfCAgIDEgKwotIGxpYmF2Y29kZWMvY2JzX2F2MV9zeW50YXhfdGVt cGxhdGUuYyB8ICAgNCArLQotIGxpYmF2Y29kZWMvY2JzX2JzZi5jICAgICAgICAgICAgICAgICB8 ICAgNSArCi0gbGliYXZjb2RlYy9jYnNfaDI2NDUuYyAgICAgICAgICAgICAgIHwgMTQ5ICsrLS0t Ci0gbGliYXZjb2RlYy9jYnNfaW50ZXJuYWwuaCAgICAgICAgICAgIHwgIDk2ICsrLQotIGxpYmF2 Y29kZWMvY2JzX21wZWcyLmMgICAgICAgICAgICAgICB8ICAxNSArLQotIGxpYmF2Y29kZWMvY2Jz X3ZwOS5jICAgICAgICAgICAgICAgICB8IDEyMiArKy0tCi0gbGliYXZjb2RlYy9leHRyYWN0X2V4 dHJhZGF0YV9ic2YuYyAgIHwgICA3ICstCi0gbGliYXZjb2RlYy90cmFjZV9oZWFkZXJzX2JzZi5j ICAgICAgIHwgICAyICsKLSBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5jICAgICAgICAgICAgfCAz NzAgKysrKysrKystLS0KLSBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5oICAgICAgICAgICAgfCAg MzkgKy0KLSBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9hdjEuYyAgICAgICAgfCA5NDkgKysrKysr KysrKysrKysrKysrKysrKysrKysrCi0gbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2NC5jICAg ICAgIHwgIDk0ICstLQotIGxpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX2gyNjUuYyAgICAgICB8ICA3 NiArKy0KLSBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9tcGVnMi5jICAgICAgfCAgIDYgKy0KLSBs aWJhdmNvZGVjL3ZhYXBpX2VuY29kZV92cDguYyAgICAgICAgfCAgIDYgKy0KLSBsaWJhdmNvZGVj L3ZhYXBpX2VuY29kZV92cDkuYyAgICAgICAgfCAgMjYgKy0KLSAyNyBmaWxlcyBjaGFuZ2VkLCAy MDU0IGluc2VydGlvbnMoKyksIDU5NSBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQg bGliYXZjb2RlYy9hdjFfbGV2ZWxzLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9h djFfbGV2ZWxzLmgKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy92YWFwaV9lbmNvZGVf YXYxLmMKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggYjY2MTZm MC4uZjVhOTFiNiAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAt MzI1OSw2ICszMjU5LDggQEAgYXYxX3Fzdl9kZWNvZGVyX3NlbGVjdD0icXN2ZGVjIgotIGF2MV9x c3ZfZW5jb2Rlcl9zZWxlY3Q9InFzdmVuYyIKLSBhdjFfcXN2X2VuY29kZXJfZGVwcz0ibGlidnBs IgotIGF2MV9hbWZfZW5jb2Rlcl9kZXBzPSJhbWYiCi0rYXYxX3ZhYXBpX2VuY29kZXJfZGVwcz0i VkFFbmNQaWN0dXJlUGFyYW1ldGVyQnVmZmVyQVYxIgotK2F2MV92YWFwaV9lbmNvZGVyX3NlbGVj dD0iY2JzX2F2MSB2YWFwaV9lbmNvZGUiCi0gCi0gIyBwYXJzZXJzCi0gYWFjX3BhcnNlcl9zZWxl Y3Q9ImFkdHNfaGVhZGVyIG1wZWc0YXVkaW8iCi1AQCAtNjk3Myw2ICs2OTc1LDcgQEAgaWYgZW5h YmxlZCB2YWFwaTsgdGhlbgotICAgICBjaGVja190eXBlICJ2YS92YS5oIHZhL3ZhX2VuY19qcGVn LmgiICJWQUVuY1BpY3R1cmVQYXJhbWV0ZXJCdWZmZXJKUEVHIgotICAgICBjaGVja190eXBlICJ2 YS92YS5oIHZhL3ZhX2VuY192cDguaCIgICJWQUVuY1BpY3R1cmVQYXJhbWV0ZXJCdWZmZXJWUDgi Ci0gICAgIGNoZWNrX3R5cGUgInZhL3ZhLmggdmEvdmFfZW5jX3ZwOS5oIiAgIlZBRW5jUGljdHVy ZVBhcmFtZXRlckJ1ZmZlclZQOSIKLSsgICAgY2hlY2tfdHlwZSAidmEvdmEuaCB2YS92YV9lbmNf YXYxLmgiICAiVkFFbmNQaWN0dXJlUGFyYW1ldGVyQnVmZmVyQVYxIgotIGZpCi0gCi0gaWYgZW5h YmxlZF9hbGwgb3BlbmNsIGxpYmRybSA7IHRoZW4KLWRpZmYgLS1naXQgYS9kb2MvZW5jb2RlcnMu dGV4aSBiL2RvYy9lbmNvZGVycy50ZXhpCi1pbmRleCBiMDI3MzdiLi45OTRlMjdmIDEwMDY0NAot LS0tIGEvZG9jL2VuY29kZXJzLnRleGkKLSsrKyBiL2RvYy9lbmNvZGVycy50ZXhpCi1AQCAtMzk2 NSw2ICszOTY1LDIwIEBAIEF2ZXJhZ2UgdmFyaWFibGUgYml0cmF0ZS4KLSBFYWNoIGVuY29kZXIg YWxzbyBoYXMgaXRzIG93biBzcGVjaWZpYyBvcHRpb25zOgotIEB0YWJsZSBAb3B0aW9uCi0gCi0r QGl0ZW0gYXYxX3ZhYXBpCi0rQG9wdGlvbntwcm9maWxlfSBzZXRzIHRoZSB2YWx1ZSBvZiBAZW1w aHtzZXFfcHJvZmlsZX0uCi0rQG9wdGlvbnt0aWVyfSBzZXRzIHRoZSB2YWx1ZSBvZiBAZW1waHtz ZXFfdGllcn0uCi0rQG9wdGlvbntsZXZlbH0gc2V0cyB0aGUgdmFsdWUgb2YgQGVtcGh7c2VxX2xl dmVsX2lkeH0uCi0rCi0rQHRhYmxlIEBvcHRpb24KLStAaXRlbSB0aWxlcwotK1NldCB0aGUgbnVt YmVyIG9mIHRpbGVzIHRvIGVuY29kZSB0aGUgaW5wdXQgdmlkZW8gd2l0aCwgYXMgY29sdW1ucyB4 IHJvd3MuCi0rKGRlZmF1bHQgaXMgYXV0bywgd2hpY2ggbWVhbnMgdXNlIG1pbmltYWwgdGlsZSBj b2x1bW4vcm93IG51bWJlcikuCi0rQGl0ZW0gdGlsZV9ncm91cHMKLStTZXQgdGlsZSBncm91cHMg bnVtYmVyLiBBbGwgdGhlIHRpbGVzIHdpbGwgYmUgZGlzdHJpYnV0ZWQgYXMgZXZlbmx5IGFzIHBv c3NpYmxlIHRvCi0rZWFjaCB0aWxlIGdyb3VwLiAoZGVmYXVsdCBpcyAxKS4KLStAZW5kIHRhYmxl Ci0rCi0gQGl0ZW0gaDI2NF92YWFwaQotIEBvcHRpb257cHJvZmlsZX0gc2V0cyB0aGUgdmFsdWUg b2YgQGVtcGh7cHJvZmlsZV9pZGN9IGFuZCB0aGUgQGVtcGh7Y29uc3RyYWludF9zZXQqX2ZsYWd9 cy4KLSBAb3B0aW9ue2xldmVsfSBzZXRzIHRoZSB2YWx1ZSBvZiBAZW1waHtsZXZlbF9pZGN9Lgot ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvTWFrZWZpbGUgYi9saWJhdmNvZGVjL01ha2VmaWxlCi1p bmRleCAzODkyNTNmLi41ZjYyMGU2IDEwMDY0NAotLS0tIGEvbGliYXZjb2RlYy9NYWtlZmlsZQot KysrIGIvbGliYXZjb2RlYy9NYWtlZmlsZQotQEAgLTI1NSw2ICsyNTUsNyBAQCBPQkpTLSQoQ09O RklHX0FWMV9DVVZJRF9ERUNPREVSKSAgICAgICArPSBjdXZpZGRlYy5vCi0gT0JKUy0kKENPTkZJ R19BVjFfTUVESUFDT0RFQ19ERUNPREVSKSAgKz0gbWVkaWFjb2RlY2RlYy5vCi0gT0JKUy0kKENP TkZJR19BVjFfTlZFTkNfRU5DT0RFUikgICAgICAgKz0gbnZlbmNfYXYxLm8gbnZlbmMubwotIE9C SlMtJChDT05GSUdfQVYxX1FTVl9FTkNPREVSKSAgICAgICAgICs9IHFzdmVuY19hdjEubwotK09C SlMtJChDT05GSUdfQVYxX1ZBQVBJX0VOQ09ERVIpICAgICAgICs9IHZhYXBpX2VuY29kZV9hdjEu byBhdjFfbGV2ZWxzLm8KLSBPQkpTLSQoQ09ORklHX0FWUk5fREVDT0RFUikgICAgICAgICAgICAr PSBhdnJuZGVjLm8KLSBPQkpTLSQoQ09ORklHX0FWUlBfREVDT0RFUikgICAgICAgICAgICArPSBy MjEwZGVjLm8KLSBPQkpTLSQoQ09ORklHX0FWUlBfRU5DT0RFUikgICAgICAgICAgICArPSByMjEw ZW5jLm8KLUBAIC0xMjk4LDYgKzEyOTksNyBAQCBURVNUUFJPR1MgPSBhdmNvZGVjICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg ICAganBlZzIwMDBkd3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotICAgICAgICAgICAgIG1hdGhvcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotIAotK1RFU1RQUk9HUy0kKENPTkZJR19BVjFfVkFB UElfRU5DT0RFUikgICAgICs9IGF2MV9sZXZlbHMKLSBURVNUUFJPR1MtJChDT05GSUdfQ0FCQUMp ICAgICAgICAgICAgICAgICArPSBjYWJhYwotIFRFU1RQUk9HUy0kKENPTkZJR19EQ1QpICAgICAg ICAgICAgICAgICAgICs9IGF2ZmZ0Ci0gVEVTVFBST0dTLSQoQ09ORklHX0ZGVCkgICAgICAgICAg ICAgICAgICAgKz0gZmZ0IGZmdC1maXhlZDMyCi1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hbGxj b2RlY3MuYyBiL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMKLWluZGV4IGU1OTNhZDEuLjQ3MDZmYzMg MTAwNjQ0Ci0tLS0gYS9saWJhdmNvZGVjL2FsbGNvZGVjcy5jCi0rKysgYi9saWJhdmNvZGVjL2Fs bGNvZGVjcy5jCi1AQCAtODM4LDYgKzgzOCw3IEBAIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2F2 MV9udmVuY19lbmNvZGVyOwotIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2F2MV9xc3ZfZGVjb2Rl cjsKLSBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9hdjFfcXN2X2VuY29kZXI7Ci0gZXh0ZXJuIGNv bnN0IEZGQ29kZWMgZmZfYXYxX2FtZl9lbmNvZGVyOwotK2V4dGVybiBjb25zdCBGRkNvZGVjIGZm X2F2MV92YWFwaV9lbmNvZGVyOwotIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYm9wZW5oMjY0 X2VuY29kZXI7Ci0gZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfbGlib3BlbmgyNjRfZGVjb2RlcjsK LSBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9oMjY0X2FtZl9lbmNvZGVyOwotZGlmZiAtLWdpdCBh L2xpYmF2Y29kZWMvYXYxLmggYi9saWJhdmNvZGVjL2F2MS5oCi1pbmRleCAzODRmN2NkLi44NzA0 YmM0IDEwMDY0NAotLS0tIGEvbGliYXZjb2RlYy9hdjEuaAotKysrIGIvbGliYXZjb2RlYy9hdjEu aAotQEAgLTE3NSw2ICsxNzUsMTMgQEAgZW51bSB7Ci0gICAgIEFWMV9SRVNUT1JFX1NXSVRDSEFC TEUgPSAzLAotIH07Ci0gCi0rLy8gVFggbW9kZSAoc2VjdGlvbiA2LjguMjEpCi0rZW51bSB7Ci0r ICAgIEFWMV9PTkxZXzRYNCAgICAgICAgPSAwLAotKyAgICBBVjFfVFhfTU9ERV9MQVJHRVNUID0g MSwKLSsgICAgQVYxX1RYX01PREVfU0VMRUNUICA9IDIsCi0rfTsKLSsKLSAvLyBTZXF1ZW5jZSBI ZWFkZXJzIGFyZSBhY3R1YWxseSB1bmJvdW5kZWQgYmVjYXVzZSBvbmUgY2FuIHVzZQotIC8vIGFu IGFyYml0cmFyeSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvZXMgd2hlbiBlbmNvZGluZyB2aWEgdXZs Yy4KLSAvLyBUaGUgZm9sbG93aW5nIGVzdGltYXRlIGlzIGJhc2VkIGFyb3VuZCB1c2luZyB0aGUg bG93ZXN0IG51bWJlcgotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYXYxX2xldmVscy5jIGIvbGli YXZjb2RlYy9hdjFfbGV2ZWxzLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw Li4xOWI2ZWUxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJhdmNvZGVjL2F2MV9sZXZlbHMuYwot QEAgLTAsMCArMSw5MiBAQAotKy8qCi0rICogQ29weXJpZ2h0IChjKSAyMDIzIEludGVsIENvcnBv cmF0aW9uCi0rICoKLSsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCi0rICoKLSsgKiBG Rm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0r ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogRkZtcGVnIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlIEdOVQotKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYg bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAqIEZvdW5kYXRpb24sIEluYy4sIDUx IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EK LSsgKi8KLSsKLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2luY2x1ZGUgImxpYmF2dXRpbC9tYWNy b3MuaCIKLSsjaW5jbHVkZSAiYXYxX2xldmVscy5oIgotKwotKy8qKiBpZ25vcmUgZW50cmllcyB3 aGljaCBuYW1lZCBpbiBzcGVjIGJ1dCBubyBkZXRhaWxzLiBMaWtlIGxldmVsIDIuMiBhbmQgNy4w LiAqLwotK3N0YXRpYyBjb25zdCBBVjFMZXZlbERlc2NyaXB0b3IgYXYxX2xldmVsc1tdID0gewot KyAgICAvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgIE1heFZTaXplICAgICAgICAgICAgICAg ICAgICAgICAgICAgTWFpbk1icHMgICAgICAgICAgICAgIE1heFRpbGVzCi0rICAgIC8vIHwgIGxl dmVsX2lkeCAgICAgICAgICAgICAgICAgfCBNYXhEaXNwbGF5UmF0ZSAgICAgICAgICAgICAgICAg ICAgfCBIaWdoTWJwcyAgICAgICAgIHwgTWF4VGlsZUNvbHMKLSsgICAgLy8gfCAgICAgIHwgICBN YXhQaWNTaXplICAgICAgICB8ICAgICAgIHwgICAgIE1heERlY29kZVJhdGUgICAgICAgICB8ICAg IHwgICBNYWluQ1IgICAgfCAgIHwKLSsgICAgLy8gfCAgICAgIHwgICAgIHwgICAgTWF4SFNpemUg ICB8ICAgICAgIHwgICAgICAgICAgIHwgTWF4SGVhZGVyUmF0ZSB8ICAgIHwgICAgIHwgSGlnaENS fCAgIHwKLSsgICAgLy8gfCAgICAgIHwgICAgIHwgICAgICAgIHwgICAgICB8ICAgICAgIHwgICAg ICAgICAgIHwgICAgICAgfCAgICAgICB8ICAgIHwgICAgIHwgIHwgICAgfCAgIHwKLSsgICAgeyAi Mi4wIiwgIDAsICAgMTQ3NDU2LCAgMjA0OCwgMTE1MiwgICA0NDIzNjgwLCAgICAgNTUyOTYwMCwg MTUwLCAgIDEuNSwgICAgIDAsIDIsIDAsICAgOCwgIDQgfSwKLSsgICAgeyAiMi4xIiwgIDEsICAg Mjc4Nzg0LCAgMjgxNiwgMTU4NCwgICA4MzYzNTIwLCAgICAxMDQ1NDQwMCwgMTUwLCAgIDMuMCwg ICAgIDAsIDIsIDAsICAgOCwgIDQgfSwKLSsgICAgeyAiMy4wIiwgIDQsICAgNjY1ODU2LCAgNDM1 MiwgMjQ0OCwgIDE5OTc1NjgwLCAgICAyNDk2OTYwMCwgMTUwLCAgIDYuMCwgICAgIDAsIDIsIDAs ICAxNiwgIDYgfSwKLSsgICAgeyAiMy4xIiwgIDUsICAxMDY1MDI0LCAgNTUwNCwgMzA5NiwgIDMx OTUwNzIwLCAgICAzOTkzODQwMCwgMTUwLCAgMTAuMCwgICAgIDAsIDIsIDAsICAxNiwgIDYgfSwK LSsgICAgeyAiNC4wIiwgIDgsICAyMzU5Mjk2LCAgNjE0NCwgMzQ1NiwgIDcwNzc4ODgwLCAgICA3 Nzg1Njc2OCwgMzAwLCAgMTIuMCwgIDMwLjAsIDQsIDQsICAzMiwgIDggfSwKLSsgICAgeyAiNC4x IiwgIDksICAyMzU5Mjk2LCAgNjE0NCwgMzQ1NiwgIDE0MTU1Nzc2MCwgIDE1NTcxMzUzNiwgMzAw LCAgMjAuMCwgIDUwLjAsIDQsIDQsICAzMiwgIDggfSwKLSsgICAgeyAiNS4wIiwgMTIsICA4OTEy ODk2LCAgODE5MiwgNDM1MiwgIDI2NzM4Njg4MCwgIDI3MzcxNTIwMCwgMzAwLCAgMzAuMCwgMTAw LjAsIDYsIDQsICA2NCwgIDggfSwKLSsgICAgeyAiNS4xIiwgMTMsICA4OTEyODk2LCAgODE5Miwg NDM1MiwgIDUzNDc3Mzc2MCwgIDU0NzQzMDQwMCwgMzAwLCAgNDAuMCwgMTYwLjAsIDgsIDQsICA2 NCwgIDggfSwKLSsgICAgeyAiNS4yIiwgMTQsICA4OTEyODk2LCAgODE5MiwgNDM1MiwgMTA2OTU0 NzUyMCwgMTA5NDg2MDgwMCwgMzAwLCAgNjAuMCwgMjQwLjAsIDgsIDQsICA2NCwgIDggfSwKLSsg ICAgeyAiNS4zIiwgMTUsICA4OTEyODk2LCAgODE5MiwgNDM1MiwgMTA2OTU0NzUyMCwgMTE3NjUw MjI3MiwgMzAwLCAgNjAuMCwgMjQwLjAsIDgsIDQsICA2NCwgIDggfSwKLSsgICAgeyAiNi4wIiwg MTYsIDM1NjUxNTg0LCAxNjM4NCwgODcwNCwgMTA2OTU0NzUyMCwgMTE3NjUwMjI3MiwgMzAwLCAg NjAuMCwgMjQwLjAsIDgsIDQsIDEyOCwgMTYgfSwKLSsgICAgeyAiNi4xIiwgMTcsIDM1NjUxNTg0 LCAxNjM4NCwgODcwNCwgMjEzOTA5NTA0MCwgMjE4OTcyMTYwMCwgMzAwLCAxMDAuMCwgNDgwLjAs IDgsIDQsIDEyOCwgMTYgfSwKLSsgICAgeyAiNi4yIiwgMTgsIDM1NjUxNTg0LCAxNjM4NCwgODcw NCwgNDI3ODE5MDA4MCwgNDM3OTQ0MzIwMCwgMzAwLCAxNjAuMCwgODAwLjAsIDgsIDQsIDEyOCwg MTYgfSwKLSsgICAgeyAiNi4zIiwgMTksIDM1NjUxNTg0LCAxNjM4NCwgODcwNCwgNDI3ODE5MDA4 MCwgNDcwNjAwOTA4OCwgMzAwLCAxNjAuMCwgODAwLjAsIDgsIDQsIDEyOCwgMTYgfSwKLSt9Owot KwotK2NvbnN0IEFWMUxldmVsRGVzY3JpcHRvciAqZmZfYXYxX2d1ZXNzX2xldmVsKGludDY0X3Qg Yml0cmF0ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgdGllciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgd2lkdGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IGhlaWdodCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgdGlsZXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IHRpbGVfY29scywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmbG9hdCBmcHMpCi0rewotKyAgICBpbnQgcGljX3NpemU7Ci0rICAgIHVpbnQ2NF90 IGRpc3BsYXlfcmF0ZTsKLSsgICAgZmxvYXQgbWF4X2JyOwotKwotKyAgICBwaWNfc2l6ZSA9IHdp ZHRoICogaGVpZ2h0OwotKyAgICBkaXNwbGF5X3JhdGUgPSAodWludDY0X3QpcGljX3NpemUgKiBm cHM7Ci0rCi0rICAgIGZvciAoaW50IGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMoYXYxX2xldmVs cyk7IGkrKykgewotKyAgICAgICAgY29uc3QgQVYxTGV2ZWxEZXNjcmlwdG9yICpsZXZlbCA9ICZh djFfbGV2ZWxzW2ldOwotKyAgICAgICAgLy8gTGltaXRhdGlvbjogZGVjb2RlIHJhdGUsIGhlYWRl ciByYXRlLCBjb21wcmVzcyByYXRlLCBldGMuIGFyZSBub3QgY29uc2lkZXJlZC4KLSsgICAgICAg IGlmIChwaWNfc2l6ZSA+IGxldmVsLT5tYXhfcGljX3NpemUpCi0rICAgICAgICAgICAgY29udGlu dWU7Ci0rICAgICAgICBpZiAod2lkdGggPiBsZXZlbC0+bWF4X2hfc2l6ZSkKLSsgICAgICAgICAg ICBjb250aW51ZTsKLSsgICAgICAgIGlmIChoZWlnaHQgPiBsZXZlbC0+bWF4X3Zfc2l6ZSkKLSsg ICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgIGlmIChkaXNwbGF5X3JhdGUgPiBsZXZlbC0+ bWF4X2Rpc3BsYXlfcmF0ZSkKLSsgICAgICAgICAgICBjb250aW51ZTsKLSsKLSsgICAgICAgIGlm ICh0aWVyKQotKyAgICAgICAgICAgIG1heF9iciA9IGxldmVsLT5oaWdoX21icHM7Ci0rICAgICAg ICBlbHNlCi0rICAgICAgICAgICAgbWF4X2JyID0gbGV2ZWwtPm1haW5fbWJwczsKLSsgICAgICAg IGlmICghbWF4X2JyKQotKyAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgaWYgKGJpdHJh dGUgPiAoaW50NjRfdCkoMTAwMDAwMC4wICogbWF4X2JyKSkKLSsgICAgICAgICAgICBjb250aW51 ZTsKLSsKLSsgICAgICAgIGlmICh0aWxlcyA+IGxldmVsLT5tYXhfdGlsZXMpCi0rICAgICAgICAg ICAgY29udGludWU7Ci0rICAgICAgICBpZiAodGlsZV9jb2xzID4gbGV2ZWwtPm1heF90aWxlX2Nv bHMpCi0rICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICByZXR1cm4gbGV2ZWw7Ci0rICAg IH0KLSsKLSsgICAgcmV0dXJuIE5VTEw7Ci0rfQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYXYx X2xldmVscy5oIGIvbGliYXZjb2RlYy9hdjFfbGV2ZWxzLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci1pbmRleCAwMDAwMDAwLi4xNjRjYjg3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJhdmNvZGVj L2F2MV9sZXZlbHMuaAotQEAgLTAsMCArMSw1OCBAQAotKy8qCi0rICogQ29weXJpZ2h0IChjKSAy MDIzIEludGVsIENvcnBvcmF0aW9uCi0rICoKLSsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1w ZWcuCi0rICoKLSsgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yCi0rICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNl bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogRkZt cGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhbG9uZyB3 aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAqIEZvdW5k YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg MDIxMTAtMTMwMSBVU0EKLSsgKi8KLSsKLSsjaWZuZGVmIEFWQ09ERUNfQVYxX0xFVkVMU19ICi0r I2RlZmluZSBBVkNPREVDX0FWMV9MRVZFTFNfSAotKwotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsK LSt0eXBlZGVmIHN0cnVjdCBBVjFMZXZlbERlc2NyaXB0b3IgewotKyAgICBjaGFyICAgICBuYW1l WzRdOwotKyAgICB1aW50OF90ICBsZXZlbF9pZHg7Ci0rCi0rICAgIHVpbnQzMl90IG1heF9waWNf c2l6ZTsKLSsgICAgdWludDMyX3QgbWF4X2hfc2l6ZTsKLSsgICAgdWludDMyX3QgbWF4X3Zfc2l6 ZTsKLSsgICAgdWludDY0X3QgbWF4X2Rpc3BsYXlfcmF0ZTsKLSsgICAgdWludDY0X3QgbWF4X2Rl Y29kZV9yYXRlOwotKwotKyAgICB1aW50MzJfdCBtYXhfaGVhZGVyX3JhdGU7Ci0rICAgIGZsb2F0 ICAgIG1haW5fbWJwczsKLSsgICAgZmxvYXQgICAgaGlnaF9tYnBzOwotKyAgICB1aW50MzJfdCBt YWluX2NyOwotKyAgICB1aW50MzJfdCBoaWdoX2NyOwotKyAgICB1aW50MzJfdCBtYXhfdGlsZXM7 Ci0rICAgIHVpbnQzMl90IG1heF90aWxlX2NvbHM7Ci0rfSBBVjFMZXZlbERlc2NyaXB0b3I7Ci0r Ci0rLyoqCi0rICogR3Vlc3MgdGhlIGxldmVsIG9mIGEgc3RyZWFtIGZyb20gc29tZSBwYXJhbWV0 ZXJzLgotKyAqCi0rICogVW5rbm93biBwYXJhbWV0ZXJzIG1heSBiZSB6ZXJvLCBpbiB3aGljaCBj YXNlIHRoZXkgd2lsbCBiZSBpZ25vcmVkLgotKyAqLwotK2NvbnN0IEFWMUxldmVsRGVzY3JpcHRv ciAqZmZfYXYxX2d1ZXNzX2xldmVsKGludDY0X3QgYml0cmF0ZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGllciwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGlsZV9yb3dzLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aWxlX2NvbHMsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZnBzKTsKLSsK LSsjZW5kaWYgLyogQVZDT0RFQ19BVjFfTEVWRUxTX0ggKi8KLWRpZmYgLS1naXQgYS9saWJhdmNv ZGVjL2Nicy5jIGIvbGliYXZjb2RlYy9jYnMuYwotaW5kZXggNTA0MTk3ZS4uNjRiOWFlZSAxMDA2 NDQKLS0tLSBhL2xpYmF2Y29kZWMvY2JzLmMKLSsrKyBiL2xpYmF2Y29kZWMvY2JzLmMKLUBAIC0x MTEsOCArMTExLDkgQEAgYXZfY29sZCBpbnQgZmZfY2JzX2luaXQoQ29kZWRCaXRzdHJlYW1Db250 ZXh0ICoqY3R4X3B0ciwKLSAKLSAgICAgY3R4LT5kZWNvbXBvc2VfdW5pdF90eXBlcyA9IE5VTEw7 Ci0gCi0tICAgIGN0eC0+dHJhY2VfZW5hYmxlID0gMDsKLS0gICAgY3R4LT50cmFjZV9sZXZlbCAg PSBBVl9MT0dfVFJBQ0U7Ci0rICAgIGN0eC0+dHJhY2VfZW5hYmxlICA9IDA7Ci0rICAgIGN0eC0+ dHJhY2VfbGV2ZWwgICA9IEFWX0xPR19UUkFDRTsKLSsgICAgY3R4LT50cmFjZV9jb250ZXh0ID0g Y3R4OwotIAotICAgICAqY3R4X3B0ciA9IGN0eDsKLSAgICAgcmV0dXJuIDA7Ci1AQCAtNDkwLDE5 ICs0OTEsMjcgQEAgdm9pZCBmZl9jYnNfdHJhY2VfaGVhZGVyKENvZGVkQml0c3RyZWFtQ29udGV4 dCAqY3R4LAotICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBjdHgtPnRyYWNlX2xldmVsLCAiJXNc biIsIG5hbWUpOwotIH0KLSAKLS12b2lkIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChDb2Rl ZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgaW50IHBvc2l0aW9uLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgaW50ICpzdWJzY3JpcHRzLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJpdHMsIGludDY0 X3QgdmFsdWUpCi0rdm9pZCBmZl9jYnNfdHJhY2VfcmVhZF9sb2codm9pZCAqdHJhY2VfY29udGV4 dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRCaXRDb250ZXh0ICpnYmMsIGludCBs ZW5ndGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyLCBjb25z dCBpbnQgKnN1YnNjcmlwdHMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2 YWx1ZSkKLSB7Ci0rICAgIENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4ID0gdHJhY2VfY29udGV4 dDsKLSAgICAgY2hhciBuYW1lWzI1Nl07Ci0rICAgIGNoYXIgYml0c1syNTZdOwotICAgICBzaXpl X3QgbmFtZV9sZW4sIGJpdHNfbGVuOwotICAgICBpbnQgcGFkLCBzdWJzLCBpLCBqLCBrLCBuOwot LQotLSAgICBpZiAoIWN0eC0+dHJhY2VfZW5hYmxlKQotLSAgICAgICAgcmV0dXJuOwotKyAgICBp bnQgcG9zaXRpb247Ci0gCi0gICAgIGF2X2Fzc2VydDAodmFsdWUgPj0gSU5UX01JTiAmJiB2YWx1 ZSA8PSBVSU5UMzJfTUFYKTsKLSAKLSsgICAgcG9zaXRpb24gPSBnZXRfYml0c19jb3VudChnYmMp OwotKwotKyAgICBhdl9hc3NlcnQwKGxlbmd0aCA8IDI1Nik7Ci0rICAgIGZvciAoaSA9IDA7IGkg PCBsZW5ndGg7IGkrKykKLSsgICAgICAgIGJpdHNbaV0gPSBnZXRfYml0czEoZ2JjKSA/ICcxJyA6 ICcwJzsKLSsgICAgYml0c1tsZW5ndGhdID0gMDsKLSsKLSAgICAgc3VicyA9IHN1YnNjcmlwdHMg PyBzdWJzY3JpcHRzWzBdIDogMDsKLSAgICAgbiA9IDA7Ci0gICAgIGZvciAoaSA9IGogPSAwOyBz dHJbaV07KSB7Ci1AQCAtNTI5LDcgKzUzOCw3IEBAIHZvaWQgZmZfY2JzX3RyYWNlX3N5bnRheF9l bGVtZW50KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBpbnQgcG9zaXRpb24sCi0gICAgIGF2 X2Fzc2VydDAobiA9PSBzdWJzKTsKLSAKLSAgICAgbmFtZV9sZW4gPSBzdHJsZW4obmFtZSk7Ci0t ICAgIGJpdHNfbGVuID0gc3RybGVuKGJpdHMpOwotKyAgICBiaXRzX2xlbiA9IGxlbmd0aDsKLSAK LSAgICAgaWYgKG5hbWVfbGVuICsgYml0c19sZW4gPiA2MCkKLSAgICAgICAgIHBhZCA9IGJpdHNf bGVuICsgMjsKLUBAIC01NDAsMTQgKzU0OSw0OCBAQCB2b2lkIGZmX2Nic190cmFjZV9zeW50YXhf ZWxlbWVudChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgaW50IHBvc2l0aW9uLAotICAgICAg ICAgICAgcG9zaXRpb24sIG5hbWUsIHBhZCwgYml0cywgdmFsdWUpOwotIH0KLSAKLS1pbnQgZmZf Y2JzX3JlYWRfdW5zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRl eHQgKmdiYywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBjb25zdCBjaGFy ICpuYW1lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMs IHVpbnQzMl90ICp3cml0ZV90bywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg cmFuZ2VfbWluLCB1aW50MzJfdCByYW5nZV9tYXgpCi0rdm9pZCBmZl9jYnNfdHJhY2Vfd3JpdGVf bG9nKHZvaWQgKnRyYWNlX2NvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 dEJpdENvbnRleHQgKnBiYywgaW50IGxlbmd0aCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqc3RyLCBjb25zdCBpbnQgKnN1YnNjcmlwdHMsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludDY0X3QgdmFsdWUpCi0gewotLSAgICB1aW50MzJfdCB2YWx1ZTsK LSsgICAgQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHggPSB0cmFjZV9jb250ZXh0OwotKwotKyAg ICAvLyBFbnN1cmUgdGhhdCB0aGUgc3ludGF4IGVsZW1lbnQgaXMgd3JpdHRlbiB0byB0aGUgb3V0 cHV0IGJ1ZmZlciwKLSsgICAgLy8gbWFrZSBhIEdldEJpdENvbnRleHQgcG9pbnRlZCBhdCB0aGUg c3RhcnQgcG9zaXRpb24sIHRoZW4gY2FsbCB0aGUKLSsgICAgLy8gcmVhZCBsb2cgZnVuY3Rpb24g d2hpY2ggY2FuIHJlYWQgdGhlIGJpdHMgYmFjayB0byBsb2cgdGhlbS4KLSsKLSsgICAgR2V0Qml0 Q29udGV4dCBnYmM7Ci0gICAgIGludCBwb3NpdGlvbjsKLSAKLSsgICAgaWYgKGxlbmd0aCA+IDAp IHsKLSsgICAgICAgIFB1dEJpdENvbnRleHQgZmx1c2g7Ci0rICAgICAgICBmbHVzaCA9ICpwYmM7 Ci0rICAgICAgICBmbHVzaF9wdXRfYml0cygmZmx1c2gpOwotKyAgICB9Ci0rCi0rICAgIHBvc2l0 aW9uID0gcHV0X2JpdHNfY291bnQocGJjKTsKLSsgICAgYXZfYXNzZXJ0MChwb3NpdGlvbiA+PSBs ZW5ndGgpOwotKwotKyAgICBpbml0X2dldF9iaXRzKCZnYmMsIHBiYy0+YnVmLCBwb3NpdGlvbik7 Ci0rCi0rICAgIHNraXBfYml0c19sb25nKCZnYmMsIHBvc2l0aW9uIC0gbGVuZ3RoKTsKLSsKLSsg ICAgZmZfY2JzX3RyYWNlX3JlYWRfbG9nKGN0eCwgJmdiYywgbGVuZ3RoLCBzdHIsIHN1YnNjcmlw dHMsIHZhbHVlKTsKLSt9Ci0rCi0rc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGNic19yZWFk X3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRCaXRDb250ZXh0ICpnYmMsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwgY29uc3Qg Y2hhciAqbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCAqd3JpdGVfdG8sCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJhbmdlX21pbiwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmFuZ2VfbWF4 KQotK3sKLSsgICAgdWludDMyX3QgdmFsdWU7Ci0rCi0rICAgIENCU19UUkFDRV9SRUFEX1NUQVJU KCk7Ci0rCi0gICAgIGF2X2Fzc2VydDAod2lkdGggPiAwICYmIHdpZHRoIDw9IDMyKTsKLSAKLSAg ICAgaWYgKGdldF9iaXRzX2xlZnQoZ2JjKSA8IHdpZHRoKSB7Ci1AQCAtNTU2LDIxICs1OTksOSBA QCBpbnQgZmZfY2JzX3JlYWRfdW5zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdl dEJpdENvbnRleHQgKmdiYywKLSAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwot ICAgICB9Ci0gCi0tICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKLS0gICAgICAgIHBvc2l0aW9u ID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsKLS0KLSAgICAgdmFsdWUgPSBnZXRfYml0c19sb25nKGdi Yywgd2lkdGgpOwotIAotLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsKLS0gICAgICAgIGNo YXIgYml0c1szM107Ci0tICAgICAgICBpbnQgaTsKLS0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB3 aWR0aDsgaSsrKQotLSAgICAgICAgICAgIGJpdHNbaV0gPSB2YWx1ZSA+PiAod2lkdGggLSBpIC0g MSkgJiAxID8gJzEnIDogJzAnOwotLSAgICAgICAgYml0c1tpXSA9IDA7Ci0tCi0tICAgICAgICBm Zl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgc3Vic2NyaXB0 cywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzLCB2YWx1ZSk7Ci0t ICAgIH0KLSsgICAgQ0JTX1RSQUNFX1JFQURfRU5EKCk7Ci0gCi0gICAgIGlmICh2YWx1ZSA8IHJh bmdlX21pbiB8fCB2YWx1ZSA+IHJhbmdlX21heCkgewotICAgICAgICAgYXZfbG9nKGN0eC0+bG9n X2N0eCwgQVZfTE9HX0VSUk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAiCi1AQCAtNTgzLDExICs2MTQs MjkgQEAgaW50IGZmX2Nic19yZWFkX3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4 LCBHZXRCaXRDb250ZXh0ICpnYmMsCi0gICAgIHJldHVybiAwOwotIH0KLSAKLStpbnQgZmZfY2Jz X3JlYWRfdW5zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQg KmdiYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBjb25zdCBjaGFyICpu YW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIHVp bnQzMl90ICp3cml0ZV90bywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmFu Z2VfbWluLCB1aW50MzJfdCByYW5nZV9tYXgpCi0rewotKyAgICByZXR1cm4gY2JzX3JlYWRfdW5z aWduZWQoY3R4LCBnYmMsIHdpZHRoLCBuYW1lLCBzdWJzY3JpcHRzLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgd3JpdGVfdG8sIHJhbmdlX21pbiwgcmFuZ2VfbWF4KTsKLSt9Ci0rCi0r aW50IGZmX2Nic19yZWFkX3NpbXBsZV91bnNpZ25lZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0 eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IHdpZHRoLCBjb25zdCBjaGFyICpuYW1lLCB1aW50MzJfdCAqd3JpdGVfdG8pCi0rewotKyAg ICByZXR1cm4gY2JzX3JlYWRfdW5zaWduZWQoY3R4LCBnYmMsIHdpZHRoLCBuYW1lLCBOVUxMLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfdG8sIDAsIFVJTlQzMl9NQVgpOwot K30KLSsKLSBpbnQgZmZfY2JzX3dyaXRlX3Vuc2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAq Y3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg d2lkdGgsIGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBpbnQgKnN1YnNjcmlwdHMsIHVpbnQzMl90IHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgcmFuZ2VfbWluLCB1aW50MzJfdCByYW5nZV9tYXgpCi0gewotKyAgICBD QlNfVFJBQ0VfV1JJVEVfU1RBUlQoKTsKLSsKLSAgICAgYXZfYXNzZXJ0MCh3aWR0aCA+IDAgJiYg d2lkdGggPD0gMzIpOwotIAotICAgICBpZiAodmFsdWUgPCByYW5nZV9taW4gfHwgdmFsdWUgPiBy YW5nZV9tYXgpIHsKLUBAIC02MDAsMzIgKzY0OSwzMSBAQCBpbnQgZmZfY2JzX3dyaXRlX3Vuc2ln bmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCi0gICAg IGlmIChwdXRfYml0c19sZWZ0KHBiYykgPCB3aWR0aCkKLSAgICAgICAgIHJldHVybiBBVkVSUk9S KEVOT1NQQyk7Ci0gCi0tICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgewotLSAgICAgICAgY2hh ciBiaXRzWzMzXTsKLS0gICAgICAgIGludCBpOwotLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHdp ZHRoOyBpKyspCi0tICAgICAgICAgICAgYml0c1tpXSA9IHZhbHVlID4+ICh3aWR0aCAtIGkgLSAx KSAmIDEgPyAnMScgOiAnMCc7Ci0tICAgICAgICBiaXRzW2ldID0gMDsKLS0KLS0gICAgICAgIGZm X2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHB1dF9iaXRzX2NvdW50KHBiYyksCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3Vic2NyaXB0cywgYml0cywg dmFsdWUpOwotLSAgICB9Ci0tCi0gICAgIGlmICh3aWR0aCA8IDMyKQotICAgICAgICAgcHV0X2Jp dHMocGJjLCB3aWR0aCwgdmFsdWUpOwotICAgICBlbHNlCi0gICAgICAgICBwdXRfYml0czMyKHBi YywgdmFsdWUpOwotIAotKyAgICBDQlNfVFJBQ0VfV1JJVEVfRU5EKCk7Ci0rCi0gICAgIHJldHVy biAwOwotIH0KLSAKLStpbnQgZmZfY2JzX3dyaXRlX3NpbXBsZV91bnNpZ25lZChDb2RlZEJpdHN0 cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCB3aWR0aCwgY29uc3QgY2hhciAqbmFtZSwgdWludDMyX3QgdmFs dWUpCi0rewotKyAgICByZXR1cm4gZmZfY2JzX3dyaXRlX3Vuc2lnbmVkKGN0eCwgcGJjLCB3aWR0 aCwgbmFtZSwgTlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwg MCwgTUFYX1VJTlRfQklUUyh3aWR0aCkpOwotK30KLSsKLSBpbnQgZmZfY2JzX3JlYWRfc2lnbmVk KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCi0gICAgICAg ICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIGludDMyX3QgKndyaXRlX3RvLAot ICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCByYW5nZV9taW4sIGludDMyX3QgcmFuZ2Vf bWF4KQotIHsKLSAgICAgaW50MzJfdCB2YWx1ZTsKLS0gICAgaW50IHBvc2l0aW9uOwotKwotKyAg ICBDQlNfVFJBQ0VfUkVBRF9TVEFSVCgpOwotIAotICAgICBhdl9hc3NlcnQwKHdpZHRoID4gMCAm JiB3aWR0aCA8PSAzMik7Ci0gCi1AQCAtNjM1LDIxICs2ODMsOSBAQCBpbnQgZmZfY2JzX3JlYWRf c2lnbmVkKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCi0g ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgfQotIAotLSAgICBpZiAo Y3R4LT50cmFjZV9lbmFibGUpCi0tICAgICAgICBwb3NpdGlvbiA9IGdldF9iaXRzX2NvdW50KGdi Yyk7Ci0tCi0gICAgIHZhbHVlID0gZ2V0X3NiaXRzX2xvbmcoZ2JjLCB3aWR0aCk7Ci0gCi0tICAg IGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgewotLSAgICAgICAgY2hhciBiaXRzWzMzXTsKLS0gICAg ICAgIGludCBpOwotLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyBpKyspCi0tICAgICAg ICAgICAgYml0c1tpXSA9IHZhbHVlICYgKDFVIDw8ICh3aWR0aCAtIGkgLSAxKSkgPyAnMScgOiAn MCc7Ci0tICAgICAgICBiaXRzW2ldID0gMDsKLS0KLS0gICAgICAgIGZmX2Nic190cmFjZV9zeW50 YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLCBzdWJzY3JpcHRzLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMsIHZhbHVlKTsKLS0gICAgfQotKyAgICBDQlNf VFJBQ0VfUkVBRF9FTkQoKTsKLSAKLSAgICAgaWYgKHZhbHVlIDwgcmFuZ2VfbWluIHx8IHZhbHVl ID4gcmFuZ2VfbWF4KSB7Ci0gICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJS T1IsICIlcyBvdXQgb2YgcmFuZ2U6ICIKLUBAIC02NjcsNiArNzAzLDggQEAgaW50IGZmX2Nic193 cml0ZV9zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBi YywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIGludDMy X3QgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCByYW5nZV9taW4sIGlu dDMyX3QgcmFuZ2VfbWF4KQotIHsKLSsgICAgQ0JTX1RSQUNFX1dSSVRFX1NUQVJUKCk7Ci0rCi0g ICAgIGF2X2Fzc2VydDAod2lkdGggPiAwICYmIHdpZHRoIDw9IDMyKTsKLSAKLSAgICAgaWYgKHZh bHVlIDwgcmFuZ2VfbWluIHx8IHZhbHVlID4gcmFuZ2VfbWF4KSB7Ci1AQCAtNjc5LDIyICs3MTcs MTMgQEAgaW50IGZmX2Nic193cml0ZV9zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgs IFB1dEJpdENvbnRleHQgKnBiYywKLSAgICAgaWYgKHB1dF9iaXRzX2xlZnQocGJjKSA8IHdpZHRo KQotICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1BDKTsKLSAKLS0gICAgaWYgKGN0eC0+dHJh Y2VfZW5hYmxlKSB7Ci0tICAgICAgICBjaGFyIGJpdHNbMzNdOwotLSAgICAgICAgaW50IGk7Ci0t ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7IGkrKykKLS0gICAgICAgICAgICBiaXRzW2ld ID0gdmFsdWUgJiAoMVUgPDwgKHdpZHRoIC0gaSAtIDEpKSA/ICcxJyA6ICcwJzsKLS0gICAgICAg IGJpdHNbaV0gPSAwOwotLQotLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0 eCwgcHV0X2JpdHNfY291bnQocGJjKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuYW1lLCBzdWJzY3JpcHRzLCBiaXRzLCB2YWx1ZSk7Ci0tICAgIH0KLS0KLSAgICAgaWYg KHdpZHRoIDwgMzIpCi0gICAgICAgICBwdXRfc2JpdHMocGJjLCB3aWR0aCwgdmFsdWUpOwotICAg ICBlbHNlCi0gICAgICAgICBwdXRfYml0czMyKHBiYywgdmFsdWUpOwotIAotKyAgICBDQlNfVFJB Q0VfV1JJVEVfRU5EKCk7Ci0rCi0gICAgIHJldHVybiAwOwotIH0KLSAKLWRpZmYgLS1naXQgYS9s aWJhdmNvZGVjL2Nicy5oIGIvbGliYXZjb2RlYy9jYnMuaAotaW5kZXggZWUyMTYyMy4uZjY1MDlh MiAxMDA2NDQKLS0tLSBhL2xpYmF2Y29kZWMvY2JzLmgKLSsrKyBiL2xpYmF2Y29kZWMvY2JzLmgK LUBAIC0xNjcsNiArMTY3LDUxIEBAIHR5cGVkZWYgc3RydWN0IENvZGVkQml0c3RyZWFtRnJhZ21l bnQgewotICAgICBDb2RlZEJpdHN0cmVhbVVuaXQgKnVuaXRzOwotIH0gQ29kZWRCaXRzdHJlYW1G cmFnbWVudDsKLSAKLSsKLStzdHJ1Y3QgQ29kZWRCaXRzdHJlYW1Db250ZXh0OwotK3N0cnVjdCBH ZXRCaXRDb250ZXh0OwotK3N0cnVjdCBQdXRCaXRDb250ZXh0OwotKwotKy8qKgotKyAqIENhbGxi YWNrIHR5cGUgZm9yIHJlYWQgdHJhY2luZy4KLSsgKgotKyAqIEBwYXJhbSBjdHggICAgICAgICBV c2VyLXNldCB0cmFjZSBjb250ZXh0LgotKyAqIEBwYXJhbSBnYmMgICAgICAgICBBIEdldEJpdENv bnRleHQgc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgc3ludGF4Ci0rICogICAgICAgICAgICAgICAg ICAgIGVsZW1lbnQuICBUaGlzIGlzIGEgY29weSwgdGhlIGNhbGxlZSBkb2VzIG5vdAotKyAqICAg ICAgICAgICAgICAgICAgICBuZWVkIHRvIHByZXNlcnZlIGl0LgotKyAqIEBwYXJhbSBsZW5ndGgg ICAgICBMZW5ndGggaW4gYml0cyBvZiB0aGUgc3ludGF4IGVsZW1lbnQuCi0rICogQHBhcmFtIG5h bWUgICAgICAgIFN0cmluZyBuYW1lIG9mIHRoZSBzeW50YXggZWxlbWVudHMuCi0rICogQHBhcmFt IHN1YnNjcmlwdHMgIElmIHRoZSBzeW50YXggZWxlbWVudCBpcyBhbiBhcnJheSwgYSBwb2ludGVy IHRvCi0rICogICAgICAgICAgICAgICAgICAgIGFuIGFycmF5IG9mIHN1YnNjcmlwdHMgaW50byB0 aGUgYXJyYXkuCi0rICogQHBhcmFtIHZhbHVlICAgICAgIFBhcnNlZCB2YWx1ZSBvZiB0aGUgc3lu dGF4IGVsZW1lbnQuCi0rICovCi0rdHlwZWRlZiB2b2lkICgqQ0JTVHJhY2VSZWFkQ2FsbGJhY2sp KHZvaWQgKnRyYWNlX2NvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBHZXRCaXRDb250ZXh0ICpnYmMsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBzdGFydF9wb3NpdGlvbiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVlKTsKLSsKLSsvKioKLSsgKiBDYWxsYmFj ayB0eXBlIGZvciB3cml0ZSB0cmFjaW5nLgotKyAqCi0rICogQHBhcmFtIGN0eCAgICAgICAgIFVz ZXItc2V0IHRyYWNlIGNvbnRleHQuCi0rICogQHBhcmFtIHBiYyAgICAgICAgIEEgUHV0Qml0Q29u dGV4dCBzZXQgYXQgdGhlIGVuZCBvZiB0aGUgc3ludGF4Ci0rICogICAgICAgICAgICAgICAgICAg IGVsZW1lbnQuICBUaGUgdXNlciBtdXN0IG5vdCBtb2RpZnkgdGhpcywgYnV0IG1heQotKyAqICAg ICAgICAgICAgICAgICAgICBpbnNwZWN0IGl0IHRvIGRldGVybWluZSBzdGF0ZS4KLSsgKiBAcGFy YW0gbGVuZ3RoICAgICAgTGVuZ3RoIGluIGJpdHMgb2YgdGhlIHN5bnRheCBlbGVtZW50LgotKyAq IEBwYXJhbSBuYW1lICAgICAgICBTdHJpbmcgbmFtZSBvZiB0aGUgc3ludGF4IGVsZW1lbnRzLgot KyAqIEBwYXJhbSBzdWJzY3JpcHRzICBJZiB0aGUgc3ludGF4IGVsZW1lbnQgaXMgYW4gYXJyYXks IGEgcG9pbnRlciB0bwotKyAqICAgICAgICAgICAgICAgICAgICBhbiBhcnJheSBvZiBzdWJzY3Jp cHRzIGludG8gdGhlIGFycmF5LgotKyAqIEBwYXJhbSB2YWx1ZSAgICAgICBXcml0dGVuIHZhbHVl IG9mIHRoZSBzeW50YXggZWxlbWVudC4KLSsgKi8KLSt0eXBlZGVmIHZvaWQgKCpDQlNUcmFjZVdy aXRlQ2FsbGJhY2spKHZvaWQgKnRyYWNlX2NvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgUHV0Qml0Q29udGV4dCAqcGJjLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0X3Bvc2l0aW9uLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgdmFsdWUpOwotKwot IC8qKgotICAqIENvbnRleHQgc3RydWN0dXJlIGZvciBjb2RlZCBiaXRzdHJlYW0gb3BlcmF0aW9u cy4KLSAgKi8KLUBAIC0yMTAsMTEgKzI1NSwyOSBAQCB0eXBlZGVmIHN0cnVjdCBDb2RlZEJpdHN0 cmVhbUNvbnRleHQgewotICAgICAgKi8KLSAgICAgaW50IHRyYWNlX2VuYWJsZTsKLSAgICAgLyoq Ci0tICAgICAqIExvZyBsZXZlbCB0byB1c2UgZm9yIHRyYWNlIG91dHB1dC4KLSsgICAgICogTG9n IGxldmVsIHRvIHVzZSBmb3IgZGVmYXVsdCB0cmFjZSBvdXRwdXQuCi0gICAgICAqCi0gICAgICAq IEZyb20gQVZfTE9HXyo7IGRlZmF1bHRzIHRvIEFWX0xPR19UUkFDRS4KLSAgICAgICovCi0gICAg IGludCB0cmFjZV9sZXZlbDsKLSsgICAgLyoqCi0rICAgICAqIFVzZXIgY29udGV4dCBwb2ludGVy IHRvIHBhc3MgdG8gdHJhY2UgY2FsbGJhY2tzLgotKyAgICAgKi8KLSsgICAgdm9pZCAqdHJhY2Vf Y29udGV4dDsKLSsgICAgLyoqCi0rICAgICAqIENhbGxiYWNrIGZvciByZWFkIHRyYWNpbmcuCi0r ICAgICAqCi0rICAgICAqIElmIHRyYWNpbmcgaXMgZW5hYmxlZCB0aGVuIHRoaXMgaXMgY2FsbGVk IG9uY2UgZm9yIGVhY2ggc3ludGF4Ci0rICAgICAqIGVsZW1lbnQgcGFyc2VkLgotKyAgICAgKi8K LSsgICAgQ0JTVHJhY2VSZWFkQ2FsbGJhY2sgIHRyYWNlX3JlYWRfY2FsbGJhY2s7Ci0rICAgIC8q KgotKyAgICAgKiBDYWxsYmFjayBmb3Igd3JpdGUgdHJhY2luZy4KLSsgICAgICoKLSsgICAgICog SWYgdHJhY2luZyBpcyBlbmFibGVkIHRoZW4gdGhpcyBpcyBjYWxsZWQgb25jZSBmb3IgZWFjaCBz eW50YXgKLSsgICAgICogZWxlbWVudCB3cml0dGVuLgotKyAgICAgKi8KLSsgICAgQ0JTVHJhY2VX cml0ZUNhbGxiYWNrIHRyYWNlX3dyaXRlX2NhbGxiYWNrOwotIAotICAgICAvKioKLSAgICAgICog V3JpdGUgYnVmZmVyLiBVc2VkIGFzIGludGVybWVkaWF0ZSBidWZmZXIgd2hlbiB3cml0aW5nIHVu aXRzLgotQEAgLTQzMyw0ICs0OTYsMjcgQEAgaW50IGZmX2Nic19tYWtlX3VuaXRfd3JpdGFibGUo Q29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQ29kZWRCaXRzdHJlYW1Vbml0ICp1bml0KTsKLSAKLSAKLSsKLSsvKioKLSsgKiBIZWxwZXIg ZnVuY3Rpb24gZm9yIHJlYWQgdHJhY2luZyB3aGljaCBmb3JtYXRzIHRoZSBzeW50YXggZWxlbWVu dAotKyAqIGFuZCBsb2dzIHRoZSByZXN1bHQuCi0rICoKLSsgKiBUcmFjZSBjb250ZXh0IHNob3Vs ZCBiZSBzZXQgdG8gdGhlIENvZGVkQml0c3RyZWFtQ29udGV4dC4KLSsgKi8KLSt2b2lkIGZmX2Ni c190cmFjZV9yZWFkX2xvZyh2b2lkICp0cmFjZV9jb250ZXh0LAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBHZXRCaXRDb250ZXh0ICpnYmMsIGludCBsZW5ndGgsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyLCBjb25zdCBpbnQgKnN1YnNjcmlw dHMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSk7Ci0rCi0rLyoq Ci0rICogSGVscGVyIGZ1bmN0aW9uIGZvciB3cml0ZSB0cmFjaW5nIHdoaWNoIGZvcm1hdHMgdGhl IHN5bnRheCBlbGVtZW50Ci0rICogYW5kIGxvZ3MgdGhlIHJlc3VsdC4KLSsgKgotKyAqIFRyYWNl IGNvbnRleHQgc2hvdWxkIGJlIHNldCB0byB0aGUgQ29kZWRCaXRzdHJlYW1Db250ZXh0LgotKyAq LwotK3ZvaWQgZmZfY2JzX3RyYWNlX3dyaXRlX2xvZyh2b2lkICp0cmFjZV9jb250ZXh0LAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgUHV0Qml0Q29udGV4dCAqcGJjLCBpbnQg bGVuZ3RoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIsIGNv bnN0IGludCAqc3Vic2NyaXB0cywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRf dCB2YWx1ZSk7Ci0rCi0gI2VuZGlmIC8qIEFWQ09ERUNfQ0JTX0ggKi8KLWRpZmYgLS1naXQgYS9s aWJhdmNvZGVjL2Nic19hdjEuYyBiL2xpYmF2Y29kZWMvY2JzX2F2MS5jCi1pbmRleCA0NWUxMjg4 Li42MDk4Yzk3IDEwMDY0NAotLS0tIGEvbGliYXZjb2RlYy9jYnNfYXYxLmMKLSsrKyBiL2xpYmF2 Y29kZWMvY2JzX2F2MS5jCi1AQCAtMzEsMTAgKzMxLDggQEAgc3RhdGljIGludCBjYnNfYXYxX3Jl YWRfdXZsYyhDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmFuZ2VfbWluLCB1aW50MzJf dCByYW5nZV9tYXgpCi0gewotICAgICB1aW50MzJfdCB6ZXJvZXMsIGJpdHNfdmFsdWUsIHZhbHVl OwotLSAgICBpbnQgcG9zaXRpb247Ci0gCi0tICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKLS0g ICAgICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsKLSsgICAgQ0JTX1RSQUNFX1JF QURfU1RBUlQoKTsKLSAKLSAgICAgemVyb2VzID0gMDsKLSAgICAgd2hpbGUgKDEpIHsKLUBAIC01 MCw2ICs0OCw5IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9yZWFkX3V2bGMoQ29kZWRCaXRzdHJlYW1D b250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKLSAgICAgfQotIAotICAgICBpZiAoemVy b2VzID49IDMyKSB7Ci0rICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIHNwZWMgYWxsb3dzIGFuIGFy Yml0cmFyaWx5IGxhcmdlIG51bWJlciBvZgotKyAgICAgICAgLy8gemVybyBiaXRzIGZvbGxvd2Vk IGJ5IGEgb25lIGJpdCBpbiB0aGlzIGNhc2UsIGJ1dCB0aGUKLSsgICAgICAgIC8vIGxpYmFvbSBp bXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGl0LgotICAgICAgICAgdmFsdWUgPSBNQVhf VUlOVF9CSVRTKDMyKTsKLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0 KGdiYykgPCB6ZXJvZXMpIHsKLUBAIC02MiwzNiArNjMsNyBAQCBzdGF0aWMgaW50IGNic19hdjFf cmVhZF91dmxjKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMs Ci0gICAgICAgICB2YWx1ZSA9IGJpdHNfdmFsdWUgKyAoVUlOVDMyX0MoMSkgPDwgemVyb2VzKSAt IDE7Ci0gICAgIH0KLSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7Ci0tICAgICAgICBj aGFyIGJpdHNbNjVdOwotLSAgICAgICAgaW50IGksIGosIGs7Ci0tCi0tICAgICAgICBpZiAoemVy b2VzID49IDMyKSB7Ci0tICAgICAgICAgICAgd2hpbGUgKHplcm9lcyA+IDMyKSB7Ci0tICAgICAg ICAgICAgICAgIGsgPSBGRk1JTih6ZXJvZXMgLSAzMiwgMzIpOwotLSAgICAgICAgICAgICAgICBm b3IgKGkgPSAwOyBpIDwgazsgaSsrKQotLSAgICAgICAgICAgICAgICAgICAgYml0c1tpXSA9ICcw JzsKLS0gICAgICAgICAgICAgICAgYml0c1tpXSA9IDA7Ci0tICAgICAgICAgICAgICAgIGZmX2Ni c190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgYml0cywgMCk7Ci0tICAgICAg ICAgICAgICAgIHplcm9lcyAtPSBrOwotLSAgICAgICAgICAgICAgICBwb3NpdGlvbiArPSBrOwot LSAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS0KLS0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB6 ZXJvZXM7IGkrKykKLS0gICAgICAgICAgICBiaXRzW2ldID0gJzAnOwotLSAgICAgICAgYml0c1tp KytdID0gJzEnOwotLQotLSAgICAgICAgaWYgKHplcm9lcyA8IDMyKSB7Ci0tICAgICAgICAgICAg Zm9yIChqID0gMDsgaiA8IHplcm9lczsgaisrKQotLSAgICAgICAgICAgICAgICBiaXRzW2krK10g PSAoYml0c192YWx1ZSA+PiAoemVyb2VzIC0gaiAtIDEpICYgMSkgPyAnMScgOiAnMCc7Ci0tICAg ICAgICB9Ci0tCi0tICAgICAgICBiaXRzW2ldID0gMDsKLS0gICAgICAgIGZmX2Nic190cmFjZV9z eW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwsIGJpdHMsIHZhbHVlKTsKLS0gICAgfQotKyAgICBDQlNfVFJB Q0VfUkVBRF9FTkRfTk9fU1VCU0NSSVBUUygpOwotIAotICAgICBpZiAodmFsdWUgPCByYW5nZV9t aW4gfHwgdmFsdWUgPiByYW5nZV9tYXgpIHsKLSAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgs IEFWX0xPR19FUlJPUiwgIiVzIG91dCBvZiByYW5nZTogIgotQEAgLTEwOSw3ICs4MSw5IEBAIHN0 YXRpYyBpbnQgY2JzX2F2MV93cml0ZV91dmxjKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQ dXRCaXRDb250ZXh0ICpwYmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgcmFuZ2VfbWluLCB1aW50MzJfdCByYW5nZV9tYXgpCi0gewotICAgICB1aW50MzJfdCB2Owot LSAgICBpbnQgcG9zaXRpb24sIHplcm9lczsKLSsgICAgaW50IHplcm9lczsKLSsKLSsgICAgQ0JT X1RSQUNFX1dSSVRFX1NUQVJUKCk7Ci0gCi0gICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8fCB2 YWx1ZSA+IHJhbmdlX21heCkgewotICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9H X0VSUk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAiCi1AQCAtMTE4LDI4ICs5MiwxNyBAQCBzdGF0aWMg aW50IGNic19hdjFfd3JpdGVfdXZsYyhDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0 Q29udGV4dCAqcGJjLAotICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAg IH0KLSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQotLSAgICAgICAgcG9zaXRpb24gPSBw dXRfYml0c19jb3VudChwYmMpOwotLQotICAgICB6ZXJvZXMgPSBhdl9sb2cyKHZhbHVlICsgMSk7 Ci0gICAgIHYgPSB2YWx1ZSAtICgxVSA8PCB6ZXJvZXMpICsgMTsKLSsKLSsgICAgaWYgKHB1dF9i aXRzX2xlZnQocGJjKSA8IDIgKiB6ZXJvZXMgKyAxKQotKyAgICAgICAgcmV0dXJuIEFWRVJST1Io RU5PU1BDKTsKLSsKLSAgICAgcHV0X2JpdHMocGJjLCB6ZXJvZXMsIDApOwotICAgICBwdXRfYml0 cyhwYmMsIDEsIDEpOwotICAgICBwdXRfYml0cyhwYmMsIHplcm9lcywgdik7Ci0gCi0tICAgIGlm IChjdHgtPnRyYWNlX2VuYWJsZSkgewotLSAgICAgICAgY2hhciBiaXRzWzY1XTsKLS0gICAgICAg IGludCBpLCBqOwotLSAgICAgICAgaSA9IDA7Ci0tICAgICAgICBmb3IgKGogPSAwOyBqIDwgemVy b2VzOyBqKyspCi0tICAgICAgICAgICAgYml0c1tpKytdID0gJzAnOwotLSAgICAgICAgYml0c1tp KytdID0gJzEnOwotLSAgICAgICAgZm9yIChqID0gMDsgaiA8IHplcm9lczsgaisrKQotLSAgICAg ICAgICAgIGJpdHNbaSsrXSA9ICh2ID4+ICh6ZXJvZXMgLSBqIC0gMSkgJiAxKSA/ICcxJyA6ICcw JzsKLS0gICAgICAgIGJpdHNbaSsrXSA9IDA7Ci0tICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4 X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgTlVMTCwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBiaXRzLCB2YWx1ZSk7Ci0tICAgIH0KLSsgICAgQ0JTX1RSQUNFX1dS SVRFX0VORF9OT19TVUJTQ1JJUFRTKCk7Ci0gCi0gICAgIHJldHVybiAwOwotIH0KLUBAIC0xNDgs MjAgKzExMSwxOSBAQCBzdGF0aWMgaW50IGNic19hdjFfcmVhZF9sZWIxMjgoQ29kZWRCaXRzdHJl YW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgdWludDY0X3QgKndyaXRlX3RvKQotIHsKLSAg ICAgdWludDY0X3QgdmFsdWU7Ci0tICAgIGludCBwb3NpdGlvbiwgZXJyLCBpOwotKyAgICB1aW50 MzJfdCBieXRlOwotKyAgICBpbnQgaTsKLSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQot LSAgICAgICAgcG9zaXRpb24gPSBnZXRfYml0c19jb3VudChnYmMpOwotKyAgICBDQlNfVFJBQ0Vf UkVBRF9TVEFSVCgpOwotIAotICAgICB2YWx1ZSA9IDA7Ci0gICAgIGZvciAoaSA9IDA7IGkgPCA4 OyBpKyspIHsKLS0gICAgICAgIGludCBzdWJzY3JpcHRbMl0gPSB7IDEsIGkgfTsKLS0gICAgICAg IHVpbnQzMl90IGJ5dGU7Ci0tICAgICAgICBlcnIgPSBmZl9jYnNfcmVhZF91bnNpZ25lZChjdHgs IGdiYywgOCwgImxlYjEyOF9ieXRlW2ldIiwgc3Vic2NyaXB0LAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmJ5dGUsIDB4MDAsIDB4ZmYpOwotLSAgICAgICAgaWYgKGVyciA8 IDApCi0tICAgICAgICAgICAgcmV0dXJuIGVycjsKLS0KLSsgICAgICAgIGlmIChnZXRfYml0c19s ZWZ0KGdiYykgPCA4KSB7Ci0rICAgICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9H X0VSUk9SLCAiSW52YWxpZCBsZWIxMjggYXQgIgotKyAgICAgICAgICAgICAgICAgICAiJXM6IGJp dHN0cmVhbSBlbmRlZC5cbiIsIG5hbWUpOwotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lO VkFMSUREQVRBOwotKyAgICAgICAgfQotKyAgICAgICAgYnl0ZSA9IGdldF9iaXRzKGdiYywgOCk7 Ci0gICAgICAgICB2YWx1ZSB8PSAodWludDY0X3QpKGJ5dGUgJiAweDdmKSA8PCAoaSAqIDcpOwot ICAgICAgICAgaWYgKCEoYnl0ZSAmIDB4ODApKQotICAgICAgICAgICAgIGJyZWFrOwotQEAgLTE3 MCwzOSArMTMyLDM4IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9yZWFkX2xlYjEyOChDb2RlZEJpdHN0 cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAotICAgICBpZiAodmFsdWUgPiBV SU5UMzJfTUFYKQotICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gCi0tICAg IGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKLS0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxl bWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLCBOVUxMLCAiIiwgdmFsdWUpOwotKyAgICBDQlNfVFJB Q0VfUkVBRF9FTkRfTk9fU1VCU0NSSVBUUygpOwotIAotICAgICAqd3JpdGVfdG8gPSB2YWx1ZTsK LSAgICAgcmV0dXJuIDA7Ci0gfQotIAotKy8qKiBNaW5pbXVtIGJ5dGUgbGVuZ3RoIHdpbGwgYmUg dXNlZCB0byBpbmRpY2F0ZSB0aGUgbGVuMTI4IG9mIHZhbHVlIGlmIGJ5dGVfbGVuIGlzIDAuICov Ci0gc3RhdGljIGludCBjYnNfYXYxX3dyaXRlX2xlYjEyOChDb2RlZEJpdHN0cmVhbUNvbnRleHQg KmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqbmFtZSwgdWludDY0X3QgdmFsdWUpCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCB1aW50NjRfdCB2YWx1ZSwgdWludDhfdCBi eXRlX2xlbikKLSB7Ci0tICAgIGludCBwb3NpdGlvbiwgZXJyLCBsZW4sIGk7Ci0rICAgIGludCBs ZW4sIGk7Ci0gICAgIHVpbnQ4X3QgYnl0ZTsKLSAKLS0gICAgbGVuID0gKGF2X2xvZzIodmFsdWUp ICsgNykgLyA3OwotKyAgICBDQlNfVFJBQ0VfV1JJVEVfU1RBUlQoKTsKLSsKLSsgICAgaWYgKGJ5 dGVfbGVuKQotKyAgICAgICAgYXZfYXNzZXJ0MChieXRlX2xlbiA+PSAoYXZfbG9nMih2YWx1ZSkg KyA3KSAvIDcpOwotIAotLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCi0tICAgICAgICBwb3Np dGlvbiA9IHB1dF9iaXRzX2NvdW50KHBiYyk7Ci0rICAgIGxlbiA9IGJ5dGVfbGVuID8gYnl0ZV9s ZW4gOiAoYXZfbG9nMih2YWx1ZSkgKyA3KSAvIDc7Ci0gCi0gICAgIGZvciAoaSA9IDA7IGkgPCBs ZW47IGkrKykgewotLSAgICAgICAgaW50IHN1YnNjcmlwdFsyXSA9IHsgMSwgaSB9OwotKyAgICAg ICAgaWYgKHB1dF9iaXRzX2xlZnQocGJjKSA8IDgpCi0rICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1IoRU5PU1BDKTsKLSAKLSAgICAgICAgIGJ5dGUgPSB2YWx1ZSA+PiAoNyAqIGkpICYgMHg3ZjsK LSAgICAgICAgIGlmIChpIDwgbGVuIC0gMSkKLSAgICAgICAgICAgICBieXRlIHw9IDB4ODA7Ci0g Ci0tICAgICAgICBlcnIgPSBmZl9jYnNfd3JpdGVfdW5zaWduZWQoY3R4LCBwYmMsIDgsICJsZWIx MjhfYnl0ZVtpXSIsIHN1YnNjcmlwdCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBieXRlLCAweDAwLCAweGZmKTsKLS0gICAgICAgIGlmIChlcnIgPCAwKQotLSAgICAgICAg ICAgIHJldHVybiBlcnI7Ci0rICAgICAgICBwdXRfYml0cyhwYmMsIDgsIGJ5dGUpOwotICAgICB9 Ci0gCi0tICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKLS0gICAgICAgIGZmX2Nic190cmFjZV9z eW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLCBOVUxMLCAiIiwgdmFsdWUpOwotKyAg ICBDQlNfVFJBQ0VfV1JJVEVfRU5EX05PX1NVQlNDUklQVFMoKTsKLSAKLSAgICAgcmV0dXJuIDA7 Ci0gfQotQEAgLTIxMiwxMiArMTczLDExIEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9yZWFkX25zKENv ZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLCB1aW50MzJfdCAqd3JpdGVf dG8pCi0gewotICAgICB1aW50MzJfdCBtLCB2LCBleHRyYV9iaXQsIHZhbHVlOwotLSAgICBpbnQg cG9zaXRpb24sIHc7Ci0rICAgIGludCB3OwotIAotLSAgICBhdl9hc3NlcnQwKG4gPiAwKTsKLSsg ICAgQ0JTX1RSQUNFX1JFQURfU1RBUlQoKTsKLSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxl KQotLSAgICAgICAgcG9zaXRpb24gPSBnZXRfYml0c19jb3VudChnYmMpOwotKyAgICBhdl9hc3Nl cnQwKG4gPiAwKTsKLSAKLSAgICAgdyA9IGF2X2xvZzIobikgKyAxOwotICAgICBtID0gKDEgPDwg dykgLSBuOwotQEAgLTI0MCwxOCArMjAwLDcgQEAgc3RhdGljIGludCBjYnNfYXYxX3JlYWRfbnMo Q29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYywKLSAgICAgICAg IHZhbHVlID0gKHYgPDwgMSkgLSBtICsgZXh0cmFfYml0OwotICAgICB9Ci0gCi0tICAgIGlmIChj dHgtPnRyYWNlX2VuYWJsZSkgewotLSAgICAgICAgY2hhciBiaXRzWzMzXTsKLS0gICAgICAgIGlu dCBpOwotLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHcgLSAxOyBpKyspCi0tICAgICAgICAgICAg Yml0c1tpXSA9ICh2ID4+IGkgJiAxKSA/ICcxJyA6ICcwJzsKLS0gICAgICAgIGlmICh2ID49IG0p Ci0tICAgICAgICAgICAgYml0c1tpKytdID0gZXh0cmFfYml0ID8gJzEnIDogJzAnOwotLSAgICAg ICAgYml0c1tpXSA9IDA7Ci0tCi0tICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQo Y3R4LCBwb3NpdGlvbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1l LCBzdWJzY3JpcHRzLCBiaXRzLCB2YWx1ZSk7Ci0tICAgIH0KLSsgICAgQ0JTX1RSQUNFX1JFQURf RU5EKCk7Ci0gCi0gICAgICp3cml0ZV90byA9IHZhbHVlOwotICAgICByZXR1cm4gMDsKLUBAIC0y NjIsNyArMjExLDggQEAgc3RhdGljIGludCBjYnNfYXYxX3dyaXRlX25zKENvZGVkQml0c3RyZWFt Q29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywgdWludDMyX3QgdmFsdWUpCi0gewotICAgICB1 aW50MzJfdCB3LCBtLCB2LCBleHRyYV9iaXQ7Ci0tICAgIGludCBwb3NpdGlvbjsKLSsKLSsgICAg Q0JTX1RSQUNFX1dSSVRFX1NUQVJUKCk7Ci0gCi0gICAgIGlmICh2YWx1ZSA+IG4pIHsKLSAgICAg ICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIiVzIG91dCBvZiByYW5nZTog IgotQEAgLTI3MSw5ICsyMjEsNiBAQCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfbnMoQ29kZWRC aXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKLSAgICAgICAgIHJldHVy biBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICB9Ci0gCi0tICAgIGlmIChjdHgtPnRyYWNlX2Vu YWJsZSkKLS0gICAgICAgIHBvc2l0aW9uID0gcHV0X2JpdHNfY291bnQocGJjKTsKLS0KLSAgICAg dyA9IGF2X2xvZzIobikgKyAxOwotICAgICBtID0gKDEgPDwgdykgLSBuOwotIAotQEAgLTI5MCwx OCArMjM3LDcgQEAgc3RhdGljIGludCBjYnNfYXYxX3dyaXRlX25zKENvZGVkQml0c3RyZWFtQ29u dGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCi0gICAgICAgICBwdXRfYml0cyhwYmMsIDEs IGV4dHJhX2JpdCk7Ci0gICAgIH0KLSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7Ci0t ICAgICAgICBjaGFyIGJpdHNbMzNdOwotLSAgICAgICAgaW50IGk7Ci0tICAgICAgICBmb3IgKGkg PSAwOyBpIDwgdyAtIDE7IGkrKykKLS0gICAgICAgICAgICBiaXRzW2ldID0gKHYgPj4gaSAmIDEp ID8gJzEnIDogJzAnOwotLSAgICAgICAgaWYgKHZhbHVlID49IG0pCi0tICAgICAgICAgICAgYml0 c1tpKytdID0gZXh0cmFfYml0ID8gJzEnIDogJzAnOwotLSAgICAgICAgYml0c1tpXSA9IDA7Ci0t Ci0tICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJzY3JpcHRzLCBiaXRz LCB2YWx1ZSk7Ci0tICAgIH0KLSsgICAgQ0JTX1RSQUNFX1dSSVRFX0VORCgpOwotIAotICAgICBy ZXR1cm4gMDsKLSB9Ci1AQCAtMzExLDMzICsyNDcsMjQgQEAgc3RhdGljIGludCBjYnNfYXYxX3Jl YWRfaW5jcmVtZW50KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpn YmMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwg dWludDMyX3QgKndyaXRlX3RvKQotIHsKLSAgICAgdWludDMyX3QgdmFsdWU7Ci0tICAgIGludCBw b3NpdGlvbiwgaTsKLS0gICAgY2hhciBiaXRzWzMzXTsKLSAKLS0gICAgYXZfYXNzZXJ0MChyYW5n ZV9taW4gPD0gcmFuZ2VfbWF4ICYmIHJhbmdlX21heCAtIHJhbmdlX21pbiA8IHNpemVvZihiaXRz KSAtIDEpOwotLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCi0tICAgICAgICBwb3NpdGlvbiA9 IGdldF9iaXRzX2NvdW50KGdiYyk7Ci0rICAgIENCU19UUkFDRV9SRUFEX1NUQVJUKCk7Ci0rCi0r ICAgIGF2X2Fzc2VydDAocmFuZ2VfbWluIDw9IHJhbmdlX21heCAmJiByYW5nZV9tYXggLSByYW5n ZV9taW4gPCAzMik7Ci0gCi0tICAgIGZvciAoaSA9IDAsIHZhbHVlID0gcmFuZ2VfbWluOyB2YWx1 ZSA8IHJhbmdlX21heDspIHsKLSsgICAgZm9yICh2YWx1ZSA9IHJhbmdlX21pbjsgdmFsdWUgPCBy YW5nZV9tYXg7KSB7Ci0gICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYmMpIDwgMSkgewotICAg ICAgICAgICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgaW5j cmVtZW50IHZhbHVlIGF0ICIKLSAgICAgICAgICAgICAgICAgICAgIiVzOiBiaXRzdHJlYW0gZW5k ZWQuXG4iLCBuYW1lKTsKLSAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsK LSAgICAgICAgIH0KLS0gICAgICAgIGlmIChnZXRfYml0czEoZ2JjKSkgewotLSAgICAgICAgICAg IGJpdHNbaSsrXSA9ICcxJzsKLSsgICAgICAgIGlmIChnZXRfYml0czEoZ2JjKSkKLSAgICAgICAg ICAgICArK3ZhbHVlOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICBiaXRzW2krK10g PSAnMCc7Ci0rICAgICAgICBlbHNlCi0gICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICB9Ci0g ICAgIH0KLSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7Ci0tICAgICAgICBiaXRzW2ld ID0gMDsKLS0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9u LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIE5VTEwsIGJpdHMs IHZhbHVlKTsKLS0gICAgfQotKyAgICBDQlNfVFJBQ0VfUkVBRF9FTkRfTk9fU1VCU0NSSVBUUygp OwotIAotICAgICAqd3JpdGVfdG8gPSB2YWx1ZTsKLSAgICAgcmV0dXJuIDA7Ci1AQCAtMzQ5LDYg KzI3Niw4IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9pbmNyZW1lbnQoQ29kZWRCaXRzdHJl YW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiCi0gewotICAgICBpbnQgbGVuOwotIAot KyAgICBDQlNfVFJBQ0VfV1JJVEVfU1RBUlQoKTsKLSsKLSAgICAgYXZfYXNzZXJ0MChyYW5nZV9t aW4gPD0gcmFuZ2VfbWF4ICYmIHJhbmdlX21heCAtIHJhbmdlX21pbiA8IDMyKTsKLSAgICAgaWYg KHZhbHVlIDwgcmFuZ2VfbWluIHx8IHZhbHVlID4gcmFuZ2VfbWF4KSB7Ci0gICAgICAgICBhdl9s b2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICIlcyBvdXQgb2YgcmFuZ2U6ICIKLUBAIC0z NjQsMjMgKzI5MywxMSBAQCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfaW5jcmVtZW50KENvZGVk Qml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYgotICAgICBpZiAocHV0X2Jp dHNfbGVmdChwYmMpIDwgbGVuKQotICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1BDKTsKLSAK LS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7Ci0tICAgICAgICBjaGFyIGJpdHNbMzNdOwot LSAgICAgICAgaW50IGk7Ci0tICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLS0g ICAgICAgICAgICBpZiAocmFuZ2VfbWluICsgaSA9PSB2YWx1ZSkKLS0gICAgICAgICAgICAgICAg Yml0c1tpXSA9ICcwJzsKLS0gICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICAgIGJpdHNb aV0gPSAnMSc7Ci0tICAgICAgICB9Ci0tICAgICAgICBiaXRzW2ldID0gMDsKLS0gICAgICAgIGZm X2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHB1dF9iaXRzX2NvdW50KHBiYyksCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgTlVMTCwgYml0cywgdmFsdWUp OwotLSAgICB9Ci0tCi0gICAgIGlmIChsZW4gPiAwKQotICAgICAgICAgcHV0X2JpdHMocGJjLCBs ZW4sICgxIDw8IGxlbikgLSAxIC0gKHZhbHVlICE9IHJhbmdlX21heCkpOwotIAotKyAgICBDQlNf VFJBQ0VfV1JJVEVfRU5EX05PX1NVQlNDUklQVFMoKTsKLSsKLSAgICAgcmV0dXJuIDA7Ci0gfQot IAotQEAgLTM4OCwxMiArMzA1LDEwIEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9yZWFkX3N1YmV4cChD b2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByYW5nZV9tYXgsIGNvbnN0IGNoYXIgKm5h bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0 cywgdWludDMyX3QgKndyaXRlX3RvKQotIHsKLS0gICAgdWludDMyX3QgdmFsdWU7Ci0tICAgIGlu dCBwb3NpdGlvbiwgZXJyOwotLSAgICB1aW50MzJfdCBtYXhfbGVuLCBsZW4sIHJhbmdlX29mZnNl dCwgcmFuZ2VfYml0czsKLSsgICAgdWludDMyX3QgdmFsdWUsIG1heF9sZW4sIGxlbiwgcmFuZ2Vf b2Zmc2V0LCByYW5nZV9iaXRzOwotKyAgICBpbnQgZXJyOwotIAotLSAgICBpZiAoY3R4LT50cmFj ZV9lbmFibGUpCi0tICAgICAgICBwb3NpdGlvbiA9IGdldF9iaXRzX2NvdW50KGdiYyk7Ci0rICAg IENCU19UUkFDRV9SRUFEX1NUQVJUKCk7Ci0gCi0gICAgIGF2X2Fzc2VydDAocmFuZ2VfbWF4ID4g MCk7Ci0gICAgIG1heF9sZW4gPSBhdl9sb2cyKHJhbmdlX21heCAtIDEpIC0gMzsKLUBAIC00MTIs OSArMzI3LDggQEAgc3RhdGljIGludCBjYnNfYXYxX3JlYWRfc3ViZXhwKENvZGVkQml0c3RyZWFt Q29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCi0gICAgIH0KLSAKLSAgICAgaWYgKGxl biA8IG1heF9sZW4pIHsKLS0gICAgICAgIGVyciA9IGZmX2Nic19yZWFkX3Vuc2lnbmVkKGN0eCwg Z2JjLCByYW5nZV9iaXRzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1 YmV4cF9iaXRzIiwgTlVMTCwgJnZhbHVlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMCwgTUFYX1VJTlRfQklUUyhyYW5nZV9iaXRzKSk7Ci0rICAgICAgICBlcnIgPSBmZl9j YnNfcmVhZF9zaW1wbGVfdW5zaWduZWQoY3R4LCBnYmMsIHJhbmdlX2JpdHMsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YmV4cF9iaXRzIiwgJnZhbHVlKTsK LSAgICAgICAgIGlmIChlcnIgPCAwKQotICAgICAgICAgICAgIHJldHVybiBlcnI7Ci0gCi1AQCAt NDI2LDkgKzM0MCw3IEBAIHN0YXRpYyBpbnQgY2JzX2F2MV9yZWFkX3N1YmV4cChDb2RlZEJpdHN0 cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAotICAgICB9Ci0gICAgIHZhbHVl ICs9IHJhbmdlX29mZnNldDsKLSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQotLSAgICAg ICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcG9zaXRpb24sCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3Vic2NyaXB0cywgIiIsIHZhbHVlKTsK LSsgICAgQ0JTX1RSQUNFX1JFQURfRU5EX1ZBTFVFX09OTFkoKTsKLSAKLSAgICAgKndyaXRlX3Rv ID0gdmFsdWU7Ci0gICAgIHJldHVybiBlcnI7Ci1AQCAtNDM4LDkgKzM1MCwxMSBAQCBzdGF0aWMg aW50IGNic19hdjFfd3JpdGVfc3ViZXhwKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRC aXRDb250ZXh0ICpwYmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCByYW5nZV9tYXgsIGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIHVpbnQzMl90IHZhbHVlKQotIHsKLS0gICAg aW50IHBvc2l0aW9uLCBlcnI7Ci0rICAgIGludCBlcnI7Ci0gICAgIHVpbnQzMl90IG1heF9sZW4s IGxlbiwgcmFuZ2Vfb2Zmc2V0LCByYW5nZV9iaXRzOwotIAotKyAgICBDQlNfVFJBQ0VfV1JJVEVf U1RBUlQoKTsKLSsKLSAgICAgaWYgKHZhbHVlID4gcmFuZ2VfbWF4KSB7Ci0gICAgICAgICBhdl9s b2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICIlcyBvdXQgb2YgcmFuZ2U6ICIKLSAgICAg ICAgICAgICAgICAiJSJQUkl1MzIiLCBidXQgbXVzdCBiZSBpbiBbMCwlIlBSSXUzMiJdLlxuIiwK LUBAIC00NDgsOSArMzYyLDYgQEAgc3RhdGljIGludCBjYnNfYXYxX3dyaXRlX3N1YmV4cChDb2Rl ZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAotICAgICAgICAgcmV0 dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgIH0KLSAKLS0gICAgaWYgKGN0eC0+dHJhY2Vf ZW5hYmxlKQotLSAgICAgICAgcG9zaXRpb24gPSBwdXRfYml0c19jb3VudChwYmMpOwotLQotICAg ICBhdl9hc3NlcnQwKHJhbmdlX21heCA+IDApOwotICAgICBtYXhfbGVuID0gYXZfbG9nMihyYW5n ZV9tYXggLSAxKSAtIDM7Ci0gCi1AQCAtNDc2LDEwICszODcsOSBAQCBzdGF0aWMgaW50IGNic19h djFfd3JpdGVfc3ViZXhwKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0 ICpwYmMsCi0gICAgICAgICByZXR1cm4gZXJyOwotIAotICAgICBpZiAobGVuIDwgbWF4X2xlbikg ewotLSAgICAgICAgZXJyID0gZmZfY2JzX3dyaXRlX3Vuc2lnbmVkKGN0eCwgcGJjLCByYW5nZV9i aXRzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdWJleHBfYml0cyIs IE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgLSByYW5n ZV9vZmZzZXQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgTUFYX1VJ TlRfQklUUyhyYW5nZV9iaXRzKSk7Ci0rICAgICAgICBlcnIgPSBmZl9jYnNfd3JpdGVfc2ltcGxl X3Vuc2lnbmVkKGN0eCwgcGJjLCByYW5nZV9iaXRzLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAic3ViZXhwX2JpdHMiLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSAtIHJhbmdlX29mZnNldCk7Ci0gICAgICAgICBp ZiAoZXJyIDwgMCkKLSAgICAgICAgICAgICByZXR1cm4gZXJyOwotIAotQEAgLTQ5MSw5ICs0MDEs NyBAQCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfc3ViZXhwKENvZGVkQml0c3RyZWFtQ29udGV4 dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCi0gICAgICAgICAgICAgcmV0dXJuIGVycjsKLSAg ICAgfQotIAotLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCi0tICAgICAgICBmZl9jYnNfdHJh Y2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuYW1lLCBzdWJzY3JpcHRzLCAiIiwgdmFsdWUpOwotKyAgICBDQlNfVFJB Q0VfV1JJVEVfRU5EX1ZBTFVFX09OTFkoKTsKLSAKLSAgICAgcmV0dXJuIGVycjsKLSB9Ci1AQCAt NTQ2LDggKzQ1NCw2IEBAIHN0YXRpYyBzaXplX3QgY2JzX2F2MV9nZXRfcGF5bG9hZF9ieXRlc19s ZWZ0KEdldEJpdENvbnRleHQgKmdiYykKLSAKLSAjZGVmaW5lIFNVQlNDUklQVFMoc3VicywgLi4u KSAoc3VicyA+IDAgPyAoKGludFtzdWJzICsgMV0peyBzdWJzLCBfX1ZBX0FSR1NfXyB9KSA6IE5V TEwpCi0gCi0tI2RlZmluZSBmYih3aWR0aCwgbmFtZSkgXAotLSAgICAgICAgeGYod2lkdGgsIG5h bWUsIGN1cnJlbnQtPm5hbWUsIDAsIE1BWF9VSU5UX0JJVFMod2lkdGgpLCAwLCApCi0gI2RlZmlu ZSBmYyh3aWR0aCwgbmFtZSwgcmFuZ2VfbWluLCByYW5nZV9tYXgpIFwKLSAgICAgICAgIHhmKHdp ZHRoLCBuYW1lLCBjdXJyZW50LT5uYW1lLCByYW5nZV9taW4sIHJhbmdlX21heCwgMCwgKQotICNk ZWZpbmUgZmxhZyhuYW1lKSBmYigxLCBuYW1lKQotQEAgLTU3Myw2ICs0NzksMTMgQEAgc3RhdGlj IHNpemVfdCBjYnNfYXYxX2dldF9wYXlsb2FkX2J5dGVzX2xlZnQoR2V0Qml0Q29udGV4dCAqZ2Jj KQotICNkZWZpbmUgUkVBRFdSSVRFIHJlYWQKLSAjZGVmaW5lIFJXQ29udGV4dCBHZXRCaXRDb250 ZXh0Ci0gCi0rI2RlZmluZSBmYih3aWR0aCwgbmFtZSkgZG8geyBcCi0rICAgICAgICB1aW50MzJf dCB2YWx1ZTsgXAotKyAgICAgICAgQ0hFQ0soZmZfY2JzX3JlYWRfc2ltcGxlX3Vuc2lnbmVkKGN0 eCwgcncsIHdpZHRoLCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgI25hbWUsICZ2YWx1ZSkpOyBcCi0rICAgICAgICBjdXJyZW50LT5uYW1lID0gdmFsdWU7IFwK LSsgICAgfSB3aGlsZSAoMCkKLSsKLSAjZGVmaW5lIHhmKHdpZHRoLCBuYW1lLCB2YXIsIHJhbmdl X21pbiwgcmFuZ2VfbWF4LCBzdWJzLCAuLi4pIGRvIHsgXAotICAgICAgICAgdWludDMyX3QgdmFs dWU7IFwKLSAgICAgICAgIENIRUNLKGZmX2Nic19yZWFkX3Vuc2lnbmVkKGN0eCwgcncsIHdpZHRo LCAjbmFtZSwgXAotQEAgLTY0NSw2ICs1NTgsNyBAQCBzdGF0aWMgc2l6ZV90IGNic19hdjFfZ2V0 X3BheWxvYWRfYnl0ZXNfbGVmdChHZXRCaXRDb250ZXh0ICpnYmMpCi0gI3VuZGVmIFJFQUQKLSAj dW5kZWYgUkVBRFdSSVRFCi0gI3VuZGVmIFJXQ29udGV4dAotKyN1bmRlZiBmYgotICN1bmRlZiB4 ZgotICN1bmRlZiB4c3UKLSAjdW5kZWYgdXZsYwotQEAgLTY2MSw2ICs1NzUsMTEgQEAgc3RhdGlj IHNpemVfdCBjYnNfYXYxX2dldF9wYXlsb2FkX2J5dGVzX2xlZnQoR2V0Qml0Q29udGV4dCAqZ2Jj KQotICNkZWZpbmUgUkVBRFdSSVRFIHdyaXRlCi0gI2RlZmluZSBSV0NvbnRleHQgUHV0Qml0Q29u dGV4dAotIAotKyNkZWZpbmUgZmIod2lkdGgsIG5hbWUpIGRvIHsgXAotKyAgICAgICAgQ0hFQ0so ZmZfY2JzX3dyaXRlX3NpbXBsZV91bnNpZ25lZChjdHgsIHJ3LCB3aWR0aCwgI25hbWUsIFwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC0+bmFtZSkp OyBcCi0rICAgIH0gd2hpbGUgKDApCi0rCi0gI2RlZmluZSB4Zih3aWR0aCwgbmFtZSwgdmFyLCBy YW5nZV9taW4sIHJhbmdlX21heCwgc3VicywgLi4uKSBkbyB7IFwKLSAgICAgICAgIENIRUNLKGZm X2Nic193cml0ZV91bnNpZ25lZChjdHgsIHJ3LCB3aWR0aCwgI25hbWUsIFwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTVUJTQ1JJUFRTKHN1YnMsIF9fVkFfQVJHU19fKSwg XAotQEAgLTcwMyw3ICs2MjIsNyBAQCBzdGF0aWMgc2l6ZV90IGNic19hdjFfZ2V0X3BheWxvYWRf Ynl0ZXNfbGVmdChHZXRCaXRDb250ZXh0ICpnYmMpCi0gICAgIH0gd2hpbGUgKDApCi0gCi0gI2Rl ZmluZSBsZWIxMjgobmFtZSkgZG8geyBcCi0tICAgICAgICBDSEVDSyhjYnNfYXYxX3dyaXRlX2xl YjEyOChjdHgsIHJ3LCAjbmFtZSwgY3VycmVudC0+bmFtZSkpOyBcCi0rICAgICAgICBDSEVDSyhj YnNfYXYxX3dyaXRlX2xlYjEyOChjdHgsIHJ3LCAjbmFtZSwgY3VycmVudC0+bmFtZSwgMCkpOyBc Ci0gICAgIH0gd2hpbGUgKDApCi0gCi0gI2RlZmluZSBpbmZlcihuYW1lLCB2YWx1ZSkgZG8geyBc Ci1AQCAtNzIzLDYgKzY0Miw3IEBAIHN0YXRpYyBzaXplX3QgY2JzX2F2MV9nZXRfcGF5bG9hZF9i eXRlc19sZWZ0KEdldEJpdENvbnRleHQgKmdiYykKLSAjdW5kZWYgV1JJVEUKLSAjdW5kZWYgUkVB RFdSSVRFCi0gI3VuZGVmIFJXQ29udGV4dAotKyN1bmRlZiBmYgotICN1bmRlZiB4ZgotICN1bmRl ZiB4c3UKLSAjdW5kZWYgdXZsYwotQEAgLTEwODYsOSArMTAwNiwxNCBAQCBzdGF0aWMgaW50IGNi c19hdjFfd3JpdGVfb2J1KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LAotIAotICAgICBpZiAo b2J1LT5oZWFkZXIub2J1X2hhc19zaXplX2ZpZWxkKSB7Ci0gICAgICAgICBwYmNfdG1wID0gKnBi YzsKLS0gICAgICAgIC8vIEFkZCBzcGFjZSBmb3IgdGhlIHNpemUgZmllbGQgdG8gZmlsbCBsYXRl ci4KLS0gICAgICAgIHB1dF9iaXRzMzIocGJjLCAwKTsKLS0gICAgICAgIHB1dF9iaXRzMzIocGJj LCAwKTsKLSsgICAgICAgIGlmIChvYnUtPm9idV9zaXplX2J5dGVfbGVuKSB7Ci0rICAgICAgICAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYnUtPm9idV9zaXplX2J5dGVfbGVuOyBpKyspCi0rICAg ICAgICAgICAgICAgIHB1dF9iaXRzKHBiYywgOCwgMCk7Ci0rICAgICAgICB9IGVsc2UgewotKyAg ICAgICAgICAgIC8vIEFkZCBzcGFjZSBmb3IgdGhlIHNpemUgZmllbGQgdG8gZmlsbCBsYXRlci4K LSsgICAgICAgICAgICBwdXRfYml0czMyKHBiYywgMCk7Ci0rICAgICAgICAgICAgcHV0X2JpdHMz MihwYmMsIDApOwotKyAgICAgICAgfQotICAgICB9Ci0gCi0gICAgIHRkID0gTlVMTDsKLUBAIC0x MjA4LDcgKzExMzMsNyBAQCBzdGF0aWMgaW50IGNic19hdjFfd3JpdGVfb2J1KENvZGVkQml0c3Ry ZWFtQ29udGV4dCAqY3R4LAotICAgICBlbmRfcG9zICAgLz0gODsKLSAKLSAgICAgKnBiYyA9IHBi Y190bXA7Ci0tICAgIGVyciA9IGNic19hdjFfd3JpdGVfbGViMTI4KGN0eCwgcGJjLCAib2J1X3Np emUiLCBvYnUtPm9idV9zaXplKTsKLSsgICAgZXJyID0gY2JzX2F2MV93cml0ZV9sZWIxMjgoY3R4 LCBwYmMsICJvYnVfc2l6ZSIsIG9idS0+b2J1X3NpemUsIG9idS0+b2J1X3NpemVfYnl0ZV9sZW4p OwotICAgICBpZiAoZXJyIDwgMCkKLSAgICAgICAgIGdvdG8gZXJyb3I7Ci0gCi1AQCAtMTIyNSw4 ICsxMTUwLDExIEBAIHN0YXRpYyBpbnQgY2JzX2F2MV93cml0ZV9vYnUoQ29kZWRCaXRzdHJlYW1D b250ZXh0ICpjdHgsCi0gICAgIH0KLSAKLSAgICAgaWYgKG9idS0+b2J1X3NpemUgPiAwKSB7Ci0t ICAgICAgICBtZW1tb3ZlKHBiYy0+YnVmICsgZGF0YV9wb3MsCi0tICAgICAgICAgICAgICAgIHBi Yy0+YnVmICsgc3RhcnRfcG9zLCBoZWFkZXJfc2l6ZSk7Ci0rICAgICAgICBpZiAoIW9idS0+b2J1 X3NpemVfYnl0ZV9sZW4pIHsKLSsgICAgICAgICAgICBvYnUtPm9idV9zaXplX2J5dGVfbGVuID0g c3RhcnRfcG9zIC0gZGF0YV9wb3M7Ci0rICAgICAgICAgICAgbWVtbW92ZShwYmMtPmJ1ZiArIGRh dGFfcG9zLAotKyAgICAgICAgICAgICAgICAgICAgcGJjLT5idWYgKyBzdGFydF9wb3MsIGhlYWRl cl9zaXplKTsKLSsgICAgICAgIH0KLSAgICAgICAgIHNraXBfcHV0X2J5dGVzKHBiYywgaGVhZGVy X3NpemUpOwotIAotICAgICAgICAgaWYgKHRkKSB7Ci1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9j YnNfYXYxLmggYi9saWJhdmNvZGVjL2Nic19hdjEuaAotaW5kZXggMWZjODBkYy4uYzVkYWUzYyAx MDA2NDQKLS0tLSBhL2xpYmF2Y29kZWMvY2JzX2F2MS5oCi0rKysgYi9saWJhdmNvZGVjL2Nic19h djEuaAotQEAgLTM5Miw2ICszOTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBBVjFSYXdPQlUgewotICAg ICBBVjFSYXdPQlVIZWFkZXIgaGVhZGVyOwotIAotICAgICBzaXplX3Qgb2J1X3NpemU7Ci0rICAg IHVpbnQ4X3Qgb2J1X3NpemVfYnl0ZV9sZW47Ci0gCi0gICAgIHVuaW9uIHsKLSAgICAgICAgIEFW MVJhd1NlcXVlbmNlSGVhZGVyIHNlcXVlbmNlX2hlYWRlcjsKLWRpZmYgLS1naXQgYS9saWJhdmNv ZGVjL2Nic19hdjFfc3ludGF4X3RlbXBsYXRlLmMgYi9saWJhdmNvZGVjL2Nic19hdjFfc3ludGF4 X3RlbXBsYXRlLmMKLWluZGV4IGU5NTkyNWEuLmNmMmUyNTkgMTAwNjQ0Ci0tLS0gYS9saWJhdmNv ZGVjL2Nic19hdjFfc3ludGF4X3RlbXBsYXRlLmMKLSsrKyBiL2xpYmF2Y29kZWMvY2JzX2F2MV9z eW50YXhfdGVtcGxhdGUuYwotQEAgLTEwMTgsOSArMTAxOCw5IEBAIHN0YXRpYyBpbnQgRlVOQyhy ZWFkX3R4X21vZGUpKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBSV0NvbnRleHQgKnJ3LAot ICAgICBpbnQgZXJyOwotIAotICAgICBpZiAocHJpdi0+Y29kZWRfbG9zc2xlc3MpCi0tICAgICAg ICBpbmZlcih0eF9tb2RlLCAwKTsKLSsgICAgICAgIGluZmVyKHR4X21vZGUsIEFWMV9PTkxZXzRY NCk7Ci0gICAgIGVsc2UKLS0gICAgICAgIGluY3JlbWVudCh0eF9tb2RlLCAxLCAyKTsKLSsgICAg ICAgIGluY3JlbWVudCh0eF9tb2RlLCBBVjFfVFhfTU9ERV9MQVJHRVNULCBBVjFfVFhfTU9ERV9T RUxFQ1QpOwotIAotICAgICByZXR1cm4gMDsKLSB9Ci1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9j YnNfYnNmLmMgYi9saWJhdmNvZGVjL2Nic19ic2YuYwotaW5kZXggMDY5ZjZlOS4uYjI1Mjg1NCAx MDA2NDQKLS0tLSBhL2xpYmF2Y29kZWMvY2JzX2JzZi5jCi0rKysgYi9saWJhdmNvZGVjL2Nic19i c2YuYwotQEAgLTEyMyw2ICsxMjMsMTEgQEAgaW50IGZmX2Nic19ic2ZfZ2VuZXJpY19pbml0KEFW QlNGQ29udGV4dCAqYnNmLCBjb25zdCBDQlNCU0ZUeXBlICp0eXBlKQotICAgICBpZiAoZXJyIDwg MCkKLSAgICAgICAgIHJldHVybiBlcnI7Ci0gCi0rICAgIGN0eC0+b3V0cHV0LT50cmFjZV9lbmFi bGUgPSAxOwotKyAgICBjdHgtPm91dHB1dC0+dHJhY2VfbGV2ZWwgID0gQVZfTE9HX1RSQUNFOwot KyAgICBjdHgtPm91dHB1dC0+dHJhY2VfY29udGV4dCA9IGN0eC0+b3V0cHV0OwotKyAgICBjdHgt Pm91dHB1dC0+dHJhY2Vfd3JpdGVfY2FsbGJhY2sgPSBmZl9jYnNfdHJhY2Vfd3JpdGVfbG9nOwot KwotICAgICBpZiAoYnNmLT5wYXJfaW4tPmV4dHJhZGF0YSkgewotICAgICAgICAgZXJyID0gZmZf Y2JzX3JlYWRfZXh0cmFkYXRhKGN0eC0+aW5wdXQsIGZyYWcsIGJzZi0+cGFyX2luKTsKLSAgICAg ICAgIGlmIChlcnIgPCAwKSB7Ci1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9jYnNfaDI2NDUuYyBi L2xpYmF2Y29kZWMvY2JzX2gyNjQ1LmMKLWluZGV4IDgwZTQ4ODIuLjM1NWY0ZDUgMTAwNjQ0Ci0t LS0gYS9saWJhdmNvZGVjL2Nic19oMjY0NS5jCi0rKysgYi9saWJhdmNvZGVjL2Nic19oMjY0NS5j Ci1AQCAtMzQsNDEgKzM0LDM4IEBAIHN0YXRpYyBpbnQgY2JzX3JlYWRfdWVfZ29sb21iKENvZGVk Qml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDMyX3QgKndyaXRlX3RvLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90IHJhbmdlX21pbiwgdWludDMyX3QgcmFuZ2VfbWF4KQotIHsK LS0gICAgdWludDMyX3QgdmFsdWU7Ci0tICAgIGludCBwb3NpdGlvbiwgaSwgajsKLS0gICAgdW5z aWduZWQgaW50IGs7Ci0tICAgIGNoYXIgYml0c1s2NV07Ci0rICAgIHVpbnQzMl90IGxlYWRpbmdf Yml0cywgdmFsdWU7Ci0rICAgIGludCBtYXhfbGVuZ3RoLCBsZWFkaW5nX3plcm9lczsKLSAKLS0g ICAgcG9zaXRpb24gPSBnZXRfYml0c19jb3VudChnYmMpOwotKyAgICBDQlNfVFJBQ0VfUkVBRF9T VEFSVCgpOwotIAotLSAgICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykgewotLSAgICAgICAgaWYg KGdldF9iaXRzX2xlZnQoZ2JjKSA8IGkgKyAxKSB7Ci0rICAgIG1heF9sZW5ndGggPSBGRk1JTihn ZXRfYml0c19sZWZ0KGdiYyksIDMyKTsKLSsKLSsgICAgbGVhZGluZ19iaXRzID0gc2hvd19iaXRz X2xvbmcoZ2JjLCBtYXhfbGVuZ3RoKTsKLSsgICAgaWYgKGxlYWRpbmdfYml0cyA9PSAwKSB7Ci0r ICAgICAgICBpZiAobWF4X2xlbmd0aCA+PSAzMikgewotKyAgICAgICAgICAgIGF2X2xvZyhjdHgt PmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgdWUtZ29sb21iIGNvZGUgYXQgIgotKyAg ICAgICAgICAgICAgICAgICAiJXM6IG1vcmUgdGhhbiAzMSB6ZXJvZXMuXG4iLCBuYW1lKTsKLSsg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSsgICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxp ZCB1ZS1nb2xvbWIgY29kZSBhdCAiCi0gICAgICAgICAgICAgICAgICAgICIlczogYml0c3RyZWFt IGVuZGVkLlxuIiwgbmFtZSk7Ci0gICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERB VEE7Ci0gICAgICAgICB9Ci0tICAgICAgICBrID0gZ2V0X2JpdHMxKGdiYyk7Ci0tICAgICAgICBi aXRzW2ldID0gayA/ICcxJyA6ICcwJzsKLS0gICAgICAgIGlmIChrKQotLSAgICAgICAgICAgIGJy ZWFrOwotICAgICB9Ci0tICAgIGlmIChpID49IDMyKSB7Ci0rCi0rICAgIGxlYWRpbmdfemVyb2Vz ID0gbWF4X2xlbmd0aCAtIDEgLSBhdl9sb2cyKGxlYWRpbmdfYml0cyk7Ci0rICAgIHNraXBfYml0 c19sb25nKGdiYywgbGVhZGluZ196ZXJvZXMpOwotKwotKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChn YmMpIDwgbGVhZGluZ196ZXJvZXMgKyAxKSB7Ci0gICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4 LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIHVlLWdvbG9tYiBjb2RlIGF0ICIKLS0gICAgICAgICAg ICAgICAiJXM6IG1vcmUgdGhhbiAzMSB6ZXJvZXMuXG4iLCBuYW1lKTsKLSsgICAgICAgICAgICAg ICAiJXM6IGJpdHN0cmVhbSBlbmRlZC5cbiIsIG5hbWUpOwotICAgICAgICAgcmV0dXJuIEFWRVJS T1JfSU5WQUxJRERBVEE7Ci0gICAgIH0KLS0gICAgdmFsdWUgPSAxOwotLSAgICBmb3IgKGogPSAw OyBqIDwgaTsgaisrKSB7Ci0tICAgICAgICBrID0gZ2V0X2JpdHMxKGdiYyk7Ci0tICAgICAgICBi aXRzW2kgKyBqICsgMV0gPSBrID8gJzEnIDogJzAnOwotLSAgICAgICAgdmFsdWUgPSB2YWx1ZSA8 PCAxIHwgazsKLS0gICAgfQotLSAgICBiaXRzW2kgKyBqICsgMV0gPSAwOwotLSAgICAtLXZhbHVl OwotIAotLSAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpCi0tICAgICAgICBmZl9jYnNfdHJhY2Vf c3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgc3Vic2NyaXB0cywKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzLCB2YWx1ZSk7Ci0rICAgIHZhbHVlID0g Z2V0X2JpdHNfbG9uZyhnYmMsIGxlYWRpbmdfemVyb2VzICsgMSkgLSAxOwotKwotKyAgICBDQlNf VFJBQ0VfUkVBRF9FTkQoKTsKLSAKLSAgICAgaWYgKHZhbHVlIDwgcmFuZ2VfbWluIHx8IHZhbHVl ID4gcmFuZ2VfbWF4KSB7Ci0gICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJS T1IsICIlcyBvdXQgb2YgcmFuZ2U6ICIKLUBAIC04Niw0NSArODMsNDQgQEAgc3RhdGljIGludCBj YnNfcmVhZF9zZV9nb2xvbWIoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRl eHQgKmdiYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICp3cml0ZV90 bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHJhbmdlX21pbiwgaW50 MzJfdCByYW5nZV9tYXgpCi0gewotKyAgICB1aW50MzJfdCBsZWFkaW5nX2JpdHMsIHVuc2lnbmVk X3ZhbHVlOwotKyAgICBpbnQgbWF4X2xlbmd0aCwgbGVhZGluZ196ZXJvZXM7Ci0gICAgIGludDMy X3QgdmFsdWU7Ci0tICAgIGludCBwb3NpdGlvbiwgaSwgajsKLS0gICAgdW5zaWduZWQgaW50IGs7 Ci0tICAgIHVpbnQzMl90IHY7Ci0tICAgIGNoYXIgYml0c1s2NV07Ci0gCi0tICAgIHBvc2l0aW9u ID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsKLSsgICAgQ0JTX1RSQUNFX1JFQURfU1RBUlQoKTsKLSAK LS0gICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHsKLS0gICAgICAgIGlmIChnZXRfYml0c19s ZWZ0KGdiYykgPCBpICsgMSkgewotKyAgICBtYXhfbGVuZ3RoID0gRkZNSU4oZ2V0X2JpdHNfbGVm dChnYmMpLCAzMik7Ci0rCi0rICAgIGxlYWRpbmdfYml0cyA9IHNob3dfYml0c19sb25nKGdiYywg bWF4X2xlbmd0aCk7Ci0rICAgIGlmIChsZWFkaW5nX2JpdHMgPT0gMCkgewotKyAgICAgICAgaWYg KG1heF9sZW5ndGggPj0gMzIpIHsKLSsgICAgICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBB Vl9MT0dfRVJST1IsICJJbnZhbGlkIHNlLWdvbG9tYiBjb2RlIGF0ICIKLSsgICAgICAgICAgICAg ICAgICAgIiVzOiBtb3JlIHRoYW4gMzEgemVyb2VzLlxuIiwgbmFtZSk7Ci0rICAgICAgICAgICAg cmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rICAgICAgICB9IGVsc2UgewotICAgICAgICAg ICAgIGF2X2xvZyhjdHgtPmxvZ19jdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgc2UtZ29sb21i IGNvZGUgYXQgIgotICAgICAgICAgICAgICAgICAgICAiJXM6IGJpdHN0cmVhbSBlbmRlZC5cbiIs IG5hbWUpOwotICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAg ICAgfQotLSAgICAgICAgayA9IGdldF9iaXRzMShnYmMpOwotLSAgICAgICAgYml0c1tpXSA9IGsg PyAnMScgOiAnMCc7Ci0tICAgICAgICBpZiAoaykKLS0gICAgICAgICAgICBicmVhazsKLSAgICAg fQotLSAgICBpZiAoaSA+PSAzMikgewotKwotKyAgICBsZWFkaW5nX3plcm9lcyA9IG1heF9sZW5n dGggLSAxIC0gYXZfbG9nMihsZWFkaW5nX2JpdHMpOwotKyAgICBza2lwX2JpdHNfbG9uZyhnYmMs IGxlYWRpbmdfemVyb2VzKTsKLSsKLSsgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2JjKSA8IGxlYWRp bmdfemVyb2VzICsgMSkgewotICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VS Uk9SLCAiSW52YWxpZCBzZS1nb2xvbWIgY29kZSBhdCAiCi0tICAgICAgICAgICAgICAgIiVzOiBt b3JlIHRoYW4gMzEgemVyb2VzLlxuIiwgbmFtZSk7Ci0rICAgICAgICAgICAgICAgIiVzOiBiaXRz dHJlYW0gZW5kZWQuXG4iLCBuYW1lKTsKLSAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSURE QVRBOwotICAgICB9Ci0tICAgIHYgPSAxOwotLSAgICBmb3IgKGogPSAwOyBqIDwgaTsgaisrKSB7 Ci0tICAgICAgICBrID0gZ2V0X2JpdHMxKGdiYyk7Ci0tICAgICAgICBiaXRzW2kgKyBqICsgMV0g PSBrID8gJzEnIDogJzAnOwotLSAgICAgICAgdiA9IHYgPDwgMSB8IGs7Ci0tICAgIH0KLS0gICAg Yml0c1tpICsgaiArIDFdID0gMDsKLS0gICAgaWYgKHYgJiAxKQotLSAgICAgICAgdmFsdWUgPSAt KGludDMyX3QpKHYgLyAyKTsKLSsKLSsgICAgdW5zaWduZWRfdmFsdWUgPSBnZXRfYml0c19sb25n KGdiYywgbGVhZGluZ196ZXJvZXMgKyAxKTsKLSsKLSsgICAgaWYgKHVuc2lnbmVkX3ZhbHVlICYg MSkKLSsgICAgICAgIHZhbHVlID0gLShpbnQzMl90KSh1bnNpZ25lZF92YWx1ZSAvIDIpOwotICAg ICBlbHNlCi0tICAgICAgICB2YWx1ZSA9IHYgLyAyOwotKyAgICAgICAgdmFsdWUgPSB1bnNpZ25l ZF92YWx1ZSAvIDI7Ci0gCi0tICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkKLS0gICAgICAgIGZm X2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHBvc2l0aW9uLCBuYW1lLCBzdWJzY3JpcHRz LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMsIHZhbHVlKTsKLSsg ICAgQ0JTX1RSQUNFX1JFQURfRU5EKCk7Ci0gCi0gICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8 fCB2YWx1ZSA+IHJhbmdlX21heCkgewotICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZf TE9HX0VSUk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAiCi1AQCAtMTQ0LDYgKzE0MCw4IEBAIHN0YXRp YyBpbnQgY2JzX3dyaXRlX3VlX2dvbG9tYihDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0 Qml0Q29udGV4dCAqcGJjLAotIHsKLSAgICAgaW50IGxlbjsKLSAKLSsgICAgQ0JTX1RSQUNFX1dS SVRFX1NUQVJUKCk7Ci0rCi0gICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8fCB2YWx1ZSA+IHJh bmdlX21heCkgewotICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAi JXMgb3V0IG9mIHJhbmdlOiAiCi0gICAgICAgICAgICAgICAgIiUiUFJJdTMyIiwgYnV0IG11c3Qg YmUgaW4gWyUiUFJJdTMyIiwlIlBSSXUzMiJdLlxuIiwKLUBAIC0xNTYsMjcgKzE1NCwxNCBAQCBz dGF0aWMgaW50IGNic193cml0ZV91ZV9nb2xvbWIoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgs IFB1dEJpdENvbnRleHQgKnBiYywKLSAgICAgaWYgKHB1dF9iaXRzX2xlZnQocGJjKSA8IDIgKiBs ZW4gKyAxKQotICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1BDKTsKLSAKLS0gICAgaWYgKGN0 eC0+dHJhY2VfZW5hYmxlKSB7Ci0tICAgICAgICBjaGFyIGJpdHNbNjVdOwotLSAgICAgICAgaW50 IGk7Ci0tCi0tICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCi0tICAgICAgICAgICAg Yml0c1tpXSA9ICcwJzsKLS0gICAgICAgIGJpdHNbbGVuXSA9ICcxJzsKLS0gICAgICAgIGZvciAo aSA9IDA7IGkgPCBsZW47IGkrKykKLS0gICAgICAgICAgICBiaXRzW2xlbiArIGkgKyAxXSA9ICh2 YWx1ZSArIDEpID4+IChsZW4gLSBpIC0gMSkgJiAxID8gJzEnIDogJzAnOwotLSAgICAgICAgYml0 c1tsZW4gKyBsZW4gKyAxXSA9IDA7Ci0tCi0tICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2Vs ZW1lbnQoY3R4LCBwdXRfYml0c19jb3VudChwYmMpLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5hbWUsIHN1YnNjcmlwdHMsIGJpdHMsIHZhbHVlKTsKLS0gICAgfQotLQot ICAgICBwdXRfYml0cyhwYmMsIGxlbiwgMCk7Ci0gICAgIGlmIChsZW4gKyAxIDwgMzIpCi0gICAg ICAgICBwdXRfYml0cyhwYmMsIGxlbiArIDEsIHZhbHVlICsgMSk7Ci0gICAgIGVsc2UKLSAgICAg ICAgIHB1dF9iaXRzMzIocGJjLCB2YWx1ZSArIDEpOwotIAotKyAgICBDQlNfVFJBQ0VfV1JJVEVf RU5EKCk7Ci0rCi0gICAgIHJldHVybiAwOwotIH0KLSAKLUBAIC0xODgsNiArMTczLDggQEAgc3Rh dGljIGludCBjYnNfd3JpdGVfc2VfZ29sb21iKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBQ dXRCaXRDb250ZXh0ICpwYmMsCi0gICAgIGludCBsZW47Ci0gICAgIHVpbnQzMl90IHV2YWx1ZTsK LSAKLSsgICAgQ0JTX1RSQUNFX1dSSVRFX1NUQVJUKCk7Ci0rCi0gICAgIGlmICh2YWx1ZSA8IHJh bmdlX21pbiB8fCB2YWx1ZSA+IHJhbmdlX21heCkgewotICAgICAgICAgYXZfbG9nKGN0eC0+bG9n X2N0eCwgQVZfTE9HX0VSUk9SLCAiJXMgb3V0IG9mIHJhbmdlOiAiCi0gICAgICAgICAgICAgICAg IiUiUFJJZDMyIiwgYnV0IG11c3QgYmUgaW4gWyUiUFJJZDMyIiwlIlBSSWQzMiJdLlxuIiwKLUBA IC0yMDcsMjcgKzE5NCwxNCBAQCBzdGF0aWMgaW50IGNic193cml0ZV9zZV9nb2xvbWIoQ29kZWRC aXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKLSAgICAgaWYgKHB1dF9i aXRzX2xlZnQocGJjKSA8IDIgKiBsZW4gKyAxKQotICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5P U1BDKTsKLSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7Ci0tICAgICAgICBjaGFyIGJp dHNbNjVdOwotLSAgICAgICAgaW50IGk7Ci0tCi0tICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVu OyBpKyspCi0tICAgICAgICAgICAgYml0c1tpXSA9ICcwJzsKLS0gICAgICAgIGJpdHNbbGVuXSA9 ICcxJzsKLS0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLS0gICAgICAgICAgICBi aXRzW2xlbiArIGkgKyAxXSA9ICh1dmFsdWUgKyAxKSA+PiAobGVuIC0gaSAtIDEpICYgMSA/ICcx JyA6ICcwJzsKLS0gICAgICAgIGJpdHNbbGVuICsgbGVuICsgMV0gPSAwOwotLQotLSAgICAgICAg ZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcHV0X2JpdHNfY291bnQocGJjKSwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJzY3JpcHRzLCBiaXRz LCB2YWx1ZSk7Ci0tICAgIH0KLS0KLSAgICAgcHV0X2JpdHMocGJjLCBsZW4sIDApOwotICAgICBp ZiAobGVuICsgMSA8IDMyKQotICAgICAgICAgcHV0X2JpdHMocGJjLCBsZW4gKyAxLCB1dmFsdWUg KyAxKTsKLSAgICAgZWxzZQotICAgICAgICAgcHV0X2JpdHMzMihwYmMsIHV2YWx1ZSArIDEpOwot IAotKyAgICBDQlNfVFJBQ0VfV1JJVEVfRU5EKCk7Ci0rCi0gICAgIHJldHVybiAwOwotIH0KLSAK LUBAIC0yNjEsOCArMjM1LDYgQEAgc3RhdGljIGludCBjYnNfaDI2NV9wYXlsb2FkX2V4dGVuc2lv bl9wcmVzZW50KEdldEJpdENvbnRleHQgKmdiYywgdWludDMyX3QgcGF5bG8KLSAKLSAjZGVmaW5l IHUod2lkdGgsIG5hbWUsIHJhbmdlX21pbiwgcmFuZ2VfbWF4KSBcCi0gICAgICAgICB4dSh3aWR0 aCwgbmFtZSwgY3VycmVudC0+bmFtZSwgcmFuZ2VfbWluLCByYW5nZV9tYXgsIDAsICkKLS0jZGVm aW5lIHViKHdpZHRoLCBuYW1lKSBcCi0tICAgICAgICB4dSh3aWR0aCwgbmFtZSwgY3VycmVudC0+ bmFtZSwgMCwgTUFYX1VJTlRfQklUUyh3aWR0aCksIDAsICkKLSAjZGVmaW5lIGZsYWcobmFtZSkg dWIoMSwgbmFtZSkKLSAjZGVmaW5lIHVlKG5hbWUsIHJhbmdlX21pbiwgcmFuZ2VfbWF4KSBcCi0g ICAgICAgICB4dWUobmFtZSwgY3VycmVudC0+bmFtZSwgcmFuZ2VfbWluLCByYW5nZV9tYXgsIDAs ICkKLUBAIC0yOTgsNiArMjcwLDEyIEBAIHN0YXRpYyBpbnQgY2JzX2gyNjVfcGF5bG9hZF9leHRl bnNpb25fcHJlc2VudChHZXRCaXRDb250ZXh0ICpnYmMsIHVpbnQzMl90IHBheWxvCi0gI2RlZmlu ZSBSRUFEV1JJVEUgcmVhZAotICNkZWZpbmUgUldDb250ZXh0IEdldEJpdENvbnRleHQKLSAKLSsj ZGVmaW5lIHViKHdpZHRoLCBuYW1lKSBkbyB7IFwKLSsgICAgICAgIHVpbnQzMl90IHZhbHVlOyBc Ci0rICAgICAgICBDSEVDSyhmZl9jYnNfcmVhZF9zaW1wbGVfdW5zaWduZWQoY3R4LCBydywgd2lk dGgsICNuYW1lLCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JnZhbHVlKSk7IFwKLSsgICAgICAgIGN1cnJlbnQtPm5hbWUgPSB2YWx1ZTsgXAotKyAgICB9IHdo aWxlICgwKQotICNkZWZpbmUgeHUod2lkdGgsIG5hbWUsIHZhciwgcmFuZ2VfbWluLCByYW5nZV9t YXgsIHN1YnMsIC4uLikgZG8geyBcCi0gICAgICAgICB1aW50MzJfdCB2YWx1ZTsgXAotICAgICAg ICAgQ0hFQ0soZmZfY2JzX3JlYWRfdW5zaWduZWQoY3R4LCBydywgd2lkdGgsICNuYW1lLCBcCi1A QCAtMzcyLDYgKzM1MCw3IEBAIHN0YXRpYyBpbnQgY2JzX2gyNjQ1X3JlYWRfbW9yZV9yYnNwX2Rh dGEoR2V0Qml0Q29udGV4dCAqZ2JjKQotICN1bmRlZiBSRUFECi0gI3VuZGVmIFJFQURXUklURQot ICN1bmRlZiBSV0NvbnRleHQKLSsjdW5kZWYgdWIKLSAjdW5kZWYgeHUKLSAjdW5kZWYgeGkKLSAj dW5kZWYgeHVlCi1AQCAtMzg3LDYgKzM2NiwxMSBAQCBzdGF0aWMgaW50IGNic19oMjY0NV9yZWFk X21vcmVfcmJzcF9kYXRhKEdldEJpdENvbnRleHQgKmdiYykKLSAjZGVmaW5lIFJFQURXUklURSB3 cml0ZQotICNkZWZpbmUgUldDb250ZXh0IFB1dEJpdENvbnRleHQKLSAKLSsjZGVmaW5lIHViKHdp ZHRoLCBuYW1lKSBkbyB7IFwKLSsgICAgICAgIHVpbnQzMl90IHZhbHVlID0gY3VycmVudC0+bmFt ZTsgXAotKyAgICAgICAgQ0hFQ0soZmZfY2JzX3dyaXRlX3NpbXBsZV91bnNpZ25lZChjdHgsIHJ3 LCB3aWR0aCwgI25hbWUsIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdmFsdWUpKTsgXAotKyAgICB9IHdoaWxlICgwKQotICNkZWZpbmUgeHUod2lkdGgsIG5h bWUsIHZhciwgcmFuZ2VfbWluLCByYW5nZV9tYXgsIHN1YnMsIC4uLikgZG8geyBcCi0gICAgICAg ICB1aW50MzJfdCB2YWx1ZSA9IHZhcjsgXAotICAgICAgICAgQ0hFQ0soZmZfY2JzX3dyaXRlX3Vu c2lnbmVkKGN0eCwgcncsIHdpZHRoLCAjbmFtZSwgXAotQEAgLTQ1MCw2ICs0MzQsNyBAQCBzdGF0 aWMgaW50IGNic19oMjY0NV9yZWFkX21vcmVfcmJzcF9kYXRhKEdldEJpdENvbnRleHQgKmdiYykK LSAjdW5kZWYgV1JJVEUKLSAjdW5kZWYgUkVBRFdSSVRFCi0gI3VuZGVmIFJXQ29udGV4dAotKyN1 bmRlZiB1YgotICN1bmRlZiB4dQotICN1bmRlZiB4aQotICN1bmRlZiB4dWUKLWRpZmYgLS1naXQg YS9saWJhdmNvZGVjL2Nic19pbnRlcm5hbC5oIGIvbGliYXZjb2RlYy9jYnNfaW50ZXJuYWwuaAot aW5kZXggZTU4NWM3Ny4uNjBlMzFlYiAxMDA2NDQKLS0tLSBhL2xpYmF2Y29kZWMvY2JzX2ludGVy bmFsLmgKLSsrKyBiL2xpYmF2Y29kZWMvY2JzX2ludGVybmFsLmgKLUBAIC0xNTEsMjQgKzE1MSwy OSBAQCB0eXBlZGVmIHN0cnVjdCBDb2RlZEJpdHN0cmVhbVR5cGUgewotIHZvaWQgZmZfY2JzX3Ry YWNlX2hlYWRlcihDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqbmFtZSk7Ci0gCi0tdm9pZCBmZl9jYnNfdHJhY2Vfc3ludGF4 X2VsZW1lbnQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIGludCBwb3NpdGlvbiwKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBpbnQg KnN1YnNjcmlwdHMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqYml0c3RyaW5nLCBpbnQ2NF90IHZhbHVlKTsKLS0KLSAKLSAvLyBIZWxwZXIgZnVuY3Rpb25z IGZvciByZWFkL3dyaXRlIG9mIGNvbW1vbiBiaXRzdHJlYW0gZWxlbWVudHMsIGluY2x1ZGluZwot LS8vIGdlbmVyYXRpb24gb2YgdHJhY2Ugb3V0cHV0LgotKy8vIGdlbmVyYXRpb24gb2YgdHJhY2Ug b3V0cHV0LiBUaGUgc2ltcGxlIGZ1bmN0aW9ucyBhcmUgZXF1aXZhbGVudCB0bwotKy8vIHRoZWly IG5vbi1zaW1wbGUgY291bnRlcnBhcnRzIGV4Y2VwdCB0aGF0IHRoZWlyIHJhbmdlIGlzIHVucmVz dHJpY3RlZAotKy8vIChpLmUuIG9ubHkgbGltaXRlZCBieSB0aGUgYW1vdW50IG9mIGJpdHMgdXNl ZCkgYW5kIHRoZXkgbGFjawotKy8vIHRoZSBhYmlsaXR5IHRvIHVzZSBzdWJzY3JpcHRzLgotIAot IGludCBmZl9jYnNfcmVhZF91bnNpZ25lZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0 Qml0Q29udGV4dCAqZ2JjLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGNv bnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vi c2NyaXB0cywgdWludDMyX3QgKndyaXRlX3RvLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50MzJfdCByYW5nZV9taW4sIHVpbnQzMl90IHJhbmdlX21heCk7Ci0gCi0raW50IGZmX2Nic19y ZWFkX3NpbXBsZV91bnNpZ25lZChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29u dGV4dCAqZ2JjLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBj b25zdCBjaGFyICpuYW1lLCB1aW50MzJfdCAqd3JpdGVfdG8pOwotKwotIGludCBmZl9jYnNfd3Jp dGVfdW5zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBi YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwgY29uc3QgY2hhciAqbmFt ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAqc3Vic2NyaXB0cywgdWlu dDMyX3QgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByYW5nZV9t aW4sIHVpbnQzMl90IHJhbmdlX21heCk7Ci0gCi0raW50IGZmX2Nic193cml0ZV9zaW1wbGVfdW5z aWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGNvbnN0IGNoYXIgKm5h bWUsIHVpbnQzMl90IHZhbHVlKTsKLSsKLSBpbnQgZmZfY2JzX3JlYWRfc2lnbmVkKENvZGVkQml0 c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCi0gICAgICAgICAgICAgICAg ICAgICAgICBpbnQgd2lkdGgsIGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMsIGludDMyX3QgKndyaXRlX3RvLAotQEAgLTE5MSw2 ICsxOTYsODcgQEAgaW50IGZmX2Nic193cml0ZV9zaWduZWQoQ29kZWRCaXRzdHJlYW1Db250ZXh0 ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKLSAvLyByYW5nZV9taW4gaW4gdGhlIGFib3ZlIGZ1 bmN0aW9ucy4KLSAjZGVmaW5lIE1JTl9JTlRfQklUUyhsZW5ndGgpICgtKElOVDY0X0MoMSkgPDwg KChsZW5ndGgpIC0gMSkpKQotIAotKwotKy8vIFN0YXJ0IG9mIGEgc3ludGF4IGVsZW1lbnQgZHVy aW5nIHJlYWQgdHJhY2luZy4KLSsjZGVmaW5lIENCU19UUkFDRV9SRUFEX1NUQVJUKCkgXAotKyAg ICBHZXRCaXRDb250ZXh0IHRyYWNlX3N0YXJ0OyBcCi0rICAgIGRvIHsgXAotKyAgICAgICAgaWYg KGN0eC0+dHJhY2VfZW5hYmxlKSBcCi0rICAgICAgICAgICAgdHJhY2Vfc3RhcnQgPSAqZ2JjOyBc Ci0rICAgIH0gd2hpbGUgKDApCi0rCi0rLy8gRW5kIG9mIGEgc3ludGF4IGVsZW1lbnQgZm9yIHRy YWNpbmcsIG1ha2UgY2FsbGJhY2suCi0rI2RlZmluZSBDQlNfVFJBQ0VfUkVBRF9FTkQoKSBcCi0r ICAgIGRvIHsgXAotKyAgICAgICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7IFwKLSsgICAgICAg ICAgICBpbnQgc3RhcnRfcG9zaXRpb24gPSBnZXRfYml0c19jb3VudCgmdHJhY2Vfc3RhcnQpOyBc Ci0rICAgICAgICAgICAgaW50IGVuZF9wb3NpdGlvbiAgID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsg XAotKyAgICAgICAgICAgIGF2X2Fzc2VydDAoc3RhcnRfcG9zaXRpb24gPD0gZW5kX3Bvc2l0aW9u KTsgXAotKyAgICAgICAgICAgIGN0eC0+dHJhY2VfcmVhZF9jYWxsYmFjayhjdHgtPnRyYWNlX2Nv bnRleHQsICZ0cmFjZV9zdGFydCwgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbmRfcG9zaXRpb24gLSBzdGFydF9wb3NpdGlvbiwgXAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJzY3JpcHRzLCB2YWx1ZSk7IFwKLSsgICAgICAg IH0gXAotKyAgICB9IHdoaWxlICgwKQotKwotKy8vIEVuZCBvZiBhIHN5bnRheCBlbGVtZW50IHdp dGggbm8gc3Vic2NyaXB0IGVudHJpZXMuCi0rI2RlZmluZSBDQlNfVFJBQ0VfUkVBRF9FTkRfTk9f U1VCU0NSSVBUUygpIFwKLSsgICAgZG8geyBcCi0rICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlw dHMgPSBOVUxMOyBcCi0rICAgICAgICBDQlNfVFJBQ0VfUkVBRF9FTkQoKTsgXAotKyAgICB9IHdo aWxlICgwKQotKwotKy8vIEVuZCBvZiBhIHN5bnRheCBlbGVtZW50IHdoaWNoIGlzIG1hZGUgdXAg b2Ygc3ViZWxlbWVudHMgd2hpY2gKLSsvLyBhcmUgYWxlYWR5IHRyYWNlZCwgc28gd2UgYXJlIG9u bHkgc2hvd2luZyB0aGUgdmFsdWUuCi0rI2RlZmluZSBDQlNfVFJBQ0VfUkVBRF9FTkRfVkFMVUVf T05MWSgpIFwKLSsgICAgZG8geyBcCi0rICAgICAgICBpZiAoY3R4LT50cmFjZV9lbmFibGUpIHsg XAotKyAgICAgICAgICAgIGN0eC0+dHJhY2VfcmVhZF9jYWxsYmFjayhjdHgtPnRyYWNlX2NvbnRl eHQsICZ0cmFjZV9zdGFydCwgMCwgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuYW1lLCBzdWJzY3JpcHRzLCB2YWx1ZSk7IFwKLSsgICAgICAgIH0gXAotKyAgICB9IHdo aWxlICgwKQotKwotKy8vIFN0YXJ0IG9mIGEgc3ludGF4IGVsZW1lbnQgZHVyaW5nIHdyaXRlIHRy YWNpbmcuCi0rI2RlZmluZSBDQlNfVFJBQ0VfV1JJVEVfU1RBUlQoKSBcCi0rICAgIGludCBzdGFy dF9wb3NpdGlvbjsgXAotKyAgICBkbyB7IFwKLSsgICAgICAgIGlmIChjdHgtPnRyYWNlX2VuYWJs ZSkgXAotKyAgICAgICAgICAgIHN0YXJ0X3Bvc2l0aW9uID0gcHV0X2JpdHNfY291bnQocGJjKTs7 IFwKLSsgICAgfSB3aGlsZSAoMCkKLSsKLSsvLyBFbmQgb2YgYSBzeW50YXggZWxlbWVudCBmb3Ig dHJhY2luZywgbWFrZSBjYWxsYmFjay4KLSsjZGVmaW5lIENCU19UUkFDRV9XUklURV9FTkQoKSBc Ci0rICAgIGRvIHsgXAotKyAgICAgICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7IFwKLSsgICAg ICAgICAgICBpbnQgZW5kX3Bvc2l0aW9uICAgPSBwdXRfYml0c19jb3VudChwYmMpOyBcCi0rICAg ICAgICAgICAgYXZfYXNzZXJ0MChzdGFydF9wb3NpdGlvbiA8PSBlbmRfcG9zaXRpb24pOyBcCi0r ICAgICAgICAgICAgY3R4LT50cmFjZV93cml0ZV9jYWxsYmFjayhjdHgtPnRyYWNlX2NvbnRleHQs IHBiYywgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kX3Bvc2l0 aW9uIC0gc3RhcnRfcG9zaXRpb24sIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5hbWUsIHN1YnNjcmlwdHMsIHZhbHVlKTsgXAotKyAgICAgICAgfSBcCi0rICAgIH0g d2hpbGUgKDApCi0rCi0rLy8gRW5kIG9mIGEgc3ludGF4IGVsZW1lbnQgd2l0aCBubyBzdWJzY3Jp cHQgZW50cmllcy4KLSsjZGVmaW5lIENCU19UUkFDRV9XUklURV9FTkRfTk9fU1VCU0NSSVBUUygp IFwKLSsgICAgZG8geyBcCi0rICAgICAgICBjb25zdCBpbnQgKnN1YnNjcmlwdHMgPSBOVUxMOyBc Ci0rICAgICAgICBDQlNfVFJBQ0VfV1JJVEVfRU5EKCk7IFwKLSsgICAgfSB3aGlsZSAoMCkKLSsK LSsvLyBFbmQgb2YgYSBzeW50YXggZWxlbWVudCB3aGljaCBpcyBtYWRlIHVwIG9mIHN1YmVsZW1l bnRzIHdoaWNoIGFyZQotKy8vIGFsZWFkeSB0cmFjZWQsIHNvIHdlIGFyZSBvbmx5IHNob3dpbmcg dGhlIHZhbHVlLiAgVGhpcyBmb3JnZXMgYQotKy8vIFB1dEJpdENvbnRleHQgdG8gcG9pbnQgdG8g dGhlIHBvc2l0aW9uIG9mIHRoZSBzdGFydCBvZiB0aGUgc3ludGF4Ci0rLy8gZWxlbWVudCwgYnV0 IHRoZSBvdGhlciBzdGF0ZSBkb2Vzbid0IG1hdHRlciBiZWNhdXNlIGxlbmd0aCBpcyB6ZXJvLgot KyNkZWZpbmUgQ0JTX1RSQUNFX1dSSVRFX0VORF9WQUxVRV9PTkxZKCkgXAotKyAgICBkbyB7IFwK LSsgICAgICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgeyBcCi0rICAgICAgICAgICAgUHV0Qml0 Q29udGV4dCB0bXA7IFwKLSsgICAgICAgICAgICBpbml0X3B1dF9iaXRzKCZ0bXAsIHBiYy0+YnVm LCBzdGFydF9wb3NpdGlvbik7IFwKLSsgICAgICAgICAgICBza2lwX3B1dF9iaXRzKCZ0bXAsIHN0 YXJ0X3Bvc2l0aW9uKTsgXAotKyAgICAgICAgICAgIGN0eC0+dHJhY2Vfd3JpdGVfY2FsbGJhY2so Y3R4LT50cmFjZV9jb250ZXh0LCAmdG1wLCAwLCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuYW1lLCBzdWJzY3JpcHRzLCB2YWx1ZSk7IFwKLSsgICAgICAgIH0gXAot KyAgICB9IHdoaWxlICgwKQotKwotICNkZWZpbmUgVFlQRV9MSVNUKC4uLikgeyBfX1ZBX0FSR1Nf XyB9Ci0gI2RlZmluZSBDQlNfVU5JVF9UWVBFX1BPRCh0eXBlXywgc3RydWN0dXJlKSB7IFwKLSAg ICAgICAgIC5uYl91bml0X3R5cGVzICA9IDEsIFwKLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Ni c19tcGVnMi5jIGIvbGliYXZjb2RlYy9jYnNfbXBlZzIuYwotaW5kZXggMDRiMGM3Zi4uMzdmYzI4 YSAxMDA2NDQKLS0tLSBhL2xpYmF2Y29kZWMvY2JzX21wZWcyLmMKLSsrKyBiL2xpYmF2Y29kZWMv Y2JzX21wZWcyLmMKLUBAIC00MCw4ICs0MCw2IEBACi0gCi0gI2RlZmluZSBTVUJTQ1JJUFRTKHN1 YnMsIC4uLikgKHN1YnMgPiAwID8gKChpbnRbc3VicyArIDFdKXsgc3VicywgX19WQV9BUkdTX18g fSkgOiBOVUxMKQotIAotLSNkZWZpbmUgdWkod2lkdGgsIG5hbWUpIFwKLS0gICAgICAgIHh1aSh3 aWR0aCwgbmFtZSwgY3VycmVudC0+bmFtZSwgMCwgTUFYX1VJTlRfQklUUyh3aWR0aCksIDAsICkK LSAjZGVmaW5lIHVpcih3aWR0aCwgbmFtZSkgXAotICAgICAgICAgeHVpKHdpZHRoLCBuYW1lLCBj dXJyZW50LT5uYW1lLCAxLCBNQVhfVUlOVF9CSVRTKHdpZHRoKSwgMCwgKQotICNkZWZpbmUgdWlz KHdpZHRoLCBuYW1lLCBzdWJzLCAuLi4pIFwKLUBAIC02NSw2ICs2MywxMiBAQAotICNkZWZpbmUg UkVBRFdSSVRFIHJlYWQKLSAjZGVmaW5lIFJXQ29udGV4dCBHZXRCaXRDb250ZXh0Ci0gCi0rI2Rl ZmluZSB1aSh3aWR0aCwgbmFtZSkgZG8geyBcCi0rICAgICAgICB1aW50MzJfdCB2YWx1ZTsgXAot KyAgICAgICAgQ0hFQ0soZmZfY2JzX3JlYWRfc2ltcGxlX3Vuc2lnbmVkKGN0eCwgcncsIHdpZHRo LCAjbmFtZSwgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2 YWx1ZSkpOyBcCi0rICAgICAgICBjdXJyZW50LT5uYW1lID0gdmFsdWU7IFwKLSsgICAgfSB3aGls ZSAoMCkKLSAjZGVmaW5lIHh1aWEod2lkdGgsIHN0cmluZywgdmFyLCByYW5nZV9taW4sIHJhbmdl X21heCwgc3VicywgLi4uKSBkbyB7IFwKLSAgICAgICAgIHVpbnQzMl90IHZhbHVlOyBcCi0gICAg ICAgICBDSEVDSyhmZl9jYnNfcmVhZF91bnNpZ25lZChjdHgsIHJ3LCB3aWR0aCwgc3RyaW5nLCBc Ci1AQCAtOTUsNiArOTksNyBAQAotICN1bmRlZiBSRUFECi0gI3VuZGVmIFJFQURXUklURQotICN1 bmRlZiBSV0NvbnRleHQKLSsjdW5kZWYgdWkKLSAjdW5kZWYgeHVpYQotICN1bmRlZiB4c2kKLSAj dW5kZWYgbmV4dGJpdHMKLUBAIC0xMDUsNiArMTEwLDExIEBACi0gI2RlZmluZSBSRUFEV1JJVEUg d3JpdGUKLSAjZGVmaW5lIFJXQ29udGV4dCBQdXRCaXRDb250ZXh0Ci0gCi0rI2RlZmluZSB1aSh3 aWR0aCwgbmFtZSkgZG8geyBcCi0rICAgICAgICBDSEVDSyhmZl9jYnNfd3JpdGVfc2ltcGxlX3Vu c2lnbmVkKGN0eCwgcncsIHdpZHRoLCAjbmFtZSwgXAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjdXJyZW50LT5uYW1lKSk7IFwKLSsgICAgfSB3aGlsZSAoMCkK LSsKLSAjZGVmaW5lIHh1aWEod2lkdGgsIHN0cmluZywgdmFyLCByYW5nZV9taW4sIHJhbmdlX21h eCwgc3VicywgLi4uKSBkbyB7IFwKLSAgICAgICAgIENIRUNLKGZmX2Nic193cml0ZV91bnNpZ25l ZChjdHgsIHJ3LCB3aWR0aCwgc3RyaW5nLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU1VCU0NSSVBUUyhzdWJzLCBfX1ZBX0FSR1NfXyksIFwKLUBAIC0xMzQsNiArMTQ0 LDcgQEAKLSAjdW5kZWYgV1JJVEUKLSAjdW5kZWYgUkVBRFdSSVRFCi0gI3VuZGVmIFJXQ29udGV4 dAotKyN1bmRlZiB1aQotICN1bmRlZiB4dWlhCi0gI3VuZGVmIHhzaQotICN1bmRlZiBuZXh0Yml0 cwotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2JzX3ZwOS5jIGIvbGliYXZjb2RlYy9jYnNfdnA5 LmMKLWluZGV4IDE4NGZkY2EuLjgxNmQwNmQgMTAwNjQ0Ci0tLS0gYS9saWJhdmNvZGVjL2Nic192 cDkuYwotKysrIGIvbGliYXZjb2RlYy9jYnNfdnA5LmMKLUBAIC0yOCwxMSArMjgsMTAgQEAgc3Rh dGljIGludCBjYnNfdnA5X3JlYWRfcyhDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0 Q29udGV4dCAqZ2JjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJz Y3JpcHRzLCBpbnQzMl90ICp3cml0ZV90bykKLSB7Ci0gICAgIHVpbnQzMl90IG1hZ25pdHVkZTsK LS0gICAgaW50IHBvc2l0aW9uLCBzaWduOwotKyAgICBpbnQgc2lnbjsKLSAgICAgaW50MzJfdCB2 YWx1ZTsKLSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQotLSAgICAgICAgcG9zaXRpb24g PSBnZXRfYml0c19jb3VudChnYmMpOwotKyAgICBDQlNfVFJBQ0VfUkVBRF9TVEFSVCgpOwotIAot ICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYmMpIDwgd2lkdGggKyAxKSB7Ci0gICAgICAgICBhdl9s b2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIHNpZ25lZCB2YWx1ZSBhdCAi Ci1AQCAtNDQsMTcgKzQzLDcgQEAgc3RhdGljIGludCBjYnNfdnA5X3JlYWRfcyhDb2RlZEJpdHN0 cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAotICAgICBzaWduICAgICAgPSBn ZXRfYml0czEoZ2JjKTsKLSAgICAgdmFsdWUgICAgID0gc2lnbiA/IC0oaW50MzJfdCltYWduaXR1 ZGUgOiBtYWduaXR1ZGU7Ci0gCi0tICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgewotLSAgICAg ICAgY2hhciBiaXRzWzMzXTsKLS0gICAgICAgIGludCBpOwotLSAgICAgICAgZm9yIChpID0gMDsg aSA8IHdpZHRoOyBpKyspCi0tICAgICAgICAgICAgYml0c1tpXSA9IG1hZ25pdHVkZSA+PiAod2lk dGggLSBpIC0gMSkgJiAxID8gJzEnIDogJzAnOwotLSAgICAgICAgYml0c1tpXSA9IHNpZ24gPyAn MScgOiAnMCc7Ci0tICAgICAgICBiaXRzW2kgKyAxXSA9IDA7Ci0tCi0tICAgICAgICBmZl9jYnNf dHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgc3Vic2NyaXB0cywKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzLCB2YWx1ZSk7Ci0tICAgIH0K LSsgICAgQ0JTX1RSQUNFX1JFQURfRU5EKCk7Ci0gCi0gICAgICp3cml0ZV90byA9IHZhbHVlOwot ICAgICByZXR1cm4gMDsKLUBAIC02NywyNyArNTYsMTkgQEAgc3RhdGljIGludCBjYnNfdnA5X3dy aXRlX3MoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKLSAg ICAgdWludDMyX3QgbWFnbml0dWRlOwotICAgICBpbnQgc2lnbjsKLSAKLSsgICAgQ0JTX1RSQUNF X1dSSVRFX1NUQVJUKCk7Ci0rCi0gICAgIGlmIChwdXRfYml0c19sZWZ0KHBiYykgPCB3aWR0aCAr IDEpCi0gICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9TUEMpOwotIAotICAgICBzaWduICAgICAg PSB2YWx1ZSA8IDA7Ci0gICAgIG1hZ25pdHVkZSA9IHNpZ24gPyAtdmFsdWUgOiB2YWx1ZTsKLSAK LS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7Ci0tICAgICAgICBjaGFyIGJpdHNbMzNdOwot LSAgICAgICAgaW50IGk7Ci0tICAgICAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7IGkrKykKLS0g ICAgICAgICAgICBiaXRzW2ldID0gbWFnbml0dWRlID4+ICh3aWR0aCAtIGkgLSAxKSAmIDEgPyAn MScgOiAnMCc7Ci0tICAgICAgICBiaXRzW2ldID0gc2lnbiA/ICcxJyA6ICcwJzsKLS0gICAgICAg IGJpdHNbaSArIDFdID0gMDsKLS0KLS0gICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVu dChjdHgsIHB1dF9iaXRzX2NvdW50KHBiYyksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmFtZSwgc3Vic2NyaXB0cywgYml0cywgdmFsdWUpOwotLSAgICB9Ci0tCi0gICAg IHB1dF9iaXRzKHBiYywgd2lkdGgsIG1hZ25pdHVkZSk7Ci0gICAgIHB1dF9iaXRzKHBiYywgMSwg c2lnbik7Ci0gCi0rICAgIENCU19UUkFDRV9XUklURV9FTkQoKTsKLSsKLSAgICAgcmV0dXJuIDA7 Ci0gfQotIAotQEAgLTk2LDMyICs3NywyNCBAQCBzdGF0aWMgaW50IGNic192cDlfcmVhZF9pbmNy ZW1lbnQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIEdldEJpdENvbnRleHQgKmdiYwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCB1aW50MzJf dCAqd3JpdGVfdG8pCi0gewotICAgICB1aW50MzJfdCB2YWx1ZTsKLS0gICAgaW50IHBvc2l0aW9u LCBpOwotLSAgICBjaGFyIGJpdHNbOF07Ci0gCi0tICAgIGF2X2Fzc2VydDAocmFuZ2VfbWluIDw9 IHJhbmdlX21heCAmJiByYW5nZV9tYXggLSByYW5nZV9taW4gPCBzaXplb2YoYml0cykgLSAxKTsK LS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKQotLSAgICAgICAgcG9zaXRpb24gPSBnZXRfYml0 c19jb3VudChnYmMpOwotKyAgICBDQlNfVFJBQ0VfUkVBRF9TVEFSVCgpOwotKwotKyAgICBhdl9h c3NlcnQwKHJhbmdlX21pbiA8PSByYW5nZV9tYXggJiYgcmFuZ2VfbWF4IC0gcmFuZ2VfbWluIDwg MzIpOwotIAotLSAgICBmb3IgKGkgPSAwLCB2YWx1ZSA9IHJhbmdlX21pbjsgdmFsdWUgPCByYW5n ZV9tYXg7KSB7Ci0rICAgIGZvciAodmFsdWUgPSByYW5nZV9taW47IHZhbHVlIDwgcmFuZ2VfbWF4 OykgewotICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2JjKSA8IDEpIHsKLSAgICAgICAgICAg ICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIGluY3JlbWVudCB2 YWx1ZSBhdCAiCi0gICAgICAgICAgICAgICAgICAgICIlczogYml0c3RyZWFtIGVuZGVkLlxuIiwg bmFtZSk7Ci0gICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAg ICB9Ci0tICAgICAgICBpZiAoZ2V0X2JpdHMxKGdiYykpIHsKLS0gICAgICAgICAgICBiaXRzW2kr K10gPSAnMSc7Ci0rICAgICAgICBpZiAoZ2V0X2JpdHMxKGdiYykpCi0gICAgICAgICAgICAgKyt2 YWx1ZTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgYml0c1tpKytdID0gJzAnOwot KyAgICAgICAgZWxzZQotICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgfQotICAgICB9Ci0g Ci0tICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgewotLSAgICAgICAgYml0c1tpXSA9IDA7Ci0t ICAgICAgICBmZl9jYnNfdHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwg TlVMTCwgYml0cywgdmFsdWUpOwotLSAgICB9Ci0rICAgIENCU19UUkFDRV9SRUFEX0VORF9OT19T VUJTQ1JJUFRTKCk7Ci0gCi0gICAgICp3cml0ZV90byA9IHZhbHVlOwotICAgICByZXR1cm4gMDsK LUBAIC0xMzMsNiArMTA2LDggQEAgc3RhdGljIGludCBjYnNfdnA5X3dyaXRlX2luY3JlbWVudChD b2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGIKLSB7Ci0gICAgIGlu dCBsZW47Ci0gCi0rICAgIENCU19UUkFDRV9XUklURV9TVEFSVCgpOwotKwotICAgICBhdl9hc3Nl cnQwKHJhbmdlX21pbiA8PSByYW5nZV9tYXggJiYgcmFuZ2VfbWF4IC0gcmFuZ2VfbWluIDwgOCk7 Ci0gICAgIGlmICh2YWx1ZSA8IHJhbmdlX21pbiB8fCB2YWx1ZSA+IHJhbmdlX21heCkgewotICAg ICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiJXMgb3V0IG9mIHJhbmdl OiAiCi1AQCAtMTQ4LDIzICsxMjMsMTEgQEAgc3RhdGljIGludCBjYnNfdnA5X3dyaXRlX2luY3Jl bWVudChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGIKLSAgICAg aWYgKHB1dF9iaXRzX2xlZnQocGJjKSA8IGxlbikKLSAgICAgICAgIHJldHVybiBBVkVSUk9SKEVO T1NQQyk7Ci0gCi0tICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgewotLSAgICAgICAgY2hhciBi aXRzWzhdOwotLSAgICAgICAgaW50IGk7Ci0tICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBp KyspIHsKLS0gICAgICAgICAgICBpZiAocmFuZ2VfbWluICsgaSA9PSB2YWx1ZSkKLS0gICAgICAg ICAgICAgICAgYml0c1tpXSA9ICcwJzsKLS0gICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAg ICAgIGJpdHNbaV0gPSAnMSc7Ci0tICAgICAgICB9Ci0tICAgICAgICBiaXRzW2ldID0gMDsKLS0g ICAgICAgIGZmX2Nic190cmFjZV9zeW50YXhfZWxlbWVudChjdHgsIHB1dF9iaXRzX2NvdW50KHBi YyksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgTlVMTCwgYml0 cywgdmFsdWUpOwotLSAgICB9Ci0tCi0gICAgIGlmIChsZW4gPiAwKQotICAgICAgICAgcHV0X2Jp dHMocGJjLCBsZW4sICgxIDw8IGxlbikgLSAxIC0gKHZhbHVlICE9IHJhbmdlX21heCkpOwotIAot KyAgICBDQlNfVFJBQ0VfV1JJVEVfRU5EX05PX1NVQlNDUklQVFMoKTsKLSsKLSAgICAgcmV0dXJu IDA7Ci0gfQotIAotQEAgLTE3MywxMiArMTM2LDExIEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV9yZWFk X2xlKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpnYmMsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICpzdWJzY3JpcHRzLCB1aW50MzJfdCAq d3JpdGVfdG8pCi0gewotICAgICB1aW50MzJfdCB2YWx1ZTsKLS0gICAgaW50IHBvc2l0aW9uLCBi OwotKyAgICBpbnQgYjsKLSAKLS0gICAgYXZfYXNzZXJ0MCh3aWR0aCAlIDggPT0gMCk7Ci0rICAg IENCU19UUkFDRV9SRUFEX1NUQVJUKCk7Ci0gCi0tICAgIGlmIChjdHgtPnRyYWNlX2VuYWJsZSkK LS0gICAgICAgIHBvc2l0aW9uID0gZ2V0X2JpdHNfY291bnQoZ2JjKTsKLSsgICAgYXZfYXNzZXJ0 MCh3aWR0aCAlIDggPT0gMCk7Ci0gCi0gICAgIGlmIChnZXRfYml0c19sZWZ0KGdiYykgPCB3aWR0 aCkgewotICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxp ZCBsZSB2YWx1ZSBhdCAiCi1AQCAtMTkwLDE3ICsxNTIsNyBAQCBzdGF0aWMgaW50IGNic192cDlf cmVhZF9sZShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAot ICAgICBmb3IgKGIgPSAwOyBiIDwgd2lkdGg7IGIgKz0gOCkKLSAgICAgICAgIHZhbHVlIHw9IGdl dF9iaXRzKGdiYywgOCkgPDwgYjsKLSAKLS0gICAgaWYgKGN0eC0+dHJhY2VfZW5hYmxlKSB7Ci0t ICAgICAgICBjaGFyIGJpdHNbMzNdOwotLSAgICAgICAgaW50IGk7Ci0tICAgICAgICBmb3IgKGIg PSAwOyBiIDwgd2lkdGg7IGIgKz0gOCkKLS0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgODsg aSsrKQotLSAgICAgICAgICAgICAgICBiaXRzW2IgKyBpXSA9IHZhbHVlID4+IChiICsgaSkgJiAx ID8gJzEnIDogJzAnOwotLSAgICAgICAgYml0c1tiXSA9IDA7Ci0tCi0tICAgICAgICBmZl9jYnNf dHJhY2Vfc3ludGF4X2VsZW1lbnQoY3R4LCBwb3NpdGlvbiwgbmFtZSwgc3Vic2NyaXB0cywKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzLCB2YWx1ZSk7Ci0tICAgIH0K LSsgICAgQ0JTX1RSQUNFX1JFQURfRU5EKCk7Ci0gCi0gICAgICp3cml0ZV90byA9IHZhbHVlOwot ICAgICByZXR1cm4gMDsKLUBAIC0yMTIsMjYgKzE2NCwxOCBAQCBzdGF0aWMgaW50IGNic192cDlf d3JpdGVfbGUoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywK LSB7Ci0gICAgIGludCBiOwotIAotKyAgICBDQlNfVFJBQ0VfV1JJVEVfU1RBUlQoKTsKLSsKLSAg ICAgYXZfYXNzZXJ0MCh3aWR0aCAlIDggPT0gMCk7Ci0gCi0gICAgIGlmIChwdXRfYml0c19sZWZ0 KHBiYykgPCB3aWR0aCkKLSAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT1NQQyk7Ci0gCi0tICAg IGlmIChjdHgtPnRyYWNlX2VuYWJsZSkgewotLSAgICAgICAgY2hhciBiaXRzWzMzXTsKLS0gICAg ICAgIGludCBpOwotLSAgICAgICAgZm9yIChiID0gMDsgYiA8IHdpZHRoOyBiICs9IDgpCi0tICAg ICAgICAgICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykKLS0gICAgICAgICAgICAgICAgYml0c1ti ICsgaV0gPSB2YWx1ZSA+PiAoYiArIGkpICYgMSA/ICcxJyA6ICcwJzsKLS0gICAgICAgIGJpdHNb Yl0gPSAwOwotLQotLSAgICAgICAgZmZfY2JzX3RyYWNlX3N5bnRheF9lbGVtZW50KGN0eCwgcHV0 X2JpdHNfY291bnQocGJjKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu YW1lLCBzdWJzY3JpcHRzLCBiaXRzLCB2YWx1ZSk7Ci0tICAgIH0KLS0KLSAgICAgZm9yIChiID0g MDsgYiA8IHdpZHRoOyBiICs9IDgpCi0gICAgICAgICBwdXRfYml0cyhwYmMsIDgsIHZhbHVlID4+ IGIgJiAweGZmKTsKLSAKLSsgICAgQ0JTX1RSQUNFX1dSSVRFX0VORCgpOwotKwotICAgICByZXR1 cm4gMDsKLSB9Ci0gCi1AQCAtMjUxLDggKzE5NSw2IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV93cml0 ZV9sZShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAotIAot ICNkZWZpbmUgU1VCU0NSSVBUUyhzdWJzLCAuLi4pIChzdWJzID4gMCA/ICgoaW50W3N1YnMgKyAx XSl7IHN1YnMsIF9fVkFfQVJHU19fIH0pIDogTlVMTCkKLSAKLS0jZGVmaW5lIGYod2lkdGgsIG5h bWUpIFwKLS0gICAgICAgIHhmKHdpZHRoLCBuYW1lLCBjdXJyZW50LT5uYW1lLCAwLCApCi0gI2Rl ZmluZSBzKHdpZHRoLCBuYW1lKSBcCi0gICAgICAgICB4cyh3aWR0aCwgbmFtZSwgY3VycmVudC0+ bmFtZSwgMCwgKQotICNkZWZpbmUgZnMod2lkdGgsIG5hbWUsIHN1YnMsIC4uLikgXAotQEAgLTI2 NCw2ICsyMDYsMTIgQEAgc3RhdGljIGludCBjYnNfdnA5X3dyaXRlX2xlKENvZGVkQml0c3RyZWFt Q29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCi0gI2RlZmluZSBSRUFEV1JJVEUgcmVh ZAotICNkZWZpbmUgUldDb250ZXh0IEdldEJpdENvbnRleHQKLSAKLSsjZGVmaW5lIGYod2lkdGgs IG5hbWUpIGRvIHsgXAotKyAgICAgICAgdWludDMyX3QgdmFsdWU7IFwKLSsgICAgICAgIENIRUNL KGZmX2Nic19yZWFkX3NpbXBsZV91bnNpZ25lZChjdHgsIHJ3LCB3aWR0aCwgI25hbWUsIFwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWUpKTsgXAotKyAg ICAgICAgY3VycmVudC0+bmFtZSA9IHZhbHVlOyBcCi0rICAgIH0gd2hpbGUgKDApCi0gI2RlZmlu ZSB4Zih3aWR0aCwgbmFtZSwgdmFyLCBzdWJzLCAuLi4pIGRvIHsgXAotICAgICAgICAgdWludDMy X3QgdmFsdWU7IFwKLSAgICAgICAgIENIRUNLKGZmX2Nic19yZWFkX3Vuc2lnbmVkKGN0eCwgcncs IHdpZHRoLCAjbmFtZSwgXAotQEAgLTMyOSw2ICsyNzcsNyBAQCBzdGF0aWMgaW50IGNic192cDlf d3JpdGVfbGUoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywK LSAjdW5kZWYgUkVBRAotICN1bmRlZiBSRUFEV1JJVEUKLSAjdW5kZWYgUldDb250ZXh0Ci0rI3Vu ZGVmIGYKLSAjdW5kZWYgeGYKLSAjdW5kZWYgeHMKLSAjdW5kZWYgaW5jcmVtZW50Ci1AQCAtMzQ0 LDYgKzI5MywxMCBAQCBzdGF0aWMgaW50IGNic192cDlfd3JpdGVfbGUoQ29kZWRCaXRzdHJlYW1D b250ZXh0ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKLSAjZGVmaW5lIFJFQURXUklURSB3cml0 ZQotICNkZWZpbmUgUldDb250ZXh0IFB1dEJpdENvbnRleHQKLSAKLSsjZGVmaW5lIGYod2lkdGgs IG5hbWUpIGRvIHsgXAotKyAgICAgICAgQ0hFQ0soZmZfY2JzX3dyaXRlX3NpbXBsZV91bnNpZ25l ZChjdHgsIHJ3LCB3aWR0aCwgI25hbWUsIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3VycmVudC0+bmFtZSkpOyBcCi0rICAgIH0gd2hpbGUgKDApCi0gI2Rl ZmluZSB4Zih3aWR0aCwgbmFtZSwgdmFyLCBzdWJzLCAuLi4pIGRvIHsgXAotICAgICAgICAgQ0hF Q0soZmZfY2JzX3dyaXRlX3Vuc2lnbmVkKGN0eCwgcncsIHdpZHRoLCAjbmFtZSwgXAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVQlNDUklQVFMoc3VicywgX19WQV9BUkdT X18pLCBcCi1AQCAtMzk2LDYgKzM0OSw3IEBAIHN0YXRpYyBpbnQgY2JzX3ZwOV93cml0ZV9sZShD b2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAotICN1bmRlZiBX UklURQotICN1bmRlZiBSRUFEV1JJVEUKLSAjdW5kZWYgUldDb250ZXh0Ci0rI3VuZGVmIGYKLSAj dW5kZWYgeGYKLSAjdW5kZWYgeHMKLSAjdW5kZWYgaW5jcmVtZW50Ci1kaWZmIC0tZ2l0IGEvbGli YXZjb2RlYy9leHRyYWN0X2V4dHJhZGF0YV9ic2YuYyBiL2xpYmF2Y29kZWMvZXh0cmFjdF9leHRy YWRhdGFfYnNmLmMKLWluZGV4IDMyOWIxYTYuLjdlZWRiMTYgMTAwNjQ0Ci0tLS0gYS9saWJhdmNv ZGVjL2V4dHJhY3RfZXh0cmFkYXRhX2JzZi5jCi0rKysgYi9saWJhdmNvZGVjL2V4dHJhY3RfZXh0 cmFkYXRhX2JzZi5jCi1AQCAtNDgsMTAgKzQ4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgRXh0cmFjdEV4 dHJhZGF0YUNvbnRleHQgewotICAgICBpbnQgcmVtb3ZlOwotIH0gRXh0cmFjdEV4dHJhZGF0YUNv bnRleHQ7Ci0gCi0tc3RhdGljIGludCB2YWxfaW5fYXJyYXkoY29uc3QgaW50ICphcnIsIGludCBs ZW4sIGludCB2YWwpCi0rc3RhdGljIGludCB2YWxfaW5fYXJyYXkoY29uc3QgaW50ICphcnIsIHNp emVfdCBsZW4sIGludCB2YWwpCi0gewotLSAgICBpbnQgaTsKLS0gICAgZm9yIChpID0gMDsgaSA8 IGxlbjsgaSsrKQotKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAg ICAgaWYgKGFycltpXSA9PSB2YWwpCi0gICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgIHJldHVy biAwOwotQEAgLTE0NSw3ICsxNDQsNyBAQCBzdGF0aWMgaW50IGV4dHJhY3RfZXh0cmFkYXRhX2gy NjQ1KEFWQlNGQ29udGV4dCAqY3R4LCBBVlBhY2tldCAqcGt0LAotIAotICAgICBpbnQgZXh0cmFk YXRhX3NpemUgPSAwLCBmaWx0ZXJlZF9zaXplID0gMDsKLSAgICAgY29uc3QgaW50ICpleHRyYWRh dGFfbmFsX3R5cGVzOwotLSAgICBpbnQgbmJfZXh0cmFkYXRhX25hbF90eXBlczsKLSsgICAgc2l6 ZV90IG5iX2V4dHJhZGF0YV9uYWxfdHlwZXM7Ci0gICAgIGludCBpLCBoYXNfc3BzID0gMCwgaGFz X3ZwcyA9IDAsIHJldCA9IDA7Ci0gCi0gICAgIGlmIChjdHgtPnBhcl9pbi0+Y29kZWNfaWQgPT0g QVZfQ09ERUNfSURfSEVWQykgewotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdHJhY2VfaGVhZGVy c19ic2YuYyBiL2xpYmF2Y29kZWMvdHJhY2VfaGVhZGVyc19ic2YuYwotaW5kZXggMDI4YjBhMS4u ODc4MWY1ZiAxMDA2NDQKLS0tLSBhL2xpYmF2Y29kZWMvdHJhY2VfaGVhZGVyc19ic2YuYwotKysr IGIvbGliYXZjb2RlYy90cmFjZV9oZWFkZXJzX2JzZi5jCi1AQCAtNDQsNiArNDQsOCBAQCBzdGF0 aWMgaW50IHRyYWNlX2hlYWRlcnNfaW5pdChBVkJTRkNvbnRleHQgKmJzZikKLSAKLSAgICAgY3R4 LT5jYmMtPnRyYWNlX2VuYWJsZSA9IDE7Ci0gICAgIGN0eC0+Y2JjLT50cmFjZV9sZXZlbCAgPSBB Vl9MT0dfSU5GTzsKLSsgICAgY3R4LT5jYmMtPnRyYWNlX2NvbnRleHQgPSBjdHgtPmNiYzsKLSsg ICAgY3R4LT5jYmMtPnRyYWNlX3JlYWRfY2FsbGJhY2sgPSBmZl9jYnNfdHJhY2VfcmVhZF9sb2c7 Ci0gCi0gICAgIGlmIChic2YtPnBhcl9pbi0+ZXh0cmFkYXRhKSB7Ci0gICAgICAgICBDb2RlZEJp dHN0cmVhbUZyYWdtZW50ICpmcmFnID0gJmN0eC0+ZnJhZ21lbnQ7Ci1kaWZmIC0tZ2l0IGEvbGli YXZjb2RlYy92YWFwaV9lbmNvZGUuYyBiL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlLmMKLWluZGV4 IGJmY2EzMTUuLmY1YmY1YWIgMTAwNjQ0Ci0tLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5j Ci0rKysgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5jCi1AQCAtMjc2LDIxICsyNzYsMzQgQEAg c3RhdGljIGludCB2YWFwaV9lbmNvZGVfaXNzdWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotICAg ICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIklzc3VpbmcgZW5jb2RlIGZvciBwaWMgJSJQ UklkNjQiLyUiUFJJZDY0IiAiCi0gICAgICAgICAgICAiYXMgdHlwZSAlcy5cbiIsIHBpYy0+ZGlz cGxheV9vcmRlciwgcGljLT5lbmNvZGVfb3JkZXIsCi0gICAgICAgICAgICBwaWN0dXJlX3R5cGVf bmFtZVtwaWMtPnR5cGVdKTsKLS0gICAgaWYgKHBpYy0+bmJfcmVmcyA9PSAwKSB7Ci0rICAgIGlm IChwaWMtPm5iX3JlZnNbMF0gPT0gMCAmJiBwaWMtPm5iX3JlZnNbMV0gPT0gMCkgewotICAgICAg ICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJObyByZWZlcmVuY2UgcGljdHVyZXMuXG4i KTsKLSAgICAgfSBlbHNlIHsKLS0gICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAi UmVmZXJzIHRvOiIpOwotLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmczsgaSsr KSB7Ci0rICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIkwwIHJlZmVycyB0byIp OwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1swXTsgaSsrKSB7Ci0gICAg ICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICIgJSJQUklkNjQiLyUiUFJJZDY0 LAotLSAgICAgICAgICAgICAgICAgICBwaWMtPnJlZnNbaV0tPmRpc3BsYXlfb3JkZXIsIHBpYy0+ cmVmc1tpXS0+ZW5jb2RlX29yZGVyKTsKLSsgICAgICAgICAgICAgICAgICAgcGljLT5yZWZzWzBd W2ldLT5kaXNwbGF5X29yZGVyLCBwaWMtPnJlZnNbMF1baV0tPmVuY29kZV9vcmRlcik7Ci0gICAg ICAgICB9Ci0gICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIi5cbiIpOwotKwot KyAgICAgICAgaWYgKHBpYy0+bmJfcmVmc1sxXSkgewotKyAgICAgICAgICAgIGF2X2xvZyhhdmN0 eCwgQVZfTE9HX0RFQlVHLCAiTDEgcmVmZXJzIHRvIik7Ci0rICAgICAgICAgICAgZm9yIChpID0g MDsgaSA8IHBpYy0+bmJfcmVmc1sxXTsgaSsrKSB7Ci0rICAgICAgICAgICAgICAgIGF2X2xvZyhh dmN0eCwgQVZfTE9HX0RFQlVHLCAiICUiUFJJZDY0Ii8lIlBSSWQ2NCwKLSsgICAgICAgICAgICAg ICAgICAgICAgIHBpYy0+cmVmc1sxXVtpXS0+ZGlzcGxheV9vcmRlciwgcGljLT5yZWZzWzFdW2ld LT5lbmNvZGVfb3JkZXIpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBhdl9sb2coYXZj dHgsIEFWX0xPR19ERUJVRywgIi5cbiIpOwotKyAgICAgICAgfQotICAgICB9Ci0gCi0gICAgIGF2 X2Fzc2VydDAoIXBpYy0+ZW5jb2RlX2lzc3VlZCk7Ci0tICAgIGZvciAoaSA9IDA7IGkgPCBwaWMt Pm5iX3JlZnM7IGkrKykgewotLSAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbaV0pOwotLSAg ICAgICAgYXZfYXNzZXJ0MChwaWMtPnJlZnNbaV0tPmVuY29kZV9pc3N1ZWQpOwotKyAgICBmb3Ig KGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzWzBdOyBpKyspIHsKLSsgICAgICAgIGF2X2Fzc2VydDAo cGljLT5yZWZzWzBdW2ldKTsKLSsgICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzBdW2ldLT5l bmNvZGVfaXNzdWVkKTsKLSsgICAgfQotKyAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZz WzFdOyBpKyspIHsKLSsgICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzFdW2ldKTsKLSsgICAg ICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzFdW2ldLT5lbmNvZGVfaXNzdWVkKTsKLSAgICAgfQot IAotICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIklucHV0IHN1cmZhY2UgaXMgJSN4 LlxuIiwgcGljLT5pbnB1dF9zdXJmYWNlKTsKLUBAIC02NTAsNzkgKzY2MywyMDAgQEAgZmFpbF9h dF9lbmQ6Ci0gICAgIHJldHVybiBlcnI7Ci0gfQotIAotLXN0YXRpYyBpbnQgdmFhcGlfZW5jb2Rl X291dHB1dChBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcGljLCBBVlBhY2tldCAqcGt0KQotK3N0YXRpYyBp bnQgdmFhcGlfZW5jb2RlX3NldF9vdXRwdXRfcHJvcGVydHkoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFBUElFbmNv ZGVQaWN0dXJlICpwaWMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBBVlBhY2tldCAqcGt0KQotK3sKLSsgICAgVkFBUElFbmNvZGVDb250ZXh0ICpjdHggPSBh dmN0eC0+cHJpdl9kYXRhOwotKwotKyAgICBpZiAocGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9J RFIpCi0rICAgICAgICBwa3QtPmZsYWdzIHw9IEFWX1BLVF9GTEFHX0tFWTsKLSsKLSsgICAgcGt0 LT5wdHMgPSBwaWMtPnB0czsKLSsgICAgcGt0LT5kdXJhdGlvbiA9IHBpYy0+ZHVyYXRpb247Ci0r Ci0rICAgIC8vIGZvciBuby1kZWxheSBlbmNvZGVycyB0aGlzIGlzIGhhbmRsZWQgaW4gZ2VuZXJp YyBjb2RlYwotKyAgICBpZiAoYXZjdHgtPmNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19D QVBfREVMQVkgJiYKLSsgICAgICAgIGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfQ09QWV9P UEFRVUUpIHsKLSsgICAgICAgIHBrdC0+b3BhcXVlICAgICA9IHBpYy0+b3BhcXVlOwotKyAgICAg ICAgcGt0LT5vcGFxdWVfcmVmID0gcGljLT5vcGFxdWVfcmVmOwotKyAgICAgICAgcGljLT5vcGFx dWVfcmVmID0gTlVMTDsKLSsgICAgfQotKwotKyAgICBpZiAoY3R4LT5jb2RlYy0+ZmxhZ3MgJiBG TEFHX1RJTUVTVEFNUF9OT19ERUxBWSkgewotKyAgICAgICAgcGt0LT5kdHMgPSBwa3QtPnB0czsK LSsgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICAgIGlmIChjdHgtPm91dHB1dF9kZWxh eSA9PSAwKSB7Ci0rICAgICAgICBwa3QtPmR0cyA9IHBrdC0+cHRzOwotKyAgICB9IGVsc2UgaWYg KHBpYy0+ZW5jb2RlX29yZGVyIDwgY3R4LT5kZWNvZGVfZGVsYXkpIHsKLSsgICAgICAgIGlmIChj dHgtPnRzX3JpbmdbcGljLT5lbmNvZGVfb3JkZXJdIDwgSU5UNjRfTUlOICsgY3R4LT5kdHNfcHRz X2RpZmYpCi0rICAgICAgICAgICAgcGt0LT5kdHMgPSBJTlQ2NF9NSU47Ci0rICAgICAgICBlbHNl Ci0rICAgICAgICAgICAgcGt0LT5kdHMgPSBjdHgtPnRzX3JpbmdbcGljLT5lbmNvZGVfb3JkZXJd IC0gY3R4LT5kdHNfcHRzX2RpZmY7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBwa3QtPmR0cyA9 IGN0eC0+dHNfcmluZ1socGljLT5lbmNvZGVfb3JkZXIgLSBjdHgtPmRlY29kZV9kZWxheSkgJQot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDMgKiBjdHgtPm91dHB1dF9kZWxheSAr IGN0eC0+YXN5bmNfZGVwdGgpXTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0r c3RhdGljIGludCB2YWFwaV9lbmNvZGVfZ2V0X2NvZGVkX2J1ZmZlcl9zaXplKEFWQ29kZWNDb250 ZXh0ICphdmN0eCwgVkFCdWZmZXJJRCBidWZfaWQpCi0gewotICAgICBWQUFQSUVuY29kZUNvbnRl eHQgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0gICAgIFZBQ29kZWRCdWZmZXJTZWdtZW50ICpi dWZfbGlzdCwgKmJ1ZjsKLSsgICAgaW50IHNpemUgPSAwOwotICAgICBWQVN0YXR1cyB2YXM7Ci0t ICAgIGludCB0b3RhbF9zaXplID0gMDsKLS0gICAgdWludDhfdCAqcHRyOwotICAgICBpbnQgZXJy OwotIAotLSAgICBlcnIgPSB2YWFwaV9lbmNvZGVfd2FpdChhdmN0eCwgcGljKTsKLS0gICAgaWYg KGVyciA8IDApCi0tICAgICAgICByZXR1cm4gZXJyOwotLQotLSAgICBidWZfbGlzdCA9IE5VTEw7 Ci0tICAgIHZhcyA9IHZhTWFwQnVmZmVyKGN0eC0+aHdjdHgtPmRpc3BsYXksIHBpYy0+b3V0cHV0 X2J1ZmZlciwKLSsgICAgdmFzID0gdmFNYXBCdWZmZXIoY3R4LT5od2N0eC0+ZGlzcGxheSwgYnVm X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAodm9pZCoqKSZidWZfbGlzdCk7Ci0gICAgIGlm ICh2YXMgIT0gVkFfU1RBVFVTX1NVQ0NFU1MpIHsKLSAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZf TE9HX0VSUk9SLCAiRmFpbGVkIHRvIG1hcCBvdXRwdXQgYnVmZmVyczogIgotICAgICAgICAgICAg ICAgICIlZCAoJXMpLlxuIiwgdmFzLCB2YUVycm9yU3RyKHZhcykpOwotICAgICAgICAgZXJyID0g QVZFUlJPUihFSU8pOwotLSAgICAgICAgZ290byBmYWlsOwotKyAgICAgICAgcmV0dXJuIGVycjsK LSAgICAgfQotIAotICAgICBmb3IgKGJ1ZiA9IGJ1Zl9saXN0OyBidWY7IGJ1ZiA9IGJ1Zi0+bmV4 dCkKLS0gICAgICAgIHRvdGFsX3NpemUgKz0gYnVmLT5zaXplOwotKyAgICAgICAgc2l6ZSArPSBi dWYtPnNpemU7Ci0gCi0tICAgIGVyciA9IGZmX2dldF9lbmNvZGVfYnVmZmVyKGF2Y3R4LCBwa3Qs IHRvdGFsX3NpemUsIDApOwotLSAgICBwdHIgPSBwa3QtPmRhdGE7Ci0rICAgIHZhcyA9IHZhVW5t YXBCdWZmZXIoY3R4LT5od2N0eC0+ZGlzcGxheSwgYnVmX2lkKTsKLSsgICAgaWYgKHZhcyAhPSBW QV9TVEFUVVNfU1VDQ0VTUykgewotKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1Is ICJGYWlsZWQgdG8gdW5tYXAgb3V0cHV0IGJ1ZmZlcnM6ICIKLSsgICAgICAgICAgICAgICAiJWQg KCVzKS5cbiIsIHZhcywgdmFFcnJvclN0cih2YXMpKTsKLSsgICAgICAgIGVyciA9IEFWRVJST1Io RUlPKTsKLSsgICAgICAgIHJldHVybiBlcnI7Ci0rICAgIH0KLSAKLS0gICAgaWYgKGVyciA8IDAp Ci0tICAgICAgICBnb3RvIGZhaWxfbWFwcGVkOwotKyAgICByZXR1cm4gc2l6ZTsKLSt9Ci0rCi0r c3RhdGljIGludCB2YWFwaV9lbmNvZGVfZ2V0X2NvZGVkX2J1ZmZlcl9kYXRhKEFWQ29kZWNDb250 ZXh0ICphdmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVkFCdWZmZXJJRCBidWZfaWQsIHVpbnQ4X3QgKipkc3QpCi0rewotKyAgICBWQUFQSUVuY29k ZUNvbnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0rICAgIFZBQ29kZWRCdWZmZXJTZWdt ZW50ICpidWZfbGlzdCwgKmJ1ZjsKLSsgICAgVkFTdGF0dXMgdmFzOwotKyAgICBpbnQgZXJyOwot KwotKyAgICB2YXMgPSB2YU1hcEJ1ZmZlcihjdHgtPmh3Y3R4LT5kaXNwbGF5LCBidWZfaWQsCi0r ICAgICAgICAgICAgICAgICAgICAgICh2b2lkKiopJmJ1Zl9saXN0KTsKLSsgICAgaWYgKHZhcyAh PSBWQV9TVEFUVVNfU1VDQ0VTUykgewotKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJS T1IsICJGYWlsZWQgdG8gbWFwIG91dHB1dCBidWZmZXJzOiAiCi0rICAgICAgICAgICAgICAgIiVk ICglcykuXG4iLCB2YXMsIHZhRXJyb3JTdHIodmFzKSk7Ci0rICAgICAgICBlcnIgPSBBVkVSUk9S KEVJTyk7Ci0rICAgICAgICByZXR1cm4gZXJyOwotKyAgICB9Ci0gCi0gICAgIGZvciAoYnVmID0g YnVmX2xpc3Q7IGJ1ZjsgYnVmID0gYnVmLT5uZXh0KSB7Ci0gICAgICAgICBhdl9sb2coYXZjdHgs IEFWX0xPR19ERUJVRywgIk91dHB1dCBidWZmZXI6ICV1IGJ5dGVzICIKLSAgICAgICAgICAgICAg ICAiKHN0YXR1cyAlMDh4KS5cbiIsIGJ1Zi0+c2l6ZSwgYnVmLT5zdGF0dXMpOwotIAotLSAgICAg ICAgbWVtY3B5KHB0ciwgYnVmLT5idWYsIGJ1Zi0+c2l6ZSk7Ci0tICAgICAgICBwdHIgKz0gYnVm LT5zaXplOwotKyAgICAgICAgbWVtY3B5KCpkc3QsIGJ1Zi0+YnVmLCBidWYtPnNpemUpOwotKyAg ICAgICAgKmRzdCArPSBidWYtPnNpemU7Ci0gICAgIH0KLSAKLS0gICAgaWYgKHBpYy0+dHlwZSA9 PSBQSUNUVVJFX1RZUEVfSURSKQotLSAgICAgICAgcGt0LT5mbGFncyB8PSBBVl9QS1RfRkxBR19L RVk7Ci0tCi0tICAgIHBrdC0+cHRzID0gcGljLT5wdHM7Ci0tICAgIHBrdC0+ZHVyYXRpb24gPSBw aWMtPmR1cmF0aW9uOwotLQotLSAgICB2YXMgPSB2YVVubWFwQnVmZmVyKGN0eC0+aHdjdHgtPmRp c3BsYXksIHBpYy0+b3V0cHV0X2J1ZmZlcik7Ci0rICAgIHZhcyA9IHZhVW5tYXBCdWZmZXIoY3R4 LT5od2N0eC0+ZGlzcGxheSwgYnVmX2lkKTsKLSAgICAgaWYgKHZhcyAhPSBWQV9TVEFUVVNfU1VD Q0VTUykgewotICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8g dW5tYXAgb3V0cHV0IGJ1ZmZlcnM6ICIKLSAgICAgICAgICAgICAgICAiJWQgKCVzKS5cbiIsIHZh cywgdmFFcnJvclN0cih2YXMpKTsKLSAgICAgICAgIGVyciA9IEFWRVJST1IoRUlPKTsKLS0gICAg ICAgIGdvdG8gZmFpbDsKLSsgICAgICAgIHJldHVybiBlcnI7Ci0gICAgIH0KLSAKLS0gICAgLy8g Zm9yIG5vLWRlbGF5IGVuY29kZXJzIHRoaXMgaXMgaGFuZGxlZCBpbiBnZW5lcmljIGNvZGVjCi0t ICAgIGlmIChhdmN0eC0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9ERUxBWSAm JgotLSAgICAgICAgYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19DT1BZX09QQVFVRSkgewot LSAgICAgICAgcGt0LT5vcGFxdWUgICAgID0gcGljLT5vcGFxdWU7Ci0tICAgICAgICBwa3QtPm9w YXF1ZV9yZWYgPSBwaWMtPm9wYXF1ZV9yZWY7Ci0tICAgICAgICBwaWMtPm9wYXF1ZV9yZWYgPSBO VUxMOwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGludCB2YWFwaV9lbmNvZGVfZ2V0 X2NvZGVkX2RhdGEoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcGljLCBBVlBhY2tldCAqcGt0 KQotK3sKLSsgICAgVkFBUElFbmNvZGVDb250ZXh0ICpjdHggPSBhdmN0eC0+cHJpdl9kYXRhOwot KyAgICBWQUJ1ZmZlcklEIG91dHB1dF9idWZmZXJfcHJldjsKLSsgICAgaW50IHRvdGFsX3NpemUg PSAwOwotKyAgICB1aW50OF90ICpwdHI7Ci0rICAgIGludCByZXQ7Ci0rCi0rICAgIGlmIChjdHgt PmNvZGVkX2J1ZmZlcl9yZWYpIHsKLSsgICAgICAgIG91dHB1dF9idWZmZXJfcHJldiA9IChWQUJ1 ZmZlcklEKSh1aW50cHRyX3QpY3R4LT5jb2RlZF9idWZmZXJfcmVmLT5kYXRhOwotKyAgICAgICAg cmV0ID0gdmFhcGlfZW5jb2RlX2dldF9jb2RlZF9idWZmZXJfc2l6ZShhdmN0eCwgb3V0cHV0X2J1 ZmZlcl9wcmV2KTsKLSsgICAgICAgIGlmIChyZXQgPCAwKQotKyAgICAgICAgICAgIGdvdG8gZW5k OwotKyAgICAgICAgdG90YWxfc2l6ZSArPSByZXQ7Ci0rICAgIH0KLSsKLSsgICAgcmV0ID0gdmFh cGlfZW5jb2RlX2dldF9jb2RlZF9idWZmZXJfc2l6ZShhdmN0eCwgcGljLT5vdXRwdXRfYnVmZmVy KTsKLSsgICAgaWYgKHJldCA8IDApCi0rICAgICAgICBnb3RvIGVuZDsKLSsgICAgdG90YWxfc2l6 ZSArPSByZXQ7Ci0rCi0rICAgIHJldCA9IGZmX2dldF9lbmNvZGVfYnVmZmVyKGF2Y3R4LCBwa3Qs IHRvdGFsX3NpemUsIDApOwotKyAgICBpZiAocmV0IDwgMCkKLSsgICAgICAgIGdvdG8gZW5kOwot KyAgICBwdHIgPSBwa3QtPmRhdGE7Ci0rCi0rICAgIGlmIChjdHgtPmNvZGVkX2J1ZmZlcl9yZWYp IHsKLSsgICAgICAgIHJldCA9IHZhYXBpX2VuY29kZV9nZXRfY29kZWRfYnVmZmVyX2RhdGEoYXZj dHgsIG91dHB1dF9idWZmZXJfcHJldiwgJnB0cik7Ci0rICAgICAgICBpZiAocmV0IDwgMCkKLSsg ICAgICAgICAgICBnb3RvIGVuZDsKLSAgICAgfQotIAotKyAgICByZXQgPSB2YWFwaV9lbmNvZGVf Z2V0X2NvZGVkX2J1ZmZlcl9kYXRhKGF2Y3R4LCBwaWMtPm91dHB1dF9idWZmZXIsICZwdHIpOwot KyAgICBpZiAocmV0IDwgMCkKLSsgICAgICAgIGdvdG8gZW5kOwotKwotK2VuZDoKLSsgICAgaWYg KGN0eC0+Y29kZWRfYnVmZmVyX3JlZikgewotKyAgICAgICAgYXZfYnVmZmVyX3VucmVmKCZjdHgt PmNvZGVkX2J1ZmZlcl9yZWYpOwotKyAgICB9Ci0gICAgIGF2X2J1ZmZlcl91bnJlZigmcGljLT5v dXRwdXRfYnVmZmVyX3JlZik7Ci0gICAgIHBpYy0+b3V0cHV0X2J1ZmZlciA9IFZBX0lOVkFMSURf SUQ7Ci0gCi0rICAgIHJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyBpbnQgdmFhcGlfZW5jb2Rl X291dHB1dChBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcGljLCBBVlBhY2tldCAqcGt0KQotK3sKLSsgICAg VkFBUElFbmNvZGVDb250ZXh0ICpjdHggPSBhdmN0eC0+cHJpdl9kYXRhOwotKyAgICBBVlBhY2tl dCAqcGt0X3B0ciA9IHBrdDsKLSsgICAgaW50IGVycjsKLSsKLSsgICAgZXJyID0gdmFhcGlfZW5j b2RlX3dhaXQoYXZjdHgsIHBpYyk7Ci0rICAgIGlmIChlcnIgPCAwKQotKyAgICAgICAgcmV0dXJu IGVycjsKLSsKLSsgICAgaWYgKHBpYy0+bm9uX2luZGVwZW5kZW50X2ZyYW1lKSB7Ci0rICAgICAg ICBhdl9hc3NlcnQwKCFjdHgtPmNvZGVkX2J1ZmZlcl9yZWYpOwotKyAgICAgICAgY3R4LT5jb2Rl ZF9idWZmZXJfcmVmID0gYXZfYnVmZmVyX3JlZihwaWMtPm91dHB1dF9idWZmZXJfcmVmKTsKLSsK LSsgICAgICAgIGlmIChwaWMtPnRhaWxfc2l6ZSkgewotKyAgICAgICAgICAgIGlmIChjdHgtPnRh aWxfcGt0LT5zaXplKSB7Ci0rICAgICAgICAgICAgICAgIGVyciA9IEFWRVJST1IoQVZFUlJPUl9C VUcpOwotKyAgICAgICAgICAgICAgICBnb3RvIGVuZDsKLSsgICAgICAgICAgICB9Ci0rCi0rICAg ICAgICAgICAgZXJyID0gZmZfZ2V0X2VuY29kZV9idWZmZXIoYXZjdHgsIGN0eC0+dGFpbF9wa3Qs IHBpYy0+dGFpbF9zaXplLCAwKTsKLSsgICAgICAgICAgICBpZiAoZXJyIDwgMCkKLSsgICAgICAg ICAgICAgICAgZ290byBlbmQ7Ci0rCi0rICAgICAgICAgICAgbWVtY3B5KGN0eC0+dGFpbF9wa3Qt PmRhdGEsIHBpYy0+dGFpbF9kYXRhLCBwaWMtPnRhaWxfc2l6ZSk7Ci0rICAgICAgICAgICAgcGt0 X3B0ciA9IGN0eC0+dGFpbF9wa3Q7Ci0rICAgICAgICB9Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAg ICBlcnIgPSB2YWFwaV9lbmNvZGVfZ2V0X2NvZGVkX2RhdGEoYXZjdHgsIHBpYywgcGt0KTsKLSsg ICAgICAgIGlmIChlcnIgPCAwKQotKyAgICAgICAgICAgIGdvdG8gZW5kOwotKyAgICB9Ci0rCi0g ICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAiT3V0cHV0IHJlYWQgZm9yIHBpYyAlIlBS SWQ2NCIvJSJQUklkNjQiLlxuIiwKLSAgICAgICAgICAgIHBpYy0+ZGlzcGxheV9vcmRlciwgcGlj LT5lbmNvZGVfb3JkZXIpOwotLSAgICByZXR1cm4gMDsKLSAKLS1mYWlsX21hcHBlZDoKLS0gICAg dmFVbm1hcEJ1ZmZlcihjdHgtPmh3Y3R4LT5kaXNwbGF5LCBwaWMtPm91dHB1dF9idWZmZXIpOwot LWZhaWw6Ci0rICAgIHZhYXBpX2VuY29kZV9zZXRfb3V0cHV0X3Byb3BlcnR5KGF2Y3R4LCBwaWMs IHBrdF9wdHIpOwotKwotK2VuZDoKLSAgICAgYXZfYnVmZmVyX3VucmVmKCZwaWMtPm91dHB1dF9i dWZmZXJfcmVmKTsKLSAgICAgcGljLT5vdXRwdXRfYnVmZmVyID0gVkFfSU5WQUxJRF9JRDsKLSAg ICAgcmV0dXJuIGVycjsKLUBAIC04MTEsOCArOTQ1LDEyIEBAIHN0YXRpYyB2b2lkIHZhYXBpX2Vu Y29kZV9hZGRfcmVmKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKLSAKLSAgICAgaWYgKGlzX3JlZikg ewotICAgICAgICAgYXZfYXNzZXJ0MChwaWMgIT0gdGFyZ2V0KTsKLS0gICAgICAgIGF2X2Fzc2Vy dDAocGljLT5uYl9yZWZzIDwgTUFYX1BJQ1RVUkVfUkVGRVJFTkNFUyk7Ci0tICAgICAgICBwaWMt PnJlZnNbcGljLT5uYl9yZWZzKytdID0gdGFyZ2V0OwotKyAgICAgICAgYXZfYXNzZXJ0MChwaWMt Pm5iX3JlZnNbMF0gPCBNQVhfUElDVFVSRV9SRUZFUkVOQ0VTICYmCi0rICAgICAgICAgICAgICAg ICAgIHBpYy0+bmJfcmVmc1sxXSA8IE1BWF9QSUNUVVJFX1JFRkVSRU5DRVMpOwotKyAgICAgICAg aWYgKHRhcmdldC0+ZGlzcGxheV9vcmRlciA8IHBpYy0+ZGlzcGxheV9vcmRlcikKLSsgICAgICAg ICAgICBwaWMtPnJlZnNbMF1bcGljLT5uYl9yZWZzWzBdKytdID0gdGFyZ2V0OwotKyAgICAgICAg ZWxzZQotKyAgICAgICAgICAgIHBpYy0+cmVmc1sxXVtwaWMtPm5iX3JlZnNbMV0rK10gPSB0YXJn ZXQ7Ci0gICAgICAgICArK3JlZnM7Ci0gICAgIH0KLSAKLUBAIC04NDEsMTAgKzk3OSwxNiBAQCBz dGF0aWMgdm9pZCB2YWFwaV9lbmNvZGVfcmVtb3ZlX3JlZnMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LAotICAgICBpZiAocGljLT5yZWZfcmVtb3ZlZFtsZXZlbF0pCi0gICAgICAgICByZXR1cm47Ci0g Ci0tICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnM7IGkrKykgewotLSAgICAgICAgYXZf YXNzZXJ0MChwaWMtPnJlZnNbaV0pOwotLSAgICAgICAgLS1waWMtPnJlZnNbaV0tPnJlZl9jb3Vu dFtsZXZlbF07Ci0tICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1tpXS0+cmVmX2NvdW50W2xl dmVsXSA+PSAwKTsKLSsgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1swXTsgaSsrKSB7 Ci0rICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1swXVtpXSk7Ci0rICAgICAgICAtLXBpYy0+ cmVmc1swXVtpXS0+cmVmX2NvdW50W2xldmVsXTsKLSsgICAgICAgIGF2X2Fzc2VydDAocGljLT5y ZWZzWzBdW2ldLT5yZWZfY291bnRbbGV2ZWxdID49IDApOwotKyAgICB9Ci0rCi0rICAgIGZvciAo aSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMV07IGkrKykgewotKyAgICAgICAgYXZfYXNzZXJ0MChw aWMtPnJlZnNbMV1baV0pOwotKyAgICAgICAgLS1waWMtPnJlZnNbMV1baV0tPnJlZl9jb3VudFts ZXZlbF07Ci0rICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1sxXVtpXS0+cmVmX2NvdW50W2xl dmVsXSA+PSAwKTsKLSAgICAgfQotIAotICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9kcGJf cGljczsgaSsrKSB7Ci1AQCAtODg5LDcgKzEwMzMsNyBAQCBzdGF0aWMgdm9pZCB2YWFwaV9lbmNv ZGVfc2V0X2JfcGljdHVyZXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotICAgICAgICAgICAgIHZh YXBpX2VuY29kZV9hZGRfcmVmKGF2Y3R4LCBwaWMsIGVuZCwgICAxLCAxLCAwKTsKLSAgICAgICAg ICAgICB2YWFwaV9lbmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBwcmV2LCAgMCwgMCwgMSk7Ci0g Ci0tICAgICAgICAgICAgZm9yIChyZWYgPSBlbmQtPnJlZnNbMV07IHJlZjsgcmVmID0gcmVmLT5y ZWZzWzFdKQotKyAgICAgICAgICAgIGZvciAocmVmID0gZW5kLT5yZWZzWzFdWzBdOyByZWY7IHJl ZiA9IHJlZi0+cmVmc1sxXVswXSkKLSAgICAgICAgICAgICAgICAgdmFhcGlfZW5jb2RlX2FkZF9y ZWYoYXZjdHgsIHBpYywgcmVmLCAwLCAxLCAwKTsKLSAgICAgICAgIH0KLSAgICAgICAgICpsYXN0 ID0gcHJldjsKLUBAIC05MTIsNyArMTA1Niw3IEBAIHN0YXRpYyB2b2lkIHZhYXBpX2VuY29kZV9z ZXRfYl9waWN0dXJlcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0gICAgICAgICB2YWFwaV9lbmNv ZGVfYWRkX3JlZihhdmN0eCwgcGljLCBlbmQsICAgMSwgMSwgMCk7Ci0gICAgICAgICB2YWFwaV9l bmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBwcmV2LCAgMCwgMCwgMSk7Ci0gCi0tICAgICAgICBm b3IgKHJlZiA9IGVuZC0+cmVmc1sxXTsgcmVmOyByZWYgPSByZWYtPnJlZnNbMV0pCi0rICAgICAg ICBmb3IgKHJlZiA9IGVuZC0+cmVmc1sxXVswXTsgcmVmOyByZWYgPSByZWYtPnJlZnNbMV1bMF0p Ci0gICAgICAgICAgICAgdmFhcGlfZW5jb2RlX2FkZF9yZWYoYXZjdHgsIHBpYywgcmVmLCAwLCAx LCAwKTsKLSAKLSAgICAgICAgIGlmIChpID4gMSkKLUBAIC05MjYsMTEgKzEwNzAsNDQgQEAgc3Rh dGljIHZvaWQgdmFhcGlfZW5jb2RlX3NldF9iX3BpY3R1cmVzKEFWQ29kZWNDb250ZXh0ICphdmN0 eCwKLSAgICAgfQotIH0KLSAKLStzdGF0aWMgdm9pZCB2YWFwaV9lbmNvZGVfYWRkX25leHRfcHJl dihBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVkFBUElFbmNvZGVQaWN0dXJlICpwaWMpCi0rewotKyAgICBWQUFQSUVuY29kZUNv bnRleHQgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0rICAgIGludCBpOwotKwotKyAgICBpZiAo IXBpYykKLSsgICAgICAgIHJldHVybjsKLSsKLSsgICAgaWYgKHBpYy0+dHlwZSA9PSBQSUNUVVJF X1RZUEVfSURSKSB7Ci0rICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY3R4LT5uYl9uZXh0X3ByZXY7 IGkrKykgewotKyAgICAgICAgICAgIC0tY3R4LT5uZXh0X3ByZXZbaV0tPnJlZl9jb3VudFswXTsK LSsgICAgICAgICAgICBjdHgtPm5leHRfcHJldltpXSA9IE5VTEw7Ci0rICAgICAgICB9Ci0rICAg ICAgICBjdHgtPm5leHRfcHJldlswXSA9IHBpYzsKLSsgICAgICAgICsrcGljLT5yZWZfY291bnRb MF07Ci0rICAgICAgICBjdHgtPm5iX25leHRfcHJldiA9IDE7Ci0rCi0rICAgICAgICByZXR1cm47 Ci0rICAgIH0KLSsKLSsgICAgaWYgKGN0eC0+bmJfbmV4dF9wcmV2IDwgTUFYX1BJQ1RVUkVfUkVG RVJFTkNFUykgewotKyAgICAgICAgY3R4LT5uZXh0X3ByZXZbY3R4LT5uYl9uZXh0X3ByZXYrK10g PSBwaWM7Ci0rICAgICAgICArK3BpYy0+cmVmX2NvdW50WzBdOwotKyAgICB9IGVsc2UgewotKyAg ICAgICAgLS1jdHgtPm5leHRfcHJldlswXS0+cmVmX2NvdW50WzBdOwotKyAgICAgICAgZm9yIChp ID0gMDsgaSA8IE1BWF9QSUNUVVJFX1JFRkVSRU5DRVMgLSAxOyBpKyspCi0rICAgICAgICAgICAg Y3R4LT5uZXh0X3ByZXZbaV0gPSBjdHgtPm5leHRfcHJldltpICsgMV07Ci0rICAgICAgICBjdHgt Pm5leHRfcHJldltpXSA9IHBpYzsKLSsgICAgICAgICsrcGljLT5yZWZfY291bnRbMF07Ci0rICAg IH0KLSt9Ci0rCi0gc3RhdGljIGludCB2YWFwaV9lbmNvZGVfcGlja19uZXh0KEFWQ29kZWNDb250 ZXh0ICphdmN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFBUElFbmNv ZGVQaWN0dXJlICoqcGljX291dCkKLSB7Ci0gICAgIFZBQVBJRW5jb2RlQ29udGV4dCAqY3R4ID0g YXZjdHgtPnByaXZfZGF0YTsKLS0gICAgVkFBUElFbmNvZGVQaWN0dXJlICpwaWMgPSBOVUxMLCAq bmV4dCwgKnN0YXJ0OwotKyAgICBWQUFQSUVuY29kZVBpY3R1cmUgKnBpYyA9IE5VTEwsICpwcmV2 ID0gTlVMTCwgKm5leHQsICpzdGFydDsKLSAgICAgaW50IGksIGJfY291bnRlciwgY2xvc2VkX2dv cF9lbmQ7Ci0gCi0gICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgQi1mcmFtZXMgYWxyZWFkeSBxdWV1 ZWQsIHRoZSBuZXh0IG9uZSB0byBlbmNvZGUKLUBAIC05NDEsMTEgKzExMTgsMTggQEAgc3RhdGlj IGludCB2YWFwaV9lbmNvZGVfcGlja19uZXh0KEFWQ29kZWNDb250ZXh0ICphdmN0eCwKLSAgICAg ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgIGlmIChwaWMtPnR5cGUgIT0gUElDVFVSRV9UWVBF X0IpCi0gICAgICAgICAgICAgY29udGludWU7Ci0tICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGlj LT5uYl9yZWZzOyBpKyspIHsKLS0gICAgICAgICAgICBpZiAoIXBpYy0+cmVmc1tpXS0+ZW5jb2Rl X2lzc3VlZCkKLSsgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMF07IGkrKykg ewotKyAgICAgICAgICAgIGlmICghcGljLT5yZWZzWzBdW2ldLT5lbmNvZGVfaXNzdWVkKQotKyAg ICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmIChpICE9IHBpYy0+ bmJfcmVmc1swXSkKLSsgICAgICAgICAgICBjb250aW51ZTsKLSsKLSsgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBwaWMtPm5iX3JlZnNbMV07IGkrKykgewotKyAgICAgICAgICAgIGlmICghcGljLT5y ZWZzWzFdW2ldLT5lbmNvZGVfaXNzdWVkKQotICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg ICAgIH0KLS0gICAgICAgIGlmIChpID09IHBpYy0+bmJfcmVmcykKLSsgICAgICAgIGlmIChpID09 IHBpYy0+bmJfcmVmc1sxXSkKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgfQotIAotQEAgLTEw NDQsMjEgKzEyMjgsMzAgQEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfcGlja19uZXh0KEFWQ29k ZWNDb250ZXh0ICphdmN0eCwKLSAKLSAgICAgdmFhcGlfZW5jb2RlX2FkZF9yZWYoYXZjdHgsIHBp YywgcGljLCAwLCAxLCAwKTsKLSAgICAgaWYgKHBpYy0+dHlwZSAhPSBQSUNUVVJFX1RZUEVfSURS KSB7Ci0tICAgICAgICB2YWFwaV9lbmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBzdGFydCwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYy0+dHlwZSA9PSBQSUNUVVJFX1RZUEVfUCwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJfY291bnRlciA+IDAsIDApOwotLSAgICAg ICAgdmFhcGlfZW5jb2RlX2FkZF9yZWYoYXZjdHgsIHBpYywgY3R4LT5uZXh0X3ByZXYsIDAsIDAs IDEpOwotKyAgICAgICAgLy8gVE9ETzogYXBwbHkgYm90aCBwcmV2aW91cyBhbmQgZm9yd2FyZCBt dWx0aSByZWZlcmVuY2UgZm9yIGFsbCB2YWFwaSBlbmNvZGVycy4KLSsgICAgICAgIC8vIEFuZCBM MC9MMSByZWZlcmVuY2UgZnJhbWUgbnVtYmVyIGNhbiBiZSBzZXQgZHluYW1pY2FsbHkgdGhyb3Vn aCBxdWVyeQotKyAgICAgICAgLy8gVkFDb25maWdBdHRyaWJFbmNNYXhSZWZGcmFtZXMgYXR0cmli dXRlLgotKyAgICAgICAgaWYgKGF2Y3R4LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsK LSsgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY3R4LT5uYl9uZXh0X3ByZXY7IGkrKykKLSsg ICAgICAgICAgICAgICAgdmFhcGlfZW5jb2RlX2FkZF9yZWYoYXZjdHgsIHBpYywgY3R4LT5uZXh0 X3ByZXZbaV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYy0+dHlw ZSA9PSBQSUNUVVJFX1RZUEVfUCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYl9jb3VudGVyID4gMCwgMCk7Ci0rICAgICAgICB9IGVsc2UKLSsgICAgICAgICAgICB2YWFw aV9lbmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBzdGFydCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX1AsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYl9jb3VudGVyID4gMCwgMCk7Ci0rCi0rICAgICAgICB2YWFw aV9lbmNvZGVfYWRkX3JlZihhdmN0eCwgcGljLCBjdHgtPm5leHRfcHJldltjdHgtPm5iX25leHRf cHJldiAtIDFdLCAwLCAwLCAxKTsKLSAgICAgfQotLSAgICBpZiAoY3R4LT5uZXh0X3ByZXYpCi0t ICAgICAgICAtLWN0eC0+bmV4dF9wcmV2LT5yZWZfY291bnRbMF07Ci0gCi0gICAgIGlmIChiX2Nv dW50ZXIgPiAwKSB7Ci0gICAgICAgICB2YWFwaV9lbmNvZGVfc2V0X2JfcGljdHVyZXMoYXZjdHgs IHN0YXJ0LCBwaWMsIHBpYywgMSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmY3R4LT5uZXh0X3ByZXYpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZwcmV2KTsKLSAgICAgfSBlbHNlIHsKLS0gICAgICAgIGN0eC0+bmV4dF9wcmV2ID0gcGljOwot KyAgICAgICAgcHJldiA9IHBpYzsKLSAgICAgfQotLSAgICArK2N0eC0+bmV4dF9wcmV2LT5yZWZf Y291bnRbMF07Ci0rICAgIHZhYXBpX2VuY29kZV9hZGRfbmV4dF9wcmV2KGF2Y3R4LCBwcmV2KTsK LSsKLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotQEAgLTEyMDUsMTAgKzEzOTgsMjMgQEAgZmFpbDoK LSBpbnQgZmZfdmFhcGlfZW5jb2RlX3JlY2VpdmVfcGFja2V0KEFWQ29kZWNDb250ZXh0ICphdmN0 eCwgQVZQYWNrZXQgKnBrdCkKLSB7Ci0gICAgIFZBQVBJRW5jb2RlQ29udGV4dCAqY3R4ID0gYXZj dHgtPnByaXZfZGF0YTsKLS0gICAgVkFBUElFbmNvZGVQaWN0dXJlICpwaWM7Ci0rICAgIFZBQVBJ RW5jb2RlUGljdHVyZSAqcGljID0gTlVMTDsKLSAgICAgQVZGcmFtZSAqZnJhbWUgPSBjdHgtPmZy YW1lOwotICAgICBpbnQgZXJyOwotIAotK3N0YXJ0OgotKyAgICAvKiogaWYgbm8gQiBmcmFtZSBi ZWZvcmUgcmVwZWF0IFAgZnJhbWUsIHNlbnQgcmVwZWF0IFAgZnJhbWUgb3V0LiAqLwotKyAgICBp ZiAoY3R4LT50YWlsX3BrdC0+c2l6ZSkgewotKyAgICAgICAgZm9yIChWQUFQSUVuY29kZVBpY3R1 cmUgKnRtcCA9IGN0eC0+cGljX3N0YXJ0OyB0bXA7IHRtcCA9IHRtcC0+bmV4dCkgewotKyAgICAg ICAgICAgIGlmICh0bXAtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0IgJiYgdG1wLT5wdHMgPCBjdHgt PnRhaWxfcGt0LT5wdHMpCi0rICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIGVs c2UgaWYgKCF0bXAtPm5leHQpIHsKLSsgICAgICAgICAgICAgICAgYXZfcGFja2V0X21vdmVfcmVm KHBrdCwgY3R4LT50YWlsX3BrdCk7Ci0rICAgICAgICAgICAgICAgIGdvdG8gZW5kOwotKyAgICAg ICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgfQotKwotICAgICBlcnIgPSBmZl9lbmNvZGVfZ2V0 X2ZyYW1lKGF2Y3R4LCBmcmFtZSk7Ci0gICAgIGlmIChlcnIgPCAwICYmIGVyciAhPSBBVkVSUk9S X0VPRikKLSAgICAgICAgIHJldHVybiBlcnI7Ci1AQCAtMTIyOCw4ICsxNDM0LDYgQEAgaW50IGZm X3ZhYXBpX2VuY29kZV9yZWNlaXZlX3BhY2tldChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFj a2V0ICpwa3QpCi0gICAgIH0KLSAKLSAgICAgaWYgKGN0eC0+aGFzX3N5bmNfYnVmZmVyX2Z1bmMp IHsKLS0gICAgICAgIHBpYyA9IE5VTEw7Ci0tCi0gICAgICAgICBpZiAoYXZfZmlmb19jYW5fd3Jp dGUoY3R4LT5lbmNvZGVfZmlmbykpIHsKLSAgICAgICAgICAgICBlcnIgPSB2YWFwaV9lbmNvZGVf cGlja19uZXh0KGF2Y3R4LCAmcGljKTsKLSAgICAgICAgICAgICBpZiAoIWVycikgewotQEAgLTEy NTUsNyArMTQ1OSw2IEBAIGludCBmZl92YWFwaV9lbmNvZGVfcmVjZWl2ZV9wYWNrZXQoQVZDb2Rl Y0NvbnRleHQgKmF2Y3R4LCBBVlBhY2tldCAqcGt0KQotICAgICAgICAgYXZfZmlmb19yZWFkKGN0 eC0+ZW5jb2RlX2ZpZm8sICZwaWMsIDEpOwotICAgICAgICAgY3R4LT5lbmNvZGVfb3JkZXIgPSBw aWMtPmVuY29kZV9vcmRlciArIDE7Ci0gICAgIH0gZWxzZSB7Ci0tICAgICAgICBwaWMgPSBOVUxM OwotICAgICAgICAgZXJyID0gdmFhcGlfZW5jb2RlX3BpY2tfbmV4dChhdmN0eCwgJnBpYyk7Ci0g ICAgICAgICBpZiAoZXJyIDwgMCkKLSAgICAgICAgICAgICByZXR1cm4gZXJyOwotQEAgLTEyNzYs MjcgKzE0NzksMjEgQEAgaW50IGZmX3ZhYXBpX2VuY29kZV9yZWNlaXZlX3BhY2tldChBVkNvZGVj Q29udGV4dCAqYXZjdHgsIEFWUGFja2V0ICpwa3QpCi0gICAgICAgICByZXR1cm4gZXJyOwotICAg ICB9Ci0gCi0tICAgIGlmIChjdHgtPm91dHB1dF9kZWxheSA9PSAwKSB7Ci0tICAgICAgICBwa3Qt PmR0cyA9IHBrdC0+cHRzOwotLSAgICB9IGVsc2UgaWYgKHBpYy0+ZW5jb2RlX29yZGVyIDwgY3R4 LT5kZWNvZGVfZGVsYXkpIHsKLS0gICAgICAgIGlmIChjdHgtPnRzX3JpbmdbcGljLT5lbmNvZGVf b3JkZXJdIDwgSU5UNjRfTUlOICsgY3R4LT5kdHNfcHRzX2RpZmYpCi0tICAgICAgICAgICAgcGt0 LT5kdHMgPSBJTlQ2NF9NSU47Ci0tICAgICAgICBlbHNlCi0tICAgICAgICAgICAgcGt0LT5kdHMg PSBjdHgtPnRzX3JpbmdbcGljLT5lbmNvZGVfb3JkZXJdIC0gY3R4LT5kdHNfcHRzX2RpZmY7Ci0t ICAgIH0gZWxzZSB7Ci0tICAgICAgICBwa3QtPmR0cyA9IGN0eC0+dHNfcmluZ1socGljLT5lbmNv ZGVfb3JkZXIgLSBjdHgtPmRlY29kZV9kZWxheSkgJQotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKDMgKiBjdHgtPm91dHB1dF9kZWxheSArIGN0eC0+YXN5bmNfZGVwdGgpXTsKLS0g ICAgfQotLSAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIk91dHB1dCBwYWNrZXQ6IHB0 cyAlIlBSSWQ2NCIgZHRzICUiUFJJZDY0Ii5cbiIsCi0tICAgICAgICAgICBwa3QtPnB0cywgcGt0 LT5kdHMpOwotLQotICAgICBjdHgtPm91dHB1dF9vcmRlciA9IHBpYy0+ZW5jb2RlX29yZGVyOwot ICAgICB2YWFwaV9lbmNvZGVfY2xlYXJfb2xkKGF2Y3R4KTsKLSAKLSsgICAgLyoqIGxvb3AgdG8g Z2V0IGFuIGF2YWlsYWJsZSBwa3QgaW4gZW5jb2RlciBmbHVzaGluZy4gKi8KLSsgICAgaWYgKGN0 eC0+ZW5kX29mX3N0cmVhbSAmJiAhcGt0LT5zaXplKQotKyAgICAgICAgZ290byBzdGFydDsKLSsK LStlbmQ6Ci0rICAgIGlmIChwa3QtPnNpemUpCi0rICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xP R19ERUJVRywgIk91dHB1dCBwYWNrZXQ6IHB0cyAlIlBSSWQ2NCIsIGR0cyAlIlBSSWQ2NCIsICIK LSsgICAgICAgICAgICAgICAic2l6ZSAlZCBieXRlcy5cbiIsIHBrdC0+cHRzLCBwa3QtPmR0cywg cGt0LT5zaXplKTsKLSsKLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotLQotIHN0YXRpYyBhdl9jb2xk IHZvaWQgdmFhcGlfZW5jb2RlX2FkZF9nbG9iYWxfcGFyYW0oQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LCBpbnQgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCi0gewotQEAgLTI1OTcsNiArMjc5NCwx MiBAQCBhdl9jb2xkIGludCBmZl92YWFwaV9lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZj dHgpCi0gICAgIGN0eC0+ZGV2aWNlID0gKEFWSFdEZXZpY2VDb250ZXh0KiljdHgtPmRldmljZV9y ZWYtPmRhdGE7Ci0gICAgIGN0eC0+aHdjdHggPSBjdHgtPmRldmljZS0+aHdjdHg7Ci0gCi0rICAg IGN0eC0+dGFpbF9wa3QgPSBhdl9wYWNrZXRfYWxsb2MoKTsKLSsgICAgaWYgKCFjdHgtPnRhaWxf cGt0KSB7Ci0rICAgICAgICBlcnIgPSBBVkVSUk9SKEVOT01FTSk7Ci0rICAgICAgICBnb3RvIGZh aWw7Ci0rICAgIH0KLSsKLSAgICAgZXJyID0gdmFhcGlfZW5jb2RlX3Byb2ZpbGVfZW50cnlwb2lu dChhdmN0eCk7Ci0gICAgIGlmIChlcnIgPCAwKQotICAgICAgICAgZ290byBmYWlsOwotQEAgLTI3 ODksNiArMjk5Miw3IEBAIGF2X2NvbGQgaW50IGZmX3ZhYXBpX2VuY29kZV9jbG9zZShBVkNvZGVj Q29udGV4dCAqYXZjdHgpCi0gICAgIH0KLSAKLSAgICAgYXZfZnJhbWVfZnJlZSgmY3R4LT5mcmFt ZSk7Ci0rICAgIGF2X3BhY2tldF9mcmVlKCZjdHgtPnRhaWxfcGt0KTsKLSAKLSAgICAgYXZfZnJl ZXAoJmN0eC0+Y29kZWNfc2VxdWVuY2VfcGFyYW1zKTsKLSAgICAgYXZfZnJlZXAoJmN0eC0+Y29k ZWNfcGljdHVyZV9wYXJhbXMpOwotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2Rl LmggYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZS5oCi1pbmRleCBhMWU2MzlmLi40MTZhM2NlIDEw MDY0NAotLS0tIGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGUuaAotKysrIGIvbGliYXZjb2RlYy92 YWFwaV9lbmNvZGUuaAotQEAgLTQ5LDYgKzQ5LDcgQEAgZW51bSB7Ci0gICAgIC8vIEEuNC4xOiB0 YWJsZSBBLjYgYWxsb3dzIGF0IG1vc3QgMjAgdGlsZSBjb2x1bW5zIGZvciBhbnkgbGV2ZWwuCi0g ICAgIE1BWF9USUxFX0NPTFMgICAgICAgICAgPSAyMCwKLSAgICAgTUFYX0FTWU5DX0RFUFRIICAg ICAgICA9IDY0LAotKyAgICBNQVhfUkVGRVJFTkNFX0xJU1RfTlVNID0gMiwKLSB9OwotIAotIGV4 dGVybiBjb25zdCBBVkNvZGVjSFdDb25maWdJbnRlcm5hbCAqY29uc3QgZmZfdmFhcGlfZW5jb2Rl X2h3X2NvbmZpZ3NbXTsKLUBAIC0xMTYsMTAgKzExNywxMSBAQCB0eXBlZGVmIHN0cnVjdCBWQUFQ SUVuY29kZVBpY3R1cmUgewotICAgICAvLyBidXQgbm90IGlmIGl0IGlzbid0LgotICAgICBpbnQg ICAgICAgICAgICAgICAgICAgICBuYl9kcGJfcGljczsKLSAgICAgc3RydWN0IFZBQVBJRW5jb2Rl UGljdHVyZSAqZHBiW01BWF9EUEJfU0laRV07Ci0tICAgIC8vIFRoZSByZWZlcmVuY2UgcGljdHVy ZXMgdXNlZCBpbiBkZWNvZGluZyB0aGlzIHBpY3R1cmUuICBJZiB0aGV5IGFyZQotLSAgICAvLyB1 c2VkIGJ5IGxhdGVyIHBpY3R1cmVzIHRoZXkgd2lsbCBhbHNvIGFwcGVhciBpbiB0aGUgRFBCLgot LSAgICBpbnQgICAgICAgICAgICAgICAgICAgICBuYl9yZWZzOwotLSAgICBzdHJ1Y3QgVkFBUElF bmNvZGVQaWN0dXJlICpyZWZzW01BWF9QSUNUVVJFX1JFRkVSRU5DRVNdOwotKyAgICAvLyBUaGUg cmVmZXJlbmNlIHBpY3R1cmVzIHVzZWQgaW4gZGVjb2RpbmcgdGhpcyBwaWN0dXJlLiBJZiB0aGV5 IGFyZQotKyAgICAvLyB1c2VkIGJ5IGxhdGVyIHBpY3R1cmVzIHRoZXkgd2lsbCBhbHNvIGFwcGVh ciBpbiB0aGUgRFBCLiByZWZbMF1bXSBmb3IKLSsgICAgLy8gcHJldmlvdXMgcmVmZXJlbmNlIGZy YW1lcy4gcmVmWzFdW10gZm9yIGZ1dHVyZSByZWZlcmVuY2UgZnJhbWVzLgotKyAgICBpbnQgICAg ICAgICAgICAgICAgICAgICBuYl9yZWZzW01BWF9SRUZFUkVOQ0VfTElTVF9OVU1dOwotKyAgICBz dHJ1Y3QgVkFBUElFbmNvZGVQaWN0dXJlICpyZWZzW01BWF9SRUZFUkVOQ0VfTElTVF9OVU1dW01B WF9QSUNUVVJFX1JFRkVSRU5DRVNdOwotICAgICAvLyBUaGUgcHJldmlvdXMgcmVmZXJlbmNlIHBp Y3R1cmUgaW4gZW5jb2RlIG9yZGVyLiAgTXVzdCBiZSBpbiBhdCBsZWFzdAotICAgICAvLyBvbmUg b2YgdGhlIHJlZmVyZW5jZSBsaXN0IGFuZCBEUEIgbGlzdC4KLSAgICAgc3RydWN0IFZBQVBJRW5j b2RlUGljdHVyZSAqcHJldjsKLUBAIC0xMzEsNiArMTMzLDE3IEBAIHR5cGVkZWYgc3RydWN0IFZB QVBJRW5jb2RlUGljdHVyZSB7Ci0gCi0gICAgIGludCAgICAgICAgICBuYl9zbGljZXM7Ci0gICAg IFZBQVBJRW5jb2RlU2xpY2UgKnNsaWNlczsKLSsKLSsgICAgLyoqCi0rICAgICAqIGluZGljYXRl IGlmIGN1cnJlbnQgZnJhbWUgaXMgYW4gaW5kZXBlbmRlbnQgZnJhbWUgdGhhdCB0aGUgY29kZWQg ZGF0YQotKyAgICAgKiBjYW4gYmUgcHVzaGVkIHRvIGRvd25zdHJlYW0gZGlyZWN0bHkuIENvZGVk IG9mIG5vbi1pbmRlcGVuZGVudCBmcmFtZQotKyAgICAgKiBkYXRhIHdpbGwgYmUgY29uY2F0ZW5h dGVkIGludG8gbmV4dCBpbmRlcGVuZGVudCBmcmFtZS4KLSsgICAgICovCi0rICAgIGludCBub25f aW5kZXBlbmRlbnRfZnJhbWU7Ci0rICAgIC8qKiBUYWlsIGRhdGEgb2YgY3VycmVudCBwaWMsIHVz ZWQgb25seSBmb3IgcmVwZWF0IGhlYWRlciBvZiBBVjEuICovCi0rICAgIGNoYXIgdGFpbF9kYXRh W01BWF9QQVJBTV9CVUZGRVJfU0laRV07Ci0rICAgIC8qKiBCeXRlIGxlbmd0aCBvZiB0YWlsX2Rh dGEuICovCi0rICAgIHNpemVfdCB0YWlsX3NpemU7Ci0gfSBWQUFQSUVuY29kZVBpY3R1cmU7Ci0g Ci0gdHlwZWRlZiBzdHJ1Y3QgVkFBUElFbmNvZGVQcm9maWxlIHsKLUBAIC0yOTAsOCArMzAzLDkg QEAgdHlwZWRlZiBzdHJ1Y3QgVkFBUElFbmNvZGVDb250ZXh0IHsKLSAgICAgLy8gQ3VycmVudCBl bmNvZGluZyB3aW5kb3csIGluIGRpc3BsYXkgKGlucHV0KSBvcmRlci4KLSAgICAgVkFBUElFbmNv ZGVQaWN0dXJlICpwaWNfc3RhcnQsICpwaWNfZW5kOwotICAgICAvLyBUaGUgbmV4dCBwaWN0dXJl IHRvIHVzZSBhcyB0aGUgcHJldmlvdXMgcmVmZXJlbmNlIHBpY3R1cmUgaW4KLS0gICAgLy8gZW5j b2Rpbmcgb3JkZXIuCi0tICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqbmV4dF9wcmV2OwotKyAgICAv LyBlbmNvZGluZyBvcmRlci4gT3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZSBpbiBlbmNvZGluZyBv cmRlci4KLSsgICAgVkFBUElFbmNvZGVQaWN0dXJlICpuZXh0X3ByZXZbTUFYX1BJQ1RVUkVfUkVG RVJFTkNFU107Ci0rICAgIGludCAgICAgICAgICAgICAgICAgbmJfbmV4dF9wcmV2OwotIAotICAg ICAvLyBOZXh0IGlucHV0IG9yZGVyIGluZGV4IChkaXNwbGF5IG9yZGVyKS4KLSAgICAgaW50NjRf dCAgICAgICAgIGlucHV0X29yZGVyOwotQEAgLTM2NCw2ICszNzgsMTYgQEAgdHlwZWRlZiBzdHJ1 Y3QgVkFBUElFbmNvZGVDb250ZXh0IHsKLSAgICAgQVZGaWZvICAgICAgICAgICplbmNvZGVfZmlm bzsKLSAgICAgLy8gTWF4IG51bWJlciBvZiBmcmFtZSBidWZmZXJlZCBpbiBlbmNvZGVyLgotICAg ICBpbnQgICAgICAgICAgICAgYXN5bmNfZGVwdGg7Ci0rCi0rICAgIC8qKiBIZWFkIGRhdGEgZm9y IGN1cnJlbnQgb3V0cHV0IHBrdCwgdXNlZCBvbmx5IGZvciBBVjEuICovCi0rICAgIC8vdm9pZCAg KmhlYWRlcl9kYXRhOwotKyAgICAvL3NpemVfdCBoZWFkZXJfZGF0YV9zaXplOwotKwotKyAgICAv KiogQnVmZmVyZWQgY29kZWQgZGF0YSBvZiBhIHBpYyBpZiBpdCBpcyBhbiBub24taW5kZXBlbmRl bnQgZnJhbWUuICovCi0rICAgIEFWQnVmZmVyUmVmICAgICAqY29kZWRfYnVmZmVyX3JlZjsKLSsK LSsgICAgLyoqIFRhaWwgZGF0YSBvZiBhIHBpYywgbm93IG9ubHkgdXNlZCBmb3IgYXYxIHJlcGVh dCBmcmFtZSBoZWFkZXIuICovCi0rICAgIEFWUGFja2V0ICAgICAgICAqdGFpbF9wa3Q7Ci0gfSBW QUFQSUVuY29kZUNvbnRleHQ7Ci0gCi0gZW51bSB7Ci1AQCAtMzgwLDYgKzQwNCw5IEBAIGVudW0g ewotICAgICAvLyBDb2RlYyBzdXBwb3J0cyBub24tSURSIGtleSBwaWN0dXJlcyAodGhhdCBpcywg a2V5IHBpY3R1cmVzIGRvCi0gICAgIC8vIG5vdCBuZWNlc3NhcmlseSBlbXB0eSB0aGUgRFBCKS4K LSAgICAgRkxBR19OT05fSURSX0tFWV9QSUNUVVJFUyAgPSAxIDw8IDUsCi0rICAgIC8vIENvZGVj IG91dHB1dCBwYWNrZXQgd2l0aG91dCB0aW1lc3RhbXAgZGVsYXksIHdoaWNoIG1lYW5zIHRoZQot KyAgICAvLyBvdXRwdXQgcGFja2V0IGhhcyBzYW1lIFBUUyBhbmQgRFRTLgotKyAgICBGTEFHX1RJ TUVTVEFNUF9OT19ERUxBWSAgICA9IDEgPDwgNiwKLSB9OwotIAotIHR5cGVkZWYgc3RydWN0IFZB QVBJRW5jb2RlVHlwZSB7Ci1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfYXYx LmMgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9hdjEuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDAwMDAwMDAuLjlkMTAxZmEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYmF2Y29kZWMv dmFhcGlfZW5jb2RlX2F2MS5jCi1AQCAtMCwwICsxLDk0OSBAQAotKy8qCi0rICogQ29weXJpZ2h0 IChjKSAyMDIzIEludGVsIENvcnBvcmF0aW9uCi0rICoKLSsgKiBUaGlzIGZpbGUgaXMgcGFydCBv ZiBGRm1wZWcuCi0rICoKLSsgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yCi0rICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMi4xIG9mIHRo ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0r ICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBh bG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAq IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv biwgTUEgMDIxMTAtMTMwMSBVU0EKLSsgKi8KLSsKLSsjaW5jbHVkZSA8dmEvdmEuaD4KLSsjaW5j bHVkZSA8dmEvdmFfZW5jX2F2MS5oPgotKwotKyNpbmNsdWRlICJsaWJhdnV0aWwvcGl4ZGVzYy5o IgotKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCi0rCi0rI2luY2x1ZGUgImNic19hdjEuaCIK LSsjaW5jbHVkZSAicHV0X2JpdHMuaCIKLSsjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKLSsj aW5jbHVkZSAiYXYxX2xldmVscy5oIgotKyNpbmNsdWRlICJ2YWFwaV9lbmNvZGUuaCIKLSsKLSsj ZGVmaW5lIEFWMV9NQVhfUVVBTlQgMjU1Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QgVkFBUElFbmNvZGVB VjFQaWN0dXJlIHsKLSsgICAgaW50NjRfdCBsYXN0X2lkcl9mcmFtZTsKLSsgICAgaW50IHNsb3Q7 Ci0rfSBWQUFQSUVuY29kZUFWMVBpY3R1cmU7Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QgVkFBUElFbmNv ZGVBVjFDb250ZXh0IHsKLSsgICAgVkFBUElFbmNvZGVDb250ZXh0IGNvbW1vbjsKLSsgICAgQVYx UmF3T0JVIHNoOyAvKio8IHNlcXVlbmNlIGhlYWRlci4qLwotKyAgICBBVjFSYXdPQlUgZmg7IC8q KjwgZnJhbWUgaGVhZGVyLiovCi0rICAgIENvZGVkQml0c3RyZWFtQ29udGV4dCAqY2JjOwotKyAg ICBDb2RlZEJpdHN0cmVhbUZyYWdtZW50IGN1cnJlbnRfb2J1OwotKyAgICBWQUNvbmZpZ0F0dHJp YlZhbEVuY0FWMSBhdHRyOwotKyAgICBWQUNvbmZpZ0F0dHJpYlZhbEVuY0FWMUV4dDEgYXR0cl9l eHQxOwotKyAgICBWQUNvbmZpZ0F0dHJpYlZhbEVuY0FWMUV4dDIgYXR0cl9leHQyOwotKwotKyAg ICBjaGFyIHNoX2RhdGFbTUFYX1BBUkFNX0JVRkZFUl9TSVpFXTsgLyoqPCBjb2RlZCBzZXF1ZW5j ZSBoZWFkZXIgZGF0YS4gKi8KLSsgICAgc2l6ZV90IHNoX2RhdGFfbGVuOyAvKio8IGJpdCBsZW5n dGggb2Ygc2hfZGF0YS4gKi8KLSsgICAgY2hhciBmaF9kYXRhW01BWF9QQVJBTV9CVUZGRVJfU0la RV07IC8qKjwgY29kZWQgZnJhbWUgaGVhZGVyIGRhdGEuICovCi0rICAgIHNpemVfdCBmaF9kYXRh X2xlbjsgLyoqPCBiaXQgbGVuZ3RoIG9mIGZoX2RhdGEuICovCi0rCi0rICAgIHVpbnQ4X3QgdW5p Zm9ybV90aWxlOwotKyAgICB1aW50OF90IHVzZV8xMjh4MTI4X3N1cGVyYmxvY2s7Ci0rICAgIGlu dCBzYl9jb2xzOwotKyAgICBpbnQgc2Jfcm93czsKLSsgICAgaW50IHRpbGVfY29sc19sb2cyOwot KyAgICBpbnQgdGlsZV9yb3dzX2xvZzI7Ci0rICAgIGludCBtYXhfdGlsZV93aWR0aF9zYjsKLSsg ICAgaW50IG1heF90aWxlX2hlaWdodF9zYjsKLSsgICAgdWludDhfdCB3aWR0aF9pbl9zYnNfbWlu dXNfMVtBVjFfTUFYX1RJTEVfQ09MU107Ci0rICAgIHVpbnQ4X3QgaGVpZ2h0X2luX3Nic19taW51 c18xW0FWMV9NQVhfVElMRV9ST1dTXTsKLSsKLSsgICAgaW50IG1pbl9sb2cyX3RpbGVfY29sczsK LSsgICAgaW50IG1heF9sb2cyX3RpbGVfY29sczsKLSsgICAgaW50IG1pbl9sb2cyX3RpbGVfcm93 czsKLSsgICAgaW50IG1heF9sb2cyX3RpbGVfcm93czsKLSsKLSsgICAgaW50IHFfaWR4X2lkcjsK LSsgICAgaW50IHFfaWR4X3A7Ci0rICAgIGludCBxX2lkeF9iOwotKwotKyAgICAvKiogYml0IHBv c2l0aW9ucyBpbiBjdXJyZW50IGZyYW1lIGhlYWRlciAqLwotKyAgICBpbnQgcWluZGV4X29mZnNl dDsKLSsgICAgaW50IGxvb3BmaWx0ZXJfb2Zmc2V0OwotKyAgICBpbnQgY2RlZl9zdGFydF9vZmZz ZXQ7Ci0rICAgIGludCBjZGVmX3BhcmFtX3NpemU7Ci0rCi0rICAgIC8qKiB1c2VyIG9wdGlvbnMg Ki8KLSsgICAgaW50IHByb2ZpbGU7Ci0rICAgIGludCBsZXZlbDsKLSsgICAgaW50IHRpZXI7Ci0r ICAgIGludCB0aWxlX2NvbHMsIHRpbGVfcm93czsKLSsgICAgaW50IHRpbGVfZ3JvdXBzOwotK30g VkFBUElFbmNvZGVBVjFDb250ZXh0OwotKwotK3N0YXRpYyB2b2lkIHZhYXBpX2VuY29kZV9hdjFf dHJhY2Vfd3JpdGVfbG9nKHZvaWQgKmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdXRCaXRDb250ZXh0ICpwYmMsIGludCBsZW5ndGgsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyLCBj b25zdCBpbnQgKnN1YnNjcmlwdHMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50NjRfdCB2YWx1ZSkKLSt7Ci0rICAgIFZBQVBJRW5jb2RlQVYxQ29udGV4 dCAqcHJpdiA9IGN0eDsKLSsgICAgaW50IHBvc2l0aW9uOwotKwotKyAgICBwb3NpdGlvbiA9IHB1 dF9iaXRzX2NvdW50KHBiYyk7Ci0rICAgIGF2X2Fzc2VydDAocG9zaXRpb24gPj0gbGVuZ3RoKTsK LSsKLSsgICAgaWYgKCFzdHJjbXAoc3RyLCAiYmFzZV9xX2lkeCIpKQotKyAgICAgICAgcHJpdi0+ cWluZGV4X29mZnNldCA9IHBvc2l0aW9uIC0gbGVuZ3RoOwotKyAgICBlbHNlIGlmICghc3RyY21w KHN0ciwgImxvb3BfZmlsdGVyX2xldmVsWzBdIikpCi0rICAgICAgICBwcml2LT5sb29wZmlsdGVy X29mZnNldCA9IHBvc2l0aW9uIC0gbGVuZ3RoOwotKyAgICBlbHNlIGlmICghc3RyY21wKHN0ciwg ImNkZWZfZGFtcGluZ19taW51c18zIikpCi0rICAgICAgICBwcml2LT5jZGVmX3N0YXJ0X29mZnNl dCA9IHBvc2l0aW9uIC0gbGVuZ3RoOwotKyAgICBlbHNlIGlmICghc3RyY21wKHN0ciwgImNkZWZf dXZfc2VjX3N0cmVuZ3RoW2ldIikpCi0rICAgICAgICBwcml2LT5jZGVmX3BhcmFtX3NpemUgPSBw b3NpdGlvbiAtIHByaXYtPmNkZWZfc3RhcnRfb2Zmc2V0OwotK30KLSsKLStzdGF0aWMgYXZfY29s ZCBpbnQgdmFhcGlfZW5jb2RlX2F2MV9nZXRfZW5jb2Rlcl9jYXBzKEFWQ29kZWNDb250ZXh0ICph dmN0eCkKLSt7Ci0rICAgIFZBQVBJRW5jb2RlQ29udGV4dCAqY3R4ID0gYXZjdHgtPnByaXZfZGF0 YTsKLSsgICAgVkFBUElFbmNvZGVBVjFDb250ZXh0ICpwcml2ID0gYXZjdHgtPnByaXZfZGF0YTsK LSsKLSsgICAgLy8gU3VyZmFjZXMgbXVzdCBiZSBhbGlnbmVkIHRvIHN1cGVyYmxvY2sgYm91bmRh cmllcy4KLSsgICAgY3R4LT5zdXJmYWNlX3dpZHRoICA9IEZGQUxJR04oYXZjdHgtPndpZHRoLCAg cHJpdi0+dXNlXzEyOHgxMjhfc3VwZXJibG9jayA/IDEyOCA6IDY0KTsKLSsgICAgY3R4LT5zdXJm YWNlX2hlaWdodCA9IEZGQUxJR04oYXZjdHgtPmhlaWdodCwgcHJpdi0+dXNlXzEyOHgxMjhfc3Vw ZXJibG9jayA/IDEyOCA6IDY0KTsKLSsKLSsgICAgcmV0dXJuIDA7Ci0rfQotKwotK3N0YXRpYyBh dl9jb2xkIGludCB2YWFwaV9lbmNvZGVfYXYxX2NvbmZpZ3VyZShBVkNvZGVjQ29udGV4dCAqYXZj dHgpCi0rewotKyAgICBWQUFQSUVuY29kZUNvbnRleHQgICAgICpjdHggPSBhdmN0eC0+cHJpdl9k YXRhOwotKyAgICBWQUFQSUVuY29kZUFWMUNvbnRleHQgKnByaXYgPSBhdmN0eC0+cHJpdl9kYXRh OwotKyAgICBpbnQgcmV0OwotKwotKyAgICByZXQgPSBmZl9jYnNfaW5pdCgmcHJpdi0+Y2JjLCBB Vl9DT0RFQ19JRF9BVjEsIGF2Y3R4KTsKLSsgICAgaWYgKHJldCA8IDApCi0rICAgICAgICByZXR1 cm4gcmV0OwotKyAgICBwcml2LT5jYmMtPnRyYWNlX2VuYWJsZSAgPSAxOwotKyAgICBwcml2LT5j YmMtPnRyYWNlX2xldmVsICAgPSBBVl9MT0dfREVCVUc7Ci0rICAgIHByaXYtPmNiYy0+dHJhY2Vf Y29udGV4dCA9IGN0eDsKLSsgICAgcHJpdi0+Y2JjLT50cmFjZV93cml0ZV9jYWxsYmFjayA9IHZh YXBpX2VuY29kZV9hdjFfdHJhY2Vfd3JpdGVfbG9nOwotKwotKyAgICBpZiAoY3R4LT5yY19tb2Rl LT5xdWFsaXR5KSB7Ci0rICAgICAgICBwcml2LT5xX2lkeF9wID0gYXZfY2xpcChjdHgtPnJjX3F1 YWxpdHksIDAsIEFWMV9NQVhfUVVBTlQpOwotKyAgICAgICAgaWYgKGZhYnMoYXZjdHgtPmlfcXVh bnRfZmFjdG9yKSA+IDAuMCkKLSsgICAgICAgICAgICBwcml2LT5xX2lkeF9pZHIgPQotKyAgICAg ICAgICAgICAgICBhdl9jbGlwKChmYWJzKGF2Y3R4LT5pX3F1YW50X2ZhY3RvcikgKiBwcml2LT5x X2lkeF9wICArCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5pX3F1YW50X29mZnNl dCkgKyAwLjUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgMCwgQVYxX01BWF9RVUFOVCk7Ci0r ICAgICAgICBlbHNlCi0rICAgICAgICAgICAgcHJpdi0+cV9pZHhfaWRyID0gcHJpdi0+cV9pZHhf cDsKLSsKLSsgICAgICAgIGlmIChmYWJzKGF2Y3R4LT5iX3F1YW50X2ZhY3RvcikgPiAwLjApCi0r ICAgICAgICAgICAgcHJpdi0+cV9pZHhfYiA9Ci0rICAgICAgICAgICAgICAgIGF2X2NsaXAoKGZh YnMoYXZjdHgtPmJfcXVhbnRfZmFjdG9yKSAqIHByaXYtPnFfaWR4X3AgICsKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgYXZjdHgtPmJfcXVhbnRfb2Zmc2V0KSArIDAuNSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAwLCBBVjFfTUFYX1FVQU5UKTsKLSsgICAgICAgIGVsc2UKLSsgICAgICAg ICAgICBwcml2LT5xX2lkeF9iID0gcHJpdi0+cV9pZHhfcDsKLSsgICAgfSBlbHNlIHsKLSsgICAg ICAgIC8qKiBBcmJpdHJhcnkgdmFsdWUgKi8KLSsgICAgICAgIHByaXYtPnFfaWR4X2lkciA9IHBy aXYtPnFfaWR4X3AgPSBwcml2LT5xX2lkeF9iID0gMTI4OwotKyAgICB9Ci0rCi0rICAgIHJldHVy biAwOwotK30KLSsKLStzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9hdjFfYWRkX29idShBVkNvZGVj Q29udGV4dCAqYXZjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29k ZWRCaXRzdHJlYW1GcmFnbWVudCAqYXUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDhfdCB0eXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZvaWQgKm9idV91bml0KQotK3sKLSsgICAgaW50IHJldDsKLSsKLSsgICAgcmV0ID0gZmZfY2Jz X2luc2VydF91bml0X2NvbnRlbnQoYXUsIC0xLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0eXBlLCBvYnVfdW5pdCwgTlVMTCk7Ci0rICAgIGlmIChyZXQgPCAwKSB7Ci0r ICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBhZGQgT0JVIHVu aXQ6ICIKLSsgICAgICAgICAgICAgICAidHlwZSA9ICVkLlxuIiwgdHlwZSk7Ci0rICAgICAgICBy ZXR1cm4gcmV0OwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50 IHZhYXBpX2VuY29kZV9hdjFfd3JpdGVfb2J1KEFWQ29kZWNDb250ZXh0ICphdmN0eCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmRhdGEsIHNpemVfdCAqZGF0 YV9sZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlZEJpdHN0 cmVhbUZyYWdtZW50ICpicykKLSt7Ci0rICAgIFZBQVBJRW5jb2RlQVYxQ29udGV4dCAqcHJpdiA9 IGF2Y3R4LT5wcml2X2RhdGE7Ci0rICAgIGludCByZXQ7Ci0rCi0rICAgIHJldCA9IGZmX2Nic193 cml0ZV9mcmFnbWVudF9kYXRhKHByaXYtPmNiYywgYnMpOwotKyAgICBpZiAocmV0IDwgMCkgewot KyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gd3JpdGUgcGFj a2VkIGhlYWRlci5cbiIpOwotKyAgICAgICAgcmV0dXJuIHJldDsKLSsgICAgfQotKwotKyAgICBp ZiAoKHNpemVfdCk4ICogTUFYX1BBUkFNX0JVRkZFUl9TSVpFIDwgOCAqIGJzLT5kYXRhX3NpemUg LSBicy0+ZGF0YV9iaXRfcGFkZGluZykgewotKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0df RVJST1IsICJBY2Nlc3MgdW5pdCB0b28gbGFyZ2U6ICIKLSsgICAgICAgICAgICAgICAiJXp1IDwg JXp1LlxuIiwgKHNpemVfdCk4ICogTUFYX1BBUkFNX0JVRkZFUl9TSVpFLAotKyAgICAgICAgICAg ICAgIDggKiBicy0+ZGF0YV9zaXplIC0gYnMtPmRhdGFfYml0X3BhZGRpbmcpOwotKyAgICAgICAg cmV0dXJuIEFWRVJST1IoRU5PU1BDKTsKLSsgICAgfQotKwotKyAgICBtZW1jcHkoZGF0YSwgYnMt PmRhdGEsIGJzLT5kYXRhX3NpemUpOwotKyAgICAqZGF0YV9sZW4gPSA4ICogYnMtPmRhdGFfc2l6 ZSAtIGJzLT5kYXRhX2JpdF9wYWRkaW5nOwotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3Rh dGljIGludCB0aWxlX2xvZzIoaW50IGJsa1NpemUsIGludCB0YXJnZXQpIHsKLSsgICAgaW50IGs7 Ci0rICAgIGZvciAoayA9IDA7IChibGtTaXplIDw8IGspIDwgdGFyZ2V0OyBrKyspOwotKyAgICBy ZXR1cm4gazsKLSt9Ci0rCi0rc3RhdGljIGludCB2YWFwaV9lbmNvZGVfYXYxX3NldF90aWxlKEFW Q29kZWNDb250ZXh0ICphdmN0eCkKLSt7Ci0rICAgIFZBQVBJRW5jb2RlQVYxQ29udGV4dCAqcHJp diA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0rICAgIGludCBtaV9jb2xzLCBtaV9yb3dzLCBzYl9zaGlm dCwgc2Jfc2l6ZTsKLSsgICAgaW50IG1heF90aWxlX2FyZWFfc2IsIG1heF90aWxlX2FyZWFfc2Jf dmFyaWVkOwotKyAgICBpbnQgdGlsZV93aWR0aF9zYiwgdGlsZV9oZWlnaHRfc2IsIHdpZGVzdF90 aWxlX3NiOwotKyAgICBpbnQgdGlsZV9jb2xzLCB0aWxlX3Jvd3M7Ci0rICAgIGludCBtaW5fbG9n Ml90aWxlczsKLSsgICAgaW50IGk7Ci0rCi0rICAgIGlmIChwcml2LT50aWxlX2NvbHMgPiBBVjFf TUFYX1RJTEVfQ09MUyB8fAotKyAgICAgICAgcHJpdi0+dGlsZV9yb3dzID4gQVYxX01BWF9USUxF X1JPV1MpIHsKLSsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCB0 aWxlIG51bWJlciAlZHglZCwgc2hvdWxkIGxlc3MgdGhhbiAlZHglZC5cbiIsCi0rICAgICAgICAg ICAgICAgcHJpdi0+dGlsZV9jb2xzLCBwcml2LT50aWxlX3Jvd3MsIEFWMV9NQVhfVElMRV9DT0xT LCBBVjFfTUFYX1RJTEVfUk9XUyk7Ci0rICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwot KyAgICB9Ci0rCi0rICAgIG1pX2NvbHMgPSAyICogKChhdmN0eC0+d2lkdGggKyA3KSA+PiAzKTsK LSsgICAgbWlfcm93cyA9IDIgKiAoKGF2Y3R4LT5oZWlnaHQgKyA3KSA+PiAzKTsKLSsgICAgcHJp di0+c2JfY29scyA9IHByaXYtPnVzZV8xMjh4MTI4X3N1cGVyYmxvY2sgPwotKyAgICAgICAgICAg ICAgICAgICAgKChtaV9jb2xzICsgMzEpID4+IDUpIDogKChtaV9jb2xzICsgMTUpID4+IDQpOwot KyAgICBwcml2LT5zYl9yb3dzID0gcHJpdi0+dXNlXzEyOHgxMjhfc3VwZXJibG9jayA/Ci0rICAg ICAgICAgICAgICAgICAgICAoKG1pX3Jvd3MgKyAzMSkgPj4gNSkgOiAoKG1pX3Jvd3MgKyAxNSkg Pj4gNCk7Ci0rICAgIHNiX3NoaWZ0ID0gcHJpdi0+dXNlXzEyOHgxMjhfc3VwZXJibG9jayA/IDUg OiA0OwotKyAgICBzYl9zaXplICA9IHNiX3NoaWZ0ICsgMjsKLSsgICAgcHJpdi0+bWF4X3RpbGVf d2lkdGhfc2IgPSBBVjFfTUFYX1RJTEVfV0lEVEggPj4gc2Jfc2l6ZTsKLSsgICAgbWF4X3RpbGVf YXJlYV9zYiA9IEFWMV9NQVhfVElMRV9BUkVBICA+PiAoMiAqIHNiX3NpemUpOwotKwotKyAgICBw cml2LT5taW5fbG9nMl90aWxlX2NvbHMgPSB0aWxlX2xvZzIocHJpdi0+bWF4X3RpbGVfd2lkdGhf c2IsIHByaXYtPnNiX2NvbHMpOwotKyAgICBwcml2LT5tYXhfbG9nMl90aWxlX2NvbHMgPSB0aWxl X2xvZzIoMSwgRkZNSU4ocHJpdi0+c2JfY29scywgQVYxX01BWF9USUxFX0NPTFMpKTsKLSsgICAg cHJpdi0+bWF4X2xvZzJfdGlsZV9yb3dzID0gdGlsZV9sb2cyKDEsIEZGTUlOKHByaXYtPnNiX3Jv d3MsIEFWMV9NQVhfVElMRV9ST1dTKSk7Ci0rICAgIG1pbl9sb2cyX3RpbGVzID0gRkZNQVgocHJp di0+bWluX2xvZzJfdGlsZV9jb2xzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVf bG9nMihtYXhfdGlsZV9hcmVhX3NiLCBwcml2LT5zYl9yb3dzICogcHJpdi0+c2JfY29scykpOwot KwotKyAgICB0aWxlX2NvbHMgPSBhdl9jbGlwKHByaXYtPnRpbGVfY29scywgKHByaXYtPnNiX2Nv bHMgKyBwcml2LT5tYXhfdGlsZV93aWR0aF9zYiAtIDEpIC8gcHJpdi0+bWF4X3RpbGVfd2lkdGhf c2IsIHByaXYtPnNiX2NvbHMpOwotKwotKyAgICBpZiAoIXByaXYtPnRpbGVfY29scykKLSsgICAg ICAgIHByaXYtPnRpbGVfY29scyA9IHRpbGVfY29sczsKLSsgICAgZWxzZSBpZiAocHJpdi0+dGls ZV9jb2xzICE9IHRpbGVfY29scyl7Ci0rICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJP UiwgIkludmFsaWQgdGlsZSBjb2xzICVkLCBzaG91bGQgYmUgaW4gcmFuZ2Ugb2YgJWR+JWRcbiIs Ci0rICAgICAgICAgICAgICAgcHJpdi0+dGlsZV9jb2xzLAotKyAgICAgICAgICAgICAgIChwcml2 LT5zYl9jb2xzICsgcHJpdi0+bWF4X3RpbGVfd2lkdGhfc2IgLSAxKSAvIHByaXYtPm1heF90aWxl X3dpZHRoX3NiLAotKyAgICAgICAgICAgICAgIHByaXYtPnNiX2NvbHMpOwotKyAgICAgICAgcmV0 dXJuIEFWRVJST1IoRUlOVkFMKTsKLSsgICAgfQotKwotKyAgICBwcml2LT50aWxlX2NvbHNfbG9n MiA9IHRpbGVfbG9nMigxLCBwcml2LT50aWxlX2NvbHMpOwotKyAgICB0aWxlX3dpZHRoX3NiID0g KHByaXYtPnNiX2NvbHMgKyAoMSA8PCBwcml2LT50aWxlX2NvbHNfbG9nMikgLSAxKSA+PgotKyAg ICAgICAgICAgICAgICAgICAgcHJpdi0+dGlsZV9jb2xzX2xvZzI7Ci0rCi0rICAgIGlmIChwcml2 LT50aWxlX3Jvd3MgPiBwcml2LT5zYl9yb3dzKSB7Ci0rICAgICAgICBhdl9sb2coYXZjdHgsIEFW X0xPR19FUlJPUiwgIkludmFsaWQgdGlsZSByb3dzICVkLCBzaG91bGQgYmUgbGVzcyB0aGFuICVk LlxuIiwKLSsgICAgICAgICAgICAgICBwcml2LT50aWxlX3Jvd3MsIHByaXYtPnNiX3Jvd3MpOwot KyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKLSsgICAgfQotKwotKyAgICAvKiogVHJ5 IHVzZXIgc2V0dGluZyB0aWxlIHJvd3MgbnVtYmVyIGZpcnN0LiAqLwotKyAgICB0aWxlX3Jvd3Mg PSBwcml2LT50aWxlX3Jvd3MgPyBwcml2LT50aWxlX3Jvd3MgOiAxOwotKyAgICBmb3IgKDsgdGls ZV9yb3dzIDw9IHByaXYtPnNiX3Jvd3MgJiYgdGlsZV9yb3dzIDw9IEFWMV9NQVhfVElMRV9ST1dT OyB0aWxlX3Jvd3MrKykgewotKyAgICAgICAgLyoqIHRyeSB1bmlmb3JtZWQgdGlsZS4gKi8KLSsg ICAgICAgIHByaXYtPnRpbGVfcm93c19sb2cyID0gdGlsZV9sb2cyKDEsIHRpbGVfcm93cyk7Ci0r ICAgICAgICBpZiAoKHByaXYtPnNiX2NvbHMgKyB0aWxlX3dpZHRoX3NiIC0gMSkgLyB0aWxlX3dp ZHRoX3NiID09IHByaXYtPnRpbGVfY29scykgewotKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkg PCBwcml2LT50aWxlX2NvbHMgLSAxOyBpKyspCi0rICAgICAgICAgICAgICAgIHByaXYtPndpZHRo X2luX3Nic19taW51c18xW2ldID0gdGlsZV93aWR0aF9zYiAtIDE7Ci0rICAgICAgICAgICAgcHJp di0+d2lkdGhfaW5fc2JzX21pbnVzXzFbaV0gPSBwcml2LT5zYl9jb2xzIC0gKHByaXYtPnRpbGVf Y29scyAtIDEpICogdGlsZV93aWR0aF9zYiAtIDE7Ci0rCi0rICAgICAgICAgICAgdGlsZV9oZWln aHRfc2IgPSAocHJpdi0+c2Jfcm93cyArICgxIDw8IHByaXYtPnRpbGVfcm93c19sb2cyKSAtIDEp ID4+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT50aWxlX3Jvd3NfbG9nMjsK LSsKLSsgICAgICAgICAgICBpZiAoKHByaXYtPnNiX3Jvd3MgKyB0aWxlX2hlaWdodF9zYiAtIDEp IC8gdGlsZV9oZWlnaHRfc2IgPT0gdGlsZV9yb3dzICYmCi0rICAgICAgICAgICAgICAgIHRpbGVf aGVpZ2h0X3NiIDw9IG1heF90aWxlX2FyZWFfc2IgLyB0aWxlX3dpZHRoX3NiKSB7Ci0rICAgICAg ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aWxlX3Jvd3MgLSAxOyBpKyspCi0rICAgICAgICAg ICAgICAgICAgICBwcml2LT5oZWlnaHRfaW5fc2JzX21pbnVzXzFbaV0gPSB0aWxlX2hlaWdodF9z YiAtIDE7Ci0rICAgICAgICAgICAgICAgIHByaXYtPmhlaWdodF9pbl9zYnNfbWludXNfMVtpXSA9 IHByaXYtPnNiX3Jvd3MgLSAodGlsZV9yb3dzIC0gMSkgKiB0aWxlX2hlaWdodF9zYiAtIDE7Ci0r Ci0rICAgICAgICAgICAgICAgIHByaXYtPnVuaWZvcm1fdGlsZSA9IDE7Ci0rICAgICAgICAgICAg ICAgIHByaXYtPm1pbl9sb2cyX3RpbGVfcm93cyA9IEZGTUFYKG1pbl9sb2cyX3RpbGVzIC0gcHJp di0+dGlsZV9jb2xzX2xvZzIsIDApOwotKwotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAg ICAgICAgICB9Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICAvKiogdHJ5IG5vbi11bmlmb3JtZWQg dGlsZS4gKi8KLSsgICAgICAgIHdpZGVzdF90aWxlX3NiID0gMDsKLSsgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBwcml2LT50aWxlX2NvbHM7IGkrKykgewotKyAgICAgICAgICAgIHByaXYtPndpZHRo X2luX3Nic19taW51c18xW2ldID0gKGkgKyAxKSAqIHByaXYtPnNiX2NvbHMgLyBwcml2LT50aWxl X2NvbHMgLSBpICogcHJpdi0+c2JfY29scyAvIHByaXYtPnRpbGVfY29scyAtIDE7Ci0rICAgICAg ICAgICAgd2lkZXN0X3RpbGVfc2IgPSBGRk1BWCh3aWRlc3RfdGlsZV9zYiwgcHJpdi0+d2lkdGhf aW5fc2JzX21pbnVzXzFbaV0gKyAxKTsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGlmIChtaW5f bG9nMl90aWxlcykKLSsgICAgICAgICAgICBtYXhfdGlsZV9hcmVhX3NiX3ZhcmllZCA9IChwcml2 LT5zYl9yb3dzICogcHJpdi0+c2JfY29scykgPj4gKG1pbl9sb2cyX3RpbGVzICsgMSk7Ci0rICAg ICAgICBlbHNlCi0rICAgICAgICAgICAgbWF4X3RpbGVfYXJlYV9zYl92YXJpZWQgPSBwcml2LT5z Yl9yb3dzICogcHJpdi0+c2JfY29sczsKLSsgICAgICAgIHByaXYtPm1heF90aWxlX2hlaWdodF9z YiA9IEZGTUFYKDEsIG1heF90aWxlX2FyZWFfc2JfdmFyaWVkIC8gd2lkZXN0X3RpbGVfc2IpOwot KwotKyAgICAgICAgaWYgKHRpbGVfcm93cyA9PSBhdl9jbGlwKHRpbGVfcm93cywgKHByaXYtPnNi X3Jvd3MgKyBwcml2LT5tYXhfdGlsZV9oZWlnaHRfc2IgLSAxKSAvIHByaXYtPm1heF90aWxlX2hl aWdodF9zYiwgcHJpdi0+c2Jfcm93cykpIHsKLSsgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwg dGlsZV9yb3dzOyBpKyspCi0rICAgICAgICAgICAgICAgIHByaXYtPmhlaWdodF9pbl9zYnNfbWlu dXNfMVtpXSA9IChpICsgMSkgKiBwcml2LT5zYl9yb3dzIC8gdGlsZV9yb3dzIC0gaSAqIHByaXYt PnNiX3Jvd3MgLyB0aWxlX3Jvd3MgLSAxOwotKwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICAg ICAgfQotKwotKyAgICAgICAgLyoqIFJldHVybiBpbnZhbGlkIHBhcmFtZXRlciBpZiBleHBsaWNp dCB0aWxlIHJvd3MgaXMgc2V0LiAqLwotKyAgICAgICAgaWYgKHByaXYtPnRpbGVfcm93cykgewot KyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCB0aWxlIHJv d3MgJWQuXG4iLCBwcml2LT50aWxlX3Jvd3MpOwotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9S KEVJTlZBTCk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgcHJpdi0+dGlsZV9yb3dzID0g dGlsZV9yb3dzOwotKyAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIlNldHRpbmcgdGls ZSBjb2xzL3Jvd3MgdG8gJWQvJWQuXG4iLAotKyAgICAgICAgICAgcHJpdi0+dGlsZV9jb2xzLCBw cml2LT50aWxlX3Jvd3MpOwotKwotKyAgICAvKiogY2hlY2sgaWYgdGlsZSBjb2xzL3Jvd3MgaXMg c3VwcG9ydGVkIGJ5IGRyaXZlci4gKi8KLSsgICAgaWYgKHByaXYtPmF0dHJfZXh0Mi5iaXRzLm1h eF90aWxlX251bV9taW51czEpIHsKLSsgICAgICAgIGlmICgocHJpdi0+dGlsZV9jb2xzICogcHJp di0+dGlsZV9yb3dzIC0gMSkgPiBwcml2LT5hdHRyX2V4dDIuYml0cy5tYXhfdGlsZV9udW1fbWlu dXMxKSB7Ci0rICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJVbnN1cHBv cnRlZCB0aWxlIG51bSAlZCAqICVkID0gJWQgYnkgZHJpdmVyLCAiCi0rICAgICAgICAgICAgICAg ICAgICJzaG91bGQgYmUgYXQgbW9zdCAlZC5cbiIsIHByaXYtPnRpbGVfY29scywgcHJpdi0+dGls ZV9yb3dzLAotKyAgICAgICAgICAgICAgICAgICBwcml2LT50aWxlX2NvbHMgKiBwcml2LT50aWxl X3Jvd3MsCi0rICAgICAgICAgICAgICAgICAgIHByaXYtPmF0dHJfZXh0Mi5iaXRzLm1heF90aWxl X251bV9taW51czEgKyAxKTsKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwot KyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIC8qKiBjaGVjayBpZiB0aWxlIGdyb3VwIG51bWJl cnMgaXMgdmFsaWQuICovCi0rICAgIGlmIChwcml2LT50aWxlX2dyb3VwcyA+IHByaXYtPnRpbGVf Y29scyAqIHByaXYtPnRpbGVfcm93cykgewotKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0df V0FSTklORywgIkludmFsaWQgdGlsZSBncm91cHMgbnVtYmVyICVkLCAiCi0rICAgICAgICAiY29y cmVjdCB0byAlZC5cbiIsIHByaXYtPnRpbGVfZ3JvdXBzLCBwcml2LT50aWxlX2NvbHMgKiBwcml2 LT50aWxlX3Jvd3MpOwotKyAgICAgICAgcHJpdi0+dGlsZV9ncm91cHMgPSBwcml2LT50aWxlX2Nv bHMgKiBwcml2LT50aWxlX3Jvd3M7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIDA7Ci0rfQotKwot K3N0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2F2MV93cml0ZV9zZXF1ZW5jZV9oZWFkZXIoQVZDb2Rl Y0NvbnRleHQgKmF2Y3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2hhciAqZGF0YSwgc2l6ZV90ICpkYXRhX2xlbikKLSt7Ci0rICAgIFZBQVBJ RW5jb2RlQVYxQ29udGV4dCAqcHJpdiA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0rCi0rICAgIG1lbWNw eShkYXRhLCAmcHJpdi0+c2hfZGF0YSwgTUFYX1BBUkFNX0JVRkZFUl9TSVpFICogc2l6ZW9mKGNo YXIpKTsKLSsgICAgKmRhdGFfbGVuID0gcHJpdi0+c2hfZGF0YV9sZW47Ci0rCi0rICAgIHJldHVy biAwOwotK30KLSsKLStzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9hdjFfaW5pdF9zZXF1ZW5jZV9w YXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQotK3sKLSsgICAgVkFBUElFbmNvZGVDb250ZXh0 ICAgICAgICAgICAgICAgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0rICAgIFZBQVBJRW5jb2Rl QVYxQ29udGV4dCAgICAgICAgICAgKnByaXYgPSBhdmN0eC0+cHJpdl9kYXRhOwotKyAgICBBVjFS YXdPQlUgICAgICAgICAgICAgICAgICAgICAqc2hfb2J1ID0gJnByaXYtPnNoOwotKyAgICBBVjFS YXdTZXF1ZW5jZUhlYWRlciAgICAgICAgICAgICAgKnNoID0gJnNoX29idS0+b2J1LnNlcXVlbmNl X2hlYWRlcjsKLSsgICAgVkFFbmNTZXF1ZW5jZVBhcmFtZXRlckJ1ZmZlckFWMSAqdnNlcSA9IGN0 eC0+Y29kZWNfc2VxdWVuY2VfcGFyYW1zOwotKyAgICBDb2RlZEJpdHN0cmVhbUZyYWdtZW50ICAg ICAgICAgICAqb2J1ID0gJnByaXYtPmN1cnJlbnRfb2J1OwotKyAgICBjb25zdCBBVlBpeEZtdERl c2NyaXB0b3IgKmRlc2M7Ci0rICAgIGludCByZXQ7Ci0rCi0rICAgIG1lbXNldChzaF9vYnUsIDAs IHNpemVvZigqc2hfb2J1KSk7Ci0rICAgIHNoX29idS0+aGVhZGVyLm9idV90eXBlID0gQVYxX09C VV9TRVFVRU5DRV9IRUFERVI7Ci0rCi0rICAgIGRlc2MgPSBhdl9waXhfZm10X2Rlc2NfZ2V0KHBy aXYtPmNvbW1vbi5pbnB1dF9mcmFtZXMtPnN3X2Zvcm1hdCk7Ci0rICAgIGF2X2Fzc2VydDAoZGVz Yyk7Ci0rCi0rICAgIHNoLT5zZXFfcHJvZmlsZSAgPSBhdmN0eC0+cHJvZmlsZTsKLSsgICAgaWYg KCFzaC0+c2VxX2ZvcmNlX3NjcmVlbl9jb250ZW50X3Rvb2xzKQotKyAgICAgICAgc2gtPnNlcV9m b3JjZV9pbnRlZ2VyX212ID0gQVYxX1NFTEVDVF9JTlRFR0VSX01WOwotKyAgICBzaC0+ZnJhbWVf d2lkdGhfYml0c19taW51c18xICA9IGF2X2xvZzIoYXZjdHgtPndpZHRoKTsKLSsgICAgc2gtPmZy YW1lX2hlaWdodF9iaXRzX21pbnVzXzEgPSBhdl9sb2cyKGF2Y3R4LT5oZWlnaHQpOwotKyAgICBz aC0+bWF4X2ZyYW1lX3dpZHRoX21pbnVzXzEgICA9IGF2Y3R4LT53aWR0aCAtIDE7Ci0rICAgIHNo LT5tYXhfZnJhbWVfaGVpZ2h0X21pbnVzXzEgID0gYXZjdHgtPmhlaWdodCAtIDE7Ci0rICAgIHNo LT5zZXFfdGllclswXSAgICAgICAgICAgICAgID0gcHJpdi0+dGllcjsKLSsgICAgLyoqIGVuYWJs ZSBvcmRlciBoaW50IGFuZCByZXNlcnZlIG1heGltdW0gOCBiaXRzIGZvciBpdCBieSBkZWZhdWx0 LiAqLwotKyAgICBzaC0+ZW5hYmxlX29yZGVyX2hpbnQgICAgICAgICA9IDE7Ci0rICAgIHNoLT5v cmRlcl9oaW50X2JpdHNfbWludXNfMSAgID0gNzsKLSsKLSsgICAgc2gtPmNvbG9yX2NvbmZpZyA9 IChBVjFSYXdDb2xvckNvbmZpZykgewotKyAgICAgICAgLmhpZ2hfYml0ZGVwdGggICAgICAgICAg ICAgICAgICA9IGRlc2MtPmNvbXBbMF0uZGVwdGggPT0gOCA/IDAgOiAxLAotKyAgICAgICAgLmNv bG9yX3ByaW1hcmllcyAgICAgICAgICAgICAgICA9IGF2Y3R4LT5jb2xvcl9wcmltYXJpZXMsCi0r ICAgICAgICAudHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzICAgICAgID0gYXZjdHgtPmNvbG9yX3Ry YywKLSsgICAgICAgIC5tYXRyaXhfY29lZmZpY2llbnRzICAgICAgICAgICAgPSBhdmN0eC0+Y29s b3JzcGFjZSwKLSsgICAgICAgIC5jb2xvcl9kZXNjcmlwdGlvbl9wcmVzZW50X2ZsYWcgPSAoYXZj dHgtPmNvbG9yX3ByaW1hcmllcyAhPSBBVkNPTF9QUklfVU5TUEVDSUZJRUQgfHwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZjdHgtPmNvbG9yX3RyYyAgICAg ICAhPSBBVkNPTF9UUkNfVU5TUEVDSUZJRUQgfHwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXZjdHgtPmNvbG9yc3BhY2UgICAgICAhPSBBVkNPTF9TUENfVU5T UEVDSUZJRUQpLAotKyAgICAgICAgLmNvbG9yX3JhbmdlICAgICAgICAgICAgICAgICAgICA9IGF2 Y3R4LT5jb2xvcl9yYW5nZSA9PSBBVkNPTF9SQU5HRV9KUEVHLAotKyAgICAgICAgLnN1YnNhbXBs aW5nX3ggICAgICAgICAgICAgICAgICA9IGRlc2MtPmxvZzJfY2hyb21hX3csCi0rICAgICAgICAu c3Vic2FtcGxpbmdfeSAgICAgICAgICAgICAgICAgID0gZGVzYy0+bG9nMl9jaHJvbWFfaCwKLSsg ICAgfTsKLSsKLSsgICAgc3dpdGNoIChhdmN0eC0+Y2hyb21hX3NhbXBsZV9sb2NhdGlvbikgewot KyAgICAgICAgY2FzZSBBVkNIUk9NQV9MT0NfTEVGVDoKLSsgICAgICAgICAgICBzaC0+Y29sb3Jf Y29uZmlnLmNocm9tYV9zYW1wbGVfcG9zaXRpb24gPSBBVjFfQ1NQX1ZFUlRJQ0FMOwotKyAgICAg ICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBBVkNIUk9NQV9MT0NfVE9QTEVGVDoKLSsgICAg ICAgICAgICBzaC0+Y29sb3JfY29uZmlnLmNocm9tYV9zYW1wbGVfcG9zaXRpb24gPSBBVjFfQ1NQ X0NPTE9DQVRFRDsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAgIGRlZmF1bHQ6Ci0rICAg ICAgICAgICAgc2gtPmNvbG9yX2NvbmZpZy5jaHJvbWFfc2FtcGxlX3Bvc2l0aW9uID0gQVYxX0NT UF9VTktOT1dOOwotKyAgICAgICAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICAgIGlmIChhdmN0 eC0+bGV2ZWwgIT0gRkZfUFJPRklMRV9VTktOT1dOKSB7Ci0rICAgICAgICBzaC0+c2VxX2xldmVs X2lkeFswXSA9IGF2Y3R4LT5sZXZlbDsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIGNvbnN0IEFW MUxldmVsRGVzY3JpcHRvciAqbGV2ZWw7Ci0rICAgICAgICBmbG9hdCBmcmFtZXJhdGU7Ci0rCi0r ICAgICAgICBpZiAoYXZjdHgtPmZyYW1lcmF0ZS5udW0gPiAwICYmIGF2Y3R4LT5mcmFtZXJhdGUu ZGVuID4gMCkKLSsgICAgICAgICAgICBmcmFtZXJhdGUgPSBhdmN0eC0+ZnJhbWVyYXRlLm51bSAv IGF2Y3R4LT5mcmFtZXJhdGUuZGVuOwotKyAgICAgICAgZWxzZQotKyAgICAgICAgICAgIGZyYW1l cmF0ZSA9IDA7Ci0rCi0rICAgICAgICBsZXZlbCA9IGZmX2F2MV9ndWVzc19sZXZlbChhdmN0eC0+ Yml0X3JhdGUsIHByaXYtPnRpZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjdHgtPnN1cmZhY2Vfd2lkdGgsIGN0eC0+c3VyZmFjZV9oZWlnaHQsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwcml2LT50aWxlX3Jvd3MgKiBwcml2LT50aWxlX2NvbHMs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT50aWxlX2NvbHMsIGZy YW1lcmF0ZSk7Ci0rICAgICAgICBpZiAobGV2ZWwpIHsKLSsgICAgICAgICAgICBhdl9sb2coYXZj dHgsIEFWX0xPR19WRVJCT1NFLCAiVXNpbmcgbGV2ZWwgJXMuXG4iLCBsZXZlbC0+bmFtZSk7Ci0r ICAgICAgICAgICAgc2gtPnNlcV9sZXZlbF9pZHhbMF0gPSBsZXZlbC0+bGV2ZWxfaWR4OwotKyAg ICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19WRVJCT1NF LCAiU3RyZWFtIHdpbGwgbm90IGNvbmZvcm0gdG8gIgotKyAgICAgICAgICAgICAgICAgICAiYW55 IG5vcm1hbCBsZXZlbCwgdXNpbmcgbWF4aW11bSBwYXJhbWV0ZXJzIGxldmVsIGJ5IGRlZmF1bHQu XG4iKTsKLSsgICAgICAgICAgICBzaC0+c2VxX2xldmVsX2lkeFswXSA9IDMxOwotKyAgICAgICAg ICAgIHNoLT5zZXFfdGllclswXSA9IDE7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgICAgdnNlcS0+ c2VxX3Byb2ZpbGUgICAgICAgICAgICAgPSBzaC0+c2VxX3Byb2ZpbGU7Ci0rICAgIHZzZXEtPnNl cV9sZXZlbF9pZHggICAgICAgICAgID0gc2gtPnNlcV9sZXZlbF9pZHhbMF07Ci0rICAgIHZzZXEt PnNlcV90aWVyICAgICAgICAgICAgICAgID0gc2gtPnNlcV90aWVyWzBdOwotKyAgICB2c2VxLT5v cmRlcl9oaW50X2JpdHNfbWludXNfMSA9IHNoLT5vcmRlcl9oaW50X2JpdHNfbWludXNfMTsKLSsg ICAgdnNlcS0+aW50cmFfcGVyaW9kICAgICAgICAgICAgPSBjdHgtPmdvcF9zaXplOwotKyAgICB2 c2VxLT5pcF9wZXJpb2QgICAgICAgICAgICAgICA9IGN0eC0+Yl9wZXJfcCArIDE7Ci0rCi0rICAg IHZzZXEtPnNlcV9maWVsZHMuYml0cy5lbmFibGVfb3JkZXJfaGludCA9IHNoLT5lbmFibGVfb3Jk ZXJfaGludDsKLSsKLSsgICAgaWYgKCEoY3R4LT52YV9yY19tb2RlICYgVkFfUkNfQ1FQKSkgewot KyAgICAgICAgdnNlcS0+Yml0c19wZXJfc2Vjb25kID0gY3R4LT52YV9iaXRfcmF0ZTsKLSsgICAg ICAgIHZzZXEtPnNlcV9maWVsZHMuYml0cy5lbmFibGVfY2RlZiA9IHNoLT5lbmFibGVfY2RlZiA9 IDE7Ci0rICAgIH0KLSsKLSsgICAgcmV0ID0gdmFhcGlfZW5jb2RlX2F2MV9hZGRfb2J1KGF2Y3R4 LCBvYnUsIEFWMV9PQlVfU0VRVUVOQ0VfSEVBREVSLCAmcHJpdi0+c2gpOwotKyAgICBpZiAocmV0 IDwgMCkKLSsgICAgICAgIGdvdG8gZW5kOwotKwotKyAgICByZXQgPSB2YWFwaV9lbmNvZGVfYXYx X3dyaXRlX29idShhdmN0eCwgcHJpdi0+c2hfZGF0YSwgJnByaXYtPnNoX2RhdGFfbGVuLCBvYnUp OwotKyAgICBpZiAocmV0IDwgMCkKLSsgICAgICAgIGdvdG8gZW5kOwotKwotK2VuZDoKLSsgICAg ZmZfY2JzX2ZyYWdtZW50X3Jlc2V0KG9idSk7Ci0rICAgIHJldHVybiByZXQ7Ci0rfQotKwotK3N0 YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2F2MV9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250 ZXh0ICphdmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBWQUFQSUVuY29kZVBpY3R1cmUgKnBpYykKLSt7Ci0rICAgIFZBQVBJRW5jb2RlQ29udGV4 dCAgICAgICAgICAgICAgKmN0eCA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0rICAgIFZBQVBJRW5jb2Rl QVYxQ29udGV4dCAgICAgICAgICAqcHJpdiA9IGF2Y3R4LT5wcml2X2RhdGE7Ci0rICAgIFZBQVBJ RW5jb2RlQVYxUGljdHVyZSAgICAgICAgICAqaHBpYyA9IHBpYy0+cHJpdl9kYXRhOwotKyAgICBB VjFSYXdPQlUgICAgICAgICAgICAgICAgICAgICpmaF9vYnUgPSAmcHJpdi0+Zmg7Ci0rICAgIEFW MVJhd0ZyYW1lSGVhZGVyICAgICAgICAgICAgICAgICpmaCA9ICZmaF9vYnUtPm9idS5mcmFtZS5o ZWFkZXI7Ci0rICAgIFZBRW5jUGljdHVyZVBhcmFtZXRlckJ1ZmZlckFWMSAqdnBpYyA9IHBpYy0+ Y29kZWNfcGljdHVyZV9wYXJhbXM7Ci0rICAgIENvZGVkQml0c3RyZWFtRnJhZ21lbnQgICAgICAg ICAgKm9idSA9ICZwcml2LT5jdXJyZW50X29idTsKLSsgICAgVkFBUElFbmNvZGVQaWN0dXJlICAg ICpyZWY7Ci0rICAgIFZBQVBJRW5jb2RlQVYxUGljdHVyZSAqaHJlZjsKLSsgICAgaW50IHNsb3Qs IGk7Ci0rICAgIGludCByZXQ7Ci0rICAgIHN0YXRpYyBjb25zdCBpbnQ4X3QgZGVmYXVsdF9sb29w X2ZpbHRlcl9yZWZfZGVsdGFzW0FWMV9UT1RBTF9SRUZTX1BFUl9GUkFNRV0gPQotKyAgICAgICAg eyAxLCAwLCAwLCAwLCAtMSwgMCwgLTEsIC0xIH07Ci0rCi0rICAgIG1lbXNldChmaF9vYnUsIDAs IHNpemVvZigqZmhfb2J1KSk7Ci0rICAgIHBpYy0+bmJfc2xpY2VzID0gcHJpdi0+dGlsZV9ncm91 cHM7Ci0rICAgIHBpYy0+bm9uX2luZGVwZW5kZW50X2ZyYW1lID0gcGljLT5lbmNvZGVfb3JkZXIg PCBwaWMtPmRpc3BsYXlfb3JkZXI7Ci0rICAgIGZoX29idS0+aGVhZGVyLm9idV90eXBlID0gQVYx X09CVV9GUkFNRV9IRUFERVI7Ci0rICAgIGZoX29idS0+aGVhZGVyLm9idV9oYXNfc2l6ZV9maWVs ZCA9IDE7Ci0rCi0rICAgIHN3aXRjaCAocGljLT50eXBlKSB7Ci0rICAgIGNhc2UgUElDVFVSRV9U WVBFX0lEUjoKLSsgICAgICAgIGF2X2Fzc2VydDAocGljLT5uYl9yZWZzWzBdID09IDAgfHwgcGlj LT5uYl9yZWZzWzFdKTsKLSsgICAgICAgIGZoLT5mcmFtZV90eXBlID0gQVYxX0ZSQU1FX0tFWTsK LSsgICAgICAgIGZoLT5yZWZyZXNoX2ZyYW1lX2ZsYWdzID0gMHhGRjsKLSsgICAgICAgIGZoLT5i YXNlX3FfaWR4ID0gcHJpdi0+cV9pZHhfaWRyOwotKyAgICAgICAgaHBpYy0+c2xvdCA9IDA7Ci0r ICAgICAgICBocGljLT5sYXN0X2lkcl9mcmFtZSA9IHBpYy0+ZGlzcGxheV9vcmRlcjsKLSsgICAg ICAgIGJyZWFrOwotKyAgICBjYXNlIFBJQ1RVUkVfVFlQRV9QOgotKyAgICAgICAgYXZfYXNzZXJ0 MChwaWMtPm5iX3JlZnNbMF0pOwotKyAgICAgICAgZmgtPmZyYW1lX3R5cGUgPSBBVjFfRlJBTUVf SU5URVI7Ci0rICAgICAgICBmaC0+YmFzZV9xX2lkeCA9IHByaXYtPnFfaWR4X3A7Ci0rICAgICAg ICByZWYgPSBwaWMtPnJlZnNbMF1bcGljLT5uYl9yZWZzWzBdIC0gMV07Ci0rICAgICAgICBocmVm ID0gcmVmLT5wcml2X2RhdGE7Ci0rICAgICAgICBocGljLT5zbG90ID0gIWhyZWYtPnNsb3Q7Ci0r ICAgICAgICBocGljLT5sYXN0X2lkcl9mcmFtZSA9IGhyZWYtPmxhc3RfaWRyX2ZyYW1lOwotKyAg ICAgICAgZmgtPnJlZnJlc2hfZnJhbWVfZmxhZ3MgPSAxIDw8IGhwaWMtPnNsb3Q7Ci0rCi0rICAg ICAgICAvKiogc2V0IHRoZSBuZWFyZXN0IGZyYW1lIGluIEwwIGFzIGFsbCByZWZlcmVuY2UgZnJh bWUuICovCi0rICAgICAgICBmb3IgKGkgPSAwOyBpIDwgQVYxX1JFRlNfUEVSX0ZSQU1FOyBpKysp IHsKLSsgICAgICAgICAgICBmaC0+cmVmX2ZyYW1lX2lkeFtpXSA9IGhyZWYtPnNsb3Q7Ci0rICAg ICAgICB9Ci0rICAgICAgICBmaC0+cHJpbWFyeV9yZWZfZnJhbWUgPSBocmVmLT5zbG90OwotKyAg ICAgICAgZmgtPnJlZl9vcmRlcl9oaW50W2hyZWYtPnNsb3RdID0gcmVmLT5kaXNwbGF5X29yZGVy IC0gaHJlZi0+bGFzdF9pZHJfZnJhbWU7Ci0rICAgICAgICB2cGljLT5yZWZfZnJhbWVfY3RybF9s MC5maWVsZHMuc2VhcmNoX2lkeDAgPSBBVjFfUkVGX0ZSQU1FX0xBU1Q7Ci0rCi0rICAgICAgICAv Kiogc2V0IHRoZSAybmQgbmVhcmVzdCBmcmFtZSBpbiBMMCBhcyBHb2xkZW4gZnJhbWUuICovCi0r ICAgICAgICBpZiAocGljLT5uYl9yZWZzWzBdID4gMSkgewotKyAgICAgICAgICAgIHJlZiA9IHBp Yy0+cmVmc1swXVtwaWMtPm5iX3JlZnNbMF0gLSAyXTsKLSsgICAgICAgICAgICBocmVmID0gcmVm LT5wcml2X2RhdGE7Ci0rICAgICAgICAgICAgZmgtPnJlZl9mcmFtZV9pZHhbM10gPSBocmVmLT5z bG90OwotKyAgICAgICAgICAgIGZoLT5yZWZfb3JkZXJfaGludFtocmVmLT5zbG90XSA9IHJlZi0+ ZGlzcGxheV9vcmRlciAtIGhyZWYtPmxhc3RfaWRyX2ZyYW1lOwotKyAgICAgICAgICAgIHZwaWMt PnJlZl9mcmFtZV9jdHJsX2wwLmZpZWxkcy5zZWFyY2hfaWR4MSA9IEFWMV9SRUZfRlJBTUVfR09M REVOOwotKyAgICAgICAgfQotKyAgICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgUElDVFVSRV9UWVBF X0I6Ci0rICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVmc1swXSAmJiBwaWMtPm5iX3JlZnNb MV0pOwotKyAgICAgICAgZmgtPmZyYW1lX3R5cGUgPSBBVjFfRlJBTUVfSU5URVI7Ci0rICAgICAg ICBmaC0+YmFzZV9xX2lkeCA9IHByaXYtPnFfaWR4X2I7Ci0rICAgICAgICBmaC0+cmVmcmVzaF9m cmFtZV9mbGFncyA9IDB4MDsKLSsgICAgICAgIGZoLT5yZWZlcmVuY2Vfc2VsZWN0ID0gMTsKLSsK LSsgICAgICAgIC8qKiBCIGZyYW1lIHdpbGwgbm90IGJlIHJlZmVyZW5jZWQsIGRpc2FibGUgaXRz IHJlY29uIGZyYW1lLiAqLwotKyAgICAgICAgdnBpYy0+cGljdHVyZV9mbGFncy5iaXRzLmRpc2Fi bGVfZnJhbWVfcmVjb24gPSAxOwotKwotKyAgICAgICAgLyoqIFVzZSBMQVNUX0ZSQU1FIGFuZCBC V0RSRUZfRlJBTUUgZm9yIHJlZmVyZW5jZS4gKi8KLSsgICAgICAgIHZwaWMtPnJlZl9mcmFtZV9j dHJsX2wwLmZpZWxkcy5zZWFyY2hfaWR4MCA9IEFWMV9SRUZfRlJBTUVfTEFTVDsKLSsgICAgICAg IHZwaWMtPnJlZl9mcmFtZV9jdHJsX2wxLmZpZWxkcy5zZWFyY2hfaWR4MCA9IEFWMV9SRUZfRlJB TUVfQldEUkVGOwotKwotKyAgICAgICAgcmVmICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g cGljLT5yZWZzWzBdW3BpYy0+bmJfcmVmc1swXSAtIDFdOwotKyAgICAgICAgaHJlZiAgICAgICAg ICAgICAgICAgICAgICAgICAgID0gcmVmLT5wcml2X2RhdGE7Ci0rICAgICAgICBocGljLT5sYXN0 X2lkcl9mcmFtZSAgICAgICAgICAgPSBocmVmLT5sYXN0X2lkcl9mcmFtZTsKLSsgICAgICAgIGZo LT5wcmltYXJ5X3JlZl9mcmFtZSAgICAgICAgICA9IGhyZWYtPnNsb3Q7Ci0rICAgICAgICBmaC0+ cmVmX29yZGVyX2hpbnRbaHJlZi0+c2xvdF0gPSByZWYtPmRpc3BsYXlfb3JkZXIgLSBocmVmLT5s YXN0X2lkcl9mcmFtZTsKLSsgICAgICAgIGZvciAoaSA9IDA7IGkgPCBBVjFfUkVGX0ZSQU1FX0dP TERFTjsgaSsrKSB7Ci0rICAgICAgICAgICAgZmgtPnJlZl9mcmFtZV9pZHhbaV0gPSBocmVmLT5z bG90OwotKyAgICAgICAgfQotKwotKyAgICAgICAgcmVmICAgICAgICAgICAgICAgICAgICAgICAg ICAgID0gcGljLT5yZWZzWzFdW3BpYy0+bmJfcmVmc1sxXSAtIDFdOwotKyAgICAgICAgaHJlZiAg ICAgICAgICAgICAgICAgICAgICAgICAgID0gcmVmLT5wcml2X2RhdGE7Ci0rICAgICAgICBmaC0+ cmVmX29yZGVyX2hpbnRbaHJlZi0+c2xvdF0gPSByZWYtPmRpc3BsYXlfb3JkZXIgLSBocmVmLT5s YXN0X2lkcl9mcmFtZTsKLSsgICAgICAgIGZvciAoaSA9IEFWMV9SRUZfRlJBTUVfR09MREVOOyBp IDwgQVYxX1JFRlNfUEVSX0ZSQU1FOyBpKyspIHsKLSsgICAgICAgICAgICBmaC0+cmVmX2ZyYW1l X2lkeFtpXSA9IGhyZWYtPnNsb3Q7Ci0rICAgICAgICB9Ci0rICAgICAgICBicmVhazsKLSsgICAg ZGVmYXVsdDoKLSsgICAgICAgIGF2X2Fzc2VydDAoMCAmJiAiaW52YWxpZCBwaWN0dXJlIHR5cGUi KTsKLSsgICAgfQotKwotKyAgICBmaC0+c2hvd19mcmFtZSAgICAgICAgICAgICAgICA9IHBpYy0+ ZGlzcGxheV9vcmRlciA8PSBwaWMtPmVuY29kZV9vcmRlcjsKLSsgICAgZmgtPnNob3dhYmxlX2Zy YW1lICAgICAgICAgICAgPSBmaC0+ZnJhbWVfdHlwZSAhPSBBVjFfRlJBTUVfS0VZOwotKyAgICBm aC0+ZnJhbWVfd2lkdGhfbWludXNfMSAgICAgICA9IGF2Y3R4LT53aWR0aCAtIDE7Ci0rICAgIGZo LT5mcmFtZV9oZWlnaHRfbWludXNfMSAgICAgID0gYXZjdHgtPmhlaWdodCAtIDE7Ci0rICAgIGZo LT5yZW5kZXJfd2lkdGhfbWludXNfMSAgICAgID0gZmgtPmZyYW1lX3dpZHRoX21pbnVzXzE7Ci0r ICAgIGZoLT5yZW5kZXJfaGVpZ2h0X21pbnVzXzEgICAgID0gZmgtPmZyYW1lX2hlaWdodF9taW51 c18xOwotKyAgICBmaC0+b3JkZXJfaGludCAgICAgICAgICAgICAgICA9IHBpYy0+ZGlzcGxheV9v cmRlciAtIGhwaWMtPmxhc3RfaWRyX2ZyYW1lOwotKyAgICBmaC0+dGlsZV9jb2xzICAgICAgICAg ICAgICAgICA9IHByaXYtPnRpbGVfY29sczsKLSsgICAgZmgtPnRpbGVfcm93cyAgICAgICAgICAg ICAgICAgPSBwcml2LT50aWxlX3Jvd3M7Ci0rICAgIGZoLT50aWxlX2NvbHNfbG9nMiAgICAgICAg ICAgID0gcHJpdi0+dGlsZV9jb2xzX2xvZzI7Ci0rICAgIGZoLT50aWxlX3Jvd3NfbG9nMiAgICAg ICAgICAgID0gcHJpdi0+dGlsZV9yb3dzX2xvZzI7Ci0rICAgIGZoLT51bmlmb3JtX3RpbGVfc3Bh Y2luZ19mbGFnID0gcHJpdi0+dW5pZm9ybV90aWxlOwotKyAgICBmaC0+dGlsZV9zaXplX2J5dGVz X21pbnVzMSAgICA9IHByaXYtPmF0dHJfZXh0Mi5iaXRzLnRpbGVfc2l6ZV9ieXRlc19taW51czE7 Ci0rCi0rICAgIC8qKiBpZ25vcmUgT05MWV80eDQgbW9kZSBmb3IgY29kZWRsb3NzbGVzcyBpcyBu b3QgZnVsbHkgaW1wbGVtZW50ZWQuICovCi0rICAgIGlmIChwcml2LT5hdHRyX2V4dDIuYml0cy50 eF9tb2RlX3N1cHBvcnQgJiAweDA0KQotKyAgICAgICAgZmgtPnR4X21vZGUgPSBBVjFfVFhfTU9E RV9TRUxFQ1Q7Ci0rICAgIGVsc2UgaWYgKHByaXYtPmF0dHJfZXh0Mi5iaXRzLnR4X21vZGVfc3Vw cG9ydCAmIDB4MDIpCi0rICAgICAgICBmaC0+dHhfbW9kZSA9IEFWMV9UWF9NT0RFX0xBUkdFU1Q7 Ci0rICAgIGVsc2UgewotKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJObyBh dmFpbGFibGUgdHggbW9kZSBmb3VuZC5cbiIpOwotKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlO VkFMKTsKLSsgICAgfQotKwotKyAgICBmb3IgKGkgPSAwOyBpIDwgZmgtPnRpbGVfY29sczsgaSsr KQotKyAgICAgICAgZmgtPndpZHRoX2luX3Nic19taW51c18xW2ldID0gdnBpYy0+d2lkdGhfaW5f c2JzX21pbnVzXzFbaV0gPSBwcml2LT53aWR0aF9pbl9zYnNfbWludXNfMVtpXTsKLSsKLSsgICAg Zm9yIChpID0gMDsgaSA8IGZoLT50aWxlX3Jvd3M7IGkrKykKLSsgICAgICAgIGZoLT5oZWlnaHRf aW5fc2JzX21pbnVzXzFbaV0gPSB2cGljLT5oZWlnaHRfaW5fc2JzX21pbnVzXzFbaV0gPSBwcml2 LT5oZWlnaHRfaW5fc2JzX21pbnVzXzFbaV07Ci0rCi0rICAgIG1lbWNweShmaC0+bG9vcF9maWx0 ZXJfcmVmX2RlbHRhcywgZGVmYXVsdF9sb29wX2ZpbHRlcl9yZWZfZGVsdGFzLAotKyAgICAgICAg ICAgQVYxX1RPVEFMX1JFRlNfUEVSX0ZSQU1FICogc2l6ZW9mKGludDhfdCkpOwotKwotKyAgICBp ZiAoZmgtPmZyYW1lX3R5cGUgPT0gQVYxX0ZSQU1FX0tFWSAmJiBmaC0+c2hvd19mcmFtZSkgewot KyAgICAgICAgZmgtPmVycm9yX3Jlc2lsaWVudF9tb2RlID0gMTsKLSsgICAgfQotKwotKyAgICBp ZiAoZmgtPmZyYW1lX3R5cGUgPT0gQVYxX0ZSQU1FX0tFWSB8fCBmaC0+ZXJyb3JfcmVzaWxpZW50 X21vZGUpCi0rICAgICAgICBmaC0+cHJpbWFyeV9yZWZfZnJhbWUgPSBBVjFfUFJJTUFSWV9SRUZf Tk9ORTsKLSsKLSsgICAgdnBpYy0+YmFzZV9xaW5kZXggICAgICAgICAgPSBmaC0+YmFzZV9xX2lk eDsKLSsgICAgdnBpYy0+ZnJhbWVfd2lkdGhfbWludXNfMSAgPSBmaC0+ZnJhbWVfd2lkdGhfbWlu dXNfMTsKLSsgICAgdnBpYy0+ZnJhbWVfaGVpZ2h0X21pbnVzXzEgPSBmaC0+ZnJhbWVfaGVpZ2h0 X21pbnVzXzE7Ci0rICAgIHZwaWMtPnByaW1hcnlfcmVmX2ZyYW1lICAgID0gZmgtPnByaW1hcnlf cmVmX2ZyYW1lOwotKyAgICB2cGljLT5yZWNvbnN0cnVjdGVkX2ZyYW1lICA9IHBpYy0+cmVjb25f c3VyZmFjZTsKLSsgICAgdnBpYy0+Y29kZWRfYnVmICAgICAgICAgICAgPSBwaWMtPm91dHB1dF9i dWZmZXI7Ci0rICAgIHZwaWMtPnRpbGVfY29scyAgICAgICAgICAgID0gZmgtPnRpbGVfY29sczsK LSsgICAgdnBpYy0+dGlsZV9yb3dzICAgICAgICAgICAgPSBmaC0+dGlsZV9yb3dzOwotKyAgICB2 cGljLT5vcmRlcl9oaW50ICAgICAgICAgICA9IGZoLT5vcmRlcl9oaW50OwotKyNpZiBWQV9DSEVD S19WRVJTSU9OKDEsIDE1LCAwKQotKyAgICB2cGljLT5yZWZyZXNoX2ZyYW1lX2ZsYWdzICA9IGZo LT5yZWZyZXNoX2ZyYW1lX2ZsYWdzOwotKyNlbmRpZgotKwotKyAgICB2cGljLT5waWN0dXJlX2Zs YWdzLmJpdHMuZW5hYmxlX2ZyYW1lX29idSAgICAgPSAwOwotKyAgICB2cGljLT5waWN0dXJlX2Zs YWdzLmJpdHMuZnJhbWVfdHlwZSAgICAgICAgICAgPSBmaC0+ZnJhbWVfdHlwZTsKLSsgICAgdnBp Yy0+cGljdHVyZV9mbGFncy5iaXRzLnJlZHVjZWRfdHhfc2V0ICAgICAgID0gZmgtPnJlZHVjZWRf dHhfc2V0OwotKyAgICB2cGljLT5waWN0dXJlX2ZsYWdzLmJpdHMuZXJyb3JfcmVzaWxpZW50X21v ZGUgPSBmaC0+ZXJyb3JfcmVzaWxpZW50X21vZGU7Ci0rCi0rICAgIC8qKiBsZXQgZHJpdmVyIGRl Y2lkZSB0byB1c2Ugc2luZ2xlIG9yIGNvbXBvdW5kIHJlZmVyZW5jZSBwcmVkaWN0aW9uIG1vZGUu ICovCi0rICAgIHZwaWMtPm1vZGVfY29udHJvbF9mbGFncy5iaXRzLnJlZmVyZW5jZV9tb2RlID0g ZmgtPnJlZmVyZW5jZV9zZWxlY3QgPyAyIDogMDsKLSsgICAgdnBpYy0+bW9kZV9jb250cm9sX2Zs YWdzLmJpdHMudHhfbW9kZSA9IGZoLT50eF9tb2RlOwotKwotKyAgICB2cGljLT50aWxlX2dyb3Vw X29idV9oZHJfaW5mby5iaXRzLm9idV9oYXNfc2l6ZV9maWVsZCA9IDE7Ci0rCi0rICAgIC8qKiBz ZXQgcmVmZXJlbmNlLiAqLwotKyAgICBmb3IgKGkgPSAwOyBpIDwgQVYxX1JFRlNfUEVSX0ZSQU1F OyBpKyspCi0rICAgICAgICB2cGljLT5yZWZfZnJhbWVfaWR4W2ldID0gZmgtPnJlZl9mcmFtZV9p ZHhbaV07Ci0rCi0rICAgIGZvciAoaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyh2cGljLT5yZWZl cmVuY2VfZnJhbWVzKTsgaSsrKQotKyAgICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tpXSA9 IFZBX0lOVkFMSURfU1VSRkFDRTsKLSsKLSsgICAgZm9yIChpID0gMDsgaSA8IE1BWF9SRUZFUkVO Q0VfTElTVF9OVU07IGkrKykgewotKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBwaWMtPm5i X3JlZnNbaV07IGorKykgewotKyAgICAgICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcmVmX3Bp YyA9IHBpYy0+cmVmc1tpXVtqXTsKLSsKLSsgICAgICAgICAgICBzbG90ID0gKChWQUFQSUVuY29k ZUFWMVBpY3R1cmUqKXJlZl9waWMtPnByaXZfZGF0YSktPnNsb3Q7Ci0rICAgICAgICAgICAgYXZf YXNzZXJ0MCh2cGljLT5yZWZlcmVuY2VfZnJhbWVzW3Nsb3RdID09IFZBX0lOVkFMSURfU1VSRkFD RSk7Ci0rCi0rICAgICAgICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tzbG90XSA9IHJlZl9w aWMtPnJlY29uX3N1cmZhY2U7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgZmhfb2J1LT5v YnVfc2l6ZV9ieXRlX2xlbiA9IHByaXYtPmF0dHJfZXh0Mi5iaXRzLm9idV9zaXplX2J5dGVzX21p bnVzMSArIDE7Ci0rICAgIHJldCA9IHZhYXBpX2VuY29kZV9hdjFfYWRkX29idShhdmN0eCwgb2J1 LCBBVjFfT0JVX0ZSQU1FX0hFQURFUiwgJnByaXYtPmZoKTsKLSsgICAgaWYgKHJldCA8IDApCi0r ICAgICAgICBnb3RvIGVuZDsKLSsKLSsgICAgcmV0ID0gdmFhcGlfZW5jb2RlX2F2MV93cml0ZV9v YnUoYXZjdHgsIHByaXYtPmZoX2RhdGEsICZwcml2LT5maF9kYXRhX2xlbiwgb2J1KTsKLSsgICAg aWYgKHJldCA8IDApCi0rICAgICAgICBnb3RvIGVuZDsKLSsKLSsgICAgaWYgKCEoY3R4LT52YV9y Y19tb2RlICYgVkFfUkNfQ1FQKSkgewotKyAgICAgICAgdnBpYy0+bWluX2Jhc2VfcWluZGV4ID0g YXZfY2xpcChhdmN0eC0+cW1pbiwgMSwgQVYxX01BWF9RVUFOVCk7Ci0rICAgICAgICB2cGljLT5t YXhfYmFzZV9xaW5kZXggPSBhdl9jbGlwKGF2Y3R4LT5xbWF4LCAxLCBBVjFfTUFYX1FVQU5UKTsK LSsKLSsgICAgICAgIHZwaWMtPmJpdF9vZmZzZXRfcWluZGV4ICAgICAgICAgICAgICA9IHByaXYt PnFpbmRleF9vZmZzZXQ7Ci0rICAgICAgICB2cGljLT5iaXRfb2Zmc2V0X2xvb3BmaWx0ZXJfcGFy YW1zICAgPSBwcml2LT5sb29wZmlsdGVyX29mZnNldDsKLSsgICAgICAgIHZwaWMtPmJpdF9vZmZz ZXRfY2RlZl9wYXJhbXMgICAgICAgICA9IHByaXYtPmNkZWZfc3RhcnRfb2Zmc2V0OwotKyAgICAg ICAgdnBpYy0+c2l6ZV9pbl9iaXRzX2NkZWZfcGFyYW1zICAgICAgID0gcHJpdi0+Y2RlZl9wYXJh bV9zaXplOwotKyAgICAgICAgdnBpYy0+c2l6ZV9pbl9iaXRzX2ZyYW1lX2hkcl9vYnUgICAgID0g cHJpdi0+ZmhfZGF0YV9sZW47Ci0rICAgICAgICB2cGljLT5ieXRlX29mZnNldF9mcmFtZV9oZHJf b2J1X3NpemUgPSAoKChwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0lEUikgPwotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+c2hfZGF0YV9sZW4g LyA4IDogMCkgKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGZoX29idS0+aGVhZGVyLm9idV9leHRlbnNpb25fZmxhZyA/Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIDogMSkpOwotKyAgICB9Ci0rCi0rZW5k OgotKyAgICBmZl9jYnNfZnJhZ21lbnRfcmVzZXQob2J1KTsKLSsgICAgcmV0dXJuIHJldDsKLSt9 Ci0rCi0rc3RhdGljIGludCB2YWFwaV9lbmNvZGVfYXYxX2luaXRfc2xpY2VfcGFyYW1zKEFWQ29k ZWNDb250ZXh0ICphdmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVkFBUElFbmNvZGVQaWN0dXJlICpwaWMsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFZBQVBJRW5jb2RlU2xpY2UgKnNsaWNlKQotK3sKLSsg ICAgVkFBUElFbmNvZGVBVjFDb250ZXh0ICAgICAgKnByaXYgPSBhdmN0eC0+cHJpdl9kYXRhOwot KyAgICBWQUVuY1RpbGVHcm91cEJ1ZmZlckFWMSAgKnZzbGljZSA9IHNsaWNlLT5jb2RlY19zbGlj ZV9wYXJhbXM7Ci0rICAgIENvZGVkQml0c3RyZWFtQVYxQ29udGV4dCAgKmNiY3R4ID0gcHJpdi0+ Y2JjLT5wcml2X2RhdGE7Ci0rICAgIGludCBkaXY7Ci0rCi0rICAgIC8qKiBTZXQgdGlsZSBncm91 cCBpbmZvLiAqLwotKyAgICBkaXYgPSBwcml2LT50aWxlX2NvbHMgKiBwcml2LT50aWxlX3Jvd3Mg LyBwcml2LT50aWxlX2dyb3VwczsKLSsgICAgdnNsaWNlLT50Z19zdGFydCA9IHNsaWNlLT5pbmRl eCAqIGRpdjsKLSsgICAgaWYgKHNsaWNlLT5pbmRleCA9PSAocHJpdi0+dGlsZV9ncm91cHMgLSAx KSkgewotKyAgICAgICAgdnNsaWNlLT50Z19lbmQgPSBwcml2LT50aWxlX2NvbHMgKiBwcml2LT50 aWxlX3Jvd3MgLSAxOwotKyAgICAgICAgY2JjdHgtPnNlZW5fZnJhbWVfaGVhZGVyID0gMDsKLSsg ICAgfSBlbHNlIHsKLSsgICAgICAgIHZzbGljZS0+dGdfZW5kID0gKHNsaWNlLT5pbmRleCArIDEp ICogZGl2IC0gMTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGlu dCB2YWFwaV9lbmNvZGVfYXYxX3dyaXRlX3BpY3R1cmVfaGVhZGVyKEFWQ29kZWNDb250ZXh0ICph dmN0eCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VkFBUElFbmNvZGVQaWN0dXJlICpwaWMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNoYXIgKmRhdGEsIHNpemVfdCAqZGF0YV9sZW4pCi0rewotKyAg ICBWQUFQSUVuY29kZUFWMUNvbnRleHQgICAgICpwcml2ID0gYXZjdHgtPnByaXZfZGF0YTsKLSsg ICAgQ29kZWRCaXRzdHJlYW1GcmFnbWVudCAgICAgKm9idSA9ICZwcml2LT5jdXJyZW50X29idTsK LSsgICAgQ29kZWRCaXRzdHJlYW1BVjFDb250ZXh0ICpjYmN0eCA9IHByaXYtPmNiYy0+cHJpdl9k YXRhOwotKyAgICBBVjFSYXdPQlUgICAgICAgICAgICAgICAqZmhfb2J1ID0gJnByaXYtPmZoOwot KyAgICBBVjFSYXdGcmFtZUhlYWRlciAgICAgICAqcmVwX2ZoID0gJmZoX29idS0+b2J1LmZyYW1l X2hlYWRlcjsKLSsgICAgVkFBUElFbmNvZGVBVjFQaWN0dXJlICpocmVmOwotKyAgICBpbnQgcmV0 ID0gMDsKLSsKLSsgICAgcGljLT50YWlsX3NpemUgPSAwOwotKyAgICAvKiogUGFjayByZXBlYXQg ZnJhbWUgaGVhZGVyLiAqLwotKyAgICBpZiAocGljLT5kaXNwbGF5X29yZGVyID4gcGljLT5lbmNv ZGVfb3JkZXIpIHsKLSsgICAgICAgIG1lbXNldChmaF9vYnUsIDAsIHNpemVvZigqZmhfb2J1KSk7 Ci0rICAgICAgICBocmVmID0gcGljLT5yZWZzWzBdW3BpYy0+bmJfcmVmc1swXSAtIDFdLT5wcml2 X2RhdGE7Ci0rICAgICAgICBmaF9vYnUtPmhlYWRlci5vYnVfdHlwZSA9IEFWMV9PQlVfRlJBTUVf SEVBREVSOwotKyAgICAgICAgZmhfb2J1LT5oZWFkZXIub2J1X2hhc19zaXplX2ZpZWxkID0gMTsK LSsKLSsgICAgICAgIHJlcF9maC0+c2hvd19leGlzdGluZ19mcmFtZSAgID0gMTsKLSsgICAgICAg IHJlcF9maC0+ZnJhbWVfdG9fc2hvd19tYXBfaWR4ID0gaHJlZi0+c2xvdCA9PSAwOwotKyAgICAg ICAgcmVwX2ZoLT5mcmFtZV90eXBlICAgICAgICAgICAgPSBBVjFfRlJBTUVfSU5URVI7Ci0rICAg ICAgICByZXBfZmgtPmZyYW1lX3dpZHRoX21pbnVzXzEgICA9IGF2Y3R4LT53aWR0aCAtIDE7Ci0r ICAgICAgICByZXBfZmgtPmZyYW1lX2hlaWdodF9taW51c18xICA9IGF2Y3R4LT5oZWlnaHQgLSAx OwotKyAgICAgICAgcmVwX2ZoLT5yZW5kZXJfd2lkdGhfbWludXNfMSAgPSByZXBfZmgtPmZyYW1l X3dpZHRoX21pbnVzXzE7Ci0rICAgICAgICByZXBfZmgtPnJlbmRlcl9oZWlnaHRfbWludXNfMSA9 IHJlcF9maC0+ZnJhbWVfaGVpZ2h0X21pbnVzXzE7Ci0rCi0rICAgICAgICBjYmN0eC0+c2Vlbl9m cmFtZV9oZWFkZXIgPSAwOwotKwotKyAgICAgICAgcmV0ID0gdmFhcGlfZW5jb2RlX2F2MV9hZGRf b2J1KGF2Y3R4LCBvYnUsIEFWMV9PQlVfRlJBTUVfSEVBREVSLCAmcHJpdi0+ZmgpOwotKyAgICAg ICAgaWYgKHJldCA8IDApCi0rICAgICAgICAgICAgZ290byBlbmQ7Ci0rCi0rICAgICAgICByZXQg PSB2YWFwaV9lbmNvZGVfYXYxX3dyaXRlX29idShhdmN0eCwgcGljLT50YWlsX2RhdGEsICZwaWMt PnRhaWxfc2l6ZSwgb2J1KTsKLSsgICAgICAgIGlmIChyZXQgPCAwKQotKyAgICAgICAgICAgIGdv dG8gZW5kOwotKwotKyAgICAgICAgcGljLT50YWlsX3NpemUgLz0gODsKLSsgICAgfQotKwotKyAg ICBtZW1jcHkoZGF0YSwgJnByaXYtPmZoX2RhdGEsIE1BWF9QQVJBTV9CVUZGRVJfU0laRSAqIHNp emVvZihjaGFyKSk7Ci0rICAgICpkYXRhX2xlbiA9IHByaXYtPmZoX2RhdGFfbGVuOwotKwotK2Vu ZDoKLSsgICAgZmZfY2JzX2ZyYWdtZW50X3Jlc2V0KG9idSk7Ci0rICAgIHJldHVybiByZXQ7Ci0r fQotKwotK3N0YXRpYyBjb25zdCBWQUFQSUVuY29kZVByb2ZpbGUgdmFhcGlfZW5jb2RlX2F2MV9w cm9maWxlc1tdID0gewotKyAgICB7IEZGX1BST0ZJTEVfQVYxX01BSU4sICA4LCAzLCAxLCAxLCBW QVByb2ZpbGVBVjFQcm9maWxlMCB9LAotKyAgICB7IEZGX1BST0ZJTEVfQVYxX01BSU4sIDEwLCAz LCAxLCAxLCBWQVByb2ZpbGVBVjFQcm9maWxlMCB9LAotKyAgICB7IEZGX1BST0ZJTEVfVU5LTk9X TiB9Ci0rfTsKLSsKLStzdGF0aWMgY29uc3QgVkFBUElFbmNvZGVUeXBlIHZhYXBpX2VuY29kZV90 eXBlX2F2MSA9IHsKLSsgICAgLnByb2ZpbGVzICAgICAgICA9IHZhYXBpX2VuY29kZV9hdjFfcHJv ZmlsZXMsCi0rICAgIC5mbGFncyAgICAgICAgICAgPSBGTEFHX0JfUElDVFVSRVMgfCBGTEFHX1RJ TUVTVEFNUF9OT19ERUxBWSwKLSsgICAgLmRlZmF1bHRfcXVhbGl0eSA9IDI1LAotKwotKyAgICAu Z2V0X2VuY29kZXJfY2FwcyA9ICZ2YWFwaV9lbmNvZGVfYXYxX2dldF9lbmNvZGVyX2NhcHMsCi0r ICAgIC5jb25maWd1cmUgICAgICAgID0gJnZhYXBpX2VuY29kZV9hdjFfY29uZmlndXJlLAotKwot KyAgICAuc2VxdWVuY2VfaGVhZGVyX3R5cGUgID0gVkFFbmNQYWNrZWRIZWFkZXJTZXF1ZW5jZSwK LSsgICAgLnNlcXVlbmNlX3BhcmFtc19zaXplICA9IHNpemVvZihWQUVuY1NlcXVlbmNlUGFyYW1l dGVyQnVmZmVyQVYxKSwKLSsgICAgLmluaXRfc2VxdWVuY2VfcGFyYW1zICA9ICZ2YWFwaV9lbmNv ZGVfYXYxX2luaXRfc2VxdWVuY2VfcGFyYW1zLAotKyAgICAud3JpdGVfc2VxdWVuY2VfaGVhZGVy ID0gJnZhYXBpX2VuY29kZV9hdjFfd3JpdGVfc2VxdWVuY2VfaGVhZGVyLAotKwotKyAgICAucGlj dHVyZV9wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihWQUFQSUVuY29kZUFWMVBpY3R1cmUpLAotKyAg ICAucGljdHVyZV9oZWFkZXJfdHlwZSAgICA9IFZBRW5jUGFja2VkSGVhZGVyUGljdHVyZSwKLSsg ICAgLnBpY3R1cmVfcGFyYW1zX3NpemUgICAgPSBzaXplb2YoVkFFbmNQaWN0dXJlUGFyYW1ldGVy QnVmZmVyQVYxKSwKLSsgICAgLmluaXRfcGljdHVyZV9wYXJhbXMgICAgPSAmdmFhcGlfZW5jb2Rl X2F2MV9pbml0X3BpY3R1cmVfcGFyYW1zLAotKyAgICAud3JpdGVfcGljdHVyZV9oZWFkZXIgICA9 ICZ2YWFwaV9lbmNvZGVfYXYxX3dyaXRlX3BpY3R1cmVfaGVhZGVyLAotKwotKyAgICAuc2xpY2Vf cGFyYW1zX3NpemUgPSBzaXplb2YoVkFFbmNUaWxlR3JvdXBCdWZmZXJBVjEpLAotKyAgICAuaW5p dF9zbGljZV9wYXJhbXMgPSAmdmFhcGlfZW5jb2RlX2F2MV9pbml0X3NsaWNlX3BhcmFtcywKLSt9 OwotKwotK3N0YXRpYyBhdl9jb2xkIGludCB2YWFwaV9lbmNvZGVfYXYxX2luaXQoQVZDb2RlY0Nv bnRleHQgKmF2Y3R4KQotK3sKLSsgICAgVkFBUElFbmNvZGVDb250ZXh0ICAgICAgKmN0eCA9IGF2 Y3R4LT5wcml2X2RhdGE7Ci0rICAgIFZBQVBJRW5jb2RlQVYxQ29udGV4dCAgKnByaXYgPSBhdmN0 eC0+cHJpdl9kYXRhOwotKyAgICBWQUNvbmZpZ0F0dHJpYiBhdHRyOwotKyAgICBWQVN0YXR1cyB2 YXM7Ci0rICAgIGludCByZXQ7Ci0rCi0rICAgIGN0eC0+Y29kZWMgPSAmdmFhcGlfZW5jb2RlX3R5 cGVfYXYxOwotKwotKyAgICBjdHgtPmRlc2lyZWRfcGFja2VkX2hlYWRlcnMgPQotKyAgICAgICAg VkFfRU5DX1BBQ0tFRF9IRUFERVJfU0VRVUVOQ0UgfAotKyAgICAgICAgVkFfRU5DX1BBQ0tFRF9I RUFERVJfUElDVFVSRTsKLSsKLSsgICAgaWYgKGF2Y3R4LT5wcm9maWxlID09IEZGX1BST0ZJTEVf VU5LTk9XTikKLSsgICAgICAgIGF2Y3R4LT5wcm9maWxlID0gcHJpdi0+cHJvZmlsZTsKLSsgICAg aWYgKGF2Y3R4LT5sZXZlbCA9PSBGRl9QUk9GSUxFX1VOS05PV04pCi0rICAgICAgICBhdmN0eC0+ bGV2ZWwgPSBwcml2LT5sZXZlbDsKLSsKLSsgICAgaWYgKGF2Y3R4LT5sZXZlbCAhPSBGRl9QUk9G SUxFX1VOS05PV04gJiYgYXZjdHgtPmxldmVsICYgfjB4MWYpIHsKLSsgICAgICAgIGF2X2xvZyhh dmN0eCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCBsZXZlbCAlZFxuIiwgYXZjdHgtPmxldmVsKTsK LSsgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Ci0rICAgIH0KLSsKLSsgICAgcmV0ID0g ZmZfdmFhcGlfZW5jb2RlX2luaXQoYXZjdHgpOwotKyAgICBpZiAocmV0IDwgMCkKLSsgICAgICAg IHJldHVybiByZXQ7Ci0rCi0rICAgIGF0dHIudHlwZSA9IFZBQ29uZmlnQXR0cmliRW5jQVYxOwot KyAgICB2YXMgPSB2YUdldENvbmZpZ0F0dHJpYnV0ZXMoY3R4LT5od2N0eC0+ZGlzcGxheSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+dmFfcHJvZmlsZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+dmFfZW50cnlwb2ludCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZhdHRyLCAxKTsKLSsgICAgaWYgKHZhcyAhPSBWQV9TVEFU VVNfU1VDQ0VTUykgewotKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJGYWls ZWQgdG8gcXVlcnkgIgotKyAgICAgICAgICAgICAgICJjb25maWcgYXR0cmlidXRlOiAlZCAoJXMp LlxuIiwgdmFzLCB2YUVycm9yU3RyKHZhcykpOwotKyAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhU RVJOQUw7Ci0rICAgIH0gZWxzZSBpZiAoYXR0ci52YWx1ZSA9PSBWQV9BVFRSSUJfTk9UX1NVUFBP UlRFRCkgewotKyAgICAgICAgcHJpdi0+YXR0ci52YWx1ZSA9IDA7Ci0rICAgICAgICBhdl9sb2co YXZjdHgsIEFWX0xPR19XQVJOSU5HLCAiQXR0cmlidXRlIHR5cGU6JWQgaXMgbm90ICIKLSsgICAg ICAgICAgICAgICAic3VwcG9ydGVkLlxuIiwgYXR0ci50eXBlKTsKLSsgICAgfSBlbHNlIHsKLSsg ICAgICAgIHByaXYtPmF0dHIudmFsdWUgPSBhdHRyLnZhbHVlOwotKyAgICB9Ci0rCi0rICAgIGF0 dHIudHlwZSA9IFZBQ29uZmlnQXR0cmliRW5jQVYxRXh0MTsKLSsgICAgdmFzID0gdmFHZXRDb25m aWdBdHRyaWJ1dGVzKGN0eC0+aHdjdHgtPmRpc3BsYXksCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjdHgtPnZhX3Byb2ZpbGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjdHgtPnZhX2VudHJ5cG9pbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmYXR0ciwgMSk7Ci0rICAgIGlmICh2YXMgIT0gVkFfU1RBVFVTX1NVQ0NFU1MpIHsKLSsgICAg ICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIHF1ZXJ5ICIKLSsgICAg ICAgICAgICAgICAiY29uZmlnIGF0dHJpYnV0ZTogJWQgKCVzKS5cbiIsIHZhcywgdmFFcnJvclN0 cih2YXMpKTsKLSsgICAgICAgIHJldHVybiBBVkVSUk9SX0VYVEVSTkFMOwotKyAgICB9IGVsc2Ug aWYgKGF0dHIudmFsdWUgPT0gVkFfQVRUUklCX05PVF9TVVBQT1JURUQpIHsKLSsgICAgICAgIHBy aXYtPmF0dHJfZXh0MS52YWx1ZSA9IDA7Ci0rICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19X QVJOSU5HLCAiQXR0cmlidXRlIHR5cGU6JWQgaXMgbm90ICIKLSsgICAgICAgICAgICAgICAic3Vw cG9ydGVkLlxuIiwgYXR0ci50eXBlKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIHByaXYtPmF0 dHJfZXh0MS52YWx1ZSA9IGF0dHIudmFsdWU7Ci0rICAgIH0KLSsKLSsgICAgLyoqIFRoaXMgYXR0 ciBwcm92aWRlcyBlc3NlbnRpYWwgaW5kaWNhdG9ycywgcmV0dXJuIGVycm9yIGlmIG5vdCBzdXBw b3J0LiAqLwotKyAgICBhdHRyLnR5cGUgPSBWQUNvbmZpZ0F0dHJpYkVuY0FWMUV4dDI7Ci0rICAg IHZhcyA9IHZhR2V0Q29uZmlnQXR0cmlidXRlcyhjdHgtPmh3Y3R4LT5kaXNwbGF5LAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT52YV9wcm9maWxlLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY3R4LT52YV9lbnRyeXBvaW50LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmF0dHIsIDEpOwotKyAgICBpZiAodmFzICE9IFZBX1NUQVRVU19T VUNDRVNTIHx8IGF0dHIudmFsdWUgPT0gVkFfQVRUUklCX05PVF9TVVBQT1JURUQpIHsKLSsgICAg ICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIHF1ZXJ5ICIKLSsgICAg ICAgICAgICAgICAiY29uZmlnIGF0dHJpYnV0ZTogJWQgKCVzKS5cbiIsIHZhcywgdmFFcnJvclN0 cih2YXMpKTsKLSsgICAgICAgIHJldHVybiBBVkVSUk9SX0VYVEVSTkFMOwotKyAgICB9IGVsc2Ug ewotKyAgICAgICAgcHJpdi0+YXR0cl9leHQyLnZhbHVlID0gYXR0ci52YWx1ZTsKLSsgICAgfQot KwotKyAgICByZXQgPSB2YWFwaV9lbmNvZGVfYXYxX3NldF90aWxlKGF2Y3R4KTsKLSsgICAgaWYg KHJldCA8IDApCi0rICAgICAgICByZXR1cm4gcmV0OwotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0r Ci0rc3RhdGljIGF2X2NvbGQgaW50IHZhYXBpX2VuY29kZV9hdjFfY2xvc2UoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4KQotK3sKLSsgICAgVkFBUElFbmNvZGVBVjFDb250ZXh0ICpwcml2ID0gYXZjdHgt PnByaXZfZGF0YTsKLSsKLSsgICAgZmZfY2JzX2ZyYWdtZW50X2ZyZWUoJnByaXYtPmN1cnJlbnRf b2J1KTsKLSsgICAgZmZfY2JzX2Nsb3NlKCZwcml2LT5jYmMpOwotKwotKyAgICByZXR1cm4gZmZf dmFhcGlfZW5jb2RlX2Nsb3NlKGF2Y3R4KTsKLSt9Ci0rCi0rI2RlZmluZSBPRkZTRVQoeCkgb2Zm c2V0b2YoVkFBUElFbmNvZGVBVjFDb250ZXh0LCB4KQotKyNkZWZpbmUgRkxBR1MgKEFWX09QVF9G TEFHX1ZJREVPX1BBUkFNIHwgQVZfT1BUX0ZMQUdfRU5DT0RJTkdfUEFSQU0pCi0rCi0rc3RhdGlj IGNvbnN0IEFWT3B0aW9uIHZhYXBpX2VuY29kZV9hdjFfb3B0aW9uc1tdID0gewotKyAgICBWQUFQ SV9FTkNPREVfQ09NTU9OX09QVElPTlMsCi0rICAgIFZBQVBJX0VOQ09ERV9SQ19PUFRJT05TLAot KyAgICB7ICJwcm9maWxlIiwgIlNldCBwcm9maWxlIChzZXFfcHJvZmlsZSkiLAotKyAgICAgIE9G RlNFVChwcm9maWxlKSwgQVZfT1BUX1RZUEVfSU5ULAotKyAgICAgIHsgLmk2NCA9IEZGX1BST0ZJ TEVfVU5LTk9XTiB9LCBGRl9QUk9GSUxFX1VOS05PV04sIDB4ZmYsIEZMQUdTLCAicHJvZmlsZSIg fSwKLSsKLSsjZGVmaW5lIFBST0ZJTEUobmFtZSwgdmFsdWUpICBuYW1lLCBOVUxMLCAwLCBBVl9P UFRfVFlQRV9DT05TVCwgXAotKyAgICB7IC5pNjQgPSB2YWx1ZSB9LCAwLCAwLCBGTEFHUywgInBy b2ZpbGUiCi0rICAgIHsgUFJPRklMRSgibWFpbiIsICAgICAgICAgICAgICAgRkZfUFJPRklMRV9B VjFfTUFJTikgfSwKLSsgICAgeyBQUk9GSUxFKCJoaWdoIiwgICAgICAgICAgICAgICBGRl9QUk9G SUxFX0FWMV9ISUdIKSB9LAotKyAgICB7IFBST0ZJTEUoInByb2Zlc3Npb25hbCIsICAgICAgIEZG X1BST0ZJTEVfQVYxX1BST0ZFU1NJT05BTCkgfSwKLSsjdW5kZWYgUFJPRklMRQotKwotKyAgICB7 ICJ0aWVyIiwgIlNldCB0aWVyIChzZXFfdGllcikiLAotKyAgICAgIE9GRlNFVCh0aWVyKSwgQVZf T1BUX1RZUEVfSU5ULCB7IC5pNjQgPSAwIH0sIDAsIDEsIEZMQUdTLCAidGllciIgfSwKLSsgICAg eyAibWFpbiIsIE5VTEwsIDAsIEFWX09QVF9UWVBFX0NPTlNULAotKyAgICAgIHsgLmk2NCA9IDAg fSwgMCwgMCwgRkxBR1MsICJ0aWVyIiB9LAotKyAgICB7ICJoaWdoIiwgTlVMTCwgMCwgQVZfT1BU X1RZUEVfQ09OU1QsCi0rICAgICAgeyAuaTY0ID0gMSB9LCAwLCAwLCBGTEFHUywgInRpZXIiIH0s Ci0rICAgIHsgImxldmVsIiwgIlNldCBsZXZlbCAoc2VxX2xldmVsX2lkeCkiLAotKyAgICAgIE9G RlNFVChsZXZlbCksIEFWX09QVF9UWVBFX0lOVCwKLSsgICAgICB7IC5pNjQgPSBGRl9QUk9GSUxF X1VOS05PV04gfSwgRkZfUFJPRklMRV9VTktOT1dOLCAweDFmLCBGTEFHUywgImxldmVsIiB9LAot KwotKyNkZWZpbmUgTEVWRUwobmFtZSwgdmFsdWUpIG5hbWUsIE5VTEwsIDAsIEFWX09QVF9UWVBF X0NPTlNULCBcCi0rICAgICAgeyAuaTY0ID0gdmFsdWUgfSwgMCwgMCwgRkxBR1MsICJsZXZlbCIK LSsgICAgeyBMRVZFTCgiMi4wIiwgIDApIH0sCi0rICAgIHsgTEVWRUwoIjIuMSIsICAxKSB9LAot KyAgICB7IExFVkVMKCIzLjAiLCAgNCkgfSwKLSsgICAgeyBMRVZFTCgiMy4xIiwgIDUpIH0sCi0r ICAgIHsgTEVWRUwoIjQuMCIsICA4KSB9LAotKyAgICB7IExFVkVMKCI0LjEiLCAgOSkgfSwKLSsg ICAgeyBMRVZFTCgiNS4wIiwgMTIpIH0sCi0rICAgIHsgTEVWRUwoIjUuMSIsIDEzKSB9LAotKyAg ICB7IExFVkVMKCI1LjIiLCAxNCkgfSwKLSsgICAgeyBMRVZFTCgiNS4zIiwgMTUpIH0sCi0rICAg IHsgTEVWRUwoIjYuMCIsIDE2KSB9LAotKyAgICB7IExFVkVMKCI2LjEiLCAxNykgfSwKLSsgICAg eyBMRVZFTCgiNi4yIiwgMTgpIH0sCi0rICAgIHsgTEVWRUwoIjYuMyIsIDE5KSB9LAotKyN1bmRl ZiBMRVZFTAotKwotKyAgICB7ICJ0aWxlcyIsICJUaWxlIGNvbHVtbnMgeCByb3dzIChVc2UgbWlu aW1hbCB0aWxlIGNvbHVtbi9yb3cgbnVtYmVyIGF1dG9tYXRpY2FsbHkgYnkgZGVmYXVsdCkiLAot KyAgICAgIE9GRlNFVCh0aWxlX2NvbHMpLCBBVl9PUFRfVFlQRV9JTUFHRV9TSVpFLCB7IC5zdHIg PSBOVUxMIH0sIDAsIDAsIEZMQUdTIH0sCi0rICAgIHsgInRpbGVfZ3JvdXBzIiwgIk51bWJlciBv ZiB0aWxlIGdyb3VwcyBmb3IgZW5jb2RpbmciLAotKyAgICAgIE9GRlNFVCh0aWxlX2dyb3Vwcyks IEFWX09QVF9UWVBFX0lOVCwgeyAuaTY0ID0gMSB9LCAxLCBBVjFfTUFYX1RJTEVfUk9XUyAqIEFW MV9NQVhfVElMRV9DT0xTLCBGTEFHUyB9LAotKwotKyAgICB7IE5VTEwgfSwKLSt9OwotKwotK3N0 YXRpYyBjb25zdCBGRkNvZGVjRGVmYXVsdCB2YWFwaV9lbmNvZGVfYXYxX2RlZmF1bHRzW10gPSB7 Ci0rICAgIHsgImIiLCAgICAgICAgICAgICAgIjAiICAgfSwKLSsgICAgeyAiYmYiLCAgICAgICAg ICAgICAiMiIgICB9LAotKyAgICB7ICJnIiwgICAgICAgICAgICAgICIxMjAiIH0sCi0rICAgIHsg InFtaW4iLCAgICAgICAgICAgIjEiICAgfSwKLSsgICAgeyAicW1heCIsICAgICAgICAgICAiMjU1 IiB9LAotKyAgICB7IE5VTEwgfSwKLSt9OwotKwotK3N0YXRpYyBjb25zdCBBVkNsYXNzIHZhYXBp X2VuY29kZV9hdjFfY2xhc3MgPSB7Ci0rICAgIC5jbGFzc19uYW1lID0gImF2MV92YWFwaSIsCi0r ICAgIC5pdGVtX25hbWUgID0gYXZfZGVmYXVsdF9pdGVtX25hbWUsCi0rICAgIC5vcHRpb24gICAg ID0gdmFhcGlfZW5jb2RlX2F2MV9vcHRpb25zLAotKyAgICAudmVyc2lvbiAgICA9IExJQkFWVVRJ TF9WRVJTSU9OX0lOVCwKLSt9OwotKwotK2NvbnN0IEZGQ29kZWMgZmZfYXYxX3ZhYXBpX2VuY29k ZXIgPSB7Ci0rICAgIC5wLm5hbWUgICAgICAgICA9ICJhdjFfdmFhcGkiLAotKyAgICBDT0RFQ19M T05HX05BTUUoIkFWMSAoVkFBUEkpIiksCi0rICAgIC5wLnR5cGUgICAgICAgICA9IEFWTUVESUFf VFlQRV9WSURFTywKLSsgICAgLnAuaWQgICAgICAgICAgID0gQVZfQ09ERUNfSURfQVYxLAotKyAg ICAucHJpdl9kYXRhX3NpemUgPSBzaXplb2YoVkFBUElFbmNvZGVBVjFDb250ZXh0KSwKLSsgICAg LmluaXQgICAgICAgICAgID0gJnZhYXBpX2VuY29kZV9hdjFfaW5pdCwKLSsgICAgRkZfQ09ERUNf UkVDRUlWRV9QQUNLRVRfQ0IoJmZmX3ZhYXBpX2VuY29kZV9yZWNlaXZlX3BhY2tldCksCi0rICAg IC5jbG9zZSAgICAgICAgICA9ICZ2YWFwaV9lbmNvZGVfYXYxX2Nsb3NlLAotKyAgICAucC5wcml2 X2NsYXNzICAgPSAmdmFhcGlfZW5jb2RlX2F2MV9jbGFzcywKLSsgICAgLnAuY2FwYWJpbGl0aWVz ID0gQVZfQ09ERUNfQ0FQX0RFTEFZIHwgQVZfQ09ERUNfQ0FQX0hBUkRXQVJFIHwKLSsgICAgICAg ICAgICAgICAgICAgICAgQVZfQ09ERUNfQ0FQX0RSMSB8IEFWX0NPREVDX0NBUF9FTkNPREVSX1JF T1JERVJFRF9PUEFRVUUsCi0rICAgIC5jYXBzX2ludGVybmFsICA9IEZGX0NPREVDX0NBUF9OT1Rf SU5JVF9USFJFQURTQUZFIHwKLSsgICAgICAgICAgICAgICAgICAgICAgRkZfQ09ERUNfQ0FQX0lO SVRfQ0xFQU5VUCwKLSsgICAgLmRlZmF1bHRzICAgICAgID0gdmFhcGlfZW5jb2RlX2F2MV9kZWZh dWx0cywKLSsgICAgLnAucGl4X2ZtdHMgPSAoY29uc3QgZW51bSBBVlBpeGVsRm9ybWF0W10pIHsK LSsgICAgICAgIEFWX1BJWF9GTVRfVkFBUEksCi0rICAgICAgICBBVl9QSVhfRk1UX05PTkUsCi0r ICAgIH0sCi0rICAgIC5od19jb25maWdzICAgICA9IGZmX3ZhYXBpX2VuY29kZV9od19jb25maWdz LAotKyAgICAucC53cmFwcGVyX25hbWUgPSAidmFhcGkiLAotK307Ci1kaWZmIC0tZ2l0IGEvbGli YXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2NC5jIGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2 NC5jCi1pbmRleCA2NDVmNmE5Li5jMjA1ZDFlIDEwMDY0NAotLS0tIGEvbGliYXZjb2RlYy92YWFw aV9lbmNvZGVfaDI2NC5jCi0rKysgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9oMjY0LmMKLUBA IC02MTQsNyArNjE0LDcgQEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfaDI2NF9pbml0X3BpY3R1 cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKLSAgICAgVkFBUElFbmNvZGVQaWN0dXJl ICAgICAgICAgICAgICAqcHJldiA9IHBpYy0+cHJldjsKLSAgICAgVkFBUElFbmNvZGVIMjY0UGlj dHVyZSAgICAgICAgICpocHJldiA9IHByZXYgPyBwcmV2LT5wcml2X2RhdGEgOiBOVUxMOwotICAg ICBWQUVuY1BpY3R1cmVQYXJhbWV0ZXJCdWZmZXJIMjY0ICp2cGljID0gcGljLT5jb2RlY19waWN0 dXJlX3BhcmFtczsKLS0gICAgaW50IGk7Ci0rICAgIGludCBpLCBqID0gMDsKLSAKLSAgICAgaWYg KHBpYy0+dHlwZSA9PSBQSUNUVVJFX1RZUEVfSURSKSB7Ci0gICAgICAgICBhdl9hc3NlcnQwKHBp Yy0+ZGlzcGxheV9vcmRlciA9PSBwaWMtPmVuY29kZV9vcmRlcik7Ci1AQCAtNzE1LDI0ICs3MTUs MjYgQEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfaDI2NF9pbml0X3BpY3R1cmVfcGFyYW1zKEFW Q29kZWNDb250ZXh0ICphdmN0eCwKLSAgICAgICAgIC5Ub3BGaWVsZE9yZGVyQ250ICAgID0gaHBp Yy0+cGljX29yZGVyX2NudCwKLSAgICAgICAgIC5Cb3R0b21GaWVsZE9yZGVyQ250ID0gaHBpYy0+ cGljX29yZGVyX2NudCwKLSAgICAgfTsKLS0KLS0gICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJf cmVmczsgaSsrKSB7Ci0tICAgICAgICBWQUFQSUVuY29kZVBpY3R1cmUgICAgICAqcmVmID0gcGlj LT5yZWZzW2ldOwotLSAgICAgICAgVkFBUElFbmNvZGVIMjY0UGljdHVyZSAqaHJlZjsKLS0KLS0g ICAgICAgIGF2X2Fzc2VydDAocmVmICYmIHJlZi0+ZW5jb2RlX29yZGVyIDwgcGljLT5lbmNvZGVf b3JkZXIpOwotLSAgICAgICAgaHJlZiA9IHJlZi0+cHJpdl9kYXRhOwotLQotLSAgICAgICAgdnBp Yy0+UmVmZXJlbmNlRnJhbWVzW2ldID0gKFZBUGljdHVyZUgyNjQpIHsKLS0gICAgICAgICAgICAu cGljdHVyZV9pZCAgICAgICAgICA9IHJlZi0+cmVjb25fc3VyZmFjZSwKLS0gICAgICAgICAgICAu ZnJhbWVfaWR4ICAgICAgICAgICA9IGhyZWYtPmZyYW1lX251bSwKLS0gICAgICAgICAgICAuZmxh Z3MgICAgICAgICAgICAgICA9IFZBX1BJQ1RVUkVfSDI2NF9TSE9SVF9URVJNX1JFRkVSRU5DRSwK LS0gICAgICAgICAgICAuVG9wRmllbGRPcmRlckNudCAgICA9IGhyZWYtPnBpY19vcmRlcl9jbnQs Ci0tICAgICAgICAgICAgLkJvdHRvbUZpZWxkT3JkZXJDbnQgPSBocmVmLT5waWNfb3JkZXJfY250 LAotLSAgICAgICAgfTsKLSsgICAgZm9yIChpbnQgayA9IDA7IGsgPCBNQVhfUkVGRVJFTkNFX0xJ U1RfTlVNOyBrKyspIHsKLSsgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNba107 IGkrKykgewotKyAgICAgICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAgICAgICpyZWYgPSBwaWMt PnJlZnNba11baV07Ci0rICAgICAgICAgICAgVkFBUElFbmNvZGVIMjY0UGljdHVyZSAqaHJlZjsK LSsKLSsgICAgICAgICAgICBhdl9hc3NlcnQwKHJlZiAmJiByZWYtPmVuY29kZV9vcmRlciA8IHBp Yy0+ZW5jb2RlX29yZGVyKTsKLSsgICAgICAgICAgICBocmVmID0gcmVmLT5wcml2X2RhdGE7Ci0r Ci0rICAgICAgICAgICAgdnBpYy0+UmVmZXJlbmNlRnJhbWVzW2orK10gPSAoVkFQaWN0dXJlSDI2 NCkgewotKyAgICAgICAgICAgICAgICAucGljdHVyZV9pZCAgICAgICAgICA9IHJlZi0+cmVjb25f c3VyZmFjZSwKLSsgICAgICAgICAgICAgICAgLmZyYW1lX2lkeCAgICAgICAgICAgPSBocmVmLT5m cmFtZV9udW0sCi0rICAgICAgICAgICAgICAgIC5mbGFncyAgICAgICAgICAgICAgID0gVkFfUElD VFVSRV9IMjY0X1NIT1JUX1RFUk1fUkVGRVJFTkNFLAotKyAgICAgICAgICAgICAgICAuVG9wRmll bGRPcmRlckNudCAgICA9IGhyZWYtPnBpY19vcmRlcl9jbnQsCi0rICAgICAgICAgICAgICAgIC5C b3R0b21GaWVsZE9yZGVyQ250ID0gaHJlZi0+cGljX29yZGVyX2NudCwKLSsgICAgICAgICAgICB9 OwotKyAgICAgICAgfQotICAgICB9Ci0tICAgIGZvciAoOyBpIDwgRkZfQVJSQVlfRUxFTVModnBp Yy0+UmVmZXJlbmNlRnJhbWVzKTsgaSsrKSB7Ci0tICAgICAgICB2cGljLT5SZWZlcmVuY2VGcmFt ZXNbaV0gPSAoVkFQaWN0dXJlSDI2NCkgewotKwotKyAgICBmb3IgKDsgaiA8IEZGX0FSUkFZX0VM RU1TKHZwaWMtPlJlZmVyZW5jZUZyYW1lcyk7IGorKykgewotKyAgICAgICAgdnBpYy0+UmVmZXJl bmNlRnJhbWVzW2pdID0gKFZBUGljdHVyZUgyNjQpIHsKLSAgICAgICAgICAgICAucGljdHVyZV9p ZCA9IFZBX0lOVkFMSURfSUQsCi0gICAgICAgICAgICAgLmZsYWdzICAgICAgPSBWQV9QSUNUVVJF X0gyNjRfSU5WQUxJRCwKLSAgICAgICAgIH07Ci1AQCAtOTM0LDE3ICs5MzYsMTcgQEAgc3RhdGlj IGludCB2YWFwaV9lbmNvZGVfaDI2NF9pbml0X3NsaWNlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAq YXZjdHgsCi0gCi0gICAgICAgICBpZiAocGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9QKSB7Ci0g ICAgICAgICAgICAgaW50IG5lZWRfcnBsbSA9IDA7Ci0tICAgICAgICAgICAgZm9yIChpID0gMDsg aSA8IHBpYy0+bmJfcmVmczsgaSsrKSB7Ci0tICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAocGlj LT5yZWZzW2ldKTsKLS0gICAgICAgICAgICAgICAgaWYgKHBpYy0+cmVmc1tpXSAhPSBkZWZfbDBb aV0pCi0rICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpYy0+bmJfcmVmc1swXTsgaSsrKSB7 Ci0rICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzBdW2ldKTsKLSsgICAgICAg ICAgICAgICAgaWYgKHBpYy0+cmVmc1swXVtpXSAhPSBkZWZfbDBbaV0pCi0gICAgICAgICAgICAg ICAgICAgICBuZWVkX3JwbG0gPSAxOwotICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICBz aC0+cmVmX3BpY19saXN0X21vZGlmaWNhdGlvbl9mbGFnX2wwID0gbmVlZF9ycGxtOwotICAgICAg ICAgICAgIGlmIChuZWVkX3JwbG0pIHsKLSAgICAgICAgICAgICAgICAgaW50IHBpY19udW0gPSBo cGljLT5mcmFtZV9udW07Ci0tICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5i X3JlZnM7IGkrKykgewotLSAgICAgICAgICAgICAgICAgICAgaHJlZiA9IHBpYy0+cmVmc1tpXS0+ cHJpdl9kYXRhOwotKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZz WzBdOyBpKyspIHsKLSsgICAgICAgICAgICAgICAgICAgIGhyZWYgPSBwaWMtPnJlZnNbMF1baV0t PnByaXZfZGF0YTsKLSAgICAgICAgICAgICAgICAgICAgIGF2X2Fzc2VydDAoaHJlZi0+ZnJhbWVf bnVtICE9IHBpY19udW0pOwotICAgICAgICAgICAgICAgICAgICAgaWYgKGhyZWYtPmZyYW1lX251 bSA8IHBpY19udW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaC0+cnBsbV9sMFtpXS5t b2RpZmljYXRpb25fb2ZfcGljX251bXNfaWRjID0gMDsKLUBAIC05NjMsMjggKzk2NSwyOSBAQCBz dGF0aWMgaW50IHZhYXBpX2VuY29kZV9oMjY0X2luaXRfc2xpY2VfcGFyYW1zKEFWQ29kZWNDb250 ZXh0ICphdmN0eCwKLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgaW50IG5lZWRfcnBs bV9sMCA9IDAsIG5lZWRfcnBsbV9sMSA9IDA7Ci0gICAgICAgICAgICAgaW50IG4wID0gMCwgbjEg PSAwOwotLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnM7IGkrKykgewot LSAgICAgICAgICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1tpXSk7Ci0tICAgICAgICAgICAg ICAgIGhyZWYgPSBwaWMtPnJlZnNbaV0tPnByaXZfZGF0YTsKLS0gICAgICAgICAgICAgICAgYXZf YXNzZXJ0MChocmVmLT5waWNfb3JkZXJfY250ICE9IGhwaWMtPnBpY19vcmRlcl9jbnQpOwotLSAg ICAgICAgICAgICAgICBpZiAoaHJlZi0+cGljX29yZGVyX2NudCA8IGhwaWMtPnBpY19vcmRlcl9j bnQpIHsKLS0gICAgICAgICAgICAgICAgICAgIGlmIChwaWMtPnJlZnNbaV0gIT0gZGVmX2wwW24w XSkKLS0gICAgICAgICAgICAgICAgICAgICAgICBuZWVkX3JwbG1fbDAgPSAxOwotLSAgICAgICAg ICAgICAgICAgICAgKytuMDsKLS0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAg ICAgICAgICAgIGlmIChwaWMtPnJlZnNbaV0gIT0gZGVmX2wxW24xXSkKLS0gICAgICAgICAgICAg ICAgICAgICAgICBuZWVkX3JwbG1fbDEgPSAxOwotLSAgICAgICAgICAgICAgICAgICAgKytuMTsK LS0gICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5i X3JlZnNbMF07IGkrKykgewotKyAgICAgICAgICAgICAgICBhdl9hc3NlcnQwKHBpYy0+cmVmc1sw XVtpXSk7Ci0rICAgICAgICAgICAgICAgIGhyZWYgPSBwaWMtPnJlZnNbMF1baV0tPnByaXZfZGF0 YTsKLSsgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MChocmVmLT5waWNfb3JkZXJfY250IDwgaHBp Yy0+cGljX29yZGVyX2NudCk7Ci0rICAgICAgICAgICAgICAgIGlmIChwaWMtPnJlZnNbMF1baV0g IT0gZGVmX2wwW24wXSkKLSsgICAgICAgICAgICAgICAgICAgIG5lZWRfcnBsbV9sMCA9IDE7Ci0r ICAgICAgICAgICAgICAgICsrbjA7Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIGZv ciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnNbMV07IGkrKykgewotKyAgICAgICAgICAgICAgICBh dl9hc3NlcnQwKHBpYy0+cmVmc1sxXVtpXSk7Ci0rICAgICAgICAgICAgICAgIGhyZWYgPSBwaWMt PnJlZnNbMV1baV0tPnByaXZfZGF0YTsKLSsgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MChocmVm LT5waWNfb3JkZXJfY250ID4gaHBpYy0+cGljX29yZGVyX2NudCk7Ci0rICAgICAgICAgICAgICAg IGlmIChwaWMtPnJlZnNbMV1baV0gIT0gZGVmX2wxW24xXSkKLSsgICAgICAgICAgICAgICAgICAg IG5lZWRfcnBsbV9sMSA9IDE7Ci0rICAgICAgICAgICAgICAgICsrbjE7Ci0gICAgICAgICAgICAg fQotIAotICAgICAgICAgICAgIHNoLT5yZWZfcGljX2xpc3RfbW9kaWZpY2F0aW9uX2ZsYWdfbDAg PSBuZWVkX3JwbG1fbDA7Ci0gICAgICAgICAgICAgaWYgKG5lZWRfcnBsbV9sMCkgewotICAgICAg ICAgICAgICAgICBpbnQgcGljX251bSA9IGhwaWMtPmZyYW1lX251bTsKLS0gICAgICAgICAgICAg ICAgZm9yIChpID0gaiA9IDA7IGkgPCBwaWMtPm5iX3JlZnM7IGkrKykgewotLSAgICAgICAgICAg ICAgICAgICAgaHJlZiA9IHBpYy0+cmVmc1tpXS0+cHJpdl9kYXRhOwotLSAgICAgICAgICAgICAg ICAgICAgaWYgKGhyZWYtPnBpY19vcmRlcl9jbnQgPiBocGljLT5waWNfb3JkZXJfY250KQotLSAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgICAgICAgICBmb3IgKGkg PSBqID0gMDsgaSA8IHBpYy0+bmJfcmVmc1swXTsgaSsrKSB7Ci0rICAgICAgICAgICAgICAgICAg ICBocmVmID0gcGljLT5yZWZzWzBdW2ldLT5wcml2X2RhdGE7Ci0gICAgICAgICAgICAgICAgICAg ICBhdl9hc3NlcnQwKGhyZWYtPmZyYW1lX251bSAhPSBwaWNfbnVtKTsKLSAgICAgICAgICAgICAg ICAgICAgIGlmIChocmVmLT5mcmFtZV9udW0gPCBwaWNfbnVtKSB7Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgc2gtPnJwbG1fbDBbal0ubW9kaWZpY2F0aW9uX29mX3BpY19udW1zX2lkYyA9IDA7 Ci1AQCAtMTAwNSwxMCArMTAwOCw4IEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2gyNjRfaW5p dF9zbGljZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotICAgICAgICAgICAgIHNoLT5y ZWZfcGljX2xpc3RfbW9kaWZpY2F0aW9uX2ZsYWdfbDEgPSBuZWVkX3JwbG1fbDE7Ci0gICAgICAg ICAgICAgaWYgKG5lZWRfcnBsbV9sMSkgewotICAgICAgICAgICAgICAgICBpbnQgcGljX251bSA9 IGhwaWMtPmZyYW1lX251bTsKLS0gICAgICAgICAgICAgICAgZm9yIChpID0gaiA9IDA7IGkgPCBw aWMtPm5iX3JlZnM7IGkrKykgewotLSAgICAgICAgICAgICAgICAgICAgaHJlZiA9IHBpYy0+cmVm c1tpXS0+cHJpdl9kYXRhOwotLSAgICAgICAgICAgICAgICAgICAgaWYgKGhyZWYtPnBpY19vcmRl cl9jbnQgPCBocGljLT5waWNfb3JkZXJfY250KQotLSAgICAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOwotKyAgICAgICAgICAgICAgICBmb3IgKGkgPSBqID0gMDsgaSA8IHBpYy0+bmJfcmVm c1sxXTsgaSsrKSB7Ci0rICAgICAgICAgICAgICAgICAgICBocmVmID0gcGljLT5yZWZzWzFdW2ld LT5wcml2X2RhdGE7Ci0gICAgICAgICAgICAgICAgICAgICBhdl9hc3NlcnQwKGhyZWYtPmZyYW1l X251bSAhPSBwaWNfbnVtKTsKLSAgICAgICAgICAgICAgICAgICAgIGlmIChocmVmLT5mcmFtZV9u dW0gPCBwaWNfbnVtKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgc2gtPnJwbG1fbDFbal0u bW9kaWZpY2F0aW9uX29mX3BpY19udW1zX2lkYyA9IDA7Ci1AQCAtMTA0OCwxNCArMTA0OSwxMyBA QCBzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9oMjY0X2luaXRfc2xpY2VfcGFyYW1zKEFWQ29kZWND b250ZXh0ICphdmN0eCwKLSAgICAgICAgIHZzbGljZS0+UmVmUGljTGlzdDFbaV0uZmxhZ3MgICAg ICA9IFZBX1BJQ1RVUkVfSDI2NF9JTlZBTElEOwotICAgICB9Ci0gCi0tICAgIGF2X2Fzc2VydDAo cGljLT5uYl9yZWZzIDw9IDIpOwotLSAgICBpZiAocGljLT5uYl9yZWZzID49IDEpIHsKLSsgICAg aWYgKHBpYy0+bmJfcmVmc1swXSkgewotICAgICAgICAgLy8gQmFja3dhcmQgcmVmZXJlbmNlIGZv ciBQLSBvciBCLWZyYW1lLgotICAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnR5cGUgPT0gUElDVFVS RV9UWVBFX1AgfHwKLSAgICAgICAgICAgICAgICAgICAgcGljLT50eXBlID09IFBJQ1RVUkVfVFlQ RV9CKTsKLSAgICAgICAgIHZzbGljZS0+UmVmUGljTGlzdDBbMF0gPSB2cGljLT5SZWZlcmVuY2VG cmFtZXNbMF07Ci0gICAgIH0KLS0gICAgaWYgKHBpYy0+bmJfcmVmcyA+PSAyKSB7Ci0rICAgIGlm IChwaWMtPm5iX3JlZnNbMV0pIHsKLSAgICAgICAgIC8vIEZvcndhcmQgcmVmZXJlbmNlIGZvciBC LWZyYW1lLgotICAgICAgICAgYXZfYXNzZXJ0MChwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0Ip OwotICAgICAgICAgdnNsaWNlLT5SZWZQaWNMaXN0MVswXSA9IHZwaWMtPlJlZmVyZW5jZUZyYW1l c1sxXTsKLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9oMjY1LmMgYi9saWJh dmNvZGVjL3ZhYXBpX2VuY29kZV9oMjY1LmMKLWluZGV4IGFhN2U1MzIuLmYwMTVlNmYgMTAwNjQ0 Ci0tLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9oMjY1LmMKLSsrKyBiL2xpYmF2Y29kZWMv dmFhcGlfZW5jb2RlX2gyNjUuYwotQEAgLTc2NCw3ICs3NjQsNyBAQCBzdGF0aWMgaW50IHZhYXBp X2VuY29kZV9oMjY1X2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAot ICAgICBWQUFQSUVuY29kZVBpY3R1cmUgICAgICAgICAgICAgICpwcmV2ID0gcGljLT5wcmV2Owot ICAgICBWQUFQSUVuY29kZUgyNjVQaWN0dXJlICAgICAgICAgKmhwcmV2ID0gcHJldiA/IHByZXYt PnByaXZfZGF0YSA6IE5VTEw7Ci0gICAgIFZBRW5jUGljdHVyZVBhcmFtZXRlckJ1ZmZlckhFVkMg KnZwaWMgPSBwaWMtPmNvZGVjX3BpY3R1cmVfcGFyYW1zOwotLSAgICBpbnQgaTsKLSsgICAgaW50 IGksIGogPSAwOwotIAotICAgICBpZiAocGljLT50eXBlID09IFBJQ1RVUkVfVFlQRV9JRFIpIHsK LSAgICAgICAgIGF2X2Fzc2VydDAocGljLT5kaXNwbGF5X29yZGVyID09IHBpYy0+ZW5jb2RlX29y ZGVyKTsKLUBAIC03ODksOCArNzg5LDggQEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfaDI2NV9p bml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKLSAgICAgICAgICAgICBo cGljLT5waWNfdHlwZSAgICAgICA9IDE7Ci0gICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg IFZBQVBJRW5jb2RlUGljdHVyZSAqaXJhcF9yZWY7Ci0tICAgICAgICAgICAgYXZfYXNzZXJ0MChw aWMtPnJlZnNbMF0gJiYgcGljLT5yZWZzWzFdKTsKLS0gICAgICAgICAgICBmb3IgKGlyYXBfcmVm ID0gcGljOyBpcmFwX3JlZjsgaXJhcF9yZWYgPSBpcmFwX3JlZi0+cmVmc1sxXSkgewotKyAgICAg ICAgICAgIGF2X2Fzc2VydDAocGljLT5yZWZzWzBdWzBdICYmIHBpYy0+cmVmc1sxXVswXSk7Ci0r ICAgICAgICAgICAgZm9yIChpcmFwX3JlZiA9IHBpYzsgaXJhcF9yZWY7IGlyYXBfcmVmID0gaXJh cF9yZWYtPnJlZnNbMV1bMF0pIHsKLSAgICAgICAgICAgICAgICAgaWYgKGlyYXBfcmVmLT50eXBl ID09IFBJQ1RVUkVfVFlQRV9JKQotICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg ICAgICAgfQotQEAgLTkxNSwyNCArOTE1LDI3IEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2gy NjVfaW5pdF9waWN0dXJlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCi0gICAgICAgICAu ZmxhZ3MgICAgICAgICA9IDAsCi0gICAgIH07Ci0gCi0tICAgIGZvciAoaSA9IDA7IGkgPCBwaWMt Pm5iX3JlZnM7IGkrKykgewotLSAgICAgICAgVkFBUElFbmNvZGVQaWN0dXJlICAgICAgKnJlZiA9 IHBpYy0+cmVmc1tpXTsKLS0gICAgICAgIFZBQVBJRW5jb2RlSDI2NVBpY3R1cmUgKmhyZWY7Ci0t Ci0tICAgICAgICBhdl9hc3NlcnQwKHJlZiAmJiByZWYtPmVuY29kZV9vcmRlciA8IHBpYy0+ZW5j b2RlX29yZGVyKTsKLS0gICAgICAgIGhyZWYgPSByZWYtPnByaXZfZGF0YTsKLS0KLS0gICAgICAg IHZwaWMtPnJlZmVyZW5jZV9mcmFtZXNbaV0gPSAoVkFQaWN0dXJlSEVWQykgewotLSAgICAgICAg ICAgIC5waWN0dXJlX2lkICAgID0gcmVmLT5yZWNvbl9zdXJmYWNlLAotLSAgICAgICAgICAgIC5w aWNfb3JkZXJfY250ID0gaHJlZi0+cGljX29yZGVyX2NudCwKLS0gICAgICAgICAgICAuZmxhZ3Mg PSAocmVmLT5kaXNwbGF5X29yZGVyIDwgcGljLT5kaXNwbGF5X29yZGVyID8KLS0gICAgICAgICAg ICAgICAgICAgICAgVkFfUElDVFVSRV9IRVZDX1JQU19TVF9DVVJSX0JFRk9SRSA6IDApIHwKLS0g ICAgICAgICAgICAgICAgICAgICAocmVmLT5kaXNwbGF5X29yZGVyID4gcGljLT5kaXNwbGF5X29y ZGVyID8KLS0gICAgICAgICAgICAgICAgICAgICAgVkFfUElDVFVSRV9IRVZDX1JQU19TVF9DVVJS X0FGVEVSICA6IDApLAotLSAgICAgICAgfTsKLSsgICAgZm9yIChpbnQgayA9IDA7IGsgPCBNQVhf UkVGRVJFTkNFX0xJU1RfTlVNOyBrKyspIHsKLSsgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMt Pm5iX3JlZnNba107IGkrKykgewotKyAgICAgICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAgICAg ICpyZWYgPSBwaWMtPnJlZnNba11baV07Ci0rICAgICAgICAgICAgVkFBUElFbmNvZGVIMjY1UGlj dHVyZSAqaHJlZjsKLSsKLSsgICAgICAgICAgICBhdl9hc3NlcnQwKHJlZiAmJiByZWYtPmVuY29k ZV9vcmRlciA8IHBpYy0+ZW5jb2RlX29yZGVyKTsKLSsgICAgICAgICAgICBocmVmID0gcmVmLT5w cml2X2RhdGE7Ci0rCi0rICAgICAgICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tqKytdID0g KFZBUGljdHVyZUhFVkMpIHsKLSsgICAgICAgICAgICAgICAgLnBpY3R1cmVfaWQgICAgPSByZWYt PnJlY29uX3N1cmZhY2UsCi0rICAgICAgICAgICAgICAgIC5waWNfb3JkZXJfY250ID0gaHJlZi0+ cGljX29yZGVyX2NudCwKLSsgICAgICAgICAgICAgICAgLmZsYWdzID0gKHJlZi0+ZGlzcGxheV9v cmRlciA8IHBpYy0+ZGlzcGxheV9vcmRlciA/Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICBW QV9QSUNUVVJFX0hFVkNfUlBTX1NUX0NVUlJfQkVGT1JFIDogMCkgfAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKHJlZi0+ZGlzcGxheV9vcmRlciA+IHBpYy0+ZGlzcGxheV9vcmRlciA/Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICBWQV9QSUNUVVJFX0hFVkNfUlBTX1NUX0NVUlJfQUZU RVIgIDogMCksCi0rICAgICAgICAgICAgfTsKLSsgICAgICAgIH0KLSAgICAgfQotLSAgICBmb3Ig KDsgaSA8IEZGX0FSUkFZX0VMRU1TKHZwaWMtPnJlZmVyZW5jZV9mcmFtZXMpOyBpKyspIHsKLS0g ICAgICAgIHZwaWMtPnJlZmVyZW5jZV9mcmFtZXNbaV0gPSAoVkFQaWN0dXJlSEVWQykgewotKwot KyAgICBmb3IgKDsgaiA8IEZGX0FSUkFZX0VMRU1TKHZwaWMtPnJlZmVyZW5jZV9mcmFtZXMpOyBq KyspIHsKLSsgICAgICAgIHZwaWMtPnJlZmVyZW5jZV9mcmFtZXNbal0gPSAoVkFQaWN0dXJlSEVW QykgewotICAgICAgICAgICAgIC5waWN0dXJlX2lkID0gVkFfSU5WQUxJRF9JRCwKLSAgICAgICAg ICAgICAuZmxhZ3MgICAgICA9IFZBX1BJQ1RVUkVfSEVWQ19JTlZBTElELAotICAgICAgICAgfTsK LUBAIC0xMDE2LDIxICsxMDE5LDMzIEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2gyNjVfaW5p dF9zbGljZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotICAgICAgICAgbWVtc2V0KHJw cywgMCwgc2l6ZW9mKCpycHMpKTsKLSAKLSAgICAgICAgIHJwc19waWNzID0gMDsKLS0gICAgICAg IGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX3JlZnM7IGkrKykgewotLSAgICAgICAgICAgIHN0cnAg PSBwaWMtPnJlZnNbaV0tPnByaXZfZGF0YTsKLS0gICAgICAgICAgICBycHNfcG9jW3Jwc19waWNz XSAgPSBzdHJwLT5waWNfb3JkZXJfY250OwotLSAgICAgICAgICAgIHJwc191c2VkW3Jwc19waWNz XSA9IDE7Ci0tICAgICAgICAgICAgKytycHNfcGljczsKLSsgICAgICAgIGZvciAoaSA9IDA7IGkg PCBNQVhfUkVGRVJFTkNFX0xJU1RfTlVNOyBpKyspIHsKLSsgICAgICAgICAgICBmb3IgKGogPSAw OyBqIDwgcGljLT5uYl9yZWZzW2ldOyBqKyspIHsKLSsgICAgICAgICAgICAgICAgc3RycCA9IHBp Yy0+cmVmc1tpXVtqXS0+cHJpdl9kYXRhOwotKyAgICAgICAgICAgICAgICBycHNfcG9jW3Jwc19w aWNzXSAgPSBzdHJwLT5waWNfb3JkZXJfY250OwotKyAgICAgICAgICAgICAgICBycHNfdXNlZFty cHNfcGljc10gPSAxOwotKyAgICAgICAgICAgICAgICArK3Jwc19waWNzOwotKyAgICAgICAgICAg IH0KLSAgICAgICAgIH0KLSsKLSAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaWMtPm5iX2RwYl9w aWNzOyBpKyspIHsKLSAgICAgICAgICAgICBpZiAocGljLT5kcGJbaV0gPT0gcGljKQotICAgICAg ICAgICAgICAgICBjb250aW51ZTsKLS0gICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgcGljLT5u Yl9yZWZzOyBqKyspIHsKLS0gICAgICAgICAgICAgICAgaWYgKHBpYy0+ZHBiW2ldID09IHBpYy0+ cmVmc1tqXSkKLSsKLSsgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgcGljLT5uYl9yZWZzWzBd OyBqKyspIHsKLSsgICAgICAgICAgICAgICAgaWYgKHBpYy0+ZHBiW2ldID09IHBpYy0+cmVmc1sw XVtqXSkKLSsgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIH0KLSsgICAg ICAgICAgICBpZiAoaiA8IHBpYy0+bmJfcmVmc1swXSkKLSsgICAgICAgICAgICAgICAgY29udGlu dWU7Ci0rCi0rICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHBpYy0+bmJfcmVmc1sxXTsgaisr KSB7Ci0rICAgICAgICAgICAgICAgIGlmIChwaWMtPmRwYltpXSA9PSBwaWMtPnJlZnNbMV1bal0p Ci0gICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAg ICAgaWYgKGogPCBwaWMtPm5iX3JlZnMpCi0rICAgICAgICAgICAgaWYgKGogPCBwaWMtPm5iX3Jl ZnNbMV0pCi0gICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKwotICAgICAgICAgICAgIHN0cnAg PSBwaWMtPmRwYltpXS0+cHJpdl9kYXRhOwotICAgICAgICAgICAgIHJwc19wb2NbcnBzX3BpY3Nd ICA9IHN0cnAtPnBpY19vcmRlcl9jbnQ7Ci0gICAgICAgICAgICAgcnBzX3VzZWRbcnBzX3BpY3Nd ID0gMDsKLUBAIC0xMTU1LDggKzExNzAsNyBAQCBzdGF0aWMgaW50IHZhYXBpX2VuY29kZV9oMjY1 X2luaXRfc2xpY2VfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKLSAgICAgICAgIHZzbGlj ZS0+cmVmX3BpY19saXN0MVtpXS5mbGFncyAgICAgID0gVkFfUElDVFVSRV9IRVZDX0lOVkFMSUQ7 Ci0gICAgIH0KLSAKLS0gICAgYXZfYXNzZXJ0MChwaWMtPm5iX3JlZnMgPD0gMik7Ci0tICAgIGlm IChwaWMtPm5iX3JlZnMgPj0gMSkgewotKyAgICBpZiAocGljLT5uYl9yZWZzWzBdKSB7Ci0gICAg ICAgICAvLyBCYWNrd2FyZCByZWZlcmVuY2UgZm9yIFAtIG9yIEItZnJhbWUuCi0gICAgICAgICBh dl9hc3NlcnQwKHBpYy0+dHlwZSA9PSBQSUNUVVJFX1RZUEVfUCB8fAotICAgICAgICAgICAgICAg ICAgICBwaWMtPnR5cGUgPT0gUElDVFVSRV9UWVBFX0IpOwotQEAgLTExNjUsNyArMTE3OSw3IEBA IHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX2gyNjVfaW5pdF9zbGljZV9wYXJhbXMoQVZDb2RlY0Nv bnRleHQgKmF2Y3R4LAotICAgICAgICAgICAgIC8vIFJlZmVyZW5jZSBmb3IgR1BCIEItZnJhbWUs IEwwID09IEwxCi0gICAgICAgICAgICAgdnNsaWNlLT5yZWZfcGljX2xpc3QxWzBdID0gdnBpYy0+ cmVmZXJlbmNlX2ZyYW1lc1swXTsKLSAgICAgfQotLSAgICBpZiAocGljLT5uYl9yZWZzID49IDIp IHsKLSsgICAgaWYgKHBpYy0+bmJfcmVmc1sxXSkgewotICAgICAgICAgLy8gRm9yd2FyZCByZWZl cmVuY2UgZm9yIEItZnJhbWUuCi0gICAgICAgICBhdl9hc3NlcnQwKHBpYy0+dHlwZSA9PSBQSUNU VVJFX1RZUEVfQik7Ci0gICAgICAgICB2c2xpY2UtPnJlZl9waWNfbGlzdDFbMF0gPSB2cGljLT5y ZWZlcmVuY2VfZnJhbWVzWzFdOwotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2Rl X21wZWcyLmMgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9tcGVnMi5jCi1pbmRleCA5MjYxZDE5 Li44MDAwYWUxIDEwMDY0NAotLS0tIGEvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfbXBlZzIuYwot KysrIGIvbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfbXBlZzIuYwotQEAgLTQ1OCwxMiArNDU4LDEy IEBAIHN0YXRpYyBpbnQgdmFhcGlfZW5jb2RlX21wZWcyX2luaXRfcGljdHVyZV9wYXJhbXMoQVZD b2RlY0NvbnRleHQgKmF2Y3R4LAotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgUElDVFVSRV9U WVBFX1A6Ci0gICAgICAgICB2cGljLT5waWN0dXJlX3R5cGUgPSBWQUVuY1BpY3R1cmVUeXBlUHJl ZGljdGl2ZTsKLS0gICAgICAgIHZwaWMtPmZvcndhcmRfcmVmZXJlbmNlX3BpY3R1cmUgPSBwaWMt PnJlZnNbMF0tPnJlY29uX3N1cmZhY2U7Ci0rICAgICAgICB2cGljLT5mb3J3YXJkX3JlZmVyZW5j ZV9waWN0dXJlID0gcGljLT5yZWZzWzBdWzBdLT5yZWNvbl9zdXJmYWNlOwotICAgICAgICAgYnJl YWs7Ci0gICAgIGNhc2UgUElDVFVSRV9UWVBFX0I6Ci0gICAgICAgICB2cGljLT5waWN0dXJlX3R5 cGUgPSBWQUVuY1BpY3R1cmVUeXBlQmlkaXJlY3Rpb25hbDsKLS0gICAgICAgIHZwaWMtPmZvcndh cmRfcmVmZXJlbmNlX3BpY3R1cmUgID0gcGljLT5yZWZzWzBdLT5yZWNvbl9zdXJmYWNlOwotLSAg ICAgICAgdnBpYy0+YmFja3dhcmRfcmVmZXJlbmNlX3BpY3R1cmUgPSBwaWMtPnJlZnNbMV0tPnJl Y29uX3N1cmZhY2U7Ci0rICAgICAgICB2cGljLT5mb3J3YXJkX3JlZmVyZW5jZV9waWN0dXJlICA9 IHBpYy0+cmVmc1swXVswXS0+cmVjb25fc3VyZmFjZTsKLSsgICAgICAgIHZwaWMtPmJhY2t3YXJk X3JlZmVyZW5jZV9waWN0dXJlID0gcGljLT5yZWZzWzFdWzBdLT5yZWNvbl9zdXJmYWNlOwotICAg ICAgICAgYnJlYWs7Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAgICBhdl9hc3NlcnQwKDAgJiYgImlu dmFsaWQgcGljdHVyZSB0eXBlIik7Ci1kaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9lbmNv ZGVfdnA4LmMgYi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV92cDguYwotaW5kZXggYWU2YThkMy4u Yjk2ZTRjZCAxMDA2NDQKLS0tLSBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX3ZwOC5jCi0rKysg Yi9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV92cDguYwotQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGlj IGludCB2YWFwaV9lbmNvZGVfdnA4X2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQg KmF2Y3R4LAotICAgICBzd2l0Y2ggKHBpYy0+dHlwZSkgewotICAgICBjYXNlIFBJQ1RVUkVfVFlQ RV9JRFI6Ci0gICAgIGNhc2UgUElDVFVSRV9UWVBFX0k6Ci0tICAgICAgICBhdl9hc3NlcnQwKHBp Yy0+bmJfcmVmcyA9PSAwKTsKLSsgICAgICAgIGF2X2Fzc2VydDAocGljLT5uYl9yZWZzWzBdID09 IDAgJiYgcGljLT5uYl9yZWZzWzFdID09IDApOwotICAgICAgICAgdnBpYy0+cmVmX2ZsYWdzLmJp dHMuZm9yY2Vfa2YgPSAxOwotICAgICAgICAgdnBpYy0+cmVmX2xhc3RfZnJhbWUgPQotICAgICAg ICAgdnBpYy0+cmVmX2dmX2ZyYW1lICAgPQotQEAgLTk0LDE0ICs5NCwxNCBAQCBzdGF0aWMgaW50 IHZhYXBpX2VuY29kZV92cDhfaW5pdF9waWN0dXJlX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZj dHgsCi0gICAgICAgICAgICAgVkFfSU5WQUxJRF9TVVJGQUNFOwotICAgICAgICAgYnJlYWs7Ci0g ICAgIGNhc2UgUElDVFVSRV9UWVBFX1A6Ci0tICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVm cyA9PSAxKTsKLSsgICAgICAgIGF2X2Fzc2VydDAoIXBpYy0+bmJfcmVmc1sxXSk7Ci0gICAgICAg ICB2cGljLT5yZWZfZmxhZ3MuYml0cy5ub19yZWZfbGFzdCA9IDA7Ci0gICAgICAgICB2cGljLT5y ZWZfZmxhZ3MuYml0cy5ub19yZWZfZ2YgICA9IDE7Ci0gICAgICAgICB2cGljLT5yZWZfZmxhZ3Mu Yml0cy5ub19yZWZfYXJmICA9IDE7Ci0gICAgICAgICB2cGljLT5yZWZfbGFzdF9mcmFtZSA9Ci0g ICAgICAgICB2cGljLT5yZWZfZ2ZfZnJhbWUgICA9Ci0gICAgICAgICB2cGljLT5yZWZfYXJmX2Zy YW1lICA9Ci0tICAgICAgICAgICAgcGljLT5yZWZzWzBdLT5yZWNvbl9zdXJmYWNlOwotKyAgICAg ICAgICAgIHBpYy0+cmVmc1swXVswXS0+cmVjb25fc3VyZmFjZTsKLSAgICAgICAgIGJyZWFrOwot ICAgICBkZWZhdWx0OgotICAgICAgICAgYXZfYXNzZXJ0MCgwICYmICJpbnZhbGlkIHBpY3R1cmUg dHlwZSIpOwotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfZW5jb2RlX3ZwOS5jIGIvbGli YXZjb2RlYy92YWFwaV9lbmNvZGVfdnA5LmMKLWluZGV4IGFmMTM1M2MuLmQ5ZThiYTYgMTAwNjQ0 Ci0tLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2VuY29kZV92cDkuYwotKysrIGIvbGliYXZjb2RlYy92 YWFwaV9lbmNvZGVfdnA5LmMKLUBAIC05NiwxNSArOTYsMTUgQEAgc3RhdGljIGludCB2YWFwaV9l bmNvZGVfdnA5X2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotIAot ICAgICBzd2l0Y2ggKHBpYy0+dHlwZSkgewotICAgICBjYXNlIFBJQ1RVUkVfVFlQRV9JRFI6Ci0t ICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVmcyA9PSAwKTsKLSsgICAgICAgIGF2X2Fzc2Vy dDAocGljLT5uYl9yZWZzWzBdID09IDAgJiYgcGljLT5uYl9yZWZzWzFdID09IDApOwotICAgICAg ICAgdnBpYy0+cmVmX2ZsYWdzLmJpdHMuZm9yY2Vfa2YgPSAxOwotICAgICAgICAgdnBpYy0+cmVm cmVzaF9mcmFtZV9mbGFncyA9IDB4ZmY7Ci0gICAgICAgICBocGljLT5zbG90ID0gMDsKLSAgICAg ICAgIGJyZWFrOwotICAgICBjYXNlIFBJQ1RVUkVfVFlQRV9QOgotLSAgICAgICAgYXZfYXNzZXJ0 MChwaWMtPm5iX3JlZnMgPT0gMSk7Ci0rICAgICAgICBhdl9hc3NlcnQwKCFwaWMtPm5iX3JlZnNb MV0pOwotICAgICAgICAgewotLSAgICAgICAgICAgIFZBQVBJRW5jb2RlVlA5UGljdHVyZSAqaHJl ZiA9IHBpYy0+cmVmc1swXS0+cHJpdl9kYXRhOwotKyAgICAgICAgICAgIFZBQVBJRW5jb2RlVlA5 UGljdHVyZSAqaHJlZiA9IHBpYy0+cmVmc1swXVswXS0+cHJpdl9kYXRhOwotICAgICAgICAgICAg IGF2X2Fzc2VydDAoaHJlZi0+c2xvdCA9PSAwIHx8IGhyZWYtPnNsb3QgPT0gMSk7Ci0gCi0gICAg ICAgICAgICAgaWYgKGN0eC0+bWF4X2JfZGVwdGggPiAwKSB7Ci1AQCAtMTIwLDEwICsxMjAsMTAg QEAgc3RhdGljIGludCB2YWFwaV9lbmNvZGVfdnA5X2luaXRfcGljdHVyZV9wYXJhbXMoQVZDb2Rl Y0NvbnRleHQgKmF2Y3R4LAotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2Ug UElDVFVSRV9UWVBFX0I6Ci0tICAgICAgICBhdl9hc3NlcnQwKHBpYy0+bmJfcmVmcyA9PSAyKTsK LSsgICAgICAgIGF2X2Fzc2VydDAocGljLT5uYl9yZWZzWzBdICYmIHBpYy0+bmJfcmVmc1sxXSk7 Ci0gICAgICAgICB7Ci0tICAgICAgICAgICAgVkFBUElFbmNvZGVWUDlQaWN0dXJlICpocmVmMCA9 IHBpYy0+cmVmc1swXS0+cHJpdl9kYXRhLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqaHJlZjEgPSBwaWMtPnJlZnNbMV0tPnByaXZfZGF0YTsKLSsgICAgICAgICAgICBWQUFQ SUVuY29kZVZQOVBpY3R1cmUgKmhyZWYwID0gcGljLT5yZWZzWzBdWzBdLT5wcml2X2RhdGEsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpocmVmMSA9IHBpYy0+cmVmc1sxXVsw XS0+cHJpdl9kYXRhOwotICAgICAgICAgICAgIGF2X2Fzc2VydDAoaHJlZjAtPnNsb3QgPCBwaWMt PmJfZGVwdGggKyAxICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBocmVmMS0+c2xvdCA8IHBp Yy0+Yl9kZXB0aCArIDEpOwotIAotQEAgLTE1NywxMiArMTU3LDE0IEBAIHN0YXRpYyBpbnQgdmFh cGlfZW5jb2RlX3ZwOV9pbml0X3BpY3R1cmVfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwK LSAgICAgZm9yIChpID0gMDsgaSA8IEZGX0FSUkFZX0VMRU1TKHZwaWMtPnJlZmVyZW5jZV9mcmFt ZXMpOyBpKyspCi0gICAgICAgICB2cGljLT5yZWZlcmVuY2VfZnJhbWVzW2ldID0gVkFfSU5WQUxJ RF9TVVJGQUNFOwotIAotLSAgICBmb3IgKGkgPSAwOyBpIDwgcGljLT5uYl9yZWZzOyBpKyspIHsK LS0gICAgICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcmVmX3BpYyA9IHBpYy0+cmVmc1tpXTsKLS0g ICAgICAgIGludCBzbG90OwotLSAgICAgICAgc2xvdCA9ICgoVkFBUElFbmNvZGVWUDlQaWN0dXJl KilyZWZfcGljLT5wcml2X2RhdGEpLT5zbG90OwotLSAgICAgICAgYXZfYXNzZXJ0MCh2cGljLT5y ZWZlcmVuY2VfZnJhbWVzW3Nsb3RdID09IFZBX0lOVkFMSURfU1VSRkFDRSk7Ci0tICAgICAgICB2 cGljLT5yZWZlcmVuY2VfZnJhbWVzW3Nsb3RdID0gcmVmX3BpYy0+cmVjb25fc3VyZmFjZTsKLSsg ICAgZm9yIChpID0gMDsgaSA8IE1BWF9SRUZFUkVOQ0VfTElTVF9OVU07IGkrKykgewotKyAgICAg ICAgZm9yIChpbnQgaiA9IDA7IGogPCBwaWMtPm5iX3JlZnNbaV07IGorKykgewotKyAgICAgICAg ICAgIFZBQVBJRW5jb2RlUGljdHVyZSAqcmVmX3BpYyA9IHBpYy0+cmVmc1tpXVtqXTsKLSsgICAg ICAgICAgICBpbnQgc2xvdDsKLSsgICAgICAgICAgICBzbG90ID0gKChWQUFQSUVuY29kZVZQOVBp Y3R1cmUqKXJlZl9waWMtPnByaXZfZGF0YSktPnNsb3Q7Ci0rICAgICAgICAgICAgYXZfYXNzZXJ0 MCh2cGljLT5yZWZlcmVuY2VfZnJhbWVzW3Nsb3RdID09IFZBX0lOVkFMSURfU1VSRkFDRSk7Ci0r ICAgICAgICAgICAgdnBpYy0+cmVmZXJlbmNlX2ZyYW1lc1tzbG90XSA9IHJlZl9waWMtPnJlY29u X3N1cmZhY2U7Ci0rICAgICAgICB9Ci0gICAgIH0KLSAKLSAgICAgdnBpYy0+cGljX2ZsYWdzLmJp dHMuZnJhbWVfdHlwZSA9IChwaWMtPnR5cGUgIT0gUElDVFVSRV9UWVBFX0lEUik7Ci0tLSAKLTIu NDEuMAotCgpkaWZmIC0tZ2l0IGEvZmZtcGVnLW5ldy1jb2Rlci1lcnJvcnMucGF0Y2ggYi9mZm1w ZWctbmV3LWNvZGVyLWVycm9ycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg YTA4YjZhOS4uMDAwMDAwMAotLS0gYS9mZm1wZWctbmV3LWNvZGVyLWVycm9ycy5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb206IEphbiBFbmdlbGhhcmR0IDxqZW5nZWxo QGluYWkuZGU+Ci1EYXRlOiAyMDE2LTA0LTEwIDIzOjIzOjUzLjEzODQ0MDI1NCArMDIwMAotCi1J bXByb3ZlIHRoZSBlcnJvciBtZXNzYWdlcyBhIGJpdCB0byBzYXkgd2hhdCdzIHJlYWxseSBnb2lu ZyBvbgotKGluIGxpZ2h0IG9mIGEgcmVkdWNlZCBidWlsZCkuCi0KLS0tLQotIGZmdG9vbHMvZmZt cGVnLmMgICAgICAgIHwgICAgMiArLQotIGZmdG9vbHMvZmZtcGVnX2ZpbHRlci5jIHwgICAgMiAr LQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1J bmRleDogZmZtcGVnLTYuMC9mZnRvb2xzL2ZmbXBlZy5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmZtcGVn LTYuMC5vcmlnL2ZmdG9vbHMvZmZtcGVnLmMKLSsrKyBmZm1wZWctNi4wL2ZmdG9vbHMvZmZtcGVn LmMKLUBAIC0yNzk3LDcgKzI3OTcsNyBAQCBzdGF0aWMgaW50IGluaXRfaW5wdXRfc3RyZWFtKElu cHV0U3RyZWFtCi0gICAgIGlmIChpc3QtPmRlY29kaW5nX25lZWRlZCkgewotICAgICAgICAgY29u c3QgQVZDb2RlYyAqY29kZWMgPSBpc3QtPmRlYzsKLSAgICAgICAgIGlmICghY29kZWMpIHsKLS0g ICAgICAgICAgICBzbnByaW50ZihlcnJvciwgZXJyb3JfbGVuLCAiRGVjb2RlciAoY29kZWMgJXMp IG5vdCBmb3VuZCBmb3IgaW5wdXQgc3RyZWFtICMlZDolZCIsCi0rICAgICAgICAgICAgc25wcmlu dGYoZXJyb3IsIGVycm9yX2xlbiwgIlRoaXMgYnVpbGQgb2YgZmZtcGVnIGRvZXMgbm90IGluY2x1 ZGUgYSBcIiVzXCIgZGVjb2RlciBuZWVkZWQgZm9yIGlucHV0IHN0cmVhbSAjJWQ6JWQuIiwKLSAg ICAgICAgICAgICAgICAgICAgIGF2Y29kZWNfZ2V0X25hbWUoaXN0LT5kZWNfY3R4LT5jb2RlY19p ZCksIGlzdC0+ZmlsZV9pbmRleCwgaXN0LT5zdC0+aW5kZXgpOwotICAgICAgICAgICAgIHJldHVy biBBVkVSUk9SKEVJTlZBTCk7Ci0gICAgICAgICB9Ci1JbmRleDogZmZtcGVnLTYuMC9mZnRvb2xz L2ZmbXBlZ19maWx0ZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZmbXBlZy02LjAub3JpZy9mZnRvb2xz L2ZmbXBlZ19maWx0ZXIuYwotKysrIGZmbXBlZy02LjAvZmZ0b29scy9mZm1wZWdfZmlsdGVyLmMK LUBAIC0xMDY0LDcgKzEwNjQsNyBAQCBzdGF0aWMgaW50IGNvbmZpZ3VyZV9pbnB1dF9maWx0ZXIo RmlsdGVyCi0gewotICAgICBpZiAoIWlmaWx0ZXItPmlzdC0+ZGVjKSB7Ci0gICAgICAgICBhdl9s b2coTlVMTCwgQVZfTE9HX0VSUk9SLAotLSAgICAgICAgICAgICAgICJObyBkZWNvZGVyIGZvciBz dHJlYW0gIyVkOiVkLCBmaWx0ZXJpbmcgaW1wb3NzaWJsZVxuIiwKLSsgICAgICAgICAgICAgICAi VGhpcyBidWlsZCBvZiBmZm1wZWcgZG9lcyBub3QgaGF2ZSBhIHN1aXRhYmxlIGRlY29kZXIgZm9y IHN0cmVhbSAjJWQ6JWQgZW5hYmxlZCwgZmlsdGVyaW5nIGltcG9zc2libGVcbiIsCi0gICAgICAg ICAgICAgICAgaWZpbHRlci0+aXN0LT5maWxlX2luZGV4LCBpZmlsdGVyLT5pc3QtPnN0LT5pbmRl eCk7Ci0gICAgICAgICByZXR1cm4gQVZFUlJPUl9ERUNPREVSX05PVF9GT1VORDsKLSAgICAgfQoK ZGlmZiAtLWdpdCBhL2ZmbXBlZy5zcGVjIGIvZmZtcGVnLnNwZWMKaW5kZXggMGJhNzk1ZS4uZjJl MTQ3YiAxMDA2NDQKLS0tIGEvZmZtcGVnLnNwZWMKKysrIGIvZmZtcGVnLnNwZWMKQEAgLTkxLDgg KzkxLDggQEAKIE5hbWU6ICAgICAgICAgICBmZm1wZWcKICVnbG9iYWwgcGtnX25hbWUgJXtuYW1l fSV7P3BrZ19zdWZmaXh9CiAKLVZlcnNpb246ICAgICAgICA2LjAuMQotUmVsZWFzZTogICAgICAg IDIlez9kaXN0fQorVmVyc2lvbjogICAgICAgIDYuMQorUmVsZWFzZTogICAgICAgIDElez9kaXN0 fQogU3VtbWFyeTogICAgICAgIEEgY29tcGxldGUgc29sdXRpb24gdG8gcmVjb3JkLCBjb252ZXJ0 IGFuZCBzdHJlYW0gYXVkaW8gYW5kIHZpZGVvCiBMaWNlbnNlOiAgICAgICAgR1BMLTMuMC1vci1s YXRlcgogVVJMOiAgICAgICAgICAgIGh0dHBzOi8vZmZtcGVnLm9yZy8KQEAgLTExMywzMiArMTEz LDE1IEBAIFNvdXJjZTkzOiAgICAgICBmZm1wZWdfZmluZF9mcmVlX3NvdXJjZV9oZWFkZXJzLnNo CiAKICMgRml4ZXMgZm9yIHJlZHVjZWQgY29kZWMgc2VsZWN0aW9uIG9uIGZyZWUgYnVpbGQKIFBh dGNoMTogICAgICAgICBmZm1wZWctY29kZWMtY2hvaWNlLnBhdGNoCi0jIEJldHRlciBlcnJvciBt ZXNzYWdlcyBmb3IgZnJlZSBidWlsZAotUGF0Y2gyOiAgICAgICAgIGZmbXBlZy1uZXctY29kZXIt ZXJyb3JzLnBhdGNoCiAjIEFsbG93IHRvIGJ1aWxkIHdpdGggZmRrLWFhYy1mcmVlCiAjIFNlZSBo dHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE1MDE1MjIjYzExMgot UGF0Y2gzOiAgICAgICAgIGZmbXBlZy1hbGxvdy1mZGstYWFjLWZyZWUucGF0Y2gKLSMgQmFja3Bv cnQgdXBzdHJlYW0gcGF0Y2hlcyBmb3IgbGlicGxhY2VibyB2NS4yNjQKLVBhdGNoNDogICAgICAg ICAwMDAxLWF2ZmlsdGVyLXZmX2xpYnBsYWNlYm8td3JhcC1kZXByZWNhdGVkLW9wdHMtaW4tRkZf QVAucGF0Y2gKLVBhdGNoNTogICAgICAgICAwMDAxLWF2ZmlsdGVyLXZmX2xpYnBsYWNlYm8tcmVt b3ZlLWRlcHJlY2F0ZWQtZmllbGQucGF0Y2gKLQotIyBCYWNrcG9ydCBmaXggZm9yIHNlZ2ZhdWx0 IHdoZW4gcGFzc2luZyBub24tZXhpc3RlbnQgZmlsdGVyIG9wdGlvbgotIyBTZWU6IGh0dHBzOi8v YnVnemlsbGEucnBtZnVzaW9uLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc3MwotUGF0Y2g3OiAgICAg ICAgIDAwMDEtZmZ0b29scy1mZm1wZWdfZmlsdGVyLWluaXRpYWxpemUtdGhlLW8tdG8tc2lsZW5j ZS10aC5wYXRjaAotCi0jIEJhY2twb3J0IHBhdGNoZXMgZm9yIGVuaGFuY2VkIHJ0bXAgc3VwcG9y dAotIyBDZi4gaHR0cHM6Ly9wYXRjaHdvcmsuZmZtcGVnLm9yZy9wcm9qZWN0L2ZmbXBlZy9saXN0 Lz9zZXJpZXM9ODkyNgotIyMgRnJvbTogaHR0cHM6Ly9wYXRjaHdvcmsuZmZtcGVnLm9yZy9zZXJp ZXMvODkyNi9tYm94LwotUGF0Y2g4OiAgICAgICAgIEZGbXBlZy1kZXZlbC12MTAtU3VwcG9ydC1l bmhhbmNlZC1mbHYtaW4tRkZtcGVnLnBhdGNoCi0KLSMgQmFja3BvcnQgQVYxIFZBLUFQSSBlbmNv ZGUgc3VwcG9ydAotIyBDb3VydGVzeSBvZiBHbG9yaW91c0VnZ3JvbGwKLSMjIEFkYXB0ZWQgZnJv bTogaHR0cHM6Ly9wYXRjaHdvcmsuZmZtcGVnLm9yZy9wcm9qZWN0L2ZmbXBlZy9saXN0Lz9zZXJp ZXM9OTU5NAotUGF0Y2g5OiAgICAgICAgIGZmbXBlZy1nZS1hdjEtdmFhcGktZW5jb2RlLXN1cHBv cnQucGF0Y2gKLQorUGF0Y2gyOiAgICAgICAgIGZmbXBlZy1hbGxvdy1mZGstYWFjLWZyZWUucGF0 Y2gKKyMgQmFja3BvcnQgZml4IGZvciBWdWxrYW4gVmlkZW8gd2l0aCBvbmx5IEFWMQorIyBGcm9t OiBodHRwczovL2ZmbXBlZy5vcmcvcGlwZXJtYWlsL2ZmbXBlZy1kZXZlbC8yMDIzLURlY2VtYmVy LzMxNzcyOC5odG1sCitQYXRjaDM6ICAgICAgICAgMDAwMS1sYXZjLU1ha2VmaWxlLWJ1aWxkLXZ1 bGthbi1kZWNvZGUtY29kZS1pZi12dWxrYW5fYXYxLnBhdGNoCiAjIERyb3Agb3BlbmgyNjQgcnVu dGltZSB2ZXJzaW9uIGNoZWNrcwogIyBodHRwczovL3BhdGNod29yay5mZm1wZWcub3JnL3Byb2pl Y3QvZmZtcGVnL2xpc3QvP3Nlcmllcz0xMDIxMQotUGF0Y2gxMDogICAgICAgIDAwMDEtbGF2Yy1s aWJvcGVuaDI2NC1Ecm9wLW9wZW5oMjY0LXJ1bnRpbWUtdmVyc2lvbi1jaGVjay5wYXRjaAorUGF0 Y2g0OiAgICAgICAgIDAwMDEtbGF2Yy1saWJvcGVuaDI2NC1Ecm9wLW9wZW5oMjY0LXJ1bnRpbWUt dmVyc2lvbi1jaGVjay5wYXRjaAogCiAjIFNldCB1cCBkbG9wZW4gZm9yIG9wZW5oMjY0CiBQYXRj aDEwMDE6ICAgICAgZmZtcGVnLWRsb3Blbi1vcGVuaDI2NC5wYXRjaApAQCAtMjU2LDcgKzIzOSw3 IEBAIEJ1aWxkUmVxdWlyZXM6ICBwa2djb25maWcodmlkc3RhYikKIEJ1aWxkUmVxdWlyZXM6ICBw a2djb25maWcodm9yYmlzKQogQnVpbGRSZXF1aXJlczogIHBrZ2NvbmZpZyh2by1hbXJ3YmVuYykK IEJ1aWxkUmVxdWlyZXM6ICBwa2djb25maWcodnB4KQotQnVpbGRSZXF1aXJlczogIHBrZ2NvbmZp Zyh2dWxrYW4pCitCdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKHZ1bGthbikgPj0gMS4zLjI1NQog QnVpbGRSZXF1aXJlczogIHBrZ2NvbmZpZyh3YXZwYWNrKQogQnVpbGRSZXF1aXJlczogIHBrZ2Nv bmZpZyh4Y2IpCiBCdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKHhjYi1yZW5kZXIpCkBAIC04ODAs NiArODYzLDkgQEAgcm0gLXJmICV7YnVpbGRyb290fSV7X2RhdGFkaXJ9LyV7bmFtZX0vZXhhbXBs ZXMKICV7X21hbmRpcn0vbWFuMy9saWJzd3NjYWxlLjMqCiAKICVjaGFuZ2Vsb2cKKyogVGh1IEph biAwNCAyMDI0IE5lYWwgR29tcGEgPG5nb21wYUBmZWRvcmFwcm9qZWN0Lm9yZz4gLSA2LjEtMQor LSBSZWJhc2UgdG8gNi4xCisKICogV2VkIERlYyAwNiAyMDIzIEthbGV2IExlbWJlciA8a2xlbWJl ckByZWRoYXQuY29tPiAtIDYuMC4xLTIKIC0gUHJlZmVyIG9wZW5oMjY0IG92ZXIgbm9vcGVuaDI2 NAogLSBCYWNrcG9ydCB1cHN0cmVhbSBwYXRjaCB0byBkcm9wIG9wZW5oMjY0IHJ1bnRpbWUgdmVy c2lvbiBjaGVja3MKCmRpZmYgLS1naXQgYS9mZm1wZWdfZnJlZV9zb3VyY2VzIGIvZmZtcGVnX2Zy ZWVfc291cmNlcwppbmRleCAwMzU0ZGU1Li45ODMwYjQ1IDEwMDY0NAotLS0gYS9mZm1wZWdfZnJl ZV9zb3VyY2VzCisrKyBiL2ZmbXBlZ19mcmVlX3NvdXJjZXMKQEAgLTI5LDggKzI5LDYgQEAgZG9j L2NvZGVjcy50ZXhpCiBkb2MvZGVjb2RlcnMudGV4aQogZG9jL2RlZmF1bHQuY3NzCiBkb2MvZGVt dXhlcnMudGV4aQotZG9jL2Rldl9jb21tdW5pdHkvY29tbXVuaXR5Lm1kCi1kb2MvZGV2X2NvbW11 bml0eS9yZXNvbHV0aW9uX3Byb2Nlc3MubWQKIGRvYy9kZXZlbG9wZXIudGV4aQogZG9jL2Rldmlj ZXMudGV4aQogZG9jL2RveHktd3JhcHBlci5zaApAQCAtMTM4LDcgKzEzNiw5IEBAIGZmdG9vbHMv Y21kdXRpbHMuYwogZmZ0b29scy9jbWR1dGlscy5oCiBmZnRvb2xzL2ZmbXBlZy5jCiBmZnRvb2xz L2ZmbXBlZy5oCitmZnRvb2xzL2ZmbXBlZ19kZWMuYwogZmZ0b29scy9mZm1wZWdfZGVtdXguYwor ZmZ0b29scy9mZm1wZWdfZW5jLmMKIGZmdG9vbHMvZmZtcGVnX2ZpbHRlci5jCiBmZnRvb2xzL2Zm bXBlZ19ody5jCiBmZnRvb2xzL2ZmbXBlZ19tdXguYwpAQCAtMjEyLDEwICsyMTIsNyBAQCBsaWJh dmNvZGVjL2FhbmRjdHRhYi5oCiBsaWJhdmNvZGVjL2FhcmNoNjQvTWFrZWZpbGUKIGxpYmF2Y29k ZWMvYWFyY2g2NC9hYWNwc2RzcF9pbml0X2FhcmNoNjQuYwogbGliYXZjb2RlYy9hYXJjaDY0L2Fh Y3BzZHNwX25lb24uUwotbGliYXZjb2RlYy9hYXJjaDY0L2FzbS1vZmZzZXRzLmgKIGxpYmF2Y29k ZWMvYWFyY2g2NC9jYWJhYy5oCi1saWJhdmNvZGVjL2FhcmNoNjQvZmZ0X2luaXRfYWFyY2g2NC5j Ci1saWJhdmNvZGVjL2FhcmNoNjQvZmZ0X25lb24uUwogbGliYXZjb2RlYy9hYXJjaDY0L2ZtdGNv bnZlcnRfaW5pdC5jCiBsaWJhdmNvZGVjL2FhcmNoNjQvZm10Y29udmVydF9uZW9uLlMKIGxpYmF2 Y29kZWMvYWFyY2g2NC9oMjY0Y2hyb21hX2luaXRfYWFyY2g2NC5jCkBAIC0yMzIsNyArMjI5LDYg QEAgbGliYXZjb2RlYy9hYXJjaDY0L2hwZWxkc3BfbmVvbi5TCiBsaWJhdmNvZGVjL2FhcmNoNjQv aWRjdC5oCiBsaWJhdmNvZGVjL2FhcmNoNjQvaWRjdGRzcF9pbml0X2FhcmNoNjQuYwogbGliYXZj b2RlYy9hYXJjaDY0L2lkY3Rkc3BfbmVvbi5TCi1saWJhdmNvZGVjL2FhcmNoNjQvbWRjdF9uZW9u LlMKIGxpYmF2Y29kZWMvYWFyY2g2NC9tZV9jbXBfaW5pdF9hYXJjaDY0LmMKIGxpYmF2Y29kZWMv YWFyY2g2NC9tZV9jbXBfbmVvbi5TCiBsaWJhdmNvZGVjL2FhcmNoNjQvbXBlZ2F1ZGlvZHNwX2lu aXQuYwpAQCAtMzU4LDkgKzM1NCw2IEBAIGxpYmF2Y29kZWMvYXJtL2Jsb2NrZHNwX2luaXRfbmVv bi5jCiBsaWJhdmNvZGVjL2FybS9ibG9ja2RzcF9uZW9uLlMKIGxpYmF2Y29kZWMvYXJtL2NhYmFj LmgKIGxpYmF2Y29kZWMvYXJtL2RjYS5oCi1saWJhdmNvZGVjL2FybS9mZnRfaW5pdF9hcm0uYwot bGliYXZjb2RlYy9hcm0vZmZ0X25lb24uUwotbGliYXZjb2RlYy9hcm0vZmZ0X3ZmcC5TCiBsaWJh dmNvZGVjL2FybS9mbGFjZHNwX2FybS5TCiBsaWJhdmNvZGVjL2FybS9mbGFjZHNwX2luaXRfYXJt LmMKIGxpYmF2Y29kZWMvYXJtL2ZtdGNvbnZlcnRfaW5pdF9hcm0uYwpAQCAtMzk4LDggKzM5MSw2 IEBAIGxpYmF2Y29kZWMvYXJtL2pyZXZkY3RfYXJtLlMKIGxpYmF2Y29kZWMvYXJtL2xvc3NsZXNz X2F1ZGlvZHNwX2luaXRfYXJtLmMKIGxpYmF2Y29kZWMvYXJtL2xvc3NsZXNzX2F1ZGlvZHNwX25l b24uUwogbGliYXZjb2RlYy9hcm0vbWF0aG9wcy5oCi1saWJhdmNvZGVjL2FybS9tZGN0X25lb24u UwotbGliYXZjb2RlYy9hcm0vbWRjdF92ZnAuUwogbGliYXZjb2RlYy9hcm0vbWVfY21wX2FybXY2 LlMKIGxpYmF2Y29kZWMvYXJtL21lX2NtcF9pbml0X2FybS5jCiBsaWJhdmNvZGVjL2FybS9tbHBk c3BfYXJtdjV0ZS5TCkBAIC00MTksOCArNDEwLDYgQEAgbGliYXZjb2RlYy9hcm0vbmVvbnRlc3Qu YwogbGliYXZjb2RlYy9hcm0vcGl4YmxvY2tkc3BfYXJtdjYuUwogbGliYXZjb2RlYy9hcm0vcGl4 YmxvY2tkc3BfaW5pdF9hcm0uYwogbGliYXZjb2RlYy9hcm0vcGl4YmxvY2tkc3BfbmVvbi5TCi1s aWJhdmNvZGVjL2FybS9yZGZ0X2luaXRfYXJtLmMKLWxpYmF2Y29kZWMvYXJtL3JkZnRfbmVvbi5T CiBsaWJhdmNvZGVjL2FybS9zYmNkc3BfYXJtdjYuUwogbGliYXZjb2RlYy9hcm0vc2JjZHNwX2lu aXRfYXJtLmMKIGxpYmF2Y29kZWMvYXJtL3NiY2RzcF9uZW9uLlMKQEAgLTQ2OCw2ICs0NTcsNyBA QCBsaWJhdmNvZGVjL2FybS92cDlscGZfMTZicHBfbmVvbi5TCiBsaWJhdmNvZGVjL2FybS92cDls cGZfbmVvbi5TCiBsaWJhdmNvZGVjL2FybS92cDltY18xNmJwcF9uZW9uLlMKIGxpYmF2Y29kZWMv YXJtL3ZwOW1jX25lb24uUworbGliYXZjb2RlYy9hcm0vdnB4X2FyaXRoLmgKIGxpYmF2Y29kZWMv YXNzLmMKIGxpYmF2Y29kZWMvYXNzLmgKIGxpYmF2Y29kZWMvYXNzX3NwbGl0LmMKQEAgLTQ5OSw2 ICs0ODksOCBAQCBsaWJhdmNvZGVjL2F1cmEuYwogbGliYXZjb2RlYy9hdjEuaAogbGliYXZjb2Rl Yy9hdjFfZnJhbWVfbWVyZ2VfYnNmLmMKIGxpYmF2Y29kZWMvYXYxX2ZyYW1lX3NwbGl0X2JzZi5j CitsaWJhdmNvZGVjL2F2MV9sZXZlbHMuYworbGliYXZjb2RlYy9hdjFfbGV2ZWxzLmgKIGxpYmF2 Y29kZWMvYXYxX21ldGFkYXRhX2JzZi5jCiBsaWJhdmNvZGVjL2F2MV9wYXJzZS5jCiBsaWJhdmNv ZGVjL2F2MV9wYXJzZS5oCkBAIC01MDcsNiArNDk5LDcgQEAgbGliYXZjb2RlYy9hdjFkZWMuYwog bGliYXZjb2RlYy9hdjFkZWMuaAogbGliYXZjb2RlYy9hdmNvZGVjLmMKIGxpYmF2Y29kZWMvYXZj b2RlYy5oCitsaWJhdmNvZGVjL2F2Y29kZWNfaW50ZXJuYWwuaAogbGliYXZjb2RlYy9hdmRjdC5j CiBsaWJhdmNvZGVjL2F2ZGN0LmgKIGxpYmF2Y29kZWMvYXZmZnQuYwpAQCAtNTczLDYgKzU2Niw4 IEBAIGxpYmF2Y29kZWMvY2JzX2gyNjQ1LmgKIGxpYmF2Y29kZWMvY2JzX2gyNjRfc3ludGF4X3Rl bXBsYXRlLmMKIGxpYmF2Y29kZWMvY2JzX2gyNjUuaAogbGliYXZjb2RlYy9jYnNfaDI2NV9zeW50 YXhfdGVtcGxhdGUuYworbGliYXZjb2RlYy9jYnNfaDI2Ni5oCitsaWJhdmNvZGVjL2Nic19oMjY2 X3N5bnRheF90ZW1wbGF0ZS5jCiBsaWJhdmNvZGVjL2Nic19pbnRlcm5hbC5oCiBsaWJhdmNvZGVj L2Nic19qcGVnLmMKIGxpYmF2Y29kZWMvY2JzX2pwZWcuaApAQCAtNjUyLDcgKzY0Nyw2IEBAIGxp YmF2Y29kZWMvZGNhZW5jLmgKIGxpYmF2Y29kZWMvZGNhaHVmZi5jCiBsaWJhdmNvZGVjL2RjYWh1 ZmYuaAogbGliYXZjb2RlYy9kY2FtYXRoLmgKLWxpYmF2Y29kZWMvZGN0LmMKIGxpYmF2Y29kZWMv ZGN0LmgKIGxpYmF2Y29kZWMvZGN0MzIuaAogbGliYXZjb2RlYy9kY3QzMl9maXhlZC5jCkBAIC03 MzEsOCArNzI1LDYgQEAgbGliYXZjb2RlYy9kdmVuYy5jCiBsaWJhdmNvZGVjL2R4YS5jCiBsaWJh dmNvZGVjL2R4dG9yeS5jCiBsaWJhdmNvZGVjL2R4dmEyLmgKLWxpYmF2Y29kZWMvZHluYW1pY19o ZHIxMF9wbHVzLmMKLWxpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmgKIGxpYmF2Y29kZWMv ZHluYW1pY19oZHJfdml2aWQuYwogbGliYXZjb2RlYy9keW5hbWljX2hkcl92aXZpZC5oCiBsaWJh dmNvZGVjL2VhYzNfY29yZV9ic2YuYwpAQCAtNzU0LDYgKzc0NiwxMyBAQCBsaWJhdmNvZGVjL2Vy cm9yX3Jlc2lsaWVuY2UuYwogbGliYXZjb2RlYy9lcnJvcl9yZXNpbGllbmNlLmgKIGxpYmF2Y29k ZWMvZXNjYXBlMTI0LmMKIGxpYmF2Y29kZWMvZXNjYXBlMTMwLmMKK2xpYmF2Y29kZWMvZXZjLmgK K2xpYmF2Y29kZWMvZXZjX2ZyYW1lX21lcmdlX2JzZi5jCitsaWJhdmNvZGVjL2V2Y19wYXJzZS5j CitsaWJhdmNvZGVjL2V2Y19wYXJzZS5oCitsaWJhdmNvZGVjL2V2Y19wYXJzZXIuYworbGliYXZj b2RlYy9ldmNfcHMuYworbGliYXZjb2RlYy9ldmNfcHMuaAogbGliYXZjb2RlYy9ldnJjZGF0YS5o CiBsaWJhdmNvZGVjL2V2cmNkZWMuYwogbGliYXZjb2RlYy9leGlmLmMKQEAgLTc3MywxMyArNzcy LDYgQEAgbGliYXZjb2RlYy9mZGN0ZHNwLmMKIGxpYmF2Y29kZWMvZmRjdGRzcC5oCiBsaWJhdmNv ZGVjL2ZmbGNtczIuYwogbGliYXZjb2RlYy9mZmxjbXMyLmgKLWxpYmF2Y29kZWMvZmZ0LWludGVy bmFsLmgKLWxpYmF2Y29kZWMvZmZ0LmgKLWxpYmF2Y29kZWMvZmZ0X2ZpeGVkXzMyLmMKLWxpYmF2 Y29kZWMvZmZ0X2Zsb2F0LmMKLWxpYmF2Y29kZWMvZmZ0X2luaXRfdGFibGUuYwotbGliYXZjb2Rl Yy9mZnRfdGFibGUuaAotbGliYXZjb2RlYy9mZnRfdGVtcGxhdGUuYwogbGliYXZjb2RlYy9mZnYx LmMKIGxpYmF2Y29kZWMvZmZ2MS5oCiBsaWJhdmNvZGVjL2ZmdjFfdGVtcGxhdGUuYwpAQCAtOTE2 LDYgKzkwOCw3IEBAIGxpYmF2Y29kZWMvaDI2NHFwZWxfdGVtcGxhdGUuYwogbGliYXZjb2RlYy9o MjY1X21ldGFkYXRhX2JzZi5jCiBsaWJhdmNvZGVjL2gyNjVfcHJvZmlsZV9sZXZlbC5jCiBsaWJh dmNvZGVjL2gyNjVfcHJvZmlsZV9sZXZlbC5oCitsaWJhdmNvZGVjL2gyNjZfbWV0YWRhdGFfYnNm LmMKIGxpYmF2Y29kZWMvaDI3NC5oCiBsaWJhdmNvZGVjL2hhbGYyZmxvYXQuYwogbGliYXZjb2Rl Yy9oYXAuYwpAQCAtOTcwLDYgKzk2Myw3IEBAIGxpYmF2Y29kZWMvaHVmZnl1dmRzcC5oCiBsaWJh dmNvZGVjL2h1ZmZ5dXZlbmMuYwogbGliYXZjb2RlYy9odWZmeXV2ZW5jZHNwLmMKIGxpYmF2Y29k ZWMvaHVmZnl1dmVuY2RzcC5oCitsaWJhdmNvZGVjL2h3YWNjZWxfaW50ZXJuYWwuaAogbGliYXZj b2RlYy9od2FjY2Vscy5oCiBsaWJhdmNvZGVjL2h3Y29uZmlnLmgKIGxpYmF2Y29kZWMvaWRjaW52 aWRlby5jCkBAIC0xMDIxLDEwICsxMDE1LDEzIEBAIGxpYmF2Y29kZWMvanBlZzIwMDAuYwogbGli YXZjb2RlYy9qcGVnMjAwMC5oCiBsaWJhdmNvZGVjL2pwZWcyMDAwX3BhcnNlci5jCiBsaWJhdmNv ZGVjL2pwZWcyMDAwZGVjLmMKK2xpYmF2Y29kZWMvanBlZzIwMDBkZWMuaAogbGliYXZjb2RlYy9q cGVnMjAwMGRzcC5jCiBsaWJhdmNvZGVjL2pwZWcyMDAwZHNwLmgKIGxpYmF2Y29kZWMvanBlZzIw MDBkd3QuYwogbGliYXZjb2RlYy9qcGVnMjAwMGR3dC5oCitsaWJhdmNvZGVjL2pwZWcyMDAwaHRk ZWMuYworbGliYXZjb2RlYy9qcGVnMjAwMGh0ZGVjLmgKIGxpYmF2Y29kZWMvanBlZ2xzLmMKIGxp YmF2Y29kZWMvanBlZ2xzLmgKIGxpYmF2Y29kZWMvanBlZ2xzZGVjLmMKQEAgLTEwMzUsNiArMTAz MiwxMCBAQCBsaWJhdmNvZGVjL2pwZWdxdWFudHRhYmxlcy5oCiBsaWJhdmNvZGVjL2pwZWd0YWJs ZXMuYwogbGliYXZjb2RlYy9qcGVndGFibGVzLmgKIGxpYmF2Y29kZWMvanBlZ3RhYnMuaAorbGli YXZjb2RlYy9qcGVneGwuaAorbGliYXZjb2RlYy9qcGVneGxfcGFyc2UuYworbGliYXZjb2RlYy9q cGVneGxfcGFyc2UuaAorbGliYXZjb2RlYy9qcGVneGxfcGFyc2VyLmMKIGxpYmF2Y29kZWMvanJl dmRjdC5jCiBsaWJhdmNvZGVjL2p2ZGVjLmMKIGxpYmF2Y29kZWMva2Jkd2luLmMKQEAgLTEwNzAs NyArMTA3MSw2IEBAIGxpYmF2Y29kZWMvbGlib3BlbmgyNjQuYwogbGliYXZjb2RlYy9saWJvcGVu aDI2NC5oCiBsaWJhdmNvZGVjL2xpYm9wZW5oMjY0ZGVjLmMKIGxpYmF2Y29kZWMvbGlib3Blbmgy NjRlbmMuYwotbGliYXZjb2RlYy9saWJvcGVuanBlZ2RlYy5jCiBsaWJhdmNvZGVjL2xpYm9wZW5q cGVnZW5jLmMKIGxpYmF2Y29kZWMvbGlib3B1cy5jCiBsaWJhdmNvZGVjL2xpYm9wdXMuaApAQCAt MTA4Niw3ICsxMDg2LDYgQEAgbGliYXZjb2RlYy9saWJ0d29sYW1lLmMKIGxpYmF2Y29kZWMvbGli dm8tYW1yd2JlbmMuYwogbGliYXZjb2RlYy9saWJ2b3JiaXNkZWMuYwogbGliYXZjb2RlYy9saWJ2 b3JiaXNlbmMuYwotbGliYXZjb2RlYy9saWJ2cHguYwogbGliYXZjb2RlYy9saWJ2cHguaAogbGli YXZjb2RlYy9saWJ2cHhkZWMuYwogbGliYXZjb2RlYy9saWJ2cHhlbmMuYwpAQCAtMTExNyw5ICsx MTE2LDYgQEAgbGliYXZjb2RlYy9tMTAxLmMKIGxpYmF2Y29kZWMvbWFjZS5jCiBsaWJhdmNvZGVj L21hdGhvcHMuaAogbGliYXZjb2RlYy9tYXRodGFibGVzLmMKLWxpYmF2Y29kZWMvbWRjdF9maXhl ZF8zMi5jCi1saWJhdmNvZGVjL21kY3RfZmxvYXQuYwotbGliYXZjb2RlYy9tZGN0X3RlbXBsYXRl LmMKIGxpYmF2Y29kZWMvbWRlYy5jCiBsaWJhdmNvZGVjL21lX2NtcC5jCiBsaWJhdmNvZGVjL21l X2NtcC5oCkBAIC0xMzgxLDEwICsxMzc3LDYgQEAgbGliYXZjb2RlYy9wcGMvYXVkaW9kc3AuYwog bGliYXZjb2RlYy9wcGMvYmxvY2tkc3AuYwogbGliYXZjb2RlYy9wcGMvZmRjdC5oCiBsaWJhdmNv ZGVjL3BwYy9mZGN0ZHNwLmMKLWxpYmF2Y29kZWMvcHBjL2ZmdF9hbHRpdmVjLlMKLWxpYmF2Y29k ZWMvcHBjL2ZmdF9pbml0LmMKLWxpYmF2Y29kZWMvcHBjL2ZmdF92c3guYwotbGliYXZjb2RlYy9w cGMvZmZ0X3ZzeC5oCiBsaWJhdmNvZGVjL3BwYy9mbXRjb252ZXJ0X2FsdGl2ZWMuYwogbGliYXZj b2RlYy9wcGMvaDI2NGNocm9tYV9pbml0LmMKIGxpYmF2Y29kZWMvcHBjL2gyNjRjaHJvbWFfdGVt cGxhdGUuYwpAQCAtMTQ3MCwxNSArMTQ2MiwxNyBAQCBsaWJhdmNvZGVjL3Jhdy5jCiBsaWJhdmNv ZGVjL3Jhdy5oCiBsaWJhdmNvZGVjL3Jhd2RlYy5jCiBsaWJhdmNvZGVjL3Jhd2VuYy5jCi1saWJh dmNvZGVjL3JkZnQuYwotbGliYXZjb2RlYy9yZGZ0LmgKIGxpYmF2Y29kZWMvcmVhbHRleHRkZWMu YwogbGliYXZjb2RlYy9yZWN0YW5nbGUuaAorbGliYXZjb2RlYy9yZWZzdHJ1Y3QuYworbGliYXZj b2RlYy9yZWZzdHJ1Y3QuaAogbGliYXZjb2RlYy9yZW1vdmVfZXh0cmFkYXRhX2JzZi5jCiBsaWJh dmNvZGVjL3JldmVyc2UuYwogbGliYXZjb2RlYy9yaXNjdi9NYWtlZmlsZQogbGliYXZjb2RlYy9y aXNjdi9hYWNwc2RzcF9pbml0LmMKIGxpYmF2Y29kZWMvcmlzY3YvYWFjcHNkc3BfcnZ2LlMKK2xp YmF2Y29kZWMvcmlzY3YvYWMzZHNwX2luaXQuYworbGliYXZjb2RlYy9yaXNjdi9hYzNkc3BfcnZi LlMKIGxpYmF2Y29kZWMvcmlzY3YvYWxhY2RzcF9pbml0LmMKIGxpYmF2Y29kZWMvcmlzY3YvYWxh Y2RzcF9ydnYuUwogbGliYXZjb2RlYy9yaXNjdi9hdWRpb2RzcF9pbml0LmMKQEAgLTE0ODcsOCAr MTQ4MSwxNCBAQCBsaWJhdmNvZGVjL3Jpc2N2L2F1ZGlvZHNwX3J2di5TCiBsaWJhdmNvZGVjL3Jp c2N2L2Jzd2FwZHNwX2luaXQuYwogbGliYXZjb2RlYy9yaXNjdi9ic3dhcGRzcF9ydmIuUwogbGli YXZjb2RlYy9yaXNjdi9ic3dhcGRzcF9ydnYuUworbGliYXZjb2RlYy9yaXNjdi9leHJkc3BfaW5p dC5jCitsaWJhdmNvZGVjL3Jpc2N2L2V4cmRzcF9ydnYuUwogbGliYXZjb2RlYy9yaXNjdi9mbXRj b252ZXJ0X2luaXQuYwogbGliYXZjb2RlYy9yaXNjdi9mbXRjb252ZXJ0X3J2di5TCitsaWJhdmNv ZGVjL3Jpc2N2L2c3MjJkc3BfaW5pdC5jCitsaWJhdmNvZGVjL3Jpc2N2L2c3MjJkc3BfcnZ2LlMK K2xpYmF2Y29kZWMvcmlzY3YvaDI2NF9jaHJvbWFfaW5pdF9yaXNjdi5jCitsaWJhdmNvZGVjL3Jp c2N2L2gyNjRfbWNfY2hyb21hLlMKIGxpYmF2Y29kZWMvcmlzY3YvaWRjdGRzcF9pbml0LmMKIGxp YmF2Y29kZWMvcmlzY3YvaWRjdGRzcF9ydnYuUwogbGliYXZjb2RlYy9yaXNjdi9vcHVzZHNwX2lu aXQuYwpAQCAtMTY5Niw2ICsxNjk2LDcgQEAgbGliYXZjb2RlYy92YWFwaV9kZWNvZGUuYwogbGli YXZjb2RlYy92YWFwaV9kZWNvZGUuaAogbGliYXZjb2RlYy92YWFwaV9lbmNvZGUuYwogbGliYXZj b2RlYy92YWFwaV9lbmNvZGUuaAorbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfYXYxLmMKIGxpYmF2 Y29kZWMvdmFhcGlfZW5jb2RlX2gyNjQuYwogbGliYXZjb2RlYy92YWFwaV9lbmNvZGVfaDI2NS5j CiBsaWJhdmNvZGVjL3ZhYXBpX2VuY29kZV9tanBlZy5jCkBAIC0xNzc4LDYgKzE3NzksNyBAQCBs aWJhdmNvZGVjL3ZwOC5jCiBsaWJhdmNvZGVjL3ZwOC5oCiBsaWJhdmNvZGVjL3ZwODlfcmFjLmgK IGxpYmF2Y29kZWMvdnA4X3BhcnNlci5jCitsaWJhdmNvZGVjL3ZwOGRhdGEuYwogbGliYXZjb2Rl Yy92cDhkYXRhLmgKIGxpYmF2Y29kZWMvdnA4ZHNwLmMKIGxpYmF2Y29kZWMvdnA4ZHNwLmgKQEAg LTE4MDgsNiArMTgxMCwxOCBAQCBsaWJhdmNvZGVjL3ZweF9yYWMuYwogbGliYXZjb2RlYy92cHhf cmFjLmgKIGxpYmF2Y29kZWMvdnFhdmlkZW8uYwogbGliYXZjb2RlYy92cWNkZWMuYworbGliYXZj b2RlYy92dWxrYW4uYworbGliYXZjb2RlYy92dWxrYW4uaAorbGliYXZjb2RlYy92dWxrYW5fYXYx LmMKK2xpYmF2Y29kZWMvdnVsa2FuX2RlY29kZS5jCitsaWJhdmNvZGVjL3Z1bGthbl9kZWNvZGUu aAorbGliYXZjb2RlYy92dWxrYW5fdmlkZW8uYworbGliYXZjb2RlYy92dWxrYW5fdmlkZW8uaAor bGliYXZjb2RlYy92dWxrYW5fdmlkZW9fY29kZWNfYXYxc3RkLmgKK2xpYmF2Y29kZWMvdnVsa2Fu X3ZpZGVvX2NvZGVjX2F2MXN0ZF9kZWNvZGUuaAorbGliYXZjb2RlYy92dmMuaAorbGliYXZjb2Rl Yy92dmNfbXA0dG9hbm5leGJfYnNmLmMKK2xpYmF2Y29kZWMvdnZjX3BhcnNlci5jCiBsaWJhdmNv ZGVjL3dhdmFyYy5jCiBsaWJhdmNvZGVjL3dhdnBhY2suYwogbGliYXZjb2RlYy93YXZwYWNrLmgK QEAgLTE4NzUsNyArMTg4OSw2IEBAIGxpYmF2Y29kZWMveDg2L2NvbnN0YW50cy5oCiBsaWJhdmNv ZGVjL3g4Ni9kY2Fkc3AuYXNtCiBsaWJhdmNvZGVjL3g4Ni9kY2Fkc3BfaW5pdC5jCiBsaWJhdmNv ZGVjL3g4Ni9kY3QzMi5hc20KLWxpYmF2Y29kZWMveDg2L2RjdF9pbml0LmMKIGxpYmF2Y29kZWMv eDg2L2RpcmFjX2R3dC5hc20KIGxpYmF2Y29kZWMveDg2L2RpcmFjX2R3dF9pbml0LmMKIGxpYmF2 Y29kZWMveDg2L2RpcmFjZHNwLmFzbQpAQCAtMTg4Nyw5ICsxOTAwLDYgQEAgbGliYXZjb2RlYy94 ODYvZXhyZHNwX2luaXQuYwogbGliYXZjb2RlYy94ODYvZmRjdC5jCiBsaWJhdmNvZGVjL3g4Ni9m ZGN0LmgKIGxpYmF2Y29kZWMveDg2L2ZkY3Rkc3BfaW5pdC5jCi1saWJhdmNvZGVjL3g4Ni9mZnQu YXNtCi1saWJhdmNvZGVjL3g4Ni9mZnQuaAotbGliYXZjb2RlYy94ODYvZmZ0X2luaXQuYwogbGli YXZjb2RlYy94ODYvZmxhY19kc3BfZ3BsLmFzbQogbGliYXZjb2RlYy94ODYvZmxhY2RzcC5hc20K IGxpYmF2Y29kZWMveDg2L2ZsYWNkc3BfaW5pdC5jCkBAIC0xOTIzLDggKzE5MzMsNiBAQCBsaWJh dmNvZGVjL3g4Ni9ocGVsZHNwLmFzbQogbGliYXZjb2RlYy94ODYvaHBlbGRzcC5oCiBsaWJhdmNv ZGVjL3g4Ni9ocGVsZHNwX2luaXQuYwogbGliYXZjb2RlYy94ODYvaHBlbGRzcF9ybmRfdGVtcGxh dGUuYwotbGliYXZjb2RlYy94ODYvaHBlbGRzcF92cDMuYXNtCi1saWJhdmNvZGVjL3g4Ni9ocGVs ZHNwX3ZwM19pbml0LmMKIGxpYmF2Y29kZWMveDg2L2h1ZmZ5dXZkc3AuYXNtCiBsaWJhdmNvZGVj L3g4Ni9odWZmeXV2ZHNwX2luaXQuYwogbGliYXZjb2RlYy94ODYvaHVmZnl1dmRzcF90ZW1wbGF0 ZS5hc20KQEAgLTIwMjUsNiArMjAzMyw3IEBAIGxpYmF2Y29kZWMveDg2L3ZwOWxwZl8xNmJwcC5h c20KIGxpYmF2Y29kZWMveDg2L3ZwOW1jLmFzbQogbGliYXZjb2RlYy94ODYvdnA5bWNfMTZicHAu YXNtCiBsaWJhdmNvZGVjL3g4Ni92cHhfYXJpdGguaAorbGliYXZjb2RlYy94ODYvdzY0eG1tdGVz dC5jCiBsaWJhdmNvZGVjL3g4Ni94dmlkaWRjdC5hc20KIGxpYmF2Y29kZWMveDg2L3h2aWRpZGN0 LmgKIGxpYmF2Y29kZWMveDg2L3h2aWRpZGN0X2luaXQuYwpAQCAtMjExNSw4ICsyMTI0LDExIEBA IGxpYmF2ZGV2aWNlL3hjYmdyYWIuYwogbGliYXZkZXZpY2UveHYuYwogbGliYXZmaWx0ZXIvTWFr ZWZpbGUKIGxpYmF2ZmlsdGVyL2FhcmNoNjQvTWFrZWZpbGUKK2xpYmF2ZmlsdGVyL2FhcmNoNjQv dmZfYndkaWZfaW5pdF9hYXJjaDY0LmMKK2xpYmF2ZmlsdGVyL2FhcmNoNjQvdmZfYndkaWZfbmVv bi5TCiBsaWJhdmZpbHRlci9hYXJjaDY0L3ZmX25sbWVhbnNfaW5pdC5jCiBsaWJhdmZpbHRlci9h YXJjaDY0L3ZmX25sbWVhbnNfbmVvbi5TCitsaWJhdmZpbHRlci9hZHluYW1pY2VxdWFsaXplcl90 ZW1wbGF0ZS5jCiBsaWJhdmZpbHRlci9hZXZhbC5jCiBsaWJhdmZpbHRlci9hZl9hY29udHJhc3Qu YwogbGliYXZmaWx0ZXIvYWZfYWNvcHkuYwpAQCAtMjE1OCw2ICsyMTcwLDcgQEAgbGliYXZmaWx0 ZXIvYWZfYXBoYXNlci5jCiBsaWJhdmZpbHRlci9hZl9hcHN5Y2xpcC5jCiBsaWJhdmZpbHRlci9h Zl9hcHVsc2F0b3IuYwogbGliYXZmaWx0ZXIvYWZfYXJlc2FtcGxlLmMKK2xpYmF2ZmlsdGVyL2Fm X2FybHMuYwogbGliYXZmaWx0ZXIvYWZfYXJubmRuLmMKIGxpYmF2ZmlsdGVyL2FmX2FzZHIuYwog bGliYXZmaWx0ZXIvYWZfYXNldG5zYW1wbGVzLmMKQEAgLTIyNTcsNyArMjI3MCwxMCBAQCBsaWJh dmZpbHRlci9idWZmZXJzaW5rLmMKIGxpYmF2ZmlsdGVyL2J1ZmZlcnNpbmsuaAogbGliYXZmaWx0 ZXIvYnVmZmVyc3JjLmMKIGxpYmF2ZmlsdGVyL2J1ZmZlcnNyYy5oCi1saWJhdmZpbHRlci9id2Rp Zi5oCitsaWJhdmZpbHRlci9id2RpZmRzcC5jCitsaWJhdmZpbHRlci9id2RpZmRzcC5oCitsaWJh dmZpbHRlci9jY2ZpZm8uYworbGliYXZmaWx0ZXIvY2NmaWZvLmgKIGxpYmF2ZmlsdGVyL2NvbG9y Y2hhbm5lbG1peGVyX3RlbXBsYXRlLmMKIGxpYmF2ZmlsdGVyL2NvbG9yc3BhY2UuYwogbGliYXZm aWx0ZXIvY29sb3JzcGFjZS5oCkBAIC0yMjcwLDI4ICsyMjg2LDYgQEAgbGliYXZmaWx0ZXIvZGVz aGFrZS5oCiBsaWJhdmZpbHRlci9kbm4vTWFrZWZpbGUKIGxpYmF2ZmlsdGVyL2Rubi9kbm5fYmFj a2VuZF9jb21tb24uYwogbGliYXZmaWx0ZXIvZG5uL2Rubl9iYWNrZW5kX2NvbW1vbi5oCi1saWJh dmZpbHRlci9kbm4vZG5uX2JhY2tlbmRfbmF0aXZlLmMKLWxpYmF2ZmlsdGVyL2Rubi9kbm5fYmFj a2VuZF9uYXRpdmUuaAotbGliYXZmaWx0ZXIvZG5uL2Rubl9iYWNrZW5kX25hdGl2ZV9sYXllcl9h dmdwb29sLmMKLWxpYmF2ZmlsdGVyL2Rubi9kbm5fYmFja2VuZF9uYXRpdmVfbGF5ZXJfYXZncG9v bC5oCi1saWJhdmZpbHRlci9kbm4vZG5uX2JhY2tlbmRfbmF0aXZlX2xheWVyX2NvbnYyZC5jCi1s aWJhdmZpbHRlci9kbm4vZG5uX2JhY2tlbmRfbmF0aXZlX2xheWVyX2NvbnYyZC5oCi1saWJhdmZp bHRlci9kbm4vZG5uX2JhY2tlbmRfbmF0aXZlX2xheWVyX2RlbnNlLmMKLWxpYmF2ZmlsdGVyL2Ru bi9kbm5fYmFja2VuZF9uYXRpdmVfbGF5ZXJfZGVuc2UuaAotbGliYXZmaWx0ZXIvZG5uL2Rubl9i YWNrZW5kX25hdGl2ZV9sYXllcl9kZXB0aDJzcGFjZS5jCi1saWJhdmZpbHRlci9kbm4vZG5uX2Jh Y2tlbmRfbmF0aXZlX2xheWVyX2RlcHRoMnNwYWNlLmgKLWxpYmF2ZmlsdGVyL2Rubi9kbm5fYmFj a2VuZF9uYXRpdmVfbGF5ZXJfbWF0aGJpbmFyeS5jCi1saWJhdmZpbHRlci9kbm4vZG5uX2JhY2tl bmRfbmF0aXZlX2xheWVyX21hdGhiaW5hcnkuaAotbGliYXZmaWx0ZXIvZG5uL2Rubl9iYWNrZW5k X25hdGl2ZV9sYXllcl9tYXRodW5hcnkuYwotbGliYXZmaWx0ZXIvZG5uL2Rubl9iYWNrZW5kX25h dGl2ZV9sYXllcl9tYXRodW5hcnkuaAotbGliYXZmaWx0ZXIvZG5uL2Rubl9iYWNrZW5kX25hdGl2 ZV9sYXllcl9tYXhpbXVtLmMKLWxpYmF2ZmlsdGVyL2Rubi9kbm5fYmFja2VuZF9uYXRpdmVfbGF5 ZXJfbWF4aW11bS5oCi1saWJhdmZpbHRlci9kbm4vZG5uX2JhY2tlbmRfbmF0aXZlX2xheWVyX3Bh ZC5jCi1saWJhdmZpbHRlci9kbm4vZG5uX2JhY2tlbmRfbmF0aXZlX2xheWVyX3BhZC5oCi1saWJh dmZpbHRlci9kbm4vZG5uX2JhY2tlbmRfbmF0aXZlX2xheWVycy5jCi1saWJhdmZpbHRlci9kbm4v ZG5uX2JhY2tlbmRfbmF0aXZlX2xheWVycy5oCi1saWJhdmZpbHRlci9kbm4vZG5uX2JhY2tlbmRf b3BlbnZpbm8uaAotbGliYXZmaWx0ZXIvZG5uL2Rubl9iYWNrZW5kX3RmLmgKIGxpYmF2ZmlsdGVy L2Rubi9kbm5faW50ZXJmYWNlLmMKIGxpYmF2ZmlsdGVyL2Rubi9kbm5faW9fcHJvYy5jCiBsaWJh dmZpbHRlci9kbm4vZG5uX2lvX3Byb2MuaApAQCAtMjM5OSw2ICsyMzkzLDcgQEAgbGliYXZmaWx0 ZXIvc2V0cHRzLmMKIGxpYmF2ZmlsdGVyL3NldHRiLmMKIGxpYmF2ZmlsdGVyL3NpZ25hdHVyZS5o CiBsaWJhdmZpbHRlci9zaWduYXR1cmVfbG9va3VwLmMKK2xpYmF2ZmlsdGVyL3NpbGVuY2VyZW1v dmVfdGVtcGxhdGUuYwogbGliYXZmaWx0ZXIvc3BsaXQuYwogbGliYXZmaWx0ZXIvc3JjX2F2c3lu Y3Rlc3QuYwogbGliYXZmaWx0ZXIvc3JjX21vdmllLmMKQEAgLTI0NDMsNyArMjQzOCw5IEBAIGxp YmF2ZmlsdGVyL3ZmX2JsdXJkZXRlY3QuYwogbGliYXZmaWx0ZXIvdmZfYm0zZC5jCiBsaWJhdmZp bHRlci92Zl9ib3hibHVyLmMKIGxpYmF2ZmlsdGVyL3ZmX2J3ZGlmLmMKK2xpYmF2ZmlsdGVyL3Zm X2J3ZGlmX3Z1bGthbi5jCiBsaWJhdmZpbHRlci92Zl9jYXMuYworbGliYXZmaWx0ZXIvdmZfY2Ny ZXBhY2suYwogbGliYXZmaWx0ZXIvdmZfY2hyb21hYmVyX3Z1bGthbi5jCiBsaWJhdmZpbHRlci92 Zl9jaHJvbWFrZXkuYwogbGliYXZmaWx0ZXIvdmZfY2hyb21hbnIuYwpAQCAtMjU2OSw2ICsyNTY2 LDcgQEAgbGliYXZmaWx0ZXIvdmZfbWFza2VkbWVyZ2UuYwogbGliYXZmaWx0ZXIvdmZfbWFza2Vk bWlubWF4LmMKIGxpYmF2ZmlsdGVyL3ZmX21hc2tlZHRocmVzaG9sZC5jCiBsaWJhdmZpbHRlci92 Zl9tYXNrZnVuLmMKK2xpYmF2ZmlsdGVyL3ZmX21jZGVpbnQuYwogbGliYXZmaWx0ZXIvdmZfbWVk aWFuLmMKIGxpYmF2ZmlsdGVyL3ZmX21lcmdlcGxhbmVzLmMKIGxpYmF2ZmlsdGVyL3ZmX21lc3Rp bWF0ZS5jCkBAIC0yNTg3LDYgKzI1ODUsNyBAQCBsaWJhdmZpbHRlci92Zl9ubG1lYW5zLmMKIGxp YmF2ZmlsdGVyL3ZmX25sbWVhbnMuaAogbGliYXZmaWx0ZXIvdmZfbmxtZWFuc19pbml0LmgKIGxp YmF2ZmlsdGVyL3ZmX25sbWVhbnNfb3BlbmNsLmMKK2xpYmF2ZmlsdGVyL3ZmX25sbWVhbnNfdnVs a2FuLmMKIGxpYmF2ZmlsdGVyL3ZmX25uZWRpLmMKIGxpYmF2ZmlsdGVyL3ZmX25vaXNlLmMKIGxp YmF2ZmlsdGVyL3ZmX25vaXNlLmgKQEAgLTI2ODAsNiArMjY3OSw3IEBAIGxpYmF2ZmlsdGVyL3Zm X3RyYW5zcG9zZV92dWxrYW4uYwogbGliYXZmaWx0ZXIvdmZfdW5zaGFycC5jCiBsaWJhdmZpbHRl ci92Zl91bnNoYXJwX29wZW5jbC5jCiBsaWJhdmZpbHRlci92Zl91bnRpbGUuYworbGliYXZmaWx0 ZXIvdmZfdXNwcC5jCiBsaWJhdmZpbHRlci92Zl92MzYwLmMKIGxpYmF2ZmlsdGVyL3ZmX3ZhZ3Vl ZGVub2lzZXIuYwogbGliYXZmaWx0ZXIvdmZfdmFyYmx1ci5jCkBAIC0yNjk5LDYgKzI2OTksNyBA QCBsaWJhdmZpbHRlci92Zl93ZWF2ZS5jCiBsaWJhdmZpbHRlci92Zl94YnIuYwogbGliYXZmaWx0 ZXIvdmZfeGZhZGUuYwogbGliYXZmaWx0ZXIvdmZfeGZhZGVfb3BlbmNsLmMKK2xpYmF2ZmlsdGVy L3ZmX3hmYWRlX3Z1bGthbi5jCiBsaWJhdmZpbHRlci92Zl94bWVkaWFuLmMKIGxpYmF2ZmlsdGVy L3ZmX3lhZGlmLmMKIGxpYmF2ZmlsdGVyL3ZmX3lhZXBibHVyLmMKQEAgLTI3MTcsMTAgKzI3MTgs MTMgQEAgbGliYXZmaWx0ZXIvdnNyY19tYW5kZWxicm90LmMKIGxpYmF2ZmlsdGVyL3ZzcmNfbXB0 ZXN0c3JjLmMKIGxpYmF2ZmlsdGVyL3ZzcmNfc2llcnBpbnNraS5jCiBsaWJhdmZpbHRlci92c3Jj X3Rlc3RzcmMuYworbGliYXZmaWx0ZXIvdnNyY190ZXN0c3JjX3Z1bGthbi5jCiBsaWJhdmZpbHRl ci92dWxrYW4uYwogbGliYXZmaWx0ZXIvdnVsa2FuLmgKIGxpYmF2ZmlsdGVyL3Z1bGthbl9maWx0 ZXIuYwogbGliYXZmaWx0ZXIvdnVsa2FuX2ZpbHRlci5oCitsaWJhdmZpbHRlci92dWxrYW5fc2hh ZGVyYy5jCitsaWJhdmZpbHRlci92dWxrYW5fc3BpcnYuaAogbGliYXZmaWx0ZXIvdzNmZGlmLmgK IGxpYmF2ZmlsdGVyL3dpbmRvd19mdW5jLmgKIGxpYmF2ZmlsdGVyL3g4Ni9NYWtlZmlsZQpAQCAt MjgxMSw2ICsyODE1LDggQEAgbGliYXZmb3JtYXQvYWFkZWMuYwogbGliYXZmb3JtYXQvYWF4ZGVj LmMKIGxpYmF2Zm9ybWF0L2FjM19jaGFubmVsX2xheW91dF90YWIuYwogbGliYXZmb3JtYXQvYWMz ZGVjLmMKK2xpYmF2Zm9ybWF0L2FjNGRlYy5jCitsaWJhdmZvcm1hdC9hYzRlbmMuYwogbGliYXZm b3JtYXQvYWNlZGVjLmMKIGxpYmF2Zm9ybWF0L2FjbS5jCiBsaWJhdmZvcm1hdC9hY3QuYwpAQCAt Mjk0Miw2ICsyOTQ4LDkgQEAgbGliYXZmb3JtYXQvZHhhLmMKIGxpYmF2Zm9ybWF0L2VhY2RhdGEu YwogbGliYXZmb3JtYXQvZWxlY3Ryb25pY2FydHMuYwogbGliYXZmb3JtYXQvZXBhZmRlYy5jCits aWJhdmZvcm1hdC9ldmMuYworbGliYXZmb3JtYXQvZXZjLmgKK2xpYmF2Zm9ybWF0L2V2Y2RlYy5j CiBsaWJhdmZvcm1hdC9mZm1ldGEuaAogbGliYXZmb3JtYXQvZmZtZXRhZGVjLmMKIGxpYmF2Zm9y bWF0L2ZmbWV0YWVuYy5jCkBAIC0zMDUwLDggKzMwNTksOCBAQCBsaWJhdmZvcm1hdC9pdmZlbmMu YwogbGliYXZmb3JtYXQvamFjb3N1YmRlYy5jCiBsaWJhdmZvcm1hdC9qYWNvc3ViZW5jLmMKIGxp YmF2Zm9ybWF0L2pwZWd0YWJsZXMuYwotbGliYXZmb3JtYXQvanBlZ3hsX3Byb2JlLmMKLWxpYmF2 Zm9ybWF0L2pwZWd4bF9wcm9iZS5oCitsaWJhdmZvcm1hdC9qcGVneGxfYW5pbV9kZWMuYworbGli YXZmb3JtYXQvanBlZ3hsX3BhcnNlLmMKIGxpYmF2Zm9ybWF0L2p2ZGVjLmMKIGxpYmF2Zm9ybWF0 L2t2YWcuYwogbGliYXZmb3JtYXQvbGFmZGVjLmMKQEAgLTMxNzgsMTEgKzMxODcsMTMgQEAgbGli YXZmb3JtYXQvb3B0aW9ucy5jCiBsaWJhdmZvcm1hdC9vcHRpb25zX3RhYmxlLmgKIGxpYmF2Zm9y bWF0L29zX3N1cHBvcnQuYwogbGliYXZmb3JtYXQvb3Nfc3VwcG9ydC5oCitsaWJhdmZvcm1hdC9v c3EuYwogbGliYXZmb3JtYXQvcGFmLmMKIGxpYmF2Zm9ybWF0L3BjbS5jCiBsaWJhdmZvcm1hdC9w Y20uaAogbGliYXZmb3JtYXQvcGNtZGVjLmMKIGxpYmF2Zm9ybWF0L3BjbWVuYy5jCitsaWJhdmZv cm1hdC9wZHZkZWMuYwogbGliYXZmb3JtYXQvcGpzZGVjLmMKIGxpYmF2Zm9ybWF0L3BtcGRlYy5j CiBsaWJhdmZvcm1hdC9wcF9ibmsuYwpAQCAtMzE5NSw2ICszMjA2LDcgQEAgbGliYXZmb3JtYXQv cWNwLmMKIGxpYmF2Zm9ybWF0L3F0cGFsZXR0ZS5jCiBsaWJhdmZvcm1hdC9xdHBhbGV0dGUuaAog bGliYXZmb3JtYXQvcjNkLmMKK2xpYmF2Zm9ybWF0L3JhbmdlY29kZXJfZGVjLmMKIGxpYmF2Zm9y bWF0L3Jhd2RlYy5jCiBsaWJhdmZvcm1hdC9yYXdkZWMuaAogbGliYXZmb3JtYXQvcmF3ZW5jLmMK QEAgLTMzODAsNiArMzM5Miw3IEBAIGxpYmF2Zm9ybWF0L3VybC5jCiBsaWJhdmZvcm1hdC91cmwu aAogbGliYXZmb3JtYXQvdXJsZGVjb2RlLmMKIGxpYmF2Zm9ybWF0L3VybGRlY29kZS5oCitsaWJh dmZvcm1hdC91c21kZWMuYwogbGliYXZmb3JtYXQvdXRpbHMuYwogbGliYXZmb3JtYXQvdmFnLmMK IGxpYmF2Zm9ybWF0L3ZhcG91cnN5bnRoLmMKQEAgLTM0MDMsNiArMzQxNiw3IEBAIGxpYmF2Zm9y bWF0L3ZwY2MuaAogbGliYXZmb3JtYXQvdnBrLmMKIGxpYmF2Zm9ybWF0L3ZwbGF5ZXJkZWMuYwog bGliYXZmb3JtYXQvdnFmLmMKK2xpYmF2Zm9ybWF0L3Z2Y2RlYy5jCiBsaWJhdmZvcm1hdC93NjQu YwogbGliYXZmb3JtYXQvdzY0LmgKIGxpYmF2Zm9ybWF0L3dhZHkuYwpAQCAtMzQ4Miw3ICszNDk2 LDYgQEAgbGliYXZ1dGlsL2F2c3RyaW5nLmgKIGxpYmF2dXRpbC9hdnV0aWwuaAogbGliYXZ1dGls L2Jhc2U2NC5jCiBsaWJhdnV0aWwvYmFzZTY0LmgKLWxpYmF2dXRpbC9iZmluL3RpbWVyLmgKIGxp YmF2dXRpbC9ibG93ZmlzaC5jCiBsaWJhdnV0aWwvYmxvd2Zpc2guaAogbGliYXZ1dGlsL2Jwcmlu dC5jCkBAIC0zNTIxLDEyICszNTM0LDE1IEBAIGxpYmF2dXRpbC9kb3ZpX21ldGEuaAogbGliYXZ1 dGlsL2Rvd25taXhfaW5mby5jCiBsaWJhdnV0aWwvZG93bm1peF9pbmZvLmgKIGxpYmF2dXRpbC9k eW5hcnJheS5oCitsaWJhdnV0aWwvZW1tcy5oCiBsaWJhdnV0aWwvZW5jcnlwdGlvbl9pbmZvLmMK IGxpYmF2dXRpbC9lbmNyeXB0aW9uX2luZm8uaAogbGliYXZ1dGlsL2Vycm9yLmMKIGxpYmF2dXRp bC9lcnJvci5oCiBsaWJhdnV0aWwvZXZhbC5jCiBsaWJhdnV0aWwvZXZhbC5oCitsaWJhdnV0aWwv ZXhlY3V0b3IuYworbGliYXZ1dGlsL2V4ZWN1dG9yLmgKIGxpYmF2dXRpbC9mZm1hdGguaAogbGli YXZ1dGlsL2ZpZm8uYwogbGliYXZ1dGlsL2ZpZm8uaApAQCAtMzcwOSwxMiArMzcyNSwxMiBAQCBs aWJhdnV0aWwvdmVyc2lvbi5oCiBsaWJhdnV0aWwvdmVyc2lvbl9tYWpvci5oCiBsaWJhdnV0aWwv dmlkZW9fZW5jX3BhcmFtcy5jCiBsaWJhdnV0aWwvdmlkZW9fZW5jX3BhcmFtcy5oCitsaWJhdnV0 aWwvdmlkZW9faGludC5jCitsaWJhdnV0aWwvdmlkZW9faGludC5oCiBsaWJhdnV0aWwvdnVsa2Fu LmMKIGxpYmF2dXRpbC92dWxrYW4uaAogbGliYXZ1dGlsL3Z1bGthbl9mdW5jdGlvbnMuaAotbGli YXZ1dGlsL3Z1bGthbl9nbHNsYW5nLmMKIGxpYmF2dXRpbC92dWxrYW5fbG9hZGVyLmgKLWxpYmF2 dXRpbC92dWxrYW5fc2hhZGVyYy5jCiBsaWJhdnV0aWwvd2NoYXJfZmlsZW5hbWUuaAogbGliYXZ1 dGlsL3g4Ni9NYWtlZmlsZQogbGliYXZ1dGlsL3g4Ni9hc20uaApAQCAtMzcyMyw3ICszNzM5LDYg QEAgbGliYXZ1dGlsL3g4Ni9jcHUuYwogbGliYXZ1dGlsL3g4Ni9jcHUuaAogbGliYXZ1dGlsL3g4 Ni9jcHVpZC5hc20KIGxpYmF2dXRpbC94ODYvZW1tcy5hc20KLWxpYmF2dXRpbC94ODYvZW1tcy5o CiBsaWJhdnV0aWwveDg2L2ZpeGVkX2RzcC5hc20KIGxpYmF2dXRpbC94ODYvZml4ZWRfZHNwX2lu aXQuYwogbGliYXZ1dGlsL3g4Ni9mbG9hdF9kc3AuYXNtCkBAIC0zOTQzLDE1ICszOTU4LDE0IEBA IHRlc3RzL2ZhdGUvY292ZXItYXJ0Lm1hawogdGVzdHMvZmF0ZS9kY2EubWFrCiB0ZXN0cy9mYXRl L2RlbXV4Lm1hawogdGVzdHMvZmF0ZS9kZmEubWFrCi10ZXN0cy9mYXRlL2Rubi5tYWsKIHRlc3Rz L2ZhdGUvZG54aGQubWFrCiB0ZXN0cy9mYXRlL2RwY20ubWFrCiB0ZXN0cy9mYXRlL2R2dmlkZW8u bWFrCiB0ZXN0cy9mYXRlL2VhLm1hawordGVzdHMvZmF0ZS9lbmNfZXh0ZXJuYWwubWFrCiB0ZXN0 cy9mYXRlL2V4aWYubWFrCiB0ZXN0cy9mYXRlL2ZmbXBlZy5tYWsKIHRlc3RzL2ZhdGUvZmZwcm9i ZS5tYWsKLXRlc3RzL2ZhdGUvZmZ0Lm1hawogdGVzdHMvZmF0ZS9maWZvLW11eGVyLm1hawogdGVz dHMvZmF0ZS9maWx0ZXItYXVkaW8ubWFrCiB0ZXN0cy9mYXRlL2ZpbHRlci12aWRlby5tYWsKQEAg LTM5NjksNiArMzk4Myw4IEBAIHRlc3RzL2ZhdGUvaWQzdjIubWFrCiB0ZXN0cy9mYXRlL2ltYWdl Lm1hawogdGVzdHMvZmF0ZS9pbWYubWFrCiB0ZXN0cy9mYXRlL2luZGVvLm1hawordGVzdHMvZmF0 ZS9qcGVnMjAwMC5tYWsKK3Rlc3RzL2ZhdGUvanhsLm1hawogdGVzdHMvZmF0ZS9sYXZmLWF1ZGlv Lm1hawogdGVzdHMvZmF0ZS9sYXZmLWNvbnRhaW5lci5tYWsKIHRlc3RzL2ZhdGUvbGF2Zi1pbWFn ZS5tYWsKQEAgLTQwMjYsMTEgKzQwNDIsMTEgQEAgdGVzdHMvZmF0ZS93bWEubWFrCiB0ZXN0cy9m YXRlL3h2aWQubWFrCiB0b29scy9NYWtlZmlsZQogdG9vbHMvYXZpb2NhdC5jCi10b29scy9jbDJj CiB0b29scy9jcnlwdG9fYmVuY2guYwogdG9vbHMvY3dzMmZ3cy5jCiB0b29scy9kZWNvZGVfc2lt cGxlLmMKIHRvb2xzL2RlY29kZV9zaW1wbGUuaAordG9vbHMvZW5jX3JlY29uX2ZyYW1lX3Rlc3Qu YwogdG9vbHMvZW51bV9vcHRpb25zLmMKIHRvb2xzL2ZmZXNjYXBlLmMKIHRvb2xzL2ZmZXZhbC5j CkBAIC00MDQ1LDYgKzQwNjEsNyBAQCB0b29scy9zY2FsZV9zbGljZV90ZXN0LmMKIHRvb2xzL3Nl ZWtfcHJpbnQuYwogdG9vbHMvc2lkeGluZGV4LmMKIHRvb2xzL3NvZmEyd2F2cy5jCit0b29scy9z b3VyY2UyYwogdG9vbHMvdHJhc2hlci5jCiB0b29scy91bmNvZGVkX2ZyYW1lLmMKIHRvb2xzL3Zl bmNfZGF0YV9kdW1wLmMKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCBjMzU4 N2NlLi41MzdhOGI3IDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEsNCAr MSw0IEBACi1TSEE1MTIgKGZmbXBlZy1mcmVlLTYuMC4xLnRhci54eikgPSBkYTRhYTZkYjkyZmJi ZmRkYTlmYzY0MjQ5YTBjODI2YWU1ZGUzM2NhY2JlZDVlYmJmYmJlOWEzMGQ1N2FlNmY3OWI2MTQ5 NmZjZjE1MWRjNTA0ZDY0NmVmZDQ0YmE2MzcyMjIyMGJlMGI3MThkZDhmZmRhYTViMjUxMGQ5MmE5 NwotU0hBNTEyIChmZm1wZWctNi4wLjEudGFyLnh6LmFzYykgPSAzMTRmOWVmOTk2Yjg1YmM5M2M5 ZmI4MjNkNTgyNjk3Yzc0MTVhYzM1ZjU2YmZjOWNkOTA2ODkzNDkxYzgwNzZkZjkwYmQ4NTJjZjZl NWU3NTdiMWZhOTRiZDQxNWVkMTA4NDg4YzEyMjBhZGQ0OWViMWY0ODU0ZmMyNTNjMTc4YworU0hB NTEyIChmZm1wZWctZnJlZS02LjEudGFyLnh6KSA9IGViMmMwOTA2YjY1OWE4MWYwNjFlNTA4YjVj NTAwNGVmZDNmZGI4Mjk5ZjJhNWU0ZTk1NGUxZGQwNTg5NzcwYmFjY2ZkYTc2OGZhOWQzZTM5YmRl MWUxZDg2NDRjNDIwMTVlMGY2ZjY3NGFiOTZhOTQ3NzZjNjlhYWQ1MTVkNzJkCitTSEE1MTIgKGZm bXBlZy02LjEudGFyLnh6LmFzYykgPSBlNDg4NTI3MDg2OWNjNmExNjgxYmMzZjc2ZjM0NGY3N2M0 ODU4YzQ5MGE1MTdlNDVhNzU4ZDE1MjE0Y2U2N2MzYzIxMTNhMWNhYThjYTY1ZWI2NDQ3YjY4ZDgy MmZhMWRkNzMwMDgxMzQ1YmNjMDkyOGZhYWY4MmJiNzYwMzdiYQogU0hBNTEyIChmZm1wZWctZGxv cGVuLWhlYWRlcnMudGFyLnh6KSA9IDk3ZTY5ODZmYzJiYjlkZmE0NTE2MTM1YTc2YjA0ZDI3Y2Vi NTJmZjk2ZjBhZjIxYTYxNjk5MTlhZWVmZWZiNGQyZTJlMjRhNzcxOTU5Njg5Y2RiZWMzODVmNWQ3 MTYxNGJhNjYxMjIzYzY3YzBlOTQwODlhNmRkODIzYTMwMDk5CiBTSEE1MTIgKGZmbXBlZy5rZXly aW5nKSA9IDliMzY1MDY4MzVkYjM2Zjc3NmI3ZGRiNTNhZDZmYTllOTE1ZTZjYTJmOWM3Y2ZlYmU4 ZWI0NTUxM2UxMDM2YTk4NTI4MzU5MGE4NDBjYTMxM2ExMTFiZjM1ZGMzNzMxZjY4ODg1YWFhZmIx ZmI3MDExZWM0MzNjYzExOWU1MTY1Cg==