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: Robert Scheck To: git-commits@fedoraproject.org Subject: [rpms/openssl3] epel8: Merge changes from RHEL 9.8 to pick up CVE fixes Date: Sun, 26 Jul 2026 15:38:07 GMT Message-ID: <178508028773.1.15379947366386171907.rpms-openssl3-d13942a5a1a1@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssl3 X-Git-Branch: epel8 X-Git-Rev: d13942a5a1a1f666a1d37cf86fddd5cee2609d0a QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbnNzbDMKQnJh bmNoIDogZXBlbDgKQ29tbWl0IDogZDEzOTQyYTVhMWExZjY2NmExZDM3Y2Y4NmZkZGQ1Y2VlMjYw OWQwYQpBdXRob3IgOiBSb2JlcnQgU2NoZWNrIDxyb2JlcnRAZmVkb3JhcHJvamVjdC5vcmc+CkRh dGUgICA6IDIwMjYtMDctMjZUMTc6Mzc6MzkrMDI6MDAKU3RhdHMgIDogKzI5NjgvLTcgaW4gMTkg ZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL29wZW5z c2wzL2MvZDEzOTQyYTVhMWExZjY2NmExZDM3Y2Y4NmZkZGQ1Y2VlMjYwOWQwYT9icmFuY2g9ZXBl bDgKCkxvZzoKTWVyZ2UgY2hhbmdlcyBmcm9tIFJIRUwgOS44IHRvIHBpY2sgdXAgQ1ZFIGZpeGVz CgotLS0KZGlmZiAtLWdpdCBhLzAwNTgtQ1ZFLTIwMjYtMzE3OTAucGF0Y2ggYi8wMDU4LUNWRS0y MDI2LTMxNzkwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNTU2 YTcKLS0tIC9kZXYvbnVsbAorKysgYi8wMDU4LUNWRS0yMDI2LTMxNzkwLnBhdGNoCkBAIC0wLDAg KzEsMTg1IEBACitGcm9tIDAwMWUwMWRiM2U5OTZlMTNmZmM3MjM4NmZlNzlkMDNhNjY4M2I1YWMg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOaWtvbGEgUGFqa292c2t5IDxuaWtvbGFw QG9wZW5zc2wub3JnPgorRGF0ZTogVGh1LCAxOSBNYXIgMjAyNiAxMjoxNjowOCArMDEwMAorU3Vi amVjdDogW1BBVENIIDEvMl0gcnNhX2tlbTogdmFsaWRhdGUgUlNBX3B1YmxpY19lbmNyeXB0KCkg cmVzdWx0IGluIFJTQVNWRQorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9w bGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitS U0FfcHVibGljX2VuY3J5cHQoKSByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBv biBzdWNjZXNzIGFuZAorLTEgb24gZmFpbHVyZS4gV2l0aCB0aGUgZXhpc3RpbmcgYGlmIChyZXQp YCBjaGVjaywgYSBwcm92aWRlci1zaWRlIFJTQSBLRU0KK2VuY2Fwc3VsYXRpb24gY2FuIGluY29y cmVjdGx5IHN1Y2NlZWQgd2hlbiB0aGUgdW5kZXJseWluZyBSU0EgcHVibGljCitlbmNyeXB0IG9w ZXJhdGlvbiBmYWlscy4gSW4gdGhhdCBjYXNlIHRoZSBjb2RlIHJlcG9ydHMgc3VjY2VzcywgcmV0 dXJucworbGVuZ3RocyBhcyBpZiBlbmNhcHN1bGF0aW9uIGNvbXBsZXRlZCBub3JtYWxseSwgYW5k IGxlYXZlcyB0aGUgZnJlc2hseQorZ2VuZXJhdGVkIHNlY3JldCBhdmFpbGFibGUgaW5zdGVhZCBv ZiBkaXNjYXJkaW5nIGl0LgorCitUaWdodGVuIHRoZSBzdWNjZXNzIGNvbmRpdGlvbiBzbyBSU0FT VkUgb25seSBzdWNjZWVkcyB3aGVuCitSU0FfcHVibGljX2VuY3J5cHQoKSByZXR1cm5zIGEgcG9z aXRpdmUgdmFsdWUgZXF1YWwgdG8gdGhlIG1vZHVsdXMtc2l6ZWQKK291dHB1dCBleHBlY3RlZCBm b3IgUlNBX05PX1BBRERJTkcuIEFueSBvdGhlciByZXR1cm4gdmFsdWUgaXMgdHJlYXRlZCBhcwor ZmFpbHVyZSwgYW5kIHRoZSBnZW5lcmF0ZWQgc2VjcmV0IGlzIGNsZWFuc2VkIGJlZm9yZSByZXR1 cm5pbmcuCisKK0ZpeGVzIENWRS0yMDI2LTMxNzkwCitTaWduZWQtb2ZmLWJ5OiBOaWtvbGEgUGFq a292c2t5IDxuaWtvbGFwQG9wZW5zc2wub3JnPgorCitSZXZpZXdlZC1ieTogU2HFoWEgTmVkdsSb ZGlja8O9IDxzYXNoYW5Ab3BlbnNzbC5vcmc+CitSZXZpZXdlZC1ieTogVG9tYXMgTXJheiA8dG9t YXNAb3BlbnNzbC5mb3VuZGF0aW9uPgorTWVyZ2VEYXRlOiBNb24gQXByICA2IDE5OjUxOjMwIDIw MjYKKy0tLQorIHByb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMva2VtL3JzYV9rZW0uYyB8IDIwICsr KysrKysrKysrLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDkg ZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wcm92aWRlcnMvaW1wbGVtZW50YXRpb25zL2tl bS9yc2Ffa2VtLmMgYi9wcm92aWRlcnMvaW1wbGVtZW50YXRpb25zL2tlbS9yc2Ffa2VtLmMKK2lu ZGV4IGY3YmYzNjhhMGQuLjc0ZGZhZmRkZDkgMTAwNjQ0CistLS0gYS9wcm92aWRlcnMvaW1wbGVt ZW50YXRpb25zL2tlbS9yc2Ffa2VtLmMKKysrKyBiL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMv a2VtL3JzYV9rZW0uYworQEAgLTMxNiwxNyArMzE2LDE5IEBAIHN0YXRpYyBpbnQgcnNhc3ZlX2dl bmVyYXRlKFBST1ZfUlNBX0NUWCAqcHJzYWN0eCwKKyAgICAgICAgIHJldHVybiAwOworIAorICAg ICAvKiBTdGVwKDMpOiBvdXQgPSBSU0FFUCgobixlKSwgeikgKi8KKy0gICAgcmV0ID0gUlNBX3B1 YmxpY19lbmNyeXB0KG5sZW4sIHNlY3JldCwgb3V0LCBwcnNhY3R4LT5yc2EsIFJTQV9OT19QQURE SU5HKTsKKy0gICAgaWYgKHJldCkgeworLSAgICAgICAgcmV0ID0gMTsKKy0gICAgICAgIGlmIChv dXRsZW4gIT0gTlVMTCkKKy0gICAgICAgICAgICAqb3V0bGVuID0gbmxlbjsKKy0gICAgICAgIGlm IChzZWNyZXRsZW4gIT0gTlVMTCkKKy0gICAgICAgICAgICAqc2VjcmV0bGVuID0gbmxlbjsKKy0g ICAgfSBlbHNlIHsKKysgICAgcmV0ID0gUlNBX3B1YmxpY19lbmNyeXB0KChpbnQpbmxlbiwgc2Vj cmV0LCBvdXQsIHByc2FjdHgtPnJzYSwKKysgICAgICAgIFJTQV9OT19QQURESU5HKTsKKysgICAg aWYgKHJldCA8PSAwIHx8IHJldCAhPSAoaW50KW5sZW4pIHsKKyAgICAgICAgIE9QRU5TU0xfY2xl YW5zZShzZWNyZXQsIG5sZW4pOworKyAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKy0gICAgcmV0 dXJuIHJldDsKKysKKysgICAgaWYgKG91dGxlbiAhPSBOVUxMKQorKyAgICAgICAgKm91dGxlbiA9 IG5sZW47CisrICAgIGlmIChzZWNyZXRsZW4gIT0gTlVMTCkKKysgICAgICAgICpzZWNyZXRsZW4g PSBubGVuOworKworKyAgICByZXR1cm4gMTsKKyB9CisgCisgLyoqCistLSAKKzIuNTMuMAorCisK K0Zyb20gYzYxYmJkM2Y4NzNkMjhlMDk4ZjUwM2YwMTg3NDU5ZWQ0ODg5NzdjOSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5pa29sYSBQYWprb3Zza3kgPG5pa29sYXBAb3BlbnNzbC5v cmc+CitEYXRlOiBNb24sIDIzIE1hciAyMDI2IDA4OjQxOjIwICswMTAwCitTdWJqZWN0OiBbUEFU Q0ggMi8yXSByc2Ffa2VtOiB0ZXN0IFJTQV9wdWJsaWNfZW5jcnlwdCgpIHJlc3VsdCBpbiBSU0FT VkUKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9 VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworUlNBX3B1YmxpY19lbmNy eXB0KCkgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gb24gc3VjY2VzcyBhbmQK Ky0xIG9uIGZhaWx1cmUuCisKK0FkZCByZWdyZXNzaW9uIGNvdmVyYWdlIGluIGV2cF9leHRyYV90 ZXN0IHVzaW5nIGludmFsaWQgUlNBIHB1YmtleQord2hpY2ggdHJpZ2dlcnMgLTEgaW4gUlNBX3B1 YmxpY19lbmNyeXB0KCkgdXNpbmcgZW5jYXBzdWxhdGlvbi4KKworU2lnbmVkLW9mZi1ieTogTmlr b2xhIFBhamtvdnNreSA8bmlrb2xhcEBvcGVuc3NsLm9yZz4KKworUmV2aWV3ZWQtYnk6IFNhxaFh IE5lZHbEm2RpY2vDvSA8c2FzaGFuQG9wZW5zc2wub3JnPgorUmV2aWV3ZWQtYnk6IFRvbWFzIE1y YXogPHRvbWFzQG9wZW5zc2wuZm91bmRhdGlvbj4KK01lcmdlRGF0ZTogTW9uIEFwciAgNiAxOTo1 MTozMSAyMDI2CistLS0KKyB0ZXN0L2V2cF9leHRyYV90ZXN0LmMgfCA2NyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDY3IGluc2Vy dGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3Rlc3QvZXZwX2V4dHJhX3Rlc3QuYyBiL3Rlc3QvZXZw X2V4dHJhX3Rlc3QuYworaW5kZXggNWVhOTVjMGRmYS4uNTczNzMyYmZlYyAxMDA2NDQKKy0tLSBh L3Rlc3QvZXZwX2V4dHJhX3Rlc3QuYworKysrIGIvdGVzdC9ldnBfZXh0cmFfdGVzdC5jCitAQCAt OTI5LDYgKzkyOSwzMiBAQCBzdGF0aWMgRVZQX1BLRVkgKmxvYWRfZXhhbXBsZV9lY19rZXkodm9p ZCkKKyAjZW5kaWYKKyAKKyAjaWZuZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKysKKytz dGF0aWMgRVZQX1BLRVkgKm1ha2VfYmFkX3JzYV9wdWJrZXkodm9pZCkKKyt7CisrICAgIFJTQSAq cnNhID0gTlVMTDsKKysgICAgQklHTlVNICpuID0gTlVMTCwgKmUgPSBOVUxMOworKyAgICBFVlBf UEtFWSAqcGtleSA9IE5VTEw7CisrCisrICAgIC8qIERlbGliZXJhdGVseSBpbnZhbGlkIHB1Ymxp YyBrZXk6IG4gPSAxNywgZSA9IDE3ICovCisrICAgIGlmICghVEVTVF9wdHIocGtleSA9IEVWUF9Q S0VZX25ldygpKQorKyAgICAgICAgfHwgIVRFU1RfcHRyKHJzYSA9IFJTQV9uZXcoKSkKKysgICAg ICAgIHx8ICFURVNUX3B0cihuID0gQk5fbmV3KCkpCisrICAgICAgICB8fCAhVEVTVF9wdHIoZSA9 IEJOX25ldygpKQorKyAgICAgICAgfHwgIVRFU1RfdHJ1ZShCTl9zZXRfd29yZChuLCAxNykpCisr ICAgICAgICB8fCAhVEVTVF90cnVlKEJOX3NldF93b3JkKGUsIDE3KSkKKysgICAgICAgIHx8ICFU RVNUX3RydWUoUlNBX3NldDBfa2V5KHJzYSwgbiwgZSwgTlVMTCkpCisrICAgICAgICB8fCAhRVZQ X1BLRVlfYXNzaWduX1JTQShwa2V5LCByc2EpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAg IHJldHVybiBwa2V5OworK2VycjoKKysgICAgQk5fZnJlZShuKTsKKysgICAgQk5fZnJlZShlKTsK KysgICAgUlNBX2ZyZWUocnNhKTsKKysgICAgcmV0dXJuIE5VTEw7CisrfQorKworICNpZm5kZWYg T1BFTlNTTF9OT19ESAorIHN0YXRpYyBFVlBfUEtFWSAqbG9hZF9leGFtcGxlX2RoX2tleSh2b2lk KQorIHsKK0BAIC01ODk4LDYgKzU5MjQsNDYgQEAgZXJyOgorICAgICByZXR1cm4gdGVzdHJlc3Vs dDsKKyB9CisgCisrc3RhdGljIGludCB0ZXN0X3JzYXN2ZV9rZW1fd2l0aF9pbnZhbGlkX3B1Yl9r ZXkodm9pZCkKKyt7CisrICAgIFJTQSAqcnNhID0gTlVMTDsKKysgICAgRVZQX1BLRVkgKnBrZXkg PSBOVUxMOworKyAgICBFVlBfUEtFWV9DVFggKmN0eCA9IE5VTEw7CisrICAgIHVuc2lnbmVkIGNo YXIgKmN0ID0gTlVMTDsKKysgICAgdW5zaWduZWQgY2hhciAqc2VjcmV0ID0gTlVMTDsKKysgICAg c2l6ZV90IGN0bGVuID0gMCwgc2VjcmV0bGVuID0gMDsKKysgICAgaW50IHRlc3RyZXN1bHQgPSAw OworKworKyAgICBpZiAobnVsbHByb3YgIT0gTlVMTCkgeworKyAgICAgICAgdGVzdHJlc3VsdCA9 IFRFU1Rfc2tpcCgiVGVzdCBkb2VzIG5vdCBzdXBwb3J0IGEgbm9uLWRlZmF1bHQgbGlicmFyeSBj b250ZXh0Iik7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQorKworKyAgICBpZiAoIVRFU1Rf cHRyKHBrZXkgPSBtYWtlX2JhZF9yc2FfcHVia2V5KCkpKQorKyAgICAgICAgZ290byBlcnI7Cisr CisrICAgIGlmICghVEVTVF9wdHIoY3R4ID0gRVZQX1BLRVlfQ1RYX25ld19mcm9tX3BrZXkodGVz dGN0eCwgcGtleSwgTlVMTCkpCisrICAgICAgICB8fCAhVEVTVF9pbnRfZXEoRVZQX1BLRVlfZW5j YXBzdWxhdGVfaW5pdChjdHgsIE5VTEwpLCAxKQorKyAgICAgICAgfHwgIVRFU1RfaW50X2VxKEVW UF9QS0VZX0NUWF9zZXRfa2VtX29wKGN0eCwgIlJTQVNWRSIpLCAxKQorKyAgICAgICAgfHwgIVRF U1RfaW50X2VxKEVWUF9QS0VZX2VuY2Fwc3VsYXRlKGN0eCwgTlVMTCwgJmN0bGVuLCBOVUxMLCAm c2VjcmV0bGVuKSwgMSkKKysgICAgICAgIHx8ICFURVNUX3B0cihjdCA9IE9QRU5TU0xfbWFsbG9j KGN0bGVuKSkKKysgICAgICAgIHx8ICFURVNUX3B0cihzZWNyZXQgPSBPUEVOU1NMX21hbGxvYyhz ZWNyZXRsZW4pKSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBpZiAoIVRFU1RfaW50X2Vx KEVWUF9QS0VZX2VuY2Fwc3VsYXRlKGN0eCwgY3QsICZjdGxlbiwgc2VjcmV0LCAmc2VjcmV0bGVu KSwgMCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgdGVzdHJlc3VsdCA9IDE7CisrCisr ZXJyOgorKyAgICBPUEVOU1NMX2ZyZWUoc2VjcmV0KTsKKysgICAgT1BFTlNTTF9mcmVlKGN0KTsK KysgICAgRVZQX1BLRVlfQ1RYX2ZyZWUoY3R4KTsKKysgICAgUlNBX2ZyZWUocnNhKTsKKysgICAg RVZQX1BLRVlfZnJlZShwa2V5KTsKKysgICAgcmV0dXJuIHRlc3RyZXN1bHQ7CisrfQorKworICNp Zm5kZWYgT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORQorIC8qIFRlc3Qgd2UgY2FuIGNyZWF0ZSBh IHNpZ25hdHVyZSBrZXlzIHdpdGggYW4gYXNzb2NpYXRlZCBFTkdJTkUgKi8KKyBzdGF0aWMgaW50 IHRlc3Rfc2lnbmF0dXJlc193aXRoX2VuZ2luZShpbnQgdHN0KQorQEAgLTY4OTMsNiArNjk1OSw3 IEBAIGludCBzZXR1cF90ZXN0cyh2b2lkKQorICAgICBBRERfVEVTVCh0ZXN0X2V2cF9tZF9jaXBo ZXJfbWV0aCk7CisgICAgIEFERF9URVNUKHRlc3RfY3VzdG9tX21kX21ldGgpOworICAgICBBRERf VEVTVCh0ZXN0X2N1c3RvbV9jaXBoX21ldGgpOworKyAgICBBRERfVEVTVCh0ZXN0X3JzYXN2ZV9r ZW1fd2l0aF9pbnZhbGlkX3B1Yl9rZXkpOworIAorICNpZm5kZWYgT1BFTlNTTF9OT19EWU5BTUlD X0VOR0lORQorICAgICAvKiBUZXN0cyBvbmx5IHN1cHBvcnQgdGhlIGRlZmF1bHQgbGliY3R4ICov CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvMDA1OS1DVkUtMjAyNi0yODM5MC5wYXRjaCBi LzAwNTktQ1ZFLTIwMjYtMjgzOTAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNWI4NWY4YgotLS0gL2Rldi9udWxsCisrKyBiLzAwNTktQ1ZFLTIwMjYtMjgzOTAucGF0 Y2gKQEAgLTAsMCArMSw5MyBAQAorRnJvbSAyZTM5YjdhNjk5M2JlNDQ1ZmRkYjlmYmNlMzE2ZmE3 NTZlMDM5N2I2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmVpbCBIb3JtYW4gPG5o b3JtYW5Ab3BlbnNzbC5vcmc+CitEYXRlOiBXZWQsIDEgQXByIDIwMjYgMTA6NTY6NDQgKzAyMDAK K1N1YmplY3Q6IFtQQVRDSF0gRml4IE5VTEwgZGVyZWYgaW4gcnNhX2Ntc19kZWNyeXB0CitNSU1F LVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitD b250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1Zlcnkgc2ltbWlsYXIgdG8gQ1ZFLTIw MjYtMjgzODksIGVuc3VyZSB0aGF0IGlmIHdlIGFyZSBtaXNzaW5nCitwYXJhbWV0ZXJzIGluIFJT QS1PQUVQIFNvdXJjZUZ1bmMgaW4gQ01TIEtleVRyYW5zcG9ydFJlY2lwaWVudEluZm8sCit3ZSBk b24ndCBzZWdmYXVsdCB3aGVuIGRlY3J5cHRpbmcuCisKK0NvLWF1dGhvcmVkLWJ5OiBUb21hcyBN cmF6IDx0b21hc0BvcGVuc3NsLmZvdW5kYXRpb24+CisKK0ZpeGVzIENWRS0yMDI2LTI4MzkwCisK K1Jldmlld2VkLWJ5OiBTYcWhYSBOZWR2xJtkaWNrw70gPHNhc2hhbkBvcGVuc3NsLm9yZz4KK1Jl dmlld2VkLWJ5OiBOaWtvbGEgUGFqa292c2t5IDxuaWtvbGFwQG9wZW5zc2wub3JnPgorTWVyZ2VE YXRlOiBNb24gQXByICA2IDE5OjA2OjE0IDIwMjYKKy0tLQorIGNyeXB0by9jbXMvY21zX3JzYS5j IHwgMzEgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAx OSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NyeXB0by9j bXMvY21zX3JzYS5jIGIvY3J5cHRvL2Ntcy9jbXNfcnNhLmMKK2luZGV4IDZiNjU4NDJjYzEuLjM0 YzczOWE5ODIgMTAwNjQ0CistLS0gYS9jcnlwdG8vY21zL2Ntc19yc2EuYworKysrIGIvY3J5cHRv L2Ntcy9jbXNfcnNhLmMKK0BAIC00MiwxMCArNDIsMTMgQEAgc3RhdGljIGludCByc2FfY21zX2Rl Y3J5cHQoQ01TX1JlY2lwaWVudEluZm8gKnJpKQorICAgICBYNTA5X0FMR09SICpjbXNhbGc7Cisg ICAgIGludCBuaWQ7CisgICAgIGludCBydiA9IC0xOworLSAgICB1bnNpZ25lZCBjaGFyICpsYWJl bCA9IE5VTEw7CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmxhYmVsID0gTlVMTDsKKyAgICAg aW50IGxhYmVsbGVuID0gMDsKKyAgICAgY29uc3QgRVZQX01EICptZ2YxbWQgPSBOVUxMLCAqbWQg PSBOVUxMOworICAgICBSU0FfT0FFUF9QQVJBTVMgKm9hZXA7CisrICAgIGNvbnN0IEFTTjFfT0JK RUNUICphb2lkOworKyAgICBjb25zdCB2b2lkICpwYXJhbWV0ZXIgPSBOVUxMOworKyAgICBpbnQg cHR5cGUgPSAwOworIAorICAgICBwa2N0eCA9IENNU19SZWNpcGllbnRJbmZvX2dldDBfcGtleV9j dHgocmkpOworICAgICBpZiAocGtjdHggPT0gTlVMTCkKK0BAIC03NSwyMSArNzgsMTkgQEAgc3Rh dGljIGludCByc2FfY21zX2RlY3J5cHQoQ01TX1JlY2lwaWVudEluZm8gKnJpKQorICAgICAgICAg Z290byBlcnI7CisgCisgICAgIGlmIChvYWVwLT5wU291cmNlRnVuYyAhPSBOVUxMKSB7CistICAg ICAgICBYNTA5X0FMR09SICpwbGFiID0gb2FlcC0+cFNvdXJjZUZ1bmM7CisrICAgICAgICBYNTA5 X0FMR09SX2dldDAoJmFvaWQsICZwdHlwZSwgJnBhcmFtZXRlciwgb2FlcC0+cFNvdXJjZUZ1bmMp OworIAorLSAgICAgICAgaWYgKE9CSl9vYmoybmlkKHBsYWItPmFsZ29yaXRobSkgIT0gTklEX3BT cGVjaWZpZWQpIHsKKysgICAgICAgIGlmIChPQkpfb2JqMm5pZChhb2lkKSAhPSBOSURfcFNwZWNp ZmllZCkgeworICAgICAgICAgICAgIEVSUl9yYWlzZShFUlJfTElCX0NNUywgQ01TX1JfVU5TVVBQ T1JURURfTEFCRUxfU09VUkNFKTsKKyAgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgIH0K Ky0gICAgICAgIGlmIChwbGFiLT5wYXJhbWV0ZXItPnR5cGUgIT0gVl9BU04xX09DVEVUX1NUUklO RykgeworKyAgICAgICAgaWYgKHB0eXBlICE9IFZfQVNOMV9PQ1RFVF9TVFJJTkcpIHsKKyAgICAg ICAgICAgICBFUlJfcmFpc2UoRVJSX0xJQl9DTVMsIENNU19SX0lOVkFMSURfTEFCRUwpOworICAg ICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAgfQorIAorLSAgICAgICAgbGFiZWwgPSBwbGFi LT5wYXJhbWV0ZXItPnZhbHVlLm9jdGV0X3N0cmluZy0+ZGF0YTsKKy0gICAgICAgIC8qIFN0b3Ag bGFiZWwgYmVpbmcgZnJlZWQgd2hlbiBPQUVQIHBhcmFtZXRlcnMgYXJlIGZyZWVkICovCistICAg ICAgICBwbGFiLT5wYXJhbWV0ZXItPnZhbHVlLm9jdGV0X3N0cmluZy0+ZGF0YSA9IE5VTEw7Cist ICAgICAgICBsYWJlbGxlbiA9IHBsYWItPnBhcmFtZXRlci0+dmFsdWUub2N0ZXRfc3RyaW5nLT5s ZW5ndGg7CisrICAgICAgICBsYWJlbCA9IEFTTjFfU1RSSU5HX2dldDBfZGF0YShwYXJhbWV0ZXIp OworKyAgICAgICAgbGFiZWxsZW4gPSBBU04xX1NUUklOR19sZW5ndGgocGFyYW1ldGVyKTsKKyAg ICAgfQorIAorICAgICBpZiAoRVZQX1BLRVlfQ1RYX3NldF9yc2FfcGFkZGluZyhwa2N0eCwgUlNB X1BLQ1MxX09BRVBfUEFERElORykgPD0gMCkKK0BAIC05OCwxMCArOTksMTYgQEAgc3RhdGljIGlu dCByc2FfY21zX2RlY3J5cHQoQ01TX1JlY2lwaWVudEluZm8gKnJpKQorICAgICAgICAgZ290byBl cnI7CisgICAgIGlmIChFVlBfUEtFWV9DVFhfc2V0X3JzYV9tZ2YxX21kKHBrY3R4LCBtZ2YxbWQp IDw9IDApCisgICAgICAgICBnb3RvIGVycjsKKy0gICAgaWYgKGxhYmVsICE9IE5VTEwKKy0gICAg ICAgICYmIEVWUF9QS0VZX0NUWF9zZXQwX3JzYV9vYWVwX2xhYmVsKHBrY3R4LCBsYWJlbCwgbGFi ZWxsZW4pIDw9IDApIHsKKy0gICAgICAgIE9QRU5TU0xfZnJlZShsYWJlbCk7CistICAgICAgICBn b3RvIGVycjsKKysgICAgaWYgKGxhYmVsICE9IE5VTEwpIHsKKysgICAgICAgIHVuc2lnbmVkIGNo YXIgKmR1cF9sYWJlbCA9IE9QRU5TU0xfbWVtZHVwKGxhYmVsLCBsYWJlbGxlbik7CisrCisrICAg ICAgICBpZiAoZHVwX2xhYmVsID09IE5VTEwpCisrICAgICAgICAgICAgZ290byBlcnI7CisrCisr ICAgICAgICBpZiAoRVZQX1BLRVlfQ1RYX3NldDBfcnNhX29hZXBfbGFiZWwocGtjdHgsIGR1cF9s YWJlbCwgbGFiZWxsZW4pIDw9IDApIHsKKysgICAgICAgICAgICBPUEVOU1NMX2ZyZWUoZHVwX2xh YmVsKTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKyAgICAgfQorICAgICAv KiBDYXJyeSBvbiAqLworICAgICBydiA9IDE7CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEv MDA2MC1DVkUtMjAyNi03MzgzLnBhdGNoIGIvMDA2MC1DVkUtMjAyNi03MzgzLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlN2U5NzgKLS0tIC9kZXYvbnVsbAorKysg Yi8wMDYwLUNWRS0yMDI2LTczODMucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorZGlmZiAtLWdpdCBh L2NyeXB0by9hc24xL2FfbWJzdHIuYyBiL2NyeXB0by9hc24xL2FfbWJzdHIuYworaW5kZXggMDVi OGFjODcwNmYuLjcyMjFlODQzYjAzIDEwMDY0NAorLS0tIGEvY3J5cHRvL2FzbjEvYV9tYnN0ci5j CisrKysgYi9jcnlwdG8vYXNuMS9hX21ic3RyLmMKK0BAIC0xODUsMTEgKzE4NSwyNyBAQCBpbnQg QVNOMV9tYnN0cmluZ19uY29weShBU04xX1NUUklORyAqKm91dCwgY29uc3QgdW5zaWduZWQgY2hh ciAqaW4sIGludCBsZW4sCisgICAgICAgICBicmVhazsKKyAKKyAgICAgY2FzZSBNQlNUUklOR19C TVA6CisrICAgICAgICBpZiAobmNoYXIgPiBJTlRfTUFYIC8gMikgeworKyAgICAgICAgICAgIEVS Ul9yYWlzZShFUlJfTElCX0FTTjEsIEFTTjFfUl9TVFJJTkdfVE9PX0xPTkcpOworKyAgICAgICAg ICAgIGlmIChmcmVlX291dCkgeworKyAgICAgICAgICAgICAgICBBU04xX1NUUklOR19mcmVlKGRl c3QpOworKyAgICAgICAgICAgICAgICAqb3V0ID0gTlVMTDsKKysgICAgICAgICAgICB9CisrICAg ICAgICAgICAgcmV0dXJuIC0xOworKyAgICAgICAgfQorICAgICAgICAgb3V0bGVuID0gbmNoYXIg PDwgMTsKKyAgICAgICAgIGNweWZ1bmMgPSBjcHlfYm1wOworICAgICAgICAgYnJlYWs7CisgCisg ICAgIGNhc2UgTUJTVFJJTkdfVU5JVjoKKysgICAgICAgIGlmIChuY2hhciA+IElOVF9NQVggLyA0 KSB7CisrICAgICAgICAgICAgRVJSX3JhaXNlKEVSUl9MSUJfQVNOMSwgQVNOMV9SX1NUUklOR19U T09fTE9ORyk7CisrICAgICAgICAgICAgaWYgKGZyZWVfb3V0KSB7CisrICAgICAgICAgICAgICAg IEFTTjFfU1RSSU5HX2ZyZWUoZGVzdCk7CisrICAgICAgICAgICAgICAgICpvdXQgPSBOVUxMOwor KyAgICAgICAgICAgIH0KKysgICAgICAgICAgICByZXR1cm4gLTE7CisrICAgICAgICB9CisgICAg ICAgICBvdXRsZW4gPSBuY2hhciA8PCAyOworICAgICAgICAgY3B5ZnVuYyA9IGNweV91bml2Owor ICAgICAgICAgYnJlYWs7CitAQCAtMTk3LDggKzIxMywxMSBAQCBpbnQgQVNOMV9tYnN0cmluZ19u Y29weShBU04xX1NUUklORyAqKm91dCwgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIGludCBsZW4s CisgICAgIGNhc2UgTUJTVFJJTkdfVVRGODoKKyAgICAgICAgIG91dGxlbiA9IDA7CisgICAgICAg ICByZXQgPSB0cmF2ZXJzZV9zdHJpbmcoaW4sIGxlbiwgaW5mb3JtLCBvdXRfdXRmOCwgJm91dGxl bik7CistICAgICAgICBpZiAocmV0IDwgMCkgeworLSAgICAgICAgICAgIEVSUl9yYWlzZShFUlJf TElCX0FTTjEsIEFTTjFfUl9JTlZBTElEX1VURjhTVFJJTkcpOworKyAgICAgICAgaWYgKHJldCA8 IDApIHsgLyogZXJyb3IgYWxyZWFkeSByYWlzZWQgaW4gb3V0X3V0ZjgoKSAqLworKyAgICAgICAg ICAgIGlmIChmcmVlX291dCkgeworKyAgICAgICAgICAgICAgICBBU04xX1NUUklOR19mcmVlKGRl c3QpOworKyAgICAgICAgICAgICAgICAqb3V0ID0gTlVMTDsKKysgICAgICAgICAgICB9CisgICAg ICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgfQorICAgICAgICAgY3B5ZnVuYyA9IGNweV91 dGY4OworQEAgLTI4MSw5ICszMDAsMTUgQEAgc3RhdGljIGludCBvdXRfdXRmOCh1bnNpZ25lZCBs b25nIHZhbHVlLCB2b2lkICphcmcpCisgICAgIGludCAqb3V0bGVuLCBsZW47CisgCisgICAgIGxl biA9IFVURjhfcHV0YyhOVUxMLCAtMSwgdmFsdWUpOworLSAgICBpZiAobGVuIDw9IDApCisrICAg IGlmIChsZW4gPD0gMCkgeworKyAgICAgICAgRVJSX3JhaXNlKEVSUl9MSUJfQVNOMSwgQVNOMV9S X0lOVkFMSURfVVRGOFNUUklORyk7CisgICAgICAgICByZXR1cm4gbGVuOworKyAgICB9CisgICAg IG91dGxlbiA9IGFyZzsKKysgICAgaWYgKCpvdXRsZW4gPiBJTlRfTUFYIC0gbGVuKSB7CisrICAg ICAgICBFUlJfcmFpc2UoRVJSX0xJQl9BU04xLCBBU04xX1JfU1RSSU5HX1RPT19MT05HKTsKKysg ICAgICAgIHJldHVybiAtMTsKKysgICAgfQorICAgICAqb3V0bGVuICs9IGxlbjsKKyAgICAgcmV0 dXJuIDE7CisgfQoKZGlmZiAtLWdpdCBhLzAwNjEtQ1ZFLTIwMjYtOTA3Ni5wYXRjaCBiLzAwNjEt Q1ZFLTIwMjYtOTA3Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m NjBhNmQwCi0tLSAvZGV2L251bGwKKysrIGIvMDA2MS1DVkUtMjAyNi05MDc2LnBhdGNoCkBAIC0w LDAgKzEsMTgxIEBACitGcm9tIGFlMjMzOTY3Y2Y0MGIxNWZlODBjNzBjMTc0MzhkMzkxMTU4MTcx YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOaWtvbGEgUGFqa292c2t5IDxuaWtv bGFwQG9wZW5zc2wub3JnPgorRGF0ZTogVGh1LCAyMSBNYXkgMjAyNiAxMTo1MzowOSArMDIwMAor U3ViamVjdDogW1BBVENIIDEvMl0gY21zOiBrZWtfdW53cmFwX2tleTogRml4IG91dC1vZi1ib3Vu ZHMgcmVhZCBpbiBjaGVjay1ieXRlCisgdmFsaWRhdGlvbgorCit0aGUgY2hlY2stYnl0ZSB0ZXN0 IGluIGtla191bndyYXBfa2V5KCkgcmVhZHMgdG1wWzFdIHRocm91Z2ggdG1wWzZdCit1bmNvbmRp dGlvbmFsbHksIHNvIHRoZSBkZWNyeXB0ZWQgYnVmZmVyIG11c3QgaG9sZCBhdCBsZWFzdCBzZXZl bgorb2N0ZXRzLiBUaGUgcHJlLWRlY3J5cHRpb24gc2l6ZSBjaGVjayBlbmZvcmNlcyBpbmxlbiA+ PSAyICogYmxvY2tsZW4sCit3aGljaCB5aWVsZHMgdGhlIHJlcXVpcmVkIHNldmVuIG9jdGV0cyBv bmx5IHdoZW4gYmxvY2tsZW4gPj0gNC4gRm9yCithIEtFSyBjaXBoZXIgd2l0aCBhIHNtYWxsZXIg YmxvY2sgc2l6ZSwgaW5sZW4gY2FuIGJlIGFzIHNtYWxsIGFzCisyICogYmxvY2tsZW4gYW5kIHRo ZSBjaGVjay1ieXRlIHJlYWQgb3ZlcnJ1bnMgdGhlIGlubGVuLXNpemVkIHRtcAorYWxsb2NhdGlv bi4KKworUmVqZWN0IGJsb2NrbGVuIDwgNCBpbiB0aGUgZWFybHkgc2FuaXR5IGNoZWNrLiBBbGwg YmxvY2sgY2lwaGVycworYXBwcm9wcmlhdGUgZm9yIENNUyBQYXNzd29yZFJlY2lwaWVudEluZm8g a2V5IHdyYXBwaW5nIGhhdmUgYSBibG9jaworc2l6ZSBvZiBhdCBsZWFzdCA4IG9jdGV0cyAoREVT LzNERVMgPSA4LCBBRVMgPSAxNiksIHNvIHRoaXMgb25seQorZm9yYmlkcyBjaXBoZXJzIHRoYXQg d291bGQgbm90IGJlIHZhbGlkIEtFSyBjaG9pY2VzIGFueXdheSwgYW5kIHRoZQorZXhpc3Rpbmcg aW5sZW4gPj0gMiAqIGJsb2NrbGVuIGNoZWNrIHRoZW4gZ3VhcmFudGVlcyB0aGUgc2V2ZW4tb2N0 ZXQKK2xvd2VyIGJvdW5kIHRoZSBjaGVjay1ieXRlIHRlc3QgcmVsaWVzIG9uLgorCitGaXhlcyBD VkUtMjAyNi05MDc2CitTaWduZWQtb2ZmLWJ5OiBOaWtvbGEgUGFqa292c2t5IDxuaWtvbGFwQG9w ZW5zc2wub3JnPgorLS0tCisgY3J5cHRvL2Ntcy9jbXNfcHdyaS5jIHwgOCArKysrLS0tLQorIDEg ZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1n aXQgYS9jcnlwdG8vY21zL2Ntc19wd3JpLmMgYi9jcnlwdG8vY21zL2Ntc19wd3JpLmMKK2luZGV4 IGQ2MmRiYmRlODgxLi40YmIwNmI0MDZlYiAxMDA2NDQKKy0tLSBhL2NyeXB0by9jbXMvY21zX3B3 cmkuYworKysrIGIvY3J5cHRvL2Ntcy9jbXNfcHdyaS5jCitAQCAtMjAwLDE4ICsyMDAsMTggQEAg c3RhdGljIGludCBrZWtfdW53cmFwX2tleSh1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCAqb3V0 bGVuLAorICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubGVuLAorICAgICBF VlBfQ0lQSEVSX0NUWCAqY3R4KQorIHsKKy0gICAgc2l6ZV90IGJsb2NrbGVuID0gRVZQX0NJUEhF Ul9DVFhfZ2V0X2Jsb2NrX3NpemUoY3R4KTsKKysgICAgaW50IGJsb2NrbGVuID0gRVZQX0NJUEhF Ul9DVFhfZ2V0X2Jsb2NrX3NpemUoY3R4KTsKKyAgICAgdW5zaWduZWQgY2hhciAqdG1wOworICAg ICBpbnQgb3V0bCwgcnYgPSAwOworIAorLSAgICBpZiAoYmxvY2tsZW4gPT0gMCkKKysgICAgaWYg KGJsb2NrbGVuIDwgNCkKKyAgICAgICAgIHJldHVybiAwOworIAorLSAgICBpZiAoaW5sZW4gPCAy ICogYmxvY2tsZW4pIHsKKysgICAgaWYgKGlubGVuIDwgMiAqIChzaXplX3QpYmxvY2tsZW4pIHsK KyAgICAgICAgIC8qIHRvbyBzbWFsbCAqLworICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKy0g ICAgaWYgKGlubGVuICUgYmxvY2tsZW4pIHsKKysgICAgaWYgKGlubGVuID4gSU5UX01BWCB8fCBp bmxlbiAlIGJsb2NrbGVuKSB7CisgICAgICAgICAvKiBJbnZhbGlkIHNpemUgKi8KKyAgICAgICAg IHJldHVybiAwOworICAgICB9CisKK0Zyb20gNGEzNWUzYzE5NGNlYjBhZjMwZmNiZTQyZDY1Yzk1 ZTA4ZDU3NThhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5pa29sYSBQYWprb3Zz a3kgPG5pa29sYXBAb3BlbnNzbC5vcmc+CitEYXRlOiBUaHUsIDIxIE1heSAyMDI2IDE0OjE4OjEx ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBjbXM6IGtla191bndyYXBfa2V5OiB0ZXN0IGZv ciBmaXggb3V0LW9mLWJvdW5kcyByZWFkIGluCisgY2hlY2stYnl0ZSB2YWxpZGF0aW9uCisKK2Fk ZGVkIEVudmVsb3BlZERhdGEgYmxvYiB3aXRoIGEgUGFzc3dvcmRSZWNpcGllbnRJbmZvIHVzaW5n CitpZC1hbGctUFdSSS1LRUsgYW5kIGFuIEFFUy0xMjgtQ0ZCIGtleSBlbmNyeXB0aW9uIGNpcGhl ci4gQ0ZCJ3MgMS1ieXRlCitlZmZlY3RpdmUgYmxvY2sgc2l6ZSBsZXQgdGhlIGlubGVuID49IDIg KiBibG9ja2xlbiBndWFyZCBpbgora2VrX3Vud3JhcF9rZXkoKSBhY2NlcHQgYSB3cmFwcGVkIGtl eSBzaG9ydGVyIHRoYW4gdGhlIHNldmVuIG9jdGV0cwordGhlIGNoZWNrLWJ5dGUgdGVzdCByZWFk cyBmcm9tIHRtcFsxLi42XTsgdGhlIGVuY3J5cHRlZEtleSBPQ1RFVAorU1RSSU5HIGhlcmUgaXMg b25seSB0d28gYnl0ZXMuCisKK1NpZ25lZC1vZmYtYnk6IE5pa29sYSBQYWprb3Zza3kgPG5pa29s YXBAb3BlbnNzbC5vcmc+CistLS0KKyB0ZXN0L2Ntc2FwaXRlc3QuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgNDggKysrKysrKysrKysrKysrKystCisgdGVzdC9yZWNpcGVzLzgwLXRl c3RfY21zYXBpLnQgICAgICAgICAgICAgICAgIHwgICAzICstCisgLi4uLzgwLXRlc3RfY21zYXBp X2RhdGEvY21zX3B3cmlfa2VrX29vYi5kZXIgIHwgQmluIDAgLT4gMTkzIGJ5dGVzCisgMyBmaWxl cyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2Rl IDEwMDY0NCB0ZXN0L3JlY2lwZXMvODAtdGVzdF9jbXNhcGlfZGF0YS9jbXNfcHdyaV9rZWtfb29i LmRlcgorCitkaWZmIC0tZ2l0IGEvdGVzdC9jbXNhcGl0ZXN0LmMgYi90ZXN0L2Ntc2FwaXRlc3Qu YworaW5kZXggMDc1MmQxNGRmMDkuLmQ5MDhiYzZmYzRjIDEwMDY0NAorLS0tIGEvdGVzdC9jbXNh cGl0ZXN0LmMKKysrKyBiL3Rlc3QvY21zYXBpdGVzdC5jCitAQCAtMjEsNiArMjEsNyBAQCBzdGF0 aWMgWDUwOSAqY2VydCA9IE5VTEw7Cisgc3RhdGljIEVWUF9QS0VZICpwcml2a2V5ID0gTlVMTDsK KyBzdGF0aWMgY2hhciAqZGVyaW4gPSBOVUxMOworIHN0YXRpYyBjaGFyICp0b29fbG9uZ19pdl9j bXNfaW4gPSBOVUxMOworK3N0YXRpYyBjaGFyICpwd3JpX2tla19vb2JfZGVyX2luID0gTlVMTDsK KyAKKyBzdGF0aWMgaW50IHRlc3RfZW5jcnlwdF9kZWNyeXB0KGNvbnN0IEVWUF9DSVBIRVIgKmNp cGhlcikKKyB7CitAQCAtNTEyLDcgKzUxMyw0OCBAQCBzdGF0aWMgaW50IHRlc3RfY21zX2Flc2dj bV9pdl90b29fbG9uZyh2b2lkKQorICAgICByZXR1cm4gcmV0OworIH0KKyAKKy1PUFRfVEVTVF9E RUNMQVJFX1VTQUdFKCJjZXJ0ZmlsZSBwcml2a2V5ZmlsZSBkZXJmaWxlXG4iKQorKy8qCisrICog Q01TIEVudmVsb3BlZERhdGEgd2l0aCBhIHNpbmdsZSBQYXNzd29yZFJlY2lwaWVudEluZm8gdXNp bmcKKysgKiBpZC1hbGctUFdSSS1LRUsgYW5kIGFuIEFFUy0xMjgtQ0ZCIGtleSBlbmNyeXB0aW9u IGNpcGhlcgorKyAqICgxLWJ5dGUgZWZmZWN0aXZlIGJsb2NrIHNpemUpLiAgVGhlIGVuY3J5cHRl ZEtleSBPQ1RFVCBTVFJJTkcgaXMKKysgKiBvbmx5IHR3byBieXRlcyBsb25nLCBzbyB0aGUgd3Jh cHBlZCBrZXkgYnVmZmVyIGlzIHNob3J0ZXIgdGhhbgorKyAqIHRoZSBzZXZlbiBvY3RldHMgcmVh ZCBieSB0aGUgY2hlY2stYnl0ZSB0ZXN0IGluIGtla191bndyYXBfa2V5KCkuCisrICogUHJpb3Ig dG8gQ1ZFLTIwMjYtOTA3NiB0aGlzIHRyaWdnZXJlZCBhbiBvdXQtb2YtYm91bmRzIGhlYXAgcmVh ZDsKKysgKiBDTVNfZGVjcnlwdCgpIG11c3Qgbm93IGZhaWwgY2xlYW5seS4KKysgKi8KKytzdGF0 aWMgaW50IHRlc3RfcHdyaV9rZWtfdW53cmFwX3Nob3J0X2VuY3J5cHRlZF9rZXkodm9pZCkKKyt7 CisrICAgIEJJTyAqaW4gPSBOVUxMOworKyAgICBDTVNfQ29udGVudEluZm8gKmNtcyA9IE5VTEw7 CisrICAgIHVuc2lnbmVkIGxvbmcgZXJyID0gMDsKKysgICAgaW50IHJldCA9IDA7CisrCisrICAg IGlmICghVEVTVF9wdHIoaW4gPSBCSU9fbmV3X2ZpbGUocHdyaV9rZWtfb29iX2Rlcl9pbiwgInJi IikpCisrICAgICAgICB8fCAhVEVTVF9wdHIoY21zID0gZDJpX0NNU19iaW8oaW4sIE5VTEwpKSkK KysgICAgICAgIGdvdG8gZW5kOworKworKyAgICAvKgorKyAgICAgKiBUaGUgdW53cmFwIGlzIGF0 dGVtcHRlZCBlYWdlcmx5IGluc2lkZSBDTVNfZGVjcnlwdF9zZXQxX3Bhc3N3b3JkKCkuCisrICAg ICAqIEl0IG11c3QgZmFpbCBjbGVhbmx5IChubyBPT0IgcmVhZCkgYW5kIHJlcG9ydCBDTVNfUl9V TldSQVBfRkFJTFVSRS4KKysgICAgICovCisrICAgIGlmICghVEVTVF9mYWxzZShDTVNfZGVjcnlw dF9zZXQxX3Bhc3N3b3JkKGNtcywKKysgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKSJwYXNz d29yZCIsIC0xKSkpCisrICAgICAgICBnb3RvIGVuZDsKKysKKysgICAgZXJyID0gRVJSX3BlZWtf bGFzdF9lcnJvcigpOworKyAgICBpZiAoIVRFU1RfaW50X2VxKEVSUl9HRVRfTElCKGVyciksIEVS Ul9MSUJfQ01TKQorKyAgICAgICAgfHwgIVRFU1RfaW50X2VxKEVSUl9HRVRfUkVBU09OKGVyciks IENNU19SX1VOV1JBUF9GQUlMVVJFKSkKKysgICAgICAgIGdvdG8gZW5kOworKworKyAgICBFUlJf Y2xlYXJfZXJyb3IoKTsKKysgICAgcmV0ID0gMTsKKytlbmQ6CisrICAgIENNU19Db250ZW50SW5m b19mcmVlKGNtcyk7CisrICAgIEJJT19mcmVlKGluKTsKKysgICAgcmV0dXJuIHJldDsKKyt9Cisr CisrT1BUX1RFU1RfREVDTEFSRV9VU0FHRSgiY2VydGZpbGUgcHJpdmtleWZpbGUgZGVyZmlsZSB0 b29Mb25nSVZwZW0gcHdyaUtla09vYkRlclxuIikKKyAKKyBpbnQgc2V0dXBfdGVzdHModm9pZCkK KyB7CitAQCAtNTI3LDcgKzU2OSw4IEBAIGludCBzZXR1cF90ZXN0cyh2b2lkKQorICAgICBpZiAo IVRFU1RfcHRyKGNlcnRpbiA9IHRlc3RfZ2V0X2FyZ3VtZW50KDApKQorICAgICAgICAgfHwgIVRF U1RfcHRyKHByaXZrZXlpbiA9IHRlc3RfZ2V0X2FyZ3VtZW50KDEpKQorICAgICAgICAgfHwgIVRF U1RfcHRyKGRlcmluID0gdGVzdF9nZXRfYXJndW1lbnQoMikpCistICAgICAgICB8fCAhVEVTVF9w dHIodG9vX2xvbmdfaXZfY21zX2luID0gdGVzdF9nZXRfYXJndW1lbnQoMykpKQorKyAgICAgICAg fHwgIVRFU1RfcHRyKHRvb19sb25nX2l2X2Ntc19pbiA9IHRlc3RfZ2V0X2FyZ3VtZW50KDMpKQor KyAgICAgICAgfHwgIVRFU1RfcHRyKHB3cmlfa2VrX29vYl9kZXJfaW4gPSB0ZXN0X2dldF9hcmd1 bWVudCg0KSkpCisgICAgICAgICByZXR1cm4gMDsKKyAKKyAgICAgY2VydGJpbyA9IEJJT19uZXdf ZmlsZShjZXJ0aW4sICJyIik7CitAQCAtNTY0LDYgKzYwNyw3IEBAIGludCBzZXR1cF90ZXN0cyh2 b2lkKQorICAgICBBRERfVEVTVCh0ZXN0X2VuY3J5cHRlZF9kYXRhX2FlYWQpOworICAgICBBRERf QUxMX1RFU1RTKHRlc3RfZDJpX0NNU19kZWNvZGUsIDIpOworICAgICBBRERfVEVTVCh0ZXN0X2Nt c19hZXNnY21faXZfdG9vX2xvbmcpOworKyAgICBBRERfVEVTVCh0ZXN0X3B3cmlfa2VrX3Vud3Jh cF9zaG9ydF9lbmNyeXB0ZWRfa2V5KTsKKyAgICAgcmV0dXJuIDE7CisgfQorIAorZGlmZiAtLWdp dCBhL3Rlc3QvcmVjaXBlcy84MC10ZXN0X2Ntc2FwaS50IGIvdGVzdC9yZWNpcGVzLzgwLXRlc3Rf Y21zYXBpLnQKK2luZGV4IDhkOTM3MWUwMDVjLi4zZDFkYWU4NDY0NiAxMDA2NDQKKy0tLSBhL3Rl c3QvcmVjaXBlcy84MC10ZXN0X2Ntc2FwaS50CisrKysgYi90ZXN0L3JlY2lwZXMvODAtdGVzdF9j bXNhcGkudAorQEAgLTE5LDUgKzE5LDYgQEAgcGxhbiB0ZXN0cyA9PiAxOworIG9rKHJ1bih0ZXN0 KFsiY21zYXBpdGVzdCIsIHNyY3RvcF9maWxlKCJ0ZXN0IiwgImNlcnRzIiwgInNlcnZlcmNlcnQu cGVtIiksCisgICAgICAgICAgICAgIHNyY3RvcF9maWxlKCJ0ZXN0IiwgImNlcnRzIiwgInNlcnZl cmtleS5wZW0iKSwKKyAgICAgICAgICAgICAgc3JjdG9wX2ZpbGUoInRlc3QiLCAicmVjaXBlcyIs ICI4MC10ZXN0X2Ntc2FwaV9kYXRhIiwgImVuY3J5cHRlZERhdGEuZGVyIiksCistICAgICAgICAg ICAgIHNyY3RvcF9maWxlKCJ0ZXN0IiwgInJlY2lwZXMiLCAiODAtdGVzdF9jbXNhcGlfZGF0YSIs ICJlbmNEYXRhV2l0aFRvb0xvbmdJVi5wZW0iKV0pKSwKKysgICAgICAgICAgICAgc3JjdG9wX2Zp bGUoInRlc3QiLCAicmVjaXBlcyIsICI4MC10ZXN0X2Ntc2FwaV9kYXRhIiwgImVuY0RhdGFXaXRo VG9vTG9uZ0lWLnBlbSIpLAorKyAgICAgICAgICAgICBzcmN0b3BfZmlsZSgidGVzdCIsICJyZWNp cGVzIiwgIjgwLXRlc3RfY21zYXBpX2RhdGEiLCAiY21zX3B3cmlfa2VrX29vYi5kZXIiKV0pKSwK KyAgICAgICAgICAgICAgInJ1bm5pbmcgY21zYXBpdGVzdCIpOworZGlmZiAtLWdpdCBhL3Rlc3Qv cmVjaXBlcy84MC10ZXN0X2Ntc2FwaV9kYXRhL2Ntc19wd3JpX2tla19vb2IuZGVyIGIvdGVzdC9y ZWNpcGVzLzgwLXRlc3RfY21zYXBpX2RhdGEvY21zX3B3cmlfa2VrX29vYi5kZXIKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi5jM2VmM2FiZDEwZTZiMGE1N2IxZWVmOTg1YjBjOGM0M2NiMDU3MzcxCitHSVQgYmluYXJ5 IHBhdGNoCitsaXRlcmFsIDE5MworemNtWHFMK3tlYkwpI2xPbW90S2ZGY3xxZF9nVH1RP2pMZTIh aSM/YmE4NVN0UkMwVGg0Izg/RkVhfkEkaFYoeDBuCit6RnJSY1FRU34oKzZCN3I2ZmZPNHopQzVp ZVc9O2NjSHFMfUw1NWBueDdEZzVwQ0kkd0I3YFAkcWowVW1AU3RiPyUKK3oqfVcmOy1rWSMmVzg/ ZD44VG1XOUlUe1EkdUotNkZYJCtkb2RmUnpwTzJKISRHZ30/RigpX21CSTM1KjAmdE1lNQorVkhv TnRjTFg/Uyl5JkJgfXBoY3FSM2p3RFVKUDd+KgorCitsaXRlcmFsIDAKK0hjbVY/ZDAwMDAxCisK CmRpZmYgLS1naXQgYS8wMDYyLUNWRS0yMDI2LTM0MTgwLnBhdGNoIGIvMDA2Mi1DVkUtMjAyNi0z NDE4MC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzk1MGQ5Ci0t LSAvZGV2L251bGwKKysrIGIvMDA2Mi1DVkUtMjAyNi0zNDE4MC5wYXRjaApAQCAtMCwwICsxLDc1 IEBACitkaWZmIC0tZ2l0IGEvY3J5cHRvL2FzbjEvdGFzbl9kZWMuYyBiL2NyeXB0by9hc24xL3Rh c25fZGVjLmMKK2luZGV4IDcwZWE1ZjA4Nzk4Li4xOTdmZDI0MTA1NCAxMDA2NDQKKy0tLSBhL2Ny eXB0by9hc24xL3Rhc25fZGVjLmMKKysrKyBiL2NyeXB0by9hc24xL3Rhc25fZGVjLmMKK0BAIC01 NCw3ICs1NCw3IEBAIHN0YXRpYyBpbnQgYXNuMV9kMmlfZXhfcHJpbWl0aXZlKEFTTjFfVkFMVUUg KipwdmFsLAorICAgICBjb25zdCBBU04xX0lURU0gKml0LAorICAgICBpbnQgdGFnLCBpbnQgYWNs YXNzLCBjaGFyIG9wdCwKKyAgICAgQVNOMV9UTEMgKmN0eCk7Cistc3RhdGljIGludCBhc24xX2V4 X2MyaShBU04xX1ZBTFVFICoqcHZhbCwgY29uc3QgdW5zaWduZWQgY2hhciAqY29udCwgaW50IGxl biwKKytzdGF0aWMgaW50IGFzbjFfZXhfYzJpKEFTTjFfVkFMVUUgKipwdmFsLCBjb25zdCB1bnNp Z25lZCBjaGFyICpjb250LCBsb25nIGxlbiwKKyAgICAgaW50IHV0eXBlLCBjaGFyICpmcmVlX2Nv bnQsIGNvbnN0IEFTTjFfSVRFTSAqaXQpOworIAorIC8qIFRhYmxlIHRvIGNvbnZlcnQgdGFncyB0 byBiaXQgdmFsdWVzLCB1c2VkIGZvciBNU1RSSU5HIHR5cGUgKi8KK0BAIC04NTUsMTkgKzg1NSwy NCBAQCBzdGF0aWMgaW50IGFzbjFfZDJpX2V4X3ByaW1pdGl2ZShBU04xX1ZBTFVFICoqcHZhbCwK KyAKKyAvKiBUcmFuc2xhdGUgQVNOMSBjb250ZW50IG9jdGV0cyBpbnRvIGEgc3RydWN0dXJlICov CisgCistc3RhdGljIGludCBhc24xX2V4X2MyaShBU04xX1ZBTFVFICoqcHZhbCwgY29uc3QgdW5z aWduZWQgY2hhciAqY29udCwgaW50IGxlbiwKKytzdGF0aWMgaW50IGFzbjFfZXhfYzJpKEFTTjFf VkFMVUUgKipwdmFsLCBjb25zdCB1bnNpZ25lZCBjaGFyICpjb250LCBsb25nIGxlbiwKKyAgICAg aW50IHV0eXBlLCBjaGFyICpmcmVlX2NvbnQsIGNvbnN0IEFTTjFfSVRFTSAqaXQpCisgeworICAg ICBBU04xX1ZBTFVFICoqb3B2YWwgPSBOVUxMOworICAgICBBU04xX1NUUklORyAqc3RtcDsKKyAg ICAgQVNOMV9UWVBFICp0eXAgPSBOVUxMOworICAgICBpbnQgcmV0ID0gMDsKKysgICAgaW50IGls ZW4gPSAoaW50KWxlbjsKKyAgICAgY29uc3QgQVNOMV9QUklNSVRJVkVfRlVOQ1MgKnBmOworICAg ICBBU04xX0lOVEVHRVIgKip0aW50OworICAgICBwZiA9IGl0LT5mdW5jczsKKyAKKy0gICAgaWYg KHBmICYmIHBmLT5wcmltX2MyaSkKKy0gICAgICAgIHJldHVybiBwZi0+cHJpbV9jMmkocHZhbCwg Y29udCwgbGVuLCB1dHlwZSwgZnJlZV9jb250LCBpdCk7CisrICAgIGlmIChwZiAmJiBwZi0+cHJp bV9jMmkpIHsKKysgICAgICAgIGlmIChsZW4gPT0gKGxvbmcpaWxlbikKKysgICAgICAgICAgICBy ZXR1cm4gcGYtPnByaW1fYzJpKHB2YWwsIGNvbnQsIGlsZW4sIHV0eXBlLCBmcmVlX2NvbnQsIGl0 KTsKKysgICAgICAgIEVSUl9yYWlzZShFUlJfTElCX0FTTjEsIEFTTjFfUl9UT09fTE9ORyk7Cisr ICAgICAgICByZXR1cm4gMDsKKysgICAgfQorICAgICAvKiBJZiBBTlkgdHlwZSBjbGVhciB0eXBl IGFuZCBzZXQgcG9pbnRlciB0byBpbnRlcm5hbCB2YWx1ZSAqLworICAgICBpZiAoaXQtPnV0eXBl ID09IFZfQVNOMV9BTlkpIHsKKyAgICAgICAgIGlmICgqcHZhbCA9PSBOVUxMKSB7CitAQCAtODg1 LDcgKzg5MCw4IEBAIHN0YXRpYyBpbnQgYXNuMV9leF9jMmkoQVNOMV9WQUxVRSAqKnB2YWwsIGNv bnN0IHVuc2lnbmVkIGNoYXIgKmNvbnQsIGludCBsZW4sCisgICAgIH0KKyAgICAgc3dpdGNoICh1 dHlwZSkgeworICAgICBjYXNlIFZfQVNOMV9PQkpFQ1Q6CistICAgICAgICBpZiAoIW9zc2xfYzJp X0FTTjFfT0JKRUNUKChBU04xX09CSkVDVCAqKilwdmFsLCAmY29udCwgbGVuKSkKKysgICAgICAg IGlmIChsZW4gIT0gKGxvbmcpaWxlbgorKyAgICAgICAgICAgIHx8ICFvc3NsX2MyaV9BU04xX09C SkVDVCgoQVNOMV9PQkpFQ1QgKiopcHZhbCwgJmNvbnQsIGlsZW4pKQorICAgICAgICAgICAgIGdv dG8gZXJyOworICAgICAgICAgYnJlYWs7CisgCitAQCAtOTQwLDYgKzk0NiwxMCBAQCBzdGF0aWMg aW50IGFzbjFfZXhfYzJpKEFTTjFfVkFMVUUgKipwdmFsLCBjb25zdCB1bnNpZ25lZCBjaGFyICpj b250LCBpbnQgbGVuLAorICAgICBjYXNlIFZfQVNOMV9TRVQ6CisgICAgIGNhc2UgVl9BU04xX1NF UVVFTkNFOgorICAgICBkZWZhdWx0OgorKyAgICAgICAgaWYgKGxlbiAhPSAobG9uZylpbGVuKSB7 CisrICAgICAgICAgICAgRVJSX3JhaXNlKEVSUl9MSUJfQVNOMSwgQVNOMV9SX1RPT19MT05HKTsK KysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIH0KKyAgICAgICAgIGlmICh1dHlwZSA9 PSBWX0FTTjFfQk1QU1RSSU5HICYmIChsZW4gJiAxKSkgeworICAgICAgICAgICAgIEVSUl9yYWlz ZShFUlJfTElCX0FTTjEsIEFTTjFfUl9CTVBTVFJJTkdfSVNfV1JPTkdfTEVOR1RIKTsKKyAgICAg ICAgICAgICBnb3RvIGVycjsKK0BAIC05NzAsMTAgKzk4MCwxMCBAQCBzdGF0aWMgaW50IGFzbjFf ZXhfYzJpKEFTTjFfVkFMVUUgKipwdmFsLCBjb25zdCB1bnNpZ25lZCBjaGFyICpjb250LCBpbnQg bGVuLAorICAgICAgICAgfQorICAgICAgICAgLyogSWYgd2UndmUgYWxyZWFkeSBhbGxvY2F0ZWQg YSBidWZmZXIgdXNlIGl0ICovCisgICAgICAgICBpZiAoKmZyZWVfY29udCkgeworLSAgICAgICAg ICAgIEFTTjFfU1RSSU5HX3NldDAoc3RtcCwgKHVuc2lnbmVkIGNoYXIgKiljb250IC8qIFVHTFkg Q0FTVCEgKi8sIGxlbik7CisrICAgICAgICAgICAgQVNOMV9TVFJJTkdfc2V0MChzdG1wLCAodW5z aWduZWQgY2hhciAqKWNvbnQgLyogVUdMWSBDQVNUISAqLywgaWxlbik7CisgICAgICAgICAgICAg KmZyZWVfY29udCA9IDA7CisgICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgIGlmICghQVNO MV9TVFJJTkdfc2V0KHN0bXAsIGNvbnQsIGxlbikpIHsKKysgICAgICAgICAgICBpZiAoIUFTTjFf U1RSSU5HX3NldChzdG1wLCBjb250LCBpbGVuKSkgeworICAgICAgICAgICAgICAgICBFUlJfcmFp c2UoRVJSX0xJQl9BU04xLCBFUlJfUl9BU04xX0xJQik7CisgICAgICAgICAgICAgICAgIEFTTjFf U1RSSU5HX2ZyZWUoc3RtcCk7CisgICAgICAgICAgICAgICAgICpwdmFsID0gTlVMTDsKCmRpZmYg LS1naXQgYS8wMDYzLUNWRS0yMDI2LTM0MTgxLnBhdGNoIGIvMDA2My1DVkUtMjAyNi0zNDE4MS5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmM4YmIyCi0tLSAvZGV2 L251bGwKKysrIGIvMDA2My1DVkUtMjAyNi0zNDE4MS5wYXRjaApAQCAtMCwwICsxLDIwOCBAQAor RnJvbSA1YTllOTQ4OWY5ZTVmN2Y3ZWIyZjY1YzliOWZjNzU1NjZjZGNiYzAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorRnJvbTogQWxpY2phIEthcmlvIDxoa2FyaW9AcmVkaGF0LmNvbT4KK0Rh dGU6IFdlZCwgMjkgQXByIDIwMjYgMTY6Mjk6MzUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gcGtj czEyOiB2ZXJpZnkgdGhhdCB0aGUgcGJtYWMxIGtleSBsZW5ndGggaXMgc2FmZQorCitTaG9ydCBt YWMga2V5cyAoYXMgc2hvcnQgYXMgMSBieXRlKSBjYW4gYmUgdXNlZCB0byBwcm9iZSB0aGUKK3N5 c3RlbSB1bmRlciBhdHRhY2sgdG8gYWNjZXB0IGEgUEtDUyMxMiBmaWxlIGNyZWF0ZWQgYnkgYW4g YXR0YWNrZXIKK2V2ZW4gaWYgdGhlIGF0dGFja2VyIGRvZXNuJ3Qga25vdyB0aGUgcGFzc3dvcmQg dXNlZCBmb3IgTUFDIHByb3RlY3Rpb24uCisKK0ZpeGVzIENWRS0yMDI2LTM0MTgxCisKKyhhbHNv IHVwZGF0ZSB0aGUgcmVmZXJlbmNlIHRvIHRoZSBQQk1BQzEgUEtDUyMxMiBSRkMpCisKK1NpZ25l ZC1vZmYtYnk6IEFsaWNqYSBLYXJpbyA8aGthcmlvQHJlZGhhdC5jb20+CistLS0KKyBjcnlwdG8v cGtjczEyL3AxMl9tdXRsLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKysrKystLS0K KyB0ZXN0L3JlY2lwZXMvODAtdGVzdF9wa2NzMTIudCAgICAgICAgICAgICAgICAgICAgfCAgMTMg KysrKysrKystLS0tLQorIC4uLi9wYm1hYzFfMjU2XzI1Ni5iYWQta2V5LWxlbi5wMTIgICAgICAg ICAgICAgICB8IEJpbiAwIC0+IDI4MDMgYnl0ZXMKKyAuLi4vcGJtYWMxXzI1Nl8yNTYuZ29vZC1z aG9ydGVyLWtleS1sZW4ucDEyICAgICAgfCBCaW4gMCAtPiAyODAzIGJ5dGVzCisgNCBmaWxlcyBj aGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEw MDY0NCB0ZXN0L3JlY2lwZXMvODAtdGVzdF9wa2NzMTJfZGF0YS9wYm1hYzFfMjU2XzI1Ni5iYWQt a2V5LWxlbi5wMTIKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9yZWNpcGVzLzgwLXRlc3RfcGtj czEyX2RhdGEvcGJtYWMxXzI1Nl8yNTYuZ29vZC1zaG9ydGVyLWtleS1sZW4ucDEyCisKK2RpZmYg LS1naXQgYS9jcnlwdG8vcGtjczEyL3AxMl9tdXRsLmMgYi9jcnlwdG8vcGtjczEyL3AxMl9tdXRs LmMKK2luZGV4IDAxOTU2MjUyZGY3Li4xNTA3MmUxMmYyNiAxMDA2NDQKKy0tLSBhL2NyeXB0by9w a2NzMTIvcDEyX211dGwuYworKysrIGIvY3J5cHRvL3BrY3MxMi9wMTJfbXV0bC5jCitAQCAtMTQ0 LDExICsxNDQsMTMgQEAgc3RhdGljIGludCBQQk1BQzFfUEJLREYyX0hNQUMoT1NTTF9MSUJfQ1RY ICpjdHgsIGNvbnN0IGNoYXIgKnByb3BxLAorICAgICB9CisgICAgIHBia2RmMl9zYWx0ID0gcGJr ZGYyX3BhcmFtLT5zYWx0LT52YWx1ZS5vY3RldF9zdHJpbmc7CisgCistICAgIC8qIFJGQyA5NTc5 IHNwZWNpZmllcyBtaXNzaW5nIGtleSBsZW5ndGggYXMgaW52YWxpZCAqLworKyAgICAvKiBSRkMg OTg3OSBzcGVjaWZpZXMgbWlzc2luZyBrZXkgbGVuZ3RoIGFzIGludmFsaWQgKi8KKyAgICAgaWYg KHBia2RmMl9wYXJhbS0+a2V5bGVuZ3RoICE9IE5VTEwpCisgICAgICAgICBrZXlsZW4gPSBBU04x X0lOVEVHRVJfZ2V0KHBia2RmMl9wYXJhbS0+a2V5bGVuZ3RoKTsKKy0gICAgaWYgKGtleWxlbiA8 PSAwIHx8IGtleWxlbiA+IEVWUF9NQVhfTURfU0laRSkgeworLSAgICAgICAgRVJSX3JhaXNlKEVS Ul9MSUJfUEtDUzEyLCBQS0NTMTJfUl9QQVJTRV9FUlJPUik7CisrICAgIC8qIFJGQyA5ODc5IHNw ZWNpZmllcyB0b28gc2hvcnQga2V5IGxlbmd0aCBhcyB1bnRydXN0d29ydGh5IHRvbyAqLworKyAg ICBpZiAoa2V5bGVuIDwgMjAgfHwga2V5bGVuID4gRVZQX01BWF9NRF9TSVpFKSB7CisrICAgICAg ICBFUlJfcmFpc2VfZGF0YShFUlJfTElCX1BLQ1MxMiwgUEtDUzEyX1JfUEFSU0VfRVJST1IsCisr ICAgICAgICAgICAgIkludmFsaWQgS2V5IGxlbmd0aCAoJWQgaXMgbm90IGluIHRoZSByYW5nZSAy MC4uNjQpIiwga2V5bGVuKTsKKyAgICAgICAgIGdvdG8gZXJyOworICAgICB9CisgCitkaWZmIC0t Z2l0IGEvdGVzdC9yZWNpcGVzLzgwLXRlc3RfcGtjczEyLnQgYi90ZXN0L3JlY2lwZXMvODAtdGVz dF9wa2NzMTIudAoraW5kZXggZDI1OGI3ZWIwZTQuLjU2YWI5MzgwM2U3IDEwMDY0NAorLS0tIGEv dGVzdC9yZWNpcGVzLzgwLXRlc3RfcGtjczEyLnQKKysrKyBiL3Rlc3QvcmVjaXBlcy84MC10ZXN0 X3BrY3MxMi50CitAQCAtNTYsNyArNTYsNyBAQCAkRU5We09QRU5TU0xfV0lOMzJfVVRGOH09MTsK KyAKKyBteSAkbm9fZmlwcyA9IGRpc2FibGVkKCdmaXBzJykgfHwgKCRFTlZ7Tk9fRklQU30gLy8g MCk7CisgCistcGxhbiB0ZXN0cyA9PiAkbm9fZmlwcyA/IDUzIDogNTk7CisrcGxhbiB0ZXN0cyA9 PiAkbm9fZmlwcyA/IDU1IDogNjE7CisgCisgIyBUZXN0IGRpZmZlcmVudCBQS0NTIzEyIGZvcm1h dHMKKyBvayhydW4odGVzdChbInBrY3MxMl9mb3JtYXRfdGVzdCJdKSksICJ0ZXN0IHBrY3MxMiBm b3JtYXRzIik7CitAQCAtMjA1LDggKzIwNSwxMSBAQCBmb3IgbXkgJGluc3RhbmNlIChzb3J0IGtl eXMgJXBibWFjMV90ZXN0cykgeworICAgICB9CisgfQorIAorLSMgVGVzdCBwYm1hYzEgcGtjczEy IGdvb2QgZmlsZXMsIFJGQyA5NTc5CistZm9yIG15ICRmaWxlICgicGJtYWMxXzI1Nl8yNTYuZ29v ZC5wMTIiLCAicGJtYWMxXzUxMl8yNTYuZ29vZC5wMTIiLCAicGJtYWMxXzUxMl81MTIuZ29vZC5w MTIiKQorKyMgVGVzdCBwYm1hYzEgcGtjczEyIGdvb2QgZmlsZXMsIFJGQyA5NTc5LCBhbmQgb25l IGV4dHJhIHdpdGggc2hvcnRlciBrZXkKKysjIGxlbmd0aAorK2ZvciBteSAkZmlsZSAoInBibWFj MV8yNTZfMjU2Lmdvb2QucDEyIiwgInBibWFjMV81MTJfMjU2Lmdvb2QucDEyIiwKKysgICAgICAg ICAgICAgICJwYm1hYzFfNTEyXzUxMi5nb29kLnAxMiIsCisrICAgICAgICAgICAgICAicGJtYWMx XzI1Nl8yNTYuZ29vZC1zaG9ydGVyLWtleS1sZW4ucDEyIikKKyB7CisgICAgIG15ICRwYXRoID0g c3JjdG9wX2ZpbGUoInRlc3QiLCAicmVjaXBlcyIsICI4MC10ZXN0X3BrY3MxMl9kYXRhIiwgJGZp bGUpOworICAgICBvayhydW4oYXBwKFsib3BlbnNzbCIsICJwa2NzMTIiLCAiLWluIiwgJHBhdGgs ICItcGFzc3dvcmQiLCAicGFzczoxMjM0IiwgIi1ub2VuYyJdKSksCitAQCAtMjM1LDEyICsyMzgs MTIgQEAgdW5sZXNzICgkbm9fZmlwcykgeworICAgICB9CisgfQorIAorLSMgVGVzdCBwYm1hYzEg cGtjczEyIGJhZCBmaWxlcywgUkZDIDk1NzkgYW5kIENWRS0yMDI1LTExMTg3CisrIyBUZXN0IHBi bWFjMSBwa2NzMTIgYmFkIGZpbGVzLCBSRkMgOTU3OSwgQ1ZFLTIwMjUtMTExODcgYW5kIENWRS0y MDI2LTM0MTgxCisgZm9yIG15ICRmaWxlICgicGJtYWMxXzI1Nl8yNTYuYmFkLWl0ZXIucDEyIiwg InBibWFjMV8yNTZfMjU2LmJhZC1zYWx0LnAxMiIsCisgICAgICAgICAgICAgICAicGJtYWMxXzI1 Nl8yNTYubm8tbGVuLnAxMiIsICJwYm1hYzFfMjU2XzI1Ni5iYWQtbGVuLnAxMiIsCisgICAgICAg ICAgICAgICAicGJtYWMxXzI1Nl8yNTYuYmFkLXNhbHQtdHlwZS5wMTIiLCAicGJtYWMxXzI1Nl8y NTYubmVnYXRpdmUtbGVuLnAxMiIsCisgICAgICAgICAgICAgICAicGJtYWMxXzI1Nl8yNTYubm8t c2FsdC5wMTIiLCAicGJtYWMxXzI1Nl8yNTYudmVyeS1iaWctbGVuLnAxMiIsCistICAgICAgICAg ICAgICAicGJtYWMxXzI1Nl8yNTYuemVyby1sZW4ucDEyIikKKysgICAgICAgICAgICAgICJwYm1h YzFfMjU2XzI1Ni56ZXJvLWxlbi5wMTIiLCAicGJtYWMxXzI1Nl8yNTYuYmFkLWtleS1sZW4ucDEy IikKKyB7CisgICAgIG15ICRwYXRoID0gc3JjdG9wX2ZpbGUoInRlc3QiLCAicmVjaXBlcyIsICI4 MC10ZXN0X3BrY3MxMl9kYXRhIiwgJGZpbGUpOworICAgICB3aXRoKHsgZXhpdF9jaGVja2VyID0+ IHN1YiB7IHJldHVybiBzaGlmdCA9PSAxOyB9IH0sCitkaWZmIC0tZ2l0IGEvdGVzdC9yZWNpcGVz LzgwLXRlc3RfcGtjczEyX2RhdGEvcGJtYWMxXzI1Nl8yNTYuYmFkLWtleS1sZW4ucDEyIGIvdGVz dC9yZWNpcGVzLzgwLXRlc3RfcGtjczEyX2RhdGEvcGJtYWMxXzI1Nl8yNTYuYmFkLWtleS1sZW4u cDEyCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uNzE2MmZkMTg3MTc5MGUzYWI5Y2JjNGUwMGZiNzNjZGY2M2Q1ZTY0 YgorR0lUIGJpbmFyeSBwYXRjaAorbGl0ZXJhbCAyODAzCit6Y21haSRje0o0ajhwajdTNytENlIk UHl1eDx2V1p1U3E0IWsrMUc0XjNfQGdVR3shUT5fQ3VEb1ZQdVUjdmo0YEsKK3pyT2hiNm5QaU95 U3dmZ0g2NCZxQ2QrT1lLP201M2RwN1Q4S194bX1ZJndzRDswNjRCU1J1KG5AJEt9V2xKKCo7ZAor el5xcSU9Z1FXPF5icTxXPEdDOG1mMFVTOD5jZj8rVjFJSFgjNXYoa3JnQkpXZFZGQkVLMj8hNWg0 SXE5P1phQFlNCit6XldpaTBicmAhR2dlcXU7WVp7QFhTWG50aTA1PzE1emtnK2dMT181eEpKY2h8 ak84akRuQl5vR1JeZz9jZ0VuZTQKK3psI21KOD1vUTZBVnt1P20la350NEV3fU5WV2FyNV9VNT1n ZStseDlRWW19PGRIZztTZnRhaipQPG8oZVNlYz9gSAorelUybXltSj9EVWlTYWB2VCpzN3J9Rk18 fUUpXmxkM095JEFDeGllcSNUNmJybll7cEl2VDx9WDJ4aFprVDdTRiU8Cit6UHo+Jn1DRkFDUigl JlB8KV9mJjYjb3goM0lOZ18zP3o1PnNzVUItdEwhUnROVigmS2VQd2wwbWBxNlImbXt+Nn0KK3o0 e1lQYVRrWTxNKGtgb3t4WFlDWmVXWkxudkV6WCV5KGd4RzdyQHYkbWE1Wng3OH5vZ25lMUBmZDhx KXpXIz9oMworek0mQnolYkohektqdWdtI3dqJiM/LX1edWZqVFApd2xRK3l5UGN4Qmc7Uks7bXZi dkc4U0Q/SClLX3FyKUNMWDgqCit6QnxIfElWQ0tCbG1Pdloqel9nSnt5bmtyYiU8O2w9X3FSKyQt UjkrI3NlTSVmbSkxciZNfk5ORSYrUHs/KSFvUU4KK3pYTUlJNDcxcVFuITdnWSY5V1MoRW15TGo9 Z3BiVFU8YDk9WnpWfkFCeXB9XzZ2PEdaTWQmbl5AKmVhJll2elZeNgorenoqWnx7VXR2fDh2QS0+ Knp5RT1AI3c8cigwNC1Ab3gha1NNVlBnI0k0QS18JEtaRDhfQCo5NyU4STNjV1FqVFdXCit6aG8w ejVvZVVDQ3p+Jkh1Z3t3NVo/MlpuIzNtZzhsSklDemAreGRjejUocnNXS1RHdW9PVWpDP3o5O2JE NSZXKDYKK3owdChNJjk7PnZtZEpOWD1QcyVrN2BtayYyVGlafHotSWphWURjb0RqQGw2fTAraiQx T0FIXzQ2JHYobEReYjEqbQorekhHfFR1UzM3MH41dFV+Wl4oV19pdUF9MEYtNGJsKGhrV2JiZUlF Xn50fCZMWEl0UkBpUUFJZ09aLXB8KzRidXhjCit6cTZKR3FiVzlnOzVnTztBYjI+X2ZqNWVJMG9C QkFUeVcoY0dZVnBHPkN2ZDRzWlFNd2c9c1RIPFBxIV5tWkRYbUsKK3ozS2deV2x6akQ2TVZyX3pi X34/QmVxd34pVUkkc15pPVlnMF4+KUcwe3IkRV5UY0ljRShIZT5BT2UqKWJefCsjYQorelB1QylB dnQpbkRKbVNldkBRYXVwRX4yZyt1eUNwTGB3SVcqVWk5dEFycHgjezMkK09XTXl0SU4oMG9rJTZi QH1jCit6Yi1lJU17MEN4NT8+biFgZWRUNiFZdF8jSmpaPitvbnpYandLZjMtTnBIODAkJHN8WSZG ZVJINHFVNnhrKjNRaUcKK3pye2tVbGBDLWpGR3EqSWE5TEFSfUBYIzV0bjZsWSFgbUYwRC0tRDk4 JGY2cmM/YF5ebDheNytAWHwwakQjaTgmcgorenBnTE0jVVUkNDVJKm58KXNQdV8qbUdjdy1LPXRC QExQTGlRKylJPXZDQHc0PTgrSG04KUUwVTd7anRAM2pWazszCit6JUtoR2BXK1hGeSlVUXZidX07 YHA8WXR9PGJFZXkhWj9rQSRlYiVhais8eH4+YWRweyVqLXc/ZUw3ZWtaY2J2QlIKK3ohaWRVVCZK YllIeXQ8c20xdmh+PVp7TTQyTj4/c3l2QkF+Znt+RnFZJihKZ1RLN3wqMWJncHxqQj0kdzdhMiVW Yworem0+dXljenJzNTBza29pMCZhVHNPY1p+VkIlN2sqKU84Q0NzNGhDNj9nSmRxe3ZobWhlRnBz OXV3RFNOUXIxbHFBCit6e3N0QUsyI2tYfklJcyYyRHdxQXhlO0NIaSNsbV9KWTlFO0R7eyR2a3I+ O0IjI1VOPzBneD5HKUR5IzR4IVBOTjAKK3pMe2h7MipkTlNlM0RjQ1NTeypQQkpSRmBTbX1QYzBh JCtLXmhPTClxRll6V3Z2QHp1SFUtdEByIVd4dWJ4RGpxfgorendQaSNhMUpAfU1MKyY9MnFTNS1e UE1CbkxebHJxZkheZjhYdkc2QGVmTTIqKUQpazl0UjhCMT8kNHBFMFh3JV5XCit6ai1Hans7Pzkp UnB3VEheMkpPZEMrU0pJcFlSe3NZOz9rWG1abk5ZKjNCO3h5U0teQ1VSQlhvZG1iT0I7OUN5N30K K3pCZihfR2g5YTBDbVdHWD9oRWtwTUAkVTBDIzNOe3lEISQhTnw4a2RrZm1xfGNqSlE+dVREN1Zo Y2s7b3xZVWg+bAoremNoYSYlIyNvd3Q9MVpEKWxPISlRK1Y2d0hRVWF+OClQb3FicCl+LVpYKDck fWlBaiZpa1dOYDNuNHIxWWhyVjRhCit6I3JBbkhRTjNAeWN4a012ZDIqaGJWU2VRTmlKejRHMlgp eUVEfGJXVnAzUUBhI3ZgNCt5elNoUzxBJEAhZT5fNlMKK3p4KWdRcHV9aUhXbjAoblhgKWlUUDhf UGNrO3BiZDh6Q19NJVRBT1BOUll5NzZPQ3I0a1E3ejZnbFpmUypYUysjbQoreiooSkpNN3NURDtN bmU0UjxiKDV7SE5YX0RVP1hnU21AQHZpRCRfIVdaQzFtOE5ZTVRENVVVWm56JCNVSylXcz0hCit6 WF9LVUd5QC04aW84Zz1TYEJnV300Pz9gcGAtPGN8YD9pe3lKek8rNWhxJT5yWX1teHNkVV5xbEhR K0lze2o9Y0YKK3oofV9yUShYIVh3Vnc4TDkrNyR7cHI0PFpabEkybl5BdmZNU0pMbj8jdHxtUlUl MlFzUm9eRT1tT09yQ2RwZmNnUgoremhmRyk5bmRBfTI9TCY7c2VtZ0VQSHlDdV9NcmFGQ2Yhcj1r IXV4XnA2fDd4cSt7e3pIcyM8QW1SJDNmeFE1cHc0Cit6Pjd+MFJUVnJ4WXU8TSNUYDl9JGl1UGRu KXAwcmhgJmMhKGkrWVk1cVcmRTlFMH5kV2ImXmUhbT4qQn1zOUM/O2wKK3pQQyk3ZmVaRHlfUj18 Z0xFWV5gT2l6d2lHcyFueVg9b2kjJG10cTBgRmA8ZClSRENrJXhaXiNTSEFDMlhXcm8kegorej0l ajl5YzJwb213NzV+WEZeQVZYbyN9ayNSWnJwTSZwZlpJcVhRb31tbnVqd0x3bTtPQ1pSdCs9RCFU PTVucnJMCit6dU1jdE1RajU2bVd5JHY5JWVEZmNmaWRHfFBSVlZuZjlSUUgoZWh+MV53OW1GM2Mr Oy1DeUM/fnA2MXJLKHsqa3MKK3pBciRKPFhgdUheK0gzV3Rwd2lSUjJKdF47I1hpZDJwJUNfXmpU Sj94d2JgKkAmYn5ebTV3RnooJkUhNDQ1dEtSJAoremErPkYzWDhUaHdnMiF3dDF5cVBMVDkyOzxp Uj5CUUVNKDwtTE9uOSN5JWNpb3JlK3VqJGttWmpieHhNT1R3WD8rCit6M1coUmBhTlVJK2Apbkhi X31XQUVSTHJ0d01BbF58SGYtfmdvMjU1ZEZjRlg9QHpQbFA+ZGFjcT5GTCVyZCMpYFUKK3ooQ2d2 PGFNRkk/R2dLfkw5PXJQYEJVITgjWS1GdEQ+Zj1KaHdeMld5SXJWdit7KGZ9bztXfH1BJkduPnFo UGJHdQoreip+MFdycHlydGo0ZWxNUmhBSGwkPWN2dHNleGJ4U19tR2ZgX0ZObkpKcX1CJlpNKyts Q0RIeEMqRGgmSit4Rz54Cit6Tkl7UF5iSmNHfTI8K21LWEhteGpZalVMU0FMO0ZSRFh3VEUrQDxN N1dxOGJhRDRseF4mZEtpZWVeZEJyISZfV0gKK3pIMm5LdE5Ycz1nZl8xbzEkTGlwZkZpdHxVUUhS cXZwQmN4MXhrbXJ8MEpEbnpaPkV7VkRWczhMVU8/RSU7bm09cgorenFjQ1JEKkRQTm5xQFJTZ2Ao I0N4WkNGbyhVYXFCJFc7fmEtX3hCVnY8Yy1vYk4ofCgwPWw0RihtciE1aFVTPlhBCit6WFAwNzxU cTtScURxZXBnQ2wrZWJxUW1yYyFUYWhUSXdSSXJ0OHI1RXNNNlZfdGRQTzRYfjxDdT9UMyYxWVkj XykKK3oyRXEpR2BVUDRqOTA4WFEwMG5AcWdTPGhXMmlAO3J4JmFDVXE8Xm1uQXI2RCMtUUtPZHNj VXZWa09gc08wJlpsRAorejtuOCRDQVRBdlUyUUt+RWd6eTUhMFA/cncySVJvN3BOYUcxanVOOXhs P0dtN1FTbCN8ZT4wZXNNZXUqXyF+ZVAjCitwIUlFa0tEVl84JnUlNCFJY04/dUtkLWNqWjRsOUtQ OHxyPWhlcEY8YiRMOVkoYCFDMyE1a3ZxMAorCitsaXRlcmFsIDAKK0hjbVY/ZDAwMDAxCisKK2Rp ZmYgLS1naXQgYS90ZXN0L3JlY2lwZXMvODAtdGVzdF9wa2NzMTJfZGF0YS9wYm1hYzFfMjU2XzI1 Ni5nb29kLXNob3J0ZXIta2V5LWxlbi5wMTIgYi90ZXN0L3JlY2lwZXMvODAtdGVzdF9wa2NzMTJf ZGF0YS9wYm1hYzFfMjU2XzI1Ni5nb29kLXNob3J0ZXIta2V5LWxlbi5wMTIKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li4zYzIwMmRkNThkN2ZhMWQzY2Q0ZjlkNzI1MjU2NWFmZjIxNDVlYzk2CitHSVQgYmluYXJ5IHBh dGNoCitsaXRlcmFsIDI4MDMKK3pjbWFpJGN7Q0xLOHBwPyZuSzBKTGxDNWwkQzI1QVMzeGk1ekVm SXlSRWl+M0pfT1g8O08hanE1Z1ZDVld0MEZSeQorekxXbjVEKnY3dWhGY2dZaEA0NUhYeCViPzIt YW5yNkptMnM0SWx0ZTNwWXRHYVR1ZE12SXw5ZSQwTzM/aEcpPiYoCit6VkxRTV56O1RAZztrWnVp K2hfejFsPjhAeDVPQVJJZUpjZFcySDA8WWUtYnU/JVduYlpMRChYWWU8VXxUNCNlTmMKK3paa1la VmFvYWJHKSZTeVctSkF5a0lSRlQ1Mio8eUYxIypHYDJ1VFIxWW9hTmVDcChCdTNCPj0jaUBadGRE Zyk7cAoreiVge0J5bDE5aGlLbWghMEt9X2t6R044a3wrWHNsS0tLSTM0UlhQcjRMfWAmUXc5SmB3 VmlJR24/d35XSFA/V0t2Cit6d0l5R18kdHlMWDBga1g+dU9ZTDJRaTtwYFAyYm0zeXk0fk4kfmx9 JUh6MVYpXkJyJnhNbEoqNlpAJFlqSUslNUoKK3pCJXlVQl92eGkkWiZsPWNfdV82SXBFezt8QW1Z ZlN5YUdOKyt0eDNhRnYyYXhjUm9HYEttVGVSNitOaH5XV2JxbAoreklXRmhLIztGakRXbEdRY1cq X29vOUZpKWQrJl5zVDd8diZpRz9ITHRkbWdRSTdSOGYheVNubn5iODReYWI8OSRVCit6ZHokbnx6 Qk9KZ2VWeWNOSVV5SmBLY3FrTz80QjlKZD5VVEtxcktvPnpFJl8zWTVZamtaS2gwZ0V8KWBYaXUx dFcKK3o7ZTBaS3M/MS1vZlUtX3lqV307bztmMEpGczJGRz9wJD17dHFTPFJ6S1U4NGE7dml3TSo7 LUpBbCNyVm87VVZtdQoremI/cHxfRHpxOFp1eStLJTA1Y2tLbyhZXzchWE9rNm1+P18jPE1fUjEq aWwrJXpWSW08aXUoQSZ6LVIwSGhDcWd9Cit6WUp9cUo8VSt8RyNzYWpMcn1VM3ZMfTs8QHVAQi04 UXQ3WTRvZGFkdkItMkVHRFdMbjs9XnMoKFVjfk9NTE5NMFQKK3ohPUQtJnJ7PVZiKEAjdVBOYjF8 UCtXUnJwK1J+SWtWaEBgfT4mZV5Bbm5hSWdIPGIhTD09QW0wS2VIcllzKmclSgorem1eU1lkPE04 YXg0VkkjUF5sXldeX2IkQEQzJWxGcy1pdlhySjRBYkQlZGc4fnNlPSRsRkdCIVhaZD5BMXE1dCpu Cit6QTd2ZHMyNU9zSWBQfnQ7Mmx+Jk1ILT9LIS1iVSQhKyFFSlJBdndjWTgrWGdmJV9gfTskIUBh O2RoR1FJSF5veE8KK3pCcjhTRkxJKjFiR3EoUmVjQ15vQ2lDT2d1fEJhJEAzN353SEpMOD8mWSN1 aFRPWVk8dUYqJTVZblJCeTtZM1J3ZgorelRoczdyaEFQbFVAdnFtbXo2WVM7aVJ5TDVne3RtJGl3 ekdebDIjfnpmTCUpUXlARDt4dUFfTHopMkZrXjVyQV4oCit6NyVfdGk3VXBmaWlNPGxZenwpTW9O Pz5TKz5LQmBrRyZfST5JdDhwS0VmNyUodXZDekwwK18oIUttVilgcEhKe3sKK3opTHRDZURMPDV6 K1JpMTUySngwU0VgVjAkVVNZISpTPDZ9O2BlSHZtUnEyTV5JTU9MUUh4eDJMPUlQVDFwNnkhSAor el9wUHklZzR5RGU5ZCtTUEd2bXA9e3RNUk9DUTg7WndmSCpReXhtSkJhV0EmfmxCP3J7OTxGO1ll Y2Q+KCZYRjBnCit6UiNKPXZiNEhwPUd0IXVLUHNITms8Jmx+I1VhaCkoXl5udUw5N2g5MzEmRSEm THEjaCkjKHUyOTJvRDM4Qi1kZGAKK3prQ3djajwybXcrK29Fa0c8N31FKkRUQyVjZzhPeW0pdCpv WXZPQWo2SD8hbEpYWSh3antuUTkoIV85fWxPZHFobQorej5YSW5VciVffVUkcUdVJkg/aHhqSmZi SF9PJEB9N1d2IWRlYkZqITcpQXh1bk19KVdPWlhjc0F3a0s4PSt2dm41Cit6IT1WcHRjNnBEV3c/ YiE0O3h+UnhHXlB2USQoaCh1Kk1JNmRxUVgxMEhXSD1YOUtJKX5pc1ZEIXo+an0oPCE/fWQKK3oy X1BKfWFOb3x8dVNeS15LTWRwTVZndjRuK1dWJlpLWT9sS3NfcFpoXmtXO2JSKlNLaStfX3UtMiZR dH5GfUtuJgoremNHYVpCJUdsPT5wSipUKXNNb1pJQHAxJiNMUmIjSlBpaE9VYGw7NTZpJWJgfWkw JHJvQDdDeUk4OHdLKiR7TmQjCit6blZoeVZGeDYtdjhFWTdDJC1PXipGZUBhPzE4UXh9YlMrb0R7 NFZ+a01yI3w8XzQ+MHAhWDQxYFFoTFhjcWslYHgKK3ozSDcrVW4hPihvaEhtXnMybFlxYUR2dWpo cUhuJHNnWUE1Tmd8OXYhK2tFfEhja1NwMG1ESn5eP0ptPmVxZmUlSgorelhMWEdWVVBgTys0VlBo c21FXlR3MDFacDBOTlBvd3hqTCNKXl9JITR0NFElKnshfHEqb35qXmxeVCNjQzF6Pkh8Cit6VWUj Vz9AYDNqbV45Z3plREpoIVV2PSg2TVVqJlVQWVJeQjFTJlcxby13WC1eT2RiO3s8K3xUbjRWNVgk QUwqUVIKK3o4Sm5JR2QyKl9Ja1pZY0ttUntaJXhQM0E9eE0td3ZUezBuUjw0SzBpYzNYKzxwaE08 UGVSX2sxI3ZYcFdBISU2ZworekVZezlzMFhaSSpCVUpTciFAd3Y3QW50VXFibztWO0c8UnE7TzFg OG9jODRSd21fMjBHUTxGd28ye3AzNHAmUl88Cit6WXI/KDIzMnA0UiNIMF5VbXEhWlRPJTttKVRP YXpoSU4jVjJURHVwbnRGSDNlPWVKQD4xdXUhR0ltRkFvajY3WGYKK3paN31BeDBlO0I2YTl3cClv dUY4XmFReU1zWXFnVGBjTj1MV3pKd185UWYpNEsoeTJ6dV9oZjtPU0ctcnhLXzgtdAoreiYhJTJg TCpMKU9FIX4wLUxPe3RmTz9pMmFYWDxOOTF+RzM7cUxUT3BLYVVORyt9O1kjXkJYVTI0OFpgPFct MzJECit6b3ZMJVdaWHpxJT5kMjd3Unx3KGBJKGE0ZCpHSWRlQV9lKnw4fjltK2hYSU0rZGpIMn51 OVFXNnJ6JkxxQyZ9KWgKK3olZ2hMamtuTnpAK2lNZ0hpaE5EQXI8KDJLMzdjI1laT35pWV9QVD1N UGl1YEByWlpHYT5rRXheRWYtPGJ0OzVBfQorenclNlQwWnJWUmR7MXpPVHgxdVdiJHkmK2l3c2Iz dG5tdTM2PitCJnNmfTgwZF4zaj4qa0VMOE8qSzVXczQ+eWBJCit6ek9PJWt5KmNCcnl2b2plQlY2 T1FrcztTPyRiRzlSXn44JTdAP1lFVTI2enF1KD42KCZyM052JD9EeT8+eEY7Kn4KK3p2YCNlYyEz PCNUdUZUMmA4cVBfODRuPUNgNEMqeHR1fntlUj1qOEpBU3RlVH5zZW44V1gqY0JiPilVJEh3U200 ZworelZTVTc+dlNkLTlEfHdDY1p4ZHQkQnklQEVAYjJfb25oTlchaklCPSZ5MjYlbjBiSihQSTMl ajVUNSstbih8TXpCCit6NUxBTyVxXlheTWhRQVFzaz9PUClaMU0xMGUrdzsmaSQqQ3RzUHh4eCk8 UW18RkpAMC03NUZtVlhlPSk4NVZ3PDYKK3pIeXB0QDUrKjhMUSoxUCRzRlczcUh4MXtpVTZlfUBg OEJHKCN9SkUjampNZXZzTDEkfHpNaHope0xDVU4zTUQ4RworemFndF5vcj99M1F5dzs7aDF6c3JM Q2d7TU9Fe0hoPmRePCRzTD1gX0VLSzAlV2xDdTZhdzMpQVZOQkB9OHJseUA9Cit6TGQxS2o1dSVN Jm90PlRDLW4rfSpAYktga1R3JT9jbkhQIzBkJWxEa1NvMnpeKzB1SnktY2xXbT87TUs5dDUobjMK K3p5TCYhJXQlISk2VG1nVERUI2JNKypATF5uZFd0Z0RCaiQ5ISg+VW9tMyE+LTNUMng5bmJFJjJG ZW1DYHpRSlVfUAorejM3bGZDbTgqJmNfTHJYKkpgTyFKPitZM3leV0BrUlZsPi1eM1hTWHhCe2s0 cyk/YiZtKXdtVnZxUE9CVDtURyNNCit6O0ttc1dge1JMb1pVbWE2Qz11NSkobiRvcHcyIShwRUdz I31mQEFybFdzKT8mc3I1R3xod2ZyR1dmSEhgS2p6QFAKK3peQkVyfkk+ZW84UmNlKjFFal9OUz8q cHo/MldTU3xEcWItJEgoSH5jXz5sc2ElTDUlRV5+fiRBWGxGPUVXZXc2NAorekFealYpb1B0UWYh IVVwazAwVkZiVDsxPjJfTlBFVjVKTDlQaVYjdjVCPjJYP287UjZrPUxIQFclRk58UFJpbmt5Cit6 PFBvdUhoK3VAeD9AY2YtIVVUYyhCZUBhc0FieURlQVFiQ0kwRkVkY1BSKnhgNGdKa3ZBZS1SLSs9 dV5sRXJPKDIKK21VRSlqYUhDdDx0U35IVDlZTTR8fWJKTzlmYVIzMkA9Q0orWmthNl8/S2w/QUdn JksoZgorCitsaXRlcmFsIDAKK0hjbVY/ZDAwMDAxCisKCmRpZmYgLS1naXQgYS8wMDY0LUNWRS0y MDI2LTM0MTgzLnBhdGNoIGIvMDA2NC1DVkUtMjAyNi0zNDE4My5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGE4OTZhCi0tLSAvZGV2L251bGwKKysrIGIvMDA2NC1D VkUtMjAyNi0zNDE4My5wYXRjaApAQCAtMCwwICsxLDUzNiBAQAorZGlmZiAtLWdpdCBhL2luY2x1 ZGUvaW50ZXJuYWwvcXVpY19jZnEuaCBiL2luY2x1ZGUvaW50ZXJuYWwvcXVpY19jZnEuaAoraW5k ZXggMGIyYTNhNGNiMmQuLjk2YzhkODllYjYwIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9pbnRlcm5h bC9xdWljX2NmcS5oCisrKysgYi9pbmNsdWRlL2ludGVybmFsL3F1aWNfY2ZxLmgKK0BAIC0xNDks NiArMTQ5LDcgQEAgUVVJQ19DRlFfSVRFTSAqb3NzbF9xdWljX2NmcV9nZXRfcHJpb3JpdHlfaGVh ZChjb25zdCBRVUlDX0NGUSAqY2ZxLAorIFFVSUNfQ0ZRX0lURU0gKm9zc2xfcXVpY19jZnFfaXRl bV9nZXRfcHJpb3JpdHlfbmV4dChjb25zdCBRVUlDX0NGUV9JVEVNICppdGVtLAorICAgICB1aW50 MzJfdCBwbl9zcGFjZSk7CisgCisraW50IG9zc2xfcXVpY19jZnFfZGlzY2FyZF91bnJlbGlhYmxl KFFVSUNfQ0ZRICpjZnEsIFFVSUNfQ0ZRX0lURU0gKml0ZW0pOworICNlbmRpZgorIAorICNlbmRp ZgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvaW50ZXJuYWwvcXVpY19jaGFubmVsLmggYi9pbmNsdWRl L2ludGVybmFsL3F1aWNfY2hhbm5lbC5oCitpbmRleCBiMDhlNjNlMTQ4YS4uZDMzM2JjM2U1ZTUg MTAwNjQ0CistLS0gYS9pbmNsdWRlL2ludGVybmFsL3F1aWNfY2hhbm5lbC5oCisrKysgYi9pbmNs dWRlL2ludGVybmFsL3F1aWNfY2hhbm5lbC5oCitAQCAtNDY2LDYgKzQ2Niw5IEBAIHVpbnQ2NF90 IG9zc2xfcXVpY19jaGFubmVsX2dldF9tYXhfaWRsZV90aW1lb3V0X2FjdHVhbChjb25zdCBRVUlD X0NIQU5ORUwgKmNoKTsKKyAgICAgY29uc3QgUVVJQ19DT05OX0lEICpzY2lkLCBjb25zdCBRVUlD X0NPTk5fSUQgKmRjaWQsCisgICAgIGNvbnN0IFFVSUNfQ09OTl9JRCAqb2RjaWQpOworIAorK3Zv aWQgb3NzbF9jaF9yZXNldF9yeF9zdGF0ZShRVUlDX0NIQU5ORUwgKmNoKTsKKyt1aW50NjRfdCBv c3NsX3F1aWNfY2hhbm5lbF9nZXRfcGF0aF9jaGFsbGVuZ2VfY291bnQoY29uc3QgUVVJQ19DSEFO TkVMICpjaCk7CisrdWludDY0X3Qgb3NzbF9xdWljX2NoYW5uZWxfZ2V0X3BhdGhfcmVzcG9uc2Vf Y291bnQoY29uc3QgUVVJQ19DSEFOTkVMICpjaCk7CisgI2VuZGlmCisgCisgI2VuZGlmCitkaWZm IC0tZ2l0IGEvaW5jbHVkZS9pbnRlcm5hbC9xdWljX2ZpZmQuaCBiL2luY2x1ZGUvaW50ZXJuYWwv cXVpY19maWZkLmgKK2luZGV4IDRlYTdhMmUwZDIyLi5hZmEzMzBjYmM0YSAxMDA2NDQKKy0tLSBh L2luY2x1ZGUvaW50ZXJuYWwvcXVpY19maWZkLmgKKysrKyBiL2luY2x1ZGUvaW50ZXJuYWwvcXVp Y19maWZkLmgKK0BAIC04Myw2ICs4Myw3IEBAIGludCBvc3NsX3F1aWNfZmlmZF9wa3RfY29tbWl0 KFFVSUNfRklGRCAqZmlmZCwgUVVJQ19UWFBJTV9QS1QgKnBrdCk7Cisgdm9pZCBvc3NsX3F1aWNf ZmlmZF9zZXRfcWxvZ19jYihRVUlDX0ZJRkQgKmZpZmQsIFFMT0cgKigqZ2V0X3Fsb2dfY2IpKHZv aWQgKmFyZyksCisgICAgIHZvaWQgKmFyZyk7CisgCisrdm9pZCBvc3NsX3F1aWNfZmlmZF9wa3Rf ZGlzY2FyZF91bnJlbGlhYmxlKFFVSUNfRklGRCAqZmlmZCwgUVVJQ19UWFBJTV9QS1QgKnRwa3Qp OworICNlbmRpZgorIAorICNlbmRpZgorZGlmZiAtLWdpdCBhL3NzbC9xdWljL3F1aWNfY2ZxLmMg Yi9zc2wvcXVpYy9xdWljX2NmcS5jCitpbmRleCAzYzU5MjM0ZmYwZi4uMTY4MThlNTVmNTcgMTAw NjQ0CistLS0gYS9zc2wvcXVpYy9xdWljX2NmcS5jCisrKysgYi9zc2wvcXVpYy9xdWljX2NmcS5j CitAQCAtNyw2ICs3LDcgQEAKKyAgKiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGlj ZW5zZS5odG1sCisgICovCisgCisrI2luY2x1ZGUgImludGVybmFsL3F1aWNfY2hhbm5lbC5oIgor ICNpbmNsdWRlICJpbnRlcm5hbC9xdWljX2NmcS5oIgorICNpbmNsdWRlICJpbnRlcm5hbC9udW1i ZXJzLmgiCisgCitAQCAtMzA3LDYgKzMwOCwyMCBAQCB2b2lkIG9zc2xfcXVpY19jZnFfbWFya19s b3N0KFFVSUNfQ0ZRICpjZnEsIFFVSUNfQ0ZRX0lURU0gKml0ZW0sCisgICAgIH0KKyB9CisgCisr aW50IG9zc2xfcXVpY19jZnFfZGlzY2FyZF91bnJlbGlhYmxlKFFVSUNfQ0ZRICpjZnEsIFFVSUNf Q0ZRX0lURU0gKml0ZW0pCisreworKyAgICBpbnQgZGlzY2FyZGVkOworKworKyAgICBpZiAob3Nz bF9xdWljX2NmcV9pdGVtX2lzX3VucmVsaWFibGUoaXRlbSkpIHsKKysgICAgICAgIG9zc2xfcXVp Y19jZnFfcmVsZWFzZShjZnEsIGl0ZW0pOworKyAgICAgICAgZGlzY2FyZGVkID0gMTsKKysgICAg fSBlbHNlIHsKKysgICAgICAgIGRpc2NhcmRlZCA9IDA7CisrICAgIH0KKysKKysgICAgcmV0dXJu IGRpc2NhcmRlZDsKKyt9CisrCisgLyoKKyAgKiBSZWxlYXNlcyBhIENGUSBpdGVtLiBUaGUgaXRl bSBtYXkgYmUgaW4gZWl0aGVyIHN0YXRlIChORVcgb3IgVFgpIHByaW9yIHRvIHRoZQorICAqIGNh bGwuIFRoZSBRVUlDX0NGUV9JVEVNIHBvaW50ZXIgbXVzdCBub3QgYmUgdXNlZCBmb2xsb3dpbmcg dGhpcyBjYWxsLgorZGlmZiAtLWdpdCBhL3NzbC9xdWljL3F1aWNfY2hhbm5lbC5jIGIvc3NsL3F1 aWMvcXVpY19jaGFubmVsLmMKK2luZGV4IDYzMWYyODliMzkxLi45NTM0Y2JjYWY3ZiAxMDA2NDQK Ky0tLSBhL3NzbC9xdWljL3F1aWNfY2hhbm5lbC5jCisrKysgYi9zc2wvcXVpYy9xdWljX2NoYW5u ZWwuYworQEAgLTIyMTMsNiArMjIxMywxMiBAQCBzdGF0aWMgdm9pZCBjaF9yeF9jaGVja19mb3Jn ZWRfcGt0X2xpbWl0KFFVSUNfQ0hBTk5FTCAqY2gpCisgICAgICAgICAiZm9yZ2VyeSBsaW1pdCIp OworIH0KKyAKKyt2b2lkIG9zc2xfY2hfcmVzZXRfcnhfc3RhdGUoUVVJQ19DSEFOTkVMICpjaCkK Kyt7CisrICAgIGNoLT5kaWRfY3J5cHRvX2ZyYW1lID0gMDsKKysgICAgY2gtPnNlZW5fcGF0aF9j aGFsbGVuZ2UgPSAwOworK30KKysKKyAvKiBQcm9jZXNzIHF1ZXVlZCBpbmNvbWluZyBwYWNrZXRz IGFuZCBoYW5kbGUgZnJhbWVzLCBpZiBhbnkuICovCisgc3RhdGljIGludCBjaF9yeChRVUlDX0NI QU5ORUwgKmNoLCBpbnQgY2hhbm5lbF9vbmx5LCBpbnQgKm5vdGlmeV9vdGhlcl90aHJlYWRzKQor IHsKK0BAIC00MDYwLDMgKzQwNjYsMTMgQEAgdWludDY0X3Qgb3NzbF9xdWljX2NoYW5uZWxfZ2V0 X21heF9pZGxlX3RpbWVvdXRfYWN0dWFsKGNvbnN0IFFVSUNfQ0hBTk5FTCAqY2gpCisgeworICAg ICByZXR1cm4gY2gtPm1heF9pZGxlX3RpbWVvdXQ7CisgfQorKworK3VpbnQ2NF90IG9zc2xfcXVp Y19jaGFubmVsX2dldF9wYXRoX2NoYWxsZW5nZV9jb3VudChjb25zdCBRVUlDX0NIQU5ORUwgKmNo KQorK3sKKysgICAgcmV0dXJuIGNoLT5wYXRoX2NoYWxsZW5nZV9yeDsKKyt9CisrCisrdWludDY0 X3Qgb3NzbF9xdWljX2NoYW5uZWxfZ2V0X3BhdGhfcmVzcG9uc2VfY291bnQoY29uc3QgUVVJQ19D SEFOTkVMICpjaCkKKyt7CisrICAgIHJldHVybiBjaC0+cGF0aF9yZXNwb25zZV90eDsKKyt9Citk aWZmIC0tZ2l0IGEvc3NsL3F1aWMvcXVpY19jaGFubmVsX2xvY2FsLmggYi9zc2wvcXVpYy9xdWlj X2NoYW5uZWxfbG9jYWwuaAoraW5kZXggYWU0NDNmY2NjYTEuLmViMDgyZDZjZWE3IDEwMDY0NAor LS0tIGEvc3NsL3F1aWMvcXVpY19jaGFubmVsX2xvY2FsLmgKKysrKyBiL3NzbC9xdWljL3F1aWNf Y2hhbm5lbF9sb2NhbC5oCitAQCAtMTIsNiArMTIsMjggQEAKKyAjaW5jbHVkZSAiaW50ZXJuYWwv cXVpY19zdHJlYW1fbWFwLmgiCisgI2luY2x1ZGUgImludGVybmFsL3F1aWNfdGxzLmgiCisgCisr LyoKKysgKiBUaGlzIGlzIGEgcGFydCBvZiBQQVRIX0NIQUxMRU5HRSBmbG9vZCBbMV0gbWl0aWdh dGlvbi4gVGhpcyBsaW1pdHMgdGhlCisrICogbnVtYmVyIG9mIFBBVEhfQ0hBTExFTkdFIGZyYW1l cyAgUVVJQyBzdGFjayBpcyB3aWxsaW5nIHRvIHByb2Nlc3MgZm9yCisrICogY29ubmVjdGlvbi4g TG9jYWwgUVVJQyBzdGFjayBjcmVhdGVzIFBBVEhfUkVTUE9OU0UgZnJhbWUgZm9yIFBBVEhfQ0hB TExFTkdFCisrICogZnJhbWUgaXQgcmVjZWl2ZXMgZnJvbSByZW1vdGUgcGVlci4gVGhlIHJlc3Bv bnNlIGZyYW1lIGlzIHB1dCBDb250cm9sIEZyYW1lCisrICogUXVldWUgd2FpdGluZyB0byBiZSBk aXNwYXRjaGVkLiBUaGUgUEFUSF9SRVNQT05TRSBmcmFtZSBpcyByZW1vdmVkIGZyb20gQ0ZRCisr ICogYWZ0ZXIgaXQgaXMgZGlzcGF0Y2hlZC4gVGhlIFFVSUNfUEFUSF9SRVNQT05TRV9RTEVOIGxp bWl0cyB0aGUgbnVtYmVyIG9mCisrICogUEFUSF9SRVNQT05TRSBmcmFtZXMgd2FpdGluZyB0byBi ZSBkaXNwYXRjaGVkLiBObyBuZXcgUEFUSF9SRVNQT05TRSBmcmFtZXMKKysgKiBhcmUgaW5zZXJ0 ZWQgaW50byBDRlEgaWYgcXVldWUgbGltaXQgaXMgZXhjZWVkZWQuCisrICoKKysgKiBRVUlDIGlt cGxlbWVudGF0aW9ucyB1c2UgZGlmZmVyZW50IGxpbWl0cyBmb3IgUEFUSF9SRVNQT05TRSBxdWV1 ZSBsZW5ndGhzOgorKyAqICAgIHF1aWMtZ28gZGVmaW5lcyBtYXhQYXRoUmVzcG9uc2VzIGFzIDI1 NgorKyAqICAgIHF1aWNoZSBmcm9tIGNsb2FkZmxhcmUgc2V0cyBERUZBVUxUX01BWF9QQVRIX0NI QUxMRU5HRV9SWF9RVUVVRV9MRU4gdG8gMworKyAqICAgIHQtcXVpYyBmcm9tIHRlbmNlbnQgY2hv b3NlcyBNQVhfUEFUSF9DSEFMU19SRUNWIHRvIGJlIDgKKysgKgorKyAqIE9wZW5TU0wgaGVyZSBp bnRyb2R1Y2VzIFFVSUNfUEFUSF9SRVNQT05TRV9RTEVOIGFzIDMyLgorKyAqCisrICogWzFdIGh0 dHBzOi8vd3d3LmlldGYub3JnL2FyY2hpdmUvaWQvZHJhZnQtY2hlbi1xdWljLWxvZ2ljYWwtdnVs bi1taXRpZ2F0aW9ucy0wMC50eHQKKysgKiAgICAgKHNlY3Rpb24gNC4yKQorKyAqLworKyNkZWZp bmUgUVVJQ19QQVRIX1JFU1BPTlNFX1FMRU4gMzIKKysKKyAvKgorICAqIFFVSUMgQ2hhbm5lbCBT dHJ1Y3R1cmUKKyAgKiA9PT09PT09PT09PT09PT09PT09PT09CitAQCAtNDU3LDYgKzQ3OSwxOCBA QCBzdHJ1Y3QgcXVpY19jaGFubmVsX3N0IHsKKyAKKyAgICAgLyogSGFzIHFsb2cgYmVlbiByZXF1 ZXN0ZWQ/ICovCisgICAgIHVuc2lnbmVkIGludCBpc190c2VydmVyX2NoIDogMTsKKysgICAgLyoK KysgICAgICogUkZDIDkwMDAgU2VjdGlvbiA5LjIuMSBzYXlzOgorKyAgICAgKiAgICAgIEhvd2V2 ZXIsIGFuIGVuZHBvaW50IFNIT1VMRCBOT1Qgc2VuZCBtdWx0aXBsZQorKyAgICAgKiAgICAgIFBB VEhfQ0hBTExFTkdFIGZyYW1lcyBpbiBhIHNpbmdsZSBwYWNrZXQuCisrICAgICAqIFRoZSBjb3Vu dGVyIGhlcmUgYWxsb3dzIHVzIHRvIGRldGVjdCBtdWx0aXBsZSBwcmVzZW5jZQorKyAgICAgKiBv ZiBQQVRIX0NIQUxMRU5HRSBmcmFtZSBpbiBwYWNrZXQuIFdlIHByb2Nlc3Mgb25seSB0aGUKKysg ICAgICogZmlyc3QgUEFUSF9DSEFMTEVOR0UgZnJhbWUgZm91bmQgaW4gcGFja2V0LiBSZW1haW5p bmcgUEFUSF9DSEFMTEVOR0UKKysgICAgICogZnJhbWVzIGFyZSBpZ25vcmVkLgorKyAgICAgKiBz ZWVuX3BhdGhfY2hhbGxlbmdlIGZsYWcgaXMgYWx3YXlzIHJlc2V0IGJlZm9yZQorKyAgICAgKiBv c3NsX3F1aWNfaGFuZGxlX2ZyYW1lcygpIGdldHMgY2FsbGVkLgorKyAgICAgKi8KKysgICAgdW5z aWduZWQgaW50IHNlZW5fcGF0aF9jaGFsbGVuZ2UgOiAxOworIAorICAgICAvKiBTYXZlZCBlcnJv ciBzdGFjayBpbiBjYXNlIHBlcm1hbmVudCBlcnJvciB3YXMgZW5jb3VudGVyZWQgKi8KKyAgICAg RVJSX1NUQVRFICplcnJfc3RhdGU7CitAQCAtNDY3LDYgKzUwMSwxNSBAQCBzdHJ1Y3QgcXVpY19j aGFubmVsX3N0IHsKKyAKKyAgICAgLyogVGl0bGUgZm9yIHFsb2cgcHVycG9zZXMuIFdlIG93biB0 aGlzIGNvcHkuICovCisgICAgIGNoYXIgKnFsb2dfdGl0bGU7CisrICAgIC8qCisrICAgICAqIG51 bWJlciBvZiBwYXRoIHJlc3BvbnNlcyB3YWl0aW5nIHRvIGJlIGRpc3BhdGNoZWQKKysgICAgICog ZnJvbSBjb250cm9sIGZyYW1lIHF1ZXVlIChDRlEpCisrICAgICAqLworKyAgICB1bnNpZ25lZCBp bnQgcGF0aF9yZXNwb25zZV9saW1pdDsKKysgICAgLyogbnVtYmVyIG9mIHBhdGggY2hhbGxlbmdl IGZyYW1lcyByZWNlaXZlZCAqLworKyAgICB1bnNpZ25lZCBpbnQgcGF0aF9jaGFsbGVuZ2Vfcng7 CisrICAgIC8qIG51bWJlciBvZiBwYXRoIHJlc3BvbnNlIGZyYW1lcyBzZW50ICovCisrICAgIHVu c2lnbmVkIGludCBwYXRoX3Jlc3BvbnNlX3R4OworIH07CisgCisgI2VuZGlmCitkaWZmIC0tZ2l0 IGEvc3NsL3F1aWMvcXVpY19maWZkLmMgYi9zc2wvcXVpYy9xdWljX2ZpZmQuYworaW5kZXggMDNi OGNlYmQzMDUuLmU4MDQ4M2I1MDFkIDEwMDY0NAorLS0tIGEvc3NsL3F1aWMvcXVpY19maWZkLmMK KysrKyBiL3NzbC9xdWljL3F1aWNfZmlmZC5jCitAQCAtMzEwLDMgKzMxMCw0NiBAQCB2b2lkIG9z c2xfcXVpY19maWZkX3NldF9xbG9nX2NiKFFVSUNfRklGRCAqZmlmZCwgUUxPRyAqKCpnZXRfcWxv Z19jYikodm9pZCAqYXJnKQorICAgICBmaWZkLT5nZXRfcWxvZ19jYiA9IGdldF9xbG9nX2NiOwor ICAgICBmaWZkLT5nZXRfcWxvZ19jYl9hcmcgPSBnZXRfcWxvZ19jYl9hcmc7CisgfQorKworK3N0 YXRpYyB2b2lkIHR4cGltX3BrdF9yZW1vdmVfY2ZxX2l0ZW0oUVVJQ19UWFBJTV9QS1QgKnBrdCwg UVVJQ19DRlFfSVRFTSAqY2ZxX2l0ZW0pCisreworKyAgICBRVUlDX0NGUV9JVEVNICpwcmV2ID0g Y2ZxX2l0ZW0tPnBrdF9wcmV2OworKworKyAgICBpZiAocHJldiAhPSBOVUxMKSB7CisrICAgICAg ICBwcmV2LT5wa3RfbmV4dCA9IGNmcV9pdGVtLT5wa3RfbmV4dDsKKysgICAgfSBlbHNlIHsKKysg ICAgICAgIHBrdC0+cmV0eF9oZWFkID0gY2ZxX2l0ZW0tPnBrdF9uZXh0OworKyAgICB9CisrCisr ICAgIGlmIChjZnFfaXRlbS0+cGt0X25leHQgIT0gTlVMTCkKKysgICAgICAgIGNmcV9pdGVtLT5w a3RfbmV4dC0+cGt0X3ByZXYgPSBwcmV2OworKworKyAgICBjZnFfaXRlbS0+cGt0X3ByZXYgPSBO VUxMOworKyAgICBjZnFfaXRlbS0+cGt0X25leHQgPSBOVUxMOworK30KKysKKyt2b2lkIG9zc2xf cXVpY19maWZkX3BrdF9kaXNjYXJkX3VucmVsaWFibGUoUVVJQ19GSUZEICpmaWZkLCBRVUlDX1RY UElNX1BLVCAqcGt0KQorK3sKKysgICAgUVVJQ19DRlFfSVRFTSAqY2ZxX2l0ZW0sICpjZnFfbmV4 dDsKKysKKysgICAgLyoKKysgICAgICogVGhlIHBhY2tldCBoYXMgYmVlbiB3cml0dGVuIHRvIG5l dHdvcmsuIFdlIGNhbiBkaXNjYXJkIGZyYW1lcyB3ZSBkb24ndAorKyAgICAgKiByZXRyYW5zbWl0 IHdoZW4gbG9zcyBpcyBkZXRlY3RlZC4KKysgICAgICovCisrICAgIGNmcV9pdGVtID0gcGt0LT5y ZXR4X2hlYWQ7CisrICAgIHdoaWxlIChjZnFfaXRlbSAhPSBOVUxMKSB7CisrICAgICAgICAvKgor KyAgICAgICAgICogRGlzY2FyZGVkIGl0ZW1zIGFyZSBtb3ZlZCB0byBmcmVlIGxpc3QuIElmIGl0 ZW0KKysgICAgICAgICAqIGdvdCBtb3ZlZCB0byBmcmVlIGxpc3Qgd2UgbXVzdCBhbHNvIHJlbW92 ZSBpdCBmcm9tCisrICAgICAgICAgKiBjZnEgbGlzdCBrZXB0IGluIHBrdCwgc28gQUNLTSBkb2Vz IG5vdCBmaW5kIGl0IHdoZW4KKysgICAgICAgICAqIHJlY2VpdmVzIGFuIEFDSyBmb3IgcGt0Lgor KyAgICAgICAgICovCisrICAgICAgICBpZiAob3NzbF9xdWljX2NmcV9kaXNjYXJkX3VucmVsaWFi bGUoZmlmZC0+Y2ZxLCBjZnFfaXRlbSkpIHsKKysgICAgICAgICAgICBjZnFfbmV4dCA9IGNmcV9p dGVtLT5wa3RfbmV4dDsKKysgICAgICAgICAgICB0eHBpbV9wa3RfcmVtb3ZlX2NmcV9pdGVtKHBr dCwgY2ZxX2l0ZW0pOworKyAgICAgICAgICAgIGNmcV9pdGVtID0gY2ZxX25leHQ7CisrICAgICAg ICB9IGVsc2UgeworKyAgICAgICAgICAgIGNmcV9pdGVtID0gY2ZxX2l0ZW0tPnBrdF9uZXh0Owor KyAgICAgICAgfQorKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL3NzbC9xdWljL3F1aWNfcnhfZGVw YWNrLmMgYi9zc2wvcXVpYy9xdWljX3J4X2RlcGFjay5jCitpbmRleCA3ODZhZjliNGMyMi4uN2Fi NTlmMDFhMWMgMTAwNjQ0CistLS0gYS9zc2wvcXVpYy9xdWljX3J4X2RlcGFjay5jCisrKysgYi9z c2wvcXVpYy9xdWljX3J4X2RlcGFjay5jCitAQCAtOTMxLDYgKzkzMSwyMiBAQCBzdGF0aWMgaW50 IGRlcGFja19kb19mcmFtZV9yZXRpcmVfY29ubl9pZChQQUNLRVQgKnBrdCwKKyAKKyBzdGF0aWMg dm9pZCBmcmVlX3BhdGhfcmVzcG9uc2UodW5zaWduZWQgY2hhciAqYnVmLCBzaXplX3QgYnVmX2xl biwgdm9pZCAqYXJnKQorIHsKKysgICAgUVVJQ19DSEFOTkVMICpjaCA9IChRVUlDX0NIQU5ORUwg Kilhcmc7CisrCisrICAgIGFzc2VydChjaC0+cGF0aF9yZXNwb25zZV9saW1pdCA+IDApOworKwor KyAgICBjaC0+cGF0aF9yZXNwb25zZV9saW1pdC0tOworKworKyAgICAvKgorKyAgICAgKiBBc3N1 bWUgcGF0aCByZXNwb25zZSBmcmFtZSBpcyBiZWluZyBmcmVlZCBvbiBiZWhhbGYgb2YKKysgICAg ICogZmluaXNoZWQgVFggb3BlcmF0aW9uLiBUaGlzIGlzIGZvciB1bml0IHRlc3RpbmcgcHVycG9z ZXMKKysgICAgICogb25seS4gVGhlIGNvdW50ZXIgaXMgYWxzbyBidW1wZWQgd2hlbiBjaGFubmVs IGlzIGJlaW5nCisrICAgICAqIGRlc3Ryb3llZCBhbmQgQ0ZRIChjb250cm9sIGZyYW1lIHF1ZXVl KSBpcyBmcmVlZC4KKysgICAgICogVGhpcyBjdXJyZW50bHkgZG9lcyBub3QgbWF0dGVyIGZvciBj aGVja19wY19mbG9vZAorKyAgICAgKiBpbiB0ZXN0L3JhZGl4L3F1aWNfdGVzdHMuYy4KKysgICAg ICovCisrICAgIGNoLT5wYXRoX3Jlc3BvbnNlX3R4Kys7CisrCisgICAgIE9QRU5TU0xfZnJlZShi dWYpOworIH0KKyAKK0BAIC05NTEsMzMgKzk2Nyw0MSBAQCBzdGF0aWMgaW50IGRlcGFja19kb19m cmFtZV9wYXRoX2NoYWxsZW5nZShQQUNLRVQgKnBrdCwKKyAgICAgICAgIHJldHVybiAwOworICAg ICB9CisgCistICAgIC8qCistICAgICAqIFJGQyA5MDAwIHMuIDguMi4yOiBPbiByZWNlaXZpbmcg YSBQQVRIX0NIQUxMRU5HRSBmcmFtZSwgYW4gZW5kcG9pbnQgTVVTVAorLSAgICAgKiByZXNwb25k IGJ5IGVjaG9pbmcgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSBQQVRIX0NIQUxMRU5HRSBmcmFt ZSBpbiBhCistICAgICAqIFBBVEhfUkVTUE9OU0UgZnJhbWUuCistICAgICAqCistICAgICAqIFRP RE8oUVVJQyBGVVRVUkUpOiBXZSBzaG91bGQgdHJ5IHRvIGF2b2lkIGFsbG9jYXRpb24gaGVyZSBp biB0aGUgZnV0dXJlLgorLSAgICAgKi8KKy0gICAgZW5jb2RlZF9sZW4gPSBzaXplb2YodWludDY0 X3QpICsgMTsKKy0gICAgaWYgKChlbmNvZGVkID0gT1BFTlNTTF9tYWxsb2MoZW5jb2RlZF9sZW4p KSA9PSBOVUxMKQorLSAgICAgICAgZ290byBlcnI7CisrICAgIGlmIChjaC0+c2Vlbl9wYXRoX2No YWxsZW5nZSA9PSAwCisrICAgICAgICAmJiBjaC0+cGF0aF9yZXNwb25zZV9saW1pdCA8IFFVSUNf UEFUSF9SRVNQT05TRV9RTEVOKSB7CisrICAgICAgICAvKgorKyAgICAgICAgICogUkZDIDkwMDAg cy4gOC4yLjI6IE9uIHJlY2VpdmluZyBhIFBBVEhfQ0hBTExFTkdFIGZyYW1lLCBhbiBlbmRwb2lu dAorKyAgICAgICAgICogTVVTVCByZXNwb25kIGJ5IGVjaG9pbmcgdGhlIGRhdGEgY29udGFpbmVk IGluIHRoZSBQQVRIX0NIQUxMRU5HRQorKyAgICAgICAgICogZnJhbWUgaW4gYSBQQVRIX1JFU1BP TlNFIGZyYW1lLgorKyAgICAgICAgICoKKysgICAgICAgICAqIFRPRE8oUVVJQyBGVVRVUkUpOiBX ZSBzaG91bGQgdHJ5IHRvIGF2b2lkIGFsbG9jYXRpb24gaGVyZSBpbiB0aGUKKysgICAgICAgICAq IGZ1dHVyZS4KKysgICAgICAgICAqLworKyAgICAgICAgZW5jb2RlZF9sZW4gPSBzaXplb2YodWlu dDY0X3QpICsgMTsKKysgICAgICAgIGlmICgoZW5jb2RlZCA9IE9QRU5TU0xfbWFsbG9jKGVuY29k ZWRfbGVuKSkgPT0gTlVMTCkKKysgICAgICAgICAgICBnb3RvIGVycjsKKyAKKy0gICAgaWYgKCFX UEFDS0VUX2luaXRfc3RhdGljX2xlbigmd3BrdCwgZW5jb2RlZCwgZW5jb2RlZF9sZW4sIDApKQor LSAgICAgICAgZ290byBlcnI7CisrICAgICAgICBpZiAoIVdQQUNLRVRfaW5pdF9zdGF0aWNfbGVu KCZ3cGt0LCBlbmNvZGVkLCBlbmNvZGVkX2xlbiwgMCkpCisrICAgICAgICAgICAgZ290byBlcnI7 CisgCistICAgIGlmICghb3NzbF9xdWljX3dpcmVfZW5jb2RlX2ZyYW1lX3BhdGhfcmVzcG9uc2Uo Jndwa3QsIGZyYW1lX2RhdGEpKSB7CistICAgICAgICBXUEFDS0VUX2NsZWFudXAoJndwa3QpOwor LSAgICAgICAgZ290byBlcnI7CistICAgIH0KKysgICAgICAgIGlmICghb3NzbF9xdWljX3dpcmVf ZW5jb2RlX2ZyYW1lX3BhdGhfcmVzcG9uc2UoJndwa3QsIGZyYW1lX2RhdGEpKSB7CisrICAgICAg ICAgICAgV1BBQ0tFVF9jbGVhbnVwKCZ3cGt0KTsKKysgICAgICAgICAgICBnb3RvIGVycjsKKysg ICAgICAgIH0KKyAKKy0gICAgV1BBQ0tFVF9maW5pc2goJndwa3QpOworKyAgICAgICAgV1BBQ0tF VF9maW5pc2goJndwa3QpOworIAorLSAgICBpZiAoIW9zc2xfcXVpY19jZnFfYWRkX2ZyYW1lKGNo LT5jZnEsIDAsIFFVSUNfUE5fU1BBQ0VfQVBQLAorLSAgICAgICAgICAgIE9TU0xfUVVJQ19GUkFN RV9UWVBFX1BBVEhfUkVTUE9OU0UsCistICAgICAgICAgICAgUVVJQ19DRlFfSVRFTV9GTEFHX1VO UkVMSUFCTEUsCistICAgICAgICAgICAgZW5jb2RlZCwgZW5jb2RlZF9sZW4sCistICAgICAgICAg ICAgZnJlZV9wYXRoX3Jlc3BvbnNlLCBOVUxMKSkKKy0gICAgICAgIGdvdG8gZXJyOworKyAgICAg ICAgaWYgKCFvc3NsX3F1aWNfY2ZxX2FkZF9mcmFtZShjaC0+Y2ZxLCAwLCBRVUlDX1BOX1NQQUNF X0FQUCwKKysgICAgICAgICAgICAgICAgT1NTTF9RVUlDX0ZSQU1FX1RZUEVfUEFUSF9SRVNQT05T RSwKKysgICAgICAgICAgICAgICAgUVVJQ19DRlFfSVRFTV9GTEFHX1VOUkVMSUFCTEUsCisrICAg ICAgICAgICAgICAgIGVuY29kZWQsIGVuY29kZWRfbGVuLAorKyAgICAgICAgICAgICAgICBmcmVl X3BhdGhfcmVzcG9uc2UsIGNoKSkKKysgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgIGNo LT5zZWVuX3BhdGhfY2hhbGxlbmdlID0gMTsKKysgICAgICAgIGNoLT5wYXRoX3Jlc3BvbnNlX2xp bWl0Kys7CisrICAgIH0KKysKKysgICAgY2gtPnBhdGhfY2hhbGxlbmdlX3J4Kys7CisgCisgICAg IHJldHVybiAxOworIAorQEAgLTE0MzIsNyArMTQ1Niw3IEBAIGludCBvc3NsX3F1aWNfaGFuZGxl X2ZyYW1lcyhRVUlDX0NIQU5ORUwgKmNoLCBPU1NMX1FSWF9QS1QgKnFwYWNrZXQpCisgICAgIGlm IChjaCA9PSBOVUxMKQorICAgICAgICAgcmV0dXJuIDA7CisgCistICAgIGNoLT5kaWRfY3J5cHRv X2ZyYW1lID0gMDsKKysgICAgb3NzbF9jaF9yZXNldF9yeF9zdGF0ZShjaCk7CisgCisgICAgIC8q IEluaXRpYWxpemUgfGFja21fZGF0YXwgKGFuZCByZWluaXRpYWxpemUgfG9rfCkqLworICAgICBt ZW1zZXQoJmFja21fZGF0YSwgMCwgc2l6ZW9mKGFja21fZGF0YSkpOworZGlmZiAtLWdpdCBhL3Nz bC9xdWljL3F1aWNfdHhwLmMgYi9zc2wvcXVpYy9xdWljX3R4cC5jCitpbmRleCA0NGFhYWQ4Njhk Mi4uYjI1NjVjMWE5ZmUgMTAwNjQ0CistLS0gYS9zc2wvcXVpYy9xdWljX3R4cC5jCisrKysgYi9z c2wvcXVpYy9xdWljX3R4cC5jCitAQCAtMzEzMyw2ICszMTMzLDggQEAgc3RhdGljIGludCB0eHBf cGt0X2NvbW1pdChPU1NMX1FVSUNfVFhfUEFDS0VUSVNFUiAqdHhwLAorICAgICAgICAgICAgIC0t cHJvYmVfaW5mby0+cHRvW3BuX3NwYWNlXTsKKyAgICAgfQorIAorKyAgICBvc3NsX3F1aWNfZmlm ZF9wa3RfZGlzY2FyZF91bnJlbGlhYmxlKCZ0eHAtPmZpZmQsIHRwa3QpOworKworICAgICByZXR1 cm4gcmM7CisgfQorIAorZGlmZiAtLWdpdCBhL3Rlc3QvcmFkaXgvcXVpY190ZXN0cy5jIGIvdGVz dC9yYWRpeC9xdWljX3Rlc3RzLmMKK2luZGV4IDE4MWJhMTIyNmI4Li40OGIxZGY2YzFkNCAxMDA2 NDQKKy0tLSBhL3Rlc3QvcmFkaXgvcXVpY190ZXN0cy5jCisrKysgYi90ZXN0L3JhZGl4L3F1aWNf dGVzdHMuYworQEAgLTI5NCw2ICsyOTQsMTg4IEBAIERFRl9TQ1JJUFQoY2hlY2tfY3dtLCAiY2hl Y2sgc3RyZWFtIG9iZXlzIGN3bSIpCisgICAgIE9QX1dSSVRFX0ZBSUwoQyk7CisgfQorIAorK3N0 cnVjdCBtdXRjYmtfY3R4IHsKKysgICAgUVVJQ19QS1RfSERSIG11dGN0eF9xaGRyaW47CisrICAg IE9TU0xfUVRYX0lPVkVDIG11dGN0eF9pb3Y7CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm11 dGN0eF9pbmplY3Q7CisrICAgIHNpemVfdCBtdXRjdHhfaW5qZWN0X3N6OworKyAgICBpbnQgbXV0 Y3R4X2RvbmU7CisrfTsKKysKKytzdGF0aWMgaW50IG11dGNia19pbmplY3RfZnJhbWVzKGNvbnN0 IFFVSUNfUEtUX0hEUiAqaGRyaW4sCisrICAgIGNvbnN0IE9TU0xfUVRYX0lPVkVDICppb3ZlY2lu LCBzaXplX3QgbnVtaW4sIFFVSUNfUEtUX0hEUiAqKmhkcm91dCwKKysgICAgY29uc3QgT1NTTF9R VFhfSU9WRUMgKippb3ZlY291dCwgc2l6ZV90ICpudW1vdXQsIHZvaWQgKmFyZykKKyt7CisrICAg IHN0cnVjdCBtdXRjYmtfY3R4ICptdXRjdHggPSAoc3RydWN0IG11dGNia19jdHggKilhcmc7Cisr ICAgIHNpemVfdCBpOworKyAgICBzaXplX3QgZ3Jvd19hbGxvd2FuY2UgPSAxMjAwOyAvKiBRVUlD X01JTl9JTklUSUFMX0RHUkFNX0xFTiAqLworKyAgICBzaXplX3QgYnVmc3ogPSAwOworKyAgICBj aGFyICpidWY7CisrCisrICAgIC8qCisrICAgICAqIG1ha2UgaW5qZWN0aW9uIGNhbGxiYWNrIGEg b25lIHNob3QgZXZlbnQsCisrICAgICAqIGNhbGxiYWNrIGlzIGludm9rZWQgZm9yIGV2ZXJ5IHBh Y2tldCB3ZQorKyAgICAgKiB3YW50IHRvIG1vZGlmeSBvbmx5IG9uZSBwYWNrZXQgaGVyZS4KKysg ICAgICovCisrICAgIGlmIChtdXRjdHgtPm11dGN0eF9kb25lKQorKyAgICAgICAgcmV0dXJuIDA7 CisrCisrICAgIG11dGN0eC0+bXV0Y3R4X2RvbmUgPSAxOworKworKyAgICBmb3IgKGkgPSAwOyBp IDwgbnVtaW47IGkrKykKKysgICAgICAgIGJ1ZnN6ICs9IGlvdmVjaW5baV0uYnVmX2xlbjsKKysK KysgICAgbXV0Y3R4LT5tdXRjdHhfaW92LmJ1Zl9sZW4gPSBidWZzejsgLyoga2VlcHMgb2xkIHNp emUgKi8KKysgICAgZ3Jvd19hbGxvd2FuY2UgLT0gKGJ1ZnN6IDwgZ3Jvd19hbGxvd2FuY2UpID8g YnVmc3ogOiBncm93X2FsbG93YW5jZTsKKysgICAgLyogQUVBRCB0YWcgKDE2IGJ5dGVzKSArIGxv bmcgaGVhZGVyICgxNCBieXRlcykgKi8KKysgICAgZ3Jvd19hbGxvd2FuY2UgLT0gKDMwIDwgZ3Jv d19hbGxvd2FuY2UpID8gMzAgOiBncm93X2FsbG93YW5jZTsKKysKKysgICAgZ3Jvd19hbGxvd2Fu Y2UgLT0gKGhkcmluLT5kc3RfY29ubl9pZC5pZF9sZW4gPCBncm93X2FsbG93YW5jZSkgPyBoZHJp bi0+ZHN0X2Nvbm5faWQuaWRfbGVuIDogZ3Jvd19hbGxvd2FuY2U7CisrICAgIGdyb3dfYWxsb3dh bmNlIC09IChoZHJpbi0+c3JjX2Nvbm5faWQuaWRfbGVuIDwgZ3Jvd19hbGxvd2FuY2UpID8gaGRy aW4tPnNyY19jb25uX2lkLmlkX2xlbiA6IGdyb3dfYWxsb3dhbmNlOworKworKyAgICBpZiAoZ3Jv d19hbGxvd2FuY2UgPT0gMCkgeworKyAgICAgICAgVEVTVF9pbmZvKCJtdXRjYmtfaW5qZWN0X2Zy YW1lcygpIG5vdCBlbm91Z2ggc3BhY2UgdG8gaW5qZWN0Iik7CisrICAgICAgICByZXR1cm4gMDsK KysgICAgfQorKyAgICBidWZzeiArPSBncm93X2FsbG93YW5jZTsKKysKKysgICAgLyogZGlzY2Fy ZCBjb25zdCAqLworKyAgICBPUEVOU1NMX2ZyZWUoKGNoYXIgKiltdXRjdHgtPm11dGN0eF9pb3Yu YnVmKTsKKysgICAgbXV0Y3R4LT5tdXRjdHhfaW92LmJ1ZiA9IE9QRU5TU0xfbWFsbG9jKGJ1ZnN6 KTsKKysgICAgLyogZGlzY2FyZCBjb25zdCAqLworKyAgICBidWYgPSAoY2hhciAqKW11dGN0eC0+ bXV0Y3R4X2lvdi5idWY7CisrICAgIGlmIChidWYgPT0gTlVMTCkgeworKyAgICAgICAgVEVTVF9p bmZvKCJtdXRjYmtfaW5qZWN0X2ZyYW1lcygpIE9QRU5TU0xfbWFsbG9jKCkgZmFpbGVkIik7Cisr ICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtaW47 IGkrKykgeworKyAgICAgICAgbWVtY3B5KGJ1ZiwgaW92ZWNpbltpXS5idWYsIGlvdmVjaW5baV0u YnVmX2xlbik7CisrICAgICAgICBidWYgKz0gaW92ZWNpbltpXS5idWZfbGVuOworKyAgICB9Cisr CisrICAgIC8qIGRpc2NhcmQgY29uc3QgKi8KKysgICAgYnVmID0gKGNoYXIgKiltdXRjdHgtPm11 dGN0eF9pb3YuYnVmOworKyAgICBpZiAobXV0Y3R4LT5tdXRjdHhfaW5qZWN0ICE9IE5VTEwpIHsK KysgICAgICAgIG1lbW1vdmUoYnVmICsgbXV0Y3R4LT5tdXRjdHhfaW5qZWN0X3N6LCBidWYsCisr ICAgICAgICAgICAgbXV0Y3R4LT5tdXRjdHhfaW92LmJ1Zl9sZW4pOworKyAgICAgICAgbWVtY3B5 KGJ1ZiwgbXV0Y3R4LT5tdXRjdHhfaW5qZWN0LCBtdXRjdHgtPm11dGN0eF9pbmplY3Rfc3opOwor KyAgICB9CisrICAgIC8qCisrICAgICAqIHBlcmhhcHMgbmVlZGVkIHRvIGhhdmUgbm90IGxvb2tl ZCBhdCB5ZXQKKysgICAgICovCisrICAgIG11dGN0eC0+bXV0Y3R4X3FoZHJpbiA9ICpoZHJpbjsK KysgICAgKmhkcm91dCA9ICZtdXRjdHgtPm11dGN0eF9xaGRyaW47CisrICAgIG11dGN0eC0+bXV0 Y3R4X2lvdi5idWZfbGVuICs9IG11dGN0eC0+bXV0Y3R4X2luamVjdF9zejsKKysgICAgKmlvdmVj b3V0ID0gJm11dGN0eC0+bXV0Y3R4X2lvdjsKKysgICAgKm51bW91dCA9IDE7CisrCisrICAgIHJl dHVybiAxOworK30KKysKKytzdGF0aWMgdm9pZCBtdXRjYmtfZmluaXNoX2luamVjY3RfZnJhbWVz KHZvaWQgKmFyZykKKyt7CisrICAgIHN0cnVjdCBtdXRjYmtfY3R4ICptdXRjdHggPSAoc3RydWN0 IG11dGNia19jdHggKilhcmc7CisrCisrICAgIE9QRU5TU0xfZnJlZSgoY2hhciAqKW11dGN0eC0+ bXV0Y3R4X2lvdi5idWYpOworKyAgICBtdXRjdHgtPm11dGN0eF9pb3YuYnVmID0gTlVMTDsKKyt9 CisrCisrLyogMTYgcGF0aCBjaGFsbGVuZ2UgZnJhbWVzICovCisrI2RlZmluZSBQQVRIX0NIQUxM RU5HRV9GUkFNRVMgXAorKyAgICAiXHgxYSIgICAgICAgICAgICAgICAgICAgIFwKKysgICAgIkFC Q0RFRkdIIiAgICAgICAgICAgICAgICBcCisrICAgICJceDFhIiAgICAgICAgICAgICAgICAgICAg XAorKyAgICAiQUJDREVGR0giICAgICAgICAgICAgICAgIFwKKysgICAgIlx4MWEiICAgICAgICAg ICAgICAgICAgICBcCisrICAgICJBQkNERUZHSCIgICAgICAgICAgICAgICAgXAorKyAgICAiXHgx YSIgICAgICAgICAgICAgICAgICAgIFwKKysgICAgIkFCQ0RFRkdIIiAgICAgICAgICAgICAgICBc CisrICAgICJceDFhIiAgICAgICAgICAgICAgICAgICAgXAorKyAgICAiQUJDREVGR0giICAgICAg ICAgICAgICAgIFwKKysgICAgIlx4MWEiICAgICAgICAgICAgICAgICAgICBcCisrICAgICJBQkNE RUZHSCIgICAgICAgICAgICAgICAgXAorKyAgICAiXHgxYSIgICAgICAgICAgICAgICAgICAgIFwK KysgICAgIkFCQ0RFRkdIIiAgICAgICAgICAgICAgICBcCisrICAgICJceDFhIiAgICAgICAgICAg ICAgICAgICAgXAorKyAgICAiQUJDREVGR0giICAgICAgICAgICAgICAgIFwKKysgICAgIlx4MWEi ICAgICAgICAgICAgICAgICAgICBcCisrICAgICJBQkNERUZHSCIgICAgICAgICAgICAgICAgXAor KyAgICAiXHgxYSIgICAgICAgICAgICAgICAgICAgIFwKKysgICAgIkFCQ0RFRkdIIiAgICAgICAg ICAgICAgICBcCisrICAgICJceDFhIiAgICAgICAgICAgICAgICAgICAgXAorKyAgICAiQUJDREVG R0giICAgICAgICAgICAgICAgIFwKKysgICAgIlx4MWEiICAgICAgICAgICAgICAgICAgICBcCisr ICAgICJBQkNERUZHSCIgICAgICAgICAgICAgICAgXAorKyAgICAiXHgxYSIgICAgICAgICAgICAg ICAgICAgIFwKKysgICAgIkFCQ0RFRkdIIiAgICAgICAgICAgICAgICBcCisrICAgICJceDFhIiAg ICAgICAgICAgICAgICAgICAgXAorKyAgICAiQUJDREVGR0giICAgICAgICAgICAgICAgIFwKKysg ICAgIlx4MWEiICAgICAgICAgICAgICAgICAgICBcCisrICAgICJBQkNERUZHSCIgICAgICAgICAg ICAgICAgXAorKyAgICAiXHgxYSIgICAgICAgICAgICAgICAgICAgIFwKKysgICAgIkFCQ0RFRkdI IgorKworK0RFRl9GVU5DKG1vdW50X2Zsb29kKQorK3sKKysgICAgaW50IG9rID0gMDsKKysgICAg U1NMICpzc2w7CisrICAgIFFVSUNfQ0hBTk5FTCAqY2g7CisrICAgIHN0YXRpYyBzdHJ1Y3QgbXV0 Y2JrX2N0eCBtdXRjdHggPSB7IDAgfTsKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg KmluamVjdF9mcmFtZXMgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKVBBVEhfQ0hBTExFTkdFX0ZS QU1FUzsKKysKKysgICAgbXV0Y3R4Lm11dGN0eF9pbmplY3QgPSBpbmplY3RfZnJhbWVzOworKyAg ICBtdXRjdHgubXV0Y3R4X2luamVjdF9zeiA9IHNpemVvZihQQVRIX0NIQUxMRU5HRV9GUkFNRVMp IC0gMTsKKysgICAgUkVRVUlSRV9TU0woc3NsKTsKKysgICAgY2ggPSBvc3NsX3F1aWNfY29ubl9n ZXRfY2hhbm5lbChzc2wpOworKyAgICBpZiAoIVRFU1RfcHRyKGNoKSkKKysgICAgICAgIGdvdG8g ZXJyOworKworKyAgICBpZiAoIVRFU1RfdHJ1ZShvc3NsX3F1aWNfY2hhbm5lbF9zZXRfbXV0YXRv cihjaCwgbXV0Y2JrX2luamVjdF9mcmFtZXMsCisrICAgICAgICAgICAgbXV0Y2JrX2ZpbmlzaF9p bmplY2N0X2ZyYW1lcywgJm11dGN0eCkpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIG9rID0g MTsKKytlcnI6CisrICAgIHJldHVybiBvazsKKyt9CisrCisrREVGX0ZVTkMoY2hlY2tfZmxvb2Rf c3RhdHMpCisreworKyAgICBpbnQgb2sgPSAwOworKyAgICBTU0wgKnNzbDsKKysgICAgUVVJQ19D SEFOTkVMICpjaDsKKysgICAgdWludDY0X3QgcGF0aF9yZXNwb25zZV9jb3VudDsKKysgICAgdWlu dDY0X3QgcGF0aF9jaGFsbGVuZ2VfY291bnQ7CisrCisrICAgIFJFUVVJUkVfU1NMKHNzbCk7Cisr ICAgIGNoID0gb3NzbF9xdWljX2Nvbm5fZ2V0X2NoYW5uZWwoc3NsKTsKKysgICAgaWYgKCFURVNU X3B0cihjaCkpCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgcGF0aF9jaGFsbGVuZ2VfY291 bnQgPSBvc3NsX3F1aWNfY2hhbm5lbF9nZXRfcGF0aF9jaGFsbGVuZ2VfY291bnQoY2gpOworKyAg ICBwYXRoX3Jlc3BvbnNlX2NvdW50ID0gb3NzbF9xdWljX2NoYW5uZWxfZ2V0X3BhdGhfcmVzcG9u c2VfY291bnQoY2gpOworKworKyAgICBpZiAoVEVTVF91aW50NjRfdF9uZShwYXRoX2NoYWxsZW5n ZV9jb3VudCwgMTYpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIGlmIChURVNUX3VpbnQ2NF90 X25lKHBhdGhfcmVzcG9uc2VfY291bnQsIDEpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAg IG9rID0gMTsKKytlcnI6CisrICAgIHJldHVybiBvazsKKyt9CisrCisrREVGX1NDUklQVChjaGVj a19wY19mbG9vZCwgImNoZWNrIHBhdGggY2hhbGxlbmdlIGZsb29kIikKKyt7CisrICAgIE9QX1NJ TVBMRV9QQUlSX0NPTk4oKTsKKysgICAgT1BfU0VMRUNUX1NTTCgwLCBDKTsKKysgICAgT1BfRlVO Qyhtb3VudF9mbG9vZCk7CisrICAgIE9QX0FDQ0VQVF9DT05OX1dBSVQoTCwgUywgMCk7CisrICAg IE9QX1dSSVRFX0IoQywgImF0dGFjayIpOworKyAgICBPUF9TRUxFQ1RfU1NMKDAsIFMpOworKyAg ICBPUF9GVU5DKGNoZWNrX2Zsb29kX3N0YXRzKTsKKyt9CisrCisgLyoKKyAgKiBMaXN0IG9mIFRl c3QgU2NyaXB0cworICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0BAIC0zMDIsNSArNDg0LDYgQEAg c3RhdGljIFNDUklQVF9JTkZPICpjb25zdCBzY3JpcHRzW10gPSB7CisgICAgIFVTRShzaW1wbGVf Y29ubikKKyAgICAgICAgIFVTRShzaW1wbGVfdGhyZWFkKQorICAgICAgICAgICAgIFVTRShzc2xf cG9sbCkKKy0gICAgICAgICAgICAgICAgVVNFKGNoZWNrX2N3bSkKKysgICAgVVNFKGNoZWNrX2N3 bSkKKysgICAgVVNFKGNoZWNrX3BjX2Zsb29kKQorIH07CgpkaWZmIC0tZ2l0IGEvMDA2NS1DVkUt MjAyNi00Mjc2NC5wYXRjaCBiLzAwNjUtQ1ZFLTIwMjYtNDI3NjQucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFmN2M1OQotLS0gL2Rldi9udWxsCisrKyBiLzAwNjUt Q1ZFLTIwMjYtNDI3NjQucGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorZGlmZiAtLWdpdCBhL3NzbC9x dWljL3F1aWNfcG9ydC5jIGIvc3NsL3F1aWMvcXVpY19wb3J0LmMKK2luZGV4IGExYjEzNGQ5YjE2 Li5iODIxYjc3NGIzOCAxMDA2NDQKKy0tLSBhL3NzbC9xdWljL3F1aWNfcG9ydC5jCisrKysgYi9z c2wvcXVpYy9xdWljX3BvcnQuYworQEAgLTE4MDYsOCArMTgwNiwxMCBAQCBzdGF0aWMgdm9pZCBw b3J0X2RlZmF1bHRfcGFja2V0X2hhbmRsZXIoUVVJQ19VUlhFICplLCB2b2lkICphcmcsCisgICAg ICAgICAgKiBmb3JnZXQgcXJ4IHNvIGNoYW5uZWwgY2FuIGNyZWF0ZSBhIG5ldyBvbmUKKyAgICAg ICAgICAqIHdpdGggdmFsaWQgaW5pdGlhbCBlbmNyeXB0aW9uIGxldmVsIGtleXMuCisgICAgICAg ICAgKi8KKy0gICAgICAgIHFyeF9zcmMgPSBxcng7CistICAgICAgICBxcnggPSBOVUxMOworKyAg ICAgICAgaWYgKHFyeCAhPSBOVUxMKSB7CisrICAgICAgICAgICAgcXJ4X3NyYyA9IHFyeDsKKysg ICAgICAgICAgICBxcnggPSBOVUxMOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIHBvcnRf YmluZF9jaGFubmVsKHBvcnQsICZlLT5wZWVyLCAmc2NpZCwgJmhkci5kc3RfY29ubl9pZCwKCmRp ZmYgLS1naXQgYS8wMDY2LUNWRS0yMDI2LTQyNzY2LnBhdGNoIGIvMDA2Ni1DVkUtMjAyNi00Mjc2 Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDFhMDUyCi0tLSAv ZGV2L251bGwKKysrIGIvMDA2Ni1DVkUtMjAyNi00Mjc2Ni5wYXRjaApAQCAtMCwwICsxLDI0MSBA QAorRnJvbSBkZjMyZmM1OGJkNzI2ZWVjZjg4YWM2N2IyMmZlZjBjOGZmNWVlZWY4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSWdvciBVc3Rpbm92IDxpZ3VzQG9wZW5zc2wuZm91bmRh dGlvbj4KK0RhdGU6IFRodSwgMjEgTWF5IDIwMjYgMDg6MzY6NTQgKzAyMDAKK1N1YmplY3Q6IFtQ QVRDSCAxLzJdIEZpeCBwb3RlbnRpYWwgTlVMTCBkZXJlZmVyZW5jZSBwcm9jZXNzaW5nIENNUwor IFBhc3N3b3JkUmVjaXBpZW50SW5mbworCitBdm9pZCBOVUxMIGRlcmVmZXJlbmNpbmcgd2hlbiBr ZXlEZXJpdmF0aW9uQWxnb3JpdGhtIGlzIGFic2VudAoraW4gQ01TIFBhc3N3b3JkUmVjaXBpZW50 SW5mby4KKworRml4ZXMgQ1ZFLTIwMjYtNDI3NjYKKy0tLQorIGNyeXB0by9jbXMvY21zX3B3cmku YyB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1n aXQgYS9jcnlwdG8vY21zL2Ntc19wd3JpLmMgYi9jcnlwdG8vY21zL2Ntc19wd3JpLmMKK2luZGV4 IGFjODY5YTM3ZjkzLi4yMDZlY2Q4NWU2OSAxMDA2NDQKKy0tLSBhL2NyeXB0by9jbXMvY21zX3B3 cmkuYworKysrIGIvY3J5cHRvL2Ntcy9jbXNfcHdyaS5jCitAQCAtMzY4LDYgKzM2OCwxMSBAQCBp bnQgb3NzbF9jbXNfUmVjaXBpZW50SW5mb19wd3JpX2NyeXB0KGNvbnN0IENNU19Db250ZW50SW5m byAqY21zLAorIAorICAgICAvKiBGaW5pc2ggcGFzc3dvcmQgYmFzZWQga2V5IGRlcml2YXRpb24g dG8gc2V0dXAga2V5IGluICJjdHgiICovCisgCisrICAgIGlmIChhbGd0bXAgPT0gTlVMTCkgewor KyAgICAgICAgRVJSX3JhaXNlX2RhdGEoRVJSX0xJQl9DTVMsIENNU19SX0lOVkFMSURfS0VZX0VO Q1JZUFRJT05fUEFSQU1FVEVSLAorKyAgICAgICAgICAgICJNaXNzaW5nIEtleURlcml2YXRpb25B bGdvcml0aG0iKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9CisgICAgIGlmICghRVZQX1BC RV9DaXBoZXJJbml0X2V4KGFsZ3RtcC0+YWxnb3JpdGhtLAorICAgICAgICAgICAgIChjaGFyICop cHdyaS0+cGFzcywgKGludClwd3JpLT5wYXNzbGVuLAorICAgICAgICAgICAgIGFsZ3RtcC0+cGFy YW1ldGVyLCBrZWtjdHgsIGVuX2RlLAorCitGcm9tIDFlYjU5M2NjZTFlMDU1OTlkMjJkZTZhYjE1 OGEyM2M3NTUxNDZmYWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBJZ29yIFVzdGlu b3YgPGlndXNAb3BlbnNzbC5mb3VuZGF0aW9uPgorRGF0ZTogV2VkLCAyMCBNYXkgMjAyNiAyMDow Mjo0MyArMDIwMAorU3ViamVjdDogW1BBVENIIDIvMl0gVGVzdCBmb3IgQ1ZFLTIwMjYtNDI3NjYK KworVGhlIHNjcmlwdCBtYWtlX21pc3Npbmdfa2RmX2Rlci5weSB3YXMgZGV2ZWxvcGVkIGJ5IE1h eWFuayBKYW5naWQKK2FuZCBLdXNoYWwgS2hlbWthLgorCitDby1BdXRob3JlZC1ieTogTWF5YW5r IEphbmdpZCA8bWF5YW5rLmphbmdpZC5tb29uQGdtYWlsLmNvbT4KK0NvLUF1dGhvcmVkLWJ5OiBL dXNoYWwgS2hlbWthIDxrdXNoYWxraGVta2E1NTlAZ21haWwuY29tPgorLS0tCisgdGVzdC9jbXMt bXNnL21ha2VfbWlzc2luZ19rZGZfZGVyLnB5IHwgMTM3ICsrKysrKysrKysrKysrKysrKysrKysr KysrKworIHRlc3QvY21zLW1zZy9taXNzaW5nLWtkZi5kZXIgICAgICAgICB8IEJpbiAwIC0+IDE5 MCBieXRlcworIHRlc3QvcmVjaXBlcy84MC10ZXN0X2Ntcy50ICAgICAgICAgICB8ICAyMSArKyst CisgMyBmaWxlcyBjaGFuZ2VkLCAxNTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNy ZWF0ZSBtb2RlIDEwMDc1NSB0ZXN0L2Ntcy1tc2cvbWFrZV9taXNzaW5nX2tkZl9kZXIucHkKKyBj cmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9jbXMtbXNnL21pc3Npbmcta2RmLmRlcgorCitkaWZmIC0t Z2l0IGEvdGVzdC9jbXMtbXNnL21ha2VfbWlzc2luZ19rZGZfZGVyLnB5IGIvdGVzdC9jbXMtbXNn L21ha2VfbWlzc2luZ19rZGZfZGVyLnB5CituZXcgZmlsZSBtb2RlIDEwMDc1NQoraW5kZXggMDAw MDAwMDAwMDAuLjViM2ZjMGY2ZWVkCistLS0gL2Rldi9udWxsCisrKysgYi90ZXN0L2Ntcy1tc2cv bWFrZV9taXNzaW5nX2tkZl9kZXIucHkKK0BAIC0wLDAgKzEsMTM3IEBACisrIyEvdXNyL2Jpbi9l bnYgcHl0aG9uMworKworKyMgQ29weXJpZ2h0IDIwMjYgVGhlIE9wZW5TU0wgUHJvamVjdCBBdXRo b3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorKyMKKysjIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj aGUgTGljZW5zZSAyLjAgKHRoZSAiTGljZW5zZSIpLiAgWW91IG1heSBub3QgdXNlCisrIyB0aGlz IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBjYW4gb2J0 YWluIGEgY29weQorKyMgaW4gdGhlIGZpbGUgTElDRU5TRSBpbiB0aGUgc291cmNlIGRpc3RyaWJ1 dGlvbiBvciBhdAorKyMgaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRt bAorKworKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIG1pc3Npbmcta2RmLmRlciAtIGEgcGFzc3dv cmQtZW5jcnlwdGVkIENNUyBtZXNzYWdlCisrIyB3aXRob3V0IHRoZSBrZXlEZXJpdmF0aW9uQWxn b3JpdGhtIGZpZWxkLCB3aGljaCBpcyB1c2VkIGluIHRoZQorKyMg4oCcUFdSSSBtaXNzaW5nIGtl eURlcml2YXRpb25BbGdvcml0aG0gcmVncmVzc2lvbuKAnSB0ZXN0LgorKyMKKysjIFVzYWdlOiBw eXRob24zIG1ha2VfbWlzc2luZ19rZGZfZGVyLnB5IHZhbGlkLmRlciBtaXNzaW5nLWtkZi5kZXIK KysKKytmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFubm90YXRpb25zCisrCisraW1wb3J0IGFyZ3Bh cnNlCisraW1wb3J0IHN5cworK2Zyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcworK2Zy b20gcGF0aGxpYiBpbXBvcnQgUGF0aAorKworKworK0BkYXRhY2xhc3MKKytjbGFzcyBOb2RlOgor KyAgICBvZmY6IGludAorKyAgICB0YWc6IGludAorKyAgICBoZHJfbGVuOiBpbnQKKysgICAgbGVu Z3RoOiBpbnQKKysgICAgZW5kOiBpbnQKKysgICAgY2hpbGRyZW46IGxpc3RbIk5vZGUiXQorKwor KworK2RlZiByZWFkX2xlbihkYXRhOiBieXRlcywgb2ZmOiBpbnQpIC0+IHR1cGxlW2ludCwgaW50 XToKKysgICAgZmlyc3QgPSBkYXRhW29mZl0KKysgICAgaWYgZmlyc3QgPCAweDgwOgorKyAgICAg ICAgcmV0dXJuIGZpcnN0LCAxCisrICAgIG4gPSBmaXJzdCAmIDB4N0YKKysgICAgaWYgbiA9PSAw IG9yIG4gPiA0OgorKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmInVuc3VwcG9ydGVkIERFUiBs ZW5ndGggZm9ybSBhdCB7b2ZmfSIpCisrICAgIHZhbCA9IDAKKysgICAgZm9yIGIgaW4gZGF0YVtv ZmYgKyAxIDogb2ZmICsgMSArIG5dOgorKyAgICAgICAgdmFsID0gKHZhbCA8PCA4KSB8IGIKKysg ICAgcmV0dXJuIHZhbCwgMSArIG4KKysKKysKKytkZWYgcGFyc2Vfbm9kZShkYXRhOiBieXRlcywg b2ZmOiBpbnQpIC0+IE5vZGU6CisrICAgIHRhZyA9IGRhdGFbb2ZmXQorKyAgICBsZW5ndGgsIGxl bl9sZW4gPSByZWFkX2xlbihkYXRhLCBvZmYgKyAxKQorKyAgICBoZHJfbGVuID0gMSArIGxlbl9s ZW4KKysgICAgZW5kID0gb2ZmICsgaGRyX2xlbiArIGxlbmd0aAorKyAgICBjaGlsZHJlbjogbGlz dFtOb2RlXSA9IFtdCisrICAgIGlmIHRhZyAmIDB4MjA6CisrICAgICAgICBjdXIgPSBvZmYgKyBo ZHJfbGVuCisrICAgICAgICB3aGlsZSBjdXIgPCBlbmQ6CisrICAgICAgICAgICAgY2hpbGQgPSBw YXJzZV9ub2RlKGRhdGEsIGN1cikKKysgICAgICAgICAgICBjaGlsZHJlbi5hcHBlbmQoY2hpbGQp CisrICAgICAgICAgICAgY3VyID0gY2hpbGQuZW5kCisrICAgICAgICBpZiBjdXIgIT0gZW5kOgor KyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJjaGlsZCBwYXJzZSBlbmRlZCBhdCB7Y3Vy fSwgZXhwZWN0ZWQge2VuZH0iKQorKyAgICByZXR1cm4gTm9kZShvZmY9b2ZmLCB0YWc9dGFnLCBo ZHJfbGVuPWhkcl9sZW4sIGxlbmd0aD1sZW5ndGgsIGVuZD1lbmQsIGNoaWxkcmVuPWNoaWxkcmVu KQorKworKworK2RlZiBlbmNvZGVfbGVuKGxlbmd0aDogaW50LCBleGlzdGluZ19sZW5fbGVuOiBp bnQpIC0+IGJ5dGVzOgorKyAgICBpZiBleGlzdGluZ19sZW5fbGVuID09IDE6CisrICAgICAgICBp ZiBsZW5ndGggPj0gMHg4MDoKKysgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZXcgbGVu Z3RoIG5vIGxvbmdlciBmaXRzIGluIHNob3J0LWZvcm0gREVSIikKKysgICAgICAgIHJldHVybiBi eXRlcyhbbGVuZ3RoXSkKKysgICAgcGF5bG9hZF9sZW4gPSBleGlzdGluZ19sZW5fbGVuIC0gMQor KyAgICBtYXhfbGVuID0gKDEgPDwgKHBheWxvYWRfbGVuICogOCkpIC0gMQorKyAgICBpZiBsZW5n dGggPiBtYXhfbGVuOgorKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibmV3IGxlbmd0aCBubyBs b25nZXIgZml0cyBpbiBleGlzdGluZyBsb25nLWZvcm0gREVSIikKKysgICAgb3V0ID0gYnl0ZWFy cmF5KFsweDgwIHwgcGF5bG9hZF9sZW5dKQorKyAgICBmb3Igc2hpZnQgaW4gcmFuZ2UoKHBheWxv YWRfbGVuIC0gMSkgKiA4LCAtOCwgLTgpOgorKyAgICAgICAgb3V0LmFwcGVuZCgobGVuZ3RoID4+ IHNoaWZ0KSAmIDB4RkYpCisrICAgIHJldHVybiBieXRlcyhvdXQpCisrCisrCisrZGVmIHBhdGNo X2xlbmd0aF9maWVsZChidWY6IGJ5dGVhcnJheSwgbm9kZTogTm9kZSwgZGVsdGE6IGludCkgLT4g Tm9uZToKKysgICAgbmV3X2xlbiA9IG5vZGUubGVuZ3RoICsgZGVsdGEKKysgICAgaWYgbmV3X2xl biA8IDA6CisrICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZWdhdGl2ZSBwYXRjaGVkIGxlbmd0 aCIpCisrICAgIGxlbl9ieXRlcyA9IGVuY29kZV9sZW4obmV3X2xlbiwgbm9kZS5oZHJfbGVuIC0g MSkKKysgICAgc3RhcnQgPSBub2RlLm9mZiArIDEKKysgICAgZW5kID0gc3RhcnQgKyBsZW4obm9k ZS5oZHJfbGVuLnRvX2J5dGVzKDEsICJiaWciKSkgLSAxICAjIHVudXNlZCwga2VwdCBmb3IgY2xh cml0eQorKyAgICBidWZbc3RhcnQgOiBzdGFydCArIGxlbihsZW5fYnl0ZXMpXSA9IGxlbl9ieXRl cworKworKworK2RlZiBtYWluKCkgLT4gaW50OgorKyAgICBhcCA9IGFyZ3BhcnNlLkFyZ3VtZW50 UGFyc2VyKGRlc2NyaXB0aW9uPSJSZW1vdmUgUFdSSSBrZXlEZXJpdmF0aW9uQWxnb3JpdGhtIGZy b20gYSBDTVMgREVSIGJsb2IuIikKKysgICAgYXAuYWRkX2FyZ3VtZW50KCJpbnB1dF9kZXIiKQor KyAgICBhcC5hZGRfYXJndW1lbnQoIm91dHB1dF9kZXIiKQorKyAgICBhcmdzID0gYXAucGFyc2Vf YXJncygpCisrCisrICAgIGRhdGEgPSBQYXRoKGFyZ3MuaW5wdXRfZGVyKS5yZWFkX2J5dGVzKCkK KysgICAgcm9vdCA9IHBhcnNlX25vZGUoZGF0YSwgMCkKKysKKysgICAgIyBDTVMgc3RydWN0dXJl IHdlIGV4cGVjdDoKKysgICAgIyBTRVFVRU5DRSB7IE9JRCBlbnZlbG9wZWREYXRhLCBbMF0gU0VR VUVOQ0UgeyB2ZXJzaW9uLCBTRVQgcmVjaXBpZW50SW5mb3MsIC4uLiB9IH0KKysgICAgZWRfd3Jh cHBlciA9IHJvb3QuY2hpbGRyZW5bMV0KKysgICAgZW52X3NlcSA9IGVkX3dyYXBwZXIuY2hpbGRy ZW5bMF0KKysgICAgcmVjaXBpZW50X3NldCA9IGVudl9zZXEuY2hpbGRyZW5bMV0KKysgICAgcHdy aV9jaG9pY2UgPSByZWNpcGllbnRfc2V0LmNoaWxkcmVuWzBdICAjIFszXQorKworKyAgICBpZiBw d3JpX2Nob2ljZS50YWcgIT0gMHhBMzoKKysgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJleHBl Y3RlZCBQV1JJIGNob2ljZSB0YWcgMHhBMywgZm91bmQgMHh7cHdyaV9jaG9pY2UudGFnOjAyeH0i KQorKyAgICBpZiBsZW4ocHdyaV9jaG9pY2UuY2hpbGRyZW4pIDwgMzoKKysgICAgICAgIHJhaXNl IFZhbHVlRXJyb3IoInVuZXhwZWN0ZWQgUFdSSSBjaGlsZCBjb3VudCIpCisrCisrICAgIHZlcnNp b24gPSBwd3JpX2Nob2ljZS5jaGlsZHJlblswXQorKyAgICBtYXliZV9rZGYgPSBwd3JpX2Nob2lj ZS5jaGlsZHJlblsxXQorKyAgICBrZXllbmMgPSBwd3JpX2Nob2ljZS5jaGlsZHJlblsyXQorKyAg ICBpZiB2ZXJzaW9uLnRhZyAhPSAweDAyOgorKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUFdS SSB2ZXJzaW9uIGlzIG5vdCBJTlRFR0VSIikKKysgICAgaWYgbWF5YmVfa2RmLnRhZyAhPSAweEEw OgorKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIlBXUkkgY2hpbGQgYWZ0ZXIgdmVyc2lvbiBp cyBub3QgWzBdIGtleURlcml2YXRpb25BbGdvcml0aG06IDB4e21heWJlX2tkZi50YWc6MDJ4fSIp CisrICAgIGlmIGtleWVuYy50YWcgIT0gMHgzMDoKKysgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io IlBXUkkga2V5RW5jcnlwdGlvbkFsZ29yaXRobSBpcyBub3QgU0VRVUVOQ0UiKQorKworKyAgICBy ZW1vdmVfc3RhcnQgPSBtYXliZV9rZGYub2ZmCisrICAgIHJlbW92ZV9lbmQgPSBtYXliZV9rZGYu ZW5kCisrICAgIHJlbW92ZV9sZW4gPSByZW1vdmVfZW5kIC0gcmVtb3ZlX3N0YXJ0CisrCisrICAg IG91dCA9IGJ5dGVhcnJheShkYXRhKQorKyAgICBkZWwgb3V0W3JlbW92ZV9zdGFydDpyZW1vdmVf ZW5kXQorKworKyAgICAjIEFkanVzdCBhbmNlc3RvcnMgd2hvc2UgbGVuZ3RoIHNwYW5zIHRoZSBy ZW1vdmVkIGZpZWxkLgorKyAgICBmb3Igbm9kZSBpbiBbcm9vdCwgZWRfd3JhcHBlciwgZW52X3Nl cSwgcmVjaXBpZW50X3NldCwgcHdyaV9jaG9pY2VdOgorKyAgICAgICAgcGF0Y2hfbGVuZ3RoX2Zp ZWxkKG91dCwgbm9kZSwgLXJlbW92ZV9sZW4pCisrCisrICAgIFBhdGgoYXJncy5vdXRwdXRfZGVy KS53cml0ZV9ieXRlcyhvdXQpCisrICAgIHByaW50KGYicmVtb3ZlZCB7cmVtb3ZlX2xlbn0gYnl0 ZXMgYXQgW3tyZW1vdmVfc3RhcnR9LCB7cmVtb3ZlX2VuZH0pIikKKysgICAgcmV0dXJuIDAKKysK KysKKytpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorKyAgICBzeXMuZXhpdChtYWluKCkpCitk aWZmIC0tZ2l0IGEvdGVzdC9jbXMtbXNnL21pc3Npbmcta2RmLmRlciBiL3Rlc3QvY21zLW1zZy9t aXNzaW5nLWtkZi5kZXIKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGI2MDJlNDdjMjNiNzZhOWE1NWE3MDdkYTE4 YzUwNTllZjM4YzllCitHSVQgYmluYXJ5IHBhdGNoCitsaXRlcmFsIDE5MAoremNtWHFMK3w5PFIp I2xPbW90S2ZGY3xxZV5nVF9AJWpMZTNPWF5SX15uSFUpaWJsQTl8KHdxWCFvQ2RPTm9DJDNuCit6 akglMmxqOU0lTGplcUMrKjBDTyR4M2k2TGYheXs3UGdvMkQ/WV8xd0pAfEUxMlh+RHtMcHl0Iz0o UnU1U00pekYKK3pUPlVha1htYTk9fEYmZystJTcwUkUwV0pTcz4zTGVhbUsmflZMYzw3PjBUXk84 bUdRanI+bHI9R0M4aVFAVXVaKworViNTQTktdSF6MDRQRF9PVHtCQ2Z9OXNuclpNMUJBTworCits aXRlcmFsIDAKK0hjbVY/ZDAwMDAxCisKK2RpZmYgLS1naXQgYS90ZXN0L3JlY2lwZXMvODAtdGVz dF9jbXMudCBiL3Rlc3QvcmVjaXBlcy84MC10ZXN0X2Ntcy50CitpbmRleCAxNTJhMWE1NWEwYS4u MTYwYWQ4MWFlMzggMTAwNjQ0CistLS0gYS90ZXN0L3JlY2lwZXMvODAtdGVzdF9jbXMudAorKysr IGIvdGVzdC9yZWNpcGVzLzgwLXRlc3RfY21zLnQKK0BAIC01Niw3ICs1Niw3IEBAIG15ICgkbm9f ZGVzLCAkbm9fZGgsICRub19kc2EsICRub19lYywgJG5vX2VjMm0sICRub19yYzIsICRub196bGli KQorIAorICRub19yYzIgPSAxIGlmIGRpc2FibGVkKCJsZWdhY3kiKTsKKyAKKy1wbGFuIHRlc3Rz ID0+IDMxOworK3BsYW4gdGVzdHMgPT4gMzI7CisgCisgb2socnVuKHRlc3QoWyJwa2NzN190ZXN0 Il0pKSwgInRlc3QgcGtjczciKTsKKyAKK0BAIC0xNzAyLDMgKzE3MDIsMjIgQEAgc3VidGVzdCAi TUwtS0VNIEtFTVJlY2lwaWVudEluZm8gdGVzdHMgZm9yIENNUyIgPT4gc3ViIHsKKyAgICAgICAg ICAgICJhY2NlcHQgQ01TIHZlcmlmeSB3aXRoIFNMSC1EU0EtU0hBS0UtMjU2cyIpOworICAgICB9 CisgfTsKKysKKysjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgTlVMTCBkZXJlZmVyZW5jZSBpbiBQV1JJ IGRlY3J5cHQgcGF0aAorKyMgd2hlbiBvcHRpb25hbCBrZXlEZXJpdmF0aW9uQWxnb3JpdGhtIGlz IG9taXR0ZWQuCisrc3VidGVzdCAiUFdSSSBtaXNzaW5nIGtleURlcml2YXRpb25BbGdvcml0aG0g cmVncmVzc2lvbiIgPT4gc3ViIHsKKysgICAgcGxhbiB0ZXN0cyA9PiAxOworKworKyAgICB3aXRo KHsgZXhpdF9jaGVja2VyID0+IHN1YiB7IHJldHVybiBzaGlmdCA9PSA0OyB9IH0sIHN1YiB7Cisr ICAgICAgICBvayhydW4oYXBwKFsKKysgICAgICAgICAgICAib3BlbnNzbCIsICJjbXMiLCBAcHJv diwKKysgICAgICAgICAgICAiLWRlY3J5cHQiLAorKyAgICAgICAgICAgICItaW5mb3JtIiwgIkRF UiIsCisrICAgICAgICAgICAgIi1pbiIsCisrICAgICAgICAgICAgc3JjdG9wX2ZpbGUoJ3Rlc3Qn LCAnY21zLW1zZycsICdtaXNzaW5nLWtkZi5kZXInKSwKKysgICAgICAgICAgICAiLW91dCIsICJw d3JpLW91dC50eHQiLAorKyAgICAgICAgICAgICItcHdyaV9wYXNzd29yZCIsICJzZWNyZXQiXSkp LAorKyAgICAgICAgIm1pc3Npbmcga2V5RGVyaXZhdGlvbkFsZ29yaXRobSBpcyByZWplY3RlZCIp OworKyAgICB9KTsKKyt9OworKwoKZGlmZiAtLWdpdCBhLzAwNjctQ1ZFLTIwMjYtNDI3NjcucGF0 Y2ggYi8wMDY3LUNWRS0yMDI2LTQyNzY3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjY4ZDVlZjAKLS0tIC9kZXYvbnVsbAorKysgYi8wMDY3LUNWRS0yMDI2LTQyNzY3 LnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK2RpZmYgLS1naXQgYS9jcnlwdG8vY3JtZi9jcm1mX2xp Yi5jIGIvY3J5cHRvL2NybWYvY3JtZl9saWIuYworaW5kZXggZDVhZDUxZTQ1MDMuLjU3NDdhYjE4 NTY5IDEwMDY0NAorLS0tIGEvY3J5cHRvL2NybWYvY3JtZl9saWIuYworKysrIGIvY3J5cHRvL2Ny bWYvY3JtZl9saWIuYworQEAgLTc2Miw2ICs3NjIsNyBAQCB1bnNpZ25lZCBjaGFyICpPU1NMX0NS TUZfRU5DUllQVEVEVkFMVUVfZGVjcnlwdChjb25zdCBPU1NMX0NSTUZfRU5DUllQVEVEVkFMVUUg KgorICAgICBFVlBfQ0lQSEVSICpjaXBoZXIgPSBOVUxMOyAvKiB1c2VkIGNpcGhlciAqLworICAg ICBpbnQgY2lrZXlzaXplID0gMDsgLyoga2V5IHNpemUgZnJvbSBjaXBoZXIgKi8KKyAgICAgdW5z aWduZWQgY2hhciAqaXYgPSBOVUxMOyAvKiBpbml0aWFsIHZlY3RvciBmb3Igc3ltbWV0cmljIGVu Y3J5cHRpb24gKi8KKysgICAgaW50IGl2X2xlbjsgLyogaXYgbGVuZ3RoICovCisgICAgIHVuc2ln bmVkIGNoYXIgKm91dCA9IE5VTEw7IC8qIGRlY3J5cHRpb24gb3V0cHV0IGJ1ZmZlciAqLworICAg ICBpbnQgbiwgcmV0ID0gMDsKKyAgICAgRVZQX1BLRVlfQ1RYICpwa2N0eCA9IE5VTEw7IC8qIHBy aXZhdGUga2V5IGNvbnRleHQgKi8KK0BAIC04MTEsMTEgKzgxMiwxMiBAQCB1bnNpZ25lZCBjaGFy ICpPU1NMX0NSTUZfRU5DUllQVEVEVkFMVUVfZGVjcnlwdChjb25zdCBPU1NMX0NSTUZfRU5DUllQ VEVEVkFMVUUgKgorICAgICB9IGVsc2UgeworICAgICAgICAgZ290byBlbmQ7CisgICAgIH0KKy0g ICAgaWYgKChpdiA9IE9QRU5TU0xfbWFsbG9jKEVWUF9DSVBIRVJfZ2V0X2l2X2xlbmd0aChjaXBo ZXIpKSkgPT0gTlVMTCkKKysgICAgaXZfbGVuID0gRVZQX0NJUEhFUl9nZXRfaXZfbGVuZ3RoKGNp cGhlcik7CisrICAgIGlmICgoaXYgPSBPUEVOU1NMX21hbGxvYyhpdl9sZW4pKSA9PSBOVUxMKQor ICAgICAgICAgZ290byBlbmQ7CistICAgIGlmIChBU04xX1RZUEVfZ2V0X29jdGV0c3RyaW5nKGVu Yy0+c3ltbUFsZy0+cGFyYW1ldGVyLCBpdiwKKy0gICAgICAgICAgICBFVlBfQ0lQSEVSX2dldF9p dl9sZW5ndGgoY2lwaGVyKSkKKy0gICAgICAgICE9IEVWUF9DSVBIRVJfZ2V0X2l2X2xlbmd0aChj aXBoZXIpKSB7CisrICAgIGlmIChlbmMtPnN5bW1BbGctPnBhcmFtZXRlciA9PSBOVUxMCisrICAg ICAgICB8fCBBU04xX1RZUEVfZ2V0X29jdGV0c3RyaW5nKGVuYy0+c3ltbUFsZy0+cGFyYW1ldGVy LCBpdiwgaXZfbGVuKQorKyAgICAgICAgICAgICE9IGl2X2xlbikgeworICAgICAgICAgRVJSX3Jh aXNlKEVSUl9MSUJfQ1JNRiwgQ1JNRl9SX01BTEZPUk1FRF9JVik7CisgICAgICAgICBnb3RvIGVu ZDsKKyAgICAgfQoKZGlmZiAtLWdpdCBhLzAwNjgtQ1ZFLTIwMjYtNDI3NjgucGF0Y2ggYi8wMDY4 LUNWRS0yMDI2LTQyNzY4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmFhZTc3NGUKLS0tIC9kZXYvbnVsbAorKysgYi8wMDY4LUNWRS0yMDI2LTQyNzY4LnBhdGNoCkBA IC0wLDAgKzEsODYgQEAKK2RpZmYgLS1naXQgYS9jcnlwdG8vY21zL2Ntc19lbnYuYyBiL2NyeXB0 by9jbXMvY21zX2Vudi5jCitpbmRleCAzYjBkNTA3MGNlNS4uZTcwMjcwMzc1OGEgMTAwNjQ0Cist LS0gYS9jcnlwdG8vY21zL2Ntc19lbnYuYworKysrIGIvY3J5cHRvL2Ntcy9jbXNfZW52LmMKK0BA IC02NDQsMTMgKzY0NCw2IEBAIHN0YXRpYyBpbnQgY21zX1JlY2lwaWVudEluZm9fa3RyaV9kZWNy eXB0KENNU19Db250ZW50SW5mbyAqY21zLAorICAgICBpZiAoIW9zc2xfY21zX2Vudl9hc24xX2N0 cmwocmksIDEpKQorICAgICAgICAgZ290byBlcnI7CisgCistICAgIGlmIChFVlBfUEtFWV9pc19h KHBrZXksICJSU0EiKSkKKy0gICAgICAgIC8qIHVwcGVyIGxheWVyIENNUyBjb2RlIGluY29ycmVj dGx5IGFzc3VtZXMgdGhhdCBhIHN1Y2Nlc3NmdWwgUlNBCistICAgICAgICAgKiBkZWNyeXB0aW9u IG1lYW5zIHRoYXQgdGhlIGtleSBtYXRjaGVzIGNpcGhlcnRleHQgKHdoaWNoIG5ldmVyCistICAg ICAgICAgKiB3YXMgdGhlIGNhc2UsIGltcGxpY2l0IHJlamVjdGlvbiBvciBub3QpLCBzbyB0byBt YWtlIGl0IHdvcmsKKy0gICAgICAgICAqIGRpc2FibGUgaW1wbGljaXQgcmVqZWN0aW9uIGZvciBS U0Ega2V5cyAqLworLSAgICAgICAgRVZQX1BLRVlfQ1RYX2N0cmxfc3RyKGt0cmktPnBjdHgsICJy c2FfcGtjczFfaW1wbGljaXRfcmVqZWN0aW9uIiwgIjAiKTsKKy0KKyAgICAgaWYgKGV2cF9wa2V5 X2RlY3J5cHRfYWxsb2Moa3RyaS0+cGN0eCwgJmVrLCAmZWtsZW4sIGZpeGxlbiwKKyAgICAgICAg ICAgICBrdHJpLT5lbmNyeXB0ZWRLZXktPmRhdGEsCisgICAgICAgICAgICAga3RyaS0+ZW5jcnlw dGVkS2V5LT5sZW5ndGgpCitkaWZmIC0tZ2l0IGEvY3J5cHRvL3BrY3M3L3BrN19kb2l0LmMgYi9j cnlwdG8vcGtjczcvcGs3X2RvaXQuYworaW5kZXggYmM4MDI4ZTFiMTkuLjdiNmEzYjM2YjRiIDEw MDY0NAorLS0tIGEvY3J5cHRvL3BrY3M3L3BrN19kb2l0LmMKKysrKyBiL2NyeXB0by9wa2NzNy9w azdfZG9pdC5jCitAQCAtMTk3LDEzICsxOTcsNiBAQCBzdGF0aWMgaW50IHBrY3M3X2RlY3J5cHRf cmluZm8odW5zaWduZWQgY2hhciAqKnBlaywgaW50ICpwZWtsZW4sCisgICAgIGlmIChFVlBfUEtF WV9kZWNyeXB0X2luaXQocGN0eCkgPD0gMCkKKyAgICAgICAgIGdvdG8gZXJyOworIAorLSAgICBp ZiAoRVZQX1BLRVlfaXNfYShwa2V5LCAiUlNBIikpCistICAgICAgICAvKiB1cHBlciBsYXllciBw a2NzNyBjb2RlIGluY29ycmVjdGx5IGFzc3VtZXMgdGhhdCBhIHN1Y2Nlc3NmdWwgUlNBCistICAg ICAgICAgKiBkZWNyeXB0aW9uIG1lYW5zIHRoYXQgdGhlIGtleSBtYXRjaGVzIGNpcGhlcnRleHQg KHdoaWNoIG5ldmVyCistICAgICAgICAgKiB3YXMgdGhlIGNhc2UsIGltcGxpY2l0IHJlamVjdGlv biBvciBub3QpLCBzbyB0byBtYWtlIGl0IHdvcmsKKy0gICAgICAgICAqIGRpc2FibGUgaW1wbGlj aXQgcmVqZWN0aW9uIGZvciBSU0Ega2V5cyAqLworLSAgICAgICAgRVZQX1BLRVlfQ1RYX2N0cmxf c3RyKHBjdHgsICJyc2FfcGtjczFfaW1wbGljaXRfcmVqZWN0aW9uIiwgIjAiKTsKKy0KKyAgICAg cmV0ID0gZXZwX3BrZXlfZGVjcnlwdF9hbGxvYyhwY3R4LCAmZWssICZla2xlbiwgZml4bGVuLAor ICAgICAgICAgcmktPmVuY19rZXktPmRhdGEsIHJpLT5lbmNfa2V5LT5sZW5ndGgpOworICAgICBp ZiAocmV0IDw9IDApCitkaWZmIC0tZ2l0IGEvZG9jL21hbjMvQ01TX2RlY3J5cHQucG9kIGIvZG9j L21hbjMvQ01TX2RlY3J5cHQucG9kCitpbmRleCAxMjFiNzRhMzBhMS4uNjZhOTQyODdiNmYgMTAw NjQ0CistLS0gYS9kb2MvbWFuMy9DTVNfZGVjcnlwdC5wb2QKKysrKyBiL2RvYy9tYW4zL0NNU19k ZWNyeXB0LnBvZAorQEAgLTY4LDcgKzY4LDcgQEAgdGhlbiB0aGUgYWJvdmUgYmVoYXZpb3VyIGlz IG1vZGlmaWVkIGFuZCBhbiBlcnJvciBCPGlzPiByZXR1cm5lZCBpZiBubworIHJlY2lwaWVudCBl bmNyeXB0ZWQga2V5IGNhbiBiZSBkZWNyeXB0ZWQgQjx3aXRob3V0PiBnZW5lcmF0aW5nIGEgcmFu ZG9tCisgY29udGVudCBlbmNyeXB0aW9uIGtleS4gQXBwbGljYXRpb25zIHNob3VsZCB1c2UgdGhp cyBmbGFnIHdpdGgKKyBCPGV4dHJlbWUgY2F1dGlvbj4gZXNwZWNpYWxseSBpbiBhdXRvbWF0ZWQg Z2F0ZXdheXMgYXMgaXQgY2FuIGxlYXZlIHRoZW0KKy1vcGVuIHRvIGF0dGFjay4KKytvcGVuIHRv IGF0dGFjay4gU2VlIEw8RVZQX1BLRVlfZGVjcnlwdCgzKT4gZm9yIG1vcmUgZGV0YWlscy4KKyAK KyBJdCBpcyBwb3NzaWJsZSB0byBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgcmVjaXBpZW50IGtleSBi eSBvdGhlciBtZWFucyAoZm9yCisgZXhhbXBsZSBsb29raW5nIHRoZW0gdXAgaW4gYSBkYXRhYmFz ZSkgYW5kIHNldHRpbmcgdGhlbSBpbiB0aGUgQ01TIHN0cnVjdHVyZQorQEAgLTEwMyw3ICsxMDMs NyBAQCBtZW50aW9uZWQgaW4gQ01TX3ZlcmlmeSgpIGFsc28gYXBwbGllcyB0byBDTVNfZGVjcnlw dCgpLgorIAorID1oZWFkMSBTRUUgQUxTTworIAorLUw8RVJSX2dldF9lcnJvcigzKT4sIEw8Q01T X2VuY3J5cHQoMyk+CisrTDxFUlJfZ2V0X2Vycm9yKDMpPiwgTDxDTVNfZW5jcnlwdCgzKT4sIEw8 RVZQX1BLRVlfZGVjcnlwdCgzKT4KKyAKKyA9aGVhZDEgSElTVE9SWQorIAorZGlmZiAtLWdpdCBh L2RvYy9tYW4zL1BLQ1M3X2RlY3J5cHQucG9kIGIvZG9jL21hbjMvUEtDUzdfZGVjcnlwdC5wb2QK K2luZGV4IDViYTNjZjFjMTdjLi4zNTM0NTU5ZDU5NSAxMDA2NDQKKy0tLSBhL2RvYy9tYW4zL1BL Q1M3X2RlY3J5cHQucG9kCisrKysgYi9kb2MvbWFuMy9QS0NTN19kZWNyeXB0LnBvZAorQEAgLTIy LDYgKzIyLDE0IEBAIEI8ZmxhZ3M+IGlzIGFuIG9wdGlvbmFsIHNldCBvZiBmbGFncy4KKyBBbHRo b3VnaCB0aGUgcmVjaXBpZW50cyBjZXJ0aWZpY2F0ZSBpcyBub3QgbmVlZGVkIHRvIGRlY3J5cHQg dGhlIGRhdGEgaXQgaXMgbmVlZGVkCisgdG8gbG9jYXRlIHRoZSBhcHByb3ByaWF0ZSAob2YgcG9z c2libGUgc2V2ZXJhbCkgcmVjaXBpZW50cyBpbiB0aGUgUEtDUyM3IHN0cnVjdHVyZS4KKyAKKytX aGVuIFJTQSBQS0NTIzEgdjEuNSBLZXkgVHJhbnNwb3J0IGlzIGluIHVzZSwgdGhlIGludm9rZWQg RVZQX1BLRVlfZGVjcnlwdCgpCisrd2lsbCB1c2UgaW1wbGljaXQgcmVqZWN0aW9uIG1lY2hhbmlz bS4gSXQgYWx3YXlzIHJldHVybnMgdGhlIHJlc3VsdCBvZiBSU0EKKytkZWNyeXB0aW9uIG9mIHRo ZSBzeW1tZXRyaWMga2V5IHRvIGF2b2lkIE1hcnZpbiBhdHRhY2suIFRoaXMgcmVzdWx0IGlzCisr ZGV0ZXJtaW5pc3RpYyBhbmQgY2FuIGhhcHBlbiB0byBtYXRjaCB0aGUgc3ltbWV0cmljIGNpcGhl ciB1c2VkIGZvciB0aGUgY29udGVudAorK2VuY3J5cHRpb24uIEluIGNhc2Ugd2hlbiB0aGUgY2Vy dGlmaWNhdGUgaXMgbm90IHByb3ZpZGVkLCB0aGUgbGFzdAorK1JlY2lwaWVudEluZm8gcHJvZHVj aW5nIHRoZSBrZXkgbG9va2luZyB2YWxpZCB3aWxsIGJlIHVzZWQuIEl0IG1heSBjYXVzZQorK2dl dHRpbmcgZ2FyYmFnZSBjb250ZW50IG9uIGRlY3J5cHRpb24uCisrCisgVGhlIGZvbGxvd2luZyBm bGFncyBjYW4gYmUgcGFzc2VkIGluIHRoZSBCPGZsYWdzPiBwYXJhbWV0ZXIuCisgCisgSWYgdGhl IEI8UEtDUzdfVEVYVD4gZmxhZyBpcyBzZXQgTUlNRSBoZWFkZXJzIGZvciB0eXBlIEI8dGV4dC9w bGFpbj4gYXJlIGRlbGV0ZWQKK0BAIC00MCw3ICs0OCw3IEBAIGJlIGJldHRlciBpZiBpdCBjb3Vs ZCBsb29rIHVwIHRoZSBjb3JyZWN0IGtleSBhbmQgY2VydGlmaWNhdGUgZnJvbSBhIGRhdGFiYXNl LgorIAorID1oZWFkMSBTRUUgQUxTTworIAorLUw8RVJSX2dldF9lcnJvcigzKT4sIEw8UEtDUzdf ZW5jcnlwdCgzKT4KKytMPEVSUl9nZXRfZXJyb3IoMyk+LCBMPFBLQ1M3X2VuY3J5cHQoMyk+LCBM PEVWUF9QS0VZX2RlY3J5cHQoMyk+CisgCisgPWhlYWQxIENPUFlSSUdIVAorIAoKZGlmZiAtLWdp dCBhLzAwNjktQ1ZFLTIwMjYtNDI3NjkucGF0Y2ggYi8wMDY5LUNWRS0yMDI2LTQyNzY5LnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MDIyOWUKLS0tIC9kZXYvbnVs bAorKysgYi8wMDY5LUNWRS0yMDI2LTQyNzY5LnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20g MDkyZjM1NTk4ZWE5MzVjMDgwOGE5NzYzN2Y4ZjhmMzAyNTYzNTlhZiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IEJvYiBCZWNrIDxiZWNrQG9wZW5zc2wub3JnPgorRGF0ZTogRnJpLCAx NyBBcHIgMjAyNiAxNDowOTo1MiAtMDYwMAorU3ViamVjdDogW1BBVENIXSBVc2UgdGhlIGNvcnJl Y3QgaXNzdWVyIHdoZW4gdmFsaWRhdGluZyByb290Q0FLZXlVcGRhdGUKKworVGhpcyBjb3JyZWN0 bHkgdXNlcyB0aGUgZXhpc3Rpbmcgcm9vdCwgYW5kIG5vdCB0aGUgc2FtZSBjZXJ0aWZpY2F0ZQor YXMgdGhlIHJvb3Qgb2YgdGhlIGNoYWluIHRvIHZhbGlkYXRlLgorCitXaGlsZSB3ZSBhcmUgaGVy ZSwgd2UgYWxzbyB0dXJuIG9uIHNlbGYgc2lnbmVkIGNlcnRpZmljYXRlIHNpZ25hdHVyZQorY2hl Y2tpbmcgYXMgdGhpcyBjYXNlIGlzIGFjdHVhbGx5IGJyaW5naW5nIGluIHRydXN0IGFuY2hvcnMg YXMKK3NlbGYgc2lnbmVkIGNlcnRzLCBhbmQgZml4IGEgcG9zc2libGUgTlVMTCBkZXJlZi4KKwor Rml4ZXMgQ1ZFLTIwMjYtNDI3NjkKKy0tLQorIGNyeXB0by9jbXAvY21wX2dlbm0uYyB8IDYgKysr Ky0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKwor ZGlmZiAtLWdpdCBhL2NyeXB0by9jbXAvY21wX2dlbm0uYyBiL2NyeXB0by9jbXAvY21wX2dlbm0u YworaW5kZXggODZiYWQzYTc0NDUuLjQ0ZTVlZWYyOTFiIDEwMDY0NAorLS0tIGEvY3J5cHRvL2Nt cC9jbXBfZ2VubS5jCisrKysgYi9jcnlwdG8vY21wL2NtcF9nZW5tLmMKK0BAIC0yMjIsNyArMjIy LDcgQEAgc3RhdGljIGludCBzZWxmc2lnbmVkX3ZlcmlmeV9jYihpbnQgb2ssIFg1MDlfU1RPUkVf Q1RYICpzdG9yZV9jdHgpCisgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2tfWDUwOV9udW0odHJ1 c3QpOyBpKyspIHsKKyAgICAgICAgICAgICBpc3N1ZXIgPSBza19YNTA5X3ZhbHVlKHRydXN0LCBp KTsKKyAgICAgICAgICAgICBpZiAoKCpjaGVja19pc3N1ZWQpKHN0b3JlX2N0eCwgY2VydCwgaXNz dWVyKSkgeworLSAgICAgICAgICAgICAgICBpZiAoWDUwOV9hZGRfY2VydChjaGFpbiwgY2VydCwg WDUwOV9BRERfRkxBR19VUF9SRUYpKQorKyAgICAgICAgICAgICAgICBpZiAoWDUwOV9hZGRfY2Vy dChjaGFpbiwgaXNzdWVyLCBYNTA5X0FERF9GTEFHX1VQX1JFRikpCisgICAgICAgICAgICAgICAg ICAgICBvayA9IDE7CisgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgIH0KK0BA IC0yNTUsNiArMjU1LDcgQEAgc3RhdGljIGludCB2ZXJpZnlfc3NfY2VydChPU1NMX0xJQl9DVFgg KmxpYmN0eCwgY29uc3QgY2hhciAqcHJvcHEsCisgICAgIGlmICgoY3NjID0gWDUwOV9TVE9SRV9D VFhfbmV3X2V4KGxpYmN0eCwgcHJvcHEpKSA9PSBOVUxMCisgICAgICAgICB8fCAhWDUwOV9TVE9S RV9DVFhfaW5pdChjc2MsIHRzLCB0YXJnZXQsIHVudHJ1c3RlZCkpCisgICAgICAgICBnb3RvIGVy cjsKKysgICAgWDUwOV9TVE9SRV9DVFhfc2V0X2ZsYWdzKGNzYywgWDUwOV9WX0ZMQUdfQ0hFQ0tf U1NfU0lHTkFUVVJFKTsKKyAgICAgWDUwOV9TVE9SRV9DVFhfc2V0X3ZlcmlmeV9jYihjc2MsIHNl bGZzaWduZWRfdmVyaWZ5X2NiKTsKKyAgICAgb2sgPSBYNTA5X3ZlcmlmeV9jZXJ0KGNzYykgPiAw OworIAorQEAgLTI3Myw3ICsyNzQsOCBAQCB2ZXJpZnlfc3NfY2VydF90cmFucyhPU1NMX0NNUF9D VFggKmN0eCwgWDUwOSAqdHJ1c3RlZCAvKiBtYXkgYmUgTlVMTCAqLywKKyAgICAgaW50IHJlcyA9 IDA7CisgCisgICAgIGlmICh0cnVzdGVkICE9IE5VTEwpIHsKKy0gICAgICAgIFg1MDlfVkVSSUZZ X1BBUkFNICp2cG0gPSBYNTA5X1NUT1JFX2dldDBfcGFyYW0odHMpOworKyAgICAgICAgWDUwOV9W RVJJRllfUEFSQU0gKnZwbSA9ICh0cyA9PSBOVUxMKSA/IE5VTEwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBYNTA5X1NUT1JFX2dldDBfcGFyYW0odHMp OworIAorICAgICAgICAgaWYgKCh0cyA9IFg1MDlfU1RPUkVfbmV3KCkpID09IE5VTEwpCisgICAg ICAgICAgICAgcmV0dXJuIDA7CgpkaWZmIC0tZ2l0IGEvMDA3MC1DVkUtMjAyNi00Mjc3MC5wYXRj aCBiLzAwNzAtQ1ZFLTIwMjYtNDI3NzAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNGU4ZDJlNgotLS0gL2Rldi9udWxsCisrKyBiLzAwNzAtQ1ZFLTIwMjYtNDI3NzAu cGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorZGlmZiAtLWdpdCBhL3Byb3ZpZGVycy9pbXBsZW1lbnRh dGlvbnMvZXhjaGFuZ2UvZGhfZXhjaC5jIGIvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9leGNo YW5nZS9kaF9leGNoLmMKK2luZGV4IDY0MjE1MjA4MjEyLi5iN2MyMTUyNjU5MCAxMDA2NDQKKy0t LSBhL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMvZXhjaGFuZ2UvZGhfZXhjaC5jCisrKysgYi9w cm92aWRlcnMvaW1wbGVtZW50YXRpb25zL2V4Y2hhbmdlL2RoX2V4Y2guYworQEAgLTE1NSwxMiAr MTU1LDE1IEBAIHN0YXRpYyBpbnQgZGhfaW5pdCh2b2lkICp2cGRoY3R4LCB2b2lkICp2ZGgsIGNv bnN0IE9TU0xfUEFSQU0gcGFyYW1zW10pCisgc3RhdGljIGludCBkaF9tYXRjaF9wYXJhbXMoREgg KnByaXYsIERIICpwZWVyKQorIHsKKyAgICAgaW50IHJldDsKKysgICAgaW50IGlnbm9yZV9xID0g MTsKKyAgICAgRkZDX1BBUkFNUyAqZGhwYXJhbXNfcHJpdiA9IG9zc2xfZGhfZ2V0MF9wYXJhbXMo cHJpdik7CisgICAgIEZGQ19QQVJBTVMgKmRocGFyYW1zX3BlZXIgPSBvc3NsX2RoX2dldDBfcGFy YW1zKHBlZXIpOworIAorKyAgICBpZiAoZGhwYXJhbXNfcHJpdiAhPSBOVUxMICYmIGRocGFyYW1z X3ByaXYtPnEgIT0gTlVMTCkKKysgICAgICAgIGlnbm9yZV9xID0gMDsKKyAgICAgcmV0ID0gZGhw YXJhbXNfcHJpdiAhPSBOVUxMCisgICAgICAgICAmJiBkaHBhcmFtc19wZWVyICE9IE5VTEwKKy0g ICAgICAgICYmIG9zc2xfZmZjX3BhcmFtc19jbXAoZGhwYXJhbXNfcHJpdiwgZGhwYXJhbXNfcGVl ciwgMSk7CisrICAgICAgICAmJiBvc3NsX2ZmY19wYXJhbXNfY21wKGRocGFyYW1zX3ByaXYsIGRo cGFyYW1zX3BlZXIsIGlnbm9yZV9xKTsKKyAgICAgaWYgKCFyZXQpCisgICAgICAgICBFUlJfcmFp c2UoRVJSX0xJQl9QUk9WLCBQUk9WX1JfTUlTTUFUQ0hJTkdfRE9NQUlOX1BBUkFNRVRFUlMpOwor ICAgICByZXR1cm4gcmV0OwoKZGlmZiAtLWdpdCBhLzAwNzEtQ1ZFLTIwMjYtNDU0NDUucGF0Y2gg Yi8wMDcxLUNWRS0yMDI2LTQ1NDQ1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjEzZmY0NjEKLS0tIC9kZXYvbnVsbAorKysgYi8wMDcxLUNWRS0yMDI2LTQ1NDQ1LnBh dGNoCkBAIC0wLDAgKzEsMzA3IEBACitkaWZmIC0tZ2l0IGEvcHJvdmlkZXJzL2ltcGxlbWVudGF0 aW9ucy9jaXBoZXJzL2NpcGhlcl9hZXNfb2NiLmMgYi9wcm92aWRlcnMvaW1wbGVtZW50YXRpb25z L2NpcGhlcnMvY2lwaGVyX2Flc19vY2IuYworaW5kZXggMWY2ZGE0YjIxMjIuLjMyOWQ0YmZhM2Ux IDEwMDY0NAorLS0tIGEvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9jaXBoZXJzL2NpcGhlcl9h ZXNfb2NiLmMKKysrKyBiL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMvY2lwaGVycy9jaXBoZXJf YWVzX29jYi5jCitAQCAtNDk4LDYgKzQ5OCwxOSBAQCBzdGF0aWMgaW50IGFlc19vY2JfY2lwaGVy KHZvaWQgKnZjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwgc2l6ZV90ICpvdXRsLAorICAgICAgICAg cmV0dXJuIDA7CisgICAgIH0KKyAKKysgICAgLyoKKysgICAgICogTWlycm9yIHRoZSBzdHJlYW1p bmcgaGFuZGxlcjogcmVmdXNlIGlmIHRoZSBrZXkgaGFzIG5vdCBiZWVuIHNldCwKKysgICAgICog YW5kIHB1c2ggdGhlIGJ1ZmZlcmVkIElWIGludG8gdGhlIE9DQiBjb250ZXh0IGJlZm9yZSBhbnkg ZGF0YSBpcworKyAgICAgKiBwcm9jZXNzZWQuICBXaXRob3V0IHRoaXMsIENSWVBUT19vY2IxMjhf ZW5jcnlwdC9kZWNyeXB0IHJ1bnMgd2l0aAorKyAgICAgKiBPZmZzZXRfMCA9IDAgcmVnYXJkbGVz cyBvZiB0aGUgY2FsbGVyJ3MgSVYgLS0gY2F0YXN0cm9waGljCisrICAgICAqIChrZXksIG5vbmNl KSByZXVzZSwgYW5kIGEgc3Vic2VxdWVudCBFVlBfKkZpbmFsX2V4KCkgZW1pdHMgYSB0YWcKKysg ICAgICogdGhhdCBpcyBhIGZ1bmN0aW9uIG9mIChrZXksIGl2KSBvbmx5LgorKyAgICAgKi8KKysg ICAgaWYgKCFjdHgtPmtleV9zZXQgfHwgIXVwZGF0ZV9pdihjdHgpKSB7CisrICAgICAgICBFUlJf cmFpc2UoRVJSX0xJQl9QUk9WLCBQUk9WX1JfQ0lQSEVSX09QRVJBVElPTl9GQUlMRUQpOworKyAg ICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKyAgICAgaWYgKCFhZXNfZ2VuZXJpY19vY2JfY2lw aGVyKGN0eCwgaW4sIG91dCwgaW5sKSkgeworICAgICAgICAgRVJSX3JhaXNlKEVSUl9MSUJfUFJP ViwgUFJPVl9SX0NJUEhFUl9PUEVSQVRJT05fRkFJTEVEKTsKKyAgICAgICAgIHJldHVybiAwOwor ZGlmZiAtLWdpdCBhL3Rlc3QvZXZwX2V4dHJhX3Rlc3QuYyBiL3Rlc3QvZXZwX2V4dHJhX3Rlc3Qu YworaW5kZXggZjRiZmVhZTJhMWQuLjVjZGYzMTIyMDUwIDEwMDY0NAorLS0tIGEvdGVzdC9ldnBf ZXh0cmFfdGVzdC5jCisrKysgYi90ZXN0L2V2cF9leHRyYV90ZXN0LmMKK0BAIC03MTE5LDYgKzcx MTksMjY5IEBAIHN0YXRpYyBpbnQgdGVzdF9ldnBfY2lwaGVyX25lZ2F0aXZlX2xlbmd0aCh2b2lk KQorICAgICByZXR1cm4gcmV0OworIH0KKworKy8qCisrICogQ3Jvc3MtZHJpdmVyIHJvdW5kLXRy aXAgdGVzdCBmb3IgQUVBRCBvbmUtc2hvdCB2cyBzdHJlYW1pbmcgcGF0aHMuCisrICoKKysgKiBU aGUgc3RyZWFtaW5nIHBhdGggKEVWUF9DaXBoZXJVcGRhdGUvRmluYWwsIGRpc3BhdGNoZWQgdG8K KysgKiBPU1NMX0ZVTkNfQ0lQSEVSX1VQREFURS9fRklOQUwpIGlzIHRyZWF0ZWQgYXMgdGhlIG9y YWNsZS4gIEZvciBlYWNoCisrICogQUVBRCBjb25maWd1cmF0aW9uIHdlIGVuY3J5cHQgYW5kIGRl Y3J5cHQgdGhlIHNhbWUgKGtleSwgaXYsIGFhZCwgcHQpLAorKyAqIGRyaXZpbmcgdGhlIGJvZHkg aW4gdHdvIGNvbWJpbmF0aW9uczoKKysgKgorKyAqICAgMS4gIGJvZHkgZW5jcnlwdCB2aWEgRVZQ X0NpcGhlcigpIChvbmUtc2hvdCwgT1NTTF9GVU5DX0NJUEhFUl9DSVBIRVIpLAorKyAqICAgICAg IGJvZHkgZGVjcnlwdCB2aWEgRVZQX0NpcGhlclVwZGF0ZSAoc3RyZWFtaW5nKS4KKysgKiAgIDIu ICBib2R5IGVuY3J5cHQgdmlhIEVWUF9DaXBoZXJVcGRhdGUsIGJvZHkgZGVjcnlwdCB2aWEgRVZQ X0NpcGhlcigpLgorKyAqCisrICogQm90aCBjb21iaW5hdGlvbnMgbXVzdCByZWNvdmVyIHRoZSBw bGFpbnRleHQgYW5kIHZlcmlmeSB0aGUgdGFnLiAgQUFECisrICogaXMgYWx3YXlzIGZlZCB2aWEg RVZQX0NpcGhlclVwZGF0ZShOVUxMLCAuLi4pOiBPQ0IncyBvbmUtc2hvdCBpcyBib2R5CisrICog b25seSBhbmQgdGhlIGFzeW1tZXRyaWMgIkFBRCBzdHJlYW1pbmcsIGJvZHkgb25lLXNob3QiIGNh bGwgc2hhcGUgaXMKKysgKiB0aGUgbmF0dXJhbCBwYXR0ZXJuIGEgY2FsbGVyIHJlYWNoaW5nIGZv ciBFVlBfQ2lwaGVyKCkgZm9yIHRocm91Z2hwdXQKKysgKiB3b3VsZCB3cml0ZSBhbnl3YXkuCisr ICoKKysgKiBDVkUtMjAyNi00NTQ0NSAoQUVTLU9DQiBFVlBfQ2lwaGVyKCkgaWdub3JlZCBJVikg d2FzIGEgc2lsZW50IGZhaWx1cmUKKysgKiBpbiB0aGlzIG1hdHJpeDogdGhlIG9uZS1zaG90IGVu Y3J5cHQgcGF0aCBwcm9kdWNlZCBjaXBoZXJ0ZXh0IHVuZGVyCisrICogT2Zmc2V0XzAgPSAwIHJl Z2FyZGxlc3Mgb2YgSVYsIHdoaWNoIHRoZSBzdHJlYW1pbmcgZGVjcnlwdCBwYXRoIHRoZW4KKysg KiBjb3VsZCBub3QgdmVyaWZ5LiAgQWRkaW5nIHRoaXMgY3Jvc3MtY2hlY2sgY2F0Y2hlcyB0aGUg c2FtZSBjbGFzcyBvZgorKyAqIGJ1ZyBmb3IgYW55IGZ1dHVyZSBBRUFEIHdob3NlIG9uZS1zaG90 IGRpc3BhdGNoIGRpdmVyZ2VzIGZyb20gaXRzCisrICogc3RyZWFtaW5nIGRpc3BhdGNoLgorKyAq LworK3R5cGVkZWYgc3RydWN0IHsKKysgICAgY29uc3QgY2hhciAqbmFtZTsgLyogRVZQX0NJUEhF UiBmZXRjaCBuYW1lICovCisrICAgIHNpemVfdCBrZXlsZW47CisrICAgIHNpemVfdCBpdmxlbjsK KysgICAgc2l6ZV90IHRhZ2xlbjsKKysgICAgaW50IGlzX2NjbTsgLyogbmVlZHMgbGVuZ3RoLXVw LWZyb250ICsgdGFnLWJlZm9yZS1ib2R5IGRhbmNlICovCisrfSBBRUFEX09ORVNIT1RfQ0ZHOwor KworK3N0YXRpYyBjb25zdCBBRUFEX09ORVNIT1RfQ0ZHIGFlYWRfb25lc2hvdF9jZmdzW10gPSB7 CisrICAgIHsgIkFFUy0xMjgtR0NNIiwgMTYsIDEyLCAxNiwgMCB9LAorKyAgICB7ICJBRVMtMjU2 LUdDTSIsIDMyLCAxMiwgMTYsIDAgfSwKKysgICAgeyAiQUVTLTEyOC1DQ00iLCAxNiwgMTIsIDE2 LCAxIH0sCisrICAgIHsgIkFFUy0yNTYtQ0NNIiwgMzIsIDEyLCAxNiwgMSB9LAorKyAgICB7ICJB RVMtMTI4LU9DQiIsIDE2LCAxMiwgMTYsIDAgfSwKKysgICAgeyAiQUVTLTI1Ni1PQ0IiLCAzMiwg MTIsIDE2LCAwIH0sCisrICAgIHsgIkNoYUNoYTIwLVBvbHkxMzA1IiwgMzIsIDEyLCAxNiwgMCB9 CisrfTsKKysKKysvKgorKyAqIERyaXZlIGFuIGVuY3J5cHQgb3IgZGVjcnlwdCBvcGVyYXRpb24u ICBBQUQgYWx3YXlzIHZpYSBFVlBfQ2lwaGVyVXBkYXRlLgorKyAqIEJvZHkgdmlhIEVWUF9DaXBo ZXIoKSB3aGVuIG9uZXNob3RfYm9keSBpcyBub24temVybywgRVZQX0NpcGhlclVwZGF0ZQorKyAq IG90aGVyd2lzZS4gIE9uIGVuY3J5cHQsIGZpbGxzICpvdXQgYW5kIHRoZSBjYWxsZXItcHJvdmlk ZWQgdGFnIGJ1ZmZlci4KKysgKiBPbiBkZWNyeXB0LCByZWFkcyBmcm9tIGluIGFuZCB2ZXJpZmll cyB0YWc7IHJldHVybnMgMCBpZiB2ZXJpZmljYXRpb24KKysgKiBmYWlscyAodGhlIHRlc3QgYXNz ZXJ0cyB0aGUgZXhwZWN0ZWQgb3V0Y29tZSkuCisrICovCisrc3RhdGljIGludCBhZWFkX29uZXNo b3Rfb3AoY29uc3QgQUVBRF9PTkVTSE9UX0NGRyAqY2ZnLCBpbnQgZW5jLAorKyAgICBpbnQgb25l c2hvdF9ib2R5LCBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksCisrICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKml2LCBjb25zdCB1bnNpZ25lZCBjaGFyICphYWQsCisrICAgIHNpemVfdCBhYWRfbGVu LCBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGluX2xlbiwKKysgICAgdW5zaWduZWQg Y2hhciAqb3V0LCB1bnNpZ25lZCBjaGFyICp0YWcsIGNvbnN0IGNoYXIgKip3aHkpCisreworKyAg ICBFVlBfQ0lQSEVSX0NUWCAqY3R4ID0gTlVMTDsKKysgICAgRVZQX0NJUEhFUiAqY2lwaGVyID0g TlVMTDsKKysgICAgaW50IG91dGwgPSAwLCB0bXBsID0gMDsKKysgICAgaW50IG9rID0gMDsKKysg ICAgaW50IGJvZHlfcnY7CisrCisrICAgICp3aHkgPSBOVUxMOworKworKyAgICBpZiAoIVRFU1Rf cHRyKGNpcGhlciA9IEVWUF9DSVBIRVJfZmV0Y2godGVzdGN0eCwgY2ZnLT5uYW1lLCB0ZXN0cHJv cHEpKSkgeworKyAgICAgICAgKndoeSA9ICJDSVBIRVJfRkVUQ0giOworKyAgICAgICAgZ290byBl bmQ7CisrICAgIH0KKysgICAgaWYgKCFURVNUX3B0cihjdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXco KSkpIHsKKysgICAgICAgICp3aHkgPSAiQ1RYX05FVyI7CisrICAgICAgICBnb3RvIGVuZDsKKysg ICAgfQorKyAgICBpZiAoIVRFU1RfdHJ1ZShFVlBfQ2lwaGVySW5pdF9leChjdHgsIGNpcGhlciwg TlVMTCwgTlVMTCwgTlVMTCwgZW5jKSkpIHsKKysgICAgICAgICp3aHkgPSAiSU5JVF9DSVBIRVIi OworKyAgICAgICAgZ290byBlbmQ7CisrICAgIH0KKysgICAgaWYgKCFURVNUX2ludF9ndChFVlBf Q0lQSEVSX0NUWF9jdHJsKGN0eCwgRVZQX0NUUkxfQUVBRF9TRVRfSVZMRU4sCisrICAgICAgICAg ICAgICAgICAgICAgICAgIChpbnQpY2ZnLT5pdmxlbiwgTlVMTCksCisrICAgICAgICAgICAgMCkp IHsKKysgICAgICAgICp3aHkgPSAiU0VUX0lWTEVOIjsKKysgICAgICAgIGdvdG8gZW5kOworKyAg ICB9CisrICAgIGlmIChjZmctPmlzX2NjbSkgeworKyAgICAgICAgLyogUGxhY2Vob2xkZXIgdGFn bGVuIG9uIGVuY3J5cHQsIHJlYWwgdGFnIG9uIGRlY3J5cHQ7IGJvdGggYmVmb3JlIGtleStpdi4g Ki8KKysgICAgICAgIGlmICghVEVTVF9pbnRfZ3QoRVZQX0NJUEhFUl9DVFhfY3RybChjdHgsIEVW UF9DVFJMX0FFQURfU0VUX1RBRywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQp Y2ZnLT50YWdsZW4sIGVuYyA/IE5VTEwgOiB0YWcpLAorKyAgICAgICAgICAgICAgICAwKSkgewor KyAgICAgICAgICAgICp3aHkgPSAiQ0NNX1NFVF9UQUciOworKyAgICAgICAgICAgIGdvdG8gZW5k OworKyAgICAgICAgfQorKyAgICB9CisrICAgIGlmICghVEVTVF90cnVlKEVWUF9DaXBoZXJJbml0 X2V4KGN0eCwgTlVMTCwgTlVMTCwga2V5LCBpdiwgZW5jKSkpIHsKKysgICAgICAgICp3aHkgPSAi SU5JVF9LRVlfSVYiOworKyAgICAgICAgZ290byBlbmQ7CisrICAgIH0KKysgICAgaWYgKGNmZy0+ aXNfY2NtKSB7CisrICAgICAgICBpZiAoIVRFU1RfdHJ1ZShFVlBfQ2lwaGVyVXBkYXRlKGN0eCwg TlVMTCwgJm91dGwsIE5VTEwsIChpbnQpaW5fbGVuKSkpIHsKKysgICAgICAgICAgICAqd2h5ID0g IkNDTV9MRU5fREVDTCI7CisrICAgICAgICAgICAgZ290byBlbmQ7CisrICAgICAgICB9CisrICAg IH0KKysgICAgaWYgKGFhZF9sZW4gPiAwCisrICAgICAgICAmJiAhVEVTVF90cnVlKEVWUF9DaXBo ZXJVcGRhdGUoY3R4LCBOVUxMLCAmb3V0bCwgYWFkLCAoaW50KWFhZF9sZW4pKSkgeworKyAgICAg ICAgKndoeSA9ICJBQUQiOworKyAgICAgICAgZ290byBlbmQ7CisrICAgIH0KKysgICAgaWYgKCFl bmMgJiYgIWNmZy0+aXNfY2NtCisrICAgICAgICAmJiAhVEVTVF9pbnRfZ3QoRVZQX0NJUEhFUl9D VFhfY3RybChjdHgsIEVWUF9DVFJMX0FFQURfU0VUX1RBRywKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGludCljZmctPnRhZ2xlbiwgdGFnKSwKKysgICAgICAgICAgICAwKSkgeworKyAg ICAgICAgKndoeSA9ICJTRVRfVEFHIjsKKysgICAgICAgIGdvdG8gZW5kOworKyAgICB9CisrCisr ICAgIGlmIChvbmVzaG90X2JvZHkpIHsKKysgICAgICAgIGJvZHlfcnYgPSBFVlBfQ2lwaGVyKGN0 eCwgb3V0LCBpbiwgKHVuc2lnbmVkIGludClpbl9sZW4pOworKyAgICAgICAgaWYgKGNmZy0+aXNf Y2NtICYmICFlbmMpIHsKKysgICAgICAgICAgICAvKiBDQ00gZGVjcnlwdDogMCBtZWFucyB0YWcg dmVyaWZ5IGZhaWxlZCwgPCAwIG1lYW5zIGVycm9yLiAqLworKyAgICAgICAgICAgIGlmICghVEVT VF9pbnRfZ3QoYm9keV9ydiwgMCkpIHsKKysgICAgICAgICAgICAgICAgKndoeSA9ICJPTkVTSE9U X0RFQ1JZUFQiOworKyAgICAgICAgICAgICAgICBnb3RvIGVuZDsKKysgICAgICAgICAgICB9Cisr ICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIGlmICghVEVTVF9pbnRfZ2UoYm9keV9ydiwg MCkpIHsKKysgICAgICAgICAgICAgICAgKndoeSA9ICJPTkVTSE9UX0JPRFkiOworKyAgICAgICAg ICAgICAgICBnb3RvIGVuZDsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgICBv dXRsID0gKGludClpbl9sZW47CisrICAgIH0gZWxzZSB7CisrICAgICAgICBpZiAoIVRFU1RfdHJ1 ZShFVlBfQ2lwaGVyVXBkYXRlKGN0eCwgb3V0LCAmb3V0bCwgaW4sIChpbnQpaW5fbGVuKSkpIHsK KysgICAgICAgICAgICAqd2h5ID0gZW5jID8gIlNUUkVBTV9CT0RZX0VOQyIgOiAiU1RSRUFNX0JP RFlfREVDIjsKKysgICAgICAgICAgICBnb3RvIGVuZDsKKysgICAgICAgIH0KKysgICAgfQorKwor KyAgICBpZiAoIWNmZy0+aXNfY2NtKSB7CisrICAgICAgICBpZiAoIVRFU1RfdHJ1ZShFVlBfQ2lw aGVyRmluYWxfZXgoY3R4LCBvdXQgKyBvdXRsLCAmdG1wbCkpKSB7CisrICAgICAgICAgICAgKndo eSA9IGVuYyA/ICJGSU5BTF9FTkMiIDogIkZJTkFMX0RFQyI7CisrICAgICAgICAgICAgZ290byBl bmQ7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgaWYgKGVuYykgeworKyAgICAgICAgaWYg KCFURVNUX2ludF9ndChFVlBfQ0lQSEVSX0NUWF9jdHJsKGN0eCwgRVZQX0NUUkxfQUVBRF9HRVRf VEFHLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCljZmctPnRhZ2xlbiwgdGFn KSwKKysgICAgICAgICAgICAgICAgMCkpIHsKKysgICAgICAgICAgICAqd2h5ID0gIkdFVF9UQUci OworKyAgICAgICAgICAgIGdvdG8gZW5kOworKyAgICAgICAgfQorKyAgICB9CisrICAgIG9rID0g MTsKKytlbmQ6CisrICAgIEVWUF9DSVBIRVJfQ1RYX2ZyZWUoY3R4KTsKKysgICAgRVZQX0NJUEhF Ul9mcmVlKGNpcGhlcik7CisrICAgIHJldHVybiBvazsKKyt9CisrCisrLyoKKysgKiBGb3IgZWFj aCBBRUFEIHJvdyB3ZSBydW4gdHdvIEFBRCBtb2RlcywgYW5kIHdpdGhpbiBlYWNoIEFBRCBtb2Rl IHR3bworKyAqIGNyb3NzLWRyaXZlciByb3VuZCB0cmlwczoKKysgKgorKyAqICAgYWFkX21vZGUg MDogIG5vIEFBRC4gIENyaXRpY2FsIGZvciBjYXRjaGluZyB0aGUgT0NCLXN0eWxlIGJ1ZzogYW55 CisrICogICAgICAgICAgICAgICAgRVZQX0NpcGhlclVwZGF0ZShOVUxMLCBhYWQsIC4uLikgY2Fs bCBiZWZvcmUgdGhlIGJvZHkKKysgKiAgICAgICAgICAgICAgICB3b3VsZCBpdHNlbGYgcGFzcyB0 aHJvdWdoIHRoZSAoY29ycmVjdCkgc3RyZWFtaW5nCisrICogICAgICAgICAgICAgICAgaGFuZGxl ciBhbmQgYXBwbHkgdGhlIGJ1ZmZlcmVkIElWLCBtYXNraW5nIHRoZSBvbmUtc2hvdAorKyAqICAg ICAgICAgICAgICAgIGhhbmRsZXIncyBmYWlsdXJlIHRvIGRvIHNvLiAgV2l0aCBhYWRfbGVuID09 IDAgd2UgbWFrZQorKyAqICAgICAgICAgICAgICAgIEVWUF9DaXBoZXIoKSB0aGUgdmVyeSBmaXJz dCBjaXBoZXIgb3BlcmF0aW9uIG9uIHRoZQorKyAqICAgICAgICAgICAgICAgIGNvbnRleHQsIHdo aWNoIGlzIHRoZSBzaGFwZSB0aGUgYnVnIHJlcXVpcmVzLgorKyAqCisrICogICBhYWRfbW9kZSAx OiAgd2l0aCBBQUQgdmlhIHN0cmVhbWluZy4gIENhdGNoZXMgZGl2ZXJnZW5jZSBiZXR3ZWVuIHRo ZQorKyAqICAgICAgICAgICAgICAgIGRyaXZlcnMgd2hlbiBBQUQgaXMgaW4gcGxheS4KKysgKgor KyAqICAgbGVnIDA6ICAgICAgIGVuY3J5cHQtb25lc2hvdCAgICsgZGVjcnlwdC1zdHJlYW1pbmcK KysgKiAgIGxlZyAxOiAgICAgICBlbmNyeXB0LXN0cmVhbWluZyArIGRlY3J5cHQtb25lc2hvdAor KyAqCisrICogVGhlIHRlc3QgaW5kZXggZW5jb2RlcyAoY2lwaGVyLCBhYWRfbW9kZSkgc28gYSBm YWlsdXJlIHBvaW50cyBhdCBib3RoLgorKyAqLworK3N0YXRpYyBpbnQgdGVzdF9hZWFkX29uZXNo b3Rfcm91bmR0cmlwKGludCBpZHgpCisreworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBmaXhlZF9rZXlbMzJdID0geworKyAgICAgICAgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgw NCwgMHgwNSwgMHgwNiwgMHgwNywKKysgICAgICAgIDB4MDgsIDB4MDksIDB4MGEsIDB4MGIsIDB4 MGMsIDB4MGQsIDB4MGUsIDB4MGYsCisrICAgICAgICAweDEwLCAweDExLCAweDEyLCAweDEzLCAw eDE0LCAweDE1LCAweDE2LCAweDE3LAorKyAgICAgICAgMHgxOCwgMHgxOSwgMHgxYSwgMHgxYiwg MHgxYywgMHgxZCwgMHgxZSwgMHgxZgorKyAgICB9OworKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu ZWQgY2hhciBmaXhlZF9pdlsxMl0gPSB7CisrICAgICAgICAweGEwLCAweGExLCAweGEyLCAweGEz LCAweGE0LCAweGE1LCAweGE2LCAweGE3LCAweGE4LCAweGE5LCAweGFhLCAweGFiCisrICAgIH07 CisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGZpeGVkX2FhZFtdID0gImV4dHJhOmNv bnRleHQiOworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBmaXhlZF9wdFtdID0gIlRI RSBRVUlDSyBCUk9XTiBGT1ggSlVNUFMgT1ZFUiBMQVpZISEiOworKyAgICBjb25zdCBBRUFEX09O RVNIT1RfQ0ZHICpjZmcgPSAmYWVhZF9vbmVzaG90X2NmZ3NbaWR4IC8gMl07CisrICAgIGludCB3 aXRoX2FhZCA9IGlkeCAlIDI7CisrICAgIHNpemVfdCBhYWRfbGVuID0gd2l0aF9hYWQgPyBzaXpl b2YoZml4ZWRfYWFkKSAtIDEgOiAwOworKyAgICBzaXplX3QgcHRfbGVuID0gc2l6ZW9mKGZpeGVk X3B0KSAtIDE7CisrICAgIEVWUF9DSVBIRVIgKnByb2JlID0gTlVMTDsKKysgICAgdW5zaWduZWQg Y2hhciBjdFs2NF0sIHB0WzY0XTsKKysgICAgdW5zaWduZWQgY2hhciB0YWdfb25lc2hvdFsxNl0s IHRhZ19zdHJlYW1bMTZdOworKyAgICBjb25zdCBjaGFyICp3aHkgPSBOVUxMOworKyAgICBpbnQg bGVnLCBvayA9IDA7CisrCisrICAgIC8qCisrICAgICAqIFByb2JlIGZvciB0aGUgY2lwaGVyOiBh IGJ1aWxkIHdpdGggbm8tb2NiIC8gbm8tY2hhY2hhIC8gZXRjLiB3aWxsCisrICAgICAqIG5vdCBo YXZlIGl0LCBhbmQgd2UgdHJlYXQgdGhhdCBhcyBhIHBhc3MgKG5vdGhpbmcgdG8gdGVzdCBoZXJl KS4KKysgICAgICovCisrICAgIEVSUl9zZXRfbWFyaygpOworKyAgICBwcm9iZSA9IEVWUF9DSVBI RVJfZmV0Y2godGVzdGN0eCwgY2ZnLT5uYW1lLCB0ZXN0cHJvcHEpOworKyAgICBFUlJfcG9wX3Rv X21hcmsoKTsKKysgICAgaWYgKHByb2JlID09IE5VTEwpIHsKKysgICAgICAgIFRFU1RfaW5mbygi c2tpcHBpbmcsICclcycgaXMgbm90IGF2YWlsYWJsZSIsIGNmZy0+bmFtZSk7CisrICAgICAgICBy ZXR1cm4gMTsKKysgICAgfQorKyAgICBFVlBfQ0lQSEVSX2ZyZWUocHJvYmUpOworKworKyAgICBm b3IgKGxlZyA9IDA7IGxlZyA8PSAxOyBsZWcrKykgeworKyAgICAgICAgaW50IGVuY19vbmVzaG90 ID0gKGxlZyA9PSAwKTsKKysgICAgICAgIHVuc2lnbmVkIGNoYXIgKnRhZyA9IGVuY19vbmVzaG90 ID8gdGFnX29uZXNob3QgOiB0YWdfc3RyZWFtOworKworKyAgICAgICAgbWVtc2V0KGN0LCAwLCBz aXplb2YoY3QpKTsKKysgICAgICAgIG1lbXNldChwdCwgMCwgc2l6ZW9mKHB0KSk7CisrICAgICAg ICBtZW1zZXQodGFnLCAwLCBjZmctPnRhZ2xlbik7CisrCisrICAgICAgICBpZiAoIWFlYWRfb25l c2hvdF9vcChjZmcsIC8qZW5jPSovMSwgLypvbmVzaG90X2JvZHk9Ki9lbmNfb25lc2hvdCwKKysg ICAgICAgICAgICAgICAgZml4ZWRfa2V5LCBmaXhlZF9pdiwgZml4ZWRfYWFkLCBhYWRfbGVuLAor KyAgICAgICAgICAgICAgICBmaXhlZF9wdCwgcHRfbGVuLCBjdCwgdGFnLCAmd2h5KSkgeworKyAg ICAgICAgICAgIFRFU1RfZXJyb3IoIiVzICglcyk6IGVuY3J5cHQgbGVnICVkICglcyBib2R5KSBm YWlsZWQgYXQgJXMiLAorKyAgICAgICAgICAgICAgICBjZmctPm5hbWUsIHdpdGhfYWFkID8gIndp dGggQUFEIiA6ICJubyBBQUQiLAorKyAgICAgICAgICAgICAgICBsZWcsIGVuY19vbmVzaG90ID8g Im9uZXNob3QiIDogInN0cmVhbSIsCisrICAgICAgICAgICAgICAgIHdoeSA/IHdoeSA6ICI/Iik7 CisrICAgICAgICAgICAgZ290byBlbmQ7CisrICAgICAgICB9CisrICAgICAgICBpZiAoIWFlYWRf b25lc2hvdF9vcChjZmcsIC8qZW5jPSovMCwgLypvbmVzaG90X2JvZHk9Ki8hZW5jX29uZXNob3Qs CisrICAgICAgICAgICAgICAgIGZpeGVkX2tleSwgZml4ZWRfaXYsIGZpeGVkX2FhZCwgYWFkX2xl biwKKysgICAgICAgICAgICAgICAgY3QsIHB0X2xlbiwgcHQsIHRhZywgJndoeSkpIHsKKysgICAg ICAgICAgICBURVNUX2Vycm9yKCIlcyAoJXMpOiBkZWNyeXB0IGxlZyAlZCAoJXMgYm9keSkgZmFp bGVkIGF0ICVzIiwKKysgICAgICAgICAgICAgICAgY2ZnLT5uYW1lLCB3aXRoX2FhZCA/ICJ3aXRo IEFBRCIgOiAibm8gQUFEIiwKKysgICAgICAgICAgICAgICAgbGVnLCBlbmNfb25lc2hvdCA/ICJz dHJlYW0iIDogIm9uZXNob3QiLAorKyAgICAgICAgICAgICAgICB3aHkgPyB3aHkgOiAiPyIpOwor KyAgICAgICAgICAgIGdvdG8gZW5kOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFURVNUX21l bV9lcShwdCwgcHRfbGVuLCBmaXhlZF9wdCwgcHRfbGVuKSkgeworKyAgICAgICAgICAgIFRFU1Rf ZXJyb3IoIiVzICglcyk6IGxlZyAlZDogcmVjb3ZlcmVkIHBsYWludGV4dCBkaWZmZXJzIiwKKysg ICAgICAgICAgICAgICAgY2ZnLT5uYW1lLCB3aXRoX2FhZCA/ICJ3aXRoIEFBRCIgOiAibm8gQUFE IiwgbGVnKTsKKysgICAgICAgICAgICBnb3RvIGVuZDsKKysgICAgICAgIH0KKysgICAgfQorKwor KyAgICAvKgorKyAgICAgKiBCb3RoIGxlZ3Mgc2hhcmUgdGhlIHNhbWUgKGtleSwgaXYsIGFhZCwg cHQpIGFuZCBtdXN0IHRoZXJlZm9yZQorKyAgICAgKiBhZ3JlZSBvbiB0aGUgdGFnIGJpdC1mb3It Yml0LCByZWdhcmRsZXNzIG9mIHdoaWNoIGRyaXZlciBjb21wdXRlZAorKyAgICAgKiBpdC4gIFRo aXMgY2F0Y2hlcyB0aGUgT0NCLXN0eWxlIGZhaWx1cmUgd2hlcmUgdGhlIG9uZS1zaG90IHBhdGgK KysgICAgICogc2lsZW50bHkgZW1pdHMgYSBkaWZmZXJlbnQgY2lwaGVydGV4dC90YWcgZnJvbSB0 aGUgc3RyZWFtaW5nIHBhdGguCisrICAgICAqLworKyAgICBpZiAoIVRFU1RfbWVtX2VxKHRhZ19v bmVzaG90LCBjZmctPnRhZ2xlbiwgdGFnX3N0cmVhbSwgY2ZnLT50YWdsZW4pKSB7CisrICAgICAg ICBURVNUX2Vycm9yKCIlcyAoJXMpOiBvbmVzaG90LWVuY3J5cHQgdGFnICE9IHN0cmVhbWluZy1l bmNyeXB0IHRhZyIsCisrICAgICAgICAgICAgY2ZnLT5uYW1lLCB3aXRoX2FhZCA/ICJ3aXRoIEFB RCIgOiAibm8gQUFEIik7CisrICAgICAgICBnb3RvIGVuZDsKKysgICAgfQorKyAgICBvayA9IDE7 CisrZW5kOgorKyAgICByZXR1cm4gb2s7CisrfQorKworIHN0YXRpYyBpbnQgdGVzdF9hZXNfcmM0 X2tleWxlbl9jaGFuZ2VfY3ZlXzIwMjNfNTM2Myh2b2lkKQorIHsKKyAgICAgLyogUkM0IHRlc3Qg ZGF0YSBvYnRhaW5lZCBmcm9tIFJGQyA2MjI5ICovCitAQCAtODAzMCw2ICs4Mjk0LDggQEAgaW50 IHNldHVwX3Rlc3RzKHZvaWQpCisgICAgIEFERF9URVNUKHRlc3RfYWVzX3JjNF9rZXlsZW5fY2hh bmdlX2N2ZV8yMDIzXzUzNjMpOworICNlbmRpZgorIAorKyAgICBBRERfQUxMX1RFU1RTKHRlc3Rf YWVhZF9vbmVzaG90X3JvdW5kdHJpcCwgMiAqIE9TU0xfTkVMRU0oYWVhZF9vbmVzaG90X2NmZ3Mp KTsKKysKKyAgICAgQUREX1RFU1QodGVzdF9pbnZhbGlkX2N0eF9mb3JfZGlnZXN0KTsKKyAKKyAg ICAgQUREX1RFU1QodGVzdF9ldnBfY2lwaGVyX3BpcGVsaW5lKTsKCmRpZmYgLS1naXQgYS8wMDcy LUNWRS0yMDI2LTQ1NDQ2LnBhdGNoIGIvMDA3Mi1DVkUtMjAyNi00NTQ0Ni5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTljMzk4Ci0tLSAvZGV2L251bGwKKysrIGIv MDA3Mi1DVkUtMjAyNi00NTQ0Ni5wYXRjaApAQCAtMCwwICsxLDIzMSBAQAorZGlmZiAtLWdpdCBh L3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMvY2lwaGVycy9jaXBoZXJfYWVzX2djbV9zaXZfaHcu YyBiL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMvY2lwaGVycy9jaXBoZXJfYWVzX2djbV9zaXZf aHcuYworaW5kZXggNGIyMTE3YTk0Y2EuLjQ1MmM5ZjAwZmVhIDEwMDY0NAorLS0tIGEvcHJvdmlk ZXJzL2ltcGxlbWVudGF0aW9ucy9jaXBoZXJzL2NpcGhlcl9hZXNfZ2NtX3Npdl9ody5jCisrKysg Yi9wcm92aWRlcnMvaW1wbGVtZW50YXRpb25zL2NpcGhlcnMvY2lwaGVyX2Flc19nY21fc2l2X2h3 LmMKK0BAIC01OCw2ICs1OCw5IEBAIHN0YXRpYyBpbnQgYWVzX2djbV9zaXZfaW5pdGtleSh2b2lk ICp2Y3R4KQorICAgICBtZW1zZXQoJmRhdGEsIDAsIHNpemVvZihkYXRhKSk7CisgICAgIG1lbWNw eSgmZGF0YS5ibG9ja1tzaXplb2YoZGF0YS5jb3VudGVyKV0sIGN0eC0+bm9uY2UsIE5PTkNFX1NJ WkUpOworIAorKyAgICBjdHgtPmdlbmVyYXRlZF90YWcgPSAwOworKyAgICBtZW1zZXQoY3R4LT50 YWcsIDAsIFRBR19TSVpFKTsKKysKKyAgICAgLyogbXNnX2F1dGhfa2V5IGlzIGFsd2F5cyAxNiBi eXRlcyBpbiBzaXplLCByZWdhcmRsZXNzIG9mIEFFUzEyOC9BRVMyNTYgKi8KKyAgICAgLyogY291 bnRlciBpcyBzdG9yZWQgbGl0dGxlLWVuZGlhbiAqLworICAgICBmb3IgKGkgPSAwOyBpIDwgQkxP Q0tfU0laRTsgaSArPSA4KSB7CitAQCAtMTM0LDE3ICsxMzcsNiBAQCBzdGF0aWMgaW50IGFlc19n Y21fc2l2X2FhZChQUk9WX0FFU19HQ01fU0lWX0NUWCAqY3R4LAorICAgICByZXR1cm4gMTsKKyB9 CisgCistc3RhdGljIGludCBhZXNfZ2NtX3Npdl9maW5pc2goUFJPVl9BRVNfR0NNX1NJVl9DVFgg KmN0eCkKKy17CistICAgIGludCByZXQgPSAwOworLQorLSAgICBpZiAoY3R4LT5lbmMpCistICAg ICAgICByZXR1cm4gY3R4LT5nZW5lcmF0ZWRfdGFnOworLSAgICByZXQgPSAhQ1JZUFRPX21lbWNt cChjdHgtPnRhZywgY3R4LT51c2VyX3RhZywgc2l6ZW9mKGN0eC0+dGFnKSk7CistICAgIHJldCAm PSBjdHgtPmhhdmVfdXNlcl90YWc7CistICAgIHJldHVybiByZXQ7CistfQorLQorIHN0YXRpYyBp bnQgYWVzX2djbV9zaXZfZW5jcnlwdChQUk9WX0FFU19HQ01fU0lWX0NUWCAqY3R4LCBjb25zdCB1 bnNpZ25lZCBjaGFyICppbiwKKyAgICAgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3QgbGVuKQor IHsKK0BAIC0yNzEsNiArMjYzLDE5IEBAIHN0YXRpYyBpbnQgYWVzX2djbV9zaXZfZGVjcnlwdChQ Uk9WX0FFU19HQ01fU0lWX0NUWCAqY3R4LCBjb25zdCB1bnNpZ25lZCBjaGFyICppCisgICAgIHJl dHVybiAhZXJyb3I7CisgfQorIAorK3N0YXRpYyBpbnQgYWVzX2djbV9zaXZfZmluaXNoKFBST1Zf QUVTX0dDTV9TSVZfQ1RYICpjdHgpCisreworKyAgICBpbnQgcmV0ID0gMDsKKysKKysgICAgaWYg KGN0eC0+ZW5jKQorKyAgICAgICAgcmV0dXJuIGN0eC0+Z2VuZXJhdGVkX3RhZzsKKysgICAgaWYg KCFjdHgtPmdlbmVyYXRlZF90YWcpCisrICAgICAgICBhZXNfZ2NtX3Npdl9kZWNyeXB0KGN0eCwg TlVMTCwgTlVMTCwgMCk7CisrICAgIHJldCA9ICFDUllQVE9fbWVtY21wKGN0eC0+dGFnLCBjdHgt PnVzZXJfdGFnLCBzaXplb2YoY3R4LT50YWcpKTsKKysgICAgcmV0ICY9IGN0eC0+aGF2ZV91c2Vy X3RhZzsKKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisgc3RhdGljIGludCBhZXNfZ2NtX3Npdl9j aXBoZXIodm9pZCAqdmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LAorICAgICBjb25zdCB1bnNpZ25l ZCBjaGFyICppbiwgc2l6ZV90IGxlbikKKyB7CitkaWZmIC0tZ2l0IGEvcHJvdmlkZXJzL2ltcGxl bWVudGF0aW9ucy9jaXBoZXJzL2NpcGhlcl9hZXNfc2l2LmMgYi9wcm92aWRlcnMvaW1wbGVtZW50 YXRpb25zL2NpcGhlcnMvY2lwaGVyX2Flc19zaXYuYworaW5kZXggMzhmNjk3N2JmNzcuLmY2N2Mw MTVmODY0IDEwMDY0NAorLS0tIGEvcHJvdmlkZXJzL2ltcGxlbWVudGF0aW9ucy9jaXBoZXJzL2Np cGhlcl9hZXNfc2l2LmMKKysrKyBiL3Byb3ZpZGVycy9pbXBsZW1lbnRhdGlvbnMvY2lwaGVycy9j aXBoZXJfYWVzX3Npdi5jCitAQCAtMTkzLDYgKzE5Myw3IEBAIHN0YXRpYyBpbnQgYWVzX3Npdl9z ZXRfY3R4X3BhcmFtcyh2b2lkICp2Y3R4LCBjb25zdCBPU1NMX1BBUkFNIHBhcmFtc1tdKQorICAg ICBQUk9WX0FFU19TSVZfQ1RYICpjdHggPSAoUFJPVl9BRVNfU0lWX0NUWCAqKXZjdHg7CisgICAg IGNvbnN0IE9TU0xfUEFSQU0gKnA7CisgICAgIHVuc2lnbmVkIGludCBzcGVlZCA9IDA7CisrICAg IFNJVjEyOF9DT05URVhUICpzY3R4ID0gJmN0eC0+c2l2OworIAorICAgICBpZiAob3NzbF9wYXJh bV9pc19lbXB0eShwYXJhbXMpKQorICAgICAgICAgcmV0dXJuIDE7CitAQCAtMjI2LDYgKzIyNyw4 IEBAIHN0YXRpYyBpbnQgYWVzX3Npdl9zZXRfY3R4X3BhcmFtcyh2b2lkICp2Y3R4LCBjb25zdCBP U1NMX1BBUkFNIHBhcmFtc1tdKQorICAgICAgICAgaWYgKGtleWxlbiAhPSBjdHgtPmtleWxlbikK KyAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgfQorKyAgICBzY3R4LT5maW5hbF9yZXQgPSAt MTsKKysKKyAgICAgcmV0dXJuIDE7CisgfQorIAorZGlmZiAtLWdpdCBhL3Rlc3QvZXZwX2V4dHJh X3Rlc3QuYyBiL3Rlc3QvZXZwX2V4dHJhX3Rlc3QuYworaW5kZXggZjRiZmVhZTJhMWQuLmViZWNi MzZjYzkzIDEwMDY0NAorLS0tIGEvdGVzdC9ldnBfZXh0cmFfdGVzdC5jCisrKysgYi90ZXN0L2V2 cF9leHRyYV90ZXN0LmMKK0BAIC03MDYyLDYgKzcwNjIsMTQyIEBAIHN0YXRpYyBpbnQgdGVzdF9h ZXNfcmM0X2tleWxlbl9jaGFuZ2VfY3ZlXzIwMjNfNTM2Myh2b2lkKQorIH0KKyAjZW5kaWYKKyAK KytzdGF0aWMgaW50IHRlc3RfYWVzX2djbV9zaXZfZW1wdHlfZGF0YSh2b2lkKQorK3sKKysgICAg dW5zaWduZWQgY2hhciBrZXlbMTZdID0geyAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAw eDA2LCAweDA3LCAweDA4LAorKyAgICAgICAgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwg MHgwZSwgMHgwZiwgMHgxMCB9OworKyAgICB1bnNpZ25lZCBjaGFyIG5vbmNlWzEyXSA9IHsgMHhh YSwgMHhiYiwgMHhjYywgMHhkZCwgMHhlZSwgMHhmZiwgMHgwMCwgMHgxMSwKKysgICAgICAgIDB4 MjIsIDB4MzMsIDB4NDQsIDB4NTUgfTsKKysgICAgdW5zaWduZWQgY2hhciBhYWRbMzNdID0gInRo aXMgQUFEIHdhcyBuZXZlciBhdXRoZW50aWNhdGVkIjsKKysgICAgdW5zaWduZWQgY2hhciB6ZXJv X3RhZ1sxNl0gPSB7IDAgfTsKKysgICAgdW5zaWduZWQgY2hhciByZWFsX3RhZ1sxNl07CisrICAg IHVuc2lnbmVkIGNoYXIgb3V0WzE2XTsKKysgICAgaW50IG91dGwsIHJldCA9IDA7CisrICAgIEVW UF9DSVBIRVJfQ1RYICpjdHggPSBOVUxMOworKyAgICBFVlBfQ0lQSEVSICpjID0gRVZQX0NJUEhF Ul9mZXRjaChOVUxMLCAiQUVTLTEyOC1HQ00tU0lWIiwgTlVMTCk7CisrCisrICAgIGlmIChjID09 IE5VTEwpIHsKKysgICAgICAgIHJldHVybiBURVNUX3NraXAoIkFFUy0xMjgtR0NNLVNJViBjaXBo ZXIgaXMgbm90IGF2YWlsYWJsZSIpOworKyAgICB9CisrCisrICAgIC8qIENvbXB1dGUgdGhlIENP UlJFQ1QgdGFnIGZvciAoa2V5LG5vbmNlLGFhZCxwdD0iIikgdmlhIGVuY3J5cHQgKi8KKysgICAg Y3R4ID0gRVZQX0NJUEhFUl9DVFhfbmV3KCk7CisrICAgIGlmICghVEVTVF9wdHIoY3R4KQorKyAg ICAgICAgfHwgIVRFU1RfdHJ1ZShFVlBfRW5jcnlwdEluaXRfZXgyKGN0eCwgYywga2V5LCBub25j ZSwgTlVMTCkpCisrICAgICAgICB8fCAhVEVTVF90cnVlKEVWUF9FbmNyeXB0VXBkYXRlKGN0eCwg TlVMTCwgJm91dGwsIGFhZCwgc2l6ZW9mKGFhZCkpKSAvKiBBQUQgKi8KKysgICAgICAgIHx8ICFU RVNUX3RydWUoRVZQX0VuY3J5cHRVcGRhdGUoY3R4LCBvdXQsICZvdXRsLCBhYWQsIDApKSAvKiBl bXB0eSBQVCwgb3V0IT1OVUxMICovCisrICAgICAgICB8fCAhVEVTVF90cnVlKEVWUF9FbmNyeXB0 RmluYWxfZXgoY3R4LCBvdXQsICZvdXRsKSkKKysgICAgICAgIHx8ICFURVNUX3RydWUoRVZQX0NJ UEhFUl9DVFhfY3RybChjdHgsIEVWUF9DVFJMX0FFQURfR0VUX1RBRywgMTYsIHJlYWxfdGFnKSkp CisrICAgICAgICBnb3RvIGVycjsKKysgICAgRVZQX0NJUEhFUl9DVFhfZnJlZShjdHgpOworKwor KyAgICAvKiBTQU5JVFk6IGRlY3J5cHQgd2l0aCBDT1JSRUNUIHRhZyBhbmQgYW4gZXhwbGljaXQg ZW1wdHktUFQgVXBkYXRlICovCisrICAgIGN0eCA9IEVWUF9DSVBIRVJfQ1RYX25ldygpOworKyAg ICBpZiAoIVRFU1RfcHRyKGN0eCkKKysgICAgICAgIHx8ICFURVNUX3RydWUoRVZQX0RlY3J5cHRJ bml0X2V4MihjdHgsIGMsIGtleSwgbm9uY2UsIE5VTEwpKQorKyAgICAgICAgfHwgIVRFU1RfdHJ1 ZShFVlBfQ0lQSEVSX0NUWF9jdHJsKGN0eCwgRVZQX0NUUkxfQUVBRF9TRVRfVEFHLCAxNiwgcmVh bF90YWcpKQorKyAgICAgICAgfHwgIVRFU1RfdHJ1ZShFVlBfRGVjcnlwdFVwZGF0ZShjdHgsIE5V TEwsICZvdXRsLCBhYWQsIHNpemVvZihhYWQpKSkKKysgICAgICAgIHx8ICFURVNUX3RydWUoRVZQ X0RlY3J5cHRVcGRhdGUoY3R4LCBvdXQsICZvdXRsLCBhYWQsIDApKSAvKiBmb3JjZSBhZXNfZ2Nt X3Npdl9kZWNyeXB0KGxlbj0wKSAqLworKyAgICAgICAgfHwgIVRFU1RfdHJ1ZShFVlBfRGVjcnlw dEZpbmFsX2V4KGN0eCwgb3V0LCAmb3V0bCkpKQorKyAgICAgICAgZ290byBlcnI7CisrICAgIEVW UF9DSVBIRVJfQ1RYX2ZyZWUoY3R4KTsKKysKKysgICAgLyogRk9SR0VSWSBBOiBBQUQgb25seSwg Tk8gY2lwaGVydGV4dCBVcGRhdGUsIEFMTC1aRVJPIHRhZyAqLworKyAgICBjdHggPSBFVlBfQ0lQ SEVSX0NUWF9uZXcoKTsKKysgICAgaWYgKCFURVNUX3B0cihjdHgpCisrICAgICAgICB8fCAhVEVT VF90cnVlKEVWUF9EZWNyeXB0SW5pdF9leDIoY3R4LCBjLCBrZXksIG5vbmNlLCBOVUxMKSkKKysg ICAgICAgIHx8ICFURVNUX3RydWUoRVZQX0NJUEhFUl9DVFhfY3RybChjdHgsIEVWUF9DVFJMX0FF QURfU0VUX1RBRywgMTYsIHplcm9fdGFnKSkKKysgICAgICAgIHx8ICFURVNUX3RydWUoRVZQX0Rl Y3J5cHRVcGRhdGUoY3R4LCBOVUxMLCAmb3V0bCwgYWFkLCBzaXplb2YoYWFkKSkpIC8qIEFBRCBv bmx5LCBvdXQ9PU5VTEwgKi8KKysgICAgICAgIHx8ICFURVNUX2ZhbHNlKEVWUF9EZWNyeXB0Rmlu YWxfZXgoY3R4LCBvdXQsICZvdXRsKSkpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgRVZQX0NJ UEhFUl9DVFhfZnJlZShjdHgpOworKworKyAgICAvKiBGT1JHRVJZIEI6IG5vIEFBRCwgbm8gVXBk YXRlIGF0IGFsbCwgQUxMLVpFUk8gdGFnICovCisrICAgIGN0eCA9IEVWUF9DSVBIRVJfQ1RYX25l dygpOworKyAgICBpZiAoIVRFU1RfcHRyKGN0eCkKKysgICAgICAgIHx8ICFURVNUX3RydWUoRVZQ X0RlY3J5cHRJbml0X2V4MihjdHgsIGMsIGtleSwgbm9uY2UsIE5VTEwpKQorKyAgICAgICAgfHwg IVRFU1RfdHJ1ZShFVlBfQ0lQSEVSX0NUWF9jdHJsKGN0eCwgRVZQX0NUUkxfQUVBRF9TRVRfVEFH LCAxNiwgemVyb190YWcpKQorKyAgICAgICAgfHwgIVRFU1RfZmFsc2UoRVZQX0RlY3J5cHRGaW5h bF9leChjdHgsIG91dCwgJm91dGwpKSkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBFVlBfQ0lQ SEVSX0NUWF9mcmVlKGN0eCk7CisrCisrICAgIC8qIENPTlRST0w6IEFBRCBvbmx5LCBOTyBjaXBo ZXJ0ZXh0IFVwZGF0ZSwgQ09SUkVDVCB0YWcgKi8KKysgICAgY3R4ID0gRVZQX0NJUEhFUl9DVFhf bmV3KCk7CisrICAgIGlmICghVEVTVF9wdHIoY3R4KQorKyAgICAgICAgfHwgIVRFU1RfdHJ1ZShF VlBfRGVjcnlwdEluaXRfZXgyKGN0eCwgYywga2V5LCBub25jZSwgTlVMTCkpCisrICAgICAgICB8 fCAhVEVTVF90cnVlKEVWUF9DSVBIRVJfQ1RYX2N0cmwoY3R4LCBFVlBfQ1RSTF9BRUFEX1NFVF9U QUcsIDE2LCByZWFsX3RhZykpCisrICAgICAgICB8fCAhVEVTVF90cnVlKEVWUF9EZWNyeXB0VXBk YXRlKGN0eCwgTlVMTCwgJm91dGwsIGFhZCwgc2l6ZW9mKGFhZCkpKQorKyAgICAgICAgfHwgIVRF U1RfdHJ1ZShFVlBfRGVjcnlwdEZpbmFsX2V4KGN0eCwgb3V0LCAmb3V0bCkpKQorKyAgICAgICAg Z290byBlcnI7CisrICAgIEVWUF9DSVBIRVJfQ1RYX2ZyZWUoY3R4KTsKKysgICAgY3R4ID0gTlVM TDsKKysKKysgICAgcmV0ID0gMTsKKytlcnI6CisrICAgIEVWUF9DSVBIRVJfQ1RYX2ZyZWUoY3R4 KTsKKysKKysgICAgRVZQX0NJUEhFUl9mcmVlKGMpOworKyAgICByZXR1cm4gcmV0OworK30KKysK KysvKgorKyAqIEFFUy1TSVYgcmV1c2Utd2l0aG91dC1yZWtleToKKysgKiAgIG1zZzE6IGxlZ2l0 IG5vbi1lbXB0eSBDVCwgdGFnIHZlcmlmaWVzLCBmaW5hbF9yZXQ9MAorKyAqICAgbXNnMjogbm8g cmVpbml0IChvciByZWluaXQgd2l0aCBrZXk9TlVMTCksIHNldCBmb3JnZWQgdGFnLAorKyAqICAg ICAgICAgQUFEIG9ubHksIERlY3J5cHRGaW5hbCAtPiBkb2VzIHN0YWxlIGZpbmFsX3JldCBsZWFr IHRocm91Z2g/CisrICovCisrc3RhdGljIGludCB0ZXN0X2Flc19zaXZfY3R4X3JldXNlKHZvaWQp CisreworKyAgICB1bnNpZ25lZCBjaGFyIGtleVszMl0gPSB7IDcgfTsgLyogQUVTLTEyOC1TSVYg PT4gMioxNiAqLworKyAgICB1bnNpZ25lZCBjaGFyIHB0WzldID0gInBheWxvYWQhIjsKKysgICAg dW5zaWduZWQgY2hhciBjdFs5XSwgdGFnYnVmWzE2XSwgb3V0WzE2XSwgemVybzE2WzE2XSA9IHsg MCB9OworKyAgICB1bnNpZ25lZCBjaGFyIGFhZFsxNF0gPSAiZm9yZ2VkIGhlYWRlciI7CisrICAg IGludCBvdXRsLCByZXQgPSAwOworKyAgICBFVlBfQ0lQSEVSX0NUWCAqZSA9IE5VTEwsICpkID0g TlVMTDsKKysgICAgRVZQX0NJUEhFUiAqYyA9IEVWUF9DSVBIRVJfZmV0Y2goTlVMTCwgIkFFUy0x MjgtU0lWIiwgTlVMTCk7CisrCisrICAgIGlmIChjID09IE5VTEwpIHsKKysgICAgICAgIHJldHVy biBURVNUX3NraXAoIkFFUy0xMjgtU0lWIGNpcGhlciBpcyBub3QgYXZhaWxhYmxlIik7CisrICAg IH0KKysKKysgICAgLyogcHJvZHVjZSBhIHZhbGlkIChjdCx0YWcpIGZvciBtc2cxICovCisrICAg IGUgPSBFVlBfQ0lQSEVSX0NUWF9uZXcoKTsKKysgICAgaWYgKCFURVNUX3B0cihlKQorKyAgICAg ICAgfHwgIVRFU1RfdHJ1ZShFVlBfRW5jcnlwdEluaXRfZXgyKGUsIGMsIGtleSwgTlVMTCwgTlVM TCkpCisrICAgICAgICB8fCAhVEVTVF90cnVlKEVWUF9FbmNyeXB0VXBkYXRlKGUsIE5VTEwsICZv dXRsLCAodW5zaWduZWQgY2hhciAqKSJoZHIxIiwgNCkpCisrICAgICAgICB8fCAhVEVTVF90cnVl KEVWUF9FbmNyeXB0VXBkYXRlKGUsIGN0LCAmb3V0bCwgcHQsIHNpemVvZihwdCkpKQorKyAgICAg ICAgfHwgIVRFU1RfdHJ1ZShFVlBfRW5jcnlwdEZpbmFsX2V4KGUsIG91dCwgJm91dGwpKQorKyAg ICAgICAgfHwgIVRFU1RfdHJ1ZShFVlBfQ0lQSEVSX0NUWF9jdHJsKGUsIEVWUF9DVFJMX0FFQURf R0VUX1RBRywgMTYsIHRhZ2J1ZikpKSB7CisrICAgICAgICBFVlBfQ0lQSEVSX0NUWF9mcmVlKGUp OworKyAgICAgICAgZ290byBlcnI7CisrICAgIH0KKysgICAgRVZQX0NJUEhFUl9DVFhfZnJlZShl KTsKKysKKysgICAgLyogbXNnMSBkZWNyeXB0ICovCisrICAgIGQgPSBFVlBfQ0lQSEVSX0NUWF9u ZXcoKTsKKysgICAgaWYgKCFURVNUX3B0cihkKQorKyAgICAgICAgfHwgIVRFU1RfdHJ1ZShFVlBf RGVjcnlwdEluaXRfZXgyKGQsIGMsIGtleSwgTlVMTCwgTlVMTCkpCisrICAgICAgICB8fCAhVEVT VF90cnVlKEVWUF9DSVBIRVJfQ1RYX2N0cmwoZCwgRVZQX0NUUkxfQUVBRF9TRVRfVEFHLCAxNiwg dGFnYnVmKSkKKysgICAgICAgIHx8ICFURVNUX3RydWUoRVZQX0RlY3J5cHRVcGRhdGUoZCwgTlVM TCwgJm91dGwsICh1bnNpZ25lZCBjaGFyICopImhkcjEiLCA0KSkKKysgICAgICAgIHx8ICFURVNU X3RydWUoRVZQX0RlY3J5cHRVcGRhdGUoZCwgb3V0LCAmb3V0bCwgY3QsIHNpemVvZihjdCkpKQor KyAgICAgICAgfHwgIVRFU1RfdHJ1ZShFVlBfRGVjcnlwdEZpbmFsX2V4KGQsIG91dCwgJm91dGwp KSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICAvKiBtc2cyIG9uIFNBTUUgY3R4LCByZWlu aXQgd2l0aCBrZXk9TlVMTCA9PiBpbml0a2V5IHNraXBwZWQsIGZpbmFsX3JldCBzaG91bGQgYmUg cmVzZXQgKi8KKysgICAgaWYgKCFURVNUX3RydWUoRVZQX0RlY3J5cHRJbml0X2V4MihkLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMKSkKKysgICAgICAgIHx8ICFURVNUX3RydWUoRVZQX0NJUEhFUl9D VFhfY3RybChkLCBFVlBfQ1RSTF9BRUFEX1NFVF9UQUcsIDE2LCB6ZXJvMTYpKQorKyAgICAgICAg fHwgIVRFU1RfdHJ1ZShFVlBfRGVjcnlwdFVwZGF0ZShkLCBOVUxMLCAmb3V0bCwgYWFkLCBzaXpl b2YoYWFkKSkpIC8qIGZvcmdlZCBBQUQgKi8KKysgICAgICAgIHx8ICFURVNUX2ZhbHNlKEVWUF9E ZWNyeXB0RmluYWxfZXgoZCwgb3V0LCAmb3V0bCkpKQorKyAgICAgICAgZ290byBlcnI7CisrCisr ICAgIHJldCA9IDE7CisrCisrZXJyOgorKyAgICBFVlBfQ0lQSEVSX0NUWF9mcmVlKGQpOworKyAg ICBFVlBfQ0lQSEVSX2ZyZWUoYyk7CisrICAgIHJldHVybiByZXQ7CisrfQorKworIHN0YXRpYyBp bnQgdGVzdF9pbnZhbGlkX2N0eF9mb3JfZGlnZXN0KHZvaWQpCisgeworICAgICBpbnQgcmV0Owor QEAgLTgwMzAsNiArODE2NiwxMCBAQCBpbnQgc2V0dXBfdGVzdHModm9pZCkKKyAgICAgQUREX1RF U1QodGVzdF9hZXNfcmM0X2tleWxlbl9jaGFuZ2VfY3ZlXzIwMjNfNTM2Myk7CisgI2VuZGlmCisg CisrICAgIC8qIFRlc3QgY2FzZXMgZm9yIENWRS0yMDI2LTQ1NDQ2ICovCisrICAgIEFERF9URVNU KHRlc3RfYWVzX2djbV9zaXZfZW1wdHlfZGF0YSk7CisrICAgIEFERF9URVNUKHRlc3RfYWVzX3Np dl9jdHhfcmV1c2UpOworKworICAgICBBRERfQUxMX1RFU1RTKHRlc3RfYWVhZF9vbmVzaG90X3Jv dW5kdHJpcCwgMiAqIE9TU0xfTkVMRU0oYWVhZF9vbmVzaG90X2NmZ3MpKTsKKworICAgICBBRERf VEVTVCh0ZXN0X2ludmFsaWRfY3R4X2Zvcl9kaWdlc3QpOwoKZGlmZiAtLWdpdCBhLzAwNzMtQ1ZF LTIwMjYtNDU0NDcucGF0Y2ggYi8wMDczLUNWRS0yMDI2LTQ1NDQ3LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3Mjk1YTEKLS0tIC9kZXYvbnVsbAorKysgYi8wMDcz LUNWRS0yMDI2LTQ1NDQ3LnBhdGNoCkBAIC0wLDAgKzEsMTM5IEBACitGcm9tIDE2YWFlYWFiNDZk NDA3ZjczOWZjNzRlM2Q4OWFlNGZjNDNlZjc3YzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBJZ29yIFVzdGlub3YgPGlndXNAb3BlbnNzbC5mb3VuZGF0aW9uPgorRGF0ZTogU2F0LCAx NiBNYXkgMjAyNiAwODoxNjoyMyArMDIwMAorU3ViamVjdDogW1BBVENIIDEvMl0gRml4IHBvc3Np YmxlIHVzZS1hZnRlci1mcmVlIGluIE9wZW5TU0wgUEtDUzdfdmVyaWZ5KCkKKworRml4ZXMgQ1ZF LTIwMjYtNDU0NDcKKy0tLQorIGNyeXB0by9wa2NzNy9wazdfc21pbWUuYyB8IDkgKysrKysrLS0t CisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlm ZiAtLWdpdCBhL2NyeXB0by9wa2NzNy9wazdfc21pbWUuYyBiL2NyeXB0by9wa2NzNy9wazdfc21p bWUuYworaW5kZXggNGJmMjYzMzFjMWEuLjQ5MTI5NjkwZGViIDEwMDY0NAorLS0tIGEvY3J5cHRv L3BrY3M3L3BrN19zbWltZS5jCisrKysgYi9jcnlwdG8vcGtjczcvcGs3X3NtaW1lLmMKK0BAIC0y MjEsNiArMjIxLDcgQEAgaW50IFBLQ1M3X3ZlcmlmeShQS0NTNyAqcDcsIGNvbnN0IFNUQUNLX09G KFg1MDkpICpjZXJ0cywgWDUwOV9TVE9SRSAqc3RvcmUsCisgICAgIGludCBpLCBqID0gMCwgaywg cmV0ID0gMDsKKyAgICAgQklPICpwN2JpbyA9IE5VTEw7CisgICAgIEJJTyAqdG1wb3V0ID0gTlVM TDsKKysgICAgQklPICpuZXh0ID0gTlVMTDsKKyAgICAgY29uc3QgUEtDUzdfQ1RYICpwN19jdHg7 CisgCisgICAgIGlmIChwNyA9PSBOVUxMKSB7CitAQCAtMzUxLDkgKzM1MiwxMSBAQCBpbnQgUEtD UzdfdmVyaWZ5KFBLQ1M3ICpwNywgY29uc3QgU1RBQ0tfT0YoWDUwOSkgKmNlcnRzLCBYNTA5X1NU T1JFICpzdG9yZSwKKyAgICAgICAgIEJJT19mcmVlKHRtcG91dCk7CisgICAgIFg1MDlfU1RPUkVf Q1RYX2ZyZWUoY2VydF9jdHgpOworICAgICBPUEVOU1NMX2ZyZWUoYnVmKTsKKy0gICAgaWYgKGlu ZGF0YSAhPSBOVUxMKQorLSAgICAgICAgQklPX3BvcChwN2Jpbyk7CistICAgIEJJT19mcmVlX2Fs bChwN2Jpbyk7CisrICAgIHdoaWxlIChwN2JpbyAhPSBOVUxMICYmIHA3YmlvICE9IGluZGF0YSkg eworKyAgICAgICAgbmV4dCA9IEJJT19wb3AocDdiaW8pOworKyAgICAgICAgQklPX2ZyZWUocDdi aW8pOworKyAgICAgICAgcDdiaW8gPSBuZXh0OworKyAgICB9CisgICAgIHNrX1g1MDlfZnJlZShz aWduZXJzKTsKKyAgICAgc2tfWDUwOV9mcmVlKHVudHJ1c3RlZCk7CisgICAgIHJldHVybiByZXQ7 CisKK0Zyb20gYTY2MjJhMDUwMzU3NTA5N2YxZmFlZmMwNzgxZjViMzkxNmJiM2ZmYyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IElnb3IgVXN0aW5vdiA8aWd1c0BvcGVuc3NsLmZvdW5k YXRpb24+CitEYXRlOiBTYXQsIDE2IE1heSAyMDI2IDA4OjIyOjUzICswMjAwCitTdWJqZWN0OiBb UEFUQ0ggMi8yXSBUZXN0IGZvciBDVkUtMjAyNi00NTQ0NyAoVUFGIGluIFBLQ1M3X3ZlcmlmeSkK KworVGhlIHRlc3QgZGF0YSB3ZXJlIGNyZWF0ZWQgd2l0aCBhIHRvb2wgZGV2ZWxvcGVkIGJ5CitU aGFpIER1b25nIDx0aGFpQGNhbGlmLmlvPi4KKy0tLQorIHRlc3QvcmVjaXBlcy84MC10ZXN0X2Nt cy50ICAgICAgICAgICAgICAgIHwgMTkgKysrKysrKysrLQorIHRlc3Qvc21pbWUtZW1sL3BrY3M3 LWVtcHR5LWRpZ2VzdC1zZXQuZW1sIHwgNDUgKysrKysrKysrKysrKysrKysrKysrKysKKyAyIGZp bGVzIGNoYW5nZWQsIDYzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9k ZSAxMDA2NDQgdGVzdC9zbWltZS1lbWwvcGtjczctZW1wdHktZGlnZXN0LXNldC5lbWwKKworZGlm ZiAtLWdpdCBhL3Rlc3QvcmVjaXBlcy84MC10ZXN0X2Ntcy50IGIvdGVzdC9yZWNpcGVzLzgwLXRl c3RfY21zLnQKK2luZGV4IDE1MmExYTU1YTBhLi5jZjc2NTM3MjAwZSAxMDA2NDQKKy0tLSBhL3Rl c3QvcmVjaXBlcy84MC10ZXN0X2Ntcy50CisrKysgYi90ZXN0L3JlY2lwZXMvODAtdGVzdF9jbXMu dAorQEAgLTU2LDcgKzU2LDcgQEAgbXkgKCRub19kZXMsICRub19kaCwgJG5vX2RzYSwgJG5vX2Vj LCAkbm9fZWMybSwgJG5vX3JjMiwgJG5vX3psaWIpCisgCisgJG5vX3JjMiA9IDEgaWYgZGlzYWJs ZWQoImxlZ2FjeSIpOworIAorLXBsYW4gdGVzdHMgPT4gMzI7CisrcGxhbiB0ZXN0cyA9PiAzMzsK KyAKKyBvayhydW4odGVzdChbInBrY3M3X3Rlc3QiXSkpLCAidGVzdCBwa2NzNyIpOworIAorQEAg LTEyNjMsNiArMTI2MywyMyBAQCBzdWJ0ZXN0ICJDTVMgY29kZSBzaWduaW5nIHRlc3QiID0+IHN1 YiB7CisgICAgICAgICJmYWlsIHZlcmlmeSBDTVMgc2lnbmF0dXJlIHdpdGggY29kZSBzaWduaW5n IGNlcnRpZmljYXRlIGZvciBwdXJwb3NlIHNtaW1lX3NpZ24iKTsKKyB9OworIAorKyMgUmVncmVz c2lvbiB0ZXN0IGZvciBQS0NTN192ZXJpZnkoKSBvd25lcnNoaXAgaGFuZGxpbmcgd2hlbgorKyMg ZGlnZXN0QWxnb3JpdGhtcyBpcyBhbiBlbXB0eSBTRVQuCisrIyBUaGUgbWFsZm9ybWVkIHN0cnVj dHVyZSBtdXN0IGZhaWwgY2xlYW5seSB3aXRob3V0IGNyYXNoaW5nIG9yCisrIyB0cmlnZ2VyaW5n IHVzZS1hZnRlci1mcmVlIGJlaGF2aW91ci4KKyt3aXRoKHsgZXhpdF9jaGVja2VyID0+IHN1YiB7 IHJldHVybiBzaGlmdCA9PSA0OyB9IH0sCisrICAgIHN1YiB7CisrICAgICAgICBvayhydW4oYXBw KFsKKysgICAgICAgICAgICAgICAgJ29wZW5zc2wnLCAnc21pbWUnLAorKyAgICAgICAgICAgICAg ICAnLXZlcmlmeScsCisrICAgICAgICAgICAgICAgICctbm92ZXJpZnknLAorKyAgICAgICAgICAg ICAgICAnLWluJywKKysgICAgICAgICAgICAgICAgc3JjdG9wX2ZpbGUoJ3Rlc3QnLCAnc21pbWUt ZW1sJywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BrY3M3LWVtcHR5LWRpZ2VzdC1z ZXQuZW1sJyksCisrICAgICAgICAgICAgXSkpLAorKyAgICAgICAgICAgIkNoZWNrIGVtcHR5IGRp Z2VzdEFsZ29yaXRobXMgU0VUIGlzIGhhbmRsZWQgc2FmZWx5Iik7CisrICAgIH0pOworKworICMg VGVzdCBjYXNlIGZvciBtaXNzaW5nIE1EIGFsZ29yaXRobSAobXVzdCBub3Qgc2VnZmF1bHQpCisg Cisgd2l0aCh7IGV4aXRfY2hlY2tlciA9PiBzdWIgeyByZXR1cm4gc2hpZnQgPT0gNDsgfSB9LAor ZGlmZiAtLWdpdCBhL3Rlc3Qvc21pbWUtZW1sL3BrY3M3LWVtcHR5LWRpZ2VzdC1zZXQuZW1sIGIv dGVzdC9zbWltZS1lbWwvcGtjczctZW1wdHktZGlnZXN0LXNldC5lbWwKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uYTZkYjJjMzhhZGYKKy0tLSAvZGV2L251bGwKKysr KyBiL3Rlc3Qvc21pbWUtZW1sL3BrY3M3LWVtcHR5LWRpZ2VzdC1zZXQuZW1sCitAQCAtMCwwICsx LDQ1IEBACisrTUlNRS1WZXJzaW9uOiAxLjAKKytDb250ZW50LVR5cGU6IG11bHRpcGFydC9zaWdu ZWQ7IHByb3RvY29sPSJhcHBsaWNhdGlvbi94LXBrY3M3LXNpZ25hdHVyZSI7IG1pY2FsZz0ic2hh LTI1NiI7IGJvdW5kYXJ5PSItLS0tRTAzMTRDQzVENzMyQzkyQUUyRDdBM0JBQ0RDRENGQ0UiCisr CisrVGhpcyBpcyBhbiBTL01JTUUgc2lnbmVkIG1lc3NhZ2UKKysKKystLS0tLS1FMDMxNENDNUQ3 MzJDOTJBRTJEN0EzQkFDRENEQ0ZDRQorK1RoaXMgaXMgdGhlIGNvbnRlbnQgdG8gYmUgc2lnbmVk LgorKworKy0tLS0tLUUwMzE0Q0M1RDczMkM5MkFFMkQ3QTNCQUNEQ0RDRkNFCisrQ29udGVudC1U eXBlOiBhcHBsaWNhdGlvbi94LXBrY3M3LXNpZ25hdHVyZTsgbmFtZT0ic21pbWUucDdzIgorK0Nv bnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NAorK0NvbnRlbnQtRGlzcG9zaXRpb246IGF0 dGFjaG1lbnQ7IGZpbGVuYW1lPSJzbWltZS5wN3MiCisrCisrTUlJRldnWUpLb1pJaHZjTkFRY0Nv SUlGU3pDQ0JVY0NBUUV4QURBTEJna3Foa2lHOXcwQkJ3R2dnZ0x1TUlJQworKzZqQ0NBZEtnQXdJ QkFnSVVMNUU0NkZ4eWhzVDdDM0cxTlMyN090UjdYQW93RFFZSktvWklodmNOQVFFTEJRQXcKKytG VEVUTUJFR0ExVUVBd3dLVUc5RElGTnBaMjVsY2pBZUZ3MHlOakExTURneE1ESXdORGhhRncweU56 QTFNRGd4CisrTURJd05EaGFNQlV4RXpBUkJnTlZCQU1NQ2xCdlF5QlRhV2R1WlhJd2dnRWlNQTBH Q1NxR1NJYjNEUUVCQVFVQQorK0E0SUJEd0F3Z2dFS0FvSUJBUURTU3UvZ3VwbUlsY2x2bVRNSGlx T3JDcW1COE5SVGpBTW9JLy9NUEpybkZYWXAKKytGakRQTWs3WS9rQ2NIenR1ZGFJdkFEa293YUZ0 T200b01pblFGaGp3Q05DbzVLNVdycmxBaXRucGNkNVFIMm5BCisraVZaWGpqb2hRVUpFZDduMzNB R3FUd281RUdhQ0srYWxBWkw3dEE3YmRoTmkvYVozM0wzYlVOWXFvSGJYaU5zRQorK3UxdGo4ZnJM ZklqZHVPdDBUTVBTT3JyRmpqRXNyTDNUM3RnK0hteHBhbERIejdFNm85ekp1MHdsazhiY1IyWGsK KyttcFg4UmRZQ3U3SzltMzlOMUYyV0thOVdKaDI0TlFMcFdSZndEMjEzamFJRksyRVh5L1hIZVBE VWVpTVl0Vk9WCisrb292Q1NtWTdPcW93dXBBN0orNGRjc25SakZxZ1pFQ2N0SGhBZmsrUEFnTUJB QUdqTWpBd01CMEdBMVVkRGdRVworK0JCUlpsdXBYTllxNGZueTBTRTc2c3IvQ2RRMkRVVEFQQmdO VkhSTUJBZjhFQlRBREFRSC9NQTBHQ1NxR1NJYjMKKytEUUVCQ3dVQUE0SUJBUUFOT2x0dFRXVno2 MjBKTlRyUHpoaVI0eDkrNVVpRjRHU3F2OEJSSlFGajNYaDdmc1VwCisrKzNHRHM5TTI3ZjRGVmgz dXRKc2p0N1NhOVpXTHBCVmRnakdCd0dMQXRQc29ZTWpoblVnWlRVdndFazUrYVh5dgorK3pKeG40 STdtTWJEaGxOQ01IY1Z0R2R0QSsyVU9FdXZkR2Z1RWlscHpQc1Y4RHpNMUszeFU1YlNXb28wQlJG S0sKKytzckhreUVmeENGUEFRT2NYODBaYk1PNnpkY1hlSmpDNm1RWEdxeTJhcWVRb2IwdnVTWko3 UUhaQmxSalk1WUhSCisrd1dsSXFHOEczRWlzdDE2aVRxZFgyUFFGWlQxL1FBRVEvTG5YQVJUVVVq VXJvY2NkY2k4WU5BU29lSERwY2pSTAorK01Cck4rUUJOWlZ0NXFMaERvZ3daYjJad3FLZlo4QXFn M29Ba01ZSUNQekNDQWpzQ0FRRXdMVEFWTVJNd0VRWUQKKytWUVFEREFwUWIwTWdVMmxuYm1WeUFo UXZrVGpvWEhLR3hQc0xjYlUxTGJzNjFIdGNDakFOQmdsZ2hrZ0JaUU1FCisrQWdFRkFLQ0I1REFZ QmdrcWhraUc5dzBCQ1FNeEN3WUpLb1pJaHZjTkFRY0JNQndHQ1NxR1NJYjNEUUVKQlRFUAorK0Z3 MHlOakExTURneE1ESXdORGhhTUM4R0NTcUdTSWIzRFFFSkJERWlCQ0F2eW9IZnljTHFiOFV6VlBp enkxdUEKKytvM2g3dHphM0hlYmVpSmFTbnBJSkh6QjVCZ2txaGtpRzl3MEJDUTh4YkRCcU1Bc0dD V0NHU0FGbEF3UUJLakFMCisrQmdsZ2hrZ0JaUU1FQVJZd0N3WUpZSVpJQVdVREJBRUNNQW9HQ0Nx R1NJYjNEUU1ITUE0R0NDcUdTSWIzRFFNQworK0FnSUFnREFOQmdncWhraUc5dzBEQWdJQlFEQUhC Z1VyRGdNQ0J6QU5CZ2dxaGtpRzl3MERBZ0lCS0RBTkJna3EKKytoa2lHOXcwQkFRRUZBQVNDQVFC SXBsN1UyajRZaVUxdmRaSHl4MmRDSzQxWmFodFRWT0I0UlZKY3Jtb3BnYW5zCisrZklDZGtTVGZi MGRWcWMxMysrYlluNGkxYjJSMm9zNVlJa29HeGRyTTVhWkI3S0Y5cjF4d2dyZW5kVEY0L0J3UAor K2dRcTJraE50S2VidjlZcjBrT1B5bkZJc2d4NUJIazk5d3J6ZndpZEpVRnVKSmdROVcwWU9mN0VH a2JuWnZQVCsKKytoVjBhZUxtSkFiNWpqV2hiRGNpcVVqUjNPMjNKUWh6Vmo0VTN2bzJUZU43Vllt TkpzWCtmQTRzWnpJYllTZWk5CisrcHM3R1pydWlSY0tncWdVajFsOEhqSUdNSHFkOWxjY2Noay9C WXlBR3hBYmdHaXNudHZmSmRQWk8wOXdHOHJIaAorK2VTNkZZa2tYQUtCTzQ5V2JoRTlhVkxKSDB6 Z0E2Z1RmeUV2T09PUzEKKysKKystLS0tLS1FMDMxNENDNUQ3MzJDOTJBRTJEN0EzQkFDRENEQ0ZD RS0tCisrCgpkaWZmIC0tZ2l0IGEvMDA3NC1DVkUtMjAyNi0zNDE4Mi5wYXRjaCBiLzAwNzQtQ1ZF LTIwMjYtMzQxODIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFh YTliMQotLS0gL2Rldi9udWxsCisrKyBiLzAwNzQtQ1ZFLTIwMjYtMzQxODIucGF0Y2gKQEAgLTAs MCArMSwyMzAgQEAKK2RpZmYgLS1naXQgYS9jcnlwdG8vY21zL2Ntc19lbmMuYyBiL2NyeXB0by9j bXMvY21zX2VuYy5jCitpbmRleCAwOGFmYjVhYjExNC4uYmE3MDgyY2ViZDcgMTAwNjQ0CistLS0g YS9jcnlwdG8vY21zL2Ntc19lbmMuYworKysrIGIvY3J5cHRvL2Ntcy9jbXNfZW5jLmMKK0BAIC0x MDksMTMgKzEwOSwxNSBAQCBCSU8gKm9zc2xfY21zX0VuY3J5cHRlZENvbnRlbnRfaW5pdF9iaW8o Q01TX0VuY3J5cHRlZENvbnRlbnRJbmZvICplYywKKyAgICAgICAgICAgICAgICAgZ290byBlcnI7 CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIHBpdiA9IGFwYXJhbXMuaXY7CistICAgICAg ICAgICAgaWYgKGVjLT50YWdsZW4gPiAwCistICAgICAgICAgICAgICAgICYmIEVWUF9DSVBIRVJf Q1RYX2N0cmwoY3R4LCBFVlBfQ1RSTF9BRUFEX1NFVF9UQUcsCistICAgICAgICAgICAgICAgICAg ICAgICBlYy0+dGFnbGVuLCBlYy0+dGFnKQorLSAgICAgICAgICAgICAgICAgICAgPD0gMCkgewor KworKyAgICAgICAgICAgIGlmIChlYy0+dGFnbGVuIDwgNCB8fCBlYy0+dGFnbGVuID4gMTYKKysg ICAgICAgICAgICAgICAgfHwgRVZQX0NJUEhFUl9DVFhfY3RybChjdHgsIEVWUF9DVFJMX0FFQURf U0VUX1RBRywgKGludCllYy0+dGFnbGVuLCBlYy0+dGFnKSA8PSAwKSB7CisgICAgICAgICAgICAg ICAgIEVSUl9yYWlzZShFUlJfTElCX0NNUywgQ01TX1JfQ0lQSEVSX0FFQURfU0VUX1RBR19FUlJP Uik7CisgICAgICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAgICAgIH0KKysgICAgICAg IH0gZWxzZSBpZiAoYXV0aCkgeworKyAgICAgICAgICAgIEVSUl9yYWlzZShFUlJfTElCX0NNUywg Q01TX1JfVU5TVVBQT1JURURfQ09OVEVOVF9FTkNSWVBUSU9OX0FMR09SSVRITSk7CisrICAgICAg ICAgICAgZ290byBlcnI7CisgICAgICAgICB9CisgICAgIH0KKyAgICAgbGVuID0gRVZQX0NJUEhF Ul9DVFhfZ2V0X2tleV9sZW5ndGgoY3R4KTsKK2RpZmYgLS1naXQgYS90ZXN0L2Ntc2FwaXRlc3Qu YyBiL3Rlc3QvY21zYXBpdGVzdC5jCitpbmRleCAwNzUyZDE0ZGYwOS4uMDFjMGM3MzhiZGMgMTAw NjQ0CistLS0gYS90ZXN0L2Ntc2FwaXRlc3QuYworKysrIGIvdGVzdC9jbXNhcGl0ZXN0LmMKK0BA IC0yMiw2ICsyMiwxOTEgQEAgc3RhdGljIEVWUF9QS0VZICpwcml2a2V5ID0gTlVMTDsKKyBzdGF0 aWMgY2hhciAqdG9vX2xvbmdfaXZfY21zX2luID0gTlVMTDsKKyBzdGF0aWMgY2hhciAqcHdyaV9r ZWtfb29iX2Rlcl9pbiA9IE5VTEw7CisgCisrLyoKKysgKiBUaGlzIGlzIG91ciBiYWQgY21zIGRh dGEsIGl0IGNvbnRhaW5zIGFuIEF1dGhFbnZlbG9wZWREYXRhIGZpZWxkCisrICogd2l0aCBhIENJ UEhFUiBPSUQgc2V0IHRvIEFFUy0yNTYtT0ZCCisrICovCisrc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgYmFkX2Ntc19kZXJbNDUyXSA9IHsKKysgICAgMHgzMCwgMHg4MiwgMHgwMSwgMHhjMCwg MHgwNiwgMHgwYiwgMHgyYSwgMHg4NiwgMHg0OCwgMHg4NiwgMHhmNywgMHgwZCwKKysgICAgMHgw MSwgMHgwOSwgMHgxMCwgMHgwMSwgMHgxNywgMHhhMCwgMHg4MiwgMHgwMSwgMHhhZiwgMHgzMCwg MHg4MiwgMHgwMSwKKysgICAgMHhhYiwgMHgwMiwgMHgwMSwgMHgwMCwgMHgzMSwgMHg4MiwgMHgw MSwgMHg0NCwgMHgzMCwgMHg4MiwgMHgwMSwgMHg0MCwKKysgICAgMHgwMiwgMHgwMSwgMHgwMCwg MHgzMCwgMHgyOCwgMHgzMCwgMHgxMCwgMHgzMSwgMHgwZSwgMHgzMCwgMHgwYywgMHgwNiwKKysg ICAgMHgwMywgMHg1NSwgMHgwNCwgMHgwMywgMHgwYywgMHgwNSwgMHg1MiwgMHg2NSwgMHg2Mywg MHg2OSwgMHg3MCwgMHgwMiwKKysgICAgMHgxNCwgMHgxYSwgMHg1YywgMHgwNCwgMHg5YiwgMHgz YSwgMHg2NCwgMHhmZiwgMHhkNCwgMHg2MywgMHhkZSwgMHg0ZiwKKysgICAgMHg5MCwgMHhlNSwg MHg3NiwgMHhlMiwgMHgxOCwgMHhlOCwgMHg1YywgMHg5ZSwgMHhkNywgMHgzMCwgMHgwZCwgMHgw NiwKKysgICAgMHgwOSwgMHgyYSwgMHg4NiwgMHg0OCwgMHg4NiwgMHhmNywgMHgwZCwgMHgwMSwg MHgwMSwgMHgwMSwgMHgwNSwgMHgwMCwKKysgICAgMHgwNCwgMHg4MiwgMHgwMSwgMHgwMCwgMHgx OCwgMHhjZiwgMHg5ZiwgMHg0NCwgMHg5NSwgMHg3OSwgMHhlOSwgMHg5NiwKKysgICAgMHg3ZCwg MHgwZiwgMHhkMSwgMHhiNCwgMHhjMiwgMHgzOCwgMHhiMCwgMHhjOSwgMHg3NiwgMHhkNSwgMHhi YSwgMHgwOCwKKysgICAgMHg1YywgMHhiZiwgMHhjMywgMHgzMCwgMHhlYSwgMHgzYSwgMHg2OCwg MHhhNCwgMHhiYSwgMHg5OSwgMHg0YywgMHg3MCwKKysgICAgMHg5NywgMHhiOCwgMHhhOSwgMHhj ZSwgMHg3MSwgMHg0YywgMHg1NCwgMHhhMywgMHhmZCwgMHg4MSwgMHg5ZSwgMHgxNSwKKysgICAg MHg2MywgMHhiNywgMHgyMywgMHg0NiwgMHgxNywgMHg2OSwgMHhhZiwgMHg4ZiwgMHhiZCwgMHhh MywgMHg1NCwgMHgyMywKKysgICAgMHhmMywgMHhmNSwgMHgzNSwgMHhhOCwgMHhkNCwgMHg5Yywg MHhlYywgMHhlMSwgMHgxNywgMHgyYywgMHg2ZCwgMHgwYiwKKysgICAgMHhhZCwgMHhjMCwgMHhl OSwgMHgxZCwgMHhkMSwgMHg4ZCwgMHg1OSwgMHhkNSwgMHgyOSwgMHhjNiwgMHg0MCwgMHhjNCwK KysgICAgMHhjZCwgMHg0ZSwgMHg4NywgMHg3MCwgMHgxOSwgMHg1ZCwgMHg4OCwgMHg1MCwgMHhi ZCwgMHg0YSwgMHgxMywgMHhiMywKKysgICAgMHhlZiwgMHgwYywgMHg2ZCwgMHg2YSwgMHhjNSwg MHg1MSwgMHhiYiwgMHg1YywgMHgzOSwgMHgxNywgMHhkYSwgMHhiMSwKKysgICAgMHg3MSwgMHgx NywgMHg4OCwgMHhmYiwgMHg2YSwgMHhlZiwgMHg3ZiwgMHg4NSwgMHhhNywgMHgwNCwgMHg3MSwg MHhjNywKKysgICAgMHg4MywgMHg5MSwgMHhiMywgMHgzMCwgMHgxYiwgMHgzZCwgMHgxOCwgMHg3 ZiwgMHg2MywgMHhiZiwgMHg0MiwgMHg3YywKKysgICAgMHhhZSwgMHg2ZiwgMHhhZSwgMHhhMSwg MHgxNywgMHg4NCwgMHhmZCwgMHg2NywgMHgyYSwgMHg0ZiwgMHg0YywgMHhlOSwKKysgICAgMHgw NSwgMHgyNiwgMHgyYywgMHhkNSwgMHhhYiwgMHgwYywgMHhjZiwgMHhkYywgMHgzZiwgMHgyNCwg MHhjZiwgMHg3MSwKKysgICAgMHgyNiwgMHg3YSwgMHgxZiwgMHhmNywgMHhjOSwgMHg5MiwgMHg1 ZSwgMHhiNiwgMHgzZCwgMHg3ZiwgMHhjMywgMHgwOCwKKysgICAgMHhkMywgMHhhZCwgMHhjMCwg MHhjOCwgMHg0ZiwgMHg0MiwgMHgwYywgMHhmMywgMHhhYywgMHgyMywgMHgxMSwgMHhkZiwKKysg ICAgMHg3NSwgMHg4NCwgMHg2OSwgMHg4YywgMHhhNiwgMHg1OSwgMHg0MywgMHhmYiwgMHhmNywg MHg2YiwgMHg2MiwgMHhmMCwKKysgICAgMHhmNywgMHgzNSwgMHgwNywgMHhjNCwgMHhmOCwgMHhk NSwgMHgxMiwgMHg0YSwgMHgxNiwgMHg2MiwgMHhiYywgMHgwNCwKKysgICAgMHhhYSwgMHg5YSwg MHgyZSwgMHhiMiwgMHgxYSwgMHhmYSwgMHg0YywgMHg4MiwgMHhjZSwgMHg5ZSwgMHhhOCwgMHg2 ZCwKKysgICAgMHhjMSwgMHgyOSwgMHg1OSwgMHhlMCwgMHgzMywgMHhiNSwgMHhhNiwgMHg0Nywg MHgwOSwgMHgyZSwgMHhiZiwgMHg2MCwKKysgICAgMHhhNiwgMHhiMywgMHgyMSwgMHhhMCwgMHgx NSwgMHhhYywgMHg5MiwgMHgyOSwgMHhiNSwgMHhlNiwgMHhlMCwgMHhkNCwKKysgICAgMHg4Yiwg MHhkOCwgMHgyMSwgMHhlMiwgMHgxNywgMHg5OCwgMHhkMSwgMHgxMSwgMHg1ZCwgMHhjNSwgMHhh ZSwgMHgyNCwKKysgICAgMHhlOCwgMHg5MiwgMHhkYiwgMHg5NiwgMHhhMywgMHg1YiwgMHg1OCwg MHhhNywgMHgzMCwgMHg0YywgMHgwNiwgMHgwOSwKKysgICAgMHgyYSwgMHg4NiwgMHg0OCwgMHg4 NiwgMHhmNywgMHgwZCwgMHgwMSwgMHgwNywgMHgwMSwgMHgzMCwgMHgxZCwgMHgwNiwKKysgICAg MHgwOSwgMHg2MCwgMHg4NiwgMHg0OCwgMHgwMSwgMHg2NSwgMHgwMywgMHgwNCwgMHgwMSwgMHgy YiwgMHgwNCwgMHgxMCwKKysgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKysgICAgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHg4MCwgMHgyMCwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwK KysgICAgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0 MSwgMHg0MSwgMHg0MSwgMHg0MSwKKysgICAgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwg MHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwgMHg0MSwKKysgICAgMHg0MSwgMHg0 MSwgMHgwNCwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwKKysgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MAorK307CisrCisrLyoKKysgKiBUaGlzIGFycmF5IHJlcHJlc2VudHMgYSBkZXIgZW5jb2RlZCBj b250ZW50aW5mbyBzdHJ1Y3R1cmUgYWRkcmVzc2VkIHRvCisrICogc2VydmVyY2VydC5wZW0sIHdp dGggdGhlIHRhZyB2YWx1ZSBvZiB0aGUgYWVzLTI1Ni1nY20gY2lwaGVyIHVzZWQgdG8gZW5jcnlw dAorKyAqIHRoZSBjb250ZW50cyBvZiB0aGUgbXNzYWdlcyBkb3duIHRvIDEgYnl0ZS4gIERlY29k aW5nIGl0IHNob3VsZCBmYWlsCisrICovCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgb25l X2J5dGVfbWFjX2Ntc19kZXJbNDIzXSA9IHsKKysgICAgMHgzMCwgMHg4MiwgMHgwMSwgMHhhMywg MHgwNiwgMHgwYiwgMHgyYSwgMHg4NiwgMHg0OCwgMHg4NiwgMHhmNywgMHgwZCwKKysgICAgMHgw MSwgMHgwOSwgMHgxMCwgMHgwMSwgMHgxNywgMHhhMCwgMHg4MiwgMHgwMSwgMHg5MiwgMHgzMCwg MHg4MiwgMHgwMSwKKysgICAgMHg4ZSwgMHgwMiwgMHgwMSwgMHgwMCwgMHgzMSwgMHg4MiwgMHgw MSwgMHgzMywgMHgzMCwgMHg4MiwgMHgwMSwgMHgyZiwKKysgICAgMHgwMiwgMHgwMSwgMHgwMCwg MHgzMCwgMHgxNywgMHgzMCwgMHgxMiwgMHgzMSwgMHgxMCwgMHgzMCwgMHgwZSwgMHgwNiwKKysg ICAgMHgwMywgMHg1NSwgMHgwNCwgMHgwMywgMHgwYywgMHgwNywgMHg1MiwgMHg2ZiwgMHg2Ziwg MHg3NCwgMHgyMCwgMHg0MywKKysgICAgMHg0MSwgMHgwMiwgMHgwMSwgMHgwMiwgMHgzMCwgMHgw ZCwgMHgwNiwgMHgwOSwgMHgyYSwgMHg4NiwgMHg0OCwgMHg4NiwKKysgICAgMHhmNywgMHgwZCwg MHgwMSwgMHgwMSwgMHgwMSwgMHgwNSwgMHgwMCwgMHgwNCwgMHg4MiwgMHgwMSwgMHgwMCwgMHgx MCwKKysgICAgMHgzYSwgMHg4YywgMHhlZSwgMHg0ZSwgMHhlMiwgMHgxZiwgMHhmZSwgMHhjYywg MHgyOCwgMHgzOSwgMHg5ZSwgMHg0NiwKKysgICAgMHhiZSwgMHhhNywgMHhkNSwgMHgwMiwgMHgy YSwgMHg1MywgMHgwNiwgMHg1ZiwgMHg5NCwgMHg2YiwgMHg2OSwgMHg2ZCwKKysgICAgMHgyZCwg MHhlOCwgMHg0NCwgMHhhNiwgMHg0MywgMHg1MiwgMHg4MiwgMHg4OSwgMHgyZCwgMHhmMSwgMHg5 YiwgMHhiOSwKKysgICAgMHg5ZSwgMHhhNCwgMHg4ZCwgMHg3NywgMHhmMSwgMHhkMiwgMHg4ZSwg MHg4NiwgMHg3OSwgMHgwNiwgMHgzZSwgMHg5MCwKKysgICAgMHhmMCwgMHhjYSwgMHg5ZSwgMHhi NSwgMHgzNSwgMHhkNSwgMHg4OSwgMHhmMCwgMHg3YywgMHgwNiwgMHhhMCwgMHg5MSwKKysgICAg MHhiZiwgMHhmNCwgMHg2MSwgMHhhYSwgMHg1YywgMHg5OSwgMHhhMywgMHg2NCwgMHgxNSwgMHhm ZCwgMHhmOSwgMHg5MCwKKysgICAgMHhmMCwgMHhmMywgMHgyNSwgMHg1YiwgMHg0OCwgMHhhMSwg MHhmYiwgMHg3YSwgMHhjZSwgMHg2MywgMHhkYywgMHhhOSwKKysgICAgMHhmZSwgMHg3YywgMHhi ZSwgMHg5YywgMHhhYSwgMHhkMywgMHg0MiwgMHgwZSwgMHg0YSwgMHhjMywgMHg0YiwgMHg0ZSwK KysgICAgMHg3NiwgMHg2ZCwgMHg1MiwgMHg1NCwgMHg4NSwgMHg0ZSwgMHhhYiwgMHg1MCwgMHgy YywgMHg1ZiwgMHhjMiwgMHg4YiwKKysgICAgMHg5ZiwgMHgxZiwgMHgwZiwgMHg4YSwgMHg3Yywg MHhiMywgMHgwYSwgMHhkZSwgMHg1MCwgMHg5YiwgMHhlZiwgMHg4OSwKKysgICAgMHhmMiwgMHhl YSwgMHgwNywgMHhjYSwgMHgxMSwgMHg3NiwgMHgyOSwgMHhhZiwgMHhlNCwgMHg1OSwgMHgyOCwg MHgxOSwKKysgICAgMHg0OCwgMHg5NiwgMHg2NywgMHhkZCwgMHhkZCwgMHgwMSwgMHhmMCwgMHgx NCwgMHhiZSwgMHgzZCwgMHhhNSwgMHhhMywKKysgICAgMHg4MywgMHgyMSwgMHgzOSwgMHgyOSwg MHhiNywgMHg4ZiwgMHhiNywgMHhmNCwgMHg4NSwgMHgwNSwgMHhlZSwgMHhjYSwKKysgICAgMHhi YiwgMHhiZCwgMHhjMCwgMHhhZiwgMHgwZCwgMHhmMSwgMHhlZiwgMHg1ZiwgMHgwNiwgMHgwNSwg MHhlYiwgMHgwZSwKKysgICAgMHg1NSwgMHhmMCwgMHg3ZSwgMHgxMywgMHgxYSwgMHgyYSwgMHgz NywgMHhkNCwgMHhiYSwgMHgyNiwgMHhjOCwgMHgyZSwKKysgICAgMHg2YiwgMHhjMywgMHhlMSwg MHhjZiwgMHgyOCwgMHhhYiwgMHgwZCwgMHhhYiwgMHhkZCwgMHhhNywgMHhmNCwgMHhkMywKKysg ICAgMHg1OSwgMHhjZCwgMHhjNywgMHgyZCwgMHhhMSwgMHg1NiwgMHg1ZiwgMHg0NywgMHg3Nywg MHgyNywgMHgxNywgMHg3MSwKKysgICAgMHhhZSwgMHg3NSwgMHhjOCwgMHg3MSwgMHg1OCwgMHhm OSwgMHhhYiwgMHg2NywgMHhkYSwgMHgyMywgMHg2MiwgMHhhMCwKKysgICAgMHg2ZCwgMHhlNSwg MHgyZCwgMHgwNiwgMHhiOCwgMHhjMCwgMHhhYywgMHhhYSwgMHgzOCwgMHhhNCwgMHgwZCwgMHhi NSwKKysgICAgMHhiMiwgMHhjZSwgMHhhNywgMHgyNiwgMHgwZCwgMHgzYSwgMHg4OCwgMHgyZiwg MHg4ZCwgMHg2YywgMHhhMCwgMHhmNiwKKysgICAgMHg5NCwgMHhmMiwgMHgyYywgMHgzNywgMHgw MywgMHhhZiwgMHg2NywgMHg1YywgMHhmMywgMHgyYywgMHhmYiwgMHhlOCwKKysgICAgMHgxNiwg MHg5ZSwgMHg1NSwgMHgzMCwgMHg0ZiwgMHgwNiwgMHgwOSwgMHgyYSwgMHg4NiwgMHg0OCwgMHg4 NiwgMHhmNywKKysgICAgMHgwZCwgMHgwMSwgMHgwNywgMHgwMSwgMHgzMCwgMHgxZSwgMHgwNiwg MHgwOSwgMHg2MCwgMHg4NiwgMHg0OCwgMHgwMSwKKysgICAgMHg2NSwgMHgwMywgMHgwNCwgMHgw MSwgMHgyZSwgMHgzMCwgMHgxMSwgMHgwNCwgMHgwYywgMHg2YiwgMHgxZCwgMHhlNSwKKysgICAg MHhiMiwgMHgzOCwgMHgwZSwgMHgxNywgMHg5MSwgMHg5YywgMHg5YywgMHg0MCwgMHgzNSwgMHgw MiwgMHgwMSwgMHgxMCwKKysgICAgMHg4MCwgMHgyMiwgMHhhMCwgMHg5MCwgMHg3NSwgMHg3NCwg MHhkZiwgMHgyZCwgMHhiYSwgMHg0ZiwgMHhjZSwgMHg0ZSwKKysgICAgMHg3ZSwgMHg1MiwgMHhi MCwgMHgyZSwgMHg1ZiwgMHhlMCwgMHg4NCwgMHgwMSwgMHhiMSwgMHg0OSwgMHgwYiwgMHg2OSwK KysgICAgMHhjNywgMHg2MSwgMHg2MywgMHg4NCwgMHgzYSwgMHhmYywgMHhhYSwgMHg4NiwgMHhm YywgMHg5NiwgMHg0ZSwgMHg2YywKKysgICAgMHgwNCwgMHgwMSwgMHg5MgorK307CisrCisrc3Rh dGljIGludCB0ZXN0X3Nob3J0X21hY19vbl9hdXRoX2VudmVsb3BlX2RhdGEodm9pZCkKKyt7Cisr ICAgIGludCByZXQgPSAwOworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkZXJwdHIgPSBvbmVf Ynl0ZV9tYWNfY21zX2RlcjsKKysgICAgQklPICpvdXRtc2diaW8gPSBCSU9fbmV3KEJJT19zX21l bSgpKTsKKysgICAgQ01TX0NvbnRlbnRJbmZvICpjb250ZW50ID0gZDJpX0NNU19Db250ZW50SW5m byhOVUxMLCAmZGVycHRyLCBPU1NMX05FTEVNKG9uZV9ieXRlX21hY19jbXNfZGVyKSk7CisrCisr ICAgIGlmICghVEVTVF9wdHIoY29udGVudCkpCisrICAgICAgICBnb3RvIGVuZDsKKysKKysgICAg LyoKKysgICAgICogV2UgZXhwZWN0IHRoaXMgdG8gZmFpbCwgYXMgdGhlIHRhZyB2YWx1ZSBpbiB0 aGUgYXV0aEVudmVsb3BlZERhdGEgcGFyYW1ldGVyIGlzCisrICAgICAqIGEgc2luZ2xlIGJ5dGUK KysgICAgICovCisrICAgIGlmICghVEVTVF9mYWxzZShDTVNfZGVjcnlwdChjb250ZW50LCBwcml2 a2V5LCBjZXJ0LCBOVUxMLCBvdXRtc2diaW8sIENNU19URVhUKSkpCisrICAgICAgICBnb3RvIGVu ZDsKKysKKysgICAgcmV0ID0gMTsKKytlbmQ6CisrICAgIEJJT19mcmVlKG91dG1zZ2Jpbyk7Cisr ICAgIENNU19Db250ZW50SW5mb19mcmVlKGNvbnRlbnQpOworKyAgICByZXR1cm4gcmV0OworK30K KysKKytzdGF0aWMgaW50IHRlc3Rfbm9uX2FlYWRfb25fYXV0aF9lbnZlbG9wZV9kZWModm9pZCkK Kyt7CisrICAgIGludCByZXQgPSAwOworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpkZXJwdHIg PSBiYWRfY21zX2RlcjsKKysgICAgQklPICpvdXRtc2diaW8gPSBCSU9fbmV3KEJJT19zX21lbSgp KTsKKysgICAgQ01TX0NvbnRlbnRJbmZvICpjb250ZW50ID0gZDJpX0NNU19Db250ZW50SW5mbyhO VUxMLCAmZGVycHRyLCBPU1NMX05FTEVNKGJhZF9jbXNfZGVyKSk7CisrCisrICAgIGlmICghVEVT VF9wdHIoY29udGVudCkpCisrICAgICAgICBnb3RvIGVuZDsKKysKKysgICAgLyoKKysgICAgICog V2UgZXhwZWN0IHRoaXMgdG8gZmFpbAorKyAgICAgKi8KKysgICAgaWYgKCFURVNUX2ZhbHNlKENN U19kZWNyeXB0KGNvbnRlbnQsIHByaXZrZXksIGNlcnQsIE5VTEwsIG91dG1zZ2JpbywKKysgICAg ICAgICAgICBDTVNfVEVYVCkpKQorKyAgICAgICAgZ290byBlbmQ7CisrCisrICAgIHJldCA9IDE7 CisrZW5kOgorKyAgICBCSU9fZnJlZShvdXRtc2diaW8pOworKyAgICBDTVNfQ29udGVudEluZm9f ZnJlZShjb250ZW50KTsKKysgICAgcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIGludCB0ZXN0 X25vbl9hZWFkX29uX2F1dGhfZW52ZWxvcGVfZW5jKHZvaWQpCisreworKyAgICBDTVNfQ29udGVu dEluZm8gKmNvbnRlbnQgPSBOVUxMOworKyAgICBTVEFDS19PRihYNTA5KSAqY2VydHN0YWNrID0g c2tfWDUwOV9uZXdfbnVsbCgpOworKyAgICBjb25zdCBFVlBfQ0lQSEVSICpjaXBoZXIgPSBFVlBf YWVzXzEyOF9jYmMoKTsKKysgICAgY29uc3QgY2hhciAqbXNnID0gIkhlbGxvIHdvcmxkIjsKKysg ICAgQklPICptc2diaW8gPSBCSU9fbmV3X21lbV9idWYobXNnLCAoaW50KXN0cmxlbihtc2cpKTsK KysgICAgQklPICpvdXRtc2diaW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKKysgICAgWDUwOSAq cmVjaXA7CisrICAgIGludCBpOworKyAgICBpbnQgcmV0ID0gMDsKKysKKysgICAgaWYgKCFURVNU X3B0cihjZXJ0c3RhY2spIHx8ICFURVNUX3B0cihtc2diaW8pIHx8ICFURVNUX3B0cihvdXRtc2di aW8pKQorKyAgICAgICAgZ290byBlbmQ7CisrCisrICAgIGlmICghVEVTVF9pbnRfZ3Qoc2tfWDUw OV9wdXNoKGNlcnRzdGFjaywgY2VydCksIDApKQorKyAgICAgICAgZ290byBlbmQ7CisrCisrICAg IC8qCisrICAgICAqIEVtdWxhdGUgQ01TX2VuY3J5cHQgaGVyZSwgYnV0IHVzZSBhIG5vbiBBRUFE IGNpcGhlcgorKyAgICAgKi8KKysgICAgY29udGVudCA9IENNU19BdXRoRW52ZWxvcGVkRGF0YV9j cmVhdGVfZXgoY2lwaGVyLCBOVUxMLCBOVUxMKTsKKysKKysgICAgaWYgKCFURVNUX3B0cihjb250 ZW50KSkKKysgICAgICAgIGdvdG8gZW5kOworKworKyAgICBmb3IgKGkgPSAwOyBpIDwgc2tfWDUw OV9udW0oY2VydHN0YWNrKTsgaSsrKSB7CisrICAgICAgICByZWNpcCA9IHNrX1g1MDlfdmFsdWUo Y2VydHN0YWNrLCBpKTsKKysgICAgICAgIGlmICghVEVTVF9wdHIoQ01TX2FkZDFfcmVjaXBpZW50 X2NlcnQoY29udGVudCwgcmVjaXAsIENNU19URVhUKSkpCisrICAgICAgICAgICAgZ290byBlbmQ7 CisrICAgIH0KKysKKysgICAgLyoKKysgICAgICogV2UgZXhwZWN0IHRoaXMgdG8gZmFpbCBhcyB3 ZSBhcmUgdXNpbmcgYSBub24tQUVBRCBjaXBoZXIgb24KKysgICAgICogQXV0aEVudmVsb3BlZERh dGEKKysgICAgICovCisrICAgIGlmICghVEVTVF9pbnRfZXEoQ01TX2ZpbmFsKGNvbnRlbnQsIG1z Z2JpbywgTlVMTCwgQ01TX1RFWFQpLCAwKSkKKysgICAgICAgIGdvdG8gZW5kOworKworKyAgICBy ZXQgPSAxOworK2VuZDoKKysgICAgc2tfWDUwOV9mcmVlKGNlcnRzdGFjayk7CisrICAgIEJJT19m cmVlKG1zZ2Jpbyk7CisrICAgIEJJT19mcmVlKG91dG1zZ2Jpbyk7CisrICAgIENNU19Db250ZW50 SW5mb19mcmVlKGNvbnRlbnQpOworKyAgICByZXR1cm4gcmV0OworK30KKysKKyBzdGF0aWMgaW50 IHRlc3RfZW5jcnlwdF9kZWNyeXB0KGNvbnN0IEVWUF9DSVBIRVIgKmNpcGhlcikKKyB7CisgICAg IGludCB0ZXN0cmVzdWx0ID0gMDsKK0BAIC01NTcsNiArNzQyLDkgQEAgaW50IHNldHVwX3Rlc3Rz KHZvaWQpCisgICAgIEFERF9URVNUKHRlc3RfZW5jcnlwdF9kZWNyeXB0X2Flc18xMjhfZ2NtKTsK KyAgICAgQUREX1RFU1QodGVzdF9lbmNyeXB0X2RlY3J5cHRfYWVzXzE5Ml9nY20pOworICAgICBB RERfVEVTVCh0ZXN0X2VuY3J5cHRfZGVjcnlwdF9hZXNfMjU2X2djbSk7CisrICAgIEFERF9URVNU KHRlc3Rfbm9uX2FlYWRfb25fYXV0aF9lbnZlbG9wZV9lbmMpOworKyAgICBBRERfVEVTVCh0ZXN0 X25vbl9hZWFkX29uX2F1dGhfZW52ZWxvcGVfZGVjKTsKKysgICAgQUREX1RFU1QodGVzdF9zaG9y dF9tYWNfb25fYXV0aF9lbnZlbG9wZV9kYXRhKTsKKyAgICAgQUREX1RFU1QodGVzdF9DTVNfYWRk MV9jZXJ0KTsKKyAgICAgQUREX1RFU1QodGVzdF9kMmlfQ01TX2Jpb19OVUxMKTsKKyAgICAgQURE X1RFU1QodGVzdF9DTVNfc2V0MV9rZXlfbWVtX2xlYWspOwoKZGlmZiAtLWdpdCBhLzAwNzUtYXNu MV9kMmlfcmVhZF9iaW8tYmxvY2tpbmcucGF0Y2ggYi8wMDc1LWFzbjFfZDJpX3JlYWRfYmlvLWJs b2NraW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZmEwOTQK LS0tIC9kZXYvbnVsbAorKysgYi8wMDc1LWFzbjFfZDJpX3JlYWRfYmlvLWJsb2NraW5nLnBhdGNo CkBAIC0wLDAgKzEsMjE1IEBACitGcm9tIDczODY4OGQ3NjIwNjEzZDM1ZGI1YmY4MGRiYWM1NmYx NmZkMzNiNWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEYW5pZWwgU2FuZHMgPGRu c2FuZHNAc2FuZGlhLmdvdj4KK0RhdGU6IFRodSwgMTIgTWFyIDIwMjYgMTE6NTk6MTMgLTA2MDAK K1N1YmplY3Q6IFtQQVRDSCAxLzNdIEFkZCBpbnRlbGxpZ2VuY2UgdG8gYXNuMV9kMmlfcmVhZF9i aW8gZm9yIHJlYWRpbmcgZW50aXJlCisgaGVhZGVyIHdpdGhvdXQgYmxvY2tpbmcgZm9yIGV4dHJh IGRhdGEKKworUmV2aWV3ZWQtYnk6IFRvbWFzIE1yYXogPHRvbWFzQG9wZW5zc2wuZm91bmRhdGlv bj4KK1Jldmlld2VkLWJ5OiBEbWl0cnkgQmVseWF2c2tpeSA8YmVsZG1pdEBnbWFpbC5jb20+CisK KyhjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDM1ODUyZGExZDllMjRjYjc0MDM0YjJmNDE4Y2Vm M2E1ODIwM2IxMjcpCisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA0NDViMDYxNjNiMGM0NjZh YmViYWM2YzJhYzA2OTE3YzNiOWVjNWRiKQorKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgNTNi MmE1MmM5YjMzN2Q4YjhiNTI1OTc1OGY3YjdlYTIxZjc5OTEzMSkKKworUmV2aWV3ZWQtYnk6IEZy ZWRlcmlrIFdlZGVsLUhlaW5lbiA8ZndoLm9wZW5zc2xAZ21haWwuY29tPgorTWVyZ2VEYXRlOiBU aHUgTWF5ICA3IDEyOjE3OjQxIDIwMjYKKyhNZXJnZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20v b3BlbnNzbC9vcGVuc3NsL3B1bGwvMzA5ODYpCistLS0KKyBjcnlwdG8vYXNuMS9hX2QyaV9mcC5j IHwgNTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCisgY3J5cHRv L2FzbjEvYXNuMV9saWIuYyB8ICAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCA1MiBpbnNlcnRpb25z KCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY3J5cHRvL2FzbjEvYV9kMmlfZnAu YyBiL2NyeXB0by9hc24xL2FfZDJpX2ZwLmMKK2luZGV4IDgyZDJmN2NjOTAuLjU4OTIwMjQ2ODcg MTAwNjQ0CistLS0gYS9jcnlwdG8vYXNuMS9hX2QyaV9mcC5jCisrKysgYi9jcnlwdG8vYXNuMS9h X2QyaV9mcC5jCitAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgKkFTTjFfaXRlbV9kMmlfZnAoY29u c3QgQVNOMV9JVEVNICppdCwgRklMRSAqaW4sIHZvaWQgKngpCisgfQorICNlbmRpZgorIAorLSNk ZWZpbmUgSEVBREVSX1NJWkUgOAorKyNkZWZpbmUgSEVBREVSX1NJWkUgMgorICNkZWZpbmUgQVNO MV9DSFVOS19JTklUSUFMX1NJWkUgKDE2ICogMTAyNCkKKyBpbnQgYXNuMV9kMmlfcmVhZF9iaW8o QklPICppbiwgQlVGX01FTSAqKnBiKQorIHsKK0BAIC0xMzgsNyArMTM4LDcgQEAgaW50IGFzbjFf ZDJpX3JlYWRfYmlvKEJJTyAqaW4sIEJVRl9NRU0gKipwYikKKyAgICAgICAgICAgICAgICAgZ290 byBlcnI7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGkgPSBCSU9fcmVhZChpbiwgJihi LT5kYXRhW2xlbl0pLCB3YW50KTsKKy0gICAgICAgICAgICBpZiAoaSA8IDAgJiYgZGlmZiA9PSAw KSB7CisrICAgICAgICAgICAgaWYgKGkgPD0gMCkgeworICAgICAgICAgICAgICAgICBFUlJfcmFp c2UoRVJSX0xJQl9BU04xLCBBU04xX1JfTk9UX0VOT1VHSF9EQVRBKTsKKyAgICAgICAgICAgICAg ICAgZ290byBlcnI7CisgICAgICAgICAgICAgfQorQEAgLTE1NCwxMiArMTU0LDU4IEBAIGludCBh c24xX2QyaV9yZWFkX2JpbyhCSU8gKmluLCBCVUZfTUVNICoqcGIpCisgICAgICAgICB9CisgICAg ICAgICAvKiBlbHNlIGRhdGEgYWxyZWFkeSBsb2FkZWQgKi8KKyAKKysgICAgICAgIC8qIG1ha2Ug c3VyZSB0aGVyZSBpcyBlbm91Z2ggZGF0YSBmb3IgYSBjb21wbGV0ZSBoZWFkZXIgKi8KKyAgICAg ICAgIHAgPSAodW5zaWduZWQgY2hhciAqKSYoYi0+ZGF0YVtvZmZdKTsKKyAgICAgICAgIHEgPSBw OworICAgICAgICAgZGlmZiA9IGxlbiAtIG9mZjsKKy0gICAgICAgIGlmIChkaWZmID09IDApCisr ICAgICAgICBpZiAoZGlmZiA8IDIpIHsKKysgICAgICAgICAgICAvKiBGYWlsZWQgc2FuaXR5IGNo ZWNrICovCisrICAgICAgICAgICAgRVJSX3JhaXNlKEVSUl9MSUJfQVNOMSwgQVNOMV9SX05PVF9F Tk9VR0hfREFUQSk7CisgICAgICAgICAgICAgZ290byBlcnI7CistICAgICAgICBpbmYgPSBBU04x X2dldF9vYmplY3QoJnEsICZzbGVuLCAmdGFnLCAmeGNsYXNzLCBkaWZmKTsKKysgICAgICAgIH0K KysKKysgICAgICAgIGRpZmYtLTsKKysgICAgICAgIGlmICgoKihxKyspICYgVl9BU04xX1BSSU1J VElWRV9UQUcpID09IFZfQVNOMV9QUklNSVRJVkVfVEFHKSB7CisrICAgICAgICAgICAgLyogTXVs dGktYnl0ZSB0YWcuICBTZWUgaWYgd2UgaGF2ZSB0aGUgd2hvbGUgdGhpbmcgeWV0ICovCisrICAg ICAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICBkaWZmLS07CisrICAgICAgICAgICAgfSB3 aGlsZSAoZGlmZiA+IDAgJiYgKihxKyspICYgMHg4MCk7CisrCisrICAgICAgICAgICAgaWYgKGRp ZmYgPT0gMCkgeworKyAgICAgICAgICAgICAgICAvKgorKyAgICAgICAgICAgICAgICAgKiBFbmQg b2YgY3VycmVudCBkYXRhLCB3aWxsIG5lZWQgYXQgbGVhc3QgMSBtb3JlIGJ5dGUgZm9yCisrICAg ICAgICAgICAgICAgICAqIGxlbmd0aC4gIDIgaWYgdGhlIHRhZyBpcyBzdGlsbCBpbmNvbXBsZXRl CisrICAgICAgICAgICAgICAgICAqLworKyAgICAgICAgICAgICAgICB3YW50ID0gcSAtIHAgKyAy OworKyAgICAgICAgICAgICAgICBpZiAoKnEgJiAweDgwKSB7CisrICAgICAgICAgICAgICAgICAg ICB3YW50Kys7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgY29udGludWU7 CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKworKyAgICAgICAgLyogQ2hlY2sgdGhlIGxl bmd0aC4gIFRoaXMgc2hvdWxkIGFsc28gd29yayBmb3IgaW5kZWZpbml0ZSBsZW5ndGggKi8KKysg ICAgICAgIGRpZmYtLTsKKysgICAgICAgIGlmICgqcSAmIDB4ODApIHsKKysgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgbiA9ICpxICYgMHg3ZjsKKysKKysgICAgICAgICAgICBpZiAobiA+IHNpemVv Zihsb25nKSkgeworKyAgICAgICAgICAgICAgICBFUlJfcmFpc2UoRVJSX0xJQl9BU04xLCBBU04x X1JfVE9PX0xPTkcpOworKyAgICAgICAgICAgICAgICBnb3RvIGVycjsKKysgICAgICAgICAgICB9 CisrICAgICAgICAgICAgaWYgKG4gPiBkaWZmKSB7CisrICAgICAgICAgICAgICAgIHdhbnQgPSBx IC0gcCArIG4gKyAxOworKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICB9 CisrICAgICAgICB9CisrCisrICAgICAgICAvKgorKyAgICAgICAgICogV2UgaGF2ZSBhIGNvbXBs ZXRlIGhlYWRlciBub3csIGFzc3VtaW5nIHdlIGRpZG4ndCBoaXQgRU9GLiBQYXJzZSB0aGUKKysg ICAgICAgICAqIHRhZyBhbmQgbGVuZ3RoCisrICAgICAgICAgKi8KKysgICAgICAgIHEgPSBwOwor KyAgICAgICAgZGlmZiA9IGxlbiAtIG9mZjsKKysgICAgICAgIGluZiA9IEFTTjFfZ2V0X29iamVj dCgmcSwgJnNsZW4sICZ0YWcsICZ4Y2xhc3MsIChpbnQpZGlmZik7CisgICAgICAgICBpZiAoaW5m ICYgMHg4MCkgeworICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZTsKKyAKK0BAIC0xNjksOCAr MjE1LDcgQEAgaW50IGFzbjFfZDJpX3JlYWRfYmlvKEJJTyAqaW4sIEJVRl9NRU0gKipwYikKKyAg ICAgICAgICAgICBFUlJfcG9wX3RvX21hcmsoKTsKKyAgICAgICAgICAgICBFUlJfc2V0X21hcmso KTsKKyAgICAgICAgIH0KKy0gICAgICAgIGkgPSBxIC0gcDsgLyogaGVhZGVyIGxlbmd0aCAqLwor LSAgICAgICAgb2ZmICs9IGk7IC8qIGVuZCBvZiBkYXRhICovCisrICAgICAgICBvZmYgKz0gcSAt IHA7IC8qIGVuZCBvZiBkYXRhICovCisgCisgICAgICAgICBpZiAoaW5mICYgMSkgeworICAgICAg ICAgICAgIC8qIG5vIGRhdGEgYm9keSBzbyBnbyByb3VuZCBhZ2FpbiAqLworZGlmZiAtLWdpdCBh L2NyeXB0by9hc24xL2FzbjFfbGliLmMgYi9jcnlwdG8vYXNuMS9hc24xX2xpYi5jCitpbmRleCBh ZTIzNGJiNWVhLi5iMmM3OTY4ODhmIDEwMDY0NAorLS0tIGEvY3J5cHRvL2FzbjEvYXNuMV9saWIu YworKysrIGIvY3J5cHRvL2FzbjEvYXNuMV9saWIuYworQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0 aWMgaW50IGFzbjFfZ2V0X2xlbmd0aChjb25zdCB1bnNpZ25lZCBjaGFyICoqcHAsIGludCAqaW5m LCBsb25nICpybCwKKyAgICAgICAgICppbmYgPSAwOworICAgICAgICAgaSA9ICpwICYgMHg3ZjsK KyAgICAgICAgIGlmICgqcCsrICYgMHg4MCkgeworLSAgICAgICAgICAgIGlmIChtYXggPCBpICsg MSkKKysgICAgICAgICAgICBpZiAobWF4IDwgaSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIDA7 CisgICAgICAgICAgICAgLyogU2tpcCBsZWFkaW5nIHplcm9lcyAqLworICAgICAgICAgICAgIHdo aWxlIChpID4gMCAmJiAqcCA9PSAwKSB7CistLSAKKzIuNTQuMAorCisKK0Zyb20gZDFhZTAxMGIy OTc2YzRhMjk2ZTY2MGRlMTZhMmExMjM2ZGU2MDc4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IFRvbWFzIE1yYXogPHRvbWFzQG9wZW5zc2wuZm91bmRhdGlvbj4KK0RhdGU6IFR1ZSwg NSBNYXkgMjAyNiAxNzowMTo0MiArMDIwMAorU3ViamVjdDogW1BBVENIIDIvM10gVGhlIHRhZyB2 YWx1ZSBtdXN0IGZpdCBpbnRvIGludAorCitXZSBjYW5ub3QgYWxsb3cgYW4gdW5ib3VuZGVkIHRh ZyB2YWx1ZSBhcyB0aGlzIGlzIGFuIE8obl4yKSBhbGdvcml0aG0KK2FuZCB0aGUgdGFnIGNhbm5v dCBiZSBsYXJnZXIgdGhhbiBJTlRfTUFYIGFueXdheS4KK0ZpeGVzIDM1ODUyZGExZDllMjRjYjc0 MDM0YjJmNDE4Y2VmM2E1ODIwM2IxMjcKKworUmV2aWV3ZWQtYnk6IEV1Z2VuZSBTeXJvbWlhdG5p a292IDxlc3lyQG9wZW5zc2wub3JnPgorUmV2aWV3ZWQtYnk6IE1hdHQgQ2Fzd2VsbCA8bWF0dEBv cGVuc3NsLmZvdW5kYXRpb24+CitSZXZpZXdlZC1ieTogU2ltbyBTb3JjZSA8c2ltb0ByZWRoYXQu Y29tPgorTWVyZ2VEYXRlOiBUaHUgTWF5ICA3IDEyOjIxOjE1IDIwMjYKKyhNZXJnZWQgZnJvbSBo dHRwczovL2dpdGh1Yi5jb20vb3BlbnNzbC9vcGVuc3NsL3B1bGwvMzEwOTEpCistLS0KKyBjcnlw dG8vYXNuMS9hX2QyaV9mcC5jIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0 aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY3J5cHRvL2FzbjEvYV9kMmlfZnAuYyBiL2NyeXB0by9h c24xL2FfZDJpX2ZwLmMKK2luZGV4IDU4OTIwMjQ2ODcuLmVlZDRiZGY5Y2YgMTAwNjQ0CistLS0g YS9jcnlwdG8vYXNuMS9hX2QyaV9mcC5jCisrKysgYi9jcnlwdG8vYXNuMS9hX2QyaV9mcC5jCitA QCAtMTY2LDggKzE2NiwxNSBAQCBpbnQgYXNuMV9kMmlfcmVhZF9iaW8oQklPICppbiwgQlVGX01F TSAqKnBiKQorIAorICAgICAgICAgZGlmZi0tOworICAgICAgICAgaWYgKCgqKHErKykgJiBWX0FT TjFfUFJJTUlUSVZFX1RBRykgPT0gVl9BU04xX1BSSU1JVElWRV9UQUcpIHsKKysgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgaSA9IDA7CisgICAgICAgICAgICAgLyogTXVsdGktYnl0ZSB0YWcuICBT ZWUgaWYgd2UgaGF2ZSB0aGUgd2hvbGUgdGhpbmcgeWV0ICovCisgICAgICAgICAgICAgZG8gewor KyAgICAgICAgICAgICAgICBpZiAoaSA+IDQpIHsKKysgICAgICAgICAgICAgICAgICAgIC8qIFRo ZSB0YWcgdmFsdWUgbXVzdCBmaXQgaW50byBpbnQgKi8KKysgICAgICAgICAgICAgICAgICAgIEVS Ul9yYWlzZShFUlJfTElCX0FTTjEsIEFTTjFfUl9IRUFERVJfVE9PX0xPTkcpOworKyAgICAgICAg ICAgICAgICAgICAgZ290byBlcnI7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAg ICAgKytpOworICAgICAgICAgICAgICAgICBkaWZmLS07CisgICAgICAgICAgICAgfSB3aGlsZSAo ZGlmZiA+IDAgJiYgKihxKyspICYgMHg4MCk7CisgCistLSAKKzIuNTQuMAorCisKK0Zyb20gNzRj ZDQ4ZmYzMWJhNjIyMGU5OGU2ZWM2MDE2ODRlODFmMWVjNzY4ZiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKK0Zyb206IFRvbWFzIE1yYXogPHRvbWFzQG9wZW5zc2wuZm91bmRhdGlvbj4KK0RhdGU6 IFRodSwgNyBNYXkgMjAyNiAyMDo0Mjo1NyArMDIwMAorU3ViamVjdDogW1BBVENIIDMvM10gYXNu MV9kMmlfcmVhZF9iaW8oKTogRml4IHNoYWRvd2luZyBvZiBkZWNsYXJhdGlvbiBvZiBpCisKK1Jl bmFtZSBpbm5lciBpIGRlY2xhcmF0aW9uIHRvIG4uCisKK1Jldmlld2VkLWJ5OiBGcmVkZXJpayBX ZWRlbC1IZWluZW4gPGZ3aC5vcGVuc3NsQGdtYWlsLmNvbT4KK1Jldmlld2VkLWJ5OiBOaWtvbGEg UGFqa292c2t5IDxuaWtvbGFwQG9wZW5zc2wub3JnPgorUmV2aWV3ZWQtYnk6IEV1Z2VuZSBTeXJv bWlhdG5pa292IDxlc3lyQG9wZW5zc2wub3JnPgorTWVyZ2VEYXRlOiBUaHUgTWF5ICA3IDE5OjA0 OjEzIDIwMjYKKyhNZXJnZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzbC9vcGVuc3Ns L3B1bGwvMzExMTApCistLS0KKyBjcnlwdG8vYXNuMS9hX2QyaV9mcC5jIHwgNiArKystLS0KKyAx IGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0t Z2l0IGEvY3J5cHRvL2FzbjEvYV9kMmlfZnAuYyBiL2NyeXB0by9hc24xL2FfZDJpX2ZwLmMKK2lu ZGV4IGVlZDRiZGY5Y2YuLmNmNTkwMWVlZDAgMTAwNjQ0CistLS0gYS9jcnlwdG8vYXNuMS9hX2Qy aV9mcC5jCisrKysgYi9jcnlwdG8vYXNuMS9hX2QyaV9mcC5jCitAQCAtMTY2LDE1ICsxNjYsMTUg QEAgaW50IGFzbjFfZDJpX3JlYWRfYmlvKEJJTyAqaW4sIEJVRl9NRU0gKipwYikKKyAKKyAgICAg ICAgIGRpZmYtLTsKKyAgICAgICAgIGlmICgoKihxKyspICYgVl9BU04xX1BSSU1JVElWRV9UQUcp ID09IFZfQVNOMV9QUklNSVRJVkVfVEFHKSB7CistICAgICAgICAgICAgdW5zaWduZWQgaW50IGkg PSAwOworKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBuID0gMDsKKyAgICAgICAgICAgICAvKiBN dWx0aS1ieXRlIHRhZy4gIFNlZSBpZiB3ZSBoYXZlIHRoZSB3aG9sZSB0aGluZyB5ZXQgKi8KKyAg ICAgICAgICAgICBkbyB7CistICAgICAgICAgICAgICAgIGlmIChpID4gNCkgeworKyAgICAgICAg ICAgICAgICBpZiAobiA+IDQpIHsKKyAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSB0YWcgdmFs dWUgbXVzdCBmaXQgaW50byBpbnQgKi8KKyAgICAgICAgICAgICAgICAgICAgIEVSUl9yYWlzZShF UlJfTElCX0FTTjEsIEFTTjFfUl9IRUFERVJfVE9PX0xPTkcpOworICAgICAgICAgICAgICAgICAg ICAgZ290byBlcnI7CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgKytpOwor KyAgICAgICAgICAgICAgICArK247CisgICAgICAgICAgICAgICAgIGRpZmYtLTsKKyAgICAgICAg ICAgICB9IHdoaWxlIChkaWZmID4gMCAmJiAqKHErKykgJiAweDgwKTsKKyAKKy0tIAorMi41NC4w CisKCmRpZmYgLS1naXQgYS9vcGVuc3NsMy5zcGVjIGIvb3BlbnNzbDMuc3BlYwppbmRleCA1N2E3 NDM3Li5hY2U0ZGE0IDEwMDY0NAotLS0gYS9vcGVuc3NsMy5zcGVjCisrKyBiL29wZW5zc2wzLnNw ZWMKQEAgLTI5LDcgKzI5LDcgQEAgcHJpbnQoc3RyaW5nLnN1YihoYXNoLCAwLCAxNikpCiBTdW1t YXJ5OiBVdGlsaXRpZXMgZnJvbSB0aGUgZ2VuZXJhbCBwdXJwb3NlIGNyeXB0b2dyYXBoeSBsaWJy YXJ5IHdpdGggVExTIGltcGxlbWVudGF0aW9uCiBOYW1lOiBvcGVuc3NsMwogVmVyc2lvbjogMy41 LjUKLVJlbGVhc2U6IDEuMSV7P2Rpc3R9CitSZWxlYXNlOiA1JXs/ZGlzdH0KIFNvdXJjZTA6IG9w ZW5zc2wtJXt2ZXJzaW9ufS50YXIuZ3oKIFNvdXJjZTE6IGZpcHMtaG1hY2lmeS5zaAogU291cmNl MzogZ2VucGF0Y2hlcwpAQCAtOTcsNiArOTcsMjQgQEAgUGF0Y2gwMDU0OiAwMDU0LVRlbXBvcmFy aWx5LWRpc2FibGUtU0xILURTQS1GSVBTLXNlbGYtdGVzdHMucGF0Y2gKIFBhdGNoMDA1NTogMDA1 NS1BZGQtYS1kZWZpbmUtdG8tZGlzYWJsZS1zeW12ZXItYXR0cmlidXRlcy5wYXRjaAogUGF0Y2gw MDU2OiAwMDU2LUFkZC10YXJnZXRzLXRvLXNraXAtYnVpbGQtb2Ytbm9uLWluc3RhbGxhYmxlLXBy b2dyYW0ucGF0Y2gKIFBhdGNoMDA1NzogMDA1Ny1EaXNhYmxlLVJTQS1QS0NTMS41LUZJUFMtUE9T VC1ub3QtcmVsZXZhbnQtZm9yLVJIRUwucGF0Y2gKK1BhdGNoMDA1ODogMDA1OC1DVkUtMjAyNi0z MTc5MC5wYXRjaAorUGF0Y2gwMDU5OiAwMDU5LUNWRS0yMDI2LTI4MzkwLnBhdGNoCitQYXRjaDAw NjA6IDAwNjAtQ1ZFLTIwMjYtNzM4My5wYXRjaAorUGF0Y2gwMDYxOiAwMDYxLUNWRS0yMDI2LTkw NzYucGF0Y2gKK1BhdGNoMDA2MjogMDA2Mi1DVkUtMjAyNi0zNDE4MC5wYXRjaAorUGF0Y2gwMDYz OiAwMDYzLUNWRS0yMDI2LTM0MTgxLnBhdGNoCitQYXRjaDAwNjQ6IDAwNjQtQ1ZFLTIwMjYtMzQx ODMucGF0Y2gKK1BhdGNoMDA2NTogMDA2NS1DVkUtMjAyNi00Mjc2NC5wYXRjaAorUGF0Y2gwMDY2 OiAwMDY2LUNWRS0yMDI2LTQyNzY2LnBhdGNoCitQYXRjaDAwNjc6IDAwNjctQ1ZFLTIwMjYtNDI3 NjcucGF0Y2gKK1BhdGNoMDA2ODogMDA2OC1DVkUtMjAyNi00Mjc2OC5wYXRjaAorUGF0Y2gwMDY5 OiAwMDY5LUNWRS0yMDI2LTQyNzY5LnBhdGNoCitQYXRjaDAwNzA6IDAwNzAtQ1ZFLTIwMjYtNDI3 NzAucGF0Y2gKK1BhdGNoMDA3MTogMDA3MS1DVkUtMjAyNi00NTQ0NS5wYXRjaAorUGF0Y2gwMDcy OiAwMDcyLUNWRS0yMDI2LTQ1NDQ2LnBhdGNoCitQYXRjaDAwNzM6IDAwNzMtQ1ZFLTIwMjYtNDU0 NDcucGF0Y2gKK1BhdGNoMDA3NDogMDA3NC1DVkUtMjAyNi0zNDE4Mi5wYXRjaAorUGF0Y2gwMDc1 OiAwMDc1LWFzbjFfZDJpX3JlYWRfYmlvLWJsb2NraW5nLnBhdGNoCiAKICNUaGUgcGF0Y2hlcyB0 aGF0IGFyZSBkaWZmZXJlbnQgZm9yIFJIRUw5IGFuZCAxMCBzdGFydCBoZXJlCiBQYXRjaDAxMDA6 IDAxMDAtUkhFTDktQWxsb3ctU0hBMS1pbi1zZWNsZXZlbC0yLWlmLXJoLWFsbG93LXNoYTEtc2ln bmF0dXJlcy5wYXRjaApAQCAtMTE1LDYgKzEzMyw4IEBAIEJ1aWxkUmVxdWlyZXM6IHBlcmwoTW9k dWxlOjpMb2FkOjpDb25kaXRpb25hbCksIHBlcmwoRmlsZTo6VGVtcCkKIEJ1aWxkUmVxdWlyZXM6 IHBlcmwoVGltZTo6SGlSZXMpLCBwZXJsKFRpbWU6OlBpZWNlKSwgcGVybChJUEM6OkNtZCksIHBl cmwoUG9kOjpIdG1sKSwgcGVybChEaWdlc3Q6OlNIQSkKIEJ1aWxkUmVxdWlyZXM6IHBlcmwoRmlu ZEJpbiksIHBlcmwobGliKSwgcGVybChGaWxlOjpDb21wYXJlKSwgcGVybChGaWxlOjpDb3B5KSwg cGVybChiaWdpbnQpCiBCdWlsZFJlcXVpcmVzOiBnaXQtY29yZQorIyBSZXF1aXJlZCBmb3IgdGVz dC9yZWNpcGVzLzAxLXRlc3Rfc3ltYm9sX3ByZXNlbmNlLnQKK0J1aWxkUmVxdWlyZXM6IGdjYy10 b29sc2V0LTEyCiBSZXF1aXJlczogY29yZXV0aWxzCiBSZXF1aXJlczogJXtuYW1lfS1saWJzJXs/ X2lzYX0gPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KIApAQCAtMTU4LDYgKzE3OCw5IEBAIGZyb20g b3RoZXIgZm9ybWF0cyB0byB0aGUgZm9ybWF0cyB1c2VkIGJ5IHRoZSBPcGVuU1NMIHRvb2xraXQu CiAlYXV0b3NldHVwIC1TIGdpdCAtbiBvcGVuc3NsLSV7dmVyc2lvbn0KIAogJWJ1aWxkCisjIFJl cXVpcmVkIGZvciB0ZXN0L3JlY2lwZXMvMDEtdGVzdF9zeW1ib2xfcHJlc2VuY2UudAorLiAvb3B0 L3JoL2djYy10b29sc2V0LTEyL2VuYWJsZQorCiAjIEZpZ3VyZSBvdXQgd2hpY2ggZmxhZ3Mgd2Ug d2FudCB0byB1c2UuCiAjIGRlZmF1bHQKIHNzbGFyY2g9JXtfb3N9LSV7X3RhcmdldF9jcHV9CkBA IC0yNTEsMTIgKzI3NCwxMCBAQCBmb3IgaSBpbiBsaWJjcnlwdG8ucGMgbGlic3NsLnBjIG9wZW5z c2wucGMgOyBkbwogZG9uZQogCiAlY2hlY2sKLSMgVmVyaWZ5IHRoYXQgd2hhdCB3YXMgY29tcGls ZWQgYWN0dWFsbHkgd29ya3MuCisjIFJlcXVpcmVkIGZvciB0ZXN0L3JlY2lwZXMvMDEtdGVzdF9z eW1ib2xfcHJlc2VuY2UudAorLiAvb3B0L3JoL2djYy10b29sc2V0LTEyL2VuYWJsZQogCi0jIEhh Y2sgLSBzb21lIG9mIHRoZXNlIHRlc3RzIGZhaWwgb24gZXBlbDgKLSMgd2UgdXNlZCB0byByZXZl cnQgY29tbWl0IGYyYTQ5ZWY0MjRmODMxYWFjOTg4MzU2ZmM4YjJiOTEwZTQ0M2RjNDIgYnV0Ci0j IHRoYXQgbm8gbG9uZ2VyIHJldmVydHMgY2xlYW5seQotcm0gdGVzdC9yZWNpcGVzLzAxLXRlc3Rf c3ltYm9sX3ByZXNlbmNlLnQKKyMgVmVyaWZ5IHRoYXQgd2hhdCB3YXMgY29tcGlsZWQgYWN0dWFs bHkgd29ya3MuCiAKICMgSGFjayAtIGVpdGhlciBlbmFibGUgU0NUUCBBVVRIIGNodW5rcyBpbiBr ZXJuZWwgb3IgZGlzYWJsZSBzY3RwIGZvciBjaGVjawogKHN5c2N0bCBuZXQuc2N0cC5hZGRpcF9l bmFibGU9MSAmJiBzeXNjdGwgbmV0LnNjdHAuYXV0aF9lbmFibGU9MSkgfHwgXApAQCAtMzY2LDcg KzM4Nyw2IEBAIGluc3RhbGwgLW02NDQgJXtTT1VSQ0U5fSBcCiBsbiAtcyAvZXRjL2NyeXB0by1w b2xpY2llcy9iYWNrLWVuZHMvb3BlbnNzbF9maXBzLmNvbmZpZyAkUlBNX0JVSUxEX1JPT1Qle19z eXNjb25mZGlyfS9wa2kvdGxzL2ZpcHNfbG9jYWwuY25mCiAKICMgVHJhbnNmb3JtYXRpb24gZm9y IG9wZW5zc2wzCi0jIHNlZSBvcGVuc3NsMTEuc3BlYwogbWtkaXIgLXAgJFJQTV9CVUlMRF9ST09U eyV7X2xpYmRpcn0sJXtfaW5jbHVkZWRpcn19LyV7bmFtZX0vCiBybSAtZiAkUlBNX0JVSUxEX1JP T1Qle19zeXNjb25mZGlyfS9wa2kvdGxzL29wZW5zc2wuY25mCiBybSAtZiAkUlBNX0JVSUxEX1JP T1Qle19zeXNjb25mZGlyfS9wa2kvdGxzL2N0X2xvZ19saXN0LmNuZgpAQCAtNDQzLDYgKzQ2Myw0 MiBAQCBybSAtZiAkUlBNX0JVSUxEX1JPT1Qle19iaW5kaXJ9L3ttYWtlLHJlbmV3fS1kdW1teS1j ZXJ0CiAlbGRjb25maWdfc2NyaXB0bGV0cyBsaWJzCiAKICVjaGFuZ2Vsb2cKKyogU3VuIEp1bCAy NiAyMDI2IFJvYmVydCBTY2hlY2sgPHJvYmVydEBmZWRvcmFwcm9qZWN0Lm9yZz4gLSAzLjUuNS01 CistIE1lcmdlIGNoYW5nZXMgZnJvbSBSSEVMIDkuOCB0byBwaWNrIHVwIENWRSBmaXhlcworCisq IFRodSBKdW4gMjUgMjAyNiBQYXZvbCDFvcOhxI1payA8cHphY2lrQHJlZGhhdC5jb20+IC0gMToz LjUuNS01CistIFBhdGNoIGFzbjFfZDJpX3JlYWRfYmlvIHRvIHJlYWQgaGVhZGVycyB3aXRob3V0 IGJsb2NraW5nCisgIFJlc29sdmVzOiBSSEVMLTE3ODY0MgorCisqIE1vbiBKdW4gMDEgMjAyNiBE bWl0cnkgQmVseWF2c2tpeSA8ZGJlbHlhdnNAcmVkaGF0LmNvbT4gLSAxOjMuNS41LTQKK0ZpeCBD VkUtMjAyNi03MzgzLCBDVkUtMjAyNi05MDc2LCBDVkUtMjAyNi0zNDE4MCwgQ1ZFLTIwMjYtMzQx ODEsCitDVkUtMjAyNi0zNDE4MywgQ1ZFLTIwMjYtNDI3NjQsIENWRS0yMDI2LTQyNzY2LCBDVkUt MjAyNi00Mjc2NywgQ1ZFLTIwMjYtNDI3NjgsCitDVkUtMjAyNi00Mjc2OSwgQ1ZFLTIwMjYtNDI3 NzAsIENWRS0yMDI2LTQ1NDQ1LCBDVkUtMjAyNi00NTQ0NiwgQ1ZFLTIwMjYtNDU0NDcsCitDVkUt MjAyNi0zNDE4Mi4KK1Jlc29sdmVzOiBSSEVMLTE3OTI3NAorUmVzb2x2ZXM6IFJIRUwtMTc5Mjg3 CitSZXNvbHZlczogUkhFTC0xNzk1MzkKK1Jlc29sdmVzOiBSSEVMLTE3OTU0NAorUmVzb2x2ZXM6 IFJIRUwtMTc5NTQ3CitSZXNvbHZlczogUkhFTC0xNzk1NTIKK1Jlc29sdmVzOiBSSEVMLTE3OTU1 NgorUmVzb2x2ZXM6IFJIRUwtMTc5NjMzCitSZXNvbHZlczogUkhFTC0xNzk2NjEKK1Jlc29sdmVz OiBSSEVMLTE3OTY3OAorUmVzb2x2ZXM6IFJIRUwtMTc5Njg0CitSZXNvbHZlczogUkhFTC0xNzk2 ODgKK1Jlc29sdmVzOiBSSEVMLTE3OTY5MQorUmVzb2x2ZXM6IFJIRUwtMTc5Njk2CitSZXNvbHZl czogUkhFTC0xNzk2OTkKKworKiBXZWQgTWF5IDEzIDIwMjYgUGF2b2wgxb3DocSNaWsgPHB6YWNp a0ByZWRoYXQuY29tPiAtIDE6My41LjUtMworLSBGaXggQ1ZFLTIwMjYtMjgzOTAKKyAgUmVzb2x2 ZXM6IFJIRUwtMTY1ODcwCisKKyogVGh1IEFwciAwOSAyMDI2IFBhdm9sIMW9w6HEjWlrIDxwemFj aWtAcmVkaGF0LmNvbT4gLSAxOjMuNS41LTIKKy0gRml4IENWRS0yMDI2LTMxNzkwCisgIFJlc29s dmVzOiBSSEVMLTE2MTU4NgorCiAqIE1vbiBGZWIgMDIgMjAyNiBNaWNoZWwgTGluZCA8c2FsaW1t YUBmZWRvcmFwcm9qZWN0Lm9yZz4gLSAzLjUuNS0xLjEKIC0gTWVyZ2UgYzlzIG9wZW5zc2wgY2hh bmdlcyB0byBwaWNrIHVwIENWRSBmaXhlcwogICBSZXNvbHZlczogUkhCWiMyNDAwNjUwCg==