From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: =?UTF-8?Q?Nicolas_B=C3=A9rtolo?= Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] [WIP] Port feature/native-comp to Windows. Date: Mon, 11 May 2020 23:46:09 -0300 Message-ID: References: <5eb5b953.1c69fb81.a67ce.a764@mx.google.com> <83lfm1hc91.fsf@gnu.org> <83wo5lds87.fsf@gnu.org> <83lflzd8es.fsf@gnu.org> <83ftc7d4zu.fsf@gnu.org> <83blmvd2if.fsf@gnu.org> <833686d08r.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000fe9d9305a56a7747" Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="97280"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org, Andrea Corallo To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue May 12 04:47:27 2020 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jYKx3-000PCd-Hk for ged-emacs-devel@m.gmane-mx.org; Tue, 12 May 2020 04:47:25 +0200 Original-Received: from localhost ([::1]:36838 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jYKx2-0002u7-Dt for ged-emacs-devel@m.gmane-mx.org; Mon, 11 May 2020 22:47:24 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:50298) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jYKw4-00024v-Pl for emacs-devel@gnu.org; Mon, 11 May 2020 22:46:24 -0400 Original-Received: from mail-ot1-x32f.google.com ([2607:f8b0:4864:20::32f]:34446) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jYKw3-0003rh-Ou; Mon, 11 May 2020 22:46:24 -0400 Original-Received: by mail-ot1-x32f.google.com with SMTP id 72so9377852otu.1; Mon, 11 May 2020 19:46:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=BMjreJ7mUlm20ebUQJ8iPWK+HuLyu/ttT6gI9yYVQZI=; b=uuK+Dos2cM/nYnw3QZdhEaPxTgd12h9m0K+U/AyK70dZ2Fb+LiUyiaHMD5V3vGTSiv 1URd4psJd6v8V7e0o581ywHquIeXTHVrnBJYlLnyG5T9eNk18Nsp/6LH0u802sD6RlNq +DKi+c1JI3pDUnOoSDyiMPHXpGz+if5Yowu8RBn9piX4wqRRtkezz1qpV2ReVHOamgNN 82VQz9w2xfzshWvJD+LUPRE2q/jBx3rrN7N+rHQLsJZ+VMAic0eC/Qez3qanhS2HrsM6 6GsPhcRQ3k0Za8vdmxiGi10wGdELIo4zGm8Y1TC4z+ukqjRX2/2sTcWysZwF6y3WzZ6z UScA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=BMjreJ7mUlm20ebUQJ8iPWK+HuLyu/ttT6gI9yYVQZI=; b=YuUujBiYcpUEGToZuzNFcfk38umo9zLftoJl6clr+prJWEYw6LT31anbKxwKvPysYc qHBKHUJivEzeWaL46v4F5/2DQINob2HuR19/3RYUonUFIN7dRRSARUe658+pbQ+zWPS9 2GA2Kgf75Q21lMJh50jPWl4zV81R7UGctXCxNXGB27Ri2Gp8t7PQufD++Bc9vABbD0az O5c76niMdXAvT/1D43FsmdYP8OfdU/JZ+YVusOuo7VP3w8PLIpI6NyW89ruyYsB7JLe/ PYDCwPsdUNH/CYLJa5xyuPu8VJMAAAe4yJkz3jgnyQUj2tRLiJt4nSo9+WmY1xt3rRQv DFHQ== X-Gm-Message-State: AGi0PuYN/wdNiwzVlXsGKwirzpi9uCDtFh8I9ZddkYwjxV76YWDhvKNL MdDmhD+s4HpNHPKEHNh3SwEZDypPt2naIc26bW1vfoY6 X-Google-Smtp-Source: APiQypJQ5c3Ev2tg0qiF0bGzGOu0g7J+9F1uV5KieRSCIzJ0wwjaM+BAGpYtx5srR0lsDjcGkVh6rGRVbfLL1h+vWH0= X-Received: by 2002:a9d:5f09:: with SMTP id f9mr15135459oti.202.1589251581833; Mon, 11 May 2020 19:46:21 -0700 (PDT) In-Reply-To: <833686d08r.fsf@gnu.org> Received-SPF: pass client-ip=2607:f8b0:4864:20::32f; envelope-from=nicolasbertolo@gmail.com; helo=mail-ot1-x32f.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:249918 Archived-At: --000000000000fe9d9305a56a7747 Content-Type: text/plain; charset="UTF-8" > Right, I think at least on MS-Windows we need to do that. On Posix > platforms, Emacs will be able to start if there's no libgccjit (and > will crash if it attempts to call any of its functions), so it might > be a good idea to use dlopen/dlsym there as well. But on Windows it > is IMO critical. The attached patch does implement dynamic loading of libgccjit in Windows. --000000000000fe9d9305a56a7747 Content-Type: application/octet-stream; name="0001-Load-libgccjit-dynamically-in-Windows.patch" Content-Disposition: attachment; filename="0001-Load-libgccjit-dynamically-in-Windows.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ka3bchhc0 RnJvbSBlZGVhNDU0NDU5YmJmNDM0MjQxYTlmMjI5OWNiNTAzMmQ0NDEyNzIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Tmljb2w9QzM9QTFzPTIwQj1DMz1BOXJ0b2xv Pz0gPG5pY29sYXNiZXJ0b2xvQGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAxMSBNYXkgMjAyMCAyMDo0 MzowNiAtMDMwMApTdWJqZWN0OiBbUEFUQ0hdIExvYWQgbGliZ2Njaml0IGR5bmFtaWNhbGx5IGlu IFdpbmRvd3MuCgoqIGNvbmZpZ3VyZS5hYzogZG9uJ3QgYWRkIGxpbmtlciBmbGFncyBpZiBjb21w aWxpbmcgb24gV2luZG93cy4KKiBsaXNwL3Rlcm0vdzMyLXdpbi5lbDogTWFwICdnY2NqaXQgdG8g ImxpYmdjY2ppdC5kbGwiIGluCmBkeW5hbWljLWxpYnJhcnktYWxpc3RgLgoqIHNyYy9jb21wLmM6 IEFkZCBkZWNsYXJhdGlvbnMgb2YgdXNlZCBsaWJnY2NqaXQgZnVuY3Rpb25zIHVzaW5nCkRFRl9E TExfRk4uIEFkZCBjYWxscyB0byBsb2FkX2djY2ppdF9pZl9uZWNlc3NhcnkoKSB3aGVyZSBuZWNl c3NhcnkuCiogc3JjL3czMmZucy5jOiBBZGQgUWdjY2ppdCBzeW1ib2wuCi0tLQogY29uZmlndXJl LmFjICAgICAgICAgfCAgIDUgKy0KIGxpc3AvdGVybS93MzItd2luLmVsIHwgICAzICstCiBzcmMv Y29tcC5jICAgICAgICAgICB8IDMwNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBzcmMvdzMyZm5zLmMgICAgICAgICB8ICAgMSArCiA0IGZpbGVzIGNoYW5nZWQs IDMxMSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbmZpZ3Vy ZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAyM2I5NGNmNmNhLi45NzYzOWZkZmJhIDEwMDY0NAot LS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zNzkzLDcgKzM3OTMsMTAg QEAgQUNfREVGVU4KICAgICAgIFtBQ19MSU5LX0lGRUxTRShbbGliZ2Njaml0X3Ntb2tlX3Rlc3Rd LCBbXSwgW2xpYmdjY2ppdF9ub3RfZm91bmRdKV0pCiAgICAgTElCUz0kZW1hY3Nfc2F2ZV9MSUJT CiAgICAgSEFWRV9OQVRJVkVfQ09NUD15ZXMKLSAgICBMSUJHQ0NKSVRfTElCPSItbGdjY2ppdCAt bGRsIgorICAgICMgbWluZ3czMiBsb2FkcyB0aGUgbGlicmFyeSBkeW5hbWljYWxseS4KKyAgICBp ZiB0ZXN0ICIke29wc3lzfSIgIT0gIm1pbmd3MzIiOyB0aGVuCisgICAgICBMSUJHQ0NKSVRfTElC PSItbGdjY2ppdCAtbGRsIgorICAgIGZpCiAgICAgQ09NUF9PQko9ImNvbXAubyIKICAgICBBQ19E RUZJTkUoSEFWRV9OQVRJVkVfQ09NUCwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBs aWJnY2NqaXQgbGlicmFyeSAoLWxnY2NqaXQpLl0pCiBmaQpkaWZmIC0tZ2l0IGEvbGlzcC90ZXJt L3czMi13aW4uZWwgYi9saXNwL3Rlcm0vdzMyLXdpbi5lbAppbmRleCA1OTAxZTAyOTVlLi42Yjk3 MTZjYTMwIDEwMDY0NAotLS0gYS9saXNwL3Rlcm0vdzMyLXdpbi5lbAorKysgYi9saXNwL3Rlcm0v dzMyLXdpbi5lbApAQCAtMjg5LDcgKzI4OSw4IEBAIGxpYmdudXRscy12ZXJzaW9uCiAgICAgICAg JyhsaWJ4bWwyICJsaWJ4bWwyLTIuZGxsIiAibGlieG1sMi5kbGwiKQogICAgICAgICcoemxpYiAi emxpYjEuZGxsIiAibGliei0xLmRsbCIpCiAgICAgICAgJyhsY21zMiAibGlibGNtczItMi5kbGwi KQotICAgICAgICcoanNvbiAibGliamFuc3Nvbi00LmRsbCIpKSkKKyAgICAgICAnKGpzb24gImxp YmphbnNzb24tNC5kbGwiKQorICAgICAgICcoZ2Njaml0ICJsaWJnY2NqaXQuZGxsIikpKQogCiA7 OzsgbXVsdGktdHR5IHN1cHBvcnQKIChkZWZ2YXIgdzMyLWluaXRpYWxpemVkIG5pbApkaWZmIC0t Z2l0IGEvc3JjL2NvbXAuYyBiL3NyYy9jb21wLmMKaW5kZXggNjk1MjVhY2ZjMC4uZDdmZDQwODM2 NiAxMDA2NDQKLS0tIGEvc3JjL2NvbXAuYworKysgYi9zcmMvY29tcC5jCkBAIC0zNiw2ICszNiwy OTEgQEAKICNpbmNsdWRlICJibG9ja2lucHV0LmgiCiAjaW5jbHVkZSAic2hhNTEyLmgiCiAKKwwK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIER5bmFtaWMgbG9hZGluZyBv ZiBsaWJnY2NqaXQgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lm ZGVmIFdJTkRPV1NOVAorIyBpbmNsdWRlICJ3MzJjb21tb24uaCIKK2Jvb2wgZ2Njaml0X2luaXRp YWxpemVkOworCisvKiBJbiBhbHBoYWJldGljYWwgb3JkZXIgKi8KK0RFRl9ETExfRk4gKGdjY19q aXRfcnZhbHVlICosIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21faW50LAorICAgICAg ICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZ2NjX2ppdF90eXBlICpudW1lcmljX3R5cGUs IGludCB2YWx1ZSkpOworREVGX0RMTF9GTiAoZ2NjX2ppdF9ydmFsdWUgKiwgZ2NjX2ppdF9sdmFs dWVfYXNfcnZhbHVlLAorICAgICAgICAgICAgKGdjY19qaXRfbHZhbHVlICpsdmFsdWUpKTsKK0RF Rl9ETExfRk4gKGdjY19qaXRfcnZhbHVlICosIGdjY19qaXRfcnZhbHVlX2FjY2Vzc19maWVsZCwK KyAgICAgICAgICAgIChnY2Nfaml0X3J2YWx1ZSAqc3RydWN0X29yX3VuaW9uLCBnY2Nfaml0X2xv Y2F0aW9uICpsb2MsCisgICAgICAgICAgICAgZ2NjX2ppdF9maWVsZCAqZmllbGQpKTsKK0RFRl9E TExfRk4gKHZvaWQsIGdjY19qaXRfYmxvY2tfYWRkX2NvbW1lbnQsCisgICAgICAgICAgICAoZ2Nj X2ppdF9ibG9jayAqYmxvY2ssIGdjY19qaXRfbG9jYXRpb24gKmxvYywgY29uc3QgY2hhciAqdGV4 dCkpOworREVGX0RMTF9GTiAodm9pZCwgZ2NjX2ppdF9jb250ZXh0X3JlbGVhc2UsIChnY2Nfaml0 X2NvbnRleHQgKmN0eHQpKTsKK0RFRl9ETExfRk4gKGNvbnN0IGNoYXIgKiwgZ2NjX2ppdF9jb250 ZXh0X2dldF9maXJzdF9lcnJvciwKKyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQp KTsKK0RFRl9ETExfRk4gKGdjY19qaXRfYmxvY2sgKiwgZ2NjX2ppdF9mdW5jdGlvbl9uZXdfYmxv Y2ssCisgICAgICAgICAgICAoZ2NjX2ppdF9mdW5jdGlvbiAqZnVuYywgY29uc3QgY2hhciAqbmFt ZSkpOworREVGX0RMTF9GTiAoZ2NjX2ppdF9jb250ZXh0ICosIGdjY19qaXRfY29udGV4dF9hY3F1 aXJlLCAodm9pZCkpOworREVGX0RMTF9GTiAoZ2NjX2ppdF9maWVsZCAqLCBnY2Nfaml0X2NvbnRl eHRfbmV3X2ZpZWxkLAorICAgICAgICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZ2NjX2pp dF9sb2NhdGlvbiAqbG9jLCBnY2Nfaml0X3R5cGUgKnR5cGUsCisgICAgICAgICAgICAgY29uc3Qg Y2hhciAqbmFtZSkpOworREVGX0RMTF9GTiAoZ2NjX2ppdF9mdW5jdGlvbiAqLCBnY2Nfaml0X2Nv bnRleHRfZ2V0X2J1aWx0aW5fZnVuY3Rpb24sCisgICAgICAgICAgICAoZ2NjX2ppdF9jb250ZXh0 ICpjdHh0LCBjb25zdCBjaGFyICpuYW1lKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X2Z1bmN0aW9u ICosIGdjY19qaXRfY29udGV4dF9uZXdfZnVuY3Rpb24sCisgICAgICAgICAgICAoZ2NjX2ppdF9j b250ZXh0ICpjdHh0LCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsCisgICAgICAgICAgICAgZW51bSBn Y2Nfaml0X2Z1bmN0aW9uX2tpbmQga2luZCwgZ2NjX2ppdF90eXBlICpyZXR1cm5fdHlwZSwKKyAg ICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCBpbnQgbnVtX3BhcmFtcywgZ2NjX2ppdF9wYXJh bSAqKnBhcmFtcywKKyAgICAgICAgICAgICBpbnQgaXNfdmFyaWFkaWMpKTsKK0RFRl9ETExfRk4g KGdjY19qaXRfbHZhbHVlICosIGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlfYWNjZXNzLAorICAg ICAgICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jLCBn Y2Nfaml0X3J2YWx1ZSAqcHRyLAorICAgICAgICAgICAgIGdjY19qaXRfcnZhbHVlICppbmRleCkp OworREVGX0RMTF9GTiAoZ2NjX2ppdF9sdmFsdWUgKiwgZ2NjX2ppdF9jb250ZXh0X25ld19nbG9i YWwsCisgICAgICAgICAgICAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X2xvY2F0aW9u ICpsb2MsCisgICAgICAgICAgICAgZW51bSBnY2Nfaml0X2dsb2JhbF9raW5kIGtpbmQsIGdjY19q aXRfdHlwZSAqdHlwZSwKKyAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKSk7CitERUZfRExM X0ZOIChnY2Nfaml0X2x2YWx1ZSAqLCBnY2Nfaml0X2Z1bmN0aW9uX25ld19sb2NhbCwKKyAgICAg ICAgICAgIChnY2Nfaml0X2Z1bmN0aW9uICpmdW5jLCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsIGdj Y19qaXRfdHlwZSAqdHlwZSwKKyAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKSk7CitERUZf RExMX0ZOIChnY2Nfaml0X2x2YWx1ZSAqLCBnY2Nfaml0X2x2YWx1ZV9hY2Nlc3NfZmllbGQsCisg ICAgICAgICAgICAoZ2NjX2ppdF9sdmFsdWUgKnN0cnVjdF9vcl91bmlvbiwgZ2NjX2ppdF9sb2Nh dGlvbiAqbG9jLAorICAgICAgICAgICAgIGdjY19qaXRfZmllbGQgKmZpZWxkKSk7CitERUZfRExM X0ZOIChnY2Nfaml0X2x2YWx1ZSAqLCBnY2Nfaml0X3BhcmFtX2FzX2x2YWx1ZSwgKGdjY19qaXRf cGFyYW0gKnBhcmFtKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X2x2YWx1ZSAqLCBnY2Nfaml0X3J2 YWx1ZV9kZXJlZmVyZW5jZSwKKyAgICAgICAgICAgIChnY2Nfaml0X3J2YWx1ZSAqcnZhbHVlLCBn Y2Nfaml0X2xvY2F0aW9uICpsb2MpKTsKK0RFRl9ETExfRk4gKGdjY19qaXRfbHZhbHVlICosIGdj Y19qaXRfcnZhbHVlX2RlcmVmZXJlbmNlX2ZpZWxkLAorICAgICAgICAgICAgKGdjY19qaXRfcnZh bHVlICpwdHIsIGdjY19qaXRfbG9jYXRpb24gKmxvYywgZ2NjX2ppdF9maWVsZCAqZmllbGQpKTsK K0RFRl9ETExfRk4gKGdjY19qaXRfcGFyYW0gKiwgZ2NjX2ppdF9jb250ZXh0X25ld19wYXJhbSwK KyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfbG9jYXRpb24gKmxv YywgZ2NjX2ppdF90eXBlICp0eXBlLAorICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpKTsK K0RFRl9ETExfRk4gKGdjY19qaXRfcGFyYW0gKiwgZ2NjX2ppdF9mdW5jdGlvbl9nZXRfcGFyYW0s CisgICAgICAgICAgICAoZ2NjX2ppdF9mdW5jdGlvbiAqZnVuYywgaW50IGluZGV4KSk7CitERUZf RExMX0ZOIChnY2Nfaml0X3J2YWx1ZSAqLCBnY2Nfaml0X2NvbnRleHRfbmV3X2JpbmFyeV9vcCwK KyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfbG9jYXRpb24gKmxv YywKKyAgICAgICAgICAgICBlbnVtIGdjY19qaXRfYmluYXJ5X29wIG9wLCBnY2Nfaml0X3R5cGUg KnJlc3VsdF90eXBlLAorICAgICAgICAgICAgIGdjY19qaXRfcnZhbHVlICphLCBnY2Nfaml0X3J2 YWx1ZSAqYikpOworREVGX0RMTF9GTiAoZ2NjX2ppdF9ydmFsdWUgKiwgZ2NjX2ppdF9jb250ZXh0 X25ld19jYWxsLAorICAgICAgICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZ2NjX2ppdF9s b2NhdGlvbiAqbG9jLAorICAgICAgICAgICAgIGdjY19qaXRfZnVuY3Rpb24gKmZ1bmMsIGludCBu dW1hcmdzICwgZ2NjX2ppdF9ydmFsdWUgKiphcmdzKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X3J2 YWx1ZSAqLCBnY2Nfaml0X2NvbnRleHRfbmV3X2NhbGxfdGhyb3VnaF9wdHIsCisgICAgICAgICAg ICAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsCisgICAgICAg ICAgICAgZ2NjX2ppdF9ydmFsdWUgKmZuX3B0ciwgaW50IG51bWFyZ3MsIGdjY19qaXRfcnZhbHVl ICoqYXJncykpOworREVGX0RMTF9GTiAoZ2NjX2ppdF9ydmFsdWUgKiwgZ2NjX2ppdF9jb250ZXh0 X25ld19jb21wYXJpc29uLAorICAgICAgICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZ2Nj X2ppdF9sb2NhdGlvbiAqbG9jLAorICAgICAgICAgICAgIGVudW0gZ2NjX2ppdF9jb21wYXJpc29u IG9wLCBnY2Nfaml0X3J2YWx1ZSAqYSwgZ2NjX2ppdF9ydmFsdWUgKmIpKTsKK0RFRl9ETExfRk4g KGdjY19qaXRfcnZhbHVlICosIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21fbG9uZywK KyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfdHlwZSAqbnVtZXJp Y190eXBlLCBsb25nIHZhbHVlKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X3J2YWx1ZSAqLCBnY2Nf aml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX3B0ciwKKyAgICAgICAgICAgIChnY2Nfaml0X2Nv bnRleHQgKmN0eHQsIGdjY19qaXRfdHlwZSAqcG9pbnRlcl90eXBlLCB2b2lkICp2YWx1ZSkpOwor REVGX0RMTF9GTiAoZ2NjX2ppdF9ydmFsdWUgKiwgZ2NjX2ppdF9jb250ZXh0X25ld191bmFyeV9v cCwKKyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfbG9jYXRpb24g KmxvYywKKyAgICAgICAgICAgICBlbnVtIGdjY19qaXRfdW5hcnlfb3Agb3AsIGdjY19qaXRfdHlw ZSAqcmVzdWx0X3R5cGUsCisgICAgICAgICAgICAgZ2NjX2ppdF9ydmFsdWUgKnJ2YWx1ZSkpOwor REVGX0RMTF9GTiAoZ2NjX2ppdF9ydmFsdWUgKiwgZ2NjX2ppdF9sdmFsdWVfZ2V0X2FkZHJlc3Ms CisgICAgICAgICAgICAoZ2NjX2ppdF9sdmFsdWUgKmx2YWx1ZSwgZ2NjX2ppdF9sb2NhdGlvbiAq bG9jKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X3J2YWx1ZSAqLCBnY2Nfaml0X3BhcmFtX2FzX3J2 YWx1ZSwgKGdjY19qaXRfcGFyYW0gKnBhcmFtKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X3N0cnVj dCAqLCBnY2Nfaml0X2NvbnRleHRfbmV3X29wYXF1ZV9zdHJ1Y3QsCisgICAgICAgICAgICAoZ2Nj X2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsIGNvbnN0IGNoYXIgKm5h bWUpKTsKK0RFRl9ETExfRk4gKGdjY19qaXRfc3RydWN0ICosIGdjY19qaXRfY29udGV4dF9uZXdf c3RydWN0X3R5cGUsCisgICAgICAgICAgICAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0 X2xvY2F0aW9uICpsb2MsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgaW50IG51bV9m aWVsZHMsIGdjY19qaXRfZmllbGQgKipmaWVsZHMpKTsKK0RFRl9ETExfRk4gKGdjY19qaXRfdHlw ZSAqLCBnY2Nfaml0X2NvbnRleHRfZ2V0X2ludF90eXBlLAorICAgICAgICAgICAgKGdjY19qaXRf Y29udGV4dCAqY3R4dCwgaW50IG51bV9ieXRlcywgaW50IGlzX3NpZ25lZCkpOworREVGX0RMTF9G TiAoZ2NjX2ppdF90eXBlICosIGdjY19qaXRfY29udGV4dF9nZXRfdHlwZSwKKyAgICAgICAgICAg IChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGVudW0gZ2NjX2ppdF90eXBlcyB0eXBlXykpOworREVG X0RMTF9GTiAoZ2NjX2ppdF90eXBlICosIGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlfdHlwZSwK KyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfbG9jYXRpb24gKmxv YywKKyAgICAgICAgICAgICBnY2Nfaml0X3R5cGUgKmVsZW1lbnRfdHlwZSwgaW50IG51bV9lbGVt ZW50cykpOworREVGX0RMTF9GTiAoZ2NjX2ppdF90eXBlICosIGdjY19qaXRfY29udGV4dF9uZXdf ZnVuY3Rpb25fcHRyX3R5cGUsCisgICAgICAgICAgICAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBn Y2Nfaml0X2xvY2F0aW9uICpsb2MsCisgICAgICAgICAgICAgZ2NjX2ppdF90eXBlICpyZXR1cm5f dHlwZSwgaW50IG51bV9wYXJhbXMsCisgICAgICAgICAgICAgZ2NjX2ppdF90eXBlICoqcGFyYW1f dHlwZXMsIGludCBpc192YXJpYWRpYykpOworREVGX0RMTF9GTiAoZ2NjX2ppdF90eXBlICosIGdj Y19qaXRfY29udGV4dF9uZXdfdW5pb25fdHlwZSwKKyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRl eHQgKmN0eHQsIGdjY19qaXRfbG9jYXRpb24gKmxvYywgY29uc3QgY2hhciAqbmFtZSwKKyAgICAg ICAgICAgICBpbnQgbnVtX2ZpZWxkcywgZ2NjX2ppdF9maWVsZCAqKmZpZWxkcykpOworREVGX0RM TF9GTiAoZ2NjX2ppdF90eXBlICosIGdjY19qaXRfcnZhbHVlX2dldF90eXBlLCAoZ2NjX2ppdF9y dmFsdWUgKnJ2YWx1ZSkpOworREVGX0RMTF9GTiAoZ2NjX2ppdF90eXBlICosIGdjY19qaXRfc3Ry dWN0X2FzX3R5cGUsCisgICAgICAgICAgICAoZ2NjX2ppdF9zdHJ1Y3QgKnN0cnVjdF90eXBlKSk7 CitERUZfRExMX0ZOIChnY2Nfaml0X3R5cGUgKiwgZ2NjX2ppdF90eXBlX2dldF9wb2ludGVyLCAo Z2NjX2ppdF90eXBlICp0eXBlKSk7CitERUZfRExMX0ZOICh2b2lkLCBnY2Nfaml0X2Jsb2NrX2Fk ZF9hc3NpZ25tZW50LAorICAgICAgICAgICAgKGdjY19qaXRfYmxvY2sgKmJsb2NrLCBnY2Nfaml0 X2xvY2F0aW9uICpsb2MsIGdjY19qaXRfbHZhbHVlICpsdmFsdWUsCisgICAgICAgICAgICAgZ2Nj X2ppdF9ydmFsdWUgKnJ2YWx1ZSkpOworREVGX0RMTF9GTiAodm9pZCwgZ2NjX2ppdF9ibG9ja19h ZGRfZXZhbCwKKyAgICAgICAgICAgIChnY2Nfaml0X2Jsb2NrICpibG9jaywgZ2NjX2ppdF9sb2Nh dGlvbiAqbG9jLAorICAgICAgICAgICAgIGdjY19qaXRfcnZhbHVlICpydmFsdWUpKTsKK0RFRl9E TExfRk4gKHZvaWQsIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhfY29uZGl0aW9uYWwsCisgICAgICAg ICAgICAoZ2NjX2ppdF9ibG9jayAqYmxvY2ssIGdjY19qaXRfbG9jYXRpb24gKmxvYywKKyAgICAg ICAgICAgICBnY2Nfaml0X3J2YWx1ZSAqYm9vbHZhbCwgZ2NjX2ppdF9ibG9jayAqb25fdHJ1ZSwK KyAgICAgICAgICAgICBnY2Nfaml0X2Jsb2NrICpvbl9mYWxzZSkpOworREVGX0RMTF9GTiAodm9p ZCwgZ2NjX2ppdF9ibG9ja19lbmRfd2l0aF9qdW1wLAorICAgICAgICAgICAgKGdjY19qaXRfYmxv Y2sgKmJsb2NrLCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsCisgICAgICAgICAgICAgZ2NjX2ppdF9i bG9jayAqdGFyZ2V0KSk7CitERUZfRExMX0ZOICh2b2lkLCBnY2Nfaml0X2Jsb2NrX2VuZF93aXRo X3JldHVybiwKKyAgICAgICAgICAgIChnY2Nfaml0X2Jsb2NrICpibG9jaywgZ2NjX2ppdF9sb2Nh dGlvbiAqbG9jLAorICAgICAgICAgICAgIGdjY19qaXRfcnZhbHVlICpydmFsdWUpKTsKK0RFRl9E TExfRk4gKHZvaWQsIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhfdm9pZF9yZXR1cm4sCisgICAgICAg ICAgICAoZ2NjX2ppdF9ibG9jayAqYmxvY2ssIGdjY19qaXRfbG9jYXRpb24gKmxvYykpOworREVG X0RMTF9GTiAodm9pZCwgZ2NjX2ppdF9jb250ZXh0X2NvbXBpbGVfdG9fZmlsZSwKKyAgICAgICAg ICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGVudW0gZ2NjX2ppdF9vdXRwdXRfa2luZCBvdXRw dXRfa2luZCwKKyAgICAgICAgICAgICBjb25zdCBjaGFyICpvdXRwdXRfcGF0aCkpOworREVGX0RM TF9GTiAodm9pZCwgZ2NjX2ppdF9jb250ZXh0X2R1bXBfcmVwcm9kdWNlcl90b19maWxlLAorICAg ICAgICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgY29uc3QgY2hhciAqcGF0aCkpOworREVG X0RMTF9GTiAodm9pZCwgZ2NjX2ppdF9jb250ZXh0X2R1bXBfdG9fZmlsZSwKKyAgICAgICAgICAg IChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGNvbnN0IGNoYXIgKnBhdGgsIGludCB1cGRhdGVfbG9j YXRpb25zKSk7CitERUZfRExMX0ZOICh2b2lkLCBnY2Nfaml0X2NvbnRleHRfc2V0X2Jvb2xfb3B0 aW9uLAorICAgICAgICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZW51bSBnY2Nfaml0X2Jv b2xfb3B0aW9uIG9wdCwgaW50IHZhbHVlKSk7CitERUZfRExMX0ZOICh2b2lkLCBnY2Nfaml0X2Nv bnRleHRfc2V0X2ludF9vcHRpb24sCisgICAgICAgICAgICAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0 LCBlbnVtIGdjY19qaXRfaW50X29wdGlvbiBvcHQsIGludCB2YWx1ZSkpOworREVGX0RMTF9GTiAo dm9pZCwgZ2NjX2ppdF9jb250ZXh0X3NldF9sb2dmaWxlLAorICAgICAgICAgICAgKGdjY19qaXRf Y29udGV4dCAqY3R4dCwgRklMRSAqbG9nZmlsZSwgaW50IGZsYWdzLCBpbnQgdmVyYm9zaXR5KSk7 CitERUZfRExMX0ZOICh2b2lkLCBnY2Nfaml0X3N0cnVjdF9zZXRfZmllbGRzLAorICAgICAgICAg ICAgKGdjY19qaXRfc3RydWN0ICpzdHJ1Y3RfdHlwZSwgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jLCBp bnQgbnVtX2ZpZWxkcywKKyAgICAgICAgICAgICBnY2Nfaml0X2ZpZWxkICoqZmllbGRzKSk7CisK K3N0YXRpYyBib29sCitpbml0X2djY2ppdF9mdW5jdGlvbnModm9pZCkKK3sKKyAgSE1PRFVMRSBs aWJyYXJ5OworCisgIGlmICghKGxpYnJhcnkgPSB3MzJfZGVsYXllZF9sb2FkIChRZ2Njaml0KSkp CisgICAgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAvKiBJbiBhbHBoYWJldGlj YWwgb3JkZXIgKi8KKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9ibG9ja19hZGRfYXNz aWdubWVudCk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfYmxvY2tfYWRkX2NvbW1l bnQpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2Jsb2NrX2FkZF9ldmFsKTsKKyAg TE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9ibG9ja19lbmRfd2l0aF9jb25kaXRpb25hbCk7 CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhfanVtcCk7Cisg IExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhfcmV0dXJuKTsKKyAg TE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9ibG9ja19lbmRfd2l0aF92b2lkX3JldHVybik7 CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9hY3F1aXJlKTsKKyAgTE9B RF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X2NvbXBpbGVfdG9fZmlsZSk7CisgIExP QURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9kdW1wX3JlcHJvZHVjZXJfdG9fZmls ZSk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9kdW1wX3RvX2ZpbGUp OworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfZ2V0X2J1aWx0aW5fZnVu Y3Rpb24pOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfZ2V0X2ZpcnN0 X2Vycm9yKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X2dldF9pbnRf dHlwZSk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9nZXRfdHlwZSk7 CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlfYWNjZXNz KTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X25ld19hcnJheV90eXBl KTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X25ld19iaW5hcnlfb3Ap OworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3X2NhbGwpOworICBM T0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3X2NhbGxfdGhyb3VnaF9wdHIp OworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3X2NvbXBhcmlzb24p OworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3X2ZpZWxkKTsKKyAg TE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X25ld19mdW5jdGlvbik7CisgIExP QURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9uZXdfZnVuY3Rpb25fcHRyX3R5cGUp OworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3X2dsb2JhbCk7Cisg IExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9uZXdfb3BhcXVlX3N0cnVjdCk7 CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9uZXdfcGFyYW0pOworICBM T0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2ludCk7 CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21f bG9uZyk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVl X2Zyb21fcHRyKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X25ld19z dHJ1Y3RfdHlwZSk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9uZXdf dW5hcnlfb3ApOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3X3Vu aW9uX3R5cGUpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfcmVsZWFz ZSk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9zZXRfYm9vbF9vcHRp b24pOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfc2V0X2ludF9vcHRp b24pOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfc2V0X2xvZ2ZpbGUp OworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2Z1bmN0aW9uX2dldF9wYXJhbSk7Cisg IExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfZnVuY3Rpb25fbmV3X2Jsb2NrKTsKKyAgTE9B RF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9mdW5jdGlvbl9uZXdfbG9jYWwpOworICBMT0FEX0RM TF9GTihsaWJyYXJ5LCBnY2Nfaml0X2x2YWx1ZV9hY2Nlc3NfZmllbGQpOworICBMT0FEX0RMTF9G TihsaWJyYXJ5LCBnY2Nfaml0X2x2YWx1ZV9hc19ydmFsdWUpOworICBMT0FEX0RMTF9GTihsaWJy YXJ5LCBnY2Nfaml0X2x2YWx1ZV9nZXRfYWRkcmVzcyk7CisgIExPQURfRExMX0ZOKGxpYnJhcnks IGdjY19qaXRfcGFyYW1fYXNfbHZhbHVlKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2pp dF9wYXJhbV9hc19ydmFsdWUpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X3J2YWx1 ZV9hY2Nlc3NfZmllbGQpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X3J2YWx1ZV9k ZXJlZmVyZW5jZSk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfcnZhbHVlX2RlcmVm ZXJlbmNlX2ZpZWxkKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9ydmFsdWVfZ2V0 X3R5cGUpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X3N0cnVjdF9hc190eXBlKTsK KyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9zdHJ1Y3Rfc2V0X2ZpZWxkcyk7CisgIExP QURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfdHlwZV9nZXRfcG9pbnRlcik7CisKKyAgcmV0dXJu IHRydWU7Cit9CisKKy8qIEluIGFscGhhYmV0aWNhbCBvcmRlciAqLworI2RlZmluZSBnY2Nfaml0 X2Jsb2NrX2FkZF9hc3NpZ25tZW50IGZuX2djY19qaXRfYmxvY2tfYWRkX2Fzc2lnbm1lbnQKKyNk ZWZpbmUgZ2NjX2ppdF9ibG9ja19hZGRfY29tbWVudCBmbl9nY2Nfaml0X2Jsb2NrX2FkZF9jb21t ZW50CisjZGVmaW5lIGdjY19qaXRfYmxvY2tfYWRkX2V2YWwgZm5fZ2NjX2ppdF9ibG9ja19hZGRf ZXZhbAorI2RlZmluZSBnY2Nfaml0X2Jsb2NrX2VuZF93aXRoX2NvbmRpdGlvbmFsIGZuX2djY19q aXRfYmxvY2tfZW5kX3dpdGhfY29uZGl0aW9uYWwKKyNkZWZpbmUgZ2NjX2ppdF9ibG9ja19lbmRf d2l0aF9qdW1wIGZuX2djY19qaXRfYmxvY2tfZW5kX3dpdGhfanVtcAorI2RlZmluZSBnY2Nfaml0 X2Jsb2NrX2VuZF93aXRoX3JldHVybiBmbl9nY2Nfaml0X2Jsb2NrX2VuZF93aXRoX3JldHVybgor I2RlZmluZSBnY2Nfaml0X2Jsb2NrX2VuZF93aXRoX3ZvaWRfcmV0dXJuIGZuX2djY19qaXRfYmxv Y2tfZW5kX3dpdGhfdm9pZF9yZXR1cm4KKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X2FjcXVpcmUg Zm5fZ2NjX2ppdF9jb250ZXh0X2FjcXVpcmUKKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X2NvbXBp bGVfdG9fZmlsZSBmbl9nY2Nfaml0X2NvbnRleHRfY29tcGlsZV90b19maWxlCisjZGVmaW5lIGdj Y19qaXRfY29udGV4dF9kdW1wX3JlcHJvZHVjZXJfdG9fZmlsZSBmbl9nY2Nfaml0X2NvbnRleHRf ZHVtcF9yZXByb2R1Y2VyX3RvX2ZpbGUKKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X2R1bXBfdG9f ZmlsZSBmbl9nY2Nfaml0X2NvbnRleHRfZHVtcF90b19maWxlCisjZGVmaW5lIGdjY19qaXRfY29u dGV4dF9nZXRfYnVpbHRpbl9mdW5jdGlvbiBmbl9nY2Nfaml0X2NvbnRleHRfZ2V0X2J1aWx0aW5f ZnVuY3Rpb24KKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X2dldF9maXJzdF9lcnJvciBmbl9nY2Nf aml0X2NvbnRleHRfZ2V0X2ZpcnN0X2Vycm9yCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9nZXRf aW50X3R5cGUgZm5fZ2NjX2ppdF9jb250ZXh0X2dldF9pbnRfdHlwZQorI2RlZmluZSBnY2Nfaml0 X2NvbnRleHRfZ2V0X3R5cGUgZm5fZ2NjX2ppdF9jb250ZXh0X2dldF90eXBlCisjZGVmaW5lIGdj Y19qaXRfY29udGV4dF9uZXdfYXJyYXlfYWNjZXNzIGZuX2djY19qaXRfY29udGV4dF9uZXdfYXJy YXlfYWNjZXNzCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlfdHlwZSBmbl9nY2Nf aml0X2NvbnRleHRfbmV3X2FycmF5X3R5cGUKKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X25ld19i aW5hcnlfb3AgZm5fZ2NjX2ppdF9jb250ZXh0X25ld19iaW5hcnlfb3AKKyNkZWZpbmUgZ2NjX2pp dF9jb250ZXh0X25ld19jYWxsIGZuX2djY19qaXRfY29udGV4dF9uZXdfY2FsbAorI2RlZmluZSBn Y2Nfaml0X2NvbnRleHRfbmV3X2NhbGxfdGhyb3VnaF9wdHIgZm5fZ2NjX2ppdF9jb250ZXh0X25l d19jYWxsX3Rocm91Z2hfcHRyCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9uZXdfY29tcGFyaXNv biBmbl9nY2Nfaml0X2NvbnRleHRfbmV3X2NvbXBhcmlzb24KKyNkZWZpbmUgZ2NjX2ppdF9jb250 ZXh0X25ld19maWVsZCBmbl9nY2Nfaml0X2NvbnRleHRfbmV3X2ZpZWxkCisjZGVmaW5lIGdjY19q aXRfY29udGV4dF9uZXdfZnVuY3Rpb24gZm5fZ2NjX2ppdF9jb250ZXh0X25ld19mdW5jdGlvbgor I2RlZmluZSBnY2Nfaml0X2NvbnRleHRfbmV3X2Z1bmN0aW9uX3B0cl90eXBlIGZuX2djY19qaXRf Y29udGV4dF9uZXdfZnVuY3Rpb25fcHRyX3R5cGUKKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X25l d19nbG9iYWwgZm5fZ2NjX2ppdF9jb250ZXh0X25ld19nbG9iYWwKKyNkZWZpbmUgZ2NjX2ppdF9j b250ZXh0X25ld19vcGFxdWVfc3RydWN0IGZuX2djY19qaXRfY29udGV4dF9uZXdfb3BhcXVlX3N0 cnVjdAorI2RlZmluZSBnY2Nfaml0X2NvbnRleHRfbmV3X3BhcmFtIGZuX2djY19qaXRfY29udGV4 dF9uZXdfcGFyYW0KKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9pbnQg Zm5fZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9pbnQKKyNkZWZpbmUgZ2NjX2ppdF9j b250ZXh0X25ld19ydmFsdWVfZnJvbV9sb25nIGZuX2djY19qaXRfY29udGV4dF9uZXdfcnZhbHVl X2Zyb21fbG9uZworI2RlZmluZSBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX3B0ciBm bl9nY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX3B0cgorI2RlZmluZSBnY2Nfaml0X2Nv bnRleHRfbmV3X3N0cnVjdF90eXBlIGZuX2djY19qaXRfY29udGV4dF9uZXdfc3RydWN0X3R5cGUK KyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X25ld191bmFyeV9vcCBmbl9nY2Nfaml0X2NvbnRleHRf bmV3X3VuYXJ5X29wCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9uZXdfdW5pb25fdHlwZSBmbl9n Y2Nfaml0X2NvbnRleHRfbmV3X3VuaW9uX3R5cGUKKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X3Jl bGVhc2UgZm5fZ2NjX2ppdF9jb250ZXh0X3JlbGVhc2UKKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0 X3NldF9ib29sX29wdGlvbiBmbl9nY2Nfaml0X2NvbnRleHRfc2V0X2Jvb2xfb3B0aW9uCisjZGVm aW5lIGdjY19qaXRfY29udGV4dF9zZXRfaW50X29wdGlvbiBmbl9nY2Nfaml0X2NvbnRleHRfc2V0 X2ludF9vcHRpb24KKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X3NldF9sb2dmaWxlIGZuX2djY19q aXRfY29udGV4dF9zZXRfbG9nZmlsZQorI2RlZmluZSBnY2Nfaml0X2Z1bmN0aW9uX2dldF9wYXJh bSBmbl9nY2Nfaml0X2Z1bmN0aW9uX2dldF9wYXJhbQorI2RlZmluZSBnY2Nfaml0X2Z1bmN0aW9u X25ld19ibG9jayBmbl9nY2Nfaml0X2Z1bmN0aW9uX25ld19ibG9jaworI2RlZmluZSBnY2Nfaml0 X2Z1bmN0aW9uX25ld19sb2NhbCBmbl9nY2Nfaml0X2Z1bmN0aW9uX25ld19sb2NhbAorI2RlZmlu ZSBnY2Nfaml0X2x2YWx1ZV9hY2Nlc3NfZmllbGQgZm5fZ2NjX2ppdF9sdmFsdWVfYWNjZXNzX2Zp ZWxkCisjZGVmaW5lIGdjY19qaXRfbHZhbHVlX2FzX3J2YWx1ZSBmbl9nY2Nfaml0X2x2YWx1ZV9h c19ydmFsdWUKKyNkZWZpbmUgZ2NjX2ppdF9sdmFsdWVfZ2V0X2FkZHJlc3MgZm5fZ2NjX2ppdF9s dmFsdWVfZ2V0X2FkZHJlc3MKKyNkZWZpbmUgZ2NjX2ppdF9wYXJhbV9hc19sdmFsdWUgZm5fZ2Nj X2ppdF9wYXJhbV9hc19sdmFsdWUKKyNkZWZpbmUgZ2NjX2ppdF9wYXJhbV9hc19ydmFsdWUgZm5f Z2NjX2ppdF9wYXJhbV9hc19ydmFsdWUKKyNkZWZpbmUgZ2NjX2ppdF9ydmFsdWVfYWNjZXNzX2Zp ZWxkIGZuX2djY19qaXRfcnZhbHVlX2FjY2Vzc19maWVsZAorI2RlZmluZSBnY2Nfaml0X3J2YWx1 ZV9kZXJlZmVyZW5jZSBmbl9nY2Nfaml0X3J2YWx1ZV9kZXJlZmVyZW5jZQorI2RlZmluZSBnY2Nf aml0X3J2YWx1ZV9kZXJlZmVyZW5jZV9maWVsZCBmbl9nY2Nfaml0X3J2YWx1ZV9kZXJlZmVyZW5j ZV9maWVsZAorI2RlZmluZSBnY2Nfaml0X3J2YWx1ZV9nZXRfdHlwZSBmbl9nY2Nfaml0X3J2YWx1 ZV9nZXRfdHlwZQorI2RlZmluZSBnY2Nfaml0X3N0cnVjdF9hc190eXBlIGZuX2djY19qaXRfc3Ry dWN0X2FzX3R5cGUKKyNkZWZpbmUgZ2NjX2ppdF9zdHJ1Y3Rfc2V0X2ZpZWxkcyBmbl9nY2Nfaml0 X3N0cnVjdF9zZXRfZmllbGRzCisjZGVmaW5lIGdjY19qaXRfdHlwZV9nZXRfcG9pbnRlciBmbl9n Y2Nfaml0X3R5cGVfZ2V0X3BvaW50ZXIKKworI2VuZGlmCisKK3N0YXRpYyBib29sCitsb2FkX2dj Y2ppdF9pZl9uZWNlc3NhcnkoYm9vbCBtYW5kYXRvcnkpCit7CisjaWZkZWYgV0lORE9XU05UCisg IGlmICghZ2Njaml0X2luaXRpYWxpemVkKQorICAgIHsKKyAgICAgIExpc3BfT2JqZWN0IHN0YXR1 czsKKyAgICAgIGdjY2ppdF9pbml0aWFsaXplZCA9IGluaXRfZ2Njaml0X2Z1bmN0aW9ucyAoKTsK KyAgICAgIHN0YXR1cyA9IGdjY2ppdF9pbml0aWFsaXplZCA/IFF0IDogUW5pbDsKKyAgICAgIFZs aWJyYXJ5X2NhY2hlID0gRmNvbnMgKEZjb25zIChRanNvbiwgc3RhdHVzKSwgVmxpYnJhcnlfY2Fj aGUpOworICAgIH0KKworICBpZiAobWFuZGF0b3J5ICYmICFnY2NqaXRfaW5pdGlhbGl6ZWQpCisg ICAgeHNpZ25hbDEoUW5hdGl2ZV9jb21waWxlcl9lcnJvciwgYnVpbGRfc3RyaW5nKCJsaWJnY2Nq aXQgbm90IGZvdW5kIikpOworCisgIHJldHVybiBnY2NqaXRfaW5pdGlhbGl6ZWQ7CisjZWxzZQor ICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorfQorCisMCiAvKiBDIHN5bWJvbHMgZW1pdHRlZCBmb3Ig dGhlIGxvYWQgcmVsb2NhdGlvbiBtZWNoYW5pc20uICAqLwogI2RlZmluZSBDVVJSRU5UX1RIUkVB RF9SRUxPQ19TWU0gImN1cnJlbnRfdGhyZWFkX3JlbG9jIgogI2RlZmluZSBQVVJFX1BUUl9TWU0g InB1cmVfcHRyIgpAQCAtMzMyOCw2ICszNjEzLDggQEAgREVGVU4gKCJjb21wLS1pbml0LWN0eHQi LCBGY29tcF9faW5pdF9jdHh0LCBTY29tcF9faW5pdF9jdHh0LAogICAgICAgIGRvYzogLyogSW5p dGlhbGl6ZSB0aGUgbmF0aXZlIGNvbXBpbGVyIGNvbnRleHQuIFJldHVybiB0IG9uIHN1Y2Nlc3Mu ICAqLykKICAgICAgKHZvaWQpCiB7CisgIGxvYWRfZ2Njaml0X2lmX25lY2Vzc2FyeSh0cnVlKTsK KwogICBpZiAoY29tcC5jdHh0KQogICAgIHsKICAgICAgIHhzaWduYWwxIChRbmF0aXZlX2ljZSwK QEAgLTM0NzQsNiArMzc2MSw4IEBAIERFRlVOICgiY29tcC0tcmVsZWFzZS1jdHh0IiwgRmNvbXBf X3JlbGVhc2VfY3R4dCwgU2NvbXBfX3JlbGVhc2VfY3R4dCwKICAgICAgICBkb2M6IC8qIFJlbGVh c2UgdGhlIG5hdGl2ZSBjb21waWxlciBjb250ZXh0LiAgKi8pCiAgICAgICh2b2lkKQogeworICBs b2FkX2djY2ppdF9pZl9uZWNlc3NhcnkodHJ1ZSk7CisKICAgaWYgKGNvbXAuY3R4dCkKICAgICBn Y2Nfaml0X2NvbnRleHRfcmVsZWFzZSAoY29tcC5jdHh0KTsKIApAQCAtMzQ5MCw2ICszNzc5LDgg QEAgREVGVU4gKCJjb21wLS1jb21waWxlLWN0eHQtdG8tZmlsZSIsIEZjb21wX19jb21waWxlX2N0 eHRfdG9fZmlsZSwKICAgICAgICBkb2M6IC8qIENvbXBpbGUgYXMgbmF0aXZlIGNvZGUgdGhlIGN1 cnJlbnQgY29udGV4dCB0byBmaWxlLiAgKi8pCiAgICAgIChMaXNwX09iamVjdCBiYXNlX25hbWUp CiB7CisgIGxvYWRfZ2Njaml0X2lmX25lY2Vzc2FyeSh0cnVlKTsKKwogICBDSEVDS19TVFJJTkcg KGJhc2VfbmFtZSk7CiAKICAgZ2NjX2ppdF9jb250ZXh0X3NldF9pbnRfb3B0aW9uIChjb21wLmN0 eHQsCkBAIC0zNjYwLDYgKzM5NTEsOSBAQCBtYXliZV9kZWZlcl9uYXRpdmVfY29tcGlsYXRpb24g KExpc3BfT2JqZWN0IGZ1bmN0aW9uX25hbWUsCiAgICAgICBmZmx1c2ggKGYpOwogICAgIH0KICNl bmRpZgorICBpZiAoIWxvYWRfZ2Njaml0X2lmX25lY2Vzc2FyeShmYWxzZSkpCisgICAgcmV0dXJu OworCiAgIGlmICghY29tcF9kZWZlcnJlZF9jb21waWxhdGlvbgogICAgICAgfHwgbm9uaW50ZXJh Y3RpdmUKICAgICAgIHx8ICFOSUxQIChWcHVyaWZ5X2ZsYWcpCkBAIC0zOTI4LDYgKzQyMjIsMTUg QEAgREVGVU4gKCJuYXRpdmUtZWxpc3AtbG9hZCIsIEZuYXRpdmVfZWxpc3BfbG9hZCwgU25hdGl2 ZV9lbGlzcF9sb2FkLCAxLCAyLCAwLAogICByZXR1cm4gUXQ7CiB9CiAKK0RFRlVOICgibmF0aXZl LWNvbXAtYXZhaWxhYmxlLXAiLCBGbmF0aXZlX2NvbXBfYXZhaWxhYmxlX3AsCisgICAgICAgU25h dGl2ZV9jb21wX2F2YWlsYWJsZV9wLCAwLCAwLCAwLAorICAgICAgIGRvYzogLyogUmV0dXJucyB0 IGlmIG5hdGl2ZSBjb21waWxhdGlvbiBvZiBMaXNwIGZpbGVzIGlzIGF2YWlsYWJsZSBpbgordGhp cyBpbnN0YW5jZSBvZiBFbWFjcy4gKi8pCisgICh2b2lkKQoreworICByZXR1cm4gbG9hZF9nY2Nq aXRfaWZfbmVjZXNzYXJ5KGZhbHNlKSA/IFF0IDogUW5pbDsKK30KKwogDAogdm9pZAogc3ltc19v Zl9jb21wICh2b2lkKQpAQCAtNDAzOSw2ICs0MzQyLDcgQEAgc3ltc19vZl9jb21wICh2b2lkKQog ICBkZWZzdWJyICgmU2NvbXBfX3JlZ2lzdGVyX3N1YnIpOwogICBkZWZzdWJyICgmU2NvbXBfX2xh dGVfcmVnaXN0ZXJfc3Vicik7CiAgIGRlZnN1YnIgKCZTbmF0aXZlX2VsaXNwX2xvYWQpOworICBk ZWZzdWJyICgmU25hdGl2ZV9jb21wX2F2YWlsYWJsZV9wKTsKIAogICBzdGF0aWNwcm8gKCZjb21w LmV4cG9ydGVkX2Z1bmNzX2gpOwogICBjb21wLmV4cG9ydGVkX2Z1bmNzX2ggPSBRbmlsOwpkaWZm IC0tZ2l0IGEvc3JjL3czMmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4IGU1OTViMDI4NWEuLmVl YjczNDg5ZGQgMTAwNjQ0Ci0tLSBhL3NyYy93MzJmbnMuYworKysgYi9zcmMvdzMyZm5zLmMKQEAg LTEwNDYyLDYgKzEwNDYyLDcgQEAgc3ltc19vZl93MzJmbnMgKHZvaWQpCiAgIERFRlNZTSAoUXps aWIsICJ6bGliIik7CiAgIERFRlNZTSAoUWxjbXMyLCAibGNtczIiKTsKICAgREVGU1lNIChRanNv biwgImpzb24iKTsKKyAgREVGU1lNIChRZ2Njaml0LCAiZ2Njaml0Iik7CiAKICAgRnB1dCAoUXVu ZGVmaW5lZF9jb2xvciwgUWVycm9yX2NvbmRpdGlvbnMsCiAJcHVyZV9saXN0IChRdW5kZWZpbmVk X2NvbG9yLCBRZXJyb3IpKTsKLS0gCjIuMjUuMS53aW5kb3dzLjEKCg== --000000000000fe9d9305a56a7747--