From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25415 invoked by alias); 15 May 2013 12:47:20 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 25404 invoked by uid 89); 15 May 2013 12:47:20 -0000 X-Spam-SWARE-Status: No, score=-3.3 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,SPF_PASS autolearn=ham version=3.3.1 Received: from mail-wg0-f43.google.com (HELO mail-wg0-f43.google.com) (74.125.82.43) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Wed, 15 May 2013 12:47:19 +0000 Received: by mail-wg0-f43.google.com with SMTP id c11so1578530wgh.22 for ; Wed, 15 May 2013 05:47:16 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.180.73.10 with SMTP id h10mr12281707wiv.0.1368622036869; Wed, 15 May 2013 05:47:16 -0700 (PDT) Received: by 10.194.234.230 with HTTP; Wed, 15 May 2013 05:47:16 -0700 (PDT) In-Reply-To: References: <20130417142100.GA10525@kam.mff.cuni.cz> <20130417151245.GB10525@kam.mff.cuni.cz> Date: Wed, 15 May 2013 12:47:00 -0000 Message-ID: Subject: Re: [PATCH, x86] Use vector moves in memmove expanding From: Michael Zolotukhin To: "H.J. Lu" Cc: Jan Hubicka , Uros Bizjak , "gcc-patches@gcc.gnu.org" Content-Type: multipart/mixed; boundary=f46d043c7f1e56e71304dcc12696 X-Virus-Found: No X-SW-Source: 2013-05/txt/msg00832.txt.bz2 --f46d043c7f1e56e71304dcc12696 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1166 Hi HJ, > You use Pmode as the largest integer mode. Is word_mode better > than Pmode since word_mode is DI and Pmode may be SI for x32. I updated the patch to use word_mode instead of Pmode. Bootstrap, make check and Specs2000 are ok. Thanks, Michael On 14 May 2013 19:55, H.J. Lu wrote: > On Tue, May 14, 2013 at 7:34 AM, Michael Zolotukhin > wrote: >> Hi, >> I attached an updated version of the patch. Looks like the 64-bit issue is >> resolved in it (now a vector mode is explicitly chosen instead of TI- or >> another integer mode). Also, some of remarks are fixed in it - some >> others are still not changed, because I don't know what to do with them right >> now (see my questions in the previous letter). >> >> Could you take a look at the patch? >> >> I checked it on i386/x86_64 bootstrap and make check, and on Specs2000/2006 >> (I checked only stability). >> > > You use Pmode as the largest integer mode. Is word_mode better > than Pmode since word_mode is DI and Pmode may be SI for x32. > > > -- > H.J. -- --- Best regards, Michael V. Zolotukhin, Software Engineer Intel Corporation. --f46d043c7f1e56e71304dcc12696 Content-Type: application/octet-stream; name="memmov-3.patch" Content-Disposition: attachment; filename="memmov-3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hgqi6bes0 Content-length: 33603 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LW9wdHMuaCBiL2dj Yy9jb25maWcvaTM4Ni9pMzg2LW9wdHMuaAppbmRleCAxMWMwODQ1Li4xNmM2 MzUxIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni1vcHRzLmgK KysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYtb3B0cy5oCkBAIC0zNSw3ICsz NSw4IEBAIGVudW0gc3RyaW5nb3BfYWxnCiAgICByZXBfcHJlZml4XzhfYnl0 ZSwKICAgIGxvb3BfMV9ieXRlLAogICAgbG9vcCwKLSAgIHVucm9sbGVkX2xv b3AKKyAgIHVucm9sbGVkX2xvb3AsCisgICB2ZWN0b3JfbG9vcAogfTsKIAog LyogQXZhaWxhYmxlIGNhbGwgYWJpLiAgKi8KZGlmZiAtLWdpdCBhL2djYy9j b25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCmlu ZGV4IDlmNWEyNGYuLjkwMWI5MGEgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcv aTM4Ni9pMzg2LmMKKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwpAQCAt MjE4MjksMTEgKzIxODI5LDEwIEBAIGV4cGFuZF9zZXRfb3JfbW92bWVtX3Zp YV9sb29wIChydHggZGVzdG1lbSwgcnR4IHNyY21lbSwKIHsKICAgcnR4IG91 dF9sYWJlbCwgdG9wX2xhYmVsLCBpdGVyLCB0bXA7CiAgIGVudW0gbWFjaGlu ZV9tb2RlIGl0ZXJfbW9kZSA9IGNvdW50ZXJfbW9kZSAoY291bnQpOwotICBy dHggcGllY2Vfc2l6ZSA9IEdFTl9JTlQgKEdFVF9NT0RFX1NJWkUgKG1vZGUp ICogdW5yb2xsKTsKKyAgaW50IHBpZWNlX3NpemVfbiA9IEdFVF9NT0RFX1NJ WkUgKG1vZGUpICogdW5yb2xsOworICBydHggcGllY2Vfc2l6ZSA9IEdFTl9J TlQgKHBpZWNlX3NpemVfbik7CiAgIHJ0eCBwaWVjZV9zaXplX21hc2sgPSBH RU5fSU5UICh+KChHRVRfTU9ERV9TSVpFIChtb2RlKSAqIHVucm9sbCkgLSAx KSk7CiAgIHJ0eCBzaXplOwotICBydHggeF9hZGRyOwotICBydHggeV9hZGRy OwogICBpbnQgaTsKIAogICB0b3BfbGFiZWwgPSBnZW5fbGFiZWxfcnR4ICgp OwpAQCAtMjE4NTQsMTMgKzIxODUzLDE4IEBAIGV4cGFuZF9zZXRfb3JfbW92 bWVtX3ZpYV9sb29wIChydHggZGVzdG1lbSwgcnR4IHNyY21lbSwKICAgZW1p dF9sYWJlbCAodG9wX2xhYmVsKTsKIAogICB0bXAgPSBjb252ZXJ0X21vZGVz IChQbW9kZSwgaXRlcl9tb2RlLCBpdGVyLCB0cnVlKTsKLSAgeF9hZGRyID0g Z2VuX3J0eF9QTFVTIChQbW9kZSwgZGVzdHB0ciwgdG1wKTsKLSAgZGVzdG1l bSA9IGNoYW5nZV9hZGRyZXNzIChkZXN0bWVtLCBtb2RlLCB4X2FkZHIpOwor CisgIC8qIFRoaXMgYXNzZXJ0IGNvdWxkIGJlIHJlbGF4ZWQgLSBpbiB0aGlz IGNhc2Ugd2UnbGwgbmVlZCB0byBjb21wdXRlCisgICAgIHNtYWxsZXN0IHBv d2VyIG9mIHR3bywgY29udGFpbmluZyBpbiBQSUVDRV9TSVpFX04gYW5kIHBh c3MgaXQgdG8KKyAgICAgb2Zmc2V0X2FkZHJlc3MuICAqLworICBnY2NfYXNz ZXJ0ICgocGllY2Vfc2l6ZV9uICYgKHBpZWNlX3NpemVfbiAtIDEpKSA9PSAw KTsKKyAgZGVzdG1lbSA9IG9mZnNldF9hZGRyZXNzIChkZXN0bWVtLCB0bXAs IHBpZWNlX3NpemVfbik7CisgIGRlc3RtZW0gPSBhZGp1c3RfYWRkcmVzcyAo ZGVzdG1lbSwgbW9kZSwgMCk7CiAKICAgaWYgKHNyY21lbSkKICAgICB7Ci0g ICAgICB5X2FkZHIgPSBnZW5fcnR4X1BMVVMgKFBtb2RlLCBzcmNwdHIsIGNv cHlfcnR4ICh0bXApKTsKLSAgICAgIHNyY21lbSA9IGNoYW5nZV9hZGRyZXNz IChzcmNtZW0sIG1vZGUsIHlfYWRkcik7CisgICAgICBzcmNtZW0gPSBvZmZz ZXRfYWRkcmVzcyAoc3JjbWVtLCBjb3B5X3J0eCAodG1wKSwgcGllY2Vfc2l6 ZV9uKTsKKyAgICAgIHNyY21lbSA9IGFkanVzdF9hZGRyZXNzIChzcmNtZW0s IG1vZGUsIDApOwogCiAgICAgICAvKiBXaGVuIHVucm9sbGluZyBmb3IgY2hp cHMgdGhhdCByZW9yZGVyIG1lbW9yeSByZWFkcyBhbmQgd3JpdGVzLAogCSB3 ZSBjYW4gc2F2ZSByZWdpc3RlcnMgYnkgdXNpbmcgc2luZ2xlIHRlbXBvcmFy eS4KQEAgLTIyMDM5LDEzICsyMjA0Myw3NiBAQCBleHBhbmRfc2V0bWVtX3Zp YV9yZXBfc3RvcyAocnR4IGRlc3RtZW0sIHJ0eCBkZXN0cHRyLCBydHggdmFs dWUsCiAgIGVtaXRfaW5zbiAoZ2VuX3JlcF9zdG9zIChkZXN0cHRyLCBjb3Vu dHJlZywgZGVzdG1lbSwgdmFsdWUsIGRlc3RleHApKTsKIH0KIAotc3RhdGlj IHZvaWQKLWVtaXRfc3RybW92IChydHggZGVzdG1lbSwgcnR4IHNyY21lbSwK LQkgICAgIHJ0eCBkZXN0cHRyLCBydHggc3JjcHRyLCBlbnVtIG1hY2hpbmVf bW9kZSBtb2RlLCBpbnQgb2Zmc2V0KQorLyogVGhpcyBmdW5jdGlvbiBlbWl0 cyBtb3ZlcyB0byBjb3B5IFNJWkVfVE9fTU9WRSBieXRlcyBmcm9tIFNSQ01F TSB0bworICAgREVTVE1FTS4KKyAgIFNSQyBpcyBwYXNzZWQgYnkgcG9pbnRl ciB0byBiZSB1cGRhdGVkIG9uIHJldHVybi4KKyAgIFJldHVybiB2YWx1ZSBp cyB1cGRhdGVkIERTVC4gICovCitzdGF0aWMgcnR4CitlbWl0X21lbW1vdiAo cnR4IGRlc3RtZW0sIHJ0eCAqc3JjbWVtLCBydHggZGVzdHB0ciwgcnR4IHNy Y3B0ciwKKwkgICAgIEhPU1RfV0lERV9JTlQgc2l6ZV90b19tb3ZlKQogewot ICBydHggc3JjID0gYWRqdXN0X2F1dG9tb2RpZnlfYWRkcmVzc19udiAoc3Jj bWVtLCBtb2RlLCBzcmNwdHIsIG9mZnNldCk7Ci0gIHJ0eCBkZXN0ID0gYWRq dXN0X2F1dG9tb2RpZnlfYWRkcmVzc19udiAoZGVzdG1lbSwgbW9kZSwgZGVz dHB0ciwgb2Zmc2V0KTsKLSAgZW1pdF9pbnNuIChnZW5fc3RybW92IChkZXN0 cHRyLCBkZXN0LCBzcmNwdHIsIHNyYykpOworICBydHggZHN0ID0gZGVzdG1l bSwgc3JjID0gKnNyY21lbSwgYWRqdXN0LCB0ZW1wcmVnOworICBlbnVtIGlu c25fY29kZSBjb2RlOworICBlbnVtIG1hY2hpbmVfbW9kZSBtb3ZlX21vZGU7 CisgIGludCBwaWVjZV9zaXplLCBpOworCisgIC8qIEZpbmQgdGhlIHdpZGVz dCBtb2RlIGluIHdoaWNoIHdlIGNvdWxkIHBlcmZvcm0gbW92ZXMuCisgICAg IFN0YXJ0IHdpdGggdGhlIGJpZ2dlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4g U0laRV9UT19NT1ZFIGFuZCBoYWxmCisgICAgIGl0IHVudGlsIG1vdmUgb2Yg c3VjaCBzaXplIGlzIHN1cHBvcnRlZC4gICovCisgIHBpZWNlX3NpemUgPSAx IDw8IGZsb29yX2xvZzIgKHNpemVfdG9fbW92ZSk7CisgIG1vdmVfbW9kZSA9 IG1vZGVfZm9yX3NpemUgKHBpZWNlX3NpemUgKiBCSVRTX1BFUl9VTklULCBN T0RFX0lOVCwgMCk7CisgIGNvZGUgPSBvcHRhYl9oYW5kbGVyIChtb3Zfb3B0 YWIsIG1vdmVfbW9kZSk7CisgIHdoaWxlIChjb2RlID09IENPREVfRk9SX25v dGhpbmcgJiYgcGllY2Vfc2l6ZSA+IDEpCisgICAgeworICAgICAgcGllY2Vf c2l6ZSA+Pj0gMTsKKyAgICAgIG1vdmVfbW9kZSA9IG1vZGVfZm9yX3NpemUg KHBpZWNlX3NpemUgKiBCSVRTX1BFUl9VTklULCBNT0RFX0lOVCwgMCk7Cisg ICAgICBjb2RlID0gb3B0YWJfaGFuZGxlciAobW92X29wdGFiLCBtb3ZlX21v ZGUpOworICAgIH0KKworICAvKiBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIHZl Y3RvciBtb2RlIHdpdGggdGhlIHNhbWUgc2l6ZSBhcyBNT1ZFX01PREUuCisg ICAgIE1PVkVfTU9ERSBpcyBhbiBpbnRlZ2VyIG1vZGUgYXQgdGhlIG1vbWVu dCAoU0ksIERJLCBUSSwgZXRjLikuICAqLworICBpZiAoR0VUX01PREVfU0la RSAobW92ZV9tb2RlKSA+IEdFVF9NT0RFX1NJWkUgKHdvcmRfbW9kZSkpCisg ICAgeworICAgICAgaW50IG51bml0cyA9IEdFVF9NT0RFX1NJWkUgKG1vdmVf bW9kZSkgLyBHRVRfTU9ERV9TSVpFICh3b3JkX21vZGUpOworICAgICAgbW92 ZV9tb2RlID0gbW9kZV9mb3JfdmVjdG9yICh3b3JkX21vZGUsIG51bml0cyk7 CisgICAgICBjb2RlID0gb3B0YWJfaGFuZGxlciAobW92X29wdGFiLCBtb3Zl X21vZGUpOworICAgICAgaWYgKGNvZGUgPT0gQ09ERV9GT1Jfbm90aGluZykK Kwl7CisJICBtb3ZlX21vZGUgPSB3b3JkX21vZGU7CisJICBwaWVjZV9zaXpl ID0gR0VUX01PREVfU0laRSAobW92ZV9tb2RlKTsKKwkgIGNvZGUgPSBvcHRh Yl9oYW5kbGVyIChtb3Zfb3B0YWIsIG1vdmVfbW9kZSk7CisJfQorICAgIH0K KyAgZ2NjX2Fzc2VydCAoY29kZSAhPSBDT0RFX0ZPUl9ub3RoaW5nKTsKKwor ICBkc3QgPSBhZGp1c3RfYXV0b21vZGlmeV9hZGRyZXNzX252IChkc3QsIG1v dmVfbW9kZSwgZGVzdHB0ciwgMCk7CisgIHNyYyA9IGFkanVzdF9hdXRvbW9k aWZ5X2FkZHJlc3NfbnYgKHNyYywgbW92ZV9tb2RlLCBzcmNwdHIsIDApOwor CisgIC8qIEVtaXQgbW92ZXMuICBXZSdsbCBuZWVkIFNJWkVfVE9fTU9WRS9Q SUVDRV9TSVpFUyBtb3Zlcy4gICovCisgIGdjY19hc3NlcnQgKHNpemVfdG9f bW92ZSAlIHBpZWNlX3NpemUgPT0gMCk7CisgIGFkanVzdCA9IEdFTl9JTlQg KHBpZWNlX3NpemUpOworICBmb3IgKGkgPSAwOyBpIDwgc2l6ZV90b19tb3Zl OyBpICs9IHBpZWNlX3NpemUpCisgICAgeworICAgICAgLyogV2UgbW92ZSBm cm9tIG1lbW9yeSB0byBtZW1vcnksIHNvIHdlJ2xsIG5lZWQgdG8gZG8gaXQg dmlhCisJIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLiAgKi8KKyAgICAgIHRlbXBy ZWcgPSBnZW5fcmVnX3J0eCAobW92ZV9tb2RlKTsKKyAgICAgIGVtaXRfaW5z biAoR0VOX0ZDTiAoY29kZSkgKHRlbXByZWcsIHNyYykpOworICAgICAgZW1p dF9pbnNuIChHRU5fRkNOIChjb2RlKSAoZHN0LCB0ZW1wcmVnKSk7CisKKyAg ICAgIGVtaXRfbW92ZV9pbnNuIChkZXN0cHRyLAorCQkgICAgICBnZW5fcnR4 X1BMVVMgKFBtb2RlLCBjb3B5X3J0eCAoZGVzdHB0ciksIGFkanVzdCkpOwor ICAgICAgZW1pdF9tb3ZlX2luc24gKHNyY3B0ciwKKwkJICAgICAgZ2VuX3J0 eF9QTFVTIChQbW9kZSwgY29weV9ydHggKHNyY3B0ciksIGFkanVzdCkpOwor CisgICAgICBkc3QgPSBhZGp1c3RfYXV0b21vZGlmeV9hZGRyZXNzX252IChk c3QsIG1vdmVfbW9kZSwgZGVzdHB0ciwKKwkJCQkJICBwaWVjZV9zaXplKTsK KyAgICAgIHNyYyA9IGFkanVzdF9hdXRvbW9kaWZ5X2FkZHJlc3NfbnYgKHNy YywgbW92ZV9tb2RlLCBzcmNwdHIsCisJCQkJCSAgcGllY2Vfc2l6ZSk7Cisg ICAgfQorCisgIC8qIFVwZGF0ZSBEU1QgYW5kIFNSQyBydHguICAqLworICAq c3JjbWVtID0gc3JjOworICByZXR1cm4gZHN0OwogfQogCiAvKiBPdXRwdXQg Y29kZSB0byBjb3B5IGF0IG1vc3QgY291bnQgJiAobWF4X3NpemUgLSAxKSBi eXRlcyBmcm9tIFNSQyB0byBERVNULiAgKi8KQEAgLTIyMDU3LDQ0ICsyMjEy NCwxNyBAQCBleHBhbmRfbW92bWVtX2VwaWxvZ3VlIChydHggZGVzdG1lbSwg cnR4IHNyY21lbSwKICAgaWYgKENPTlNUX0lOVF9QIChjb3VudCkpCiAgICAg ewogICAgICAgSE9TVF9XSURFX0lOVCBjb3VudHZhbCA9IElOVFZBTCAoY291 bnQpOwotICAgICAgaW50IG9mZnNldCA9IDA7CisgICAgICBIT1NUX1dJREVf SU5UIGVwaWxvZ3VlX3NpemUgPSBjb3VudHZhbCAlIG1heF9zaXplOworICAg ICAgaW50IGk7CiAKLSAgICAgIGlmICgoY291bnR2YWwgJiAweDEwKSAmJiBt YXhfc2l6ZSA+IDE2KQorICAgICAgLyogRm9yIG5vdyBNQVhfU0laRSBzaG91 bGQgYmUgYSBwb3dlciBvZiAyLiAgVGhpcyBhc3NlcnQgY291bGQgYmUKKwkg cmVsYXhlZCwgYnV0IGl0J2xsIHJlcXVpcmUgYSBiaXQgbW9yZSBjb21wbGlj YXRlZCBlcGlsb2d1ZQorCSBleHBhbmRpbmcuICAqLworICAgICAgZ2NjX2Fz c2VydCAoKG1heF9zaXplICYgKG1heF9zaXplIC0gMSkpID09IDApOworICAg ICAgZm9yIChpID0gbWF4X3NpemU7IGkgPj0gMTsgaSA+Pj0gMSkKIAl7Ci0J ICBpZiAoVEFSR0VUXzY0QklUKQotCSAgICB7Ci0JICAgICAgZW1pdF9zdHJt b3YgKGRlc3RtZW0sIHNyY21lbSwgZGVzdHB0ciwgc3JjcHRyLCBESW1vZGUs IG9mZnNldCk7Ci0JICAgICAgZW1pdF9zdHJtb3YgKGRlc3RtZW0sIHNyY21l bSwgZGVzdHB0ciwgc3JjcHRyLCBESW1vZGUsIG9mZnNldCArIDgpOwotCSAg ICB9Ci0JICBlbHNlCi0JICAgIGdjY191bnJlYWNoYWJsZSAoKTsKLQkgIG9m ZnNldCArPSAxNjsKLQl9Ci0gICAgICBpZiAoKGNvdW50dmFsICYgMHgwOCkg JiYgbWF4X3NpemUgPiA4KQotCXsKLQkgIGlmIChUQVJHRVRfNjRCSVQpCi0J ICAgIGVtaXRfc3RybW92IChkZXN0bWVtLCBzcmNtZW0sIGRlc3RwdHIsIHNy Y3B0ciwgREltb2RlLCBvZmZzZXQpOwotCSAgZWxzZQotCSAgICB7Ci0JICAg ICAgZW1pdF9zdHJtb3YgKGRlc3RtZW0sIHNyY21lbSwgZGVzdHB0ciwgc3Jj cHRyLCBTSW1vZGUsIG9mZnNldCk7Ci0JICAgICAgZW1pdF9zdHJtb3YgKGRl c3RtZW0sIHNyY21lbSwgZGVzdHB0ciwgc3JjcHRyLCBTSW1vZGUsIG9mZnNl dCArIDQpOwotCSAgICB9Ci0JICBvZmZzZXQgKz0gODsKLQl9Ci0gICAgICBp ZiAoKGNvdW50dmFsICYgMHgwNCkgJiYgbWF4X3NpemUgPiA0KQotCXsKLSAg ICAgICAgICBlbWl0X3N0cm1vdiAoZGVzdG1lbSwgc3JjbWVtLCBkZXN0cHRy LCBzcmNwdHIsIFNJbW9kZSwgb2Zmc2V0KTsKLQkgIG9mZnNldCArPSA0Owot CX0KLSAgICAgIGlmICgoY291bnR2YWwgJiAweDAyKSAmJiBtYXhfc2l6ZSA+ IDIpCi0JewotICAgICAgICAgIGVtaXRfc3RybW92IChkZXN0bWVtLCBzcmNt ZW0sIGRlc3RwdHIsIHNyY3B0ciwgSEltb2RlLCBvZmZzZXQpOwotCSAgb2Zm c2V0ICs9IDI7Ci0JfQotICAgICAgaWYgKChjb3VudHZhbCAmIDB4MDEpICYm IG1heF9zaXplID4gMSkKLQl7Ci0gICAgICAgICAgZW1pdF9zdHJtb3YgKGRl c3RtZW0sIHNyY21lbSwgZGVzdHB0ciwgc3JjcHRyLCBRSW1vZGUsIG9mZnNl dCk7Ci0JICBvZmZzZXQgKz0gMTsKKwkgIGlmIChlcGlsb2d1ZV9zaXplICYg aSkKKwkgICAgZGVzdG1lbSA9IGVtaXRfbWVtbW92IChkZXN0bWVtLCAmc3Jj bWVtLCBkZXN0cHRyLCBzcmNwdHIsIGkpOwogCX0KICAgICAgIHJldHVybjsK ICAgICB9CkBAIC0yMjMzMCw0NyArMjIzNzAsMzMgQEAgZXhwYW5kX3NldG1l bV9lcGlsb2d1ZSAocnR4IGRlc3RtZW0sIHJ0eCBkZXN0cHRyLCBydHggdmFs dWUsIHJ0eCBjb3VudCwgaW50IG1heF8KIH0KIAogLyogQ29weSBlbm91Z2gg ZnJvbSBERVNUIHRvIFNSQyB0byBhbGlnbiBERVNUIGtub3duIHRvIGJ5IGFs aWduZWQgYnkgQUxJR04gdG8KLSAgIERFU0lSRURfQUxJR05NRU5ULiAgKi8K LXN0YXRpYyB2b2lkCisgICBERVNJUkVEX0FMSUdOTUVOVC4KKyAgIFJldHVy biB2YWx1ZSBpcyB1cGRhdGVkIERFU1RNRU0uICAqLworc3RhdGljIHJ0eAog ZXhwYW5kX21vdm1lbV9wcm9sb2d1ZSAocnR4IGRlc3RtZW0sIHJ0eCBzcmNt ZW0sCiAJCQlydHggZGVzdHB0ciwgcnR4IHNyY3B0ciwgcnR4IGNvdW50LAog CQkJaW50IGFsaWduLCBpbnQgZGVzaXJlZF9hbGlnbm1lbnQpCiB7Ci0gIGlm IChhbGlnbiA8PSAxICYmIGRlc2lyZWRfYWxpZ25tZW50ID4gMSkKLSAgICB7 Ci0gICAgICBydHggbGFiZWwgPSBpeDg2X2V4cGFuZF9hbGlnbnRlc3QgKGRl c3RwdHIsIDEsIGZhbHNlKTsKLSAgICAgIHNyY21lbSA9IGNoYW5nZV9hZGRy ZXNzIChzcmNtZW0sIFFJbW9kZSwgc3JjcHRyKTsKLSAgICAgIGRlc3RtZW0g PSBjaGFuZ2VfYWRkcmVzcyAoZGVzdG1lbSwgUUltb2RlLCBkZXN0cHRyKTsK LSAgICAgIGVtaXRfaW5zbiAoZ2VuX3N0cm1vdiAoZGVzdHB0ciwgZGVzdG1l bSwgc3JjcHRyLCBzcmNtZW0pKTsKLSAgICAgIGl4ODZfYWRqdXN0X2NvdW50 ZXIgKGNvdW50LCAxKTsKLSAgICAgIGVtaXRfbGFiZWwgKGxhYmVsKTsKLSAg ICAgIExBQkVMX05VU0VTIChsYWJlbCkgPSAxOwotICAgIH0KLSAgaWYgKGFs aWduIDw9IDIgJiYgZGVzaXJlZF9hbGlnbm1lbnQgPiAyKQotICAgIHsKLSAg ICAgIHJ0eCBsYWJlbCA9IGl4ODZfZXhwYW5kX2FsaWdudGVzdCAoZGVzdHB0 ciwgMiwgZmFsc2UpOwotICAgICAgc3JjbWVtID0gY2hhbmdlX2FkZHJlc3Mg KHNyY21lbSwgSEltb2RlLCBzcmNwdHIpOwotICAgICAgZGVzdG1lbSA9IGNo YW5nZV9hZGRyZXNzIChkZXN0bWVtLCBISW1vZGUsIGRlc3RwdHIpOwotICAg ICAgZW1pdF9pbnNuIChnZW5fc3RybW92IChkZXN0cHRyLCBkZXN0bWVtLCBz cmNwdHIsIHNyY21lbSkpOwotICAgICAgaXg4Nl9hZGp1c3RfY291bnRlciAo Y291bnQsIDIpOwotICAgICAgZW1pdF9sYWJlbCAobGFiZWwpOwotICAgICAg TEFCRUxfTlVTRVMgKGxhYmVsKSA9IDE7Ci0gICAgfQotICBpZiAoYWxpZ24g PD0gNCAmJiBkZXNpcmVkX2FsaWdubWVudCA+IDQpCisgIGludCBpOworICBm b3IgKGkgPSAxOyBpIDwgZGVzaXJlZF9hbGlnbm1lbnQ7IGkgPDw9IDEpCiAg ICAgewotICAgICAgcnR4IGxhYmVsID0gaXg4Nl9leHBhbmRfYWxpZ250ZXN0 IChkZXN0cHRyLCA0LCBmYWxzZSk7Ci0gICAgICBzcmNtZW0gPSBjaGFuZ2Vf YWRkcmVzcyAoc3JjbWVtLCBTSW1vZGUsIHNyY3B0cik7Ci0gICAgICBkZXN0 bWVtID0gY2hhbmdlX2FkZHJlc3MgKGRlc3RtZW0sIFNJbW9kZSwgZGVzdHB0 cik7Ci0gICAgICBlbWl0X2luc24gKGdlbl9zdHJtb3YgKGRlc3RwdHIsIGRl c3RtZW0sIHNyY3B0ciwgc3JjbWVtKSk7Ci0gICAgICBpeDg2X2FkanVzdF9j b3VudGVyIChjb3VudCwgNCk7Ci0gICAgICBlbWl0X2xhYmVsIChsYWJlbCk7 Ci0gICAgICBMQUJFTF9OVVNFUyAobGFiZWwpID0gMTsKKyAgICAgIGlmIChh bGlnbiA8PSBpKQorCXsKKwkgIHJ0eCBsYWJlbCA9IGl4ODZfZXhwYW5kX2Fs aWdudGVzdCAoZGVzdHB0ciwgaSwgZmFsc2UpOworCSAgZGVzdG1lbSA9IGVt aXRfbWVtbW92IChkZXN0bWVtLCAmc3JjbWVtLCBkZXN0cHRyLCBzcmNwdHIs IGkpOworCSAgaXg4Nl9hZGp1c3RfY291bnRlciAoY291bnQsIGkpOworCSAg ZW1pdF9sYWJlbCAobGFiZWwpOworCSAgTEFCRUxfTlVTRVMgKGxhYmVsKSA9 IDE7CisJICBzZXRfbWVtX2FsaWduIChkZXN0bWVtLCBpICogMiAqIEJJVFNf UEVSX1VOSVQpOworCX0KICAgICB9Ci0gIGdjY19hc3NlcnQgKGRlc2lyZWRf YWxpZ25tZW50IDw9IDgpOworICByZXR1cm4gZGVzdG1lbTsKIH0KIAogLyog Q29weSBlbm91Z2ggZnJvbSBEU1QgdG8gU1JDIHRvIGFsaWduIERTVCBrbm93 biB0byBERVNJUkVEX0FMSUdOLgotICAgQUxJR05fQllURVMgaXMgaG93IG1h bnkgYnl0ZXMgbmVlZCB0byBiZSBjb3BpZWQuICAqLworICAgQUxJR05fQllU RVMgaXMgaG93IG1hbnkgYnl0ZXMgbmVlZCB0byBiZSBjb3BpZWQuCisgICBU aGUgZnVuY3Rpb24gdXBkYXRlcyBEU1QgYW5kIFNSQywgbmFtZWx5LCBpdCBz ZXRzIHByb3BlciBhbGlnbm1lbnQuCisgICBEU1QgaXMgcmV0dXJuZWQgdmlh IHJldHVybiB2YWx1ZSwgU1JDIGlzIHVwZGF0ZWQgdmlhIHBvaW50ZXIgU1JD UC4gICovCiBzdGF0aWMgcnR4CiBleHBhbmRfY29uc3RhbnRfbW92bWVtX3By b2xvZ3VlIChydHggZHN0LCBydHggKnNyY3AsIHJ0eCBkZXN0cmVnLCBydHgg c3JjcmVnLAogCQkJCSBpbnQgZGVzaXJlZF9hbGlnbiwgaW50IGFsaWduX2J5 dGVzKQpAQCAtMjIzNzgsNjIgKzIyNDA0LDM0IEBAIGV4cGFuZF9jb25zdGFu dF9tb3ZtZW1fcHJvbG9ndWUgKHJ0eCBkc3QsIHJ0eCAqc3JjcCwgcnR4IGRl c3RyZWcsIHJ0eCBzcmNyZWcsCiAgIHJ0eCBzcmMgPSAqc3JjcDsKICAgcnR4 IG9yaWdfZHN0ID0gZHN0OwogICBydHggb3JpZ19zcmMgPSBzcmM7Ci0gIGlu dCBvZmYgPSAwOworICBpbnQgcGllY2Vfc2l6ZSA9IDE7CisgIGludCBjb3Bp ZWRfYnl0ZXMgPSAwOwogICBpbnQgc3JjX2FsaWduX2J5dGVzID0gZ2V0X21l bV9hbGlnbl9vZmZzZXQgKHNyYywgZGVzaXJlZF9hbGlnbiAqIEJJVFNfUEVS X1VOSVQpOwogICBpZiAoc3JjX2FsaWduX2J5dGVzID49IDApCiAgICAgc3Jj X2FsaWduX2J5dGVzID0gZGVzaXJlZF9hbGlnbiAtIHNyY19hbGlnbl9ieXRl czsKLSAgaWYgKGFsaWduX2J5dGVzICYgMSkKLSAgICB7Ci0gICAgICBkc3Qg PSBhZGp1c3RfYXV0b21vZGlmeV9hZGRyZXNzX252IChkc3QsIFFJbW9kZSwg ZGVzdHJlZywgMCk7Ci0gICAgICBzcmMgPSBhZGp1c3RfYXV0b21vZGlmeV9h ZGRyZXNzX252IChzcmMsIFFJbW9kZSwgc3JjcmVnLCAwKTsKLSAgICAgIG9m ZiA9IDE7Ci0gICAgICBlbWl0X2luc24gKGdlbl9zdHJtb3YgKGRlc3RyZWcs IGRzdCwgc3JjcmVnLCBzcmMpKTsKLSAgICB9Ci0gIGlmIChhbGlnbl9ieXRl cyAmIDIpCi0gICAgewotICAgICAgZHN0ID0gYWRqdXN0X2F1dG9tb2RpZnlf YWRkcmVzc19udiAoZHN0LCBISW1vZGUsIGRlc3RyZWcsIG9mZik7Ci0gICAg ICBzcmMgPSBhZGp1c3RfYXV0b21vZGlmeV9hZGRyZXNzX252IChzcmMsIEhJ bW9kZSwgc3JjcmVnLCBvZmYpOwotICAgICAgaWYgKE1FTV9BTElHTiAoZHN0 KSA8IDIgKiBCSVRTX1BFUl9VTklUKQotCXNldF9tZW1fYWxpZ24gKGRzdCwg MiAqIEJJVFNfUEVSX1VOSVQpOwotICAgICAgaWYgKHNyY19hbGlnbl9ieXRl cyA+PSAwCi0JICAmJiAoc3JjX2FsaWduX2J5dGVzICYgMSkgPT0gKGFsaWdu X2J5dGVzICYgMSkKLQkgICYmIE1FTV9BTElHTiAoc3JjKSA8IDIgKiBCSVRT X1BFUl9VTklUKQotCXNldF9tZW1fYWxpZ24gKHNyYywgMiAqIEJJVFNfUEVS X1VOSVQpOwotICAgICAgb2ZmID0gMjsKLSAgICAgIGVtaXRfaW5zbiAoZ2Vu X3N0cm1vdiAoZGVzdHJlZywgZHN0LCBzcmNyZWcsIHNyYykpOwotICAgIH0K LSAgaWYgKGFsaWduX2J5dGVzICYgNCkKKworICBmb3IgKHBpZWNlX3NpemUg PSAxOworICAgICAgIHBpZWNlX3NpemUgPD0gZGVzaXJlZF9hbGlnbiAmJiBj b3BpZWRfYnl0ZXMgPCBhbGlnbl9ieXRlczsKKyAgICAgICBwaWVjZV9zaXpl IDw8PSAxKQogICAgIHsKLSAgICAgIGRzdCA9IGFkanVzdF9hdXRvbW9kaWZ5 X2FkZHJlc3NfbnYgKGRzdCwgU0ltb2RlLCBkZXN0cmVnLCBvZmYpOwotICAg ICAgc3JjID0gYWRqdXN0X2F1dG9tb2RpZnlfYWRkcmVzc19udiAoc3JjLCBT SW1vZGUsIHNyY3JlZywgb2ZmKTsKLSAgICAgIGlmIChNRU1fQUxJR04gKGRz dCkgPCA0ICogQklUU19QRVJfVU5JVCkKLQlzZXRfbWVtX2FsaWduIChkc3Qs IDQgKiBCSVRTX1BFUl9VTklUKTsKLSAgICAgIGlmIChzcmNfYWxpZ25fYnl0 ZXMgPj0gMCkKKyAgICAgIGlmIChhbGlnbl9ieXRlcyAmIHBpZWNlX3NpemUp CiAJewotCSAgdW5zaWduZWQgaW50IHNyY19hbGlnbiA9IDA7Ci0JICBpZiAo KHNyY19hbGlnbl9ieXRlcyAmIDMpID09IChhbGlnbl9ieXRlcyAmIDMpKQot CSAgICBzcmNfYWxpZ24gPSA0OwotCSAgZWxzZSBpZiAoKHNyY19hbGlnbl9i eXRlcyAmIDEpID09IChhbGlnbl9ieXRlcyAmIDEpKQotCSAgICBzcmNfYWxp Z24gPSAyOwotCSAgaWYgKE1FTV9BTElHTiAoc3JjKSA8IHNyY19hbGlnbiAq IEJJVFNfUEVSX1VOSVQpCi0JICAgIHNldF9tZW1fYWxpZ24gKHNyYywgc3Jj X2FsaWduICogQklUU19QRVJfVU5JVCk7CisJICBkc3QgPSBlbWl0X21lbW1v diAoZHN0LCAmc3JjLCBkZXN0cmVnLCBzcmNyZWcsIHBpZWNlX3NpemUpOwor CSAgY29waWVkX2J5dGVzICs9IHBpZWNlX3NpemU7CiAJfQotICAgICAgb2Zm ID0gNDsKLSAgICAgIGVtaXRfaW5zbiAoZ2VuX3N0cm1vdiAoZGVzdHJlZywg ZHN0LCBzcmNyZWcsIHNyYykpOwogICAgIH0KLSAgZHN0ID0gYWRqdXN0X2F1 dG9tb2RpZnlfYWRkcmVzc19udiAoZHN0LCBCTEttb2RlLCBkZXN0cmVnLCBv ZmYpOwotICBzcmMgPSBhZGp1c3RfYXV0b21vZGlmeV9hZGRyZXNzX252IChz cmMsIEJMS21vZGUsIHNyY3JlZywgb2ZmKTsKKwogICBpZiAoTUVNX0FMSUdO IChkc3QpIDwgKHVuc2lnbmVkIGludCkgZGVzaXJlZF9hbGlnbiAqIEJJVFNf UEVSX1VOSVQpCiAgICAgc2V0X21lbV9hbGlnbiAoZHN0LCBkZXNpcmVkX2Fs aWduICogQklUU19QRVJfVU5JVCk7CiAgIGlmIChzcmNfYWxpZ25fYnl0ZXMg Pj0gMCkKICAgICB7Ci0gICAgICB1bnNpZ25lZCBpbnQgc3JjX2FsaWduID0g MDsKLSAgICAgIGlmICgoc3JjX2FsaWduX2J5dGVzICYgNykgPT0gKGFsaWdu X2J5dGVzICYgNykpCi0Jc3JjX2FsaWduID0gODsKLSAgICAgIGVsc2UgaWYg KChzcmNfYWxpZ25fYnl0ZXMgJiAzKSA9PSAoYWxpZ25fYnl0ZXMgJiAzKSkK LQlzcmNfYWxpZ24gPSA0OwotICAgICAgZWxzZSBpZiAoKHNyY19hbGlnbl9i eXRlcyAmIDEpID09IChhbGlnbl9ieXRlcyAmIDEpKQotCXNyY19hbGlnbiA9 IDI7CisgICAgICB1bnNpZ25lZCBpbnQgc3JjX2FsaWduOworICAgICAgZm9y IChzcmNfYWxpZ24gPSBkZXNpcmVkX2FsaWduOyBzcmNfYWxpZ24gPj0gMjsg c3JjX2FsaWduID4+PSAxKQorCXsKKwkgIGlmICgoc3JjX2FsaWduX2J5dGVz ICYgKHNyY19hbGlnbiAtIDEpKQorCSAgICAgICA9PSAoYWxpZ25fYnl0ZXMg JiAoc3JjX2FsaWduIC0gMSkpKQorCSAgICBicmVhazsKKwl9CiAgICAgICBp ZiAoc3JjX2FsaWduID4gKHVuc2lnbmVkIGludCkgZGVzaXJlZF9hbGlnbikK IAlzcmNfYWxpZ24gPSBkZXNpcmVkX2FsaWduOwogICAgICAgaWYgKE1FTV9B TElHTiAoc3JjKSA8IHNyY19hbGlnbiAqIEJJVFNfUEVSX1VOSVQpCkBAIC0y MjY2Niw0MiArMjI2NjQsMjQgQEAgZGVjaWRlX2FsZyAoSE9TVF9XSURFX0lO VCBjb3VudCwgSE9TVF9XSURFX0lOVCBleHBlY3RlZF9zaXplLCBib29sIG1l bXNldCwKIHN0YXRpYyBpbnQKIGRlY2lkZV9hbGlnbm1lbnQgKGludCBhbGln biwKIAkJICBlbnVtIHN0cmluZ29wX2FsZyBhbGcsCi0JCSAgaW50IGV4cGVj dGVkX3NpemUpCisJCSAgaW50IGV4cGVjdGVkX3NpemUsCisJCSAgZW51bSBt YWNoaW5lX21vZGUgbW92ZV9tb2RlKQogewogICBpbnQgZGVzaXJlZF9hbGln biA9IDA7Ci0gIHN3aXRjaCAoYWxnKQotICAgIHsKLSAgICAgIGNhc2Ugbm9f c3RyaW5nb3A6Ci0JZ2NjX3VucmVhY2hhYmxlICgpOwotICAgICAgY2FzZSBs b29wOgotICAgICAgY2FzZSB1bnJvbGxlZF9sb29wOgotCWRlc2lyZWRfYWxp Z24gPSBHRVRfTU9ERV9TSVpFIChQbW9kZSk7Ci0JYnJlYWs7Ci0gICAgICBj YXNlIHJlcF9wcmVmaXhfOF9ieXRlOgotCWRlc2lyZWRfYWxpZ24gPSA4Owot CWJyZWFrOwotICAgICAgY2FzZSByZXBfcHJlZml4XzRfYnl0ZToKLQkvKiBQ ZW50aXVtUHJvIGhhcyBzcGVjaWFsIGxvZ2ljIHRyaWdnZXJpbmcgZm9yIDgg Ynl0ZSBhbGlnbmVkIGJsb2Nrcy4KLQkgICBjb3B5aW5nIHdob2xlIGNhY2hl bGluZSBhdCBvbmNlLiAgKi8KLQlpZiAoVEFSR0VUX1BFTlRJVU1QUk8pCi0J ICBkZXNpcmVkX2FsaWduID0gODsKLQllbHNlCi0JICBkZXNpcmVkX2FsaWdu ID0gNDsKLQlicmVhazsKLSAgICAgIGNhc2UgcmVwX3ByZWZpeF8xX2J5dGU6 Ci0JLyogUGVudGl1bVBybyBoYXMgc3BlY2lhbCBsb2dpYyB0cmlnZ2VyaW5n IGZvciA4IGJ5dGUgYWxpZ25lZCBibG9ja3MuCi0JICAgY29weWluZyB3aG9s ZSBjYWNoZWxpbmUgYXQgb25jZS4gICovCi0JaWYgKFRBUkdFVF9QRU5USVVN UFJPKQotCSAgZGVzaXJlZF9hbGlnbiA9IDg7Ci0JZWxzZQotCSAgZGVzaXJl ZF9hbGlnbiA9IDE7Ci0JYnJlYWs7Ci0gICAgICBjYXNlIGxvb3BfMV9ieXRl OgotCWRlc2lyZWRfYWxpZ24gPSAxOwotCWJyZWFrOwotICAgICAgY2FzZSBs aWJjYWxsOgotCXJldHVybiAwOwotICAgIH0KKworICBnY2NfYXNzZXJ0IChh bGcgIT0gbm9fc3RyaW5nb3ApOworCisgIGlmIChhbGcgPT0gbGliY2FsbCkK KyAgICByZXR1cm4gMDsKKyAgaWYgKG1vdmVfbW9kZSA9PSBWT0lEbW9kZSkK KyAgICByZXR1cm4gMDsKKworICBkZXNpcmVkX2FsaWduID0gR0VUX01PREVf U0laRSAobW92ZV9tb2RlKTsKKyAgLyogUGVudGl1bVBybyBoYXMgc3BlY2lh bCBsb2dpYyB0cmlnZ2VyaW5nIGZvciA4IGJ5dGUgYWxpZ25lZCBibG9ja3Mu CisgICAgIGNvcHlpbmcgd2hvbGUgY2FjaGVsaW5lIGF0IG9uY2UuICAqLwor ICBpZiAoVEFSR0VUX1BFTlRJVU1QUk8KKyAgICAgICYmIChhbGcgPT0gcmVw X3ByZWZpeF80X2J5dGUgfHwgYWxnID09IHJlcF9wcmVmaXhfMV9ieXRlKSkK KyAgICBkZXNpcmVkX2FsaWduID0gODsKIAogICBpZiAob3B0aW1pemVfc2l6 ZSkKICAgICBkZXNpcmVkX2FsaWduID0gMTsKQEAgLTIyNzA5LDE3ICsyMjY4 OSw4IEBAIGRlY2lkZV9hbGlnbm1lbnQgKGludCBhbGlnbiwKICAgICBkZXNp cmVkX2FsaWduID0gYWxpZ247CiAgIGlmIChleHBlY3RlZF9zaXplICE9IC0x ICYmIGV4cGVjdGVkX3NpemUgPCA0KQogICAgIGRlc2lyZWRfYWxpZ24gPSBh bGlnbjsKLSAgcmV0dXJuIGRlc2lyZWRfYWxpZ247Ci19CiAKLS8qIFJldHVy biB0aGUgc21hbGxlc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gVkFMLiAg Ki8KLXN0YXRpYyBpbnQKLXNtYWxsZXN0X3BvdzJfZ3JlYXRlcl90aGFuIChp bnQgdmFsKQotewotICBpbnQgcmV0ID0gMTsKLSAgd2hpbGUgKHJldCA8PSB2 YWwpCi0gICAgcmV0IDw8PSAxOwotICByZXR1cm4gcmV0OworICByZXR1cm4g ZGVzaXJlZF9hbGlnbjsKIH0KIAogLyogRXhwYW5kIHN0cmluZyBtb3ZlICht ZW1jcHkpIG9wZXJhdGlvbi4gIFVzZSBpMzg2IHN0cmluZyBvcGVyYXRpb25z CkBAIC0yMjc2NSw2ICsyMjczNiw4IEBAIGl4ODZfZXhwYW5kX21vdm1lbSAo cnR4IGRzdCwgcnR4IHNyYywgcnR4IGNvdW50X2V4cCwgcnR4IGFsaWduX2V4 cCwKICAgaW50IGR5bmFtaWNfY2hlY2s7CiAgIGJvb2wgbmVlZF96ZXJvX2d1 YXJkID0gZmFsc2U7CiAgIGJvb2wgbm9hbGlnbjsKKyAgZW51bSBtYWNoaW5l X21vZGUgbW92ZV9tb2RlID0gVk9JRG1vZGU7CisgIGludCB1bnJvbGxfZmFj dG9yID0gMTsKIAogICBpZiAoQ09OU1RfSU5UX1AgKGFsaWduX2V4cCkpCiAg ICAgYWxpZ24gPSBJTlRWQUwgKGFsaWduX2V4cCk7CkBAIC0yMjc4OCw1MCAr MjI3NjEsNzEgQEAgaXg4Nl9leHBhbmRfbW92bWVtIChydHggZHN0LCBydHgg c3JjLCBydHggY291bnRfZXhwLCBydHggYWxpZ25fZXhwLAogCiAgIC8qIFN0 ZXAgMDogRGVjaWRlIG9uIHByZWZlcnJlZCBhbGdvcml0aG0sIGRlc2lyZWQg YWxpZ25tZW50IGFuZAogICAgICBzaXplIG9mIGNodW5rcyB0byBiZSBjb3Bp ZWQgYnkgbWFpbiBsb29wLiAgKi8KLQogICBhbGcgPSBkZWNpZGVfYWxnIChj b3VudCwgZXhwZWN0ZWRfc2l6ZSwgZmFsc2UsICZkeW5hbWljX2NoZWNrLCAm bm9hbGlnbik7Ci0gIGRlc2lyZWRfYWxpZ24gPSBkZWNpZGVfYWxpZ25tZW50 IChhbGlnbiwgYWxnLCBleHBlY3RlZF9zaXplKTsKLQotICBpZiAoIVRBUkdF VF9BTElHTl9TVFJJTkdPUFMgfHwgbm9hbGlnbikKLSAgICBhbGlnbiA9IGRl c2lyZWRfYWxpZ247Ci0KICAgaWYgKGFsZyA9PSBsaWJjYWxsKQogICAgIHJl dHVybiBmYWxzZTsKICAgZ2NjX2Fzc2VydCAoYWxnICE9IG5vX3N0cmluZ29w KTsKKwogICBpZiAoIWNvdW50KQogICAgIGNvdW50X2V4cCA9IGNvcHlfdG9f bW9kZV9yZWcgKEdFVF9NT0RFIChjb3VudF9leHApLCBjb3VudF9leHApOwog ICBkZXN0cmVnID0gY29weV9hZGRyX3RvX3JlZyAoWEVYUCAoZHN0LCAwKSk7 CiAgIHNyY3JlZyA9IGNvcHlfYWRkcl90b19yZWcgKFhFWFAgKHNyYywgMCkp OworCisgIHVucm9sbF9mYWN0b3IgPSAxOworICBtb3ZlX21vZGUgPSB3b3Jk X21vZGU7CiAgIHN3aXRjaCAoYWxnKQogICAgIHsKICAgICBjYXNlIGxpYmNh bGw6CiAgICAgY2FzZSBub19zdHJpbmdvcDoKICAgICAgIGdjY191bnJlYWNo YWJsZSAoKTsKKyAgICBjYXNlIGxvb3BfMV9ieXRlOgorICAgICAgbmVlZF96 ZXJvX2d1YXJkID0gdHJ1ZTsKKyAgICAgIG1vdmVfbW9kZSA9IFFJbW9kZTsK KyAgICAgIGJyZWFrOwogICAgIGNhc2UgbG9vcDoKICAgICAgIG5lZWRfemVy b19ndWFyZCA9IHRydWU7Ci0gICAgICBzaXplX25lZWRlZCA9IEdFVF9NT0RF X1NJWkUgKHdvcmRfbW9kZSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIHVu cm9sbGVkX2xvb3A6CiAgICAgICBuZWVkX3plcm9fZ3VhcmQgPSB0cnVlOwot ICAgICAgc2l6ZV9uZWVkZWQgPSBHRVRfTU9ERV9TSVpFICh3b3JkX21vZGUp ICogKFRBUkdFVF82NEJJVCA/IDQgOiAyKTsKKyAgICAgIHVucm9sbF9mYWN0 b3IgPSAoVEFSR0VUXzY0QklUID8gNCA6IDIpOworICAgICAgYnJlYWs7Cisg ICAgY2FzZSB2ZWN0b3JfbG9vcDoKKyAgICAgIG5lZWRfemVyb19ndWFyZCA9 IHRydWU7CisgICAgICB1bnJvbGxfZmFjdG9yID0gNDsKKyAgICAgIC8qIEZp bmQgdGhlIHdpZGVzdCBzdXBwb3J0ZWQgbW9kZS4gICovCisgICAgICBtb3Zl X21vZGUgPSB3b3JkX21vZGU7CisgICAgICB3aGlsZSAob3B0YWJfaGFuZGxl ciAobW92X29wdGFiLCBHRVRfTU9ERV9XSURFUl9NT0RFIChtb3ZlX21vZGUp KQorCSAgICAgIT0gQ09ERV9GT1Jfbm90aGluZykKKwkgIG1vdmVfbW9kZSA9 IEdFVF9NT0RFX1dJREVSX01PREUgKG1vdmVfbW9kZSk7CisKKyAgICAgIC8q IEZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgdmVjdG9yIG1vZGUgd2l0aCB0aGUg c2FtZSBzaXplIGFzIE1PVkVfTU9ERS4KKwkgTU9WRV9NT0RFIGlzIGFuIGlu dGVnZXIgbW9kZSBhdCB0aGUgbW9tZW50IChTSSwgREksIFRJLCBldGMuKS4g ICovCisgICAgICBpZiAoR0VUX01PREVfU0laRSAobW92ZV9tb2RlKSA+IEdF VF9NT0RFX1NJWkUgKHdvcmRfbW9kZSkpCisJeworCSAgaW50IG51bml0cyA9 IEdFVF9NT0RFX1NJWkUgKG1vdmVfbW9kZSkgLyBHRVRfTU9ERV9TSVpFICh3 b3JkX21vZGUpOworCSAgbW92ZV9tb2RlID0gbW9kZV9mb3JfdmVjdG9yICh3 b3JkX21vZGUsIG51bml0cyk7CisJICBpZiAob3B0YWJfaGFuZGxlciAobW92 X29wdGFiLCBtb3ZlX21vZGUpID09IENPREVfRk9SX25vdGhpbmcpCisJICAg IG1vdmVfbW9kZSA9IHdvcmRfbW9kZTsKKwl9CisgICAgICBnY2NfYXNzZXJ0 IChvcHRhYl9oYW5kbGVyIChtb3Zfb3B0YWIsIG1vdmVfbW9kZSkgIT0gQ09E RV9GT1Jfbm90aGluZyk7CiAgICAgICBicmVhazsKICAgICBjYXNlIHJlcF9w cmVmaXhfOF9ieXRlOgotICAgICAgc2l6ZV9uZWVkZWQgPSA4OworICAgICAg bW92ZV9tb2RlID0gREltb2RlOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBy ZXBfcHJlZml4XzRfYnl0ZToKLSAgICAgIHNpemVfbmVlZGVkID0gNDsKKyAg ICAgIG1vdmVfbW9kZSA9IFNJbW9kZTsKICAgICAgIGJyZWFrOwogICAgIGNh c2UgcmVwX3ByZWZpeF8xX2J5dGU6Ci0gICAgICBzaXplX25lZWRlZCA9IDE7 Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGxvb3BfMV9ieXRlOgotICAgICAg bmVlZF96ZXJvX2d1YXJkID0gdHJ1ZTsKLSAgICAgIHNpemVfbmVlZGVkID0g MTsKKyAgICAgIG1vdmVfbW9kZSA9IFFJbW9kZTsKICAgICAgIGJyZWFrOwog ICAgIH0KLQorICBzaXplX25lZWRlZCA9IEdFVF9NT0RFX1NJWkUgKG1vdmVf bW9kZSkgKiB1bnJvbGxfZmFjdG9yOwogICBlcGlsb2d1ZV9zaXplX25lZWRl ZCA9IHNpemVfbmVlZGVkOwogCisgIGRlc2lyZWRfYWxpZ24gPSBkZWNpZGVf YWxpZ25tZW50IChhbGlnbiwgYWxnLCBleHBlY3RlZF9zaXplLCBtb3ZlX21v ZGUpOworICBpZiAoIVRBUkdFVF9BTElHTl9TVFJJTkdPUFMgfHwgbm9hbGln bikKKyAgICBhbGlnbiA9IGRlc2lyZWRfYWxpZ247CisKICAgLyogU3RlcCAx OiBQcm9sb2d1ZSBndWFyZC4gICovCiAKICAgLyogQWxpZ25tZW50IGNvZGUg bmVlZHMgY291bnQgdG8gYmUgaW4gcmVnaXN0ZXIuICAqLwpAQCAtMjI4NTgs NyArMjI4NTIsNyBAQCBpeDg2X2V4cGFuZF9tb3ZtZW0gKHJ0eCBkc3QsIHJ0 eCBzcmMsIHJ0eCBjb3VudF9leHAsIHJ0eCBhbGlnbl9leHAsCiAgICAgICBl cGlsb2d1ZV9zaXplX25lZWRlZCA9IE1BWCAoc2l6ZV9uZWVkZWQgLSAxLCBk ZXNpcmVkX2FsaWduIC0gYWxpZ24pOwogICAgICAgLyogRXBpbG9ndWUgYWx3 YXlzIGNvcGllcyBDT1VOVF9FWFAgJiBFUElMT0dVRV9TSVpFX05FRURFRCBi eXRlcy4KIAkgTWFrZSBzdXJlIGl0IGlzIHBvd2VyIG9mIDIuICAqLwotICAg ICAgZXBpbG9ndWVfc2l6ZV9uZWVkZWQgPSBzbWFsbGVzdF9wb3cyX2dyZWF0 ZXJfdGhhbiAoZXBpbG9ndWVfc2l6ZV9uZWVkZWQpOworICAgICAgZXBpbG9n dWVfc2l6ZV9uZWVkZWQgPSAxIDw8IChmbG9vcl9sb2cyIChlcGlsb2d1ZV9z aXplX25lZWRlZCkgKyAxKTsKIAogICAgICAgaWYgKGNvdW50KQogCXsKQEAg LTIyOTIzLDggKzIyOTE3LDggQEAgaXg4Nl9leHBhbmRfbW92bWVtIChydHgg ZHN0LCBydHggc3JjLCBydHggY291bnRfZXhwLCBydHggYWxpZ25fZXhwLAog CSAgICAgdGhlIGluZm8gZWFybHkuICAqLwogCSAgc3JjID0gY2hhbmdlX2Fk ZHJlc3MgKHNyYywgQkxLbW9kZSwgc3JjcmVnKTsKIAkgIGRzdCA9IGNoYW5n ZV9hZGRyZXNzIChkc3QsIEJMS21vZGUsIGRlc3RyZWcpOwotCSAgZXhwYW5k X21vdm1lbV9wcm9sb2d1ZSAoZHN0LCBzcmMsIGRlc3RyZWcsIHNyY3JlZywg Y291bnRfZXhwLCBhbGlnbiwKLQkJCQkgIGRlc2lyZWRfYWxpZ24pOworCSAg ZHN0ID0gZXhwYW5kX21vdm1lbV9wcm9sb2d1ZSAoZHN0LCBzcmMsIGRlc3Ry ZWcsIHNyY3JlZywgY291bnRfZXhwLCBhbGlnbiwKKwkJCQkJZGVzaXJlZF9h bGlnbik7CiAJfQogICAgICAgZWxzZQogCXsKQEAgLTIyOTc1LDMxICsyMjk2 OSwxOCBAQCBpeDg2X2V4cGFuZF9tb3ZtZW0gKHJ0eCBkc3QsIHJ0eCBzcmMs IHJ0eCBjb3VudF9leHAsIHJ0eCBhbGlnbl9leHAsCiAgICAgY2FzZSBub19z dHJpbmdvcDoKICAgICAgIGdjY191bnJlYWNoYWJsZSAoKTsKICAgICBjYXNl IGxvb3BfMV9ieXRlOgotICAgICAgZXhwYW5kX3NldF9vcl9tb3ZtZW1fdmlh X2xvb3AgKGRzdCwgc3JjLCBkZXN0cmVnLCBzcmNyZWcsIE5VTEwsCi0JCQkJ ICAgICBjb3VudF9leHAsIFFJbW9kZSwgMSwgZXhwZWN0ZWRfc2l6ZSk7Ci0g ICAgICBicmVhazsKICAgICBjYXNlIGxvb3A6Ci0gICAgICBleHBhbmRfc2V0 X29yX21vdm1lbV92aWFfbG9vcCAoZHN0LCBzcmMsIGRlc3RyZWcsIHNyY3Jl ZywgTlVMTCwKLQkJCQkgICAgIGNvdW50X2V4cCwgd29yZF9tb2RlLCAxLCBl eHBlY3RlZF9zaXplKTsKLSAgICAgIGJyZWFrOwogICAgIGNhc2UgdW5yb2xs ZWRfbG9vcDoKLSAgICAgIC8qIFVucm9sbCBvbmx5IGJ5IGZhY3RvciBvZiAy IGluIDMyYml0IG1vZGUsIHNpbmNlIHdlIGRvbid0IGhhdmUgZW5vdWdoCi0J IHJlZ2lzdGVycyBmb3IgNCB0ZW1wb3JhcmllcyBhbnl3YXkuICAqLworICAg IGNhc2UgdmVjdG9yX2xvb3A6CiAgICAgICBleHBhbmRfc2V0X29yX21vdm1l bV92aWFfbG9vcCAoZHN0LCBzcmMsIGRlc3RyZWcsIHNyY3JlZywgTlVMTCwK LQkJCQkgICAgIGNvdW50X2V4cCwgd29yZF9tb2RlLCBUQVJHRVRfNjRCSVQg PyA0IDogMiwKKwkJCQkgICAgIGNvdW50X2V4cCwgbW92ZV9tb2RlLCB1bnJv bGxfZmFjdG9yLAogCQkJCSAgICAgZXhwZWN0ZWRfc2l6ZSk7CiAgICAgICBi cmVhazsKICAgICBjYXNlIHJlcF9wcmVmaXhfOF9ieXRlOgotICAgICAgZXhw YW5kX21vdm1lbV92aWFfcmVwX21vdiAoZHN0LCBzcmMsIGRlc3RyZWcsIHNy Y3JlZywgY291bnRfZXhwLAotCQkJCSBESW1vZGUpOwotICAgICAgYnJlYWs7 CiAgICAgY2FzZSByZXBfcHJlZml4XzRfYnl0ZToKLSAgICAgIGV4cGFuZF9t b3ZtZW1fdmlhX3JlcF9tb3YgKGRzdCwgc3JjLCBkZXN0cmVnLCBzcmNyZWcs IGNvdW50X2V4cCwKLQkJCQkgU0ltb2RlKTsKLSAgICAgIGJyZWFrOwogICAg IGNhc2UgcmVwX3ByZWZpeF8xX2J5dGU6CiAgICAgICBleHBhbmRfbW92bWVt X3ZpYV9yZXBfbW92IChkc3QsIHNyYywgZGVzdHJlZywgc3JjcmVnLCBjb3Vu dF9leHAsCi0JCQkJIFFJbW9kZSk7CisJCQkJIG1vdmVfbW9kZSk7CiAgICAg ICBicmVhazsKICAgICB9CiAgIC8qIEFkanVzdCBwcm9wZXJseSB0aGUgb2Zm c2V0IG9mIHNyYyBhbmQgZGVzdCBtZW1vcnkgZm9yIGFsaWFzaW5nLiAgKi8K QEAgLTIzMDQwLDcgKzIzMDIxLDcgQEAgaXg4Nl9leHBhbmRfbW92bWVtIChy dHggZHN0LCBydHggc3JjLCBydHggY291bnRfZXhwLCBydHggYWxpZ25fZXhw LAogCiAgIGlmIChjb3VudF9leHAgIT0gY29uc3QwX3J0eCAmJiBlcGlsb2d1 ZV9zaXplX25lZWRlZCA+IDEpCiAgICAgZXhwYW5kX21vdm1lbV9lcGlsb2d1 ZSAoZHN0LCBzcmMsIGRlc3RyZWcsIHNyY3JlZywgY291bnRfZXhwLAotCQkJ ICAgIGVwaWxvZ3VlX3NpemVfbmVlZGVkKTsKKwkJCSAgICBzaXplX25lZWRl ZCk7CiAgIGlmIChqdW1wX2Fyb3VuZF9sYWJlbCkKICAgICBlbWl0X2xhYmVs IChqdW1wX2Fyb3VuZF9sYWJlbCk7CiAgIHJldHVybiB0cnVlOwpAQCAtMjMx NjEsNiArMjMxNDIsOCBAQCBpeDg2X2V4cGFuZF9zZXRtZW0gKHJ0eCBkc3Qs IHJ0eCBjb3VudF9leHAsIHJ0eCB2YWxfZXhwLCBydHggYWxpZ25fZXhwLAog ICBpbnQgZHluYW1pY19jaGVjazsKICAgYm9vbCBuZWVkX3plcm9fZ3VhcmQg PSBmYWxzZTsKICAgYm9vbCBub2FsaWduOworICBlbnVtIG1hY2hpbmVfbW9k ZSBtb3ZlX21vZGUgPSBWT0lEbW9kZTsKKyAgaW50IHVucm9sbF9mYWN0b3I7 CiAKICAgaWYgKENPTlNUX0lOVF9QIChhbGlnbl9leHApKQogICAgIGFsaWdu ID0gSU5UVkFMIChhbGlnbl9leHApOwpAQCAtMjMxODEsMTcgKzIzMTY0LDE2 IEBAIGl4ODZfZXhwYW5kX3NldG1lbSAocnR4IGRzdCwgcnR4IGNvdW50X2V4 cCwgcnR4IHZhbF9leHAsIHJ0eCBhbGlnbl9leHAsCiAgICAgIHNpemUgb2Yg Y2h1bmtzIHRvIGJlIGNvcGllZCBieSBtYWluIGxvb3AuICAqLwogCiAgIGFs ZyA9IGRlY2lkZV9hbGcgKGNvdW50LCBleHBlY3RlZF9zaXplLCB0cnVlLCAm ZHluYW1pY19jaGVjaywgJm5vYWxpZ24pOwotICBkZXNpcmVkX2FsaWduID0g ZGVjaWRlX2FsaWdubWVudCAoYWxpZ24sIGFsZywgZXhwZWN0ZWRfc2l6ZSk7 Ci0KLSAgaWYgKCFUQVJHRVRfQUxJR05fU1RSSU5HT1BTIHx8IG5vYWxpZ24p Ci0gICAgYWxpZ24gPSBkZXNpcmVkX2FsaWduOwotCiAgIGlmIChhbGcgPT0g bGliY2FsbCkKICAgICByZXR1cm4gZmFsc2U7CiAgIGdjY19hc3NlcnQgKGFs ZyAhPSBub19zdHJpbmdvcCk7CisKICAgaWYgKCFjb3VudCkKICAgICBjb3Vu dF9leHAgPSBjb3B5X3RvX21vZGVfcmVnIChjb3VudGVyX21vZGUgKGNvdW50 X2V4cCksIGNvdW50X2V4cCk7CiAgIGRlc3RyZWcgPSBjb3B5X2FkZHJfdG9f cmVnIChYRVhQIChkc3QsIDApKTsKKworICBtb3ZlX21vZGUgPSB3b3JkX21v ZGU7CisgIHVucm9sbF9mYWN0b3IgPSAxOwogICBzd2l0Y2ggKGFsZykKICAg ICB7CiAgICAgY2FzZSBsaWJjYWxsOgpAQCAtMjMxOTksMjggKzIzMTgxLDMz IEBAIGl4ODZfZXhwYW5kX3NldG1lbSAocnR4IGRzdCwgcnR4IGNvdW50X2V4 cCwgcnR4IHZhbF9leHAsIHJ0eCBhbGlnbl9leHAsCiAgICAgICBnY2NfdW5y ZWFjaGFibGUgKCk7CiAgICAgY2FzZSBsb29wOgogICAgICAgbmVlZF96ZXJv X2d1YXJkID0gdHJ1ZTsKLSAgICAgIHNpemVfbmVlZGVkID0gR0VUX01PREVf U0laRSAod29yZF9tb2RlKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgdmVj dG9yX2xvb3A6CiAgICAgY2FzZSB1bnJvbGxlZF9sb29wOgogICAgICAgbmVl ZF96ZXJvX2d1YXJkID0gdHJ1ZTsKLSAgICAgIHNpemVfbmVlZGVkID0gR0VU X01PREVfU0laRSAod29yZF9tb2RlKSAqIDQ7CisgICAgICB1bnJvbGxfZmFj dG9yID0gNDsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgcmVwX3ByZWZpeF84 X2J5dGU6Ci0gICAgICBzaXplX25lZWRlZCA9IDg7CisgICAgICBtb3ZlX21v ZGUgPSBESW1vZGU7CiAgICAgICBicmVhazsKICAgICBjYXNlIHJlcF9wcmVm aXhfNF9ieXRlOgotICAgICAgc2l6ZV9uZWVkZWQgPSA0OworICAgICAgbW92 ZV9tb2RlID0gU0ltb2RlOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSByZXBf cHJlZml4XzFfYnl0ZToKLSAgICAgIHNpemVfbmVlZGVkID0gMTsKKyAgICAg IG1vdmVfbW9kZSA9IFFJbW9kZTsKICAgICAgIGJyZWFrOwogICAgIGNhc2Ug bG9vcF8xX2J5dGU6CiAgICAgICBuZWVkX3plcm9fZ3VhcmQgPSB0cnVlOwot ICAgICAgc2l6ZV9uZWVkZWQgPSAxOworICAgICAgbW92ZV9tb2RlID0gUUlt b2RlOwogICAgICAgYnJlYWs7CiAgICAgfQorICBzaXplX25lZWRlZCA9IEdF VF9NT0RFX1NJWkUgKG1vdmVfbW9kZSkgKiB1bnJvbGxfZmFjdG9yOwogICBl cGlsb2d1ZV9zaXplX25lZWRlZCA9IHNpemVfbmVlZGVkOwogCisgIGRlc2ly ZWRfYWxpZ24gPSBkZWNpZGVfYWxpZ25tZW50IChhbGlnbiwgYWxnLCBleHBl Y3RlZF9zaXplLCBtb3ZlX21vZGUpOworICBpZiAoIVRBUkdFVF9BTElHTl9T VFJJTkdPUFMgfHwgbm9hbGlnbikKKyAgICBhbGlnbiA9IGRlc2lyZWRfYWxp Z247CisKICAgLyogU3RlcCAxOiBQcm9sb2d1ZSBndWFyZC4gICovCiAKICAg LyogQWxpZ25tZW50IGNvZGUgbmVlZHMgY291bnQgdG8gYmUgaW4gcmVnaXN0 ZXIuICAqLwpAQCAtMjMyNTYsNyArMjMyNDMsNyBAQCBpeDg2X2V4cGFuZF9z ZXRtZW0gKHJ0eCBkc3QsIHJ0eCBjb3VudF9leHAsIHJ0eCB2YWxfZXhwLCBy dHggYWxpZ25fZXhwLAogICAgICAgZXBpbG9ndWVfc2l6ZV9uZWVkZWQgPSBN QVggKHNpemVfbmVlZGVkIC0gMSwgZGVzaXJlZF9hbGlnbiAtIGFsaWduKTsK ICAgICAgIC8qIEVwaWxvZ3VlIGFsd2F5cyBjb3BpZXMgQ09VTlRfRVhQICYg KEVQSUxPR1VFX1NJWkVfTkVFREVEIC0gMSkgYnl0ZXMuCiAJIE1ha2Ugc3Vy ZSBpdCBpcyBwb3dlciBvZiAyLiAgKi8KLSAgICAgIGVwaWxvZ3VlX3NpemVf bmVlZGVkID0gc21hbGxlc3RfcG93Ml9ncmVhdGVyX3RoYW4gKGVwaWxvZ3Vl X3NpemVfbmVlZGVkKTsKKyAgICAgIGVwaWxvZ3VlX3NpemVfbmVlZGVkID0g MSA8PCAoZmxvb3JfbG9nMiAoZXBpbG9ndWVfc2l6ZV9uZWVkZWQpICsgMSk7 CiAKICAgICAgIC8qIFRvIGltcHJvdmUgcGVyZm9ybWFuY2Ugb2Ygc21hbGwg YmxvY2tzLCB3ZSBqdW1wIGFyb3VuZCB0aGUgVkFMCiAJIHByb21vdGluZyBt b2RlLiAgVGhpcyBtZWFuIHRoYXQgaWYgdGhlIHByb21vdGVkIFZBTCBpcyBu b3QgY29uc3RhbnQsCkBAIC0yMzM3MCwxNiArMjMzNTcsMTIgQEAgaXg4Nl9l eHBhbmRfc2V0bWVtIChydHggZHN0LCBydHggY291bnRfZXhwLCBydHggdmFs X2V4cCwgcnR4IGFsaWduX2V4cCwKICAgICBjYXNlIG5vX3N0cmluZ29wOgog ICAgICAgZ2NjX3VucmVhY2hhYmxlICgpOwogICAgIGNhc2UgbG9vcF8xX2J5 dGU6Ci0gICAgICBleHBhbmRfc2V0X29yX21vdm1lbV92aWFfbG9vcCAoZHN0 LCBOVUxMLCBkZXN0cmVnLCBOVUxMLCBwcm9tb3RlZF92YWwsCi0JCQkJICAg ICBjb3VudF9leHAsIFFJbW9kZSwgMSwgZXhwZWN0ZWRfc2l6ZSk7Ci0gICAg ICBicmVhazsKICAgICBjYXNlIGxvb3A6Ci0gICAgICBleHBhbmRfc2V0X29y X21vdm1lbV92aWFfbG9vcCAoZHN0LCBOVUxMLCBkZXN0cmVnLCBOVUxMLCBw cm9tb3RlZF92YWwsCi0JCQkJICAgICBjb3VudF9leHAsIHdvcmRfbW9kZSwg MSwgZXhwZWN0ZWRfc2l6ZSk7Ci0gICAgICBicmVhazsKKyAgICBjYXNlIHZl Y3Rvcl9sb29wOgogICAgIGNhc2UgdW5yb2xsZWRfbG9vcDoKICAgICAgIGV4 cGFuZF9zZXRfb3JfbW92bWVtX3ZpYV9sb29wIChkc3QsIE5VTEwsIGRlc3Ry ZWcsIE5VTEwsIHByb21vdGVkX3ZhbCwKLQkJCQkgICAgIGNvdW50X2V4cCwg d29yZF9tb2RlLCA0LCBleHBlY3RlZF9zaXplKTsKKwkJCQkgICAgIGNvdW50 X2V4cCwgbW92ZV9tb2RlLCB1bnJvbGxfZmFjdG9yLAorCQkJCSAgICAgZXhw ZWN0ZWRfc2l6ZSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIHJlcF9wcmVm aXhfOF9ieXRlOgogICAgICAgZXhwYW5kX3NldG1lbV92aWFfcmVwX3N0b3Mg KGRzdCwgZGVzdHJlZywgcHJvbW90ZWRfdmFsLCBjb3VudF9leHAsCmRpZmYg LS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQgYi9nY2MvY29uZmln L2kzODYvaTM4Ni5vcHQKaW5kZXggMDg0YTI0OC4uNzZhNWMzMCAxMDA2NDQK LS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0CisrKyBiL2djYy9jb25m aWcvaTM4Ni9pMzg2Lm9wdApAQCAtMzQ1LDYgKzM0NSw5IEBAIEVudW0oc3Ry aW5nb3BfYWxnKSBTdHJpbmcobG9vcCkgVmFsdWUobG9vcCkKIEVudW1WYWx1 ZQogRW51bShzdHJpbmdvcF9hbGcpIFN0cmluZyh1bnJvbGxlZF9sb29wKSBW YWx1ZSh1bnJvbGxlZF9sb29wKQogCitFbnVtVmFsdWUKK0VudW0oc3RyaW5n b3BfYWxnKSBTdHJpbmcodmVjdG9yX2xvb3ApIFZhbHVlKHZlY3Rvcl9sb29w KQorCiBtdGxzLWRpYWxlY3Q9CiBUYXJnZXQgUmVqZWN0TmVnYXRpdmUgSm9p bmVkIFZhcihpeDg2X3Rsc19kaWFsZWN0KSBFbnVtKHRsc19kaWFsZWN0KSBJ bml0KFRMU19ESUFMRUNUX0dOVSkKIFVzZSBnaXZlbiB0aHJlYWQtbG9jYWwg c3RvcmFnZSBkaWFsZWN0CmRpZmYgLS1naXQgYS9nY2MvZW1pdC1ydGwuYyBi L2djYy9lbWl0LXJ0bC5jCmluZGV4IDczYTU5YjUuLmVkYjU5ZGEgMTAwNjQ0 Ci0tLSBhL2djYy9lbWl0LXJ0bC5jCisrKyBiL2djYy9lbWl0LXJ0bC5jCkBA IC0xNTY1LDYgKzE1NjUsMTggQEAgZ2V0X21lbV9hbGlnbl9vZmZzZXQgKHJ0 eCBtZW0sIHVuc2lnbmVkIGludCBhbGlnbikKIAkgIGV4cHIgPSBpbm5lcjsK IAl9CiAgICAgfQorICBlbHNlIGlmIChUUkVFX0NPREUgKGV4cHIpID09IE1F TV9SRUYpCisgICAgeworICAgICAgdHJlZSBiYXNlID0gVFJFRV9PUEVSQU5E IChleHByLCAwKTsKKyAgICAgIHRyZWUgYnl0ZV9vZmZzZXQgPSBUUkVFX09Q RVJBTkQgKGV4cHIsIDEpOworICAgICAgaWYgKFRSRUVfQ09ERSAoYmFzZSkg IT0gQUREUl9FWFBSCisJICB8fCBUUkVFX0NPREUgKGJ5dGVfb2Zmc2V0KSAh PSBJTlRFR0VSX0NTVCkKKwlyZXR1cm4gLTE7CisgICAgICBpZiAoIURFQ0xf UCAoVFJFRV9PUEVSQU5EIChiYXNlLCAwKSkKKwkgIHx8IERFQ0xfQUxJR04g KFRSRUVfT1BFUkFORCAoYmFzZSwgMCkpIDwgYWxpZ24pCisJcmV0dXJuIC0x OworICAgICAgb2Zmc2V0ICs9IHRyZWVfbG93X2NzdCAoYnl0ZV9vZmZzZXQs IDEpOworICAgIH0KICAgZWxzZQogICAgIHJldHVybiAtMTsKIAo= --f46d043c7f1e56e71304dcc12696--