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: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: VLA (Fortran dynamic arrays) strides (multi-dimensional subarrays) from Intel. Date: Sat, 27 Jun 2026 23:57:21 GMT Message-ID: <178260464137.1.6593604044201388950.rpms-gdb-046f33b5893a@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 046f33b5893ab417d7973e33216826794e3a0c6e QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogMDQ2ZjMzYjU4OTNhYjQxN2Q3OTczZTMzMjE2 ODI2Nzk0ZTNhMGM2ZQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KRGF0ZSAgIDogMjAxNi0wMS0wOVQxMTo1ODozMCswMTowMApTdGF0cyAgOiArMTk0 NC8tMTkgaW4gMTAgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9y Zy9ycG1zL2dkYi9jLzA0NmYzM2I1ODkzYWI0MTdkNzk3M2UzMzIxNjgyNjc5NGUzYTBjNmU/YnJh bmNoPWdkYi0xNy4yLXJlYmFzZS1mNDQKCkxvZzoKVkxBIChGb3J0cmFuIGR5bmFtaWMgYXJyYXlz KSBzdHJpZGVzIChtdWx0aS1kaW1lbnNpb25hbCBzdWJhcnJheXMpIGZyb20gSW50ZWwuCgotLS0K ZGlmZiAtLWdpdCBhL2dkYi1mb3J0cmFuLXN0cmlkZS1pbnRlbC0xb2Y2LnBhdGNoIGIvZ2RiLWZv cnRyYW4tc3RyaWRlLWludGVsLTFvZjYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZjE3YzgzYQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1mb3J0cmFuLXN0cmlkZS1p bnRlbC0xb2Y2LnBhdGNoCkBAIC0wLDAgKzEsNjExIEBACitGcm9tOiBDaHJpc3RvcGggV2Vpbm1h bm4gPGNocmlzdG9waC50LndlaW5tYW5uQGludGVsLmNvbT4KK1tQQVRDSCAxLzZdIGZvcnRyYW46 IGFsbG93IG11bHRpLWRpbWVuc2lvbmFsIHN1YmFycmF5cworaHR0cHM6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDE1LTEyL21zZzAwMDA3Lmh0bWwKK01lc3NhZ2UtSWQ6IDwxNDQ4 OTc2MDc1LTExNDU2LTItZ2l0LXNlbmQtZW1haWwtY2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwu Y29tPgorCitBZGQgYW4gYXJndW1lbnQgY291bnQgZm9yIHN1YnJhbmdlIGV4cHJlc3Npb25zIGlu IEZvcnRyYW4uCitCYXNlZCBvbiB0aGUgY291bnRlZCB2YWx1ZSBjYWxjdWxhdGUgYSBuZXcgYXJy YXkgd2l0aCB0aGUKK2VsZW1lbnRzIHNwZWNpZmllZCBieSB0aGUgdXNlci4gIEZpcnN0IHBhcnNl IHRoZSB1c2VyIGlucHV0LAorc2Vjb25kbHkgY29weSB0aGUgZGVzaXJlZCBhcnJheSB2YWx1ZXMg aW50byB0aGUgcmV0dXJuCithcnJheSwgdGhpcmRseSByZS1jcmVhdGUgdGhlIG5lY2Vzc2FyeSBy YW5nZXMgYW5kIGJvdW5kcy4KKworMXwgIHByb2dyYW0gcHJvZworMnwgICAgaW50ZWdlciA6OiBh cnkoMTAsNSkgPSAoLyAoaSxpPTEsMTApIChqLCBqPTEsNSkgLykKKzN8ICBlbmQgcHJvZ3JhbSBw cm9nCisKKyhnZGIpIHByaW50IGFyeSgyOjQsMTozKQorb2xkPiBTeW50YXggZXJyb3IgaW4gZXhw cmVzc2lvbiBuZWFyICc6MycKK25ldz4gJDMgPSAoICggMjEsIDMxLCA0MSkgKCAyMiwgMzIsIDQy KSAoIDIzLCAzMywgNDMpICkKKworMjAxMy0xMS0yNSAgQ2hyaXN0b3BoIFdlaW5tYW5uICA8Y2hy aXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgorCisJKiBldmFsLmMgKG11bHRpX2Y3N19zdWJz Y3JpcHQpOiBSZW1vdmUgZnVuY3Rpb24uCisJKiBldmFsLmMgKGV2YWx1YXRlX3N1YnJhbmdlX2V4 cHIpOiBXaGVuIGV2YWx1YXRpbmcKKwlhbiBhcnJheSBvciBzdHJpbmcgZXhwcmVzc2lvbiwgY2Fs bAorCXZhbHVlX2Y5MF9zdWJhcnJheS4KKwkqIGV2YWwuYyAodmFsdWVfZjkwX3N1YmFycmF5KTog QWRkIGFyZ3VtZW50IHBhcnNpbmcKKwlhbmQgY29tcHV0ZSByZXN1bHQgYXJyYXkgYmFzZWQgb24g dXNlciBpbnB1dC4KKwkqIGYtZXhwLnk6IEluY3JlbWVudCBhcmd1bWVudCBjb3VudGVyIGZvciBl dmVyeSBzdWJyYW5nZQorCWV4cHJlc3Npb24gZW50ZXJlZCBieSB0aGUgdXNlci4KKwkqIHZhbG9w cy5jICh2YWx1ZV9zbGljZSk6IENhbGwgdmFsdWVfc2xpY2VfMSB3aXRoCisJYWRkaXRpb25hbCBk ZWZhdWx0IGFyZ3VtZW50LgorCSogdmFsb3BzLmMgKHZhbHVlX3NsaWNlXzEpOiBBZGQgZnVuY3Rp b25hbGl0eSB0bworCWNvcHkgYW5kIHJldHVybiByZXN1bHQgdmFsdWVzIGJhc2VkIG9uIGlucHV0 LgorCSogdmFsdWUuaDogQWRkIGZ1bmN0aW9uIGRlZmluaXRpb24uCisKKworCitTaWduZWQtb2Zm LWJ5OiBDaHJpc3RvcGggV2Vpbm1hbm4gPGNocmlzdG9waC50LndlaW5tYW5uQGludGVsLmNvbT4K Ky0tLQorIGdkYi9ldmFsLmMgICB8ICAzMDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIGdkYi9mLWV4cC55ICB8ICAgIDIgKworIGdk Yi92YWxvcHMuYyB8ICAxNTcgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCisgZ2RiL3Zh bHVlLmggIHwgICAgMiArCisgNCBmaWxlcyBjaGFuZ2VkLCAzNzUgaW5zZXJ0aW9ucygrKSwgOTUg ZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYworaW5k ZXggODRlMmUzNC4uMmNlY2NiYyAxMDA2NDQKKy0tLSBhL2dkYi9ldmFsLmMKKysrKyBiL2dkYi9l dmFsLmMKK0BAIC0zOTksMjkgKzM5OSwyNTMgQEAgaW5pdF9hcnJheV9lbGVtZW50IChzdHJ1Y3Qg dmFsdWUgKmFycmF5LCBzdHJ1Y3QgdmFsdWUgKmVsZW1lbnQsCisgICByZXR1cm4gaW5kZXg7Cisg fQorIAorKy8qIEV2YWx1YXRlcyBhbnkgb3BlcmF0aW9uIG9uIEZvcnRyYW4gYXJyYXlzIG9yIHN0 cmluZ3Mgd2l0aCBhdCBsZWFzdAorKyAgIG9uZSB1c2VyIHByb3ZpZGVkIHBhcmFtZXRlci4gIEV4 cGVjdHMgdGhlIGlucHV0IEFSUkFZIHRvIGJlIGVpdGhlcgorKyAgIGFuIGFycmF5LCBvciBhIHN0 cmluZy4gIEV2YWx1YXRlcyBFWFAgYnkgaW5jcmVtZW50aW5nIFBPUywgYW5kCisrICAgd3JpdGVz IHRoZSBjb250ZW50IGZyb20gdGhlIGVsdCBzdGFjayBpbnRvIGEgbG9jYWwgc3RydWN0LiAgTkFS R1MKKysgICBzcGVjaWZpZXMgbnVtYmVyIG9mIGxpdGVyYWwgb3IgcmFuZ2UgYXJndW1lbnRzIHRo ZSB1c2VyIHByb3ZpZGVkLgorKyAgIE5BUkdTIG11c3QgYmUgdGhlIHNhbWUgbnVtYmVyIGFzIEFS UkFZIGhhcyBkaW1lbnNpb25zLiAgKi8KKysKKyBzdGF0aWMgc3RydWN0IHZhbHVlICoKKy12YWx1 ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCistCQkgICAgc3RydWN0IGV4cHJl c3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSkKKyt2YWx1ZV9mOTBfc3Vi YXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9uICpleHAsCisrCQkg ICAgaW50ICpwb3MsIGludCBuYXJncywgZW51bSBub3NpZGUgbm9zaWRlKQorIHsKKy0gIGludCBw YyA9ICgqcG9zKSArIDE7CisrICBpbnQgaSwgZGltX2NvdW50ID0gMDsKKyAgIExPTkdFU1QgbG93 X2JvdW5kLCBoaWdoX2JvdW5kOworICAgc3RydWN0IHR5cGUgKnJhbmdlID0gY2hlY2tfdHlwZWRl ZiAoVFlQRV9JTkRFWF9UWVBFICh2YWx1ZV90eXBlIChhcnJheSkpKTsKKy0gIGVudW0gZjkwX3Jh bmdlX3R5cGUgcmFuZ2VfdHlwZQorLSAgICA9IChlbnVtIGY5MF9yYW5nZV90eXBlKSBsb25nZXN0 X3RvX2ludCAoZXhwLT5lbHRzW3BjXS5sb25nY29uc3QpOworLSAKKy0gICpwb3MgKz0gMzsKKysg IHN0cnVjdCB2YWx1ZSAqbmV3X2FycmF5ID0gYXJyYXk7CisrICBzdHJ1Y3QgdHlwZSAqYXJyYXlf dHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKG5ld19hcnJheSkpOworKyAgc3RydWN0 IHR5cGUgKnRlbXBfdHlwZTsKKysKKysgIC8qIExvY2FsIHN0cnVjdCB0byBob2xkIHVzZXIgZGF0 YSBmb3IgRm9ydHJhbiBzdWJhcnJheSBkaW1lbnNpb25zLiAgKi8KKysgIHN0cnVjdCBzdWJzY3Jp cHRfc3RvcmUKKysgIHsKKysgICAgLyogRm9yIGV2ZXJ5IGRpbWVuc2lvbiwgd2UgYXJlIGVpdGhl ciB3b3JraW5nIG9uIGEgcmFuZ2Ugb3IgYW4gaW5kZXgKKysgICAgICAgZXhwcmVzc2lvbiwgc28g d2Ugc3RvcmUgdGhpcyBpbmZvIHNlcGFyYXRlbHkgZm9yIGxhdGVyLiAgKi8KKysgICAgZW51bQor KyAgICB7CisrICAgICAgU1VCU0NSSVBUX1JBTkdFLCAgICAvKiBlLmcuICIobG93Ym91bmQ6aGln aGJvdW5kKSIgICovCisrICAgICAgU1VCU0NSSVBUX0lOREVYICAgIC8qIGUuZy4gIihsaXRlcmFs KSIgICovCisrICAgIH0ga2luZDsKKysKKysgICAgLyogV2UgYWxzbyBzdG9yZSBlaXRoZXIgdGhl IGxvd2VyIGFuZCB1cHBlciBib3VuZCBpbmZvLCBvciB0aGUgaW5kZXgKKysgICAgICAgbnVtYmVy LiAgQmVmb3JlIGV2YWx1YXRpb24gb2YgdGhlIGlucHV0IHZhbHVlcywgd2UgZG8gbm90IGtub3cg aWYgd2UgYXJlCisrICAgICAgIGFjdHVhbGx5IHdvcmtpbmcgb24gYSByYW5nZSBvZiByYW5nZXMs IG9yIGFuIGluZGV4IGluIGEgcmFuZ2UuICBTbyBhcyBhCisrICAgICAgIGZpcnN0IHN0ZXAgd2Ug c3RvcmUgYWxsIGlucHV0IGluIGEgdW5pb24uICBUaGUgYXJyYXkgY2FsY3VsYXRpb24gaXRzZWxm CisrICAgICAgIGRlYWxzIHdpdGggdGhpcyBsYXRlciBvbi4gICovCisrICAgIHVuaW9uCisrICAg IHsKKysgICAgICBzdHJ1Y3Qgc3Vic2NyaXB0X3JhbmdlCisrICAgICAgeworKyAgICAgICAgZW51 bSBmOTBfcmFuZ2VfdHlwZSBmOTBfcmFuZ2VfdHlwZTsKKysgICAgICAgIExPTkdFU1QgbG93LCBo aWdoOworKyAgICAgIH0KKysgICAgICByYW5nZTsKKysgICAgICBMT05HRVNUIG51bWJlcjsKKysg ICAgfTsKKysgIH0gKnN1YnNjcmlwdF9hcnJheTsKKysKKysgIC8qIENoZWNrIGlmIHRoZSBudW1i ZXIgb2YgYXJndW1lbnRzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIG1hdGNoZXMKKysgICAgIHRoZSBu dW1iZXIgb2YgZGltZW5zaW9uIG9mIHRoZSBhcnJheS4gIEEgc3RyaW5nIGhhcyBvbmx5IG9uZQor KyAgICAgZGltZW5zaW9uLiAgKi8KKysgIGlmIChuYXJncyAhPSBjYWxjX2Y3N19hcnJheV9kaW1z ICh2YWx1ZV90eXBlIChuZXdfYXJyYXkpKSkKKysgICAgZXJyb3IgKF8oIldyb25nIG51bWJlciBv ZiBzdWJzY3JpcHRzIikpOworKworKyAgc3Vic2NyaXB0X2FycmF5ID0gYWxsb2NhIChzaXplb2Yg KCpzdWJzY3JpcHRfYXJyYXkpICogbmFyZ3MpOworKworKyAgLyogUGFyc2UgdGhlIHVzZXIgaW5w dXQgaW50byB0aGUgU1VCU0NSSVBUX0FSUkFZIHRvIHN0b3JlIGl0LiAgV2UgbmVlZAorKyAgICAg dG8gZXZhbHVhdGUgaXQgZmlyc3QsIGFzIHRoZSBpbnB1dCBpcyBmcm9tIGxlZnQtdG8tcmlnaHQu ICBUaGUKKysgICAgIGFycmF5IGlzIHN0b3JlZCBmcm9tIHJpZ2h0LXRvLWxlZnQuICBTbyB3ZSBo YXZlIHRvIHVzZSB0aGUgdXNlcgorKyAgICAgaW5wdXQgaW4gcmV2ZXJzZSBvcmRlci4gIExhdGVy IG9uLCB3ZSBuZWVkIHRoZSBpbnB1dCBpbmZvcm1hdGlvbiB0bworKyAgICAgcmUtY2FsY3VsYXRl IHRoZSBvdXRwdXQgYXJyYXkuICBGb3IgbXVsdGktZGltZW5zaW9uYWwgYXJyYXlzLCB3ZQorKyAg ICAgY2FuIGJlIGRlYWxpbmcgd2l0aCBhbnkgcG9zc2libGUgY29tYmluYXRpb24gb2YgcmFuZ2Vz IGFuZCBpbmRpY2VzCisrICAgICBmb3IgZXZlcnkgZGltZW5zaW9uLiAgKi8KKysgIGZvciAoaSA9 IDA7IGkgPCBuYXJnczsgaSsrKQorKyAgICB7CisrICAgICAgc3RydWN0IHN1YnNjcmlwdF9zdG9y ZSAqaW5kZXggPSAmc3Vic2NyaXB0X2FycmF5W2ldOworIAorLSAgaWYgKHJhbmdlX3R5cGUgPT0g TE9XX0JPVU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFVTFQpCist ICAgIGxvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5EIChyYW5nZSk7CistICBlbHNlCistICAgIGxv d19ib3VuZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAs IHBvcywgbm9zaWRlKSk7CisrICAgICAgLyogVGhlIHVzZXIgaW5wdXQgaXMgYSByYW5nZSwgd2l0 aCBvciB3aXRob3V0IGxvd2VyIGFuZCB1cHBlciBib3VuZC4KKysJIEUuZy46ICJwIGFycnkoMjo1 KSIsICJwIGFycnkoIDo1KSIsICJwIGFycnkoIDogKSIsIGV0Yy4gICovCisrICAgICAgaWYgKGV4 cC0+ZWx0c1sqcG9zXS5vcGNvZGUgPT0gT1BfRjkwX1JBTkdFKQorKwl7CisrCSAgaW50IHBjID0g KCpwb3MpICsgMTsKKysJICBzdHJ1Y3Qgc3Vic2NyaXB0X3JhbmdlICpyYW5nZTsKKysKKysJICBp bmRleC0+a2luZCA9IFNVQlNDUklQVF9SQU5HRTsKKysJICByYW5nZSA9ICZpbmRleC0+cmFuZ2U7 CisrCisrCSAgKnBvcyArPSAzOworKwkgIHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9IGxvbmdlc3Rf dG9faW50IChleHAtPmVsdHNbcGNdLmxvbmdjb25zdCk7CisrCisrCSAgLyogSWYgYSBsb3dlciBi b3VuZCB3YXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIsIHRoZSBiaXQgaGFzIGJlZW4KKysJICAgICBz ZXQgYW5kIHdlIGNhbiBhc3NpZ24gdGhlIHZhbHVlIGZyb20gdGhlIGVsdCBzdGFjay4gIFNhbWUg Zm9yCisrCSAgICAgdXBwZXIgYm91bmQuICAqLworKwkgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90 eXBlID09IEhJR0hfQk9VTkRfREVGQVVMVCkKKysJICAgICAgfHwgcmFuZ2UtPmY5MF9yYW5nZV90 eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkKKysJICAgIHJhbmdlLT5sb3cgPSB2YWx1ZV9hc19s b25nIChldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLAorKwkJCQkJCQkgcG9zLCBub3Np ZGUpKTsKKysJICBpZiAoKHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9PSBMT1dfQk9VTkRfREVGQVVM VCkKKysJICAgICAgfHwgcmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVM VCkKKysJICAgIHJhbmdlLT5oaWdoID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChO VUxMX1RZUEUsIGV4cCwKKysJCQkJCQkJICBwb3MsIG5vc2lkZSkpOworKwl9CisrICAgICAgLyog VXNlciBpbnB1dCBpcyBhbiBpbmRleC4gIEUuZy46ICJwIGFycnkoNSkiLiAgKi8KKysgICAgICBl bHNlCisrCXsKKysJICBzdHJ1Y3QgdmFsdWUgKnZhbDsKKyAKKy0gIGlmIChyYW5nZV90eXBlID09 IEhJR0hfQk9VTkRfREVGQVVMVCB8fCByYW5nZV90eXBlID09IEJPVEhfQk9VTkRfREVGQVVMVCkK Ky0gICAgaGlnaF9ib3VuZCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2UpOworLSAgZWxzZQorLSAg ICBoaWdoX2JvdW5kID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUs IGV4cCwgcG9zLCBub3NpZGUpKTsKKysJICBpbmRleC0+a2luZCA9IFNVQlNDUklQVF9JTkRFWDsK KysKKysJICAvKiBFdmFsdWF0ZSBlYWNoIHN1YnNjcmlwdDsgaXQgbXVzdCBiZSBhIGxlZ2FsIGlu dGVnZXIgaW4gRjc3LiAgVGhpcworKwkgICAgIGVuc3VyZXMgdGhlIHZhbGlkaXR5IG9mIHRoZSBw cm92aWRlZCBpbmRleC4gICovCisrCSAgdmFsID0gZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNp b24gKGV4cCwgcG9zLCBub3NpZGUpOworKwkgIGluZGV4LT5udW1iZXIgPSB2YWx1ZV9hc19sb25n ICh2YWwpOworKwl9CisrCisrICAgIH0KKysKKysgIC8qIFRyYXZlcnNlIHRoZSBhcnJheSBmcm9t IHJpZ2h0IHRvIGxlZnQgYW5kIGV2YWx1YXRlIGVhY2ggY29ycmVzcG9uZGluZworKyAgICAgdXNl ciBpbnB1dC4gIFZBTFVFX1NVQlNDUklQVCBpcyBjYWxsZWQgZm9yIGV2ZXJ5IGluZGV4LCB1bnRp bCBhIHJhbmdlCisrICAgICBleHByZXNzaW9uIGlzIGV2YWx1YXRlZC4gIEFmdGVyIGEgcmFuZ2Ug ZXhwcmVzc2lvbiBoYXMgYmVlbiBldmFsdWF0ZWQsCisrICAgICBldmVyeSBzdWJzZXF1ZW50IGV4 cHJlc3Npb24gaXMgYWxzbyB0cmVhdGVkIGFzIGEgcmFuZ2UuICAqLworKyAgZm9yIChpID0gbmFy Z3MgLSAxOyBpID49IDA7IGktLSkKKysgICAgeworKyAgICAgIHN0cnVjdCBzdWJzY3JpcHRfc3Rv cmUgKmluZGV4ID0gJnN1YnNjcmlwdF9hcnJheVtpXTsKKysgICAgICBzdHJ1Y3QgdHlwZSAqaW5k ZXhfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlwZSk7CisrCisrICAgICAgc3dpdGNo IChpbmRleC0+a2luZCkKKysJeworKwljYXNlIFNVQlNDUklQVF9SQU5HRToKKysJICB7CisrCisr CSAgICAvKiBXaGVuIHdlIGhpdCB0aGUgZmlyc3QgcmFuZ2Ugc3BlY2lmaWVkIGJ5IHRoZSB1c2Vy LCB3ZSBtdXN0CisrCSAgICAgICB0cmVhdCBhbnkgc3Vic2VxdWVudCB1c2VyIGVudHJ5IGFzIGEg cmFuZ2UuICBXZSBzaW1wbHkKKysJICAgICAgIGluY3JlbWVudCBESU1fQ09VTlQgd2hpY2ggdGVs bHMgdXMgaG93IG1hbnkgdGltZXMgd2UgYXJlCisrCSAgICAgICBjYWxsaW5nIFZBTFVFX1NMSUNF XzEuICAqLworKwkgICAgc3RydWN0IHN1YnNjcmlwdF9yYW5nZSAqcmFuZ2UgPSAmaW5kZXgtPnJh bmdlOworKworKwkgICAgLyogSWYgbm8gbG93ZXIgYm91bmQgd2FzIHByb3ZpZGVkIGJ5IHRoZSB1 c2VyLCB3ZSB0YWtlIHRoZQorKwkgICAgICAgZGVmYXVsdCBib3VuZGFyeS4gIFNhbWUgZm9yIHRo ZSBoaWdoIGJvdW5kLiAgKi8KKysJICAgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IExP V19CT1VORF9ERUZBVUxUKQorKwkJfHwgKHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9PSBCT1RIX0JP VU5EX0RFRkFVTFQpKQorKwkgICAgICByYW5nZS0+bG93ID0gVFlQRV9MT1dfQk9VTkQgKGluZGV4 X3R5cGUpOworKworKwkgICAgaWYgKChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gSElHSF9CT1VO RF9ERUZBVUxUKQorKwkJfHwgKHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RF RkFVTFQpKQorKwkgICAgICByYW5nZS0+aGlnaCA9IFRZUEVfSElHSF9CT1VORCAoaW5kZXhfdHlw ZSk7CisrCisrCSAgICAvKiBCb3RoIHVzZXIgcHJvdmlkZWQgbG93IGFuZCBoaWdoIGJvdW5kIGhh dmUgdG8gYmUgaW5zaWRlIHRoZQorKwkgICAgICAgYXJyYXkgYm91bmRzLiAgVGhyb3cgYW4gZXJy b3IgaWYgbm90LiAgKi8KKysJICAgIGlmIChyYW5nZS0+bG93IDwgVFlQRV9MT1dfQk9VTkQgKGlu ZGV4X3R5cGUpCisrCQl8fCByYW5nZS0+bG93ID4gVFlQRV9ISUdIX0JPVU5EIChpbmRleF90eXBl KQorKwkJfHwgcmFuZ2UtPmhpZ2ggPCBUWVBFX0xPV19CT1VORCAoaW5kZXhfdHlwZSkKKysJCXx8 IHJhbmdlLT5oaWdoID4gVFlQRV9ISUdIX0JPVU5EIChpbmRleF90eXBlKSkKKysJICAgICAgZXJy b3IgKF8oInByb3ZpZGVkIGJvdW5kKHMpIG91dHNpZGUgYXJyYXkgYm91bmQocykiKSk7CisrCisr CSAgICAvKiBESU1fQ09VTlQgY291bnRzIGV2ZXJ5IHVzZXIgYXJndW1lbnQgdGhhdCBpcyB0cmVh dGVkIGFzIGEgcmFuZ2UuCisrCSAgICAgICBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgZXhwcmVzc2lv bnMgbGlrZSAncHJpbnQgYXJyYXkoNywgODo5KS4KKysJICAgICAgIEhlcmUgdGhlIGZpcnN0IGFy Z3VtZW50IGlzIGEgbGl0ZXJhbCwgYnV0IG11c3QgYmUgdHJlYXRlZCBhcyBhCisrCSAgICAgICBy YW5nZSBhcmd1bWVudCB0byBhbGxvdyB0aGUgY29ycmVjdCBvdXRwdXQgcmVwcmVzZW50YXRpb24u ICAqLworKwkgICAgZGltX2NvdW50Kys7CisrCisrCSAgICBuZXdfYXJyYXkKKysJICAgICAgPSB2 YWx1ZV9zbGljZV8xIChuZXdfYXJyYXksCisrCQkJICAgICAgIGxvbmdlc3RfdG9faW50IChyYW5n ZS0+bG93KSwKKysJCQkgICAgICAgbG9uZ2VzdF90b19pbnQgKHJhbmdlLT5oaWdoIC0gcmFuZ2Ut PmxvdyArIDEpLAorKwkJCSAgICAgICBkaW1fY291bnQpOworKwkgIH0KKysJICBicmVhazsKKysK KysJY2FzZSBTVUJTQ1JJUFRfSU5ERVg6CisrCSAgeworKwkgICAgLyogRElNX0NPVU5UIG9ubHkg c3RheXMgJzAnIHdoZW4gbm8gcmFuZ2UgYXJndW1lbnQgd2FzIHByb2Nlc3NlZAorKwkgICAgICAg YmVmb3JlLCBzdGFydGluZyBmcm9tIHRoZSBsYXN0IGRpbWVuc2lvbi4gIFRoaXMgd2F5IHdlIGNh bgorKwkgICAgICAgcmVkdWNlIHRoZSBudW1iZXIgb2YgZGltZW5zaW9ucyBmcm9tIHRoZSByZXN1 bHQgYXJyYXkuCisrCSAgICAgICBIb3dldmVyLCBpZiBhIHJhbmdlIGhhcyBiZWVuIHByb2Nlc3Nl ZCBiZWZvcmUgYW4gaW5kZXgsIHdlCisrCSAgICAgICB0cmVhdCB0aGUgaW5kZXggbGlrZSBhIHJh bmdlIHdpdGggZXF1YWwgbG93LSBhbmQgaGlnaCBib3VuZHMKKysJICAgICAgIHRvIGdldCB0aGUg dmFsdWUgb2Zmc2V0IHJpZ2h0LiAgKi8KKysJICAgIGlmIChkaW1fY291bnQgPT0gMCkKKysJICAg ICAgbmV3X2FycmF5CisrCSAgICAgICAgPSB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKG5ld19h cnJheSwgaW5kZXgtPm51bWJlciwKKysJCQkJCSAgICBmNzdfZ2V0X2xvd2VyYm91bmQgKHZhbHVl X3R5cGUKKysJCQkJCQkJCSAgKG5ld19hcnJheSkpKTsKKysJICAgIGVsc2UKKysJICAgICAgewor KwkJLyogQ2hlY2sgZm9yIHZhbGlkIGluZGV4IGlucHV0LiAgKi8KKysJCWlmIChpbmRleC0+bnVt YmVyIDwgVFlQRV9MT1dfQk9VTkQgKGluZGV4X3R5cGUpCisrCQkgICAgfHwgaW5kZXgtPm51bWJl ciA+IFRZUEVfSElHSF9CT1VORCAoaW5kZXhfdHlwZSkpCisrCQkgIGVycm9yIChfKCJlcnJvciBu byBzdWNoIHZlY3RvciBlbGVtZW50IikpOworKworKwkJZGltX2NvdW50Kys7CisrCQluZXdfYXJy YXkgPSB2YWx1ZV9zbGljZV8xIChuZXdfYXJyYXksCisrCQkJCQkgICBsb25nZXN0X3RvX2ludCAo aW5kZXgtPm51bWJlciksCisrCQkJCQkgICAxLCAvKiBsZW5ndGggaXMgJzEnIGVsZW1lbnQgICov CisrCQkJCQkgICBkaW1fY291bnQpOworKwkgICAgICB9CisrCisrCSAgfQorKwkgIGJyZWFrOwor Kwl9CisrICAgIH0KKysKKysgIC8qIFdpdGggRElNX0NPVU5UID4gMSB3ZSBjdXJyZW50bHkgaGF2 ZSBhIG9uZSBkaW1lbnNpb25hbCBhcnJheSwgYnV0IGV4cGVjdAorKyAgICAgYW4gYXJyYXkgb2Yg YXJyYXlzLCBkZXBlbmRpbmcgb24gaG93IG1hbnkgcmFuZ2VzIGhhdmUgYmVlbiBwcm92aWRlZCBi eQorKyAgICAgdGhlIHVzZXIuICBTbyB3ZSBuZWVkIHRvIHJlYnVpbGQgdGhlIGFycmF5IGRpbWVu c2lvbnMgZm9yIHByaW50aW5nIGl0CisrICAgICBjb3JyZWN0bHkuCisrICAgICBTdGFydGluZyBm cm9tIHJpZ2h0IHRvIGxlZnQgaW4gdGhlIHVzZXIgaW5wdXQsIGFmdGVyIHdlIGhpdCB0aGUgZmly c3QKKysgICAgIHJhbmdlIGFyZ3VtZW50IGV2ZXJ5IHN1YnNlcXVlbnQgYXJndW1lbnQgaXMgYWxz byB0cmVhdGVkIGFzIGEgcmFuZ2UuCisrICAgICBFLmcuOgorKyAgICAgInAgYXJ5KDMsIDcsIDI6 MTUpIiBpbiBGb3J0cmFuIGhhcyBvbmx5IDEgZGltZW5zaW9uLCBidXQgd2UgY2FsY3VsYXRlZCAz CisrICAgICByYW5nZXMuCisrICAgICAicCBhcnkoMywgNzoxMiwgNCkiIGluIEZvcnRyYW4gaGFz IG9ubHkgMSBkaW1lbnNpb24sIGJ1dCB3ZSBjYWxjdWxhdGVkIDIKKysgICAgIHJhbmdlcy4KKysg ICAgICJwIGFyeSgyOjQsIDUsIDcpIiBpbiBGb3J0cmFuIGhhcyBvbmx5IDEgZGltZW5zaW9uLCBh bmQgd2UgY2FsY3VsYXRlZCAxCisrICAgICByYW5nZS4gICovCisrICBpZiAoZGltX2NvdW50ID4g MSkKKysgICAgeworKyAgICAgIHN0cnVjdCB2YWx1ZSAqdiA9IE5VTEw7CisgCistICByZXR1cm4g dmFsdWVfc2xpY2UgKGFycmF5LCBsb3dfYm91bmQsIGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAx KTsKKysgICAgICB0ZW1wX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh2YWx1ZV90eXBlIChuZXdf YXJyYXkpKTsKKysKKysgICAgICAvKiBFdmVyeSBTVUJTQ1JJUFRfUkFOR0UgaW4gdGhlIHVzZXIg aW5wdXQgc2lnbmlmaWVzIGFuIGFjdHVhbCByYW5nZSBpbgorKwkgdGhlIG91dHB1dCBhcnJheS4g IFNvIHdlIHRyYXZlcnNlIHRoZSBTVUJTQ1JJUFRfQVJSQVkgYWdhaW4sIGxvb2tpbmcKKysJIGZv ciBhIHJhbmdlIGVudHJ5LiAgV2hlbiB3ZSBmaW5kIG9uZSwgd2UgdXNlIHRoZSByYW5nZSBpbmZv IHRvIGNyZWF0ZQorKwkgYW4gYWRkaXRpb25hbCByYW5nZV90eXBlIHRvIHNldCB0aGUgY29ycmVj dCBib3VuZHMgYW5kIGRpbWVuc2lvbnMgZm9yCisrCSB0aGUgb3V0cHV0IGFycmF5LiAgKi8KKysg ICAgICBmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKKysJeworKwkgIHN0cnVjdCBzdWJzY3Jp cHRfc3RvcmUgKmluZGV4ID0gJnN1YnNjcmlwdF9hcnJheVtpXTsKKysKKysJICBpZiAoaW5kZXgt PmtpbmQgPT0gU1VCU0NSSVBUX1JBTkdFKQorKwkgICAgeworKwkgICAgICBzdHJ1Y3QgdHlwZSAq cmFuZ2VfdHlwZSwgKmludGVyaW1fYXJyYXlfdHlwZTsKKysKKysJICAgICAgcmFuZ2VfdHlwZQor KwkJPSBjcmVhdGVfc3RhdGljX3JhbmdlX3R5cGUgKE5VTEwsCisrCQkJCSAgICAgdGVtcF90eXBl LAorKwkJCQkgICAgIDEsCisrCQkJCSAgICAgaW5kZXgtPnJhbmdlLmhpZ2ggLSBpbmRleC0+cmFu Z2UubG93ICsgMSk7CisrCisrCSAgICAgIGludGVyaW1fYXJyYXlfdHlwZSA9IGNyZWF0ZV9hcnJh eV90eXBlIChOVUxMLAorKwkJCQkJCSAgICAgIHRlbXBfdHlwZSwKKysJCQkJCQkgICAgICByYW5n ZV90eXBlKTsKKysKKysJICAgICAgLyogRm9yIHNvbWUgcmVhc29uIHRoZSB0eXBlIGNvZGUgb2Yg dGhlIGNvbnRlbnRzIGlzIG1pc3NpbmcsIHNvCisrCQkgcmVzZXQgaXQgZnJvbSB0aGUgb3JpZ2lu YWwgYXJyYXkuICAqLworKwkgICAgICBUWVBFX0NPREUgKGludGVyaW1fYXJyYXlfdHlwZSkKKysJ CT0gVFlQRV9DT0RFICh2YWx1ZV90eXBlIChuZXdfYXJyYXkpKTsKKysKKysJICAgICAgdiA9IGFs bG9jYXRlX3ZhbHVlIChpbnRlcmltX2FycmF5X3R5cGUpOworKworKwkgICAgICB0ZW1wX3R5cGUg PSB2YWx1ZV90eXBlICh2KTsKKysJICAgIH0KKysKKysJfQorKyAgICAgIHZhbHVlX2NvbnRlbnRz X2NvcHkgKHYsIDAsIG5ld19hcnJheSwgMCwgVFlQRV9MRU5HVEggKHRlbXBfdHlwZSkpOworKyAg ICAgIHJldHVybiB2OworKyAgICB9CisrCisrICByZXR1cm4gbmV3X2FycmF5OworIH0KKyAKKyAK K0BAIC0xODEwLDE0ICsyMDM0LDExIEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0 IHR5cGUgKmV4cGVjdF90eXBlLAorICAgICAgIHN3aXRjaCAoY29kZSkKKyAJeworIAljYXNlIFRZ UEVfQ09ERV9BUlJBWToKKy0JICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9GOTBf UkFOR0UpCistCSAgICByZXR1cm4gdmFsdWVfZjkwX3N1YmFycmF5IChhcmcxLCBleHAsIHBvcywg bm9zaWRlKTsKKy0JICBlbHNlCistCSAgICBnb3RvIG11bHRpX2Y3N19zdWJzY3JpcHQ7CisrCSAg cmV0dXJuIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5hcmdzLCBub3NpZGUp OworIAorIAljYXNlIFRZUEVfQ09ERV9TVFJJTkc6CisgCSAgaWYgKGV4cC0+ZWx0c1sqcG9zXS5v cGNvZGUgPT0gT1BfRjkwX1JBTkdFKQorLQkgICAgcmV0dXJuIHZhbHVlX2Y5MF9zdWJhcnJheSAo YXJnMSwgZXhwLCBwb3MsIG5vc2lkZSk7CisrCSAgICByZXR1cm4gdmFsdWVfZjkwX3N1YmFycmF5 IChhcmcxLCBleHAsIHBvcywgMSwgbm9zaWRlKTsKKyAJICBlbHNlCisgCSAgICB7CisgCSAgICAg IGFyZzIgPSBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7 CitAQCAtMjIyMiw0OSArMjQ0Myw2IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0 IHR5cGUgKmV4cGVjdF90eXBlLAorIAl9CisgICAgICAgcmV0dXJuIChhcmcxKTsKKyAKKy0gICAg bXVsdGlfZjc3X3N1YnNjcmlwdDoKKy0gICAgICB7CistCUxPTkdFU1Qgc3Vic2NyaXB0X2FycmF5 W01BWF9GT1JUUkFOX0RJTVNdOworLQlpbnQgbmRpbWVuc2lvbnMgPSAxLCBpOworLQlzdHJ1Y3Qg dmFsdWUgKmFycmF5ID0gYXJnMTsKKy0KKy0JaWYgKG5hcmdzID4gTUFYX0ZPUlRSQU5fRElNUykK Ky0JICBlcnJvciAoXygiVG9vIG1hbnkgc3Vic2NyaXB0cyBmb3IgRjc3ICglZCBNYXgpIiksIE1B WF9GT1JUUkFOX0RJTVMpOworLQorLQluZGltZW5zaW9ucyA9IGNhbGNfZjc3X2FycmF5X2RpbXMg KHR5cGUpOworLQorLQlpZiAobmFyZ3MgIT0gbmRpbWVuc2lvbnMpCistCSAgZXJyb3IgKF8oIldy b25nIG51bWJlciBvZiBzdWJzY3JpcHRzIikpOworLQorLQlnZGJfYXNzZXJ0IChuYXJncyA+IDAp OworLQorLQkvKiBOb3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgYSBsZWdhbCBhcnJheSBzdWJzY3Jp cHQgZXhwcmVzc2lvbiAKKy0JICAgbGV0IHVzIGFjdHVhbGx5IGZpbmQgb3V0IHdoZXJlIHRoaXMg ZWxlbWVudCBleGlzdHMgaW4gdGhlIGFycmF5LiAgKi8KKy0KKy0JLyogVGFrZSBhcnJheSBpbmRp Y2VzIGxlZnQgdG8gcmlnaHQuICAqLworLQlmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKKy0J ICB7CistCSAgICAvKiBFdmFsdWF0ZSBlYWNoIHN1YnNjcmlwdDsgaXQgbXVzdCBiZSBhIGxlZ2Fs IGludGVnZXIgaW4gRjc3LiAgKi8KKy0JICAgIGFyZzIgPSBldmFsdWF0ZV9zdWJleHBfd2l0aF9j b2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7CistCistCSAgICAvKiBGaWxsIGluIHRoZSBzdWJz Y3JpcHQgYXJyYXkuICAqLworLQorLQkgICAgc3Vic2NyaXB0X2FycmF5W2ldID0gdmFsdWVfYXNf bG9uZyAoYXJnMik7CistCSAgfQorLQorLQkvKiBJbnRlcm5hbCB0eXBlIG9mIGFycmF5IGlzIGFy cmFuZ2VkIHJpZ2h0IHRvIGxlZnQuICAqLworLQlmb3IgKGkgPSBuYXJnczsgaSA+IDA7IGktLSkK Ky0JICB7CistCSAgICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZh bHVlX3R5cGUgKGFycmF5KSk7CistCSAgICBMT05HRVNUIGluZGV4ID0gc3Vic2NyaXB0X2FycmF5 W2kgLSAxXTsKKy0KKy0JICAgIGFycmF5ID0gdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChhcnJh eSwgaW5kZXgsCistCQkJCQkgICAgICBmNzdfZ2V0X2xvd2VyYm91bmQgKGFycmF5X3R5cGUpKTsK Ky0JICB9CistCistCXJldHVybiBhcnJheTsKKy0gICAgICB9CistCisgICAgIGNhc2UgQklOT1Bf TE9HSUNBTF9BTkQ6CisgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBl eHAsIHBvcywgbm9zaWRlKTsKKyAgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKK0BAIC0z MTIxLDYgKzMyOTksOSBAQCBjYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAqYXJyYXlf dHlwZSkKKyAgIGludCBuZGltZW4gPSAxOworICAgc3RydWN0IHR5cGUgKnRtcF90eXBlOworIAor KyAgaWYgKFRZUEVfQ09ERSAoYXJyYXlfdHlwZSkgPT0gVFlQRV9DT0RFX1NUUklORykKKysgICAg cmV0dXJuIDE7CisrCisgICBpZiAoKFRZUEVfQ09ERSAoYXJyYXlfdHlwZSkgIT0gVFlQRV9DT0RF X0FSUkFZKSkKKyAgICAgZXJyb3IgKF8oIkNhbid0IGdldCBkaW1lbnNpb25zIGZvciBhIG5vbi1h cnJheSB0eXBlIikpOworIAorZGlmZiAtLWdpdCBhL2dkYi9mLWV4cC55IGIvZ2RiL2YtZXhwLnkK K2luZGV4IDU2NjI5ZGMuLmFiMjNkZjAgMTAwNjQ0CistLS0gYS9nZGIvZi1leHAueQorKysrIGIv Z2RiL2YtZXhwLnkKK0BAIC0zMDgsNiArMzA4LDggQEAgYXJnbGlzdCA6CXN1YnJhbmdlCisgICAg CisgYXJnbGlzdAk6CWFyZ2xpc3QgJywnIGV4cCAgICVwcmVjIEFCT1ZFX0NPTU1BCisgCQkJeyBh cmdsaXN0X2xlbisrOyB9CisrCXwJYXJnbGlzdCAnLCcgc3VicmFuZ2UJJXByZWMgQUJPVkVfQ09N TUEKKysJCQl7IGFyZ2xpc3RfbGVuKys7IH0KKyAJOworIAorIC8qIFRoZXJlIGFyZSBmb3VyIHNv cnRzIG9mIHN1YnJhbmdlIHR5cGVzIGluIEY5MC4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3ZhbG9w cy5jIGIvZ2RiL3ZhbG9wcy5jCitpbmRleCA1ZTVmNjg1Li5mOGQyM2ZiIDEwMDY0NAorLS0tIGEv Z2RiL3ZhbG9wcy5jCisrKysgYi9nZGIvdmFsb3BzLmMKK0BAIC0zNzU5LDU2ICszNzU5LDE1MSBA QCB2YWx1ZV9vZl90aGlzX3NpbGVudCAoY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmcp Cisgc3RydWN0IHZhbHVlICoKKyB2YWx1ZV9zbGljZSAoc3RydWN0IHZhbHVlICphcnJheSwgaW50 IGxvd2JvdW5kLCBpbnQgbGVuZ3RoKQorIHsKKysgIC8qIFBhc3MgdW5hbHRlcmVkIGFyZ3VtZW50 cyB0byBWQUxVRV9TTElDRV8xLCBwbHVzIGEgQ0FMTF9DT1VOVCBvZiAnMScgYXMgd2UKKysgICAg IGFyZSBvbmx5IGNvbnNpZGVyaW5nIHRoZSBoaWdoZXN0IGRpbWVuc2lvbiwgb3Igd2UgYXJlIHdv cmtpbmcgb24gYSBvbmUKKysgICAgIGRpbWVuc2lvbmFsIGFycmF5LiAgU28gd2UgY2FsbCBWQUxV RV9TTElDRV8xIGV4YWN0bHkgb25jZS4gICovCisrICByZXR1cm4gdmFsdWVfc2xpY2VfMSAoYXJy YXksIGxvd2JvdW5kLCBsZW5ndGgsIDEpOworK30KKysKKysvKiBDQUxMX0NPVU5UIGlzIHVzZWQg dG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBjYWxsaW5nIHRoZSBmdW5jdGlvbiBvbmNlLCBlLmcuCisr ICAgd2UgYXJlIHdvcmtpbmcgb24gdGhlIGN1cnJlbnQgZGltZW5zaW9uIG9mIEFSUkFZLCBvciBp ZiB3ZSBhcmUgY2FsbGluZworKyAgIHRoZSBmdW5jdGlvbiByZXBlYXRlZGx5LiAgSW4gdGhlIGxh dGVyIGNhc2Ugd2UgbmVlZCB0byB0YWtlIGVsZW1lbnRzCisrICAgZnJvbSB0aGUgVEFSR0VUX1RZ UEUgb2YgQVJSQVkuCisrICAgV2l0aCBhIENBTExfQ09VTlQgZ3JlYXRlciB0aGFuIDEgd2UgY2Fs Y3VsYXRlIHRoZSBvZmZzZXRzIGZvciBldmVyeSBlbGVtZW50CisrICAgdGhhdCBzaG91bGQgYmUg aW4gdGhlIHJlc3VsdCBhcnJheS4gIFRoZW4gd2UgZmV0Y2ggdGhlIGNvbnRlbnRzIGFuZCB0aGVu CisrICAgY29weSB0aGVtIGludG8gdGhlIHJlc3VsdCBhcnJheS4gIFRoZSByZXN1bHQgYXJyYXkg d2lsbCBoYXZlIG9uZSBkaW1lbnNpb24KKysgICBsZXNzIHRoYW4gdGhlIGlucHV0IGFycmF5LCBz byBsYXRlciBvbiB3ZSBuZWVkIHRvIHJlY3JlYXRlIHRoZSBpbmRpY2VzIGFuZAorKyAgIHJhbmdl cyBpbiB0aGUgY2FsbGluZyBmdW5jdGlvbi4gICovCisrCisrc3RydWN0IHZhbHVlICoKKyt2YWx1 ZV9zbGljZV8xIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgs IGludCBjYWxsX2NvdW50KQorK3sKKyAgIHN0cnVjdCB0eXBlICpzbGljZV9yYW5nZV90eXBlLCAq c2xpY2VfdHlwZSwgKnJhbmdlX3R5cGU7CistICBMT05HRVNUIGxvd2VyYm91bmQsIHVwcGVyYm91 bmQ7CistICBzdHJ1Y3QgdmFsdWUgKnNsaWNlOworLSAgc3RydWN0IHR5cGUgKmFycmF5X3R5cGU7 CisrICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUg KGFycmF5KSk7CisrICBzdHJ1Y3QgdHlwZSAqZWx0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBF X1RBUkdFVF9UWVBFIChhcnJheV90eXBlKSk7CisrICB1bnNpZ25lZCBpbnQgZWx0X3NpemUsIGVs dF9vZmZzOworKyAgTE9OR0VTVCBlbHRfc3RyaWRlLCBhcnlfaGlnaF9ib3VuZCwgYXJ5X2xvd19i b3VuZDsKKysgIHN0cnVjdCB2YWx1ZSAqdjsKKysgIGludCBzbGljZV9yYW5nZV9zaXplLCBpID0g MCwgcm93X2NvdW50ID0gMSwgZWxlbV9jb3VudCA9IDE7CisgCistICBhcnJheV90eXBlID0gY2hl Y2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKKysgIC8qIENoZWNrIGZvciBsZWdhY3kg Y29kZSBpZiB3ZSBhcmUgYWN0dWFsbHkgZGVhbGluZyB3aXRoIGFuIGFycmF5IG9yCisrICAgICBz dHJpbmcuICAqLworICAgaWYgKFRZUEVfQ09ERSAoYXJyYXlfdHlwZSkgIT0gVFlQRV9DT0RFX0FS UkFZCisgICAgICAgJiYgVFlQRV9DT0RFIChhcnJheV90eXBlKSAhPSBUWVBFX0NPREVfU1RSSU5H KQorICAgICBlcnJvciAoXygiY2Fubm90IHRha2Ugc2xpY2Ugb2Ygbm9uLWFycmF5IikpOworIAor LSAgcmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlwZSk7CistICBpZiAoZ2V0 X2Rpc2NyZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwgJmxvd2VyYm91bmQsICZ1cHBlcmJvdW5kKSA8 IDApCistICAgIGVycm9yIChfKCJzbGljZSBmcm9tIGJhZCBhcnJheSBvciBiaXRzdHJpbmciKSk7 CisrICBhcnlfbG93X2JvdW5kID0gVFlQRV9MT1dfQk9VTkQgKFRZUEVfSU5ERVhfVFlQRSAoYXJy YXlfdHlwZSkpOworKyAgYXJ5X2hpZ2hfYm91bmQgPSBUWVBFX0hJR0hfQk9VTkQgKFRZUEVfSU5E RVhfVFlQRSAoYXJyYXlfdHlwZSkpOworKworKyAgLyogV2hlbiB3ZSBhcmUgd29ya2luZyBvbiBh IG11bHRpLWRpbWVuc2lvbmFsIGFycmF5LCB3ZSBuZWVkIHRvIGdldCB0aGUKKysgICAgIGF0dHJp YnV0ZXMgb2YgdGhlIHVuZGVybHlpbmcgdHlwZS4gICovCisrICBpZiAoY2FsbF9jb3VudCA+IDEp CisrICAgIHsKKysgICAgICBlbHRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZ UEUgKGVsdF90eXBlKSk7CisrICAgICAgcm93X2NvdW50ID0gVFlQRV9MRU5HVEggKGFycmF5X3R5 cGUpCisrCQkgICAgLyBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkp OworKyAgICB9CisrCisrICBlbGVtX2NvdW50ID0gbGVuZ3RoOworKyAgZWx0X3NpemUgPSBUWVBF X0xFTkdUSCAoZWx0X3R5cGUpOworKyAgZWx0X29mZnMgPSBsb25nZXN0X3RvX2ludCAobG93Ym91 bmQgLSBhcnlfbG93X2JvdW5kKTsKKysgIGVsdF9zdHJpZGUgPSBUWVBFX0xFTkdUSCAoVFlQRV9J TkRFWF9UWVBFIChhcnJheV90eXBlKSk7CisrCisrICBlbHRfb2ZmcyAqPSBlbHRfc2l6ZTsKKysK KysgIC8qIENoZWNrIGZvciB2YWxpZCB1c2VyIGlucHV0LiAgSW4gY2FzZSBvZiBGb3J0cmFuIHRo aXMgd2FzIGFscmVhZHkgZG9uZQorKyAgICAgaW4gdGhlIGNhbGxpbmcgZnVuY3Rpb24uICAqLwor KyAgaWYgKGNhbGxfY291bnQgPT0gMQorKwkmJiAoIVRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNf VU5ERUZJTkVEIChhcnJheV90eXBlKQorKwkgICAgICAmJiBlbHRfb2ZmcyA+PSBUWVBFX0xFTkdU SCAoYXJyYXlfdHlwZSkpKQorKyAgICBlcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCIp KTsKKyAKKy0gIGlmIChsb3dib3VuZCA8IGxvd2VyYm91bmQgfHwgbGVuZ3RoIDwgMAorLSAgICAg IHx8IGxvd2JvdW5kICsgbGVuZ3RoIC0gMSA+IHVwcGVyYm91bmQpCistICAgIGVycm9yIChfKCJz bGljZSBvdXQgb2YgcmFuZ2UiKSk7CisrICAvKiBDQUxMX0NPVU5UIGlzIDEgd2hlbiB3ZSBhcmUg ZGVhbGluZyBlaXRoZXIgd2l0aCB0aGUgaGlnaGVzdCBkaW1lbnNpb24KKysgICAgIG9mIHRoZSBh cnJheSwgb3IgYSBvbmUgZGltZW5zaW9uYWwgYXJyYXkuICBTZXQgUkFOR0VfVFlQRSBhY2NvcmRp bmdseS4KKysgICAgIEluIGJvdGggY2FzZXMgd2UgY2FsY3VsYXRlIGhvdyBtYW55IHJvd3MvZWxl bWVudHMgd2lsbCBiZSBpbiB0aGUgb3V0cHV0CisrICAgICBhcnJheSBieSBzZXR0aW5nIHNsaWNl X3JhbmdlX3NpemUuICAqLworKyAgaWYgKGNhbGxfY291bnQgPT0gMSkKKysgICAgeworKyAgICAg IHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKGFycmF5X3R5cGUpOworKyAgICAgIHNsaWNl X3JhbmdlX3NpemUgPSBlbGVtX2NvdW50OworKworKyAgICAgIC8qIENoZWNrIGlmIHRoZSBhcnJh eSBib3VuZHMgYXJlIHZhbGlkLiAgKi8KKysgICAgICBpZiAoZ2V0X2Rpc2NyZXRlX2JvdW5kcyAo cmFuZ2VfdHlwZSwgJmFyeV9sb3dfYm91bmQsICZhcnlfaGlnaF9ib3VuZCkgPCAwKQorKwllcnJv ciAoXygic2xpY2UgZnJvbSBiYWQgYXJyYXkgb3IgYml0c3RyaW5nIikpOworKyAgICB9CisrICAv KiBXaGVuIENBTExfQ09VTlQgaXMgZ3JlYXRlciB0aGFuIDEsIHdlIGFyZSBkZWFsaW5nIHdpdGgg YW4gYXJyYXkgb2YgYXJyYXlzLgorKyAgICAgU28gd2UgbmVlZCB0byBnZXQgdGhlIHR5cGUgYmVs b3cgdGhlIGN1cnJlbnQgb25lIGFuZCBzZXQgdGhlIFJBTkdFX1RZUEUKKysgICAgIGFjY29yZGlu Z2x5LiAgKi8KKysgIGVsc2UKKysgICAgeworKyAgICAgIHJhbmdlX3R5cGUgPSBUWVBFX0lOREVY X1RZUEUgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKKysgICAgICBzbGljZV9yYW5n ZV9zaXplID0gKGFyeV9sb3dfYm91bmQgKyByb3dfY291bnQgLSAxKSAqIChlbGVtX2NvdW50KTsK KysgICAgICBhcnlfbG93X2JvdW5kID0gVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpOworKyAg ICB9CisgCisgICAvKiBGSVhNRS10eXBlLWFsbG9jYXRpb246IG5lZWQgYSB3YXkgdG8gZnJlZSB0 aGlzIHR5cGUgd2hlbiB3ZSBhcmUKKy0gICAgIGRvbmUgd2l0aCBpdC4gICovCistICBzbGljZV9y YW5nZV90eXBlID0gY3JlYXRlX3N0YXRpY19yYW5nZV90eXBlICgoc3RydWN0IHR5cGUgKikgTlVM TCwKKy0JCQkJCSAgICAgICBUWVBFX1RBUkdFVF9UWVBFIChyYW5nZV90eXBlKSwKKy0JCQkJCSAg ICAgICBsb3dib3VuZCwKKy0JCQkJCSAgICAgICBsb3dib3VuZCArIGxlbmd0aCAtIDEpOworKyAg ICAgIGRvbmUgd2l0aCBpdC4gICovCisgCisrICBzbGljZV9yYW5nZV90eXBlID0gY3JlYXRlX3N0 YXRpY19yYW5nZV90eXBlIChOVUxMLCBUWVBFX1RBUkdFVF9UWVBFIChyYW5nZV90eXBlKSwKKysJ CQkJCWFyeV9sb3dfYm91bmQsIHNsaWNlX3JhbmdlX3NpemUpOworICAgeworLSAgICBzdHJ1Y3Qg dHlwZSAqZWxlbWVudF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7CistICAg IExPTkdFU1Qgb2Zmc2V0CistICAgICAgPSAobG93Ym91bmQgLSBsb3dlcmJvdW5kKSAqIFRZUEVf TEVOR1RIIChjaGVja190eXBlZGVmIChlbGVtZW50X3R5cGUpKTsKKysgICAgc3RydWN0IHR5cGUg KmVsZW1lbnRfdHlwZTsKKysKKysgICAgLyogV2hlbiBDQUxMX0NPVU5UIGVxdWFscyAxIHdlIGNh biB1c2UgdGhlIGxlZ2FjeSBjb2RlIGZvciBzdWJhcnJheXMuICAqLworKyAgICBpZiAoY2FsbF9j b3VudCA9PSAxKQorKyAgICAgIHsKKysJZWxlbWVudF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAo YXJyYXlfdHlwZSk7CisgCistICAgIHNsaWNlX3R5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoKHN0 cnVjdCB0eXBlICopIE5VTEwsCistCQkJCSAgICBlbGVtZW50X3R5cGUsCistCQkJCSAgICBzbGlj ZV9yYW5nZV90eXBlKTsKKy0gICAgVFlQRV9DT0RFIChzbGljZV90eXBlKSA9IFRZUEVfQ09ERSAo YXJyYXlfdHlwZSk7CisrCXNsaWNlX3R5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVMTCwgZWxl bWVudF90eXBlLCBzbGljZV9yYW5nZV90eXBlKTsKKysKKysJVFlQRV9DT0RFIChzbGljZV90eXBl KSA9IFRZUEVfQ09ERSAoYXJyYXlfdHlwZSk7CisrCisrCWlmIChWQUxVRV9MVkFMIChhcnJheSkg PT0gbHZhbF9tZW1vcnkgJiYgdmFsdWVfbGF6eSAoYXJyYXkpKQorKwkgIHYgPSBhbGxvY2F0ZV92 YWx1ZV9sYXp5IChzbGljZV90eXBlKTsKKysJZWxzZQorKwkgIHsKKysJICAgIHYgPSBhbGxvY2F0 ZV92YWx1ZSAoc2xpY2VfdHlwZSk7CisrCSAgICB2YWx1ZV9jb250ZW50c19jb3B5ICh2LAorKwkJ CQkgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0ICh2KSwKKysJCQkJIGFycmF5LAorKwkJCQkgdmFsdWVf ZW1iZWRkZWRfb2Zmc2V0IChhcnJheSkgKyBlbHRfb2ZmcywKKysJCQkJIGVsdF9zaXplICogbG9u Z2VzdF90b19pbnQgKGxlbmd0aCkpOworKwkgIH0KKyAKKy0gICAgaWYgKFZBTFVFX0xWQUwgKGFy cmF5KSA9PSBsdmFsX21lbW9yeSAmJiB2YWx1ZV9sYXp5IChhcnJheSkpCistICAgICAgc2xpY2Ug PSBhbGxvY2F0ZV92YWx1ZV9sYXp5IChzbGljZV90eXBlKTsKKysgICAgICB9CisrICAgIC8qIFdo ZW4gQ0FMTF9DT1VOVCBpcyBsYXJnZXIgdGhhbiAxIHdlIGFyZSB3b3JraW5nIG9uIGEgcmFuZ2Ug b2YgcmFuZ2VzLgorKyAgICAgICBTbyB3ZSBjb3B5IHRoZSByZWxldmFudCBlbGVtZW50cyBpbnRv IHRoZSBuZXcgYXJyYXkgd2UgcmV0dXJuLiAgKi8KKyAgICAgZWxzZQorICAgICAgIHsKKy0Jc2xp Y2UgPSBhbGxvY2F0ZV92YWx1ZSAoc2xpY2VfdHlwZSk7CistCXZhbHVlX2NvbnRlbnRzX2NvcHkg KHNsaWNlLCAwLCBhcnJheSwgb2Zmc2V0LAorLQkJCSAgICAgdHlwZV9sZW5ndGhfdW5pdHMgKHNs aWNlX3R5cGUpKTsKKysJTE9OR0VTVCBkc3Rfb2Zmc2V0ID0gMDsKKysJTE9OR0VTVCBzcmNfcm93 X2xlbmd0aCA9IFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKSk7Cisr CisrCWVsZW1lbnRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKFRZUEVfVEFSR0VUX1RZUEUgKGFy cmF5X3R5cGUpKTsKKysJc2xpY2VfdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLCBlbGVt ZW50X3R5cGUsIHNsaWNlX3JhbmdlX3R5cGUpOworKworKwlUWVBFX0NPREUgKHNsaWNlX3R5cGUp ID0gVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKSk7CisrCisrCXYgPSBh bGxvY2F0ZV92YWx1ZSAoc2xpY2VfdHlwZSk7CisrCWZvciAoaSA9IDA7IGkgPCBsb25nZXN0X3Rv X2ludCAocm93X2NvdW50KTsgaSsrKQorKwkgIHsKKysJICAgIC8qIEZldGNoZXMgdGhlIGNvbnRl bnRzIG9mIEFSUkFZIGFuZCBjb3BpZXMgdGhlbSBpbnRvIFYuICAqLworKwkgICAgdmFsdWVfY29u dGVudHNfY29weSAodiwKKysJCQkJIGRzdF9vZmZzZXQsCisrCQkJCSBhcnJheSwKKysJCQkJIGVs dF9vZmZzLAorKwkJCQkgZWx0X3NpemUgKiBlbGVtX2NvdW50KTsKKysJICAgIGVsdF9vZmZzICs9 IHNyY19yb3dfbGVuZ3RoOworKwkgICAgZHN0X29mZnNldCArPSBlbHRfc2l6ZSAqIGVsZW1fY291 bnQ7CisrCSAgfQorICAgICAgIH0KKyAKKy0gICAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlv biAoc2xpY2UsIGFycmF5KTsKKy0gICAgVkFMVUVfRlJBTUVfSUQgKHNsaWNlKSA9IFZBTFVFX0ZS QU1FX0lEIChhcnJheSk7CistICAgIHNldF92YWx1ZV9vZmZzZXQgKHNsaWNlLCB2YWx1ZV9vZmZz ZXQgKGFycmF5KSArIG9mZnNldCk7CisrICAgIHNldF92YWx1ZV9jb21wb25lbnRfbG9jYXRpb24g KHYsIGFycmF5KTsKKysgICAgVkFMVUVfUkVHTlVNICh2KSA9IFZBTFVFX1JFR05VTSAoYXJyYXkp OworKyAgICBWQUxVRV9GUkFNRV9JRCAodikgPSBWQUxVRV9GUkFNRV9JRCAoYXJyYXkpOworKyAg ICBzZXRfdmFsdWVfb2Zmc2V0ICh2LCB2YWx1ZV9vZmZzZXQgKGFycmF5KSArIGVsdF9vZmZzKTsK KyAgIH0KKyAKKy0gIHJldHVybiBzbGljZTsKKysgIHJldHVybiB2OworIH0KKyAKKyAvKiBDcmVh dGUgYSB2YWx1ZSBmb3IgYSBGT1JUUkFOIGNvbXBsZXggbnVtYmVyLiAgQ3VycmVudGx5IG1vc3Qg b2YgdGhlCitkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9nZGIvdmFsdWUuaAoraW5kZXggZWVh MGU1OS4uMDU5MzljNCAxMDA2NDQKKy0tLSBhL2dkYi92YWx1ZS5oCisrKysgYi9nZGIvdmFsdWUu aAorQEAgLTEwNTYsNiArMTA1Niw4IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhcnlpbmdfdG9f c2xpY2UgKHN0cnVjdCB2YWx1ZSAqKTsKKyAKKyBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9z bGljZSAoc3RydWN0IHZhbHVlICosIGludCwgaW50KTsKKyAKKytleHRlcm4gc3RydWN0IHZhbHVl ICp2YWx1ZV9zbGljZV8xIChzdHJ1Y3QgdmFsdWUgKiwgaW50LCBpbnQsIGludCk7CisrCisgZXh0 ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfbGl0ZXJhbF9jb21wbGV4IChzdHJ1Y3QgdmFsdWUgKiwg c3RydWN0IHZhbHVlICosCisgCQkJCQkgICAgc3RydWN0IHR5cGUgKik7CisgCistLSAKKzEuNy4w LjcKCmRpZmYgLS1naXQgYS9nZGItZm9ydHJhbi1zdHJpZGUtaW50ZWwtMm9mNi5wYXRjaCBiL2dk Yi1mb3J0cmFuLXN0cmlkZS1pbnRlbC0yb2Y2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjEyZjc1MTUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZm9ydHJhbi1zdHJp ZGUtaW50ZWwtMm9mNi5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tOiBDaHJpc3RvcGggV2Vp bm1hbm4gPGNocmlzdG9waC50LndlaW5tYW5uQGludGVsLmNvbT4KK1tQQVRDSCAyLzZdIGZvcnRy YW46IGNvbWJpbmUgc3ViYXJyYXkgYW5kIHN0cmluZyBjb21wdXRhdGlvbgoraHR0cHM6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDE1LTEyL21zZzAwMDEwLmh0bWwKK01lc3NhZ2Ut SWQ6IDwxNDQ4OTc2MDc1LTExNDU2LTMtZ2l0LXNlbmQtZW1haWwtY2hyaXN0b3BoLnQud2Vpbm1h bm5AaW50ZWwuY29tPgorCitTdHJpbmdzIG9ubHkgaGF2ZSBvbmUgZGltZW5zaW9uLCBidXQgdGhl IGVsZW1lbnQgY29tcHV0YXRpb24gaXMKK2lkZW50aWNhbCB0byB0aGUgc3ViYXJyYXkgY29tcHV0 YXRpb24gZm9yIHJhbmdlcyBhbmQgaW5kaWNlcy4KKworMjAxMy0xMS0yNiAgQ2hyaXN0b3BoIFdl aW5tYW5uICA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgorCisJKiBldmFsLmMgKGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCk6IENhbGwKKwl2YWx1ZV9mOTBfc3ViYXJyYXkgZm9yIHBy aW50IGV4cHJlc3Npb25zIG9uIGFycmF5IGFuZAorCXN0cmluZyB0eXBlcy4KKworCisKK1NpZ25l ZC1vZmYtYnk6IENocmlzdG9waCBXZWlubWFubiA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwu Y29tPgorLS0tCisgZ2RiL2V2YWwuYyB8ICAgMTAgKy0tLS0tLS0tLQorIDEgZmlsZXMgY2hhbmdl ZCwgMSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2RiL2V2 YWwuYyBiL2dkYi9ldmFsLmMKK2luZGV4IDJjZWNjYmMuLjBjMWI2MDcgMTAwNjQ0CistLS0gYS9n ZGIvZXZhbC5jCisrKysgYi9nZGIvZXZhbC5jCitAQCAtMjAzNCwxNiArMjAzNCw4IEBAIGV2YWx1 YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorICAgICAgIHN3 aXRjaCAoY29kZSkKKyAJeworIAljYXNlIFRZUEVfQ09ERV9BUlJBWToKKy0JICByZXR1cm4gdmFs dWVfZjkwX3N1YmFycmF5IChhcmcxLCBleHAsIHBvcywgbmFyZ3MsIG5vc2lkZSk7CistCisgCWNh c2UgVFlQRV9DT0RFX1NUUklORzoKKy0JICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBP UF9GOTBfUkFOR0UpCistCSAgICByZXR1cm4gdmFsdWVfZjkwX3N1YmFycmF5IChhcmcxLCBleHAs IHBvcywgMSwgbm9zaWRlKTsKKy0JICBlbHNlCistCSAgICB7CistCSAgICAgIGFyZzIgPSBldmFs dWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7CistCSAgICAgIHJl dHVybiB2YWx1ZV9zdWJzY3JpcHQgKGFyZzEsIHZhbHVlX2FzX2xvbmcgKGFyZzIpKTsKKy0JICAg IH0KKysJICByZXR1cm4gIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5hcmdz LCBub3NpZGUpOworIAorIAljYXNlIFRZUEVfQ09ERV9QVFI6CisgCWNhc2UgVFlQRV9DT0RFX0ZV TkM6CistLSAKKzEuNy4wLjcKCmRpZmYgLS1naXQgYS9nZGItZm9ydHJhbi1zdHJpZGUtaW50ZWwt M29mNi5wYXRjaCBiL2dkYi1mb3J0cmFuLXN0cmlkZS1pbnRlbC0zb2Y2LnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViZTNhODcKLS0tIC9kZXYvbnVsbAorKysgYi9n ZGItZm9ydHJhbi1zdHJpZGUtaW50ZWwtM29mNi5wYXRjaApAQCAtMCwwICsxLDE2MiBAQAorRnJv bTogQ2hyaXN0b3BoIFdlaW5tYW5uIDxjaHJpc3RvcGgudC53ZWlubWFubkBpbnRlbC5jb20+Citb UEFUQ0ggMy82XSBmb3J0cmFuOiBjaGFuZ2Ugc3VicmFuZ2UgZW51bSB0byBiaXQgZmllbGQKK2h0 dHBzOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxNS0xMi9tc2cwMDAwNi5odG1s CitNZXNzYWdlLUlkOiA8MTQ0ODk3NjA3NS0xMTQ1Ni00LWdpdC1zZW5kLWVtYWlsLWNocmlzdG9w aC50LndlaW5tYW5uQGludGVsLmNvbT4KKworQ2hhbmdlIEZvcnRyYW4gc3VicmFuZ2UgZW51bSBm b3Igc3VicmFuZ2UgZXhwcmVzc2lvbnMgdG8KK3JlcHJlc2VudCBhIGJpdGZpZWxkIGZvciBlYXNp ZXIgbWFuaXB1bGF0aW9uLiAgQ29uc2VxdWVudGx5CithbHNvIGNoYW5nZSBvY2N1cmVuY2VzIGFu ZCBldmFsdWF0aW9uIG9mIHNhaWQgZW51bS4gIFRoZQorYmVoYXZpb3VyIG9mIEdEQiBpcyB1bmNo YW5nZWQuCisKKzIwMTMtMTEtMjcgIENocmlzdG9waCBXZWlubWFubiAgPGNocmlzdG9waC50Lndl aW5tYW5uQGludGVsLmNvbT4KKworCSogZXZhbC5jICh2YWx1ZV9mOTBfc3ViYXJyYXkpOiBDaGFu Z2UgZXZhbHVhdGlvbiBvZiB0aGUKKwlzdWJhcnJheSBib3VuZGFyaWVzLiAgU2V0IGJvdW5kYXJp ZXMgdG8gYmUgZWl0aGVyIHVzZXIKKwlwcm92aWRlZCAoYml0IGluIGY5MF9yYW5nZV90eXBlIHdh cyBzZXQpIG9yIHRha2UgdGhlCisJZGVmYXVsdCB2YWx1ZSBpZiB0aGUgYm91bmRhcnkgd2FzIG5v dCBwcm92aWRlZCBieSB0aGUgdXNlci4KKwkqIGYtZXhwLnkgKHN1YnJhbmdlKTogQ2hhbmdlIHJ1 bGVzIGZvciBzdWJyYW5nZSBleHByZXNzaW9ucworCXRvIHdyaXRlIHRoZSByZWxldmFudCBiaXQg c2VxdWVuY2Ugb250byB0aGUgZWx0IHN0YWNrLgorCSogZi1sYW5nLmggKGY5MF9yYW5nZV90eXBl KTogQ2hhbmdlIHRoZSBlbnVtIHRvIHVzZSBiaXQKKwl2YWx1ZXMgZm9yIGVhY2ggYm91bmRhcnks IGlmIHNldCBieSB0aGUgdXNlci4KKwkqIHBhcnNlLmMgKG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFy ZCk6IEluIGNhc2Ugb2YKKwlPUF9GOTBfUkFOR0UgY2hhbmdlIHRoZSBjYWxjdWxhdGlvbiBvZiB0 aGUgbnVtYmVyIG9mCisJYXJndW1lbnRzIG9uIHRoZSBlbHQgc3RhY2ssIGRlcGVuZGluZyBvbiB0 aGUgbnVtYmVyIG9mCisJYm91bmRhcmllcyBwcm92aWRlZCBieSB0aGUgdXNlci4KKworCisKK1Np Z25lZC1vZmYtYnk6IENocmlzdG9waCBXZWlubWFubiA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50 ZWwuY29tPgorLS0tCisgZ2RiL2V2YWwuYyAgIHwgICAxNCArKysrKystLS0tLS0tLQorIGdkYi9m LWV4cC55ICB8ICAgMTEgKysrKysrLS0tLS0KKyBnZGIvZi1sYW5nLmggfCAgICA2ICsrLS0tLQor IGdkYi9wYXJzZS5jICB8ICAgMjEgKysrKysrKystLS0tLS0tLS0tLS0tCisgNCBmaWxlcyBjaGFu Z2VkLCAyMiBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dk Yi9ldmFsLmMgYi9nZGIvZXZhbC5jCitpbmRleCAwYzFiNjA3Li40N2JhNjAyIDEwMDY0NAorLS0t IGEvZ2RiL2V2YWwuYworKysrIGIvZ2RiL2V2YWwuYworQEAgLTQ4MCwxMiArNDgwLDEyIEBAIHZh bHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24g KmV4cCwKKyAJICAvKiBJZiBhIGxvd2VyIGJvdW5kIHdhcyBwcm92aWRlZCBieSB0aGUgdXNlciwg dGhlIGJpdCBoYXMgYmVlbgorIAkgICAgIHNldCBhbmQgd2UgY2FuIGFzc2lnbiB0aGUgdmFsdWUg ZnJvbSB0aGUgZWx0IHN0YWNrLiAgU2FtZSBmb3IKKyAJICAgICB1cHBlciBib3VuZC4gICovCist CSAgaWYgKChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gSElHSF9CT1VORF9ERUZBVUxUKQorLQkg ICAgICB8fCByYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gTk9ORV9CT1VORF9ERUZBVUxUKQorKwkg IGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlICYgU1VCQVJSQVlfTE9XX0JPVU5EKQorKwkgICAg ICA9PSBTVUJBUlJBWV9MT1dfQk9VTkQpCisgCSAgICByYW5nZS0+bG93ID0gdmFsdWVfYXNfbG9u ZyAoZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwKKyAJCQkJCQkJIHBvcywgbm9zaWRl KSk7CistCSAgaWYgKChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gTE9XX0JPVU5EX0RFRkFVTFQp CistCSAgICAgIHx8IHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9PSBOT05FX0JPVU5EX0RFRkFVTFQp CisrCSAgaWYgKChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgJiBTVUJBUlJBWV9ISUdIX0JPVU5EKQor KwkgICAgICA9PSBTVUJBUlJBWV9ISUdIX0JPVU5EKQorIAkgICAgcmFuZ2UtPmhpZ2ggPSB2YWx1 ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLAorIAkJCQkJCQkgIHBv cywgbm9zaWRlKSk7CisgCX0KK0BAIC01MjYsMTIgKzUyNiwxMCBAQCB2YWx1ZV9mOTBfc3ViYXJy YXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgCisgCSAg ICAvKiBJZiBubyBsb3dlciBib3VuZCB3YXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIsIHdlIHRha2Ug dGhlCisgCSAgICAgICBkZWZhdWx0IGJvdW5kYXJ5LiAgU2FtZSBmb3IgdGhlIGhpZ2ggYm91bmQu ICAqLworLQkgICAgaWYgKChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gTE9XX0JPVU5EX0RFRkFV TFQpCistCQl8fCAocmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IEJPVEhfQk9VTkRfREVGQVVMVCkp CisrCSAgICBpZiAoKHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSAmIFNVQkFSUkFZX0xPV19CT1VORCkg PT0gMCkKKyAJICAgICAgcmFuZ2UtPmxvdyA9IFRZUEVfTE9XX0JPVU5EIChpbmRleF90eXBlKTsK KyAKKy0JICAgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IEhJR0hfQk9VTkRfREVGQVVM VCkKKy0JCXx8IChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gQk9USF9CT1VORF9ERUZBVUxUKSkK KysJICAgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VORCkg PT0gMCkKKyAJICAgICAgcmFuZ2UtPmhpZ2ggPSBUWVBFX0hJR0hfQk9VTkQgKGluZGV4X3R5cGUp OworIAorIAkgICAgLyogQm90aCB1c2VyIHByb3ZpZGVkIGxvdyBhbmQgaGlnaCBib3VuZCBoYXZl IHRvIGJlIGluc2lkZSB0aGUKK2RpZmYgLS1naXQgYS9nZGIvZi1leHAueSBiL2dkYi9mLWV4cC55 CitpbmRleCBhYjIzZGYwLi4xZmY3NjhjIDEwMDY0NAorLS0tIGEvZ2RiL2YtZXhwLnkKKysrKyBi L2dkYi9mLWV4cC55CitAQCAtMzE1LDI2ICszMTUsMjcgQEAgYXJnbGlzdAk6CWFyZ2xpc3QgJywn IGV4cCAgICVwcmVjIEFCT1ZFX0NPTU1BCisgLyogVGhlcmUgYXJlIGZvdXIgc29ydHMgb2Ygc3Vi cmFuZ2UgdHlwZXMgaW4gRjkwLiAgKi8KKyAKKyBzdWJyYW5nZToJZXhwICc6JyBleHAJJXByZWMg QUJPVkVfQ09NTUEKKy0JCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX0Y5MF9S QU5HRSk7IAorLQkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIE5PTkVfQk9VTkRf REVGQVVMVCk7CisrCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9GOTBfUkFO R0UpOworKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsCisrCQkJCQkJIFNVQkFS UkFZX0xPV19CT1VORCB8IFNVQkFSUkFZX0hJR0hfQk9VTkQpOworIAkJCSAgd3JpdGVfZXhwX2Vs dF9vcGNvZGUgKHBzdGF0ZSwgT1BfRjkwX1JBTkdFKTsgfQorIAk7CisgCisgc3VicmFuZ2U6CWV4 cCAnOicJJXByZWMgQUJPVkVfQ09NTUEKKyAJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3Rh dGUsIE9QX0Y5MF9SQU5HRSk7CistCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwg SElHSF9CT1VORF9ERUZBVUxUKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRl LCBTVUJBUlJBWV9MT1dfQk9VTkQpOworIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0 ZSwgT1BfRjkwX1JBTkdFKTsgfQorIAk7CisgCisgc3VicmFuZ2U6CSc6JyBleHAJJXByZWMgQUJP VkVfQ09NTUEKKyAJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX0Y5MF9SQU5H RSk7CistCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgTE9XX0JPVU5EX0RFRkFV TFQpOworKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIFNVQkFSUkFZX0hJR0hf Qk9VTkQpOworIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfRjkwX1JBTkdF KTsgfQorIAk7CisgCisgc3VicmFuZ2U6CSc6JwklcHJlYyBBQk9WRV9DT01NQQorIAkJCXsgd3Jp dGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfRjkwX1JBTkdFKTsKKy0JCQkgIHdyaXRlX2V4 cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBCT1RIX0JPVU5EX0RFRkFVTFQpOworKwkJCSAgd3JpdGVf ZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIDApOworIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUg KHBzdGF0ZSwgT1BfRjkwX1JBTkdFKTsgfQorIAk7CisgCitkaWZmIC0tZ2l0IGEvZ2RiL2YtbGFu Zy5oIGIvZ2RiL2YtbGFuZy5oCitpbmRleCBmN2ExNGQ3Li4yMGNmNWJkIDEwMDY0NAorLS0tIGEv Z2RiL2YtbGFuZy5oCisrKysgYi9nZGIvZi1sYW5nLmgKK0BAIC00NCwxMCArNDQsOCBAQCBleHRl cm4gdm9pZCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwgaW50 LCBDT1JFX0FERFIsCisgICAgCisgZW51bSBmOTBfcmFuZ2VfdHlwZQorICAgeworLSAgICBCT1RI X0JPVU5EX0RFRkFVTFQsCQkvKiAiKDopIiAgKi8KKy0gICAgTE9XX0JPVU5EX0RFRkFVTFQsCQkv KiAiKDpoaWdoKSIgICovCistICAgIEhJR0hfQk9VTkRfREVGQVVMVCwJCS8qICIobG93OikiICAq LworLSAgICBOT05FX0JPVU5EX0RFRkFVTFQJCS8qICIobG93OmhpZ2gpIiAgKi8KKysgICAgU1VC QVJSQVlfTE9XX0JPVU5EID0gMHgxLAkJLyogIihsb3c6KSIgICovCisrICAgIFNVQkFSUkFZX0hJ R0hfQk9VTkQgPSAweDIJCS8qICIoOmhpZ2gpIiAgKi8KKyAgIH07CisgCisgLyogQSBjb21tb24g YmxvY2suICAqLworZGlmZiAtLWdpdCBhL2dkYi9wYXJzZS5jIGIvZ2RiL3BhcnNlLmMKK2luZGV4 IGEyNGM1MmEuLjdlNDVjMDUgMTAwNjQ0CistLS0gYS9nZGIvcGFyc2UuYworKysrIGIvZ2RiL3Bh cnNlLmMKK0BAIC0xMDA2LDIyICsxMDA2LDE3IEBAIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAo Y29uc3Qgc3RydWN0IGV4cHJlc3Npb24gKmV4cHIsIGludCBlbmRwb3MsCisgCisgICAgIGNhc2Ug T1BfRjkwX1JBTkdFOgorICAgICAgIG9wbGVuID0gMzsKKysgICAgICBhcmdzID0gMDsKKyAgICAg ICByYW5nZV90eXBlID0gKGVudW0gZjkwX3JhbmdlX3R5cGUpCisgCWxvbmdlc3RfdG9faW50IChl eHByLT5lbHRzW2VuZHBvcyAtIDJdLmxvbmdjb25zdCk7CisgCistICAgICAgc3dpdGNoIChyYW5n ZV90eXBlKQorLQl7CistCWNhc2UgTE9XX0JPVU5EX0RFRkFVTFQ6CistCWNhc2UgSElHSF9CT1VO RF9ERUZBVUxUOgorLQkgIGFyZ3MgPSAxOworLQkgIGJyZWFrOworLQljYXNlIEJPVEhfQk9VTkRf REVGQVVMVDoKKy0JICBhcmdzID0gMDsKKy0JICBicmVhazsKKy0JY2FzZSBOT05FX0JPVU5EX0RF RkFVTFQ6CistCSAgYXJncyA9IDI7CistCSAgYnJlYWs7CistCX0KKysgICAgICAvKiBJbmNyZW1l bnQgdGhlIGFyZ3VtZW50IGNvdW50ZXIgZm9yIGVhY2ggYXJndW1lbnQKKysJIHByb3ZpZGVkIGJ5 IHRoZSB1c2VyLiAgKi8KKysgICAgICBpZiAoKHJhbmdlX3R5cGUgJiBTVUJBUlJBWV9MT1dfQk9V TkQpID09IFNVQkFSUkFZX0xPV19CT1VORCkKKysJYXJncysrOworKworKyAgICAgIGlmICgocmFu Z2VfdHlwZSAmIFNVQkFSUkFZX0hJR0hfQk9VTkQpID09IFNVQkFSUkFZX0hJR0hfQk9VTkQpCisr CWFyZ3MrKzsKKyAKKyAgICAgICBicmVhazsKKyAKKy0tIAorMS43LjAuNwoKZGlmZiAtLWdpdCBh L2dkYi1mb3J0cmFuLXN0cmlkZS1pbnRlbC00b2Y2LnBhdGNoIGIvZ2RiLWZvcnRyYW4tc3RyaWRl LWludGVsLTRvZjYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUw MjM2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1mb3J0cmFuLXN0cmlkZS1pbnRlbC00b2Y2LnBh dGNoCkBAIC0wLDAgKzEsMTQyIEBACitGcm9tOiBDaHJpc3RvcGggV2Vpbm1hbm4gPGNocmlzdG9w aC50LndlaW5tYW5uQGludGVsLmNvbT4KK1tQQVRDSCA0LzZdIGZvcnRyYW46IGVuYWJsZSBwYXJz aW5nIG9mIHN0cmlkZSBwYXJhbWV0ZXIgZm9yIHN1YnJhbmdlcworaHR0cHM6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDE1LTEyL21zZzAwMDA5Lmh0bWwKK01lc3NhZ2UtSWQ6IDwx NDQ4OTc2MDc1LTExNDU2LTUtZ2l0LXNlbmQtZW1haWwtY2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50 ZWwuY29tPgorCitBbGxvdyB0aGUgdXNlciB0byBwcm92aWRlIGEgc3RyaWRlIHBhcmFtZXRlciBm b3IgRm9ydHJhbgorc3ViYXJyYXlzLiAgVGhlIHN0cmlkZSBwYXJhbWV0ZXIgY2FuIGJlIGFueSBp bnRlZ2VyIGV4Y2VwdAorJzAnLiAgVGhlIGRlZmF1bHQgc3RyaWRlIHZhbHVlIGlzICcxJy4KKwor MjAxMy0xMS0yNyAgQ2hyaXN0b3BoIFdlaW5tYW5uICA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50 ZWwuY29tPgorCisJKiBldmFsLmMgKHZhbHVlX2Y5MF9zdWJhcnJheSk6IEFkZCBleHByZXNzaW9u IGV2YWx1YXRpb24KKwlmb3IgYSBzdHJpZGUgcGFyYW1ldGVyIGluIGEgRm9ydHJhbiByYW5nZSBl eHByZXNzaW9uLgorCSogZi1leHAueTogQWRkIHlhY2MgcnVsZXMgZm9yIHdyaXRpbmcgaW5mbyBv biB0aGUgZWx0IHN0YWNrCisJd2hlbiB0aGUgdXNlciBwcm92aWRlZCBhIHN0cmlkZSBhcmd1bWVu dC4KKwkqIGYtbGFuZy5oIChGOTBfUkFOR0UpOiBBZGQgZmllbGQgdG8gZW51bSB0byBzaG93IHdo ZW4gYQorCXN0cmlkZSB3YXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIuCisJKiBwYXJzZS5jIChvcGVy YXRvcl9sZW5ndGhfc3RhbmRhcmQpOiBDaGVjayBpZiBhIHN0cmlkZQorCXZhbHVlIHdhcyBwcm92 aWRlZCwgYW5kIGluY3JlbWVudCBhcmd1bWVudCBjb3VudGVyCisJYWNjb3JkaW5nbHkuCisKKwor CitTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggV2Vpbm1hbm4gPGNocmlzdG9waC50LndlaW5tYW5u QGludGVsLmNvbT4KKy0tLQorIGdkYi9ldmFsLmMgICB8ICAgMTAgKysrKysrKysrLQorIGdkYi9m LWV4cC55ICB8ICAgMzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCisgZ2RiL2Yt bGFuZy5oIHwgICAgNSArKystLQorIGdkYi9wYXJzZS5jICB8ICAgIDMgKysrCisgNCBmaWxlcyBj aGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEv Z2RiL2V2YWwuYyBiL2dkYi9ldmFsLmMKK2luZGV4IDQ3YmE2MDIuLjE1YjJhZDQgMTAwNjQ0Cist LS0gYS9nZGIvZXZhbC5jCisrKysgYi9nZGIvZXZhbC5jCitAQCAtNDM4LDcgKzQzOCw3IEBAIHZh bHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24g KmV4cCwKKyAgICAgICBzdHJ1Y3Qgc3Vic2NyaXB0X3JhbmdlCisgICAgICAgeworICAgICAgICAg ZW51bSBmOTBfcmFuZ2VfdHlwZSBmOTBfcmFuZ2VfdHlwZTsKKy0gICAgICAgIExPTkdFU1QgbG93 LCBoaWdoOworKyAgICAgICAgTE9OR0VTVCBsb3csIGhpZ2gsIHN0cmlkZTsKKyAgICAgICB9Cisg ICAgICAgcmFuZ2U7CisgICAgICAgTE9OR0VTVCBudW1iZXI7CitAQCAtNDg4LDYgKzQ4OCwxNCBA QCB2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNz aW9uICpleHAsCisgCSAgICAgID09IFNVQkFSUkFZX0hJR0hfQk9VTkQpCisgCSAgICByYW5nZS0+ aGlnaCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsCisg CQkJCQkJCSAgcG9zLCBub3NpZGUpKTsKKysKKysJICAvKiBBc3NpZ24gdGhlIHVzZXIncyBzdHJp ZGUgdmFsdWUgaWYgcHJvdmlkZWQuICAqLworKwkgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBl ICYgU1VCQVJSQVlfU1RSSURFKSA9PSBTVUJBUlJBWV9TVFJJREUpCisrCSAgICByYW5nZS0+c3Ry aWRlID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwKKysJ CQkJCQkJICAgIHBvcywgbm9zaWRlKSk7CisrCSAgLyogQXNzaWduIHRoZSBkZWZhdWx0IHN0cmlk ZSB2YWx1ZSAnMScuICAqLworKwkgIGVsc2UKKysJICAgIHJhbmdlLT5zdHJpZGUgPSAxOworIAl9 CisgICAgICAgLyogVXNlciBpbnB1dCBpcyBhbiBpbmRleC4gIEUuZy46ICJwIGFycnkoNSkiLiAg Ki8KKyAgICAgICBlbHNlCitkaWZmIC0tZ2l0IGEvZ2RiL2YtZXhwLnkgYi9nZGIvZi1leHAueQor aW5kZXggMWZmNzY4Yy4uMDE0ODBiMCAxMDA2NDQKKy0tLSBhL2dkYi9mLWV4cC55CisrKysgYi9n ZGIvZi1leHAueQorQEAgLTMxNiw4ICszMTYsOCBAQCBhcmdsaXN0CToJYXJnbGlzdCAnLCcgZXhw ICAgJXByZWMgQUJPVkVfQ09NTUEKKyAKKyBzdWJyYW5nZToJZXhwICc6JyBleHAJJXByZWMgQUJP VkVfQ09NTUEKKyAJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX0Y5MF9SQU5H RSk7CistCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwKKy0JCQkJCQkgU1VCQVJS QVlfTE9XX0JPVU5EIHwgU1VCQVJSQVlfSElHSF9CT1VORCk7CisrCQkJICB3cml0ZV9leHBfZWx0 X2xvbmdjc3QgKHBzdGF0ZSwgU1VCQVJSQVlfTE9XX0JPVU5ECisrCQkJCQkJIHwgU1VCQVJSQVlf SElHSF9CT1VORCk7CisgCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9GOTBf UkFOR0UpOyB9CisgCTsKKyAKK0BAIC0zMzksNiArMzM5LDM1IEBAIHN1YnJhbmdlOgknOicJJXBy ZWMgQUJPVkVfQ09NTUEKKyAJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX0Y5 MF9SQU5HRSk7IH0KKyAJOworIAorKy8qIEVhY2ggc3VicmFuZ2UgdHlwZSBjYW4gaGF2ZSBhIHN0 cmlkZSBhcmd1bWVudC4gICovCisrc3VicmFuZ2U6CWV4cCAnOicgZXhwICc6JyBleHAgJXByZWMg QUJPVkVfQ09NTUEKKysJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX0Y5MF9S QU5HRSk7CisrCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgU1VCQVJSQVlfTE9X X0JPVU5ECisrCQkJCQkJIHwgU1VCQVJSQVlfSElHSF9CT1VORAorKwkJCQkJCSB8IFNVQkFSUkFZ X1NUUklERSk7CisrCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9GOTBfUkFO R0UpOyB9CisrCTsKKysKKytzdWJyYW5nZToJZXhwICc6JyAnOicgZXhwICVwcmVjIEFCT1ZFX0NP TU1BCisrCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9GOTBfUkFOR0UpOwor KwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIFNVQkFSUkFZX0xPV19CT1VORAor KwkJCQkJCSB8IFNVQkFSUkFZX1NUUklERSk7CisrCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAo cHN0YXRlLCBPUF9GOTBfUkFOR0UpOyB9CisrCTsKKysKKytzdWJyYW5nZToJJzonIGV4cCAnOicg ZXhwICVwcmVjIEFCT1ZFX0NPTU1BCisrCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRl LCBPUF9GOTBfUkFOR0UpOworKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIFNV QkFSUkFZX0hJR0hfQk9VTkQKKysJCQkJCQkgfCBTVUJBUlJBWV9TVFJJREUpOworKwkJCSAgd3Jp dGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfRjkwX1JBTkdFKTsgfQorKwk7CisrCisrc3Vi cmFuZ2U6CSc6JyAnOicgZXhwICVwcmVjIEFCT1ZFX0NPTU1BCisrCQkJeyB3cml0ZV9leHBfZWx0 X29wY29kZSAocHN0YXRlLCBPUF9GOTBfUkFOR0UpOworKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25n Y3N0IChwc3RhdGUsIFNVQkFSUkFZX1NUUklERSk7CisrCQkJICB3cml0ZV9leHBfZWx0X29wY29k ZSAocHN0YXRlLCBPUF9GOTBfUkFOR0UpOyB9CisrCTsKKysKKyBjb21wbGV4bnVtOiAgICAgZXhw ICcsJyBleHAgCisgICAgICAgICAgICAgICAgIAl7IH0gICAgICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICAgOworZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuaCBiL2dkYi9mLWxhbmcuaAor aW5kZXggMjBjZjViZC4uNmNjMDY3MiAxMDA2NDQKKy0tLSBhL2dkYi9mLWxhbmcuaAorKysrIGIv Z2RiL2YtbGFuZy5oCitAQCAtNDQsOCArNDQsOSBAQCBleHRlcm4gdm9pZCBmX3ZhbF9wcmludCAo c3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwgaW50LCBDT1JFX0FERFIsCisgICAgCisg ZW51bSBmOTBfcmFuZ2VfdHlwZQorICAgeworLSAgICBTVUJBUlJBWV9MT1dfQk9VTkQgPSAweDEs CQkvKiAiKGxvdzopIiAgKi8KKy0gICAgU1VCQVJSQVlfSElHSF9CT1VORCA9IDB4MgkJLyogIig6 aGlnaCkiICAqLworKyAgICBTVUJBUlJBWV9MT1dfQk9VTkQgPSAweDEsCQkvKiAiKGxvdzopIiBv ciAiKGxvdzo6KSIgKi8KKysgICAgU1VCQVJSQVlfSElHSF9CT1VORCA9IDB4MiwJCS8qICIoOmhp Z2gpIiBvciAiKDpoaWdoOikiICAqLworKyAgICBTVUJBUlJBWV9TVFJJREUgPSAweDQJCS8qICIo OjpzdHJpZGUpIiAgKi8KKyAgIH07CisgCisgLyogQSBjb21tb24gYmxvY2suICAqLworZGlmZiAt LWdpdCBhL2dkYi9wYXJzZS5jIGIvZ2RiL3BhcnNlLmMKK2luZGV4IDdlNDVjMDUuLmU2N2E0MjYg MTAwNjQ0CistLS0gYS9nZGIvcGFyc2UuYworKysrIGIvZ2RiL3BhcnNlLmMKK0BAIC0xMDE4LDYg KzEwMTgsOSBAQCBvcGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQgKGNvbnN0IHN0cnVjdCBleHByZXNz aW9uICpleHByLCBpbnQgZW5kcG9zLAorICAgICAgIGlmICgocmFuZ2VfdHlwZSAmIFNVQkFSUkFZ X0hJR0hfQk9VTkQpID09IFNVQkFSUkFZX0hJR0hfQk9VTkQpCisgCWFyZ3MrKzsKKyAKKysgICAg ICBpZiAoKHJhbmdlX3R5cGUgJiBTVUJBUlJBWV9TVFJJREUpID09IFNVQkFSUkFZX1NUUklERSkK KysJYXJncysrOworKworICAgICAgIGJyZWFrOworIAorICAgICBkZWZhdWx0OgorLS0gCisxLjcu MC43CgpkaWZmIC0tZ2l0IGEvZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTVvZjYucGF0Y2ggYi9n ZGItZm9ydHJhbi1zdHJpZGUtaW50ZWwtNW9mNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4xY2U1NDQwCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWZvcnRyYW4tc3Ry aWRlLWludGVsLTVvZjYucGF0Y2gKQEAgLTAsMCArMSw0MDIgQEAKK0Zyb206IENocmlzdG9waCBX ZWlubWFubiA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgorW1BBVENIIDUvNl0gZm9y dHJhbjogY2FsY3VsYXRlIHN1YmFycmF5IHdpdGggc3RyaWRlIHZhbHVlcy4KK2h0dHBzOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxNS0xMi9tc2cwMDAxMS5odG1sCitNZXNzYWdl LUlkOiA8MTQ0ODk3NjA3NS0xMTQ1Ni02LWdpdC1zZW5kLWVtYWlsLWNocmlzdG9waC50LndlaW5t YW5uQGludGVsLmNvbT4KKworQ2FsY3VsYXRlIGVsZW1lbnRzIG9mIGEgc3ViYXJyYXkgdXNpbmcg YSBwcm92aWRlZCBzdHJpZGUgdmFsdWUKK1RoZSBzdHJpZGUgdmFsdWUgY2FuIGJlIGEgcG9zaXRp dmUgb3IgbmVnYXRpdmUgaW50ZWdlciwgYnV0IG1heQorbm90IGJlIHplcm8uICBJZiBubyBzdHJp ZGUgaXMgcHJvdmlkZWQsIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZQorMSB0byBwcmludCBhbGwgZWxl bWVudHMgaW5zaWRlIHRoZSByYW5nZS4KKworMXwgcHJvZ3JhbSBwcm9nCisyfCAgIGludGVnZXIg OjogYXJ5KDEwKSA9ICgvIChpLCBpPTEsIDEwKSAvKQorM3wgZW5kIHByb2dyYW0gcHJvZworCiso Z2RiKSBwcmludCBhcnkoMToxMDoyKQorJDMgPSAoMSwgMywgNSwgNywgOSkKKworMjAxMy0xMS0y NyAgQ2hyaXN0b3BoIFdlaW5tYW5uICA8Y2hyaXN0b3BoLnQud2Vpbm1hbm4+CisKKwkqIGV2YWwu YyAodmFsdWVfZjkwX3N1YmFycmF5KTogQWRkIHJhbmdlIHNpemUgY2FsY3VsYXRpb24KKwlmb3Ig c3RyaWRlIGJhc2VkIHJhbmdlcywgYW5kIGV2YWx1YXRpb24gb2YgdXNlciBzdHJpZGUKKwlwYXJh bWV0ZXJzLiAgQWRkIGNoZWNrIGZvciBtYXRjaGluZyB1c2VyIGlucHV0IHRvIGFycmF5CisJYm91 bmRzLgorCSogdmFsb3BzLmMgKHZhbHVlX3NsaWNlKTogQWRkIGNhbGwgcGFyYW1ldGVyIHdpdGgg ZGVmYXVsdAorCXN0cmlkZSB2YWx1ZSBmb3IgY2FsbGluZyB2YWx1ZV9zbGljZV8xLgorCSogdmFs b3BzLmMgKHZhbHVlX3NsaWNlXzEpOiBBZGQgZnVuY3Rpb24gcGFyYW1ldGVyIGZvcgorCXN0cmlk ZSBsZW5ndGggaW4gdGhlIHJldHVybiBzdWJhcnJheS4gIENhbGN1bGF0ZSBhcnJheQorCWVsZW1l bnRzIGJhc2VkIG9uIHN0cmlkZSB2YWx1ZS4KKwkqIHZhbHVlLmg6IEFkZCBzdHJpZGUgcGFyYW1l dGVyIHRvIGRlY2xhcmF0aW9uIG9mCisJdmFsdWVfc2xpY2VfMS4KKworCisKK1NpZ25lZC1vZmYt Ynk6IENocmlzdG9waCBXZWlubWFubiA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgor LS0tCisgZ2RiL2V2YWwuYyAgIHwgIDExMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0KKyBnZGIvdmFsb3BzLmMgfCAgIDg1ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCisgZ2RiL3ZhbHVlLmggIHwgICAg MiArLQorIDMgZmlsZXMgY2hhbmdlZCwgMTUwIGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygt KQorCitkaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBiL2dkYi9ldmFsLmMKK2luZGV4IDE1YjJhZDQu LmI4Y2QwODAgMTAwNjQ0CistLS0gYS9nZGIvZXZhbC5jCisrKysgYi9nZGIvZXZhbC5jCitAQCAt NDM3LDggKzQzNyw4IEBAIHZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwg c3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKyAgICAgeworICAgICAgIHN0cnVjdCBzdWJzY3JpcHRf cmFuZ2UKKyAgICAgICB7CistICAgICAgICBlbnVtIGY5MF9yYW5nZV90eXBlIGY5MF9yYW5nZV90 eXBlOworLSAgICAgICAgTE9OR0VTVCBsb3csIGhpZ2gsIHN0cmlkZTsKKysJZW51bSBmOTBfcmFu Z2VfdHlwZSBmOTBfcmFuZ2VfdHlwZTsKKysJTE9OR0VTVCBsb3csIGhpZ2gsIHN0cmlkZTsKKyAg ICAgICB9CisgICAgICAgcmFuZ2U7CisgICAgICAgTE9OR0VTVCBudW1iZXI7CitAQCAtNDc1LDcg KzQ3NSw3IEBAIHZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwKKyAJICByYW5nZSA9ICZpbmRleC0+cmFuZ2U7CisgCisgCSAgKnBv cyArPSAzOworLQkgIHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9IGxvbmdlc3RfdG9faW50IChleHAt PmVsdHNbcGNdLmxvbmdjb25zdCk7CisrCSAgcmFuZ2UtPmY5MF9yYW5nZV90eXBlID0gZXhwLT5l bHRzW3BjXS5sb25nY29uc3Q7CisgCisgCSAgLyogSWYgYSBsb3dlciBib3VuZCB3YXMgcHJvdmlk ZWQgYnkgdGhlIHVzZXIsIHRoZSBiaXQgaGFzIGJlZW4KKyAJICAgICBzZXQgYW5kIHdlIGNhbiBh c3NpZ24gdGhlIHZhbHVlIGZyb20gdGhlIGVsdCBzdGFjay4gIFNhbWUgZm9yCitAQCAtNDg0LDYg KzQ4NCw3IEBAIHZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwKKyAJICAgICAgPT0gU1VCQVJSQVlfTE9XX0JPVU5EKQorIAkgICAg cmFuZ2UtPmxvdyA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBl eHAsCisgCQkJCQkJCSBwb3MsIG5vc2lkZSkpOworKworIAkgIGlmICgocmFuZ2UtPmY5MF9yYW5n ZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VORCkKKyAJICAgICAgPT0gU1VCQVJSQVlfSElHSF9C T1VORCkKKyAJICAgIHJhbmdlLT5oaWdoID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhw IChOVUxMX1RZUEUsIGV4cCwKK0BAIC00OTYsNiArNDk3LDEwIEBAIHZhbHVlX2Y5MF9zdWJhcnJh eSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKyAJICAvKiBB c3NpZ24gdGhlIGRlZmF1bHQgc3RyaWRlIHZhbHVlICcxJy4gICovCisgCSAgZWxzZQorIAkgICAg cmFuZ2UtPnN0cmlkZSA9IDE7CisrCisrCSAgLyogQ2hlY2sgdGhlIHByb3ZpZGVkIHN0cmlkZSB2 YWx1ZSBpcyBpbGxlZ2FsLCBha2EgJzAnLiAgKi8KKysJICBpZiAocmFuZ2UtPnN0cmlkZSA9PSAw KQorKwkgICAgZXJyb3IgKF8oIlN0cmlkZSBtdXN0IG5vdCBiZSAwIikpOworIAl9CisgICAgICAg LyogVXNlciBpbnB1dCBpcyBhbiBpbmRleC4gIEUuZy46ICJwIGFycnkoNSkiLiAgKi8KKyAgICAg ICBlbHNlCitAQCAtNTEyLDEwICs1MTcsOCBAQCB2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2 YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgCisgICAgIH0KKyAKKy0gIC8q IFRyYXZlcnNlIHRoZSBhcnJheSBmcm9tIHJpZ2h0IHRvIGxlZnQgYW5kIGV2YWx1YXRlIGVhY2gg Y29ycmVzcG9uZGluZworLSAgICAgdXNlciBpbnB1dC4gIFZBTFVFX1NVQlNDUklQVCBpcyBjYWxs ZWQgZm9yIGV2ZXJ5IGluZGV4LCB1bnRpbCBhIHJhbmdlCistICAgICBleHByZXNzaW9uIGlzIGV2 YWx1YXRlZC4gIEFmdGVyIGEgcmFuZ2UgZXhwcmVzc2lvbiBoYXMgYmVlbiBldmFsdWF0ZWQsCist ICAgICBldmVyeSBzdWJzZXF1ZW50IGV4cHJlc3Npb24gaXMgYWxzbyB0cmVhdGVkIGFzIGEgcmFu Z2UuICAqLworKyAgLyogVHJhdmVyc2UgdGhlIGFycmF5IGZyb20gcmlnaHQgdG8gbGVmdCBhbmQg c2V0IHRoZSBoaWdoIGFuZCBsb3cgYm91bmRzCisrICAgICBmb3IgbGF0ZXIgdXNlLiAgKi8KKyAg IGZvciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCisgICAgIHsKKyAgICAgICBzdHJ1Y3Qg c3Vic2NyaXB0X3N0b3JlICppbmRleCA9ICZzdWJzY3JpcHRfYXJyYXlbaV07CitAQCAtNTQ4LDYg KzU1MSw0OCBAQCB2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVj dCBleHByZXNzaW9uICpleHAsCisgCQl8fCByYW5nZS0+aGlnaCA+IFRZUEVfSElHSF9CT1VORCAo aW5kZXhfdHlwZSkpCisgCSAgICAgIGVycm9yIChfKCJwcm92aWRlZCBib3VuZChzKSBvdXRzaWRl IGFycmF5IGJvdW5kKHMpIikpOworIAorKwkgICAgLyogRm9yIGEgbmVnYXRpdmUgc3RyaWRlIHRo ZSBsb3dlciBib3VuZGFyeSBtdXN0IGJlIGxhcmdlciB0aGFuIHRoZQorKwkgICAgICAgdXBwZXIg Ym91bmRhcnkuCisrCSAgICAgICBGb3IgYSBwb3NpdGl2ZSBzdHJpZGUgdGhlIGxvd2VyIGJvdW5k YXJ5IG11c3QgYmUgc21hbGxlciB0aGFuIHRoZQorKwkgICAgICAgdXBwZXIgYm91bmRhcnkuICAq LworKwkgICAgaWYgKChyYW5nZS0+c3RyaWRlIDwgMCAmJiByYW5nZS0+bG93IDwgcmFuZ2UtPmhp Z2gpCisrCQl8fCAocmFuZ2UtPnN0cmlkZSA+IDAgJiYgcmFuZ2UtPmxvdyA+IHJhbmdlLT5oaWdo KSkKKysJICAgICAgZXJyb3IgKF8oIldyb25nIHZhbHVlIHByb3ZpZGVkIGZvciBzdHJpZGUgYW5k IGJvdW5kYXJpZXMiKSk7CisrCisrCSAgfQorKwkgIGJyZWFrOworKworKwljYXNlIFNVQlNDUklQ VF9JTkRFWDoKKysJICBicmVhazsKKysKKysJfQorKworKyAgICAgIGFycmF5X3R5cGUgPSBUWVBF X1RBUkdFVF9UWVBFIChhcnJheV90eXBlKTsKKysgICAgfQorKworKyAgLyogUmVzZXQgQVJSQVlf VFlQRSBiZWZvcmUgc2xpY2luZy4qLworKyAgYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZh bHVlX3R5cGUgKG5ld19hcnJheSkpOworKworKyAgLyogVHJhdmVyc2UgdGhlIGFycmF5IGZyb20g cmlnaHQgdG8gbGVmdCBhbmQgZXZhbHVhdGUgZWFjaCBjb3JyZXNwb25kaW5nCisrICAgICB1c2Vy IGlucHV0LiAgVkFMVUVfU1VCU0NSSVBUIGlzIGNhbGxlZCBmb3IgZXZlcnkgaW5kZXgsIHVudGls IGEgcmFuZ2UKKysgICAgIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLiAgQWZ0ZXIgYSByYW5nZSBl eHByZXNzaW9uIGhhcyBiZWVuIGV2YWx1YXRlZCwKKysgICAgIGV2ZXJ5IHN1YnNlcXVlbnQgZXhw cmVzc2lvbiBpcyBhbHNvIHRyZWF0ZWQgYXMgYSByYW5nZS4gICovCisrICBmb3IgKGkgPSBuYXJn cyAtIDE7IGkgPj0gMDsgaS0tKQorKyAgICB7CisrICAgICAgc3RydWN0IHN1YnNjcmlwdF9zdG9y ZSAqaW5kZXggPSAmc3Vic2NyaXB0X2FycmF5W2ldOworKyAgICAgIHN0cnVjdCB0eXBlICppbmRl eF90eXBlID0gVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKTsKKysKKysgICAgICBzd2l0Y2gg KGluZGV4LT5raW5kKQorKwl7CisrCWNhc2UgU1VCU0NSSVBUX1JBTkdFOgorKwkgIHsKKysKKysJ ICAgIC8qIFdoZW4gd2UgaGl0IHRoZSBmaXJzdCByYW5nZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIs IHdlIG11c3QKKysJICAgICAgIHRyZWF0IGFueSBzdWJzZXF1ZW50IHVzZXIgZW50cnkgYXMgYSBy YW5nZS4gIFdlIHNpbXBseQorKwkgICAgICAgaW5jcmVtZW50IERJTV9DT1VOVCB3aGljaCB0ZWxs cyB1cyBob3cgbWFueSB0aW1lcyB3ZSBhcmUKKysJICAgICAgIGNhbGxpbmcgVkFMVUVfU0xJQ0Vf MS4gICovCisrCSAgICBzdHJ1Y3Qgc3Vic2NyaXB0X3JhbmdlICpyYW5nZSA9ICZpbmRleC0+cmFu Z2U7CisrCisgCSAgICAvKiBESU1fQ09VTlQgY291bnRzIGV2ZXJ5IHVzZXIgYXJndW1lbnQgdGhh dCBpcyB0cmVhdGVkIGFzIGEgcmFuZ2UuCisgCSAgICAgICBUaGlzIGlzIG5lY2Vzc2FyeSBmb3Ig ZXhwcmVzc2lvbnMgbGlrZSAncHJpbnQgYXJyYXkoNywgODo5KS4KKyAJICAgICAgIEhlcmUgdGhl IGZpcnN0IGFyZ3VtZW50IGlzIGEgbGl0ZXJhbCwgYnV0IG11c3QgYmUgdHJlYXRlZCBhcyBhCitA QCAtNTU1LDEwICs2MDAsOSBAQCB2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJy YXksIHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgCSAgICBkaW1fY291bnQrKzsKKyAKKyAJICAg IG5ld19hcnJheQorLQkgICAgICA9IHZhbHVlX3NsaWNlXzEgKG5ld19hcnJheSwKKy0JCQkgICAg ICAgbG9uZ2VzdF90b19pbnQgKHJhbmdlLT5sb3cpLAorLQkJCSAgICAgICBsb25nZXN0X3RvX2lu dCAocmFuZ2UtPmhpZ2ggLSByYW5nZS0+bG93ICsgMSksCistCQkJICAgICAgIGRpbV9jb3VudCk7 CisrCSAgICAgID0gdmFsdWVfc2xpY2VfMSAobmV3X2FycmF5LCByYW5nZS0+bG93LAorKwkJCSAg ICAgICByYW5nZS0+aGlnaCAtIHJhbmdlLT5sb3cgKyAxLAorKwkJCSAgICAgICByYW5nZS0+c3Ry aWRlLCBkaW1fY291bnQpOworIAkgIH0KKyAJICBicmVhazsKKyAKK0BAIC01NzIsMjcgKzYxNiwz OCBAQCB2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHBy ZXNzaW9uICpleHAsCisgCSAgICAgICB0byBnZXQgdGhlIHZhbHVlIG9mZnNldCByaWdodC4gICov CisgCSAgICBpZiAoZGltX2NvdW50ID09IDApCisgCSAgICAgIG5ld19hcnJheQorLQkgICAgICAg ID0gdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChuZXdfYXJyYXksIGluZGV4LT5udW1iZXIsCisr CQk9IHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAobmV3X2FycmF5LCBpbmRleC0+bnVtYmVyLAor IAkJCQkJICAgIGY3N19nZXRfbG93ZXJib3VuZCAodmFsdWVfdHlwZQorIAkJCQkJCQkJICAobmV3 X2FycmF5KSkpOworIAkgICAgZWxzZQorIAkgICAgICB7CistCQkvKiBDaGVjayBmb3IgdmFsaWQg aW5kZXggaW5wdXQuICAqLworKwkJZGltX2NvdW50Kys7CisrCisrCQkvKiBXZSBtaWdodCBlbmQg dXAgaGVyZSwgYmVjYXVzZSB3ZSBoYXZlIHRvIHRyZWF0IHRoZSBwcm92aWRlZAorKwkJICAgaW5k ZXggbGlrZSBhIHJhbmdlLiBCdXQgbm93IFZBTFVFX1NVQlNDUklQVEVEX1JWQUxVRQorKwkJICAg Y2Fubm90IGRvIHRoZSByYW5nZSBjaGVja3MgZm9yIHVzLiBTbyB3ZSBoYXZlIHRvIG1ha2Ugc3Vy ZQorKwkJICAgb3Vyc2VsdmVzIHRoYXQgdGhlIHVzZXIgcHJvdmlkZWQgaW5kZXggaXMgaW5zaWRl IHRoZQorKwkJICAgYXJyYXkgYm91bmRzLiAgVGhyb3cgYW4gZXJyb3IgaWYgbm90LiAgKi8KKyAJ CWlmIChpbmRleC0+bnVtYmVyIDwgVFlQRV9MT1dfQk9VTkQgKGluZGV4X3R5cGUpCistCQkgICAg fHwgaW5kZXgtPm51bWJlciA+IFRZUEVfSElHSF9CT1VORCAoaW5kZXhfdHlwZSkpCistCQkgIGVy cm9yIChfKCJlcnJvciBubyBzdWNoIHZlY3RvciBlbGVtZW50IikpOworKwkJICAgICYmIGluZGV4 LT5udW1iZXIgPCBUWVBFX0hJR0hfQk9VTkQgKGluZGV4X3R5cGUpKQorKwkJICBlcnJvciAoXygi cHJvdmlkZWQgYm91bmQocykgb3V0c2lkZSBhcnJheSBib3VuZChzKSIpKTsKKysKKysJCWlmIChp bmRleC0+bnVtYmVyID4gVFlQRV9MT1dfQk9VTkQgKGluZGV4X3R5cGUpCisrCQkgICAgJiYgaW5k ZXgtPm51bWJlciA+IFRZUEVfSElHSF9CT1VORCAoaW5kZXhfdHlwZSkpCisrCQkgIGVycm9yIChf KCJwcm92aWRlZCBib3VuZChzKSBvdXRzaWRlIGFycmF5IGJvdW5kKHMpIikpOworIAorLQkJZGlt X2NvdW50Kys7CisgCQluZXdfYXJyYXkgPSB2YWx1ZV9zbGljZV8xIChuZXdfYXJyYXksCistCQkJ CQkgICBsb25nZXN0X3RvX2ludCAoaW5kZXgtPm51bWJlciksCistCQkJCQkgICAxLCAvKiBsZW5n dGggaXMgJzEnIGVsZW1lbnQgICovCisrCQkJCQkgICBpbmRleC0+bnVtYmVyLAorKwkJCQkJICAg MSwgLyogQ09VTlQgaXMgJzEnIGVsZW1lbnQgICovCisrCQkJCQkgICAxLCAvKiBTVFJJREUgc2V0 IHRvICcxJyAgKi8KKyAJCQkJCSAgIGRpbV9jb3VudCk7CisgCSAgICAgIH0KKyAKKyAJICB9Cisg CSAgYnJlYWs7CisgCX0KKy0gICAgfQorKyAgICAgIGFycmF5X3R5cGUgPSBUWVBFX1RBUkdFVF9U WVBFIChhcnJheV90eXBlKTsKKysgIH0KKyAKKyAgIC8qIFdpdGggRElNX0NPVU5UID4gMSB3ZSBj dXJyZW50bHkgaGF2ZSBhIG9uZSBkaW1lbnNpb25hbCBhcnJheSwgYnV0IGV4cGVjdAorICAgICAg YW4gYXJyYXkgb2YgYXJyYXlzLCBkZXBlbmRpbmcgb24gaG93IG1hbnkgcmFuZ2VzIGhhdmUgYmVl biBwcm92aWRlZCBieQorQEAgLTYxNyw3ICs2NzIsOSBAQCB2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0 cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgCSB0aGUgb3V0cHV0 IGFycmF5LiAgU28gd2UgdHJhdmVyc2UgdGhlIFNVQlNDUklQVF9BUlJBWSBhZ2FpbiwgbG9va2lu ZworIAkgZm9yIGEgcmFuZ2UgZW50cnkuICBXaGVuIHdlIGZpbmQgb25lLCB3ZSB1c2UgdGhlIHJh bmdlIGluZm8gdG8gY3JlYXRlCisgCSBhbiBhZGRpdGlvbmFsIHJhbmdlX3R5cGUgdG8gc2V0IHRo ZSBjb3JyZWN0IGJvdW5kcyBhbmQgZGltZW5zaW9ucyBmb3IKKy0JIHRoZSBvdXRwdXQgYXJyYXku ICAqLworKwkgdGhlIG91dHB1dCBhcnJheS4gIEluIGFkZGl0aW9uLCB3ZSBtYXkgaGF2ZSBhIHN0 cmlkZSB2YWx1ZSB0aGF0IGlzIG5vdAorKwkgJzEnLCBmb3JjaW5nIHVzIHRvIGFkanVzdCB0aGUg bnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgcmFuZ2UsIGFjY29yZGluZworKwkgdG8gdGhlIHN0cmlk ZSB2YWx1ZS4gICovCisgICAgICAgZm9yIChpID0gMDsgaSA8IG5hcmdzOyBpKyspCisgCXsKKyAJ ICBzdHJ1Y3Qgc3Vic2NyaXB0X3N0b3JlICppbmRleCA9ICZzdWJzY3JpcHRfYXJyYXlbaV07CitA QCAtNjI1LDEyICs2ODIsMTkgQEAgdmFsdWVfZjkwX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUgKmFy cmF5LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorIAkgIGlmIChpbmRleC0+a2luZCA9PSBTVUJT Q1JJUFRfUkFOR0UpCisgCSAgICB7CisgCSAgICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLCAq aW50ZXJpbV9hcnJheV90eXBlOworKwkgICAgICBpbnQgbmV3X2xlbmd0aDsKKysKKysJICAgICAg LyogVGhlIGxlbmd0aCBvZiBhIHN1Yi1kaW1lbnNpb24gd2l0aCBhbGwgZWxlbWVudHMgYmV0d2Vl biB0aGUKKysJCSBib3VuZHMgcGx1cyB0aGUgc3RhcnQgZWxlbWVudCBpdHNlbGYuICBJdCBtYXkg YmUgbW9kaWZpZWQgYnkKKysJCSBhIHVzZXIgcHJvdmlkZWQgc3RyaWRlIHZhbHVlLiAgKi8KKysJ ICAgICAgbmV3X2xlbmd0aCA9IGluZGV4LT5yYW5nZS5oaWdoIC0gaW5kZXgtPnJhbmdlLmxvdzsK KysJICAgICAgbmV3X2xlbmd0aCAvPSBpbmRleC0+cmFuZ2Uuc3RyaWRlOworIAorIAkgICAgICBy YW5nZV90eXBlCisgCQk9IGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwKKy0JCQkJICAg ICB0ZW1wX3R5cGUsCistCQkJCSAgICAgMSwKKy0JCQkJICAgICBpbmRleC0+cmFuZ2UuaGlnaCAt IGluZGV4LT5yYW5nZS5sb3cgKyAxKTsKKysJCQkJCSAgICB0ZW1wX3R5cGUsCisrCQkJCQkgICAg aW5kZXgtPnJhbmdlLmxvdywKKysJCQkJCSAgICBpbmRleC0+cmFuZ2UubG93ICsgbmV3X2xlbmd0 aCk7CisgCisgCSAgICAgIGludGVyaW1fYXJyYXlfdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChO VUxMLAorIAkJCQkJCSAgICAgIHRlbXBfdHlwZSwKK2RpZmYgLS1naXQgYS9nZGIvdmFsb3BzLmMg Yi9nZGIvdmFsb3BzLmMKK2luZGV4IGY4ZDIzZmIuLjZjOTExMmYgMTAwNjQ0CistLS0gYS9nZGIv dmFsb3BzLmMKKysrKyBiL2dkYi92YWxvcHMuYworQEAgLTM3NTksMTAgKzM3NTksMTMgQEAgdmFs dWVfb2ZfdGhpc19zaWxlbnQgKGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5nKQorIHN0 cnVjdCB2YWx1ZSAqCisgdmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3di b3VuZCwgaW50IGxlbmd0aCkKKyB7CistICAvKiBQYXNzIHVuYWx0ZXJlZCBhcmd1bWVudHMgdG8g VkFMVUVfU0xJQ0VfMSwgcGx1cyBhIENBTExfQ09VTlQgb2YgJzEnIGFzIHdlCistICAgICBhcmUg b25seSBjb25zaWRlcmluZyB0aGUgaGlnaGVzdCBkaW1lbnNpb24sIG9yIHdlIGFyZSB3b3JraW5n IG9uIGEgb25lCistICAgICBkaW1lbnNpb25hbCBhcnJheS4gIFNvIHdlIGNhbGwgVkFMVUVfU0xJ Q0VfMSBleGFjdGx5IG9uY2UuICAqLworLSAgcmV0dXJuIHZhbHVlX3NsaWNlXzEgKGFycmF5LCBs b3dib3VuZCwgbGVuZ3RoLCAxKTsKKysgIC8qIFBhc3MgdW5hbHRlcmVkIGFyZ3VtZW50cyB0byBW QUxVRV9TTElDRV8xLCBwbHVzIGEgZGVmYXVsdCBzdHJpZGUKKysgICAgIHZhbHVlIG9mICcxJywg d2hpY2ggcmV0dXJucyBldmVyeSBlbGVtZW50IGJldHdlZW4gTE9XQk9VTkQgYW5kCisrICAgICAo TE9XQk9VTkQgKyBMRU5HVEgpLiAgV2UgYWxzbyBwcm92aWRlIGEgZGVmYXVsdCBDQUxMX0NPVU5U IG9mICcxJworKyAgICAgYXMgd2UgYXJlIG9ubHkgY29uc2lkZXJpbmcgdGhlIGhpZ2hlc3QgZGlt ZW5zaW9uLCBvciB3ZSBhcmUKKysgICAgIHdvcmtpbmcgb24gYSBvbmUgZGltZW5zaW9uYWwgYXJy YXkuICBTbyB3ZSBjYWxsIFZBTFVFX1NMSUNFXzEKKysgICAgIGV4YWN0bHkgb25jZS4gICovCisr ICByZXR1cm4gdmFsdWVfc2xpY2VfMSAoYXJyYXksIGxvd2JvdW5kLCBsZW5ndGgsIDEsIDEpOwor IH0KKyAKKyAvKiBDQUxMX0NPVU5UIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBjYWxs aW5nIHRoZSBmdW5jdGlvbiBvbmNlLCBlLmcuCitAQCAtMzc3Niw3ICszNzc5LDggQEAgdmFsdWVf c2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0aCkKKyAg ICByYW5nZXMgaW4gdGhlIGNhbGxpbmcgZnVuY3Rpb24uICAqLworIAorIHN0cnVjdCB2YWx1ZSAq CistdmFsdWVfc2xpY2VfMSAoc3RydWN0IHZhbHVlICphcnJheSwgaW50IGxvd2JvdW5kLCBpbnQg bGVuZ3RoLCBpbnQgY2FsbF9jb3VudCkKKyt2YWx1ZV9zbGljZV8xIChzdHJ1Y3QgdmFsdWUgKmFy cmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgsCisrCSAgICAgICBpbnQgc3RyaWRlX2xlbmd0 aCwgaW50IGNhbGxfY291bnQpCisgeworICAgc3RydWN0IHR5cGUgKnNsaWNlX3JhbmdlX3R5cGUs ICpzbGljZV90eXBlLCAqcmFuZ2VfdHlwZTsKKyAgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0g Y2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKK0BAIC0zNzk5LDE0ICszODAzLDI0 IEBAIHZhbHVlX3NsaWNlXzEgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50 IGxlbmd0aCwgaW50IGNhbGxfY291bnQpCisgICAgICBhdHRyaWJ1dGVzIG9mIHRoZSB1bmRlcmx5 aW5nIHR5cGUuICAqLworICAgaWYgKGNhbGxfY291bnQgPiAxKQorICAgICB7CisrICAgICAgYXJ5 X2xvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5EIChUWVBFX0lOREVYX1RZUEUgKGVsdF90eXBlKSk7 CisrICAgICAgYXJ5X2hpZ2hfYm91bmQgPSBUWVBFX0hJR0hfQk9VTkQgKFRZUEVfSU5ERVhfVFlQ RSAoZWx0X3R5cGUpKTsKKyAgICAgICBlbHRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFS R0VUX1RZUEUgKGVsdF90eXBlKSk7CisgICAgICAgcm93X2NvdW50ID0gVFlQRV9MRU5HVEggKGFy cmF5X3R5cGUpCisgCQkgICAgLyBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlf dHlwZSkpOworICAgICB9CisgCistICBlbGVtX2NvdW50ID0gbGVuZ3RoOworKyAgLyogV2l0aCBh IHN0cmlkZSBvZiAnMScsIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgcGVyIHJlc3VsdCByb3cgaXMg ZXF1YWwgdG8KKysgICAgIHRoZSBMRU5HVEggb2YgdGhlIHN1YmFycmF5LiAgV2l0aCBub24tZGVm YXVsdCBzdHJpZGUgdmFsdWVzLCB3ZSBza2lwCisrICAgICBlbGVtZW50cywgYnV0IGhhdmUgdG8g YWRkIHRoZSBzdGFydCBlbGVtZW50IHRvIHRoZSB0b3RhbCBudW1iZXIgb2YKKysgICAgIGVsZW1l bnRzIHBlciByb3cuICAqLworKyAgaWYgKHN0cmlkZV9sZW5ndGggPT0gMSkKKysgICAgZWxlbV9j b3VudCA9IGxlbmd0aDsKKysgIGVsc2UKKysgICAgZWxlbV9jb3VudCA9ICgobGVuZ3RoIC0gMSkg LyBzdHJpZGVfbGVuZ3RoKSArIDE7CisrCisgICBlbHRfc2l6ZSA9IFRZUEVfTEVOR1RIIChlbHRf dHlwZSk7CistICBlbHRfb2ZmcyA9IGxvbmdlc3RfdG9faW50IChsb3dib3VuZCAtIGFyeV9sb3df Ym91bmQpOworKyAgZWx0X29mZnMgPSBsb3dib3VuZCAtIGFyeV9sb3dfYm91bmQ7CisgICBlbHRf c3RyaWRlID0gVFlQRV9MRU5HVEggKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlwZSkpOworIAor ICAgZWx0X29mZnMgKj0gZWx0X3NpemU7CitAQCAtMzgzNyw3ICszODUxLDcgQEAgdmFsdWVfc2xp Y2VfMSAoc3RydWN0IHZhbHVlICphcnJheSwgaW50IGxvd2JvdW5kLCBpbnQgbGVuZ3RoLCBpbnQg Y2FsbF9jb3VudCkKKyAgIGVsc2UKKyAgICAgeworICAgICAgIHJhbmdlX3R5cGUgPSBUWVBFX0lO REVYX1RZUEUgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKKy0gICAgICBzbGljZV9y YW5nZV9zaXplID0gKGFyeV9sb3dfYm91bmQgKyByb3dfY291bnQgLSAxKSAqIChlbGVtX2NvdW50 KTsKKysgICAgICBzbGljZV9yYW5nZV9zaXplID0gYXJ5X2xvd19ib3VuZCArIChyb3dfY291bnQg KiBlbGVtX2NvdW50KSAtIDE7CisgICAgICAgYXJ5X2xvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5E IChyYW5nZV90eXBlKTsKKyAgICAgfQorIAorQEAgLTM4NDksOCArMzg2Myw5IEBAIHZhbHVlX3Ns aWNlXzEgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0aCwgaW50 IGNhbGxfY291bnQpCisgICB7CisgICAgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGU7CisgCist ICAgIC8qIFdoZW4gQ0FMTF9DT1VOVCBlcXVhbHMgMSB3ZSBjYW4gdXNlIHRoZSBsZWdhY3kgY29k ZSBmb3Igc3ViYXJyYXlzLiAgKi8KKy0gICAgaWYgKGNhbGxfY291bnQgPT0gMSkKKysgICAgLyog V2hlbiBib3RoIENBTExfQ09VTlQgYW5kIFNUUklERV9MRU5HVEggZXF1YWwgMSwgd2UgY2FuIHVz ZSB0aGUgbGVnYWN5CisrICAgICAgIGNvZGUgZm9yIHN1YmFycmF5cy4gICovCisrICAgIGlmIChj YWxsX2NvdW50ID09IDEgJiYgc3RyaWRlX2xlbmd0aCA9PSAxKQorICAgICAgIHsKKyAJZWxlbWVu dF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7CisgCitAQCAtMzg3MSwyOSAr Mzg4Niw1MyBAQCB2YWx1ZV9zbGljZV8xIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG93Ym91 bmQsIGludCBsZW5ndGgsIGludCBjYWxsX2NvdW50KQorIAkgIH0KKyAKKyAgICAgICB9CistICAg IC8qIFdoZW4gQ0FMTF9DT1VOVCBpcyBsYXJnZXIgdGhhbiAxIHdlIGFyZSB3b3JraW5nIG9uIGEg cmFuZ2Ugb2YgcmFuZ2VzLgorLSAgICAgICBTbyB3ZSBjb3B5IHRoZSByZWxldmFudCBlbGVtZW50 cyBpbnRvIHRoZSBuZXcgYXJyYXkgd2UgcmV0dXJuLiAgKi8KKysgICAgLyogV2l0aCBhIENBTExf Q09VTlQgb3IgU1RSSURFX0xFTkdUSCBhcmUgZ3JlYXRlciB0aGFuIDEgd2UgYXJlIHdvcmtpbmcK KysgICAgICAgb24gYSByYW5nZSBvZiByYW5nZXMuICBTbyB3ZSBjb3B5IHRoZSByZWxldmFudCBl bGVtZW50cyBpbnRvIHRoZQorKyAgICAgICBuZXcgYXJyYXkgd2UgcmV0dXJuLiAgKi8KKyAgICAg ZWxzZQorICAgICAgIHsKKysJaW50IGosIG9mZnNfc3RvcmUgPSBlbHRfb2ZmczsKKyAJTE9OR0VT VCBkc3Rfb2Zmc2V0ID0gMDsKKyAJTE9OR0VTVCBzcmNfcm93X2xlbmd0aCA9IFRZUEVfTEVOR1RI IChUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKSk7CisgCistCWVsZW1lbnRfdHlwZSA9IFRZ UEVfVEFSR0VUX1RZUEUgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKKysJaWYgKGNh bGxfY291bnQgPT0gMSkKKysJICB7CisrCSAgICAvKiBXaGVuIENBTExfQ09VTlQgaXMgZXF1YWwg dG8gMSB3ZSBhcmUgd29ya2luZyBvbiB0aGUgY3VycmVudCByYW5nZQorKwkgICAgICAgYW5kIHVz ZSB0aGVzZSBlbGVtZW50cyBkaXJlY3RseS4gICovCisrCSAgICBlbGVtZW50X3R5cGUgPSBUWVBF X1RBUkdFVF9UWVBFIChhcnJheV90eXBlKTsKKysJICB9CisrCWVsc2UKKysJICB7CisrCSAgICAv KiBXb3JraW5nIG9uIGFuIGFycmF5IG9mIGFycmF5cywgdGhlIHR5cGUgb2YgdGhlIGVsZW1lbnRz IGlzIHRoZSB0eXBlCisrCSAgICAgICBvZiB0aGUgc3ViYXJyYXlzJyB0eXBlLiAgKi8KKysJICAg IGVsZW1lbnRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5 X3R5cGUpKTsKKysJICB9CisrCisgCXNsaWNlX3R5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVM TCwgZWxlbWVudF90eXBlLCBzbGljZV9yYW5nZV90eXBlKTsKKyAKKy0JVFlQRV9DT0RFIChzbGlj ZV90eXBlKSA9IFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOworKwkv KiBJZiB3ZSBoYXZlIGEgb25lIGRpbWVuc2lvbmFsIGFycmF5LCB3ZSBjb3B5IGl0cyBUWVBFX0NP REUuICBGb3IgYQorKwkgICBtdWx0aSBkaW1lbnNpb25hbCBhcnJheSB3ZSBjb3B5IHRoZSBlbWJl ZGRlZCB0eXBlJ3MgVFlQRV9DT0RFLiAgKi8KKysJaWYgKGNhbGxfY291bnQgPT0gMSkKKysJICBU WVBFX0NPREUgKHNsaWNlX3R5cGUpID0gVFlQRV9DT0RFIChhcnJheV90eXBlKTsKKysJZWxzZQor KwkgIFRZUEVfQ09ERSAoc2xpY2VfdHlwZSkgPSBUWVBFX0NPREUgKFRZUEVfVEFSR0VUX1RZUEUg KGFycmF5X3R5cGUpKTsKKyAKKyAJdiA9IGFsbG9jYXRlX3ZhbHVlIChzbGljZV90eXBlKTsKKy0J Zm9yIChpID0gMDsgaSA8IGxvbmdlc3RfdG9faW50IChyb3dfY291bnQpOyBpKyspCisrCisrCS8q IEl0ZXJhdGUgdGhyb3VnaCB0aGUgcm93cyBvZiB0aGUgb3V0ZXIgYXJyYXkgYW5kIHNldCB0aGUg bmV3IG9mZnNldAorKwkgICBmb3IgZWFjaCByb3cuICAqLworKwlmb3IgKGkgPSAwOyBpIDwgcm93 X2NvdW50OyBpKyspCisgCSAgeworLQkgICAgLyogRmV0Y2hlcyB0aGUgY29udGVudHMgb2YgQVJS QVkgYW5kIGNvcGllcyB0aGVtIGludG8gVi4gICovCistCSAgICB2YWx1ZV9jb250ZW50c19jb3B5 ICh2LAorLQkJCQkgZHN0X29mZnNldCwKKy0JCQkJIGFycmF5LAorLQkJCQkgZWx0X29mZnMsCist CQkJCSBlbHRfc2l6ZSAqIGVsZW1fY291bnQpOworLQkgICAgZWx0X29mZnMgKz0gc3JjX3Jvd19s ZW5ndGg7CistCSAgICBkc3Rfb2Zmc2V0ICs9IGVsdF9zaXplICogZWxlbV9jb3VudDsKKysJICAg IGVsdF9vZmZzID0gb2Zmc19zdG9yZSArIGkgKiBzcmNfcm93X2xlbmd0aDsKKysKKysJICAgIC8q IEl0ZXJhdGUgdGhyb3VnaCB0aGUgZWxlbWVudHMgaW4gZWFjaCByb3cgdG8gY29weSBvbmx5IHRo b3NlLiAgKi8KKysJICAgIGZvciAoaiA9IDE7IGogPD0gZWxlbV9jb3VudDsgaisrKQorKwkgICAg ICB7CisrCQkvKiBGZXRjaGVzIHRoZSBjb250ZW50cyBvZiBBUlJBWSBhbmQgY29waWVzIHRoZW0g aW50byBWLiAgKi8KKysJCXZhbHVlX2NvbnRlbnRzX2NvcHkgKHYsIGRzdF9vZmZzZXQsIGFycmF5 LCBlbHRfb2ZmcywgZWx0X3NpemUpOworKwkJZWx0X29mZnMgKz0gZWx0X3NpemUgKiBzdHJpZGVf bGVuZ3RoOworKwkJZHN0X29mZnNldCArPSBlbHRfc2l6ZTsKKysJICAgICAgfQorIAkgIH0KKyAg ICAgICB9CisgCitkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9nZGIvdmFsdWUuaAoraW5kZXgg MDU5MzljNC4uZDY4NzQ2OCAxMDA2NDQKKy0tLSBhL2dkYi92YWx1ZS5oCisrKysgYi9nZGIvdmFs dWUuaAorQEAgLTEwNTYsNyArMTA1Niw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhcnlpbmdf dG9fc2xpY2UgKHN0cnVjdCB2YWx1ZSAqKTsKKyAKKyBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1 ZV9zbGljZSAoc3RydWN0IHZhbHVlICosIGludCwgaW50KTsKKyAKKy1leHRlcm4gc3RydWN0IHZh bHVlICp2YWx1ZV9zbGljZV8xIChzdHJ1Y3QgdmFsdWUgKiwgaW50LCBpbnQsIGludCk7CisrZXh0 ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfc2xpY2VfMSAoc3RydWN0IHZhbHVlICosIGludCwgaW50 LCBpbnQsIGludCk7CisgCisgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfbGl0ZXJhbF9jb21w bGV4IChzdHJ1Y3QgdmFsdWUgKiwgc3RydWN0IHZhbHVlICosCisgCQkJCQkgICAgc3RydWN0IHR5 cGUgKik7CistLSAKKzEuNy4wLjcKCmRpZmYgLS1naXQgYS9nZGItZm9ydHJhbi1zdHJpZGUtaW50 ZWwtNm9mNi1ub2tmYWlsLnBhdGNoIGIvZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTZvZjYtbm9r ZmFpbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjYxZGUxCi0t LSAvZGV2L251bGwKKysrIGIvZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTZvZjYtbm9rZmFpbC5w YXRjaApAQCAtMCwwICsxLDM2IEBACistLS0gZ2RiLTcuMTAuNTAuMjAxNjAxMDYvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5leHAtb3JpZwkyMDE2LTAxLTA4IDIyOjQ1OjQ0Ljk1 Njg0MjU1MyArMDEwMAorKysrIGdkYi03LjEwLjUwLjIwMTYwMTA2L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3VicmFuZ2UuZXhwCTIwMTYtMDEtMDggMjM6MjY6MDUuMDc4NTU0NjI5ICswMTAw CitAQCAtMzksMjcgKzM5LDE2IEBAIGZvcmVhY2ggdmFyIHthIGFsbG9jIHB0cn0geworICAgICBz ZXQgb2xkX3ByZWZpeCAkcGZfcHJlZml4CisgICAgIGxhcHBlbmQgcGZfcHJlZml4ICIkdmFyOiIK KyAKKy0gICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5IgorICAgICBn ZGJfdGVzdCAicCAkdmFyICgyLCAyOjMpIiB7ID0gXCgyMiwgMzJcKX0KKy0gICAgc2V0dXBfa2Zh aWwgIiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5IgorICAgICBnZGJfdGVzdCAicCAkdmFyICgy OjMsIDMpIiB7ID0gXCgzMiwgMzNcKX0KKy0gICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVn cmVzc2lvbi85OTk5IgorICAgICBnZGJfdGVzdCAicCAkdmFyICgxLCAyOikiIHsgPSBcKDIxLCAz MVwpfQorLSAgICBzZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5OTkiCisgICAg IGdkYl90ZXN0ICJwICR2YXIgKDIsIDoyKSIgeyA9IFwoMTIsIDIyXCl9CistICAgIHNldHVwX2tm YWlsICIqLSotKiIgInZsYXJlZ3Jlc3Npb24vOTk5OSIKKyAgICAgZ2RiX3Rlc3QgInAgJHZhciAo MywgMjoyKSIgeyA9IFwoMjNcKX0KKy0gICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVz c2lvbi85OTk5IgorICAgICBnZGJfdGVzdCAicHR5cGUgJHZhciAoMywgMjoyKSIgIiA9ICRpbnQ0 IFxcKDI6MlxcKSIKKy0gICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5 IgorICAgICBnZGJfdGVzdCAicCAkdmFyICg0LCA6KSIgeyA9IFwoMTQsIDI0LCAzNFwpfQorLSAg ICBzZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5OTkiCisgICAgIGdkYl90ZXN0 ICJwICR2YXIgKDosIDopIiB7ID0gXChcKCAqMTEsIDEyLCAxMywgMTRcKSBcKCAqMjEsIDIyLCAy MywgMjRcKSBcKCAqMzEsIDMyLCAzMywgMzRcKSAqXCl9CistICAgIHNldHVwX2tmYWlsICIqLSot KiIgInZsYXJlZ3Jlc3Npb24vOTk5OSIKKyAgICAgZ2RiX3Rlc3QgInB0eXBlICR2YXIgKDosIDop IiAiID0gJGludDQgXFwoNCwzXFwpIgorLSAgICBzZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdy ZXNzaW9uLzk5OTkiCisgICAgIGdkYl90ZXN0ICJwICR2YXIgKDopIiAiV3JvbmcgbnVtYmVyIG9m IHN1YnNjcmlwdHMiCistICAgIHNldHVwX2tmYWlsICIqLSotKiIgInZsYXJlZ3Jlc3Npb24vOTk5 OSIKKyAgICAgZ2RiX3Rlc3QgInAgJHZhciAoOiwgOiwgOikiICJXcm9uZyBudW1iZXIgb2Ygc3Vi c2NyaXB0cyIKKyAKKyAgICAgc2V0IHBmX3ByZWZpeCAkb2xkX3ByZWZpeAorQEAgLTY4LDUgKzU3 LDQgQEAgZm9yZWFjaCB2YXIge2EgYWxsb2MgcHRyfSB7CisgZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtz ZXQgJGE9YX0KKyBkZWxldGVfYnJlYWtwb2ludHMKKyBnZGJfdW5sb2FkCistc2V0dXBfa2ZhaWwg IiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5IgorIGdkYl90ZXN0IHtwICRhICgzLCAyOjIpfSB7 ID0gXCgyM1wpfQoKZGlmZiAtLWdpdCBhL2dkYi1mb3J0cmFuLXN0cmlkZS1pbnRlbC02b2Y2LXRl c3RjYXNlZml4LnBhdGNoIGIvZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTZvZjYtdGVzdGNhc2Vm aXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY3OTIwYgotLS0g L2Rldi9udWxsCisrKyBiL2dkYi1mb3J0cmFuLXN0cmlkZS1pbnRlbC02b2Y2LXRlc3RjYXNlZml4 LnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDE2LTAxL21zZzAwMTM1Lmh0bWwKK1N1YmplY3Q6IFJlOiBbUEFUQ0ggMC82XSBmb3J0 cmFuOiBtdWx0aS1kaW1lbnNpb25hbCBzdWJhcnJheXMgd2l0aCBzdHJpZGVzCisKKworLS12a29n cU9mMnNIVjdWblBkCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkK K0NvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZQorCitPbiBUaHUsIDAzIERlYyAyMDE1IDIxOjUx OjE5ICswMTAwLCBKYW4gS3JhdG9jaHZpbCB3cm90ZToKKz4gSnVzdCBJIHNlZSAtIHJlcHJvZHVj aWJsZSB3aXRoIEZTRiBHREIgdHJ1bmsgLSBvbmUgbmV3OgorPiAJRkFJTDogZ2RiLmZvcnRyYW4v c3RhdGljLWFycmF5cy5leHA6IHByaW50IGFyMyg6Miw6Miw6MikKKz4gaGFwcGVuaW5nIG9uIHg4 Nl82NCBpbiAtbTMyIHRhcmdldCBtb2RlIGFuZCBvbiBpNjg2IG5hdGl2ZSBob3N0LgorPiBJdCBQ QVNTZXMgaW4gdGhlIG1vc3QgY29tbW9uIGNhc2Ugb2YgbmF0aXZlIHg4Nl82NC4gIFRlc3RlZCBv biBGZWRvcmEgMjMuCis+ICBwcmludCBhcjMoOjIsOjIsOjIpXk0KKz4gLSQ1MiA9ICgoICggMTEx LCAyMTEpICggMTIxLCAyMjEpICkgKCAoIDExMiwgMjEyKSAoIDEyMiwgMjIyKSApICleTQorPiAt KGdkYikgUEFTUzogZ2RiLmZvcnRyYW4vc3RhdGljLWFycmF5cy5leHA6IHByaW50IGFyMyg6Miw6 Miw6MikKKz4gKyQ1MiA9ICgoICggMTIyMSwgMjExKSAoIDEyMSwgMjIxKSApICggKCAxMTIsIDIx MikgKCAxMjIsIDIyMikgKSApXk0KKz4gKyhnZGIpIEZBSUw6IGdkYi5mb3J0cmFuL3N0YXRpYy1h cnJheXMuZXhwOiBwcmludCBhcjMoOjIsOjIsOjIpCisKK1RoYXQgd2FzIGVhc2llciB0aGFuIEkg ZXhwZWN0ZWQ6CisKK2dmb3J0cmFuIC1mY2hlY2s9Ym91bmRzCistPgorQXQgbGluZSA0NCBvZiBm aWxlIGdkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZjkwCitGb3J0cmFuIHJ1bnRpbWUgZXJyb3I6 IEluZGV4ICcxMScgb2YgZGltZW5zaW9uIDEgb2YgYXJyYXkgJ2FyNCcgYWJvdmUgdXBwZXIgYm91 bmQgb2YgMTAKKworVGhlcmUgaXM6CisJICBpbnRlZ2VyLCBkaW1lbnNpb24oMTAsLTc6MywgLTE1 Oi01KSA6OiBhcjQKKysKKwkgIGRvIGkgPSAxLCAxMSwgMQorCisKK0phbgorCistLXZrb2dxT2Yy c0hWN1ZuUGQKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQorQ29u dGVudC1EaXNwb3NpdGlvbjogaW5saW5lOyBmaWxlbmFtZT0xCisKKy0tLSBnZGItNy4xMC41MC4y MDE2MDEwNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZjkwLW9yaWcJ MjAxNi0wMS0wOCAxOToxOToxOC40MjE4MjgxOTYgKzAxMDAKKysrKyBnZGItNy4xMC41MC4yMDE2 MDEwNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZjkwCTIwMTYtMDEt MDggMTk6NDE6MDkuNzc4MTQyNjgzICswMTAwCitAQCAtMzgsNyArMzgsNyBAQCBzdWJyb3V0aW5l IHN1YgorICAgICBlbmQgZG8KKyAgIGVuZCBkbworIAorLSAgZG8gaSA9IDEsIDExLCAxCisrICBk byBpID0gMSwgMTAsIDEKKyAgICAgZG8gaiA9IC03LCAzLCAxCisgICAgICAgZG8gayA9IC0xNSwg LTUsIDEKKyAgICAgICAgIGFyNChpLGosaykgPSBpKjEwMCArIChqKzgpKjEwICsgKGsrMTYpCisK Ky0tdmtvZ3FPZjJzSFY3Vm5QZC0tCisKCmRpZmYgLS1naXQgYS9nZGItZm9ydHJhbi1zdHJpZGUt aW50ZWwtNm9mNi5wYXRjaCBiL2dkYi1mb3J0cmFuLXN0cmlkZS1pbnRlbC02b2Y2LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhNzdjMTkKLS0tIC9kZXYvbnVsbAor KysgYi9nZGItZm9ydHJhbi1zdHJpZGUtaW50ZWwtNm9mNi5wYXRjaApAQCAtMCwwICsxLDQ3NCBA QAorRnJvbTogQ2hyaXN0b3BoIFdlaW5tYW5uIDxjaHJpc3RvcGgudC53ZWlubWFubkBpbnRlbC5j b20+CitbUEFUQ0ggNi82XSBmb3J0cmFuOiB0ZXN0IGNhc2VzIGZvciBzdWJhcnJheSBzdHJpZGVz IGFuZCBzbGljZXMKK2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxNS0x Mi9tc2cwMDAxMi5odG1sCitNZXNzYWdlLUlkOiA8MTQ0ODk3NjA3NS0xMTQ1Ni03LWdpdC1zZW5k LWVtYWlsLWNocmlzdG9waC50LndlaW5tYW5uQGludGVsLmNvbT4KKworQWRkIHRlc3QgY2FzZXMg Zm9yIHN1YmFycmF5IGNyZWF0aW9uIHdpdGggcmFuZ2UsIGxpdGVyYWwgYW5kCitzdHJpZGUgdmFs dWUgcGVybXV0YXRpb25zIGZvciBvbmUsIHR3bywgYW5kIHRocmVlIGRpbWVuc2lvbmFsCithcnJh eXMuCisKKzIwMTMtMTItMDQgIENocmlzdG9waCBXZWlubWFubiAgPGNocmlzdG9waC50LndlaW5t YW5uQGludGVsLmNvbT4KKwordGVzdHN1aXRlL2dkYi5mb3J0cmFuLworCSogc3RhdGljLWFycmF5 cy5leHA6IE5ldyB0ZXN0LgorCSogc3RhdGljLWFycmF5cy5mOTA6IE5ldyBmaWxlLgorCisKKwor U2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoIFdlaW5tYW5uIDxjaHJpc3RvcGgudC53ZWlubWFubkBp bnRlbC5jb20+CistLS0KKyBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMu ZXhwIHwgIDM4MCArKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBnZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZjkwIHwgICA1NSArKysrCisgMiBmaWxlcyBjaGFuZ2Vk LCA0MzUgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQg Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdGF0aWMtYXJyYXlzLmV4cAorIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZjkwCisKK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdGF0aWMtYXJyYXlzLmV4cAorbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjA3N2Y2ZmIKKy0tLSAvZGV2L251bGwKKysrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGljLWFycmF5cy5leHAKK0BAIC0wLDAgKzEsMzgw IEBACisrIyBDb3B5cmlnaHQgMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysj CisrIyBDb250cmlidXRlZCBieSBJbnRlbCBDb3JwLiA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50 ZWwuY29tPgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRf dGVzdGZpbGUgc3RhdGljLWFycmF5cy5mOTAKKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5n ICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBmOTB9XSB9IHsKKysgICAg cmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKKysgICAgcGVycm9y ICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCisrICAgIGNvbnRpbnVlCisrfQor KworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJCUDEiXQorK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJCUDEiICIuKkJQMS4qIgorKworKyMgVGVzdHMgc3ViYXJyYXlz IG9mIG9uZSBkaW1lbnNpb25hbCBhcnJheXMgd2l0aCBzdWJyYW5nZSB2YXJpYXRpb25zCisrZ2Ri X3Rlc3QgInByaW50IGFyMSIgIlxcJFxbMC05XF0rID0gXFwoMSwgMiwgMywgNCwgNSwgNiwgNywg OCwgOVxcKSIgXAorKwkJInByaW50IGFyMS4iCisrZ2RiX3Rlc3QgInByaW50IGFyMVwoNDo3XCki ICJcXCRcWzAtOVxdKyA9IFxcKDQsIDUsIDYsIDdcXCkiIFwKKysJCSJwcmludCBhcjFcKDQ6N1wp IgorK2dkYl90ZXN0ICJwcmludCBhcjFcKDg6XCkiICJcXCRcWzAtOVxdKyA9IFxcKDgsIDlcXCku KiIgXAorKwkJInByaW50IGFyMVwoODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIxXCg6M1wpIiAi XFwkXFswLTlcXSsgPSBcXCgxLCAyLCAzXFwpLioiIFwKKysJCSJwcmludCBhcjFcKDozXCkiCisr Z2RiX3Rlc3QgInByaW50IGFyMVwoOlwpIiAiXFwkXFswLTlcXSsgPSBcXCgxLCAyLCAzLCA0LCA1 LCA2LCA3LCA4LCA5XFwpIiBcCisrCQkicHJpbnQgYXIxXCg6XCkiCisrCisrIyBDaGVjayBhc3Np Z25tZW50CisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgXCRteV9hcnkgPSBhcjFcKDM6OFwpIgor K2dkYl90ZXN0ICJwcmludCBcJG15X2FyeSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoMywgNCwg NSwgNiwgNywgOFxcKSIgXAorKwkJIkFzc2lnbm1lbnQgb2Ygc3ViYXJyYXkgdG8gdmFyaWFibGUi CisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXIxXCg1XCkgPSA0MiIKKysJCWdkYl90ZXN0ICJw cmludCBhcjFcKDM6OFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCgzLCA0LCA0MiwgNiwgNywg OFxcKSIgXAorKwkJInByaW50IGFyMVwoMzo4XCkgYWZ0ZXIgYXNzaWdubWVudCIKKytnZGJfdGVz dCAicHJpbnQgXCRteV9hcnkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDMsIDQsIDUsIDYsIDcs IDhcXCkiIFwKKysJCSJBc3NpZ25tZW50IG9mIHN1YmFycmF5IHRvIHZhcmlhYmxlIGFmdGVyIG9y aWdpbmFsIGFycmF5IGNoYW5nZWQiCisrCisrIyBUZXN0IGZvciBzdWJhcnJheXMgb2Ygb25lIGRp bWVuc2lvbmFsIGFycmF5cyB3aXRoIGxpdGVyYWxzCisrCQlnZGJfdGVzdCAicHJpbnQgYXIxXCgz XCkiICJcXCRcWzAtOVxdKyA9IDMiIFwKKysJCSJwcmludCBhcjFcKDNcKSIKKysKKysjIFRlc3Rz IGZvciBzdWJyYW5nZXMgb2YgMiBkaW1lbnNpb25hbCBhcnJheXMgd2l0aCBzdWJyYW5nZSB2YXJp YXRpb25zCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoMjozLCAzOjRcKSIgXAorKwkJIlxcJFxbMC05 XF0rID0gXFwoXFwoIDIzLCAzM1xcKSBcXCggMjQsIDM0XFwpIFxcKSIgXAorKwkJInByaW50IGFy MlwoMjozLCAzOjRcKS4iCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoODo5LDg6XCkiIFwKKysJCSJc XCRcWzAtOVxdKyA9IFxcKFxcKCA4OCwgOThcXCkgXFwoIDg5LCA5OVxcKSBcXCkiIFwKKysJCSJw cmludCBhcjJcKDg6OSw4OlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjJcKDg6OSw6MlwpIiBcCisr CQkiXFwkXFswLTlcXSsgPSBcXChcXCggODEsIDkxXFwpIFxcKCA4MiwgOTJcXCkgXFwpIiBcCisr CQkicHJpbnQgYXIyXCg4OjksOjJcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIyXCg4Oiw4Ojlc KSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDg4LCA5OFxcKSBcXCggODksIDk5XFwpIFxc KSIgXAorKwkJInByaW50IGFyMlwoODosODo5XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoODos ODpcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDg4LCA5OFxcKSBcXCggODksIDk5XFwp IFxcKSIgXAorKwkJInByaW50IGFyMlwoODosODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIyXCg4 Oiw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggODEsIDkxXFwpIFxcKCA4MiwgOTJc XCkgXFwpIiBcCisrCQkicHJpbnQgYXIyXCg4Oiw6MlwpIgorKworK2dkYl90ZXN0ICJwcmludCBh cjJcKDoyLDI6M1wpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMTIsIDIyXFwpIFxcKCAx MywgMjNcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIyXCg6MiwyOjNcKSIKKytnZGJfdGVzdCAicHJp bnQgYXIyXCg6Miw4OlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMTgsIDI4XFwpIFxc KCAxOSwgMjlcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIyXCg6Miw4OlwpIgorK2dkYl90ZXN0ICJw cmludCBhcjJcKDoyLDoyXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAxMSwgMjFcXCkg XFwoIDEyLCAyMlxcKSBcXCkiIFwKKysJCSJwcmludCBhcjJcKDoyLDoyXCkiCisrCisrIyBUZXN0 IHN1YnJhbmdlcyBvZiAyIGRpbWVuc2lvbmFsIGFycmF5cyB3aXRoIGxpdGVyYWxzIGFuZCBzdWJy YW5nZSB2YXJpYXRpb25zCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoNywgMzo2XCkiIFwKKysJCSJc XCRcWzAtOVxdKyA9IFxcKDczLCA3NCwgNzUsIDc2XFwpIiBcCisrCQkicHJpbnQgYXIyXCg3LCAz OjZcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIyXCg3LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9 IFxcKDc4LCA3OVxcKSIgXAorKwkJInByaW50IGFyMlwoNyw4OlwpIgorK2dkYl90ZXN0ICJwcmlu dCBhcjJcKDcsOjJcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoNzEsIDcyXFwpIiBcCisrCQki cHJpbnQgYXIyXCg3LDoyXCkiCisrCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoNzo4LDRcKSIgXAor KwkJIlxcJFxbMC05XF0rID0gXFwoNzQsIDg0XFwpIiBcCisrCQkicHJpbnQgYXIyKDc6OCw0XCki CisrZ2RiX3Rlc3QgInByaW50IGFyMlwoODosNFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCg4 NCwgOTRcXCkiIFwKKysJCSJwcmludCBhcjJcKDg6LDRcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIy XCg6Miw0XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDE0LCAyNFxcKSIgXAorKwkJInByaW50 IGFyMlwoOjIsNFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjJcKDMsNFwpIiBcCisrCQkiXFwkXFsw LTlcXSsgPSAzNCIgXAorKwkJInByaW50IGFyMlwoMyw0XCkiCisrCisrIyBUZXN0IHN1YmFycmF5 cyBvZiAzIGRpbWVuc2lvbmFsIGFycmF5cyB3aXRoIGxpdGVyYWxzIGFuZCBzdWJyYW5nZSB2YXJp YXRpb25zCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMjo0LDM6NCw3OjhcKSIgXAorKwkJIlxcJFxb MC05XF0rID0gXFwoXFwoIFxcKCAyMzcsIDMzNywgNDM3XFwpIFxcKCAyNDcsIDM0NywgNDQ3XFwp IFxcKSBcXCggXFwoIDIzOCwgMzM4LCA0MzhcXCkgXFwoIDI0OCwgMzQ4LCA0NDhcXCkgXFwpIFxc KSIgXAorKwkJInByaW50IGFyM1woMjo0LDM6NCw3OjhcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIz XCgyOjMsNDo1LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjQ4LCAzNDhc XCkgXFwoIDI1OCwgMzU4XFwpIFxcKSBcXCggXFwoIDI0OSwgMzQ5XFwpIFxcKCAyNTksIDM1OVxc KSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCgyOjMsNDo1LDg6XCkiCisrZ2RiX3Rlc3QgInBy aW50IGFyM1woMjozLDQ6NSw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDI0 MSwgMzQxXFwpIFxcKCAyNTEsIDM1MVxcKSBcXCkgXFwoIFxcKCAyNDIsIDM0MlxcKSBcXCggMjUy LCAzNTJcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMjozLDQ6NSw6MlwpIgorKworK2dk Yl90ZXN0ICJwcmludCBhcjNcKDI6Myw4Oiw3OjhcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwo XFwoIFxcKCAyODcsIDM4N1xcKSBcXCggMjk3LCAzOTdcXCkgXFwpIFxcKCBcXCggMjg4LCAzODhc XCkgXFwoIDI5OCwgMzk4XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDI6Myw4Oiw3Ojhc KSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgyOjMsODosODpcKSIgXAorKwkJIlxcJFxbMC05XF0r ID0gXFwoXFwoIFxcKCAyODgsIDM4OFxcKSBcXCggMjk4LCAzOThcXCkgXFwpIFxcKCBcXCggMjg5 LCAzODlcXCkgXFwoIDI5OSwgMzk5XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDI6Myw4 Oiw4OlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw4Oiw6MlwpIiBcCisrCQkiXFwkXFsw LTlcXSsgPSBcXChcXCggXFwoIDI4MSwgMzgxXFwpIFxcKCAyOTEsIDM5MVxcKSBcXCkgXFwoIFxc KCAyODIsIDM4MlxcKSBcXCggMjkyLCAzOTJcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1wo MjozLDg6LDoyXCkiCisrCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMjozLDoyLDc6OFwpIiBcCisr CQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDIxNywgMzE3XFwpIFxcKCAyMjcsIDMyN1xcKSBc XCkgXFwoIFxcKCAyMTgsIDMxOFxcKSBcXCggMjI4LCAzMjhcXCkgXFwpIFxcKSIgXAorKwkJInBy aW50IGFyM1woMjozLDoyLDc6OFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw6Miw4Olwp IiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDIxOCwgMzE4XFwpIFxcKCAyMjgsIDMy OFxcKSBcXCkgXFwoIFxcKCAyMTksIDMxOVxcKSBcXCggMjI5LCAzMjlcXCkgXFwpIFxcKSIgXAor KwkJInByaW50IGFyM1woMjozLDoyLDg6XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMjozLDoy LDoyXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjExLCAzMTFcXCkgXFwoIDIy MSwgMzIxXFwpIFxcKSBcXCggXFwoIDIxMiwgMzEyXFwpIFxcKCAyMjIsIDMyMlxcKSBcXCkgXFwp IiBcCisrCQkicHJpbnQgYXIzXCgyOjMsOjIsOjJcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIz XCg4OiwzOjQsNzo4XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggODM3LCA5Mzdc XCkgXFwoIDg0NywgOTQ3XFwpIFxcKSBcXCggXFwoIDgzOCwgOTM4XFwpIFxcKCA4NDgsIDk0OFxc KSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg4OiwzOjQsNzo4XCkiCisrZ2RiX3Rlc3QgInBy aW50IGFyM1woODosNDo1LDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggODQ4 LCA5NDhcXCkgXFwoIDg1OCwgOTU4XFwpIFxcKSBcXCggXFwoIDg0OSwgOTQ5XFwpIFxcKCA4NTks IDk1OVxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg4Oiw0OjUsODpcKSIKKytnZGJfdGVz dCAicHJpbnQgYXIzXCg4Oiw0OjUsOjJcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxc KCA4NDEsIDk0MVxcKSBcXCggODUxLCA5NTFcXCkgXFwpIFxcKCBcXCggODQyLCA5NDJcXCkgXFwo IDg1MiwgOTUyXFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6LDQ6NSw6MlwpIgorKwor K2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDg6LDc6OFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBc XChcXCggXFwoIDg4NywgOTg3XFwpIFxcKCA4OTcsIDk5N1xcKSBcXCkgXFwoIFxcKCA4ODgsIDk4 OFxcKSBcXCggODk4LCA5OThcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woODosODosNzo4 XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woODosODosODpcKSIgXAorKwkJIlxcJFxbMC05XF0r ID0gXFwoXFwoIFxcKCA4ODgsIDk4OFxcKSBcXCggODk4LCA5OThcXCkgXFwpIFxcKCBcXCggODg5 LCA5ODlcXCkgXFwoIDg5OSwgOTk5XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6LDg6 LDg6XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woODosODosOjJcKSIgXAorKwkJIlxcJFxbMC05 XF0rID0gXFwoXFwoIFxcKCA4ODEsIDk4MVxcKSBcXCggODkxLCA5OTFcXCkgXFwpIFxcKCBcXCgg ODgyLCA5ODJcXCkgXFwoIDg5MiwgOTkyXFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6 LDg6LDoyXCkiCisrCisrZ2RiX3Rlc3QgInByaW50IGFyM1woODosOjIsNzo4XCkiIFwKKysJCSJc XCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggODE3LCA5MTdcXCkgXFwoIDgyNywgOTI3XFwpIFxcKSBc XCggXFwoIDgxOCwgOTE4XFwpIFxcKCA4MjgsIDkyOFxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQg YXIzXCg4Oiw6Miw3OjhcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw6Miw4OlwpIiBcCisr CQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDgxOCwgOTE4XFwpIFxcKCA4MjgsIDkyOFxcKSBc XCkgXFwoIFxcKCA4MTksIDkxOVxcKSBcXCggODI5LCA5MjlcXCkgXFwpIFxcKSIgXAorKwkJInBy aW50IGFyM1woODosOjIsODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw6Miw6MlwpIiBc CisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDgxMSwgOTExXFwpIFxcKCA4MjEsIDkyMVxc KSBcXCkgXFwoIFxcKCA4MTIsIDkxMlxcKSBcXCggODIyLCA5MjJcXCkgXFwpIFxcKSIgXAorKwkJ InByaW50IGFyM1woODosOjIsOjJcKSIKKysKKysKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miwz OjQsNzo4XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMTM3LCAyMzdcXCkgXFwo IDE0NywgMjQ3XFwpIFxcKSBcXCggXFwoIDEzOCwgMjM4XFwpIFxcKCAxNDgsIDI0OFxcKSBcXCkg XFwpIiBcCisrCQkicHJpbnQgYXIzIFwoOjIsMzo0LDc6OFwpLiIKKytnZGJfdGVzdCAicHJpbnQg YXIzXCg6MiwzOjQsODpcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAxMzgsIDIz OFxcKSBcXCggMTQ4LCAyNDhcXCkgXFwpIFxcKCBcXCggMTM5LCAyMzlcXCkgXFwoIDE0OSwgMjQ5 XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDoyLDM6NCw4OlwpIgorK2dkYl90ZXN0ICJw cmludCBhcjNcKDoyLDM6NCw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDEz MSwgMjMxXFwpIFxcKCAxNDEsIDI0MVxcKSBcXCkgXFwoIFxcKCAxMzIsIDIzMlxcKSBcXCggMTQy LCAyNDJcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woOjIsMzo0LDoyXCkiCisrCisrZ2Ri X3Rlc3QgInByaW50IGFyM1woOjIsODosNzo4XCkiICJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCgg MTg3LCAyODdcXCkgXFwoIDE5NywgMjk3XFwpIFxcKSBcXCggXFwoIDE4OCwgMjg4XFwpIFxcKCAx OTgsIDI5OFxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg6Miw4Oiw3OjhcKSIKKytnZGJf dGVzdCAicHJpbnQgYXIzXCg6Miw4Oiw4OlwpIiAiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDE4 OCwgMjg4XFwpIFxcKCAxOTgsIDI5OFxcKSBcXCkgXFwoIFxcKCAxODksIDI4OVxcKSBcXCggMTk5 LCAyOTlcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woOjIsODosODpcKSIKKytnZGJfdGVz dCAicHJpbnQgYXIzXCg6Miw4Oiw6MlwpIiAiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDE4MSwg MjgxXFwpIFxcKCAxOTEsIDI5MVxcKSBcXCkgXFwoIFxcKCAxODIsIDI4MlxcKSBcXCggMTkyLCAy OTJcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woOjIsODosOjJcKSIKKysKKytnZGJfdGVz dCAicHJpbnQgYXIzXCg6Miw6Miw3OjhcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxc KCAxMTcsIDIxN1xcKSBcXCggMTI3LCAyMjdcXCkgXFwpIFxcKCBcXCggMTE4LCAyMThcXCkgXFwo IDEyOCwgMjI4XFwpIFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDoyLDoyLDc6OFwpIgorK2dk Yl90ZXN0ICJwcmludCBhcjNcKDoyLDoyLDg6XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCBcXCggMTE4LCAyMThcXCkgXFwoIDEyOCwgMjI4XFwpIFxcKSBcXCggXFwoIDExOSwgMjE5XFwp IFxcKCAxMjksIDIyOVxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg6Miw6Miw4OlwpIgor K2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDoyLDoyXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxc KFxcKCBcXCggMTExLCAyMTFcXCkgXFwoIDEyMSwgMjIxXFwpIFxcKSBcXCggXFwoIDExMiwgMjEy XFwpIFxcKCAxMjIsIDIyMlxcKSBcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg6Miw6Miw6Mlwp IgorKworKworKyNUZXN0cyBmb3Igc3ViYXJyYXlzIG9mIDMgZGltZW5zaW9uYWwgYXJyYXlzIHdp dGggbGl0ZXJhbHMgYW5kIHN1YnJhbmdlcworK2dkYl90ZXN0ICJwcmludCBhcjNcKDMsMzo0LDc6 OFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMzM3LCAzNDdcXCkgXFwoIDMzOCwgMzQ4 XFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMywzOjQsNzo4XCkiCisrZ2RiX3Rlc3QgInByaW50 IGFyM1woMyw0OjUsODpcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDM0OCwgMzU4XFwp IFxcKCAzNDksIDM1OVxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDMsNDo1LDg6XCkiCisrZ2Ri X3Rlc3QgInByaW50IGFyM1woMyw0OjUsOjJcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwo IDM0MSwgMzUxXFwpIFxcKCAzNDIsIDM1MlxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDMsNDo1 LDoyXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMyw0OjUsM1wpIiBcCisrCQkiXFwkXFswLTlc XSsgPSBcXCgzNDMsIDM1M1xcKSIgXAorKwkJInByaW50IGFyM1woMyw0OjUsM1wpIgorKworK2dk Yl90ZXN0ICJwcmludCBhcjNcKDIsODosNzo4XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCAyODcsIDI5N1xcKSBcXCggMjg4LCAyOThcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCgyLDg6 LDc6OFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDIsODosODpcKSIgXAorKwkJIlxcJFxbMC05 XF0rID0gXFwoXFwoIDI4OCwgMjk4XFwpIFxcKCAyODksIDI5OVxcKSBcXCkiIFwKKysJCSJwcmlu dCBhcjNcKDIsODosODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDg6LDoyXCkiXAorKwkJ IlxcJFxbMC05XF0rID0gXFwoXFwoIDI4MSwgMjkxXFwpIFxcKCAyODIsIDI5MlxcKSBcXCkiIFwK KysJCSJwcmludCBhcjNcKDIsODosOjJcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgyLDg6LDNc KSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoMjgzLCAyOTNcXCkiIFwKKysJCSJwcmludCBhcjNc KDIsODosM1wpIgorKworK2dkYl90ZXN0ICJwcmludCBhcjNcKDIsOjIsNzo4XCkiIFwKKysJCSJc XCRcWzAtOVxdKyA9IFxcKFxcKCAyMTcsIDIyN1xcKSBcXCggMjE4LCAyMjhcXCkgXFwpIiBcCisr CQkicHJpbnQgYXIzXCgyLDoyLDc6OFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDIsOjIsODpc KSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDIxOCwgMjI4XFwpIFxcKCAyMTksIDIyOVxc KSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDIsOjIsODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIz XCgyLDoyLDoyXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyMTEsIDIyMVxcKSBcXCgg MjEyLCAyMjJcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCgyLDoyLDoyXCkiCisrZ2RiX3Rlc3Qg InByaW50IGFyM1woMiw6MiwzXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDIxMywgMjIzXFwp IiBcCisrCQkicHJpbnQgYXIzXCgyLDoyLDNcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgz LDQsNzo4XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDM0NywgMzQ4XFwpIiBcCisrCQkicHJp bnQgYXIzXCgzLDQsNzo4XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMyw0LDg6XCkiIFwKKysJ CSJcXCRcWzAtOVxdKyA9IFxcKDM0OCwgMzQ5XFwpIiBcCisraQkJInByaW50IGFyM1woMyw0LDg6 XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMyw0LDoyXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9 IFxcKDM0MSwgMzQyXFwpIiBcCisrCQkicHJpbnQgYXIzXCgzLDQsOjJcKSIKKytnZGJfdGVzdCAi cHJpbnQgYXIzXCg1LDYsN1wpIiBcCisrCQkiXFwkXFswLTlcXSsgPSA1NjciIFwKKysJCSJwcmlu dCBhcjNcKDUsNiw3XCkiCisrCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMzo0LDYsNzo4XCkiIFwK KysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAzNjcsIDQ2N1xcKSBcXCggMzY4LCA0NjhcXCkgXFwp IiBcCisrCQkicHJpbnQgYXIzXCgzOjQsNiw3OjhcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgz OjQsNiw4OlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMzY4LCA0NjhcXCkgXFwoIDM2 OSwgNDY5XFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMzo0LDYsODpcKSIKKytnZGJfdGVzdCAi cHJpbnQgYXIzXCgzOjQsNiw6MlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMzYxLCA0 NjFcXCkgXFwoIDM2MiwgNDYyXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMzo0LDYsOjJcKSIK KytnZGJfdGVzdCAicHJpbnQgYXIzXCgzOjQsNiw1XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxc KDM2NSwgNDY1XFwpIiBcCisrCQkicHJpbnQgYXIzXCgzOjQsNiw1XCkiCisrCisrZ2RiX3Rlc3Qg InByaW50IGFyM1woODosNiw3OjhcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDg2Nywg OTY3XFwpIFxcKCA4NjgsIDk2OFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6LDYsNzo4XCki CisrZ2RiX3Rlc3QgInByaW50IGFyM1woODosNiw4OlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBc XChcXCggODY4LCA5NjhcXCkgXFwoIDg2OSwgOTY5XFwpIFxcKSIgXAorKwkJInByaW50IGFyM1wo ODosNiw4OlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDYsOjJcKSIgXAorKwkJIlxcJFxb MC05XF0rID0gXFwoXFwoIDg2MSwgOTYxXFwpIFxcKCA4NjIsIDk2MlxcKSBcXCkiIFwKKysJCSJw cmludCBhcjNcKDg6LDYsOjJcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw2LDVcKSIgXAor KwkJIlxcJFxbMC05XF0rID0gXFwoODY1LCA5NjVcXCkiIFwKKysJCSJwcmludCBhcjNcKDg6LDYs NVwpIgorKworK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDYsNzo4XCkiIFwKKysJCSJcXCRcWzAt OVxdKyA9IFxcKFxcKCAxNjcsIDI2N1xcKSBcXCggMTY4LCAyNjhcXCkgXFwpIiBcCisrCQkicHJp bnQgYXIzXCg6Miw2LDc6OFwpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDYsODpcKSIgXAor KwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDE2OCwgMjY4XFwpIFxcKCAxNjksIDI2OVxcKSBcXCki IFwKKysJCSJwcmludCBhcjNcKDoyLDYsODpcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIzXCg6Miw2 LDoyXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAxNjEsIDI2MVxcKSBcXCggMTYyLCAy NjJcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIzXCg6Miw2LDoyXCkiCisrZ2RiX3Rlc3QgInByaW50 IGFyM1woOjIsNiw1XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDE2NSwgMjY1XFwpIiBcCisr CQkicHJpbnQgYXIzXCg6Miw2LDVcKSIKKysKKytnZGJfdGVzdCAicHJpbnQgYXIzXCgzOjQsNTo2 LDRcKSIgXAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDM1NCwgNDU0XFwpIFxcKCAzNjQsIDQ2 NFxcKSBcXCkiIFwKKysJCSJwcmludCBhcjJcKDM6NCw1OjYsNFwpIgorK2dkYl90ZXN0ICJwcmlu dCBhcjNcKDg6LDU6Niw0XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4NTQsIDk1NFxc KSBcXCggODY0LCA5NjRcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIyXCg4Oiw1OjYsNFwpIgorK2dk Yl90ZXN0ICJwcmludCBhcjNcKDoyLDU6Niw0XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCAxNTQsIDI1NFxcKSBcXCggMTY0LCAyNjRcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIyXCg6Miw1 OjYsNFwpIgorKworKyMgU3RyaWRlID4gMQorK2dkYl90ZXN0ICJwcmludCBhcjFcKDI6NjoyXCki IFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKDIsIDQsIDZcXCkiIFwKKysJCSJwcmludCBhcjFcKDI6 NjoyXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoMjo2OjIsMzo0XCkiIFwKKysJCSJcXCRcWzAt OVxdKyA9IFxcKFxcKCAyMywgNDMsIDYzXFwpIFxcKCAyNCwgNDQsIDY0XFwpIFxcKSIgXAorKwkJ InByaW50IGFyMlwoMjo2OjIsMzo0XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoMjo2OjIsM1wp IiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCgyMywgNDMsIDYzXFwpIiBcCisrCQkicHJpbnQgYXIy XCgyOjY6MiwzXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyM1woMjo2OjIsMzo1OjIsNDo3OjNcKSIg XAorKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyMzQsIDQzNCwgNjM0XFwpIFxcKCAyNTQs IDQ1NCwgNjU0XFwpIFxcKSBcXCggXFwoIDIzNywgNDM3LCA2MzdcXCkgXFwoIDI1NywgNDU3LCA2 NTdcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMjo2OjIsMzo1OjIsNDo3OjNcKSIKKytn ZGJfdGVzdCAicHJpbnQgYXIzXCgyOjY6Miw1LDQ6NzozXCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCAyNTQsIDQ1NCwgNjU0XFwpIFxcKCAyNTcsIDQ1NywgNjU3XFwpIFxcKSIgXAorKwkJ InByaW50IGFyM1woMjo2OjIsNSw0Ojc6M1wpIgorKworKyMgU3RyaWRlIDwgMAorK2dkYl90ZXN0 ICJwcmludCBhcjFcKDg6MjotMlwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXCg4LCA2LCA0LCAy XFwpIiBcCisrCQkicHJpbnQgYXIxXCg4OjI6LTJcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIyXCg4 OjI6LTIsMzo0XCkiIFwKKysJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4MywgNjMsIDQzLCAyM1xc KSBcXCggODQsIDY0LCA0NCwgMjRcXCkgXFwpIiBcCisrCQkicHJpbnQgYXIyXCg4OjI6LTIsMzo0 XCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMlwoMjo2OjIsM1wpIiBcCisrCQkiXFwkXFswLTlcXSsg PSBcXCgyMywgNDMsIDYzXFwpIiBcCisrCQkicHJpbnQgYXIyXCgyOjY6MiwzXCkiCisrZ2RiX3Rl c3QgInByaW50IGFyM1woMjozLDc6MzotNCw0Ojc6M1wpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBc XChcXCggXFwoIDI3NCwgMzc0XFwpIFxcKCAyMzQsIDMzNFxcKSBcXCkgXFwoIFxcKCAyNzcsIDM3 N1xcKSBcXCggMjM3LCAzMzdcXCkgXFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMjozLDc6Mzot NCw0Ojc6M1wpIgorK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6NjoyLDUsNzo0Oi0zXCkiIFwKKysJ CSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyNTcsIDQ1NywgNjU3XFwpIFxcKCAyNTQsIDQ1NCwgNjU0 XFwpIFxcKSIgXAorKwkJInByaW50IGFyM1woMjo2OjIsNSw3OjQ6LTNcKSIKKysKKysjIFRlc3Rz IHdpdGggbmVnYXRpdmUgYW5kIG1peGVkIGluZGljZXMKKytnZGJfdGVzdCAicCBhcjRcKDI6NCwg LTI6MSwgLTE1Oi0xNFwpIiBcCisrCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDI2MSwgMzYx LCA0NjFcXCkgXFwoIDI3MSwgMzcxLCA0NzFcXCkgXFwoIDI4MSwgMzgxLCA0ODFcXCkgXFwoIDI5 MSwgMzkxLCA0OTFcXCkgXFwpIFxcKCBcXCggMjYyLCAzNjIsIDQ2MlxcKSBcXCggMjcyLCAzNzIs IDQ3MlxcKSBcXCggMjgyLCAzODIsIDQ4MlxcKSBcXCggMjkyLCAzOTIsIDQ5MlxcKSBcXCkgXFwp IiBcCisrCQkicHJpbnQgYXI0KDI6NCwgLTI6MSwgLTE1Oi0xNCkiCisrCisrZ2RiX3Rlc3QgInAg YXI0XCg3LC02OjI6MywtN1wpIiBcCisrICAgICAgICAgICAgICAgICJcXCRcWzAtOVxdKyA9IFxc KDcyOSwgNzU5LCA3ODlcXCkiIFwKKysgICAgICAgICAgICAgICAgInByaW50IGFyNCg3LC02OjI6 MywtNykiCisrCisrZ2RiX3Rlc3QgInAgYXI0XCg5OjI6LTIsIC02OjI6MywgLTY6LTE1Oi0zXCki IFwKKysgICAgICAgICAgICAgICAgIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA5MzAsIDczMCwg NTMwLCAzMzBcXCkgXFwoIDk2MCwgNzYwLCA1NjAsIDM2MFxcKSBcXCggOTkwLCA3OTAsIDU5MCwg MzkwXFwpIFxcKSBcXCggXFwoIDkyNywgNzI3LCA1MjcsIDMyN1xcKSBcXCggOTU3LCA3NTcsIDU1 NywgMzU3XFwpIFxcKCA5ODcsIDc4NywgNTg3LCAzODdcXCkgXFwpIFxcKCBcXCggOTI0LCA3MjQs IDUyNCwgMzI0XFwpIFxcKCA5NTQsIDc1NCwgNTU0LCAzNTRcXCkgXFwoIDk4NCwgNzg0LCA1ODQs IDM4NFxcKSBcXCkgXFwoIFxcKCA5MjEsIDcyMSwgNTIxLCAzMjFcXCkgXFwoIDk1MSwgNzUxLCA1 NTEsIDM1MVxcKSBcXCggOTgxLCA3ODEsIDU4MSwgMzgxXFwpIFxcKSBcXCkiIFwKKysgICAgICAg ICAgICAgICAgInByaW50IGFyNCg5OjI6LTIsIC02OjI6MywgLTY6LTE1Oi0zKSIKKysKKytnZGJf dGVzdCAicCBhcjRcKDosOiw6XCkiIFwKKysgICAgICAgICAgICAgICAgIlxcJFxbMC05XF0rID0g XFwoXFwoIFxcKCAxMTEsIDIxMSwgMzExLCA0MTEsIDUxMSwgNjExLCA3MTEsIDgxMSwgLioiIFwK KysgICAgICAgICAgICAgICAgInByaW50IGFyNCg6LDosOikiCisrCisrIyBQcm92b2tlIGVycm9y IG1lc3NhZ2VzIGZvciBiYWQgdXNlciBpbnB1dAorK2dkYl90ZXN0ICJwcmludCBhcjFcKDA6NFwp IiBcCisrCQkicHJvdmlkZWQgYm91bmRcXChzXFwpIG91dHNpZGUgYXJyYXkgYm91bmRcXChzXFwp IiBcCisrCQkicHJpbnQgYXIxXCgwOjRcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIxXCg4OjEyXCki IFwKKysJCSJwcm92aWRlZCBib3VuZFxcKHNcXCkgb3V0c2lkZSBhcnJheSBib3VuZFxcKHNcXCki IFwKKysJCSJwcmludCBhcjFcKDg6MTJcKSIKKytnZGJfdGVzdCAicHJpbnQgYXIxXCg4OjI6XCki IFwKKysJCSJBIHN5bnRheCBlcnJvciBpbiBleHByZXNzaW9uLCBuZWFyIGBcXCknLiIgXAorKwkJ InByaW50IGFyMVwoODoyOlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjFcKDg6MjoyXCkiIFwKKysJ CSJXcm9uZyB2YWx1ZSBwcm92aWRlZCBmb3Igc3RyaWRlIGFuZCBib3VuZGFyaWVzIiBcCisrCQki cHJpbnQgYXIxXCg4OjI6MlwpIgorK2dkYl90ZXN0ICJwcmludCBhcjFcKDI6ODotMlwpIiBcCisr CQkiV3JvbmcgdmFsdWUgcHJvdmlkZWQgZm9yIHN0cmlkZSBhbmQgYm91bmRhcmllcyIgXAorKwkJ InByaW50IGFyMVwoMjo4Oi0yXCkiCisrZ2RiX3Rlc3QgInByaW50IGFyMVwoMjo3OjBcKSIgXAor KwkJIlN0cmlkZSBtdXN0IG5vdCBiZSAwIiBcCisrCQkicHJpbnQgYXIxXCgyOjc6MFwpIgorK2dk Yl90ZXN0ICJwcmludCBhcjFcKDM6N1wpID0gNDIiIFwKKysJCSJJbnZhbGlkIGNhc3QuIiBcCisr CQkiQXNzaWdubWVudCBvZiB2YWx1ZSB0byBzdWJhcnJheSIKK2RpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9zdGF0aWMtYXJyYXlzLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLmFmMWEyMGMKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vc3RhdGljLWFycmF5cy5mOTAKK0BAIC0wLDAgKzEsNTUgQEAKKyshIENvcHlyaWdodCAy MDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIENvbnRyaWJ1dGVkIGJ5 IEludGVsIENvcnAuIDxjaHJpc3RvcGgudC53ZWlubWFubkBpbnRlbC5jb20+CisrIQorKyEgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr ISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzdWJyb3V0aW5lIHN1YgorKyAgaW50ZWdlciwg ZGltZW5zaW9uKDkpIDo6IGFyMQorKyAgaW50ZWdlciwgZGltZW5zaW9uKDksOSkgOjogYXIyCisr ICBpbnRlZ2VyLCBkaW1lbnNpb24oOSw5LDkpIDo6IGFyMworKyAgaW50ZWdlciwgZGltZW5zaW9u KDEwLC03OjMsIC0xNTotNSkgOjogYXI0CisrICBpbnRlZ2VyIDo6IGksaixrCisrCisrICBhcjEg PSAxCisrICBhcjIgPSAxCisrICBhcjMgPSAxCisrICBhcjQgPSA0CisrCisrICAhIFJlc3VsdGlu ZyBhcnJheSBhcjMgbG9va3MgbGlrZSAoKCggMTExLCAxMTIsIDExMywgMTE0LC4uLikpKQorKyAg ZG8gaSA9IDEsIDksIDEKKysgICAgYXIxKGkpID0gaQorKyAgICBkbyBqID0gMSwgOSwgMQorKyAg ICAgIGFyMihpLGopID0gaSoxMCArIGoKKysgICAgICBkbyBrID0gMSwgOSwgMQorKyAgICAgICAg YXIzKGksaixrKSA9IGkqMTAwICsgaioxMCArIGsKKysgICAgICBlbmQgZG8KKysgICAgZW5kIGRv CisrICBlbmQgZG8KKysKKysgIGRvIGkgPSAxLCAxMSwgMQorKyAgICBkbyBqID0gLTcsIDMsIDEK KysgICAgICBkbyBrID0gLTE1LCAtNSwgMQorKyAgICAgICAgYXI0KGksaixrKSA9IGkqMTAwICsg KGorOCkqMTAgKyAoaysxNikKKysgICAgICBlbmQgZG8KKysgICAgZW5kIGRvCisrICBlbmQgZG8K KysKKysgIGFyMSgxKSA9IDExICAhQlAxCisrICByZXR1cm4KKytlbmQKKysKKytwcm9ncmFtIHRl c3Rwcm9nCisrICBjYWxsIHN1YgorK2VuZAorLS0gCisxLjcuMC43CgpkaWZmIC0tZ2l0IGEvZ2Ri LXZsYS1pbnRlbC5wYXRjaCBiL2dkYi12bGEtaW50ZWwucGF0Y2gKaW5kZXggOTI1ZjQwMS4uZWRm NmIyMyAxMDA2NDQKLS0tIGEvZ2RiLXZsYS1pbnRlbC5wYXRjaAorKysgYi9nZGItdmxhLWludGVs LnBhdGNoCkBAIC03NTUsMjQgKzc1NSw2IEBAIEluZGV4OiBnZGItNy4xMC41MC4yMDE2MDEwNi9n ZGIvZ2RidHlwZXMuYwogIH0KICAKICAvKiBSZXNvbHZlIGR5bmFtaWMgYm91bmRzIG9mIG1lbWJl cnMgb2YgdGhlIHVuaW9uIFRZUEUgdG8gc3RhdGljCi1AQCAtNDU1OCw2ICs0NjIyLDE3IEBACi0g ICAgICAgZ2RiX2Fzc2VydF9ub3RfcmVhY2hlZCAoImJhZCB0eXBlX3NwZWNpZmljX2tpbmQiKTsK LSAgICAgfQotIAotKyAgaWYgKFRZUEVfTkZJRUxEUyAodHlwZSkpCi0rICAgIHsKLSsgICAgICBp bnQgbmZpZWxkcyA9IFRZUEVfTkZJRUxEUyAodHlwZSk7Ci0rCi0rICAgICAgVFlQRV9GSUVMRFMg KG5ld190eXBlKQotKyAgICAgICAgICAgICAgPSBPQlNUQUNLX0NBTExPQyAoJlRZUEVfT1dORVIg KHR5cGUpLm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5maWVsZHMsIHN0cnVjdCBmaWVsZCk7Ci0rICAgICAgbWVtY3B5IChUWVBFX0ZJ RUxEUyAobmV3X3R5cGUpLCBUWVBFX0ZJRUxEUyAodHlwZSksCi0rICAgICAgICBuZmllbGRzICog c2l6ZW9mIChzdHJ1Y3QgZmllbGQpKTsKLSsgICB9Ci0rCi0gICByZXR1cm4gbmV3X3R5cGU7Ci0g fQotIAogSW5kZXg6IGdkYi03LjEwLjUwLjIwMTYwMTA2L2dkYi9nZGJ0eXBlcy5oCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAtLS0gZ2RiLTcuMTAuNTAuMjAxNjAxMDYub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDE2LTAx LTA4IDE5OjE1OjM1LjA4NTU4MjQ3MSArMDEwMAoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2Ri LnNwZWMKaW5kZXggZjIxMTI0OC4uZWFhMTZiMiAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIv Z2RiLnNwZWMKQEAgLTI3LDcgKzI3LDcgQEAgVmVyc2lvbjogNy4xMC41MC4le3NuYXBzcmN9CiAK ICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIs IHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8g c3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgot UmVsZWFzZTogMzUlez9kaXN0fQorUmVsZWFzZTogMzYlez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2 MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGgg ZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWlu IGFuZCBHRkRMCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC01MjAsMTEgKzUyMCwx OSBAQCBQYXRjaDg0ODogZ2RiLWR0cy1yaGVsNi1weXRob24tY29tcGF0LnBhdGNoCiBQYXRjaDg1 MjogZ2RiLWduYXQtZHdhcmYtY3Jhc2gtM29mMy5wYXRjaAogCiAjIFZMQSAoRm9ydHJhbiBkeW5h bWljIGFycmF5cykgZnJvbSBJbnRlbCArIGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYSB0ZXN0cy4K K1BhdGNoMTA1ODogZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTFvZjYucGF0Y2gKK1BhdGNoMTA1 OTogZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTJvZjYucGF0Y2gKK1BhdGNoMTA2MDogZ2RiLWZv cnRyYW4tc3RyaWRlLWludGVsLTNvZjYucGF0Y2gKK1BhdGNoMTA2MTogZ2RiLWZvcnRyYW4tc3Ry aWRlLWludGVsLTRvZjYucGF0Y2gKK1BhdGNoMTA2MjogZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVs LTVvZjYucGF0Y2gKK1BhdGNoMTA2MzogZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTZvZjYucGF0 Y2gKK1BhdGNoMTA2ODogZ2RiLWZvcnRyYW4tc3RyaWRlLWludGVsLTZvZjYtdGVzdGNhc2VmaXgu cGF0Y2gKIFBhdGNoODg4OiBnZGItdmxhLWludGVsLnBhdGNoCiBQYXRjaDk4MzogZ2RiLXZsYS1p bnRlbC1sb2dpY2FsLW5vdC5wYXRjaAogUGF0Y2g4ODk6IGdkYi12bGEtaW50ZWwtc3RyaW5nYnQt Zml4LnBhdGNoCiBQYXRjaDkxMjogZ2RiLXZsYS1pbnRlbC0wNG9mMjMtZml4LnBhdGNoCiBQYXRj aDg4NzogZ2RiLWFyY2hlci12bGEtdGVzdHMucGF0Y2gKK1BhdGNoMTA2OTogZ2RiLWZvcnRyYW4t c3RyaWRlLWludGVsLTZvZjYtbm9rZmFpbC5wYXRjaAogCiAjIENvbnRpbnVlIGJhY2t0cmFjZSBl dmVuIGlmIGEgZnJhbWUgZmlsdGVyIHRocm93cyBhbiBleGNlcHRpb24gKFBoaWwgTXVsZG9vbiku CiBQYXRjaDkxODogZ2RiLWJ0cm9idXN0LnBhdGNoCkBAIC03NTUsNiArNzYzLDEzIEBAIGZpbmQg LW5hbWUgIiouaW5mbyoifHhhcmdzIHJtIC1mCiAKICNwYXRjaDIzMiAtcDEKICVwYXRjaDM0OSAt cDEKKyVwYXRjaDEwNTggLXAxCislcGF0Y2gxMDU5IC1wMQorJXBhdGNoMTA2MCAtcDEKKyVwYXRj aDEwNjEgLXAxCislcGF0Y2gxMDYyIC1wMQorJXBhdGNoMTA2MyAtcDEKKyVwYXRjaDEwNjggLXAx CiAlcGF0Y2g4ODggLXAxCiAlcGF0Y2g5ODMgLXAxCiAlcGF0Y2g4ODkgLXAxCkBAIC04NTIsNiAr ODY3LDcgQEAgZmluZCAtbmFtZSAiKi5pbmZvKiJ8eGFyZ3Mgcm0gLWYKICVwYXRjaDg1MiAtcDEK ICVwYXRjaDg2MyAtcDEKICVwYXRjaDg4NyAtcDEKKyVwYXRjaDEwNjkgLXAxCiAlcGF0Y2g5MTgg LXAxCiAlcGF0Y2g5MjUgLXAxCiAlcGF0Y2g5MjcgLXAxCkBAIC0xMzc3LDYgKzEzOTMsOSBAQCB0 aGVuCiBmaQogCiAlY2hhbmdlbG9nCisqIFNhdCBKYW4gIDkgMjAxNiBKYW4gS3JhdG9jaHZpbCA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjEwLjUwLjIwMTYwMTA2LTM2LmZjMjQKKy0g VkxBIChGb3J0cmFuIGR5bmFtaWMgYXJyYXlzKSBzdHJpZGVzIChtdWx0aS1kaW1lbnNpb25hbCBz dWJhcnJheXMpIGZyb20gSW50ZWwuCisKICogRnJpIEphbiAgOCAyMDE2IEphbiBLcmF0b2Nodmls IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMTAuNTAuMjAxNjAxMDYtMzUuZmMyNAog LSBGaXggZmFsc2UgRkFJTHMgb24gdG9vIGxvbmcgYmFzZSBkaXJlY3RvcnkuCiAK