From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ste-pvt-msa1.bahnhof.se (ste-pvt-msa1.bahnhof.se [213.80.101.70]) by sourceware.org (Postfix) with ESMTPS id 0B1F53858D37 for ; Mon, 20 Nov 2023 22:10:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0B1F53858D37 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=bahnhof.se Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=bahnhof.se ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0B1F53858D37 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=213.80.101.70 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700518237; cv=none; b=AuS3cI3gSKczs40n/ccJptzeo8/foyZ0PRXVNnkzbJDa4nGIIyuFRHNA3d2tqmEKAFk+wNxTTaM9D2Y0q5EeMs7FHpWgasVzou2KsiUbWZAZISt6zg8o5/hjLUyq2PrZkf0OD9DvBq5SEn11oJ/XqGlrAOdaaZrSeaiLisj6QoA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700518237; c=relaxed/simple; bh=Fcxx+b78509Wuoh6scCw0Gvur/7XDO3U+GSDTJWql8k=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=AU9pv2Cig6+TgJSYtmL7f7g27gcu/zEmknxE85mbT4Tc8jw+Rhnho0mklGoCvWwHWTu/BOq+iyxrozjeqLNGc4vbcT0bDQdHO0J8dxnOQL7QOwgiUpm2gD3PZg2Ha3Fcm+HlppbkrmLezCz0/vy8AVQPyA7MMdbOGqu4kCmIRZM= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from localhost (localhost [127.0.0.1]) by ste-pvt-msa1.bahnhof.se (Postfix) with ESMTP id 23F283F469 for ; Mon, 20 Nov 2023 23:10:31 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at bahnhof.se X-Spam-Score: -2.11 X-Spam-Level: X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 Authentication-Results: ste-pvt-msa1.bahnhof.se (amavisd-new); dkim=pass (2048-bit key) header.d=bahnhof.se Received: from ste-pvt-msa1.bahnhof.se ([127.0.0.1]) by localhost (ste-pvt-msa1.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6mQOZ_CLwVFm for ; Mon, 20 Nov 2023 23:10:29 +0100 (CET) Received: by ste-pvt-msa1.bahnhof.se (Postfix) with ESMTPA id 602B03F386 for ; Mon, 20 Nov 2023 23:10:29 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bahnhof.se; s=default; t=1700518229; bh=Fcxx+b78509Wuoh6scCw0Gvur/7XDO3U+GSDTJWql8k=; h=Date:Subject:To:References:From:In-Reply-To:From; b=DM4cbU91cHmizgWquRZIvz4/WRsb4pxmEMshs8a2haiQXd52Y0bOyzErON2QX60kk glQ6aDOEtbUIzsMwzGZEpCnTiBWmFBJUVQb5cwIRk5c2+SwayZwWbih3gmUd5hTTbT JSWaDR64AVpQwAEDskN4KSH3Ri0jLnCLaibbpeYHJG9H1ab80esRsv9GEXJh1TfRCz Yi8lP2ev+ySa6kcJyzpd17xzUp05qbIoxHK7uYb4CkrbEmxLbHCMqvQOp5G/N8ZUDz r+Moo0Gl62EPIWfQQbGDKIkVCZMm5lSVCjsMLIgcGzuf1DHf0u2g0kS3cHihbstfWc EDD5sdrcvFTeA== Content-Type: multipart/mixed; boundary="------------mJCI5zQJHW5jTJSOnyd7BSuL" Message-ID: <3c502ba4-ffc1-4faf-8e3f-f7b7367a50e5@bahnhof.se> Date: Mon, 20 Nov 2023 23:10:29 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 1/2] jit: Complex types and loong constants Content-Language: en-US To: jit@gcc.gnu.org References: <697d6d25-c8fb-452b-8997-7ea28b6eb659@bahnhof.se> From: Petter Tomner In-Reply-To: <697d6d25-c8fb-452b-8997-7ea28b6eb659@bahnhof.se> X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------mJCI5zQJHW5jTJSOnyd7BSuL Content-Type: multipart/alternative; boundary="------------Y5axfo53ZqGEFOTgRTcWm2l7" --------------Y5axfo53ZqGEFOTgRTcWm2l7 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This patch fixes support for complex types. It adds the entrypoints: gcc_jit_context_new_rvalue_from_complex_double gcc_jit_context_set_bool_enable_complex_types Aswell as the binary operator GCC_JIT_BINARY_OP_COMPLEX, to make complex numbers from two real number rvalues. Note that the complex types already are in the type enum, so I thought the cleanest solution is to enable them, rather than to have a "get_complex_type" function. When I wrote the patch originally, the complex enums were not usable due to a range check, but I think they accidentally were included when int8_t etc were added. However, casts to complex types segfaults currently and some other issues, so I would say an explicit enable is the least confusing, since the enums have been there since the get go. See attachement. --------------Y5axfo53ZqGEFOTgRTcWm2l7-- --------------mJCI5zQJHW5jTJSOnyd7BSuL Content-Type: text/x-patch; charset=UTF-8; name="0001-Complex.patch" Content-Disposition: attachment; filename="0001-Complex.patch" Content-Transfer-Encoding: base64 RnJvbSAyODYyNDFjMGRjOWM4YWQxMjM1ZmRmMTU2MTc0MTgyNTgyZDJlZjM4 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXR0ZXIgVG9tbmVy IDx0b21uZXJAYmFobmhvZi5zZT4KRGF0ZTogRnJpLCAxNSBPY3QgMjAyMSAy MDoxNjo1NCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMS8yXSBDb21wbGV4CgpG aXggc3VwcG9ydCBmb3IgY29tcGxleCB0eXBlcwoKVGhlIHBhdGNoIGFkZHMg c3VwcG9ydCBvZiBjb21wbGV4IGZsb2F0aW5nIHBvaW50IHR5cGVzIHRvIGxp YmdjY2ppdC4KQSBuZXcgYmluYXJ5IG9wZXJhdG9yICdDT01QTEVYJyBpcyBh ZGRlZCB0byBjcmVhdGUgY29tcGxleCB2YWx1ZXMKZnJvbSByZWFsIHZhbHVl cy4gQXN3ZWxsIGFzIGEgZnVuY3Rpb24gdG8gY3JlYXRlIGEgY29tcGxleCBk b3VibGUKbGl0ZXJhbC4KClRvIG5vdGlmeSB1c2VycyBpZiBhIGJpbmFyeSBs aW5raW5nIHRvIGxpYmdjY2ppdCBkZXBlbmRzIG9uIGNvbXBsZXgKdHlwZXMs IGNvbXBsZXggdHlwZSBzdXBwb3J0IG1vc3QgYmUgZW5hYmxlZCB3aXRoIGEg bmV3IG9wdGlvbiBmdW5jdGlvbgpzaW5jZSB0aGV5IGFsbHJlYWR5IGFyZSBp biB0aGUgdHlwZXMgZW51bS4KClNpZ25lZC1vZmYtYnk6CjIwMjEtMTAtMjEg IFBldHRlciBUb21uZXIgIDx0b21uZXJAYmFobmhvZi5zZT4KCmdjYy9qaXQv CgkqIGppdC1jb21tb24uaCA6IChJTk5FUl9CT09MX09QVElPTl9FTkFCTEVf Q09NUExFWF9UWVBFUyk6IE5ldwoJKiBqaXQtcGxheWJhY2suYyA6IENyZWF0 ZSBpbWFnaW5hcnkgbGl0ZXJhbHMsIGNvbnZlcnNpb25zCgkgIChjb21wbGV4 X3JlYWxfdG9fcmVhbCkgOiBOZXcKCSAgKG5ld19ydmFsdWVfZnJvbV9jb25z dDwuLi4+KSA6IEFsc28gYnVpbGQgY29tcGxleCBjb25zdGFudHMKCSAgKG5l d19ydmFsdWVfZnJvbV9jb25zdCA8X0NvbXBsZXggZG91YmxlPikgOiBOZXcK CSAgKG5ld19iaW5hcnlfb3ApIDogQWRkIENPTVBMRVggb3BlcmF0b3IKCSAg KGJ1aWxkX2Nhc3QpIDogQ2FzdHMgdG8gY29tcGxleAoJICAobWVtZW50b19v Zl9uZXdfcnZhbHVlX2Zyb21fY29uc3QgPF9Db21wbGV4IGRvdWJsZT4pIDog TmV3CgkgIChiaW5hcnlfb3A6Om1ha2VfZGVidWdfc3RyaW5nKSA6IEhhbmRs ZSBjb21wbGV4IG9wZXJhdG9yCgkqIGppdC1yZWNvcmRpbmcuYyA6IFJlcHJv ZHVjZXIsIGRlYnVnIHN0cmluZ3MsIGZvcndhcmRpbmcKCSogaml0LXJlY29y ZGluZy5oIDoKCSAgKGZsb2F0X3NpemVfcXVhbCkgOiBQb2xsIHNpemUgcXVh bGlmaWVyIG9mIGZsb2F0IHR5cGVzCgkgIChpc19jb21wbGV4KSA6IFBvbGwg aWYgdHlwZSBpcyBjb21wbGV4CgkqIGxpYmdjY2ppdCsrLmggOiBOZXcgZW50 cnlwb2ludHMsIHNlZSBiZWxvdwoJKiBsaWJnY2NqaXQuYyA6IEltcGxlbWVu dGF0aW9uIG9mIG5ldyBlbnRyeSBwb2ludHMsIHNlZSAuaAoJICAoZ2NjX2pp dF9jb250ZXh0X2dldF90eXBlKSA6IEV4dGVuZCByYW5nZSBjaGVjaywgdmFs aWRhdGlvbgoJICAodmFsaWRfYmluYXJ5X29wX3ApIDogRXh0ZW5kIHJhbmdl IGNoZWNrCgkgIChnY2Nfaml0X2NvbnRleHRfbmV3X2JpbmFyeV9vcCkgOiBW YWxpZGF0aW9uCgkgIChnY2Nfaml0X2NvbnRleHRfbmV3X3VuYXJ5X29wKSA6 IFZhbGlkYXRpb24KCSAgKGdjY19qaXRfY29udGV4dF9uZXdfY29tcGFyaXNv bikgOiBWYWxpZGF0aW9uCgkqIGxpYmdjY2ppdC5oIDoKCSAgKGdjY19qaXRf Y29udGV4dF9uZXdfcnZhbHVlX2Zyb21fY29tcGxleF9kb3VibGUpIDogTmV3 CgkgIChHQ0NfSklUX0JJTkFSWV9PUF9DT01QTEVYKSA6IE5ldwoJICAoTElC R0NDSklUX0hBVkVfQ09NUExFWCkgOiBOZXcKCSAgKGdjY19qaXRfY29udGV4 dF9zZXRfYm9vbF9lbmFibGVfY29tcGxleF90eXBlcykgOiBOZXcKCSogbGli Z2Njaml0Lm1hcCA6IEFkZGVkIG5ldyBlbnRyeXBvaW50cwoJICAoTElCR0ND SklUX0FCSV8yNikgOiBOZXcKCmdjYy90ZXN0c3VpdGUvCgkqIGppdC5kZy90 ZXN0LWNvbXBsZXgtYnVpbHRpbnMuYyA6IE5ldwoJKiBqaXQuZGcvdGVzdC1j b21wbGV4LWxpdGVyYWxzLmMgOiBOZXcKCSogaml0LmRnL3Rlc3QtY29tcGxl eC1taXNjLmMgOiBOZXcKCSogaml0LmRnL3Rlc3QtY29tcGxleC1vcGVyYXRv cnMuYyA6IE5ldwoJKiBqaXQuZGcvdGVzdC1jb21wbGV4LXR5cGVzLmMgOiBO ZXcKCSogaml0LmRnL3Rlc3QtZXJyb3ItY29tcGxleC1ub2VuYWJsZS5jIDog TmV3CgpnY2Mvaml0L2RvY3MvdG9waWNzLwoJKiBjb21wYXRpYmlsaXR5LnJz dCA6IFVwZGF0ZSBkb2NzCgkqIGNvbnRleHRzLnJzdAoJKiBleHByZXNzaW9u cy5yc3QKCSogdHlwZXMucnN0Ci0tLQogZ2NjL2ppdC9kb2NzL3RvcGljcy9j b21wYXRpYmlsaXR5LnJzdCAgICAgICAgIHwgIDE2ICsKIGdjYy9qaXQvZG9j cy90b3BpY3MvY29udGV4dHMucnN0ICAgICAgICAgICAgICB8ICAyMSArLQog Z2NjL2ppdC9kb2NzL3RvcGljcy9leHByZXNzaW9ucy5yc3QgICAgICAgICAg IHwgMTI0ICsrLS0KIGdjYy9qaXQvZG9jcy90b3BpY3MvdHlwZXMucnN0ICAg ICAgICAgICAgICAgICB8ICAxMiArLQogZ2NjL2ppdC9qaXQtY29tbW9uLmgg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBnY2Mvaml0L2pp dC1wbGF5YmFjay5jYyAgICAgICAgICAgICAgICAgICAgICAgfCAxNjUgKysr Ky0KIGdjYy9qaXQvaml0LXJlY29yZGluZy5jYyAgICAgICAgICAgICAgICAg ICAgICB8IDEyNCArKystCiBnY2Mvaml0L2ppdC1yZWNvcmRpbmcuaCAgICAg ICAgICAgICAgICAgICAgICAgfCAgMzAgKwogZ2NjL2ppdC9saWJnY2NqaXQr Ky5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIxICsKIGdjYy9qaXQv bGliZ2Njaml0LmNjICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4OSAr Ky0KIGdjYy9qaXQvbGliZ2Njaml0LmggICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICA0NCArLQogZ2NjL2ppdC9saWJnY2NqaXQubWFwICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICA2ICsKIGdjYy90ZXN0c3VpdGUvaml0LmRn L2FsbC1ub24tZmFpbGluZy10ZXN0cy5oICB8ICAzMCArCiBnY2MvdGVzdHN1 aXRlL2ppdC5kZy90ZXN0LWNvbXBsZXgtYnVpbHRpbnMuYyAgfCAyMTcgKysr KysrCiBnY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWNvbXBsZXgtbGl0ZXJh bHMuYyAgfCAxNDUgKysrKwogZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1j b21wbGV4LW1pc2MuYyAgICAgIHwgMjA0ICsrKysrKwogZ2NjL3Rlc3RzdWl0 ZS9qaXQuZGcvdGVzdC1jb21wbGV4LW9wZXJhdG9ycy5jIHwgMzUzICsrKysr KysrKwogZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1jb21wbGV4LXR5cGVz LmMgICAgIHwgNjc3ICsrKysrKysrKysrKysrKysrKwogLi4uL2ppdC5kZy90 ZXN0LWVycm9yLWNvbXBsZXgtbm9lbmFibGUuYyAgICAgIHwgIDMxICsKIDE5 IGZpbGVzIGNoYW5nZWQsIDIyNDYgaW5zZXJ0aW9ucygrKSwgNjUgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9qaXQu ZGcvdGVzdC1jb21wbGV4LWJ1aWx0aW5zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWNvbXBsZXgtbGl0ZXJhbHMu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvaml0LmRnL3Rl c3QtY29tcGxleC1taXNjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2ppdC5kZy90ZXN0LWNvbXBsZXgtb3BlcmF0b3JzLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWNvbXBs ZXgtdHlwZXMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv aml0LmRnL3Rlc3QtZXJyb3ItY29tcGxleC1ub2VuYWJsZS5jCgpkaWZmIC0t Z2l0IGEvZ2NjL2ppdC9kb2NzL3RvcGljcy9jb21wYXRpYmlsaXR5LnJzdCBi L2djYy9qaXQvZG9jcy90b3BpY3MvY29tcGF0aWJpbGl0eS5yc3QKaW5kZXgg ZWJlZGU0NDBlZTQuLjY5MjJhMmY2N2U5IDEwMDY0NAotLS0gYS9nY2Mvaml0 L2RvY3MvdG9waWNzL2NvbXBhdGliaWxpdHkucnN0CisrKyBiL2djYy9qaXQv ZG9jcy90b3BpY3MvY29tcGF0aWJpbGl0eS5yc3QKQEAgLTM3OCwzICszNzgs MTkgQEAgYWxpZ25tZW50IG9mIGEgdmFyaWFibGU6CiAtLS0tLS0tLS0tLS0t LS0tLS0tLQogYGBMSUJHQ0NKSVRfQUJJXzI1YGAgY292ZXJzIHRoZSBhZGRp dGlvbiBvZgogOmZ1bmM6YGdjY19qaXRfdHlwZV9nZXRfcmVzdHJpY3RgCisK Ky4uIF9MSUJHQ0NKSVRfQUJJXzI2OgorCitgYExJQkdDQ0pJVF9BQklfMjZg YAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2BgTElCR0NDSklUX0FCSV8yNmBg IGNvdmVycyB0aGUgYWRkaXRpb24gb2Ygc3VwcG9ydCBmb3IgY29tcGxleCB0 eXBlcywKK2xpdGVyYWxzIGZvciBjb21wbGV4IHR5cGVzIGFzIHdlbGwgYXMg dGhlCitjb21wbGV4IGJpbmFyeSBvcGVyYXRvci4KKworTm90ZSB0aGF0IDpj Om1hY3JvOmBHQ0NfSklUX1RZUEVfQ09NUExFWF9GTE9BVGAgZXRjLiBleGlz dGVkIGluIGVhcmxpZXIKK0FCSTpzLCBidXQgd2VyZSBub3QgZnVuY3Rpb25h bC4KKworICAqICA6ZnVuYzpgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVf ZnJvbV9jb21wbGV4X2RvdWJsZWAKKyAgKiAgOmZ1bmM6YGdjY19qaXRfY29u dGV4dF9zZXRfYm9vbF9lbmFibGVfY29tcGxleF90eXBlc2AKKyAgKiAgOmM6 bWFjcm86YEdDQ19KSVRfQklOQVJZX09QX0NPTVBMRVhgCisKZGlmZiAtLWdp dCBhL2djYy9qaXQvZG9jcy90b3BpY3MvY29udGV4dHMucnN0IGIvZ2NjL2pp dC9kb2NzL3RvcGljcy9jb250ZXh0cy5yc3QKaW5kZXggYjIyZWIyYWE5ODMu LjI1NjFiMmJhZmE3IDEwMDY0NAotLS0gYS9nY2Mvaml0L2RvY3MvdG9waWNz L2NvbnRleHRzLnJzdAorKysgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2NvbnRl eHRzLnJzdApAQCAtNTAyLDcgKzUwMiwyNiBAQCBCb29sZWFuIG9wdGlvbnMK IAogICAgLi4gY29kZS1ibG9jazo6IGMKIAotICAgICAgI2lmZGVmIExJQkdD Q0pJVF9IQVZFX2djY19qaXRfY29udGV4dF9zZXRfYm9vbF9wcmludF9lcnJv cnNfdG9fc3RkZXJyCisgICAgICNpZmRlZiBMSUJHQ0NKSVRfSEFWRV9nY2Nf aml0X2NvbnRleHRfc2V0X2Jvb2xfcHJpbnRfZXJyb3JzX3RvX3N0ZGVycgor CisuLiBmdW5jdGlvbjo6IHZvaWRcCisgICAgICAgICAgICAgIGdjY19qaXRf Y29udGV4dF9zZXRfYm9vbF9lbmFibGVfY29tcGxleF90eXBlcyAoZ2NjX2pp dF9jb250ZXh0ICpjdHh0LFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYm9vbF92 YWx1ZSk7CisKKyAgIFRoaXMgb3B0aW9uIGNhbiBlbmFibGUgY29tcGxleCB0 eXBlIHN1cHBvcnQgaW4gbGliZ2Njaml0LiBCeSBkZWZhdWx0LAorICAgbm8g Y29tcGxleCB0eXBlcyBjYW4gYmUgdXNlZC4KKworICAgSWYgeW91IHVzZSBj b21wbGV4IHR5cGVzLCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgYnVpbHRp biBmdW5jdGlvbnMKKyAgIGBjcmVhbGAsIGBjaW1hZ2AgYW5kIGBjb25qYCBl dGMuIHdpdGggdGhlIGNvcnJlY3QgdHlwZSBzdWZmaXgsIHNpbmNlCisgICB0 aG9zZSBhcmUgaW5saW5lZCBpbnRvIHRoZSBjb2RlLCByYXRoZXIgdGhlbiBp bXBvcnRlZCBmdW5jdGlvbnMgZnJvbQorICAgdGhlIG1hdGggbGliIHdoaWNo IGFyZSBub3QuIFNlZSA6cmVmOmBnY2Nfaml0X2NvbnRleHRfZ2V0X2J1aWx0 aW5fZnVuY3Rpb25gLgorCisgICBUaGlzIGVudHJ5cG9pbnQgd2FzIGFkZGVk IGluIDpyZWY6YExJQkdDQ0pJVF9BQklfMjZgOyB5b3UgY2FuIHRlc3QgZm9y CisgICBpdHMgcHJlc2VuY2UgdXNpbmcKKworICAgLi4gY29kZS1ibG9jazo6 IGMKKworICAgICAgI2lmZGVmIExJQkdDQ0pJVF9IQVZFX0NPTVBMRVgKIAog SW50ZWdlciBvcHRpb25zCiAqKioqKioqKioqKioqKioKZGlmZiAtLWdpdCBh L2djYy9qaXQvZG9jcy90b3BpY3MvZXhwcmVzc2lvbnMucnN0IGIvZ2NjL2pp dC9kb2NzL3RvcGljcy9leHByZXNzaW9ucy5yc3QKaW5kZXggNDJjZmVlMzYz MDIuLjJhZjE5ZGNiZTI4IDEwMDY0NAotLS0gYS9nY2Mvaml0L2RvY3MvdG9w aWNzL2V4cHJlc3Npb25zLnJzdAorKysgYi9nY2Mvaml0L2RvY3MvdG9waWNz L2V4cHJlc3Npb25zLnJzdApAQCAtOTgsNiArOTgsMjIgQEAgU2ltcGxlIGV4 cHJlc3Npb25zCiAgICBHaXZlbiBhIG51bWVyaWMgdHlwZSAoaW50ZWdlciBv ciBmbG9hdGluZyBwb2ludCksIGJ1aWxkIGFuIHJ2YWx1ZSBmb3IKICAgIHRo ZSBnaXZlbiBjb25zdGFudCA6ZXhwcjpgZG91YmxlYCB2YWx1ZS4KIAorLi4g ZnVuY3Rpb246OiBnY2Nfaml0X3J2YWx1ZSAqXAorICAgICAgICAgICAgICBn Y2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2NvbXBsZXhfZG91Ymxl IChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2NjX2ppdF90eXBlICpudW1lcmljX3R5cGUsIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX0NvbXBsZXggZG91YmxlIHZhbHVlKQorCisgICBHaXZlbiBhIGZsb2F0 aW5nIHBvaW50IHR5cGUsIGJ1aWxkIGFuIHJ2YWx1ZSBmb3IKKyAgIHRoZSBn aXZlbiBjb25zdGFudCA6ZXhwcjpgX0NvbXBsZXggZG91YmxlYC4gV2hlbiB0 aGUgcmVzdWx0IHR5cGUgaXMKKyAgIG5vbi1jb21wbGV4LCB0aGUgaW1hZ2lu YXJ5IHBhcnQgaXMgZGlzY2FyZGVkLgorCisgICBUaGlzIGZ1bmN0aW9uIHdh cyBhZGRlZCBpbiA6cmVmOmBMSUJHQ0NKSVRfQUJJXzI2YDsKKyAgIHlvdSBj YW4gdGVzdCBmb3IgaXRzIHByZXNlbmNlIHVzaW5nCisKKyAgIC4uIGNvZGUt YmxvY2s6OiBjCisKKyAgICAgICNpZmRlZiBMSUJHQ0NKSVRfSEFWRV9DT01Q TEVYCisKIC4uIGZ1bmN0aW9uOjogZ2NjX2ppdF9ydmFsdWUgKlwKICAgICAg ICAgICAgICAgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9wdHIg KGdjY19qaXRfY29udGV4dCAqY3R4dCwgXAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NjX2ppdF90eXBl ICpwb2ludGVyX3R5cGUsIFwKQEAgLTMxMywyMCArMzI5LDE0IEBAIFVuYXJ5 IE9wZXJhdGlvbnMKIAogVGhlIGF2YWlsYWJsZSB1bmFyeSBvcGVyYXRpb25z IGFyZToKIAotLi4gbGlzdC10YWJsZTo6Ci0gICA6aGVhZGVyLXJvd3M6IDEK LQotICAgKiAtIFVuYXJ5IE9wZXJhdGlvbgotICAgICAtIEMgZXF1aXZhbGVu dAotCi0gICAqIC0gOmM6bWFjcm86YEdDQ19KSVRfVU5BUllfT1BfTUlOVVNg Ci0gICAgIC0gYC0oRVhQUilgCi0gICAqIC0gOmM6bWFjcm86YEdDQ19KSVRf VU5BUllfT1BfQklUV0lTRV9ORUdBVEVgCi0gICAgIC0gYH4oRVhQUilgCi0g ICAqIC0gOmM6bWFjcm86YEdDQ19KSVRfVU5BUllfT1BfTE9HSUNBTF9ORUdB VEVgCi0gICAgIC0gYCEoRVhQUilgCi0gICAqIC0gOmM6bWFjcm86YEdDQ19K SVRfVU5BUllfT1BfQUJTYAotICAgICAtIGBhYnMgKEVYUFIpYAorPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09 PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0KK1VuYXJ5IE9wZXJhdGlv biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQyBlcXVpdmFsZW50ICBT dXBwb3J0ZWQgdHlwZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PSAgPT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09 PT09PT09Cis6YzptYWNybzpgR0NDX0pJVF9VTkFSWV9PUF9NSU5VU2AgICAg ICAgICAgIGAtKEVYUFIpYCAgICAgaW50ZWdlciwgcmVhbCwgY29tcGxleAor OmM6bWFjcm86YEdDQ19KSVRfVU5BUllfT1BfQklUV0lTRV9ORUdBVEVgICBg fihFWFBSKWAgICAgIGludGVnZXIKKzpjOm1hY3JvOmBHQ0NfSklUX1VOQVJZ X09QX0xPR0lDQUxfTkVHQVRFYCAgYCEoRVhQUilgICAgICBpbnRlZ2VyCis6 YzptYWNybzpgR0NDX0pJVF9VTkFSWV9PUF9BQlNgICAgICAgICAgICAgIGBh YnMgKEVYUFIpYCAgaW50ZWdlciwgcmVhbAorPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT0gID09PT09 PT09PT09PT09PT09PT09PT0KIAogLi4gYzptYWNybzo6IEdDQ19KSVRfVU5B UllfT1BfTUlOVVMKIApAQCAtMzg2LDM2ICszOTYsMjMgQEAgQmluYXJ5IE9w ZXJhdGlvbnMKIAogVGhlIGF2YWlsYWJsZSBiaW5hcnkgb3BlcmF0aW9ucyBh cmU6CiAKLS4uIGxpc3QtdGFibGU6OgotICAgOmhlYWRlci1yb3dzOiAxCi0K LSAgICogLSBCaW5hcnkgT3BlcmF0aW9uCi0gICAgIC0gQyBlcXVpdmFsZW50 Ci0KLSAgICogLSA6YzptYWNybzpgR0NDX0pJVF9CSU5BUllfT1BfUExVU2AK LSAgICAgLSBgeCArIHlgCi0gICAqIC0gOmM6bWFjcm86YEdDQ19KSVRfQklO QVJZX09QX01JTlVTYAotICAgICAtIGB4IC0geWAKLSAgICogLSA6YzptYWNy bzpgR0NDX0pJVF9CSU5BUllfT1BfTVVMVGAKLSAgICAgLSBgeCAqIHlgCi0g ICAqIC0gOmM6bWFjcm86YEdDQ19KSVRfQklOQVJZX09QX0RJVklERWAKLSAg ICAgLSBgeCAvIHlgCi0gICAqIC0gOmM6bWFjcm86YEdDQ19KSVRfQklOQVJZ X09QX01PRFVMT2AKLSAgICAgLSBgeCAlIHlgCi0gICAqIC0gOmM6bWFjcm86 YEdDQ19KSVRfQklOQVJZX09QX0JJVFdJU0VfQU5EYAotICAgICAtIGB4ICYg eWAKLSAgICogLSA6YzptYWNybzpgR0NDX0pJVF9CSU5BUllfT1BfQklUV0lT RV9YT1JgCi0gICAgIC0gYHggXiB5YAotICAgKiAtIDpjOm1hY3JvOmBHQ0Nf SklUX0JJTkFSWV9PUF9CSVRXSVNFX09SYAotICAgICAtIGB4IHwgeWAKLSAg ICogLSA6YzptYWNybzpgR0NDX0pJVF9CSU5BUllfT1BfTE9HSUNBTF9BTkRg Ci0gICAgIC0gYHggJiYgeWAKLSAgICogLSA6YzptYWNybzpgR0NDX0pJVF9C SU5BUllfT1BfTE9HSUNBTF9PUmAKLSAgICAgLSBgeCB8fCB5YAotICAgKiAt IDpjOm1hY3JvOmBHQ0NfSklUX0JJTkFSWV9PUF9MU0hJRlRgCi0gICAgIC0g YHggPDwgeWAKLSAgICogLSA6YzptYWNybzpgR0NDX0pJVF9CSU5BUllfT1Bf UlNISUZUYAotICAgICAtIGB4ID4+IHlgCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT0gPT09PT09 PT09PT09PT09PT09PT09PT0KK0JpbmFyeSBPcGVyYXRpb24gICAgICAgICAg ICAgICAgICAgICAgICAgIEMgZXF1aXZhbGVudCAgICBTdXBwb3J0ZWQgb3Bl cmFuZCB0eXBlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSAgPT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09 PT09Cis6YzptYWNybzpgR0NDX0pJVF9CSU5BUllfT1BfUExVU2AgICAgICAg ICBgeCArIHlgICAgICAgICAgaW50ZWdlciwgcmVhbCwgY29tcGxleAorOmM6 bWFjcm86YEdDQ19KSVRfQklOQVJZX09QX01JTlVTYCAgICAgICAgYHggLSB5 YCAgICAgICAgIGludGVnZXIsIHJlYWwsIGNvbXBsZXgKKzpjOm1hY3JvOmBH Q0NfSklUX0JJTkFSWV9PUF9NVUxUYCAgICAgICAgIGB4ICogeWAgICAgICAg ICBpbnRlZ2VyLCByZWFsLCBjb21wbGV4Cis6YzptYWNybzpgR0NDX0pJVF9C SU5BUllfT1BfRElWSURFYCAgICAgICBgeCAvIHlgICAgICAgICAgaW50ZWdl ciwgcmVhbCwgY29tcGxleAorOmM6bWFjcm86YEdDQ19KSVRfQklOQVJZX09Q X01PRFVMT2AgICAgICAgYHggJSB5YCAgICAgICAgIGludGVnZXIKKzpjOm1h Y3JvOmBHQ0NfSklUX0JJTkFSWV9PUF9CSVRXSVNFX0FORGAgIGB4ICYgeWAg ICAgICAgICBpbnRlZ2VyCis6YzptYWNybzpgR0NDX0pJVF9CSU5BUllfT1Bf QklUV0lTRV9YT1JgICBgeCBeIHlgICAgICAgICAgaW50ZWdlcgorOmM6bWFj cm86YEdDQ19KSVRfQklOQVJZX09QX0JJVFdJU0VfT1JgICAgYHggfCB5YCAg ICAgICAgIGludGVnZXIKKzpjOm1hY3JvOmBHQ0NfSklUX0JJTkFSWV9PUF9M T0dJQ0FMX0FORGAgIGB4ICYmIHlgICAgICAgICBpbnRlZ2VyCis6YzptYWNy bzpgR0NDX0pJVF9CSU5BUllfT1BfTE9HSUNBTF9PUmAgICBgeCB8fCB5YCAg ICAgICAgaW50ZWdlcgorOmM6bWFjcm86YEdDQ19KSVRfQklOQVJZX09QX0xT SElGVGAgICAgICAgYHggPDwgeWAgICAgICAgIGludGVnZXIKKzpjOm1hY3Jv OmBHQ0NfSklUX0JJTkFSWV9PUF9SU0hJRlRgICAgICAgIGB4ID4+IHlgICAg ICAgICBpbnRlZ2VyCis6YzptYWNybzpgR0NDX0pJVF9CSU5BUllfT1BfQ09N UExFWGAgICAgICBgQ01QTFggKHIsIGkpYCAgcmVhbAorPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09 ID09PT09PT09PT09PT09PT09PT09PT09CiAKIC4uIGM6bWFjcm86OiBHQ0Nf SklUX0JJTkFSWV9PUF9QTFVTCiAKQEAgLTU0Myw2ICs1NDAsMzEgQEAgVGhl IGF2YWlsYWJsZSBiaW5hcnkgb3BlcmF0aW9ucyBhcmU6CiAKICAgIGluIEMu CiAKKy4uIGM6bWFjcm86OiBHQ0NfSklUX0JJTkFSWV9PUF9DT01QTEVYCisK KyAgIENyZWF0ZSBhIGNvbXBsZXggZmxvYXRpbmcgcG9pbnQgdmFsdWUgZnJv bQorICAgdHdvIHJlYWwgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIHdpdGggdGhl IHNhbWUKKyAgIHNpemUgcXVhbGlmaWVyIGFzIHRoZSBjb21wbGV4IHJlc3Vs dCB0eXBlLgorICAgSS5lIHR3byBmbG9hdHMgZm9yIGEgX0NvbXBsZXggZmxv YXQsIGV0Yy4KKworICAgQW5hbG9nb3VzIHRvOgorCisgICAuLiBjb2RlLWJs b2NrOjogYworICAgICBDTVBMWCAocmVhbCxpbWFnKQorCisgICBpbiBDLgor CisgICBUaGUgZmlyc3Qgb3BlcmFuZCBpcyB0aGUgcmVhbCBwYXJ0LCB0aGUg b3RoZXIKKyAgIHRoZSBpbWFnaW5hcnkuIE5lZ2F0aXZlIHplcm9lcyBhcmUg cHJlc2VydmVkCisgICBhbmQgSW5mOnMgZG8gbm90IGxlYWQgdG8gTmFOcy4K KworICAgVGhpcyBvcGVyYXRvciAgd2FzIGFkZGVkIGluIExJQkdDQ0pJVF9B QklfMjY7CisgICB5b3UgY2FuIHRlc3QgZm9yIGl0cyBwcmVzZW5jZSB1c2lu ZworCisgICAuLiBjb2RlLWJsb2NrOjogYworCisgICAgICAjaWZkZWYgTElC R0NDSklUX0hBVkVfQ09NUExFWAorCiBDb21wYXJpc29ucwogKioqKioqKioq KioKIApAQCAtNTc1LDYgKzU5Nyw5IEBAIENvbXBhcmlzb25zCiAgICAqIC0g OmM6bWFjcm86YEdDQ19KSVRfQ09NUEFSSVNPTl9HRWAKICAgICAgLSBgeCA+ PSB5YAogCisKK05vdGU6IE9ubHkgYD09YCBhbmQgYCE9YCBhcmUgZGVmaW5l ZCBmb3IgY29tcGxleCB0eXBlcy4KKwogRnVuY3Rpb24gY2FsbHMKICoqKioq KioqKioqKioqCiAuLiBmdW5jdGlvbjo6IGdjY19qaXRfcnZhbHVlICpcCkBA IC02NzYsMTAgKzcwMSwxNyBAQCBUeXBlLWNvZXJjaW9uCiAKICAgIEN1cnJl bnRseSBvbmx5IGEgbGltaXRlZCBzZXQgb2YgY29udmVyc2lvbnMgYXJlIHBv c3NpYmxlOgogCi0gICAgICogaW50IDwtPiBmbG9hdAotICAgICAqIGludCA8 LT4gYm9vbAorICAgICAqIGludGVnZXIgPC0+IGludGVnZXIKKyAgICAgKiBm bG9hdGluZyBwb2ludCA8LT4gZmxvYXRpbmcgcG9pbnQKKyAgICAgKiBpbnRl Z2VyIDwtPiBmbG9hdGluZyBwb2ludAorICAgICAqIGludGVnZXIgPC0+IGJv b2wKICAgICAgKiBQKiAgPC0+IFEqLCBmb3IgcG9pbnRlciB0eXBlcyBQIGFu ZCBRCiAKKyAgIE5vdGU6ICJmbG9hdGluZyBwb2ludCIgaW5jbHVkZXMgY29t cGxleCB0eXBlcy4KKworICAgV2hlbiBhIGNvbXBsZXggdHlwZSBpcyBjb252 ZXJ0ZWQgdG8gYSBub24tY29tcGxleCB0eXBlLCB0aGUKKyAgIGltYWdpbmFy eSBwYXJ0IGlzIGRpc2NhcmRlZC4KKwogLi4gZnVuY3Rpb246OiBnY2Nfaml0 X3J2YWx1ZSAqXAogICAgICAgICAgICAgICBnY2Nfaml0X2NvbnRleHRfbmV3 X2JpdGNhc3QgKGdjY19qaXRfY29udGV4dCAqY3R4dCxcCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NjX2ppdF9sb2Nh dGlvbiAqbG9jLFwKZGlmZiAtLWdpdCBhL2djYy9qaXQvZG9jcy90b3BpY3Mv dHlwZXMucnN0IGIvZ2NjL2ppdC9kb2NzL3RvcGljcy90eXBlcy5yc3QKaW5k ZXggZDhjMWQxNWQ2OWQuLjQ1ODE2NDAzZWIxIDEwMDY0NAotLS0gYS9nY2Mv aml0L2RvY3MvdG9waWNzL3R5cGVzLnJzdAorKysgYi9nY2Mvaml0L2RvY3Mv dG9waWNzL3R5cGVzLnJzdApAQCAtMTI0LDExICsxMjQsMTcgQEAgU3RhbmRh cmQgdHlwZXMKICAgICAgKiAtIDpjOmRhdGE6YEdDQ19KSVRfVFlQRV9GSUxF X1BUUmAKICAgICAgICAtIEMgdHlwZTogYGAoRklMRSAqKWBgCiAgICAgICog LSA6YzpkYXRhOmBHQ0NfSklUX1RZUEVfQ09NUExFWF9GTE9BVGAKLSAgICAg ICAtIEM5OSdzIGBgX0NvbXBsZXggZmxvYXRgYAorICAgICAgIC0gQzk5J3Mg YGBfQ29tcGxleCBmbG9hdGBgLCBBQkkgMjYKICAgICAgKiAtIDpjOmRhdGE6 YEdDQ19KSVRfVFlQRV9DT01QTEVYX0RPVUJMRWAKLSAgICAgICAtIEM5OSdz IGBgX0NvbXBsZXggZG91YmxlYGAKKyAgICAgICAtIEM5OSdzIGBgX0NvbXBs ZXggZG91YmxlYGAsIEFCSSAyNgogICAgICAqIC0gOmM6ZGF0YTpgR0NDX0pJ VF9UWVBFX0NPTVBMRVhfTE9OR19ET1VCTEVgCi0gICAgICAgLSBDOTkncyBg YF9Db21wbGV4IGxvbmcgZG91YmxlYGAKKyAgICAgICAtIEM5OSdzIGBgX0Nv bXBsZXggbG9uZyBkb3VibGVgYCwgQUJJIDI2CisKKyAgIFRoZSBjb21wbGV4 IHR5cGVzIGFyZSBhdmFpbGFibGUgZnJvbSA6cmVmOmBMSUJHQ0NKSVRfQUJJ XzI2YCBhZnRlcgorICAgc2V0dGluZyA6cmVmOmBnY2Nfaml0X2NvbnRleHRf c2V0X2Jvb2xfZW5hYmxlX2NvbXBsZXhfdHlwZXNgLgorCisgICBZb3UgY2Fu IHRlc3QgZm9yIGNvbXBsZXggdHlwZXMgc3VwcG9ydCB3aXRoIHRoZSBkZWZp bmUKKyAgIGAjaWZkZWYgTElCR0NDSklUX0hBVkVfQ09NUExFWGAuCiAKIC4u IGZ1bmN0aW9uOjogZ2NjX2ppdF90eXBlICpcCiAgICAgICAgICAgICAgIGdj Y19qaXRfY29udGV4dF9nZXRfaW50X3R5cGUgKGdjY19qaXRfY29udGV4dCAq Y3R4dCwgXApkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9qaXQtY29tbW9uLmggYi9n Y2Mvaml0L2ppdC1jb21tb24uaAppbmRleCA4MGMxNjE4ZGE5Ni4uYWYwODVi MjY3MWIgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvaml0LWNvbW1vbi5oCisrKyBi L2djYy9qaXQvaml0LWNvbW1vbi5oCkBAIC0xOTksNyArMTk5LDcgQEAgZW51 bSBpbm5lcl9ib29sX29wdGlvbgogICBJTk5FUl9CT09MX09QVElPTl9BTExP V19VTlJFQUNIQUJMRV9CTE9DS1MsCiAgIElOTkVSX0JPT0xfT1BUSU9OX1VT RV9FWFRFUk5BTF9EUklWRVIsCiAgIElOTkVSX0JPT0xfT1BUSU9OX1BSSU5U X0VSUk9SU19UT19TVERFUlIsCi0KKyAgSU5ORVJfQk9PTF9PUFRJT05fRU5B QkxFX0NPTVBMRVhfVFlQRVMsCiAgIE5VTV9JTk5FUl9CT09MX09QVElPTlMK IH07CiAKZGlmZiAtLWdpdCBhL2djYy9qaXQvaml0LXBsYXliYWNrLmNjIGIv Z2NjL2ppdC9qaXQtcGxheWJhY2suY2MKaW5kZXggMThjYzRkYTI1YjguLjQ5 ZWExMGZkMWNiIDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1wbGF5YmFjay5j YworKysgYi9nY2Mvaml0L2ppdC1wbGF5YmFjay5jYwpAQCAtNDEsNiArNDEs NyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAg SWYgbm90IHNlZQogI2luY2x1ZGUgImdjYy5oIgogI2luY2x1ZGUgImRpYWdu b3N0aWMuaCIKICNpbmNsdWRlICJzdG10LmgiCisjaW5jbHVkZSAiY29tcGxl eC5oIgogCiAjaW5jbHVkZSAiaml0LXBsYXliYWNrLmgiCiAjaW5jbHVkZSAi aml0LXJlc3VsdC5oIgpAQCAtNzcsNiArNzgsOCBAQCBjb252ZXJ0ICh0cmVl IGRzdF90eXBlLCB0cmVlIGV4cHIpCiAgICAgY2FzZSBJTlRFR0VSX1RZUEU6 CiAgICAgY2FzZSBFTlVNRVJBTF9UWVBFOgogICAgICAgcmV0dXJuIGZvbGQg KGNvbnZlcnRfdG9faW50ZWdlciAoZHN0X3R5cGUsIGV4cHIpKTsKKyAgICBj YXNlIFJFQUxfVFlQRToKKyAgICAgIHJldHVybiBmb2xkIChjb252ZXJ0X3Rv X3JlYWwgKGRzdF90eXBlLCBleHByKSk7CiAKICAgICBkZWZhdWx0OgogICAg ICAgZ2NjX2Fzc2VydCAoZ2NjOjpqaXQ6OmFjdGl2ZV9wbGF5YmFja19jdHh0 KTsKQEAgLTg3Myw2ICs4NzYsMjQgQEAgbmV3X2dsb2JhbF9pbml0aWFsaXpl ZCAobG9jYXRpb24gKmxvYywKIG5hbWVzcGFjZSBwbGF5YmFjawogewogCisv KiBSZXR1cm4gdGhlIGNvcnJlbnNwb25kaW5nIG5vdCBjb21wbGV4IGZsb2F0 IHR5cGUgb2YgYQorICAgZmxvYXQgdHlwZS4gSS5lLiBjb21wbGV4IGZsb2F0 IC0+IGZsb2F0ICovCitzdGF0aWMgdHJlZQorY29tcGxleF9yZWFsX3RvX3Jl YWwgKHRyZWUgY29tcGxleF90eXBlKQoreworICBpZiAoVFlQRV9DQU5PTklD QUwgKGNvbXBsZXhfdHlwZSkgPT0KKyAgICAgIFRZUEVfQ0FOT05JQ0FMIChj b21wbGV4X2Zsb2F0X3R5cGVfbm9kZSkpCisgICAgcmV0dXJuIGZsb2F0X3R5 cGVfbm9kZTsKKyAgZWxzZSBpZiAoVFlQRV9DQU5PTklDQUwgKGNvbXBsZXhf dHlwZSkgPT0KKwkgICBUWVBFX0NBTk9OSUNBTCAoY29tcGxleF9kb3VibGVf dHlwZV9ub2RlKSkKKyAgICByZXR1cm4gZG91YmxlX3R5cGVfbm9kZTsKKyAg ZWxzZSBpZiAoVFlQRV9DQU5PTklDQUwgKGNvbXBsZXhfdHlwZSkgPT0KKwkg ICBUWVBFX0NBTk9OSUNBTCAoY29tcGxleF9sb25nX2RvdWJsZV90eXBlX25v ZGUpKQorICAgIHJldHVybiBsb25nX2RvdWJsZV90eXBlX25vZGU7CisgIGVs c2UKKyAgICBnY2NfdW5yZWFjaGFibGUoKTsKK30KKwogLyogU3BlY2lhbGl6 YXRpb24gb2YgbWFraW5nIGFuIHJ2YWx1ZSBmcm9tIGEgY29uc3QsIGZvciBo b3N0IDxpbnQ+LiAgKi8KIAogdGVtcGxhdGUgPD4KQEAgLTg4OCw2ICs5MDks MjUgQEAgbmV3X3J2YWx1ZV9mcm9tX2NvbnN0IDxpbnQ+ICh0eXBlICp0eXBl LAogICAgICAgdHJlZSBpbm5lciA9IGJ1aWxkX2ludF9jc3QgKGlubmVyX3R5 cGUsIHZhbHVlKTsKICAgICAgIHJldHVybiBuZXcgcnZhbHVlICh0aGlzLCBp bm5lcik7CiAgICAgfQorICBlbHNlIGlmIChDT01QTEVYX0ZMT0FUX1RZUEVf UCAoaW5uZXJfdHlwZSkpCisgICAgeworICAgICAgdHJlZSB0cmVlX3JlYWw7 CisgICAgICB0cmVlIHRyZWVfaW1hZzsKKyAgICAgIHRyZWUgcmVhbF90eXBl OworICAgICAgUkVBTF9WQUxVRV9UWVBFIHJlYWxfdmFsdWU7CisgICAgICBS RUFMX1ZBTFVFX1RZUEUgaW1hZ192YWx1ZTsKKworICAgICAgcmVhbF90eXBl ID0gY29tcGxleF9yZWFsX3RvX3JlYWwgKGlubmVyX3R5cGUpOworCisgICAg ICByZWFsX2Zyb21faW50ZWdlciAoJnJlYWxfdmFsdWUsIFZPSURtb2RlLCB2 YWx1ZSwgU0lHTkVEKTsKKyAgICAgIHJlYWxfZnJvbV9pbnRlZ2VyICgmaW1h Z192YWx1ZSwgVk9JRG1vZGUsIDAsIFNJR05FRCk7CisKKyAgICAgIHRyZWVf cmVhbCA9IGJ1aWxkX3JlYWwgKHJlYWxfdHlwZSwgcmVhbF92YWx1ZSk7Cisg ICAgICB0cmVlX2ltYWcgPSBidWlsZF9yZWFsIChyZWFsX3R5cGUsIGltYWdf dmFsdWUpOworCisgICAgICB0cmVlIGlubmVyID0gYnVpbGRfY29tcGxleCAo aW5uZXJfdHlwZSwgdHJlZV9yZWFsLCB0cmVlX2ltYWcpOworICAgICAgcmV0 dXJuIG5ldyBydmFsdWUgKHRoaXMsIGlubmVyKTsKKyAgICB9CiAgIGVsc2UK ICAgICB7CiAgICAgICBSRUFMX1ZBTFVFX1RZUEUgcmVhbF92YWx1ZTsKQEAg LTkxMiw2ICs5NTIsMjUgQEAgbmV3X3J2YWx1ZV9mcm9tX2NvbnN0IDxsb25n PiAodHlwZSAqdHlwZSwKICAgICAgIHRyZWUgaW5uZXIgPSBidWlsZF9pbnRf Y3N0IChpbm5lcl90eXBlLCB2YWx1ZSk7CiAgICAgICByZXR1cm4gbmV3IHJ2 YWx1ZSAodGhpcywgaW5uZXIpOwogICAgIH0KKyAgZWxzZSBpZiAoQ09NUExF WF9GTE9BVF9UWVBFX1AgKGlubmVyX3R5cGUpKQorICAgIHsKKyAgICAgIHRy ZWUgdHJlZV9yZWFsOworICAgICAgdHJlZSB0cmVlX2ltYWc7CisgICAgICB0 cmVlIHJlYWxfdHlwZTsKKyAgICAgIFJFQUxfVkFMVUVfVFlQRSByZWFsX3Zh bHVlOworICAgICAgUkVBTF9WQUxVRV9UWVBFIGltYWdfdmFsdWU7CisKKyAg ICAgIHJlYWxfdHlwZSA9IGNvbXBsZXhfcmVhbF90b19yZWFsIChpbm5lcl90 eXBlKTsKKworICAgICAgcmVhbF9mcm9tX2ludGVnZXIgKCZyZWFsX3ZhbHVl LCBWT0lEbW9kZSwgdmFsdWUsIFNJR05FRCk7CisgICAgICByZWFsX2Zyb21f aW50ZWdlciAoJmltYWdfdmFsdWUsIFZPSURtb2RlLCAwLCBTSUdORUQpOwor CisgICAgICB0cmVlX3JlYWwgPSBidWlsZF9yZWFsIChyZWFsX3R5cGUsIHJl YWxfdmFsdWUpOworICAgICAgdHJlZV9pbWFnID0gYnVpbGRfcmVhbCAocmVh bF90eXBlLCBpbWFnX3ZhbHVlKTsKKworICAgICAgdHJlZSBpbm5lciA9IGJ1 aWxkX2NvbXBsZXggKGlubmVyX3R5cGUsIHRyZWVfcmVhbCwgdHJlZV9pbWFn KTsKKyAgICAgIHJldHVybiBuZXcgcnZhbHVlICh0aGlzLCBpbm5lcik7Cisg ICAgfQogICBlbHNlCiAgICAgewogICAgICAgUkVBTF9WQUxVRV9UWVBFIHJl YWxfdmFsdWU7CkBAIC05MzcsMTkgKzk5NiwxMDQgQEAgbmV3X3J2YWx1ZV9m cm9tX2NvbnN0IDxkb3VibGU+ICh0eXBlICp0eXBlLAogICAgICByZWFsLmNj OnJlYWxfZnJvbV90YXJnZXQgYXBwZWFycyB0byByZXF1aXJlIHRoZSByZXBy ZXNlbnRhdGlvbiB0byBiZQogICAgICBzcGxpdCBpbnRvIDMyLWJpdCB2YWx1 ZXMsIGFuZCB0aGVuIHNlbnQgYXMgYW4gcGFpciBvZiBob3N0IGxvbmcKICAg ICAgaW50cy4gICovCisKKyAgdW5pb24KKyAgeworICAgIGRvdWJsZSBhc19k b3VibGU7CisgICAgdWludDMyX3QgYXNfdWludDMyc1syXTsKKyAgfSB1X3Jl YWwsIHVfaW1hZzsKKworICB1X3JlYWwuYXNfZG91YmxlID0gdmFsdWU7Cisg IGxvbmcgaW50IGFzX2xvbmdfaW50c1syXTsKKyAgYXNfbG9uZ19pbnRzWzBd ID0gdV9yZWFsLmFzX3VpbnQzMnNbMF07CisgIGFzX2xvbmdfaW50c1sxXSA9 IHVfcmVhbC5hc191aW50MzJzWzFdOworCiAgIFJFQUxfVkFMVUVfVFlQRSBy ZWFsX3ZhbHVlOworICByZWFsX2Zyb21fdGFyZ2V0ICgmcmVhbF92YWx1ZSwg YXNfbG9uZ19pbnRzLCBERm1vZGUpOworCisgIGlmIChDT01QTEVYX0ZMT0FU X1RZUEVfUCAoaW5uZXJfdHlwZSkpCisgICAgeworICAgICAgdHJlZSB0cmVl X3JlYWw7CisgICAgICB0cmVlIHRyZWVfaW1hZzsKKyAgICAgIHRyZWUgcmVh bF90eXBlOworCisgICAgICBSRUFMX1ZBTFVFX1RZUEUgaW1hZ192YWx1ZTsK KworICAgICAgbG9uZyBpbnQgemVyb19hc19sb25nX2ludHNbMl07CisgICAg ICB1X2ltYWcuYXNfZG91YmxlID0gMC47CisgICAgICB6ZXJvX2FzX2xvbmdf aW50c1swXSA9IHVfaW1hZy5hc191aW50MzJzWzBdOworICAgICAgemVyb19h c19sb25nX2ludHNbMV0gPSB1X2ltYWcuYXNfdWludDMyc1sxXTsKKworICAg ICAgcmVhbF9mcm9tX3RhcmdldCAoJmltYWdfdmFsdWUsIHplcm9fYXNfbG9u Z19pbnRzLCBERm1vZGUpOworCisgICAgICByZWFsX3R5cGUgPSBjb21wbGV4 X3JlYWxfdG9fcmVhbCAoaW5uZXJfdHlwZSk7CisKKyAgICAgIHRyZWVfcmVh bCA9IGJ1aWxkX3JlYWwgKHJlYWxfdHlwZSwgcmVhbF92YWx1ZSk7CisgICAg ICB0cmVlX2ltYWcgPSBidWlsZF9yZWFsIChyZWFsX3R5cGUsIGltYWdfdmFs dWUpOworCisgICAgICB0cmVlIGlubmVyID0gYnVpbGRfY29tcGxleCAoaW5u ZXJfdHlwZSwgdHJlZV9yZWFsLCB0cmVlX2ltYWcpOworICAgICAgcmV0dXJu IG5ldyBydmFsdWUgKHRoaXMsIGlubmVyKTsKKyAgICB9CisgIGVsc2UKKyAg ICB7CisgICAgICB0cmVlIGlubmVyID0gYnVpbGRfcmVhbCAoaW5uZXJfdHlw ZSwgcmVhbF92YWx1ZSk7CisgICAgICByZXR1cm4gbmV3IHJ2YWx1ZSAodGhp cywgaW5uZXIpOworICAgIH0KK30KKworLyogU3BlY2lhbGl6YXRpb24gb2Yg bWFraW5nIGFuIHJ2YWx1ZSBmcm9tIGEgY29uc3QsCisgICBmb3IgaG9zdCA8 ZG91YmxlIF9Db21wbGV4Pi4gKi8KKwordGVtcGxhdGUgPD4KK3J2YWx1ZSAq Citjb250ZXh0OjoKK25ld19ydmFsdWVfZnJvbV9jb25zdCA8X0NvbXBsZXgg ZG91YmxlPiAodHlwZSAqdHlwZSwKKwkJCQkJIF9Db21wbGV4IGRvdWJsZSAg dmFsdWUpCit7CisgIHRyZWUgaW5uZXJfdHlwZSA9IHR5cGUtPmFzX3RyZWUg KCk7CisKICAgdW5pb24KICAgewogICAgIGRvdWJsZSBhc19kb3VibGU7CiAg ICAgdWludDMyX3QgYXNfdWludDMyc1syXTsKLSAgfSB1OwotICB1LmFzX2Rv dWJsZSA9IHZhbHVlOworICB9IHVfcmVhbCwgdV9pbWFnOworCisgIHVfcmVh bC5hc19kb3VibGUgPSBjcmVhbCh2YWx1ZSk7CiAgIGxvbmcgaW50IGFzX2xv bmdfaW50c1syXTsKLSAgYXNfbG9uZ19pbnRzWzBdID0gdS5hc191aW50MzJz WzBdOwotICBhc19sb25nX2ludHNbMV0gPSB1LmFzX3VpbnQzMnNbMV07Cisg IGFzX2xvbmdfaW50c1swXSA9IHVfcmVhbC5hc191aW50MzJzWzBdOworICBh c19sb25nX2ludHNbMV0gPSB1X3JlYWwuYXNfdWludDMyc1sxXTsKKworICBS RUFMX1ZBTFVFX1RZUEUgcmVhbF92YWx1ZTsKICAgcmVhbF9mcm9tX3Rhcmdl dCAoJnJlYWxfdmFsdWUsIGFzX2xvbmdfaW50cywgREZtb2RlKTsKLSAgdHJl ZSBpbm5lciA9IGJ1aWxkX3JlYWwgKGlubmVyX3R5cGUsIHJlYWxfdmFsdWUp OwotICByZXR1cm4gbmV3IHJ2YWx1ZSAodGhpcywgaW5uZXIpOworCisgIGlm IChDT01QTEVYX0ZMT0FUX1RZUEVfUCAoaW5uZXJfdHlwZSkpCisgICAgewor ICAgICAgdHJlZSB0cmVlX3JlYWw7CisgICAgICB0cmVlIHRyZWVfaW1hZzsK KyAgICAgIHRyZWUgcmVhbF90eXBlOworCisgICAgICBSRUFMX1ZBTFVFX1RZ UEUgaW1hZ192YWx1ZTsKKworICAgICAgbG9uZyBpbnQgdmFsdWVfYXNfbG9u Z19pbnRzWzJdOworICAgICAgdV9pbWFnLmFzX2RvdWJsZSA9IGNpbWFnKHZh bHVlKTsKKyAgICAgIHZhbHVlX2FzX2xvbmdfaW50c1swXSA9IHVfaW1hZy5h c191aW50MzJzWzBdOworICAgICAgdmFsdWVfYXNfbG9uZ19pbnRzWzFdID0g dV9pbWFnLmFzX3VpbnQzMnNbMV07CisKKyAgICAgIHJlYWxfZnJvbV90YXJn ZXQgKCZpbWFnX3ZhbHVlLCB2YWx1ZV9hc19sb25nX2ludHMsIERGbW9kZSk7 CisKKyAgICAgIHJlYWxfdHlwZSA9IGNvbXBsZXhfcmVhbF90b19yZWFsIChp bm5lcl90eXBlKTsKKworICAgICAgdHJlZV9yZWFsID0gYnVpbGRfcmVhbCAo cmVhbF90eXBlLCByZWFsX3ZhbHVlKTsKKyAgICAgIHRyZWVfaW1hZyA9IGJ1 aWxkX3JlYWwgKHJlYWxfdHlwZSwgaW1hZ192YWx1ZSk7CisKKyAgICAgIHRy ZWUgaW5uZXIgPSBidWlsZF9jb21wbGV4IChpbm5lcl90eXBlLCB0cmVlX3Jl YWwsIHRyZWVfaW1hZyk7CisgICAgICByZXR1cm4gbmV3IHJ2YWx1ZSAodGhp cywgaW5uZXIpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHRyZWUg aW5uZXIgPSBidWlsZF9yZWFsIChpbm5lcl90eXBlLCByZWFsX3ZhbHVlKTsK KyAgICAgIHJldHVybiBuZXcgcnZhbHVlICh0aGlzLCBpbm5lcik7CisgICAg fQogfQogCiAvKiBTcGVjaWFsaXphdGlvbiBvZiBtYWtpbmcgYW4gcnZhbHVl IGZyb20gYSBjb25zdCwgZm9yIGhvc3QgPHZvaWQgKj4uICAqLwpAQCAtMTE5 MCw2ICsxMzM0LDExIEBAIG5ld19iaW5hcnlfb3AgKGxvY2F0aW9uICpsb2Ms CiAgICAgY2FzZSBHQ0NfSklUX0JJTkFSWV9PUF9SU0hJRlQ6CiAgICAgICBp bm5lcl9vcCA9IFJTSElGVF9FWFBSOwogICAgICAgYnJlYWs7CisKKyAgICAv KiBDcmVhdGUgY29tcGxleCB2YWx1ZSBmcm9tIHR3byByZWFsIHZhbHVlcyAq LworICAgIGNhc2UgR0NDX0pJVF9CSU5BUllfT1BfQ09NUExFWDoKKyAgICAg IGlubmVyX29wID0gQ09NUExFWF9FWFBSOworICAgICAgYnJlYWs7CiAgICAg fQogCiAgIHRyZWUgaW5uZXJfZXhwciA9IGJ1aWxkMiAoaW5uZXJfb3AsCkBA IC0xNDAwLDYgKzE1NDksMTAgQEAgcGxheWJhY2s6OmNvbnRleHQ6OmJ1aWxk X2Nhc3QgKHBsYXliYWNrOjpsb2NhdGlvbiAqbG9jLAogCQkgICAgICBidWls ZF9pbnRfY3N0IChUUkVFX1RZUEUgKHRfZXhwciksIDApKTsKICAgICAgIGdv dG8gbWF5YmVfZm9sZDsKIAorICAgIGNhc2UgQ09NUExFWF9UWVBFOgorICAg ICAgdF9yZXQgPSBjb252ZXJ0X3RvX2NvbXBsZXggKHRfZHN0X3R5cGUsIHRf ZXhwcik7CisgICAgICBnb3RvIG1heWJlX2ZvbGQ7CisKICAgICBjYXNlIFJF QUxfVFlQRToKICAgICAgIHRfcmV0ID0gY29udmVydF90b19yZWFsICh0X2Rz dF90eXBlLCB0X2V4cHIpOwogICAgICAgZ290byBtYXliZV9mb2xkOwpkaWZm IC0tZ2l0IGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmNjIGIvZ2NjL2ppdC9q aXQtcmVjb3JkaW5nLmNjCmluZGV4IDliNWI4MDA1ZWJlLi5lZDc4ODUwMmMx NSAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmNjCisrKyBi L2djYy9qaXQvaml0LXJlY29yZGluZy5jYwpAQCAtMjUsNiArMjUsNyBAQCBh bG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90 IHNlZQogI2luY2x1ZGUgInByZXR0eS1wcmludC5oIgogI2luY2x1ZGUgInRv cGxldi5oIgogCisjaW5jbHVkZSA8Y29tcGxleC5oPgogCiAjaW5jbHVkZSAi aml0LWJ1aWx0aW5zLmgiCiAjaW5jbHVkZSAiaml0LXJlY29yZGluZy5oIgpA QCAtMTcxMiw2ICsxNzEzLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25z dAogICAiZ2NjX2ppdF9jb250ZXh0X3NldF9ib29sX2FsbG93X3VucmVhY2hh YmxlX2Jsb2NrcyIsCiAgICJnY2Nfaml0X2NvbnRleHRfc2V0X2Jvb2xfdXNl X2V4dGVybmFsX2RyaXZlciIsCiAgICJnY2Nfaml0X2NvbnRleHRfc2V0X2Jv b2xfcHJpbnRfZXJyb3JzX3RvX3N0ZGVyciIsCisgICJnY2Nfaml0X2NvbnRl eHRfc2V0X2Jvb2xfZW5hYmxlX2NvbXBsZXhfdHlwZXMiCiB9OwogCiAvKiBX cml0ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiBhbGwgb3B0aW9ucyB0byB0aGUg bG9nIGZpbGUgKGlmIGFueSkuICAqLwpAQCAtMjY0NSw2ICsyNjQ3LDU5IEBA IHJlY29yZGluZzo6bWVtZW50b19vZl9nZXRfdHlwZTo6aXNfZmxvYXQgKCkg Y29uc3QKICAgICB9CiB9CiAKKy8qIEltcGxlbWVudGF0aW9uIG9mIHB1cmUg dmlydHVhbCBob29rIHJlY29yZGluZzo6dHlwZTo6aXNfY29tcGxleCBmb3IK KyAgIHJlY29yZGluZzo6bWVtZW50b19vZl9nZXRfdHlwZS4gICovCisKK2Jv b2wKK3JlY29yZGluZzo6bWVtZW50b19vZl9nZXRfdHlwZTo6aXNfY29tcGxl eCAoKSBjb25zdAoreworICBzd2l0Y2ggKG1fa2luZCkKKyAgICB7CisgICAg ZGVmYXVsdDogZ2NjX3VucmVhY2hhYmxlICgpOworCisgICAgY2FzZSBHQ0Nf SklUX1RZUEVfVk9JRDoKKyAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNh c2UgR0NDX0pJVF9UWVBFX1ZPSURfUFRSOgorICAgICAgcmV0dXJuIGZhbHNl OworCisgICAgY2FzZSBHQ0NfSklUX1RZUEVfQk9PTDoKKyAgICAgIHJldHVy biBmYWxzZTsKKworICAgIGNhc2UgR0NDX0pJVF9UWVBFX0NIQVI6CisgICAg Y2FzZSBHQ0NfSklUX1RZUEVfU0lHTkVEX0NIQVI6CisgICAgY2FzZSBHQ0Nf SklUX1RZUEVfVU5TSUdORURfQ0hBUjoKKyAgICBjYXNlIEdDQ19KSVRfVFlQ RV9TSE9SVDoKKyAgICBjYXNlIEdDQ19KSVRfVFlQRV9VTlNJR05FRF9TSE9S VDoKKyAgICBjYXNlIEdDQ19KSVRfVFlQRV9JTlQ6CisgICAgY2FzZSBHQ0Nf SklUX1RZUEVfVU5TSUdORURfSU5UOgorICAgIGNhc2UgR0NDX0pJVF9UWVBF X0xPTkc6CisgICAgY2FzZSBHQ0NfSklUX1RZUEVfVU5TSUdORURfTE9ORzoK KyAgICBjYXNlIEdDQ19KSVRfVFlQRV9MT05HX0xPTkc6CisgICAgY2FzZSBH Q0NfSklUX1RZUEVfVU5TSUdORURfTE9OR19MT05HOgorICAgICAgcmV0dXJu IGZhbHNlOworCisgICAgY2FzZSBHQ0NfSklUX1RZUEVfRkxPQVQ6CisgICAg Y2FzZSBHQ0NfSklUX1RZUEVfRE9VQkxFOgorICAgIGNhc2UgR0NDX0pJVF9U WVBFX0xPTkdfRE9VQkxFOgorICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg Y2FzZSBHQ0NfSklUX1RZUEVfQ09OU1RfQ0hBUl9QVFI6CisgICAgICByZXR1 cm4gZmFsc2U7CisKKyAgICBjYXNlIEdDQ19KSVRfVFlQRV9TSVpFX1Q6Cisg ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjYXNlIEdDQ19KSVRfVFlQRV9G SUxFX1BUUjoKKyAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNhc2UgR0ND X0pJVF9UWVBFX0NPTVBMRVhfRkxPQVQ6CisgICAgY2FzZSBHQ0NfSklUX1RZ UEVfQ09NUExFWF9ET1VCTEU6CisgICAgY2FzZSBHQ0NfSklUX1RZUEVfQ09N UExFWF9MT05HX0RPVUJMRToKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0K K30KKwogLyogSW1wbGVtZW50YXRpb24gb2YgcHVyZSB2aXJ0dWFsIGhvb2sg cmVjb3JkaW5nOjp0eXBlOjppc19ib29sIGZvcgogICAgcmVjb3JkaW5nOjpt ZW1lbnRvX29mX2dldF90eXBlLiAgKi8KIApAQCAtNTA3MSw2ICs1MTI2LDcg QEAgcmVjb3JkaW5nOjpnbG9iYWw6OndyaXRlX3JlcHJvZHVjZXIgKHJlcHJv ZHVjZXIgJnIpCiB0ZW1wbGF0ZSBjbGFzcyByZWNvcmRpbmc6Om1lbWVudG9f b2ZfbmV3X3J2YWx1ZV9mcm9tX2NvbnN0IDxpbnQ+OwogdGVtcGxhdGUgY2xh c3MgcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV9jb25z dCA8bG9uZz47CiB0ZW1wbGF0ZSBjbGFzcyByZWNvcmRpbmc6Om1lbWVudG9f b2ZfbmV3X3J2YWx1ZV9mcm9tX2NvbnN0IDxkb3VibGU+OwordGVtcGxhdGUg Y2xhc3MgcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFsdWVfZnJvbV9j b25zdCA8X0NvbXBsZXggZG91YmxlPjsKIHRlbXBsYXRlIGNsYXNzIHJlY29y ZGluZzo6bWVtZW50b19vZl9uZXdfcnZhbHVlX2Zyb21fY29uc3QgPHZvaWQg Kj47CiAKIC8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBwdXJlIHZpcnR1YWwg aG9vayByZWNvcmRpbmc6Om1lbWVudG86OnJlcGxheV9pbnRvCkBAIC01MjQ4 LDYgKzUzMDQsNTMgQEAgcmVjb3JkaW5nOjptZW1lbnRvX29mX25ld19ydmFs dWVfZnJvbV9jb25zdCA8ZG91YmxlPjo6d3JpdGVfcmVwcm9kdWNlciAocmVw cm9kdWMKICAgICBtX3ZhbHVlKTsKIH0KIAorLyogVGhlIG1ha2VfZGVidWdf c3RyaW5nIHNwZWNpYWxpemF0aW9uIGZvciA8ZG91YmxlIGNvbXBsZXg+LCBy ZW5kZXJpbmcgaXQgYXMKKyAgICAgKFRBUkdFVF9UWVBFKUxJVEVSQUwKKyAg IGUuZy4KKyAgICAgIihjb21wbGV4IGZsb2F0KSg0Mi4wKzQyLjBqKSIuICAq LworCit0ZW1wbGF0ZSA8Pgorc3RyaW5nICoKK21lbWVudG9fb2ZfbmV3X3J2 YWx1ZV9mcm9tX2NvbnN0IDxfQ29tcGxleCBkb3VibGU+OjptYWtlX2RlYnVn X3N0cmluZyAoKQoreworICBkb3VibGUgcmVhbCA9IGNyZWFsKG1fdmFsdWUp OworICBkb3VibGUgaW1hZyA9IGNpbWFnKG1fdmFsdWUpOworICByZXR1cm4g c3RyaW5nOjpmcm9tX3ByaW50ZiAobV9jdHh0LAorCQkJICAgICAgIiglcyko JWclK2dqKSIsCisJCQkgICAgICBtX3R5cGUtPmdldF9kZWJ1Z19zdHJpbmcg KCksCisJCQkgICAgICByZWFsLCBpbWFnKTsKK30KKworLyogVGhlIGdldF93 aWRlX2ludCBzcGVjaWFsaXphdGlvbiBmb3IgPGRvdWJsZSBjb21wbGV4Pi4g ICovCisKK3RlbXBsYXRlIDw+Citib29sCittZW1lbnRvX29mX25ld19ydmFs dWVfZnJvbV9jb25zdCA8X0NvbXBsZXggZG91YmxlPjo6CitnZXRfd2lkZV9p bnQgKHdpZGVfaW50ICopIGNvbnN0Cit7CisgIHJldHVybiBmYWxzZTsKK30K KworLyogVGhlIHdyaXRlX3JlcHJvZHVjZXIgc3BlY2lhbGl6YXRpb24gZm9y IDxkb3VibGU+LiAgKi8KKwordGVtcGxhdGUgPD4KK3ZvaWQKK3JlY29yZGlu Zzo6bWVtZW50b19vZl9uZXdfcnZhbHVlX2Zyb21fY29uc3QgPF9Db21wbGV4 IGRvdWJsZT46Ogord3JpdGVfcmVwcm9kdWNlciAocmVwcm9kdWNlciAmcikK K3sKKyAgY29uc3QgY2hhciAqaWQgPSByLm1ha2VfaWRlbnRpZmllciAodGhp cywgInJ2YWx1ZSIpOworICBkb3VibGUgcmVhbCA9IGNyZWFsKG1fdmFsdWUp OworICBkb3VibGUgaW1hZyA9IGNpbWFnKG1fdmFsdWUpOworICByLndyaXRl ICgiICBnY2Nfaml0X3J2YWx1ZSAqJXMgPVxuIgorICAgICIgICAgZ2NjX2pp dF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9jb21wbGV4X2RvdWJsZSAoJXMs IC8qIGdjY19qaXRfY29udGV4dCAqY3R4dCAqL1xuIgorICAgICIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVzLCAvKiBn Y2Nfaml0X3R5cGUgKm51bWVyaWNfdHlwZSAqL1xuIgorICAgICIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVmKyVmaik7 IC8qIGRvdWJsZSB2YWx1ZSAqL1xuIiwKKyAgICBpZCwKKyAgICByLmdldF9p ZGVudGlmaWVyIChnZXRfY29udGV4dCAoKSksCisgICAgci5nZXRfaWRlbnRp Zmllcl9hc190eXBlIChtX3R5cGUpLAorICAgIHJlYWwsIGltYWcpOworfQor CiAvKiBUaGUgbWFrZV9kZWJ1Z19zdHJpbmcgc3BlY2lhbGl6YXRpb24gZm9y IDx2b2lkICo+LCByZW5kZXJpbmcgaXQgYXMKICAgICAgKFRBUkdFVF9UWVBF KUhFWAogICAgZS5nLgpAQCAtNTc0MCwxNyArNTg0MywyNCBAQCBzdGF0aWMg Y29uc3QgY2hhciAqIGNvbnN0IGJpbmFyeV9vcF9zdHJpbmdzW10gPSB7CiAg ICJ8fCIsIC8qIEdDQ19KSVRfQklOQVJZX09QX0xPR0lDQUxfT1IgKi8KICAg Ijw8IiwgLyogR0NDX0pJVF9CSU5BUllfT1BfTFNISUZUICovCiAgICI+PiIs IC8qIEdDQ19KSVRfQklOQVJZX09QX1JTSElGVCAqLworICAiIiwgLyogR0ND X0pJVF9CSU5BUllfT1BfQ09NUExFWCAtIGR1bW15IG5vdCB1c2VkICovCiB9 OwogCiByZWNvcmRpbmc6OnN0cmluZyAqCiByZWNvcmRpbmc6OmJpbmFyeV9v cDo6bWFrZV9kZWJ1Z19zdHJpbmcgKCkKIHsKICAgZW51bSBwcmVjZWRlbmNl IHByZWMgPSBnZXRfcHJlY2VkZW5jZSAoKTsKLSAgcmV0dXJuIHN0cmluZzo6 ZnJvbV9wcmludGYgKG1fY3R4dCwKLQkJCSAgICAgICIlcyAlcyAlcyIsCi0J CQkgICAgICBtX2EtPmdldF9kZWJ1Z19zdHJpbmdfcGFyZW5zIChwcmVjKSwK LQkJCSAgICAgIGJpbmFyeV9vcF9zdHJpbmdzW21fb3BdLAotCQkJICAgICAg bV9iLT5nZXRfZGVidWdfc3RyaW5nX3BhcmVucyAocHJlYykpOworICBpZiAo bV9vcCA9PSBHQ0NfSklUX0JJTkFSWV9PUF9DT01QTEVYKQorICAgIHJldHVy biBzdHJpbmc6OmZyb21fcHJpbnRmIChtX2N0eHQsCisJCQkJIiglcyArICVz ICogX0ltYWdpbmFyeV9JKSIsCisJCQkJbV9hLT5nZXRfZGVidWdfc3RyaW5n X3BhcmVucyAocHJlYyksCisJCQkJbV9iLT5nZXRfZGVidWdfc3RyaW5nX3Bh cmVucyAocHJlYykpOworICBlbHNlCisgICAgcmV0dXJuIHN0cmluZzo6ZnJv bV9wcmludGYgKG1fY3R4dCwKKwkJCQkiJXMgJXMgJXMiLAorCQkJCW1fYS0+ Z2V0X2RlYnVnX3N0cmluZ19wYXJlbnMgKHByZWMpLAorCQkJCWJpbmFyeV9v cF9zdHJpbmdzW21fb3BdLAorCQkJCW1fYi0+Z2V0X2RlYnVnX3N0cmluZ19w YXJlbnMgKHByZWMpKTsKIH0KIAogY29uc3QgY2hhciAqIGNvbnN0IGJpbmFy eV9vcF9yZXByb2R1Y2VyX3N0cmluZ3NbXSA9IHsKQEAgLTU3NjUsNyArNTg3 NSw4IEBAIGNvbnN0IGNoYXIgKiBjb25zdCBiaW5hcnlfb3BfcmVwcm9kdWNl cl9zdHJpbmdzW10gPSB7CiAgICJHQ0NfSklUX0JJTkFSWV9PUF9MT0dJQ0FM X0FORCIsCiAgICJHQ0NfSklUX0JJTkFSWV9PUF9MT0dJQ0FMX09SIiwKICAg IkdDQ19KSVRfQklOQVJZX09QX0xTSElGVCIsCi0gICJHQ0NfSklUX0JJTkFS WV9PUF9SU0hJRlQiCisgICJHQ0NfSklUX0JJTkFSWV9PUF9SU0hJRlQiLAor ICAiR0NDX0pJVF9CSU5BUllfT1BfQ09NUExFWCIsCiB9OwogCiAvKiBJbXBs ZW1lbnRhdGlvbiBvZiByZWNvcmRpbmc6Om1lbWVudG86OndyaXRlX3JlcHJv ZHVjZXIgZm9yIGJpbmFyeSBvcHMuICAqLwpAQCAtNTgwNiw2ICs1OTE3LDcg QEAgc3RhdGljIGNvbnN0IGVudW0gcHJlY2VkZW5jZSBiaW5hcnlfb3BfcHJl Y2VkZW5jZVtdID0gewogICBQUkVDRURFTkNFX0xPR0lDQUxfT1IsIC8qIEdD Q19KSVRfQklOQVJZX09QX0xPR0lDQUxfT1IgKi8KICAgUFJFQ0VERU5DRV9T SElGVCwgLyogR0NDX0pJVF9CSU5BUllfT1BfTFNISUZUICovCiAgIFBSRUNF REVOQ0VfU0hJRlQsIC8qIEdDQ19KSVRfQklOQVJZX09QX1JTSElGVCAqLwor ICBQUkVDRURFTkNFX0NBU1QsIC8qIEdDQ19KSVRfQklOQVJZX09QX0NPTVBM RVggKi8KIH07CiB9IC8qIG5hbWVzcGFjZSByZWNvcmRpbmcgKi8KIApkaWZm IC0tZ2l0IGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmggYi9nY2Mvaml0L2pp dC1yZWNvcmRpbmcuaAppbmRleCA0YTgwODI5OTFmYi4uMWU5OTkwNDQwYWUg MTAwNjQ0Ci0tLSBhL2djYy9qaXQvaml0LXJlY29yZGluZy5oCisrKyBiL2dj Yy9qaXQvaml0LXJlY29yZGluZy5oCkBAIC01NjcsNiArNTY3LDcgQEAgcHVi bGljOgogICB2aXJ0dWFsIGJvb2wgaXNfaW50ICgpIGNvbnN0ID0gMDsKICAg dmlydHVhbCBib29sIGlzX2Zsb2F0ICgpIGNvbnN0ID0gMDsKICAgdmlydHVh bCBib29sIGlzX2Jvb2wgKCkgY29uc3QgPSAwOworICB2aXJ0dWFsIGJvb2wg aXNfY29tcGxleCAoKSBjb25zdCA9IDA7CiAgIHZpcnR1YWwgdHlwZSAqaXNf cG9pbnRlciAoKSA9IDA7CiAgIHZpcnR1YWwgdHlwZSAqaXNfdm9sYXRpbGUg KCkgeyByZXR1cm4gTlVMTDsgfQogICB2aXJ0dWFsIHR5cGUgKmlzX3Jlc3Ry aWN0ICgpIHsgcmV0dXJuIE5VTEw7IH0KQEAgLTU3OCw2ICs1NzksOSBAQCBw dWJsaWM6CiAgIHZpcnR1YWwgdmVjdG9yX3R5cGUgKmlzX3ZlY3RvciAoKSB7 IHJldHVybiBOVUxMOyB9CiAgIHZpcnR1YWwgYm9vbCBoYXNfa25vd25fc2l6 ZSAoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgIHZpcnR1YWwgYm9vbCBp c19zaWduZWQgKCkgY29uc3QgPSAwOworICAvKiBVc2VkIHRvIHBhaXIgY29t cGxleCBmbG9hdCB0eXBlcyB3aXRoIHJlYWwgZmxvYXQgdHlwZQorICAgICBv ZiB0aGUgc2FtZSAiYmFzZSB0eXBlIi4gKi8KKyAgdmlydHVhbCBpbnQgZmxv YXRfc2l6ZV9xdWFsICgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICBib29s IGlzX251bWVyaWMgKCkgY29uc3QKICAgewpAQCAtNjQwLDExICs2NDQsMzEg QEAgcHVibGljOgogICBib29sIGlzX2ludCAoKSBjb25zdCBmaW5hbCBvdmVy cmlkZTsKICAgYm9vbCBpc19mbG9hdCAoKSBjb25zdCBmaW5hbCBvdmVycmlk ZTsKICAgYm9vbCBpc19ib29sICgpIGNvbnN0IGZpbmFsIG92ZXJyaWRlOwor ICBib29sIGlzX2NvbXBsZXggKCkgY29uc3QgZmluYWwgb3ZlcnJpZGU7CiAg IHR5cGUgKmlzX3BvaW50ZXIgKCkgZmluYWwgb3ZlcnJpZGUgeyByZXR1cm4g ZGVyZWZlcmVuY2UgKCk7IH0KICAgdHlwZSAqaXNfYXJyYXkgKCkgZmluYWwg b3ZlcnJpZGUgeyByZXR1cm4gTlVMTDsgfQogICBib29sIGlzX3ZvaWQgKCkg Y29uc3QgZmluYWwgb3ZlcnJpZGUgeyByZXR1cm4gbV9raW5kID09IEdDQ19K SVRfVFlQRV9WT0lEOyB9CiAgIGJvb2wgaXNfc2lnbmVkICgpIGNvbnN0IGZp bmFsIG92ZXJyaWRlOwogCisgIGludCBmbG9hdF9zaXplX3F1YWwgKCkgY29u c3QgZmluYWwgb3ZlcnJpZGUKKyAgeworICAgIHN3aXRjaCAobV9raW5kKQor ICAgICAgeworICAgICAgZGVmYXVsdDoKKwlyZXR1cm4gMDsKKyAgICAgIGNh c2UgR0NDX0pJVF9UWVBFX0ZMT0FUOgorICAgICAgY2FzZSBHQ0NfSklUX1RZ UEVfQ09NUExFWF9GTE9BVDoKKwlyZXR1cm4gMTsKKyAgICAgIGNhc2UgR0ND X0pJVF9UWVBFX0RPVUJMRToKKyAgICAgIGNhc2UgR0NDX0pJVF9UWVBFX0NP TVBMRVhfRE9VQkxFOgorCXJldHVybiAyOworICAgICAgY2FzZSBHQ0NfSklU X1RZUEVfTE9OR19ET1VCTEU6CisgICAgICBjYXNlIEdDQ19KSVRfVFlQRV9D T01QTEVYX0xPTkdfRE9VQkxFOgorCXJldHVybiAzOworICAgICAgfQorICB9 CisKKwogcHVibGljOgogICB2b2lkIHJlcGxheV9pbnRvIChyZXBsYXllciAq cikgZmluYWwgb3ZlcnJpZGU7CiAKQEAgLTY3NSw2ICs2OTksNyBAQCBwdWJs aWM6CiAgIGJvb2wgaXNfaW50ICgpIGNvbnN0IGZpbmFsIG92ZXJyaWRlIHsg cmV0dXJuIGZhbHNlOyB9CiAgIGJvb2wgaXNfZmxvYXQgKCkgY29uc3QgZmlu YWwgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgYm9vbCBpc19ib29s ICgpIGNvbnN0IGZpbmFsIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg IGJvb2wgaXNfY29tcGxleCAoKSBjb25zdCBmaW5hbCBvdmVycmlkZSB7IHJl dHVybiBmYWxzZTsgfQogICB0eXBlICppc19wb2ludGVyICgpIGZpbmFsIG92 ZXJyaWRlIHsgcmV0dXJuIG1fb3RoZXJfdHlwZTsgfQogICB0eXBlICppc19h cnJheSAoKSBmaW5hbCBvdmVycmlkZSB7IHJldHVybiBOVUxMOyB9CiAgIGJv b2wgaXNfc2lnbmVkICgpIGNvbnN0IGZpbmFsIG92ZXJyaWRlIHsgcmV0dXJu IGZhbHNlOyB9CkBAIC03MDgsNiArNzMzLDcgQEAgcHVibGljOgogICB0eXBl ICppc19hcnJheSAoKSBmaW5hbCBvdmVycmlkZSB7IHJldHVybiBtX290aGVy X3R5cGUtPmlzX2FycmF5ICgpOyB9CiAgIHN0cnVjdF8gKmlzX3N0cnVjdCAo KSBmaW5hbCBvdmVycmlkZSB7IHJldHVybiBtX290aGVyX3R5cGUtPmlzX3N0 cnVjdCAoKTsgfQogICBib29sIGlzX3NpZ25lZCAoKSBjb25zdCBmaW5hbCBv dmVycmlkZSB7IHJldHVybiBtX290aGVyX3R5cGUtPmlzX3NpZ25lZCAoKTsg fQorICBib29sIGlzX2NvbXBsZXggKCkgY29uc3QgZmluYWwgb3ZlcnJpZGUg eyByZXR1cm4gbV9vdGhlcl90eXBlLT5pc19jb21wbGV4ICgpOyB9CiAKIHBy b3RlY3RlZDoKICAgdHlwZSAqbV9vdGhlcl90eXBlOwpAQCAtODczLDYgKzg5 OSw4IEBAIGNsYXNzIGFycmF5X3R5cGUgOiBwdWJsaWMgdHlwZQogICBib29s IGlzX2Jvb2wgKCkgY29uc3QgZmluYWwgb3ZlcnJpZGUgeyByZXR1cm4gZmFs c2U7IH0KICAgdHlwZSAqaXNfcG9pbnRlciAoKSBmaW5hbCBvdmVycmlkZSB7 IHJldHVybiBOVUxMOyB9CiAgIHR5cGUgKmlzX2FycmF5ICgpIGZpbmFsIG92 ZXJyaWRlIHsgcmV0dXJuIG1fZWxlbWVudF90eXBlOyB9CisgIGJvb2wgaXNf Y29tcGxleCAoKSBjb25zdCBmaW5hbCBvdmVycmlkZSB7IHJldHVybiBmYWxz ZTsgfQorCiAgIGludCBudW1fZWxlbWVudHMgKCkgeyByZXR1cm4gbV9udW1f ZWxlbWVudHM7IH0KICAgYm9vbCBpc19zaWduZWQgKCkgY29uc3QgZmluYWwg b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApAQCAtOTA5LDYgKzkzNyw3 IEBAIHB1YmxpYzoKICAgdHlwZSAqaXNfcG9pbnRlciAoKSBmaW5hbCBvdmVy cmlkZSB7IHJldHVybiBOVUxMOyB9CiAgIHR5cGUgKmlzX2FycmF5ICgpIGZp bmFsIG92ZXJyaWRlIHsgcmV0dXJuIE5VTEw7IH0KICAgYm9vbCBpc19zaWdu ZWQgKCkgY29uc3QgZmluYWwgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K KyAgYm9vbCBpc19jb21wbGV4ICgpIGNvbnN0IGZpbmFsIG92ZXJyaWRlIHsg cmV0dXJuIGZhbHNlOyB9CiAKICAgdm9pZCByZXBsYXlfaW50byAocmVwbGF5 ZXIgKikgZmluYWwgb3ZlcnJpZGU7CiAKQEAgLTEwMjMsNiArMTA1Miw3IEBA IHB1YmxpYzoKICAgdHlwZSAqaXNfcG9pbnRlciAoKSBmaW5hbCBvdmVycmlk ZSB7IHJldHVybiBOVUxMOyB9CiAgIHR5cGUgKmlzX2FycmF5ICgpIGZpbmFs IG92ZXJyaWRlIHsgcmV0dXJuIE5VTEw7IH0KICAgYm9vbCBpc19zaWduZWQg KCkgY29uc3QgZmluYWwgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg Ym9vbCBpc19jb21wbGV4ICgpIGNvbnN0IGZpbmFsIG92ZXJyaWRlICB7IHJl dHVybiBmYWxzZTsgfQogCiAgIGJvb2wgaGFzX2tub3duX3NpemUgKCkgY29u c3QgZmluYWwgb3ZlcnJpZGUgeyByZXR1cm4gbV9maWVsZHMgIT0gTlVMTDsg fQogCmRpZmYgLS1naXQgYS9nY2Mvaml0L2xpYmdjY2ppdCsrLmggYi9nY2Mv aml0L2xpYmdjY2ppdCsrLmgKaW5kZXggZjlhMDAxN2NhZTUuLmY5NWI5YWQ2 N2Q3IDEwMDY0NAotLS0gYS9nY2Mvaml0L2xpYmdjY2ppdCsrLmgKKysrIGIv Z2NjL2ppdC9saWJnY2NqaXQrKy5oCkBAIC0xMjgsNiArMTI4LDcgQEAgbmFt ZXNwYWNlIGdjY2ppdAogCiAgICAgdm9pZCBzZXRfYm9vbF9hbGxvd191bnJl YWNoYWJsZV9ibG9ja3MgKGludCBib29sX3ZhbHVlKTsKICAgICB2b2lkIHNl dF9ib29sX3VzZV9leHRlcm5hbF9kcml2ZXIgKGludCBib29sX3ZhbHVlKTsK KyAgICB2b2lkIHNldF9ib29sX2VuYWJsZV9jb21wbGV4X3R5cGVzIChpbnQg Ym9vbF92YWx1ZSk7CiAKICAgICB2b2lkIGFkZF9jb21tYW5kX2xpbmVfb3B0 aW9uIChjb25zdCBjaGFyICpvcHRuYW1lKTsKICAgICB2b2lkIGFkZF9kcml2 ZXJfb3B0aW9uIChjb25zdCBjaGFyICpvcHRuYW1lKTsKQEAgLTE5MSw2ICsx OTIsOCBAQCBuYW1lc3BhY2UgZ2Njaml0CiAgICAgcnZhbHVlIG9uZSAodHlw ZSBudW1lcmljX3R5cGUpIGNvbnN0OwogICAgIHJ2YWx1ZSBuZXdfcnZhbHVl ICh0eXBlIG51bWVyaWNfdHlwZSwKIAkJICAgICAgIGRvdWJsZSB2YWx1ZSkg Y29uc3Q7CisgICAgcnZhbHVlIG5ld19ydmFsdWUgKHR5cGUgbnVtZXJpY190 eXBlLAorCQkgICAgICAgX0NvbXBsZXggZG91YmxlIHZhbHVlKSBjb25zdDsK ICAgICBydmFsdWUgbmV3X3J2YWx1ZSAodHlwZSBwb2ludGVyX3R5cGUsCiAJ CSAgICAgICB2b2lkICp2YWx1ZSkgY29uc3Q7CiAgICAgcnZhbHVlIG5ld19y dmFsdWUgKGNvbnN0IHN0ZDo6c3RyaW5nICZ2YWx1ZSkgY29uc3Q7CkBAIC03 NDgsNiArNzUxLDEzIEBAIGNvbnRleHQ6OnNldF9ib29sX3VzZV9leHRlcm5h bF9kcml2ZXIgKGludCBib29sX3ZhbHVlKQogCQkJCQkJYm9vbF92YWx1ZSk7 CiB9CiAKK2lubGluZSB2b2lkCitjb250ZXh0OjpzZXRfYm9vbF9lbmFibGVf Y29tcGxleF90eXBlcyAoaW50IGJvb2xfdmFsdWUpCit7CisgIGdjY19qaXRf Y29udGV4dF9zZXRfYm9vbF9lbmFibGVfY29tcGxleF90eXBlcyAobV9pbm5l cl9jdHh0LAorCQkJCQkJIGJvb2xfdmFsdWUpOworfQorCiBpbmxpbmUgdm9p ZAogY29udGV4dDo6YWRkX2NvbW1hbmRfbGluZV9vcHRpb24gKGNvbnN0IGNo YXIgKm9wdG5hbWUpCiB7CkBAIC05NjYsNiArOTc2LDE3IEBAIGNvbnRleHQ6 Om5ld19ydmFsdWUgKHR5cGUgbnVtZXJpY190eXBlLAogCQkJCQkgICAgdmFs dWUpKTsKIH0KIAoraW5saW5lIHJ2YWx1ZQorY29udGV4dDo6bmV3X3J2YWx1 ZSAodHlwZSBudW1lcmljX3R5cGUsCisJCSAgICAgX0NvbXBsZXggZG91Ymxl IHZhbHVlKSBjb25zdAoreworICByZXR1cm4gcnZhbHVlICgKKyAgICBnY2Nf aml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2NvbXBsZXhfZG91YmxlICgK KyAgICAgIG1faW5uZXJfY3R4dCwKKyAgICAgIG51bWVyaWNfdHlwZS5nZXRf aW5uZXJfdHlwZSAoKSwKKyAgICAgIHZhbHVlKSk7Cit9CisKIGlubGluZSBy dmFsdWUKIGNvbnRleHQ6Om5ld19ydmFsdWUgKHR5cGUgcG9pbnRlcl90eXBl LAogCQkgICAgIHZvaWQgKnZhbHVlKSBjb25zdApkaWZmIC0tZ2l0IGEvZ2Nj L2ppdC9saWJnY2NqaXQuY2MgYi9nY2Mvaml0L2xpYmdjY2ppdC5jYwppbmRl eCAwNDUxYjRkZjdmOS4uMmM2MDVkMGRkZjAgMTAwNjQ0Ci0tLSBhL2djYy9q aXQvbGliZ2Njaml0LmNjCisrKyBiL2djYy9qaXQvbGliZ2Njaml0LmNjCkBA IC00NzAsNiArNDcwLDE0IEBAIGdjY19qaXRfY29udGV4dF9nZXRfdHlwZSAo Z2NjX2ppdF9jb250ZXh0ICpjdHh0LAogICAgICAmJiB0eXBlIDwgTlVNX0dD Q19KSVRfVFlQRVMpLAogICAgIGN0eHQsIE5VTEwsCiAgICAgInVucmVjb2du aXplZCB2YWx1ZSBmb3IgZW51bSBnY2Nfaml0X3R5cGVzOiAlaSIsIHR5cGUp OworICBpZiAodHlwZSA+PSBHQ0NfSklUX1RZUEVfQ09NUExFWF9GTE9BVAor ICAgICAgJiYgdHlwZSA8PSBHQ0NfSklUX1RZUEVfQ09NUExFWF9MT05HX0RP VUJMRSkKKyAgICBSRVRVUk5fTlVMTF9JRl9GQUlMICgKKyAgICAgIGN0eHQt PmdldF9pbm5lcl9ib29sX29wdGlvbigKKwlnY2M6OmppdDo6SU5ORVJfQk9P TF9PUFRJT05fRU5BQkxFX0NPTVBMRVhfVFlQRVMpLAorICAgICAgY3R4dCwg TlVMTCwKKyAgICAgICJjb21wbGV4IHR5cGVzIGFyZSBvbmx5IGF2YWlsYWJs ZSBhZnRlciBlbmFibGluZyB0aGVtIHdpdGgiCisgICAgICAiIGdjY19qaXRf Y29udGV4dF9zZXRfYm9vbF9lbmFibGVfY29tcGxleF90eXBlcygpIik7CiAK ICAgcmV0dXJuIChnY2Nfaml0X3R5cGUgKiljdHh0LT5nZXRfdHlwZSAodHlw ZSk7CiB9CkBAIC0yMDI3LDYgKzIwMzUsMjYgQEAgZ2NjX2ppdF9jb250ZXh0 X25ld19ydmFsdWVfZnJvbV9kb3VibGUgKGdjY19qaXRfY29udGV4dCAqY3R4 dCwKIAkgIC0+bmV3X3J2YWx1ZV9mcm9tX2NvbnN0IDxkb3VibGU+IChudW1l cmljX3R5cGUsIHZhbHVlKSk7CiB9CiAKK2djY19qaXRfcnZhbHVlICoKK2dj Y19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21fY29tcGxleF9kb3VibGUg KGdjY19qaXRfY29udGV4dCAqY3R4dCwKKwkJCQkJCWdjY19qaXRfdHlwZSAq bnVtZXJpY190eXBlLAorCQkJCQkJZG91YmxlIF9Db21wbGV4IHZhbHVlKQor eworICBSRVRVUk5fTlVMTF9JRl9GQUlMIChjdHh0LCBOVUxMLCBOVUxMLCAi TlVMTCBjb250ZXh0Iik7CisgIEpJVF9MT0dfRlVOQyAoY3R4dC0+Z2V0X2xv Z2dlciAoKSk7CisgIFJFVFVSTl9OVUxMX0lGX0ZBSUxfTk9OTlVMTF9OVU1F UklDX1RZUEUgKGN0eHQsIG51bWVyaWNfdHlwZSk7CisKKyAgUkVUVVJOX05V TExfSUZfRkFJTF9QUklOVEYxICgKKyAgICBudW1lcmljX3R5cGUtPmlzX2Zs b2F0ICgpLAorICAgIGN0eHQsIE5VTEwsCisgICAgIm5vdCBhIGZsb2F0aW5n IHBvaW50IHR5cGUgKHR5cGU6ICVzKSIsCisgICAgbnVtZXJpY190eXBlLT5n ZXRfZGVidWdfc3RyaW5nICgpKTsKKworICByZXR1cm4gKChnY2Nfaml0X3J2 YWx1ZSAqKWN0eHQKKwkgICAtPm5ld19ydmFsdWVfZnJvbV9jb25zdCA8ZG91 YmxlIF9Db21wbGV4PiAobnVtZXJpY190eXBlLCB2YWx1ZSkpOworfQorCisK IC8qIFB1YmxpYyBlbnRyeXBvaW50LiAgU2VlIGRlc2NyaXB0aW9uIGluIGxp YmdjY2ppdC5oLgogCiAgICBBZnRlciBlcnJvci1jaGVja2luZywgdGhlIHJl YWwgd29yayBpcyBkb25lIGJ5IHRoZQpAQCAtMjEyMiw2ICsyMTUwLDE0IEBA IGdjY19qaXRfY29udGV4dF9uZXdfdW5hcnlfb3AgKGdjY19qaXRfY29udGV4 dCAqY3R4dCwKICAgICByZXN1bHRfdHlwZS0+Z2V0X2RlYnVnX3N0cmluZyAo KSk7CiAgIFJFVFVSTl9OVUxMX0lGX0ZBSUwgKHJ2YWx1ZSwgY3R4dCwgbG9j LCAiTlVMTCBydmFsdWUiKTsKIAorICBpZiAocnZhbHVlLT5nZXRfdHlwZSAo KS0+aXNfY29tcGxleCAoKSkKKyAgICBSRVRVUk5fTlVMTF9JRl9GQUlMX1BS SU5URjIgKAorICAgICAgb3AgPT0gR0NDX0pJVF9VTkFSWV9PUF9NSU5VUywK KyAgICAgIGN0eHQsIGxvYywKKyAgICAgICJvbmx5IHVuYXJ5IG1pbnVzIGRl ZmluZWQgZm9yIGNvbXBsZXggdHlwZXM6ICVzICh0eXBlOiAlcykiLAorICAg ICAgcnZhbHVlLT5nZXRfZGVidWdfc3RyaW5nICgpLAorICAgICAgcnZhbHVl LT5nZXRfdHlwZSAoKS0+Z2V0X2RlYnVnX3N0cmluZyAoKSk7CisKICAgcmV0 dXJuIChnY2Nfaml0X3J2YWx1ZSAqKWN0eHQtPm5ld191bmFyeV9vcCAobG9j LCBvcCwgcmVzdWx0X3R5cGUsIHJ2YWx1ZSk7CiB9CiAKQEAgLTIxMzMsNyAr MjE2OSw3IEBAIHN0YXRpYyBib29sCiB2YWxpZF9iaW5hcnlfb3BfcCAoZW51 bSBnY2Nfaml0X2JpbmFyeV9vcCBvcCkKIHsKICAgcmV0dXJuIChvcCA+PSBH Q0NfSklUX0JJTkFSWV9PUF9QTFVTCi0JICAmJiBvcCA8PSBHQ0NfSklUX0JJ TkFSWV9PUF9SU0hJRlQpOworCSAgJiYgb3AgPD0gR0NDX0pJVF9CSU5BUllf T1BfQ09NUExFWCk7CiB9CiAKIC8qIFB1YmxpYyBlbnRyeXBvaW50LiAgU2Vl IGRlc2NyaXB0aW9uIGluIGxpYmdjY2ppdC5oLgpAQCAtMjE3OCw2ICsyMjE0 LDM4IEBAIGdjY19qaXRfY29udGV4dF9uZXdfYmluYXJ5X29wIChnY2Nfaml0 X2NvbnRleHQgKmN0eHQsCiAgICAgYS0+Z2V0X2RlYnVnX3N0cmluZyAoKSwg Yi0+Z2V0X2RlYnVnX3N0cmluZyAoKSwKICAgICByZXN1bHRfdHlwZS0+Z2V0 X2RlYnVnX3N0cmluZyAoKSk7CiAKKyAgaWYgKG9wID09IEdDQ19KSVRfQklO QVJZX09QX0NPTVBMRVgpCisgICAgeworICAgICAgUkVUVVJOX05VTExfSUZf RkFJTCAoCisJcmVzdWx0X3R5cGUtPmlzX2NvbXBsZXggKCksCisJY3R4dCwg bG9jLAorICAgICAgICJyZXR1cm4gdHlwZSBpcyBub3QgY29tcGxleCIpOwor ICAgICAgUkVUVVJOX05VTExfSUZfRkFJTF9QUklOVEYzICgKKwkhYS0+Z2V0 X3R5cGUgKCktPmlzX2NvbXBsZXggKCkgJiYKKwlhLT5nZXRfdHlwZSAoKS0+ aXNfZmxvYXQgKCksCisJY3R4dCwgbG9jLAorCSJmaXJzdCBvcGVyYW5kIG9m ICVzIGlzIG5vdCByZWFsOiAlcyAodHlwZTogJXMpIiwKKwlnY2M6OmppdDo6 YmluYXJ5X29wX3JlcHJvZHVjZXJfc3RyaW5nc1tvcF0sCisJYS0+Z2V0X2Rl YnVnX3N0cmluZyAoKSwKKwlhLT5nZXRfdHlwZSAoKS0+Z2V0X2RlYnVnX3N0 cmluZyAoKSk7CisgICAgICBSRVRVUk5fTlVMTF9JRl9GQUlMX1BSSU5URjMg KAorCSFiLT5nZXRfdHlwZSAoKS0+aXNfY29tcGxleCAoKSAmJgorCWItPmdl dF90eXBlICgpLT5pc19mbG9hdCAoKSwKKwljdHh0LCBsb2MsCisJIjJuZCBv cGVyYW5kIG9mICVzIGlzIG5vdCByZWFsOiAlcyAodHlwZTogJXMpIiwKKwln Y2M6OmppdDo6YmluYXJ5X29wX3JlcHJvZHVjZXJfc3RyaW5nc1tvcF0sCisJ Yi0+Z2V0X2RlYnVnX3N0cmluZyAoKSwKKwliLT5nZXRfdHlwZSAoKS0+Z2V0 X2RlYnVnX3N0cmluZyAoKSk7CisgICAgICBSRVRVUk5fTlVMTF9JRl9GQUlM X1BSSU5URjIgKAorCWEtPmdldF90eXBlICgpLT4gZmxvYXRfc2l6ZV9xdWFs ICgpID09CisJcmVzdWx0X3R5cGUtPmZsb2F0X3NpemVfcXVhbCAoKSwKKwlj dHh0LCBsb2MsCisJInNpemUgcXVhbGlmaWVycyBvZiBjb21wbGV4IG9wZXJh bmQncyBub3QgdGhlIHNhbWUgYXMgdGhlIHJlc3VsdDoiCisJIiBvcGVyYW5k czogJXMsIHJlc3VsdDogICVzIiwKKwlhLT5nZXRfdHlwZSAoKS0+Z2V0X2Rl YnVnX3N0cmluZyAoKSwKKwlyZXN1bHRfdHlwZS0+Z2V0X2RlYnVnX3N0cmlu ZyAoKSk7CisgICAgfQorCiAgIHJldHVybiAoZ2NjX2ppdF9ydmFsdWUgKilj dHh0LT5uZXdfYmluYXJ5X29wIChsb2MsIG9wLCByZXN1bHRfdHlwZSwgYSwg Yik7CiB9CiAKQEAgLTIyMTQsNiArMjI4MiwxNCBAQCBnY2Nfaml0X2NvbnRl eHRfbmV3X2NvbXBhcmlzb24gKGdjY19qaXRfY29udGV4dCAqY3R4dCwKICAg ICBiLT5nZXRfZGVidWdfc3RyaW5nICgpLAogICAgIGItPmdldF90eXBlICgp LT5nZXRfZGVidWdfc3RyaW5nICgpKTsKIAorICBpZiAoYS0+Z2V0X3R5cGUg KCktPmlzX2NvbXBsZXgoKSkKKyAgICBSRVRVUk5fTlVMTF9JRl9GQUlMX1BS SU5URjEgKAorICAgICAgKG9wID09IEdDQ19KSVRfQ09NUEFSSVNPTl9FUQor ICAgICAgIHx8IG9wID09IEdDQ19KSVRfQ09NUEFSSVNPTl9ORSksCisgICAg ICBjdHh0LCBsb2MsCisgICAgICAiaW52YWxpZCBlbnVtIGdjY19qaXRfY29t cGFyaXNvbiBmb3IgY29tcGxleCBvcGVyYW5kczogJWkiLAorICAgICAgb3Ap OworCiAgIHJldHVybiAoZ2NjX2ppdF9ydmFsdWUgKiljdHh0LT5uZXdfY29t cGFyaXNvbiAobG9jLCBvcCwgYSwgYik7CiB9CiAKQEAgLTM1NTQsNiArMzYz MCwxNyBAQCBnY2Nfaml0X2NvbnRleHRfc2V0X2Jvb2xfcHJpbnRfZXJyb3Jz X3RvX3N0ZGVyciAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAogICAgIGVuYWJs ZWQpOwogfQogCit2b2lkCitnY2Nfaml0X2NvbnRleHRfc2V0X2Jvb2xfZW5h YmxlX2NvbXBsZXhfdHlwZXMgKGdjY19qaXRfY29udGV4dCAqY3R4dCwKKwkJ CQkJICAgICAgIGludCBib29sX3ZhbHVlKQoreworICBSRVRVUk5fSUZfRkFJ TCAoY3R4dCwgTlVMTCwgTlVMTCwgIk5VTEwgY29udGV4dCIpOworICBKSVRf TE9HX0ZVTkMgKGN0eHQtPmdldF9sb2dnZXIgKCkpOworICBjdHh0LT5zZXRf aW5uZXJfYm9vbF9vcHRpb24gKAorICAgIGdjYzo6aml0OjpJTk5FUl9CT09M X09QVElPTl9FTkFCTEVfQ09NUExFWF9UWVBFUywKKyAgICBib29sX3ZhbHVl KTsKK30KKwogLyogUHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVzY3JpcHRp b24gaW4gbGliZ2Njaml0LmguCiAKICAgIEFmdGVyIGVycm9yLWNoZWNraW5n LCB0aGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgdGhlCmRpZmYgLS1naXQgYS9n Y2Mvaml0L2xpYmdjY2ppdC5oIGIvZ2NjL2ppdC9saWJnY2NqaXQuaAppbmRl eCA3NDlmNmMyNDE3Ny4uY2RhZWM0NTA5ODEgMTAwNjQ0Ci0tLSBhL2djYy9q aXQvbGliZ2Njaml0LmgKKysrIGIvZ2NjL2ppdC9saWJnY2NqaXQuaApAQCAt MTA4Myw2ICsxMDgzLDE2IEBAIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVl X2Zyb21fZG91YmxlIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsCiAJCQkJCWdj Y19qaXRfdHlwZSAqbnVtZXJpY190eXBlLAogCQkJCQlkb3VibGUgdmFsdWUp OwogCisvKiBDb21wbGV4IGZsb2F0aW5nLXBvaW50IGNvbnN0YW50cy4KKwor ICAgVGhpcyBBUEkgZW50cnlwb2ludCB3YXMgYWRkZWQgaW4gTElCR0NDSklU X0FCSV8yNjsgeW91IGNhbiB0ZXN0IGZvciBpdHMKKyAgIHByZXNlbmNlIHVz aW5nCisgICAgICNpZmRlZiBMSUJHQ0NKSVRfSEFWRV9DT01QTEVYICovCitl eHRlcm4gZ2NjX2ppdF9ydmFsdWUgKgorZ2NjX2ppdF9jb250ZXh0X25ld19y dmFsdWVfZnJvbV9jb21wbGV4X2RvdWJsZSAoZ2NjX2ppdF9jb250ZXh0ICpj dHh0LAorCQkJCQkJZ2NjX2ppdF90eXBlICpudW1lcmljX3R5cGUsCisJCQkJ CQlfQ29tcGxleCBkb3VibGUgdmFsdWUpOworCiAvKiBQb2ludGVycy4gICov CiBleHRlcm4gZ2NjX2ppdF9ydmFsdWUgKgogZ2NjX2ppdF9jb250ZXh0X25l d19ydmFsdWVfZnJvbV9wdHIgKGdjY19qaXRfY29udGV4dCAqY3R4dCwKQEAg LTExOTQsNyArMTIwNCwyNiBAQCBlbnVtIGdjY19qaXRfYmluYXJ5X29wCiAg IC8qIFJpZ2h0IHNoaWZ0OyBhbmFsb2dvdXMgdG86CiAgICAgICAgKEVYUFJf QSkgPj4gKEVYUFJfQikKICAgICAgaW4gQy4gICovCi0gIEdDQ19KSVRfQklO QVJZX09QX1JTSElGVAorICBHQ0NfSklUX0JJTkFSWV9PUF9SU0hJRlQsCisK KyAgLyogQ3JlYXRlIGEgY29tcGxleCBmbG9hdGluZyBwb2ludCB2YWx1ZSBm cm9tCisgICAgIHR3byByZWFsIGZsb2F0aW5nIHBvaW50IHZhbHVlcy4gVGhl IG9wZXJhbmRzCisgICAgIGFuZCB0aGUgcmVzdWx0IG5lZWQgdG8gaGF2ZSB0 aGUgc2FtZSBzaXplCisgICAgIHF1YWxpZmllci4KKworICAgICBBbmFsb2dv dXMgdG86CisgICAgICAgQ01QTFggKHJlYWwsaW1hZykKKyAgICAgaW4gQy4K KworICAgICBUaGUgZmlyc3Qgb3BlcmFuZCBpcyB0aGUgcmVhbCBwYXJ0LCB0 aGUgb3RoZXIKKyAgICAgdGhlIGltYWdpbmFyeS4gTmVnYXRpdmUgemVyb2Vz IGFyZSBwcmVzZXJ2ZWQKKyAgICAgYW5kIEluZjpzIGRvIG5vdCBsZWFkIHRv IE5hTnMuCisKKyAgICAgVGhpcyBvcGVyYXRvciAgd2FzIGFkZGVkIGluIExJ QkdDQ0pJVF9BQklfMjY7CisgICAgIHlvdSBjYW4gdGVzdCBmb3IgaXRzIHBy ZXNlbmNlIHVzaW5nCisgICAgICAgI2lmZGVmIExJQkdDQ0pJVF9IQVZFX0NP TVBMRVgKKyAgKi8KKyAgR0NDX0pJVF9CSU5BUllfT1BfQ09NUExFWAogfTsK IAogZXh0ZXJuIGdjY19qaXRfcnZhbHVlICoKQEAgLTE3NDAsNiArMTc2OSwx OSBAQCBnY2Nfaml0X3RpbWVyX3ByaW50IChnY2Nfaml0X3RpbWVyICp0aW1l ciwKIAkJICAgICBGSUxFICpmX291dCk7CiAKIAorI2RlZmluZSBMSUJHQ0NK SVRfSEFWRV9DT01QTEVYCisKKy8qIEVuYWJsZXMgY29tcGxleCB0eXBlIHN1 cHBvcnQgaW4gbGliZ2Njaml0LgorCisgICBUaGlzIEFQSSBlbnRyeXBvaW50 IHdhcyBhZGRlZCBpbiBMSUJHQ0NKSVRfQUJJXzI2OyB5b3UgY2FuIHRlc3Qg Zm9yIGl0cworICAgcHJlc2VuY2UgdXNpbmcKKyAgICAgI2lmZGVmIExJQkdD Q0pJVF9IQVZFX0NPTVBMRVgKKyovCisKK2V4dGVybiB2b2lkCitnY2Nfaml0 X2NvbnRleHRfc2V0X2Jvb2xfZW5hYmxlX2NvbXBsZXhfdHlwZXMgKGdjY19q aXRfY29udGV4dCAqY3R4dCwKKwkJCQkJICAgICAgIGludCBib29sX3ZhbHVl KTsKKwogI2RlZmluZSBMSUJHQ0NKSVRfSEFWRV9nY2Nfaml0X3J2YWx1ZV9z ZXRfYm9vbF9yZXF1aXJlX3RhaWxfY2FsbAogCiAvKiBNYXJrL2NsZWFyIGEg Y2FsbCBhcyBuZWVkaW5nIHRhaWwtY2FsbCBvcHRpbWl6YXRpb24uCmRpZmYg LS1naXQgYS9nY2Mvaml0L2xpYmdjY2ppdC5tYXAgYi9nY2Mvaml0L2xpYmdj Y2ppdC5tYXAKaW5kZXggOGI5MGEwZTJmZjMuLmVmYTgwZDljZjJmIDEwMDY0 NAotLS0gYS9nY2Mvaml0L2xpYmdjY2ppdC5tYXAKKysrIGIvZ2NjL2ppdC9s aWJnY2NqaXQubWFwCkBAIC0yNzYsMyArMjc2LDkgQEAgTElCR0NDSklUX0FC SV8yNSB7CiAgIGdsb2JhbDoKICAgICBnY2Nfaml0X3R5cGVfZ2V0X3Jlc3Ry aWN0OwogfSBMSUJHQ0NKSVRfQUJJXzI0OworCitMSUJHQ0NKSVRfQUJJXzI2 IHsKKyAgZ2xvYmFsOgorICAgIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVl X2Zyb21fY29tcGxleF9kb3VibGU7CisgICAgZ2NjX2ppdF9jb250ZXh0X3Nl dF9ib29sX2VuYWJsZV9jb21wbGV4X3R5cGVzOworfSBMSUJHQ0NKSVRfQUJJ XzI1OwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvYWxsLW5v bi1mYWlsaW5nLXRlc3RzLmggYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy9hbGwt bm9uLWZhaWxpbmctdGVzdHMuaAppbmRleCBlNzYyNTYzZjliZC4uYjg2OTNi ZDViOWMgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvaml0LmRnL2FsbC1u b24tZmFpbGluZy10ZXN0cy5oCisrKyBiL2djYy90ZXN0c3VpdGUvaml0LmRn L2FsbC1ub24tZmFpbGluZy10ZXN0cy5oCkBAIC0xMTIsNiArMTEyLDM2IEBA CiAjdW5kZWYgY3JlYXRlX2NvZGUKICN1bmRlZiB2ZXJpZnlfY29kZQogCisv KiB0ZXN0LWNvbXBsZXgtYnVpbHRpbnMuYyAqLworI2RlZmluZSBjcmVhdGVf Y29kZSBjcmVhdGVfY29kZV9jb21wbGV4X2J1aWx0aW5zCisjZGVmaW5lIHZl cmlmeV9jb2RlIHZlcmlmeV9jb2RlX2NvbXBsZXhfYnVpbHRpbnMKKyNpbmNs dWRlICJ0ZXN0LWNvbXBsZXgtYnVpbHRpbnMuYyIKKyN1bmRlZiBjcmVhdGVf Y29kZQorI3VuZGVmIHZlcmlmeV9jb2RlCisKKy8qIHRlc3QtY29tcGxleC1s aXRlcmFscy5jICovCisjZGVmaW5lIGNyZWF0ZV9jb2RlIGNyZWF0ZV9jb2Rl X2NvbXBsZXhfbGl0ZXJhbHMKKyNkZWZpbmUgdmVyaWZ5X2NvZGUgdmVyaWZ5 X2NvZGVfY29tcGxleF9saXRlcmFscworI2luY2x1ZGUgInRlc3QtY29tcGxl eC1saXRlcmFscy5jIgorI3VuZGVmIGNyZWF0ZV9jb2RlCisjdW5kZWYgdmVy aWZ5X2NvZGUKKworLyogdGVzdC1jb21wbGV4LW1pc2MuYyAqLworI2RlZmlu ZSBjcmVhdGVfY29kZSBjcmVhdGVfY29kZV9jb21wbGV4X21pc2MKKyNkZWZp bmUgdmVyaWZ5X2NvZGUgdmVyaWZ5X2NvZGVfY29tcGxleF9taXNjCisjaW5j bHVkZSAidGVzdC1jb21wbGV4LW1pc2MuYyIKKyN1bmRlZiBjcmVhdGVfY29k ZQorI3VuZGVmIHZlcmlmeV9jb2RlCisKKy8qIHRlc3QtY29tcGxleC1vcGVy YXRvcnMuYyAqLworI2RlZmluZSBjcmVhdGVfY29kZSBjcmVhdGVfY29kZV9j b21wbGV4X29wZXJhdG9ycworI2RlZmluZSB2ZXJpZnlfY29kZSB2ZXJpZnlf Y29kZV9jb21wbGV4X29wZXJhdG9ycworI2luY2x1ZGUgInRlc3QtY29tcGxl eC1vcGVyYXRvcnMuYyIKKyN1bmRlZiBjcmVhdGVfY29kZQorI3VuZGVmIHZl cmlmeV9jb2RlCisKKy8qIHRlc3QtY29tcGxleC10eXBlcy5jOiBRdWl0ZSBs b25nLCBkb24ndCBpbmNsdWRlIGhlcmUgKi8KKwogLyogdGVzdC1jb21wb3Vu ZC1hc3NpZ25tZW50LmMgKi8KICNkZWZpbmUgY3JlYXRlX2NvZGUgY3JlYXRl X2NvZGVfY29tcG91bmRfYXNzaWdubWVudAogI2RlZmluZSB2ZXJpZnlfY29k ZSB2ZXJpZnlfY29kZV9jb21wb3VuZF9hc3NpZ25tZW50CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWNvbXBsZXgtYnVpbHRpbnMu YyBiL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtY29tcGxleC1idWlsdGlu cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5m Y2UyYzliMmQwOQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv aml0LmRnL3Rlc3QtY29tcGxleC1idWlsdGlucy5jCkBAIC0wLDAgKzEsMjE3 IEBACisvKgorICBUaGlzIHRlc3QganVzdCBjaGVja3MgdGhhdCB0aGUgYnVp bHRpbnMgY2ltYWcsIGNyZWFsIGFuZAorICBjb25qIGFyZSB1c2FibGUuCisK KyAgQWxzbywgdGhleSBzaG91bGQgYmUgaW5saW5lZCwgd2hpY2ggY2FuIGJl IGNoZWNrZWQgYnkKKyAgZGlzYXNzZW1ibGluZyB0aGUgb2JqZWN0IGZpbGUg bWFudWFsbHkuCisqLworCisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUg PGNvbXBsZXguaD4KKworI2luY2x1ZGUgImxpYmdjY2ppdC5oIgorCisjaW5j bHVkZSAiaGFybmVzcy5oIgorCitzdGF0aWMgdm9pZAorbWFrZV9jb2RlX3Vu b3BfYnVpbHRpbnMgKGdjY19qaXRfY29udGV4dCAqY3R4dCwKKwkJIGNvbnN0 IGNoYXIgKmZuX25hbWUsCisJCSBpbnQgdHlwZV9yZXR1cm4sCisJCSBpbnQg dHlwZV9hcmcsCisJCSBnY2Nfaml0X2Z1bmN0aW9uICpmbikKK3sgCisgIGdj Y19qaXRfYmxvY2sgKmJsb2NrOworCisgIGdjY19qaXRfdHlwZSAqdHIgPSBn Y2Nfaml0X2NvbnRleHRfZ2V0X3R5cGUgKGN0eHQsIHR5cGVfcmV0dXJuKTsK KyAgZ2NjX2ppdF90eXBlICp0YSA9IGdjY19qaXRfY29udGV4dF9nZXRfdHlw ZSAoY3R4dCwgdHlwZV9hcmcpOworICAKKyAgZ2NjX2ppdF9wYXJhbSAqcGFy YW0xID0gZ2NjX2ppdF9jb250ZXh0X25ld19wYXJhbSAoY3R4dCwgMCwgdGEs ICJmMSIpOworCisgIGdjY19qaXRfcGFyYW0gKnBhcmFtc1tdID0ge3BhcmFt MX07CisgIAorICBnY2Nfaml0X2Z1bmN0aW9uICpmb28gPSBnY2Nfaml0X2Nv bnRleHRfbmV3X2Z1bmN0aW9uIChjdHh0LCAwLAorICAgIEdDQ19KSVRfRlVO Q1RJT05fRVhQT1JURUQsCisgICAgdHIsIGZuX25hbWUsIDEsIHBhcmFtcywg MCk7CisgIAorICBibG9jayA9IGdjY19qaXRfZnVuY3Rpb25fbmV3X2Jsb2Nr IChmb28sICJzdGFydCIpOworCisgIGdjY19qaXRfbHZhbHVlICpmMSA9IGdj Y19qaXRfcGFyYW1fYXNfbHZhbHVlICgKKyAgICBnY2Nfaml0X2Z1bmN0aW9u X2dldF9wYXJhbSAoZm9vLCAwKSk7CisKKyAgZ2NjX2ppdF9ydmFsdWUgKmFy Z3NbXSA9IHsKKyAgICBnY2Nfaml0X2x2YWx1ZV9hc19ydmFsdWUgKGYxKQor ICB9OworICAKKyAgLyogcmV0dXJuIGZuKGYxKTsgKi8KKyAgZ2NjX2ppdF9y dmFsdWUgKnIgPSBnY2Nfaml0X2NvbnRleHRfbmV3X2NhbGwKKyAgICAoY3R4 dCwgMCwgZm4sCisgICAgIDEsCisgICAgIGFyZ3MpOworICAKKyAgZ2NjX2pp dF9ibG9ja19lbmRfd2l0aF9yZXR1cm4gKGJsb2NrLCAwLCByKTsKK30KKwor c3RhdGljIHZvaWQKK21ha2VfY29kZV9iaW5vcF9idWlsdGlucyAoZ2NjX2pp dF9jb250ZXh0ICpjdHh0LAorCQkgY29uc3QgY2hhciAqZm5fbmFtZSwKKwkJ IGludCB0eXBlMSwKKwkJIGludCB0eXBlMiwKKwkJIGdjY19qaXRfZnVuY3Rp b24gKmJ1aWx0aW4pCit7CisgIGdjY19qaXRfYmxvY2sgKmJsb2NrOworICAK KyAgZ2NjX2ppdF90eXBlICp0MSA9IGdjY19qaXRfY29udGV4dF9nZXRfdHlw ZSAoY3R4dCwgdHlwZTEpOworICBnY2Nfaml0X3R5cGUgKnQyID0gZ2NjX2pp dF9jb250ZXh0X2dldF90eXBlIChjdHh0LCB0eXBlMik7CisgIAorICBnY2Nf aml0X3BhcmFtICpwYXJhbTEgPSBnY2Nfaml0X2NvbnRleHRfbmV3X3BhcmFt IChjdHh0LCAwLCB0MSwgImYxIik7CisgIGdjY19qaXRfcGFyYW0gKnBhcmFt MiA9IGdjY19qaXRfY29udGV4dF9uZXdfcGFyYW0gKGN0eHQsIDAsIHQyLCAi ZjIiKTsKKworICBnY2Nfaml0X3BhcmFtICpwYXJhbXNbXSA9IHtwYXJhbTEs IHBhcmFtMn07CisgIAorICBnY2Nfaml0X2Z1bmN0aW9uICpmb28gPSBnY2Nf aml0X2NvbnRleHRfbmV3X2Z1bmN0aW9uIChjdHh0LCAwLAorICAgIEdDQ19K SVRfRlVOQ1RJT05fRVhQT1JURUQsCisgICAgdDEsIGZuX25hbWUsIDIsIHBh cmFtcywgMCk7CisgIAorICBibG9jayA9IGdjY19qaXRfZnVuY3Rpb25fbmV3 X2Jsb2NrIChmb28sICJzdGFydCIpOworCisgIGdjY19qaXRfbHZhbHVlICpm MSA9IGdjY19qaXRfcGFyYW1fYXNfbHZhbHVlICgKKyAgICBnY2Nfaml0X2Z1 bmN0aW9uX2dldF9wYXJhbShmb28sIDApKTsKKyAgZ2NjX2ppdF9sdmFsdWUg KmYyID0gZ2NjX2ppdF9wYXJhbV9hc19sdmFsdWUgKAorICAgIGdjY19qaXRf ZnVuY3Rpb25fZ2V0X3BhcmFtKGZvbywgMSkpOworCisgIGdjY19qaXRfcnZh bHVlICphcmdzW10gPSB7CisgICAgZ2NjX2ppdF9sdmFsdWVfYXNfcnZhbHVl IChmMSksCisgICAgZ2NjX2ppdF9sdmFsdWVfYXNfcnZhbHVlIChmMikKKyAg fTsKKyAgCisgIC8qIHJldHVybiBidWlsdGluKGYxLGYyKTsgKi8KKyAgZ2Nj X2ppdF9ydmFsdWUgKnIgPSBnY2Nfaml0X2NvbnRleHRfbmV3X2NhbGwKKyAg ICAoY3R4dCwgMCwgYnVpbHRpbiwKKyAgICAgMiwKKyAgICAgYXJncyk7Cisg IAorICBnY2Nfaml0X2Jsb2NrX2VuZF93aXRoX3JldHVybiAoYmxvY2ssIDAs IHIpOworfQorCit2b2lkCitjcmVhdGVfY29kZSAoZ2NjX2ppdF9jb250ZXh0 ICpjdHh0LCB2b2lkICp1c2VyX2RhdGEpCit7CisgICh2b2lkKSB1c2VyX2Rh dGE7CisKKyAgZ2NjX2ppdF9jb250ZXh0X3NldF9ib29sX2VuYWJsZV9jb21w bGV4X3R5cGVzIChjdHh0LCAxKTsKKyAgCisgIGdjY19qaXRfZnVuY3Rpb24g KmZuX2Nwb3cgPSBnY2Nfaml0X2NvbnRleHRfZ2V0X2J1aWx0aW5fZnVuY3Rp b24KKyAgICAoY3R4dCwgIl9fYnVpbHRpbl9jcG93Iik7CisKKyAgbWFrZV9j b2RlX2Jpbm9wX2J1aWx0aW5zIChjdHh0LCAiY3Bvd19idWlsdGluIiwKKwkJ ICAgR0NDX0pJVF9UWVBFX0NPTVBMRVhfRE9VQkxFLAorCQkgICBHQ0NfSklU X1RZUEVfQ09NUExFWF9ET1VCTEUsCisJCSAgIGZuX2Nwb3cpOworCisgIGdj Y19qaXRfZnVuY3Rpb24gKmZuX2NvbmogPSBnY2Nfaml0X2NvbnRleHRfZ2V0 X2J1aWx0aW5fZnVuY3Rpb24KKyAgICAoY3R4dCwgIl9fYnVpbHRpbl9jb25q Iik7CisgIAorICAvKiBJbiBhIGdvb2Qgd29ybGQgY29uaiBzaG91bGQgYmUg aW5saW5lZCAqLworICBtYWtlX2NvZGVfdW5vcF9idWlsdGlucyAoY3R4dCwg ImNvbmpfaW5saW5lZCIsCisJCSAgR0NDX0pJVF9UWVBFX0NPTVBMRVhfRE9V QkxFLAorCQkgIEdDQ19KSVRfVFlQRV9DT01QTEVYX0RPVUJMRSwKKwkJICBm bl9jb25qKTsKKworICBnY2Nfaml0X2Z1bmN0aW9uICpmbl9jcmVhbCA9IGdj Y19qaXRfY29udGV4dF9nZXRfYnVpbHRpbl9mdW5jdGlvbgorICAgIChjdHh0 LCAiX19idWlsdGluX2NyZWFsIik7CisgIGdjY19qaXRfZnVuY3Rpb24gKmZu X2NyZWFsZiA9IGdjY19qaXRfY29udGV4dF9nZXRfYnVpbHRpbl9mdW5jdGlv bgorICAgIChjdHh0LCAiX19idWlsdGluX2NyZWFsZiIpOworICBnY2Nfaml0 X2Z1bmN0aW9uICpmbl9jcmVhbGwgPSBnY2Nfaml0X2NvbnRleHRfZ2V0X2J1 aWx0aW5fZnVuY3Rpb24KKyAgICAoY3R4dCwgIl9fYnVpbHRpbl9jcmVhbGwi KTsKKyAgZ2NjX2ppdF9mdW5jdGlvbiAqZm5fY2ltYWcgPSBnY2Nfaml0X2Nv bnRleHRfZ2V0X2J1aWx0aW5fZnVuY3Rpb24KKyAgICAoY3R4dCwgIl9fYnVp bHRpbl9jaW1hZyIpOworCisgIC8qIFRoZXNlIHNob3VsZCBiZSBpbmxpbmVk IHRvbyAqLworICBtYWtlX2NvZGVfdW5vcF9idWlsdGlucyAoY3R4dCwgImNy ZWFsX2lubGluZWQiLAorCQkgIEdDQ19KSVRfVFlQRV9ET1VCTEUsCisJCSAg R0NDX0pJVF9UWVBFX0NPTVBMRVhfRE9VQkxFLAorCQkgIGZuX2NyZWFsKTsK KyAgbWFrZV9jb2RlX3Vub3BfYnVpbHRpbnMgKGN0eHQsICJjaW1hZ19pbmxp bmVkIiwKKwkJICBHQ0NfSklUX1RZUEVfRE9VQkxFLAorCQkgIEdDQ19KSVRf VFlQRV9DT01QTEVYX0RPVUJMRSwKKwkJICBmbl9jaW1hZyk7CisKKyAgbWFr ZV9jb2RlX3Vub3BfYnVpbHRpbnMgKGN0eHQsICJjcmVhbGZfaW5saW5lZCIs CisJCSAgR0NDX0pJVF9UWVBFX0ZMT0FULAorCQkgIEdDQ19KSVRfVFlQRV9D T01QTEVYX0ZMT0FULAorCQkgIGZuX2NyZWFsZik7CisgIG1ha2VfY29kZV91 bm9wX2J1aWx0aW5zIChjdHh0LCAiY3JlYWxsX2lubGluZWQiLAorCQkgIEdD Q19KSVRfVFlQRV9MT05HX0RPVUJMRSwKKwkJICBHQ0NfSklUX1RZUEVfQ09N UExFWF9MT05HX0RPVUJMRSwKKwkJICBmbl9jcmVhbGwpOworICAKKyAgLyog VXNlIHRvIGluc3BlY3QgY29kZSBtYW51YWxseSBhbmQgYXNzdXJlIGNvbmos IGNyZWFsLCBjaW1hZworICAgICBhcmUgaW5saW5lZC4gQXQgdGhlIHRpbWUg b2Ygd3JpdGluZyB0aGV5IGFyZSBvbiBteSB4NjQgbWFjaGluZSAqLworICAj aWYgMAorICBnY2Nfaml0X2NvbnRleHRfY29tcGlsZV90b19maWxlIChjdHh0 LCBHQ0NfSklUX09VVFBVVF9LSU5EX09CSkVDVF9GSUxFLAorCQkJCSAgICJ0 ZXN0LWNvbXBsZXgtYnVpbHRpbnMubyIpOworICAjZW5kaWYKK30KKwordHlw ZWRlZiBfQ29tcGxleCBkb3VibGUgKCpjZF9jZGNkKShfQ29tcGxleCBkb3Vi bGUsIF9Db21wbGV4IGRvdWJsZSk7Cit0eXBlZGVmIF9Db21wbGV4IGRvdWJs ZSAoKmNkX2NkKShfQ29tcGxleCBkb3VibGUpOwordHlwZWRlZiBkb3VibGUg KCpkX2NkKShfQ29tcGxleCBkb3VibGUpOwordHlwZWRlZiBmbG9hdCAoKmZf Y2YpKF9Db21wbGV4IGZsb2F0KTsKK3R5cGVkZWYgbG9uZyBkb3VibGUgKCps ZF9jbGQpKF9Db21wbGV4IGxvbmcgZG91YmxlKTsKKworLyogV2UgbmVlZCB0 aGlzIHRvIGZvb2wgR0NDIGludG8gbm90IHByZWNvbXB1dGluZyB0aGUgYnVp bHQtaW4gLi4uCisgICBwcmVjb21wdXRpbmcgc2VlbXMgbGlrZSBhIGZldXR1 cmUgbGliZ2Njaml0IG1pc3Nlcy4gKi8KK3ZvbGF0aWxlIF9Db21wbGV4IGRv dWJsZSBoYWxmID0gMC41OworCit2b2lkCit2ZXJpZnlfY29kZSAoZ2NjX2pp dF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X3Jlc3VsdCAqcmVzdWx0KQorewor ICBDSEVDS19OT05fTlVMTCAocmVzdWx0KTsKKworICB7LyogVGVzdCBiaW5h cnkgYnVpbHRpbnMgKi8KKyAgICB7CisgICAgICAgY2RfY2RjZCBmbiA9CisJ Z2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNwb3dfYnVpbHRp biIpOworICAgICAgIENIRUNLX05PTl9OVUxMIChmbik7CisgICAgICAgCisg ICAgICAgQ0hFQ0tfVkFMVUUgKGZuICgyLCAyKSwgNC4pOworICAgICAgIF9D b21wbGV4IGRvdWJsZSBhbnMgPSBmbiAoLTEuLCAwLjUpOworICAgICAgIF9D b21wbGV4IGRvdWJsZSBrZXkgPSBfX2J1aWx0aW5fY3BvdyAoLTEuLCBoYWxm KTsKKworICAgICAgIC8qIFRoaXMgdGVzdCBmYWlscyBpZiBsaWJnY2NqaXQg Y2FuIHByZWNvbXB1dGUgYnVpbHRpbnMgKi8KKyAgICAgICBDSEVDS19WQUxV RSAoYW5zLCBrZXkpOyAvKiBBbG1vc3QgMS5qICovCisgICAgfQorICB9Cisg IHsvKiBUZXN0IHVuYXJ5IGJ1aWx0aW5zICovCisgICAgeyAvKiBjb25qICov CisgICAgICBjZF9jZCBmbiA9IGdjY19qaXRfcmVzdWx0X2dldF9jb2RlIChy ZXN1bHQsICJjb25qX2lubGluZWQiKTsKKyAgICAgIENIRUNLX05PTl9OVUxM IChmbik7CisgICAgICAKKyAgICAgIENIRUNLX1ZBTFVFKCBmbiAoMS4gLSAx LmopLCAxLiArIDEuaik7CisgICAgfQorICAgIHsgLyogY3JlYWwgKi8KKyAg ICAgIGRfY2QgZm4gPSBnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0 LCAiY3JlYWxfaW5saW5lZCIpOworICAgICAgQ0hFQ0tfTk9OX05VTEwgKGZu KTsKKyAgICAgIAorICAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLiAtIDEuaiks IDEuKTsKKyAgICB9CisgICAgeyAvKiBjaW1hZyAqLworICAgICAgZF9jZCBm biA9IGdjY19qaXRfcmVzdWx0X2dldF9jb2RlIChyZXN1bHQsICJjaW1hZ19p bmxpbmVkIik7CisgICAgICBDSEVDS19OT05fTlVMTCAoZm4pOworICAgICAg CisgICAgICBDSEVDS19WQUxVRSAoZm4gKDEuIC0gMS5qKSwgLTEuKTsKKyAg ICB9CisgICAgeyAvKiBjcmVhbGYgKi8KKyAgICAgIGZfY2YgZm4gPSBnY2Nf aml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0LCAiY3JlYWxmX2lubGluZWQi KTsKKyAgICAgIENIRUNLX05PTl9OVUxMIChmbik7CisgICAgICAKKyAgICAg IENIRUNLX1ZBTFVFIChmbiAoMS5mIC0gMS5maiksIDEuZik7CisgICAgfQor ICAgIHsgLyogY3JlYWxsICovCisgICAgICBsZF9jbGQgZm4gPSBnY2Nfaml0 X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0LCAiY3JlYWxsX2lubGluZWQiKTsK KyAgICAgIENIRUNLX05PTl9OVUxMIChmbik7CisgICAgICAKKyAgICAgIENI RUNLX1ZBTFVFIChmbiAoMS5MIC0gMS5MaiksIDEuTCk7CisgICAgfQorICB9 Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWNv bXBsZXgtbGl0ZXJhbHMuYyBiL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3Qt Y29tcGxleC1saXRlcmFscy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi40YmY1ZDk2YWMwNgotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtY29tcGxleC1saXRlcmFscy5j CkBAIC0wLDAgKzEsMTQ1IEBACisvKgorICBUZXN0IHRoZSBuZXcgJ2djY19q aXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21fY29tcGxleF9kb3VibGUoKScK KyAgYXN3ZWxsIGFzIHRlc3QgdGhhdCB0aGUgb2xkICdfZnJvbV9pbnQgLi4u IF9mcm9tX2RvdWJsZSIKKyAgY2FuIHByb2R1Y2UgY29tcGxleCB2YWx1ZXMu CisqLworCisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPGNvbXBsZXgu aD4KKworI2luY2x1ZGUgImxpYmdjY2ppdC5oIgorI2luY2x1ZGUgImhhcm5l c3MuaCIKKworc3RhdGljIHZvaWQKK21ha2VfY29kZSAoZ2NjX2ppdF9jb250 ZXh0ICpjdHh0LAorCSAgIGNvbnN0IGNoYXIgKmZuX25hbWUsCisJICAgaW50 IHR5cGUsCisJICAgX0NvbXBsZXggZG91YmxlIGxvY2FsX3ZhbCwKKwkgICBp bnQgbGl0X3R5cGUpCit7CisgIGdjY19qaXRfdHlwZSAqdHQgPSBnY2Nfaml0 X2NvbnRleHRfZ2V0X3R5cGUgKGN0eHQsIHR5cGUpOworCisgIGdjY19qaXRf ZnVuY3Rpb24gKmZvbyA9IGdjY19qaXRfY29udGV4dF9uZXdfZnVuY3Rpb24g KGN0eHQsIDAsCisgICAgR0NDX0pJVF9GVU5DVElPTl9FWFBPUlRFRCwKKyAg ICB0dCwgZm5fbmFtZSwgMCwgMCwgMCk7CisgIAorICBnY2Nfaml0X2Jsb2Nr ICpibG9jayA9IGdjY19qaXRfZnVuY3Rpb25fbmV3X2Jsb2NrIChmb28sICJz dGFydCIpOworCisgIC8qIGxvY2FsX3R5cGUgZjEgPSBsb2NhbF92YWw7ICov CisgIGdjY19qaXRfbHZhbHVlICpmMSA9IGdjY19qaXRfZnVuY3Rpb25fbmV3 X2xvY2FsIChmb28sIDAsIHR0LCAiZjEiKTsKKworICBnY2Nfaml0X3J2YWx1 ZSAqcjE7CisKKyAgaWYgKGxpdF90eXBlID09ICdjJykKKyAgICByMSA9IGdj Y19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21fY29tcGxleF9kb3VibGUg KGN0eHQsIHR0LCBsb2NhbF92YWwpOworICBlbHNlIGlmIChsaXRfdHlwZSA9 PSAnZCcpCisgICAgcjEgPSBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9m cm9tX2RvdWJsZSAoY3R4dCwgdHQsIGNyZWFsKGxvY2FsX3ZhbCkpOworICBl bHNlIGlmIChsaXRfdHlwZSA9PSAnbCcpCisgICAgcjEgPSBnY2Nfaml0X2Nv bnRleHRfbmV3X3J2YWx1ZV9mcm9tX2xvbmcgKGN0eHQsIHR0LCBjcmVhbChs b2NhbF92YWwpKTsKKyAgZWxzZSBpZiAobGl0X3R5cGUgPT0gJ2knKQorICAg IHIxID0gZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9pbnQgKGN0 eHQsIHR0LCBjcmVhbChsb2NhbF92YWwpKTsKKyAgICAKKyAgZ2NjX2ppdF9i bG9ja19hZGRfYXNzaWdubWVudCAoYmxvY2ssIDAsIGYxLCByMSk7CisgIAor ICBnY2Nfaml0X2Jsb2NrX2VuZF93aXRoX3JldHVybiAoYmxvY2ssIDAsIGdj Y19qaXRfbHZhbHVlX2FzX3J2YWx1ZShmMSkpOworfQorCit2b2lkCitjcmVh dGVfY29kZSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCB2b2lkICp1c2VyX2Rh dGEpCit7CisgICh2b2lkKSB1c2VyX2RhdGE7CisKKyAgZ2NjX2ppdF9jb250 ZXh0X3NldF9ib29sX2VuYWJsZV9jb21wbGV4X3R5cGVzIChjdHh0LCAxKTsK KworICBtYWtlX2NvZGUgKGN0eHQsICJjb21wbGV4X2Zsb2F0X2NsaXRfMWMx XzJjMmoiLAorCSAgICAgICBHQ0NfSklUX1RZUEVfQ09NUExFWF9GTE9BVCwK KwkgICAgICAgMS4xICsgMi4yaiwgJ2MnKTsKKyAgbWFrZV9jb2RlIChjdHh0 LCAiY29tcGxleF9kb3VibGVfY2xpdF8xYzFfMmMyaiIsCisJICAgICAgIEdD Q19KSVRfVFlQRV9DT01QTEVYX0RPVUJMRSwKKwkgICAgICAgMS4xICsgMi4y aiwgJ2MnKTsKKyAgbWFrZV9jb2RlIChjdHh0LCAiY29tcGxleF9sb25nX2Rv dWJsZV9jbGl0XzFjMV8yYzJqIiwKKwkgICAgICAgR0NDX0pJVF9UWVBFX0NP TVBMRVhfTE9OR19ET1VCTEUsCisJICAgICAgIDEuMSArIDIuMmosICdjJyk7 CisgIG1ha2VfY29kZSAoY3R4dCwgImZsb2F0X2NsaXRfMWMxIiwKKwkgICAg ICAgR0NDX0pJVF9UWVBFX0ZMT0FULAorCSAgICAgICAxLjEgKyAyLjJqLCAn YycpOworICBtYWtlX2NvZGUgKGN0eHQsICJkb3VibGVfY2xpdF8xYzEiLAor CSAgICAgICBHQ0NfSklUX1RZUEVfRE9VQkxFLAorCSAgICAgICAxLjEgKyAy LjJqLCAnYycpOworICBtYWtlX2NvZGUgKGN0eHQsICJsb25nX2RvdWJsZV9j bGl0XzFjMSIsCisJICAgICAgIEdDQ19KSVRfVFlQRV9MT05HX0RPVUJMRSwK KwkgICAgICAgMS4xICsgMi4yaiwgJ2MnKTsKKworICAvKiBNYWtlIGNvbXBs ZXggZnJvbSAiZnJvbV9kb3VibGUiLCAiZnJvbV9sb25nIiwiZnJvbV9pbnQi ICovCisgIG1ha2VfY29kZSAoY3R4dCwgImNvbXBsZXhfZmxvYXRfZGxpdF8x YzEiLAorCSAgICAgICBHQ0NfSklUX1RZUEVfQ09NUExFWF9GTE9BVCwKKwkg ICAgICAgMS4xLCAnZCcpOworICBtYWtlX2NvZGUgKGN0eHQsICJjb21wbGV4 X2RvdWJsZV9kbGl0XzFjMSIsCisJICAgICAgIEdDQ19KSVRfVFlQRV9DT01Q TEVYX0RPVUJMRSwKKwkgICAgICAgMS4xLCAnZCcpOworICBtYWtlX2NvZGUg KGN0eHQsICJjb21wbGV4X2xvbmdfZG91YmxlX2RsaXRfMWMxIiwKKwkgICAg ICAgR0NDX0pJVF9UWVBFX0NPTVBMRVhfTE9OR19ET1VCTEUsCisJICAgICAg IDEuMSwgJ2QnKTsKKyAgbWFrZV9jb2RlIChjdHh0LCAiY29tcGxleF9kb3Vi bGVfbGxpdF8yIiwKKwkgICAgICAgR0NDX0pJVF9UWVBFX0NPTVBMRVhfRE9V QkxFLAorCSAgICAgICAyLCAnbCcpOworICBtYWtlX2NvZGUgKGN0eHQsICJj b21wbGV4X2RvdWJsZV9pbGl0XzMiLAorCSAgICAgICBHQ0NfSklUX1RZUEVf Q09NUExFWF9ET1VCTEUsCisJICAgICAgIDMsICdpJyk7Cit9CisKK3ZvaWQK K3ZlcmlmeV9jb2RlIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRf cmVzdWx0ICpyZXN1bHQpCit7CisgIENIRUNLX05PTl9OVUxMIChyZXN1bHQp OworCisgIHsvKiBUZXN0IGxpdGVyYWxzICovCisgICAgeworICAgICAgX0Nv bXBsZXggZmxvYXQgKCpmKSgpID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUg KHJlc3VsdCwgImNvbXBsZXhfZmxvYXRfY2xpdF8xYzFfMmMyaiIpOworCisg ICAgICBDSEVDS19WQUxVRShmICgpLCAxLjFmICsgMi4yZmopOworICAgIH0K KyAgICB7CisgICAgICBfQ29tcGxleCBkb3VibGUgKCpmKSgpID0gZ2NjX2pp dF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNvbXBsZXhfZG91YmxlX2Ns aXRfMWMxXzJjMmoiKTsKKyAgICAgIENIRUNLX1ZBTFVFKGYgKCksIDEuMSAr IDIuMmopOworICAgIH0KKyAgICB7CisgICAgICBfQ29tcGxleCBsb25nIGRv dWJsZSAoKmYpKCkgPSBnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0 LCAiY29tcGxleF9sb25nX2RvdWJsZV9jbGl0XzFjMV8yYzJqIik7CisgICAg ICAvKiBOb3RlOiBUaGUgbGl0ZXJhbCBpbiB0aGUgZnVuY3Rpb24gaXMgY29t cGxleCBkb3VibGUgKi8KKyAgICAgIENIRUNLX1ZBTFVFKGYgKCksMS4xICsg Mi4yaik7CisgICAgfQorICAgIHsKKyAgICAgIGZsb2F0ICgqZikoKSA9IGdj Y19qaXRfcmVzdWx0X2dldF9jb2RlIChyZXN1bHQsICJmbG9hdF9jbGl0XzFj MSIpOworICAgICAgQ0hFQ0tfVkFMVUUoZiAoKSwgMS4xZik7CisgICAgfQor ICAgIHsKKyAgICAgIGRvdWJsZSAoKmYpKCkgPSBnY2Nfaml0X3Jlc3VsdF9n ZXRfY29kZSAocmVzdWx0LCAiZG91YmxlX2NsaXRfMWMxIik7CisgICAgICBD SEVDS19WQUxVRShmICgpLCAxLjEpOworICAgIH0KKyAgICB7CisgICAgICBs b25nIGRvdWJsZSAoKmYpKCkgPSBnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAo cmVzdWx0LCAibG9uZ19kb3VibGVfY2xpdF8xYzEiKTsKKyAgICAgIENIRUNL X1ZBTFVFKGYgKCksIDEuMSk7CisgICAgfQorICAgIHsKKyAgICAgIF9Db21w bGV4IGZsb2F0ICgqZikoKSA9IGdjY19qaXRfcmVzdWx0X2dldF9jb2RlIChy ZXN1bHQsICJjb21wbGV4X2Zsb2F0X2RsaXRfMWMxIik7CisgICAgICBDSEVD S19WQUxVRShmICgpLCAxLjFmKTsKKyAgICB9CisgICAgeworICAgICAgX0Nv bXBsZXggZG91YmxlICgqZikoKSA9IGdjY19qaXRfcmVzdWx0X2dldF9jb2Rl IChyZXN1bHQsICJjb21wbGV4X2RvdWJsZV9kbGl0XzFjMSIpOworICAgICAg Q0hFQ0tfVkFMVUUoZiAoKSwgMS4xKTsKKyAgICB9CisgICAgeworICAgICAg X0NvbXBsZXggbG9uZyBkb3VibGUgKCpmKSgpID0gZ2NjX2ppdF9yZXN1bHRf Z2V0X2NvZGUgKHJlc3VsdCwgImNvbXBsZXhfbG9uZ19kb3VibGVfZGxpdF8x YzEiKTsKKyAgICAgIC8qIE5vdGU6IFRoZSBsaXRlcmFsIGluIHRoZSBmdW5j dGlvbiBpcyBjb21wbGV4IGRvdWJsZSAqLworICAgICAgQ0hFQ0tfVkFMVUUo ZiAoKSwgMS4xKTsKKyAgICB9CisgICAgeworICAgICAgX0NvbXBsZXggZG91 YmxlICgqZikoKSA9IGdjY19qaXRfcmVzdWx0X2dldF9jb2RlIChyZXN1bHQs ICJjb21wbGV4X2RvdWJsZV9sbGl0XzIiKTsKKyAgICAgIENIRUNLX1ZBTFVF KGYgKCksIDIpOworICAgIH0KKyAgICB7CisgICAgICBfQ29tcGxleCBkb3Vi bGUgKCpmKSgpID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwg ImNvbXBsZXhfZG91YmxlX2lsaXRfMyIpOworICAgICAgQ0hFQ0tfVkFMVUUo ZiAoKSwgMyk7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2ppdC5kZy90ZXN0LWNvbXBsZXgtbWlzYy5jIGIvZ2NjL3Rlc3Rz dWl0ZS9qaXQuZGcvdGVzdC1jb21wbGV4LW1pc2MuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmUwY2RhZGU5MjcKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWNvbXBs ZXgtbWlzYy5jCkBAIC0wLDAgKzEsMjA0IEBACisvKgorICBUaGlzIHRlc3Qg Y2hlY2tzIHdldGhlciBjb21wbGV4IHR5cGVzIHdvcmsgd2l0aCBzdHJ1Y3Rz LCB1bmlvbnMKKyAgYW5kIHBvaW50ZXJzLgorCisgIEFzd2VsbCBhcyBjb25z dCBhbmQgdm9sYXRpbGUsIGJ1dCBvbmx5IGluIHRoZSBzZW5zZSB0aGF0IGhh dmluZworICB0aG9zZSBxdWFsaWZpZXJzIGRvZXNuJ3QgY3Jhc2ggZ2NjLgor CisqLworCisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPGNvbXBsZXgu aD4KKworI2luY2x1ZGUgImxpYmdjY2ppdC5oIgorCisjaW5jbHVkZSAiaGFy bmVzcy5oIgorCit2b2lkCitjcmVhdGVfY29kZSAoZ2NjX2ppdF9jb250ZXh0 ICpjdHh0LCB2b2lkICp1c2VyX2RhdGEpCit7CisgICh2b2lkKSB1c2VyX2Rh dGE7CisKKyAgZ2NjX2ppdF9jb250ZXh0X3NldF9ib29sX2VuYWJsZV9jb21w bGV4X3R5cGVzIChjdHh0LCAxKTsKKworICBnY2Nfaml0X3R5cGUgKnR5cGVf aW50ID0KKyAgICBnY2Nfaml0X2NvbnRleHRfZ2V0X3R5cGUgKGN0eHQsIEdD Q19KSVRfVFlQRV9JTlQpOworICBnY2Nfaml0X3R5cGUgKnR5cGVfY2QgPQor ICAgIGdjY19qaXRfY29udGV4dF9nZXRfdHlwZSAoY3R4dCwgR0NDX0pJVF9U WVBFX0NPTVBMRVhfRE9VQkxFKTsKKworICBnY2Nfaml0X2x2YWx1ZSAqY2Rf Z2JsID0gZ2NjX2ppdF9jb250ZXh0X25ld19nbG9iYWwgKAorICAgIGN0eHQs IDAsIEdDQ19KSVRfR0xPQkFMX0VYUE9SVEVELAorICAgIHR5cGVfY2QsCisg ICAgImFfY29tcGxleF9nbG9iYWxfZG91YmxlXzIiKTsKKworICAvKiBUaGVz ZSBnbG9iYWxzIGFyZSBub3QgdXNlZCBmb3IgYW55dGhpbmcgKi8KKyAgZ2Nj X2ppdF9jb250ZXh0X25ld19nbG9iYWwgKAorICAgIGN0eHQsIDAsIEdDQ19K SVRfR0xPQkFMX0VYUE9SVEVELAorICAgIGdjY19qaXRfdHlwZV9nZXRfdm9s YXRpbGUgKHR5cGVfY2QpLAorICAgICJhX3ZvbGF0aWxlX2NvbXBsZXhfZG91 YmxlIik7CisgIGdjY19qaXRfY29udGV4dF9uZXdfZ2xvYmFsICgKKyAgICBj dHh0LCAwLCBHQ0NfSklUX0dMT0JBTF9FWFBPUlRFRCwKKyAgICBnY2Nfaml0 X3R5cGVfZ2V0X2NvbnN0ICh0eXBlX2NkKSwKKyAgICAiYV9jb25zdF9jb21w bGV4X2RvdWJsZSIpOworCisgIGdjY19qaXRfdHlwZSAqYXJyX3R5cGUgPQor ICAgIGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlfdHlwZSAoY3R4dCwKKyAg ICAgIDAsIHR5cGVfY2QsIDEwKTsKKyAgZ2NjX2ppdF9jb250ZXh0X25ld19n bG9iYWwgKAorICAgIGN0eHQsIDAsIEdDQ19KSVRfR0xPQkFMX0VYUE9SVEVE LAorICAgIGFycl90eXBlLAorICAgICJhX2NvbnN0X2NvbXBsZXhfZG91Ymxl X2FycmF5Iik7ICAKKworICB7LyogTWFrZSBhIGZ1bmN0aW9uIHJldHVybmlu ZyB1bmlvbiB3aXRoIDMuMTQgKyAxNTE2LmogaW4gaXQgKi8KKyAgICBnY2Nf aml0X2ZpZWxkICpjZF9maWVsZCA9IAorICAgICAgZ2NjX2ppdF9jb250ZXh0 X25ld19maWVsZCAoY3R4dCwKKwkJCQkgMCwKKwkJCSAgICAgICAgIHR5cGVf Y2QsCisJCQkgICAgICAgICAiY2QiKTsKKyAgICBnY2Nfaml0X2ZpZWxkICpp X2ZpZWxkID0gCisgICAgICBnY2Nfaml0X2NvbnRleHRfbmV3X2ZpZWxkIChj dHh0LAorCQkJICAgICAgICAgMCwKKwkJCSAgICAgICAgIHR5cGVfaW50LAor CQkJICAgICAgICAgImkiKTsKKyAgICBnY2Nfaml0X2ZpZWxkICpmaWVsZHNb XSA9IHtjZF9maWVsZCwgaV9maWVsZH07CisgICAgZ2NjX2ppdF90eXBlICpj ZGkgPQorICAgICAgZ2NjX2ppdF9jb250ZXh0X25ld191bmlvbl90eXBlIChj dHh0LAorCQkJCSAgICAgIDAsCisJCQkJICAgICAgImNkaSIsCisJCQkJICAg ICAgMiwKKwkJCQkgICAgICBmaWVsZHMpOworCisgICAgZ2NjX2ppdF9mdW5j dGlvbiAqZm9vID0gZ2NjX2ppdF9jb250ZXh0X25ld19mdW5jdGlvbiAoY3R4 dCwgMCwKKyAgICAgIEdDQ19KSVRfRlVOQ1RJT05fRVhQT1JURUQsCisgICAg ICBjZGksICJhX3VuaW9ueV9mbl9yZXR1cm5pbmdfdW5pb24iLCAwLCAwLCAw KTsKKworICAgIGdjY19qaXRfYmxvY2sgKmJsb2NrID0gZ2NjX2ppdF9mdW5j dGlvbl9uZXdfYmxvY2sgKGZvbywgInN0YXJ0Iik7CisgICAgZ2NjX2ppdF9s dmFsdWUgKmxvY2FsID0KKyAgICAgIGdjY19qaXRfZnVuY3Rpb25fbmV3X2xv Y2FsIChmb28sIDAsIGNkaSwgInVuaW9uX2xvY2FsIik7CisgICAgZ2NjX2pp dF9sdmFsdWUgKmx2X2ZpZWxkID0gZ2NjX2ppdF9sdmFsdWVfYWNjZXNzX2Zp ZWxkCisgICAgICAobG9jYWwsIDAsIGNkX2ZpZWxkKTsKKyAgICBnY2Nfaml0 X2Jsb2NrX2FkZF9hc3NpZ25tZW50CisgICAgICAoYmxvY2ssIDAsIGx2X2Zp ZWxkLAorICAgICAgIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21f Y29tcGxleF9kb3VibGUgKAorICAgICAgICAgY3R4dCwgdHlwZV9jZCwgMy4x NCArIDE1OTIuaikpOworCisgICAgLyogTm90ZTogV3JpdGVzIHRvIGdsb2Jh bCBoZXJlICovCisgICAgZ2NjX2ppdF9ibG9ja19hZGRfYXNzaWdubWVudCAo CisgICAgICBibG9jaywgMCwgY2RfZ2JsLAorICAgICAgZ2NjX2ppdF9jb250 ZXh0X25ld19ydmFsdWVfZnJvbV9jb21wbGV4X2RvdWJsZSAoCisgICAgICAg ICBjdHh0LCB0eXBlX2NkLCA2NTM1ICsgOS5qKSk7CisgICAgCisgICAgZ2Nj X2ppdF9ibG9ja19lbmRfd2l0aF9yZXR1cm4gKAorICAgICAgYmxvY2ssIDAs IGdjY19qaXRfbHZhbHVlX2FzX3J2YWx1ZSAobG9jYWwpKTsKKyAgfQorICB7 LyogTWFrZSBhIGZ1bmN0aW9uIHJldHVybmluZyBhIGNvbXBsZXh5IHN0cnVj dCAqLworICAgIGdjY19qaXRfZmllbGQgKmNkX2ZpZWxkID0gCisgICAgICBn Y2Nfaml0X2NvbnRleHRfbmV3X2ZpZWxkIChjdHh0LAorCQkJCSAwLAorCQkJ ICAgICAgICAgdHlwZV9jZCwKKwkJCSAgICAgICAgICJjZCIpOworICAgIGdj Y19qaXRfZmllbGQgKmlfZmllbGQgPSAKKyAgICAgIGdjY19qaXRfY29udGV4 dF9uZXdfZmllbGQgKGN0eHQsCisJCQkgICAgICAgICAwLAorCQkJICAgICAg ICAgdHlwZV9pbnQsCisJCQkgICAgICAgICAiaSIpOworICAgIGdjY19qaXRf ZmllbGQgKmZpZWxkc1tdID0ge2NkX2ZpZWxkLCBpX2ZpZWxkfTsKKyAgICBn Y2Nfaml0X3R5cGUgKmNkaV9zdHJ1Y3QgPQorICAgICAgZ2NjX2ppdF9zdHJ1 Y3RfYXNfdHlwZSgKKwlnY2Nfaml0X2NvbnRleHRfbmV3X3N0cnVjdF90eXBl IChjdHh0LAorCQkJCQkwLAorCQkJCQkiY2RpX3N0cnVjdCIsCisJCQkJCTIs CisJCQkJCWZpZWxkcykpOworCisgICAgZ2NjX2ppdF9mdW5jdGlvbiAqZm9v ID0gZ2NjX2ppdF9jb250ZXh0X25ld19mdW5jdGlvbiAoY3R4dCwgMCwKKyAg ICAgIEdDQ19KSVRfRlVOQ1RJT05fRVhQT1JURUQsCisgICAgICBjZGlfc3Ry dWN0LCAiYV9zdHJ1Y3R5X2ZuX3JldHVybmluZ19zdHJ1Y3QiLCAwLCAwLCAw KTsKKworICAgIGdjY19qaXRfYmxvY2sgKmJsb2NrID0gZ2NjX2ppdF9mdW5j dGlvbl9uZXdfYmxvY2sgKGZvbywgInN0YXJ0Iik7CisgICAgZ2NjX2ppdF9s dmFsdWUgKmxvY2FsID0KKyAgICAgIGdjY19qaXRfZnVuY3Rpb25fbmV3X2xv Y2FsIChmb28sIDAsIGNkaV9zdHJ1Y3QsICJsb2NhbCIpOworICAgIGdjY19q aXRfbHZhbHVlICpsdl9maWVsZCA9IGdjY19qaXRfbHZhbHVlX2FjY2Vzc19m aWVsZCAoCisgICAgICBsb2NhbCwgMCwgY2RfZmllbGQpOworICAgIGdjY19q aXRfYmxvY2tfYWRkX2Fzc2lnbm1lbnQgKAorICAgICAgIGJsb2NrLCAwLCBs dl9maWVsZCwKKyAgICAgICAvKiBOb3RlOiBSZWFkcyBmcm9tIGdsb2JhbCBo ZXJlICovCisgICAgICAgZ2NjX2ppdF9sdmFsdWVfYXNfcnZhbHVlKGNkX2di bCkpOworICAgIAorICAgIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhfcmV0dXJu ICgKKyAgICAgIGJsb2NrLCAwLCBnY2Nfaml0X2x2YWx1ZV9hc19ydmFsdWUg KGxvY2FsKSk7CisgIH0KKyAgey8qIE1ha2UgYSBmdW5jdGlvbiB0YWtpbmcg YSBwb2ludGVyIHRvIGEgY29tcGxleCBkb3VibGUsCisgICAgICBhZGQgMSsx LmogdG8gaXQsIGFuZCByZXR1cm4gdGhlIHBvaW50ZXIgKi8KKyAgICAgIGdj Y19qaXRfdHlwZSAqdHlwZV9yZXR1cm4gPQorCWdjY19qaXRfdHlwZV9nZXRf cG9pbnRlciAodHlwZV9jZCk7CisgICAgICAKKyAgICAgIGdjY19qaXRfcGFy YW0gKnBhcmFtID0gZ2NjX2ppdF9jb250ZXh0X25ld19wYXJhbSAoCisJY3R4 dCwgMCwgZ2NjX2ppdF90eXBlX2dldF9wb2ludGVyICh0eXBlX2NkKSwgInBj ZCIpOworICAgICAgCisgICAgICBnY2Nfaml0X2Z1bmN0aW9uICpmb28gPSBn Y2Nfaml0X2NvbnRleHRfbmV3X2Z1bmN0aW9uIChjdHh0LCAwLAorCUdDQ19K SVRfRlVOQ1RJT05fRVhQT1JURUQsCisJdHlwZV9yZXR1cm4sCisJImFfcG9p bnR5X2ZuX3JldHVybmluZ19wb2ludHMiLCAxLCAmcGFyYW0sIDApOworICAg ICAgZ2NjX2ppdF9ibG9jayAqYmxvY2sgPSBnY2Nfaml0X2Z1bmN0aW9uX25l d19ibG9jayAoZm9vLCAic3RhcnQiKTsKKyAgICAgIAorICAgICAgZ2NjX2pp dF9ydmFsdWUgKnBhcmFtX3J2ID0gZ2NjX2ppdF9wYXJhbV9hc19ydmFsdWUg KAorICAgICAgICBnY2Nfaml0X2Z1bmN0aW9uX2dldF9wYXJhbSAoZm9vLCAw KSk7CisKKyAgICAgIGdjY19qaXRfcnZhbHVlICpydmFsID0gZ2NjX2ppdF9j b250ZXh0X25ld19iaW5hcnlfb3AgKAorCWN0eHQsIDAsIEdDQ19KSVRfQklO QVJZX09QX1BMVVMsIHR5cGVfY2QsCisJZ2NjX2ppdF9jb250ZXh0X25ld19y dmFsdWVfZnJvbV9jb21wbGV4X2RvdWJsZSAoCisJICBjdHh0LCB0eXBlX2Nk LCAxICsgMS5qKSwKKwlnY2Nfaml0X2x2YWx1ZV9hc19ydmFsdWUgKAorCSAg Z2NjX2ppdF9ydmFsdWVfZGVyZWZlcmVuY2UgKAorCSAgICBwYXJhbV9ydiwg MCkpKTsKKyAgICAgIGdjY19qaXRfYmxvY2tfYWRkX2Fzc2lnbm1lbnQgKGJs b2NrLCAwLAorICAgICAgICBnY2Nfaml0X3J2YWx1ZV9kZXJlZmVyZW5jZSAo CisJICAgIHBhcmFtX3J2LCAwKSwKKwlydmFsKTsKKworICAgICAgZ2NjX2pp dF9ibG9ja19lbmRfd2l0aF9yZXR1cm4gKAorCWJsb2NrLCAwLCBwYXJhbV9y dik7CisgIH0KK30KKwordHlwZWRlZiB1bmlvbiB7CisgIF9Db21wbGV4IGRv dWJsZSBjZDsKKyAgaW50IGk7Cit9IGNvbXBsZXhfdGVzdF91bmlvbjsKKwor dHlwZWRlZiBzdHJ1Y3QgeworICBfQ29tcGxleCBkb3VibGUgY2Q7CisgIGlu dCBpOworfSBjb21wbGV4X3Rlc3Rfc3RydWN0OworCit2b2lkCit2ZXJpZnlf Y29kZSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X3Jlc3VsdCAq cmVzdWx0KQoreworICBDSEVDS19OT05fTlVMTCAocmVzdWx0KTsKKworICB7 CisgICAgY29tcGxleF90ZXN0X3VuaW9uICgqZm4pKCkgPSBnY2Nfaml0X3Jl c3VsdF9nZXRfY29kZSAocmVzdWx0LCAiYV91bmlvbnlfZm5fcmV0dXJuaW5n X3VuaW9uIik7CisgICAgQ0hFQ0tfTk9OX05VTEwgKGZuKTsKKworICAgIGNv bXBsZXhfdGVzdF91bmlvbiB1ID0gZm4oKTsKKyAgICBDSEVDS19WQUxVRSAo dS5jZCwgMy4xNCArIDE1OTIuaik7CisgIH0KKyAgeworICAgIGNvbXBsZXhf dGVzdF9zdHJ1Y3QgKCpmbikoKSA9IGdjY19qaXRfcmVzdWx0X2dldF9jb2Rl IChyZXN1bHQsICJhX3N0cnVjdHlfZm5fcmV0dXJuaW5nX3N0cnVjdCIpOwor ICAgIENIRUNLX05PTl9OVUxMIChmbik7CisKKyAgICBjb21wbGV4X3Rlc3Rf c3RydWN0IHMgPSBmbigpOworICAgIENIRUNLX1ZBTFVFIChzLmNkLCA2NTM1 ICsgOS5qKTsKKyAgfQorICB7CisgICAgX0NvbXBsZXggZG91YmxlICoKKyAg ICAoKmZuKShfQ29tcGxleCBkb3VibGUgKikgPSBnY2Nfaml0X3Jlc3VsdF9n ZXRfY29kZSAocmVzdWx0LCAiYV9wb2ludHlfZm5fcmV0dXJuaW5nX3BvaW50 cyIpOworICAgIENIRUNLX05PTl9OVUxMIChmbik7CisKKyAgICBfQ29tcGxl eCBkb3VibGUgcyA9IDIuICsgMy5pOworICAgIF9Db21wbGV4IGRvdWJsZSAq cCA9IGZuKCZzKTsKKyAgICBDSEVDS19WQUxVRSAocCwgJnMpOworICAgIENI RUNLX1ZBTFVFIChzLCAzLiArIDQuaSk7CisgIH0KK30KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtY29tcGxleC1vcGVyYXRvcnMu YyBiL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtY29tcGxleC1vcGVyYXRv cnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MDkxYjU2ZmI0ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2ppdC5kZy90ZXN0LWNvbXBsZXgtb3BlcmF0b3JzLmMKQEAgLTAsMCArMSwz NTMgQEAKKy8qCisgIFRlc3QgPT0sICE9LCB0aGUgY3JlYXRlLWNvbXBsZXgt ZnJvbS1yZWFscy1vcGVyYXRvciwKKyAgdW5hcnkgbWludXMgYW5kICotLysK KyAqLworCisKKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSA8Y29tcGxl eC5oPgorCisjaW5jbHVkZSAibGliZ2Njaml0LmgiCisjaW5jbHVkZSAiaGFy bmVzcy5oIgorCitzdGF0aWMgdm9pZAorbWFrZV9jb2RlX2NvbXBvcCAoZ2Nj X2ppdF9jb250ZXh0ICpjdHh0LAorCQkgIGNvbnN0IGNoYXIgKmZuX25hbWUs CisJCSAgaW50IHR5cGUsCisJCSAgZW51bSBnY2Nfaml0X2NvbXBhcmlzb24g b3ApCit7CisgIGdjY19qaXRfdHlwZSAqdHQgPSBnY2Nfaml0X2NvbnRleHRf Z2V0X3R5cGUgKGN0eHQsIHR5cGUpOworICBnY2Nfaml0X3R5cGUgKmJvb2xf dHlwZSA9IGdjY19qaXRfY29udGV4dF9nZXRfdHlwZSAoY3R4dCwgR0NDX0pJ VF9UWVBFX0JPT0wpOworICAKKyAgZ2NjX2ppdF9wYXJhbSAqcGFyYW0xID0g Z2NjX2ppdF9jb250ZXh0X25ld19wYXJhbSAoY3R4dCwgMCwgdHQsICJmMSIp OworICBnY2Nfaml0X3BhcmFtICpwYXJhbTIgPSBnY2Nfaml0X2NvbnRleHRf bmV3X3BhcmFtIChjdHh0LCAwLCB0dCwgImYyIik7CisKKyAgZ2NjX2ppdF9w YXJhbSAqcGFyYW1zW10gPSB7cGFyYW0xLCBwYXJhbTJ9OworICAKKyAgZ2Nj X2ppdF9mdW5jdGlvbiAqZm9vID0gZ2NjX2ppdF9jb250ZXh0X25ld19mdW5j dGlvbiAoY3R4dCwgMCwKKyAgICBHQ0NfSklUX0ZVTkNUSU9OX0VYUE9SVEVE LAorICAgIGJvb2xfdHlwZSwgZm5fbmFtZSwgMiwgcGFyYW1zLCAwKTsKKyAg CisgIGdjY19qaXRfYmxvY2sgKmJsb2NrID0gZ2NjX2ppdF9mdW5jdGlvbl9u ZXdfYmxvY2sgKGZvbywgInN0YXJ0Iik7CisKKyAgZ2NjX2ppdF9sdmFsdWUg KmYxID0gZ2NjX2ppdF9wYXJhbV9hc19sdmFsdWUgKAorICAgIGdjY19qaXRf ZnVuY3Rpb25fZ2V0X3BhcmFtIChmb28sIDApKTsKKyAgZ2NjX2ppdF9sdmFs dWUgKmYyID0gZ2NjX2ppdF9wYXJhbV9hc19sdmFsdWUgKAorICAgIGdjY19q aXRfZnVuY3Rpb25fZ2V0X3BhcmFtIChmb28sIDEpKTsKKyAKKyAgLyogcmV0 dXJuIGYxIG9wIGYyOyAqLworICBnY2Nfaml0X3J2YWx1ZSAqcmNvbXBvcCA9 IGdjY19qaXRfY29udGV4dF9uZXdfY29tcGFyaXNvbgorICAgIChjdHh0LCAw LCBvcCwKKyAgICAgZ2NjX2ppdF9sdmFsdWVfYXNfcnZhbHVlIChmMSksCisg ICAgIGdjY19qaXRfbHZhbHVlX2FzX3J2YWx1ZSAoZjIpKTsKKyAgCisgIGdj Y19qaXRfYmxvY2tfZW5kX3dpdGhfcmV0dXJuIChibG9jaywgMCwgcmNvbXBv cCk7Cit9CisKK3N0YXRpYyB2b2lkCittYWtlX2NvZGVfYmlub3AgKGdjY19q aXRfY29udGV4dCAqY3R4dCwKKwkJIGNvbnN0IGNoYXIgKmZuX25hbWUsCisJ CSBpbnQgdHlwZTEsCisJCSBpbnQgdHlwZTIsCisJCSBpbnQgcmV0dXJuX3R5 cGUsCisJCSBlbnVtIGdjY19qaXRfYmluYXJ5X29wIG9wKQoreworICBnY2Nf aml0X3R5cGUgKnR0MSA9IGdjY19qaXRfY29udGV4dF9nZXRfdHlwZShjdHh0 LCB0eXBlMSk7CisgIGdjY19qaXRfdHlwZSAqdHQyID0gZ2NjX2ppdF9jb250 ZXh0X2dldF90eXBlKGN0eHQsIHR5cGUyKTsKKyAgZ2NjX2ppdF90eXBlICp0 ciA9IGdjY19qaXRfY29udGV4dF9nZXRfdHlwZShjdHh0LCByZXR1cm5fdHlw ZSk7CisgIAorICBnY2Nfaml0X3BhcmFtICpwYXJhbTEgPSBnY2Nfaml0X2Nv bnRleHRfbmV3X3BhcmFtKGN0eHQsIDAsIHR0MSwgImYxIik7CisgIGdjY19q aXRfcGFyYW0gKnBhcmFtMiA9IGdjY19qaXRfY29udGV4dF9uZXdfcGFyYW0o Y3R4dCwgMCwgdHQyLCAiZjIiKTsKKworICBnY2Nfaml0X3BhcmFtICpwYXJh bXNbXSA9IHtwYXJhbTEsIHBhcmFtMn07CisgIAorICBnY2Nfaml0X2Z1bmN0 aW9uICpmb28gPSBnY2Nfaml0X2NvbnRleHRfbmV3X2Z1bmN0aW9uIChjdHh0 LCAwLAorICAgIEdDQ19KSVRfRlVOQ1RJT05fRVhQT1JURUQsCisgICAgdHIs IGZuX25hbWUsIDIsIHBhcmFtcywgMCk7CisgIAorICBnY2Nfaml0X2Jsb2Nr ICpibG9jayA9IGdjY19qaXRfZnVuY3Rpb25fbmV3X2Jsb2NrKGZvbywgInN0 YXJ0Iik7CisKKyAgZ2NjX2ppdF9sdmFsdWUgKmYxID0gZ2NjX2ppdF9wYXJh bV9hc19sdmFsdWUoCisgICAgZ2NjX2ppdF9mdW5jdGlvbl9nZXRfcGFyYW0o Zm9vLCAwKSk7CisgIGdjY19qaXRfbHZhbHVlICpmMiA9IGdjY19qaXRfcGFy YW1fYXNfbHZhbHVlKAorICAgIGdjY19qaXRfZnVuY3Rpb25fZ2V0X3BhcmFt KGZvbywgMSkpOworIAorICAvKiByZXR1cm4gZjEgb3AgZjI7ICovCisgIGdj Y19qaXRfcnZhbHVlICpyYmlub3AgPSBnY2Nfaml0X2NvbnRleHRfbmV3X2Jp bmFyeV9vcAorICAgIChjdHh0LCAwLCBvcCwgdHIsCisgICAgIGdjY19qaXRf bHZhbHVlX2FzX3J2YWx1ZSAoZjEpLAorICAgICBnY2Nfaml0X2x2YWx1ZV9h c19ydmFsdWUgKGYyKSk7CisgIAorICBnY2Nfaml0X2Jsb2NrX2VuZF93aXRo X3JldHVybiAoYmxvY2ssIDAsIHJiaW5vcCk7Cit9CisKK3N0YXRpYyB2b2lk CittYWtlX2NvZGVfdW5vcCAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LAorCSAg ICBjb25zdCBjaGFyICpmbl9uYW1lLAorCSAgICBpbnQgdHlwZTEsCisJICAg IGVudW0gZ2NjX2ppdF91bmFyeV9vcCBvcCkKK3sKKyAgZ2NjX2ppdF90eXBl ICp0dCA9IGdjY19qaXRfY29udGV4dF9nZXRfdHlwZShjdHh0LCB0eXBlMSk7 CisgIAorICBnY2Nfaml0X3BhcmFtICpwYXJhbTEgPSBnY2Nfaml0X2NvbnRl eHRfbmV3X3BhcmFtKGN0eHQsIDAsIHR0LCAiZjEiKTsKKworICBnY2Nfaml0 X3BhcmFtICpwYXJhbXNbXSA9IHtwYXJhbTF9OworICAKKyAgZ2NjX2ppdF9m dW5jdGlvbiAqZm9vID0gZ2NjX2ppdF9jb250ZXh0X25ld19mdW5jdGlvbiAo Y3R4dCwgMCwKKyAgICBHQ0NfSklUX0ZVTkNUSU9OX0VYUE9SVEVELAorICAg IHR0LCBmbl9uYW1lLCAxLCBwYXJhbXMsIDApOworICAKKyAgZ2NjX2ppdF9i bG9jayAqYmxvY2sgPSBnY2Nfaml0X2Z1bmN0aW9uX25ld19ibG9jayhmb28s ICJzdGFydCIpOworCisgIGdjY19qaXRfbHZhbHVlICpmMSA9IGdjY19qaXRf cGFyYW1fYXNfbHZhbHVlKAorICAgIGdjY19qaXRfZnVuY3Rpb25fZ2V0X3Bh cmFtKGZvbywgMCkpOworIAorICAvKiByZXR1cm4gb3AgZjE7ICovCisgIGdj Y19qaXRfcnZhbHVlICpyYmlub3AgPSBnY2Nfaml0X2NvbnRleHRfbmV3X3Vu YXJ5X29wCisgICAgKGN0eHQsIDAsIG9wLCB0dCwKKyAgICAgZ2NjX2ppdF9s dmFsdWVfYXNfcnZhbHVlIChmMSkpOworICAKKyAgZ2NjX2ppdF9ibG9ja19l bmRfd2l0aF9yZXR1cm4gKGJsb2NrLCAwLCByYmlub3ApOworfQorCit2b2lk CitjcmVhdGVfY29kZSAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCB2b2lkICp1 c2VyX2RhdGEpCit7CisgICh2b2lkKSB1c2VyX2RhdGE7CisKKyAgZ2NjX2pp dF9jb250ZXh0X3NldF9ib29sX2VuYWJsZV9jb21wbGV4X3R5cGVzIChjdHh0 LCAxKTsKKworICBtYWtlX2NvZGVfYmlub3AgKGN0eHQsICJwbHVzX2NvbXBs ZXhfZmxvYXRfY29tcGxleF9mbG9hdCIsCisJCSAgIEdDQ19KSVRfVFlQRV9D T01QTEVYX0ZMT0FULAorCQkgICBHQ0NfSklUX1RZUEVfQ09NUExFWF9GTE9B VCwKKwkJICAgR0NDX0pJVF9UWVBFX0NPTVBMRVhfRkxPQVQsCisJCSAgIEdD Q19KSVRfQklOQVJZX09QX1BMVVMpOworICBtYWtlX2NvZGVfYmlub3AgKGN0 eHQsICJtaW51c19jb21wbGV4X2Zsb2F0X2NvbXBsZXhfZmxvYXQiLAorCQkg ICBHQ0NfSklUX1RZUEVfQ09NUExFWF9GTE9BVCwKKwkJICAgR0NDX0pJVF9U WVBFX0NPTVBMRVhfRkxPQVQsCisJCSAgIEdDQ19KSVRfVFlQRV9DT01QTEVY X0ZMT0FULAorCQkgICBHQ0NfSklUX0JJTkFSWV9PUF9NSU5VUyk7CisgIG1h a2VfY29kZV9iaW5vcCAoY3R4dCwgImRpdl9jb21wbGV4X2Zsb2F0X2NvbXBs ZXhfZmxvYXQiLAorCQkgICBHQ0NfSklUX1RZUEVfQ09NUExFWF9GTE9BVCwK KwkJICAgR0NDX0pJVF9UWVBFX0NPTVBMRVhfRkxPQVQsCisJCSAgIEdDQ19K SVRfVFlQRV9DT01QTEVYX0ZMT0FULAorCQkgICBHQ0NfSklUX0JJTkFSWV9P UF9ESVZJREUpOworICBtYWtlX2NvZGVfYmlub3AgKGN0eHQsICJtdWxfY29t cGxleF9mbG9hdF9jb21wbGV4X2Zsb2F0IiwKKwkJICAgR0NDX0pJVF9UWVBF X0NPTVBMRVhfRkxPQVQsCisJCSAgIEdDQ19KSVRfVFlQRV9DT01QTEVYX0ZM T0FULAorCQkgICBHQ0NfSklUX1RZUEVfQ09NUExFWF9GTE9BVCwKKwkJICAg R0NDX0pJVF9CSU5BUllfT1BfTVVMVCk7CisKKyAgbWFrZV9jb2RlX2Jpbm9w IChjdHh0LCAiY21wbHhfZmxvYXRfZmxvYXQiLAorCQkgICBHQ0NfSklUX1RZ UEVfRkxPQVQsCisJCSAgIEdDQ19KSVRfVFlQRV9GTE9BVCwKKwkJICAgR0ND X0pJVF9UWVBFX0NPTVBMRVhfRkxPQVQsCisJCSAgIEdDQ19KSVRfQklOQVJZ X09QX0NPTVBMRVgpOworCisgIC8qIFVudW5kZWYgdG8gdGVzdCBkaWZmZXJl bnQgZXJyb3IgbXNncyAqLworI2lmIDAKKyAgbWFrZV9jb2RlX2Jpbm9wIChj dHh0LCAic2hvdWxkX25vdF93b3JrIiwKKwkJICAgR0NDX0pJVF9UWVBFX0ZM T0FULAorCQkgICBHQ0NfSklUX1RZUEVfRkxPQVQsCisJCSAgIEdDQ19KSVRf VFlQRV9DT01QTEVYX0RPVUJMRSwKKwkJICAgR0NDX0pJVF9CSU5BUllfT1Bf Q09NUExFWCk7CisjZW5kaWYKKworICBtYWtlX2NvZGVfYmlub3AgKGN0eHQs ICJjbXBseF9kb3VibGVfZG91YmxlIiwKKwkJICAgR0NDX0pJVF9UWVBFX0RP VUJMRSwKKwkJICAgR0NDX0pJVF9UWVBFX0RPVUJMRSwKKwkJICAgR0NDX0pJ VF9UWVBFX0NPTVBMRVhfRE9VQkxFLAorCQkgICBHQ0NfSklUX0JJTkFSWV9P UF9DT01QTEVYKTsKKworICBtYWtlX2NvZGVfYmlub3AgKGN0eHQsICJjbXBs eF9sb25nX2RvdWJsZV9sb25nX2RvdWJsZSIsCisJCSAgIEdDQ19KSVRfVFlQ RV9MT05HX0RPVUJMRSwKKwkJICAgR0NDX0pJVF9UWVBFX0xPTkdfRE9VQkxF LAorCQkgICBHQ0NfSklUX1RZUEVfQ09NUExFWF9MT05HX0RPVUJMRSwKKwkJ ICAgR0NDX0pJVF9CSU5BUllfT1BfQ09NUExFWCk7CisgIAorICBtYWtlX2Nv ZGVfdW5vcCAoY3R4dCwgIm1pbnVzX2NvbXBsZXhfZmxvYXQiLAorCQkgICBH Q0NfSklUX1RZUEVfQ09NUExFWF9GTE9BVCwKKwkJICAgR0NDX0pJVF9VTkFS WV9PUF9NSU5VUyk7CisKKyAgbWFrZV9jb2RlX2NvbXBvcCAoY3R4dCwgImVx dWFsX2NvbXBsZXhfZmxvYXQiLAorCQkgICAgR0NDX0pJVF9UWVBFX0NPTVBM RVhfRkxPQVQsCisJCSAgICBHQ0NfSklUX0NPTVBBUklTT05fRVEpOworICBt YWtlX2NvZGVfY29tcG9wIChjdHh0LCAibmVxdWFsX2NvbXBsZXhfZmxvYXQi LAorCQkgICAgR0NDX0pJVF9UWVBFX0NPTVBMRVhfRkxPQVQsCisJCSAgICBH Q0NfSklUX0NPTVBBUklTT05fTkUpOworICBtYWtlX2NvZGVfY29tcG9wIChj dHh0LCAiZXF1YWxfY29tcGxleF9kb3VibGUiLAorCQkgICAgR0NDX0pJVF9U WVBFX0NPTVBMRVhfRE9VQkxFLAorCQkgICAgR0NDX0pJVF9DT01QQVJJU09O X0VRKTsKKyAgbWFrZV9jb2RlX2NvbXBvcCAoY3R4dCwgIm5lcXVhbF9jb21w bGV4X2RvdWJsZSIsCisJCSAgICBHQ0NfSklUX1RZUEVfQ09NUExFWF9ET1VC TEUsCisJCSAgICBHQ0NfSklUX0NPTVBBUklTT05fTkUpOworICBtYWtlX2Nv ZGVfY29tcG9wIChjdHh0LCAiZXF1YWxfY29tcGxleF9sb25nX2RvdWJsZSIs CisJCSAgICBHQ0NfSklUX1RZUEVfQ09NUExFWF9MT05HX0RPVUJMRSwKKwkJ ICAgIEdDQ19KSVRfQ09NUEFSSVNPTl9FUSk7CisgIG1ha2VfY29kZV9jb21w b3AgKGN0eHQsICJuZXF1YWxfY29tcGxleF9sb25nX2RvdWJsZSIsCisJCSAg ICBHQ0NfSklUX1RZUEVfQ09NUExFWF9MT05HX0RPVUJMRSwKKwkJICAgIEdD Q19KSVRfQ09NUEFSSVNPTl9ORSk7CisKKyAgLyogVW51bmRlZiB0byB0ZXN0 IGRpZmZlcmVudCBlcnJvciBtc2dzICovCisjaWYgMAorICBtYWtlX2NvZGVf Y29tcG9wIChjdHh0LCAicXdlYXNkenhjIiwKKwkJICAgIEdDQ19KSVRfVFlQ RV9DT01QTEVYX0xPTkdfRE9VQkxFLAorCQkgICAgR0NDX0pJVF9DT01QQVJJ U09OX0dFKTsKKyNlbmRpZgorCit9CisKK3R5cGVkZWYgX0NvbXBsZXggZmxv YXQgKCpjZl9jZmNmKShfQ29tcGxleCBmbG9hdCwgX0NvbXBsZXggZmxvYXQp OwordHlwZWRlZiBfQ29tcGxleCBmbG9hdCAoKmNmX2NmKShfQ29tcGxleCBm bG9hdCk7Cit0eXBlZGVmIF9Cb29sICgqYl9jZmNmKShfQ29tcGxleCBmbG9h dCwgX0NvbXBsZXggZmxvYXQpOwordHlwZWRlZiBfQm9vbCAoKmJfY2RjZCko X0NvbXBsZXggZG91YmxlLCBfQ29tcGxleCBkb3VibGUpOwordHlwZWRlZiBf Qm9vbCAoKmJfY2xkY2xkKShfQ29tcGxleCBsb25nIGRvdWJsZSwgX0NvbXBs ZXggbG9uZyBkb3VibGUpOworCit2b2lkCit2ZXJpZnlfY29kZSAoZ2NjX2pp dF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X3Jlc3VsdCAqcmVzdWx0KQorewor ICAodm9pZCkgY3R4dDsKKyAgQ0hFQ0tfTk9OX05VTEwgKHJlc3VsdCk7CisK KyAgey8qIFRlc3QgYmluYXJ5IG9wZXJhdG9ycyAqLworICAgIHsKKyAgICAg IGNmX2NmY2YgZm4gPQorCWdjY19qaXRfcmVzdWx0X2dldF9jb2RlIChyZXN1 bHQsICJwbHVzX2NvbXBsZXhfZmxvYXRfY29tcGxleF9mbG9hdCIpOworICAg ICAgQ0hFQ0tfTk9OX05VTEwgKGZuKTsKKyAgICAgIAorICAgICAgQ0hFQ0tf VkFMVUUgKGZuICgxLmYgKyAyLmZqLCAzLmYgKyA0LmZqKSwgKDEuZiArIDIu ZmopICsgKDMuZiArIDQuZmopKTsKKyAgICB9CisgICAgeworICAgICAgY2Zf Y2ZjZiBmbiA9CisJZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwg Im1pbnVzX2NvbXBsZXhfZmxvYXRfY29tcGxleF9mbG9hdCIpOworICAgICAg Q0hFQ0tfTk9OX05VTEwgKGZuKTsKKyAgICAgIAorICAgICAgQ0hFQ0tfVkFM VUUgKGZuICgxLmYgKyAyLmZqLCAzLmYgKyA0LmZqKSwgKDEuZiArIDIuZmop IC0gKDMuZiArIDQuZmopKTsKKyAgICB9CisgICAgeworICAgICAgY2ZfY2Zj ZiBmbiA9CisJZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImRp dl9jb21wbGV4X2Zsb2F0X2NvbXBsZXhfZmxvYXQiKTsKKyAgICAgIENIRUNL X05PTl9OVUxMIChmbik7CisgICAgICAKKyAgICAgIENIRUNLX1ZBTFVFIChm biAoMS5mICsgMi5maiwgMy5mICsgNC5maiksICgxLmYgKyAyLmZqKS8oMy5m ICsgNC5maikpOworICAgIH0KKyAgICB7CisgICAgICBjZl9jZmNmIGZuID0K KwlnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0LCAibXVsX2NvbXBs ZXhfZmxvYXRfY29tcGxleF9mbG9hdCIpOworICAgICAgQ0hFQ0tfTk9OX05V TEwgKGZuKTsKKyAgICAgIAorICAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLmYg KyAyLmZqLCAzLmYgKyA0LmZqKSwgKDEuZiArIDIuZmopKigzLmYgKyA0LmZq KSk7CisgICAgfQorICAgIHsKKyAgICAgIF9Db21wbGV4IGZsb2F0ICgqZm4p KGZsb2F0LCBmbG9hdCkgPQorCWdjY19qaXRfcmVzdWx0X2dldF9jb2RlIChy ZXN1bHQsICJjbXBseF9mbG9hdF9mbG9hdCIpOworICAgICAgQ0hFQ0tfTk9O X05VTEwgKGZuKTsKKyAgICAgIAorICAgICAgQ0hFQ0tfVkFMVUUgKGZuICgx LCAyKSwgMS5mICsgMi5maSk7CisgICAgICAvKiBOb3RlIHRoYXQgdGhlIHJl YWwgYW5zd2VyIGlzIDAgbm90IG5hbiBhcyBpdCB3b3VsZCBoYXZlIGJlZW4g YnkKKwkgbXVsdGlwbHlpbmcgSU5GICogMS5maSAqLworICAgICAgQ0hFQ0tf VkFMVUUgKGZuICgwLCBJTkZJTklUWSksIENNUExYRiAoMCwgSU5GSU5JVFkp KTsKKyAgICAgIENIRUNLX1ZBTFVFIChmbiAoMCwgLUlORklOSVRZKSwgQ01Q TFhGICgwLCAtSU5GSU5JVFkpKTsKKworICAgICAgQ0hFQ0tfVkFMVUUgKGNy ZWFsZiAoZm4gKDAsIE5BTikpLCBjcmVhbGYgKENNUExYRiAoMCwgTkFOKSkp OworICAgICAgQ0hFQ0sgKGlzbmFuZiAoY2ltYWdmIChmbiAoMCwgTkFOKSkp KTsKKyAgICAgIAorICAgICAgLyogLTAgbmVlZCBiZSBwcmVzZXJ2ZWQgKi8K KyAgICAgIF9Db21wbGV4IGZsb2F0IGYgPSBmbiAoMCwgLTAuKTsKKyAgICAg IENIRUNLIChzaWduYml0ICggY2ltYWdmIChmKSkgIT0gMCk7CisgICAgICBD SEVDS19WQUxVRSAoZiwgQ01QTFhGICgwLCAtMC4pKTsgCisgICAgfQorICAg IHsKKyAgICAgIF9Db21wbGV4IGRvdWJsZSAoKmZuKShkb3VibGUsIGRvdWJs ZSkgPQorICAgICAgICBnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0 LCAiY21wbHhfZG91YmxlX2RvdWJsZSIpOworICAgICAgQ0hFQ0tfTk9OX05V TEwgKGZuKTsKKyAgICAgIAorICAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLCAy KSwgMS4gKyAyLmkpOworICAgICAgQ0hFQ0tfVkFMVUUgKGZuICgwLCBJTkZJ TklUWSksIENNUExYICgwLCBJTkZJTklUWSkpOworICAgICAgQ0hFQ0tfVkFM VUUgKGZuICgwLCAtSU5GSU5JVFkpLCBDTVBMWCAoMCwgLUlORklOSVRZKSk7 CisgICAgICAKKyAgICAgIENIRUNLX1ZBTFVFIChjcmVhbCAoZm4gKDAsIE5B TikpLCBjcmVhbCAoQ01QTFggKDAsIE5BTikpKTsKKyAgICAgIENIRUNLIChp c25hbiAoY2ltYWcgKGZuICgwLCBOQU4pKSkpOyAgICAgIAorICAgICAgCisg ICAgICBfQ29tcGxleCBkb3VibGUgZiA9IGZuICgwLCAtMC4pOworICAgICAg Q0hFQ0sgKHNpZ25iaXQgKGNpbWFnIChmKSkgIT0gMCk7CisgICAgICBDSEVD S19WQUxVRSAoZiwgQ01QTFhGICgwLCAtMC4pKTsgCisgICAgfQorICAgIHsK KyAgICAgIF9Db21wbGV4IGxvbmcgZG91YmxlICgqZm4pKGxvbmcgZG91Ymxl LCBsb25nIGRvdWJsZSkgPQorCWdjY19qaXRfcmVzdWx0X2dldF9jb2RlIChy ZXN1bHQsICJjbXBseF9sb25nX2RvdWJsZV9sb25nX2RvdWJsZSIpOworICAg ICAgQ0hFQ0tfTk9OX05VTEwgKGZuKTsKKyAgICAgIAorICAgICAgQ0hFQ0tf VkFMVUUgKGZuICgxLCAyKSwgMS5MICsgMi5MaSk7CisgICAgICBDSEVDS19W QUxVRSAoZm4gKDAsIElORklOSVRZKSwgQ01QTFhMICgwLCBJTkZJTklUWSkp OworICAgICAgQ0hFQ0tfVkFMVUUgKGZuICgwLCAtSU5GSU5JVFkpLCBDTVBM WEwgKDAsIC1JTkZJTklUWSkpOworCisgICAgICBDSEVDS19WQUxVRSAoY3Jl YWxsIChmbiAoMCwgTkFOKSksIGNyZWFsbCAoQ01QTFhMICgwLCBOQU4pKSk7 CisgICAgICBDSEVDSyAoaXNuYW5sIChjaW1hZ2wgKGZuICgwLCBOQU4pKSkp OyAgICAgIAorCisgICAgICBfQ29tcGxleCBsb25nIGRvdWJsZSBmID0gZm4g KDAsIC0wLik7CisgICAgICBDSEVDSyAoc2lnbmJpdCAoY2ltYWcgKGYpKSAh PSAwKTsKKyAgICAgIENIRUNLX1ZBTFVFIChmLCBDTVBMWEwgKDAsIC0wLikp OyAKKyAgICB9CisgIH0KKworICB7LyogVGVzdCB1bmFyeSBvcHMgKi8KKyAg ICB7CisgICAgICAgY2ZfY2YgZm4gPQorCWdjY19qaXRfcmVzdWx0X2dldF9j b2RlIChyZXN1bHQsICJtaW51c19jb21wbGV4X2Zsb2F0Iik7CisgICAgICBD SEVDS19OT05fTlVMTCAoZm4pOworICAgICAgCisgICAgICBDSEVDS19WQUxV RSAoZm4gKDEuZiArIDIuZmopLCAtKDEuZiArIDIuZmopKTsKKyAgICB9Cisg IH0KKyAgey8qIFRlc3QgY29tcCBvcHMgKi8KKyAgICB7CisgICAgICAgYl9j ZmNmIGZuID0KKwlnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0LCAi ZXF1YWxfY29tcGxleF9mbG9hdCIpOworICAgICAgIENIRUNLX05PTl9OVUxM IChmbik7CisgICAgICAgCisgICAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLmYg KyAyLmZqLCAxLmYgKyAyLmZqICksIDEpOworICAgICAgIENIRUNLX1ZBTFVF IChmbiAoMS5mICsgMy5maiwgMS5mICsgMi5maiApLCAwKTsKKyAgICB9Cisg ICAgeworICAgICAgIGJfY2ZjZiBmbiA9CisJZ2NjX2ppdF9yZXN1bHRfZ2V0 X2NvZGUgKHJlc3VsdCwgIm5lcXVhbF9jb21wbGV4X2Zsb2F0Iik7CisgICAg ICAgQ0hFQ0tfTk9OX05VTEwgKGZuKTsKKyAgICAgICAKKyAgICAgICBDSEVD S19WQUxVRSAoZm4gKDEuZiArIDIuZmosIDEuZiArIDIuZmogKSwgMCk7Cisg ICAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLmYgKyAzLmZqLCAxLmYgKyAyLmZq ICksIDEpOworICAgIH0KKyAgICB7CisgICAgICAgYl9jZGNkIGZuID0KKwln Y2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0LCAiZXF1YWxfY29tcGxl eF9kb3VibGUiKTsKKyAgICAgICBDSEVDS19OT05fTlVMTCAoZm4pOworICAg ICAgIAorICAgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4gKyAyLmosIDEuICsg Mi5qICksIDEpOworICAgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4gKyAzLmos IDEuICsgMi5qICksIDApOworICAgIH0KKyAgICB7CisgICAgICAgYl9jZGNk IGZuID0KKwlnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0LCAibmVx dWFsX2NvbXBsZXhfZG91YmxlIik7CisgICAgICAgQ0hFQ0tfTk9OX05VTEwg KGZuKTsKKyAgICAgICAKKyAgICAgICBDSEVDS19WQUxVRSAoZm4gKDEuICsg Mi5qLCAxLiArIDIuaiApLCAwKTsKKyAgICAgICBDSEVDS19WQUxVRSAoZm4g KDEuICsgMy5qLCAxLiArIDIuaiApLCAxKTsKKyAgICB9CisgICAgeworICAg ICAgIGJfY2xkY2xkIGZuID0KKwlnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAo cmVzdWx0LCAiZXF1YWxfY29tcGxleF9sb25nX2RvdWJsZSIpOworICAgICAg IENIRUNLX05PTl9OVUxMIChmbik7CisgICAgICAgCisgICAgICAgQ0hFQ0tf VkFMVUUgKGZuICgxLiArIDIuaiwgMS4gKyAyLmogKSwgMSk7CisgICAgICAg Q0hFQ0tfVkFMVUUgKGZuICgxLiArIDMuaiwgMS4gKyAyLmogKSwgMCk7Cisg ICAgfQorICAgIHsKKyAgICAgICBiX2NsZGNsZCBmbiA9CisJZ2NjX2ppdF9y ZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgIm5lcXVhbF9jb21wbGV4X2xvbmdf ZG91YmxlIik7CisgICAgICAgQ0hFQ0tfTk9OX05VTEwgKGZuKTsKKyAgICAg ICAKKyAgICAgICBDSEVDS19WQUxVRSAoZm4gKDEuICsgMi5qLCAxLiArIDIu aiApLCAwKTsKKyAgICAgICBDSEVDS19WQUxVRSAoZm4gKDEuICsgMy5qLCAx LiArIDIuaiApLCAxKTsKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtY29tcGxleC10eXBlcy5jIGIvZ2Nj L3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1jb21wbGV4LXR5cGVzLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM1NTUxMzMzNjdi Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVz dC1jb21wbGV4LXR5cGVzLmMKQEAgLTAsMCArMSw2NzcgQEAKKy8qCisgIFRl c3QgY2FzdCBmcm9tIGFsbCBjb21wbGV4IHR5cGVzIHRvIGFsbCBwcmltaXRp dmUgdHlwZXMKKyAgZXhjZXB0IGJvb2wgYW5kIGFtb25nc3QgdGhlIGNvbXBs ZXggdHlwZXMgdGhlbSBzZWxmLgorCisgIEFsc28gdGVzdCBzb21lIGNhc3Qg ZnJvbSBub24tY29tcGxleCB0byBjb21wbGV4LgorCisgIEFsc28gY2FsbCBh IG1hdGhsaWIgY29tcGxleCBmdW5jdGlvbiBhbmQgY3JlYXRlIGEKKyAgY29t cGxleCBnbG9iYWwuCisgKi8KKworI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNs dWRlIDxjb21wbGV4Lmg+CisKKyNpbmNsdWRlICJsaWJnY2NqaXQuaCIKKyNp bmNsdWRlICJoYXJuZXNzLmgiCisKKy8qCisgIE1ha2UgY29kZSAxOiAoY2hl Y2sgdGhhdCBmdW5jdGlvbiBjYWxscyB3b3JrcykKKyAgIGNvbXBsZXggZmxv YXQgY3NxcnRmKGNvbXBsZXggZmxvYXQgZik7CisKKyAgIGNvbXBsZXggZmxv YXQgY29tcGxleF9mbG9hdF9mb28oY29tcGxleCBmbG9hdCBmKQorICAgewor ICAgICByZXR1cm4gY3NxcnRmKCBmICogKGNvbXBsZXggZmxvYXQpMi4pOwor ICAgfQorCisgIE1ha2UgY29kZSAyOiAoY2hlY2sgY2FzdHMpCisgICBpbnQg ZmxvYXQgY29tcGxleF9mbG9hdF90b19pbnQgKGNvbXBsZXggZmxvYXQgZikK KyAgIHsKKyAgICAgcmV0dXJuIGY7CisgICB9CisgICAKKyAgd2l0aCBkaWZm ZXJlbnQgdHlwZXMgYW5kIGZ1bmN0aW9uIG5hbWVzLgorICovCisKKworc3Rh dGljIHZvaWQKK21ha2VfY29kZTEoZ2NjX2ppdF9jb250ZXh0KiBjdHh0LAor CSAgIGNvbnN0IGNoYXIgKmZuX25hbWUsCisJICAgY29uc3QgY2hhciAqc3Fy dF9mbiwKKwkgICBpbnQgdHlwZSkKK3sKKyAgZ2NjX2ppdF9ydmFsdWUgKnJ2 YWwxLCAqcnZhbDI7CisgIGdjY19qaXRfYmxvY2sgKmJsb2NrOworCisgIGdj Y19qaXRfdHlwZSAqY3QgPSBnY2Nfaml0X2NvbnRleHRfZ2V0X3R5cGUgKGN0 eHQsIHR5cGUpOworICBnY2Nfaml0X3BhcmFtICpwYXJhbSA9IGdjY19qaXRf Y29udGV4dF9uZXdfcGFyYW0gKGN0eHQsIDAsIGN0LCAiZiIpOworICBnY2Nf aml0X2Z1bmN0aW9uICpmdW5jID0gZ2NjX2ppdF9jb250ZXh0X25ld19mdW5j dGlvbiAoY3R4dCwgMCwKKyAgICBHQ0NfSklUX0ZVTkNUSU9OX0lNUE9SVEVE LAorICAgIGN0LCBzcXJ0X2ZuLCAxLCAmcGFyYW0sIDApOworCisgIHBhcmFt ID0gZ2NjX2ppdF9jb250ZXh0X25ld19wYXJhbSAoY3R4dCwgMCwgY3QsICJm Iik7CisgIGdjY19qaXRfZnVuY3Rpb24gKmZvbyA9IGdjY19qaXRfY29udGV4 dF9uZXdfZnVuY3Rpb24gKGN0eHQsIDAsCisgICAgR0NDX0pJVF9GVU5DVElP Tl9FWFBPUlRFRCwKKyAgICBjdCwgZm5fbmFtZSwgMSwgJnBhcmFtLCAwKTsK KyAgCisgIGJsb2NrID0gZ2NjX2ppdF9mdW5jdGlvbl9uZXdfYmxvY2sgKGZv bywgInN0YXJ0Iik7CisgIAorICBydmFsMSA9IGdjY19qaXRfY29udGV4dF9u ZXdfYmluYXJ5X29wIChjdHh0LCAwLCBHQ0NfSklUX0JJTkFSWV9PUF9NVUxU LCBjdCwKKyAgICBnY2Nfaml0X3BhcmFtX2FzX3J2YWx1ZSAoCisgICAgICAg IGdjY19qaXRfZnVuY3Rpb25fZ2V0X3BhcmFtIChmb28sIDApKSwKKyAgICBn Y2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2RvdWJsZSAoY3R4dCwg Y3QsIDIuKSk7CisgIAorICBydmFsMiA9IGdjY19qaXRfY29udGV4dF9uZXdf Y2FsbCAoY3R4dCwgMCwgZnVuYywgMSwgJnJ2YWwxKTsKKyAgCisgIGdjY19q aXRfYmxvY2tfZW5kX3dpdGhfcmV0dXJuIChibG9jaywgMCwgcnZhbDIpOwor fQorCitzdGF0aWMgdm9pZAorbWFrZV9jb2RlMiAoZ2NjX2ppdF9jb250ZXh0 ICpjdHh0LAorCSAgICBjb25zdCBjaGFyICpmbl9uYW1lLAorCSAgICBpbnQg Y29tcGxleF90eXBlLAorCSAgICBpbnQgdGFyZ2V0X3R5cGUpCit7CisgIGdj Y19qaXRfYmxvY2sgKmJsb2NrOworICBnY2Nfaml0X3R5cGUgKnR0ID0gZ2Nj X2ppdF9jb250ZXh0X2dldF90eXBlIChjdHh0LCB0YXJnZXRfdHlwZSk7Cisg IGdjY19qaXRfdHlwZSAqY3QgPSBnY2Nfaml0X2NvbnRleHRfZ2V0X3R5cGUg KGN0eHQsIGNvbXBsZXhfdHlwZSk7CisgIAorICBnY2Nfaml0X3BhcmFtICpw YXJhbSA9IGdjY19qaXRfY29udGV4dF9uZXdfcGFyYW0gKGN0eHQsIDAsIGN0 LCAiZiIpOworCisgIGdjY19qaXRfZnVuY3Rpb24gKmZvbyA9IGdjY19qaXRf Y29udGV4dF9uZXdfZnVuY3Rpb24gKGN0eHQsIDAsCisgICAgR0NDX0pJVF9G VU5DVElPTl9FWFBPUlRFRCwKKyAgICB0dCwgZm5fbmFtZSwgMSwgJnBhcmFt LCAwKTsKKyAgCisgIGJsb2NrID0gZ2NjX2ppdF9mdW5jdGlvbl9uZXdfYmxv Y2sgKGZvbywgInN0YXJ0Iik7CisKKyAgZ2NjX2ppdF9ibG9ja19lbmRfd2l0 aF9yZXR1cm4gKGJsb2NrLCAwLAorICAgIGdjY19qaXRfY29udGV4dF9uZXdf Y2FzdCAoY3R4dCwgMCwKKyAgICAgIGdjY19qaXRfcGFyYW1fYXNfcnZhbHVl ICgKKyAgICAgICAgZ2NjX2ppdF9mdW5jdGlvbl9nZXRfcGFyYW0gKGZvbywg MCkpLCB0dCkpOworfQorCit2b2lkCitjcmVhdGVfY29kZSAoZ2NjX2ppdF9j b250ZXh0ICpjdHh0LCB2b2lkICp1c2VyX2RhdGEpCit7CisgICh2b2lkKSB1 c2VyX2RhdGE7CisKKyAgZ2NjX2ppdF9jb250ZXh0X3NldF9ib29sX2VuYWJs ZV9jb21wbGV4X3R5cGVzIChjdHh0LCAxKTsKKworICBnY2Nfaml0X2NvbnRl eHRfbmV3X2dsb2JhbCAoCisgICAgY3R4dCwgMCwgR0NDX0pJVF9HTE9CQUxf RVhQT1JURUQsCisgICAgZ2NjX2ppdF9jb250ZXh0X2dldF90eXBlIChjdHh0 LCBHQ0NfSklUX1RZUEVfQ09NUExFWF9ET1VCTEUpLAorICAgICJhX2NvbXBs ZXhfZ2xvYmFsX2RvdWJsZSIpOworICAKKyAgbWFrZV9jb2RlMSAoY3R4dCwg ImNvbXBsZXhfZmxvYXRfZm9vIiwgImNzcXJ0ZiIsIEdDQ19KSVRfVFlQRV9D T01QTEVYX0ZMT0FUKTsKKyAgbWFrZV9jb2RlMSAoY3R4dCwgImNvbXBsZXhf ZG91YmxlX2ZvbyIsICJjc3FydCIsIEdDQ19KSVRfVFlQRV9DT01QTEVYX0RP VUJMRSk7CisgIG1ha2VfY29kZTEgKGN0eHQsICJjb21wbGV4X2xvbmdfZG91 YmxlX2ZvbyIsICJjc3FydGwiLCBHQ0NfSklUX1RZUEVfQ09NUExFWF9MT05H X0RPVUJMRSk7CisKKyNkZWZpbmUgTUFLRV9DT0RFXzIobmFtZSAsY29tcGxl eF90eXBlLCB0YXJnZXRfdHlwZSlcCisgIG1ha2VfY29kZTIgKGN0eHQsICNu YW1lLCBHQ0NfSklUX1RZUEVfICMjIGNvbXBsZXhfdHlwZSwgR0NDX0pJVF9U WVBFXyAjIyB0YXJnZXRfdHlwZSk7CisKKyNkZWZpbmUgTUFLRV9DT0RFXzJf T1VURVIobmFtZSwgdHlwZSlcCisgIE1BS0VfQ09ERV8yKG5hbWUgIyMgX3Rv X2NoYXIsIHR5cGUsIENIQVIpXAorICBNQUtFX0NPREVfMihuYW1lICMjIF90 b19sb25nX2RvdWJsZSwgdHlwZSwgTE9OR19ET1VCTEUpXAorICBNQUtFX0NP REVfMihuYW1lICMjIF90b19kb3VibGUsIHR5cGUsIERPVUJMRSlcCisgIE1B S0VfQ09ERV8yKG5hbWUgIyMgX3RvX2Zsb2F0LCB0eXBlLCBGTE9BVClcCisg IE1BS0VfQ09ERV8yKG5hbWUgIyMgX3RvX3NpZ25lZF9jaGFyLCB0eXBlLCBT SUdORURfQ0hBUilcCisgIE1BS0VfQ09ERV8yKG5hbWUgIyMgX3RvX3Nob3J0 LCB0eXBlLCBTSE9SVClcCisgIE1BS0VfQ09ERV8yKG5hbWUgIyMgX3RvX2lu dCwgdHlwZSwgSU5UKVwKKyAgTUFLRV9DT0RFXzIobmFtZSAjIyBfdG9fbG9u ZywgdHlwZSwgTE9ORylcCisgIE1BS0VfQ09ERV8yKG5hbWUgIyMgX3RvX2xv bmdfbG9uZywgdHlwZSwgTE9OR19MT05HKVwKKyAgTUFLRV9DT0RFXzIobmFt ZSAjIyBfdG9fdV9jaGFyLCB0eXBlLCBVTlNJR05FRF9DSEFSKVwKKyAgTUFL RV9DT0RFXzIobmFtZSAjIyBfdG9fdV9zaG9ydCwgdHlwZSwgVU5TSUdORURf U0hPUlQpXAorICBNQUtFX0NPREVfMihuYW1lICMjIF90b191X2ludCwgdHlw ZSwgVU5TSUdORURfSU5UKVwKKyAgTUFLRV9DT0RFXzIobmFtZSAjIyBfdG9f dV9sb25nLCB0eXBlLCBVTlNJR05FRF9MT05HKVwKKyAgTUFLRV9DT0RFXzIo bmFtZSAjIyBfdG9fdV9sb25nX2xvbmcsIHR5cGUsIFVOU0lHTkVEX0xPTkdf TE9ORylcCisgIE1BS0VfQ09ERV8yKG5hbWUgIyMgX3RvX2NvbXBsZXhfZmxv YXQsIHR5cGUsIENPTVBMRVhfRkxPQVQpXAorICBNQUtFX0NPREVfMihuYW1l ICMjIF90b19jb21wbGV4X2RvdWJsZSwgdHlwZSwgQ09NUExFWF9ET1VCTEUp XAorICBNQUtFX0NPREVfMihuYW1lICMjIF90b19jb21wbGV4X2xvbmdfZG91 YmxlLCB0eXBlLCBDT01QTEVYX0xPTkdfRE9VQkxFKQorCisgIC8qIFRlc3Qg YWxsIHRoZXNlIGNhc3RzICovCisgIE1BS0VfQ09ERV8yX09VVEVSIChjb21w bGV4X2Zsb2F0LCBDT01QTEVYX0ZMT0FUKQorICBNQUtFX0NPREVfMl9PVVRF UiAoY29tcGxleF9kb3VibGUsIENPTVBMRVhfRE9VQkxFKQorICBNQUtFX0NP REVfMl9PVVRFUiAoY29tcGxleF9sb25nX2RvdWJsZSwgQ09NUExFWF9MT05H X0RPVUJMRSkgICAgCisKKyAgLyogVGVzdCBzb21lIG9mIHRoZXNlIGNhc3Rz ICovCisgIE1BS0VfQ09ERV8yX09VVEVSKHVuc2lnbmVkX2xvbmcsIFVOU0lH TkVEX0xPTkcpCisgIE1BS0VfQ09ERV8yX09VVEVSKGZsb2F0LCBGTE9BVCkK KyAgTUFLRV9DT0RFXzJfT1VURVIoaW50LCBJTlQpCisKKyAgLyogV3JpdGlu ZyB0aGUgcmVwcm9kdWNlciB0YWtlcyBhbm5veWluZ2x5IGxvbmcgdGltZSB3 aXRoIGFsbCB0aGVzZQorICAgICBmdW5jdGlvbnMgYmVsbG93LCBzbyAjaWYg dGhlbSBvdXQuICovCisjaWYgMAorICBNQUtFX0NPREVfMl9PVVRFUihsb25n X2RvdWJsZSxMT05HX0RPVUJMRSkKKyAgTUFLRV9DT0RFXzJfT1VURVIoZG91 YmxlLCBET1VCTEUpCisgIE1BS0VfQ09ERV8yX09VVEVSKGxvbmdfbG9uZywg TE9OR19MT05HKQorICBNQUtFX0NPREVfMl9PVVRFUihsb25nLCBMT05HKQor ICBNQUtFX0NPREVfMl9PVVRFUihzaG9ydCwgVU5TSUdORURfU0hPUlQpCisg IE1BS0VfQ09ERV8yX09VVEVSKHNpZ25lZF9jaGFyLCBTSUdORURfQ0hBUikK KyAgTUFLRV9DT0RFXzJfT1VURVIodW5zaWduZWRfbG9uZ19sb25nLCBVTlNJ R05FRF9MT05HX0xPTkcpCisgIE1BS0VfQ09ERV8yX09VVEVSKHVuc2lnbmVk X2xvbmcsIFVOU0lHTkVEX0xPTkcpCisgIE1BS0VfQ09ERV8yX09VVEVSKHVu c2lnbmVkX2ludCwgVU5TSUdORURfSU5UKQorICBNQUtFX0NPREVfMl9PVVRF Uih1bnNpZ25lZF9zaG9ydCwgVU5TSUdORURfU0hPUlQpCisgIE1BS0VfQ09E RV8yX09VVEVSKHVuc2lnbmVkX2NoYXIsIFVOU0lHTkVEX0NIQVIpCisKKyAg TUFLRV9DT0RFXzJfT1VURVIoY2hhciwgQ0hBUikKKyAgLyogTm90ZTogTm8g Ym9vbCAqLworI2VuZGlmCisgICAgCisjdW5kZWYgTUFLRV9DT0RFXzIKKyN1 bmRlZiBNQUtFX0NPREVfMl9PVVRFUgorfQorCit0eXBlZGVmIGNvbXBsZXgg bG9uZyBkb3VibGUgKCpsZF9mb29wKSgpOwordHlwZWRlZiBjb21wbGV4IGRv dWJsZSAoKmRfZm9vcCkoKTsKK3R5cGVkZWYgY29tcGxleCBmbG9hdCAoKmZf Zm9vcCkoKTsKKworI2RlZmluZSBGT09fdG9fQkFSKGZvbywgZm9vX3R4dCkg XAordHlwZWRlZiBsb25nIGxvbmcgKCogZm9vX3R4dCAjIyBfdG9fbGwpKF9D b21wbGV4IGZvbyk7XAordHlwZWRlZiBsb25nICgqIGZvb190eHQgIyMgX3Rv X2wpKF9Db21wbGV4IGZvbyk7XAordHlwZWRlZiBpbnQgKCogZm9vX3R4dCAj IyBfdG9faSkoX0NvbXBsZXggZm9vKTtcCit0eXBlZGVmIHNob3J0ICgqIGZv b190eHQgIyMgX3RvX2gpKF9Db21wbGV4IGZvbyk7XAordHlwZWRlZiBzaWdu ZWQgY2hhciAoKiBmb29fdHh0ICMjIF90b19zYykoX0NvbXBsZXggZm9vKTtc Cit0eXBlZGVmIGNoYXIgKCogZm9vX3R4dCAjIyBfdG9fYykoX0NvbXBsZXgg Zm9vKTtcCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAoKiBmb29fdHh0 ICMjIF90b191bGwpKF9Db21wbGV4IGZvbyk7XAordHlwZWRlZiB1bnNpZ25l ZCBsb25nICgqIGZvb190eHQgIyMgX3RvX3VsKShfQ29tcGxleCBmb28pO1wK K3R5cGVkZWYgdW5zaWduZWQgaW50ICgqIGZvb190eHQgIyMgX3RvX3VpKShf Q29tcGxleCBmb28pO1wKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgKCogZm9v X3R4dCAjIyBfdG9fdWgpKF9Db21wbGV4IGZvbyk7XAordHlwZWRlZiB1bnNp Z25lZCBjaGFyICgqIGZvb190eHQgIyMgX3RvX3VjKShfQ29tcGxleCBmb28p O1wKK3R5cGVkZWYgZG91YmxlICgqIGZvb190eHQgIyMgX3RvX2QpKF9Db21w bGV4IGZvbyk7XAordHlwZWRlZiBmbG9hdCAoKiBmb29fdHh0ICMjIF90b19m KShfQ29tcGxleCBmb28pO1wKK3R5cGVkZWYgbG9uZyBkb3VibGUgKCogZm9v X3R4dCAjIyBfdG9fbGQpKF9Db21wbGV4IGZvbyk7XAordHlwZWRlZiBfQ29t cGxleCBkb3VibGUgKCogZm9vX3R4dCAjIyBfdG9fY2QpKF9Db21wbGV4IGZv byk7XAordHlwZWRlZiBfQ29tcGxleCBmbG9hdCAoKiBmb29fdHh0ICMjIF90 b19jZikoX0NvbXBsZXggZm9vKTtcCit0eXBlZGVmIF9Db21wbGV4IGxvbmcg ZG91YmxlICgqIGZvb190eHQgIyMgX3RvX2NsZCkoX0NvbXBsZXggZm9vKTtc Cit0eXBlZGVmIF9Cb29sICgqIGZvb190eHQgIyMgX3RvX2IpKF9Db21wbGV4 IGZvbyk7CisgCitGT09fdG9fQkFSIChmbG9hdCwgY2YpCitGT09fdG9fQkFS IChkb3VibGUsIGNkKQorRk9PX3RvX0JBUiAobG9uZyBkb3VibGUsIGNsZCkK KyAgICAgCisjdW5kZWYgRk9PX3RvX0JBUgorICAKK3ZvaWQKK3ZlcmlmeV9j b2RlIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfcmVzdWx0ICpy ZXN1bHQpCit7CisgIENIRUNLX05PTl9OVUxMIChyZXN1bHQpOworCisgIHsK KyAgIHsvKiBKdXN0IGNoZWNrIHRoYXQgd2UgY2FuIGdldCB0aGUgZ2xvYmFs LiAqLworICAgICBfQ29tcGxleCBkb3VibGUgKmQgPSBnY2Nfaml0X3Jlc3Vs dF9nZXRfZ2xvYmFsIChyZXN1bHQsICJhX2NvbXBsZXhfZ2xvYmFsX2RvdWJs ZSIpOworICAgICBDSEVDS19OT05fTlVMTCAoZCk7CisgICB9CisgIH0KKyAg ey8qIENoZWNrIHRoZSBzcXVhcmUgcm9vdHkgdGhpbmcuICovCisgICB7IAor ICAgICBkX2Zvb3AgZF9mb29wID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUg KHJlc3VsdCwgImNvbXBsZXhfZG91YmxlX2ZvbyIpOworICAgICBDSEVDS19O T05fTlVMTCAoZF9mb29wKTsKKworICAgICBjb21wbGV4IGRvdWJsZSBxID0g Mi4gKyAyLmk7CisgICAgIGNvbXBsZXggZG91YmxlIHJlZiA9IGNzcXJ0IChx ICogMi4pOworICAgICBjb21wbGV4IGRvdWJsZSBhbnMgPSBkX2Zvb3AgKHEp OworICAgICBDSEVDS19WQUxVRSAocmVmLCBhbnMpOworICAgfQorICAgewor ICAgICBmX2Zvb3AgZl9mb29wID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUg KHJlc3VsdCwgImNvbXBsZXhfZmxvYXRfZm9vIik7CisgICAgIENIRUNLX05P Tl9OVUxMIChmX2Zvb3ApOworCisgICAgIGNvbXBsZXggZmxvYXQgcSA9IDIu ZiArIDIuZmk7CisgICAgIGNvbXBsZXggZmxvYXQgcmVmID0gY3NxcnRmIChx ICogMi5mKTsKKyAgICAgY29tcGxleCBmbG9hdCBhbnMgPSBmX2Zvb3AgKHEp OworICAgICBDSEVDS19WQUxVRSAocmVmLCBhbnMpOworICAgfQorICAgewor ICAgICBsZF9mb29wIGxkX2Zvb3AgPSBnY2Nfaml0X3Jlc3VsdF9nZXRfY29k ZSAocmVzdWx0LCAiY29tcGxleF9sb25nX2RvdWJsZV9mb28iKTsKKyAgICAg Q0hFQ0tfTk9OX05VTEwgKGxkX2Zvb3ApOworCisgICAgIGNvbXBsZXggbG9u ZyBkb3VibGUgcSA9IDIuTCArIDIuTGk7CisgICAgIGNvbXBsZXggbG9uZyBk b3VibGUgcmVmID0gY3NxcnRsIChxICogMi5MKTsKKyAgICAgY29tcGxleCBs b25nIGRvdWJsZSBhbnMgPSBsZF9mb29wIChxKTsKKyAgICAgQ0hFQ0tfVkFM VUUgKHJlZiwgYW5zKTsKKyAgIH0KKyAgfQorICAvKiBXaXRoIHRoZSBwb3dl ciBvZiBNLXcgQy15ICovCisKKyAgey8qIENhc3QgaGl0aGVyIGFuZCB0aGl0 aGVyICovCisgICB7CisgICAgIGNmX3RvX2xkIGZuID0gZ2NjX2ppdF9yZXN1 bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNvbXBsZXhfZmxvYXRfdG9fbG9uZ19k b3VibGUiKTsKKyAgICAgQ0hFQ0tfTk9OX05VTEwgKGZuKTsKKworICAgICBD SEVDS19WQUxVRSAoZm4gKDEuMWYgKyAyLjJmaSksIDEuMWYpOworICAgICBD SEVDS19WQUxVRSAoZm4gKDEuMWYgKyAwLjBmaSksIDEuMWYpOworICAgICBD SEVDS19WQUxVRSAoZm4gKDAuMGYgKyAyLjJmaSksIDAuMGYpOworICAgfQor ICAgeworICAgICBjZl90b19kIGZuID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2Nv ZGUgKHJlc3VsdCwgImNvbXBsZXhfZmxvYXRfdG9fZG91YmxlIik7CisgICAg IENIRUNLX05PTl9OVUxMIChmbik7CisKKyAgICAgQ0hFQ0tfVkFMVUUgKGZu ICgxLjFmICsgMi4yZmkpLCAxLjFmKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZu ICgxLjFmICsgMC4wZmkpLCAxLjFmKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZu ICgwLjBmICsgMi4yZmkpLCAwLjBmKTsKKyAgIH0KKyAgIHsKKyAgICAgY2Zf dG9fZiBmbiA9IGdjY19qaXRfcmVzdWx0X2dldF9jb2RlIChyZXN1bHQsICJj b21wbGV4X2Zsb2F0X3RvX2Zsb2F0Iik7CisgICAgIENIRUNLX05PTl9OVUxM IChmbik7CisKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjFmICsgMi4yZmkp LCAxLjFmKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjFmICsgMC5maSks IDEuMWYpOworICAgICBDSEVDS19WQUxVRSAoZm4gKDAuZiArIDIuMmZpKSwg MC5mKTsKKyAgIH0KKyAgIHsKKyAgICAgY2ZfdG9fbGwgZm4gPSBnY2Nfaml0 X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0LCAiY29tcGxleF9mbG9hdF90b19s b25nX2xvbmciKTsKKyAgICAgQ0hFQ0tfTk9OX05VTEwgKGZuKTsKKworICAg ICBDSEVDS19WQUxVRSAoZm4gKDEuMWYgKyAyLjJmaSksIDEpOworICAgICBD SEVDS19WQUxVRSAoZm4gKDEuMWYgKyAwLmZpKSwgMSk7CisgICAgIENIRUNL X1ZBTFVFIChmbiAoMC5mICsgMi4yZmkpLCAwKTsKKyAgIH0KKyAgIHsKKyAg ICAgY2ZfdG9fbCBmbiA9IGdjY19qaXRfcmVzdWx0X2dldF9jb2RlIChyZXN1 bHQsICJjb21wbGV4X2Zsb2F0X3RvX2xvbmciKTsKKyAgICAgQ0hFQ0tfTk9O X05VTEwgKGZuKTsKKworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMWYgKyAy LjJmaSksIDEpOworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMWYgKyAwLmZp KSwgMSk7CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMC5mICsgMi4yZmkpLCAw KTsKKyAgIH0KKyAgIHsKKyAgICAgY2ZfdG9faSBmbiA9IGdjY19qaXRfcmVz dWx0X2dldF9jb2RlIChyZXN1bHQsICJjb21wbGV4X2Zsb2F0X3RvX2ludCIp OworICAgICBDSEVDS19OT05fTlVMTCAoZm4pOworCisgICAgIENIRUNLX1ZB TFVFIChmbiAoMS4xZiArIDIuMmZpKSwgMSk7CisgICAgIENIRUNLX1ZBTFVF IChmbiAoMS4xZiArIDAuZmkpLCAxKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZu ICgwLmYgKyAyLjJmaSksIDApOworICAgfQorICAgeworICAgICBjZl90b19o IGZuID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNvbXBs ZXhfZmxvYXRfdG9fc2hvcnQiKTsKKyAgICAgQ0hFQ0tfTk9OX05VTEwgKGZu KTsKKworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMWYgKyAyLjJmaSksIDEp OworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMWYgKyAwLmZpKSwgMSk7Cisg ICAgIENIRUNLX1ZBTFVFIChmbiAoMC5mICsgMi4yZmkpLCAwKTsKKyAgIH0K KyAgIHsKKyAgICAgY2ZfdG9fc2MgZm4gPSBnY2Nfaml0X3Jlc3VsdF9nZXRf Y29kZSAocmVzdWx0LCAiY29tcGxleF9mbG9hdF90b19zaWduZWRfY2hhciIp OworICAgICBDSEVDS19OT05fTlVMTCAoZm4pOworCisgICAgIENIRUNLX1ZB TFVFIChmbiAoMS4xZiArIDIuMmZpKSwgMSk7CisgICAgIENIRUNLX1ZBTFVF IChmbiAoMS4xZiArIDAuZmkpLCAxKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZu ICgwLmYgKyAyLjJmaSksIDApOworICAgfQorICAgeworICAgICBjZl90b19j IGZuID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNvbXBs ZXhfZmxvYXRfdG9fY2hhciIpOworICAgICBDSEVDS19OT05fTlVMTCAoZm4p OworCisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4xZiArIDIuMmZpKSwgMSk7 CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4xZiArIDAuZmkpLCAxKTsKKyAg ICAgQ0hFQ0tfVkFMVUUgKGZuICgwLmYgKyAyLjJmaSksIDApOworICAgfQor ICAgeworICAgICBjZl90b191bGwgZm4gPSBnY2Nfaml0X3Jlc3VsdF9nZXRf Y29kZSAocmVzdWx0LCAiY29tcGxleF9mbG9hdF90b191X2xvbmdfbG9uZyIp OworICAgICBDSEVDS19OT05fTlVMTCAoZm4pOworCisgICAgIENIRUNLX1ZB TFVFIChmbiAoMS4xZiArIDIuMmZpKSwgMSk7CisgICAgIENIRUNLX1ZBTFVF IChmbiAoMS4xZiArIDAuZmkpLCAxKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZu ICgwLmYgKyAyLjJmaSksIDApOworICAgfQorICAgeworICAgICBjZl90b191 bCBmbiA9IGdjY19qaXRfcmVzdWx0X2dldF9jb2RlIChyZXN1bHQsICJjb21w bGV4X2Zsb2F0X3RvX3VfbG9uZyIpOworICAgICBDSEVDS19OT05fTlVMTCAo Zm4pOworCisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4xZiArIDIuMmZpKSwg MSk7CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4xZiArIDAuZmkpLCAxKTsK KyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgwLmYgKyAyLjJmaSksIDApOworICAg fQorICAgeworICAgICBjZl90b191aSBmbiA9IGdjY19qaXRfcmVzdWx0X2dl dF9jb2RlIChyZXN1bHQsICJjb21wbGV4X2Zsb2F0X3RvX3VfaW50Iik7Cisg ICAgIENIRUNLX05PTl9OVUxMIChmbik7CisKKyAgICAgQ0hFQ0tfVkFMVUUg KGZuICgxLjFmICsgMi4yZmkpLCAxKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZu ICgxLjFmICsgMC5maSksIDEpOworICAgICBDSEVDS19WQUxVRSAoZm4gKDAu ZiArIDIuMmZpKSwgMCk7CisgICB9CisgICB7CisgICAgIGNmX3RvX3VoIGZu ID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNvbXBsZXhf ZmxvYXRfdG9fdV9zaG9ydCIpOworICAgICBDSEVDS19OT05fTlVMTCAoZm4p OworCisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4xZiArIDIuMmZpKSwgMSk7 CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4xZiArIDAuZmkpLCAxKTsKKyAg ICAgQ0hFQ0tfVkFMVUUgKGZuICgwLmYgKyAyLjJmaSksIDApOworICAgfQor ICAgeworICAgICBjZl90b191YyBmbiA9IGdjY19qaXRfcmVzdWx0X2dldF9j b2RlIChyZXN1bHQsICJjb21wbGV4X2Zsb2F0X3RvX3VfY2hhciIpOworICAg ICBDSEVDS19OT05fTlVMTCAoZm4pOworCisgICAgIENIRUNLX1ZBTFVFIChm biAoMS4xZiArIDIuMmZpKSwgMSk7CisgICAgIENIRUNLX1ZBTFVFIChmbiAo MS4xZiArIDAuZmkpLCAxKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgwLmYg KyAyLjJmaSksIDApOworICAgfQorICB9CisgIAorICB7LyogY29tcGxleCBk b3VibGUgdG8gLi4uICovCisgICB7CisgICAgIGNkX3RvX2xkIGZuID0gZ2Nj X2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNvbXBsZXhfZG91Ymxl X3RvX2xvbmdfZG91YmxlIik7CisgICAgIENIRUNLX05PTl9OVUxMIChmbik7 CisKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjEgKyAyLjJpKSwgMS4xKTsK KyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjEgKyAwLjBpKSwgMS4xKTsKKyAg ICAgQ0hFQ0tfVkFMVUUgKGZuICgwLjAgKyAyLjJpKSwgMC4pOworICAgfQor ICAgeworICAgICBjZF90b19kIGZuID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2Nv ZGUgKHJlc3VsdCwgImNvbXBsZXhfZG91YmxlX3RvX2RvdWJsZSIpOworICAg ICBDSEVDS19OT05fTlVMTCAoZm4pOworCisgICAgIENIRUNLX1ZBTFVFIChm biAoMS4xZiArIDIuMmZpKSwgMS4xZik7CisgICAgIENIRUNLX1ZBTFVFIChm biAoMS4xZiArIDAuMGZpKSwgMS4xZik7CisgICAgIENIRUNLX1ZBTFVFIChm biAoMC4wZiArIDIuMmZpKSwgMC4wZik7CisgICB9CisgICB7CisgICAgIGNk X3RvX2YgZm4gPSBnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0LCAi Y29tcGxleF9kb3VibGVfdG9fZmxvYXQiKTsKKyAgICAgQ0hFQ0tfTk9OX05V TEwgKGZuKTsKKworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMWYgKyAyLjJm aSksIDEuMWYpOworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMWYgKyAwLjBm aSksIDEuMWYpOworICAgICBDSEVDS19WQUxVRSAoZm4gKDAuMGYgKyAyLjJm aSksIDAuMGYpOworICAgfQorICAgeworICAgICBjZF90b19sbCBmbiA9IGdj Y19qaXRfcmVzdWx0X2dldF9jb2RlIChyZXN1bHQsICJjb21wbGV4X2RvdWJs ZV90b19sb25nX2xvbmciKTsKKyAgICAgQ0hFQ0tfTk9OX05VTEwgKGZuKTsK KworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMSArIDIuMmkpLCAxKTsKKyAg ICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjEgKyAwLjBpKSwgMSk7CisgICAgIENI RUNLX1ZBTFVFIChmbiAoMC4wICsgMi4yaSksIDApOworICAgfQorICAgewor ICAgICBjZF90b19sIGZuID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJl c3VsdCwgImNvbXBsZXhfZG91YmxlX3RvX2xvbmciKTsKKyAgICAgQ0hFQ0tf Tk9OX05VTEwgKGZuKTsKKworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMSAr IDIuMmkpLCAxKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjEgKyAwLjBp KSwgMSk7CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMC4wICsgMi4yaSksIDAp OworICAgfQorICAgeworICAgICBjZF90b19pIGZuID0gZ2NjX2ppdF9yZXN1 bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNvbXBsZXhfZG91YmxlX3RvX2ludCIp OworICAgICBDSEVDS19OT05fTlVMTCAoZm4pOworCisgICAgIENIRUNLX1ZB TFVFIChmbiAoMS4xICsgMi4yaSksIDEpOworICAgICBDSEVDS19WQUxVRSAo Zm4gKDEuMSArIDAuMGkpLCAxKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgw LjAgKyAyLjJpKSwgMCk7CisgICB9CisgICB7CisgICAgIGNkX3RvX2ggZm4g PSBnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0LCAiY29tcGxleF9k b3VibGVfdG9fc2hvcnQiKTsKKyAgICAgQ0hFQ0tfTk9OX05VTEwgKGZuKTsK KworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMSArIDIuMmkpLCAxKTsKKyAg ICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjEgKyAwLjBpKSwgMSk7CisgICAgIENI RUNLX1ZBTFVFIChmbiAoMC4wICsgMi4yaSksIDApOworICAgfQorICAgewor ICAgICBjZF90b19zYyBmbiA9IGdjY19qaXRfcmVzdWx0X2dldF9jb2RlIChy ZXN1bHQsICJjb21wbGV4X2RvdWJsZV90b19zaWduZWRfY2hhciIpOworICAg ICBDSEVDS19OT05fTlVMTCAoZm4pOworCisgICAgIENIRUNLX1ZBTFVFIChm biAoMS4xICsgMi4yaSksIDEpOworICAgICBDSEVDS19WQUxVRSAoZm4gKDEu MSArIDAuMGkpLCAxKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgwLjAgKyAy LjJpKSwgMCk7CisgICB9CisgICB7CisgICAgIGNkX3RvX2MgZm4gPSBnY2Nf aml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0LCAiY29tcGxleF9kb3VibGVf dG9fY2hhciIpOworICAgICBDSEVDS19OT05fTlVMTCAoZm4pOworCisgICAg IENIRUNLX1ZBTFVFIChmbiAoMS4xICsgMi4yaSksIDEpOworICAgICBDSEVD S19WQUxVRSAoZm4gKDEuMSArIDAuMGkpLCAxKTsKKyAgICAgQ0hFQ0tfVkFM VUUgKGZuICgwLjAgKyAyLjJpKSwgMCk7CisgICB9CisgICB7CisgICAgIGNk X3RvX3VsbCBmbiA9IGdjY19qaXRfcmVzdWx0X2dldF9jb2RlIChyZXN1bHQs ICJjb21wbGV4X2RvdWJsZV90b191X2xvbmdfbG9uZyIpOworICAgICBDSEVD S19OT05fTlVMTCAoZm4pOworCisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4x ICsgMi4yaSksIDEpOworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMSArIDAu MGkpLCAxKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgwLjAgKyAyLjJpKSwg MCk7CisgICB9CisgICB7CisgICAgIGNkX3RvX3VsIGZuID0gZ2NjX2ppdF9y ZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNvbXBsZXhfZG91YmxlX3RvX3Vf bG9uZyIpOworICAgICBDSEVDS19OT05fTlVMTCAoZm4pOworCisgICAgIENI RUNLX1ZBTFVFIChmbiAoMS4xICsgMi4yaSksIDEpOworICAgICBDSEVDS19W QUxVRSAoZm4gKDEuMSArIDAuMGkpLCAxKTsKKyAgICAgQ0hFQ0tfVkFMVUUg KGZuICgwLjAgKyAyLjJpKSwgMCk7CisgICB9CisgICB7CisgICAgIGNkX3Rv X3VpIGZuID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNv bXBsZXhfZG91YmxlX3RvX3VfaW50Iik7CisgICAgIENIRUNLX05PTl9OVUxM IChmbik7CisKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjEgKyAyLjJpKSwg MSk7CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4xICsgMC4waSksIDEpOwor ICAgICBDSEVDS19WQUxVRSAoZm4gKDAuMCArIDIuMmkpLCAwKTsKKyAgIH0K KyAgIHsKKyAgICAgY2RfdG9fdWggZm4gPSBnY2Nfaml0X3Jlc3VsdF9nZXRf Y29kZSAocmVzdWx0LCAiY29tcGxleF9kb3VibGVfdG9fdV9zaG9ydCIpOwor ICAgICBDSEVDS19OT05fTlVMTCAoZm4pOworCisgICAgIENIRUNLX1ZBTFVF IChmbiAoMS4xICsgMi4yaSksIDEpOworICAgICBDSEVDS19WQUxVRSAoZm4g KDEuMSArIDAuMGkpLCAxKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgwLjAg KyAyLjJpKSwgMCk7CisgICB9CisgICB7CisgICAgIGNkX3RvX3VjIGZuID0g Z2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNvbXBsZXhfZG91 YmxlX3RvX3VfY2hhciIpOworICAgICBDSEVDS19OT05fTlVMTCAoZm4pOwor CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4xICsgMi4yaSksIDEpOworICAg ICBDSEVDS19WQUxVRSAoZm4gKDEuMSArIDAuMGkpLCAxKTsKKyAgICAgQ0hF Q0tfVkFMVUUgKGZuICgwLjAgKyAyLjJpKSwgMCk7CisgICB9CisgIH0KKwor ICB7LyogY29tcGxleCBsb25nIGRvdWJsZSB0byAuLi4gKi8KKyAgIHsKKyAg ICAgY2xkX3RvX2xkIGZuID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJl c3VsdCwgImNvbXBsZXhfbG9uZ19kb3VibGVfdG9fbG9uZ19kb3VibGUiKTsK KyAgICAgQ0hFQ0tfTk9OX05VTEwgKGZuKTsKKworICAgICBDSEVDS19WQUxV RSAoZm4gKDEuMUwgKyAyLjJMaSksIDEuMUwpOworICAgICBDSEVDS19WQUxV RSAoZm4gKDEuMUwgKyAwLjBMaSksIDEuMUwpOworICAgICBDSEVDS19WQUxV RSAoZm4gKDAuMEwgKyAyLjJMaSksIDAuKTsKKyAgIH0KKyAgIHsKKyAgICAg Y2xkX3RvX2QgZm4gPSBnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0 LCAiY29tcGxleF9sb25nX2RvdWJsZV90b19kb3VibGUiKTsKKyAgICAgQ0hF Q0tfTk9OX05VTEwgKGZuKTsKKworICAgICBDSEVDS19WQUxVRSAoZm4gKDEu MUwgKyAyLjJMaSksIDEuMSk7CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4x TCArIDAuMExpKSwgMS4xKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgwLjBM ICsgMi4yTGkpLCAwLik7CisgICB9CisgICB7CisgICAgIGNsZF90b19mIGZu ID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNvbXBsZXhf bG9uZ19kb3VibGVfdG9fZmxvYXQiKTsKKyAgICAgQ0hFQ0tfTk9OX05VTEwg KGZuKTsKKworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMUwgKyAyLjJMaSks IDEuMWYpOworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMUwgKyAwLjBMaSks IDEuMWYpOworICAgICBDSEVDS19WQUxVRSAoZm4gKDAuMEwgKyAyLjJMaSks IDAuKTsKKyAgIH0gICAgCisgICB7CisgICAgIGNsZF90b19sbCBmbiA9IGdj Y19qaXRfcmVzdWx0X2dldF9jb2RlIChyZXN1bHQsICJjb21wbGV4X2xvbmdf ZG91YmxlX3RvX2xvbmdfbG9uZyIpOworICAgICBDSEVDS19OT05fTlVMTCAo Zm4pOworCisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4xICsgMi4yaSksIDEp OworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMSArIDAuMGkpLCAxKTsKKyAg ICAgQ0hFQ0tfVkFMVUUgKGZuICgwLjAgKyAyLjJpKSwgMCk7CisgICB9Cisg ICB7CisgICAgIGNsZF90b19sIGZuID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2Nv ZGUgKHJlc3VsdCwgImNvbXBsZXhfbG9uZ19kb3VibGVfdG9fbG9uZyIpOwor ICAgICBDSEVDS19OT05fTlVMTCAoZm4pOworCisgICAgIENIRUNLX1ZBTFVF IChmbiAoMS4xICsgMi4yaSksIDEpOworICAgICBDSEVDS19WQUxVRSAoZm4g KDEuMSArIDAuMGkpLCAxKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgwLjAg KyAyLjJpKSwgMCk7CisgICB9CisgICB7CisgICAgIGNsZF90b19pIGZuID0g Z2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNvbXBsZXhfbG9u Z19kb3VibGVfdG9faW50Iik7CisgICAgIENIRUNLX05PTl9OVUxMIChmbik7 CisKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjEgKyAyLjJpKSwgMSk7Cisg ICAgIENIRUNLX1ZBTFVFIChmbiAoMS4xICsgMC4waSksIDEpOworICAgICBD SEVDS19WQUxVRSAoZm4gKDAuMCArIDIuMmkpLCAwKTsKKyAgIH0KKyAgIHsK KyAgICAgY2xkX3RvX2ggZm4gPSBnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAo cmVzdWx0LCAiY29tcGxleF9sb25nX2RvdWJsZV90b19zaG9ydCIpOworICAg ICBDSEVDS19OT05fTlVMTCAoZm4pOworCisgICAgIENIRUNLX1ZBTFVFIChm biAoMS4xICsgMi4yaSksIDEpOworICAgICBDSEVDS19WQUxVRSAoZm4gKDEu MSArIDAuMGkpLCAxKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgwLjAgKyAy LjJpKSwgMCk7CisgICB9CisgICB7CisgICAgIGNsZF90b19zYyBmbiA9IGdj Y19qaXRfcmVzdWx0X2dldF9jb2RlIChyZXN1bHQsICJjb21wbGV4X2xvbmdf ZG91YmxlX3RvX3NpZ25lZF9jaGFyIik7CisgICAgIENIRUNLX05PTl9OVUxM IChmbik7CisKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjEgKyAyLjJpKSwg MSk7CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4xICsgMC4waSksIDEpOwor ICAgICBDSEVDS19WQUxVRSAoZm4gKDAuMCArIDIuMmkpLCAwKTsKKyAgIH0K KyAgIHsKKyAgICAgY2xkX3RvX2MgZm4gPSBnY2Nfaml0X3Jlc3VsdF9nZXRf Y29kZSAocmVzdWx0LCAiY29tcGxleF9sb25nX2RvdWJsZV90b19jaGFyIik7 CisgICAgIENIRUNLX05PTl9OVUxMIChmbik7CisKKyAgICAgQ0hFQ0tfVkFM VUUgKGZuICgxLjEgKyAyLjJpKSwgMSk7CisgICAgIENIRUNLX1ZBTFVFIChm biAoMS4xICsgMC4waSksIDEpOworICAgICBDSEVDS19WQUxVRSAoZm4gKDAu MCArIDIuMmkpLCAwKTsKKyAgIH0KKyAgIHsKKyAgICAgY2xkX3RvX3VsbCBm biA9IGdjY19qaXRfcmVzdWx0X2dldF9jb2RlIChyZXN1bHQsICJjb21wbGV4 X2xvbmdfZG91YmxlX3RvX3VfbG9uZ19sb25nIik7CisgICAgIENIRUNLX05P Tl9OVUxMIChmbik7CisKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjEgKyAy LjJpKSwgMSk7CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4xICsgMC4waSks IDEpOworICAgICBDSEVDS19WQUxVRSAoZm4gKDAuMCArIDIuMmkpLCAwKTsK KyAgIH0KKyAgIHsKKyAgICAgY2xkX3RvX3VsIGZuID0gZ2NjX2ppdF9yZXN1 bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNvbXBsZXhfbG9uZ19kb3VibGVfdG9f dV9sb25nIik7CisgICAgIENIRUNLX05PTl9OVUxMIChmbik7CisKKyAgICAg Q0hFQ0tfVkFMVUUgKGZuICgxLjEgKyAyLjJpKSwgMSk7CisgICAgIENIRUNL X1ZBTFVFIChmbiAoMS4xICsgMC4waSksIDEpOworICAgICBDSEVDS19WQUxV RSAoZm4gKDAuMCArIDIuMmkpLCAwKTsKKyAgIH0KKyAgIHsKKyAgICAgY2xk X3RvX3VpIGZuID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwg ImNvbXBsZXhfbG9uZ19kb3VibGVfdG9fdV9pbnQiKTsKKyAgICAgQ0hFQ0tf Tk9OX05VTEwgKGZuKTsKKworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMSAr IDIuMmkpLCAxKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjEgKyAwLjBp KSwgMSk7CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMC4wICsgMi4yaSksIDAp OworICAgfQorICAgeworICAgICBjbGRfdG9fdWggZm4gPSBnY2Nfaml0X3Jl c3VsdF9nZXRfY29kZSAocmVzdWx0LCAiY29tcGxleF9sb25nX2RvdWJsZV90 b191X3Nob3J0Iik7CisgICAgIENIRUNLX05PTl9OVUxMIChmbik7CisKKyAg ICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjEgKyAyLjJpKSwgMSk7CisgICAgIENI RUNLX1ZBTFVFIChmbiAoMS4xICsgMC4waSksIDEpOworICAgICBDSEVDS19W QUxVRSAoZm4gKDAuMCArIDIuMmkpLCAwKTsKKyAgIH0KKyAgIHsKKyAgICAg Y2xkX3RvX3VjIGZuID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3Vs dCwgImNvbXBsZXhfbG9uZ19kb3VibGVfdG9fdV9jaGFyIik7CisgICAgIENI RUNLX05PTl9OVUxMIChmbik7CisKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgx LjEgKyAyLjJpKSwgMSk7CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4xICsg MC4waSksIDEpOworICAgICBDSEVDS19WQUxVRSAoZm4gKDAuMCArIDIuMmkp LCAwKTsKKyAgIH0KKyAgfQorCisgIHsgLyogVHJ5IGNhc3RpbmcgY29tcGxl eCB0eXBlcyB0byBjb21wbGV4IHR5cGVzICovCisgICB7CisgICAgIGNsZF90 b19jbGQgZm4gPSBnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0LCAi Y29tcGxleF9sb25nX2RvdWJsZV90b19jb21wbGV4X2xvbmdfZG91YmxlIik7 CisgICAgIENIRUNLX05PTl9OVUxMIChmbik7CisKKyAgICAgQ0hFQ0tfVkFM VUUgKGZuICgxLjFMICsgMi4yTGkpLCAxLjFMICsgMi4yTGkpOworICAgICBD SEVDS19WQUxVRSAoZm4gKDEuMUwgKyAwLjBMaSksIDEuMUwgKyAwLjBMaSk7 CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMC4wTCArIDIuMkxpKSwgMC4wTCAr IDIuMkxpKTsKKyAgIH0KKyAgIHsKKyAgICAgY2xkX3RvX2NkIGZuID0gZ2Nj X2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNvbXBsZXhfbG9uZ19k b3VibGVfdG9fY29tcGxleF9kb3VibGUiKTsKKyAgICAgQ0hFQ0tfTk9OX05V TEwgKGZuKTsKKworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMUwgKyAyLjJM aSksIDEuMSArIDIuMmkpOworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMUwg KyAwLjBMaSksIDEuMSArIDAuMGkpOworICAgICBDSEVDS19WQUxVRSAoZm4g KDAuMEwgKyAyLjJMaSksIDAuMCArIDIuMmkpOworICAgfQorICAgeworICAg ICBjbGRfdG9fY2YgZm4gPSBnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVz dWx0LCAiY29tcGxleF9sb25nX2RvdWJsZV90b19jb21wbGV4X2Zsb2F0Iik7 CisgICAgIENIRUNLX05PTl9OVUxMIChmbik7CisKKyAgICAgQ0hFQ0tfVkFM VUUgKGZuICgxLjFMICsgMi4yTGkpLCAxLjFmICsgMi4yZmkpOworICAgICBD SEVDS19WQUxVRSAoZm4gKDEuMUwgKyAwLjBMaSksIDEuMWYgKyAwLjBmaSk7 CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMC4wTCArIDIuMkxpKSwgMC4wZiAr IDIuMmZpKTsKKyAgIH0KKyAgIHsKKyAgICAgY2RfdG9fY2xkIGZuID0gZ2Nj X2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImNvbXBsZXhfZG91Ymxl X3RvX2NvbXBsZXhfbG9uZ19kb3VibGUiKTsKKyAgICAgQ0hFQ0tfTk9OX05V TEwgKGZuKTsKKworICAgICBDSEVDS19WQUxVRSAoZm4gKDEuMSArIDIuMmkp LCAxLjEgKyAyLjJpKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjEgKyAw LjBpKSwgMS4xICsgMC4waSk7CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMC4w ICsgMi4yaSksIDAuMCArIDIuMmkpOworICAgfQorICAgeworICAgICBjZF90 b19jZCBmbiA9IGdjY19qaXRfcmVzdWx0X2dldF9jb2RlIChyZXN1bHQsICJj b21wbGV4X2RvdWJsZV90b19jb21wbGV4X2RvdWJsZSIpOworICAgICBDSEVD S19OT05fTlVMTCAoZm4pOworCisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4x ICsgMi4yaSksIDEuMSArIDIuMmkpOworICAgICBDSEVDS19WQUxVRSAoZm4g KDEuMSArIDAuMGkpLCAxLjEgKyAwLjBpKTsKKyAgICAgQ0hFQ0tfVkFMVUUg KGZuICgwLjAgKyAyLjJpKSwgMC4wICsgMi4yaSk7CisgICB9CisgICB7Cisg ICAgIGNkX3RvX2NmIGZuID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJl c3VsdCwgImNvbXBsZXhfZG91YmxlX3RvX2NvbXBsZXhfZmxvYXQiKTsKKyAg ICAgQ0hFQ0tfTk9OX05VTEwgKGZuKTsKKworICAgICBDSEVDS19WQUxVRSAo Zm4gKDEuMSArIDIuMmkpLCAxLjFmICsgMi4yZmkpOworICAgICBDSEVDS19W QUxVRSAoZm4gKDEuMSArIDAuMGkpLCAxLjFmICsgMC4wZmkpOworICAgICBD SEVDS19WQUxVRSAoZm4gKDAuMCArIDIuMmkpLCAwLjBmICsgMi4yZmkpOwor ICAgfQorICAgeworICAgICBjZl90b19jbGQgZm4gPSBnY2Nfaml0X3Jlc3Vs dF9nZXRfY29kZSAocmVzdWx0LCAiY29tcGxleF9mbG9hdF90b19jb21wbGV4 X2xvbmdfZG91YmxlIik7CisgICAgIENIRUNLX05PTl9OVUxMIChmbik7CisK KyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjEgKyAyLjJpKSwgMS4xZiArIDIu MmZpKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgxLjEgKyAwLjBpKSwgMS4x ZiArIDAuMGZpKTsKKyAgICAgQ0hFQ0tfVkFMVUUgKGZuICgwLjAgKyAyLjJp KSwgMC4wZiArIDIuMmZpKTsKKyAgIH0KKyAgIHsKKyAgICAgY2ZfdG9fY2Qg Zm4gPSBnY2Nfaml0X3Jlc3VsdF9nZXRfY29kZSAocmVzdWx0LCAiY29tcGxl eF9mbG9hdF90b19jb21wbGV4X2RvdWJsZSIpOworICAgICBDSEVDS19OT05f TlVMTCAoZm4pOworCisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4xICsgMi4y aSksIDEuMWYgKyAyLjJmaSk7CisgICAgIENIRUNLX1ZBTFVFIChmbiAoMS4x ICsgMC4waSksIDEuMWYgKyAwLjBmaSk7CisgICAgIENIRUNLX1ZBTFVFIChm biAoMC4wICsgMi4yaSksIDAuMGYgKyAyLjJmaSk7CisgICB9CisgICB7Cisg ICAgIGNmX3RvX2NmIGZuID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJl c3VsdCwgImNvbXBsZXhfZmxvYXRfdG9fY29tcGxleF9mbG9hdCIpOworICAg ICBDSEVDS19OT05fTlVMTCAoZm4pOworCisgICAgIENIRUNLX1ZBTFVFIChm biAoMS4xICsgMi4yaSksIDEuMWYgKyAyLjJmaSk7CisgICAgIENIRUNLX1ZB TFVFIChmbiAoMS4xICsgMC4waSksIDEuMWYgKyAwLjBmaSk7CisgICAgIENI RUNLX1ZBTFVFIChmbiAoMC4wICsgMi4yaSksIDAuMGYgKyAyLjJmaSk7Cisg ICB9CisgIH0KKworICB7LyogVGVzdCBzb21lIG9mIHRoZSBub24tY29tcGxl eCB0byBub24tY29tcGxleC9jb21wbGV4IGNhc3RzICAqLworICAgIHsKKyAg ICAgIF9Db21wbGV4IGZsb2F0KCpmbikoZmxvYXQpID0gZ2NjX2ppdF9yZXN1 bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImZsb2F0X3RvX2NvbXBsZXhfZmxvYXQi KTsKKyAgICAgIENIRUNLX1ZBTFVFICggZm4oMy5mKSwgMy5mKTsKKyAgICB9 CisgICAgeworICAgICAgX0NvbXBsZXggZmxvYXQoKmZuKShpbnQpID0gZ2Nj X2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwgImludF90b19jb21wbGV4 X2Zsb2F0Iik7CisgICAgICBDSEVDS19WQUxVRSAoIGZuKC0zKSwgLTMuZik7 CisgICAgfQorICAgIHsKKyAgICAgIF9Db21wbGV4IGRvdWJsZSgqZm4pKHVu c2lnbmVkIGxvbmcpID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3Vs dCwgInVuc2lnbmVkX2xvbmdfdG9fY29tcGxleF9kb3VibGUiKTsKKyAgICAg IENIRUNLX1ZBTFVFICggZm4oMyksIDMuZik7CisgICAgfQorICAgIHsKKyAg ICAgIGRvdWJsZSgqZm4pKGludCkgPSBnY2Nfaml0X3Jlc3VsdF9nZXRfY29k ZSAocmVzdWx0LCAiaW50X3RvX2RvdWJsZSIpOworICAgICAgQ0hFQ0tfVkFM VUUgKCBmbigzKSwgMy5mKTsKKyAgICB9CisgICAgeworICAgICAgaW50KCpm bikoZmxvYXQpID0gZ2NjX2ppdF9yZXN1bHRfZ2V0X2NvZGUgKHJlc3VsdCwg ImZsb2F0X3RvX2ludCIpOworICAgICAgQ0hFQ0tfVkFMVUUgKCBmbigzLiks IDMpOworICAgIH0KKyAgfSAKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvaml0LmRnL3Rlc3QtZXJyb3ItY29tcGxleC1ub2VuYWJsZS5jIGIvZ2Nj L3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1lcnJvci1jb21wbGV4LW5vZW5hYmxl LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBh N2JhMTMxZjI4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9q aXQuZGcvdGVzdC1lcnJvci1jb21wbGV4LW5vZW5hYmxlLmMKQEAgLTAsMCAr MSwzMSBAQAorLyoKKyAgVGVzdCB0aGF0IHdlIGNhbid0IGdldCBhIGNvbXBs ZXggdHlwZSB3aXRob3V0IGVuYWJsaW5nIHRoZW0gZmlyc3QKKyAgd2l0aAor ICAgIGdjY19qaXRfY29udGV4dF9zZXRfYm9vbF9lbmFibGVfY29tcGxleF90 eXBlcyAoY3R4dCwgMSk7CisqLworCisjaW5jbHVkZSAibGliZ2Njaml0Lmgi CisjaW5jbHVkZSAiaGFybmVzcy5oIgorCit2b2lkCitjcmVhdGVfY29kZSAo Z2NjX2ppdF9jb250ZXh0ICpjdHh0LCB2b2lkICp1c2VyX2RhdGEpCit7Cisg ICh2b2lkKSB1c2VyX2RhdGE7CisKKyAgZ2NjX2ppdF90eXBlICp0dCA9IGdj Y19qaXRfY29udGV4dF9nZXRfdHlwZSAoY3R4dCwKKwkJCQkJICAgICAgIEdD Q19KSVRfVFlQRV9DT01QTEVYX0RPVUJMRSk7CisgIENIRUNLX1ZBTFVFICh0 dCwgTlVMTCk7Cit9CisKK3ZvaWQKK3ZlcmlmeV9jb2RlIChnY2Nfaml0X2Nv bnRleHQgKmN0eHQsIGdjY19qaXRfcmVzdWx0ICpyZXN1bHQpCit7CisgIC8q IFZlcmlmeSB0aGF0IHRoZSBkaWFnbm9zdGljIGxlZCB0byB0aGUgY29udGV4 dCBmYWlsaW5nLi4uICovCisgIENIRUNLX1ZBTFVFIChyZXN1bHQsIE5VTEwp OworCisgIC8qIC4uLmFuZCB0aGF0IHRoZSBtZXNzYWdlIHdhcyBjYXB0dXJl ZCBieSB0aGUgQVBJLiAgKi8KKyAgQ0hFQ0tfU1RSSU5HX1ZBTFVFIChnY2Nf aml0X2NvbnRleHRfZ2V0X2ZpcnN0X2Vycm9yIChjdHh0KSwKKwkJICAgICAg ImdjY19qaXRfY29udGV4dF9nZXRfdHlwZTogY29tcGxleCB0eXBlcyBhcmUg b25seSAiCisJCSAgICAgICJhdmFpbGFibGUgYWZ0ZXIgZW5hYmxpbmcgdGhl bSB3aXRoICIKKwkJICAgICAgImdjY19qaXRfY29udGV4dF9zZXRfYm9vbF9l bmFibGVfY29tcGxleF90eXBlcygpIik7Cit9Ci0tIAoyLjQyLjAKCg== --------------mJCI5zQJHW5jTJSOnyd7BSuL--