From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31449 invoked by alias); 2 Apr 2013 10:03:23 -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 31375 invoked by uid 89); 2 Apr 2013 10:03:10 -0000 X-Spam-SWARE-Status: No, score=-4.4 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,KHOP_RCVD_TRUST,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE autolearn=ham version=3.3.1 Received: from mail-ve0-f182.google.com (HELO mail-ve0-f182.google.com) (209.85.128.182) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Tue, 02 Apr 2013 10:03:06 +0000 Received: by mail-ve0-f182.google.com with SMTP id m1so238380ves.41 for ; Tue, 02 Apr 2013 03:03:05 -0700 (PDT) X-Received: by 10.58.205.179 with SMTP id lh19mr11869139vec.7.1364896985175; Tue, 02 Apr 2013 03:03:05 -0700 (PDT) MIME-Version: 1.0 Received: by 10.58.68.228 with HTTP; Tue, 2 Apr 2013 03:02:24 -0700 (PDT) From: Steven Bosscher Date: Tue, 02 Apr 2013 10:27:00 -0000 Message-ID: Subject: [patch] replace a bunch of equivalent checks for asm operands with a new function To: GCC Patches Cc: Eric Botcazou Content-Type: multipart/mixed; boundary=089e011841a0f4dd9b04d95dd724 X-Virus-Found: No X-SW-Source: 2013-04/txt/msg00072.txt.bz2 --089e011841a0f4dd9b04d95dd724 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 521 Hello, This idiom: "if (GET_CODE (body) == ASM_INPUT || asm_noperands (body) >= 0)" appears in multiple places. There's even one place where the idiom above is used in reverse (making the GET_CODE... check redundant). A few more places to the equivalent by checking extract_asm_operands != NULL. It made sense to me, at least, to replace those equivalent checks with a new function: insn_with_asm_operands_p(). Bootstrapped&tested on ia64-unknown-linux-gnu and powerpc64-unknown-linux-gnu. OK for trunk? Ciao! Steven --089e011841a0f4dd9b04d95dd724 Content-Type: text/plain; charset=US-ASCII; name="insn_with_asm_operands_p.diff.txt" Content-Disposition: attachment; filename="insn_with_asm_operands_p.diff.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hf0wbiav0 Content-length: 21676 CSogcnRsLmggKGluc25fd2l0aF9hc21fb3BlcmFuZHNfcCk6IE5ldyBwcm90 b3R5cGUuCgkqIHJ0bGFuYWwuYyAoaW5zbl93aXRoX2FzbV9vcGVyYW5kc19w KTogTmV3IGZ1bmN0aW9uLgoJKiBjZmdydGwuYyAocnRsX3NwbGl0X2VkZ2Up OiBVc2UgaXQgaW5zdGVhZCBvZiBleHRyYWN0X2FzbV9vcGVyYW5kcy4KCShm aXh1cF9yZW9yZGVyX2NoYWluKTogTGlrZXdpc2UuCgkqIGNvbXBhcmUtZWxp bS5jIChhcml0aG1ldGljX2ZsYWdzX2Nsb2JiZXJfcCk6IExpa2V3aXNlLgoJ KiBkd2FyZjJvdXQuYyAoZHdhcmYyb3V0X3Zhcl9sb2NhdGlvbik6IFVzZSBp dCBpbnN0ZWFkIG9mIG9wZW4tY29kZWQKCWVxdWl2YWxlbnQgY2hlY2tzLgoJ KiBmaW5hbC5jIChnZXRfYXR0cl9sZW5ndGhfMSwgc2hvcnRlbl9icmFuY2hl cyk6IExpa2V3aXNlLgoJKiBoYWlmYS1zY2hlZC5jIChwcnVuZV9yZWFkeV9s aXN0LCBzY2hlZHVsZV9ibG9jayk6IExpa2V3aXNlLgoJKiBody1kb2xvb3Au YyAoc2Nhbl9sb29wKTogTGlrZXdpc2UuCgkqIHJlb3JnLmMgKHN0b3Bfc2Vh cmNoX3ApOiBMaWtld2lzZS4KCShmaWxsX3Nsb3RzX2Zyb21fdGhyZWFkKTog TGlrZXdpc2UuCgkqIHNlbC1zY2hlZC1pci5jIChpbml0X2dsb2JhbF9hbmRf ZXhwcl9mb3JfaW5zbik6IExpa2V3aXNlLgoJKiBjb25maWcvYmZpbi9iZmlu LmMgKGh3bG9vcF9vcHRpbWl6ZSwgd29ya2Fyb3VuZF9ydHNfYW5vbWFseSwK CXdvcmthcm91bmRfc3BlY3VsYXRpb24sIGFkZF9zY2hlZF9pbnNuc19mb3Jf c3BlY3VsYXRpb24pOiBMaWtld2lzZS4KCSogY29uZmlnL2M2eC9jNnguYyAo YzZ4X3NjaGVkX3Jlb3JkZXJfMSk6IExpa2V3aXNlLgoJKiBjb25maWcvaTM4 Ni9pMzg2LmMgKGl4ODZfaTM4N19tb2RlX25lZWRlZCwgbWluX2luc25fc2l6 ZSk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKHJ0eF9uZWVk c19iYXJyaWVyKTogVXNlIGl0IGluc3RlYWQgb2YKCWV4dHJhY3RfYXNtX29w ZXJhbmRzLgoJKGlhNjRfZGZhX3NjaGVkX3Jlb3JkZXIpOiBVc2UgaXQgaW5z dGVhZCBvZiBvcGVuLWNvZGVkIGNoZWNrcy4KCSogY29uZmlnL202OGsvbTY4 ay5jIChtNjhrX3NjaGVkX3ZhcmlhYmxlX2lzc3VlKTogTGlrZXdpc2UuCgkq IGNvbmZpZy9taXBzL21pcHMuYyAobWlwc19hdm9pZF9oYXphcmQpOiBMaWtl d2lzZS4KCSogY29uZmlnL3BhL3BhLmMgKGJyYW5jaF90b19kZWxheV9zbG90 X3AsIGJyYW5jaF9uZWVkc19ub3BfcCwKCXVzZV9za2lwX3ApOiBMaWtld2lz ZS4KCSogY29uZmlnL3NwdS9zcHUuYyAoZ2V0X2JyYW5jaF90YXJnZXQpOiBV c2UgaXQgaW5zdGVhZCBvZgoJZXh0cmFjdF9hc21fb3BlcmFuZHMuCgpJbmRl eDogcnRsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcnRsLmgJKHJl dmlzaW9uIDE5NzMwNykKKysrIHJ0bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y MDU4LDYgKzIwNTgsNyBAQCBleHRlcm4gdm9pZCByZW1vdmVfcmVnX2VxdWFs X2VxdWl2X25vdGVzX2Zvcl9yZWdubwogZXh0ZXJuIGludCBzaWRlX2VmZmVj dHNfcCAoY29uc3RfcnR4KTsKIGV4dGVybiBpbnQgdm9sYXRpbGVfcmVmc19w IChjb25zdF9ydHgpOwogZXh0ZXJuIGludCB2b2xhdGlsZV9pbnNuX3AgKGNv bnN0X3J0eCk7CitleHRlcm4gYm9vbCBpbnNuX3dpdGhfYXNtX29wZXJhbmRz X3AgKGNvbnN0X3J0eCk7CiBleHRlcm4gaW50IG1heV90cmFwX3BfMSAoY29u c3RfcnR4LCB1bnNpZ25lZCk7CiBleHRlcm4gaW50IG1heV90cmFwX3AgKGNv bnN0X3J0eCk7CiBleHRlcm4gaW50IG1heV90cmFwX29yX2ZhdWx0X3AgKGNv bnN0X3J0eCk7CkluZGV4OiBydGxhbmFsLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gcnRsYW5hbC5jCShyZXZpc2lvbiAxOTczMDcpCisrKyBydGxh bmFsLmMJKHdvcmtpbmcgY29weSkKQEAgLTIyNzMsNiArMjI3MywxOCBAQCBz aWRlX2VmZmVjdHNfcCAoY29uc3RfcnR4IHgpCiAgIH0KICAgcmV0dXJuIDA7 CiB9CisKKy8qIFJldHVybiB0cnVlIGlmIElOU04gaGFzIGFzbSBvcGVyYW5k cy4gICovCisKK2Jvb2wKK2luc25fd2l0aF9hc21fb3BlcmFuZHNfcCAoY29u c3RfcnR4IGluc24pCit7CisgIGlmICghSU5TTl9QIChpbnNuKSkKKyAgICBy ZXR1cm4gZmFsc2U7CisgIHJldHVybiAoR0VUX0NPREUgKFBBVFRFUk4gKGlu c24pKSA9PSBBU01fSU5QVVQKKwkgIHx8IGFzbV9ub3BlcmFuZHMgKFBBVFRF Uk4gKGluc24pKSA+PSAwKTsKK30KKwogDAogLyogUmV0dXJuIG5vbnplcm8g aWYgZXZhbHVhdGluZyBydHggWCBtaWdodCBjYXVzZSBhIHRyYXAuCiAgICBG TEFHUyBjb250cm9scyBob3cgdG8gY29uc2lkZXIgTUVNcy4gIEEgbm9uemVy byBtZWFucyB0aGUgY29udGV4dApJbmRleDogY2ZncnRsLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gY2ZncnRsLmMJKHJldmlzaW9uIDE5NzMwNykK KysrIGNmZ3J0bC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xNzE4LDcgKzE3MTgs NyBAQCBydGxfc3BsaXRfZWRnZSAoZWRnZSBlZGdlX2luKQogCSAgaWYgKGxh c3QKIAkgICAgICAmJiBKVU1QX1AgKGxhc3QpCiAJICAgICAgJiYgZWRnZV9p bi0+ZGVzdCAhPSBFWElUX0JMT0NLX1BUUgotCSAgICAgICYmIGV4dHJhY3Rf YXNtX29wZXJhbmRzIChQQVRURVJOIChsYXN0KSkgIT0gTlVMTF9SVFgKKwkg ICAgICAmJiBpbnNuX3dpdGhfYXNtX29wZXJhbmRzX3AgKGxhc3QpCiAJICAg ICAgJiYgcGF0Y2hfanVtcF9pbnNuIChsYXN0LCBiZWZvcmUsIGJiKSkKIAkg ICAgZGZfc2V0X2JiX2RpcnR5IChlZGdlX2luLT5zcmMpOwogCX0KQEAgLTMz MDgsNyArMzMwOCw3IEBAIGZpeHVwX3Jlb3JkZXJfY2hhaW4gKHZvaWQpCiAJ CSAgY29udGludWU7CiAJCX0KIAkgICAgfQotCSAgZWxzZSBpZiAoZXh0cmFj dF9hc21fb3BlcmFuZHMgKFBBVFRFUk4gKGJiX2VuZF9pbnNuKSkgIT0gTlVM TCkKKwkgIGVsc2UgaWYgKGluc25fd2l0aF9hc21fb3BlcmFuZHNfcCAoYmJf ZW5kX2luc24pKQogCSAgICB7CiAJICAgICAgLyogSWYgdGhlIG9sZCBmYWxs dGhydSBpcyBzdGlsbCBuZXh0IG9yIGlmCiAJCSBhc20gZ290byBkb2Vzbid0 IGhhdmUgYSBmYWxsdGhydSAoZS5nLiB3aGVuIGZvbGxvd2VkIGJ5CkluZGV4 OiBjb21wYXJlLWVsaW0uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBj b21wYXJlLWVsaW0uYwkocmV2aXNpb24gMTk3MzA3KQorKysgY29tcGFyZS1l bGltLmMJKHdvcmtpbmcgY29weSkKQEAgLTE2MiwxMCArMTYyLDEwIEBAIGFy aXRobWV0aWNfZmxhZ3NfY2xvYmJlcl9wIChydHggaW5zbikKIAogICBpZiAo IU5PTkpVTVBfSU5TTl9QIChpbnNuKSkKICAgICByZXR1cm4gZmFsc2U7Ci0g IHBhdCA9IFBBVFRFUk4gKGluc24pOwotICBpZiAoZXh0cmFjdF9hc21fb3Bl cmFuZHMgKHBhdCkpCisgIGlmIChpbnNuX3dpdGhfYXNtX29wZXJhbmRzX3Ag KGluc24pKQogICAgIHJldHVybiBmYWxzZTsKIAorICBwYXQgPSBQQVRURVJO IChpbnNuKTsKICAgaWYgKEdFVF9DT0RFIChwYXQpID09IFBBUkFMTEVMICYm IFhWRUNMRU4gKHBhdCwgMCkgPT0gMikKICAgICB7CiAgICAgICB4ID0gWFZF Q0VYUCAocGF0LCAwLCAwKTsKSW5kZXg6IGR3YXJmMm91dC5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIGR3YXJmMm91dC5jCShyZXZpc2lvbiAxOTcz MDcpCisrKyBkd2FyZjJvdXQuYwkod29ya2luZyBjb3B5KQpAQCAtMjA3OTgs OCArMjA3OTgsNyBAQCBkd2FyZjJvdXRfdmFyX2xvY2F0aW9uIChydHggbG9j X25vdGUpCiAJCWlmIChHRVRfQ09ERSAoYm9keSkgPT0gVVNFIHx8IEdFVF9D T0RFIChib2R5KSA9PSBDTE9CQkVSKQogCQkgIGNvbnRpbnVlOwogCQkvKiBJ bmxpbmUgYXNtIGNvdWxkIG9jY3VweSB6ZXJvIGJ5dGVzLiAgKi8KLQkJZWxz ZSBpZiAoR0VUX0NPREUgKGJvZHkpID09IEFTTV9JTlBVVAotCQkJIHx8IGFz bV9ub3BlcmFuZHMgKGJvZHkpID49IDApCisJCWVsc2UgaWYgKGluc25fd2l0 aF9hc21fb3BlcmFuZHNfcCAoaW5zbikpCiAJCSAgY29udGludWU7CiAjaWZk ZWYgSEFWRV9hdHRyX2xlbmd0aAogCQllbHNlIGlmIChnZXRfYXR0cl9taW5f bGVuZ3RoIChpbnNuKSA9PSAwKQpJbmRleDogZmluYWwuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBmaW5hbC5jCShyZXZpc2lvbiAxOTczMDcpCisr KyBmaW5hbC5jCSh3b3JraW5nIGNvcHkpCkBAIC00MDAsNyArNDAwLDcgQEAg Z2V0X2F0dHJfbGVuZ3RoXzEgKHJ0eCBpbnNuLCBpbnQgKCpmYWxsYmFja19m bikgKHIKIAlpZiAoR0VUX0NPREUgKGJvZHkpID09IFVTRSB8fCBHRVRfQ09E RSAoYm9keSkgPT0gQ0xPQkJFUikKIAkgIHJldHVybiAwOwogCi0JZWxzZSBp ZiAoR0VUX0NPREUgKGJvZHkpID09IEFTTV9JTlBVVCB8fCBhc21fbm9wZXJh bmRzIChib2R5KSA+PSAwKQorCWVsc2UgaWYgKGluc25fd2l0aF9hc21fb3Bl cmFuZHNfcCAoaW5zbikpCiAJICBsZW5ndGggPSBhc21faW5zbl9jb3VudCAo Ym9keSkgKiBmYWxsYmFja19mbiAoaW5zbik7CiAJZWxzZSBpZiAoR0VUX0NP REUgKGJvZHkpID09IFNFUVVFTkNFKQogCSAgZm9yIChpID0gMDsgaSA8IFhW RUNMRU4gKGJvZHksIDApOyBpKyspCkBAIC0xMDk1LDcgKzEwOTUsNyBAQCBz aG9ydGVuX2JyYW5jaGVzIChydHggZmlyc3QpCiAJCQkJICogR0VUX01PREVf U0laRSAoR0VUX01PREUgKGJvZHkpKSk7CiAJICAvKiBBbGlnbm1lbnQgaXMg aGFuZGxlZCBieSBBRERSX1ZFQ19BTElHTi4gICovCiAJfQotICAgICAgZWxz ZSBpZiAoR0VUX0NPREUgKGJvZHkpID09IEFTTV9JTlBVVCB8fCBhc21fbm9w ZXJhbmRzIChib2R5KSA+PSAwKQorICAgICAgZWxzZSBpZiAoaW5zbl93aXRo X2FzbV9vcGVyYW5kc19wIChpbnNuKSkKIAlpbnNuX2xlbmd0aHNbdWlkXSA9 IGFzbV9pbnNuX2NvdW50IChib2R5KSAqIGluc25fZGVmYXVsdF9sZW5ndGgg KGluc24pOwogICAgICAgZWxzZSBpZiAoR0VUX0NPREUgKGJvZHkpID09IFNF UVVFTkNFKQogCXsKQEAgLTExMTcsOCArMTExNyw3IEBAIHNob3J0ZW5fYnJh bmNoZXMgKHJ0eCBmaXJzdCkKIAkgICAgICBpbnQgaW5uZXJfdWlkID0gSU5T Tl9VSUQgKGlubmVyX2luc24pOwogCSAgICAgIGludCBpbm5lcl9sZW5ndGg7 CiAKLQkgICAgICBpZiAoR0VUX0NPREUgKGJvZHkpID09IEFTTV9JTlBVVAot CQkgIHx8IGFzbV9ub3BlcmFuZHMgKFBBVFRFUk4gKFhWRUNFWFAgKGJvZHks IDAsIGkpKSkgPj0gMCkKKwkgICAgICBpZiAoaW5zbl93aXRoX2FzbV9vcGVy YW5kc19wIChpbm5lcl9pbnNuKSkKIAkJaW5uZXJfbGVuZ3RoID0gKGFzbV9p bnNuX2NvdW50IChQQVRURVJOIChpbm5lcl9pbnNuKSkKIAkJCQkqIGluc25f ZGVmYXVsdF9sZW5ndGggKGlubmVyX2luc24pKTsKIAkgICAgICBlbHNlCklu ZGV4OiBoYWlmYS1zY2hlZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGhhaWZhLXNjaGVkLmMJKHJldmlzaW9uIDE5NzMwNykKKysrIGhhaWZhLXNj aGVkLmMJKHdvcmtpbmcgY29weSkKQEAgLTU3MDUsOSArNTcwNSw4IEBAIHBy dW5lX3JlYWR5X2xpc3QgKHN0YXRlX3QgdGVtcF9zdGF0ZSwgYm9vbCBmaXJz dF9jCiAJICAgIH0KIAkgIGVsc2UgaWYgKHJlY29nX21lbW9pemVkIChpbnNu KSA8IDApCiAJICAgIHsKLQkgICAgICBpZiAoIWZpcnN0X2N5Y2xlX2luc25f cAotCQkgICYmIChHRVRfQ09ERSAoUEFUVEVSTiAoaW5zbikpID09IEFTTV9J TlBVVAotCQkgICAgICB8fCBhc21fbm9wZXJhbmRzIChQQVRURVJOIChpbnNu KSkgPj0gMCkpCisJICAgICAgaWYgKCFmaXJzdF9jeWNsZV9pbnNuX3AKKwkJ ICAmJiBpbnNuX3dpdGhfYXNtX29wZXJhbmRzX3AgKGluc24pKQogCQljb3N0 ID0gMTsKIAkgICAgICByZWFzb24gPSAiYXNtIjsKIAkgICAgfQpAQCAtNjIz NSw4ICs2MjM0LDcgQEAgc2NoZWR1bGVfYmxvY2sgKGJhc2ljX2Jsb2NrICp0 YXJnZXRfYmIsIHN0YXRlX3QgaW4KIAkgICAgICBhc21fcCA9IGZhbHNlOwog CSAgICB9CiAJICBlbHNlCi0JICAgIGFzbV9wID0gKEdFVF9DT0RFIChQQVRU RVJOIChpbnNuKSkgPT0gQVNNX0lOUFVUCi0JCSAgICAgfHwgYXNtX25vcGVy YW5kcyAoUEFUVEVSTiAoaW5zbikpID49IDApOworCSAgICBhc21fcCA9IGlu c25fd2l0aF9hc21fb3BlcmFuZHNfcCAoaW5zbik7CiAKIAkgIGlmICh0YXJn ZXRtLnNjaGVkLnZhcmlhYmxlX2lzc3VlKQogCSAgICBscy5jYW5faXNzdWVf bW9yZSA9CkluZGV4OiBody1kb2xvb3AuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBody1kb2xvb3AuYwkocmV2aXNpb24gMTk3MzA3KQorKysgaHct ZG9sb29wLmMJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw5ICsxMjUsOCBAQCBz Y2FuX2xvb3AgKGh3bG9vcF9pbmZvIGxvb3ApCiAJICBpZiAoIU5PTkRFQlVH X0lOU05fUCAoaW5zbikpCiAJICAgIGNvbnRpbnVlOwogCi0JICBpZiAocmVj b2dfbWVtb2l6ZWQgKGluc24pIDwgMAotCSAgICAgICYmIChHRVRfQ09ERSAo UEFUVEVSTiAoaW5zbikpID09IEFTTV9JTlBVVAotCQkgIHx8IGFzbV9ub3Bl cmFuZHMgKFBBVFRFUk4gKGluc24pKSA+PSAwKSkKKwkgIGlmIChyZWNvZ19t ZW1vaXplZCAoaW5zbikgPCAwCisJICAgICAgJiYgaW5zbl93aXRoX2FzbV9v cGVyYW5kc19wIChpbnNuKSkKIAkgICAgbG9vcC0+aGFzX2FzbSA9IHRydWU7 CiAKIAkgIENMRUFSX0hBUkRfUkVHX1NFVCAoc2V0X3RoaXNfaW5zbik7Cklu ZGV4OiByZW9yZy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlb3Jn LmMJKHJldmlzaW9uIDE5NzMwNykKKysrIHJlb3JnLmMJKHdvcmtpbmcgY29w eSkKQEAgLTI2MSw4ICsyNjEsNyBAQCBzdG9wX3NlYXJjaF9wIChydHggaW5z biwgaW50IGxhYmVsc19wKQogICAgICAgLyogT0sgdW5sZXNzIGl0IGNvbnRh aW5zIGEgZGVsYXkgc2xvdCBvciBpcyBhbiBgYXNtJyBpbnNuIG9mIHNvbWUg dHlwZS4KIAkgV2UgZG9uJ3Qga25vdyBhbnl0aGluZyBhYm91dCB0aGVzZS4g ICovCiAgICAgICByZXR1cm4gKEdFVF9DT0RFIChQQVRURVJOIChpbnNuKSkg PT0gU0VRVUVOQ0UKLQkgICAgICB8fCBHRVRfQ09ERSAoUEFUVEVSTiAoaW5z bikpID09IEFTTV9JTlBVVAotCSAgICAgIHx8IGFzbV9ub3BlcmFuZHMgKFBB VFRFUk4gKGluc24pKSA+PSAwKTsKKwkgICAgICB8fCBpbnNuX3dpdGhfYXNt X29wZXJhbmRzX3AgKGluc24pKQogCiAgICAgZGVmYXVsdDoKICAgICAgIGdj Y191bnJlYWNoYWJsZSAoKTsKQEAgLTI3MTQsOCArMjcxMyw3IEBAIGZpbGxf c2xvdHNfZnJvbV90aHJlYWQgKHJ0eCBpbnNuLCBydHggY29uZGl0aW9uLCBy CiAgICAgICAmJiBuZXdfdGhyZWFkICYmICFBTllfUkVUVVJOX1AgKG5ld190 aHJlYWQpCiAgICAgICAmJiBOT05KVU1QX0lOU05fUCAobmV3X3RocmVhZCkK ICAgICAgICYmICFSVFhfRlJBTUVfUkVMQVRFRF9QIChuZXdfdGhyZWFkKQot ICAgICAgJiYgR0VUX0NPREUgKFBBVFRFUk4gKG5ld190aHJlYWQpKSAhPSBB U01fSU5QVVQKLSAgICAgICYmIGFzbV9ub3BlcmFuZHMgKFBBVFRFUk4gKG5l d190aHJlYWQpKSA8IDApCisgICAgICAmJiAhaW5zbl93aXRoX2FzbV9vcGVy YW5kc19wIChuZXdfdGhyZWFkKSkKICAgICB7CiAgICAgICBydHggcGF0ID0g UEFUVEVSTiAobmV3X3RocmVhZCk7CiAgICAgICBydHggZGVzdDsKSW5kZXg6 IHNlbC1zY2hlZC1pci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNl bC1zY2hlZC1pci5jCShyZXZpc2lvbiAxOTczMDcpCisrKyBzZWwtc2NoZWQt aXIuYwkod29ya2luZyBjb3B5KQpAQCAtMjk1MCw4ICsyOTUwLDcgQEAgaW5p dF9nbG9iYWxfYW5kX2V4cHJfZm9yX2luc24gKGluc25fdCBpbnNuKQogICBl bHNlCiAgICAgaW5pdF9nbG9iYWxfZGF0YS5wcmV2X2luc24gPSBOVUxMX1JU WDsKIAotICBpZiAoR0VUX0NPREUgKFBBVFRFUk4gKGluc24pKSA9PSBBU01f SU5QVVQKLSAgICAgIHx8IGFzbV9ub3BlcmFuZHMgKFBBVFRFUk4gKGluc24p KSA+PSAwKQorICBpZiAoaW5zbl93aXRoX2FzbV9vcGVyYW5kc19wIChpbnNu KSkKICAgICAvKiBNYXJrIElOU04gYXMgYW4gYXNtLiAgKi8KICAgICBJTlNO X0FTTV9QIChpbnNuKSA9IHRydWU7CiAKSW5kZXg6IGNvbmZpZy9iZmluL2Jm aW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjb25maWcvYmZpbi9i ZmluLmMJKHJldmlzaW9uIDE5NzMwNykKKysrIGNvbmZpZy9iZmluL2JmaW4u Ywkod29ya2luZyBjb3B5KQpAQCAtMzYxNiw4ICszNjE2LDcgQEAgaHdsb29w X29wdGltaXplIChod2xvb3BfaW5mbyBsb29wKQogCSAgIHx8IGdldF9hdHRy X3R5cGUgKGxhc3RfaW5zbikgPT0gVFlQRV9DQUxMCiAJICAgfHwgZ2V0X2F0 dHJfc2VxX2luc25zIChsYXN0X2luc24pID09IFNFUV9JTlNOU19NVUxUSQog CSAgIHx8IHJlY29nX21lbW9pemVkIChsYXN0X2luc24pID09IENPREVfRk9S X3JldHVybl9pbnRlcm5hbAotCSAgIHx8IEdFVF9DT0RFIChQQVRURVJOIChs YXN0X2luc24pKSA9PSBBU01fSU5QVVQKLQkgICB8fCBhc21fbm9wZXJhbmRz IChQQVRURVJOIChsYXN0X2luc24pKSA+PSAwKQorCSAgIHx8IGluc25fd2l0 aF9hc21fb3BlcmFuZHNfcCAobGFzdF9pbnNuKSkKICAgICB7CiAgICAgICBp ZiAobG9vcC0+bGVuZ3RoICsgMiA+IE1BWF9MT09QX0xFTkdUSCkKIAl7CkBA IC00MDkxLDggKzQwOTAsNyBAQCB3b3JrYXJvdW5kX3J0c19hbm9tYWx5ICh2 b2lkKQogCWZpcnN0X2luc24gPSBpbnNuOwogICAgICAgcGF0ID0gUEFUVEVS TiAoaW5zbik7CiAgICAgICBpZiAoR0VUX0NPREUgKHBhdCkgPT0gVVNFIHx8 IEdFVF9DT0RFIChwYXQpID09IENMT0JCRVIKLQkgIHx8IEdFVF9DT0RFIChw YXQpID09IEFTTV9JTlBVVAotCSAgfHwgYXNtX25vcGVyYW5kcyAocGF0KSA+ PSAwKQorCSAgfHwgaW5zbl93aXRoX2FzbV9vcGVyYW5kc19wIChpbnNuKSkK IAljb250aW51ZTsKIAogICAgICAgaWYgKENBTExfUCAoaW5zbikpCkBAIC00 MjkzLDcgKzQyOTEsNyBAQCB3b3JrYXJvdW5kX3NwZWN1bGF0aW9uICh2b2lk KQogICAgICAgaWYgKEdFVF9DT0RFIChwYXQpID09IFVTRSB8fCBHRVRfQ09E RSAocGF0KSA9PSBDTE9CQkVSKQogCWNvbnRpbnVlOwogICAgICAgCi0gICAg ICBpZiAoR0VUX0NPREUgKHBhdCkgPT0gQVNNX0lOUFVUIHx8IGFzbV9ub3Bl cmFuZHMgKHBhdCkgPj0gMCkKKyAgICAgIGlmIChpbnNuX3dpdGhfYXNtX29w ZXJhbmRzX3AgKGluc24pKQogCXsKIAkgIG5wX2NoZWNrX3JlZ25vID0gLTE7 CiAJICBjb250aW51ZTsKQEAgLTQ0NDMsOCArNDQ0MSw3IEBAIHdvcmthcm91 bmRfc3BlY3VsYXRpb24gKHZvaWQpCiAKIAkgICAgICBwYXQgPSBQQVRURVJO ICh0YXJnZXQpOwogCSAgICAgIGlmIChHRVRfQ09ERSAocGF0KSA9PSBVU0Ug fHwgR0VUX0NPREUgKHBhdCkgPT0gQ0xPQkJFUgotCQkgIHx8IEdFVF9DT0RF IChwYXQpID09IEFTTV9JTlBVVAotCQkgIHx8IGFzbV9ub3BlcmFuZHMgKHBh dCkgPj0gMCkKKwkJICB8fCBpbnNuX3dpdGhfYXNtX29wZXJhbmRzX3AgKHRh cmdldCkpCiAJCWNvbnRpbnVlOwogCiAJICAgICAgaWYgKE5PTkRFQlVHX0lO U05fUCAodGFyZ2V0KSkKQEAgLTQ1MjIsOCArNDUxOSw3IEBAIGFkZF9zY2hl ZF9pbnNuc19mb3Jfc3BlY3VsYXRpb24gKHZvaWQpCiAKICAgICAgIHBhdCA9 IFBBVFRFUk4gKGluc24pOwogICAgICAgaWYgKEdFVF9DT0RFIChwYXQpID09 IFVTRSB8fCBHRVRfQ09ERSAocGF0KSA9PSBDTE9CQkVSCi0JICB8fCBHRVRf Q09ERSAocGF0KSA9PSBBU01fSU5QVVQKLQkgIHx8IGFzbV9ub3BlcmFuZHMg KHBhdCkgPj0gMCkKKwkgIHx8IGluc25fd2l0aF9hc21fb3BlcmFuZHNfcCAo aW5zbikpCiAJY29udGludWU7CiAKICAgICAgIGlmIChKVU1QX1AgKGluc24p KQpJbmRleDogY29uZmlnL2M2eC9jNnguYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBjb25maWcvYzZ4L2M2eC5jCShyZXZpc2lvbiAxOTczMDcpCisr KyBjb25maWcvYzZ4L2M2eC5jCSh3b3JraW5nIGNvcHkpCkBAIC00MTQwLDkg KzQxNDAsNyBAQCBjNnhfc2NoZWRfcmVvcmRlcl8xIChydHggKnJlYWR5LCBp bnQgKnBuX3JlYWR5LCBpbgogICAgIHsKICAgICAgIHJ0eCBpbnNuID0gKmlu c25wOwogICAgICAgaW50IGljb2RlID0gcmVjb2dfbWVtb2l6ZWQgKGluc24p OwotICAgICAgYm9vbCBpc19hc20gPSAoaWNvZGUgPCAwCi0JCSAgICAgJiYg KEdFVF9DT0RFIChQQVRURVJOIChpbnNuKSkgPT0gQVNNX0lOUFVUCi0JCQkg fHwgYXNtX25vcGVyYW5kcyAoUEFUVEVSTiAoaW5zbikpID49IDApKTsKKyAg ICAgIGJvb2wgaXNfYXNtID0gKGljb2RlIDwgMCAmJiBpbnNuX3dpdGhfYXNt X29wZXJhbmRzX3AgKGluc24pKTsKICAgICAgIGJvb2wgbm9fcGFyYWxsZWwg PSAoaXNfYXNtIHx8IGljb2RlID09IENPREVfRk9SX3NwbG9vcAogCQkJICB8 fCAoaWNvZGUgPj0gMAogCQkJICAgICAgJiYgZ2V0X2F0dHJfdHlwZSAoaW5z bikgPT0gVFlQRV9BVE9NSUMpKTsKQEAgLTQyMDEsOSArNDE5OSw3IEBAIGM2 eF9zY2hlZF9yZW9yZGVyXzEgKHJ0eCAqcmVhZHksIGludCAqcG5fcmVhZHks IGluCiAJewogCSAgcnR4IGluc24gPSAqaW5zbnA7CiAJICBpbnQgaWNvZGUg PSByZWNvZ19tZW1vaXplZCAoaW5zbik7Ci0JICBib29sIGlzX2FzbSA9IChp Y29kZSA8IDAKLQkJCSAmJiAoR0VUX0NPREUgKFBBVFRFUk4gKGluc24pKSA9 PSBBU01fSU5QVVQKLQkJCSAgICAgfHwgYXNtX25vcGVyYW5kcyAoUEFUVEVS TiAoaW5zbikpID49IDApKTsKKwkgIGJvb2wgaXNfYXNtID0gKGljb2RlIDwg MCAmJiBpbnNuX3dpdGhfYXNtX29wZXJhbmRzX3AgKGluc24pKTsKIAkgIGlu dCB0aGlzX2N5Y2xlcywgcnNydl9jeWNsZXM7CiAJICBlbnVtIGF0dHJfdHlw ZSB0eXBlOwogCkluZGV4OiBjb25maWcvaTM4Ni9pMzg2LmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gY29uZmlnL2kzODYvaTM4Ni5jCShyZXZpc2lv biAxOTczMDcpCisrKyBjb25maWcvaTM4Ni9pMzg2LmMJKHdvcmtpbmcgY29w eSkKQEAgLTE1MzM1LDkgKzE1MzM1LDcgQEAgaXg4Nl9pMzg3X21vZGVfbmVl ZGVkIChpbnQgZW50aXR5LCBydHggaW5zbikKICAgICAgYml0cyB3ZSBhcmUg aW50ZXJlc3RlZCBpbi4gICovCiAKICAgaWYgKENBTExfUCAoaW5zbikKLSAg ICAgIHx8IChOT05KVU1QX0lOU05fUCAoaW5zbikKLQkgICYmIChhc21fbm9w ZXJhbmRzIChQQVRURVJOIChpbnNuKSkgPj0gMAotCSAgICAgIHx8IEdFVF9D T0RFIChQQVRURVJOIChpbnNuKSkgPT0gQVNNX0lOUFVUKSkpCisgICAgICB8 fCAoTk9OSlVNUF9JTlNOX1AgKGluc24pICYmIGluc25fd2l0aF9hc21fb3Bl cmFuZHNfcCAoaW5zbikpKQogICAgIHJldHVybiBJMzg3X0NXX1VOSU5JVElB TElaRUQ7CiAKICAgaWYgKHJlY29nX21lbW9pemVkIChpbnNuKSA8IDApCkBA IC0zNTEzNiw4ICszNTEzNCw3IEBAIG1pbl9pbnNuX3NpemUgKHJ0eCBpbnNu KQogICAgICAgc3dpdGNoICh0eXBlKQogCXsKIAljYXNlIFRZUEVfTVVMVEk6 Ci0JICBpZiAoR0VUX0NPREUgKFBBVFRFUk4gKGluc24pKSA9PSBBU01fSU5Q VVQKLQkgICAgICB8fCBhc21fbm9wZXJhbmRzIChQQVRURVJOIChpbnNuKSkg Pj0gMCkKKwkgIGlmIChpbnNuX3dpdGhfYXNtX29wZXJhbmRzX3AgKGluc24p KQogCSAgICByZXR1cm4gMDsKIAkgIGJyZWFrOwogCWNhc2UgVFlQRV9PVEhF UjoKSW5kZXg6IGNvbmZpZy9pYTY0L2lhNjQuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBjb25maWcvaWE2NC9pYTY0LmMJKHJldmlzaW9uIDE5NzMw NykKKysrIGNvbmZpZy9pYTY0L2lhNjQuYwkod29ya2luZyBjb3B5KQpAQCAt NjUyMCw3ICs2NTIwLDcgQEAgcnR4X25lZWRzX2JhcnJpZXIgKHJ0eCB4LCBz dHJ1Y3QgcmVnX2ZsYWdzIGZsYWdzLAogCiAJICAgIGNhc2UgQ0xPQkJFUjoK IAkgICAgICBpZiAoUkVHX1AgKFhFWFAgKHBhdCwgMCkpCi0JCSAgJiYgZXh0 cmFjdF9hc21fb3BlcmFuZHMgKHgpICE9IE5VTExfUlRYCisJCSAgJiYgYXNt X25vcGVyYW5kcyAoeCkgPj0gMAogCQkgICYmIFJFR05PIChYRVhQIChwYXQs IDApKSAhPSBBUl9VTkFUX1JFR05VTSkKIAkJewogCQkgIG5ld19mbGFncy5p c193cml0ZSA9IDE7CkBAIC03MzUwLDggKzczNTAsNyBAQCBpYTY0X2RmYV9z Y2hlZF9yZW9yZGVyIChGSUxFICpkdW1wLCBpbnQgc2NoZWRfdmVyYgogCSAg ICBlbnVtIGF0dHJfdHlwZSB0ID0gaWE2NF9zYWZlX3R5cGUgKGluc24pOwog CSAgICBpZiAodCA9PSBUWVBFX1VOS05PV04pCiAJICAgICAgewotCQlpZiAo R0VUX0NPREUgKFBBVFRFUk4gKGluc24pKSA9PSBBU01fSU5QVVQKLQkJICAg IHx8IGFzbV9ub3BlcmFuZHMgKFBBVFRFUk4gKGluc24pKSA+PSAwKQorCQlp ZiAoaW5zbl93aXRoX2FzbV9vcGVyYW5kc19wIChpbnNuKSkKIAkJICB7CiAJ CSAgICBydHggbG93ZXN0ID0gcmVhZHlbbl9hc21zXTsKIAkJICAgIHJlYWR5 W25fYXNtc10gPSBpbnNuOwpJbmRleDogY29uZmlnL202OGsvbTY4ay5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIGNvbmZpZy9tNjhrL202OGsuYwko cmV2aXNpb24gMTk3MzA3KQorKysgY29uZmlnL202OGsvbTY4ay5jCSh3b3Jr aW5nIGNvcHkpCkBAIC02MDgxLDggKzYwODEsNyBAQCBtNjhrX3NjaGVkX3Zh cmlhYmxlX2lzc3VlIChGSUxFICpzY2hlZF9kdW1wIEFUVFJJQgogCiAgICAg ICAtLWNhbl9pc3N1ZV9tb3JlOwogICAgIH0KLSAgZWxzZSBpZiAoR0VUX0NP REUgKFBBVFRFUk4gKGluc24pKSA9PSBBU01fSU5QVVQKLQkgICB8fCBhc21f bm9wZXJhbmRzIChQQVRURVJOIChpbnNuKSkgPj0gMCkKKyAgZWxzZSBpZiAo aW5zbl93aXRoX2FzbV9vcGVyYW5kc19wIChpbnNuKSkKICAgICBpbnNuX3Np emUgPSBzY2hlZF9pYi5maWxsZWQ7CiAgIGVsc2UKICAgICBpbnNuX3NpemUg PSAwOwpJbmRleDogY29uZmlnL21pcHMvbWlwcy5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGNvbmZpZy9taXBzL21pcHMuYwkocmV2aXNpb24gMTk3 MzA3KQorKysgY29uZmlnL21pcHMvbWlwcy5jCSh3b3JraW5nIGNvcHkpCkBA IC0xNjAwNiw3ICsxNjAwNiw3IEBAIG1pcHNfYXZvaWRfaGF6YXJkIChydHgg YWZ0ZXIsIHJ0eCBpbnNuLCBpbnQgKmhpbG9fCiAgIC8qIERvIG5vdCBwdXQg dGhlIHdob2xlIGZ1bmN0aW9uIGluIC5zZXQgbm9yZW9yZGVyIGlmIGl0IGNv bnRhaW5zCiAgICAgIGFuIGFzbSBzdGF0ZW1lbnQuICBXZSBkb24ndCBrbm93 IHdoZXRoZXIgdGhlcmUgd2lsbCBiZSBoYXphcmRzCiAgICAgIGJldHdlZW4g dGhlIGFzbSBzdGF0ZW1lbnQgYW5kIHRoZSBnY2MtZ2VuZXJhdGVkIGNvZGUu ICAqLwotICBpZiAoR0VUX0NPREUgKHBhdHRlcm4pID09IEFTTV9JTlBVVCB8 fCBhc21fbm9wZXJhbmRzIChwYXR0ZXJuKSA+PSAwKQorICBpZiAoaW5zbl93 aXRoX2FzbV9vcGVyYW5kc19wIChpbnNuKSkKICAgICBjZnVuLT5tYWNoaW5l LT5hbGxfbm9yZW9yZGVyX3AgPSBmYWxzZTsKIAogICAvKiBJZ25vcmUgemVy by1sZW5ndGggaW5zdHJ1Y3Rpb25zIChiYXJyaWVycyBhbmQgdGhlIGxpa2Up LiAgKi8KSW5kZXg6IGNvbmZpZy9wYS9wYS5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGNvbmZpZy9wYS9wYS5jCShyZXZpc2lvbiAxOTczMDcpCisr KyBjb25maWcvcGEvcGEuYwkod29ya2luZyBjb3B5KQpAQCAtNjM0MSw4ICs2 MzQxLDcgQEAgYnJhbmNoX3RvX2RlbGF5X3Nsb3RfcCAocnR4IGluc24pCiAg ICAgICAvKiBXZSBjYW4ndCByZWx5IG9uIHRoZSBsZW5ndGggb2YgYXNtcy4g IFNvLCB3ZSByZXR1cm4gRkFMU0Ugd2hlbgogCSB0aGUgYnJhbmNoIGlzIGZv bGxvd2VkIGJ5IGFuIGFzbS4gICovCiAgICAgICBpZiAoIWluc24KLQkgIHx8 IEdFVF9DT0RFIChQQVRURVJOIChpbnNuKSkgPT0gQVNNX0lOUFVUCi0JICB8 fCBleHRyYWN0X2FzbV9vcGVyYW5kcyAoUEFUVEVSTiAoaW5zbikpICE9IE5V TExfUlRYCisJICB8fCBpbnNuX3dpdGhfYXNtX29wZXJhbmRzX3AgKGluc24p CiAJICB8fCBnZXRfYXR0cl9sZW5ndGggKGluc24pID4gMCkKIAlicmVhazsK ICAgICB9CkBAIC02MzcyLDggKzYzNzEsNyBAQCBicmFuY2hfbmVlZHNfbm9w X3AgKHJ0eCBpbnNuKQogICAgICAgaWYgKCFpbnNuIHx8IGp1bXBfaW5zbiA9 PSBpbnNuKQogCXJldHVybiBUUlVFOwogCi0gICAgICBpZiAoIShHRVRfQ09E RSAoUEFUVEVSTiAoaW5zbikpID09IEFTTV9JTlBVVAotCSAgIHx8IGV4dHJh Y3RfYXNtX29wZXJhbmRzIChQQVRURVJOIChpbnNuKSkgIT0gTlVMTF9SVFgp CisgICAgICBpZiAoIWluc25fd2l0aF9hc21fb3BlcmFuZHNfcCAoaW5zbikK IAkgICYmIGdldF9hdHRyX2xlbmd0aCAoaW5zbikgPiAwKQogCWJyZWFrOwog ICAgIH0KQEAgLTYzOTUsOSArNjM5Myw3IEBAIHVzZV9za2lwX3AgKHJ0eCBp bnNuKQogICAgICAgaW5zbiA9IG5leHRfYWN0aXZlX2luc24gKGluc24pOwog CiAgICAgICAvKiBXZSBjYW4ndCByZWx5IG9uIHRoZSBsZW5ndGggb2YgYXNt cywgc28gd2UgY2FuJ3Qgc2tpcCBhc21zLiAgKi8KLSAgICAgIGlmICghaW5z bgotCSAgfHwgR0VUX0NPREUgKFBBVFRFUk4gKGluc24pKSA9PSBBU01fSU5Q VVQKLQkgIHx8IGV4dHJhY3RfYXNtX29wZXJhbmRzIChQQVRURVJOIChpbnNu KSkgIT0gTlVMTF9SVFgpCisgICAgICBpZiAoIWluc24gfHwgaW5zbl93aXRo X2FzbV9vcGVyYW5kc19wIChpbnNuKSkKIAlicmVhazsKICAgICAgIGlmIChn ZXRfYXR0cl9sZW5ndGggKGluc24pID09IDQKIAkgICYmIGp1bXBfaW5zbiA9 PSBuZXh0X2FjdGl2ZV9pbnNuIChpbnNuKSkKSW5kZXg6IGNvbmZpZy9zcHUv c3B1LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY29uZmlnL3NwdS9z cHUuYwkocmV2aXNpb24gMTk3MzA3KQorKysgY29uZmlnL3NwdS9zcHUuYwko d29ya2luZyBjb3B5KQpAQCAtMjE3MSw4ICsyMTcxLDggQEAgZ2V0X2JyYW5j aF90YXJnZXQgKHJ0eCBicmFuY2gpCiAgICAgICBpZiAoR0VUX0NPREUgKFBB VFRFUk4gKGJyYW5jaCkpID09IFJFVFVSTikKIAlyZXR1cm4gZ2VuX3J0eF9S RUcgKFNJbW9kZSwgTElOS19SRUdJU1RFUl9SRUdOVU0pOwogCi0gICAgIC8q IEFTTSBHT1RPcy4gKi8KLSAgICAgaWYgKGV4dHJhY3RfYXNtX29wZXJhbmRz IChQQVRURVJOIChicmFuY2gpKSAhPSBOVUxMKQorICAgICAgLyogQVNNIEdP VE9zLiAqLworICAgICAgaWYgKGluc25fd2l0aF9hc21fb3BlcmFuZHNfcCAo YnJhbmNoKSkKIAlyZXR1cm4gTlVMTDsKIAogICAgICAgc2V0ID0gc2luZ2xl X3NldCAoYnJhbmNoKTsK --089e011841a0f4dd9b04d95dd724--