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: Tomas Mraz To: git-commits@fedoraproject.org Subject: [rpms/openssl] rebase_40beta: apply new bugfixes from upstream 1.1.1 branch Date: Tue, 09 Jun 2026 12:44:28 GMT Message-ID: <178100906806.1.5536957533000933302.rpms-openssl-5c7382cd79a3@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssl X-Git-Branch: rebase_40beta X-Git-Rev: 5c7382cd79a3ba0832c4c77f875c0feb4ea1b13d QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbnNzbApCcmFu Y2ggOiByZWJhc2VfNDBiZXRhCkNvbW1pdCA6IDVjNzM4MmNkNzlhM2JhMDgzMmM0Yzc3Zjg3NWMw ZmViNGVhMWIxM2QKQXV0aG9yIDogVG9tYXMgTXJheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+ CkRhdGUgICA6IDIwMTktMDUtMDNUMTE6MTU6MzcrMDI6MDAKU3RhdHMgIDogKzIzMTgvLTMgaW4g MyBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvb3Bl bnNzbC9jLzVjNzM4MmNkNzlhM2JhMDgzMmM0Yzc3Zjg3NWMwZmViNGVhMWIxM2Q/YnJhbmNoPXJl YmFzZV80MGJldGEKCkxvZzoKYXBwbHkgbmV3IGJ1Z2ZpeGVzIGZyb20gdXBzdHJlYW0gMS4xLjEg YnJhbmNoCgotLS0KZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4xLjEtc3NoLWtkZi5wYXRjaCBiL29w ZW5zc2wtMS4xLjEtc3NoLWtkZi5wYXRjaAppbmRleCA5ZTIzNDQzLi4wOGYwMmFjIDEwMDY0NAot LS0gYS9vcGVuc3NsLTEuMS4xLXNzaC1rZGYucGF0Y2gKKysrIGIvb3BlbnNzbC0xLjEuMS1zc2gt a2RmLnBhdGNoCkBAIC01NTgwLDMgKzU1ODAsMzMgQEAgaW5kZXggMjg1YzQzMTFhNi4uN2YyZGNk MjI5MSAxMDA2NDQKICtDdHJsLnR5cGUgPSB0eXBlOkEKICtPdXRwdXQgPSBGRgogK1Jlc3VsdCA9 IEtERl9NSVNNQVRDSAorRnJvbSAxNDhjYzVlZTI0NmUxMDhiMWU3MzMyMDM1MDM3YmFiNTM1NzRi MGE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2ltbyBTb3JjZSA8c2ltb0ByZWRo YXQuY29tPgorRGF0ZTogVGh1LCAxOCBBcHIgMjAxOSAwODoyNjoyOSAtMDQwMAorU3ViamVjdDog W1BBVENIXSBDaGFuZ2UgdGhlIGRpZ2VzdCBzdHJpbmcgZnJvbSAibWQiIHRvICJkaWdlc3QiCisK K0NvbmZvcm0gdG8gb3RoZXIgbW9kdWxlcyB3aGljaCB3ZXJlIGNoYW5nZWQgYXQgdGhlIGxhc3Qg bWludXRlIGFuZCB0aGlzCitkaXNjcmVwYW5jeSB3YXMgbm90IG5vdGljZWQuCitSZXRhaW4gIm1k IiBhcyBhbiBhbGlhcyBzbyBub3QgdG8gYnJlYWsgM3JkIHBhcnR5IGJhY2twb3J0cy90ZXN0cyBz Y3JpcHRzLgorCitTaWduZWQtb2ZmLWJ5OiBTaW1vIFNvcmNlIDxzaW1vQHJlZGhhdC5jb20+Cist LS0KKyBjcnlwdG8va2RmL3NzaGtkZi5jICAgICAgICB8IDMgKysrCisgdGVzdC9yZWNpcGVzLzIw LXRlc3Rfa2RmLnQgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKKyBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IHRlc3QvcmVjaXBlcy8y MC10ZXN0X2tkZi50CisKK2RpZmYgLS1naXQgYS9jcnlwdG8va2RmL3NzaGtkZi5jIGIvY3J5cHRv L2tkZi9zc2hrZGYuYworaW5kZXggMzAwZTFhZGJiMjMuLmY1ODVlOGEwZDZkIDEwMDY0NAorLS0t IGEvY3J5cHRvL2tkZi9zc2hrZGYuYworKysrIGIvY3J5cHRvL2tkZi9zc2hrZGYuYworQEAgLTEy NSw2ICsxMjUsOSBAQCBzdGF0aWMgaW50IGtkZl9zc2hrZGZfY3RybF9zdHIoRVZQX0tERl9JTVBM ICppbXBsLCBjb25zdCBjaGFyICp0eXBlLAorICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKyAK KysgICAgaWYgKHN0cmNtcCh0eXBlLCAiZGlnZXN0IikgPT0gMCkKKysgICAgICAgIHJldHVybiBr ZGZfbWQyY3RybChpbXBsLCBrZGZfc3Noa2RmX2N0cmwsIEVWUF9LREZfQ1RSTF9TRVRfTUQsIHZh bHVlKTsKKysgICAgLyogYWxpYXMsIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMgKi8KKyAgICAgaWYg KHN0cmNtcCh0eXBlLCAibWQiKSA9PSAwKQorICAgICAgICAgcmV0dXJuIGtkZl9tZDJjdHJsKGlt cGwsIGtkZl9zc2hrZGZfY3RybCwgRVZQX0tERl9DVFJMX1NFVF9NRCwgdmFsdWUpOworIAoKZGlm ZiAtLWdpdCBhL29wZW5zc2wtMS4xLjEtdXBzdHJlYW0tc3luYy5wYXRjaCBiL29wZW5zc2wtMS4x LjEtdXBzdHJlYW0tc3luYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4yY2Y4NDlmCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjEuMS11cHN0cmVhbS1zeW5j LnBhdGNoCkBAIC0wLDAgKzEsMjI4MiBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvYXBwcy9h c24xcGFycy5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvYXBwcy9hc24xcGFycy5jCistLS0gb3BlbnNz bC0xLjEuMWIvYXBwcy9hc24xcGFycy5jLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAw MDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4xYi9hcHBzL2FzbjFwYXJzLmMJMjAxOS0wNS0wMyAw ODo1NTo1MS41MzI0MDcwMDMgKzAyMDAKK0BAIC0xNzAsMTcgKzE3MCwxNyBAQCBpbnQgYXNuMXBh cnNlX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2CisgICAgIGlmIChkZXJmaWxlICYmIChkZXJv dXQgPSBiaW9fb3Blbl9kZWZhdWx0KGRlcmZpbGUsICd3JywgRk9STUFUX0FTTjEpKSA9PSBOVUxM KQorICAgICAgICAgZ290byBlbmQ7CisgCisrICAgIGlmICgoYnVmID0gQlVGX01FTV9uZXcoKSkg PT0gTlVMTCkKKysgICAgICAgIGdvdG8gZW5kOworICAgICBpZiAoc3RyaWN0cGVtKSB7CistICAg ICAgICBpZiAoUEVNX3JlYWRfYmlvKGluLCAmbmFtZSwgJmhlYWRlciwgJnN0ciwgJm51bSkgIT0K Ky0gICAgICAgICAgICAxKSB7CisrICAgICAgICBpZiAoUEVNX3JlYWRfYmlvKGluLCAmbmFtZSwg JmhlYWRlciwgJnN0ciwgJm51bSkgIT0gMSkgeworICAgICAgICAgICAgIEJJT19wcmludGYoYmlv X2VyciwgIkVycm9yIHJlYWRpbmcgUEVNIGZpbGVcbiIpOworICAgICAgICAgICAgIEVSUl9wcmlu dF9lcnJvcnMoYmlvX2Vycik7CisgICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgICB9Cisr ICAgICAgICBidWYtPmRhdGEgPSAoY2hhciAqKXN0cjsKKysgICAgICAgIGJ1Zi0+bGVuZ3RoID0g YnVmLT5tYXggPSBudW07CisgICAgIH0gZWxzZSB7CistCistICAgICAgICBpZiAoKGJ1ZiA9IEJV Rl9NRU1fbmV3KCkpID09IE5VTEwpCistICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgICBp ZiAoIUJVRl9NRU1fZ3JvdyhidWYsIEJVRlNJWiAqIDgpKQorICAgICAgICAgICAgIGdvdG8gZW5k OyAgICAgICAgICAgLyogUHJlLWFsbG9jYXRlIDotKSAqLworIAorQEAgLTMwMyw4ICszMDMsNiBA QCBpbnQgYXNuMXBhcnNlX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2CisgICAgIEJVRl9NRU1f ZnJlZShidWYpOworICAgICBPUEVOU1NMX2ZyZWUobmFtZSk7CisgICAgIE9QRU5TU0xfZnJlZSho ZWFkZXIpOworLSAgICBpZiAoc3RyaWN0cGVtKQorLSAgICAgICAgT1BFTlNTTF9mcmVlKHN0cik7 CisgICAgIEFTTjFfVFlQRV9mcmVlKGF0KTsKKyAgICAgc2tfT1BFTlNTTF9TVFJJTkdfZnJlZShv c2spOworICAgICByZXR1cm4gcmV0OworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2Fl cy9hc20vYWVzcDgtcHBjLnBsLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2Flcy9hc20vYWVz cDgtcHBjLnBsCistLS0gb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2Flcy9hc20vYWVzcDgtcHBjLnBs LnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEu MS4xYi9jcnlwdG8vYWVzL2FzbS9hZXNwOC1wcGMucGwJMjAxOS0wNS0wMyAwODo1NTo1MS41NTE0 MDY2NzYgKzAyMDAKK0BAIC0xODI5LDcgKzE4MjksNyBAQCBMY3RyMzJfZW5jOHhfdGhyZWU6Cisg CXN0dnhfdQkJJG91dDEsJHgxMCwkb3V0CisgCXN0dnhfdQkJJG91dDIsJHgyMCwkb3V0CisgCWFk ZGkJCSRvdXQsJG91dCwweDMwCistCWIJCUxjYmNfZGVjOHhfZG9uZQorKwliCQlMY3RyMzJfZW5j OHhfZG9uZQorIAorIC5hbGlnbgk1CisgTGN0cjMyX2VuYzh4X3R3bzoKK0BAIC0xODQxLDcgKzE4 NDEsNyBAQCBMY3RyMzJfZW5jOHhfdHdvOgorIAlzdHZ4X3UJCSRvdXQwLCR4MDAsJG91dAorIAlz dHZ4X3UJCSRvdXQxLCR4MTAsJG91dAorIAlhZGRpCQkkb3V0LCRvdXQsMHgyMAorLQliCQlMY2Jj X2RlYzh4X2RvbmUKKysJYgkJTGN0cjMyX2VuYzh4X2RvbmUKKyAKKyAuYWxpZ24JNQorIExjdHIz Ml9lbmM4eF9vbmU6CitkaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vYmlvL2JfYWRkci5j LnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2Jpby9iX2FkZHIuYworLS0tIG9wZW5zc2wtMS4x LjFiL2NyeXB0by9iaW8vYl9hZGRyLmMuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAw MCArMDEwMAorKysrIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9iaW8vYl9hZGRyLmMJMjAxOS0wNS0w MyAwODo1NTo1MS41NTU0MDY2MDggKzAyMDAKK0BAIC02ODMsNiArNjgzLDEyIEBAIGludCBCSU9f bG9va3VwX2V4KGNvbnN0IGNoYXIgKmhvc3QsIGNvbnMKKyAgICAgICAgIGhpbnRzLmFpX2ZhbWls eSA9IGZhbWlseTsKKyAgICAgICAgIGhpbnRzLmFpX3NvY2t0eXBlID0gc29ja3R5cGU7CisgICAg ICAgICBoaW50cy5haV9wcm90b2NvbCA9IHByb3RvY29sOworKyNpZmRlZiBBSV9BRERSQ09ORklH CisrI2lmZGVmIEFGX1VOU1BFQworKyAgICAgICAgaWYgKGZhbWlseSA9PSBBRl9VTlNQRUMpCisr I2VuZGlmCisrICAgICAgICAgICAgaGludHMuYWlfZmxhZ3MgfD0gQUlfQUREUkNPTkZJRzsKKysj ZW5kaWYKKyAKKyAgICAgICAgIGlmIChsb29rdXBfdHlwZSA9PSBCSU9fTE9PS1VQX1NFUlZFUikK KyAgICAgICAgICAgICBoaW50cy5haV9mbGFncyB8PSBBSV9QQVNTSVZFOworZGlmZiAtdXAgb3Bl bnNzbC0xLjEuMWIvY3J5cHRvL2Jpby9ic3NfbWVtLmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlw dG8vYmlvL2Jzc19tZW0uYworLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9iaW8vYnNzX21lbS5j LnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEu MS4xYi9jcnlwdG8vYmlvL2Jzc19tZW0uYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjU1NjQwNjU5MSAr MDIwMAorQEAgLTU3LDcgKzU3LDEyIEBAIHN0YXRpYyBjb25zdCBCSU9fTUVUSE9EIHNlY21lbV9t ZXRob2QgPQorICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAvKiBtZW1fY2FsbGJhY2tf Y3RybCAqLworIH07CisgCistLyogQklPIG1lbW9yeSBzdG9yZXMgYnVmZmVyIGFuZCByZWFkIHBv aW50ZXIgICovCisrLyoKKysgKiBCSU8gbWVtb3J5IHN0b3JlcyBidWZmZXIgYW5kIHJlYWQgcG9p bnRlcgorKyAqIGhvd2V2ZXIgdGhlIHJvbGVzIGFyZSBkaWZmZXJlbnQgZm9yIHJlYWQgb25seSBC SU9zLgorKyAqIEluIHRoYXQgY2FzZSB0aGUgcmVhZHAganVzdCBzdG9yZXMgdGhlIG9yaWdpbmFs IHN0YXRlCisrICogdG8gYmUgdXNlZCBmb3IgcmVzZXQuCisrICovCisgdHlwZWRlZiBzdHJ1Y3Qg YmlvX2J1Zl9tZW1fc3QgeworICAgICBzdHJ1Y3QgYnVmX21lbV9zdCAqYnVmOyAgIC8qIGFsbG9j YXRlZCBidWZmZXIgKi8KKyAgICAgc3RydWN0IGJ1Zl9tZW1fc3QgKnJlYWRwOyAvKiByZWFkIHBv aW50ZXIgKi8KK0BAIC0xOTIsMTEgKzE5NywxNCBAQCBzdGF0aWMgaW50IG1lbV9yZWFkKEJJTyAq YiwgY2hhciAqb3V0LCBpCisgICAgIEJJT19CVUZfTUVNICpiYm0gPSAoQklPX0JVRl9NRU0gKili LT5wdHI7CisgICAgIEJVRl9NRU0gKmJtID0gYmJtLT5yZWFkcDsKKyAKKysgICAgaWYgKGItPmZs YWdzICYgQklPX0ZMQUdTX01FTV9SRE9OTFkpCisrICAgICAgICBibSA9IGJibS0+YnVmOworICAg ICBCSU9fY2xlYXJfcmV0cnlfZmxhZ3MoYik7CisgICAgIHJldCA9IChvdXRsID49IDAgJiYgKHNp emVfdClvdXRsID4gYm0tPmxlbmd0aCkgPyAoaW50KWJtLT5sZW5ndGggOiBvdXRsOworICAgICBp ZiAoKG91dCAhPSBOVUxMKSAmJiAocmV0ID4gMCkpIHsKKyAgICAgICAgIG1lbWNweShvdXQsIGJt LT5kYXRhLCByZXQpOworICAgICAgICAgYm0tPmxlbmd0aCAtPSByZXQ7CisrICAgICAgICBibS0+ bWF4IC09IHJldDsKKyAgICAgICAgIGJtLT5kYXRhICs9IHJldDsKKyAgICAgfSBlbHNlIGlmIChi bS0+bGVuZ3RoID09IDApIHsKKyAgICAgICAgIHJldCA9IGItPm51bTsKK0BAIC0yNDEsMjkgKzI0 OSwzNiBAQCBzdGF0aWMgbG9uZyBtZW1fY3RybChCSU8gKmIsIGludCBjbWQsIGxvCisgICAgIEJJ T19CVUZfTUVNICpiYm0gPSAoQklPX0JVRl9NRU0gKiliLT5wdHI7CisgICAgIEJVRl9NRU0gKmJt OworIAorKyAgICBpZiAoYi0+ZmxhZ3MgJiBCSU9fRkxBR1NfTUVNX1JET05MWSkKKysgICAgICAg IGJtID0gYmJtLT5idWY7CisrICAgIGVsc2UKKysgICAgICAgIGJtID0gYmJtLT5yZWFkcDsKKysK KyAgICAgc3dpdGNoIChjbWQpIHsKKyAgICAgY2FzZSBCSU9fQ1RSTF9SRVNFVDoKKyAgICAgICAg IGJtID0gYmJtLT5idWY7CisgICAgICAgICBpZiAoYm0tPmRhdGEgIT0gTlVMTCkgeworLSAgICAg ICAgICAgIC8qIEZvciByZWFkIG9ubHkgY2FzZSByZXNldCB0byB0aGUgc3RhcnQgYWdhaW4gKi8K Ky0gICAgICAgICAgICBpZiAoKGItPmZsYWdzICYgQklPX0ZMQUdTX01FTV9SRE9OTFkpIHx8IChi LT5mbGFncyAmIEJJT19GTEFHU19OT05DTEVBUl9SU1QpKSB7CistICAgICAgICAgICAgICAgIGJt LT5sZW5ndGggPSBibS0+bWF4OworKyAgICAgICAgICAgIGlmICghKGItPmZsYWdzICYgQklPX0ZM QUdTX01FTV9SRE9OTFkpKSB7CisrICAgICAgICAgICAgICAgIGlmIChiLT5mbGFncyAmIEJJT19G TEFHU19OT05DTEVBUl9SU1QpIHsKKysgICAgICAgICAgICAgICAgICAgIGJtLT5sZW5ndGggPSBi bS0+bWF4OworKyAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICAgICAg bWVtc2V0KGJtLT5kYXRhLCAwLCBibS0+bWF4KTsKKysgICAgICAgICAgICAgICAgICAgIGJtLT5s ZW5ndGggPSAwOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICpiYm0tPnJl YWRwID0gKmJibS0+YnVmOworICAgICAgICAgICAgIH0gZWxzZSB7CistICAgICAgICAgICAgICAg IG1lbXNldChibS0+ZGF0YSwgMCwgYm0tPm1heCk7CistICAgICAgICAgICAgICAgIGJtLT5sZW5n dGggPSAwOworKyAgICAgICAgICAgICAgICAvKiBGb3IgcmVhZCBvbmx5IGNhc2UganVzdCByZXNl dCB0byB0aGUgc3RhcnQgYWdhaW4gKi8KKysgICAgICAgICAgICAgICAgKmJibS0+YnVmID0gKmJi bS0+cmVhZHA7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICpiYm0tPnJlYWRwID0gKmJi bS0+YnVmOworICAgICAgICAgfQorICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgQklPX0NUUkxf RU9GOgorLSAgICAgICAgYm0gPSBiYm0tPnJlYWRwOworICAgICAgICAgcmV0ID0gKGxvbmcpKGJt LT5sZW5ndGggPT0gMCk7CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBCSU9fQ19TRVRfQlVG X01FTV9FT0ZfUkVUVVJOOgorICAgICAgICAgYi0+bnVtID0gKGludCludW07CisgICAgICAgICBi cmVhazsKKyAgICAgY2FzZSBCSU9fQ1RSTF9JTkZPOgorLSAgICAgICAgYm0gPSBiYm0tPnJlYWRw OworICAgICAgICAgcmV0ID0gKGxvbmcpYm0tPmxlbmd0aDsKKyAgICAgICAgIGlmIChwdHIgIT0g TlVMTCkgeworICAgICAgICAgICAgIHBwdHIgPSAoY2hhciAqKilwdHI7CitAQCAtMjc4LDggKzI5 Myw5IEBAIHN0YXRpYyBsb25nIG1lbV9jdHJsKEJJTyAqYiwgaW50IGNtZCwgbG8KKyAgICAgICAg IGJyZWFrOworICAgICBjYXNlIEJJT19DX0dFVF9CVUZfTUVNX1BUUjoKKyAgICAgICAgIGlmIChw dHIgIT0gTlVMTCkgeworLSAgICAgICAgICAgIG1lbV9idWZfc3luYyhiKTsKKy0gICAgICAgICAg ICBibSA9IGJibS0+cmVhZHA7CisrICAgICAgICAgICAgaWYgKCEoYi0+ZmxhZ3MgJiBCSU9fRkxB R1NfTUVNX1JET05MWSkpCisrICAgICAgICAgICAgICAgIG1lbV9idWZfc3luYyhiKTsKKysgICAg ICAgICAgICBibSA9IGJibS0+YnVmOworICAgICAgICAgICAgIHBwdHIgPSAoY2hhciAqKilwdHI7 CisgICAgICAgICAgICAgKnBwdHIgPSAoY2hhciAqKWJtOworICAgICAgICAgfQorQEAgLTI5NCw3 ICszMTAsNiBAQCBzdGF0aWMgbG9uZyBtZW1fY3RybChCSU8gKmIsIGludCBjbWQsIGxvCisgICAg ICAgICByZXQgPSAwTDsKKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIEJJT19DVFJMX1BFTkRJ Tkc6CistICAgICAgICBibSA9IGJibS0+cmVhZHA7CisgICAgICAgICByZXQgPSAobG9uZylibS0+ bGVuZ3RoOworICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgQklPX0NUUkxfRFVQOgorQEAgLTMx OCw2ICszMzMsOCBAQCBzdGF0aWMgaW50IG1lbV9nZXRzKEJJTyAqYnAsIGNoYXIgKmJ1ZiwKKyAg ICAgQklPX0JVRl9NRU0gKmJibSA9IChCSU9fQlVGX01FTSAqKWJwLT5wdHI7CisgICAgIEJVRl9N RU0gKmJtID0gYmJtLT5yZWFkcDsKKyAKKysgICAgaWYgKGJwLT5mbGFncyAmIEJJT19GTEFHU19N RU1fUkRPTkxZKQorKyAgICAgICAgYm0gPSBiYm0tPmJ1ZjsKKyAgICAgQklPX2NsZWFyX3JldHJ5 X2ZsYWdzKGJwKTsKKyAgICAgaiA9IGJtLT5sZW5ndGg7CisgICAgIGlmICgoc2l6ZSAtIDEpIDwg aikKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9ibi9hc20vcHBjLnBsLnN5bmMgb3Bl bnNzbC0xLjEuMWIvY3J5cHRvL2JuL2FzbS9wcGMucGwKKy0tLSBvcGVuc3NsLTEuMS4xYi9jcnlw dG8vYm4vYXNtL3BwYy5wbC5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAw CisrKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2JuL2FzbS9wcGMucGwJMjAxOS0wNS0wMyAwODo1 NTo1MS41MzA0MDcwMzcgKzAyMDAKK0BAIC0yNTgsNiArMjU4LDcgQEAgJGRhdGE9PDxFT0Y7Cisg IyAudGV4dCBzZWN0aW9uCisgCisgCS5tYWNoaW5lCSJhbnkiCisrCS50ZXh0CisgCisgIworICMJ Tk9URToJVGhlIGZvbGxvd2luZyBsYWJlbCBuYW1lIHNob3VsZCBiZSBjaGFuZ2VkIHRvCitkaWZm IC11cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vYm4vYm5fY3R4LmMuc3luYyBvcGVuc3NsLTEuMS4x Yi9jcnlwdG8vYm4vYm5fY3R4LmMKKy0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vYm4vYm5fY3R4 LmMuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wt MS4xLjFiL2NyeXB0by9ibi9ibl9jdHguYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjUyNDQwNzE0MCAr MDIwMAorQEAgLTE5NCw2ICsxOTQsOCBAQCB2b2lkIEJOX0NUWF9zdGFydChCTl9DVFggKmN0eCkK KyAKKyB2b2lkIEJOX0NUWF9lbmQoQk5fQ1RYICpjdHgpCisgeworKyAgICBpZiAoY3R4ID09IE5V TEwpCisrICAgICAgICByZXR1cm47CisgICAgIENUWERCR19FTlRSWSgiQk5fQ1RYX2VuZCIsIGN0 eCk7CisgICAgIGlmIChjdHgtPmVycl9zdGFjaykKKyAgICAgICAgIGN0eC0+ZXJyX3N0YWNrLS07 CitkaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vYm4vYm5fbGliLmMuc3luYyBvcGVuc3Ns LTEuMS4xYi9jcnlwdG8vYm4vYm5fbGliLmMKKy0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vYm4v Ym5fbGliLmMuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAorKysrIG9w ZW5zc2wtMS4xLjFiL2NyeXB0by9ibi9ibl9saWIuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjUyNTQw NzEyMyArMDIwMAorQEAgLTMzOCw2ICszMzgsOCBAQCB2b2lkIEJOX3N3YXAoQklHTlVNICphLCBC SUdOVU0gKmIpCisgCisgdm9pZCBCTl9jbGVhcihCSUdOVU0gKmEpCisgeworKyAgICBpZiAoYSA9 PSBOVUxMKQorKyAgICAgICAgcmV0dXJuOworICAgICBibl9jaGVja190b3AoYSk7CisgICAgIGlm IChhLT5kICE9IE5VTEwpCisgICAgICAgICBPUEVOU1NMX2NsZWFuc2UoYS0+ZCwgc2l6ZW9mKCph LT5kKSAqIGEtPmRtYXgpOworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2JuL2JuX3By aW1lLmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vYm4vYm5fcHJpbWUuYworLS0tIG9wZW5z c2wtMS4xLjFiL2NyeXB0by9ibi9ibl9wcmltZS5jLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4w MDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vYm4vYm5fcHJpbWUuYwky MDE5LTA1LTAzIDA4OjU1OjUxLjUyNTQwNzEyMyArMDIwMAorQEAgLTEzNSw4ICsxMzUsNyBAQCBp bnQgQk5fZ2VuZXJhdGVfcHJpbWVfZXgoQklHTlVNICpyZXQsIGluCisgICAgIGZvdW5kID0gMTsK KyAgZXJyOgorICAgICBPUEVOU1NMX2ZyZWUobW9kcyk7CistICAgIGlmIChjdHggIT0gTlVMTCkK Ky0gICAgICAgIEJOX0NUWF9lbmQoY3R4KTsKKysgICAgQk5fQ1RYX2VuZChjdHgpOworICAgICBC Tl9DVFhfZnJlZShjdHgpOworICAgICBibl9jaGVja190b3AocmV0KTsKKyAgICAgcmV0dXJuIGZv dW5kOworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2NoYWNoYS9idWlsZC5pbmZvLnN5 bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2NoYWNoYS9idWlsZC5pbmZvCistLS0gb3BlbnNzbC0x LjEuMWIvY3J5cHRvL2NoYWNoYS9idWlsZC5pbmZvLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4w MDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vY2hhY2hhL2J1aWxkLmlu Zm8JMjAxOS0wNS0wMyAwODo1NTo1MS41Mzg0MDY5MDAgKzAyMDAKK0BAIC05LDYgKzksOCBAQCBH RU5FUkFURVtjaGFjaGEtYXJtdjQuU109YXNtL2NoYWNoYS1hcm12CisgSU5DTFVERVtjaGFjaGEt YXJtdjQub109Li4KKyBHRU5FUkFURVtjaGFjaGEtYXJtdjguU109YXNtL2NoYWNoYS1hcm12OC5w bCAkKFBFUkxBU01fU0NIRU1FKQorIElOQ0xVREVbY2hhY2hhLWFybXY4Lm9dPS4uCisrR0VORVJB VEVbY2hhY2hhLXMzOTB4LlNdPWFzbS9jaGFjaGEtczM5MHgucGwgJChQRVJMQVNNX1NDSEVNRSkK KytJTkNMVURFW2NoYWNoYS1zMzkweC5vXT0uLgorIAorIEJFR0lOUkFXW01ha2VmaWxlKHVuaXgp XQorICMjIyMjIENIQUNIQSBhc3NlbWJsZXIgaW1wbGVtZW50YXRpb25zCitkaWZmIC11cCBvcGVu c3NsLTEuMS4xYi9jcnlwdG8vY29uZi9jb25mX3NhcC5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5 cHRvL2NvbmYvY29uZl9zYXAuYworLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9jb25mL2NvbmZf c2FwLmMuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5z c2wtMS4xLjFiL2NyeXB0by9jb25mL2NvbmZfc2FwLmMJMjAxOS0wNS0wMyAwODo1NTo1MS41NTA0 MDY2OTQgKzAyMDAKK0BAIC0zNSw2ICszNSw3IEBAIHZvaWQgT1BFTlNTTF9jb25maWcoY29uc3Qg Y2hhciAqYXBwbmFtZSkKKyAgICAgbWVtc2V0KCZzZXR0aW5ncywgMCwgc2l6ZW9mKHNldHRpbmdz KSk7CisgICAgIGlmIChhcHBuYW1lICE9IE5VTEwpCisgICAgICAgICBzZXR0aW5ncy5hcHBuYW1l ID0gc3RyZHVwKGFwcG5hbWUpOworKyAgICBzZXR0aW5ncy5mbGFncyA9IERFRkFVTFRfQ09ORl9N RkxBR1M7CisgICAgIE9QRU5TU0xfaW5pdF9jcnlwdG8oT1BFTlNTTF9JTklUX0xPQURfQ09ORklH LCAmc2V0dGluZ3MpOworIH0KKyAjZW5kaWYKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0 by9kaC9kaF9jaGVjay5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2RoL2RoX2NoZWNrLmMK Ky0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZGgvZGhfY2hlY2suYy5zeW5jCTIwMTktMDItMjYg MTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2RoL2Ro X2NoZWNrLmMJMjAxOS0wNS0wMyAwODo1NTo1MS41MjU0MDcxMjMgKzAyMDAKK0BAIC01OCwxMCAr NTgsOCBAQCBpbnQgREhfY2hlY2tfcGFyYW1zKGNvbnN0IERIICpkaCwgaW50ICpyCisgCisgICAg IG9rID0gMTsKKyAgZXJyOgorLSAgICBpZiAoY3R4ICE9IE5VTEwpIHsKKy0gICAgICAgIEJOX0NU WF9lbmQoY3R4KTsKKy0gICAgICAgIEJOX0NUWF9mcmVlKGN0eCk7CistICAgIH0KKysgICAgQk5f Q1RYX2VuZChjdHgpOworKyAgICBCTl9DVFhfZnJlZShjdHgpOworICAgICByZXR1cm4gb2s7Cisg fQorIAorQEAgLTE3MSwxMCArMTY5LDggQEAgaW50IERIX2NoZWNrKGNvbnN0IERIICpkaCwgaW50 ICpyZXQpCisgICAgIH0KKyAgICAgb2sgPSAxOworICBlcnI6CistICAgIGlmIChjdHggIT0gTlVM TCkgeworLSAgICAgICAgQk5fQ1RYX2VuZChjdHgpOworLSAgICAgICAgQk5fQ1RYX2ZyZWUoY3R4 KTsKKy0gICAgfQorKyAgICBCTl9DVFhfZW5kKGN0eCk7CisrICAgIEJOX0NUWF9mcmVlKGN0eCk7 CisgICAgIHJldHVybiBvazsKKyB9CisgCitAQCAtMjI1LDkgKzIyMSw3IEBAIGludCBESF9jaGVj a19wdWJfa2V5KGNvbnN0IERIICpkaCwgY29uc3QKKyAKKyAgICAgb2sgPSAxOworICBlcnI6Cist ICAgIGlmIChjdHggIT0gTlVMTCkgeworLSAgICAgICAgQk5fQ1RYX2VuZChjdHgpOworLSAgICAg ICAgQk5fQ1RYX2ZyZWUoY3R4KTsKKy0gICAgfQorKyAgICBCTl9DVFhfZW5kKGN0eCk7CisrICAg IEJOX0NUWF9mcmVlKGN0eCk7CisgICAgIHJldHVybiBvazsKKyB9CitkaWZmIC11cCBvcGVuc3Ns LTEuMS4xYi9jcnlwdG8vZGgvZGhfZ2VuLmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZGgv ZGhfZ2VuLmMKKy0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZGgvZGhfZ2VuLmMuc3luYwkyMDE5 LTA1LTAzIDA4OjU1OjQ1LjE3MDUxNjIyNCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjFiL2NyeXB0 by9kaC9kaF9nZW4uYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjUyNTQwNzEyMyArMDIwMAorQEAgLTE0 NCw5ICsxNDQsNyBAQCBzdGF0aWMgaW50IGRoX2J1aWx0aW5fZ2VucGFyYW1zKERIICpyZXQsCisg ICAgICAgICBvayA9IDA7CisgICAgIH0KKyAKKy0gICAgaWYgKGN0eCAhPSBOVUxMKSB7CistICAg ICAgICBCTl9DVFhfZW5kKGN0eCk7CistICAgICAgICBCTl9DVFhfZnJlZShjdHgpOworLSAgICB9 CisrICAgIEJOX0NUWF9lbmQoY3R4KTsKKysgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKKyAgICAgcmV0 dXJuIG9rOworIH0KK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9kaC9kaF9rZXkuYy5z eW5jIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9kaC9kaF9rZXkuYworLS0tIG9wZW5zc2wtMS4xLjFi L2NyeXB0by9kaC9kaF9rZXkuYy5zeW5jCTIwMTktMDUtMDMgMDg6NTU6NDUuMTcwNTE2MjI0ICsw MjAwCisrKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2RoL2RoX2tleS5jCTIwMTktMDUtMDMgMDg6 NTU6NTEuNTI2NDA3MTA2ICswMjAwCitAQCAtMjM3LDEwICsyMzcsOCBAQCBzdGF0aWMgaW50IGNv bXB1dGVfa2V5KHVuc2lnbmVkIGNoYXIgKmtlCisgCisgICAgIHJldCA9IEJOX2JuMmJpbih0bXAs IGtleSk7CisgIGVycjoKKy0gICAgaWYgKGN0eCAhPSBOVUxMKSB7CistICAgICAgICBCTl9DVFhf ZW5kKGN0eCk7CistICAgICAgICBCTl9DVFhfZnJlZShjdHgpOworLSAgICB9CisrICAgIEJOX0NU WF9lbmQoY3R4KTsKKysgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKKyAgICAgcmV0dXJuIHJldDsKKyB9 CisgCitkaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZHNhL2RzYV9nZW4uYy5zeW5jIG9w ZW5zc2wtMS4xLjFiL2NyeXB0by9kc2EvZHNhX2dlbi5jCistLS0gb3BlbnNzbC0xLjEuMWIvY3J5 cHRvL2RzYS9kc2FfZ2VuLmMuc3luYwkyMDE5LTA1LTAzIDA4OjU1OjQ1LjE3MTUxNjIwNyArMDIw MAorKysrIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9kc2EvZHNhX2dlbi5jCTIwMTktMDUtMDMgMDg6 NTU6NTEuNTI2NDA3MTA2ICswMjAwCitAQCAtMzA4LDggKzMwOCw3IEBAIGludCBkc2FfYnVpbHRp bl9wYXJhbWdlbihEU0EgKnJldCwgc2l6ZV8KKyAgICAgICAgIGlmIChzZWVkX291dCkKKyAgICAg ICAgICAgICBtZW1jcHkoc2VlZF9vdXQsIHNlZWQsIHFzaXplKTsKKyAgICAgfQorLSAgICBpZiAo Y3R4KQorLSAgICAgICAgQk5fQ1RYX2VuZChjdHgpOworKyAgICBCTl9DVFhfZW5kKGN0eCk7Cisg ICAgIEJOX0NUWF9mcmVlKGN0eCk7CisgICAgIEJOX01PTlRfQ1RYX2ZyZWUobW9udCk7CisgICAg IHJldHVybiBvazsKK0BAIC02NDEsOCArNjQwLDcgQEAgaW50IGRzYV9idWlsdGluX3BhcmFtZ2Vu MihEU0EgKnJldCwgc2l6ZQorICAgICBPUEVOU1NMX2ZyZWUoc2VlZCk7CisgICAgIGlmIChzZWVk X291dCAhPSBzZWVkX3RtcCkKKyAgICAgICAgIE9QRU5TU0xfZnJlZShzZWVkX3RtcCk7CistICAg IGlmIChjdHgpCistICAgICAgICBCTl9DVFhfZW5kKGN0eCk7CisrICAgIEJOX0NUWF9lbmQoY3R4 KTsKKyAgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKKyAgICAgQk5fTU9OVF9DVFhfZnJlZShtb250KTsK KyAgICAgRVZQX01EX0NUWF9mcmVlKG1jdHgpOworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5 cHRvL2VjL2VjZGhfb3NzbC5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2VjL2VjZGhfb3Nz bC5jCistLS0gb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2VjL2VjZGhfb3NzbC5jLnN5bmMJMjAxOS0w NS0wMyAwODo1NTo0NS4xNzE1MTYyMDcgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8v ZWMvZWNkaF9vc3NsLmMJMjAxOS0wNS0wMyAwODo1NTo1MS41NTY0MDY1OTEgKzAyMDAKK0BAIC0x MjMsNyArMTIzLDcgQEAgaW50IGVjZGhfc2ltcGxlX2NvbXB1dGVfa2V5KHVuc2lnbmVkIGNoYQor ICAgICByZXQgPSAxOworIAorICBlcnI6CistICAgIEVDX1BPSU5UX2ZyZWUodG1wKTsKKysgICAg RUNfUE9JTlRfY2xlYXJfZnJlZSh0bXApOworICAgICBpZiAoY3R4KQorICAgICAgICAgQk5fQ1RY X2VuZChjdHgpOworICAgICBCTl9DVFhfZnJlZShjdHgpOworZGlmZiAtdXAgb3BlbnNzbC0xLjEu MWIvY3J5cHRvL2VjL2VjX2xpYi5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2VjL2VjX2xp Yi5jCistLS0gb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2VjL2VjX2xpYi5jLnN5bmMJMjAxOS0wMi0y NiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZWMv ZWNfbGliLmMJMjAxOS0wNS0wMyAwODo1NTo1MS41Mjc0MDcwODggKzAyMDAKK0BAIC0xMDc0LDgg KzEwNzQsNyBAQCBzdGF0aWMgaW50IGVjX2ZpZWxkX2ludmVyc2VfbW9kX29yZChjb25zCisgICAg IHJldCA9IDE7CisgCisgIGVycjoKKy0gICAgaWYgKGN0eCAhPSBOVUxMKQorLSAgICAgICAgQk5f Q1RYX2VuZChjdHgpOworKyAgICBCTl9DVFhfZW5kKGN0eCk7CisgICAgIEJOX0NUWF9mcmVlKG5l d19jdHgpOworICAgICByZXR1cm4gcmV0OworIH0KK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2Ny eXB0by9lYy9lY19tdWx0LmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZWMvZWNfbXVsdC5j CistLS0gb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2VjL2VjX211bHQuYy5zeW5jCTIwMTktMDItMjYg MTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2VjL2Vj X211bHQuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjU0MDQwNjg2NSArMDIwMAorQEAgLTM3OCw3ICsz NzgsNyBAQCBpbnQgZWNfc2NhbGFyX211bF9sYWRkZXIoY29uc3QgRUNfR1JPVVAKKyAKKyAgZXJy OgorICAgICBFQ19QT0lOVF9mcmVlKHApOworLSAgICBFQ19QT0lOVF9mcmVlKHMpOworKyAgICBF Q19QT0lOVF9jbGVhcl9mcmVlKHMpOworICAgICBCTl9DVFhfZW5kKGN0eCk7CisgCisgICAgIHJl dHVybiByZXQ7CitAQCAtNDQxLDcgKzQ0MSw3IEBAIGludCBlY193TkFGX211bChjb25zdCBFQ19H Uk9VUCAqZ3JvdXAsIEUKKyAgICAgICAgICAqIHNjYWxhciBtdWx0aXBsaWNhdGlvbiBpbXBsZW1l bnRhdGlvbiBiYXNlZCBvbiBhIE1vbnRnb21lcnkgbGFkZGVyLAorICAgICAgICAgICogd2l0aCB2 YXJpb3VzIHRpbWluZyBhdHRhY2sgZGVmZW5zZXMuCisgICAgICAgICAgKi8KKy0gICAgICAgIGlm ICgoc2NhbGFyICE9IE5VTEwpICYmIChudW0gPT0gMCkpIHsKKysgICAgICAgIGlmICgoc2NhbGFy ICE9IGdyb3VwLT5vcmRlcikgJiYgKHNjYWxhciAhPSBOVUxMKSAmJiAobnVtID09IDApKSB7Cisg ICAgICAgICAgICAgLyotCisgICAgICAgICAgICAgICogSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8g Y29tcHV0ZSBzY2FsYXIgKiBHZW5lcmF0b3JQb2ludDogdGhpcworICAgICAgICAgICAgICAqIGNv ZGVwYXRoIGlzIHJlYWNoZWQgbW9zdCBwcm9taW5lbnRseSBieSAoZXBoZW1lcmFsKSBrZXkKK0BA IC00NTIsNyArNDUyLDcgQEAgaW50IGVjX3dOQUZfbXVsKGNvbnN0IEVDX0dST1VQICpncm91cCwg RQorICAgICAgICAgICAgICAqLworICAgICAgICAgICAgIHJldHVybiBlY19zY2FsYXJfbXVsX2xh ZGRlcihncm91cCwgciwgc2NhbGFyLCBOVUxMLCBjdHgpOworICAgICAgICAgfQorLSAgICAgICAg aWYgKChzY2FsYXIgPT0gTlVMTCkgJiYgKG51bSA9PSAxKSkgeworKyAgICAgICAgaWYgKChzY2Fs YXIgPT0gTlVMTCkgJiYgKG51bSA9PSAxKSAmJiAoc2NhbGFyc1swXSAhPSBncm91cC0+b3JkZXIp KSB7CisgICAgICAgICAgICAgLyotCisgICAgICAgICAgICAgICogSW4gdGhpcyBjYXNlIHdlIHdh bnQgdG8gY29tcHV0ZSBzY2FsYXIgKiBWYXJpYWJsZVBvaW50OiB0aGlzCisgICAgICAgICAgICAg ICogY29kZXBhdGggaXMgcmVhY2hlZCBtb3N0IHByb21pbmVudGx5IGJ5IHRoZSBzZWNvbmQgaGFs ZiBvZiBFQ0RILAorQEAgLTk0OCw4ICs5NDgsNyBAQCBpbnQgZWNfd05BRl9wcmVjb21wdXRlX211 bHQoRUNfR1JPVVAgKmdyCisgICAgIHJldCA9IDE7CisgCisgIGVycjoKKy0gICAgaWYgKGN0eCAh PSBOVUxMKQorLSAgICAgICAgQk5fQ1RYX2VuZChjdHgpOworKyAgICBCTl9DVFhfZW5kKGN0eCk7 CisgICAgIEJOX0NUWF9mcmVlKG5ld19jdHgpOworICAgICBFQ19lY19wcmVfY29tcF9mcmVlKHBy ZV9jb21wKTsKKyAgICAgaWYgKHBvaW50cykgeworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5 cHRvL2VjL2VjcF9uaXN0cDUyMS5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2VjL2VjcF9u aXN0cDUyMS5jCistLS0gb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2VjL2VjcF9uaXN0cDUyMS5jLnN5 bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4x Yi9jcnlwdG8vZWMvZWNwX25pc3RwNTIxLmMJMjAxOS0wNS0wMyAwODo1NTo1MS41MzI0MDcwMDMg KzAyMDAKK0BAIC0zNTcsMTAgKzM1NywxNSBAQCBzdGF0aWMgdm9pZCBmZWxlbV9kaWZmNjQoZmVs ZW0gb3V0LCBjb25zCisgc3RhdGljIHZvaWQgZmVsZW1fZGlmZl8xMjhfNjQobGFyZ2VmZWxlbSBv dXQsIGNvbnN0IGZlbGVtIGluKQorIHsKKyAgICAgLyoKKy0gICAgICogSW4gb3JkZXIgdG8gcHJl dmVudCB1bmRlcmZsb3csIHdlIGFkZCAwIG1vZCBwIGJlZm9yZSBzdWJ0cmFjdGluZy4KKysgICAg ICogSW4gb3JkZXIgdG8gcHJldmVudCB1bmRlcmZsb3csIHdlIGFkZCA2NHAgbW9kIHAgKHdoaWNo IGlzIGVxdWl2YWxlbnQKKysgICAgICogdG8gMCBtb2QgcCkgYmVmb3JlIHN1YnRyYWN0aW5nLiBw IGlzIDJeNTIxIC0gMSwgaS5lLiBpbiBiaW5hcnkgYSA1MjEKKysgICAgICogZGlnaXQgbnVtYmVy IHdpdGggYWxsIGJpdHMgc2V0IHRvIDEuIFNlZSAiVGhlIHJlcHJlc2VudGF0aW9uIG9mIGZpZWxk CisrICAgICAqIGVsZW1lbnRzIiBjb21tZW50IGFib3ZlIGZvciBhIGRlc2NyaXB0aW9uIG9mIGhv dyBsaW1icyBhcmUgdXNlZCB0bworKyAgICAgKiByZXByZXNlbnQgYSBudW1iZXIuIDY0cCBpcyBy ZXByZXNlbnRlZCB3aXRoIDggbGltYnMgY29udGFpbmluZyBhIG51bWJlcgorKyAgICAgKiB3aXRo IDU4IGJpdHMgc2V0IGFuZCBvbmUgbGltYiB3aXRoIGEgbnVtYmVyIHdpdGggNTcgYml0cyBzZXQu CisgICAgICAqLworLSAgICBzdGF0aWMgY29uc3QgbGltYiB0d282M202ID0gKCgobGltYikgMSkg PDwgNjIpIC0gKCgobGltYikgMSkgPDwgNSk7CistICAgIHN0YXRpYyBjb25zdCBsaW1iIHR3bzYz bTUgPSAoKChsaW1iKSAxKSA8PCA2MikgLSAoKChsaW1iKSAxKSA8PCA0KTsKKysgICAgc3RhdGlj IGNvbnN0IGxpbWIgdHdvNjNtNiA9ICgoKGxpbWIpIDEpIDw8IDYzKSAtICgoKGxpbWIpIDEpIDw8 IDYpOworKyAgICBzdGF0aWMgY29uc3QgbGltYiB0d282M201ID0gKCgobGltYikgMSkgPDwgNjMp IC0gKCgobGltYikgMSkgPDwgNSk7CisgCisgICAgIG91dFswXSArPSB0d282M202IC0gaW5bMF07 CisgICAgIG91dFsxXSArPSB0d282M201IC0gaW5bMV07CitkaWZmIC11cCBvcGVuc3NsLTEuMS4x Yi9jcnlwdG8vZWMvZWNwX25pc3R6MjU2LmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZWMv ZWNwX25pc3R6MjU2LmMKKy0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZWMvZWNwX25pc3R6MjU2 LmMuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wt MS4xLjFiL2NyeXB0by9lYy9lY3BfbmlzdHoyNTYuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjUyODQw NzA3MSArMDIwMAorQEAgLTg4OCw4ICs4ODgsNyBAQCBfX293dXIgc3RhdGljIGludCBlY3Bfbmlz dHoyNTZfbXVsdF9wcmVjCisgICAgIHJldCA9IDE7CisgCisgIGVycjoKKy0gICAgaWYgKGN0eCAh PSBOVUxMKQorLSAgICAgICAgQk5fQ1RYX2VuZChjdHgpOworKyAgICBCTl9DVFhfZW5kKGN0eCk7 CisgICAgIEJOX0NUWF9mcmVlKG5ld19jdHgpOworIAorICAgICBFQ19uaXN0ejI1Nl9wcmVfY29t cF9mcmVlKHByZV9jb21wKTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9lYy9lY3Bf c21wbC5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2VjL2VjcF9zbXBsLmMKKy0tLSBvcGVu c3NsLTEuMS4xYi9jcnlwdG8vZWMvZWNwX3NtcGwuYy5zeW5jCTIwMTktMDUtMDMgMDg6NTU6NDUu MTUyNTE2NTMzICswMjAwCisrKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2VjL2VjcF9zbXBsLmMJ MjAxOS0wNS0wMyAwODo1NTo1MS41Mjg0MDcwNzEgKzAyMDAKK0BAIC0zMTIsOCArMzEyLDcgQEAg aW50IGVjX0dGcF9zaW1wbGVfZ3JvdXBfY2hlY2tfZGlzY3JpbWluYQorICAgICByZXQgPSAxOwor IAorICBlcnI6CistICAgIGlmIChjdHggIT0gTlVMTCkKKy0gICAgICAgIEJOX0NUWF9lbmQoY3R4 KTsKKysgICAgQk5fQ1RYX2VuZChjdHgpOworICAgICBCTl9DVFhfZnJlZShuZXdfY3R4KTsKKyAg ICAgcmV0dXJuIHJldDsKKyB9CitAQCAtNzkyLDggKzc5MSw3IEBAIGludCBlY19HRnBfc2ltcGxl X2FkZChjb25zdCBFQ19HUk9VUCAqZ3IKKyAgICAgcmV0ID0gMTsKKyAKKyAgZW5kOgorLSAgICBp ZiAoY3R4KSAgICAgICAgICAgICAgICAgICAgLyogb3RoZXJ3aXNlIHdlIGFscmVhZHkgY2FsbGVk IEJOX0NUWF9lbmQgKi8KKy0gICAgICAgIEJOX0NUWF9lbmQoY3R4KTsKKysgICAgQk5fQ1RYX2Vu ZChjdHgpOworICAgICBCTl9DVFhfZnJlZShuZXdfY3R4KTsKKyAgICAgcmV0dXJuIHJldDsKKyB9 CitkaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZXJyL2Vyci5jLnN5bmMgb3BlbnNzbC0x LjEuMWIvY3J5cHRvL2Vyci9lcnIuYworLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9lcnIvZXJy LmMuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wt MS4xLjFiL2NyeXB0by9lcnIvZXJyLmMJMjAxOS0wNS0wMyAwODo1NTo1MS41NDg0MDY3MjggKzAy MDAKK0BAIC01MjMsOCArNTIzLDI0IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGdldF9lcnJvcl92 YWx1ZXMoaW4KKyAgICAgICAgIHJldHVybiBFUlJfUl9JTlRFUk5BTF9FUlJPUjsKKyAgICAgfQor IAorKyAgICB3aGlsZSAoZXMtPmJvdHRvbSAhPSBlcy0+dG9wKSB7CisrICAgICAgICBpZiAoZXMt PmVycl9mbGFnc1tlcy0+dG9wXSAmIEVSUl9GTEFHX0NMRUFSKSB7CisrICAgICAgICAgICAgZXJy X2NsZWFyKGVzLCBlcy0+dG9wKTsKKysgICAgICAgICAgICBlcy0+dG9wID0gZXMtPnRvcCA+IDAg PyBlcy0+dG9wIC0gMSA6IEVSUl9OVU1fRVJST1JTIC0gMTsKKysgICAgICAgICAgICBjb250aW51 ZTsKKysgICAgICAgIH0KKysgICAgICAgIGkgPSAoZXMtPmJvdHRvbSArIDEpICUgRVJSX05VTV9F UlJPUlM7CisrICAgICAgICBpZiAoZXMtPmVycl9mbGFnc1tpXSAmIEVSUl9GTEFHX0NMRUFSKSB7 CisrICAgICAgICAgICAgZXMtPmJvdHRvbSA9IGk7CisrICAgICAgICAgICAgZXJyX2NsZWFyKGVz LCBlcy0+Ym90dG9tKTsKKysgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysgICAg ICAgIGJyZWFrOworKyAgICB9CisrCisgICAgIGlmIChlcy0+Ym90dG9tID09IGVzLT50b3ApCisg ICAgICAgICByZXR1cm4gMDsKKysKKyAgICAgaWYgKHRvcCkKKyAgICAgICAgIGkgPSBlcy0+dG9w OyAgICAgICAgICAgIC8qIGxhc3QgZXJyb3IgKi8KKyAgICAgZWxzZQorQEAgLTkxMywyNSArOTI5 LDYgQEAgaW50IEVSUl9jbGVhcl9sYXN0X21hcmsodm9pZCkKKyAgICAgcmV0dXJuIDE7CisgfQor IAorLSNpZmRlZiBVSU5UUFRSX1QKKy0jIHVuZGVmIFVJTlRQVFJfVAorLSNlbmRpZgorLS8qCist ICogdWludHB0cl90IGlzIHRoZSBhbnN3ZXIsIGJ1dCB1bmZvcnR1bmF0ZWx5IEM4OSwgY3VycmVu dCAibGVhc3QgY29tbW9uCistICogZGVub21pbmF0b3IiIGRvZXNuJ3QgZGVmaW5lIGl0LiBNb3N0 IGxlZ2FjeSBwbGF0Zm9ybXMgdHlwZWRlZiBpdCBhbnl3YXksCistICogc28gdGhhdCBhdHRlbXB0 IHRvIGZpbGwgdGhlIGdhcHMgbWVhbnMgdGhhdCBvbmUgd291bGQgaGF2ZSB0byBpZGVudGlmeQor LSAqIHRoYXQgdHJhY2sgdGhlc2UgZ2Fwcywgd2hpY2ggd291bGQgYmUgdW5kZXNpcmFibGUuIE1h Y3JvIGl0IGlzLi4uCistICovCistI2lmIGRlZmluZWQoX19WTVMpICYmIF9fSU5JVElBTF9QT0lO VEVSX1NJWkU9PTY0CistLyoKKy0gKiBCdXQgd2UgY2FuJ3QgdXNlIHNpemVfdCBvbiBWTVMsIGJl Y2F1c2UgaXQgYWRoZXJlcyB0byBzaXplb2Yoc2l6ZV90KT09NAorLSAqIGV2ZW4gaW4gNjQtYml0 IGJ1aWxkcywgd2hpY2ggbWVhbnMgdGhhdCBpdCB3b24ndCB3b3JrIGFzIG1hc2suCistICovCist IyBkZWZpbmUgVUlOVFBUUl9UIHVuc2lnbmVkIGxvbmcgbG9uZworLSNlbHNlCistIyBkZWZpbmUg VUlOVFBUUl9UIHNpemVfdAorLSNlbmRpZgorLQorIHZvaWQgZXJyX2NsZWFyX2xhc3RfY29uc3Rh bnRfdGltZShpbnQgY2xlYXIpCisgeworICAgICBFUlJfU1RBVEUgKmVzOworQEAgLTk0MywxMSAr OTQwLDExIEBAIHZvaWQgZXJyX2NsZWFyX2xhc3RfY29uc3RhbnRfdGltZShpbnQgY2wKKyAKKyAg ICAgdG9wID0gZXMtPnRvcDsKKyAKKy0gICAgZXMtPmVycl9mbGFnc1t0b3BdICY9IH4oMCAtIGNs ZWFyKTsKKy0gICAgZXMtPmVycl9idWZmZXJbdG9wXSAmPSB+KDBVTCAtIGNsZWFyKTsKKy0gICAg ZXMtPmVycl9maWxlW3RvcF0gPSAoY29uc3QgY2hhciAqKSgoVUlOVFBUUl9UKWVzLT5lcnJfZmls ZVt0b3BdICYKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+KChVSU5U UFRSX1QpMCAtIGNsZWFyKSk7CistICAgIGVzLT5lcnJfbGluZVt0b3BdIHw9IDAgLSBjbGVhcjsK Ky0KKy0gICAgZXMtPnRvcCA9ICh0b3AgKyBFUlJfTlVNX0VSUk9SUyAtIGNsZWFyKSAlIEVSUl9O VU1fRVJST1JTOworKyAgICAvKgorKyAgICAgKiBGbGFnIGVycm9yIGFzIGNsZWFyZWQgYnV0IHJl bW92ZSBpdCBlbHNld2hlcmUgdG8gYXZvaWQgdHdvIGVycm9ycworKyAgICAgKiBhY2Nlc3Npbmcg dGhlIHNhbWUgZXJyb3Igc3RhY2sgbG9jYXRpb24sIHJldmVhbGluZyB0aW1pbmcgaW5mb3JtYXRp b24uCisrICAgICAqLworKyAgICBjbGVhciA9IGNvbnN0YW50X3RpbWVfc2VsZWN0X2ludChjb25z dGFudF90aW1lX2VxX2ludChjbGVhciwgMCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDAsIEVSUl9GTEFHX0NMRUFSKTsKKysgICAgZXMtPmVycl9mbGFnc1t0b3BdIHw9 IGNsZWFyOworIH0KK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9ldnAvZGlnZXN0LmMu c3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZXZwL2RpZ2VzdC5jCistLS0gb3BlbnNzbC0xLjEu MWIvY3J5cHRvL2V2cC9kaWdlc3QuYy5zeW5jCTIwMTktMDUtMDMgMDg6NTU6NTEuNTUzNDA2NjQy ICswMjAwCisrKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2V2cC9kaWdlc3QuYwkyMDE5LTA1LTAz IDA4OjU2OjQwLjgwMDU2MTE2OCArMDIwMAorQEAgLTE3MSw2ICsxNzEsOSBAQCBpbnQgRVZQX0Rp Z2VzdFVwZGF0ZShFVlBfTURfQ1RYICpjdHgsIGNvCisgI2lmZGVmIE9QRU5TU0xfRklQUworICAg ICBGSVBTX3NlbGZ0ZXN0X2NoZWNrKCk7CisgI2VuZGlmCisrICAgIGlmIChjb3VudCA9PSAwKQor KyAgICAgICAgcmV0dXJuIDE7CisrCisgICAgIHJldHVybiBjdHgtPnVwZGF0ZShjdHgsIGRhdGEs IGNvdW50KTsKKyB9CisgCitkaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZXZwL2VfYXJp YS5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2V2cC9lX2FyaWEuYworLS0tIG9wZW5zc2wt MS4xLjFiL2NyeXB0by9ldnAvZV9hcmlhLmMuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAw MDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9ldnAvZV9hcmlhLmMJMjAxOS0w NS0wMyAwODo1NTo1MS41NDU0MDY3NzkgKzAyMDAKK0BAIC00ODYsNiArNDg2LDE2IEBAIHN0YXRp YyBpbnQgYXJpYV9nY21fY2lwaGVyKEVWUF9DSVBIRVJfQ1QKKyAgICAgcmV0dXJuIDA7CisgfQor IAorK3N0YXRpYyBpbnQgYXJpYV9nY21fY2xlYW51cChFVlBfQ0lQSEVSX0NUWCAqY3R4KQorK3sK KysgICAgRVZQX0FSSUFfR0NNX0NUWCAqZ2N0eCA9IEVWUF9DX0RBVEEoRVZQX0FSSUFfR0NNX0NU WCwgY3R4KTsKKysKKysgICAgaWYgKGdjdHgtPml2ICE9IEVWUF9DSVBIRVJfQ1RYX2l2X25vY29u c3QoY3R4KSkKKysgICAgICAgIE9QRU5TU0xfZnJlZShnY3R4LT5pdik7CisrCisrICAgIHJldHVy biAxOworK30KKysKKyBzdGF0aWMgaW50IGFyaWFfY2NtX2luaXRfa2V5KEVWUF9DSVBIRVJfQ1RY ICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaXYsIGludCBlbmMpCisgeworQEAgLTcyNyw2ICs3 MzcsOCBAQCBzdGF0aWMgaW50IGFyaWFfY2NtX2NpcGhlcihFVlBfQ0lQSEVSX0NUCisgICAgIH0K KyB9CisgCisrI2RlZmluZSBhcmlhX2NjbV9jbGVhbnVwICAgIE5VTEwKKysKKyAjZGVmaW5lIEFS SUFfQVVUSF9GTEFHUyAgKEVWUF9DSVBIX0ZMQUdfREVGQVVMVF9BU04xIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgRVZQX0NJUEhfQ1VTVE9NX0lWIHwgRVZQX0NJUEhfRkxBR19DVVNU T01fQ0lQSEVSIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRVZQX0NJUEhfQUxXQVlT X0NBTExfSU5JVCB8IEVWUF9DSVBIX0NUUkxfSU5JVCBcCitAQCAtNzM5LDcgKzc1MSw3IEBAIHN0 YXRpYyBjb25zdCBFVlBfQ0lQSEVSIGFyaWFfIyNrZXlsZW4jI18KKyAgICAgICAgIEFSSUFfQVVU SF9GTEFHU3xFVlBfQ0lQSF8jI01PREUjI19NT0RFLCAgICBcCisgICAgICAgICBhcmlhXyMjbW9k ZSMjX2luaXRfa2V5LCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgYXJpYV8jI21vZGUj I19jaXBoZXIsICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgIE5VTEwsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBhcmlhXyMjbW9kZSMjX2Ns ZWFudXAsICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgc2l6ZW9mKEVWUF9BUklBXyMj TU9ERSMjX0NUWCksICAgICAgICAgICAgIFwKKyAgICAgICAgIE5VTEwsTlVMTCxhcmlhXyMjbW9k ZSMjX2N0cmwsTlVMTCB9OyAgICAgICBcCisgY29uc3QgRVZQX0NJUEhFUiAqRVZQX2FyaWFfIyNr ZXlsZW4jI18jI21vZGUodm9pZCkgXAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2V2 cC9lX2NoYWNoYTIwX3BvbHkxMzA1LmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZXZwL2Vf Y2hhY2hhMjBfcG9seTEzMDUuYworLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9ldnAvZV9jaGFj aGEyMF9wb2x5MTMwNS5jLnN5bmMJMjAxOS0wNS0wMyAwODo1NTo0NS4yMTY1MTU0MzQgKzAyMDAK KysrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vZXZwL2VfY2hhY2hhMjBfcG9seTEzMDUuYwkyMDE5 LTA1LTAzIDA4OjU1OjUxLjU1MTQwNjY3NiArMDIwMAorQEAgLTMwLDYgKzMwLDggQEAgdHlwZWRl ZiBzdHJ1Y3QgeworIAorICNkZWZpbmUgZGF0YShjdHgpICAgKChFVlBfQ0hBQ0hBX0tFWSAqKShj dHgpLT5jaXBoZXJfZGF0YSkKKyAKKysjZGVmaW5lIENIQUNIQTIwX1BPTFkxMzA1X01BWF9JVkxF TiAgICAgMTIKKysKKyBzdGF0aWMgaW50IGNoYWNoYV9pbml0X2tleShFVlBfQ0lQSEVSX0NUWCAq Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgdXNl cl9rZXlbQ0hBQ0hBX0tFWV9TSVpFXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1bnNpZ25lZCBjaGFyIGl2W0NIQUNIQV9DVFJfU0laRV0sIGludCBlbmMpCitAQCAtNTMzLDcg KzUzNSw3IEBAIHN0YXRpYyBpbnQgY2hhY2hhMjBfcG9seTEzMDVfY3RybChFVlBfQ0kKKyAgICAg ICAgIHJldHVybiAxOworIAorICAgICBjYXNlIEVWUF9DVFJMX0FFQURfU0VUX0lWTEVOOgorLSAg ICAgICAgaWYgKGFyZyA8PSAwIHx8IGFyZyA+IENIQUNIQV9DVFJfU0laRSkKKysgICAgICAgIGlm IChhcmcgPD0gMCB8fCBhcmcgPiBDSEFDSEEyMF9QT0xZMTMwNV9NQVhfSVZMRU4pCisgICAgICAg ICAgICAgcmV0dXJuIDA7CisgICAgICAgICBhY3R4LT5ub25jZV9sZW4gPSBhcmc7CisgICAgICAg ICByZXR1cm4gMTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9ldnAvZXZwX2VuYy5j LnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2V2cC9ldnBfZW5jLmMKKy0tLSBvcGVuc3NsLTEu MS4xYi9jcnlwdG8vZXZwL2V2cF9lbmMuYy5zeW5jCTIwMTktMDUtMDMgMDg6NTU6NDUuMTc0NTE2 MTU1ICswMjAwCisrKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2V2cC9ldnBfZW5jLmMJMjAxOS0w NS0wMyAwODo1NTo1MS41NDQ0MDY3OTcgKzAyMDAKK0BAIC0zMzgsNiArMzM4LDExIEBAIHN0YXRp YyBpbnQgZXZwX0VuY3J5cHREZWNyeXB0VXBkYXRlKEVWUF8KKyAKKyAgICAgYmwgPSBjdHgtPmNp cGhlci0+YmxvY2tfc2l6ZTsKKyAKKysgICAgaWYgKGlubCA8PSAwKSB7CisrICAgICAgICAqb3V0 bCA9IDA7CisrICAgICAgICByZXR1cm4gaW5sID09IDA7CisrICAgIH0KKysKKyAgICAgaWYgKGN0 eC0+Y2lwaGVyLT5mbGFncyAmIEVWUF9DSVBIX0ZMQUdfQ1VTVE9NX0NJUEhFUikgeworICAgICAg ICAgLyogSWYgYmxvY2sgc2l6ZSA+IDEgdGhlbiB0aGUgY2lwaGVyIHdpbGwgaGF2ZSB0byBkbyB0 aGlzIGNoZWNrICovCisgICAgICAgICBpZiAoYmwgPT0gMSAmJiBpc19wYXJ0aWFsbHlfb3Zlcmxh cHBpbmcob3V0LCBpbiwgY21wbCkpIHsKK0BAIC0zNTMsMTAgKzM1OCw2IEBAIHN0YXRpYyBpbnQg ZXZwX0VuY3J5cHREZWNyeXB0VXBkYXRlKEVWUF8KKyAgICAgICAgIHJldHVybiAxOworICAgICB9 CisgCistICAgIGlmIChpbmwgPD0gMCkgeworLSAgICAgICAgKm91dGwgPSAwOworLSAgICAgICAg cmV0dXJuIGlubCA9PSAwOworLSAgICB9CisgICAgIGlmIChpc19wYXJ0aWFsbHlfb3ZlcmxhcHBp bmcob3V0ICsgY3R4LT5idWZfbGVuLCBpbiwgY21wbCkpIHsKKyAgICAgICAgIEVWUGVycihFVlBf Rl9FVlBfRU5DUllQVERFQ1JZUFRVUERBVEUsIEVWUF9SX1BBUlRJQUxMWV9PVkVSTEFQUElORyk7 CisgICAgICAgICByZXR1cm4gMDsKK0BAIC00OTAsNiArNDkxLDExIEBAIGludCBFVlBfRGVjcnlw dFVwZGF0ZShFVlBfQ0lQSEVSX0NUWCAqY3QKKyAgICAgaWYgKEVWUF9DSVBIRVJfQ1RYX3Rlc3Rf ZmxhZ3MoY3R4LCBFVlBfQ0lQSF9GTEFHX0xFTkdUSF9CSVRTKSkKKyAgICAgICAgIGNtcGwgPSAo Y21wbCArIDcpIC8gODsKKyAKKysgICAgaWYgKGlubCA8PSAwKSB7CisrICAgICAgICAqb3V0bCA9 IDA7CisrICAgICAgICByZXR1cm4gaW5sID09IDA7CisrICAgIH0KKysKKyAgICAgaWYgKGN0eC0+ Y2lwaGVyLT5mbGFncyAmIEVWUF9DSVBIX0ZMQUdfQ1VTVE9NX0NJUEhFUikgeworICAgICAgICAg aWYgKGIgPT0gMSAmJiBpc19wYXJ0aWFsbHlfb3ZlcmxhcHBpbmcob3V0LCBpbiwgY21wbCkpIHsK KyAgICAgICAgICAgICBFVlBlcnIoRVZQX0ZfRVZQX0RFQ1JZUFRVUERBVEUsIEVWUF9SX1BBUlRJ QUxMWV9PVkVSTEFQUElORyk7CitAQCAtNTA1LDExICs1MTEsNiBAQCBpbnQgRVZQX0RlY3J5cHRV cGRhdGUoRVZQX0NJUEhFUl9DVFggKmN0CisgICAgICAgICByZXR1cm4gMTsKKyAgICAgfQorIAor LSAgICBpZiAoaW5sIDw9IDApIHsKKy0gICAgICAgICpvdXRsID0gMDsKKy0gICAgICAgIHJldHVy biBpbmwgPT0gMDsKKy0gICAgfQorLQorICAgICBpZiAoY3R4LT5mbGFncyAmIEVWUF9DSVBIX05P X1BBRERJTkcpCisgICAgICAgICByZXR1cm4gZXZwX0VuY3J5cHREZWNyeXB0VXBkYXRlKGN0eCwg b3V0LCBvdXRsLCBpbiwgaW5sKTsKKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9o bWFjL2htYWMuYy5zeW5jIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9obWFjL2htYWMuYworLS0tIG9w ZW5zc2wtMS4xLjFiL2NyeXB0by9obWFjL2htYWMuYy5zeW5jCTIwMTktMDUtMDMgMDg6NTU6NDUu MTg5NTE1ODk4ICswMjAwCisrKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2htYWMvaG1hYy5jCTIw MTktMDUtMDMgMDg6NTU6NTEuNTM4NDA2OTAwICswMjAwCitAQCAtMzUsNiArMzUsMTMgQEAgaW50 IEhNQUNfSW5pdF9leChITUFDX0NUWCAqY3R4LCBjb25zdCB2bworICAgICAgICAgcmV0dXJuIDA7 CisgICAgIH0KKyAKKysgICAgLyoKKysgICAgICogVGhlIEhNQUMgY29uc3RydWN0aW9uIGlzIG5v dCBhbGxvd2VkICB0byBiZSB1c2VkIHdpdGggdGhlCisrICAgICAqIGV4dGVuZGFibGUtb3V0cHV0 IGZ1bmN0aW9ucyAoWE9GKSBzaGFrZTEyOCBhbmQgc2hha2UyNTYuCisrICAgICAqLworKyAgICBp ZiAoKEVWUF9NRF9tZXRoX2dldF9mbGFncyhtZCkgJiBFVlBfTURfRkxBR19YT0YpICE9IDApCisr ICAgICAgICByZXR1cm4gMDsKKysKKyAgICAgaWYgKGtleSAhPSBOVUxMKSB7CisgI2lmZGVmIE9Q RU5TU0xfRklQUworICAgICAgICAgaWYgKEZJUFNfbW9kZSgpICYmICEoRVZQX01EX2ZsYWdzKG1k KSAmIEVWUF9NRF9GTEFHX0ZJUFMpCitkaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vaW5p dC5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL2luaXQuYworLS0tIG9wZW5zc2wtMS4xLjFi L2NyeXB0by9pbml0LmMuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAor KysrIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9pbml0LmMJMjAxOS0wNS0wMyAwODo1NTo1MS41NTA0 MDY2OTQgKzAyMDAKK0BAIC03MDIsNyArNzAyLDcgQEAgaW50IE9QRU5TU0xfaW5pdF9jcnlwdG8o dWludDY0X3Qgb3B0cywgYworICAgICAgICAgcmV0ID0gUlVOX09OQ0UoJmNvbmZpZywgb3NzbF9p bml0X2NvbmZpZyk7CisgICAgICAgICBjb25mX3NldHRpbmdzID0gTlVMTDsKKyAgICAgICAgIENS WVBUT19USFJFQURfdW5sb2NrKGluaXRfbG9jayk7CistICAgICAgICBpZiAoIXJldCkKKysgICAg ICAgIGlmIChyZXQgPD0gMCkKKyAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgfQorIAorZGlm ZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL21vZGVzL2FzbS9naGFzaC14ODZfNjQucGwuc3lu YyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vbW9kZXMvYXNtL2doYXNoLXg4Nl82NC5wbAorLS0tIG9w ZW5zc2wtMS4xLjFiL2NyeXB0by9tb2Rlcy9hc20vZ2hhc2gteDg2XzY0LnBsLnN5bmMJMjAxOS0w Mi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8v bW9kZXMvYXNtL2doYXNoLXg4Nl82NC5wbAkyMDE5LTA1LTAzIDA4OjU1OjUxLjUzNDQwNjk2OSAr MDIwMAorQEAgLTExNTUsNiArMTE1NSw3IEBAIF9fXworIH0gZWxzZSB7CisgJGNvZGUuPTw8X19f OworIAlqbXAJLkxfaW5pdF9jbG11bAorKy5jZmlfZW5kcHJvYworIC5zaXplCWdjbV9pbml0X2F2 eCwuLWdjbV9pbml0X2F2eAorIF9fXworIH0KK0BAIC0xNTk0LDYgKzE1OTUsNyBAQCBfX18KKyB9 IGVsc2UgeworICRjb2RlLj08PF9fXzsKKyAJam1wCS5MX2doYXNoX2NsbXVsCisrLmNmaV9lbmRw cm9jCisgLnNpemUJZ2NtX2doYXNoX2F2eCwuLWdjbV9naGFzaF9hdngKKyBfX18KKyB9CitkaWZm IC11cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vbW9kZXMvY2NtMTI4LmMuc3luYyBvcGVuc3NsLTEu MS4xYi9jcnlwdG8vbW9kZXMvY2NtMTI4LmMKKy0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vbW9k ZXMvY2NtMTI4LmMuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAorKysr IG9wZW5zc2wtMS4xLjFiL2NyeXB0by9tb2Rlcy9jY20xMjguYwkyMDE5LTA1LTAzIDA4OjU1OjUx LjU0MzQwNjgxNCArMDIwMAorQEAgLTQyNSw3ICs0MjUsNyBAQCBzaXplX3QgQ1JZUFRPX2NjbTEy OF90YWcoQ0NNMTI4X0NPTlRFWFQKKyAKKyAgICAgTSAqPSAyOworICAgICBNICs9IDI7CistICAg IGlmIChsZW4gPCBNKQorKyAgICBpZiAobGVuICE9IE0pCisgICAgICAgICByZXR1cm4gMDsKKyAg ICAgbWVtY3B5KHRhZywgY3R4LT5jbWFjLmMsIE0pOworICAgICByZXR1cm4gTTsKK2RpZmYgLXVw IG9wZW5zc2wtMS4xLjFiL2NyeXB0by9vX3N0ci5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRv L29fc3RyLmMKKy0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vb19zdHIuYy5zeW5jCTIwMTktMDIt MjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL29f c3RyLmMJMjAxOS0wNS0wMyAwODo1NTo1MS41NTA0MDY2OTQgKzAyMDAKK0BAIC0yMjMsNyArMjIz LDI2IEBAIGludCBvcGVuc3NsX3N0cmVycm9yX3IoaW50IGVycm51bSwgY2hhcgorICNpZiBkZWZp bmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUj49MTQwMAorICAgICByZXR1cm4gIXN0cmVycm9yX3Mo YnVmLCBidWZsZW4sIGVycm51bSk7CisgI2VsaWYgZGVmaW5lZChfR05VX1NPVVJDRSkKKy0gICAg cmV0dXJuIHN0cmVycm9yX3IoZXJybnVtLCBidWYsIGJ1ZmxlbikgIT0gTlVMTDsKKysgICAgY2hh ciAqZXJyOworKworKyAgICAvKgorKyAgICAgKiBHTlUgc3RyZXJyb3JfciBtYXkgbm90IGFjdHVh bGx5IHNldCBidWYuCisrICAgICAqIEl0IGNhbiByZXR1cm4gYSBwb2ludGVyIHRvIHNvbWUgKGlt bXV0YWJsZSkgc3RhdGljIHN0cmluZyBpbiB3aGljaCBjYXNlCisrICAgICAqIGJ1ZiBpcyBsZWZ0 IHVudXNlZC4KKysgICAgICovCisrICAgIGVyciA9IHN0cmVycm9yX3IoZXJybnVtLCBidWYsIGJ1 Zmxlbik7CisrICAgIGlmIChlcnIgPT0gTlVMTCkKKysgICAgICAgIHJldHVybiAwOworKyAgICAv KgorKyAgICAgKiBJZiBlcnIgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQsIGVyciAhPSBidWYgYW5k IHdlIG5lZWQgdG8gY29weSB0aGUgZGF0YS4KKysgICAgICogSWYgZXJyIHBvaW50cyBzb21ld2hl cmUgaW5zaWRlIGJ1ZiwgT1BFTlNTTF9zdHJsY3B5IGNhbiBoYW5kbGUgdGhpcywKKysgICAgICog c2luY2Ugc3JjIGFuZCBkZXN0IGFyZSBub3QgYW5ub3RhdGVkIHdpdGggX19yZXN0cmljdCBhbmQg dGhlIGZ1bmN0aW9uCisrICAgICAqIHJlYWRzIHNyYyBieXRlIGZvciBieXRlIGFuZCB3cml0ZXMg dG8gZGVzdC4KKysgICAgICogSWYgZXJyID09IGJ1ZiB3ZSBkbyBub3QgaGF2ZSB0byBjb3B5IGFu eXRoaW5nLgorKyAgICAgKi8KKysgICAgaWYgKGVyciAhPSBidWYpCisrICAgICAgICBPUEVOU1NM X3N0cmxjcHkoYnVmLCBlcnIsIGJ1Zmxlbik7CisrICAgIHJldHVybiAxOworICNlbGlmIChkZWZp bmVkKF9QT1NJWF9DX1NPVVJDRSkgJiYgX1BPU0lYX0NfU09VUkNFID49IDIwMDExMkwpIHx8IFwK KyAgICAgICAoZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiBfWE9QRU5fU09VUkNFID49IDYwMCkK KyAgICAgLyoKK0BAIC0yMzQsNiArMjUzLDcgQEAgaW50IG9wZW5zc2xfc3RyZXJyb3JfcihpbnQg ZXJybnVtLCBjaGFyCisgICAgIHJldHVybiAhc3RyZXJyb3JfcihlcnJudW0sIGJ1ZiwgYnVmbGVu KTsKKyAjZWxzZQorICAgICBjaGFyICplcnI7CisrCisgICAgIC8qIEZhbGwgYmFjayB0byBub24t dGhyZWFkIHNhZmUgc3RyZXJyb3IoKS4uLml0cyBhbGwgd2UgY2FuIGRvICovCisgICAgIGlmIChi dWZsZW4gPCAyKQorICAgICAgICAgcmV0dXJuIDA7CitAQCAtMjQxLDggKzI2MSw3IEBAIGludCBv cGVuc3NsX3N0cmVycm9yX3IoaW50IGVycm51bSwgY2hhcgorICAgICAvKiBDYW4gdGhpcyBldmVy IGhhcHBlbj8gKi8KKyAgICAgaWYgKGVyciA9PSBOVUxMKQorICAgICAgICAgcmV0dXJuIDA7Cist ICAgIHN0cm5jcHkoYnVmLCBlcnIsIGJ1ZmxlbiAtIDEpOworLSAgICBidWZbYnVmbGVuIC0gMV0g PSAnXDAnOworKyAgICBPUEVOU1NMX3N0cmxjcHkoYnVmLCBlcnIsIGJ1Zmxlbik7CisgICAgIHJl dHVybiAxOworICNlbmRpZgorIH0KK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9wb2x5 MTMwNS9idWlsZC5pbmZvLnN5bmMgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3BvbHkxMzA1L2J1aWxk LmluZm8KKy0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vcG9seTEzMDUvYnVpbGQuaW5mby5zeW5j CTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWIv Y3J5cHRvL3BvbHkxMzA1L2J1aWxkLmluZm8JMjAxOS0wNS0wMyAwODo1NTo1MS41Mzg0MDY5MDAg KzAyMDAKK0BAIC0xNyw2ICsxNyw3IEBAIEdFTkVSQVRFW3BvbHkxMzA1LWFybXY4LlNdPWFzbS9w b2x5MTMwNS0KKyBJTkNMVURFW3BvbHkxMzA1LWFybXY4Lm9dPS4uCisgR0VORVJBVEVbcG9seTEz MDUtbWlwcy5TXT1hc20vcG9seTEzMDUtbWlwcy5wbCAkKFBFUkxBU01fU0NIRU1FKQorIElOQ0xV REVbcG9seTEzMDUtbWlwcy5vXT0uLgorK0dFTkVSQVRFW3BvbHkxMzA1LXMzOTB4LlNdPWFzbS9w b2x5MTMwNS1zMzkweC5wbCAkKFBFUkxBU01fU0NIRU1FKQorIAorIEJFR0lOUkFXW01ha2VmaWxl KHVuaXgpXQorIHstICRidWlsZGRpciAtfS9wb2x5MTMwNS0lLlM6CXstICRzb3VyY2VkaXIgLX0v YXNtL3BvbHkxMzA1LSUucGwKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9yYzQvYnVp bGQuaW5mby5zeW5jIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9yYzQvYnVpbGQuaW5mbworLS0tIG9w ZW5zc2wtMS4xLjFiL2NyeXB0by9yYzQvYnVpbGQuaW5mby5zeW5jCTIwMTktMDItMjYgMTU6MTU6 MzAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JjNC9idWlsZC5p bmZvCTIwMTktMDUtMDMgMDg6NTU6NTEuNTM4NDA2OTAwICswMjAwCitAQCAtMTEsNiArMTEsOCBA QCBHRU5FUkFURVtyYzQtbWQ1LXg4Nl82NC5zXT1hc20vcmM0LW1kNS14CisgCisgR0VORVJBVEVb cmM0LXBhcmlzYy5zXT1hc20vcmM0LXBhcmlzYy5wbCAkKFBFUkxBU01fU0NIRU1FKQorIAorK0dF TkVSQVRFW3JjNC1zMzkweC5zXT1hc20vcmM0LXMzOTB4LnBsICQoUEVSTEFTTV9TQ0hFTUUpCisr CisgQkVHSU5SQVdbTWFrZWZpbGVdCisgIyBHTlUgbWFrZSAiY2F0Y2ggYWxsIgorIHstICRidWls ZGRpciAtfS9yYzQtJS5zOgl7LSAkc291cmNlZGlyIC19L2FzbS9yYzQtJS5wbAorZGlmZiAtdXAg b3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9yc2FfYW1ldGguYy5zeW5jIG9wZW5zc2wtMS4xLjFi L2NyeXB0by9yc2EvcnNhX2FtZXRoLmMKKy0tLSBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vcnNhL3Jz YV9hbWV0aC5jLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBv cGVuc3NsLTEuMS4xYi9jcnlwdG8vcnNhL3JzYV9hbWV0aC5jCTIwMTktMDUtMDMgMDg6NTU6NTEu NTMzNDA2OTg2ICswMjAwCitAQCAtNTgzLDEwICs1ODMsMTIgQEAgc3RhdGljIFJTQV9QU1NfUEFS QU1TICpyc2FfY3R4X3RvX3BzcyhFVgorICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgIGlmIChz YWx0bGVuID09IC0xKSB7CisgICAgICAgICBzYWx0bGVuID0gRVZQX01EX3NpemUoc2lnbWQpOwor LSAgICB9IGVsc2UgaWYgKHNhbHRsZW4gPT0gLTIpIHsKKysgICAgfSBlbHNlIGlmIChzYWx0bGVu ID09IC0yIHx8IHNhbHRsZW4gPT0gLTMpIHsKKyAgICAgICAgIHNhbHRsZW4gPSBFVlBfUEtFWV9z aXplKHBrKSAtIEVWUF9NRF9zaXplKHNpZ21kKSAtIDI7CisgICAgICAgICBpZiAoKEVWUF9QS0VZ X2JpdHMocGspICYgMHg3KSA9PSAxKQorICAgICAgICAgICAgIHNhbHRsZW4tLTsKKysgICAgICAg IGlmIChzYWx0bGVuIDwgMCkKKysgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgfQorIAor ICAgICByZXR1cm4gcnNhX3Bzc19wYXJhbXNfY3JlYXRlKHNpZ21kLCBtZ2YxbWQsIHNhbHRsZW4p OworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9yc2FfZ2VuLmMuc3luYyBvcGVu c3NsLTEuMS4xYi9jcnlwdG8vcnNhL3JzYV9nZW4uYworLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0 by9yc2EvcnNhX2dlbi5jLnN5bmMJMjAxOS0wNS0wMyAwODo1NTo0NS4xOTE1MTU4NjQgKzAyMDAK KysrKyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vcnNhL3JzYV9nZW4uYwkyMDE5LTA1LTAzIDA4OjU1 OjUxLjUyODQwNzA3MSArMDIwMAorQEAgLTc0Niw4ICs3NDYsNyBAQCBzdGF0aWMgaW50IHJzYV9i dWlsdGluX2tleWdlbihSU0EgKnJzYSwKKyAgICAgICAgIFJTQWVycihSU0FfRl9SU0FfQlVJTFRJ Tl9LRVlHRU4sIEVSUl9MSUJfQk4pOworICAgICAgICAgb2sgPSAwOworICAgICB9CistICAgIGlm IChjdHggIT0gTlVMTCkKKy0gICAgICAgIEJOX0NUWF9lbmQoY3R4KTsKKysgICAgQk5fQ1RYX2Vu ZChjdHgpOworICAgICBCTl9DVFhfZnJlZShjdHgpOworICAgICByZXR1cm4gb2s7CisgfQorZGlm ZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9yc2Ffb2FlcC5jLnN5bmMgb3BlbnNzbC0x LjEuMWIvY3J5cHRvL3JzYS9yc2Ffb2FlcC5jCistLS0gb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3Jz YS9yc2Ffb2FlcC5jLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKKysr KyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vcnNhL3JzYV9vYWVwLmMJMjAxOS0wNS0wMyAwODo1NTo1 MS41NDk0MDY3MTEgKzAyMDAKK0BAIC0xLDUgKzEsNSBAQAorIC8qCistICogQ29weXJpZ2h0IDE5 OTktMjAxOCBUaGUgT3BlblNTTCBQcm9qZWN0IEF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu CisrICogQ29weXJpZ2h0IDE5OTktMjAxOSBUaGUgT3BlblNTTCBQcm9qZWN0IEF1dGhvcnMuIEFs bCBSaWdodHMgUmVzZXJ2ZWQuCisgICoKKyAgKiBMaWNlbnNlZCB1bmRlciB0aGUgT3BlblNTTCBs aWNlbnNlICh0aGUgIkxpY2Vuc2UiKS4gIFlvdSBtYXkgbm90IHVzZQorICAqIHRoaXMgZmlsZSBl eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IGNhbiBvYnRhaW4gYSBj b3B5CitAQCAtMTQzLDcgKzE0Myw3IEBAIGludCBSU0FfcGFkZGluZ19jaGVja19QS0NTMV9PQUVQ X21nZjEodW4KKyAgICAgICogfG51bXwgaXMgdGhlIGxlbmd0aCBvZiB0aGUgbW9kdWx1czsgfGZs ZW58IGlzIHRoZSBsZW5ndGggb2YgdGhlCisgICAgICAqIGVuY29kZWQgbWVzc2FnZS4gVGhlcmVm b3JlLCBmb3IgYW55IHxmcm9tfCB0aGF0IHdhcyBvYnRhaW5lZCBieQorICAgICAgKiBkZWNyeXB0 aW5nIGEgY2lwaGVydGV4dCwgd2UgbXVzdCBoYXZlIHxmbGVufCA8PSB8bnVtfC4gU2ltaWxhcmx5 LAorLSAgICAgKiBudW0gPCAyICogbWRsZW4gKyAyIG11c3QgaG9sZCBmb3IgdGhlIG1vZHVsdXMg aXJyZXNwZWN0aXZlIG9mCisrICAgICAqIHxudW18ID49IDIgKiB8bWRsZW58ICsgMiBtdXN0IGhv bGQgZm9yIHRoZSBtb2R1bHVzIGlycmVzcGVjdGl2ZSBvZgorICAgICAgKiB0aGUgY2lwaGVydGV4 dCwgc2VlIFBLQ1MgIzEgdjIuMiwgc2VjdGlvbiA3LjEuMi4KKyAgICAgICogVGhpcyBkb2VzIG5v dCBsZWFrIGFueSBzaWRlLWNoYW5uZWwgaW5mb3JtYXRpb24uCisgICAgICAqLworQEAgLTE3OSwx NyArMTc5LDE2IEBAIGludCBSU0FfcGFkZGluZ19jaGVja19QS0NTMV9PQUVQX21nZjEodW4KKyAg ICAgICAgIGZyb20gLT0gMSAmIG1hc2s7CisgICAgICAgICAqLS1lbSA9ICpmcm9tICYgbWFzazsK KyAgICAgfQorLSAgICBmcm9tID0gZW07CisgCisgICAgIC8qCisgICAgICAqIFRoZSBmaXJzdCBi eXRlIG11c3QgYmUgemVybywgaG93ZXZlciB3ZSBtdXN0IG5vdCBsZWFrIGlmIHRoaXMgaXMKKyAg ICAgICogdHJ1ZS4gU2VlIEphbWVzIEguIE1hbmdlciwgIkEgQ2hvc2VuIENpcGhlcnRleHQgIEF0 dGFjayBvbiBSU0EKKyAgICAgICogT3B0aW1hbCBBc3ltbWV0cmljIEVuY3J5cHRpb24gUGFkZGlu ZyAoT0FFUCkgWy4uLl0iLCBDUllQVE8gMjAwMSkuCisgICAgICAqLworLSAgICBnb29kID0gY29u c3RhbnRfdGltZV9pc196ZXJvKGZyb21bMF0pOworKyAgICBnb29kID0gY29uc3RhbnRfdGltZV9p c196ZXJvKGVtWzBdKTsKKyAKKy0gICAgbWFza2Vkc2VlZCA9IGZyb20gKyAxOworLSAgICBtYXNr ZWRkYiA9IGZyb20gKyAxICsgbWRsZW47CisrICAgIG1hc2tlZHNlZWQgPSBlbSArIDE7CisrICAg IG1hc2tlZGRiID0gZW0gKyAxICsgbWRsZW47CisgCisgICAgIGlmIChQS0NTMV9NR0YxKHNlZWQs IG1kbGVuLCBtYXNrZWRkYiwgZGJsZW4sIG1nZjFtZCkpCisgICAgICAgICBnb3RvIGNsZWFudXA7 CitAQCAtMjMwLDI5ICsyMjksMzAgQEAgaW50IFJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX09BRVBf bWdmMSh1bgorICAgICBtbGVuID0gZGJsZW4gLSBtc2dfaW5kZXg7CisgCisgICAgIC8qCistICAg ICAqIEZvciBnb29kIG1lYXN1cmUsIGRvIHRoaXMgY2hlY2sgaW4gY29uc3RhbnQgdGluZSBhcyB3 ZWxsLgorKyAgICAgKiBGb3IgZ29vZCBtZWFzdXJlLCBkbyB0aGlzIGNoZWNrIGluIGNvbnN0YW50 IHRpbWUgYXMgd2VsbC4KKyAgICAgICovCisgICAgIGdvb2QgJj0gY29uc3RhbnRfdGltZV9nZSh0 bGVuLCBtbGVuKTsKKyAKKyAgICAgLyoKKy0gICAgICogRXZlbiB0aG91Z2ggd2UgY2FuJ3QgZmFr ZSByZXN1bHQncyBsZW5ndGgsIHdlIGNhbiBwcmV0ZW5kIGNvcHlpbmcKKy0gICAgICogfHRsZW58 IGJ5dGVzIHdoZXJlIHxtbGVufCBieXRlcyB3b3VsZCBiZSByZWFsLiBMYXN0IHx0bGVufCBvZiB8 ZGJsZW58CistICAgICAqIGJ5dGVzIGFyZSB2aWV3ZWQgYXMgY2lyY3VsYXIgYnVmZmVyIHdpdGgg c3RhcnQgYXQgfHRsZW58LXxtbGVuJ3wsCistICAgICAqIHdoZXJlIHxtbGVuJ3wgaXMgInNhdHVy YXRlZCIgfG1sZW58IHZhbHVlLiBEZWR1Y2luZyBpbmZvcm1hdGlvbgorLSAgICAgKiBhYm91dCBm YWlsdXJlIG9yIHxtbGVufCB3b3VsZCB0YWtlIGF0dGFja2VyJ3MgYWJpbGl0eSB0byBvYnNlcnZl CistICAgICAqIG1lbW9yeSBhY2Nlc3MgcGF0dGVybiB3aXRoIGJ5dGUgZ3JhbnVsYXJpdHkgKmFz IGl0IG9jY3VycyouIEl0CistICAgICAqIHNob3VsZCBiZSBub3RlZCB0aGF0IGZhaWx1cmUgaXMg aW5kaXN0aW5ndWlzaGFibGUgZnJvbSBub3JtYWwKKy0gICAgICogb3BlcmF0aW9uIGlmIHx0bGVu fCBpcyBmaXhlZCBieSBwcm90b2NvbC4KKysgICAgICogTW92ZSB0aGUgcmVzdWx0IGluLXBsYWNl IGJ5IHxkYmxlbnwtfG1kbGVufC0xLXxtbGVufCBieXRlcyB0byB0aGUgbGVmdC4KKysgICAgICog VGhlbiBpZiB8Z29vZHwgbW92ZSB8bWxlbnwgYnl0ZXMgZnJvbSB8ZGJ8K3xtZGxlbnwrMSB0byB8 dG98LgorKyAgICAgKiBPdGhlcndpc2UgbGVhdmUgfHRvfCB1bmNoYW5nZWQuCisrICAgICAqIENv cHkgdGhlIG1lbW9yeSBiYWNrIGluIGEgd2F5IHRoYXQgZG9lcyBub3QgcmV2ZWFsIHRoZSBzaXpl IG9mCisrICAgICAqIHRoZSBkYXRhIGJlaW5nIGNvcGllZCB2aWEgYSB0aW1pbmcgc2lkZSBjaGFu bmVsLiBUaGlzIHJlcXVpcmVzIGNvcHlpbmcKKysgICAgICogcGFydHMgb2YgdGhlIGJ1ZmZlciBt dWx0aXBsZSB0aW1lcyBiYXNlZCBvbiB0aGUgYml0cyBzZXQgaW4gdGhlIHJlYWwKKysgICAgICog bGVuZ3RoLiBDbGVhciBiaXRzIGRvIGEgbm9uLWNvcHkgd2l0aCBpZGVudGljYWwgYWNjZXNzIHBh dHRlcm4uCisrICAgICAqIFRoZSBsb29wIGJlbG93IGhhcyBvdmVyYWxsIGNvbXBsZXhpdHkgb2Yg TyhOKmxvZyhOKSkuCisgICAgICAqLworLSAgICB0bGVuID0gY29uc3RhbnRfdGltZV9zZWxlY3Rf aW50KGNvbnN0YW50X3RpbWVfbHQoZGJsZW4sIHRsZW4pLCBkYmxlbiwgdGxlbik7CistICAgIG1z Z19pbmRleCA9IGNvbnN0YW50X3RpbWVfc2VsZWN0X2ludChnb29kLCBtc2dfaW5kZXgsIGRibGVu IC0gdGxlbik7CistICAgIG1sZW4gPSBkYmxlbiAtIG1zZ19pbmRleDsKKy0gICAgZm9yIChmcm9t ID0gZGIgKyBtc2dfaW5kZXgsIG1hc2sgPSBnb29kLCBpID0gMDsgaSA8IHRsZW47IGkrKykgewor LSAgICAgICAgdW5zaWduZWQgaW50IGVxdWFscyA9IGNvbnN0YW50X3RpbWVfZXEoaSwgbWxlbik7 CistCistICAgICAgICBmcm9tIC09IGRibGVuICYgZXF1YWxzOyAvKiBpZiAoaSA9PSBkYmxlbikg cmV3aW5kICAgKi8KKy0gICAgICAgIG1hc2sgJj0gbWFzayBeIGVxdWFsczsgIC8qIGlmIChpID09 IGRibGVuKSBtYXNrID0gMCAqLworLSAgICAgICAgdG9baV0gPSBjb25zdGFudF90aW1lX3NlbGVj dF84KG1hc2ssIGZyb21baV0sIHRvW2ldKTsKKysgICAgdGxlbiA9IGNvbnN0YW50X3RpbWVfc2Vs ZWN0X2ludChjb25zdGFudF90aW1lX2x0KGRibGVuIC0gbWRsZW4gLSAxLCB0bGVuKSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYmxlbiAtIG1kbGVuIC0gMSwgdGxlbik7 CisrICAgIGZvciAobXNnX2luZGV4ID0gMTsgbXNnX2luZGV4IDwgZGJsZW4gLSBtZGxlbiAtIDE7 IG1zZ19pbmRleCA8PD0gMSkgeworKyAgICAgICAgbWFzayA9IH5jb25zdGFudF90aW1lX2VxKG1z Z19pbmRleCAmIChkYmxlbiAtIG1kbGVuIC0gMSAtIG1sZW4pLCAwKTsKKysgICAgICAgIGZvciAo aSA9IG1kbGVuICsgMTsgaSA8IGRibGVuIC0gbXNnX2luZGV4OyBpKyspCisrICAgICAgICAgICAg ZGJbaV0gPSBjb25zdGFudF90aW1lX3NlbGVjdF84KG1hc2ssIGRiW2kgKyBtc2dfaW5kZXhdLCBk YltpXSk7CisrICAgIH0KKysgICAgZm9yIChpID0gMDsgaSA8IHRsZW47IGkrKykgeworKyAgICAg ICAgbWFzayA9IGdvb2QgJiBjb25zdGFudF90aW1lX2x0KGksIG1sZW4pOworKyAgICAgICAgdG9b aV0gPSBjb25zdGFudF90aW1lX3NlbGVjdF84KG1hc2ssIGRiW2kgKyBtZGxlbiArIDFdLCB0b1tp XSk7CisgICAgIH0KKyAKKyAgICAgLyoKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9y c2EvcnNhX29zc2wuYy5zeW5jIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9yc2EvcnNhX29zc2wuYwor LS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9yc2EvcnNhX29zc2wuYy5zeW5jCTIwMTktMDUtMDMg MDg6NTU6NDUuMTkxNTE1ODY0ICswMjAwCisrKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9y c2Ffb3NzbC5jCTIwMTktMDUtMDMgMDg6NTU6NTEuNTQ4NDA2NzI4ICswMjAwCitAQCAtMTc0LDgg KzE3NCw3IEBAIHN0YXRpYyBpbnQgcnNhX29zc2xfcHVibGljX2VuY3J5cHQoaW50IGYKKyAgICAg ICovCisgICAgIHIgPSBCTl9ibjJiaW5wYWQocmV0LCB0bywgbnVtKTsKKyAgZXJyOgorLSAgICBp ZiAoY3R4ICE9IE5VTEwpCistICAgICAgICBCTl9DVFhfZW5kKGN0eCk7CisrICAgIEJOX0NUWF9l bmQoY3R4KTsKKyAgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKKyAgICAgT1BFTlNTTF9jbGVhcl9mcmVl KGJ1ZiwgbnVtKTsKKyAgICAgcmV0dXJuIHI7CitAQCAtMzk2LDggKzM5NSw3IEBAIHN0YXRpYyBp bnQgcnNhX29zc2xfcHJpdmF0ZV9lbmNyeXB0KGludAorICAgICAgKi8KKyAgICAgciA9IEJOX2Ju MmJpbnBhZChyZXMsIHRvLCBudW0pOworICBlcnI6CistICAgIGlmIChjdHggIT0gTlVMTCkKKy0g ICAgICAgIEJOX0NUWF9lbmQoY3R4KTsKKysgICAgQk5fQ1RYX2VuZChjdHgpOworICAgICBCTl9D VFhfZnJlZShjdHgpOworICAgICBPUEVOU1NMX2NsZWFyX2ZyZWUoYnVmLCBudW0pOworICAgICBy ZXR1cm4gcjsKK0BAIC01MzksMTEgKzUzNywxMCBAQCBzdGF0aWMgaW50IHJzYV9vc3NsX3ByaXZh dGVfZGVjcnlwdChpbnQKKyAgICAgICAgIGdvdG8gZXJyOworICAgICB9CisgICAgIFJTQWVycihS U0FfRl9SU0FfT1NTTF9QUklWQVRFX0RFQ1JZUFQsIFJTQV9SX1BBRERJTkdfQ0hFQ0tfRkFJTEVE KTsKKy0gICAgZXJyX2NsZWFyX2xhc3RfY29uc3RhbnRfdGltZShyID49IDApOworKyAgICBlcnJf Y2xlYXJfbGFzdF9jb25zdGFudF90aW1lKDEgJiB+Y29uc3RhbnRfdGltZV9tc2IocikpOworIAor ICBlcnI6CistICAgIGlmIChjdHggIT0gTlVMTCkKKy0gICAgICAgIEJOX0NUWF9lbmQoY3R4KTsK KysgICAgQk5fQ1RYX2VuZChjdHgpOworICAgICBCTl9DVFhfZnJlZShjdHgpOworICAgICBPUEVO U1NMX2NsZWFyX2ZyZWUoYnVmLCBudW0pOworICAgICByZXR1cm4gcjsKK0BAIC02NTUsOCArNjUy LDcgQEAgc3RhdGljIGludCByc2Ffb3NzbF9wdWJsaWNfZGVjcnlwdChpbnQgZgorICAgICAgICAg UlNBZXJyKFJTQV9GX1JTQV9PU1NMX1BVQkxJQ19ERUNSWVBULCBSU0FfUl9QQURESU5HX0NIRUNL X0ZBSUxFRCk7CisgCisgIGVycjoKKy0gICAgaWYgKGN0eCAhPSBOVUxMKQorLSAgICAgICAgQk5f Q1RYX2VuZChjdHgpOworKyAgICBCTl9DVFhfZW5kKGN0eCk7CisgICAgIEJOX0NUWF9mcmVlKGN0 eCk7CisgICAgIE9QRU5TU0xfY2xlYXJfZnJlZShidWYsIG51bSk7CisgICAgIHJldHVybiByOwor ZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9yc2FfcGsxLmMuc3luYyBvcGVuc3Ns LTEuMS4xYi9jcnlwdG8vcnNhL3JzYV9wazEuYworLS0tIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9y c2EvcnNhX3BrMS5jLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKKysr KyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vcnNhL3JzYV9wazEuYwkyMDE5LTA1LTAzIDA4OjU1OjUx LjU0OTQwNjcxMSArMDIwMAorQEAgLTEsNSArMSw1IEBACisgLyoKKy0gKiBDb3B5cmlnaHQgMTk5 NS0yMDE4IFRoZSBPcGVuU1NMIFByb2plY3QgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K KysgKiBDb3B5cmlnaHQgMTk5NS0yMDE5IFRoZSBPcGVuU1NMIFByb2plY3QgQXV0aG9ycy4gQWxs IFJpZ2h0cyBSZXNlcnZlZC4KKyAgKgorICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBPcGVuU1NMIGxp Y2Vuc2UgKHRoZSAiTGljZW5zZSIpLiAgWW91IG1heSBub3QgdXNlCisgICogdGhpcyBmaWxlIGV4 Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgY2FuIG9idGFpbiBhIGNv cHkKK0BAIC0xOTIsMTUgKzE5MiwxNCBAQCBpbnQgUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlw ZV8yKHVuc2lnCisgICAgICAgICBmcm9tIC09IDEgJiBtYXNrOworICAgICAgICAgKi0tZW0gPSAq ZnJvbSAmIG1hc2s7CisgICAgIH0KKy0gICAgZnJvbSA9IGVtOworIAorLSAgICBnb29kID0gY29u c3RhbnRfdGltZV9pc196ZXJvKGZyb21bMF0pOworLSAgICBnb29kICY9IGNvbnN0YW50X3RpbWVf ZXEoZnJvbVsxXSwgMik7CisrICAgIGdvb2QgPSBjb25zdGFudF90aW1lX2lzX3plcm8oZW1bMF0p OworKyAgICBnb29kICY9IGNvbnN0YW50X3RpbWVfZXEoZW1bMV0sIDIpOworIAorICAgICAvKiBz Y2FuIG92ZXIgcGFkZGluZyBkYXRhICovCisgICAgIGZvdW5kX3plcm9fYnl0ZSA9IDA7CisgICAg IGZvciAoaSA9IDI7IGkgPCBudW07IGkrKykgeworLSAgICAgICAgdW5zaWduZWQgaW50IGVxdWFs czAgPSBjb25zdGFudF90aW1lX2lzX3plcm8oZnJvbVtpXSk7CisrICAgICAgICB1bnNpZ25lZCBp bnQgZXF1YWxzMCA9IGNvbnN0YW50X3RpbWVfaXNfemVybyhlbVtpXSk7CisgCisgICAgICAgICB6 ZXJvX2luZGV4ID0gY29uc3RhbnRfdGltZV9zZWxlY3RfaW50KH5mb3VuZF96ZXJvX2J5dGUgJiBl cXVhbHMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp LCB6ZXJvX2luZGV4KTsKK0BAIC0yMDgsNyArMjA3LDcgQEAgaW50IFJTQV9wYWRkaW5nX2NoZWNr X1BLQ1MxX3R5cGVfMih1bnNpZworICAgICB9CisgCisgICAgIC8qCistICAgICAqIFBTIG11c3Qg YmUgYXQgbGVhc3QgOCBieXRlcyBsb25nLCBhbmQgaXQgc3RhcnRzIHR3byBieXRlcyBpbnRvIHxm cm9tfC4KKysgICAgICogUFMgbXVzdCBiZSBhdCBsZWFzdCA4IGJ5dGVzIGxvbmcsIGFuZCBpdCBz dGFydHMgdHdvIGJ5dGVzIGludG8gfGVtfC4KKyAgICAgICogSWYgd2UgbmV2ZXIgZm91bmQgYSAw LWJ5dGUsIHRoZW4gfHplcm9faW5kZXh8IGlzIDAgYW5kIHRoZSBjaGVjaworICAgICAgKiBhbHNv IGZhaWxzLgorICAgICAgKi8KK0BAIC0yMjcsMjQgKzIyNiwyNSBAQCBpbnQgUlNBX3BhZGRpbmdf Y2hlY2tfUEtDUzFfdHlwZV8yKHVuc2lnCisgICAgIGdvb2QgJj0gY29uc3RhbnRfdGltZV9nZSh0 bGVuLCBtbGVuKTsKKyAKKyAgICAgLyoKKy0gICAgICogRXZlbiB0aG91Z2ggd2UgY2FuJ3QgZmFr ZSByZXN1bHQncyBsZW5ndGgsIHdlIGNhbiBwcmV0ZW5kIGNvcHlpbmcKKy0gICAgICogfHRsZW58 IGJ5dGVzIHdoZXJlIHxtbGVufCBieXRlcyB3b3VsZCBiZSByZWFsLiBMYXN0IHx0bGVufCBvZiB8 bnVtfAorLSAgICAgKiBieXRlcyBhcmUgdmlld2VkIGFzIGNpcmN1bGFyIGJ1ZmZlciB3aXRoIHN0 YXJ0IGF0IHx0bGVufC18bWxlbid8LAorLSAgICAgKiB3aGVyZSB8bWxlbid8IGlzICJzYXR1cmF0 ZWQiIHxtbGVufCB2YWx1ZS4gRGVkdWNpbmcgaW5mb3JtYXRpb24KKy0gICAgICogYWJvdXQgZmFp bHVyZSBvciB8bWxlbnwgd291bGQgdGFrZSBhdHRhY2tlcidzIGFiaWxpdHkgdG8gb2JzZXJ2ZQor LSAgICAgKiBtZW1vcnkgYWNjZXNzIHBhdHRlcm4gd2l0aCBieXRlIGdyYW51bGFyaXR5ICphcyBp dCBvY2N1cnMqLiBJdAorLSAgICAgKiBzaG91bGQgYmUgbm90ZWQgdGhhdCBmYWlsdXJlIGlzIGlu ZGlzdGluZ3Vpc2hhYmxlIGZyb20gbm9ybWFsCistICAgICAqIG9wZXJhdGlvbiBpZiB8dGxlbnwg aXMgZml4ZWQgYnkgcHJvdG9jb2wuCistICAgICAqLworLSAgICB0bGVuID0gY29uc3RhbnRfdGlt ZV9zZWxlY3RfaW50KGNvbnN0YW50X3RpbWVfbHQobnVtLCB0bGVuKSwgbnVtLCB0bGVuKTsKKy0g ICAgbXNnX2luZGV4ID0gY29uc3RhbnRfdGltZV9zZWxlY3RfaW50KGdvb2QsIG1zZ19pbmRleCwg bnVtIC0gdGxlbik7CistICAgIG1sZW4gPSBudW0gLSBtc2dfaW5kZXg7CistICAgIGZvciAoZnJv bSArPSBtc2dfaW5kZXgsIG1hc2sgPSBnb29kLCBpID0gMDsgaSA8IHRsZW47IGkrKykgeworLSAg ICAgICAgdW5zaWduZWQgaW50IGVxdWFscyA9IGNvbnN0YW50X3RpbWVfZXEoaSwgbWxlbik7Cist CistICAgICAgICBmcm9tIC09IHRsZW4gJiBlcXVhbHM7ICAvKiBpZiAoaSA9PSBtbGVuKSByZXdp bmQgICAqLworLSAgICAgICAgbWFzayAmPSBtYXNrIF4gZXF1YWxzOyAgLyogaWYgKGkgPT0gbWxl bikgbWFzayA9IDAgKi8KKy0gICAgICAgIHRvW2ldID0gY29uc3RhbnRfdGltZV9zZWxlY3RfOCht YXNrLCBmcm9tW2ldLCB0b1tpXSk7CisrICAgICAqIE1vdmUgdGhlIHJlc3VsdCBpbi1wbGFjZSBi eSB8bnVtfC0xMS18bWxlbnwgYnl0ZXMgdG8gdGhlIGxlZnQuCisrICAgICAqIFRoZW4gaWYgfGdv b2R8IG1vdmUgfG1sZW58IGJ5dGVzIGZyb20gfGVtfCsxMSB0byB8dG98LgorKyAgICAgKiBPdGhl cndpc2UgbGVhdmUgfHRvfCB1bmNoYW5nZWQuCisrICAgICAqIENvcHkgdGhlIG1lbW9yeSBiYWNr IGluIGEgd2F5IHRoYXQgZG9lcyBub3QgcmV2ZWFsIHRoZSBzaXplIG9mCisrICAgICAqIHRoZSBk YXRhIGJlaW5nIGNvcGllZCB2aWEgYSB0aW1pbmcgc2lkZSBjaGFubmVsLiBUaGlzIHJlcXVpcmVz IGNvcHlpbmcKKysgICAgICogcGFydHMgb2YgdGhlIGJ1ZmZlciBtdWx0aXBsZSB0aW1lcyBiYXNl ZCBvbiB0aGUgYml0cyBzZXQgaW4gdGhlIHJlYWwKKysgICAgICogbGVuZ3RoLiBDbGVhciBiaXRz IGRvIGEgbm9uLWNvcHkgd2l0aCBpZGVudGljYWwgYWNjZXNzIHBhdHRlcm4uCisrICAgICAqIFRo ZSBsb29wIGJlbG93IGhhcyBvdmVyYWxsIGNvbXBsZXhpdHkgb2YgTyhOKmxvZyhOKSkuCisrICAg ICAqLworKyAgICB0bGVuID0gY29uc3RhbnRfdGltZV9zZWxlY3RfaW50KGNvbnN0YW50X3RpbWVf bHQobnVtIC0gMTEsIHRsZW4pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG51bSAtIDExLCB0bGVuKTsKKysgICAgZm9yIChtc2dfaW5kZXggPSAxOyBtc2dfaW5kZXggPCBu dW0gLSAxMTsgbXNnX2luZGV4IDw8PSAxKSB7CisrICAgICAgICBtYXNrID0gfmNvbnN0YW50X3Rp bWVfZXEobXNnX2luZGV4ICYgKG51bSAtIDExIC0gbWxlbiksIDApOworKyAgICAgICAgZm9yIChp ID0gMTE7IGkgPCBudW0gLSBtc2dfaW5kZXg7IGkrKykKKysgICAgICAgICAgICBlbVtpXSA9IGNv bnN0YW50X3RpbWVfc2VsZWN0XzgobWFzaywgZW1baSArIG1zZ19pbmRleF0sIGVtW2ldKTsKKysg ICAgfQorKyAgICBmb3IgKGkgPSAwOyBpIDwgdGxlbjsgaSsrKSB7CisrICAgICAgICBtYXNrID0g Z29vZCAmIGNvbnN0YW50X3RpbWVfbHQoaSwgbWxlbik7CisrICAgICAgICB0b1tpXSA9IGNvbnN0 YW50X3RpbWVfc2VsZWN0XzgobWFzaywgZW1baSArIDExXSwgdG9baV0pOworICAgICB9CisgCisg ICAgIE9QRU5TU0xfY2xlYXJfZnJlZShlbSwgbnVtKTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFi L2NyeXB0by9yc2EvcnNhX3BtZXRoLmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vcnNhL3Jz YV9wbWV0aC5jCistLS0gb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9yc2FfcG1ldGguYy5zeW5j CTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWIv Y3J5cHRvL3JzYS9yc2FfcG1ldGguYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjU0MzQwNjgxNCArMDIw MAorQEAgLTEsNSArMSw1IEBACisgLyoKKy0gKiBDb3B5cmlnaHQgMjAwNi0yMDE4IFRoZSBPcGVu U1NMIFByb2plY3QgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKysgKiBDb3B5cmlnaHQg MjAwNi0yMDE5IFRoZSBPcGVuU1NMIFByb2plY3QgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KKyAgKgorICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBPcGVuU1NMIGxpY2Vuc2UgKHRoZSAiTGlj ZW5zZSIpLiAgWW91IG1heSBub3QgdXNlCisgICogdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh bmNlIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgY2FuIG9idGFpbiBhIGNvcHkKK0BAIC03LDYgKzcs OCBAQAorICAqIGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAg Ki8KKyAKKysjaW5jbHVkZSAiaW50ZXJuYWwvY29uc3RhbnRfdGltZV9sb2NsLmgiCisrCisgI2lu Y2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgImludGVybmFsL2NyeXB0bGliLmgiCisgI2luY2x1 ZGUgPG9wZW5zc2wvYXNuMXQuaD4KK0BAIC0zNDAsMTAgKzM0Miw5IEBAIHN0YXRpYyBpbnQgcGtl eV9yc2FfZGVjcnlwdChFVlBfUEtFWV9DVFgKKyAgICAgICAgIHJldCA9IFJTQV9wcml2YXRlX2Rl Y3J5cHQoaW5sZW4sIGluLCBvdXQsIGN0eC0+cGtleS0+cGtleS5yc2EsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJjdHgtPnBhZF9tb2RlKTsKKyAgICAgfQorLSAgICBpZiAo cmV0IDwgMCkKKy0gICAgICAgIHJldHVybiByZXQ7CistICAgICpvdXRsZW4gPSByZXQ7CistICAg IHJldHVybiAxOworKyAgICAqb3V0bGVuID0gY29uc3RhbnRfdGltZV9zZWxlY3Rfcyhjb25zdGFu dF90aW1lX21zYl9zKHJldCksICpvdXRsZW4sIHJldCk7CisrICAgIHJldCA9IGNvbnN0YW50X3Rp bWVfc2VsZWN0X2ludChjb25zdGFudF90aW1lX21zYihyZXQpLCByZXQsIDEpOworKyAgICByZXR1 cm4gcmV0OworIH0KKyAKKyBzdGF0aWMgaW50IGNoZWNrX3BhZGRpbmdfbWQoY29uc3QgRVZQX01E ICptZCwgaW50IHBhZGRpbmcpCitkaWZmIC11cCBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vcnNhL3Jz YV9zc2wuYy5zeW5jIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9yc2EvcnNhX3NzbC5jCistLS0gb3Bl bnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9yc2Ffc3NsLmMuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMw LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9yc2EvcnNhX3NzbC5j CTIwMTktMDUtMDMgMDg6NTU6NTEuNTUwNDA2Njk0ICswMjAwCitAQCAtMSw1ICsxLDUgQEAKKyAv KgorLSAqIENvcHlyaWdodCAxOTk1LTIwMTggVGhlIE9wZW5TU0wgUHJvamVjdCBBdXRob3JzLiBB bGwgUmlnaHRzIFJlc2VydmVkLgorKyAqIENvcHlyaWdodCAxOTk1LTIwMTkgVGhlIE9wZW5TU0wg UHJvamVjdCBBdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICAqCisgICogTGljZW5zZWQg dW5kZXIgdGhlIE9wZW5TU0wgbGljZW5zZSAodGhlICJMaWNlbnNlIikuICBZb3UgbWF5IG5vdCB1 c2UKKyAgKiB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4g IFlvdSBjYW4gb2J0YWluIGEgY29weQorQEAgLTU1LDcgKzU1LDcgQEAgaW50IFJTQV9wYWRkaW5n X2FkZF9TU0x2MjModW5zaWduZWQgY2hhcgorIAorIC8qCisgICogQ29weSBvZiBSU0FfcGFkZGlu Z19jaGVja19QS0NTMV90eXBlXzIgd2l0aCBhIHR3aXN0IHRoYXQgcmVqZWN0cyBwYWRkaW5nCist ICogaWYgbnVsIGRlbGltaXRlciBpcyBwcmVjZWRlZCBieSA4IGNvbnNlY3V0aXZlIDB4MDMgYnl0 ZXMuIEl0IGFsc28KKysgKiBpZiBudWwgZGVsaW1pdGVyIGlzIG5vdCBwcmVjZWRlZCBieSA4IGNv bnNlY3V0aXZlIDB4MDMgYnl0ZXMuIEl0IGFsc28KKyAgKiBwcmVzZXJ2ZXMgZXJyb3IgY29kZSBy ZXBvcnRpbmcgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisgICovCisgaW50IFJTQV9wYWRk aW5nX2NoZWNrX1NTTHYyMyh1bnNpZ25lZCBjaGFyICp0bywgaW50IHRsZW4sCitAQCAtNjcsNyAr NjcsMTAgQEAgaW50IFJTQV9wYWRkaW5nX2NoZWNrX1NTTHYyMyh1bnNpZ25lZCBjaAorICAgICB1 bnNpZ25lZCBpbnQgZ29vZCwgZm91bmRfemVyb19ieXRlLCBtYXNrLCB0aHJlZXNfaW5fcm93Owor ICAgICBpbnQgemVyb19pbmRleCA9IDAsIG1zZ19pbmRleCwgbWxlbiA9IC0xLCBlcnI7CisgCist ICAgIGlmIChmbGVuIDwgMTApIHsKKysgICAgaWYgKHRsZW4gPD0gMCB8fCBmbGVuIDw9IDApCisr ICAgICAgICByZXR1cm4gLTE7CisrCisrICAgIGlmIChmbGVuID4gbnVtIHx8IG51bSA8IDExKSB7 CisgICAgICAgICBSU0FlcnIoUlNBX0ZfUlNBX1BBRERJTkdfQ0hFQ0tfU1NMVjIzLCBSU0FfUl9E QVRBX1RPT19TTUFMTCk7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgIH0KK0BAIC04OSwxMCAr OTIsOSBAQCBpbnQgUlNBX3BhZGRpbmdfY2hlY2tfU1NMdjIzKHVuc2lnbmVkIGNoCisgICAgICAg ICBmcm9tIC09IDEgJiBtYXNrOworICAgICAgICAgKi0tZW0gPSAqZnJvbSAmIG1hc2s7CisgICAg IH0KKy0gICAgZnJvbSA9IGVtOworIAorLSAgICBnb29kID0gY29uc3RhbnRfdGltZV9pc196ZXJv KGZyb21bMF0pOworLSAgICBnb29kICY9IGNvbnN0YW50X3RpbWVfZXEoZnJvbVsxXSwgMik7Cisr ICAgIGdvb2QgPSBjb25zdGFudF90aW1lX2lzX3plcm8oZW1bMF0pOworKyAgICBnb29kICY9IGNv bnN0YW50X3RpbWVfZXEoZW1bMV0sIDIpOworICAgICBlcnIgPSBjb25zdGFudF90aW1lX3NlbGVj dF9pbnQoZ29vZCwgMCwgUlNBX1JfQkxPQ0tfVFlQRV9JU19OT1RfMDIpOworICAgICBtYXNrID0g fmdvb2Q7CisgCitAQCAtMTAwLDE4ICsxMDIsMTggQEAgaW50IFJTQV9wYWRkaW5nX2NoZWNrX1NT THYyMyh1bnNpZ25lZCBjaAorICAgICBmb3VuZF96ZXJvX2J5dGUgPSAwOworICAgICB0aHJlZXNf aW5fcm93ID0gMDsKKyAgICAgZm9yIChpID0gMjsgaSA8IG51bTsgaSsrKSB7CistICAgICAgICB1 bnNpZ25lZCBpbnQgZXF1YWxzMCA9IGNvbnN0YW50X3RpbWVfaXNfemVybyhmcm9tW2ldKTsKKysg ICAgICAgIHVuc2lnbmVkIGludCBlcXVhbHMwID0gY29uc3RhbnRfdGltZV9pc196ZXJvKGVtW2ld KTsKKyAKKyAgICAgICAgIHplcm9faW5kZXggPSBjb25zdGFudF90aW1lX3NlbGVjdF9pbnQofmZv dW5kX3plcm9fYnl0ZSAmIGVxdWFsczAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGksIHplcm9faW5kZXgpOworICAgICAgICAgZm91bmRfemVyb19ieXRl IHw9IGVxdWFsczA7CisgCisgICAgICAgICB0aHJlZXNfaW5fcm93ICs9IDEgJiB+Zm91bmRfemVy b19ieXRlOworLSAgICAgICAgdGhyZWVzX2luX3JvdyAmPSBmb3VuZF96ZXJvX2J5dGUgfCBjb25z dGFudF90aW1lX2VxKGZyb21baV0sIDMpOworKyAgICAgICAgdGhyZWVzX2luX3JvdyAmPSBmb3Vu ZF96ZXJvX2J5dGUgfCBjb25zdGFudF90aW1lX2VxKGVtW2ldLCAzKTsKKyAgICAgfQorIAorICAg ICAvKgorLSAgICAgKiBQUyBtdXN0IGJlIGF0IGxlYXN0IDggYnl0ZXMgbG9uZywgYW5kIGl0IHN0 YXJ0cyB0d28gYnl0ZXMgaW50byB8ZnJvbXwuCisrICAgICAqIFBTIG11c3QgYmUgYXQgbGVhc3Qg OCBieXRlcyBsb25nLCBhbmQgaXQgc3RhcnRzIHR3byBieXRlcyBpbnRvIHxlbXwuCisgICAgICAq IElmIHdlIG5ldmVyIGZvdW5kIGEgMC1ieXRlLCB0aGVuIHx6ZXJvX2luZGV4fCBpcyAwIGFuZCB0 aGUgY2hlY2sKKyAgICAgICogYWxzbyBmYWlscy4KKyAgICAgICovCitAQCAtMTIwLDcgKzEyMiw3 IEBAIGludCBSU0FfcGFkZGluZ19jaGVja19TU0x2MjModW5zaWduZWQgY2gKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJTQV9SX05VTExfQkVGT1JFX0JMT0NLX01JU1NJTkcp OworICAgICBtYXNrID0gfmdvb2Q7CisgCistICAgIGdvb2QgJj0gY29uc3RhbnRfdGltZV9sdCh0 aHJlZXNfaW5fcm93LCA4KTsKKysgICAgZ29vZCAmPSBjb25zdGFudF90aW1lX2dlKHRocmVlc19p bl9yb3csIDgpOworICAgICBlcnIgPSBjb25zdGFudF90aW1lX3NlbGVjdF9pbnQobWFzayB8IGdv b2QsIGVyciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJTQV9SX1NTTFYz X1JPTExCQUNLX0FUVEFDSyk7CisgICAgIG1hc2sgPSB+Z29vZDsKK0BAIC0xMzksMjQgKzE0MSwy NSBAQCBpbnQgUlNBX3BhZGRpbmdfY2hlY2tfU1NMdjIzKHVuc2lnbmVkIGNoCisgICAgIGVyciA9 IGNvbnN0YW50X3RpbWVfc2VsZWN0X2ludChtYXNrIHwgZ29vZCwgZXJyLCBSU0FfUl9EQVRBX1RP T19MQVJHRSk7CisgCisgICAgIC8qCistICAgICAqIEV2ZW4gdGhvdWdoIHdlIGNhbid0IGZha2Ug cmVzdWx0J3MgbGVuZ3RoLCB3ZSBjYW4gcHJldGVuZCBjb3B5aW5nCistICAgICAqIHx0bGVufCBi eXRlcyB3aGVyZSB8bWxlbnwgYnl0ZXMgd291bGQgYmUgcmVhbC4gTGFzdCB8dGxlbnwgb2YgfG51 bXwKKy0gICAgICogYnl0ZXMgYXJlIHZpZXdlZCBhcyBjaXJjdWxhciBidWZmZXIgd2l0aCBzdGFy dCBhdCB8dGxlbnwtfG1sZW4nfCwKKy0gICAgICogd2hlcmUgfG1sZW4nfCBpcyAic2F0dXJhdGVk IiB8bWxlbnwgdmFsdWUuIERlZHVjaW5nIGluZm9ybWF0aW9uCistICAgICAqIGFib3V0IGZhaWx1 cmUgb3IgfG1sZW58IHdvdWxkIHRha2UgYXR0YWNrZXIncyBhYmlsaXR5IHRvIG9ic2VydmUKKy0g ICAgICogbWVtb3J5IGFjY2VzcyBwYXR0ZXJuIHdpdGggYnl0ZSBncmFudWxhcml0eSAqYXMgaXQg b2NjdXJzKi4gSXQKKy0gICAgICogc2hvdWxkIGJlIG5vdGVkIHRoYXQgZmFpbHVyZSBpcyBpbmRp c3Rpbmd1aXNoYWJsZSBmcm9tIG5vcm1hbAorLSAgICAgKiBvcGVyYXRpb24gaWYgfHRsZW58IGlz IGZpeGVkIGJ5IHByb3RvY29sLgorKyAgICAgKiBNb3ZlIHRoZSByZXN1bHQgaW4tcGxhY2UgYnkg fG51bXwtMTEtfG1sZW58IGJ5dGVzIHRvIHRoZSBsZWZ0LgorKyAgICAgKiBUaGVuIGlmIHxnb29k fCBtb3ZlIHxtbGVufCBieXRlcyBmcm9tIHxlbXwrMTEgdG8gfHRvfC4KKysgICAgICogT3RoZXJ3 aXNlIGxlYXZlIHx0b3wgdW5jaGFuZ2VkLgorKyAgICAgKiBDb3B5IHRoZSBtZW1vcnkgYmFjayBp biBhIHdheSB0aGF0IGRvZXMgbm90IHJldmVhbCB0aGUgc2l6ZSBvZgorKyAgICAgKiB0aGUgZGF0 YSBiZWluZyBjb3BpZWQgdmlhIGEgdGltaW5nIHNpZGUgY2hhbm5lbC4gVGhpcyByZXF1aXJlcyBj b3B5aW5nCisrICAgICAqIHBhcnRzIG9mIHRoZSBidWZmZXIgbXVsdGlwbGUgdGltZXMgYmFzZWQg b24gdGhlIGJpdHMgc2V0IGluIHRoZSByZWFsCisrICAgICAqIGxlbmd0aC4gQ2xlYXIgYml0cyBk byBhIG5vbi1jb3B5IHdpdGggaWRlbnRpY2FsIGFjY2VzcyBwYXR0ZXJuLgorKyAgICAgKiBUaGUg bG9vcCBiZWxvdyBoYXMgb3ZlcmFsbCBjb21wbGV4aXR5IG9mIE8oTipsb2coTikpLgorICAgICAg Ki8KKy0gICAgdGxlbiA9IGNvbnN0YW50X3RpbWVfc2VsZWN0X2ludChjb25zdGFudF90aW1lX2x0 KG51bSwgdGxlbiksIG51bSwgdGxlbik7CistICAgIG1zZ19pbmRleCA9IGNvbnN0YW50X3RpbWVf c2VsZWN0X2ludChnb29kLCBtc2dfaW5kZXgsIG51bSAtIHRsZW4pOworLSAgICBtbGVuID0gbnVt IC0gbXNnX2luZGV4OworLSAgICBmb3IgKGZyb20gKz0gbXNnX2luZGV4LCBtYXNrID0gZ29vZCwg aSA9IDA7IGkgPCB0bGVuOyBpKyspIHsKKy0gICAgICAgIHVuc2lnbmVkIGludCBlcXVhbHMgPSBj b25zdGFudF90aW1lX2VxKGksIG1sZW4pOworLQorLSAgICAgICAgZnJvbSAtPSB0bGVuICYgZXF1 YWxzOyAgLyogaWYgKGkgPT0gbWxlbikgcmV3aW5kICAgKi8KKy0gICAgICAgIG1hc2sgJj0gbWFz ayBeIGVxdWFsczsgIC8qIGlmIChpID09IG1sZW4pIG1hc2sgPSAwICovCistICAgICAgICB0b1tp XSA9IGNvbnN0YW50X3RpbWVfc2VsZWN0XzgobWFzaywgZnJvbVtpXSwgdG9baV0pOworKyAgICB0 bGVuID0gY29uc3RhbnRfdGltZV9zZWxlY3RfaW50KGNvbnN0YW50X3RpbWVfbHQobnVtIC0gMTEs IHRsZW4pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bSAtIDExLCB0 bGVuKTsKKysgICAgZm9yIChtc2dfaW5kZXggPSAxOyBtc2dfaW5kZXggPCBudW0gLSAxMTsgbXNn X2luZGV4IDw8PSAxKSB7CisrICAgICAgICBtYXNrID0gfmNvbnN0YW50X3RpbWVfZXEobXNnX2lu ZGV4ICYgKG51bSAtIDExIC0gbWxlbiksIDApOworKyAgICAgICAgZm9yIChpID0gMTE7IGkgPCBu dW0gLSBtc2dfaW5kZXg7IGkrKykKKysgICAgICAgICAgICBlbVtpXSA9IGNvbnN0YW50X3RpbWVf c2VsZWN0XzgobWFzaywgZW1baSArIG1zZ19pbmRleF0sIGVtW2ldKTsKKysgICAgfQorKyAgICBm b3IgKGkgPSAwOyBpIDwgdGxlbjsgaSsrKSB7CisrICAgICAgICBtYXNrID0gZ29vZCAmIGNvbnN0 YW50X3RpbWVfbHQoaSwgbWxlbik7CisrICAgICAgICB0b1tpXSA9IGNvbnN0YW50X3RpbWVfc2Vs ZWN0XzgobWFzaywgZW1baSArIDExXSwgdG9baV0pOworICAgICB9CisgCisgICAgIE9QRU5TU0xf Y2xlYXJfZnJlZShlbSwgbnVtKTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2NyeXB0by9yc2Ev cnNhX3g5MzFnLmMuc3luYyBvcGVuc3NsLTEuMS4xYi9jcnlwdG8vcnNhL3JzYV94OTMxZy5jCist LS0gb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9yc2FfeDkzMWcuYy5zeW5jCTIwMTktMDItMjYg MTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3JzYS9y c2FfeDkzMWcuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjUzMDQwNzAzNyArMDIwMAorQEAgLTEzMyw4 ICsxMzMsNyBAQCBpbnQgUlNBX1g5MzFfZGVyaXZlX2V4KFJTQSAqcnNhLCBCSUdOVU0KKyAKKyAg ICAgcmV0ID0gMTsKKyAgZXJyOgorLSAgICBpZiAoY3R4KQorLSAgICAgICAgQk5fQ1RYX2VuZChj dHgpOworKyAgICBCTl9DVFhfZW5kKGN0eCk7CisgICAgIEJOX0NUWF9mcmVlKGN0eCk7CisgICAg IEJOX0NUWF9mcmVlKGN0eDIpOworIAorQEAgLTE4OCw4ICsxODcsNyBAQCBpbnQgUlNBX1g5MzFf Z2VuZXJhdGVfa2V5X2V4KFJTQSAqcnNhLCBpCisgICAgIG9rID0gMTsKKyAKKyAgZXJyb3I6Cist ICAgIGlmIChjdHgpCistICAgICAgICBCTl9DVFhfZW5kKGN0eCk7CisrICAgIEJOX0NUWF9lbmQo Y3R4KTsKKyAgICAgQk5fQ1RYX2ZyZWUoY3R4KTsKKyAKKyAgICAgaWYgKG9rKQorZGlmZiAtdXAg b3BlbnNzbC0xLjEuMWIvY3J5cHRvL3g1MDkveDUwOV9sdS5jLnN5bmMgb3BlbnNzbC0xLjEuMWIv Y3J5cHRvL3g1MDkveDUwOV9sdS5jCistLS0gb3BlbnNzbC0xLjEuMWIvY3J5cHRvL3g1MDkveDUw OV9sdS5jLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVu c3NsLTEuMS4xYi9jcnlwdG8veDUwOS94NTA5X2x1LmMJMjAxOS0wNS0wMyAwODo1NTo1MS41NDY0 MDY3NjIgKzAyMDAKK0BAIC0yOTcsNiArMjk3LDkgQEAgaW50IFg1MDlfU1RPUkVfQ1RYX2dldF9i eV9zdWJqZWN0KFg1MDlfUworICAgICBpZiAoY3R4ID09IE5VTEwpCisgICAgICAgICByZXR1cm4g MDsKKyAKKysgICAgc3RtcC50eXBlID0gWDUwOV9MVV9OT05FOworKyAgICBzdG1wLmRhdGEucHRy ID0gTlVMTDsKKysKKyAgICAgQ1JZUFRPX1RIUkVBRF93cml0ZV9sb2NrKGN0eC0+bG9jayk7Cisg ICAgIHRtcCA9IFg1MDlfT0JKRUNUX3JldHJpZXZlX2J5X3N1YmplY3QoY3R4LT5vYmpzLCB0eXBl LCBuYW1lKTsKKyAgICAgQ1JZUFRPX1RIUkVBRF91bmxvY2soY3R4LT5sb2NrKTsKK2RpZmYgLXVw IG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4xL3BrZXl1dGwucG9kLnN5bmMgb3BlbnNzbC0xLjEuMWIv ZG9jL21hbjEvcGtleXV0bC5wb2QKKy0tLSBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMS9wa2V5dXRs LnBvZC5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNz bC0xLjEuMWIvZG9jL21hbjEvcGtleXV0bC5wb2QJMjAxOS0wNS0wMyAwODo1NTo1MS41NTU0MDY2 MDggKzAyMDAKK0BAIC0yNzIsMjAgKzI3MiwxOSBAQCB2YWx1ZSBsZXNzIHRoYW4gdGhlIG1pbmlt dW0gcmVzdHJpY3Rpb24uCisgPWhlYWQxIERTQSBBTEdPUklUSE0KKyAKKyBUaGUgRFNBIGFsZ29y aXRobSBzdXBwb3J0cyBzaWduaW5nIGFuZCB2ZXJpZmljYXRpb24gb3BlcmF0aW9ucyBvbmx5LiBD dXJyZW50bHkKKy10aGVyZSBhcmUgbm8gYWRkaXRpb25hbCBvcHRpb25zIG90aGVyIHRoYW4gQjxk aWdlc3Q+LiBPbmx5IHRoZSBTSEExCistZGlnZXN0IGNhbiBiZSB1c2VkIGFuZCB0aGlzIGRpZ2Vz dCBpcyBhc3N1bWVkIGJ5IGRlZmF1bHQuCisrdGhlcmUgYXJlIG5vIGFkZGl0aW9uYWwgQjwtcGtl eW9wdD4gb3B0aW9ucyBvdGhlciB0aGFuIEI8ZGlnZXN0Pi4gVGhlIFNIQTEKKytkaWdlc3QgaXMg YXNzdW1lZCBieSBkZWZhdWx0LgorIAorID1oZWFkMSBESCBBTEdPUklUSE0KKyAKKyBUaGUgREgg YWxnb3JpdGhtIG9ubHkgc3VwcG9ydHMgdGhlIGRlcml2YXRpb24gb3BlcmF0aW9uIGFuZCBubyBh ZGRpdGlvbmFsCistb3B0aW9ucy4KKytCPC1wa2V5b3B0PiBvcHRpb25zLgorIAorID1oZWFkMSBF QyBBTEdPUklUSE0KKyAKKyBUaGUgRUMgYWxnb3JpdGhtIHN1cHBvcnRzIHNpZ24sIHZlcmlmeSBh bmQgZGVyaXZlIG9wZXJhdGlvbnMuIFRoZSBzaWduIGFuZAorLXZlcmlmeSBvcGVyYXRpb25zIHVz ZSBFQ0RTQSBhbmQgZGVyaXZlIHVzZXMgRUNESC4gQ3VycmVudGx5IHRoZXJlIGFyZSBubworLWFk ZGl0aW9uYWwgb3B0aW9ucyBvdGhlciB0aGFuIEI8ZGlnZXN0Pi4gT25seSB0aGUgU0hBMSBkaWdl c3QgY2FuIGJlIHVzZWQgYW5kCistdGhpcyBkaWdlc3QgaXMgYXNzdW1lZCBieSBkZWZhdWx0Lgor K3ZlcmlmeSBvcGVyYXRpb25zIHVzZSBFQ0RTQSBhbmQgZGVyaXZlIHVzZXMgRUNESC4gU0hBMSBp cyBhc3N1bWVkIGJ5IGRlZmF1bHQgZm9yCisrdGhlIEI8LXBrZXlvcHQ+IEI8ZGlnZXN0PiBvcHRp b24uCisgCisgPWhlYWQxIFgyNTUxOSBhbmQgWDQ0OCBBTEdPUklUSE1TCisgCitkaWZmIC11cCBv cGVuc3NsLTEuMS4xYi9kb2MvbWFuMS90cy5wb2Quc3luYyBvcGVuc3NsLTEuMS4xYi9kb2MvbWFu MS90cy5wb2QKKy0tLSBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMS90cy5wb2Quc3luYwkyMDE5LTAy LTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4x L3RzLnBvZAkyMDE5LTA1LTAzIDA4OjU1OjUxLjU1NDQwNjYyNSArMDIwMAorQEAgLTI2Miw3ICsy NjIsNyBAQCBzcGVjaWZpZWQsIHRoZSBhcmd1bWVudCBpcyBnaXZlbiB0byB0aGUKKyA9aXRlbSBC PC1JPGRpZ2VzdD4+CisgCisgU2lnbmluZyBkaWdlc3QgdG8gdXNlLiBPdmVycmlkZXMgdGhlIEI8 c2lnbmVyX2RpZ2VzdD4gY29uZmlnIGZpbGUKKy1vcHRpb24uIChPcHRpb25hbCkKKytvcHRpb24u IChNYW5kYXRvcnkgdW5sZXNzIHNwZWNpZmllZCBpbiB0aGUgY29uZmlnIGZpbGUpCisgCisgPWl0 ZW0gQjwtY2hhaW4+IGNlcnRzX2ZpbGUucGVtCisgCitAQCAtNDYwLDcgKzQ2MCw4IEBAIGNvbW1h bmQgbGluZSBvcHRpb24uIChPcHRpb25hbCkKKyA9aXRlbSBCPHNpZ25lcl9kaWdlc3Q+CisgCisg U2lnbmluZyBkaWdlc3QgdG8gdXNlLiBUaGUgc2FtZSBhcyB0aGUKKy1CPC1JPGRpZ2VzdD4+IGNv bW1hbmQgbGluZSBvcHRpb24uIChPcHRpb25hbCkKKytCPC1JPGRpZ2VzdD4+IGNvbW1hbmQgbGlu ZSBvcHRpb24uIChNYW5kYXRvcnkgdW5sZXNzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZAorK2xp bmUpCisgCisgPWl0ZW0gQjxkZWZhdWx0X3BvbGljeT4KKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4x LjFiL2RvYy9tYW4zL0JJT19zX21lbS5wb2Quc3luYyBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9C SU9fc19tZW0ucG9kCistLS0gb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMvQklPX3NfbWVtLnBvZC5z eW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjEu MWIvZG9jL21hbjMvQklPX3NfbWVtLnBvZAkyMDE5LTA1LTAzIDA4OjU1OjUxLjU1NjQwNjU5MSAr MDIwMAorQEAgLTg4LDYgKzg4LDIyIEBAIGEgYnVmZmVyaW5nIEJJTyB0byB0aGUgY2hhaW4gd2ls bCBzcGVlZAorIENhbGxpbmcgQklPX3NldF9tZW1fYnVmKCkgb24gYSBCSU8gY3JlYXRlZCB3aXRo IEJJT19uZXdfc2VjbWVtKCkgd2lsbAorIGdpdmUgdW5kZWZpbmVkIHJlc3VsdHMsIGluY2x1ZGlu ZyBwZXJoYXBzIGEgcHJvZ3JhbSBjcmFzaC4KKyAKKytTd2l0Y2hpbmcgdGhlIG1lbW9yeSBCSU8g ZnJvbSByZWFkIHdyaXRlIHRvIHJlYWQgb25seSBpcyBub3Qgc3VwcG9ydGVkIGFuZAorK2NhbiBn aXZlIHVuZGVmaW5lZCByZXN1bHRzIGluY2x1ZGluZyBhIHByb2dyYW0gY3Jhc2guIFRoZXJlIGFy ZSB0d28gbm90YWJsZQorK2V4Y2VwdGlvbnMgdG8gdGhlIHJ1bGUuIFRoZSBmaXJzdCBvbmUgaXMg dG8gYXNzaWduIGEgc3RhdGljIG1lbW9yeSBidWZmZXIKKytpbW1lZGlhdGVseSBhZnRlciBCSU8g Y3JlYXRpb24gYW5kIHNldCB0aGUgQklPIGFzIHJlYWQgb25seS4KKysKKytUaGUgb3RoZXIgc3Vw cG9ydGVkIHNlcXVlbmNlIGlzIHRvIHN0YXJ0IHdpdGggcmVhZCB3cml0ZSBCSU8gdGhlbiB0ZW1w b3JhcmlseQorK3N3aXRjaCBpdCB0byByZWFkIG9ubHkgYW5kIGNhbGwgQklPX3Jlc2V0KCkgb24g dGhlIHJlYWQgb25seSBCSU8gaW1tZWRpYXRlbHkKKytiZWZvcmUgc3dpdGNoaW5nIGl0IGJhY2sg dG8gcmVhZCB3cml0ZS4gQmVmb3JlIHRoZSBCSU8gaXMgZnJlZWQgaXQgbXVzdCBiZQorK3N3aXRj aGVkIGJhY2sgdG8gdGhlIHJlYWQgd3JpdGUgbW9kZS4KKysKKytDYWxsaW5nIEJJT19nZXRfbWVt X3B0cigpIG9uIHJlYWQgb25seSBCSU8gd2lsbCByZXR1cm4gYSBCVUZfTUVNIHRoYXQKKytjb250 YWlucyBvbmx5IHRoZSByZW1haW5pbmcgZGF0YSB0byBiZSByZWFkLiBJZiB0aGUgY2xvc2Ugc3Rh dHVzIG9mIHRoZQorK0JJTyBpcyBzZXQgdG8gQklPX05PQ0xPU0UsIGJlZm9yZSBmcmVlaW5nIHRo ZSBCVUZfTUVNIHRoZSBkYXRhIHBvaW50ZXIKKytpbiBpdCBtdXN0IGJlIHNldCB0byBOVUxMIGFz IHRoZSBkYXRhIHBvaW50ZXIgZG9lcyBub3QgcG9pbnQgdG8gYW4KKythbGxvY2F0ZWQgbWVtb3J5 LgorKworID1oZWFkMSBCVUdTCisgCisgVGhlcmUgc2hvdWxkIGJlIGFuIG9wdGlvbiB0byBzZXQg dGhlIG1heGltdW0gc2l6ZSBvZiBhIG1lbW9yeSBCSU8uCitkaWZmIC11cCBvcGVuc3NsLTEuMS4x Yi9kb2MvbWFuMy9CTl9DVFhfc3RhcnQucG9kLnN5bmMgb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMv Qk5fQ1RYX3N0YXJ0LnBvZAorLS0tIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4zL0JOX0NUWF9zdGFy dC5wb2Quc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5z c2wtMS4xLjFiL2RvYy9tYW4zL0JOX0NUWF9zdGFydC5wb2QJMjAxOS0wNS0wMyAwODo1NTo1MS41 NTQ0MDY2MjUgKzAyMDAKK0BAIC0yNyw2ICsyNyw3IEBAIGNhbGxzIG11c3QgYmUgbWFkZSBiZWZv cmUgY2FsbGluZyBhbnkgb3QKKyBCPGN0eD4gYXMgYW4gYXJndW1lbnQuCisgCisgRmluYWxseSwg Qk5fQ1RYX2VuZCgpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSByZXR1cm5pbmcgZnJvbSB0aGUgZnVu Y3Rpb24uCisrSWYgQjxjdHg+IGlzIE5VTEwsIG5vdGhpbmcgaXMgZG9uZS4KKyBXaGVuIEJOX0NU WF9lbmQoKSBpcyBjYWxsZWQsIHRoZSBCPEJJR05VTT4gcG9pbnRlcnMgb2J0YWluZWQgZnJvbQor IEJOX0NUWF9nZXQoKSBiZWNvbWUgaW52YWxpZC4KKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFi L2RvYy9tYW4zL0JOX25ldy5wb2Quc3luYyBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9CTl9uZXcu cG9kCistLS0gb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMvQk5fbmV3LnBvZC5zeW5jCTIwMTktMDIt MjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMv Qk5fbmV3LnBvZAkyMDE5LTA1LTAzIDA4OjU1OjUxLjU1NDQwNjYyNSArMDIwMAorQEAgLTI3LDYg KzI3LDcgQEAgT1BFTlNTTF9zZWN1cmVfbWFsbG9jKDMpIGlzIHVzZWQgdG8gc3RvcgorIEJOX2Ns ZWFyKCkgaXMgdXNlZCB0byBkZXN0cm95IHNlbnNpdGl2ZSBkYXRhIHN1Y2ggYXMga2V5cyB3aGVu IHRoZXkKKyBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4gSXQgZXJhc2VzIHRoZSBtZW1vcnkgdXNlZCBi eSBCPGE+IGFuZCBzZXRzIGl0CisgdG8gdGhlIHZhbHVlIDAuCisrSWYgQjxhPiBpcyBOVUxMLCBu b3RoaW5nIGlzIGRvbmUuCisgCisgQk5fZnJlZSgpIGZyZWVzIHRoZSBjb21wb25lbnRzIG9mIHRo ZSBCPEJJR05VTT4sIGFuZCBpZiBpdCB3YXMgY3JlYXRlZAorIGJ5IEJOX25ldygpLCBhbHNvIHRo ZSBzdHJ1Y3R1cmUgaXRzZWxmLiBCTl9jbGVhcl9mcmVlKCkgYWRkaXRpb25hbGx5CitkaWZmIC11 cCBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9FVlBfY2hhY2hhMjAucG9kLnN5bmMgb3BlbnNzbC0x LjEuMWIvZG9jL21hbjMvRVZQX2NoYWNoYTIwLnBvZAorLS0tIG9wZW5zc2wtMS4xLjFiL2RvYy9t YW4zL0VWUF9jaGFjaGEyMC5wb2Quc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCAr MDEwMAorKysrIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4zL0VWUF9jaGFjaGEyMC5wb2QJMjAxOS0w NS0wMyAwODo1NTo1MS41MzY0MDY5MzQgKzAyMDAKK0BAIC0yMSw3ICsyMSwxNSBAQCBUaGUgQ2hh Q2hhMjAgc3RyZWFtIGNpcGhlciBmb3IgRVZQLgorIAorID1pdGVtIEVWUF9jaGFjaGEyMCgpCisg CistVGhlIENoYUNoYTIwIHN0cmVhbSBjaXBoZXIuIFRoZSBrZXkgbGVuZ3RoIGlzIDI1NiBiaXRz LCB0aGUgSVYgaXMgOTYgYml0cyBsb25nLgorK1RoZSBDaGFDaGEyMCBzdHJlYW0gY2lwaGVyLiBU aGUga2V5IGxlbmd0aCBpcyAyNTYgYml0cywgdGhlIElWIGlzIDEyOCBiaXRzIGxvbmcuCisrVGhl IGZpcnN0IDMyIGJpdHMgY29uc2lzdHMgb2YgYSBjb3VudGVyIGluIGxpdHRsZS1lbmRpYW4gb3Jk ZXIgZm9sbG93ZWQgYnkgYSA5NgorK2JpdCBub25jZS4gRm9yIGV4YW1wbGUgYSBub25jZSBvZjoK KysKKyswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIKKysKKytXaXRoIGFuIGluaXRpYWwgY291bnRl ciBvZiA0MiAoMmEgaW4gaGV4KSB3b3VsZCBiZSBleHByZXNzZWQgYXM6CisrCisrMmEwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIKKyAKKyA9aXRlbSBFVlBfY2hhY2hhMjBfcG9seTEzMDUo KQorIAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMvRVZQX0VuY3J5cHRJbml0LnBv ZC5zeW5jIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4zL0VWUF9FbmNyeXB0SW5pdC5wb2QKKy0tLSBv cGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9FVlBfRW5jcnlwdEluaXQucG9kLnN5bmMJMjAxOS0wMi0y NiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9F VlBfRW5jcnlwdEluaXQucG9kCTIwMTktMDUtMDMgMDg6NTU6NTEuNTU0NDA2NjI1ICswMjAwCitA QCAtNDM2LDcgKzQzNiw5IEBAIFRoZSBmb2xsb3dpbmcgSTxjdHJsPnMgYXJlIHN1cHBvcnRlZCBm b3IKKyAKKyBTZXRzIHRoZSBub25jZSBsZW5ndGguIFRoaXMgY2FsbCBjYW4gb25seSBiZSBtYWRl IGJlZm9yZSBzcGVjaWZ5aW5nIHRoZSBub25jZS4KKyBJZiBub3QgY2FsbGVkIGEgZGVmYXVsdCBu b25jZSBsZW5ndGggb2YgMTIgKGkuZS4gOTYgYml0cykgaXMgdXNlZC4gVGhlIG1heGltdW0KKy1u b25jZSBsZW5ndGggaXMgMTYgKEI8Q0hBQ0hBX0NUUl9TSVpFPiwgaS5lLiAxMjgtYml0cykuCisr bm9uY2UgbGVuZ3RoIGlzIDEyIGJ5dGVzIChpLmUuIDk2LWJpdHMpLiBJZiBhIG5vbmNlIG9mIGxl c3MgdGhhbiAxMiBieXRlcyBpcyBzZXQKKyt0aGVuIHRoZSBub25jZSBpcyBhdXRvbWF0aWNhbGx5 IHBhZGRlZCB3aXRoIGxlYWRpbmcgMCBieXRlcyB0byBtYWtlIGl0IDEyIGJ5dGVzCisraW4gbGVu Z3RoLgorIAorID1pdGVtIEVWUF9DSVBIRVJfQ1RYX2N0cmwoY3R4LCBFVlBfQ1RSTF9BRUFEX0dF VF9UQUcsIHRhZ2xlbiwgdGFnKQorIAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMv SE1BQy5wb2Quc3luYyBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9ITUFDLnBvZAorLS0tIG9wZW5z c2wtMS4xLjFiL2RvYy9tYW4zL0hNQUMucG9kLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAw MDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9ITUFDLnBvZAkyMDE5LTA1 LTAzIDA4OjU1OjUxLjUzOTQwNjg4MyArMDIwMAorQEAgLTYzLDcgKzYzLDkgQEAgSWYgQjxtZD4g aXMgTlVMTCwgdGhlIGRpZ2VzdCBpcyBwbGFjZWQgaQorIHRoZSBvdXRwdXQgaXMgcGxhY2VkIGlu IEI8bWRfbGVuPiwgdW5sZXNzIGl0IGlzIEI8TlVMTD4uIE5vdGU6IHBhc3NpbmcgYSBOVUxMCisg dmFsdWUgZm9yIEI8bWQ+ICB0byB1c2UgdGhlIHN0YXRpYyBhcnJheSBpcyBub3QgdGhyZWFkIHNh ZmUuCisgCistQjxldnBfbWQ+IGNhbiBiZSBFVlBfc2hhMSgpLCBFVlBfcmlwZW1kMTYwKCkgZXRj LgorK0I8ZXZwX21kPiBpcyBhIG1lc3NhZ2UgZGlnZXN0IHN1Y2ggYXMgRVZQX3NoYTEoKSwgRVZQ X3JpcGVtZDE2MCgpIGV0Yy4gSE1BQyBkb2VzCisrbm90IHN1cHBvcnQgdmFyaWFibGUgb3V0cHV0 IGxlbmd0aCBkaWdlc3RzIHN1Y2ggYXMgRVZQX3NoYWtlMTI4KCkgYW5kCisrRVZQX3NoYWtlMjU2 KCkuCisgCisgSE1BQ19DVFhfbmV3KCkgY3JlYXRlcyBhIG5ldyBITUFDX0NUWCBpbiBoZWFwIG1l bW9yeS4KKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4zL1JTQV9wYWRkaW5nX2Fk ZF9QS0NTMV90eXBlXzEucG9kLnN5bmMgb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMvUlNBX3BhZGRp bmdfYWRkX1BLQ1MxX3R5cGVfMS5wb2QKKy0tLSBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9SU0Ff cGFkZGluZ19hZGRfUEtDUzFfdHlwZV8xLnBvZC5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAw MDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMvUlNBX3BhZGRpbmdfYWRk X1BLQ1MxX3R5cGVfMS5wb2QJMjAxOS0wNS0wMyAwODo1NTo1MS41NTU0MDY2MDggKzAyMDAKK0BA IC01LDYgKzUsNyBAQAorIFJTQV9wYWRkaW5nX2FkZF9QS0NTMV90eXBlXzEsIFJTQV9wYWRkaW5n X2NoZWNrX1BLQ1MxX3R5cGVfMSwKKyBSU0FfcGFkZGluZ19hZGRfUEtDUzFfdHlwZV8yLCBSU0Ff cGFkZGluZ19jaGVja19QS0NTMV90eXBlXzIsCisgUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX09BRVAs IFJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX09BRVAsCisrUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX09B RVBfbWdmMSwgUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfT0FFUF9tZ2YxLAorIFJTQV9wYWRkaW5n X2FkZF9TU0x2MjMsIFJTQV9wYWRkaW5nX2NoZWNrX1NTTHYyMywKKyBSU0FfcGFkZGluZ19hZGRf bm9uZSwgUlNBX3BhZGRpbmdfY2hlY2tfbm9uZSAtIGFzeW1tZXRyaWMgZW5jcnlwdGlvbgorIHBh ZGRpbmcKK0BAIC0xNCwzNSArMTUsNDYgQEAgcGFkZGluZworICAjaW5jbHVkZSA8b3BlbnNzbC9y c2EuaD4KKyAKKyAgaW50IFJTQV9wYWRkaW5nX2FkZF9QS0NTMV90eXBlXzEodW5zaWduZWQgY2hh ciAqdG8sIGludCB0bGVuLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBjaGFyICpmLCBpbnQgZmwpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCB1bnNpZ25lZCBjaGFyICpmLCBpbnQgZmwpOworIAorICBpbnQgUlNBX3BhZGRpbmdf Y2hlY2tfUEtDUzFfdHlwZV8xKHVuc2lnbmVkIGNoYXIgKnRvLCBpbnQgdGxlbiwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpmLCBpbnQgZmwsIGlu dCByc2FfbGVuKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1 bnNpZ25lZCBjaGFyICpmLCBpbnQgZmwsIGludCByc2FfbGVuKTsKKyAKKyAgaW50IFJTQV9wYWRk aW5nX2FkZF9QS0NTMV90eXBlXzIodW5zaWduZWQgY2hhciAqdG8sIGludCB0bGVuLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpmLCBpbnQgZmwpOwor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpm LCBpbnQgZmwpOworIAorICBpbnQgUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8yKHVuc2ln bmVkIGNoYXIgKnRvLCBpbnQgdGxlbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBjaGFyICpmLCBpbnQgZmwsIGludCByc2FfbGVuKTsKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpmLCBpbnQgZmws IGludCByc2FfbGVuKTsKKyAKKyAgaW50IFJTQV9wYWRkaW5nX2FkZF9QS0NTMV9PQUVQKHVuc2ln bmVkIGNoYXIgKnRvLCBpbnQgdGxlbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGNoYXIgKmYsIGludCBmbCwgdW5zaWduZWQgY2hhciAqcCwgaW50IHBsKTsKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmYsIGlu dCBmbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo YXIgKnAsIGludCBwbCk7CisgCisgIGludCBSU0FfcGFkZGluZ19jaGVja19QS0NTMV9PQUVQKHVu c2lnbmVkIGNoYXIgKnRvLCBpbnQgdGxlbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgY2hhciAqZiwgaW50IGZsLCBpbnQgcnNhX2xlbiwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcCwgaW50IHBsKTsKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZiwgaW50 IGZsLCBpbnQgcnNhX2xlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgdW5zaWduZWQgY2hhciAqcCwgaW50IHBsKTsKKysKKysgaW50IFJTQV9wYWRkaW5nX2FkZF9Q S0NTMV9PQUVQX21nZjEodW5zaWduZWQgY2hhciAqdG8sIGludCB0bGVuLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpmLCBpbnQgZmws CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo YXIgKnAsIGludCBwbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgRVZQX01EICptZCwgY29uc3QgRVZQX01EICptZ2YxbWQpOworKworKyBpbnQgUlNBX3BhZGRp bmdfY2hlY2tfUEtDUzFfT0FFUF9tZ2YxKHVuc2lnbmVkIGNoYXIgKnRvLCBpbnQgdGxlbiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFy ICpmLCBpbnQgZmwsIGludCByc2FfbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBwbCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFVlBfTUQgKm1kLCBjb25zdCBFVlBfTUQg Km1nZjFtZCk7CisgCisgIGludCBSU0FfcGFkZGluZ19hZGRfU1NMdjIzKHVuc2lnbmVkIGNoYXIg KnRvLCBpbnQgdGxlbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh ciAqZiwgaW50IGZsKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWdu ZWQgY2hhciAqZiwgaW50IGZsKTsKKyAKKyAgaW50IFJTQV9wYWRkaW5nX2NoZWNrX1NTTHYyMyh1 bnNpZ25lZCBjaGFyICp0bywgaW50IHRsZW4sCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgY2hhciAqZiwgaW50IGZsLCBpbnQgcnNhX2xlbik7CisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZiwgaW50IGZsLCBpbnQgcnNh X2xlbik7CisgCisgIGludCBSU0FfcGFkZGluZ19hZGRfbm9uZSh1bnNpZ25lZCBjaGFyICp0bywg aW50IHRsZW4sCistICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpmLCBp bnQgZmwpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAq ZiwgaW50IGZsKTsKKyAKKyAgaW50IFJTQV9wYWRkaW5nX2NoZWNrX25vbmUodW5zaWduZWQgY2hh ciAqdG8sIGludCB0bGVuLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj aGFyICpmLCBpbnQgZmwsIGludCByc2FfbGVuKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgdW5zaWduZWQgY2hhciAqZiwgaW50IGZsLCBpbnQgcnNhX2xlbik7CisgCisgPWhl YWQxIERFU0NSSVBUSU9OCisgCitAQCAtOTgsNiArMTEwLDEwIEBAIGF0IEI8dG8+LgorIEZvciBS U0FfcGFkZGluZ194eHhfT0FFUCgpLCBCPHA+IHBvaW50cyB0byB0aGUgZW5jb2RpbmcgcGFyYW1l dGVyCisgb2YgbGVuZ3RoIEI8cGw+LiBCPHA+IG1heSBiZSBCPE5VTEw+IGlmIEI8cGw+IGlzIDAu CisgCisrRm9yIFJTQV9wYWRkaW5nX3h4eF9PQUVQX21nZjEoKSwgQjxtZD4gcG9pbnRzIHRvIHRo ZSBtZCBoYXNoLAorK2lmIEI8bWQ+IGlzIEI8TlVMTD4gdGhhdCBtZWFucyBtZD1zaGExLCBhbmQg QjxtZ2YxbWQ+IHBvaW50cyB0bworK3RoZSBtZ2YxIGhhc2gsIGlmIEI8bWdmMW1kPiBpcyBCPE5V TEw+IHRoYXQgbWVhbnMgbWdmMW1kPW1kLgorKworID1oZWFkMSBSRVRVUk4gVkFMVUVTCisgCisg VGhlIFJTQV9wYWRkaW5nX2FkZF94eHgoKSBmdW5jdGlvbnMgcmV0dXJuIDEgb24gc3VjY2Vzcywg MCBvbiBlcnJvci4KK0BAIC0xMDcsMTUgKzEyMywyMSBAQCBMPEVSUl9nZXRfZXJyb3IoMyk+Lgor IAorID1oZWFkMSBXQVJOSU5HCisgCistVGhlIFJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX3R5cGVf MigpIHBhZGRpbmcgY2hlY2sgbGVha3MgdGltaW5nCisrVGhlIHJlc3VsdCBvZiBSU0FfcGFkZGlu Z19jaGVja19QS0NTMV90eXBlXzIoKSBpcyBhIHZlcnkgc2Vuc2l0aXZlCisgaW5mb3JtYXRpb24g d2hpY2ggY2FuIHBvdGVudGlhbGx5IGJlIHVzZWQgdG8gbW91bnQgYSBCbGVpY2hlbmJhY2hlcgor IHBhZGRpbmcgb3JhY2xlIGF0dGFjay4gVGhpcyBpcyBhbiBpbmhlcmVudCB3ZWFrbmVzcyBpbiB0 aGUgUEtDUyAjMQorLXYxLjUgcGFkZGluZyBkZXNpZ24uIFByZWZlciBQS0NTMV9PQUVQIHBhZGRp bmcuIE90aGVyd2lzZSBpdCBjYW4KKy1iZSByZWNvbW1lbmRlZCB0byBwYXNzIHplcm8tcGFkZGVk IEI8Zj4sIHNvIHRoYXQgQjxmbD4gZXF1YWxzIHRvCistQjxyc2FfbGVuPiwgYW5kIGlmIGZpeGVk IGJ5IHByb3RvY29sLCBCPHRsZW4+IGJlaW5nIHNldCB0byB0aGUKKy1leHBlY3RlZCBsZW5ndGgu IEluIHN1Y2ggY2FzZSBsZWFrYWdlIHdvdWxkIGJlIG1pbmltYWwsIGl0IHdvdWxkCistdGFrZSBh dHRhY2tlcidzIGFiaWxpdHkgdG8gb2JzZXJ2ZSBtZW1vcnkgYWNjZXNzIHBhdHRlcm4gd2l0aCBi eXRlCistZ3JhbmlsYXJpdHkgYXMgaXQgb2NjdXJzLCBwb3N0LWZhY3R1bSB0aW1pbmcgYW5hbHlz aXMgd29uJ3QgZG8uCisrdjEuNSBwYWRkaW5nIGRlc2lnbi4gUHJlZmVyIFBLQ1MxX09BRVAgcGFk ZGluZy4gSWYgdGhhdCBpcyBub3QKKytwb3NzaWJsZSwgdGhlIHJlc3VsdCBvZiBSU0FfcGFkZGlu Z19jaGVja19QS0NTMV90eXBlXzIoKSBzaG91bGQgYmUKKytjaGVja2VkIGluIGNvbnN0YW50IHRp bWUgaWYgaXQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgbGVuZ3RoIG9mIHRoZQorK3BsYWludGV4dCBh bmQgYWRkaXRpb25hbGx5IHNvbWUgYXBwbGljYXRpb24gc3BlY2lmaWMgY29uc2lzdGVuY3kKKytj aGVja3Mgb24gdGhlIHBsYWludGV4dCBuZWVkIHRvIGJlIHBlcmZvcm1lZCBpbiBjb25zdGFudCB0 aW1lLgorK0lmIHRoZSBwbGFpbnRleHQgaXMgcmVqZWN0ZWQgaXQgbXVzdCBiZSBrZXB0IHNlY3Jl dCB3aGljaCBvZiB0aGUKKytjaGVja3MgY2F1c2VkIHRoZSBhcHBsaWNhdGlvbiB0byByZWplY3Qg dGhlIG1lc3NhZ2UuCisrRG8gbm90IHJlbW92ZSB0aGUgemVyby1wYWRkaW5nIGZyb20gdGhlIGRl Y3J5cHRlZCByYXcgUlNBIGRhdGEKKyt3aGljaCB3YXMgY29tcHV0ZWQgYnkgUlNBX3ByaXZhdGVf ZGVjcnlwdCgpIHdpdGggQjxSU0FfTk9fUEFERElORz4sCisrYXMgdGhpcyB3b3VsZCBjcmVhdGUg YSBzbWFsbCB0aW1pbmcgc2lkZSBjaGFubmVsIHdoaWNoIGNvdWxkIGJlCisrdXNlZCB0byBtb3Vu dCBhIEJsZWljaGVuYmFjaGVyIGF0dGFjayBhZ2FpbnN0IGFueSBwYWRkaW5nIG1vZGUKKytpbmNs dWRpbmcgUEtDUzFfT0FFUC4KKyAKKyA9aGVhZDEgU0VFIEFMU08KKyAKK0BAIC0xMjUsNyArMTQ3 LDcgQEAgTDxSU0Ffc2lnbigzKT4sIEw8UlNBX3ZlcmlmeSgzKT4KKyAKKyA9aGVhZDEgQ09QWVJJ R0hUCisgCistQ29weXJpZ2h0IDIwMDAtMjAxNiBUaGUgT3BlblNTTCBQcm9qZWN0IEF1dGhvcnMu IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisrQ29weXJpZ2h0IDIwMDAtMjAxOSBUaGUgT3BlblNTTCBQ cm9qZWN0IEF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgCisgTGljZW5zZWQgdW5kZXIg dGhlIE9wZW5TU0wgbGljZW5zZSAodGhlICJMaWNlbnNlIikuICBZb3UgbWF5IG5vdCB1c2UKKyB0 aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBjYW4g b2J0YWluIGEgY29weQorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMvUlNBX3B1Ymxp Y19lbmNyeXB0LnBvZC5zeW5jIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4zL1JTQV9wdWJsaWNfZW5j cnlwdC5wb2QKKy0tLSBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9SU0FfcHVibGljX2VuY3J5cHQu cG9kLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3Ns LTEuMS4xYi9kb2MvbWFuMy9SU0FfcHVibGljX2VuY3J5cHQucG9kCTIwMTktMDUtMDMgMDg6NTU6 NTEuNTU1NDA2NjA4ICswMjAwCitAQCAtOCwxMCArOCwxMCBAQCBSU0FfcHVibGljX2VuY3J5cHQs IFJTQV9wcml2YXRlX2RlY3J5cHQKKyAKKyAgI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+CisgCist IGludCBSU0FfcHVibGljX2VuY3J5cHQoaW50IGZsZW4sIHVuc2lnbmVkIGNoYXIgKmZyb20sCisr IGludCBSU0FfcHVibGljX2VuY3J5cHQoaW50IGZsZW4sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmZy b20sCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqdG8sIFJTQSAqcnNh LCBpbnQgcGFkZGluZyk7CisgCistIGludCBSU0FfcHJpdmF0ZV9kZWNyeXB0KGludCBmbGVuLCB1 bnNpZ25lZCBjaGFyICpmcm9tLAorKyBpbnQgUlNBX3ByaXZhdGVfZGVjcnlwdChpbnQgZmxlbiwg Y29uc3QgdW5zaWduZWQgY2hhciAqZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgY2hhciAqdG8sIFJTQSAqcnNhLCBpbnQgcGFkZGluZyk7CisgCisgPWhlYWQxIERFU0NS SVBUSU9OCitAQCAtMjcsNiArMjcsOCBAQCBCPHBhZGRpbmc+IGRlbm90ZXMgb25lIG9mIHRoZSBm b2xsb3dpbmcKKyA9aXRlbSBSU0FfUEtDUzFfUEFERElORworIAorIFBLQ1MgIzEgdjEuNSBwYWRk aW5nLiBUaGlzIGN1cnJlbnRseSBpcyB0aGUgbW9zdCB3aWRlbHkgdXNlZCBtb2RlLgorK0hvd2V2 ZXIsIGl0IGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byB1c2UgUlNBX1BLQ1MxX09BRVBfUEFERElO RyBpbgorK25ldyBhcHBsaWNhdGlvbnMuIFNFRSBXQVJOSU5HIEJFTE9XLgorIAorID1pdGVtIFJT QV9QS0NTMV9PQUVQX1BBRERJTkcKKyAKK0BAIC00NiwyMyArNDgsMzUgQEAgRW5jcnlwdGluZyB1 c2VyIGRhdGEgZGlyZWN0bHkgd2l0aCBSU0EgaQorIAorID1iYWNrCisgCistQjxmbGVuPiBtdXN0 IGJlIGxlc3MgdGhhbiBSU0Ffc2l6ZShCPHJzYT4pIC0gMTEgZm9yIHRoZSBQS0NTICMxIHYxLjUK Ky1iYXNlZCBwYWRkaW5nIG1vZGVzLCBsZXNzIHRoYW4gUlNBX3NpemUoQjxyc2E+KSAtIDQxIGZv cgorK0I8Zmxlbj4gbXVzdCBub3QgYmUgbW9yZSB0aGFuIFJTQV9zaXplKEI8cnNhPikgLSAxMSBm b3IgdGhlIFBLQ1MgIzEgdjEuNQorK2Jhc2VkIHBhZGRpbmcgbW9kZXMsIG5vdCBtb3JlIHRoYW4g UlNBX3NpemUoQjxyc2E+KSAtIDQyIGZvcgorIFJTQV9QS0NTMV9PQUVQX1BBRERJTkcgYW5kIGV4 YWN0bHkgUlNBX3NpemUoQjxyc2E+KSBmb3IgUlNBX05PX1BBRERJTkcuCistVGhlIHJhbmRvbSBu dW1iZXIgZ2VuZXJhdG9yIG11c3QgYmUgc2VlZGVkIHByaW9yIHRvIGNhbGxpbmcKKy1SU0FfcHVi bGljX2VuY3J5cHQoKS4KKytXaGVuIGEgcGFkZGluZyBtb2RlIG90aGVyIHRoYW4gUlNBX05PX1BB RERJTkcgaXMgaW4gdXNlLCB0aGVuCisrUlNBX3B1YmxpY19lbmNyeXB0KCkgd2lsbCBpbmNsdWRl IHNvbWUgcmFuZG9tIGJ5dGVzIGludG8gdGhlIGNpcGhlcnRleHQKKythbmQgdGhlcmVmb3JlIHRo ZSBjaXBoZXJ0ZXh0IHdpbGwgYmUgZGlmZmVyZW50IGVhY2ggdGltZSwgZXZlbiBpZiB0aGUKKytw bGFpbnRleHQgYW5kIHRoZSBwdWJsaWMga2V5IGFyZSBleGFjdGx5IGlkZW50aWNhbC4KKytUaGUg cmV0dXJuZWQgY2lwaGVydGV4dCBpbiBCPHRvPiB3aWxsIGFsd2F5cyBiZSB6ZXJvIHBhZGRlZCB0 byBleGFjdGx5CisrUlNBX3NpemUoQjxyc2E+KSBieXRlcy4KKytCPHRvPiBhbmQgQjxmcm9tPiBt YXkgb3ZlcmxhcC4KKyAKKyBSU0FfcHJpdmF0ZV9kZWNyeXB0KCkgZGVjcnlwdHMgdGhlIEI8Zmxl bj4gYnl0ZXMgYXQgQjxmcm9tPiB1c2luZyB0aGUKKy1wcml2YXRlIGtleSBCPHJzYT4gYW5kIHN0 b3JlcyB0aGUgcGxhaW50ZXh0IGluIEI8dG8+LiBCPHRvPiBtdXN0IHBvaW50CistdG8gYSBtZW1v cnkgc2VjdGlvbiBsYXJnZSBlbm91Z2ggdG8gaG9sZCB0aGUgZGVjcnlwdGVkIGRhdGEgKHdoaWNo IGlzCistc21hbGxlciB0aGFuIFJTQV9zaXplKEI8cnNhPikpLiBCPHBhZGRpbmc+IGlzIHRoZSBw YWRkaW5nIG1vZGUgdGhhdAorLXdhcyB1c2VkIHRvIGVuY3J5cHQgdGhlIGRhdGEuCisrcHJpdmF0 ZSBrZXkgQjxyc2E+IGFuZCBzdG9yZXMgdGhlIHBsYWludGV4dCBpbiBCPHRvPi4gQjxmbGVuPiBz aG91bGQKKytiZSBlcXVhbCB0byBSU0Ffc2l6ZShCPHJzYT4pIGJ1dCBtYXkgYmUgc21hbGxlciwg d2hlbiBsZWFkaW5nIHplcm8KKytieXRlcyBhcmUgaW4gdGhlIGNpcGhlcnRleHQuIFRob3NlIGFy ZSBub3QgaW1wb3J0YW50IGFuZCBtYXkgYmUgcmVtb3ZlZCwKKytidXQgUlNBX3B1YmxpY19lbmNy eXB0KCkgZG9lcyBub3QgZG8gdGhhdC4gQjx0bz4gbXVzdCBwb2ludAorK3RvIGEgbWVtb3J5IHNl Y3Rpb24gbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlIG1heGltYWwgcG9zc2libGUgZGVjcnlwdGVk CisrZGF0YSAod2hpY2ggaXMgZXF1YWwgdG8gUlNBX3NpemUoQjxyc2E+KSBmb3IgUlNBX05PX1BB RERJTkcsCisrUlNBX3NpemUoQjxyc2E+KSAtIDExIGZvciB0aGUgUEtDUyAjMSB2MS41IGJhc2Vk IHBhZGRpbmcgbW9kZXMgYW5kCisrUlNBX3NpemUoQjxyc2E+KSAtIDQyIGZvciBSU0FfUEtDUzFf T0FFUF9QQURESU5HKS4KKytCPHBhZGRpbmc+IGlzIHRoZSBwYWRkaW5nIG1vZGUgdGhhdCB3YXMg dXNlZCB0byBlbmNyeXB0IHRoZSBkYXRhLgorK0I8dG8+IGFuZCBCPGZyb20+IG1heSBvdmVybGFw LgorIAorID1oZWFkMSBSRVRVUk4gVkFMVUVTCisgCisgUlNBX3B1YmxpY19lbmNyeXB0KCkgcmV0 dXJucyB0aGUgc2l6ZSBvZiB0aGUgZW5jcnlwdGVkIGRhdGEgKGkuZS4sCisgUlNBX3NpemUoQjxy c2E+KSkuIFJTQV9wcml2YXRlX2RlY3J5cHQoKSByZXR1cm5zIHRoZSBzaXplIG9mIHRoZQorLXJl Y292ZXJlZCBwbGFpbnRleHQuCisrcmVjb3ZlcmVkIHBsYWludGV4dC4gQSByZXR1cm4gdmFsdWUg b2YgMCBpcyBub3QgYW4gZXJyb3IgYW5kCisrbWVhbnMgb25seSB0aGF0IHRoZSBwbGFpbnRleHQg d2FzIGVtcHR5LgorIAorIE9uIGVycm9yLCAtMSBpcyByZXR1cm5lZDsgdGhlIGVycm9yIGNvZGVz IGNhbiBiZQorIG9idGFpbmVkIGJ5IEw8RVJSX2dldF9lcnJvcigzKT4uCitAQCAtODUsNyArOTks NyBAQCBMPFJTQV9zaXplKDMpPgorIAorID1oZWFkMSBDT1BZUklHSFQKKyAKKy1Db3B5cmlnaHQg MjAwMC0yMDE2IFRoZSBPcGVuU1NMIFByb2plY3QgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KKytDb3B5cmlnaHQgMjAwMC0yMDE5IFRoZSBPcGVuU1NMIFByb2plY3QgQXV0aG9ycy4gQWxs IFJpZ2h0cyBSZXNlcnZlZC4KKyAKKyBMaWNlbnNlZCB1bmRlciB0aGUgT3BlblNTTCBsaWNlbnNl ICh0aGUgIkxpY2Vuc2UiKS4gIFlvdSBtYXkgbm90IHVzZQorIHRoaXMgZmlsZSBleGNlcHQgaW4g Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IGNhbiBvYnRhaW4gYSBjb3B5CitkaWZm IC11cCBvcGVuc3NsLTEuMS4xYi9kb2MvbWFuMy9TU0xfQ0lQSEVSX2dldF9uYW1lLnBvZC5zeW5j IG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4zL1NTTF9DSVBIRVJfZ2V0X25hbWUucG9kCistLS0gb3Bl bnNzbC0xLjEuMWIvZG9jL21hbjMvU1NMX0NJUEhFUl9nZXRfbmFtZS5wb2Quc3luYwkyMDE5LTAy LTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4xLjFiL2RvYy9tYW4z L1NTTF9DSVBIRVJfZ2V0X25hbWUucG9kCTIwMTktMDUtMDMgMDg6NTU6NTEuNTM3NDA2OTE3ICsw MjAwCitAQCAtMTI0LDcgKzEyNCwxMCBAQCBUZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBj aXBoZXIgbmFtCisgCisgPWl0ZW0gPHByb3RvY29sIHZlcnNpb24+CisgCistUHJvdG9jb2wgdmVy c2lvbiwgc3VjaCBhcyBCPFRMU3YxLjI+LCB3aGVuIHRoZSBjaXBoZXIgd2FzIGZpcnN0IGRlZmlu ZWQuCisrVGhlIG1pbmltdW0gcHJvdG9jb2wgdmVyc2lvbiB0aGF0IHRoZSBjaXBoZXJzdWl0ZSBz dXBwb3J0cywgc3VjaCBhcyBCPFRMU3YxLjI+LgorK05vdGUgdGhhdCB0aGlzIGlzIG5vdCBhbHdh eXMgdGhlIHNhbWUgYXMgdGhlIHByb3RvY29sIHZlcnNpb24gaW4gd2hpY2ggdGhlCisrY2lwaGVy c3VpdGUgd2FzIGZpcnN0IGRlZmluZWQgYmVjYXVzZSBzb21lIGNpcGhlcnN1aXRlcyBhcmUgYmFj a3dhcmRzIGNvbXBhdGlibGUKKyt3aXRoIGVhcmxpZXIgcHJvdG9jb2wgdmVyc2lvbnMuCisgCisg PWl0ZW0gS3g9PGtleSBleGNoYW5nZT4KKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL2RvYy9t YW4zL1NTTF9DVFhfc2V0X2NsaWVudF9oZWxsb19jYi5wb2Quc3luYyBvcGVuc3NsLTEuMS4xYi9k b2MvbWFuMy9TU0xfQ1RYX3NldF9jbGllbnRfaGVsbG9fY2IucG9kCistLS0gb3BlbnNzbC0xLjEu MWIvZG9jL21hbjMvU1NMX0NUWF9zZXRfY2xpZW50X2hlbGxvX2NiLnBvZC5zeW5jCTIwMTktMDIt MjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWIvZG9jL21hbjMv U1NMX0NUWF9zZXRfY2xpZW50X2hlbGxvX2NiLnBvZAkyMDE5LTA1LTAzIDA4OjU1OjUxLjUzNDQw Njk2OSArMDIwMAorQEAgLTY1LDYgKzY1LDggQEAgYm90aCByZXF1aXJlZCwgYW5kIG9uIHN1Y2Nl c3MgdGhlIGNhbGxlcgorIEI8Km91dD4gdXNpbmcgT1BFTlNTTF9mcmVlKCkuICBUaGUgY29udGVu dHMgb2YgQjwqb3V0PiBpcyBhbiBhcnJheSBvZiBpbnRlZ2VycworIGhvbGRpbmcgdGhlIG51bWVy aWNhbCB2YWx1ZSBvZiB0aGUgVExTIGV4dGVuc2lvbiB0eXBlcyBpbiB0aGUgb3JkZXIgdGhleSBh cHBlYXIKKyBpbiB0aGUgQ2xpZW50SGVsbG8uICBCPCpvdXRsZW4+IGNvbnRhaW5zIHRoZSBudW1i ZXIgb2YgZWxlbWVudHMgaW4gdGhlIGFycmF5LgorK0luIHNpdHVhdGlvbnMgd2hlbiB0aGUgQ2xp ZW50SGVsbG8gaGFzIG5vIGV4dGVuc2lvbnMsIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybgorK3N1 Y2Nlc3Mgd2l0aCBCPCpvdXQ+IHNldCB0byBOVUxMIGFuZCBCPCpvdXRsZW4+IHNldCB0byAwLgor IAorID1oZWFkMSBOT1RFUworIAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvaW5jbHVkZS9vcGVu c3NsL2Vyci5oLnN5bmMgb3BlbnNzbC0xLjEuMWIvaW5jbHVkZS9vcGVuc3NsL2Vyci5oCistLS0g b3BlbnNzbC0xLjEuMWIvaW5jbHVkZS9vcGVuc3NsL2Vyci5oLnN5bmMJMjAxOS0wMi0yNiAxNTox NTozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4xYi9pbmNsdWRlL29wZW5zc2wv ZXJyLmgJMjAxOS0wNS0wMyAwODo1NTo1MS41NDg0MDY3MjggKzAyMDAKK0BAIC0zNyw2ICszNyw3 IEBAIGV4dGVybiAiQyIgeworICMgZGVmaW5lIEVSUl9UWFRfU1RSSU5HICAgICAgICAgIDB4MDIK KyAKKyAjIGRlZmluZSBFUlJfRkxBR19NQVJLICAgICAgICAgICAweDAxCisrIyBkZWZpbmUgRVJS X0ZMQUdfQ0xFQVIgICAgICAgICAgMHgwMgorIAorICMgZGVmaW5lIEVSUl9OVU1fRVJST1JTICAx NgorIHR5cGVkZWYgc3RydWN0IGVycl9zdGF0ZV9zdCB7CitkaWZmIC11cCBvcGVuc3NsLTEuMS4x Yi9zc2wvc3NsX2xpYi5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvc3NsL3NzbF9saWIuYworLS0tIG9w ZW5zc2wtMS4xLjFiL3NzbC9zc2xfbGliLmMuc3luYwkyMDE5LTA1LTAzIDA4OjU1OjQ1LjE5NjUx NTc3OCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjFiL3NzbC9zc2xfbGliLmMJMjAxOS0wNS0wMyAw ODo1NTo1MS41MzU0MDY5NTEgKzAyMDAKK0BAIC01MDg5LDYgKzUwODksMTEgQEAgaW50IFNTTF9j bGllbnRfaGVsbG9fZ2V0MV9leHRlbnNpb25zX3ByZQorICAgICAgICAgaWYgKGV4dC0+cHJlc2Vu dCkKKyAgICAgICAgICAgICBudW0rKzsKKyAgICAgfQorKyAgICBpZiAobnVtID09IDApIHsKKysg ICAgICAgICpvdXQgPSBOVUxMOworKyAgICAgICAgKm91dGxlbiA9IDA7CisrICAgICAgICByZXR1 cm4gMTsKKysgICAgfQorICAgICBpZiAoKHByZXNlbnQgPSBPUEVOU1NMX21hbGxvYyhzaXplb2Yo KnByZXNlbnQpICogbnVtKSkgPT0gTlVMTCkgeworICAgICAgICAgU1NMZXJyKFNTTF9GX1NTTF9D TElFTlRfSEVMTE9fR0VUMV9FWFRFTlNJT05TX1BSRVNFTlQsCisgICAgICAgICAgICAgICAgRVJS X1JfTUFMTE9DX0ZBSUxVUkUpOworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvc3NsL3NzbF9sb2Ns Lmguc3luYyBvcGVuc3NsLTEuMS4xYi9zc2wvc3NsX2xvY2wuaAorLS0tIG9wZW5zc2wtMS4xLjFi L3NzbC9zc2xfbG9jbC5oLnN5bmMJMjAxOS0wNS0wMyAwODo1NTo0NS4wMTE1MTg5NTQgKzAyMDAK KysrKyBvcGVuc3NsLTEuMS4xYi9zc2wvc3NsX2xvY2wuaAkyMDE5LTA1LTAzIDA4OjU1OjUxLjU0 MTQwNjg0OCArMDIwMAorQEAgLTU3NCw3ICs1NzQsNiBAQCBzdHJ1Y3Qgc3NsX3Nlc3Npb25fc3Qg eworICAgICAgICAgLyogU2Vzc2lvbiBsaWZldGltZSBoaW50IGluIHNlY29uZHMgKi8KKyAgICAg ICAgIHVuc2lnbmVkIGxvbmcgdGlja19saWZldGltZV9oaW50OworICAgICAgICAgdWludDMyX3Qg dGlja19hZ2VfYWRkOworLSAgICAgICAgaW50IHRpY2tfaWRlbnRpdHk7CisgICAgICAgICAvKiBN YXggbnVtYmVyIG9mIGJ5dGVzIHRoYXQgY2FuIGJlIHNlbnQgYXMgZWFybHkgZGF0YSAqLworICAg ICAgICAgdWludDMyX3QgbWF4X2Vhcmx5X2RhdGE7CisgICAgICAgICAvKiBUaGUgQUxQTiBwcm90 b2NvbCBzZWxlY3RlZCBmb3IgdGhpcyBzZXNzaW9uICovCitAQCAtMTM1Niw2ICsxMzU1LDEzIEBA IHN0cnVjdCBzc2xfc3QgeworICAgICAgICAgICogYXMgdGhpcyBleHRlbnNpb24gaXMgb3B0aW9u YWwgb24gc2VydmVyIHNpZGUuCisgICAgICAgICAgKi8KKyAgICAgICAgIHVpbnQ4X3QgbWF4X2Zy YWdtZW50X2xlbl9tb2RlOworKworKyAgICAgICAgLyoKKysgICAgICAgICAqIE9uIHRoZSBjbGll bnQgc2lkZSB0aGUgbnVtYmVyIG9mIHRpY2tldCBpZGVudGl0aWVzIHdlIHNlbnQgaW4gdGhlCisr ICAgICAgICAgKiBDbGllbnRIZWxsby4gT24gdGhlIHNlcnZlciBzaWRlIHRoZSBpZGVudGl0eSBv ZiB0aGUgdGlja2V0IHdlCisrICAgICAgICAgKiBzZWxlY3RlZC4KKysgICAgICAgICAqLworKyAg ICAgICAgaW50IHRpY2tfaWRlbnRpdHk7CisgICAgIH0gZXh0OworIAorICAgICAvKgorQEAgLTIw NTIsOSArMjA1OCw2IEBAIHR5cGVkZWYgZW51bSBkb3duZ3JhZGVfZW4geworICNkZWZpbmUgVExT RVhUX0tFWF9NT0RFX0ZMQUdfS0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisg I2RlZmluZSBUTFNFWFRfS0VYX01PREVfRkxBR19LRV9ESEUgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDIKKyAKKy0vKiBBbiBpbnZhbGlkIGluZGV4IGludG8gdGhlIFRMU3YxLjMgUFNLIGlk ZW50aXRpZXMgKi8KKy0jZGVmaW5lIFRMU0VYVF9QU0tfQkFEX0lERU5USVRZICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLTEKKy0KKyAjZGVmaW5lIFNTTF9VU0VfUFNTKHMpIChzLT5z My0+dG1wLnBlZXJfc2lnYWxnICE9IE5VTEwgJiYgXAorICAgICAgICAgICAgICAgICAgICAgICAg IHMtPnMzLT50bXAucGVlcl9zaWdhbGctPnNpZyA9PSBFVlBfUEtFWV9SU0FfUFNTKQorIAorZGlm ZiAtdXAgb3BlbnNzbC0xLjEuMWIvc3NsL3N0YXRlbS9leHRlbnNpb25zX2NsbnQuYy5zeW5jIG9w ZW5zc2wtMS4xLjFiL3NzbC9zdGF0ZW0vZXh0ZW5zaW9uc19jbG50LmMKKy0tLSBvcGVuc3NsLTEu MS4xYi9zc2wvc3RhdGVtL2V4dGVuc2lvbnNfY2xudC5jLnN5bmMJMjAxOS0wMi0yNiAxNToxNToz MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4xYi9zc2wvc3RhdGVtL2V4dGVuc2lv bnNfY2xudC5jCTIwMTktMDUtMDMgMDg6NTU6NTEuNTQyNDA2ODMxICswMjAwCitAQCAtOTkzLDcg Kzk5Myw3IEBAIEVYVF9SRVRVUk4gdGxzX2NvbnN0cnVjdF9jdG9zX3BzayhTU0wgKnMKKyAgICAg Y29uc3QgRVZQX01EICpoYW5kbWQgPSBOVUxMLCAqbWRyZXMgPSBOVUxMLCAqbWRwc2sgPSBOVUxM OworICAgICBpbnQgZG9yZXMgPSAwOworIAorLSAgICBzLT5zZXNzaW9uLT5leHQudGlja19pZGVu dGl0eSA9IFRMU0VYVF9QU0tfQkFEX0lERU5USVRZOworKyAgICBzLT5leHQudGlja19pZGVudGl0 eSA9IDA7CisgCisgICAgIC8qCisgICAgICAqIE5vdGU6IEF0IHRoaXMgc3RhZ2Ugb2YgdGhlIGNv ZGUgd2Ugb25seSBzdXBwb3J0IGFkZGluZyBhIHNpbmdsZQorQEAgLTEwODMsNiArMTA4Myw3IEBA IEVYVF9SRVRVUk4gdGxzX2NvbnN0cnVjdF9jdG9zX3BzayhTU0wgKnMKKyAgICAgICAgIGFnZW1z ICs9IHMtPnNlc3Npb24tPmV4dC50aWNrX2FnZV9hZGQ7CisgCisgICAgICAgICByZXNoYXNoc2l6 ZSA9IEVWUF9NRF9zaXplKG1kcmVzKTsKKysgICAgICAgIHMtPmV4dC50aWNrX2lkZW50aXR5Kys7 CisgICAgICAgICBkb3JlcyA9IDE7CisgICAgIH0KKyAKK0BAIC0xMTQyLDYgKzExNDMsNyBAQCBF WFRfUkVUVVJOIHRsc19jb25zdHJ1Y3RfY3Rvc19wc2soU1NMICpzCisgICAgICAgICAgICAgICAg ICAgICAgRVJSX1JfSU5URVJOQUxfRVJST1IpOworICAgICAgICAgICAgIHJldHVybiBFWFRfUkVU VVJOX0ZBSUw7CisgICAgICAgICB9CisrICAgICAgICBzLT5leHQudGlja19pZGVudGl0eSsrOwor ICAgICB9CisgCisgICAgIGlmICghV1BBQ0tFVF9jbG9zZShwa3QpCitAQCAtMTE4MCwxMSArMTE4 Miw2IEBAIEVYVF9SRVRVUk4gdGxzX2NvbnN0cnVjdF9jdG9zX3BzayhTU0wgKnMKKyAgICAgICAg IHJldHVybiBFWFRfUkVUVVJOX0ZBSUw7CisgICAgIH0KKyAKKy0gICAgaWYgKGRvcmVzKQorLSAg ICAgICAgcy0+c2Vzc2lvbi0+ZXh0LnRpY2tfaWRlbnRpdHkgPSAwOworLSAgICBpZiAocy0+cHNr c2Vzc2lvbiAhPSBOVUxMKQorLSAgICAgICAgcy0+cHNrc2Vzc2lvbi0+ZXh0LnRpY2tfaWRlbnRp dHkgPSAoZG9yZXMgPyAxIDogMCk7CistCisgICAgIHJldHVybiBFWFRfUkVUVVJOX1NFTlQ7Cisg I2Vsc2UKKyAgICAgcmV0dXJuIEVYVF9SRVRVUk5fTk9UX1NFTlQ7CitAQCAtMTkyNyw4ICsxOTI0 LDcgQEAgaW50IHRsc19wYXJzZV9zdG9jX2Vhcmx5X2RhdGEoU1NMICpzLCBQQQorICAgICB9Cisg CisgICAgIGlmICghcy0+ZXh0LmVhcmx5X2RhdGFfb2sKKy0gICAgICAgICAgICB8fCAhcy0+aGl0 CistICAgICAgICAgICAgfHwgcy0+c2Vzc2lvbi0+ZXh0LnRpY2tfaWRlbnRpdHkgIT0gMCkgewor KyAgICAgICAgICAgIHx8ICFzLT5oaXQpIHsKKyAgICAgICAgIC8qCisgICAgICAgICAgKiBJZiB3 ZSBnZXQgaGVyZSB0aGVuIHdlIGRpZG4ndCBzZW5kIGVhcmx5IGRhdGEsIG9yIHdlIGRpZG4ndCBy ZXN1bWUKKyAgICAgICAgICAqIHVzaW5nIHRoZSBmaXJzdCBpZGVudGl0eSwgb3IgdGhlIFNOSS9B TFBOIGlzIG5vdCBjb25zaXN0ZW50IHNvIHRoZQorQEAgLTE5NTYsMTcgKzE5NTIsMjggQEAgaW50 IHRsc19wYXJzZV9zdG9jX3BzayhTU0wgKnMsIFBBQ0tFVCAqcAorICAgICAgICAgcmV0dXJuIDA7 CisgICAgIH0KKyAKKy0gICAgaWYgKHMtPnNlc3Npb24tPmV4dC50aWNrX2lkZW50aXR5ID09IChp bnQpaWRlbnRpdHkpIHsKKysgICAgaWYgKGlkZW50aXR5ID49ICh1bnNpZ25lZCBpbnQpcy0+ZXh0 LnRpY2tfaWRlbnRpdHkpIHsKKysgICAgICAgIFNTTGZhdGFsKHMsIFNTTF9BRF9JTExFR0FMX1BB UkFNRVRFUiwgU1NMX0ZfVExTX1BBUlNFX1NUT0NfUFNLLAorKyAgICAgICAgICAgICAgICAgU1NM X1JfQkFEX1BTS19JREVOVElUWSk7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAg ICAvKgorKyAgICAgKiBTZXNzaW9uIHJlc3VtcHRpb24gdGlja2V0cyBhcmUgYWx3YXlzIHNlbnQg YmVmb3JlIFBTSyB0aWNrZXRzLiBJZiB0aGUKKysgICAgICogdGlja2V0IGluZGV4IGlzIDAgdGhl biBpdCBtdXN0IGJlIGZvciBhIHNlc3Npb24gcmVzdW1wdGlvbiB0aWNrZXQgaWYgd2UKKysgICAg ICogc2VudCB0d28gdGlja2V0cywgb3IgaWYgd2UgZGlkbid0IHNlbmQgYSBQU0sgdGlja2V0Lgor KyAgICAgKi8KKysgICAgaWYgKGlkZW50aXR5ID09IDAgJiYgKHMtPnBza3Nlc3Npb24gPT0gTlVM TCB8fCBzLT5leHQudGlja19pZGVudGl0eSA9PSAyKSkgeworICAgICAgICAgcy0+aGl0ID0gMTsK KyAgICAgICAgIFNTTF9TRVNTSU9OX2ZyZWUocy0+cHNrc2Vzc2lvbik7CisgICAgICAgICBzLT5w c2tzZXNzaW9uID0gTlVMTDsKKyAgICAgICAgIHJldHVybiAxOworICAgICB9CisgCistICAgIGlm IChzLT5wc2tzZXNzaW9uID09IE5VTEwKKy0gICAgICAgICAgICB8fCBzLT5wc2tzZXNzaW9uLT5l eHQudGlja19pZGVudGl0eSAhPSAoaW50KWlkZW50aXR5KSB7CistICAgICAgICBTU0xmYXRhbChz LCBTU0xfQURfSUxMRUdBTF9QQVJBTUVURVIsIFNTTF9GX1RMU19QQVJTRV9TVE9DX1BTSywKKy0g ICAgICAgICAgICAgICAgIFNTTF9SX0JBRF9QU0tfSURFTlRJVFkpOworKyAgICBpZiAocy0+cHNr c2Vzc2lvbiA9PSBOVUxMKSB7CisrICAgICAgICAvKiBTaG91bGQgbmV2ZXIgaGFwcGVuICovCisr ICAgICAgICBTU0xmYXRhbChzLCBTU0xfQURfSU5URVJOQUxfRVJST1IsIFNTTF9GX1RMU19QQVJT RV9TVE9DX1BTSywKKysgICAgICAgICAgICAgICAgIEVSUl9SX0lOVEVSTkFMX0VSUk9SKTsKKyAg ICAgICAgIHJldHVybiAwOworICAgICB9CisgCitAQCAtMTk4NSw2ICsxOTkyLDkgQEAgaW50IHRs c19wYXJzZV9zdG9jX3BzayhTU0wgKnMsIFBBQ0tFVCAqcAorICAgICBzLT5zZXNzaW9uID0gcy0+ cHNrc2Vzc2lvbjsKKyAgICAgcy0+cHNrc2Vzc2lvbiA9IE5VTEw7CisgICAgIHMtPmhpdCA9IDE7 CisrICAgIC8qIEVhcmx5IGRhdGEgaXMgb25seSBhbGxvd2VkIGlmIHdlIHVzZWQgdGhlIGZpcnN0 IHRpY2tldCAqLworKyAgICBpZiAoaWRlbnRpdHkgIT0gMCkKKysgICAgICAgIHMtPmV4dC5lYXJs eV9kYXRhX29rID0gMDsKKyAjZW5kaWYKKyAKKyAgICAgcmV0dXJuIDE7CitkaWZmIC11cCBvcGVu c3NsLTEuMS4xYi9zc2wvc3RhdGVtL2V4dGVuc2lvbnMuYy5zeW5jIG9wZW5zc2wtMS4xLjFiL3Nz bC9zdGF0ZW0vZXh0ZW5zaW9ucy5jCistLS0gb3BlbnNzbC0xLjEuMWIvc3NsL3N0YXRlbS9leHRl bnNpb25zLmMuc3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAorKysrIG9w ZW5zc2wtMS4xLjFiL3NzbC9zdGF0ZW0vZXh0ZW5zaW9ucy5jCTIwMTktMDUtMDMgMDg6NTU6NTEu NTQxNDA2ODQ4ICswMjAwCitAQCAtOTg5LDcgKzk4OSw2IEBAIHN0YXRpYyBpbnQgZmluYWxfc2Vy dmVyX25hbWUoU1NMICpzLCB1bnMKKyAgICAgICAgICAgICAgICAgc3MtPmV4dC50aWNrbGVuID0g MDsKKyAgICAgICAgICAgICAgICAgc3MtPmV4dC50aWNrX2xpZmV0aW1lX2hpbnQgPSAwOworICAg ICAgICAgICAgICAgICBzcy0+ZXh0LnRpY2tfYWdlX2FkZCA9IDA7CistICAgICAgICAgICAgICAg IHNzLT5leHQudGlja19pZGVudGl0eSA9IDA7CisgICAgICAgICAgICAgICAgIGlmICghc3NsX2dl bmVyYXRlX3Nlc3Npb25faWQocywgc3MpKSB7CisgICAgICAgICAgICAgICAgICAgICBTU0xmYXRh bChzLCBTU0xfQURfSU5URVJOQUxfRVJST1IsIFNTTF9GX0ZJTkFMX1NFUlZFUl9OQU1FLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRVJSX1JfSU5URVJOQUxfRVJST1IpOworQEAgLTE2 NDYsNyArMTY0NSw2IEBAIHN0YXRpYyBpbnQgZmluYWxfZWFybHlfZGF0YShTU0wgKnMsIHVuc2kK KyAKKyAgICAgaWYgKHMtPm1heF9lYXJseV9kYXRhID09IDAKKyAgICAgICAgICAgICB8fCAhcy0+ aGl0CistICAgICAgICAgICAgfHwgcy0+c2Vzc2lvbi0+ZXh0LnRpY2tfaWRlbnRpdHkgIT0gMAor ICAgICAgICAgICAgIHx8IHMtPmVhcmx5X2RhdGFfc3RhdGUgIT0gU1NMX0VBUkxZX0RBVEFfQUND RVBUSU5HCisgICAgICAgICAgICAgfHwgIXMtPmV4dC5lYXJseV9kYXRhX29rCisgICAgICAgICAg ICAgfHwgcy0+aGVsbG9fcmV0cnlfcmVxdWVzdCAhPSBTU0xfSFJSX05PTkUKK2RpZmYgLXVwIG9w ZW5zc2wtMS4xLjFiL3NzbC9zdGF0ZW0vZXh0ZW5zaW9uc19zcnZyLmMuc3luYyBvcGVuc3NsLTEu MS4xYi9zc2wvc3RhdGVtL2V4dGVuc2lvbnNfc3J2ci5jCistLS0gb3BlbnNzbC0xLjEuMWIvc3Ns L3N0YXRlbS9leHRlbnNpb25zX3NydnIuYy5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAw MDAwICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWIvc3NsL3N0YXRlbS9leHRlbnNpb25zX3NydnIu YwkyMDE5LTA1LTAzIDA4OjU1OjUxLjU0MjQwNjgzMSArMDIwMAorQEAgLTEyNzQsNyArMTI3NCw3 IEBAIGludCB0bHNfcGFyc2VfY3Rvc19wc2soU1NMICpzLCBQQUNLRVQgKnAKKyAgICAgICAgIGdv dG8gZXJyOworICAgICB9CisgCistICAgIHNlc3MtPmV4dC50aWNrX2lkZW50aXR5ID0gaWQ7Cisr ICAgIHMtPmV4dC50aWNrX2lkZW50aXR5ID0gaWQ7CisgCisgICAgIFNTTF9TRVNTSU9OX2ZyZWUo cy0+c2Vzc2lvbik7CisgICAgIHMtPnNlc3Npb24gPSBzZXNzOworQEAgLTE5NDgsNyArMTk0OCw3 IEBAIEVYVF9SRVRVUk4gdGxzX2NvbnN0cnVjdF9zdG9jX3BzayhTU0wgKnMKKyAKKyAgICAgaWYg KCFXUEFDS0VUX3B1dF9ieXRlc191MTYocGt0LCBUTFNFWFRfVFlQRV9wc2spCisgICAgICAgICAg ICAgfHwgIVdQQUNLRVRfc3RhcnRfc3ViX3BhY2tldF91MTYocGt0KQorLSAgICAgICAgICAgIHx8 ICFXUEFDS0VUX3B1dF9ieXRlc191MTYocGt0LCBzLT5zZXNzaW9uLT5leHQudGlja19pZGVudGl0 eSkKKysgICAgICAgICAgICB8fCAhV1BBQ0tFVF9wdXRfYnl0ZXNfdTE2KHBrdCwgcy0+ZXh0LnRp Y2tfaWRlbnRpdHkpCisgICAgICAgICAgICAgfHwgIVdQQUNLRVRfY2xvc2UocGt0KSkgeworICAg ICAgICAgU1NMZmF0YWwocywgU1NMX0FEX0lOVEVSTkFMX0VSUk9SLAorICAgICAgICAgICAgICAg ICAgU1NMX0ZfVExTX0NPTlNUUlVDVF9TVE9DX1BTSywgRVJSX1JfSU5URVJOQUxfRVJST1IpOwor ZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvc3NsL3N0YXRlbS9zdGF0ZW1fY2xudC5jLnN5bmMgb3Bl bnNzbC0xLjEuMWIvc3NsL3N0YXRlbS9zdGF0ZW1fY2xudC5jCistLS0gb3BlbnNzbC0xLjEuMWIv c3NsL3N0YXRlbS9zdGF0ZW1fY2xudC5jLnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAw MDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4xYi9zc2wvc3RhdGVtL3N0YXRlbV9jbG50LmMJMjAx OS0wNS0wMyAwODo1NTo1MS41NDM0MDY4MTQgKzAyMDAKK0BAIC0xNjEzLDEwICsxNjEzLDcgQEAg TVNHX1BST0NFU1NfUkVUVVJOIHRsc19wcm9jZXNzX3NlcnZlcl9oZQorICAgICAgICAgICogc28g dGhlIFBBQy1iYXNlZCBzZXNzaW9uIHNlY3JldCBpcyBhbHdheXMgcHJlc2VydmVkLiBJdCdsbCBi ZQorICAgICAgICAgICogb3ZlcndyaXR0ZW4gaWYgdGhlIHNlcnZlciByZWZ1c2VzIHJlc3VtcHRp b24uCisgICAgICAgICAgKi8KKy0gICAgICAgIGlmIChzLT5zZXNzaW9uLT5zZXNzaW9uX2lkX2xl bmd0aCA+IDAKKy0gICAgICAgICAgICAgICAgfHwgKFNTTF9JU19UTFMxMyhzKQorLSAgICAgICAg ICAgICAgICAgICAgJiYgcy0+c2Vzc2lvbi0+ZXh0LnRpY2tfaWRlbnRpdHkKKy0gICAgICAgICAg ICAgICAgICAgICAgICE9IFRMU0VYVF9QU0tfQkFEX0lERU5USVRZKSkgeworKyAgICAgICAgaWYg KHMtPnNlc3Npb24tPnNlc3Npb25faWRfbGVuZ3RoID4gMCkgeworICAgICAgICAgICAgIHRzYW5f Y291bnRlcigmcy0+c2Vzc2lvbl9jdHgtPnN0YXRzLnNlc3NfbWlzcyk7CisgICAgICAgICAgICAg aWYgKCFzc2xfZ2V0X25ld19zZXNzaW9uKHMsIDApKSB7CisgICAgICAgICAgICAgICAgIC8qIFNT TGZhdGFsKCkgYWxyZWFkeSBjYWxsZWQgKi8KK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL3Rlc3Qv YmlvX21lbWxlYWtfdGVzdC5jLnN5bmMgb3BlbnNzbC0xLjEuMWIvdGVzdC9iaW9fbWVtbGVha190 ZXN0LmMKKy0tLSBvcGVuc3NsLTEuMS4xYi90ZXN0L2Jpb19tZW1sZWFrX3Rlc3QuYy5zeW5jCTIw MTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWIvdGVz dC9iaW9fbWVtbGVha190ZXN0LmMJMjAxOS0wNS0wMyAwODo1NTo1MS41NTY0MDY1OTEgKzAyMDAK K0BAIC0xOCwyOCArMTgsMTcwIEBAIHN0YXRpYyBpbnQgdGVzdF9iaW9fbWVtbGVhayh2b2lkKQor ICAgICBpbnQgb2sgPSAwOworICAgICBCSU8gKmJpbzsKKyAgICAgQlVGX01FTSBidWZtZW07Cist ICAgIGNvbnN0IGNoYXIgKnN0ciA9ICJCSU8gdGVzdFxuIjsKKysgICAgc3RhdGljIGNvbnN0IGNo YXIgc3RyW10gPSAiQklPIHRlc3RcbiI7CisgICAgIGNoYXIgYnVmWzEwMF07CisgCisgICAgIGJp byA9IEJJT19uZXcoQklPX3NfbWVtKCkpOworLSAgICBpZiAoYmlvID09IE5VTEwpCisrICAgIGlm ICghVEVTVF9wdHIoYmlvKSkKKyAgICAgICAgIGdvdG8gZmluaXNoOworLSAgICBidWZtZW0ubGVu Z3RoID0gc3RybGVuKHN0cikgKyAxOworKyAgICBidWZtZW0ubGVuZ3RoID0gc2l6ZW9mKHN0cik7 CisgICAgIGJ1Zm1lbS5kYXRhID0gKGNoYXIgKikgc3RyOworICAgICBidWZtZW0ubWF4ID0gYnVm bWVtLmxlbmd0aDsKKyAgICAgQklPX3NldF9tZW1fYnVmKGJpbywgJmJ1Zm1lbSwgQklPX05PQ0xP U0UpOworICAgICBCSU9fc2V0X2ZsYWdzKGJpbywgQklPX0ZMQUdTX01FTV9SRE9OTFkpOworKyAg ICBpZiAoIVRFU1RfaW50X2VxKEJJT19yZWFkKGJpbywgYnVmLCBzaXplb2YoYnVmKSksIHNpemVv ZihzdHIpKSkKKysgICAgICAgIGdvdG8gZmluaXNoOworKyAgICBpZiAoIVRFU1RfbWVtX2VxKGJ1 Ziwgc2l6ZW9mKHN0ciksIHN0ciwgc2l6ZW9mKHN0cikpKQorKyAgICAgICAgZ290byBmaW5pc2g7 CisrICAgIG9rID0gMTsKKyAKKy0gICAgaWYgKEJJT19yZWFkKGJpbywgYnVmLCBzaXplb2YoYnVm KSkgPD0gMCkKKy0JZ290byBmaW5pc2g7CisrZmluaXNoOgorKyAgICBCSU9fZnJlZShiaW8pOwor KyAgICByZXR1cm4gb2s7CisrfQorIAorLSAgICBvayA9IHN0cmNtcChidWYsIHN0cikgPT0gMDsK KytzdGF0aWMgaW50IHRlc3RfYmlvX2dldF9tZW0odm9pZCkKKyt7CisrICAgIGludCBvayA9IDA7 CisrICAgIEJJTyAqYmlvID0gTlVMTDsKKysgICAgQlVGX01FTSAqYnVmbWVtID0gTlVMTDsKKysK KysgICAgYmlvID0gQklPX25ldyhCSU9fc19tZW0oKSk7CisrICAgIGlmICghVEVTVF9wdHIoYmlv KSkKKysgICAgICAgIGdvdG8gZmluaXNoOworKyAgICBpZiAoIVRFU1RfaW50X2VxKEJJT19wdXRz KGJpbywgIkhlbGxvIFdvcmxkXG4iKSwgMTIpKQorKyAgICAgICAgZ290byBmaW5pc2g7CisrICAg IEJJT19nZXRfbWVtX3B0cihiaW8sICZidWZtZW0pOworKyAgICBpZiAoIVRFU1RfcHRyKGJ1Zm1l bSkpCisrICAgICAgICBnb3RvIGZpbmlzaDsKKysgICAgaWYgKCFURVNUX2ludF9ndChCSU9fc2V0 X2Nsb3NlKGJpbywgQklPX05PQ0xPU0UpLCAwKSkKKysgICAgICAgIGdvdG8gZmluaXNoOworKyAg ICBCSU9fZnJlZShiaW8pOworKyAgICBiaW8gPSBOVUxMOworKyAgICBpZiAoIVRFU1RfbWVtX2Vx KGJ1Zm1lbS0+ZGF0YSwgYnVmbWVtLT5sZW5ndGgsICJIZWxsbyBXb3JsZFxuIiwgMTIpKQorKyAg ICAgICAgZ290byBmaW5pc2g7CisrICAgIG9rID0gMTsKKyAKKyBmaW5pc2g6CisgICAgIEJJT19m cmVlKGJpbyk7CisrICAgIEJVRl9NRU1fZnJlZShidWZtZW0pOworICAgICByZXR1cm4gb2s7Cisg fQorIAorK3N0YXRpYyBpbnQgdGVzdF9iaW9fbmV3X21lbV9idWYodm9pZCkKKyt7CisrICAgIGlu dCBvayA9IDA7CisrICAgIEJJTyAqYmlvOworKyAgICBCVUZfTUVNICpidWZtZW07CisrICAgIGNo YXIgZGF0YVsxNl07CisrCisrICAgIGJpbyA9IEJJT19uZXdfbWVtX2J1ZigiSGVsbG8gV29ybGRc biIsIDEyKTsKKysgICAgaWYgKCFURVNUX3B0cihiaW8pKQorKyAgICAgICAgZ290byBmaW5pc2g7 CisrICAgIGlmICghVEVTVF9pbnRfZXEoQklPX3JlYWQoYmlvLCBkYXRhLCA1KSwgNSkpCisrICAg ICAgICBnb3RvIGZpbmlzaDsKKysgICAgaWYgKCFURVNUX21lbV9lcShkYXRhLCA1LCAiSGVsbG8i LCA1KSkKKysgICAgICAgIGdvdG8gZmluaXNoOworKyAgICBpZiAoIVRFU1RfaW50X2d0KEJJT19n ZXRfbWVtX3B0cihiaW8sICZidWZtZW0pLCAwKSkKKysgICAgICAgIGdvdG8gZmluaXNoOworKyAg ICBpZiAoIVRFU1RfaW50X2x0KEJJT193cml0ZShiaW8sICJ0ZXN0IiwgNCksIDApKQorKyAgICAg ICAgZ290byBmaW5pc2g7CisrICAgIGlmICghVEVTVF9pbnRfZXEoQklPX3JlYWQoYmlvLCBkYXRh LCAxNiksIDcpKQorKyAgICAgICAgZ290byBmaW5pc2g7CisrICAgIGlmICghVEVTVF9tZW1fZXEo ZGF0YSwgNywgIiBXb3JsZFxuIiwgNykpCisrICAgICAgICBnb3RvIGZpbmlzaDsKKysgICAgaWYg KCFURVNUX2ludF9ndChCSU9fcmVzZXQoYmlvKSwgMCkpCisrICAgICAgICBnb3RvIGZpbmlzaDsK KysgICAgaWYgKCFURVNUX2ludF9lcShCSU9fcmVhZChiaW8sIGRhdGEsIDE2KSwgMTIpKQorKyAg ICAgICAgZ290byBmaW5pc2g7CisrICAgIGlmICghVEVTVF9tZW1fZXEoZGF0YSwgMTIsICJIZWxs byBXb3JsZFxuIiwgMTIpKQorKyAgICAgICAgZ290byBmaW5pc2g7CisrICAgIG9rID0gMTsKKysK KytmaW5pc2g6CisrICAgIEJJT19mcmVlKGJpbyk7CisrICAgIHJldHVybiBvazsKKyt9CisrCisr c3RhdGljIGludCB0ZXN0X2Jpb19yZG9ubHlfbWVtX2J1Zih2b2lkKQorK3sKKysgICAgaW50IG9r ID0gMDsKKysgICAgQklPICpiaW8sICpiaW8yID0gTlVMTDsKKysgICAgQlVGX01FTSAqYnVmbWVt OworKyAgICBjaGFyIGRhdGFbMTZdOworKworKyAgICBiaW8gPSBCSU9fbmV3X21lbV9idWYoIkhl bGxvIFdvcmxkXG4iLCAxMik7CisrICAgIGlmICghVEVTVF9wdHIoYmlvKSkKKysgICAgICAgIGdv dG8gZmluaXNoOworKyAgICBpZiAoIVRFU1RfaW50X2VxKEJJT19yZWFkKGJpbywgZGF0YSwgNSks IDUpKQorKyAgICAgICAgZ290byBmaW5pc2g7CisrICAgIGlmICghVEVTVF9tZW1fZXEoZGF0YSwg NSwgIkhlbGxvIiwgNSkpCisrICAgICAgICBnb3RvIGZpbmlzaDsKKysgICAgaWYgKCFURVNUX2lu dF9ndChCSU9fZ2V0X21lbV9wdHIoYmlvLCAmYnVmbWVtKSwgMCkpCisrICAgICAgICBnb3RvIGZp bmlzaDsKKysgICAgKHZvaWQpQklPX3NldF9jbG9zZShiaW8sIEJJT19OT0NMT1NFKTsKKysKKysg ICAgYmlvMiA9IEJJT19uZXcoQklPX3NfbWVtKCkpOworKyAgICBpZiAoIVRFU1RfcHRyKGJpbzIp KQorKyAgICAgICAgZ290byBmaW5pc2g7CisrICAgIEJJT19zZXRfbWVtX2J1ZihiaW8yLCBidWZt ZW0sIEJJT19DTE9TRSk7CisrICAgIEJJT19zZXRfZmxhZ3MoYmlvMiwgQklPX0ZMQUdTX01FTV9S RE9OTFkpOworKworKyAgICBpZiAoIVRFU1RfaW50X2VxKEJJT19yZWFkKGJpbzIsIGRhdGEsIDE2 KSwgNykpCisrICAgICAgICBnb3RvIGZpbmlzaDsKKysgICAgaWYgKCFURVNUX21lbV9lcShkYXRh LCA3LCAiIFdvcmxkXG4iLCA3KSkKKysgICAgICAgIGdvdG8gZmluaXNoOworKyAgICBpZiAoIVRF U1RfaW50X2d0KEJJT19yZXNldChiaW8yKSwgMCkpCisrICAgICAgICBnb3RvIGZpbmlzaDsKKysg ICAgaWYgKCFURVNUX2ludF9lcShCSU9fcmVhZChiaW8yLCBkYXRhLCAxNiksIDcpKQorKyAgICAg ICAgZ290byBmaW5pc2g7CisrICAgIGlmICghVEVTVF9tZW1fZXEoZGF0YSwgNywgIiBXb3JsZFxu IiwgNykpCisrICAgICAgICBnb3RvIGZpbmlzaDsKKysgICAgb2sgPSAxOworKworK2ZpbmlzaDoK KysgICAgQklPX2ZyZWUoYmlvKTsKKysgICAgQklPX2ZyZWUoYmlvMik7CisrICAgIHJldHVybiBv azsKKyt9CisrCisrc3RhdGljIGludCB0ZXN0X2Jpb19yZHdyX3Jkb25seSh2b2lkKQorK3sKKysg ICAgaW50IG9rID0gMDsKKysgICAgQklPICpiaW8gPSBOVUxMOworKyAgICBjaGFyIGRhdGFbMTZd OworKworKyAgICBiaW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKKysgICAgaWYgKCFURVNUX3B0 cihiaW8pKQorKyAgICAgICAgZ290byBmaW5pc2g7CisrICAgIGlmICghVEVTVF9pbnRfZXEoQklP X3B1dHMoYmlvLCAiSGVsbG8gV29ybGRcbiIpLCAxMikpCisrICAgICAgICBnb3RvIGZpbmlzaDsK KysKKysgICAgQklPX3NldF9mbGFncyhiaW8sIEJJT19GTEFHU19NRU1fUkRPTkxZKTsKKysgICAg aWYgKCFURVNUX2ludF9lcShCSU9fcmVhZChiaW8sIGRhdGEsIDE2KSwgMTIpKQorKyAgICAgICAg Z290byBmaW5pc2g7CisrICAgIGlmICghVEVTVF9tZW1fZXEoZGF0YSwgMTIsICJIZWxsbyBXb3Js ZFxuIiwgMTIpKQorKyAgICAgICAgZ290byBmaW5pc2g7CisrICAgIGlmICghVEVTVF9pbnRfZ3Qo QklPX3Jlc2V0KGJpbyksIDApKQorKyAgICAgICAgZ290byBmaW5pc2g7CisrCisrICAgIEJJT19j bGVhcl9mbGFncyhiaW8sIEJJT19GTEFHU19NRU1fUkRPTkxZKTsKKysgICAgaWYgKCFURVNUX2lu dF9lcShCSU9fcHV0cyhiaW8sICJIaSFcbiIpLCA0KSkKKysgICAgICAgIGdvdG8gZmluaXNoOwor KyAgICBpZiAoIVRFU1RfaW50X2VxKEJJT19yZWFkKGJpbywgZGF0YSwgMTYpLCAxNikpCisrICAg ICAgICBnb3RvIGZpbmlzaDsKKysKKysgICAgaWYgKCFURVNUX21lbV9lcShkYXRhLCAxNiwgIkhl bGxvIFdvcmxkXG5IaSFcbiIsIDE2KSkKKysgICAgICAgIGdvdG8gZmluaXNoOworKworKyAgICBv ayA9IDE7CisrCisrZmluaXNoOgorKyAgICBCSU9fZnJlZShiaW8pOworKyAgICByZXR1cm4gb2s7 CisrfQorKworKworIGludCBnbG9iYWxfaW5pdCh2b2lkKQorIHsKKyAgICAgQ1JZUFRPX3NldF9t ZW1fZGVidWcoMSk7CitAQCAtNTAsNSArMTkyLDkgQEAgaW50IGdsb2JhbF9pbml0KHZvaWQpCisg aW50IHNldHVwX3Rlc3RzKHZvaWQpCisgeworICAgICBBRERfVEVTVCh0ZXN0X2Jpb19tZW1sZWFr KTsKKysgICAgQUREX1RFU1QodGVzdF9iaW9fZ2V0X21lbSk7CisrICAgIEFERF9URVNUKHRlc3Rf YmlvX25ld19tZW1fYnVmKTsKKysgICAgQUREX1RFU1QodGVzdF9iaW9fcmRvbmx5X21lbV9idWYp OworKyAgICBBRERfVEVTVCh0ZXN0X2Jpb19yZHdyX3Jkb25seSk7CisgICAgIHJldHVybiAxOwor IH0KK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL3Rlc3QvZWN0ZXN0LmMuc3luYyBvcGVuc3NsLTEu MS4xYi90ZXN0L2VjdGVzdC5jCistLS0gb3BlbnNzbC0xLjEuMWIvdGVzdC9lY3Rlc3QuYy5zeW5j CTIwMTktMDUtMDMgMDg6NTU6NDUuMTI3NTE2OTYyICswMjAwCisrKysgb3BlbnNzbC0xLjEuMWIv dGVzdC9lY3Rlc3QuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjUyNDQwNzE0MCArMDIwMAorQEAgLTcy OCw2ICs3MjgsNzQgQEAgZXJyOgorICAgICBCTl9DVFhfZnJlZShjdHgpOworICAgICByZXR1cm4g cjsKKyB9CisrCisrLyoKKysgKiBUZXN0cyBhIHBvaW50IGtub3duIHRvIGNhdXNlIGFuIGluY29y cmVjdCB1bmRlcmZsb3cgaW4gYW4gb2xkIHZlcnNpb24gb2YKKysgKiBlY3BfbmlzdDUyMS5jCisr ICovCisrc3RhdGljIGludCB1bmRlcmZsb3dfdGVzdCh2b2lkKQorK3sKKysgICAgQk5fQ1RYICpj dHggPSBOVUxMOworKyAgICBFQ19HUk9VUCAqZ3JwID0gTlVMTDsKKysgICAgRUNfUE9JTlQgKlAg PSBOVUxMLCAqUSA9IE5VTEwsICpSID0gTlVMTDsKKysgICAgQklHTlVNICp4MSA9IE5VTEwsICp5 MSA9IE5VTEwsICp6MSA9IE5VTEwsICp4MiA9IE5VTEwsICp5MiA9IE5VTEw7CisrICAgIEJJR05V TSAqayA9IE5VTEw7CisrICAgIGludCB0ZXN0cmVzdWx0ID0gMDsKKysgICAgY29uc3QgY2hhciAq eDFzdHIgPQorKyAgICAgICAgIjE1MzRmMDA3N2ZmZmZmZTg3ZTlhZGNmZTAwMDAwMDAwMDAwMDAw MDAwMDAwM2UwNWEyMWQyNDAwMDAyZTAzMWIxZjQiCisrICAgICAgICAiYjgwMDAwYzZmYWZhNGYz YzEyODg3OThkNjI0YTI0N2I1ZTJmZmZmZmZmZmZmZmZmZmVmZTA5OTI0MTkwMDAwNCI7CisrICAg IGNvbnN0IGNoYXIgKnA1MjFtMSA9CisrICAgICAgICAiMWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZiIKKysgICAgICAgICJm ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm ZmZmZmZlIjsKKysKKysgICAgY3R4ID0gQk5fQ1RYX25ldygpOworKyAgICBpZiAoIVRFU1RfcHRy KGN0eCkpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgQk5fQ1RYX3N0YXJ0KGN0eCk7Cisr ICAgIHgxID0gQk5fQ1RYX2dldChjdHgpOworKyAgICB5MSA9IEJOX0NUWF9nZXQoY3R4KTsKKysg ICAgejEgPSBCTl9DVFhfZ2V0KGN0eCk7CisrICAgIHgyID0gQk5fQ1RYX2dldChjdHgpOworKyAg ICB5MiA9IEJOX0NUWF9nZXQoY3R4KTsKKysgICAgayA9IEJOX0NUWF9nZXQoY3R4KTsKKysgICAg aWYgKCFURVNUX3B0cihrKSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBncnAgPSBFQ19H Uk9VUF9uZXdfYnlfY3VydmVfbmFtZShOSURfc2VjcDUyMXIxKTsKKysgICAgUCA9IEVDX1BPSU5U X25ldyhncnApOworKyAgICBRID0gRUNfUE9JTlRfbmV3KGdycCk7CisrICAgIFIgPSBFQ19QT0lO VF9uZXcoZ3JwKTsKKysgICAgaWYgKCFURVNUX3B0cihncnApIHx8ICFURVNUX3B0cihQKSB8fCAh VEVTVF9wdHIoUSkgfHwgIVRFU1RfcHRyKFIpKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAg IGlmICghVEVTVF9pbnRfZ3QoQk5faGV4MmJuKCZ4MSwgeDFzdHIpLCAwKQorKyAgICAgICAgICAg IHx8ICFURVNUX2ludF9ndChCTl9oZXgyYm4oJnkxLCBwNTIxbTEpLCAwKQorKyAgICAgICAgICAg IHx8ICFURVNUX2ludF9ndChCTl9oZXgyYm4oJnoxLCBwNTIxbTEpLCAwKQorKyAgICAgICAgICAg IHx8ICFURVNUX2ludF9ndChCTl9oZXgyYm4oJmssICIwMiIpLCAwKQorKyAgICAgICAgICAgIHx8 ICFURVNUX3RydWUoRUNfUE9JTlRfc2V0X0pwcm9qZWN0aXZlX2Nvb3JkaW5hdGVzX0dGcChncnAs IFAsIHgxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB5MSwgejEsIGN0eCkpCisrICAgICAgICAgICAgfHwgIVRFU1Rf dHJ1ZShFQ19QT0lOVF9tdWwoZ3JwLCBRLCBOVUxMLCBQLCBrLCBjdHgpKQorKyAgICAgICAgICAg IHx8ICFURVNUX3RydWUoRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZGluYXRlcyhncnAsIFEsIHgx LCB5MSwgY3R4KSkKKysgICAgICAgICAgICB8fCAhVEVTVF90cnVlKEVDX1BPSU5UX2RibChncnAs IFIsIFAsIGN0eCkpCisrICAgICAgICAgICAgfHwgIVRFU1RfdHJ1ZShFQ19QT0lOVF9nZXRfYWZm aW5lX2Nvb3JkaW5hdGVzKGdycCwgUiwgeDIsIHkyLCBjdHgpKSkKKysgICAgICAgIGdvdG8gZXJy OworKworKyAgICBpZiAoIVRFU1RfaW50X2VxKEJOX2NtcCh4MSwgeDIpLCAwKQorKyAgICAgICAg ICAgIHx8ICFURVNUX2ludF9lcShCTl9jbXAoeTEsIHkyKSwgMCkpCisrICAgICAgICBnb3RvIGVy cjsKKysKKysgICAgdGVzdHJlc3VsdCA9IDE7CisrCisrIGVycjoKKysgICAgQk5fQ1RYX2VuZChj dHgpOworKyAgICBFQ19QT0lOVF9mcmVlKFApOworKyAgICBFQ19QT0lOVF9mcmVlKFEpOworKyAg ICBFQ19HUk9VUF9mcmVlKGdycCk7CisrICAgIEJOX0NUWF9mcmVlKGN0eCk7CisrCisrICAgIHJl dHVybiB0ZXN0cmVzdWx0OworK30KKyAjIGVuZGlmCisgCisgc3RhdGljIGNvbnN0IHVuc2lnbmVk IGNoYXIgcDUyMV9uYW1lZFtdID0geworQEAgLTgzNSw2ICs5MDMsNyBAQCBpbnQgc2V0dXBfdGVz dHModm9pZCkKKyAjIGVuZGlmCisgIyBpZm5kZWYgT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0Nf MTI4CisgICAgIEFERF9BTExfVEVTVFMobmlzdHBfc2luZ2xlX3Rlc3QsIE9TU0xfTkVMRU0obmlz dHBfdGVzdHNfcGFyYW1zKSk7CisrICAgIEFERF9URVNUKHVuZGVyZmxvd190ZXN0KTsKKyAjIGVu ZGlmCisgICAgIEFERF9BTExfVEVTVFMoaW50ZXJuYWxfY3VydmVfdGVzdCwgY3J2X2xlbik7Cisg ICAgIEFERF9BTExfVEVTVFMoaW50ZXJuYWxfY3VydmVfdGVzdF9tZXRob2QsIGNydl9sZW4pOwor ZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvdGVzdC9yZWNpcGVzLzMwLXRlc3RfZXZwX2RhdGEvZXZw Y2lwaC50eHQuc3luYyBvcGVuc3NsLTEuMS4xYi90ZXN0L3JlY2lwZXMvMzAtdGVzdF9ldnBfZGF0 YS9ldnBjaXBoLnR4dAorLS0tIG9wZW5zc2wtMS4xLjFiL3Rlc3QvcmVjaXBlcy8zMC10ZXN0X2V2 cF9kYXRhL2V2cGNpcGgudHh0LnN5bmMJMjAxOS0wMi0yNiAxNToxNTozMC4wMDAwMDAwMDAgKzAx MDAKKysrKyBvcGVuc3NsLTEuMS4xYi90ZXN0L3JlY2lwZXMvMzAtdGVzdF9ldnBfZGF0YS9ldnBj aXBoLnR4dAkyMDE5LTA1LTAzIDA4OjU1OjUxLjU1MjQwNjY1OSArMDIwMAorQEAgLTIyMzIsNyAr MjIzMiw3IEBAIElWID0gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKyBQbGFpbnRl eHQgPSAxMTExMTExMWFhYWFhYWFhMTExMTExMTFiYmJiYmJiYjExMTExMTExY2NjY2NjY2MxMTEx MTExMWRkZGRkZGRkMjIyMjIyMjJhYWFhYWFhYTIyMjIyMjIyYmJiYmJiYmIyMjIyMjIyMmNjY2Nj Y2NjMjIyMjIyMjJkZGRkZGRkZDMzMzMzMzMzYWFhYWFhYWEzMzMzMzMzM2JiYmJiYmJiMzMzMzMz MzNjY2NjY2NjYzMzMzMzMzMzZGRkZGRkZGQ0NDQ0NDQ0NGFhYWFhYWFhNDQ0NDQ0NDRiYmJiYmJi YjQ0NDQ0NDQ0Y2NjY2NjY2M0NDQ0NDQ0NGRkZGRkZGRkNTU1NTU1NTVhYWFhYWFhYTU1NTU1NTU1 YmJiYmJiYmI1NTU1NTU1NWNjY2NjY2NjNTU1NTU1NTVkZGRkZGRkZAorIENpcGhlcnRleHQgPSAz MDAyNmMzMjk2NjYxNDE3MjExNzhiOTljMGExZjFiMmYwNjk0MDI1M2Y3YjMwODllMmEzMGVhODZh YTNjODhmNTk0MGYwNWFkN2VlNDFkNzEzNDdiYjcyNjFlMzQ4ZjE4MzYwNDczZmRmN2Q0ZTc3MjNi ZmZiNDQxMWNjMTNmNmNkZDg5ZjNiYzdiOWM3NjgxNDUwMjJjN2E3NGYxNGQ3YzMwNWNkMDEyYTEw ZjE2MDUwYzIzZjFhZTVjMjNmNDU5OThkMTNmYmFhMDQxZTUxNjE5NTc3ZTA3NzI3NjQ4OTZhNWQ0 NTE2ZDhmZmNlYjNiZjdlMDVmNjEzZWRkOWE2MGNkY2VkYWZmOWNmY2FmNGUwMGQ0NDVhNTQzMzRm NzNhYjJjYWQ5NDRlNTFkMjY2NTQ4ZTYxYzZlYjBhYTFjZAorIAorLVRpdGxlID0gQVJJQSBHQ00g dGVzdCB2ZWN0b3JzIGZyb20gSUVURiBkcmFmdC1pZXRmLWF2dGNvcmUtYXJpYS1zcnRwLTEwCisr VGl0bGUgPSBBUklBIEdDTSB0ZXN0IHZlY3RvcnMgZnJvbSBSRkM4MjY5CisgCisgQ2lwaGVyID0g QVJJQS0xMjgtR0NNCisgS2V5ID0gZTkxZTVlNzVkYTY1NTU0YTQ4MTgxZjM4NDYzNDk1NjIKK0BA IC0yMjUwLDYgKzIyNTAsMzYgQEAgVGFnID0gZTIxMGQ2Y2VkMmNmNDMwZmY4NDE0NzI5MTVlN2Vm NDgKKyBQbGFpbnRleHQgPSBmNTdhZjVmZDRhZTE5NTYyOTc2ZWM1N2E1YTdhZDU1YTVhZjVjNWU1 YzVmZGY1YzU1YWQ1N2E0YTcyNzJkNTcyNjJlOTcyOTU2NmVkNjZlOTdhYzU0YTRhNWE3YWQ1ZTE1 YWU1ZmRkNWZkNWFjNWQ1NmFlNTZhZDVjNTcyZDU0YWU1NGFjNTVhOTU2YWZkNmFlZDVhNGFjNTYy OTU3YTk1MTY5OTE2OTFkNTcyZmQxNGU5N2FlOTYyZWQ3YTlmNGE5NTVhZjU3MmUxNjJmNTdhOTU2 NjY2ZTE3YWUxZjU0YTk1ZjU2NmQ1NGE2NmUxNmU0YWZkNmE5ZjdhZTFjNWM1NWFlNWQ1NmFmZGU5 MTZjNWU5NGE2ZWM1NjY5NWUxNGFmZGUxMTQ4NDE2ZTk0YWQ1N2FjNTE0NmVkNTlkMWNjNQorIENp cGhlcnRleHQgPSA2ZjllNGJjYmM4Yzg1ZmMwMTI4ZmIxZTRhMGEyMGNiOTkzMmZmNzQ1ODFmNTRm YzAxM2RkMDU0YjE5Zjk5MzcxNDI1YjM1MmQ5N2QzZjMzN2I5MGI2M2QxYjA4MmFkZWVlYTlkMmQ3 MzkxODk3ZDU5MWI5ODVlNTVmYjUwY2I1MzUwY2Y3ZDM4ZGMyN2RkYTEyN2MwNzhhMTQ5YzhlYjk4 MDgzZDY2MzYzYTQ2ZTM3MjZhZjIxN2QzYTAwMjc1YWQ1YmY3NzJjNzYxMGVhNGMyMzAwNjg3OGYw ZWU2OWE4Mzk3NzAzMTY5YTQxOTMwM2Y0MGI3MmU0NTczNzE0ZDE5ZTI2OTdkZjYxZTdjNzI1MmU1 YWJjNmJhZGU4NzZhYzQ5NjFiZmFjNGQ1ZTg2N2FmY2EzNTFhNDhhZWQ1MjgyMgorIAorK1RpdGxl ID0gQVJJQSBHQ00gc2VsZi1nZW5lcmF0ZWQgdGVzdCB2ZWN0b3JzCisrCisrQ2lwaGVyID0gQVJJ QS0xMjgtR0NNCisrS2V5ID0gZTkxZTVlNzVkYTY1NTU0YTQ4MTgxZjM4NDYzNDk1NjIKKysjIFNo b3J0ZXIgdGhhbiBkZWZhdWx0IElWCisrSVYgPSAwMDAxMDIwMzA0CisrQUFEID0gODAwODMxNWVi ZjJlNmZlMDIwZThmNWViCisrVGFnID0gZWJhYTI2NDViYjE1NDU0MjExN2VlNDYwMzFhYTE3NmUK KytQbGFpbnRleHQgPSBmNTdhZjVmZDRhZTE5NTYyOTc2ZWM1N2E1YTdhZDU1YTVhZjVjNWU1YzVm ZGY1YzU1YWQ1N2E0YTcyNzJkNTcyNjJlOTcyOTU2NmVkNjZlOTdhYzU0YTRhNWE3YWQ1ZTE1YWU1 ZmRkNWZkNWFjNWQ1NmFlNTZhZDVjNTcyZDU0YWU1NGFjNTVhOTU2YWZkNmFlZDVhNGFjNTYyOTU3 YTk1MTY5OTE2OTFkNTcyZmQxNGU5N2FlOTYyZWQ3YTlmNGE5NTVhZjU3MmUxNjJmNTdhOTU2NjY2 ZTE3YWUxZjU0YTk1ZjU2NmQ1NGE2NmUxNmU0YWZkNmE5ZjdhZTFjNWM1NWFlNWQ1NmFmZGU5MTZj NWU5NGE2ZWM1NjY5NWUxNGFmZGUxMTQ4NDE2ZTk0YWQ1N2FjNTE0NmVkNTlkMWNjNQorK0NpcGhl cnRleHQgPSAxNzIzY2NmYzBlZDQ0YTEyNTIwNDczY2ZlYjYzYmM5MzNjZDQ1MGE5NDNmNWYxY2Jh NzhlMTlkNzJmODBjYzEwMmFjYzUxZjI0NTlhMDZjZjY0MzUxODJiOGRkZDQ1MWY4M2UxMzQ3OWVm ZTVlYzdkZmJmMTYyMjlmNDAxNzkyMGZiNDE0NTdhOWI2ZmUxYTQwMWIzMGIyZjMzMmQ4MjdhZTJm ODZlOTYyMzI2OTI3YzFlZDhiZmVkYWMxZjdhMDBkZGRlNjNiZDM5MmE4ZjI4YTQ4OGJhNTk3NDY4 OWY4ZDE1YjliMTczOWZiNTBhYWUwZmYyNDQwMjZlYzcyMDY0MDAzYzYyMWIzM2ZmYzgwODZiMGE5 N2VlZmI3MDYwNGEyODI2ZjY0OTlmNmViMTJkNjdhMGRhMDNmYzhlMTQ4MgorKworK0NpcGhlciA9 IEFSSUEtMTI4LUdDTQorK0tleSA9IGU5MWU1ZTc1ZGE2NTU1NGE0ODE4MWYzODQ2MzQ5NTYyCisr IyBMb25nZXIgdGhhbiBkZWZhdWx0IElWCisrSVYgPSAwMDAxMDIwMzA0MDUwNjA3MDgwOTBhMGIw YzBkMGUwZgorK0FBRCA9IDgwMDgzMTVlYmYyZTZmZTAyMGU4ZjVlYgorK1RhZyA9IDYxZjdmNDRj N2RhM2M2MDE5NWIyOWFlMGI0NjA1MWE0CisrUGxhaW50ZXh0ID0gZjU3YWY1ZmQ0YWUxOTU2Mjk3 NmVjNTdhNWE3YWQ1NWE1YWY1YzVlNWM1ZmRmNWM1NWFkNTdhNGE3MjcyZDU3MjYyZTk3Mjk1NjZl ZDY2ZTk3YWM1NGE0YTVhN2FkNWUxNWFlNWZkZDVmZDVhYzVkNTZhZTU2YWQ1YzU3MmQ1NGFlNTRh YzU1YTk1NmFmZDZhZWQ1YTRhYzU2Mjk1N2E5NTE2OTkxNjkxZDU3MmZkMTRlOTdhZTk2MmVkN2E5 ZjRhOTU1YWY1NzJlMTYyZjU3YTk1NjY2NmUxN2FlMWY1NGE5NWY1NjZkNTRhNjZlMTZlNGFmZDZh OWY3YWUxYzVjNTVhZTVkNTZhZmRlOTE2YzVlOTRhNmVjNTY2OTVlMTRhZmRlMTE0ODQxNmU5NGFk NTdhYzUxNDZlZDU5ZDFjYzUKKytDaXBoZXJ0ZXh0ID0gMGQzZTk4ZmNhZjdhMmM0ZmU5MTk4ZDY2 YWRkOTBkMTEzZTVlMGZmNDc1OThjNDBhNGJmNTAxOTYwZDkzNWE0MTU2YzlhNGQ0NmM5MzU4YTYw OGUxMGExNjQ3OWE0MjQ3YzlhYjliYjRhMDI4MDllM2VhYzM1NzFiODMyNTkwZmUyY2EzZTJkNTQ1 NzQxZTM2MjgyZDk2YzA0MWZjN2QzOWE0NmVkNjAyMTRjMmMwZWM3MGYyNzc2OGRmZWE0Zjk1NjNi NWQ1YzJhYzMzYjEzNjhhNzhmMjkwOGY1ZGFmOTQyNDMzZmVjNmFiNTg4ZjA5ZTkwOGU5NWNjOGRm YTg1ZDFhMGRmZDU4MzVkYzE0ZTE0ODMyMzIzMGM2M2VlZGM5OWE5Y2U5NDIyMTRjYjM3NjhiOTdi ODIxZDYxMzYyOWYKKysKKytDaXBoZXIgPSBBUklBLTEyOC1HQ00KKytLZXkgPSBlOTFlNWU3NWRh NjU1NTRhNDgxODFmMzg0NjM0OTU2MgorKyMgRXh0cmEgbG9uZyBJVgorK0lWID0gMDAwMTAyMDMw NDA1MDYwNzA4MDkwYTBiMGMwZDBlMGYxMDExCisrQUFEID0gODAwODMxNWViZjJlNmZlMDIwZThm NWViCisrVGFnID0gYzhiMzFhYjZjMmRkY2NhYjA2Yjc2YWY0ZTU2ZTY2NGUKKytQbGFpbnRleHQg PSBmNTdhZjVmZDRhZTE5NTYyOTc2ZWM1N2E1YTdhZDU1YTVhZjVjNWU1YzVmZGY1YzU1YWQ1N2E0 YTcyNzJkNTcyNjJlOTcyOTU2NmVkNjZlOTdhYzU0YTRhNWE3YWQ1ZTE1YWU1ZmRkNWZkNWFjNWQ1 NmFlNTZhZDVjNTcyZDU0YWU1NGFjNTVhOTU2YWZkNmFlZDVhNGFjNTYyOTU3YTk1MTY5OTE2OTFk NTcyZmQxNGU5N2FlOTYyZWQ3YTlmNGE5NTVhZjU3MmUxNjJmNTdhOTU2NjY2ZTE3YWUxZjU0YTk1 ZjU2NmQ1NGE2NmUxNmU0YWZkNmE5ZjdhZTFjNWM1NWFlNWQ1NmFmZGU5MTZjNWU5NGE2ZWM1NjY5 NWUxNGFmZGUxMTQ4NDE2ZTk0YWQ1N2FjNTE0NmVkNTlkMWNjNQorK0NpcGhlcnRleHQgPSA2MTZh N2JjZTI0MjA2NTAxMDgyY2VmNzI2N2MwOWE0YWZmYTU0ZjhmODJlYjdmYjJjZGViZGNhYWI0YjZh YjA1YzM3ZTg5MWMyZDBmYzkwZDE1YzVmYjY4NDI0NzYyNWM4YmMwYmVmYWQ4Njg5NmFlMWM4ZjVh ODUwNjk1NGNhYmE0ZTEzZGYwYTBlYjIzODUzZDQ0NzRlN2YzYjJjNTdiYjM5ODQ1NmEyNGQxOThl MTQ1NjZiY2U4YTVmOGQzYmNkYjEyOTk0ZDJmZGMwZjVjZjE5YWVmZjk5MGMxZmUxMTllMDFmOWZj Yzg2NzU3YjFkNDNhOWFjY2Y3YjJmOTEzYzIyMDhhNDZjMTk2N2Y0MDM4NjdmODliNDZmZmU5Njg2 NGM2M2YwNDIyNjU4MDZlYTUyNzBlMGRkZGQwZThkZAorKworKworIFRpdGxlID0gQVJJQSBDQ00g dGVzdCB2ZWN0b3JzIGZyb20gSUVURiBkcmFmdC1pZXRmLWF2dGNvcmUtYXJpYS1zcnRwLTAyCisg CisgIyAxNi1ieXRlIFRhZworQEAgLTIzNTcsMTQgKzIzODcsNDEgQEAgT3BlcmF0aW9uID0gRU5D UllQVAorIFBsYWludGV4dCA9IEI0MUU2QkUyRUJBODRBMTQ4RTJFRUQ4NDU5M0M1RUM3CisgQ2lw aGVydGV4dCA9IDlCOUI3QkZDRDE4MTNDQjk1RDBCMzYxOEY0MEY1MTIyCisgCistVGl0bGUgPSBD aGFjaGEyMAorK1RpdGxlID0gQ2hhY2hhMjAgdGVzdCB2ZWN0b3JzIGZyb20gUkZDNzUzOQorIAor KyMgQS4xIFRlc3QgVmVjdG9yIDEKKyBDaXBoZXIgPSBjaGFjaGEyMAorIEtleSA9IDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK KyBJViA9IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCisgUGxhaW50ZXh0ID0gMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAKKyBDaXBoZXJ0ZXh0ID0gNzZiOGUwYWRhMGYxM2Q5MDQwNWQ2YWU1NTM4NmJk MjhiZGQyMTliOGEwOGRlZDFhYTgzNmVmY2M4Yjc3MGRjN2RhNDE1OTdjNTE1NzQ4OGQ3NzI0ZTAz ZmI4ZDg0YTM3NmE0M2I4ZjQxNTE4YTExY2MzODdiNjY5YjJlZTY1ODYKKyAKKysjIEEuMSBUZXN0 IFZlY3RvciAyCisrQ2lwaGVyID0gY2hhY2hhMjAKKytLZXkgPSAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCisrSVYgPSAwMTAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorK1BsYWludGV4dCA9IDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw CisrQ2lwaGVydGV4dCA9IDlmMDdlN2JlNTU1MTM4N2E5OGJhOTc3YzczMmQwODBkY2IwZjI5YTA0 OGUzNjU2OTEyYzY1MzNlMzJlZTdhZWQyOWI3MjE3NjljZTY0ZTQzZDU3MTMzYjA3NGQ4MzlkNTMx ZWQxZjI4NTEwYWZiNDVhY2UxMGExZjRiNzk0ZDZmCisrCisrIyBBLjIgVGVzdCBWZWN0b3IgMSBp cyB0aGUgc2FtZSBhcyBBLjEgVGVzdCBWZWN0b3IgMQorKyMgQS4yIFRlc3QgVmVjdG9yIDIKKytD aXBoZXIgPSBjaGFjaGEyMAorK0tleSA9IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEKKysjQ291bnRlciAoZmlyc3QgNCBieXRl cykgZXhwcmVzc2VkIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIKKytJViA9IDAxMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAyCisrUGxhaW50ZXh0ID0gNDE2ZTc5MjA3Mzc1NjI2ZDY5NzM3MzY5 NmY2ZTIwNzQ2ZjIwNzQ2ODY1MjA0OTQ1NTQ0NjIwNjk2ZTc0NjU2ZTY0NjU2NDIwNjI3OTIwNzQ2 ODY1MjA0MzZmNmU3NDcyNjk2Mjc1NzQ2ZjcyMjA2NjZmNzIyMDcwNzU2MjZjNjk2MzYxNzQ2OTZm NmUyMDYxNzMyMDYxNmM2YzIwNmY3MjIwNzA2MTcyNzQyMDZmNjYyMDYxNmUyMDQ5NDU1NDQ2MjA0 OTZlNzQ2NTcyNmU2NTc0MmQ0NDcyNjE2Njc0MjA2ZjcyMjA1MjQ2NDMyMDYxNmU2NDIwNjE2ZTc5 MjA3Mzc0NjE3NDY1NmQ2NTZlNzQyMDZkNjE2NDY1MjA3NzY5NzQ2ODY5NmUyMDc0Njg2NTIwNjM2 ZjZlNzQ2NTc4NzQyMDZmNjYyMDYxNmUyMDQ5NDU1NDQ2MjA2MTYzNzQ2OTc2Njk3NDc5MjA2OTcz MjA2MzZmNmU3MzY5NjQ2NTcyNjU2NDIwNjE2ZTIwMjI0OTQ1NTQ0NjIwNDM2ZjZlNzQ3MjY5NjI3 NTc0Njk2ZjZlMjIyZTIwNTM3NTYzNjgyMDczNzQ2MTc0NjU2ZDY1NmU3NDczMjA2OTZlNjM2Yzc1 NjQ2NTIwNmY3MjYxNmMyMDczNzQ2MTc0NjU2ZDY1NmU3NDczMjA2OTZlMjA0OTQ1NTQ0NjIwNzM2 NTczNzM2OTZmNmU3MzJjMjA2MTczMjA3NzY1NmM2YzIwNjE3MzIwNzc3MjY5NzQ3NDY1NmUyMDYx NmU2NDIwNjU2YzY1NjM3NDcyNmY2ZTY5NjMyMDYzNmY2ZDZkNzU2ZTY5NjM2MTc0Njk2ZjZlNzMy MDZkNjE2NDY1MjA2MTc0MjA2MTZlNzkyMDc0Njk2ZDY1MjA2ZjcyMjA3MDZjNjE2MzY1MmMyMDc3 Njg2OTYzNjgyMDYxNzI2NTIwNjE2NDY0NzI2NTczNzM2NTY0MjA3NDZmCisrQ2lwaGVydGV4dCA9 IGEzZmJmMDdkZjNmYTJmZGU0ZjM3NmNhMjNlODI3MzcwNDE2MDVkOWY0ZjRmNTdiZDhjZmYyYzFk NGI3OTU1ZWMyYTk3OTQ4YmQzNzIyOTE1YzhmM2QzMzdmN2QzNzAwNTBlOWU5NmQ2NDdiN2MzOWY1 NmUwMzFjYTVlYjYyNTBkNDA0MmUwMjc4NWVjZWNmYTRiNGJiNWU4ZWFkMDQ0MGUyMGI2ZThkYjA5 ZDg4MWE3YzYxMzJmNDIwZTUyNzk1MDQyYmRmYTc3NzNkOGE5MDUxNDQ3YjMyOTFjZTE0MTFjNjgw NDY1NTUyYWE2YzQwNWI3NzY0ZDVlODdiZWE4NWFkMDBmODQ0OWVkOGY3MmQwZDY2MmFiMDUyNjkx Y2E2NjQyNGJjODZkMmRmODBlYTQxZjQzYWJmOTM3ZDMyNTlkYzRiMmQwZGZiNDhhNmM5MTM5ZGRk N2Y3Njk2NmU5MjhlNjM1NTUzYmE3NmM1Yzg3OWQ3YjM1ZDQ5ZWIyZTYyYjA4NzFjZGFjNjM4OTM5 ZTI1ZThhMWUwZWY5ZDUyODBmYThjYTMyOGIzNTFjM2M3NjU5ODljYmNmM2RhYThiNmNjYzNhYWY5 ZjM5NzljOTJiMzcyMGZjODhkYzk1ZWQ4NGExYmUwNTljNjQ5OWI5ZmRhMjM2ZTdlODE4YjA0YjBi YzM5YzFlODc2YjE5M2JmZTU1Njk3NTNmODgxMjhjYzA4YWFhOWI2M2QxYTE2ZjgwZWYyNTU0ZDcx ODljNDExZjU4NjljYTUyYzViODNmYTM2ZmYyMTZiOWMxZDMwMDYyYmViY2ZkMmRjNWJjZTA5MTE5 MzRmZGE3OWE4NmY2ZTY5OGNlZDc1OWMzZmY5YjY0NzczMzhmM2RhNGY5Y2Q4NTE0ZWE5OTgyY2Nh ZmIzNDFiMjM4NGRkOTAyZjNkMWFiN2FjNjFkZDI5YzZmMjFiYTViODYyZjM3MzBlMzdjZmRjNGZk ODA2YzIyZjIyMQorKworKyMgQS4yIFRlc3QgVmVjdG9yIDMKKytDaXBoZXIgPSBjaGFjaGEyMAor K0tleSA9IDFjOTI0MGE1ZWI1NWQzOGFmMzMzODg4NjA0ZjZiNWYwNDczOTE3YzE0MDJiODAwOTlk Y2E1Y2JjMjA3MDc1YzAKKysjQ291bnRlciAoZmlyc3QgNCBieXRlcykgZXhwcmVzc2VkIGluIGxp dHRsZS1lbmRpYW4gb3JkZXIKKytJViA9IDJhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAy CisrUGxhaW50ZXh0ID0gMjc1NDc3NjE3MzIwNjI3MjY5NmM2YzY5NjcyYzIwNjE2ZTY0MjA3NDY4 NjUyMDczNmM2OTc0Njg3OTIwNzQ2Zjc2NjU3MzBhNDQ2OTY0MjA2Nzc5NzI2NTIwNjE2ZTY0MjA2 NzY5NmQ2MjZjNjUyMDY5NmUyMDc0Njg2NTIwNzc2MTYyNjUzYTBhNDE2YzZjMjA2ZDY5NmQ3Mzc5 MjA3NzY1NzI2NTIwNzQ2ODY1MjA2MjZmNzI2ZjY3NmY3NjY1NzMyYzBhNDE2ZTY0MjA3NDY4NjUy MDZkNmY2ZDY1MjA3MjYxNzQ2ODczMjA2Zjc1NzQ2NzcyNjE2MjY1MmUKKytDaXBoZXJ0ZXh0ID0g NjJlNjM0N2Y5NWVkODdhNDVmZmFlNzQyNmYyN2ExZGY1ZmI2OTExMDA0NGMwZDczMTE4ZWZmYTk1 YjAxZTVjZjE2NmQzZGYyZDcyMWNhZjliMjFlNWZiMTRjNjE2ODcxZmQ4NGM1NGY5ZDY1YjI4MzE5 NmM3ZmU0ZjYwNTUzZWJmMzljNjQwMmM0MjIzNGUzMmEzNTZiM2U3NjQzMTJhNjFhNTUzMjA1NTcx NmVhZDY5NjI1NjhmODdkM2YzZjc3MDRjNmE4ZDFiY2QxYmY0ZDUwZDYxNTRiNmRhNzMxYjE4N2I1 OGRmZDcyOGFmYTM2NzU3YTc5N2FjMTg4ZDEKKysKKytUaXRsZSA9IENoYWNoYTIwCisrCisgQ2lw aGVyID0gY2hhY2hhMjAKKyBLZXkgPSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxCisgSVYgPSAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMAorQEAgLTI1MDYsMyArMjU2MywxMiBAQCBBQUQgPSBmMzMzODg4NjAwMDAw MDAwMDAwMDRlOTEKKyBUYWcgPSBlMDcyM2JjZTIzNTI4Y2U2Y2NiMTBmZjk2MjcwMzhiZgorIFBs YWludGV4dCA9IDQ5NmU3NDY1NzI2ZTY1NzQyZDQ0NzI2MTY2NzQ3MzIwNjE3MjY1MjA2NDcyNjE2 Njc0MjA2NDZmNjM3NTZkNjU2ZTc0NzMyMDc2NjE2YzY5NjQyMDY2NmY3MjIwNjEyMDZkNjE3ODY5 NmQ3NTZkMjA2ZjY2MjA3MzY5NzgyMDZkNmY2ZTc0Njg3MzIwNjE2ZTY0MjA2ZDYxNzkyMDYyNjUy MDc1NzA2NDYxNzQ2NTY0MmMyMDcyNjU3MDZjNjE2MzY1NjQyYzIwNmY3MjIwNmY2MjczNmY2YzY1 NzQ2NTY0MjA2Mjc5MjA2Zjc0Njg2NTcyMjA2NDZmNjM3NTZkNjU2ZTc0NzMyMDYxNzQyMDYxNmU3 OTIwNzQ2OTZkNjUyZTIwNDk3NDIwNjk3MzIwNjk2ZTYxNzA3MDcyNmY3MDcyNjk2MTc0NjUyMDc0 NmYyMDc1NzM2NTIwNDk2ZTc0NjU3MjZlNjU3NDJkNDQ3MjYxNjY3NDczMjA2MTczMjA3MjY1NjY2 NTcyNjU2ZTYzNjUyMDZkNjE3NDY1NzI2OTYxNmMyMDZmNzIyMDc0NmYyMDYzNjk3NDY1MjA3NDY4 NjU2ZDIwNmY3NDY4NjU3MjIwNzQ2ODYxNmUyMDYxNzMyMDJmZTI4MDljNzc2ZjcyNmIyMDY5NmUy MDcwNzI2ZjY3NDk2ZTc0NjU3MjZlNjU3NDJkNDQ3MjYxNjY3NDczMjA2MTcyNjUyMDY0NzI2MTY2 NzQyMDY0NmY2Mzc1NmQ2NTZlNzQ3MzIwNzY2MTZjNjk2NDIwNjY2ZjcyMjA2MTIwNmQ2MTc4Njk2 ZDc1NmQyMDZmNjYyMDczNjk3ODIwNmQ2ZjZlNzQ2ODczMjA2MTZlNjQyMDZkNjE3OTIwNjI2NTIw NzU3MDY0NjE3NDY1NjQyYzIwNzI2NTcwNmM2MTYzNjU2NDJjMjA2ZjcyMjA2ZjYyNzM2ZjZjNjU3 NDY1NjQyMDYyNzkyMDZmNzQ2ODY1NzIyMDY0NmY2Mzc1NmQ2NTZlNzQ3MzIwNjE3NDIwNjE2ZTc5 MjA3NDY5NmQ2NTJlMjA0OTc0MjA2OTczMjA2OTZlNjE3MDcwNzI2ZjcwNzI2OTYxNzQ2NTIwNzQ2 ZjIwNzU3MzY1MjA0OTZlNzQ2NTcyNmU2NTc0MmQ0NDcyNjE2Njc0NzMyMDYxNzMyMDcyNjU2NjY1 NzI2NTZlNjM2NTIwNmQ2MTc0NjU3MjY5NjE2YzIwNmY3MjIwNzQ2ZjIwNjM2OTc0NjUyMDc0Njg2 NTZkMjA2Zjc0Njg2NTcyMjA3NDY4NjE2ZTIwNjE3MzIwMmZlMjgwOWM3NzZmNzI2YjIwNjk2ZTIw NzA3MjZmNjc0OTZlNzQ2NTcyNmU2NTc0MmQ0NDcyNjE2Njc0NzMyMDYxNzI2NTIwNjQ3MjYxNjY3 NDIwNjQ2ZjYzNzU2ZDY1NmU3NDczMjA3NjYxNmM2OTY0MjA2NjZmNzIyMDYxMjA2ZDYxNzg2OTZk NzU2ZDIwNmY2NjIwNzM2OTc4MjA2ZAorIENpcGhlcnRleHQgPSA2NGEwODYxNTc1ODYxYWY0NjBm MDYyYzc5YmU2NDNiZDVlODA1Y2ZkMzQ1Y2YzODlmMTA4NjcwYWM3NmM4Y2IyNGM2Y2ZjMTg3NTVk NDNlZWEwOWVlOTRlMzgyZDI2YjBiZGI3YjczYzMyMWIwMTAwZDRmMDNiN2YzNTU4OTRjZjMzMmY4 MzBlNzEwYjk3Y2U5OGM4YTg0YWJkMGI5NDgxMTRhZDE3NmUwMDhkMzNiZDYwZjk4MmIxZmYzN2M4 NTU5Nzk3YTA2ZWY0ZjBlZjYxYzE4NjMyNGUyYjM1MDYzODM2MDY5MDdiNmE3YzAyYjBmOWY2MTU3 YjUzYzg2N2U0YjkxNjZjNzY3YjgwNGQ0NmE1OWI1MjE2Y2RlN2E0ZTk5MDQwYzVhNDA0MzMyMjVl ZTI4MmExYjBhMDZjNTIzZWFmNDUzNGQ3ZjgzZmExMTU1YjAwNDc3MThjYmM1NDZhMGQwNzJiMDRi MzU2NGVlYTFiNDIyMjczZjU0ODI3MWEwYmIyMzE2MDUzZmE3Njk5MTk1NWViZDYzMTU5NDM0ZWNl YmI0ZTQ2NmRhZTVhMTA3M2E2NzI3NjI3MDk3YTEwNDllNjE3ZDkxZDM2MTA5NGZhNjhmMGZmNzc5 ODcxMzAzMDViZWFiYTJlZGEwNGRmOTk3YjcxNGQ2YzZmMmMyOTlkYTY1YmEyNWU2YTg1ODQyYmYw NDQwZmQ5OGE5YTIyNjZiMDYxYzRiM2ExMzMyN2MwOTBmOWEwNzg5ZjU4YWFkODA1Mjc1ZTQzNzhh NTI1ZjE5MjMyYmZiZmI3NDllZGUzODQ4MGY0MDVjZjQzZWMyZjFmODYxOWViY2JjODBhODllOTJh ODU5Yzc5MTFlNjc0OTc3YWIxN2Q0YTcxMjZhNmI4YTQ3NzM1OGZmMTRhMzQ0ZDI3NmVmNmU1MDRl MTAyNjhhYzM2MTlmY2Y5MGMyZDZjMDNmYzJlM2QxZjI5MGQ5YmYyNmMxZmExNDk1ZGQ4Zjk3ZWVj NjIyOWE1NWMyMzU0ZTQ1MjQxNDM1NTFhNWNjMzcwYTFjNjIyYzkzOTA1MzBjZmYyMWMzZTFlZDUw YzVlM2RhZjk3NTE4Y2NjZTM0MTU2YmRiZDdlYWZhYjhiZDQxN2FlZjI1YzZjOTI3MzAxNzMxYmQz MTlkMjQ3YTFkNWMzMTg2ZWQxMGJmZDlhN2EyNGJhYzMwZTNlNDUwM2VkOTIwNDE1NGQzMzhiNzll YTI3NmU3MDU4ZTdmMjBmNGQ0ZmQxYWM5M2Q2M2Y2MTFhZjdiNmQwMDZjMmE3MmFkZDBlZWRjNDk3 YjE5Y2IzMGExOTg4MTY2NjRmMGRhMDAxNTVmMmUyZDZhYzYxMDQ1YjI5NmQ2MTQzMDFlMGFkNDk4 MzMwODAyODg1MGRkNGZlZmZlM2E4MTYzOTcwMzA2ZTQwNDdmNWExNjVjYjRiZWZiYzEyOTcyOWNk MmUyODZlODM3ZTliNjA2NDg2ZDQwMmFjYzNkZWM1YmY4YjkyMzg3ZjZlNDg2ZjIxNDAKKysKKytD aXBoZXIgPSBjaGFjaGEyMC1wb2x5MTMwNQorK0tleSA9IDFjOTI0MGE1ZWI1NWQzOGFmMzMzODg4 NjA0ZjZiNWYwNDczOTE3YzE0MDJiODAwOTlkY2E1Y2JjMjA3MDc1YzAKKytJViA9IGZmMDAwMDAw MDAwMTAyMDMwNDA1MDYwNzA4CisrQUFEID0gZjMzMzg4ODYwMDAwMDAwMDAwMDA0ZTkxCisrVGFn ID0gZTA3MjNiY2UyMzUyOGNlNmNjYjEwZmY5NjI3MDM4YmYKKytQbGFpbnRleHQgPSA0OTZlNzQ2 NTcyNmU2NTc0MmQ0NDcyNjE2Njc0NzMyMDYxNzI2NTIwNjQ3MjYxNjY3NDIwNjQ2ZjYzNzU2ZDY1 NmU3NDczMjA3NjYxNmM2OTY0MjA2NjZmNzIyMDYxMjA2ZDYxNzg2OTZkNzU2ZDIwNmY2NjIwNzM2 OTc4MjA2ZDZmNmU3NDY4NzMyMDYxNmU2NDIwNmQ2MTc5MjA2MjY1MjA3NTcwNjQ2MTc0NjU2NDJj MjA3MjY1NzA2YzYxNjM2NTY0MmMyMDZmNzIyMDZmNjI3MzZmNmM2NTc0NjU2NDIwNjI3OTIwNmY3 NDY4NjU3MjIwNjQ2ZjYzNzU2ZDY1NmU3NDczMjA2MTc0MjA2MTZlNzkyMDc0Njk2ZDY1MmUyMDQ5 NzQyMDY5NzMyMDY5NmU2MTcwNzA3MjZmNzA3MjY5NjE3NDY1MjA3NDZmMjA3NTczNjUyMDQ5NmU3 NDY1NzI2ZTY1NzQyZDQ0NzI2MTY2NzQ3MzIwNjE3MzIwNzI2NTY2NjU3MjY1NmU2MzY1MjA2ZDYx NzQ2NTcyNjk2MTZjMjA2ZjcyMjA3NDZmMjA2MzY5NzQ2NTIwNzQ2ODY1NmQyMDZmNzQ2ODY1NzIy MDc0Njg2MTZlMjA2MTczMjAyZmUyODA5Yzc3NmY3MjZiMjA2OTZlMjA3MDcyNmY2NzQ5NmU3NDY1 NzI2ZTY1NzQyZDQ0NzI2MTY2NzQ3MzIwNjE3MjY1MjA2NDcyNjE2Njc0MjA2NDZmNjM3NTZkNjU2 ZTc0NzMyMDc2NjE2YzY5NjQyMDY2NmY3MjIwNjEyMDZkNjE3ODY5NmQ3NTZkMjA2ZjY2MjA3MzY5 NzgyMDZkNmY2ZTc0Njg3MzIwNjE2ZTY0MjA2ZDYxNzkyMDYyNjUyMDc1NzA2NDYxNzQ2NTY0MmMy MDcyNjU3MDZjNjE2MzY1NjQyYzIwNmY3MjIwNmY2MjczNmY2YzY1NzQ2NTY0MjA2Mjc5MjA2Zjc0 Njg2NTcyMjA2NDZmNjM3NTZkNjU2ZTc0NzMyMDYxNzQyMDYxNmU3OTIwNzQ2OTZkNjUyZTIwNDk3 NDIwNjk3MzIwNjk2ZTYxNzA3MDcyNmY3MDcyNjk2MTc0NjUyMDc0NmYyMDc1NzM2NTIwNDk2ZTc0 NjU3MjZlNjU3NDJkNDQ3MjYxNjY3NDczMjA2MTczMjA3MjY1NjY2NTcyNjU2ZTYzNjUyMDZkNjE3 NDY1NzI2OTYxNmMyMDZmNzIyMDc0NmYyMDYzNjk3NDY1MjA3NDY4NjU2ZDIwNmY3NDY4NjU3MjIw NzQ2ODYxNmUyMDYxNzMyMDJmZTI4MDljNzc2ZjcyNmIyMDY5NmUyMDcwNzI2ZjY3NDk2ZTc0NjU3 MjZlNjU3NDJkNDQ3MjYxNjY3NDczMjA2MTcyNjUyMDY0NzI2MTY2NzQyMDY0NmY2Mzc1NmQ2NTZl NzQ3MzIwNzY2MTZjNjk2NDIwNjY2ZjcyMjA2MTIwNmQ2MTc4Njk2ZDc1NmQyMDZmNjYyMDczNjk3 ODIwNmQKKytDaXBoZXJ0ZXh0ID0gNjRhMDg2MTU3NTg2MWFmNDYwZjA2MmM3OWJlNjQzYmQ1ZTgw NWNmZDM0NWNmMzg5ZjEwODY3MGFjNzZjOGNiMjRjNmNmYzE4NzU1ZDQzZWVhMDllZTk0ZTM4MmQy NmIwYmRiN2I3M2MzMjFiMDEwMGQ0ZjAzYjdmMzU1ODk0Y2YzMzJmODMwZTcxMGI5N2NlOThjOGE4 NGFiZDBiOTQ4MTE0YWQxNzZlMDA4ZDMzYmQ2MGY5ODJiMWZmMzdjODU1OTc5N2EwNmVmNGYwZWY2 MWMxODYzMjRlMmIzNTA2MzgzNjA2OTA3YjZhN2MwMmIwZjlmNjE1N2I1M2M4NjdlNGI5MTY2Yzc2 N2I4MDRkNDZhNTliNTIxNmNkZTdhNGU5OTA0MGM1YTQwNDMzMjI1ZWUyODJhMWIwYTA2YzUyM2Vh ZjQ1MzRkN2Y4M2ZhMTE1NWIwMDQ3NzE4Y2JjNTQ2YTBkMDcyYjA0YjM1NjRlZWExYjQyMjI3M2Y1 NDgyNzFhMGJiMjMxNjA1M2ZhNzY5OTE5NTVlYmQ2MzE1OTQzNGVjZWJiNGU0NjZkYWU1YTEwNzNh NjcyNzYyNzA5N2ExMDQ5ZTYxN2Q5MWQzNjEwOTRmYTY4ZjBmZjc3OTg3MTMwMzA1YmVhYmEyZWRh MDRkZjk5N2I3MTRkNmM2ZjJjMjk5ZGE2NWJhMjVlNmE4NTg0MmJmMDQ0MGZkOThhOWEyMjY2YjA2 MWM0YjNhMTMzMjdjMDkwZjlhMDc4OWY1OGFhZDgwNTI3NWU0Mzc4YTUyNWYxOTIzMmJmYmZiNzQ5 ZWRlMzg0ODBmNDA1Y2Y0M2VjMmYxZjg2MTllYmNiYzgwYTg5ZTkyYTg1OWM3OTExZTY3NDk3N2Fi MTdkNGE3MTI2YTZiOGE0NzczNThmZjE0YTM0NGQyNzZlZjZlNTA0ZTEwMjY4YWMzNjE5ZmNmOTBj MmQ2YzAzZmMyZTNkMWYyOTBkOWJmMjZjMWZhMTQ5NWRkOGY5N2VlYzYyMjlhNTVjMjM1NGU0NTI0 MTQzNTUxYTVjYzM3MGExYzYyMmM5MzkwNTMwY2ZmMjFjM2UxZWQ1MGM1ZTNkYWY5NzUxOGNjY2Uz NDE1NmJkYmQ3ZWFmYWI4YmQ0MTdhZWYyNWM2YzkyNzMwMTczMWJkMzE5ZDI0N2ExZDVjMzE4NmVk MTBiZmQ5YTdhMjRiYWMzMGUzZTQ1MDNlZDkyMDQxNTRkMzM4Yjc5ZWEyNzZlNzA1OGU3ZjIwZjRk NGZkMWFjOTNkNjNmNjExYWY3YjZkMDA2YzJhNzJhZGQwZWVkYzQ5N2IxOWNiMzBhMTk4ODE2NjY0 ZjBkYTAwMTU1ZjJlMmQ2YWM2MTA0NWIyOTZkNjE0MzAxZTBhZDQ5ODMzMDgwMjg4NTBkZDRmZWZm ZTNhODE2Mzk3MDMwNmU0MDQ3ZjVhMTY1Y2I0YmVmYmMxMjk3MjljZDJlMjg2ZTgzN2U5YjYwNjQ4 NmQ0MDJhY2MzZGVjNWJmOGI5MjM4N2Y2ZTQ4NmYyMTQwCisrUmVzdWx0ID0gSU5WQUxJRF9JVl9M RU5HVEgKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFiL3Rlc3QvcmVjaXBlcy8zMC10ZXN0X2V2cF9k YXRhL2V2cG1hYy50eHQuc3luYyBvcGVuc3NsLTEuMS4xYi90ZXN0L3JlY2lwZXMvMzAtdGVzdF9l dnBfZGF0YS9ldnBtYWMudHh0CistLS0gb3BlbnNzbC0xLjEuMWIvdGVzdC9yZWNpcGVzLzMwLXRl c3RfZXZwX2RhdGEvZXZwbWFjLnR4dC5zeW5jCTIwMTktMDItMjYgMTU6MTU6MzAuMDAwMDAwMDAw ICswMTAwCisrKysgb3BlbnNzbC0xLjEuMWIvdGVzdC9yZWNpcGVzLzMwLXRlc3RfZXZwX2RhdGEv ZXZwbWFjLnR4dAkyMDE5LTA1LTAzIDA4OjU1OjUxLjUzOTQwNjg4MyArMDIwMAorQEAgLTM1MSw2 ICszNTEsMTQgQEAgSW5wdXQgPSAiU2FtcGxlIG1lc3NhZ2UgZm9yIGtleWxlbj5ibG9jaworIEtl eSA9IDAwMDEwMjAzMDQwNTA2MDcwODA5MGEwYjBjMGQwZTBmMTAxMTEyMTMxNDE1MTYxNzE4MTkx YTFiMWMxZDFlMWYyMDIxMjIyMzI0MjUyNjI3MjgyOTJhMmIyYzJkMmUyZjMwMzEzMjMzMzQzNTM2 MzczODM5M2EzYjNjM2QzZTNmNDA0MTQyNDM0NDQ1NDY0NzQ4NDk0YTRiNGM0ZDRlNGY1MDUxNTI1 MzU0NTU1NjU3NTg1OTVhNWI1YzVkNWU1ZjYwNjE2MjYzNjQ2NTY2Njc2ODY5NmE2YjZjNmQ2ZTZm NzA3MTcyNzM3NDc1NzY3Nzc4Nzk3YTdiN2M3ZDdlN2Y4MDgxODI4Mzg0ODU4Njg3CisgT3V0cHV0 ID0gNWY0NjRmNWU1Yjc4NDhlMzg4NWU0OWIyYzM4NWYwNjk0OTg1ZDBlMzg5NjYyNDJkYzRhNWZl M2ZlYTRiMzdkNDZiNjVjZWNlZDVkY2Y1OTQzOGRkODQwYmFiMjIyNjlmMGJhN2ZlYmRiOWZjZjc0 NjAyYTM1NjY2YjJhMzI5MTUKKyAKKytUaXRsZSA9IEhNQUMgc2VsZiBnZW5lcmF0ZWQgdGVzdHMK KysKKytNQUMgPSBITUFDCisrQWxnb3JpdGhtID0gU0hBS0UxMjgKKytJbnB1dCA9ICJUZXN0IHRo YXQgU0hBS0UxMjggZmFpbHMiCisrS2V5ID0gMDAwMTAyMDMwNDA1MDYwNzA4MDkwYTBiMGMwZDBl MGYxMDExMTIxMzE0MTUxNjE3MTgxOTFhMWIxYzFkMWUxZgorK1Jlc3VsdCA9IERJR0VTVFNJR05J TklUX0VSUk9SCisrCisgCisgVGl0bGUgPSBDTUFDIHRlc3RzIChmcm9tIEZJUFMgbW9kdWxlKQor IAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWIvdGVzdC9yZWNpcGVzLzgwLXRlc3RfY21zLnQuc3lu YyBvcGVuc3NsLTEuMS4xYi90ZXN0L3JlY2lwZXMvODAtdGVzdF9jbXMudAorLS0tIG9wZW5zc2wt MS4xLjFiL3Rlc3QvcmVjaXBlcy84MC10ZXN0X2Ntcy50LnN5bmMJMjAxOS0wMi0yNiAxNToxNToz MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMS4xYi90ZXN0L3JlY2lwZXMvODAtdGVz dF9jbXMudAkyMDE5LTA1LTAzIDA4OjU1OjUxLjUzMzQwNjk4NiArMDIwMAorQEAgLTMwOCw2ICsz MDgsMTQgQEAgbXkgQHNtaW1lX2Ntc19wYXJhbV90ZXN0cyA9ICgKKyAJIi1DQWZpbGUiLCBjYXRm aWxlKCRzbWRpciwgInNtcm9vdC5wZW0iKSwgIi1vdXQiLCAic210c3QudHh0IiBdCisgICAgIF0s CisgCisrICAgIFsgInNpZ25lZCBjb250ZW50IHRlc3Qgc3RyZWFtaW5nIFBFTSBmb3JtYXQsIFJT QSBrZXlzLCBQU1Mgc2lnbmF0dXJlLCBzYWx0bGVuPS0zIiwKKysgICAgICBbICItc2lnbiIsICIt aW4iLCAkc21jb250LCAiLW91dGZvcm0iLCAiUEVNIiwgIi1ub2RldGFjaCIsCisrCSItc2lnbmVy IiwgY2F0ZmlsZSgkc21kaXIsICJzbXJzYTEucGVtIiksICIta2V5b3B0IiwgInJzYV9wYWRkaW5n X21vZGU6cHNzIiwKKysJIi1rZXlvcHQiLCAicnNhX3Bzc19zYWx0bGVuOi0zIiwgIi1vdXQiLCAi dGVzdC5jbXMiIF0sCisrICAgICAgWyAiLXZlcmlmeSIsICItaW4iLCAidGVzdC5jbXMiLCAiLWlu Zm9ybSIsICJQRU0iLAorKwkiLUNBZmlsZSIsIGNhdGZpbGUoJHNtZGlyLCAic21yb290LnBlbSIp LCAiLW91dCIsICJzbXRzdC50eHQiIF0KKysgICAgXSwKKysKKyAgICAgWyAic2lnbmVkIGNvbnRl bnQgdGVzdCBzdHJlYW1pbmcgUEVNIGZvcm1hdCwgUlNBIGtleXMsIFBTUyBzaWduYXR1cmUsIG5v IGF0dHJpYnV0ZXMiLAorICAgICAgIFsgIi1zaWduIiwgIi1pbiIsICRzbWNvbnQsICItb3V0Zm9y bSIsICJQRU0iLCAiLW5vZGV0YWNoIiwgIi1ub2F0dHIiLAorIAkiLXNpZ25lciIsIGNhdGZpbGUo JHNtZGlyLCAic21yc2ExLnBlbSIpLCAiLWtleW9wdCIsICJyc2FfcGFkZGluZ19tb2RlOnBzcyIs CitkaWZmIC11cCBvcGVuc3NsLTEuMS4xYi90ZXN0L3JzYV90ZXN0LmMuc3luYyBvcGVuc3NsLTEu MS4xYi90ZXN0L3JzYV90ZXN0LmMKKy0tLSBvcGVuc3NsLTEuMS4xYi90ZXN0L3JzYV90ZXN0LmMu c3luYwkyMDE5LTAyLTI2IDE1OjE1OjMwLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4x LjFiL3Rlc3QvcnNhX3Rlc3QuYwkyMDE5LTA1LTAzIDA4OjU1OjUxLjUyMzQwNzE1NyArMDIwMAor QEAgLTEsNSArMSw1IEBACisgLyoKKy0gKiBDb3B5cmlnaHQgMTk5OS0yMDE3IFRoZSBPcGVuU1NM IFByb2plY3QgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKysgKiBDb3B5cmlnaHQgMTk5 OS0yMDE5IFRoZSBPcGVuU1NMIFByb2plY3QgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K KyAgKgorICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBPcGVuU1NMIGxpY2Vuc2UgKHRoZSAiTGljZW5z ZSIpLiAgWW91IG1heSBub3QgdXNlCisgICogdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl IHdpdGggdGhlIExpY2Vuc2UuICBZb3UgY2FuIG9idGFpbiBhIGNvcHkKK0BAIC0yNjgsNiArMjY4 LDM2IEBAIGVycjoKKyAgICAgcmV0dXJuIHJldDsKKyB9CisgCisrc3RhdGljIGludCB0ZXN0X3Jz YV9zc2x2MjMoaW50IGlkeCkKKyt7CisrICAgIGludCByZXQgPSAwOworKyAgICBSU0EgKmtleTsK KysgICAgdW5zaWduZWQgY2hhciBwdGV4dFsyNTZdOworKyAgICB1bnNpZ25lZCBjaGFyIGN0ZXh0 WzI1Nl07CisrICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHB0ZXh0X2V4W10gPSAiXHg1NFx4ODVc eDliXHgzNFx4MmNceDQ5XHhlYVx4MmEiOworKyAgICB1bnNpZ25lZCBjaGFyIGN0ZXh0X2V4WzI1 Nl07CisrICAgIGludCBwbGVuOworKyAgICBpbnQgY2xlbiA9IDA7CisrICAgIGludCBudW07Cisr CisrICAgIHBsZW4gPSBzaXplb2YocHRleHRfZXgpIC0gMTsKKysgICAgY2xlbiA9IHJzYV9zZXRr ZXkoJmtleSwgY3RleHRfZXgsIGlkeCk7CisrCisrICAgIG51bSA9IFJTQV9wdWJsaWNfZW5jcnlw dChwbGVuLCBwdGV4dF9leCwgY3RleHQsIGtleSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJTQV9TU0xWMjNfUEFERElORyk7CisrICAgIGlmICghVEVTVF9pbnRfZXEobnVtLCBjbGVu KSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBudW0gPSBSU0FfcHJpdmF0ZV9kZWNyeXB0 KG51bSwgY3RleHQsIHB0ZXh0LCBrZXksIFJTQV9TU0xWMjNfUEFERElORyk7CisrICAgIGlmICgh VEVTVF9tZW1fZXEocHRleHQsIG51bSwgcHRleHRfZXgsIHBsZW4pKQorKyAgICAgICAgZ290byBl cnI7CisrCisrICAgIHJldCA9IDE7CisrZXJyOgorKyAgICBSU0FfZnJlZShrZXkpOworKyAgICBy ZXR1cm4gcmV0OworK30KKysKKyBzdGF0aWMgaW50IHRlc3RfcnNhX29hZXAoaW50IGlkeCkKKyB7 CisgICAgIGludCByZXQgPSAwOworQEAgLTMzMiw2ICszNjIsNyBAQCBlcnI6CisgaW50IHNldHVw X3Rlc3RzKHZvaWQpCisgeworICAgICBBRERfQUxMX1RFU1RTKHRlc3RfcnNhX3BrY3MxLCAzKTsK KysgICAgQUREX0FMTF9URVNUUyh0ZXN0X3JzYV9zc2x2MjMsIDMpOworICAgICBBRERfQUxMX1RF U1RTKHRlc3RfcnNhX29hZXAsIDMpOworICAgICByZXR1cm4gMTsKKyB9CgpkaWZmIC0tZ2l0IGEv b3BlbnNzbC5zcGVjIGIvb3BlbnNzbC5zcGVjCmluZGV4IGZmNGZhMDUuLjVjMGMwMTQgMTAwNjQ0 Ci0tLSBhL29wZW5zc2wuc3BlYworKysgYi9vcGVuc3NsLnNwZWMKQEAgLTIyLDcgKzIyLDcgQEAK IFN1bW1hcnk6IFV0aWxpdGllcyBmcm9tIHRoZSBnZW5lcmFsIHB1cnBvc2UgY3J5cHRvZ3JhcGh5 IGxpYnJhcnkgd2l0aCBUTFMgaW1wbGVtZW50YXRpb24KIE5hbWU6IG9wZW5zc2wKIFZlcnNpb246 IDEuMS4xYgotUmVsZWFzZTogNSV7P2Rpc3R9CitSZWxlYXNlOiA2JXs/ZGlzdH0KIEVwb2NoOiAx CiAjIFdlIGhhdmUgdG8gcmVtb3ZlIGNlcnRhaW4gcGF0ZW50ZWQgYWxnb3JpdGhtcyBmcm9tIHRo ZSBvcGVuc3NsIHNvdXJjZQogIyB0YXJiYWxsIHdpdGggdGhlIGhvYmJsZS1vcGVuc3NsIHNjcmlw dCB3aGljaCBpcyBpbmNsdWRlZCBiZWxvdy4KQEAgLTYyLDcgKzYyLDcgQEAgUGF0Y2g0ODogb3Bl bnNzbC0xLjEuMS1maXBzLXBvc3QtcmFuZC5wYXRjaAogUGF0Y2g0OTogb3BlbnNzbC0xLjEuMS1l dnAta2RmLnBhdGNoCiBQYXRjaDUwOiBvcGVuc3NsLTEuMS4xLXNzaC1rZGYucGF0Y2gKICMgQmFj a3BvcnRlZCBmaXhlcyBpbmNsdWRpbmcgc2VjdXJpdHkgZml4ZXMKLVBhdGNoNTE6IG9wZW5zc2wt MS4xLjEtYmlvLW1lbS1wdHIucGF0Y2gKK1BhdGNoNTE6IG9wZW5zc2wtMS4xLjEtdXBzdHJlYW0t c3luYy5wYXRjaAogCiBMaWNlbnNlOiBPcGVuU1NMCiBVUkw6IGh0dHA6Ly93d3cub3BlbnNzbC5v cmcvCkBAIC0xNTksNyArMTU5LDcgQEAgY3AgJXtTT1VSQ0UxM30gdGVzdC8KICVwYXRjaDQ4IC1w MSAtYiAuZmlwcy1wb3N0LXJhbmQKICVwYXRjaDQ5IC1wMSAtYiAuZXZwLWtkZgogJXBhdGNoNTAg LXAxIC1iIC5zc2gta2RmCi0lcGF0Y2g1MSAtcDEgLWIgLmJpby1tZW0tcHRyCislcGF0Y2g1MSAt cDEgLWIgLnVwc3RyZWFtLXN5bmMKIAogCiAlYnVpbGQKQEAgLTQ0Niw2ICs0NDYsOSBAQCBleHBv cnQgTERfTElCUkFSWV9QQVRICiAlbGRjb25maWdfc2NyaXB0bGV0cyBsaWJzCiAKICVjaGFuZ2Vs b2cKKyogRnJpIE1heSAgMyAyMDE5IFRvbcOhxaEgTXLDoXogPHRtcmF6QHJlZGhhdC5jb20+IDEu MS4xYi02CistIGFwcGx5IG5ldyBidWdmaXhlcyBmcm9tIHVwc3RyZWFtIDEuMS4xIGJyYW5jaAor CiAqIFR1ZSBBcHIgMTYgMjAxOSBUb23DocWhIE1yw6F6IDx0bXJhekByZWRoYXQuY29tPiAxLjEu MWItNQogLSBmaXggZm9yIEJJT19nZXRfbWVtX3B0cigpIHJlZ3Jlc3Npb24gaW4gMS4xLjFiICgj MTY5MTg1MykKIAo=