From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19959 invoked by alias); 14 Oct 2011 13:53:46 -0000 Received: (qmail 19944 invoked by uid 22791); 14 Oct 2011 13:53:44 -0000 X-SWARE-Spam-Status: No, hits=-1.5 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_AV X-Spam-Check-By: sourceware.org Received: from mail-ww0-f51.google.com (HELO mail-ww0-f51.google.com) (74.125.82.51) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 14 Oct 2011 13:53:29 +0000 Received: by wwf10 with SMTP id 10so3009436wwf.8 for ; Fri, 14 Oct 2011 06:53:28 -0700 (PDT) MIME-Version: 1.0 Received: by 10.227.175.77 with SMTP id w13mr2828954wbz.53.1318600408140; Fri, 14 Oct 2011 06:53:28 -0700 (PDT) Received: by 10.227.197.199 with HTTP; Fri, 14 Oct 2011 06:53:28 -0700 (PDT) In-Reply-To: <20111014115346.GW2210@tyan-ft48-01.lab.bos.redhat.com> References: <20111014115346.GW2210@tyan-ft48-01.lab.bos.redhat.com> Date: Fri, 14 Oct 2011 14:05:00 -0000 Message-ID: Subject: Re: [PATCH, i386 tests] New tests to check vectorization for AVX2 insns. From: Kirill Yukhin To: Jakub Jelinek Cc: gcc-patches List , Uros Bizjak , "H.J. Lu" Content-Type: multipart/mixed; boundary=00248c0ee66ced8cb104af4294e1 X-IsSubscribed: yes 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 X-SW-Source: 2011-10/txt/msg01276.txt.bz2 --00248c0ee66ced8cb104af4294e1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 635 Thanks, done. Anything else? K On Fri, Oct 14, 2011 at 3:53 PM, Jakub Jelinek wrote: > On Fri, Oct 14, 2011 at 03:13:45PM +0400, Kirill Yukhin wrote: > > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/avx2-vpaddb-3.c > @@ -0,0 +1,49 @@ > +/* { dg-do run } */ > +/* { dg-options "-mavx2 -O2 -ftree-vectorize -save-temps" } */ > +/* { dg-require-effective-target avx2 } */ > + > ... > + > +/* { dg-final { scan-assembler-times "vpaddb\[ \\t\]+\[^\n\]*%ymm\[0-9\]= " 1 } } */ > > You need > /* { dg-final { cleanup-saved-temps } } */ > in all the testcases compiled with -save-temps. > > =A0 =A0 =A0 =A0Jakub > --00248c0ee66ced8cb104af4294e1 Content-Type: application/octet-stream; name="avx2.vect-2.tests.gcc.patch" Content-Disposition: attachment; filename="avx2.vect-2.tests.gcc.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gtr8m7fq0 Content-length: 23445 ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2 eDItdnBhZGRiLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L2F2eDItdnBhZGRiLTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5jOTljOTY3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4Mi12cGFkZGItMy5jCkBAIC0wLDAg KzEsNTAgQEAKKy8qIHsgZGctZG8gcnVuIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLW1hdngyIC1PMiAtZnRyZWUtdmVjdG9yaXplIC1zYXZlLXRlbXBzIiB9 ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhdngyIH0g Ki8KKworI2luY2x1ZGUgImF2eDItY2hlY2suaCIKKworI2RlZmluZSBTSVpF IDI1NgorCitjaGFyIGFbU0laRV07CitjaGFyIGJbU0laRV07CitjaGFyIGNb U0laRV07Cit2b2xhdGlsZSBjaGFyIGNfcmVmW1NJWkVdOworCitfX2F0dHJp YnV0ZV9fICgoX19ub2lubGluZV9fKSkKK3ZvaWQKK2dlbl9wYWRkYiAoKQor eworICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IFNJWkU7ICsraSkKKyAg ICBjW2ldID0gYVtpXSArIGJbaV07Cit9CisKK3ZvaWQKK2NoZWNrX3BhZGRi ICgpCit7CisgIGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgKytp KQorICAgIGNfcmVmW2ldID0gYVtpXSArIGJbaV07Cit9CisKK3ZvaWQgc3Rh dGljCithdngyX3Rlc3QgKHZvaWQpCit7CisgIGludCBpLCBqOworICBmb3Ig KGkgPSAwOyBpIDwgNDsgKytpICkgeworICAgIGZvciAoIGogPSAwOyBqIDwg U0laRTsgKytqICkgeworICAgICAgYVtpXSA9IGkqaStpOworICAgICAgYltp XSA9IGkqaSppOworICAgIH0KKworICAgIGdlbl9wYWRkYiAoKTsKKyAgICBj aGVja19wYWRkYiAoKTsKKworICAgIGlmICggbWVtY21wKGMsIGNfcmVmLCBT SVpFICogc2l6ZW9mIChjaGFyKSApICkKKyAgICAgIGFib3J0KCk7CisgIH0K K30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2 cGFkZGJcWyBcXHRcXStcW15cblxdKiV5bW1cWzAtOVxdIiAxIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IGNsZWFudXAtc2F2ZWQtdGVtcHMgfSB9ICovCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdngy LXZwYWRkZC0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9h dngyLXZwYWRkZC0zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYWI2YjY1OAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2F2eDItdnBhZGRkLTMuYwpAQCAtMCwwICsx LDUwIEBACisvKiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1tYXZ4MiAtTzIgLWZ0cmVlLXZlY3Rvcml6ZSAtc2F2ZS10ZW1wcyIgfSAq LworLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXZ4MiB9ICov CisKKyNpbmNsdWRlICJhdngyLWNoZWNrLmgiCisKKyNkZWZpbmUgU0laRSAy NTYKKworaW50IGFbU0laRV07CitpbnQgYltTSVpFXTsKK2ludCBjW1NJWkVd Owordm9sYXRpbGUgaW50IGNfcmVmW1NJWkVdOworCitfX2F0dHJpYnV0ZV9f ICgoX19ub2lubGluZV9fKSkKK3ZvaWQKK2dlbl9wYWRkZCAoKQoreworICBp bnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IFNJWkU7ICsraSkKKyAgICBjW2ld ID0gYVtpXSArIGJbaV07Cit9CisKK3ZvaWQKK2NoZWNrX3BhZGRkICgpCit7 CisgIGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgKytpKQorICAg IGNfcmVmW2ldID0gYVtpXSArIGJbaV07Cit9CisKK3ZvaWQgc3RhdGljCith dngyX3Rlc3QgKHZvaWQpCit7CisgIGludCBpLCBqOworICBmb3IgKGkgPSAw OyBpIDwgNDsgKytpICkgeworICAgIGZvciAoIGogPSAwOyBqIDwgU0laRTsg KytqICkgeworICAgICAgYVtpXSA9IGkqaStpOworICAgICAgYltpXSA9IGkq aSppOworICAgIH0KKworICAgIGdlbl9wYWRkZCAoKTsKKyAgICBjaGVja19w YWRkZCAoKTsKKworICAgIGlmICggbWVtY21wKGMsIGNfcmVmLCBTSVpFICog c2l6ZW9mIChpbnQpICkgKQorICAgICAgYWJvcnQoKTsKKyAgfQorfQorCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZwYWRkZFxb IFxcdFxdK1xbXlxuXF0qJXltbVxbMC05XF0iIDEgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgY2xlYW51cC1zYXZlZC10ZW1wcyB9IH0gKi8KZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDItdnBhZGRx LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDItdnBh ZGRxLTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w NjZjNmZhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvYXZ4Mi12cGFkZHEtMy5jCkBAIC0wLDAgKzEsNTAgQEAK Ky8qIHsgZGctZG8gcnVuIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hdngy IC1PMiAtZnRyZWUtdmVjdG9yaXplIC1zYXZlLXRlbXBzIiB9ICovCisvKiB7 IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhdngyIH0gKi8KKworI2lu Y2x1ZGUgImF2eDItY2hlY2suaCIKKworI2RlZmluZSBTSVpFIDI1NgorCits b25nIGxvbmcgaW50IGFbU0laRV07Citsb25nIGxvbmcgaW50IGJbU0laRV07 Citsb25nIGxvbmcgaW50IGNbU0laRV07Cit2b2xhdGlsZSBsb25nIGxvbmcg aW50IGNfcmVmW1NJWkVdOworCitfX2F0dHJpYnV0ZV9fICgoX19ub2lubGlu ZV9fKSkKK3ZvaWQKK2dlbl9wYWRkcSAoKQoreworICBsb25nIGxvbmcgaW50 IGk7CisgIGZvciAoaSA9IDA7IGkgPCBTSVpFOyArK2kpCisgICAgY1tpXSA9 IGFbaV0gKyBiW2ldOworfQorCit2b2lkCitjaGVja19wYWRkcSAoKQorewor ICBsb25nIGxvbmcgaW50IGk7CisgIGZvciAoaSA9IDA7IGkgPCBTSVpFOyAr K2kpCisgICAgY19yZWZbaV0gPSBhW2ldICsgYltpXTsKK30KKwordm9pZCBz dGF0aWMKK2F2eDJfdGVzdCAodm9pZCkKK3sKKyAgbG9uZyBsb25nIGludCBp LCBqOworICBmb3IgKGkgPSAwOyBpIDwgNDsgKytpICkgeworICAgIGZvciAo IGogPSAwOyBqIDwgU0laRTsgKytqICkgeworICAgICAgYVtpXSA9IGkqaStp OworICAgICAgYltpXSA9IGkqaSppOworICAgIH0KKworICAgIGdlbl9wYWRk cSAoKTsKKyAgICBjaGVja19wYWRkcSAoKTsKKworICAgIGlmICggbWVtY21w KGMsIGNfcmVmLCBTSVpFICogc2l6ZW9mIChsb25nIGxvbmcgaW50KSApICkK KyAgICAgIGFib3J0KCk7CisgIH0KK30KKworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLXRpbWVzICJ2cGFkZHFcWyBcXHRcXStcW15cblxdKiV5 bW1cWzAtOVxdIiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7IGNsZWFudXAt c2F2ZWQtdGVtcHMgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9hdngyLXZwYWRkdy0zLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9hdngyLXZwYWRkdy0zLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRiYTQ1ZQotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDIt dnBhZGR3LTMuYwpAQCAtMCwwICsxLDUwIEBACisvKiB7IGRnLWRvIHJ1biB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXZ4MiAtTzIgLWZ0cmVlLXZlY3Rv cml6ZSAtc2F2ZS10ZW1wcyIgfSAqLworLyogeyBkZy1yZXF1aXJlLWVmZmVj dGl2ZS10YXJnZXQgYXZ4MiB9ICovCisKKyNpbmNsdWRlICJhdngyLWNoZWNr LmgiCisKKyNkZWZpbmUgU0laRSAyNTYKKworc2hvcnQgaW50IGFbU0laRV07 CitzaG9ydCBpbnQgYltTSVpFXTsKK3Nob3J0IGludCBjW1NJWkVdOwordm9s YXRpbGUgc2hvcnQgaW50IGNfcmVmW1NJWkVdOworCitfX2F0dHJpYnV0ZV9f ICgoX19ub2lubGluZV9fKSkKK3ZvaWQKK2dlbl9wYWRkdyAoKQoreworICBp bnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IFNJWkU7ICsraSkKKyAgICBjW2ld ID0gYVtpXSArIGJbaV07Cit9CisKK3ZvaWQKK2NoZWNrX3BhZGR3ICgpCit7 CisgIGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgKytpKQorICAg IGNfcmVmW2ldID0gYVtpXSArIGJbaV07Cit9CisKK3ZvaWQgc3RhdGljCith dngyX3Rlc3QgKHZvaWQpCit7CisgIGludCBpLCBqOworICBmb3IgKGkgPSAw OyBpIDwgNDsgKytpICkgeworICAgIGZvciAoIGogPSAwOyBqIDwgU0laRTsg KytqICkgeworICAgICAgYVtpXSA9IGkqaStpOworICAgICAgYltpXSA9IGkq aSppOworICAgIH0KKworICAgIGdlbl9wYWRkdyAoKTsKKyAgICBjaGVja19w YWRkdyAoKTsKKworICAgIGlmICggbWVtY21wKGMsIGNfcmVmLCBTSVpFICog c2l6ZW9mKHNob3J0KSApICkKKyAgICAgIGFib3J0KCk7CisgIH0KK30KKwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2cGFkZHdc WyBcXHRcXStcW15cblxdKiV5bW1cWzAtOVxdIiAxIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IGNsZWFudXAtc2F2ZWQtdGVtcHMgfSB9ICovCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdngyLXZwYW5k LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDItdnBh bmQtMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhm MWI2YzAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9hdngyLXZwYW5kLTMuYwpAQCAtMCwwICsxLDUwIEBACisv KiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXZ4MiAt TzIgLWZ0cmVlLXZlY3Rvcml6ZSAtc2F2ZS10ZW1wcyIgfSAqLworLyogeyBk Zy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXZ4MiB9ICovCisKKyNpbmNs dWRlICJhdngyLWNoZWNrLmgiCisKKyNkZWZpbmUgU0laRSAyNTYKKwordW5z aWduZWQgaW50IGFbU0laRV07Cit1bnNpZ25lZCBpbnQgYltTSVpFXTsKK3Vu c2lnbmVkIGludCBjW1NJWkVdOwordm9sYXRpbGUgdW5zaWduZWQgaW50IGNf cmVmW1NJWkVdOworCitfX2F0dHJpYnV0ZV9fICgoX19ub2lubGluZV9fKSkK K3ZvaWQKK2dlbl9wYW5kICgpCit7CisgIHVuc2lnbmVkIGludCBpOworICBm b3IgKGkgPSAwOyBpIDwgU0laRTsgKytpKQorICAgIGNbaV0gPSBhW2ldICYg YltpXTsKK30KKwordm9pZAorY2hlY2tfcGFuZCAoKQoreworICB1bnNpZ25l ZCBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IFNJWkU7ICsraSkKKyAgICBj X3JlZltpXSA9IGFbaV0gJiBiW2ldOworfQorCit2b2lkIHN0YXRpYworYXZ4 Ml90ZXN0ICh2b2lkKQoreworICB1bnNpZ25lZCBpbnQgaSwgajsKKyAgZm9y IChpID0gMDsgaSA8IDQ7ICsraSApIHsKKyAgICBmb3IgKCBqID0gMDsgaiA8 IFNJWkU7ICsraiApIHsKKyAgICAgIGFbaV0gPSBpKmkraTsKKyAgICAgIGJb aV0gPSBpKmkqaTsKKyAgICB9CisKKyAgICBnZW5fcGFuZCAoKTsKKyAgICBj aGVja19wYW5kICgpOworCisgICAgaWYgKCBtZW1jbXAoYywgY19yZWYsIFNJ WkUgKiBzaXplb2YgKHVuc2lnbmVkIGludCkgKSApCisgICAgICBhYm9ydCgp OworICB9Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAidnBhbmRcWyBcXHRcXStcW15cblxdKiV5bW1cWzAtOVxdIiAxIH0g fSAqLworLyogeyBkZy1maW5hbCB7IGNsZWFudXAtc2F2ZWQtdGVtcHMgfSB9 ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdngyLXZwbXVsbGQtMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvYXZ4Mi12cG11bGxkLTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi41ZjY1NmMzCi0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4Mi12cG11bGxkLTMuYwpA QCAtMCwwICsxLDUwIEBACisvKiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1tYXZ4MiAtTzIgLWZ0cmVlLXZlY3Rvcml6ZSAtc2F2ZS10 ZW1wcyIgfSAqLworLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQg YXZ4MiB9ICovCisKKyNpbmNsdWRlICJhdngyLWNoZWNrLmgiCisKKyNkZWZp bmUgU0laRSAyNTYKKworaW50IGFbU0laRV07CitpbnQgYltTSVpFXTsKK2lu dCBjW1NJWkVdOwordm9sYXRpbGUgaW50IGNfcmVmW1NJWkVdOworCitfX2F0 dHJpYnV0ZV9fICgoX19ub2lubGluZV9fKSkKK3ZvaWQKK2dlbl9wbXVsbGQg KCkKK3sKKyAgaW50IGk7CisgIGZvciAoaSA9IDA7IGkgPCBTSVpFOyArK2kp CisgICAgY1tpXSA9IGFbaV0gKiBiW2ldOworfQorCit2b2lkCitjaGVja19w bXVsbGQgKCkKK3sKKyAgaW50IGk7CisgIGZvciAoaSA9IDA7IGkgPCBTSVpF OyArK2kpCisgICAgY19yZWZbaV0gPSBhW2ldICogYltpXTsKK30KKwordm9p ZCBzdGF0aWMKK2F2eDJfdGVzdCAodm9pZCkKK3sKKyAgaW50IGksIGo7Cisg IGZvciAoaSA9IDA7IGkgPCA0OyArK2kgKSB7CisgICAgZm9yICggaiA9IDA7 IGogPCBTSVpFOyArK2ogKSB7CisgICAgICBhW2ldID0gaSppK2k7CisgICAg ICBiW2ldID0gaSppKmk7CisgICAgfQorCisgICAgZ2VuX3BtdWxsZCAoKTsK KyAgICBjaGVja19wbXVsbGQgKCk7CisKKyAgICBpZiAoIG1lbWNtcChjLCBj X3JlZiwgU0laRSAqIHNpemVvZiAoaW50KSApICkKKyAgICAgIGFib3J0KCk7 CisgIH0KK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzICJ2cG11bGxkXFsgXFx0XF0rXFteXG5cXSoleW1tXFswLTlcXSIgMSB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBjbGVhbnVwLXNhdmVkLXRlbXBzIH0g fSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvYXZ4Mi12cG11bGx3LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L2F2eDItdnBtdWxsdy0zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uNDhlYTIxNQotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDItdnBtdWxsdy0zLmMK QEAgLTAsMCArMSw1MCBAQAorLyogeyBkZy1kbyBydW4gfSAqLworLyogeyBk Zy1vcHRpb25zICItbWF2eDIgLU8yIC1mdHJlZS12ZWN0b3JpemUgLXNhdmUt dGVtcHMiIH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0 IGF2eDIgfSAqLworCisjaW5jbHVkZSAiYXZ4Mi1jaGVjay5oIgorCisjZGVm aW5lIFNJWkUgMjU2CisKK3Nob3J0IGludCBhW1NJWkVdOworc2hvcnQgaW50 IGJbU0laRV07CitzaG9ydCBpbnQgY1tTSVpFXTsKK3ZvbGF0aWxlIHNob3J0 IGludCBjX3JlZltTSVpFXTsKKworX19hdHRyaWJ1dGVfXyAoKF9fbm9pbmxp bmVfXykpCit2b2lkCitnZW5fcG11bGxkICgpCit7CisgIHNob3J0IGludCBp OworICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgKytpKQorICAgIGNbaV0gPSBh W2ldICogYltpXTsKK30KKwordm9pZAorY2hlY2tfcG11bGxkICgpCit7Cisg IHNob3J0IGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgKytpKQor ICAgIGNfcmVmW2ldID0gYVtpXSAqIGJbaV07Cit9CisKK3ZvaWQgc3RhdGlj CithdngyX3Rlc3QgKHZvaWQpCit7CisgIHNob3J0IGludCBpLCBqOworICBm b3IgKGkgPSAwOyBpIDwgNDsgKytpICkgeworICAgIGZvciAoIGogPSAwOyBq IDwgU0laRTsgKytqICkgeworICAgICAgYVtpXSA9IGkqaStpOworICAgICAg YltpXSA9IGkqaSppOworICAgIH0KKworICAgIGdlbl9wbXVsbGQgKCk7Cisg ICAgY2hlY2tfcG11bGxkICgpOworCisgICAgaWYgKCBtZW1jbXAoYywgY19y ZWYsIFNJWkUgKiBzaXplb2YgKHNob3J0IGludCkgKSApCisgICAgICBhYm9y dCgpOworICB9Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyAidnBtdWxsd1xbIFxcdFxdK1xbXlxuXF0qJXltbVxbMC05XF0i IDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2xlYW51cC1zYXZlZC10ZW1w cyB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L2F2eDItdnBzcmFkLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2F2eDItdnBzcmFkLTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4wMDhjODZhCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4Mi12cHNyYWQtMy5j CkBAIC0wLDAgKzEsNTAgQEAKKy8qIHsgZGctZG8gcnVuIH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLW1hdngyIC1PMiAtZnRyZWUtdmVjdG9yaXplIC1zYXZl LXRlbXBzIiB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdl dCBhdngyIH0gKi8KKworI2luY2x1ZGUgImF2eDItY2hlY2suaCIKKworI2Rl ZmluZSBTSVpFIDI1NgorCitpbnQgYVtTSVpFXTsKK2ludCBiW1NJWkVdOwor aW50IGNbU0laRV07Cit2b2xhdGlsZSBpbnQgY19yZWZbU0laRV07CisKK19f YXR0cmlidXRlX18gKChfX25vaW5saW5lX18pKQordm9pZAorZ2VuX3BzcmFk ICgpCit7CisgIGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgKytp KQorICAgIGNbaV0gPSBhW2ldID4+IDU7Cit9CisKK3ZvaWQKK2NoZWNrX3Bz cmFkICgpCit7CisgIGludCBpOworICBmb3IgKGkgPSAwOyBpIDwgU0laRTsg KytpKQorICAgIGNfcmVmW2ldID0gYVtpXSA+PiA1OworfQorCit2b2lkIHN0 YXRpYworYXZ4Ml90ZXN0ICh2b2lkKQoreworICBpbnQgaSwgajsKKyAgZm9y IChpID0gMDsgaSA8IDQ7ICsraSApIHsKKyAgICBmb3IgKCBqID0gMDsgaiA8 IFNJWkU7ICsraiApIHsKKyAgICAgIGFbaV0gPSBpKmkraTsKKyAgICAgIGJb aV0gPSBpKmkqaTsKKyAgICB9CisKKyAgICBnZW5fcHNyYWQgKCk7CisgICAg Y2hlY2tfcHNyYWQgKCk7CisKKyAgICBpZiAoIG1lbWNtcChjLCBjX3JlZiwg U0laRSAqIHNpemVvZiAoaW50KSApICkKKyAgICAgIGFib3J0KCk7CisgIH0K K30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2 cHNyYWRcWyBcXHRcXStcW15cblxdKiV5bW1cWzAtOVxdIiAxIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IGNsZWFudXAtc2F2ZWQtdGVtcHMgfSB9ICovCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdngy LXZwc3Jhdy0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9h dngyLXZwc3Jhdy0zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYzgwNWMwMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2F2eDItdnBzcmF3LTMuYwpAQCAtMCwwICsx LDUwIEBACisvKiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1tYXZ4MiAtTzIgLWZ0cmVlLXZlY3Rvcml6ZSAtc2F2ZS10ZW1wcyIgfSAq LworLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYXZ4MiB9ICov CisKKyNpbmNsdWRlICJhdngyLWNoZWNrLmgiCisKKyNkZWZpbmUgU0laRSAy NTYKKworc2hvcnQgaW50IGFbU0laRV07CitzaG9ydCBpbnQgYltTSVpFXTsK K3Nob3J0IGludCBjW1NJWkVdOwordm9sYXRpbGUgc2hvcnQgaW50IGNfcmVm W1NJWkVdOworCitfX2F0dHJpYnV0ZV9fICgoX19ub2lubGluZV9fKSkKK3Zv aWQKK2dlbl9wc3JhdyAoKQoreworICBzaG9ydCBpbnQgaTsKKyAgZm9yIChp ID0gMDsgaSA8IFNJWkU7ICsraSkKKyAgICBjW2ldID0gYVtpXSA+PiA1Owor fQorCit2b2lkCitjaGVja19wc3JhdyAoKQoreworICBzaG9ydCBpbnQgaTsK KyAgZm9yIChpID0gMDsgaSA8IFNJWkU7ICsraSkKKyAgICBjX3JlZltpXSA9 IGFbaV0gPj4gNTsKK30KKwordm9pZCBzdGF0aWMKK2F2eDJfdGVzdCAodm9p ZCkKK3sKKyAgc2hvcnQgaW50IGksIGo7CisgIGZvciAoaSA9IDA7IGkgPCA0 OyArK2kgKSB7CisgICAgZm9yICggaiA9IDA7IGogPCBTSVpFOyArK2ogKSB7 CisgICAgICBhW2ldID0gaSppK2k7CisgICAgICBiW2ldID0gaSppKmk7Cisg ICAgfQorCisgICAgZ2VuX3BzcmF3ICgpOworICAgIGNoZWNrX3BzcmF3ICgp OworCisgICAgaWYgKCBtZW1jbXAoYywgY19yZWYsIFNJWkUgKiBzaXplb2Yg KHNob3J0IGludCkgKSApCisgICAgICBhYm9ydCgpOworICB9Cit9CisKKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidnBzcmF3XFsg XFx0XF0rXFteXG5cXSoleW1tXFswLTlcXSIgMSB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBjbGVhbnVwLXNhdmVkLXRlbXBzIH0gfSAqLwpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4Mi12cHNybGQt My5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4Mi12cHNy bGQtMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5 NDI3YjIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9hdngyLXZwc3JsZC0zLmMKQEAgLTAsMCArMSw1MCBAQAor LyogeyBkZy1kbyBydW4gfSAqLworLyogeyBkZy1vcHRpb25zICItbWF2eDIg LU8yIC1mdHJlZS12ZWN0b3JpemUgLXNhdmUtdGVtcHMiIH0gKi8KKy8qIHsg ZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGF2eDIgfSAqLworCisjaW5j bHVkZSAiYXZ4Mi1jaGVjay5oIgorCisjZGVmaW5lIFNJWkUgMjU2CisKK3Vu c2lnbmVkIGludCBhW1NJWkVdOwordW5zaWduZWQgaW50IGJbU0laRV07Cit1 bnNpZ25lZCBpbnQgY1tTSVpFXTsKK3ZvbGF0aWxlIHVuc2lnbmVkIGludCBj X3JlZltTSVpFXTsKKworX19hdHRyaWJ1dGVfXyAoKF9fbm9pbmxpbmVfXykp Cit2b2lkCitnZW5fcHNybGQgKCkKK3sKKyAgdW5zaWduZWQgaW50IGk7Cisg IGZvciAoaSA9IDA7IGkgPCBTSVpFOyArK2kpCisgICAgY1tpXSA9IGFbaV0g Pj4gNTsKK30KKwordm9pZAorY2hlY2tfcHNybGQgKCkKK3sKKyAgdW5zaWdu ZWQgaW50IGk7CisgIGZvciAoaSA9IDA7IGkgPCBTSVpFOyArK2kpCisgICAg Y19yZWZbaV0gPSBhW2ldID4+IDU7Cit9CisKK3ZvaWQgc3RhdGljCithdngy X3Rlc3QgKHZvaWQpCit7CisgIHVuc2lnbmVkIGludCBpLCBqOworICBmb3Ig KGkgPSAwOyBpIDwgNDsgKytpICkgeworICAgIGZvciAoIGogPSAwOyBqIDwg U0laRTsgKytqICkgeworICAgICAgYVtpXSA9IGkqaStpOworICAgICAgYltp XSA9IGkqaSppOworICAgIH0KKworICAgIGdlbl9wc3JsZCAoKTsKKyAgICBj aGVja19wc3JsZCAoKTsKKworICAgIGlmICggbWVtY21wKGMsIGNfcmVmLCBT SVpFICogc2l6ZW9mICh1bnNpZ25lZCBpbnQpICkgKQorICAgICAgYWJvcnQo KTsKKyAgfQorfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt dGltZXMgInZwc3JsZFxbIFxcdFxdK1xbXlxuXF0qJXltbVxbMC05XF0iIDEg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2xlYW51cC1zYXZlZC10ZW1wcyB9 IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L2F2eDItdnBzcmx3LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L2F2eDItdnBzcmx3LTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi40MzlhNzg0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4Mi12cHNybHctMy5jCkBA IC0wLDAgKzEsNTAgQEAKKy8qIHsgZGctZG8gcnVuIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLW1hdngyIC1PMiAtZnRyZWUtdmVjdG9yaXplIC1zYXZlLXRl bXBzIiB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBh dngyIH0gKi8KKworI2luY2x1ZGUgImF2eDItY2hlY2suaCIKKworI2RlZmlu ZSBTSVpFIDI1NgorCit1bnNpZ25lZCBzaG9ydCBhW1NJWkVdOwordW5zaWdu ZWQgc2hvcnQgYltTSVpFXTsKK3Vuc2lnbmVkIHNob3J0IGNbU0laRV07Cit2 b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBjX3JlZltTSVpFXTsKKworX19hdHRy aWJ1dGVfXyAoKF9fbm9pbmxpbmVfXykpCit2b2lkCitnZW5fcHNybGQgKCkK K3sKKyAgdW5zaWduZWQgc2hvcnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IFNJ WkU7ICsraSkKKyAgICBjW2ldID0gYVtpXSA+PiA1OworfQorCit2b2lkCitj aGVja19wc3JsZCAoKQoreworICB1bnNpZ25lZCBzaG9ydCBpOworICBmb3Ig KGkgPSAwOyBpIDwgU0laRTsgKytpKQorICAgIGNfcmVmW2ldID0gYVtpXSA+ PiA1OworfQorCit2b2lkIHN0YXRpYworYXZ4Ml90ZXN0ICh2b2lkKQorewor ICB1bnNpZ25lZCBzaG9ydCBpLCBqOworICBmb3IgKGkgPSAwOyBpIDwgNDsg KytpICkgeworICAgIGZvciAoIGogPSAwOyBqIDwgU0laRTsgKytqICkgewor ICAgICAgYVtpXSA9IGkqaStpOworICAgICAgYltpXSA9IGkqaSppOworICAg IH0KKworICAgIGdlbl9wc3JsZCAoKTsKKyAgICBjaGVja19wc3JsZCAoKTsK KworICAgIGlmICggbWVtY21wKGMsIGNfcmVmLCBTSVpFICogc2l6ZW9mICh1 bnNpZ25lZCBzaG9ydCkgKSApCisgICAgICBhYm9ydCgpOworICB9Cit9CisK Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidnBzcmx3 XFsgXFx0XF0rXFteXG5cXSoleW1tXFswLTlcXSIgMSB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBjbGVhbnVwLXNhdmVkLXRlbXBzIH0gfSAqLwpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4Mi12cHN1 YmItMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4Mi12 cHN1YmItMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjZlNDg5NzEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9hdngyLXZwc3ViYi0zLmMKQEAgLTAsMCArMSw1MCBA QAorLyogeyBkZy1kbyBydW4gfSAqLworLyogeyBkZy1vcHRpb25zICItbWF2 eDIgLU8yIC1mdHJlZS12ZWN0b3JpemUgLXNhdmUtdGVtcHMiIH0gKi8KKy8q IHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGF2eDIgfSAqLworCisj aW5jbHVkZSAiYXZ4Mi1jaGVjay5oIgorCisjZGVmaW5lIFNJWkUgMjU2CisK K2NoYXIgYVtTSVpFXTsKK2NoYXIgYltTSVpFXTsKK2NoYXIgY1tTSVpFXTsK K3ZvbGF0aWxlIGNoYXIgY19yZWZbU0laRV07CisKK19fYXR0cmlidXRlX18g KChfX25vaW5saW5lX18pKQordm9pZAorZ2VuX3BzdWJiICgpCit7CisgIGlu dCBpOworICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgKytpKQorICAgIGNbaV0g PSBhW2ldIC0gYltpXTsKK30KKwordm9pZAorY2hlY2tfcHN1YmIgKCkKK3sK KyAgaW50IGk7CisgIGZvciAoaSA9IDA7IGkgPCBTSVpFOyArK2kpCisgICAg Y19yZWZbaV0gPSBhW2ldIC0gYltpXTsKK30KKwordm9pZCBzdGF0aWMKK2F2 eDJfdGVzdCAodm9pZCkKK3sKKyAgaW50IGksIGo7CisgIGZvciAoaSA9IDA7 IGkgPCA0OyArK2kgKSB7CisgICAgZm9yICggaiA9IDA7IGogPCBTSVpFOyAr K2ogKSB7CisgICAgICBhW2ldID0gaSppK2k7CisgICAgICBiW2ldID0gaSpp Kmk7CisgICAgfQorCisgICAgZ2VuX3BzdWJiICgpOworICAgIGNoZWNrX3Bz dWJiICgpOworCisgICAgaWYgKCBtZW1jbXAoYywgY19yZWYsIFNJWkUgKiBz aXplb2YgKGNoYXIpICkgKQorICAgICAgYWJvcnQoKTsKKyAgfQorfQorCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZwc3ViYlxb IFxcdFxdK1xbXlxuXF0qJXltbVxbMC05XF0iIDEgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgY2xlYW51cC1zYXZlZC10ZW1wcyB9IH0gKi8KZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDItdnBzdWJk LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDItdnBz dWJkLTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k MDM3ZDdlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2kzODYvYXZ4Mi12cHN1YmQtMy5jCkBAIC0wLDAgKzEsNTAgQEAK Ky8qIHsgZGctZG8gcnVuIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hdngy IC1PMiAtZnRyZWUtdmVjdG9yaXplIC1zYXZlLXRlbXBzIiB9ICovCisvKiB7 IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhdngyIH0gKi8KKworI2lu Y2x1ZGUgImF2eDItY2hlY2suaCIKKworI2RlZmluZSBTSVpFIDI1NgorCitp bnQgYVtTSVpFXTsKK2ludCBiW1NJWkVdOworaW50IGNbU0laRV07Cit2b2xh dGlsZSBpbnQgY19yZWZbU0laRV07CisKK19fYXR0cmlidXRlX18gKChfX25v aW5saW5lX18pKQordm9pZAorZ2VuX3BzdWJkICgpCit7CisgIGludCBpOwor ICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgKytpKQorICAgIGNbaV0gPSBhW2ld IC0gYltpXTsKK30KKwordm9pZAorY2hlY2tfcHN1YmQgKCkKK3sKKyAgaW50 IGk7CisgIGZvciAoaSA9IDA7IGkgPCBTSVpFOyArK2kpCisgICAgY19yZWZb aV0gPSBhW2ldIC0gYltpXTsKK30KKwordm9pZCBzdGF0aWMKK2F2eDJfdGVz dCAodm9pZCkKK3sKKyAgaW50IGksIGo7CisgIGZvciAoaSA9IDA7IGkgPCA0 OyArK2kgKSB7CisgICAgZm9yICggaiA9IDA7IGogPCBTSVpFOyArK2ogKSB7 CisgICAgICBhW2ldID0gaSppK2k7CisgICAgICBiW2ldID0gaSppKmk7Cisg ICAgfQorCisgICAgZ2VuX3BzdWJkICgpOworICAgIGNoZWNrX3BzdWJkICgp OworCisgICAgaWYgKCBtZW1jbXAoYywgY19yZWYsIFNJWkUgKiBzaXplb2Yg KGludCkgKSApCisgICAgICBhYm9ydCgpOworICB9Cit9CisKKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidnBzdWJkXFsgXFx0XF0r XFteXG5cXSoleW1tXFswLTlcXSIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBjbGVhbnVwLXNhdmVkLXRlbXBzIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4Mi12cHN1YnEtMy5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4Mi12cHN1YnEtMy5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZTFlNmYK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9hdngyLXZwc3VicS0zLmMKQEAgLTAsMCArMSw1MCBAQAorLyogeyBk Zy1kbyBydW4gfSAqLworLyogeyBkZy1vcHRpb25zICItbWF2eDIgLU8yIC1m dHJlZS12ZWN0b3JpemUgLXNhdmUtdGVtcHMiIH0gKi8KKy8qIHsgZGctcmVx dWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGF2eDIgfSAqLworCisjaW5jbHVkZSAi YXZ4Mi1jaGVjay5oIgorCisjZGVmaW5lIFNJWkUgMjU2CisKK2xvbmcgbG9u ZyBpbnQgYVtTSVpFXTsKK2xvbmcgbG9uZyBpbnQgYltTSVpFXTsKK2xvbmcg bG9uZyBpbnQgY1tTSVpFXTsKK3ZvbGF0aWxlIGxvbmcgbG9uZyBpbnQgY19y ZWZbU0laRV07CisKK19fYXR0cmlidXRlX18gKChfX25vaW5saW5lX18pKQor dm9pZAorZ2VuX3BzdWJxICgpCit7CisgIGxvbmcgbG9uZyBpbnQgaTsKKyAg Zm9yIChpID0gMDsgaSA8IFNJWkU7ICsraSkKKyAgICBjW2ldID0gYVtpXSAt IGJbaV07Cit9CisKK3ZvaWQKK2NoZWNrX3BzdWJxICgpCit7CisgIGxvbmcg bG9uZyBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IFNJWkU7ICsraSkKKyAg ICBjX3JlZltpXSA9IGFbaV0gLSBiW2ldOworfQorCit2b2lkIHN0YXRpYwor YXZ4Ml90ZXN0ICh2b2lkKQoreworICBsb25nIGxvbmcgaW50IGksIGo7Cisg IGZvciAoaSA9IDA7IGkgPCA0OyArK2kgKSB7CisgICAgZm9yICggaiA9IDA7 IGogPCBTSVpFOyArK2ogKSB7CisgICAgICBhW2ldID0gaSppK2k7CisgICAg ICBiW2ldID0gaSppKmk7CisgICAgfQorCisgICAgZ2VuX3BzdWJxICgpOwor ICAgIGNoZWNrX3BzdWJxICgpOworCisgICAgaWYgKCBtZW1jbXAoYywgY19y ZWYsIFNJWkUgKiBzaXplb2YgKGxvbmcgbG9uZyBpbnQpICkgKQorICAgICAg YWJvcnQoKTsKKyAgfQorfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgInZwc3VicVxbIFxcdFxdK1xbXlxuXF0qJXltbVxbMC05 XF0iIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2xlYW51cC1zYXZlZC10 ZW1wcyB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2F2eDItdnBzdWJ3LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L2F2eDItdnBzdWJ3LTMuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi41MmZjODhiCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXZ4Mi12cHN1Ynct My5jCkBAIC0wLDAgKzEsNTAgQEAKKy8qIHsgZGctZG8gcnVuIH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLW1hdngyIC1PMiAtZnRyZWUtdmVjdG9yaXplIC1z YXZlLXRlbXBzIiB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRh cmdldCBhdngyIH0gKi8KKworI2luY2x1ZGUgImF2eDItY2hlY2suaCIKKwor I2RlZmluZSBTSVpFIDI1NgorCitzaG9ydCBhW1NJWkVdOworc2hvcnQgYltT SVpFXTsKK3Nob3J0IGNbU0laRV07Cit2b2xhdGlsZSBzaG9ydCBjX3JlZltT SVpFXTsKKworX19hdHRyaWJ1dGVfXyAoKF9fbm9pbmxpbmVfXykpCit2b2lk CitnZW5fcHN1YncgKCkKK3sKKyAgaW50IGk7CisgIGZvciAoaSA9IDA7IGkg PCBTSVpFOyArK2kpCisgICAgY1tpXSA9IGFbaV0gLSBiW2ldOworfQorCit2 b2lkCitjaGVja19wc3VidyAoKQoreworICBpbnQgaTsKKyAgZm9yIChpID0g MDsgaSA8IFNJWkU7ICsraSkKKyAgICBjX3JlZltpXSA9IGFbaV0gLSBiW2ld OworfQorCit2b2lkIHN0YXRpYworYXZ4Ml90ZXN0ICh2b2lkKQoreworICBp bnQgaSwgajsKKyAgZm9yIChpID0gMDsgaSA8IDQ7ICsraSApIHsKKyAgICBm b3IgKCBqID0gMDsgaiA8IFNJWkU7ICsraiApIHsKKyAgICAgIGFbaV0gPSBp KmkraTsKKyAgICAgIGJbaV0gPSBpKmkqaTsKKyAgICB9CisKKyAgICBnZW5f cHN1YncgKCk7CisgICAgY2hlY2tfcHN1YncgKCk7CisKKyAgICBpZiAoIG1l bWNtcChjLCBjX3JlZiwgU0laRSAqIHNpemVvZiAoc2hvcnQpICkgKQorICAg ICAgYWJvcnQoKTsKKyAgfQorfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgInZwc3Vid1xbIFxcdFxdK1xbXlxuXF0qJXltbVxb MC05XF0iIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2xlYW51cC1zYXZl ZC10ZW1wcyB9IH0gKi8K --00248c0ee66ced8cb104af4294e1--