From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out30-130.freemail.mail.aliyun.com (out30-130.freemail.mail.aliyun.com [115.124.30.130]) by sourceware.org (Postfix) with ESMTPS id CF5893858D35 for ; Mon, 6 Jul 2020 12:02:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org CF5893858D35 X-Alimail-AntiSpam: AC=PASS; BC=-1|-1; BR=01201311R761e4; CH=green; DM=||false|; DS=||; FP=0|-1|-1|-1|0|-1|-1|-1; HT=e01e01358; MF=majun258@linux.alibaba.com; NM=1; PH=DW; RN=4; SR=0; TI=W4_5922738_DEFAULT_0AC264D5_1594036928918_o7001c138c; Received: from WS-web (majun258@linux.alibaba.com[W4_5922738_DEFAULT_0AC264D5_1594036928918_o7001c138c]) by e01f04389.eu6 at Mon, 06 Jul 2020 20:02:09 +0800 Date: Mon, 06 Jul 2020 20:02:09 +0800 From: "MaJun" To: "Anthony Green" Cc: "libffi-discuss" , "wenmeng_zhang" , "linux-csky" Reply-To: "MaJun" Message-ID: <54c7d2f8-e05c-4d21-b6f0-d626a999689d.majun258@linux.alibaba.com> Subject: =?UTF-8?B?5Zue5aSN77yaW1BBVENIXSBwYWNrYWdlL2xpYmZmaTogQWRkIGNza3kgY3B1IHN1cHBvcnQ=?= X-Mailer: [Alimail-Mailagent][W4_5922738][DEFAULT][Chrome] MIME-Version: 1.0 References: <1584264721-16318-1-git-send-email-majun258@linux.alibaba.com>, x-aliyun-mail-creator: W4_5922738_DEFAULT_M3LTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfMykgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzgxLjAuNDA0NC4xMzggU2FmYXJpLzUzNy4zNg==vN In-Reply-To: X-Spam-Status: No, score=-16.7 required=5.0 tests=BAYES_00, BODY_8BITS, ENV_AND_HDR_SPF_MATCH, GIT_PATCH_0, HTML_MESSAGE, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, SCC_10_SHORT_WORD_LINES, SCC_20_SHORT_WORD_LINES, SCC_5_SHORT_WORD_LINES, SPF_HELO_NONE, SPF_PASS, TXREP, UNPARSEABLE_RELAY, USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: libffi-discuss@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libffi-discuss mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jul 2020 12:02:23 -0000 SGkgTXIuIEdyZWVuOgogICAgU29ycnkgZm9yIG1pc3NpbmcgdGhpcyByZXBseS4gSSB3aWxsIHJl c2VuZCAgYSBuZXcgcGF0Y2ggYmFzZWQgb24geW91ciBzdWdnZXN0aW9uLiAKVGhhbmtzCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQrlj5Hku7bkurrvvJpBbnRob255IEdyZWVuIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4K5Y+R 6YCB5pe26Ze077yaMjAyMOW5tDPmnIgyNOaXpSjmmJ/mnJ/kuowpIDIxOjQxCuaUtuS7tuS6uu+8 mk1hIEp1biA8bWFqdW4yNThAbGludXguYWxpYmFiYS5jb20+CuaKhOOAgOmAge+8mmxpYmZmaS1k aXNjdXNzIDxsaWJmZmktZGlzY3Vzc0Bzb3VyY2V3YXJlLm9yZz47IHdlbm1lbmdfemhhbmcgPHdl bm1lbmdfemhhbmdAYy1za3kuY29tPjsgbGludXgtY3NreSA8bGludXgtY3NreUB2Z2VyLmtlcm5l bC5vcmc+CuS4u+OAgOmimO+8mlJlOiBbUEFUQ0hdIHBhY2thZ2UvbGliZmZpOiBBZGQgY3NreSBj cHUgc3VwcG9ydAoKVGhhbmsgeW91IGZvciB0aGlzIHBhdGNoLiAgSSBoYXZlIG1lcmdlZCBpdCBp bnRvIGEgYnJhbmNoIG9uIGdpdGh1YiBmb3Igbm93OgoKaHR0cHM6Ly9naXRodWIuY29tL2xpYmZm aS9saWJmZmkvY29tbWl0LzU0YjgxYTUxNjdkZTcxM2M3YmJhMGNmZGU1Y2NlYTMzOThiNjkxMjgK ClRoZXJlJ3Mgbm8gb3Bwb3J0dW5pdHkgdG8gdGVzdCB0aGUgY29kZSB3aXRob3V0IGEgY29tcGls ZXIgb3Igc2ltdWxhdG9yLCBidXQgSSdtIHdpbGxpbmcgdG8gbWVyZ2UgaW4gdGhlIGFic2VuY2Ug b2YgdGhvc2UuICBFdmVudHVhbGx5IHdlIHdpbGwgbmVlZCBhIHNpbXVsYXRvciBzbyB3ZSBjYW4g dGVzdCBvbiB0cmF2aXMtY2kuCgpUaGUgc291cmNlIGZpbGVzIHJlcXVpcmUgYSBjb3B5cmlnaHQg bm90aWNlLiAgV291bGQgYWRkaW5nIHNvbWV0aGluZyBsaWtlIHRoaXMgd29yaz8uLi4KCiAgIGZm aS5jIC0gQ29weXJpZ2h0IChDKSAyMDIwICBBbGliYWJhCgpJIHdvdWxkIGFsc28gbGlrZSB0byBh ZGp1c3Qgc29tZSBvZiB0aGUgc3BhY2luZyBmcm9tIDQtc3BhY2UgdGFicyB0byAyLXNwYWNlIHRh YnMuICBJIGNhbiBtYWtlIHRoYXQgY2hhbmdlLCBvciB5b3UgY2FuIHJlc3VibWl0LiAgT3RoZXIg dGhhbiB0aGF0LCBJJ20gb2sgd2l0aCB0aGVzZSBjaGFuZ2VzLgoKVGhhbmtzLAoKQUcKCgpPbiBN b24sIE1hciAyMywgMjAyMCBhdCAzOjA0IEFNIE1hIEp1biB2aWEgTGliZmZpLWRpc2N1c3MgPGxp YmZmaS1kaXNjdXNzQHNvdXJjZXdhcmUub3JnPiB3cm90ZToKVGhpcyBwYXRjaCBhZGRlZCB0aGUg c3VwcG9ydCBmb3IgY3NreSBjcHUgYXJjaGl0ZWN0dXJlCgogU2lnbmVkLW9mZi1ieTogWmhhbmcg V2VubWVuZyA8d2VubWVuZ196aGFuZ0BjLXNreS5jb20+CiBTaWduZWQtb2ZmLWJ5OiBNYSBKdW4g PG1hanVuMjU4QGxpbnV4LmFsaWJhYmEuY29tPgogLS0tCiAgTWFrZWZpbGUuYW0gICAgICAgICAg fCAgIDIgKwogIFJFQURNRS5tZCAgICAgICAgICAgIHwgICAxICsKICBjb25maWd1cmUuaG9zdCAg ICAgICB8ICAgNSArCiAgc3JjL2Nza3kvZmZpLmMgICAgICAgfCAzOTUgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogIHNyYy9jc2t5L2ZmaXRhcmdldC5oIHwgIDYz ICsrKysrKysKICBzcmMvY3NreS9zeXN2LlMgICAgICB8IDM3MSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiAgNiBmaWxlcyBjaGFuZ2VkLCA4MzcgaW5zZXJ0aW9ucygr KQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvY3NreS9mZmkuYwogIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvY3NreS9mZml0YXJnZXQuaAogIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvY3NreS9zeXN2 LlMKCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQogaW5kZXggZjgzZTQ0 NC4uZTUyOGZmZCAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmFtCiArKysgYi9NYWtlZmlsZS5hbQog QEAgLTUzLDYgKzUzLDcgQEAgbm9pbnN0X0hFQURFUlMgPSBcCiAgICAgICAgIHNyYy9hdnIzMi9m Zml0YXJnZXQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg ICAgICAgIHNyYy9iZmluL2ZmaXRhcmdldC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCiAgICAgICAgIHNyYy9jcmlzL2ZmaXRhcmdldC5oICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiArICAgICAgIHNyYy9jc2t5L2ZmaXRh cmdldC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg ICAgIHNyYy9mcnYvZmZpdGFyZ2V0LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCiAgICAgICAgIHNyYy9pYTY0L2ZmaXRhcmdldC5oIHNyYy9pYTY0L2lhNjRf ZmxhZ3MuaCAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHNyYy9tMzJyL2ZmaXRhcmdl dC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiBAQCAtODUs NiArODYsNyBAQCBFWFRSQV9saWJmZmlfbGFfU09VUkNFUyA9IFwKICAgICAgICAgc3JjL2F2cjMy L2ZmaS5jIHNyYy9hdnIzMi9zeXN2LlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK ICAgICAgICAgc3JjL2JmaW4vZmZpLmMgc3JjL2JmaW4vc3lzdi5TICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKICAgICAgICAgc3JjL2NyaXMvZmZpLmMgc3JjL2NyaXMvc3lzdi5T ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICsgICAgICAgc3JjL2Nza3kvZmZp LmMgc3JjL2Nza3kvc3lzdi5TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg ICAgICAgc3JjL2Zydi9mZmkuYyBzcmMvZnJ2L2VhYmkuUyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKICAgICAgICAgc3JjL2lhNjQvZmZpLmMgc3JjL2lhNjQvdW5peC5TICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgc3JjL20zMnIvZmZpLmMg c3JjL20zMnIvc3lzdi5TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIGRpZmYg LS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQKIGluZGV4IDNjYWYyZmEuLmJkZmU4ODAgMTAw NjQ0CiAtLS0gYS9SRUFETUUubWQKICsrKyBiL1JFQURNRS5tZAogQEAgLTU4LDYgKzU4LDcgQEAg dGVzdGVkOgogIHwgQVJNICAgICAgICAgICAgIHwgaU9TICAgICAgICAgICAgICB8IEdDQyAgICAg ICAgICAgICAgICAgICAgIHwKICB8IEFWUjMyICAgICAgICAgICB8IExpbnV4ICAgICAgICAgICAg fCBHQ0MgICAgICAgICAgICAgICAgICAgICB8CiAgfCBCbGFja2ZpbiAgICAgICAgfCB1Q2xpbnV4 ICAgICAgICAgIHwgR0NDICAgICAgICAgICAgICAgICAgICAgfAogK3wgQ1NLWSAgICAgICAgICAg IHwgTGludXggICAgICAgICAgICB8IEdDQyAgICAgICAgICAgICAgICAgICAgIHwKICB8IEhQUEEg ICAgICAgICAgICB8IEhQVVggICAgICAgICAgICAgfCBHQ0MgICAgICAgICAgICAgICAgICAgICB8 CiAgfCBJQS02NCAgICAgICAgICAgfCBMaW51eCAgICAgICAgICAgIHwgR0NDICAgICAgICAgICAg ICAgICAgICAgfAogIHwgTTY4SyAgICAgICAgICAgIHwgRnJlZU1pTlQgICAgICAgICB8IEdDQyAg ICAgICAgICAgICAgICAgICAgIHwKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuaG9zdCBiL2NvbmZp Z3VyZS5ob3N0CiBpbmRleCA3NjM0YzNhLi45MjAxY2Q0IDEwMDY0NAogLS0tIGEvY29uZmlndXJl Lmhvc3QKICsrKyBiL2NvbmZpZ3VyZS5ob3N0CiBAQCAtNDMsNiArNDMsMTEgQEAgY2FzZSAiJHto b3N0fSIgaW4KICAgICAgICAgU09VUkNFUz0iZmZpLmMgc3lzdi5TIgogICAgICAgICA7OwoKICsg IGNza3ktKi0qKQogKyAgICAgICBUQVJHRVQ9Q1NLWTsgVEFSR0VURElSPWNza3kKICsgICAgICAg U09VUkNFUz0iZmZpLmMgc3lzdi5TIgogKyAgICAgICA7OwogKwogICAgZnJ2LSotKikKICAgICAg ICAgVEFSR0VUPUZSVjsgVEFSR0VURElSPWZydgogICAgICAgICBTT1VSQ0VTPSJmZmkuYyBlYWJp LlMiCiBkaWZmIC0tZ2l0IGEvc3JjL2Nza3kvZmZpLmMgYi9zcmMvY3NreS9mZmkuYwogbmV3IGZp bGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLmViNTM4NDgKIC0tLSAvZGV2L251bGwKICsr KyBiL3NyYy9jc2t5L2ZmaS5jCiBAQCAtMCwwICsxLDM5NSBAQAogKy8qIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiArICAgZmZpLmMKICsKICsgICBDU0tZIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlCiArCiAr ICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nCiArICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0 ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCiArICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCiArICAgd2l0aG91 dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLAogKyAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0bwogKyAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwogKyAgIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKICsKICsgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAogKyAgIGluIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKwogKyAgIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCiAr ICAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GCiArICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBTkQKICsgICBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBU SEUgQVVUSE9SUyBPUiBDT1BZUklHSFQKICsgICBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKICsgICBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICsgICBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS CiArICAgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAr CiArI2luY2x1ZGUgPGZmaS5oPgogKyNpbmNsdWRlIDxmZmlfY29tbW9uLmg+CiArCiArI2luY2x1 ZGUgPHN0ZGxpYi5oPgogKwogKy8qIGZmaV9wcmVwX2FyZ3MgaXMgY2FsbGVkIGJ5IHRoZSBhc3Nl bWJseSByb3V0aW5lIG9uY2Ugc3RhY2sgc3BhY2UKICsgICBoYXMgYmVlbiBhbGxvY2F0ZWQgZm9y IHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cwogKyovCiArdm9pZCBmZmlfcHJlcF9hcmdzKGNoYXIg KnN0YWNrLCBleHRlbmRlZF9jaWYgKmVjaWYpCiArewogKyAgICAgICByZWdpc3RlciB1bnNpZ25l ZCBpbnQgaTsKICsgICAgICAgcmVnaXN0ZXIgdm9pZCAqKnBfYXJndjsKICsgICAgICAgcmVnaXN0 ZXIgY2hhciAqYXJncDsKICsgICAgICAgcmVnaXN0ZXIgZmZpX3R5cGUgKipwX2FyZzsKICsKICsg ICAgICAgYXJncCA9IHN0YWNrOwogKwogKyAgICAgICBpZiAoIGVjaWYtPmNpZi0+ZmxhZ3MgPT0g RkZJX1RZUEVfU1RSVUNUICkgewogKyAgICAgICAgICAgICAgICoodm9pZCAqKikgYXJncCA9IGVj aWYtPnJ2YWx1ZTsKICsgICAgICAgICAgICAgICBhcmdwICs9IDQ7CiArICAgICAgIH0KICsKICsg ICAgICAgcF9hcmd2ID0gZWNpZi0+YXZhbHVlOwogKwogKyAgICAgICBmb3IgKGkgPSBlY2lmLT5j aWYtPm5hcmdzLCBwX2FyZyA9IGVjaWYtPmNpZi0+YXJnX3R5cGVzOwogKyAgICAgICAgICAgICAg ICAgICAgICAgKGkgIT0gMCk7CiArICAgICAgICAgICAgICAgICAgICAgICBpLS0sIHBfYXJnKysp CiArICAgICAgIHsKICsgICAgICAgICAgICAgICBzaXplX3QgejsKICsgICAgICAgICAgICAgICBz aXplX3QgYWxpZ25tZW50OwogKwogKyAgICAgICAgICAgICAgIC8qIEFsaWduIGlmIG5lY2Vzc2Fy eSAqLwogKyAgICAgICAgICAgICAgIGFsaWdubWVudCA9ICgqcF9hcmcpLT5hbGlnbm1lbnQ7CiAr I2lmZGVmIF9fQ1NLWUFCSVYxX18KICsgICAgICAgICAgICAgICAvKgogKyAgICAgICAgICAgICAg ICAqIEFkYXB0IEFCSVYxIGJ1Zy4KICsgICAgICAgICAgICAgICAgKiBJZiBzdHJ1Y3QncyBzaXpl IGlzIGxhcmdlciB0aGFuIDggYnl0ZXMsIHRoZW4gaXQgYWx3YXlzIGFsaWdubWVudCBhcyA0IGJ5 dGVzLgogKyAgICAgICAgICAgICAgICAqLwogKyAgICAgICAgICAgICAgIGlmICgoKCpwX2FyZykt PnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKSAmJiAoKCpwX2FyZyktPnNpemUgPiA4KSAmJiAoYWxp Z25tZW50ID09IDgpKSB7CiArICAgICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnQgPSA0Owog KyAgICAgICAgICAgICAgIH0KICsjZW5kaWYKICsKICsgICAgICAgICAgICAgICBpZiAoKGFsaWdu bWVudCAtIDEpICYgKHVuc2lnbmVkKSBhcmdwKSB7CiArICAgICAgICAgICAgICAgICAgICAgICBh cmdwID0gKGNoYXIgKikgRkZJX0FMSUdOKGFyZ3AsIGFsaWdubWVudCk7CiArICAgICAgICAgICAg ICAgfQogKwogKyAgICAgICAgICAgICAgIGlmICgoKnBfYXJnKS0+dHlwZSA9PSBGRklfVFlQRV9T VFJVQ1QpCiArICAgICAgICAgICAgICAgICAgICAgICBhcmdwID0gKGNoYXIgKikgRkZJX0FMSUdO KGFyZ3AsIDQpOwogKwogKyAgICAgICAgICAgICAgIHogPSAoKnBfYXJnKS0+c2l6ZTsKICsgICAg ICAgICAgICAgICBpZiAoeiA8IHNpemVvZihpbnQpKQogKyAgICAgICAgICAgICAgIHsKICsgICAg ICAgICAgICAgICAgICAgICAgIHogPSBzaXplb2YoaW50KTsKICsgICAgICAgICAgICAgICAgICAg ICAgIHN3aXRjaCAoKCpwX2FyZyktPnR5cGUpCiArICAgICAgICAgICAgICAgICAgICAgICB7CiAr ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEZGSV9UWVBFX1NJTlQ4OgogKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqKHNpZ25lZCBpbnQgKikgYXJncCA9IChzaWduZWQgaW50KSoo U0lOVDggKikoKiBwX2FyZ3YpOwogKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh azsKICsKICsgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRkZJX1RZUEVfVUlOVDg6CiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5z aWduZWQgaW50KSooVUlOVDggKikoKiBwX2FyZ3YpOwogKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKICsKICsgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRkZJX1RZUEVf U0lOVDE2OgogKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKHNpZ25lZCBpbnQgKikg YXJncCA9IChzaWduZWQgaW50KSooU0lOVDE2ICopKCogcF9hcmd2KTsKICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7CiArCiArICAgICAgICAgICAgICAgICAgICAgICBjYXNl IEZGSV9UWVBFX1VJTlQxNjoKICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNp Z25lZCBpbnQgKikgYXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UMTYgKikoKiBwX2FyZ3YpOwog KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICsKICsgICAgICAgICAgICAg ICAgICAgICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgogKyNpZmRlZiBfX0NTS1lCRV9fCiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweSgoYXJncCArIDQgLSAoKnBfYXJnKS0+ c2l6ZSksICpwX2FyZ3YsICgqcF9hcmcpLT5zaXplKTsKICsjZWxzZQogKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtZW1jcHkoYXJncCwgKnBfYXJndiwgKCpwX2FyZyktPnNpemUpOwog KyNlbmRpZgogKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICsKICsgICAg ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEZGSV9BU1NFUlQoMCk7CiArICAgICAgICAgICAgICAgICAgICAgICB9CiArICAgICAgICAg ICAgICAgfQogKyAgICAgICAgICAgICAgIGVsc2UgaWYgKHogPT0gc2l6ZW9mKGludCkpCiArICAg ICAgICAgICAgICAgewogKyAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBpbnQgKikg YXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UMzIgKikoKiBwX2FyZ3YpOwogKyAgICAgICAgICAg ICAgIH0KICsgICAgICAgICAgICAgICBlbHNlCiArICAgICAgICAgICAgICAgewogKyAgICAgICAg ICAgICAgICAgICAgICAgbWVtY3B5KGFyZ3AsICpwX2FyZ3YsIHopOwogKyAgICAgICAgICAgICAg IH0KICsgICAgICAgICAgICAgICBwX2FyZ3YrKzsKICsgICAgICAgICAgICAgICBhcmdwICs9IHo7 CiArICAgICAgIH0KICsKICsgICAgICAgcmV0dXJuOwogK30KICsKICsvKiBQZXJmb3JtIG1hY2hp bmUgZGVwZW5kZW50IGNpZiBwcm9jZXNzaW5nICovCiArZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZf bWFjaGRlcChmZmlfY2lmICpjaWYpCiArewogKyAgLyogUm91bmQgdGhlIHN0YWNrIHVwIHRvIGEg bXVsdGlwbGUgb2YgOCBieXRlcy4gIFRoaXMgaXNuJ3QgbmVlZGVkCiArICAgICBldmVyeXdoZXJl LCBidXQgaXQgaXMgb24gc29tZSBwbGF0Zm9ybXMsIGFuZCBpdCBkb2Vzbid0IGhjc2t5IGFueXRo aW5nCiArICAgICB3aGVuIGl0IGlzbid0IG5lZWRlZC4gICovCiArICBjaWYtPmJ5dGVzID0gKGNp Zi0+Ynl0ZXMgKyA3KSAmIH43OwogKwogKyAgLyogU2V0IHRoZSByZXR1cm4gdHlwZSBmbGFnICov CiArICBzd2l0Y2ggKGNpZi0+cnR5cGUtPnR5cGUpCiArICAgIHsKICsKICsgICAgY2FzZSBGRklf VFlQRV9ET1VCTEU6CiArICAgIGNhc2UgRkZJX1RZUEVfU0lOVDY0OgogKyAgICBjYXNlIEZGSV9U WVBFX1VJTlQ2NDoKICsgICAgICBjaWYtPmZsYWdzID0gKHVuc2lnbmVkKSBGRklfVFlQRV9TSU5U NjQ7CiArICAgICAgYnJlYWs7CiArCiArICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgogKyAgICAg IGlmIChjaWYtPnJ0eXBlLT5zaXplIDw9IDQpCiArICAgICAgIC8qIEEgQ29tcG9zaXRlIFR5cGUg bm90IGxhcmdlciB0aGFuIDQgYnl0ZXMgaXMgcmV0dXJuZWQgaW4gcjAuICAqLwogKyAgICAgICBj aWYtPmZsYWdzID0gKHVuc2lnbmVkKUZGSV9UWVBFX0lOVDsKICsgICAgICBlbHNlIGlmIChjaWYt PnJ0eXBlLT5zaXplIDw9IDgpCiArICAgICAgIC8qIEEgQ29tcG9zaXRlIFR5cGUgbm90IGxhcmdl ciB0aGFuIDggYnl0ZXMgaXMgcmV0dXJuZWQgaW4gcjAsIHIxLiAgKi8KICsgICAgICAgY2lmLT5m bGFncyA9ICh1bnNpZ25lZClGRklfVFlQRV9TSU5UNjQ7CiArICAgICAgZWxzZQogKyAgICAgICAv KiBBIENvbXBvc2l0ZSBUeXBlIGxhcmdlciB0aGFuIDggYnl0ZXMsIG9yIHdob3NlIHNpemUgY2Fu bm90CiArICAgICAgICAgIGJlIGRldGVybWluZWQgc3RhdGljYWxseSAuLi4gaXMgc3RvcmVkIGlu IG1lbW9yeSBhdCBhbgogKyAgICAgICAgICBhZGRyZXNzIHBhc3NlZCBbaW4gcjBdLiAgKi8KICsg ICAgICAgY2lmLT5mbGFncyA9ICh1bnNpZ25lZClGRklfVFlQRV9TVFJVQ1Q7CiArICAgICAgYnJl YWs7CiArCiArICAgIGRlZmF1bHQ6CiArICAgICAgY2lmLT5mbGFncyA9IEZGSV9UWVBFX0lOVDsK ICsgICAgICBicmVhazsKICsgICAgfQogKwogKyAgcmV0dXJuIEZGSV9PSzsKICt9CiArCiArLyog UGVyZm9ybSBtYWNoaW5lIGRlcGVuZGVudCBjaWYgcHJvY2Vzc2luZyBmb3IgdmFyaWFkaWMgY2Fs bHMgKi8KICtmZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl9tYWNoZGVwX3ZhcihmZmlfY2lmICpjaWYs CiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbmZpeGVk YXJncywKICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBu dG90YWxhcmdzKQogK3sKICsgIHJldHVybiBmZmlfcHJlcF9jaWZfbWFjaGRlcChjaWYpOwogK30K ICsKICsvKiBQcm90b3R5cGVzIGZvciBhc3NlbWJseSBmdW5jdGlvbnMsIGluIHN5c3YuUyAqLwog K2V4dGVybiB2b2lkIGZmaV9jYWxsX1NZU1YgKHZvaWQgKCpmbikodm9pZCksIGV4dGVuZGVkX2Np ZiAqLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkICopOwogKwogK3ZvaWQgZmZpX2NhbGwo ZmZpX2NpZiAqY2lmLCB2b2lkICgqZm4pKHZvaWQpLCB2b2lkICpydmFsdWUsIHZvaWQgKiphdmFs dWUpCiArewogKyAgZXh0ZW5kZWRfY2lmIGVjaWY7CiArCiArICBpbnQgc21hbGxfc3RydWN0ID0g KGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfSU5UCiArICAgICAgICAgICAgICAgICAgICAgJiYgY2lm LT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpOwogKwogKyAgZWNpZi5jaWYgPSBjaWY7 CiArICBlY2lmLmF2YWx1ZSA9IGF2YWx1ZTsKICsKICsgIHVuc2lnbmVkIGludCB0ZW1wOwogKwog KyAgLyogSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cnVjdCBhbmQgd2UgZG9uJ3QgaGF2ZSBh IHJldHVybiAgICAgICAgKi8KICsgIC8qIHZhbHVlIGFkZHJlc3MgdGhlbiB3ZSBuZWVkIHRvIG1h a2Ugb25lICAgICAgICAgICAgICAgICAgICAqLwogKwogKyAgaWYgKChydmFsdWUgPT0gTlVMTCkg JiYKICsgICAgICAoY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QpKQogKyAgICB7CiArICAg ICAgZWNpZi5ydmFsdWUgPSBhbGxvY2EoY2lmLT5ydHlwZS0+c2l6ZSk7CiArICAgIH0KICsgIGVs c2UgaWYgKHNtYWxsX3N0cnVjdCkKICsgICAgZWNpZi5ydmFsdWUgPSAmdGVtcDsKICsgIGVsc2UK ICsgICAgZWNpZi5ydmFsdWUgPSBydmFsdWU7CiArCiArICBzd2l0Y2ggKGNpZi0+YWJpKQogKyAg ICB7CiArICAgIGNhc2UgRkZJX1NZU1Y6CiArICAgICAgZmZpX2NhbGxfU1lTViAoZm4sICZlY2lm LCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSk7CiArICAgICAgYnJlYWs7CiAr CiArICAgIGRlZmF1bHQ6CiArICAgICAgRkZJX0FTU0VSVCgwKTsKICsgICAgICBicmVhazsKICsg ICAgfQogKyAgaWYgKHNtYWxsX3N0cnVjdCkKICsjaWZkZWYgX19DU0tZQkVfXwogKyAgICBtZW1j cHkgKHJ2YWx1ZSwgKCh1bnNpZ25lZCBjaGFyICopJnRlbXAgKyAoNCAtIGNpZi0+cnR5cGUtPnNp emUpKSwgY2lmLT5ydHlwZS0+c2l6ZSk7CiArI2Vsc2UKICsgICAgbWVtY3B5IChydmFsdWUsICZ0 ZW1wLCBjaWYtPnJ0eXBlLT5zaXplKTsKICsjZW5kaWYKICt9CiArCiArLyoqIHByaXZhdGUgbWVt YmVycyAqKi8KICsKICtzdGF0aWMgdm9pZCBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YgKGNo YXIgKnN0YWNrLCB2b2lkICoqcmV0LAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkKiogYXJncywgZmZpX2NpZiogY2lmKTsKICsKICt2b2lkIGZmaV9jbG9zdXJl X1NZU1YgKGZmaV9jbG9zdXJlICopOwogKwogKy8qIFRoaXMgZnVuY3Rpb24gaXMganVtcGVkIHRv IGJ5IHRoZSB0cmFtcG9saW5lICovCiArCiArdW5zaWduZWQgaW50CiArZmZpX2Nsb3N1cmVfU1lT Vl9pbm5lciAoY2xvc3VyZSwgcmVzcHAsIGFyZ3MpCiArICAgICBmZmlfY2xvc3VyZSAqY2xvc3Vy ZTsKICsgICAgIHZvaWQgKipyZXNwcDsKICsgICAgIHZvaWQgKmFyZ3M7CiArewogKyAgLy8gb3Vy IHZhcmlvdXMgdGhpbmdzLi4uCiArICBmZmlfY2lmICAgICAgICpjaWY7CiArICB2b2lkICAgICAg ICAgKiphcmdfYXJlYTsKICsKICsgIGNpZiAgICAgICAgID0gY2xvc3VyZS0+Y2lmOwogKyAgYXJn X2FyZWEgICAgPSAodm9pZCoqKSBhbGxvY2EgKGNpZi0+bmFyZ3MgKiBzaXplb2YgKHZvaWQqKSk7 CiArCiArICAvKiB0aGlzIGNhbGwgd2lsbCBpbml0aWFsaXplIEFSR19BUkVBLCBzdWNoIHRoYXQg ZWFjaAogKyAgICogZWxlbWVudCBpbiB0aGF0IGFycmF5IHBvaW50cyB0byB0aGUgY29ycmVzcG9u ZGluZwogKyAgICogdmFsdWUgb24gdGhlIHN0YWNrOyBhbmQgaWYgdGhlIGZ1bmN0aW9uIHJldHVy bnMKICsgICAqIGEgc3RydWN0dXJlLCBpdCB3aWxsIHJlLXNldCBSRVNQIHRvIHBvaW50IHRvIHRo ZQogKyAgICogc3RydWN0dXJlIHJldHVybiBhZGRyZXNzLiAgKi8KICsKICsgIGZmaV9wcmVwX2lu Y29taW5nX2FyZ3NfU1lTVihhcmdzLCByZXNwcCwgYXJnX2FyZWEsIGNpZik7CiArCiArICAoY2xv c3VyZS0+ZnVuKSAoY2lmLCAqcmVzcHAsIGFyZ19hcmVhLCBjbG9zdXJlLT51c2VyX2RhdGEpOwog KwogKyNpZmRlZiBfX0NTS1lCRV9fCiArICBpZiAoY2lmLT5mbGFncyA9PSBGRklfVFlQRV9JTlQg JiYgY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpIHsKICsgICAgICB1bnNpZ25l ZCBpbnQgdG1wID0gMDsKICsgICAgICB0bXAgPSAqKHVuc2lnbmVkIGludCAqKSgqcmVzcHApOwog KyAgICAgICoodW5zaWduZWQgaW50ICopKCpyZXNwcCkgPSAodG1wID4+ICgoNCAtIGNpZi0+cnR5 cGUtPnNpemUpICogOCkpOwogKyAgfQogKyNlbmRpZgogKwogKyAgcmV0dXJuIGNpZi0+ZmxhZ3M7 CiArfQogKwogKwogK3N0YXRpYyB2b2lkCiArZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKGNo YXIgKnN0YWNrLCB2b2lkICoqcnZhbHVlLAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv aWQgKiphdmFsdWUsIGZmaV9jaWYgKmNpZikKICt7CiArICByZWdpc3RlciB1bnNpZ25lZCBpbnQg aTsKICsgIHJlZ2lzdGVyIHZvaWQgKipwX2FyZ3Y7CiArICByZWdpc3RlciBjaGFyICphcmdwOwog KyAgcmVnaXN0ZXIgZmZpX3R5cGUgKipwX2FyZzsKICsKICsgIGFyZ3AgPSBzdGFjazsKICsKICsg IGlmICggY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QgKSB7CiArICAgICpydmFsdWUgPSAq KHZvaWQgKiopIGFyZ3A7CiArICAgIGFyZ3AgKz0gNDsKICsgIH0KICsKICsgIHBfYXJndiA9IGF2 YWx1ZTsKICsKICsgIGZvciAoaSA9IGNpZi0+bmFyZ3MsIHBfYXJnID0gY2lmLT5hcmdfdHlwZXM7 IChpICE9IDApOyBpLS0sIHBfYXJnKyspCiArICAgIHsKICsgICAgICBzaXplX3QgejsKICsgICAg ICBzaXplX3QgYWxpZ25tZW50OwogKwogKyAgICAgIGFsaWdubWVudCA9ICgqcF9hcmcpLT5hbGln bm1lbnQ7CiArICAgICAgaWYgKGFsaWdubWVudCA8IDQpCiArICAgICAgIGFsaWdubWVudCA9IDQ7 CiArCiArI2lmZGVmIF9fQ1NLWUFCSVYxX18KICsgICAgICAvKgogKyAgICAgICAqIEFkYXB0IEFC SVYxIGJ1Zy4KICsgICAgICAgKiBJZiBzdHJ1Y3QncyBzaXplIGlzIGxhcmdlciB0aGFuIDggYnl0 ZXMsIHRoZW4gaXQgYWx3YXlzIGFsaWdubWVudCBhcyA0IGJ5dGVzLgogKyAgICAgICAqLwogKyAg ICAgIGlmICgoKCpwX2FyZyktPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKSAmJiAoKCpwX2FyZykt PnNpemUgPiA4KSAmJiAoYWxpZ25tZW50ID09IDgpKSB7CiArICAgICAgICBhbGlnbm1lbnQgPSA0 OwogKyAgICAgIH0KICsjZW5kaWYKICsKICsgICAgICAvKiBBbGlnbiBpZiBuZWNlc3NhcnkgKi8K ICsgICAgICBpZiAoKGFsaWdubWVudCAtIDEpICYgKHVuc2lnbmVkKSBhcmdwKSB7CiArICAgICAg IGFyZ3AgPSAoY2hhciAqKSBGRklfQUxJR04oYXJncCwgYWxpZ25tZW50KTsKICsgICAgICB9CiAr CiArICAgICAgeiA9ICgqcF9hcmcpLT5zaXplOwogKwogKyNpZmRlZiBfX0NTS1lCRV9fCiArICAg ICAgdW5zaWduZWQgaW50IHRtcCA9IDA7CiArICAgICAgaWYgKCgqcF9hcmcpLT5zaXplIDwgNCkg ewogKyAgICAgICAgdG1wID0gKih1bnNpZ25lZCBpbnQgKilhcmdwOwogKyAgICAgICAgbWVtY3B5 KGFyZ3AsICgodW5zaWduZWQgY2hhciAqKSZ0bXAgKyAoNCAtICgqcF9hcmcpLT5zaXplKSksICgq cF9hcmcpLT5zaXplKTsKICsgICAgICB9CiArI2Vsc2UKICsgICAgICAvKiBiZWNhdXNlIHdlJ3Jl IGxpdHRsZSBlbmRpYW4sIHRoaXMgaXMgd2hhdCBpdCB0dXJucyBpbnRvLiAgICovCiArI2VuZGlm CiArICAgICAgKnBfYXJndiA9ICh2b2lkKikgYXJncDsKICsKICsgICAgICBwX2FyZ3YrKzsKICsg ICAgICBhcmdwICs9IHo7CiArICAgIH0KICsKICsgIHJldHVybjsKICt9CiArCiArLyogSG93IHRv IG1ha2UgYSB0cmFtcG9saW5lLiAgKi8KICsKICtleHRlcm4gdW5zaWduZWQgY2hhciBmZmlfY3Nr eV90cmFtcG9saW5lW1RSQU1QT0xJTkVfU0laRV07CiArCiArLyoKICsgKiBTaW5jZSB0aGVyZSBp cyBubyBfX2NsZWFyX2NhY2hlIGluIGxpYmdjYyBpbiBjc2t5IHRvb2xjaGFpbi4KICsgKiBkZWZp bmUgZmZpX2Nza3lfY2FjaGVmbHVzaCBpbiBzeXN2LlMuCiArICogdm9pZCBmZmlfY3NreV9jYWNo ZWZsdXNoKHVpbnQzMiBzdGFydF9hZGRyLCB1aW50MzIgc2l6ZSwgaW50IGNhY2hlKQogKyAqLwog KyNkZWZpbmUgQ0FDSEVGTFVTSF9JTl9GRkkgMQogKyNpZiBDQUNIRUZMVVNIX0lOX0ZGSQogK2V4 dGVybiB2b2lkIGZmaV9jc2t5X2NhY2hlZmx1c2godW5zaWduZWQgY2hhciAqX190cmFtcCwgdW5z aWduZWQgaW50IGssCiArICAgICAgICAgICAgICAgaW50IGkpOwogKyNkZWZpbmUgRkZJX0lOSVRf VFJBTVBPTElORShUUkFNUCxGVU4sQ1RYKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK ICsoeyB1bnNpZ25lZCBjaGFyICpfX3RyYW1wID0gKHVuc2lnbmVkIGNoYXIqKShUUkFNUCk7ICAg ICAgICAgICAgICAgICAgICBcCiArICAgdW5zaWduZWQgaW50ICBfX2Z1biA9ICh1bnNpZ25lZCBp bnQpKEZVTik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogKyAgIHVuc2lnbmVkIGludCAg X19jdHggPSAodW5zaWduZWQgaW50KShDVFgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK ICsgICB1bnNpZ25lZCBjaGFyICppbnNucyA9ICh1bnNpZ25lZCBjaGFyICopKENUWCk7ICAgICAg ICAgICAgICAgICAgICAgICBcCiArICAgbWVtY3B5IChfX3RyYW1wLCBmZmlfY3NreV90cmFtcG9s aW5lLCBUUkFNUE9MSU5FX1NJWkUpOyAgICAgICAgICAgICAgXAogKyAgICoodW5zaWduZWQgaW50 KikgJl9fdHJhbXBbVFJBTVBPTElORV9TSVpFXSA9IF9fY3R4OyAgICAgICAgICAgICAgICAgIFwK ICsgICAqKHVuc2lnbmVkIGludCopICZfX3RyYW1wW1RSQU1QT0xJTkVfU0laRSArIDRdID0gX19m dW47ICAgICAgICAgICAgICBcCiArICAgZmZpX2Nza3lfY2FjaGVmbHVzaCgmX190cmFtcFswXSwg VFJBTVBPTElORV9TSVpFLCAzKTsgLyogQ2xlYXIgZGF0YSBtYXBwaW5nLiAgKi8gXAogKyAgIGZm aV9jc2t5X2NhY2hlZmx1c2goaW5zbnMsIFRSQU1QT0xJTkVfU0laRSwgMyk7ICAgICAgICAgICAg ICAgICAgICAgICBcCiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIENsZWFyIGluc3RydWN0aW9uICAgXAogKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLiAgKi8gICAgICAgIFwKICsgfSkK ICsjZWxzZQogKyNkZWZpbmUgRkZJX0lOSVRfVFJBTVBPTElORShUUkFNUCxGVU4sQ1RYKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICsoeyB1bnNpZ25lZCBjaGFyICpfX3RyYW1wID0g KHVuc2lnbmVkIGNoYXIqKShUUkFNUCk7ICAgICAgICAgICAgICAgICAgICBcCiArICAgdW5zaWdu ZWQgaW50ICBfX2Z1biA9ICh1bnNpZ25lZCBpbnQpKEZVTik7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAogKyAgIHVuc2lnbmVkIGludCAgX19jdHggPSAodW5zaWduZWQgaW50KShDVFgpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICsgICB1bnNpZ25lZCBjaGFyICppbnNucyA9ICh1 bnNpZ25lZCBjaGFyICopKENUWCk7ICAgICAgICAgICAgICAgICAgICAgICBcCiArICAgbWVtY3B5 IChfX3RyYW1wLCBmZmlfY3NreV90cmFtcG9saW5lLCBUUkFNUE9MSU5FX1NJWkUpOyAgICAgICAg ICAgICAgXAogKyAgICoodW5zaWduZWQgaW50KikgJl9fdHJhbXBbVFJBTVBPTElORV9TSVpFXSA9 IF9fY3R4OyAgICAgICAgICAgICAgICAgIFwKICsgICAqKHVuc2lnbmVkIGludCopICZfX3RyYW1w W1RSQU1QT0xJTkVfU0laRSArIDRdID0gX19mdW47ICAgICAgICAgICAgICBcCiArICAgX19jbGVh cl9jYWNoZSgoJl9fdHJhbXBbMF0pLCAoJl9fdHJhbXBbVFJBTVBPTElORV9TSVpFLTFdKSk7IC8q IENsZWFyIGRhdGEgbWFwcGluZy4gICovIFwKICsgICBfX2NsZWFyX2NhY2hlKGluc25zLCBpbnNu cyArIFRSQU1QT0xJTkVfU0laRSk7ICAgICAgICAgICAgICAgICAgICAgICBcCiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENsZWFyIGluc3RydWN0 aW9uICAgXAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtYXBwaW5nLiAgKi8gICAgICAgIFwKICsgfSkKICsjZW5kaWYKICsKICsvKiB0aGUgY2lm IG11c3QgYWxyZWFkeSBiZSBwcmVwJ2VkICovCiArCiArZmZpX3N0YXR1cwogK2ZmaV9wcmVwX2Ns b3N1cmVfbG9jIChmZmlfY2xvc3VyZSogY2xvc3VyZSwKICsgICAgICAgICAgICAgICAgICAgICBm ZmlfY2lmKiBjaWYsCiArICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmZ1bikoZmZpX2NpZios dm9pZCosdm9pZCoqLHZvaWQqKSwKICsgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2Rh dGEsCiArICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY29kZWxvYykKICt7CiArICB2b2lkICgq Y2xvc3VyZV9mdW5jKShmZmlfY2xvc3VyZSopID0gTlVMTDsKICsKICsgIGlmIChjaWYtPmFiaSA9 PSBGRklfU1lTVikKICsgICAgY2xvc3VyZV9mdW5jID0gJmZmaV9jbG9zdXJlX1NZU1Y7CiArICBl bHNlCiArICAgIHJldHVybiBGRklfQkFEX0FCSTsKICsKICsgIEZGSV9JTklUX1RSQU1QT0xJTkUg KCZjbG9zdXJlLT50cmFtcFswXSwgXAogKyAgICAgICAgICAgICAgICAgICAgICBjbG9zdXJlX2Z1 bmMsICBcCiArICAgICAgICAgICAgICAgICAgICAgIGNvZGVsb2MpOwogKwogKyAgY2xvc3VyZS0+ Y2lmICA9IGNpZjsKICsgIGNsb3N1cmUtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKICsgIGNsb3N1 cmUtPmZ1biAgPSBmdW47CiArCiArICByZXR1cm4gRkZJX09LOwogK30KICsKICsKIGRpZmYgLS1n aXQgYS9zcmMvY3NreS9mZml0YXJnZXQuaCBiL3NyYy9jc2t5L2ZmaXRhcmdldC5oCiBuZXcgZmls ZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uZjc3MGFhYwogLS0tIC9kZXYvbnVsbAogKysr IGIvc3JjL2Nza3kvZmZpdGFyZ2V0LmgKIEBAIC0wLDAgKzEsNjMgQEAKICsvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSot Qy0qLQogKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVu CiArICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTAgIENvZGVTb3VyY2VyeQogKyAg ICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICsK ICsgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIENTS1kuCiArCiArICAgUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0 YWluaW5nCiArICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlCiArICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29m dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCiArICAgd2l0aG91dCBsaW1pdGF0 aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAogKyAg IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0bwogKyAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwogKyAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKICsKICsgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAogKyAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKwogKyAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCiArICAgRVhQUkVT UyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GCiArICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQKICsgICBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQKICsgICBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSIExJQUJJTElUWSwKICsgICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICsgICBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCiArICAgREVB TElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKwogKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiArCiArI2lm bmRlZiBMSUJGRklfVEFSR0VUX0gKICsjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogKwogKyNpZm5k ZWYgTElCRkZJX0gKICsjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBk aXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgogKyNlbmRpZgog KwogKyNpZm5kZWYgTElCRkZJX0FTTQogK3R5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBm ZmlfYXJnOwogK3R5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKICsKICt0 eXBlZGVmIGVudW0gZmZpX2FiaSB7CiArICBGRklfRklSU1RfQUJJID0gMCwKICsgIEZGSV9TWVNW LAogKyAgRkZJX0xBU1RfQUJJLAogKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCiArfSBm ZmlfYWJpOwogKyNlbmRpZgogKwogKyNpZmRlZiBfX0NTS1lBQklWMl9fCiArI2RlZmluZSBGRklf QVNNX0FSR1JFR19TSVpFIDE2CiArI2RlZmluZSBUUkFNUE9MSU5FX1NJWkUgMTYKICsjZGVmaW5l IEZGSV9UUkFNUE9MSU5FX1NJWkUgMjQKICsjZWxzZQogKyNkZWZpbmUgRkZJX0FTTV9BUkdSRUdf U0laRSAyNAogKyNkZWZpbmUgVFJBTVBPTElORV9TSVpFIDIwCiArI2RlZmluZSBGRklfVFJBTVBP TElORV9TSVpFIDI4CiArI2VuZGlmCiArCiArLyogLS0tLSBEZWZpbml0aW9ucyBmb3IgY2xvc3Vy ZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICsKICsjZGVm aW5lIEZGSV9DTE9TVVJFUyAxCiArI2RlZmluZSBGRklfTkFUSVZFX1JBV19BUEkgMAogKyNlbmRp ZgogZGlmZiAtLWdpdCBhL3NyYy9jc2t5L3N5c3YuUyBiL3NyYy9jc2t5L3N5c3YuUwogbmV3IGZp bGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLjk2MmE3OTYKIC0tLSAvZGV2L251bGwKICsr KyBiL3NyYy9jc2t5L3N5c3YuUwogQEAgLTAsMCArMSwzNzEgQEAKICsvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogKyAgIHN5c3YuUwogKwogKyAgIENTS1kgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UKICsK ICsgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55 IHBlcnNvbiBvYnRhaW5pbmcKICsgICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKICsgICBgYFNvZnR3YXJlJycpLCB0byBkZWFs IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKICsgICB3aXRo b3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsCiArICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvCiArICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCiArICAgdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgogKwogKyAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCiArICAgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiArCiArICAgVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwK ICsgICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF IFdBUlJBTlRJRVMgT0YKICsgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORAogKyAgIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxM IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVAogKyAgIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAogKyAgIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAogKyAgIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIKICsgICBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiArICAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8K ICsKICsjZGVmaW5lIExJQkZGSV9BU00KICsjaW5jbHVkZSA8ZmZpY29uZmlnLmg+CiArI2luY2x1 ZGUgPGZmaS5oPgogKwogKy5tYWNybyBDU0tZX0ZVTkNfU1RBUlQgbmFtZQogKyAgICAgICAudGV4 dAogKyAgICAgICAuYWxpZ24gMgogKyAgICAgICAuZ2xvYmwgXG5hbWUKICsgICAgICAgLnR5cGUg XG5hbWUsIEBmdW5jdGlvbgogKyAgICAgICBcbmFtZToKICsuZW5kbQogKwogKyNpZmRlZiBfX0NT S1lBQklWMl9fCiArCiArICAgICAgIC8qCiArICAgICAgICAqIGEwOiAgIGZuCiArICAgICAgICAq IGExOiAgICZlY2lmCiArICAgICAgICAqIGEyOiAgIGNpZi0+Ynl0ZXMKICsgICAgICAgICogYTM6 ICAgZmlnLT5mbGFncwogKyAgICAgICAgKiBzcCswOiBlY2lmLnJ2YWx1ZQogKyAgICAgICAgKi8K ICtDU0tZX0ZVTkNfU1RBUlQgZmZpX2NhbGxfU1lTVgogKyAgICAgICAvKiBTYXZlIHJlZ2lzdGVy cyAqLwogKyAgICAgICAuY2ZpX3N0YXJ0cHJvYwogKyAgICAgICBzdWJpICAgIHNwLCAyOAogKyAg ICAgICAuY2ZpX2RlZl9jZmFfb2Zmc2V0IDI4CiArICAgICAgIHN0dyAgICAgYTAsIChzcCwgMHgw KQogKyAgICAgICAuY2ZpX29mZnNldCAwLCAtMjgKICsgICAgICAgc3R3ICAgICBhMSwgKHNwLCAw eDQpCiArICAgICAgIC5jZmlfb2Zmc2V0IDEsIC0yNAogKyAgICAgICBzdHcgICAgIGEyLCAoc3As IDB4OCkKICsgICAgICAgLmNmaV9vZmZzZXQgMiwgLTIwCiArICAgICAgIHN0dyAgICAgYTMsIChz cCwgMHhDKQogKyAgICAgICAuY2ZpX29mZnNldCAzLCAtMTYKICsgICAgICAgc3R3ICAgICBsMCwg KHNwLCAweDEwKQogKyAgICAgICAuY2ZpX29mZnNldCA0LCAtMTIKICsgICAgICAgc3R3ICAgICBs MSwgKHNwLCAweDE0KQogKyAgICAgICAuY2ZpX29mZnNldCA1LCAtOAogKyAgICAgICBzdHcgICAg IGxyLCAoc3AsIDB4MTgpCiArICAgICAgIC5jZmlfb2Zmc2V0IDE1LCAtNAogKwogKyAgICAgICBt b3YgICAgIGwwLCBzcAogKyAgICAgICAuY2ZpX2RlZl9jZmFfcmVnaXN0ZXIgNAogKwogKyAgICAg ICAvKiBNYWtlIHJvb20gZm9yIGFsbCBvZiB0aGUgbmV3IGFyZ3MuICovCiArICAgICAgIHN1YnUg ICAgc3AsIHNwLCBhMgogKwogKyAgICAgICAvKiBQbGFjZSBhbGwgb2YgdGhlIGZmaV9wcmVwX2Fy Z3MgaW4gcG9zaXRpb24gKi8KICsgICAgICAgbW92ICAgICBhMCwgc3AKICsgICAgICAgLyogICAg IGExIGFscmVhZHkgc2V0ICovCiArCiArICAgICAgIC8qIENhbGwgZmZpX3ByZXBfYXJncyhzdGFj aywgJmVjaWYpICovCiArICAgICAgIGpzcmkgICAgZmZpX3ByZXBfYXJncwogKwogKyAgICAgICAv KiBtb3ZlIGZpcnN0IDQgcGFyYW1ldGVycyBpbiByZWdpc3RlcnMgKi8KICsgICAgICAgbGR3ICAg ICBhMCwgKHNwLCAweDApCiArICAgICAgIGxkdyAgICAgYTEsIChzcCwgMHg0KQogKyAgICAgICBs ZHcgICAgIGEyLCAoc3AsIDB4OCkKICsgICAgICAgbGR3ICAgICBhMywgKHNwLCAweEMpCiArCiAr ICAgICAgIC8qIGFuZCBhZGp1c3Qgc3RhY2sgKi8KICsgICAgICAgc3VidSAgICBsciwgbDAsIHNw ICAgICAgLyogY2lmLT5ieXRlcyA9PSBsMCAtIHNwICovCiArICAgICAgIGNtcGhzaSAgbHIsIDE2 CiArICAgICAgIG1vdmkgICAgbDEsIDE2CiArICAgICAgIG1vdnQgICAgbHIsIGwxCiArICAgICAg IGFkZHUgICAgc3AsIHNwLCBscgogKwogKyAgICAgICBsZHcgICAgIGwxLCAobDAsIDApICAgICAv KiBsb2FkIGZuKCkgaW4gYWR2YW5jZSAqLwogKwogKyAgICAgICAvKiBjYWxsIChmbikgKC4uLikg Ki8KICsgICAgICAganNyICAgICBsMQogKwogKyAgICAgICAvKiBSZW1vdmUgdGhlIHNwYWNlIHdl IHB1c2hlZCBmb3IgdGhlIGFyZ3MgKi8KICsgICAgICAgbW92ICAgICBzcCwgbDAKICsKICsgICAg ICAgLyogTG9hZCByMiB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4g dmFsdWUgKi8KICsgICAgICAgbGR3ICAgICBhMiwgKHNwLCAweDFDKQogKwogKyAgICAgICAvKiBM b2FkIHIzIHdpdGggdGhlIHJldHVybiB0eXBlIGNvZGUgKi8KICsgICAgICAgbGR3ICAgICBhMywg KHNwLCAweEMpCiArCiArICAgICAgIC8qIElmIHRoZSByZXR1cm4gdmFsdWUgcG9pbnRlciBpcyBO VUxMLCBhc3N1bWUgbm8gcmV0dXJuIHZhbHVlLiAqLwogKyAgICAgICBjbXBuZWkgIGEyLCAwCiAr ICAgICAgIGJmICAgICAgLkxlcGlsb2d1ZQogKwogKyAgICAgICBjbXBuZWkgIGEzLCBGRklfVFlQ RV9TVFJVQ1QKICsgICAgICAgYmYgICAgICAuTGVwaWxvZ3VlCiArCiArICAgICAgIC8qIHJldHVy biBJTlQ2NCAqLwogKyAgICAgICBjbXBuZWkgIGEzLCBGRklfVFlQRV9TSU5UNjQKICsgICAgICAg YnQgICAgICAuTHJldGludAogKyAgICAgICAvKiBzdHcgIGEwLCAoYTIsIDB4MCkgYXQgLkxyZXRp bnQgKi8KICsgICAgICAgc3R3ICAgICBhMSwgKGEyLCAweDQpCiArCiArLkxyZXRpbnQ6CiArICAg ICAgIC8qIHJldHVybiBJTlQgKi8KICsgICAgICAgc3R3ICAgICBhMCwgKGEyLCAweDApCiArCiAr LkxlcGlsb2d1ZToKICsgICAgICAgbGR3ICAgICBhMCwgKHNwLCAweDApCiArICAgICAgIGxkdyAg ICAgYTEsIChzcCwgMHg0KQogKyAgICAgICBsZHcgICAgIGEyLCAoc3AsIDB4OCkKICsgICAgICAg bGR3ICAgICBhMywgKHNwLCAweEMpCiArICAgICAgIGxkdyAgICAgbDAsIChzcCwgMHgxMCkKICsg ICAgICAgbGR3ICAgICBsMSwgKHNwLCAweDE0KQogKyAgICAgICBsZHcgICAgIGxyLCAoc3AsIDB4 MTgpCiArICAgICAgIGFkZGkgICAgc3AsIHNwLCAyOAogKyAgICAgICBydHMKICsgICAgICAgLmNm aV9lbmRwcm9jCiArICAgICAgICAuc2l6ZSAgICBmZmlfY2FsbF9TWVNWLCAuLWZmaV9jYWxsX1NZ U1YKICsKICsKICsgICAgICAgLyoKICsgICAgICAgICogdW5zaWduZWQgaW50IEZGSV9ISURERU4K ICsgICAgICAgICogZmZpX2Nsb3N1cmVfU1lTVl9pbm5lciAoY2xvc3VyZSwgcmVzcHAsIGFyZ3Mp CiArICAgICAgICAqICAgICAgZmZpX2Nsb3N1cmUgKmNsb3N1cmU7CiArICAgICAgICAqICAgICAg dm9pZCAqKnJlc3BwOwogKyAgICAgICAgKiAgICAgIHZvaWQgKmFyZ3M7CiArICAgICAgICAqLwog K0NTS1lfRlVOQ19TVEFSVCBmZmlfY2xvc3VyZV9TWVNWCiArICAgICAgIC5jZmlfc3RhcnRwcm9j CiArICAgICAgIG1vdiAgICAgYTIsIHNwCiArICAgICAgIGFkZGkgICAgYTEsIHNwLCAxNgogKyAg ICAgICBzdWJpICAgIHNwLCBzcCwgMjQKICsgICAgICAgLmNmaV9kZWZfY2ZhX29mZnNldCA0MAog KyAgICAgICBzdHcgICAgIGExLCAoc3AsIDB4MTApCiArICAgICAgIC5jZmlfb2Zmc2V0IDEsIC0y NAogKyAgICAgICBzdHcgICAgIGxyLCAoc3AsIDB4MTQpCiArICAgICAgIC5jZmlfb2Zmc2V0IDE1 LCAtMjAKICsgICAgICAgc3R3ICAgICBzcCwgKHNwLCAweDgpCiArICAgICAgIGFkZGkgICAgYTEs IHNwLCA4CiArICAgICAgIGpzcmkgICAgZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcgogKyAgICAgICBs ZHcgICAgIGEwLCAoc3AsIDB4MCkKICsgICAgICAgLyoKICsgICAgICAgICogaWYgRkZJX1RZUEVf U0lOVDY0LCBuZWVkIGExLgogKyAgICAgICAgKiBpZiBGRklfVFlQRV9JTlQsIGlnbm9yZSBhMS4K ICsgICAgICAgICovCiArICAgICAgIGxkdyAgICAgYTEsIChzcCwgMHg0KQogKwogKyAgICAgICBs ZHcgICAgIGxyLCAoc3AsIDB4MTQpCiArICAgICAgIGFkZGkgICAgc3AsIHNwLCA0MAogKyAgICAg ICBydHMKICsgICAgICAgLmNmaV9lbmRwcm9jCiArICAgICAgICAuc2l6ZSAgICBmZmlfY2xvc3Vy ZV9TWVNWLCAuLWZmaV9jbG9zdXJlX1NZU1YKICsKICtDU0tZX0ZVTkNfU1RBUlQgZmZpX2Nza3lf dHJhbXBvbGluZQogKyAgICAgICBzdWJpICAgIHNwLCBzcCwgMTYKICsgICAgICAgc3R3ICAgICBh MCwgKHNwLCAweDApCiArICAgICAgIHN0dyAgICAgYTEsIChzcCwgMHg0KQogKyAgICAgICBzdHcg ICAgIGEyLCAoc3AsIDB4OCkKICsgICAgICAgc3R3ICAgICBhMywgKHNwLCAweEMpCiArICAgICAg IGxydyAgICAgYTAsIFsuTGN0eF0KICsgICAgICAgbHJ3ICAgICBhMSwgWy5MZnVuXQogKyAgICAg ICBqbXAgICAgIGExCiArLkxjdHg6CiArICAgICAgIG1vdiAgICAgYTAsIGEwCiArICAgICAgIG1v diAgICAgYTAsIGEwCiArLkxmdW46CiArCiArICAgICAgICAuc2l6ZSAgICBmZmlfY3NreV90cmFt cG9saW5lLCAuLWZmaV9jc2t5X3RyYW1wb2xpbmUKICsKICtDU0tZX0ZVTkNfU1RBUlQgZmZpX2Nz a3lfY2FjaGVmbHVzaAogKyAgICAgICBtb3YgICAgIHQwLCByNwogKyAgICAgICBtb3ZpICAgIHI3 LCAxMjMKICsgICAgICAgdHJhcCAgICAwCiArICAgICAgIG1vdiAgICAgcjcsIHQwCiArICAgICAg IHJ0cwogKwogKyAgICAgICAgLnNpemUgICAgZmZpX2Nza3lfY2FjaGVmbHVzaCwgLi1mZmlfY3Nr eV9jYWNoZWZsdXNoCiArCiArI2Vsc2UgLyogIV9fQ1NLWUFCSVYyX18gKi8KICsKICsgICAgICAg LyoKICsgICAgICAgICogYTA6ICAgZm4KICsgICAgICAgICogYTE6ICAgJmVjaWYKICsgICAgICAg ICogYTI6ICAgY2lmLT5ieXRlcwogKyAgICAgICAgKiBhMzogICBmaWctPmZsYWdzCiArICAgICAg ICAqIGE0OiAgIGVjaWYucnZhbHVlCiArICAgICAgICAqLwogK0NTS1lfRlVOQ19TVEFSVCBmZmlf Y2FsbF9TWVNWCiArICAgICAgIC8qIFNhdmUgcmVnaXN0ZXJzICovCiArICAgICAgIC5jZmlfc3Rh cnRwcm9jCiArICAgICAgIHN1YmkgICAgc3AsIDMyCiArICAgICAgIHN1YmkgICAgc3AsIDgKICsg ICAgICAgLmNmaV9kZWZfY2ZhX29mZnNldCA0MAogKyAgICAgICBzdHcgICAgIGEwLCAoc3AsIDB4 MCkKICsgICAgICAgLmNmaV9vZmZzZXQgMiwgLTQwCiArICAgICAgIHN0dyAgICAgYTEsIChzcCwg MHg0KQogKyAgICAgICAuY2ZpX29mZnNldCAzLCAtMzYKICsgICAgICAgc3R3ICAgICBhMiwgKHNw LCAweDgpCiArICAgICAgIC5jZmlfb2Zmc2V0IDQsIC0zMgogKyAgICAgICBzdHcgICAgIGEzLCAo c3AsIDB4QykKICsgICAgICAgLmNmaV9vZmZzZXQgNSwgLTI4CiArICAgICAgIHN0dyAgICAgYTQs IChzcCwgMHgxMCkKICsgICAgICAgLmNmaV9vZmZzZXQgNiwgLTI0CiArICAgICAgIHN0dyAgICAg YTUsIChzcCwgMHgxNCkKICsgICAgICAgLmNmaV9vZmZzZXQgNywgLTIwCiArICAgICAgIHN0dyAg ICAgbDAsIChzcCwgMHgxOCkKICsgICAgICAgLmNmaV9vZmZzZXQgOCwgLTE2CiArICAgICAgIHN0 dyAgICAgbDEsIChzcCwgMHgxQykKICsgICAgICAgLmNmaV9vZmZzZXQgOSwgLTEyCiArICAgICAg IHN0dyAgICAgbHIsIChzcCwgMHgyMCkKICsgICAgICAgLmNmaV9vZmZzZXQgMTUsIC04CiArCiAr ICAgICAgIG1vdiAgICAgbDAsIHNwCiArICAgICAgIC5jZmlfZGVmX2NmYV9yZWdpc3RlciA4CiAr CiArICAgICAgIC8qIE1ha2Ugcm9vbSBmb3IgYWxsIG9mIHRoZSBuZXcgYXJncy4gKi8KICsgICAg ICAgc3VidSAgICBzcCwgc3AsIGEyCiArCiArICAgICAgIC8qIFBsYWNlIGFsbCBvZiB0aGUgZmZp X3ByZXBfYXJncyBpbiBwb3NpdGlvbiAqLwogKyAgICAgICBtb3YgICAgIGEwLCBzcAogKyAgICAg ICAvKiAgICAgYTEgYWxyZWFkeSBzZXQgKi8KICsKICsgICAgICAgLyogQ2FsbCBmZmlfcHJlcF9h cmdzKHN0YWNrLCAmZWNpZikgKi8KICsgICAgICAganNyaSAgICBmZmlfcHJlcF9hcmdzCiArCiAr ICAgICAgIC8qIG1vdmUgZmlyc3QgNCBwYXJhbWV0ZXJzIGluIHJlZ2lzdGVycyAqLwogKyAgICAg ICBsZHcgICAgIGEwLCAoc3AsIDB4MCkKICsgICAgICAgbGR3ICAgICBhMSwgKHNwLCAweDQpCiAr ICAgICAgIGxkdyAgICAgYTIsIChzcCwgMHg4KQogKyAgICAgICBsZHcgICAgIGEzLCAoc3AsIDB4 QykKICsgICAgICAgbGR3ICAgICBhNCwgKHNwLCAweDEwKQogKyAgICAgICBsZHcgICAgIGE1LCAo c3AsIDB4MTQpCiArCiArICAgICAgIC8qIGFuZCBhZGp1c3Qgc3RhY2sgKi8KICsgICAgICAgbW92 ICAgICBsciwgbDAKICsgICAgICAgc3VidSAgICBsciwgc3AgICAgICAgICAgLyogY2lmLT5ieXRl cyA9PSBsMCAtIHNwICovCiArICAgICAgIG1vdmkgICAgbDEsIDI0CiArICAgICAgIGNtcGhzICAg bHIsIGwxCiArICAgICAgIG1vdnQgICAgbHIsIGwxCiArICAgICAgIGFkZHUgICAgc3AsIHNwLCBs cgogKwogKyAgICAgICBsZHcgICAgIGwxLCAobDAsIDApICAgICAvKiBsb2FkIGZuKCkgaW4gYWR2 YW5jZSAqLwogKwogKyAgICAgICAvKiBjYWxsIChmbikgKC4uLikgKi8KICsgICAgICAganNyICAg ICBsMQogKwogKyAgICAgICAvKiBSZW1vdmUgdGhlIHNwYWNlIHdlIHB1c2hlZCBmb3IgdGhlIGFy Z3MgKi8KICsgICAgICAgbW92ICAgICBzcCwgbDAKICsKICsgICAgICAgLyogTG9hZCByMiB3aXRo IHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUgKi8KICsgICAgICAg bGR3ICAgICBhMiwgKHNwLCAweDEwKQogKwogKyAgICAgICAvKiBMb2FkIHIzIHdpdGggdGhlIHJl dHVybiB0eXBlIGNvZGUgKi8KICsgICAgICAgbGR3ICAgICBhMywgKHNwLCAweEMpCiArCiArICAg ICAgIC8qIElmIHRoZSByZXR1cm4gdmFsdWUgcG9pbnRlciBpcyBOVUxMLCBhc3N1bWUgbm8gcmV0 dXJuIHZhbHVlLiAqLwogKyAgICAgICBjbXBuZWkgIGEyLCAwCiArICAgICAgIGJmICAgICAgLkxl cGlsb2d1ZQogKwogKyAgICAgICBjbXBuZWkgIGEzLCBGRklfVFlQRV9TVFJVQ1QKICsgICAgICAg YmYgICAgICAuTGVwaWxvZ3VlCiArCiArICAgICAgIC8qIHJldHVybiBJTlQ2NCAqLwogKyAgICAg ICBjbXBuZWkgIGEzLCBGRklfVFlQRV9TSU5UNjQKICsgICAgICAgYnQgICAgICAuTHJldGludAog KyAgICAgICAvKiBzdHcgIGEwLCAoYTIsIDB4MCkgYXQgLkxyZXRpbnQgKi8KICsgICAgICAgc3R3 ICAgICBhMSwgKGEyLCAweDQpCiArCiArLkxyZXRpbnQ6CiArICAgICAgIC8qIHJldHVybiBJTlQg Ki8KICsgICAgICAgc3R3ICAgICBhMCwgKGEyLCAweDApCiArCiArLkxlcGlsb2d1ZToKICsgICAg ICAgbGR3ICAgICBhMCwgKHNwLCAweDApCiArICAgICAgIGxkdyAgICAgYTEsIChzcCwgMHg0KQog KyAgICAgICBsZHcgICAgIGEyLCAoc3AsIDB4OCkKICsgICAgICAgbGR3ICAgICBhMywgKHNwLCAw eEMpCiArICAgICAgIGxkdyAgICAgYTQsIChzcCwgMHgxMCkKICsgICAgICAgbGR3ICAgICBhNSwg KHNwLCAweDE0KQogKyAgICAgICBsZHcgICAgIGwwLCAoc3AsIDB4MTgpCiArICAgICAgIGxkdyAg ICAgbDEsIChzcCwgMHgxQykKICsgICAgICAgbGR3ICAgICBsciwgKHNwLCAweDIwKQogKyAgICAg ICBhZGRpICAgIHNwLCBzcCwgMzIKICsgICAgICAgYWRkaSAgICBzcCwgc3AsIDgKICsgICAgICAg cnRzCiArICAgICAgIC5jZmlfZW5kcHJvYwogKwogKyAgICAgICAgLnNpemUgICAgZmZpX2NhbGxf U1lTViwgLi1mZmlfY2FsbF9TWVNWCiArCiArCiArICAgICAgIC8qCiArICAgICAgICAqIHVuc2ln bmVkIGludCBGRklfSElEREVOCiArICAgICAgICAqIGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIgKGNs b3N1cmUsIHJlc3BwLCBhcmdzKQogKyAgICAgICAgKiAgICAgIGZmaV9jbG9zdXJlICpjbG9zdXJl OwogKyAgICAgICAgKiAgICAgIHZvaWQgKipyZXNwcDsKICsgICAgICAgICogICAgICB2b2lkICph cmdzOwogKyAgICAgICAgKi8KICtDU0tZX0ZVTkNfU1RBUlQgZmZpX2Nsb3N1cmVfU1lTVgogKyAg ICAgICAuY2ZpX3N0YXJ0cHJvYwogKyAgICAgICBtb3YgICAgIGEyLCBzcAogKyAgICAgICBtb3Yg ICAgIGExLCBzcAogKyAgICAgICBhZGRpICAgIGExLCAyNAogKyAgICAgICBzdWJpICAgIHNwLCBz cCwgMjQKICsgICAgICAgLmNmaV9kZWZfY2ZhX29mZnNldCA0OAogKyAgICAgICBzdHcgICAgIGEx LCAoc3AsIDB4MTApCiArICAgICAgIC5jZmlfb2Zmc2V0IDMsIC0zMgogKyAgICAgICBzdHcgICAg IGxyLCAoc3AsIDB4MTQpCiArICAgICAgIC5jZmlfb2Zmc2V0IDE1LCAtMjgKICsgICAgICAgc3R3 ICAgICBzcCwgKHNwLCAweDgpCiArICAgICAgIG1vdiAgICAgYTEsIHNwCiArICAgICAgIGFkZGkg ICAgYTEsIDgKICsgICAgICAganNyaSAgICBmZmlfY2xvc3VyZV9TWVNWX2lubmVyCiArICAgICAg IGxkdyAgICAgYTAsIChzcCwgMHgwKQogKyAgICAgICAvKgogKyAgICAgICAgKiBpZiBGRklfVFlQ RV9TSU5UNjQsIG5lZWQgYTEuCiArICAgICAgICAqIGlmIEZGSV9UWVBFX0lOVCwgaWdub3JlIGEx LgogKyAgICAgICAgKi8KICsgICAgICAgbGR3ICAgICBhMSwgKHNwLCAweDQpCiArCiArICAgICAg IGxkdyAgICAgbHIsIChzcCwgMHgxNCkKICsgICAgICAgYWRkaSAgICBzcCwgc3AsIDI0CiArICAg ICAgIGFkZGkgICAgc3AsIHNwLCAyNAogKyAgICAgICBydHMKICsgICAgICAgLmNmaV9lbmRwcm9j CiArCiArICAgICAgICAuc2l6ZSAgICBmZmlfY2xvc3VyZV9TWVNWLCAuLWZmaV9jbG9zdXJlX1NZ U1YKICsKICtDU0tZX0ZVTkNfU1RBUlQgZmZpX2Nza3lfdHJhbXBvbGluZQogKyAgICAgICBzdWJp ICAgIHNwLCAyNAogKyAgICAgICBzdHcgICAgIGEwLCAoc3AsIDB4MCkKICsgICAgICAgc3R3ICAg ICBhMSwgKHNwLCAweDQpCiArICAgICAgIHN0dyAgICAgYTIsIChzcCwgMHg4KQogKyAgICAgICBz dHcgICAgIGEzLCAoc3AsIDB4QykKICsgICAgICAgc3R3ICAgICBhNCwgKHNwLCAweDEwKQogKyAg ICAgICBzdHcgICAgIGE1LCAoc3AsIDB4MTQpCiArICAgICAgIGxydyAgICAgYTAsIFsuTGN0eF0K ICsgICAgICAgbHJ3ICAgICBhMSwgWy5MZnVuXQogKyAgICAgICBqbXAgICAgIGExCiArLkxjdHg6 CiArICAgICAgIG1vdiAgICAgYTAsIGEwCiArICAgICAgIG1vdiAgICAgYTAsIGEwCiArLkxmdW46 CiArCiArICAgICAgICAuc2l6ZSAgICBmZmlfY3NreV90cmFtcG9saW5lLCAuLWZmaV9jc2t5X3Ry YW1wb2xpbmUKICsKICtDU0tZX0ZVTkNfU1RBUlQgZmZpX2Nza3lfY2FjaGVmbHVzaAogKyAgICAg ICBscncgICAgIHIxLCAxMjMKICsgICAgICAgdHJhcCAgICAwCiArICAgICAgIHJ0cwogKwogKyAg ICAgICAgLnNpemUgICAgZmZpX2Nza3lfY2FjaGVmbHVzaCwgLi1mZmlfY3NreV9jYWNoZWZsdXNo CiArCiArI2VuZGlmIC8qIF9fQ1NLWUFCSVYyX18gKi8KIC0tIAogMi4xNy4xCgo=