From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v8 32/50] x86emul: support AVX512F gather insns Date: Fri, 15 Mar 2019 04:58:47 -0600 Message-ID: <5C8B8567020000780021F24E@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5C8B7EC0020000780021F10B@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1h4kY6-0007sy-Fc for xen-devel@lists.xenproject.org; Fri, 15 Mar 2019 10:58:50 +0000 In-Reply-To: <5C8B7EC0020000780021F10B@prv1-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel Cc: George Dunlap , Andrew Cooper , Wei Liu , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org VGhpcyByZXF1aXJlcyBnZXR0aW5nIG1vZHJtX3JlZyBhbmQgc2liX2luZGV4IHNldCBjb3JyZWN0 bHkgaW4gdGhlIEVWRVgKY2FzZSwgdG8gYWNjb3VudCBmb3IgdGhlIGhpZ2ggMTYgW1hZWl1NTSBy ZWdpc3RlcnMuIEV4dGVuZCB0aGUKYWRqdXN0bWVudHMgdG8gbW9kcm1fcm0gYXMgd2VsbCwgc3Vj aCB0aGF0IHg4Nl9pbnNuX21vZHJtKCkgd291bGQKY29ycmVjdGx5IHJlcG9ydCByZWdpc3RlciBu dW1iZXJzICh0aGlzIHdhcyBhIGxhdGVudCBpc3N1ZSBvbmx5IGFzIHdlCmRvbid0IGN1cnJlbnRs eSBoYXZlIGNhbGxlcnMgb2YgdGhhdCBmdW5jdGlvbiB3aGljaCB3b3VsZCBjYXJlIGFib3V0IGFu CkVWRVggY2FzZSkuIFRoZSBhZGp1c3RtZW50IGluIHR1cm4gcmVxdWlyZXMgZHJvcHBpbmcgdGhl IGFzc2VydGlvbiBmcm9tCmRlY29kZV9ncHIoKSBhcyB3ZWxsIGFzIHJlLWludHJvZHVjaW5nIHRo ZSBleHBsaWNpdCBtYXNraW5nLCBhcyB3ZSBub3cKbmVlZCB0byBhY3RpdmVseSBtYXNrIG9mZiB0 aGUgaGlnaCBiaXQgd2hlbiBhIEdQUiBpcyBtZWFudC4KX2RlY29kZV9ncHIoKSBpbnZvY2F0aW9u cyBhbHNvIG5lZWQgc2xpZ2h0IGFkanVzdG1lbnRzLCB3aGVuIGludm9rZWQgaW4KZ2VuZXJpYyBj b2RlIGFoZWFkIG9mIHRoZSBtYWluIHN3aXRjaCgpLiBBbGwgb3RoZXIgdXNlcyBvZiBtb2RybV9y ZWcgYW5kCm1vZHJtX3JtIGFscmVhZHkgZ2V0IHN1aXRhYmx5IG1hc2tlZCB3aGVyZSBuZWNlc3Nh cnkuCgpUaGVyZSB3YXMgYWxzbyBhbiBlbmNvZGluZyBtaXN0YWtlIGluIHRoZSBFVkVYIERpc3A4 IHRlc3QgY29kZSwgd2hpY2gKd2FzIGJlbmlnbiAoZHVlIHRvICVyZHggZ2V0dGluZyBzZXQgdG8g emVybykgdG8gYWxsIG5vbi12U0lCIHRlc3RzIGFzIGl0Cm1pc3Rha2VubHkgZW5jb2RlZCA8ZGlz cDg+KCVyZHgsJXJkeCkgaW5zdGVhZCBvZiA8ZGlzcDg+KCVyZHgsJXJpeikuIEluCnRoZSB2U0lC IGNhc2UgdGhpcyBtZWFudCA8ZGlzcDg+KCVyZHgsJXptbTIpIGluc3RlYWQgb2YgdGhlIGludGVu ZGVkCjxkaXNwOD4oJXJkeCwlem1tNCkuCgpMaWtld2lzZSB0aGUgYWNjZXNzIGNvdW50IGNoZWNr IHdhc24ndCBlbnRpcmVseSBjb3JyZWN0IGZvciB0aGUgUy9HCmNhc2U6IEluIHRoZSBxdWFkLXdv cmQtaW5kZXggYnV0IGR3b3JkLWRhdGEgY2FzZSBvbmx5IGhhbGYgdGhlIG51bWJlcgpvZiBmdWxs IHZlY3RvciBlbGVtZW50cyBnZXQgYWNjZXNzZWQuCgpBcyBhbiB1bnJlbGF0ZWQgY2hhbmdlIGlu IHRoZSBtYWluIHRlc3QgaGFybmVzcyBzb3VyY2UgZmlsZSBkaXN0aW5ndWlzaAp0aGUgIm4vYSIg bWVzc2FnZXMgYnkgYml0bmVzcy4KClNpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGlj aEBzdXNlLmNvbT4KLS0tCnY4OiBSZS1iYXNlLgp2NzogRml4IEJ5dGVPcCByZWdpc3RlciBkZWNv ZGUuIFJlLWJhc2UuCnY2OiBOZXcuCgotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFr ZWZpbGUKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2VmaWxlCkBAIC0xOCw3ICsx OCw3IEBAIENGTEFHUyArPSAkKENGTEFHU194ZW5pbmNsdWRlKQogCiBTSU1EIDo9IDNkbm93IHNz ZSBzc2UyIHNzZTQgYXZ4IGF2eDIgeG9wIGF2eDUxMmYgYXZ4NTEyYncgYXZ4NTEyZHEgYXZ4NTEy ZXIKIEZNQSA6PSBmbWE0IGZtYQotU0cgOj0gYXZ4Mi1zZworU0cgOj0gYXZ4Mi1zZyBhdng1MTJm LXNnIGF2eDUxMnZsLXNnCiBURVNUQ0FTRVMgOj0gYmxvd2Zpc2ggJChTSU1EKSAkKEZNQSkgJChT RykKIAogT1BNQVNLIDo9IGF2eDUxMmYgYXZ4NTEyZHEgYXZ4NTEyYncKQEAgLTY2LDYgKzY2LDE0 IEBAIHhvcC1mbHRzIDo9ICQoYXZ4LWZsdHMpCiBhdng1MTJmLXZlY3MgOj0gNjQgMTYgMzIKIGF2 eDUxMmYtaW50cyA6PSA0IDgKIGF2eDUxMmYtZmx0cyA6PSA0IDgKK2F2eDUxMmYtc2ctdmVjcyA6 PSA2NAorYXZ4NTEyZi1zZy1pZHhzIDo9IDQgOAorYXZ4NTEyZi1zZy1pbnRzIDo9ICQoYXZ4NTEy Zi1pbnRzKQorYXZ4NTEyZi1zZy1mbHRzIDo9ICQoYXZ4NTEyZi1mbHRzKQorYXZ4NTEydmwtc2ct dmVjcyA6PSAxNiAzMgorYXZ4NTEydmwtc2ctaWR4cyA6PSAkKGF2eDUxMmYtc2ctaWR4cykKK2F2 eDUxMnZsLXNnLWludHMgOj0gJChhdng1MTJmLWludHMpCithdng1MTJ2bC1zZy1mbHRzIDo9ICQo YXZ4NTEyZi1mbHRzKQogYXZ4NTEyYnctdmVjcyA6PSAkKGF2eDUxMmYtdmVjcykKIGF2eDUxMmJ3 LWludHMgOj0gMSAyCiBhdng1MTJidy1mbHRzIDo9Ci0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVs YXRvci9ldmV4LWRpc3A4LmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL2V2ZXgtZGlz cDguYwpAQCAtMTc2LDYgKzE3Niw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdCBhdng1MTJm X2FsbFtdID0KICAgICBJTlNOKGZubXN1YjIxMywgICAgNjYsIDBmMzgsIGFmLCAgICBlbCwgICAg IHNkLCBlbCksCiAgICAgSU5TTihmbm1zdWIyMzEsICAgIDY2LCAwZjM4LCBiZSwgICAgdmwsICAg ICBzZCwgdmwpLAogICAgIElOU04oZm5tc3ViMjMxLCAgICA2NiwgMGYzOCwgYmYsICAgIGVsLCAg ICAgc2QsIGVsKSwKKyAgICBJTlNOKGdhdGhlcmQsICAgICAgNjYsIDBmMzgsIDkyLCAgICB2bCwg ICAgIHNkLCBlbCksCisgICAgSU5TTihnYXRoZXJxLCAgICAgIDY2LCAwZjM4LCA5MywgICAgdmws ICAgICBzZCwgZWwpLAogICAgIElOU04oZ2V0ZXhwLCAgICAgICA2NiwgMGYzOCwgNDIsICAgIHZs LCAgICAgc2QsIHZsKSwKICAgICBJTlNOKGdldGV4cCwgICAgICAgNjYsIDBmMzgsIDQzLCAgICBl bCwgICAgIHNkLCBlbCksCiAgICAgSU5TTihnZXRtYW50LCAgICAgIDY2LCAwZjNhLCAyNiwgICAg dmwsICAgICBzZCwgdmwpLApAQCAtMjI5LDYgKzIzMSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg dGVzdCBhdng1MTJmX2FsbFtdID0KICAgICBJTlNOKHBlcm10MiwgICAgICAgNjYsIDBmMzgsIDdl LCAgICB2bCwgICAgIGRxLCB2bCksCiAgICAgSU5TTihwZXJtdDIsICAgICAgIDY2LCAwZjM4LCA3 ZiwgICAgdmwsICAgICBzZCwgdmwpLAogICAgIElOU04ocGV4cGFuZCwgICAgICA2NiwgMGYzOCwg ODksICAgIHZsLCAgICAgZHEsIGVsKSwKKyAgICBJTlNOKHBnYXRoZXJkLCAgICAgNjYsIDBmMzgs IDkwLCAgICB2bCwgICAgIGRxLCBlbCksCisgICAgSU5TTihwZ2F0aGVycSwgICAgIDY2LCAwZjM4 LCA5MSwgICAgdmwsICAgICBkcSwgZWwpLAogICAgIElOU04ocG1heHMsICAgICAgICA2NiwgMGYz OCwgM2QsICAgIHZsLCAgICAgZHEsIHZsKSwKICAgICBJTlNOKHBtYXh1LCAgICAgICAgNjYsIDBm MzgsIDNmLCAgICB2bCwgICAgIGRxLCB2bCksCiAgICAgSU5TTihwbWlucywgICAgICAgIDY2LCAw ZjM4LCAzOSwgICAgdmwsICAgICBkcSwgdmwpLApAQCAtNjk4LDcgKzcwMiw3IEBAIHN0YXRpYyB2 b2lkIHRlc3Rfb25lKGNvbnN0IHN0cnVjdCB0ZXN0ICoKICAgICBpbnN0clszXSA9IGV2ZXgucmF3 WzJdOwogICAgIGluc3RyWzRdID0gdGVzdC0+b3BjOwogICAgIGluc3RyWzVdID0gMHg0NCB8ICh0 ZXN0LT5leHQgPDwgMyk7IC8qIE1vZFIvTSAqLwotICAgIGluc3RyWzZdID0gMHgxMjsgLyogU0lC OiBiYXNlIHJEWCwgaW5kZXggbm9uZSAvIHhNTTQgKi8KKyAgICBpbnN0cls2XSA9IDB4MjI7IC8q IFNJQjogYmFzZSByRFgsIGluZGV4IG5vbmUgLyB4TU00ICovCiAgICAgaW5zdHJbN10gPSAxOyAv KiBEaXNwOCAqLwogICAgIGluc3RyWzhdID0gMDsgLyogaW1tZWRpYXRlLCBpZiBhbnkgKi8KIApA QCAtNzE4LDcgKzcyMiw4IEBAIHN0YXRpYyB2b2lkIHRlc3Rfb25lKGNvbnN0IHN0cnVjdCB0ZXN0 ICoKICAgICAgICAgIGlmICggYWNjZXNzZWRbaV0gKQogICAgICAgICAgICAgIGdvdG8gZmFpbDsK ICAgICBmb3IgKCA7IGkgPCAodGVzdC0+c2NhbGUgPT0gU0NfdmwgPyB2c3ogOiBlc3opICsgKHNn ID8gZXN6IDogdnN6KTsgKytpICkKLSAgICAgICAgIGlmICggYWNjZXNzZWRbaV0gIT0gKHNnID8g dnN6IC8gZXN6IDogMSkgKQorICAgICAgICAgaWYgKCBhY2Nlc3NlZFtpXSAhPSAoc2cgPyAodnN6 IC8gZXN6KSA+PiAodGVzdC0+b3BjICYgMSAmICFldmV4LncpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6IDEpICkKICAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgZm9yICgg OyBpIDwgQVJSQVlfU0laRShhY2Nlc3NlZCk7ICsraSApCiAgICAgICAgICBpZiAoIGFjY2Vzc2Vk W2ldICkKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3NpbWQtc2cuYworKysgYi90b29s cy90ZXN0cy94ODZfZW11bGF0b3Ivc2ltZC1zZy5jCkBAIC0zNSwxMyArMzUsNzggQEAgdHlwZWRl ZiBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygodmVjdG9yXwogI2RlZmluZSBJVEVNX0NPVU5UIChW RUNfU0laRSAvIEVMRU1fU0laRSA8IElWRUNfU0laRSAvIElEWF9TSVpFID8gXAogICAgICAgICAg ICAgICAgICAgICBWRUNfU0laRSAvIEVMRU1fU0laRSA6IElWRUNfU0laRSAvIElEWF9TSVpFKQog Ci0jaWYgVkVDX1NJWkUgPT0gMTYKLSMgZGVmaW5lIHRvX2Jvb2woY21wKSBfX2J1aWx0aW5faWEz Ml9wdGVzdGMxMjgoY21wLCAodmVjX3Qpe30gPT0gMCkKLSNlbHNlCi0jIGRlZmluZSB0b19ib29s KGNtcCkgX19idWlsdGluX2lhMzJfcHRlc3RjMjU2KGNtcCwgKHZlY190KXt9ID09IDApCi0jZW5k aWYKKyNpZiBkZWZpbmVkKF9fQVZYNTEyRl9fKQorIyBkZWZpbmUgQUxMX1RSVUUgKH4wVUxMID4+ ICg2NCAtIEVMRU1fQ09VTlQpKQorIyBpZiBFTEVNX1NJWkUgPT0gNAorIyAgaWYgSURYX1NJWkUg PT0gNCB8fCBkZWZpbmVkKF9fQVZYNTEyVkxfXykKKyMgICBkZWZpbmUgdG9fbWFzayhtc2spIEIo cHRlc3RtZCwgLCAodnNpX3QpKG1zayksICh2c2lfdCkobXNrKSwgfjApCisjICAgZGVmaW5lIGVx KHgsIHkpIChCKHBjbXBlcWQsIF9tYXNrLCAodnNpX3QpKHgpLCAodnNpX3QpKHkpLCAtMSkgPT0g QUxMX1RSVUUpCisjICBlbHNlCisjICAgZGVmaW5lIHdpZGVuKHgpIF9fYnVpbHRpbl9pYTMyX3Bt b3Z6eGRxNTEyX21hc2soKHZzaV90KSh4KSwgKGlkaV90KXt9LCB+MCkKKyMgICBkZWZpbmUgdG9f bWFzayhtc2spIF9fYnVpbHRpbl9pYTMyX3B0ZXN0bXE1MTIod2lkZW4obXNrKSwgd2lkZW4obXNr KSwgfjApCisjICAgZGVmaW5lIGVxKHgsIHkpIChfX2J1aWx0aW5faWEzMl9wY21wZXFxNTEyX21h c2sod2lkZW4oeCksIHdpZGVuKHkpLCB+MCkgPT0gQUxMX1RSVUUpCisjICBlbmRpZgorIyAgZGVm aW5lIEJHXyhkdCwgaXQsIHJlZywgbWVtLCBpZHgsIG1zaywgc2NsKSBcCisgICAgX19idWlsdGlu X2lhMzJfZ2F0aGVyIyNpdCMjZHQocmVnLCBtZW0sIGlkeCwgdG9fbWFzayhtc2spLCBzY2wpCisj IGVsc2UKKyMgIGRlZmluZSBlcSh4LCB5KSAoQihwY21wZXFxLCBfbWFzaywgKHZkaV90KSh4KSwg KHZkaV90KSh5KSwgLTEpID09IEFMTF9UUlVFKQorIyAgZGVmaW5lIEJHXyhkdCwgaXQsIHJlZywg bWVtLCBpZHgsIG1zaywgc2NsKSBcCisgICAgX19idWlsdGluX2lhMzJfZ2F0aGVyIyNpdCMjZHQo cmVnLCBtZW0sIGlkeCwgQihwdGVzdG1xLCAsICh2ZGlfdCkobXNrKSwgKHZkaV90KShtc2spLCB+ MCksIHNjbCkKKyMgZW5kaWYKKy8qCisgKiBJbnN0ZWFkIG9mIHJlcGxpY2F0aW5nIHRoZSBtYWlu IElEWF9TSVpFIGNvbmRpdGlvbmFsIGJlbG93IHRocmVlIHRpbWVzLCB1c2UKKyAqIGEgZG91Ymxl IGxheWVyIG9mIG1hY3JvIGludm9jYXRpb25zLCBhbGxvd2luZyBmb3Igc3Vic3RpdHV0aW9uIG9m IHRoZQorICogcmVzcGVjdGl2ZSByZWxldmFudCBtYWNybyBhcmd1bWVudCB0b2tlbnMuCisgKi8K KyMgZGVmaW5lIEJHKGR0LCBpdCwgcmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpIEJHXyhkdCwgaXQs IHJlZywgbWVtLCBpZHgsIG1zaywgc2NsKQorIyBpZiBWRUNfTUFYIDwgNjQKKy8qCisgKiBUaGUg c3ViLTUxMi1iaXQgYnVpbHQtaW5zIGhhdmUgYW4gZXh0cmEgIjMiIGluZml4LCBwcmVzdW1hYmx5 IGJlY2F1c2UgdGhlCisgKiA1MTItYml0IG5hbWVzIHdlcmUgY2hvc2VuIHdpdGhvdXQgdGhlIEFW WDUxMlZMIGV4dGVuc2lvbiBpbiBtaW5kIChhbmQgaGVuY2UKKyAqIG1ha2luZyB0aGUgbGF0dGVy IGNvbGxpZGUgd2l0aCB0aGUgQVZYMiBvbmVzKS4KKyAqLworIyAgZGVmaW5lIHNpIDNzaQorIyAg ZGVmaW5lIGRpIDNkaQorIyBlbmRpZgorIyBpZiBWRUNfTUFYID09IDE2CisjICBkZWZpbmUgdjhk ZiB2MmRmCisjICBkZWZpbmUgdjhkaSB2MmRpCisjICBkZWZpbmUgdjE2c2YgdjRzZgorIyAgZGVm aW5lIHYxNnNpIHY0c2kKKyMgZWxpZiBWRUNfTUFYID09IDMyCisjICBkZWZpbmUgdjhkZiB2NGRm CisjICBkZWZpbmUgdjhkaSB2NGRpCisjICBkZWZpbmUgdjE2c2YgdjhzZgorIyAgZGVmaW5lIHYx NnNpIHY4c2kKKyMgZW5kaWYKKyMgaWYgSURYX1NJWkUgPT0gNAorIyAgaWYgSU5UX1NJWkUgPT0g NAorIyAgIGRlZmluZSBnYXRoZXIocmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpIEJHKHYxNnNpLCBz aSwgcmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpCisjICBlbGlmIElOVF9TSVpFID09IDgKKyMgICBk ZWZpbmUgZ2F0aGVyKHJlZywgbWVtLCBpZHgsIG1zaywgc2NsKSAodmVjX3QpKEJHKHY4ZGksIHNp LCAodmRpX3QpKHJlZyksIG1lbSwgaWR4LCBtc2ssIHNjbCkpCisjICBlbGlmIEZMT0FUX1NJWkUg PT0gNAorIyAgIGRlZmluZSBnYXRoZXIocmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpIEJHKHYxNnNm LCBzaSwgcmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpCisjICBlbGlmIEZMT0FUX1NJWkUgPT0gOAor IyAgIGRlZmluZSBnYXRoZXIocmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpIEJHKHY4ZGYsIHNpLCBy ZWcsIG1lbSwgaWR4LCBtc2ssIHNjbCkKKyMgIGVuZGlmCisjIGVsaWYgSURYX1NJWkUgPT0gOAor IyAgaWYgSU5UX1NJWkUgPT0gNAorIyAgIGRlZmluZSBnYXRoZXIocmVnLCBtZW0sIGlkeCwgbXNr LCBzY2wpIEJHKHYxNnNpLCBkaSwgcmVnLCBtZW0sIChpZGlfdCkoaWR4KSwgbXNrLCBzY2wpCisj ICBlbGlmIElOVF9TSVpFID09IDgKKyMgICBkZWZpbmUgZ2F0aGVyKHJlZywgbWVtLCBpZHgsIG1z aywgc2NsKSAodmVjX3QpKEJHKHY4ZGksIGRpLCAodmRpX3QpKHJlZyksIG1lbSwgKGlkaV90KShp ZHgpLCBtc2ssIHNjbCkpCisjICBlbGlmIEZMT0FUX1NJWkUgPT0gNAorIyAgIGRlZmluZSBnYXRo ZXIocmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpIEJHKHYxNnNmLCBkaSwgcmVnLCBtZW0sIChpZGlf dCkoaWR4KSwgbXNrLCBzY2wpCisjICBlbGlmIEZMT0FUX1NJWkUgPT0gOAorIyAgIGRlZmluZSBn YXRoZXIocmVnLCBtZW0sIGlkeCwgbXNrLCBzY2wpIEJHKHY4ZGYsIGRpLCByZWcsIG1lbSwgKGlk aV90KShpZHgpLCBtc2ssIHNjbCkKKyMgIGVuZGlmCisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9f QVZYMl9fKQorIyBpZiBWRUNfU0laRSA9PSAxNgorIyAgZGVmaW5lIHRvX2Jvb2woY21wKSBfX2J1 aWx0aW5faWEzMl9wdGVzdGMxMjgoY21wLCAodmVjX3Qpe30gPT0gMCkKKyMgZWxzZQorIyAgZGVm aW5lIHRvX2Jvb2woY21wKSBfX2J1aWx0aW5faWEzMl9wdGVzdGMyNTYoY21wLCAodmVjX3Qpe30g PT0gMCkKKyMgZW5kaWYKIAotI2lmIGRlZmluZWQoX19BVlgyX18pCiAjIGlmIFZFQ19NQVggPT0g MTYKICMgIGlmIElEWF9TSVpFID09IDQKICMgICBpZiBJTlRfU0laRSA9PSA0CkBAIC0xMTEsNiAr MTc2LDEwIEBAIHR5cGVkZWYgbG9uZyBsb25nIF9fYXR0cmlidXRlX18oKHZlY3Rvcl8KICMgZW5k aWYKICNlbmRpZgogCisjaWZuZGVmIGVxCisjIGRlZmluZSBlcSh4LCB5KSB0b19ib29sKCh4KSA9 PSAoeSkpCisjZW5kaWYKKwogI2RlZmluZSBHTFVFXyh4LCB5KSB4ICMjIHkKICNkZWZpbmUgR0xV RSh4LCB5KSBHTFVFXyh4LCB5KQogCkBAIC0xMTksNiArMTg4LDcgQEAgdHlwZWRlZiBsb25nIGxv bmcgX19hdHRyaWJ1dGVfXygodmVjdG9yXwogI2RlZmluZSBQVVQ4KG4pICBQVVQ0KG4pLCAgIFBV VDQoKG4pICsgIDQpCiAjZGVmaW5lIFBVVDE2KG4pIFBVVDgobiksICAgUFVUOCgobikgKyAgOCkK ICNkZWZpbmUgUFVUMzIobikgUFVUMTYobiksIFBVVDE2KChuKSArIDE2KQorI2RlZmluZSBQVVQ2 NChuKSBQVVQzMihuKSwgUFVUMzIoKG4pICsgMzIpCiAKIGNvbnN0IHR5cGVvZigodmVjX3Qpe31b MF0pIGFycmF5W10gPSB7CiAgICAgR0xVRShQVVQsIFZFQ19NQVgpKDEpLApAQCAtMTc0LDcgKzI0 NCw3IEBAIGludCBzZ190ZXN0KHZvaWQpCiAKICAgICB5ID0gZ2F0aGVyKGZ1bGwsIGFycmF5ICsg SVRFTV9DT1VOVCwgLWlkeCwgZnVsbCwgRUxFTV9TSVpFKTsKICNpZiBJVEVNX0NPVU5UID09IEVM RU1fQ09VTlQKLSAgICBpZiAoICF0b19ib29sKHkgPT0geCAtIDEpICkKKyAgICBpZiAoICFlcSh5 LCB4IC0gMSkgKQogICAgICAgICByZXR1cm4gX19MSU5FX187CiAjZWxzZQogICAgIGZvciAoIGkg PSAwOyBpIDwgSVRFTV9DT1VOVDsgKytpICkKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9y L3Rlc3RfeDg2X2VtdWxhdG9yLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rlc3Rf eDg2X2VtdWxhdG9yLmMKQEAgLTIyLDYgKzIyLDggQEAgYXNtICggIi5wdXNoc2VjdGlvbiAudGVz dCwgXCJheFwiLCBAcHJvZwogI2luY2x1ZGUgImF2eDUxMmRxLW9wbWFzay5oIgogI2luY2x1ZGUg ImF2eDUxMmJ3LW9wbWFzay5oIgogI2luY2x1ZGUgImF2eDUxMmYuaCIKKyNpbmNsdWRlICJhdng1 MTJmLXNnLmgiCisjaW5jbHVkZSAiYXZ4NTEydmwtc2cuaCIKICNpbmNsdWRlICJhdng1MTJidy5o IgogI2luY2x1ZGUgImF2eDUxMmRxLmgiCiAjaW5jbHVkZSAiYXZ4NTEyZXIuaCIKQEAgLTkwLDEx ICs5MiwxMyBAQCBzdGF0aWMgYm9vbCBzaW1kX2NoZWNrX2F2eDUxMmYodm9pZCkKICAgICByZXR1 cm4gY3B1X2hhc19hdng1MTJmOwogfQogI2RlZmluZSBzaW1kX2NoZWNrX2F2eDUxMmZfb3BtYXNr IHNpbWRfY2hlY2tfYXZ4NTEyZgorI2RlZmluZSBzaW1kX2NoZWNrX2F2eDUxMmZfc2cgc2ltZF9j aGVja19hdng1MTJmCiAKIHN0YXRpYyBib29sIHNpbWRfY2hlY2tfYXZ4NTEyZl92bCh2b2lkKQog ewogICAgIHJldHVybiBjcHVfaGFzX2F2eDUxMmYgJiYgY3B1X2hhc19hdng1MTJ2bDsKIH0KKyNk ZWZpbmUgc2ltZF9jaGVja19hdng1MTJ2bF9zZyBzaW1kX2NoZWNrX2F2eDUxMmZfdmwKIAogc3Rh dGljIGJvb2wgc2ltZF9jaGVja19hdng1MTJkcSh2b2lkKQogewpAQCAtMjkxLDYgKzI5NSwxNCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKICAgICBTSU1EKEFWWDUxMkYgdTMyeDE2LCAgICAgIGF2 eDUxMmYsICAgICAgNjR1NCksCiAgICAgU0lNRChBVlg1MTJGIHM2NHg4LCAgICAgICBhdng1MTJm LCAgICAgIDY0aTgpLAogICAgIFNJTUQoQVZYNTEyRiB1NjR4OCwgICAgICAgYXZ4NTEyZiwgICAg ICA2NHU4KSwKKyAgICBTSU1EKEFWWDUxMkYgUy9HIGYzMlsxNngzMl0sIGF2eDUxMmZfc2csIDY0 eDRmNCksCisgICAgU0lNRChBVlg1MTJGIFMvRyBmNjRbIDh4MzJdLCBhdng1MTJmX3NnLCA2NHg0 ZjgpLAorICAgIFNJTUQoQVZYNTEyRiBTL0cgZjMyWyA4eDY0XSwgYXZ4NTEyZl9zZywgNjR4OGY0 KSwKKyAgICBTSU1EKEFWWDUxMkYgUy9HIGY2NFsgOHg2NF0sIGF2eDUxMmZfc2csIDY0eDhmOCks CisgICAgU0lNRChBVlg1MTJGIFMvRyBpMzJbMTZ4MzJdLCBhdng1MTJmX3NnLCA2NHg0aTQpLAor ICAgIFNJTUQoQVZYNTEyRiBTL0cgaTY0WyA4eDMyXSwgYXZ4NTEyZl9zZywgNjR4NGk4KSwKKyAg ICBTSU1EKEFWWDUxMkYgUy9HIGkzMlsgOHg2NF0sIGF2eDUxMmZfc2csIDY0eDhpNCksCisgICAg U0lNRChBVlg1MTJGIFMvRyBpNjRbIDh4NjRdLCBhdng1MTJmX3NnLCA2NHg4aTgpLAogICAgIEFW WDUxMlZMKFZMIGYzMng0LCAgICAgICAgYXZ4NTEyZiwgICAgICAxNmY0KSwKICAgICBBVlg1MTJW TChWTCBmNjR4MiwgICAgICAgIGF2eDUxMmYsICAgICAgMTZmOCksCiAgICAgQVZYNTEyVkwoVkwg ZjMyeDgsICAgICAgICBhdng1MTJmLCAgICAgIDMyZjQpLApAQCAtMzAzLDYgKzMxNSwyMiBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IHsKICAgICBBVlg1MTJWTChWTCB1NjR4MiwgICAgICAgIGF2eDUx MmYsICAgICAgMTZ1OCksCiAgICAgQVZYNTEyVkwoVkwgczY0eDQsICAgICAgICBhdng1MTJmLCAg ICAgIDMyaTgpLAogICAgIEFWWDUxMlZMKFZMIHU2NHg0LCAgICAgICAgYXZ4NTEyZiwgICAgICAz MnU4KSwKKyAgICBTSU1EKEFWWDUxMlZMIFMvRyBmMzJbNHgzMl0sIGF2eDUxMnZsX3NnLCAxNng0 ZjQpLAorICAgIFNJTUQoQVZYNTEyVkwgUy9HIGY2NFsyeDMyXSwgYXZ4NTEydmxfc2csIDE2eDRm OCksCisgICAgU0lNRChBVlg1MTJWTCBTL0cgZjMyWzJ4NjRdLCBhdng1MTJ2bF9zZywgMTZ4OGY0 KSwKKyAgICBTSU1EKEFWWDUxMlZMIFMvRyBmNjRbMng2NF0sIGF2eDUxMnZsX3NnLCAxNng4Zjgp LAorICAgIFNJTUQoQVZYNTEyVkwgUy9HIGYzMls4eDMyXSwgYXZ4NTEydmxfc2csIDMyeDRmNCks CisgICAgU0lNRChBVlg1MTJWTCBTL0cgZjY0WzR4MzJdLCBhdng1MTJ2bF9zZywgMzJ4NGY4KSwK KyAgICBTSU1EKEFWWDUxMlZMIFMvRyBmMzJbNHg2NF0sIGF2eDUxMnZsX3NnLCAzMng4ZjQpLAor ICAgIFNJTUQoQVZYNTEyVkwgUy9HIGY2NFs0eDY0XSwgYXZ4NTEydmxfc2csIDMyeDhmOCksCisg ICAgU0lNRChBVlg1MTJWTCBTL0cgaTMyWzR4MzJdLCBhdng1MTJ2bF9zZywgMTZ4NGk0KSwKKyAg ICBTSU1EKEFWWDUxMlZMIFMvRyBpNjRbMngzMl0sIGF2eDUxMnZsX3NnLCAxNng0aTgpLAorICAg IFNJTUQoQVZYNTEyVkwgUy9HIGkzMlsyeDY0XSwgYXZ4NTEydmxfc2csIDE2eDhpNCksCisgICAg U0lNRChBVlg1MTJWTCBTL0cgaTY0WzJ4NjRdLCBhdng1MTJ2bF9zZywgMTZ4OGk4KSwKKyAgICBT SU1EKEFWWDUxMlZMIFMvRyBpMzJbOHgzMl0sIGF2eDUxMnZsX3NnLCAzMng0aTQpLAorICAgIFNJ TUQoQVZYNTEyVkwgUy9HIGk2NFs0eDMyXSwgYXZ4NTEydmxfc2csIDMyeDRpOCksCisgICAgU0lN RChBVlg1MTJWTCBTL0cgaTMyWzR4NjRdLCBhdng1MTJ2bF9zZywgMzJ4OGk0KSwKKyAgICBTSU1E KEFWWDUxMlZMIFMvRyBpNjRbNHg2NF0sIGF2eDUxMnZsX3NnLCAzMng4aTgpLAogICAgIFNJTUQo QVZYNTEyQlcgczh4NjQsICAgICBhdng1MTJidywgICAgICA2NGkxKSwKICAgICBTSU1EKEFWWDUx MkJXIHU4eDY0LCAgICAgYXZ4NTEyYncsICAgICAgNjR1MSksCiAgICAgU0lNRChBVlg1MTJCVyBz MTZ4MzIsICAgIGF2eDUxMmJ3LCAgICAgIDY0aTIpLApAQCAtNDI2MCw3ICs0Mjg4LDcgQEAgaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAgICAgICAgIGlmICggIWJsb2JzW2pdLnNp emUgKQogICAgICAgICB7Ci0gICAgICAgICAgICBwcmludGYoIiUtMzlzIG4vYVxuIiwgYmxvYnNb al0ubmFtZSk7CisgICAgICAgICAgICBwcmludGYoIiUtMzlzIG4vYSAoJXUtYml0KVxuIiwgYmxv YnNbal0ubmFtZSwgYmxvYnNbal0uYml0bmVzcyk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg ICAgICAgfQogCi0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCisr KyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCkBAIC00OTksNyArNDk5 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBleHQwZjM4X3RhYmxlIHsKICAgICBbMHg4Y10gPSB7 IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9pbnQgfSwKICAgICBbMHg4ZF0gPSB7IC5zaW1kX3Np emUgPSBzaW1kX3BhY2tlZF9pbnQsIC5kOHMgPSBkOHNfdmwgfSwKICAgICBbMHg4ZV0gPSB7IC5z aW1kX3NpemUgPSBzaW1kX3BhY2tlZF9pbnQsIC50b19tZW0gPSAxIH0sCi0gICAgWzB4OTAgLi4u IDB4OTNdID0geyAuc2ltZF9zaXplID0gc2ltZF9vdGhlciwgLnZzaWIgPSAxIH0sCisgICAgWzB4 OTAgLi4uIDB4OTNdID0geyAuc2ltZF9zaXplID0gc2ltZF9vdGhlciwgLnZzaWIgPSAxLCAuZDhz ID0gZDhzX2RxIH0sCiAgICAgWzB4OTYgLi4uIDB4OThdID0geyAuc2ltZF9zaXplID0gc2ltZF9w YWNrZWRfZnAsIC5kOHMgPSBkOHNfdmwgfSwKICAgICBbMHg5OV0gPSB7IC5zaW1kX3NpemUgPSBz aW1kX3NjYWxhcl92ZXh3LCAuZDhzID0gZDhzX2RxIH0sCiAgICAgWzB4OWFdID0geyAuc2ltZF9z aXplID0gc2ltZF9wYWNrZWRfZnAsIC5kOHMgPSBkOHNfdmwgfSwKQEAgLTMwNTQsNyArMzA1NCw4 IEBAIHg4Nl9kZWNvZGUoCiAKICAgICAgICAgZCAmPSB+TW9kUk07CiAjdW5kZWYgTW9kUk0gLyog T25seSBpdHMgYWxpYXNlcyBhcmUgdmFsaWQgdG8gdXNlIGZyb20gaGVyZSBvbi4gKi8KLSAgICAg ICAgbW9kcm1fcmVnID0gKChyZXhfcHJlZml4ICYgNCkgPDwgMSkgfCAoKG1vZHJtICYgMHgzOCkg Pj4gMyk7CisgICAgICAgIG1vZHJtX3JlZyA9ICgocmV4X3ByZWZpeCAmIDQpIDw8IDEpIHwgKCht b2RybSAmIDB4MzgpID4+IDMpIHwKKyAgICAgICAgICAgICAgICAgICAgKChldmV4X2VuY29kZWQo KSAmJiAhZXZleC5SKSA8PCA0KTsKICAgICAgICAgbW9kcm1fcm0gID0gbW9kcm0gJiAweDA3Owog CiAgICAgICAgIC8qCkBAIC0zMjI0LDcgKzMyMjUsOCBAQCB4ODZfZGVjb2RlKAogICAgICAgICBp ZiAoIG1vZHJtX21vZCA9PSAzICkKICAgICAgICAgewogICAgICAgICAgICAgZ2VuZXJhdGVfZXhj ZXB0aW9uX2lmKGQgJiB2U0lCLCBFWENfVUQpOwotICAgICAgICAgICAgbW9kcm1fcm0gfD0gKHJl eF9wcmVmaXggJiAxKSA8PCAzOworICAgICAgICAgICAgbW9kcm1fcm0gfD0gKChyZXhfcHJlZml4 ICYgMSkgPDwgMykgfAorICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZXhfZW5jb2RlZCgpICYm ICFldmV4LngpIDw8IDQ7CiAgICAgICAgICAgICBlYS50eXBlID0gT1BfUkVHOwogICAgICAgICB9 CiAgICAgICAgIGVsc2UgaWYgKCBhZF9ieXRlcyA9PSAyICkKQEAgLTMyODksNyArMzI5MSwxMCBA QCB4ODZfZGVjb2RlKAogCiAgICAgICAgICAgICAgICAgc3RhdGUtPnNpYl9pbmRleCA9ICgoc2li ID4+IDMpICYgNykgfCAoKHJleF9wcmVmaXggPDwgMikgJiA4KTsKICAgICAgICAgICAgICAgICBz dGF0ZS0+c2liX3NjYWxlID0gKHNpYiA+PiA2KSAmIDM7Ci0gICAgICAgICAgICAgICAgaWYgKCBz dGF0ZS0+c2liX2luZGV4ICE9IDQgJiYgIShkICYgdlNJQikgKQorICAgICAgICAgICAgICAgIGlm ICggdW5saWtlbHkoZCAmIHZTSUIpICkKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUtPnNpYl9p bmRleCB8PSAobW9kZV82NGJpdCgpICYmIGV2ZXhfZW5jb2RlZCgpICYmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICFldmV4LlJYKSA8PCA0OworICAgICAgICAgICAg ICAgIGVsc2UgaWYgKCBzdGF0ZS0+c2liX2luZGV4ICE9IDQgKQogICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgZWEubWVtLm9mZiA9ICpkZWNvZGVfZ3ByKHN0YXRlLT5yZWdz LCBzdGF0ZS0+c2liX2luZGV4KTsKICAgICAgICAgICAgICAgICAgICAgZWEubWVtLm9mZiA8PD0g c3RhdGUtPnNpYl9zY2FsZTsKQEAgLTM1OTIsNyArMzU5Nyw3IEBAIHg4Nl9lbXVsYXRlKAogICAg IGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihzdGF0ZS0+bm90XzY0Yml0ICYmIG1vZGVfNjRiaXQoKSwg RVhDX1VEKTsKIAogICAgIGlmICggZWEudHlwZSA9PSBPUF9SRUcgKQotICAgICAgICBlYS5yZWcg PSBfZGVjb2RlX2dwcigmX3JlZ3MsIG1vZHJtX3JtLCAoZCAmIEJ5dGVPcCkgJiYgIXJleF9wcmVm aXgpOworICAgICAgICBlYS5yZWcgPSBfZGVjb2RlX2dwcigmX3JlZ3MsIG1vZHJtX3JtLCAoZCAm IEJ5dGVPcCkgJiYgIXJleF9wcmVmaXggJiYgIXZleC5vcGN4KTsKIAogICAgIG1lbXNldChtbXZh bHAsIDB4YWEgLyogYXJiaXRyYXJ5ICovLCBzaXplb2YoKm1tdmFscCkpOwogCkBAIC0zNjA2LDcg KzM2MTEsNyBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgc3JjLnR5cGUgPSBPUF9SRUc7CiAgICAg ICAgIGlmICggZCAmIEJ5dGVPcCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNyYy5yZWcgPSBf ZGVjb2RlX2dwcigmX3JlZ3MsIG1vZHJtX3JlZywgIXJleF9wcmVmaXgpOworICAgICAgICAgICAg c3JjLnJlZyA9IF9kZWNvZGVfZ3ByKCZfcmVncywgbW9kcm1fcmVnLCAhcmV4X3ByZWZpeCAmJiAh dmV4Lm9wY3gpOwogICAgICAgICAgICAgc3JjLnZhbCA9ICoodWludDhfdCAqKXNyYy5yZWc7CiAg ICAgICAgICAgICBzcmMuYnl0ZXMgPSAxOwogICAgICAgICB9CkBAIC0zNzA0LDcgKzM3MDksNyBA QCB4ODZfZW11bGF0ZSgKICAgICAgICAgZHN0LnR5cGUgPSBPUF9SRUc7CiAgICAgICAgIGlmICgg ZCAmIEJ5dGVPcCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRzdC5yZWcgPSBfZGVjb2RlX2dw cigmX3JlZ3MsIG1vZHJtX3JlZywgIXJleF9wcmVmaXgpOworICAgICAgICAgICAgZHN0LnJlZyA9 IF9kZWNvZGVfZ3ByKCZfcmVncywgbW9kcm1fcmVnLCAhcmV4X3ByZWZpeCAmJiAhdmV4Lm9wY3gp OwogICAgICAgICAgICAgZHN0LnZhbCA9ICoodWludDhfdCAqKWRzdC5yZWc7CiAgICAgICAgICAg ICBkc3QuYnl0ZXMgPSAxOwogICAgICAgICB9CkBAIC05MTE5LDYgKzkxMjQsMTMwIEBAIHg4Nl9l bXVsYXRlKAogICAgICAgICBwdXRfc3R1YihzdHViKTsKIAogICAgICAgICBzdGF0ZS0+c2ltZF9z aXplID0gc2ltZF9ub25lOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFg4NkVN VUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDkwKTogLyogdnBnYXRoZXJke2QscX0gbWVtLFt4eXpd bW17a30gKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDkxKTogLyog dnBnYXRoZXJxe2QscX0gbWVtLFt4eXpdbW17a30gKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX0VW RVhfNjYoMHgwZjM4LCAweDkyKTogLyogdmdhdGhlcmRwe3MsZH0gbWVtLFt4eXpdbW17a30gKi8K KyAgICBjYXNlIFg4NkVNVUxfT1BDX0VWRVhfNjYoMHgwZjM4LCAweDkzKTogLyogdmdhdGhlcnFw e3MsZH0gbWVtLFt4eXpdbW17a30gKi8KKyAgICB7CisgICAgICAgIHR5cGVvZihldmV4KSAqcGV2 ZXg7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIGludDMyX3QgZHdbMTZdOworICAgICAg ICAgICAgaW50NjRfdCBxd1s4XTsKKyAgICAgICAgfSBpbmRleDsKKyAgICAgICAgYm9vbCBkb25l ID0gZmFsc2U7CisKKyAgICAgICAgQVNTRVJUKGVhLnR5cGUgPT0gT1BfTUVNKTsKKyAgICAgICAg Z2VuZXJhdGVfZXhjZXB0aW9uX2lmKCghZXZleC5vcG1zayB8fCBldmV4LmJycyB8fCBldmV4Lnog fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmV4LnJlZyAhPSAweGYgfHwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RybV9yZWcgPT0gc3RhdGUtPnNpYl9pbmRl eCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENfVUQpOworICAgICAgICBhdng1 MTJfdmxlbl9jaGVjayhmYWxzZSk7CisgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2 eDUxMmYpOworICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3ptbSk7CisKKyAgICAgICAgLyog UmVhZCBkZXN0aW5hdGlvbiBhbmQgaW5kZXggcmVnaXN0ZXJzLiAqLworICAgICAgICBvcGMgPSBp bml0X2V2ZXgoc3R1Yik7CisgICAgICAgIHBldmV4ID0gY29weV9FVkVYKG9wYywgZXZleCk7Cisg ICAgICAgIHBldmV4LT5vcGN4ID0gdmV4XzBmOworICAgICAgICBvcGNbMF0gPSAweDdmOyAvKiB2 bW92ZHFhezMyLDY0fSAqLworICAgICAgICAvKgorICAgICAgICAgKiBUaGUgcmVnaXN0ZXIgd3Jp dGViYWNrIGJlbG93IGhhcyB0byByZXRhaW4gbWFza2VkLW9mZiBlbGVtZW50cywgYnV0CisgICAg ICAgICAqIG5lZWRzIHRvIGNsZWFyIHVwcGVyIHBvcnRpb25zIGluIHRoZSBpbmRleC13aWRlci10 aGFuLWRhdGEgY2FzZXMuCisgICAgICAgICAqIFRoZXJlZm9yZSByZWFkIChhbmQgd3JpdGUgYmVs b3cpIHRoZSBmdWxsIHJlZ2lzdGVyLiBUaGUgYWx0ZXJuYXRpdmUKKyAgICAgICAgICogd291bGQg aGF2ZSBiZWVuIHRvIGZpZGRsZSB3aXRoIHRoZSBtYXNrIHJlZ2lzdGVyIHVzZWQuCisgICAgICAg ICAqLworICAgICAgICBwZXZleC0+b3Btc2sgPSAwOworICAgICAgICAvKiBVc2UgKCVyYXgpIGFz IGRlc3RpbmF0aW9uIGFuZCBtb2RybV9yZWcgYXMgc291cmNlLiAqLworICAgICAgICBwZXZleC0+ YiA9IDE7CisgICAgICAgIG9wY1sxXSA9IChtb2RybV9yZWcgJiA3KSA8PCAzOworICAgICAgICBw ZXZleC0+UlggPSAxOworICAgICAgICBvcGNbMl0gPSAweGMzOworCisgICAgICAgIGludm9rZV9z dHViKCIiLCAiIiwgIj1tIiAoKm1tdmFscCkgOiAiYSIgKG1tdmFscCkpOworCisgICAgICAgIHBl dmV4LT5wZnggPSB2ZXhfZjM7IC8qIHZtb3ZkcXV7MzIsNjR9ICovCisgICAgICAgIHBldmV4LT53 ID0gYiAmIDE7CisgICAgICAgIC8qIFN3aXRjaCB0byBzaWJfaW5kZXggYXMgc291cmNlLiAqLwor ICAgICAgICBwZXZleC0+ciA9ICFtb2RlXzY0Yml0KCkgfHwgIShzdGF0ZS0+c2liX2luZGV4ICYg MHgwOCk7CisgICAgICAgIHBldmV4LT5SID0gIW1vZGVfNjRiaXQoKSB8fCAhKHN0YXRlLT5zaWJf aW5kZXggJiAweDEwKTsKKyAgICAgICAgb3BjWzFdID0gKHN0YXRlLT5zaWJfaW5kZXggJiA3KSA8 PCAzOworCisgICAgICAgIGludm9rZV9zdHViKCIiLCAiIiwgIj1tIiAoaW5kZXgpIDogImEiICgm aW5kZXgpKTsKKyAgICAgICAgcHV0X3N0dWIoc3R1Yik7CisKKyAgICAgICAgLyogQ2xlYXIgdW50 b3VjaGVkIHBhcnRzIG9mIHRoZSBkZXN0aW5hdGlvbiBhbmQgbWFzayB2YWx1ZXMuICovCisgICAg ICAgIG4gPSAxIDw8ICgyICsgZXZleC5sciAtICgoYiAmIDEpIHwgZXZleC53KSk7CisgICAgICAg IG9wX2J5dGVzID0gNCA8PCBldmV4Lnc7CisgICAgICAgIG1lbXNldCgodm9pZCAqKW1tdmFscCAr IG4gKiBvcF9ieXRlcywgMCwgNjQgLSBuICogb3BfYnl0ZXMpOworICAgICAgICBvcF9tYXNrICY9 ICgxIDw8IG4pIC0gMTsKKworICAgICAgICBmb3IgKCBpID0gMDsgb3BfbWFzazsgKytpICkKKyAg ICAgICAgeworICAgICAgICAgICAgc2lnbmVkIGxvbmcgaWR4ID0gYiAmIDEgPyBpbmRleC5xd1tp XSA6IGluZGV4LmR3W2ldOworCisgICAgICAgICAgICBpZiAoICEob3BfbWFzayAmICgxIDw8IGkp KSApCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHJjID0gb3BzLT5y ZWFkKGVhLm1lbS5zZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZV9lYShl YS5tZW0ub2ZmICsgKGlkeCA8PCBzdGF0ZS0+c2liX3NjYWxlKSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAodm9pZCAqKW1tdmFscCArIGkgKiBvcF9ieXRlcywgb3BfYnl0ZXMsIGN0eHQp OworICAgICAgICAgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgKQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogSWYgd2UndmUgbWFkZSBzb21l IHByb2dyZXNzIGFuZCB0aGUgYWNjZXNzIGRpZCBub3QgZmF1bHQsCisgICAgICAgICAgICAgICAg ICogZm9yY2UgYSByZXRyeSBpbnN0ZWFkLiBUaGlzIGlzIGZvciBleGFtcGxlIG5lY2Vzc2FyeSB0 bworICAgICAgICAgICAgICAgICAqIGNvcGUgd2l0aCB0aGUgbGltaXRlZCBjYXBhY2l0eSBvZiBI Vk0ncyBNTUlPIGNhY2hlLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGlm ICggcmMgIT0gWDg2RU1VTF9FWENFUFRJT04gJiYgZG9uZSApCisgICAgICAgICAgICAgICAgICAg IHJjID0gWDg2RU1VTF9SRVRSWTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg IH0KKworICAgICAgICAgICAgb3BfbWFzayAmPSB+KDEgPDwgaSk7CisgICAgICAgICAgICBkb25l ID0gdHJ1ZTsKKworI2lmZGVmIF9fWEVOX18KKyAgICAgICAgICAgIGlmICggb3BfbWFzayAmJiBs b2NhbF9ldmVudHNfbmVlZF9kZWxpdmVyeSgpICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICByYyA9IFg4NkVNVUxfUkVUUlk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICAgICB9CisjZW5kaWYKKyAgICAgICAgfQorCisgICAgICAgIC8qIFdyaXRlIGRlc3RpbmF0aW9u IGFuZCBtYXNrIHJlZ2lzdGVycy4gKi8KKyAgICAgICAgb3BjID0gaW5pdF9ldmV4KHN0dWIpOwor ICAgICAgICBwZXZleCA9IGNvcHlfRVZFWChvcGMsIGV2ZXgpOworICAgICAgICBwZXZleC0+b3Bj eCA9IHZleF8wZjsKKyAgICAgICAgb3BjWzBdID0gMHg2ZjsgLyogdm1vdmRxYXszMiw2NH0gKi8K KyAgICAgICAgcGV2ZXgtPm9wbXNrID0gMDsKKyAgICAgICAgLyogVXNlIG1vZHJtX3JlZyBhcyBk ZXN0aW5hdGlvbiBhbmQgKCVyYXgpIGFzIHNvdXJjZS4gKi8KKyAgICAgICAgcGV2ZXgtPmIgPSAx OworICAgICAgICBvcGNbMV0gPSAobW9kcm1fcmVnICYgNykgPDwgMzsKKyAgICAgICAgcGV2ZXgt PlJYID0gMTsKKyAgICAgICAgb3BjWzJdID0gMHhjMzsKKworICAgICAgICBpbnZva2Vfc3R1Yigi IiwgIiIsICIrbSIgKCptbXZhbHApIDogImEiIChtbXZhbHApKTsKKworICAgICAgICAvKgorICAg ICAgICAgKiBrbW92dzogVGhpcyBpcyBWRVgtZW5jb2RlZCwgc28gd2UgY2FuJ3QgdXNlIHBldmV4 LiBBdm9pZCBjb3B5X1ZFWCgpIGV0YworICAgICAgICAgKiBhcyB3ZWxsLCBzaW5jZSB3ZSBjYW4g ZWFzaWx5IHVzZSB0aGUgMi1ieXRlIFZFWCBmb3JtIGhlcmUuCisgICAgICAgICAqLworICAgICAg ICBvcGMgLT0gRVZFWF9QRlhfQllURVM7CisgICAgICAgIG9wY1swXSA9IDB4YzU7CisgICAgICAg IG9wY1sxXSA9IDB4Zjg7CisgICAgICAgIG9wY1syXSA9IDB4OTA7CisgICAgICAgIC8qIFVzZSAo JXJheCkgYXMgc291cmNlLiAqLworICAgICAgICBvcGNbM10gPSBldmV4Lm9wbXNrIDw8IDM7Cisg ICAgICAgIG9wY1s0XSA9IDB4YzM7CisKKyAgICAgICAgaW52b2tlX3N0dWIoIiIsICIiLCAiK20i IChvcF9tYXNrKSA6ICJhIiAoJm9wX21hc2spKTsKKyAgICAgICAgcHV0X3N0dWIoc3R1Yik7CisK KyAgICAgICAgc3RhdGUtPnNpbWRfc2l6ZSA9IHNpbWRfbm9uZTsKICAgICAgICAgYnJlYWs7CiAg ICAgfQogCi0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCisrKyBi L3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCkBAIC02NjIsOCArNjYyLDYg QEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nICpkZWNvZGVfZ3ByKAogICAgIEJVSUxEX0JV R19PTihBUlJBWV9TSVpFKGNwdV91c2VyX3JlZ3NfZ3ByX29mZnNldHMpICYKICAgICAgICAgICAg ICAgICAgKEFSUkFZX1NJWkUoY3B1X3VzZXJfcmVnc19ncHJfb2Zmc2V0cykgLSAxKSk7CiAKLSAg ICBBU1NFUlQobW9kcm0gPCBBUlJBWV9TSVpFKGNwdV91c2VyX3JlZ3NfZ3ByX29mZnNldHMpKTsK LQogICAgIC8qIE5vdGUgdGhhdCB0aGlzIGFsc28gYWN0cyBhcyBhcnJheV9hY2Nlc3Nfbm9zcGVj KCkgc3RhbmQtaW4uICovCiAgICAgbW9kcm0gJj0gQVJSQVlfU0laRShjcHVfdXNlcl9yZWdzX2dw cl9vZmZzZXRzKSAtIDE7CiAKCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnBy b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94 ZW4tZGV2ZWw=