From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 416A0C021B8 for ; Sat, 1 Mar 2025 05:29:27 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFOF-0003uT-By; Sat, 01 Mar 2025 00:27:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFOC-0003lW-9y for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:27:52 -0500 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFO9-0008BF-02 for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:27:52 -0500 Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213PcD8006204 for ; Sat, 1 Mar 2025 05:27:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= b5Q+4HhnwygiohSSnqr6gEZH5ezXTcQgmPq33U6f46Q=; b=HcObS1T0e/Gccj4X QdV9HE2rrOJctrci2YQVecYBb/yKfUaqoOSSxAmP3AUC+Q1+xJUFhnhepBlVy8FV R0gaqrxDqsSvKX4NqE89fRlXoDQoVZRM4GeyXk2kQoKAnv3QQB5dreRVkqr+LEXu lgGC8kmAe9e/Whhn1ILg9f26hZ60wfW6CBqhnsHj/2ghtWApPZHJvgE3HRoGXY7r MR95QrPHlc/REv+Dk4cDF6ADxnr9T5e/OYUsc73mY0sA9Qj7tEOy6kmW0CRTy4PJ XKeeFvh7MeJVH7fxvbm+oiv9ZYxZuLe9D+lGSDo1eEGrqecfkTvs/GVbgP9J0KaW psRjFA== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 453tas85qu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:27:37 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-22366901375so35415915ad.0 for ; Fri, 28 Feb 2025 21:27:37 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806853; x=1741411653; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=b5Q+4HhnwygiohSSnqr6gEZH5ezXTcQgmPq33U6f46Q=; b=n6JwngEmgSIADSNDV53bZBlFWnRAWqfUiIC4t57dZuPZJiSGRV/qc0viaR5rTjlOXk JwFWA/tGXzONLDDPZhHVLsJeJT/gZdDQ0L7ix2nt8u5U5+7vQkA31h6CEmentWZvKZrQ 1ujVdrSC+gSR3bZDqIHeiGIYemd5YC6LEvp9iJR5481oQWh3eLvix2q4rj4WpKGA8u5w NyazKZr7FjbfGJZGVNTtwCG4dnAHfOalL3Wjb6zj2f8p2BvIr1lRYR15EhLSBJ/69M2y K06Pc/XjR3YTS4iUXuOVgGMSgs6ASA6NTcCGFlZYbyrmxsRvOy4tohTebODpyT/2ZNFl CeSg== X-Gm-Message-State: AOJu0YwNtpZYM18RKD8ghMI9WYiEuZ3I5QH2nYeb+NYdAZPuenf8GDNl QNg5N/tydquvv61VE1YAgR8Ra4UYI/y156AC5lgBw1CY4Iye282+smFR0gs0hDsSus7Z0enGxU4 ObApgBIDyQ1suXKACP7FWxri6eEqqyXQYM1n7hq9Lv+zpYEmUAr5d85+3PgWYuA== X-Gm-Gg: ASbGnctwobyLIIjhQJLsbwGJGqMjkN47gxw0RwIEafQ9blAR5T05MIrlx4KMGQQ19XO gH83enGmFF5L6q0WKwOHygVsf0jBExZu4BDS/UVunYByTed2tcpDgIL4K7D2CQy214lAt5yGtRh OPw2p8Hq5Nr/p9lDS8vX9rcGgS7MtU3KTYrAHm8KbsYTXAkHyb/XQ2gRizORiI0IHWjzHQhyHUV LxcHn2Px6AT3WK+4mUqcJUoc5KjFhj+VNkSA3pId7CnE+DN7J1kGHsxkMy5SRXf4HLCtSLpWRo2 Vl7PAQwUu0gcpJNhk0kBHU3hmGH2jFyJ25W9coGMSHrTDi8BlszlB3oosgb5hA8B X-Received: by 2002:a17:902:e80e:b0:21f:3d0d:2408 with SMTP id d9443c01a7336-2234a28af91mr174860315ad.10.1740806853110; Fri, 28 Feb 2025 21:27:33 -0800 (PST) X-Google-Smtp-Source: AGHT+IFvCEL7/Z/3BzmfyXxDOy/hN2Eq7fRGmuhvmTADfUoQ8cfhjkLtjqiqpnATIZ6cJwREgJEntg== X-Received: by 2002:a17:902:e80e:b0:21f:3d0d:2408 with SMTP id d9443c01a7336-2234a28af91mr174859845ad.10.1740806852544; Fri, 28 Feb 2025 21:27:32 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fe825bb346sm6930596a91.18.2025.02.28.21.27.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:27:32 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain , Michael Lambert Subject: [PATCH 34/38] target/hexagon: Add initial MMU model Date: Fri, 28 Feb 2025 21:26:24 -0800 Message-Id: <20250301052628.1011210-35-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052628.1011210-1-brian.cain@oss.qualcomm.com> References: <20250301052628.1011210-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Proofpoint-GUID: S9WfTnmNjm_bgpxii7e8CBKpIyiC3qYq X-Proofpoint-ORIG-GUID: S9WfTnmNjm_bgpxii7e8CBKpIyiC3qYq X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 mlxlogscore=999 spamscore=0 phishscore=0 mlxscore=0 priorityscore=1501 bulkscore=0 lowpriorityscore=0 malwarescore=0 impostorscore=0 adultscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.180.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org RnJvbTogQnJpYW4gQ2FpbiA8YmNhaW5AcXVpY2luYy5jb20+CgpDby1hdXRob3JlZC1ieTogVGF5 bG9yIFNpbXBzb24gPGx0YXlsb3JzaW1wc29uQGdtYWlsLmNvbT4KQ28tYXV0aG9yZWQtYnk6IE1p Y2hhZWwgTGFtYmVydCA8bWxhbWJlcnRAcXVpY2luYy5jb20+CkNvLWF1dGhvcmVkLWJ5OiBTaWQg TWFubmluZyA8c2lkbmV5bUBxdWljaW5jLmNvbT4KQ28tYXV0aG9yZWQtYnk6IE1hdGhldXMgVGF2 YXJlcyBCZXJuYXJkaW5vIDxxdWljX21hdGhiZXJuQHF1aWNpbmMuY29tPgpTaWduZWQtb2ZmLWJ5 OiBCcmlhbiBDYWluIDxicmlhbi5jYWluQG9zcy5xdWFsY29tbS5jb20+Ci0tLQogdGFyZ2V0L2hl eGFnb24vY3B1LXBhcmFtLmggfCAgIDQgKwogdGFyZ2V0L2hleGFnb24vY3B1LmggICAgICAgfCAg MTMgKwogdGFyZ2V0L2hleGFnb24vaGV4X21tdS5oICAgfCAgMzAgKysrCiB0YXJnZXQvaGV4YWdv bi9pbnRlcm5hbC5oICB8ICAgMyArCiB0YXJnZXQvaGV4YWdvbi9jcHUuYyAgICAgICB8ICAyNyAr LQogdGFyZ2V0L2hleGFnb24vaGV4X21tdS5jICAgfCA1MjggKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogdGFyZ2V0L2hleGFnb24vbWFjaGluZS5jICAgfCAgMzAgKysrCiB0 YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuYyB8ICAgMiArLQogdGFyZ2V0L2hleGFnb24vbWVzb24u YnVpbGQgfCAgIDMgKy0KIDkgZmlsZXMgY2hhbmdlZCwgNjM3IGluc2VydGlvbnMoKyksIDMgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFyZ2V0L2hleGFnb24vaGV4X21tdS5oCiBj cmVhdGUgbW9kZSAxMDA2NDQgdGFyZ2V0L2hleGFnb24vaGV4X21tdS5jCgpkaWZmIC0tZ2l0IGEv dGFyZ2V0L2hleGFnb24vY3B1LXBhcmFtLmggYi90YXJnZXQvaGV4YWdvbi9jcHUtcGFyYW0uaApp bmRleCA0NWVlN2I0NjQwLi5mZGMwYTI2Yjk0IDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi9j cHUtcGFyYW0uaAorKysgYi90YXJnZXQvaGV4YWdvbi9jcHUtcGFyYW0uaApAQCAtMTgsNyArMTgs MTEgQEAKICNpZm5kZWYgSEVYQUdPTl9DUFVfUEFSQU1fSAogI2RlZmluZSBIRVhBR09OX0NQVV9Q QVJBTV9ICiAKKyNpZmRlZiBDT05GSUdfVVNFUl9PTkxZCiAjZGVmaW5lIFRBUkdFVF9QQUdFX0JJ VFMgMTYgICAgIC8qIDY0SyBwYWdlcyAqLworI2Vsc2UKKyNkZWZpbmUgVEFSR0VUX1BBR0VfQklU UyAxMiAgICAgLyogNEsgcGFnZXMgKi8KKyNlbmRpZgogCiAjZGVmaW5lIFRBUkdFVF9QSFlTX0FE RFJfU1BBQ0VfQklUUyAzNgogI2RlZmluZSBUQVJHRVRfVklSVF9BRERSX1NQQUNFX0JJVFMgMzIK ZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2NwdS5oIGIvdGFyZ2V0L2hleGFnb24vY3B1LmgK aW5kZXggYjBjY2FmMzZmOS4uMDRkZWJkYThjMiAxMDA2NDQKLS0tIGEvdGFyZ2V0L2hleGFnb24v Y3B1LmgKKysrIGIvdGFyZ2V0L2hleGFnb24vY3B1LmgKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNs dWRlICJtbXZlYy9tbXZlYy5oIgogI2luY2x1ZGUgImh3L3JlZ2lzdGVyZmllbGRzLmgiCiAKK3R5 cGVkZWYgc3RydWN0IENQVUhleGFnb25UTEJDb250ZXh0IENQVUhleGFnb25UTEJDb250ZXh0Owor CiAjZGVmaW5lIE5VTV9QUkVHUyA0CiAjZGVmaW5lIFRPVEFMX1BFUl9USFJFQURfUkVHUyA2NAog CkBAIC0xMjYsNiArMTI4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ1BVQXJjaFN0YXRlIHsKICAgICB0 YXJnZXRfdWxvbmcgdGxiX2xvY2tfY291bnQ7CiAgICAgdGFyZ2V0X3Vsb25nIGswX2xvY2tfY291 bnQ7CiAgICAgdGFyZ2V0X3Vsb25nIG5leHRfUEM7CisgICAgQ1BVSGV4YWdvblRMQkNvbnRleHQg KmhleF90bGI7CiAjZW5kaWYKICAgICB0YXJnZXRfdWxvbmcgbmV3X3ZhbHVlX3VzcjsKIApAQCAt MTcyLDEyICsxNzUsMTUgQEAgc3RydWN0IEFyY2hDUFUgewogICAgIGJvb2wgbGxkYl9jb21wYXQ7 CiAgICAgdGFyZ2V0X3Vsb25nIGxsZGJfc3RhY2tfYWRqdXN0OwogICAgIGJvb2wgc2hvcnRfY2ly Y3VpdDsKKyNpZm5kZWYgQ09ORklHX1VTRVJfT05MWQogICAgIHVpbnQzMl90IG51bV90bGJzOwor I2VuZGlmCiB9OwogCiAjaW5jbHVkZSAiY3B1X2JpdHMuaCIKIAogRklFTEQoVEJfRkxBR1MsIElT X1RJR0hUX0xPT1AsIDAsIDEpCitGSUVMRChUQl9GTEFHUywgTU1VX0lOREVYLCAxLCAzKQogCiBH X05PUkVUVVJOIHZvaWQgaGV4YWdvbl9yYWlzZV9leGNlcHRpb25fZXJyKENQVUhleGFnb25TdGF0 ZSAqZW52LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCBleGNlcHRpb24sCkBAIC0xODksNiArMTk1LDcgQEAgdWludDMyX3QgaGV4YWdvbl9zcmVn X3JlYWQoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQzMl90IHJlZyk7CiB2b2lkIGhleGFnb25f Z2RiX3NyZWdfd3JpdGUoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQzMl90IHJlZywgdWludDMy X3QgdmFsKTsKICNlbmRpZgogCisjaW5jbHVkZSAiZXhlYy9jcHUtYWxsLmgiCiBzdGF0aWMgaW5s aW5lIHZvaWQgY3B1X2dldF90Yl9jcHVfc3RhdGUoQ1BVSGV4YWdvblN0YXRlICplbnYsIHZhZGRy ICpwYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAq Y3NfYmFzZSwgdWludDMyX3QgKmZsYWdzKQogewpAQCAtMjAyLDYgKzIwOSwxMiBAQCBzdGF0aWMg aW5saW5lIHZvaWQgY3B1X2dldF90Yl9jcHVfc3RhdGUoQ1BVSGV4YWdvblN0YXRlICplbnYsIHZh ZGRyICpwYywKICAgICBpZiAoKnBjICYgUENBTElHTl9NQVNLKSB7CiAgICAgICAgIGhleGFnb25f cmFpc2VfZXhjZXB0aW9uX2VycihlbnYsIEhFWF9DQVVTRV9QQ19OT1RfQUxJR05FRCwgMCk7CiAg ICAgfQorI2lmbmRlZiBDT05GSUdfVVNFUl9PTkxZCisgICAgaGV4X2ZsYWdzID0gRklFTERfRFAz MihoZXhfZmxhZ3MsIFRCX0ZMQUdTLCBNTVVfSU5ERVgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBjcHVfbW11X2luZGV4KGVudl9jcHUoZW52KSwgZmFsc2UpKTsKKyNlbHNlCisgICAgaGV4 X2ZsYWdzID0gRklFTERfRFAzMihoZXhfZmxhZ3MsIFRCX0ZMQUdTLCBNTVVfSU5ERVgsIE1NVV9V U0VSX0lEWCk7CisjZW5kaWYKIH0KIAogdHlwZWRlZiBIZXhhZ29uQ1BVIEFyY2hDUFU7CmRpZmYg LS1naXQgYS90YXJnZXQvaGV4YWdvbi9oZXhfbW11LmggYi90YXJnZXQvaGV4YWdvbi9oZXhfbW11 LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZmFlOGFlZmNhYwotLS0g L2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2hleF9tbXUuaApAQCAtMCwwICsxLDMwIEBA CisvKgorICogQ29weXJpZ2h0KGMpIDIwMTktMjAyNSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRl ciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wLW9yLWxhdGVyCisgKi8KKworI2lmbmRlZiBIRVhBR09OX01NVV9ICisjZGVm aW5lIEhFWEFHT05fTU1VX0gKKworI2luY2x1ZGUgIm1heC5oIgorCitzdHJ1Y3QgQ1BVSGV4YWdv blRMQkNvbnRleHQgeworICAgIHVpbnQ2NF90IGVudHJpZXNbTUFYX1RMQl9FTlRSSUVTXTsKK307 CisKK2V4dGVybiB2b2lkIGhleF90bGJ3KENQVUhleGFnb25TdGF0ZSAqZW52LCB1aW50MzJfdCBp bmRleCwgdWludDY0X3QgdmFsdWUpOworZXh0ZXJuIHVpbnQzMl90IGhleF90bGJfbG9va3VwKENQ VUhleGFnb25TdGF0ZSAqZW52LCB1aW50MzJfdCBzc3IsIHVpbnQzMl90IFZBKTsKK2V4dGVybiB2 b2lkIGhleF9tbXVfcmVhbGl6ZShDUFVIZXhhZ29uU3RhdGUgKmVudik7CitleHRlcm4gdm9pZCBo ZXhfbW11X29uKENQVUhleGFnb25TdGF0ZSAqZW52KTsKK2V4dGVybiB2b2lkIGhleF9tbXVfb2Zm KENQVUhleGFnb25TdGF0ZSAqZW52KTsKK2V4dGVybiB2b2lkIGhleF9tbXVfbW9kZV9jaGFuZ2Uo Q1BVSGV4YWdvblN0YXRlICplbnYpOworZXh0ZXJuIGJvb2wgaGV4X3RsYl9maW5kX21hdGNoKENQ VUhleGFnb25TdGF0ZSAqZW52LCB0YXJnZXRfdWxvbmcgVkEsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTU1VQWNjZXNzVHlwZSBhY2Nlc3NfdHlwZSwgaHdhZGRyICpQQSwgaW50ICpw cm90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqc2l6ZSwgaW50MzJfdCAq ZXhjcCwgaW50IG1tdV9pZHgpOworZXh0ZXJuIGludCBoZXhfdGxiX2NoZWNrX292ZXJsYXAoQ1BV SGV4YWdvblN0YXRlICplbnYsIHVpbnQ2NF90IGVudHJ5LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDY0X3QgaW5kZXgpOworZXh0ZXJuIHZvaWQgaGV4X3RsYl9sb2NrKENQ VUhleGFnb25TdGF0ZSAqZW52KTsKK2V4dGVybiB2b2lkIGhleF90bGJfdW5sb2NrKENQVUhleGFn b25TdGF0ZSAqZW52KTsKK3ZvaWQgZHVtcF9tbXUoQ1BVSGV4YWdvblN0YXRlICplbnYpOworI2Vu ZGlmCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9pbnRlcm5hbC5oIGIvdGFyZ2V0L2hleGFn b24vaW50ZXJuYWwuaAppbmRleCBjMjRjMzYwOTIxLi4xMjBjZmRlN2I5IDEwMDY0NAotLS0gYS90 YXJnZXQvaGV4YWdvbi9pbnRlcm5hbC5oCisrKyBiL3RhcmdldC9oZXhhZ29uL2ludGVybmFsLmgK QEAgLTQwLDYgKzQwLDkgQEAgdm9pZCBHX05PUkVUVVJOIGRvX3JhaXNlX2V4Y2VwdGlvbihDUFVI ZXhhZ29uU3RhdGUgKmVudiwKICAgICAgICAgdGFyZ2V0X3Vsb25nIFBDLAogICAgICAgICB1aW50 cHRyX3QgcmV0YWRkcik7CiAKKyNkZWZpbmUgaGV4YWdvbl9jcHVfbW11X2VuYWJsZWQoZW52KSBc CisgICAgR0VUX1NZU0NGR19GSUVMRChTWVNDRkdfTU1VRU4sIGFyY2hfZ2V0X3N5c3RlbV9yZWco ZW52LCBIRVhfU1JFR19TWVNDRkcpKQorCiAjaWZuZGVmIENPTkZJR19VU0VSX09OTFkKIGV4dGVy biBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV9oZXhhZ29uX2NwdTsKICNlbmRpZgpk aWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vY3B1LmMgYi90YXJnZXQvaGV4YWdvbi9jcHUuYwpp bmRleCAzNGMzOWNlY2Q5Li43ZmY2NzgxOTVkIDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi9j cHUuYworKysgYi90YXJnZXQvaGV4YWdvbi9jcHUuYwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1 ZGUgImV4ZWMvZ2Ric3R1Yi5oIgogI2luY2x1ZGUgImNwdV9oZWxwZXIuaCIKICNpbmNsdWRlICJt YXguaCIKKyNpbmNsdWRlICJoZXhfbW11LmgiCiAKICNpZm5kZWYgQ09ORklHX1VTRVJfT05MWQog I2luY2x1ZGUgInN5c19tYWNyb3MuaCIKQEAgLTI4Myw2ICsyODQsMTggQEAgc3RhdGljIHZvaWQg aGV4YWdvbl9yZXN0b3JlX3N0YXRlX3RvX29wYyhDUFVTdGF0ZSAqY3MsCiAgICAgY3B1X2Vudihj cyktPmdwcltIRVhfUkVHX1BDXSA9IGRhdGFbMF07CiB9CiAKKworI2lmbmRlZiBDT05GSUdfVVNF Ul9PTkxZCitzdGF0aWMgdm9pZCBtbXVfcmVzZXQoQ1BVSGV4YWdvblN0YXRlICplbnYpCit7Cisg ICAgQ1BVU3RhdGUgKmNzID0gZW52X2NwdShlbnYpOworICAgIGlmIChjcy0+Y3B1X2luZGV4ID09 IDApIHsKKyAgICAgICAgbWVtc2V0KGVudi0+aGV4X3RsYiwgMCwgc2l6ZW9mKCplbnYtPmhleF90 bGIpKTsKKyAgICB9Cit9CisjZW5kaWYKKworCiBzdGF0aWMgdm9pZCBoZXhhZ29uX2NwdV9yZXNl dF9ob2xkKE9iamVjdCAqb2JqLCBSZXNldFR5cGUgdHlwZSkKIHsKICAgICBDUFVTdGF0ZSAqY3Mg PSBDUFUob2JqKTsKQEAgLTMxMCw2ICszMjMsNyBAQCBzdGF0aWMgdm9pZCBoZXhhZ29uX2NwdV9y ZXNldF9ob2xkKE9iamVjdCAqb2JqLCBSZXNldFR5cGUgdHlwZSkKICAgICBpZiAoY3MtPmNwdV9p bmRleCA9PSAwKSB7CiAgICAgICAgIGFyY2hfc2V0X3N5c3RlbV9yZWcoZW52LCBIRVhfU1JFR19N T0RFQ1RMLCAweDEpOwogICAgIH0KKyAgICBtbXVfcmVzZXQoZW52KTsKICAgICBhcmNoX3NldF9z eXN0ZW1fcmVnKGVudiwgSEVYX1NSRUdfSFRJRCwgY3MtPmNwdV9pbmRleCk7CiAgICAgbWVtc2V0 KGVudi0+dF9zcmVnLCAwLCBzaXplb2YodGFyZ2V0X3Vsb25nKSAqIE5VTV9TUkVHUyk7CiAgICAg bWVtc2V0KGVudi0+Z3JlZywgMCwgc2l6ZW9mKHRhcmdldF91bG9uZykgKiBOVU1fR1JFR1MpOwpA QCAtMzQxLDYgKzM1NSwxNCBAQCBzdGF0aWMgdm9pZCBoZXhhZ29uX2NwdV9yZWFsaXplKERldmlj ZVN0YXRlICpkZXYsIEVycm9yICoqZXJycCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lm bmRlZiBDT05GSUdfVVNFUl9PTkxZCisgICAgSGV4YWdvbkNQVSAqY3B1ID0gSEVYQUdPTl9DUFUo Y3MpOworICAgIGlmIChjcHUtPm51bV90bGJzID4gTUFYX1RMQl9FTlRSSUVTKSB7CisgICAgICAg IGVycm9yX3NldGcoZXJycCwgIk51bWJlciBvZiBUTEJzIHNlbGVjdGVkIGlzIGludmFsaWQiKTsK KyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgZ2RiX3JlZ2lzdGVyX2NvcHJv Y2Vzc29yKGNzLCBoZXhhZ29uX2h2eF9nZGJfcmVhZF9yZWdpc3RlciwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaGV4YWdvbl9odnhfZ2RiX3dyaXRlX3JlZ2lzdGVyLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnZGJfZmluZF9zdGF0aWNfZmVhdHVyZSgiaGV4YWdvbi1odngu eG1sIiksIDApOwpAQCAtMzUyLDkgKzM3NCwxMiBAQCBzdGF0aWMgdm9pZCBoZXhhZ29uX2NwdV9y ZWFsaXplKERldmljZVN0YXRlICpkZXYsIEVycm9yICoqZXJycCkKICNlbmRpZgogCiAgICAgcWVt dV9pbml0X3ZjcHUoY3MpOworI2lmbmRlZiBDT05GSUdfVVNFUl9PTkxZCisgICAgQ1BVSGV4YWdv blN0YXRlICplbnYgPSBjcHVfZW52KGNzKTsKKyAgICBoZXhfbW11X3JlYWxpemUoZW52KTsKKyNl bmRpZgogICAgIGNwdV9yZXNldChjcyk7CiAjaWZuZGVmIENPTkZJR19VU0VSX09OTFkKLSAgICBD UFVIZXhhZ29uU3RhdGUgKmVudiA9IGNwdV9lbnYoY3MpOwogICAgIGlmIChjcy0+Y3B1X2luZGV4 ID09IDApIHsKICAgICAgICAgZW52LT5nX3NyZWcgPSBnX25ldzAodGFyZ2V0X3Vsb25nLCBOVU1f U1JFR1MpOwogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9oZXhfbW11 LmMgYi90YXJnZXQvaGV4YWdvbi9oZXhfbW11LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uNTRjNGJhMmRiZgotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29u L2hleF9tbXUuYwpAQCAtMCwwICsxLDUyOCBAQAorLyoKKyAqIENvcHlyaWdodChjKSAyMDE5LTIw MjUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K KyAqCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorICovCisK KyNpbmNsdWRlICJxZW11L29zZGVwLmgiCisjaW5jbHVkZSAicWVtdS9tYWluLWxvb3AuaCIKKyNp bmNsdWRlICJxZW11L3FlbXUtcHJpbnQuaCIKKyNpbmNsdWRlICJjcHUuaCIKKyNpbmNsdWRlICJz eXN0ZW0vY3B1cy5oIgorI2luY2x1ZGUgImludGVybmFsLmgiCisjaW5jbHVkZSAiZXhlYy9leGVj LWFsbC5oIgorI2luY2x1ZGUgImhleF9tbXUuaCIKKyNpbmNsdWRlICJtYWNyb3MuaCIKKyNpbmNs dWRlICJzeXNfbWFjcm9zLmgiCisjaW5jbHVkZSAicmVnX2ZpZWxkcy5oIgorCisjZGVmaW5lIEdF VF9UTEJfRklFTEQoRU5UUlksIEZJRUxEKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgKCh1aW50NjRfdClmRVhUUkFDVFVfQklUUyhFTlRSWSwgcmVnX2ZpZWxkX2luZm9bRklF TERdLndpZHRoLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfZmllbGRfaW5m b1tGSUVMRF0ub2Zmc2V0KSkKKworLyogUFBEIChwaHlzaWNhbCBwYWdlIGRlc2NyaXB0b3IpICov CitzdGF0aWMgaW5saW5lIHVpbnQ2NF90IEdFVF9QUEQodWludDY0X3QgZW50cnkpCit7CisgICAg cmV0dXJuIEdFVF9UTEJfRklFTEQoZW50cnksIFBURV9QUEQpIHwKKyAgICAgICAgKEdFVF9UTEJf RklFTEQoZW50cnksIFBURV9QQTM1KSA8PCByZWdfZmllbGRfaW5mb1tQVEVfUFBEXS53aWR0aCk7 Cit9CisKKyNkZWZpbmUgTk9fQVNJRCAgICAgICgxIDw8IDgpCisKK3R5cGVkZWYgZW51bSB7Cisg ICAgUEdTSVpFXzRLLAorICAgIFBHU0laRV8xNkssCisgICAgUEdTSVpFXzY0SywKKyAgICBQR1NJ WkVfMjU2SywKKyAgICBQR1NJWkVfMU0sCisgICAgUEdTSVpFXzRNLAorICAgIFBHU0laRV8xNk0s CisgICAgUEdTSVpFXzY0TSwKKyAgICBQR1NJWkVfMjU2TSwKKyAgICBQR1NJWkVfMUcsCisgICAg TlVNX1BHU0laRV9UWVBFUworfSB0bGJfcGdzaXplX3Q7CisKK3N0YXRpYyBjb25zdCBjaGFyICpw Z3NpemVfc3RyW05VTV9QR1NJWkVfVFlQRVNdID0geworICAgICI0SyIsCisgICAgIjE2SyIsCisg ICAgIjY0SyIsCisgICAgIjI1NksiLAorICAgICIxTSIsCisgICAgIjRNIiwKKyAgICAiMTZNIiwK KyAgICAiNjRNIiwKKyAgICAiMjU2TSIsCisgICAgIjFHIiwKK307CisKKyNkZWZpbmUgSU5WQUxJ RF9NQVNLIDB4ZmZmZmZmZmZMTAorCitzdGF0aWMgY29uc3QgdWludDY0X3QgZW5jbWFza18yX21h c2tbXSA9IHsKKyAgICAweDBmZmZMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA0aywg ICAwMDAwICovCisgICAgMHgzZmZmTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMTZr LCAgMDAwMSAqLworICAgIDB4ZmZmZkxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDY0 aywgIDAwMTAgKi8KKyAgICAweDNmZmZmTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAy NTZrLCAwMDExICovCisgICAgMHhmZmZmZkxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyog MW0sICAgMDEwMCAqLworICAgIDB4M2ZmZmZmTEwsICAgICAgICAgICAgICAgICAgICAgICAgIC8q IDRtLCAgIDAxMDEgKi8KKyAgICAweGZmZmZmZkxMLCAgICAgICAgICAgICAgICAgICAgICAgICAv KiAxNm0sICAwMTEwICovCisgICAgMHgzZmZmZmZmTEwsICAgICAgICAgICAgICAgICAgICAgICAg LyogNjRtLCAgMDExMSAqLworICAgIDB4ZmZmZmZmZkxMLCAgICAgICAgICAgICAgICAgICAgICAg IC8qIDI1Nm0sIDEwMDAgKi8KKyAgICAweDNmZmZmZmZmTEwsICAgICAgICAgICAgICAgICAgICAg ICAvKiAxZywgICAxMDAxICovCisgICAgSU5WQUxJRF9NQVNLLCAgICAgICAgICAgICAgICAgICAg ICAvKiBSU1ZELCAwMTExICovCit9OworCisvKgorICogQHJldHVybiB0aGUgcGFnZSBzaXplIHR5 cGUgZnJvbSBAYSBlbnRyeS4KKyAqLworc3RhdGljIGlubGluZSB0bGJfcGdzaXplX3QgaGV4X3Rs Yl9wZ3NpemVfdHlwZSh1aW50NjRfdCBlbnRyeSkKK3sKKyAgICBpZiAoZW50cnkgPT0gMCkgewor ICAgICAgICBxZW11X2xvZ19tYXNrKENQVV9MT0dfTU1VLCAiJXM6IFN1cHBsaWVkIFRMQiBlbnRy eSB3YXMgMCFcbiIsIF9fZnVuY19fKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHRs Yl9wZ3NpemVfdCBzaXplID0gY3R6NjQoZW50cnkpOworICAgIGdfYXNzZXJ0KHNpemUgPCBOVU1f UEdTSVpFX1RZUEVTKTsKKyAgICByZXR1cm4gc2l6ZTsKK30KKworLyoKKyAqIEByZXR1cm4gdGhl IHBhZ2Ugc2l6ZSBvZiBAYSBlbnRyeSwgaW4gYnl0ZXMuCisgKi8KK3N0YXRpYyBpbmxpbmUgdWlu dDY0X3QgaGV4X3RsYl9wYWdlX3NpemVfYnl0ZXModWludDY0X3QgZW50cnkpCit7CisgICAgcmV0 dXJuIDF1bGwgPDwgKFRBUkdFVF9QQUdFX0JJVFMgKyAyICogaGV4X3RsYl9wZ3NpemVfdHlwZShl bnRyeSkpOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQ2NF90IGhleF90bGJfcGh5c19wYWdlX251 bSh1aW50NjRfdCBlbnRyeSkKK3sKKyAgICB1aW50MzJfdCBwcGQgPSBHRVRfUFBEKGVudHJ5KTsK KyAgICByZXR1cm4gcHBkID4+IDE7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgaGV4X3Rs Yl9waHlzX2FkZHIodWludDY0X3QgZW50cnkpCit7CisgICAgdWludDY0X3QgcGFnZW1hc2sgPSBl bmNtYXNrXzJfbWFza1toZXhfdGxiX3Bnc2l6ZV90eXBlKGVudHJ5KV07CisgICAgdWludDY0X3Qg cGFnZW51bSA9IGhleF90bGJfcGh5c19wYWdlX251bShlbnRyeSk7CisgICAgdWludDY0X3QgUEEg PSAocGFnZW51bSA8PCBUQVJHRVRfUEFHRV9CSVRTKSAmICh+cGFnZW1hc2spOworICAgIHJldHVy biBQQTsKK30KKworc3RhdGljIGlubGluZSB1aW50NjRfdCBoZXhfdGxiX3ZpcnRfYWRkcih1aW50 NjRfdCBlbnRyeSkKK3sKKyAgICByZXR1cm4gKHVpbnQ2NF90KUdFVF9UTEJfRklFTEQoZW50cnks IFBURV9WUE4pIDw8IFRBUkdFVF9QQUdFX0JJVFM7Cit9CisKK3N0YXRpYyBib29sIGhleF9kdW1w X21tdV9lbnRyeShGSUxFICpmLCB1aW50NjRfdCBlbnRyeSkKK3sKKyAgICBpZiAoR0VUX1RMQl9G SUVMRChlbnRyeSwgUFRFX1YpKSB7CisgICAgICAgIGZwcmludGYoZiwgIjB4JTAxNiIgUFJJeDY0 ICI6ICIsIGVudHJ5KTsKKyAgICAgICAgdWludDY0X3QgUEEgPSBoZXhfdGxiX3BoeXNfYWRkcihl bnRyeSk7CisgICAgICAgIHVpbnQ2NF90IFZBID0gaGV4X3RsYl92aXJ0X2FkZHIoZW50cnkpOwor ICAgICAgICBmcHJpbnRmKGYsICJWOiUiIFBSSWQ2NCAiIEc6JSIgUFJJZDY0ICIgQTE6JSIgUFJJ ZDY0ICIgQTA6JSIgUFJJZDY0LAorICAgICAgICAgICAgICAgIEdFVF9UTEJfRklFTEQoZW50cnks IFBURV9WKSwgR0VUX1RMQl9GSUVMRChlbnRyeSwgUFRFX0cpLAorICAgICAgICAgICAgICAgIEdF VF9UTEJfRklFTEQoZW50cnksIFBURV9BVFIxKSwgR0VUX1RMQl9GSUVMRChlbnRyeSwgUFRFX0FU UjApKTsKKyAgICAgICAgZnByaW50ZihmLCAiIEFTSUQ6MHglMDIiIFBSSXg2NCAiIFZBOjB4JTA4 IiBQUkl4NjQsCisgICAgICAgICAgICAgICAgR0VUX1RMQl9GSUVMRChlbnRyeSwgUFRFX0FTSUQp LCBWQSk7CisgICAgICAgIGZwcmludGYoZiwKKyAgICAgICAgICAgICAgICAiIFg6JSIgUFJJZDY0 ICIgVzolIiBQUklkNjQgIiBSOiUiIFBSSWQ2NCAiIFU6JSIgUFJJZDY0CisgICAgICAgICAgICAg ICAgIiBDOiUiIFBSSWQ2NCwKKyAgICAgICAgICAgICAgICBHRVRfVExCX0ZJRUxEKGVudHJ5LCBQ VEVfWCksIEdFVF9UTEJfRklFTEQoZW50cnksIFBURV9XKSwKKyAgICAgICAgICAgICAgICBHRVRf VExCX0ZJRUxEKGVudHJ5LCBQVEVfUiksIEdFVF9UTEJfRklFTEQoZW50cnksIFBURV9VKSwKKyAg ICAgICAgICAgICAgICBHRVRfVExCX0ZJRUxEKGVudHJ5LCBQVEVfQykpOworICAgICAgICBmcHJp bnRmKGYsICIgUEE6MHglMDkiIFBSSXg2NCAiIFNaOiVzICgweCUiIFBSSXg2NCAiKSIsIFBBLAor ICAgICAgICAgICAgICAgIHBnc2l6ZV9zdHJbaGV4X3RsYl9wZ3NpemVfdHlwZShlbnRyeSldLAor ICAgICAgICAgICAgICAgIGhleF90bGJfcGFnZV9zaXplX2J5dGVzKGVudHJ5KSk7CisgICAgICAg IGZwcmludGYoZiwgIlxuIik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8q IE5vdCB2YWxpZCAqLworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBkdW1wX21tdShDUFVI ZXhhZ29uU3RhdGUgKmVudikKK3sKKyAgICBpbnQgaTsKKworICAgIEhleGFnb25DUFUgKmNwdSA9 IGVudl9hcmNoY3B1KGVudik7CisgICAgZm9yIChpID0gMDsgaSA8IGNwdS0+bnVtX3RsYnM7IGkr KykgeworICAgICAgICB1aW50NjRfdCBlbnRyeSA9IGVudi0+aGV4X3RsYi0+ZW50cmllc1tpXTsK KyAgICAgICAgaWYgKEdFVF9UTEJfRklFTEQoZW50cnksIFBURV9WKSkgeworICAgICAgICAgICAg cWVtdV9wcmludGYoIjB4JTAxNiIgUFJJeDY0ICI6ICIsIGVudHJ5KTsKKyAgICAgICAgICAgIHVp bnQ2NF90IFBBID0gaGV4X3RsYl9waHlzX2FkZHIoZW50cnkpOworICAgICAgICAgICAgdWludDY0 X3QgVkEgPSBoZXhfdGxiX3ZpcnRfYWRkcihlbnRyeSk7CisgICAgICAgICAgICBxZW11X3ByaW50 ZigKKyAgICAgICAgICAgICAgICAiVjolIiBQUklkNjQgIiBHOiUiIFBSSWQ2NCAiIEExOiUiIFBS SWQ2NCAiIEEwOiUiIFBSSWQ2NCwKKyAgICAgICAgICAgICAgICBHRVRfVExCX0ZJRUxEKGVudHJ5 LCBQVEVfViksIEdFVF9UTEJfRklFTEQoZW50cnksIFBURV9HKSwKKyAgICAgICAgICAgICAgICBH RVRfVExCX0ZJRUxEKGVudHJ5LCBQVEVfQVRSMSksIEdFVF9UTEJfRklFTEQoZW50cnksIFBURV9B VFIwKSk7CisgICAgICAgICAgICBxZW11X3ByaW50ZigiIEFTSUQ6MHglMDIiIFBSSXg2NCAiIFZB OjB4JTA4IiBQUkl4NjQsCisgICAgICAgICAgICAgICAgICAgICAgICBHRVRfVExCX0ZJRUxEKGVu dHJ5LCBQVEVfQVNJRCksIFZBKTsKKyAgICAgICAgICAgIHFlbXVfcHJpbnRmKAorICAgICAgICAg ICAgICAgICIgWDolIiBQUklkNjQgIiBXOiUiIFBSSWQ2NCAiIFI6JSIgUFJJZDY0ICIgVTolIiBQ UklkNjQKKyAgICAgICAgICAgICAgICAiIEM6JSIgUFJJZDY0LAorICAgICAgICAgICAgICAgIEdF VF9UTEJfRklFTEQoZW50cnksIFBURV9YKSwgR0VUX1RMQl9GSUVMRChlbnRyeSwgUFRFX1cpLAor ICAgICAgICAgICAgICAgIEdFVF9UTEJfRklFTEQoZW50cnksIFBURV9SKSwgR0VUX1RMQl9GSUVM RChlbnRyeSwgUFRFX1UpLAorICAgICAgICAgICAgICAgIEdFVF9UTEJfRklFTEQoZW50cnksIFBU RV9DKSk7CisgICAgICAgICAgICBxZW11X3ByaW50ZigiIFBBOjB4JTA5IiBQUkl4NjQgIiBTWjol cyAoMHglIiBQUkl4NjQgIikiLCBQQSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBnc2l6ZV9z dHJbaGV4X3RsYl9wZ3NpemVfdHlwZShlbnRyeSldLAorICAgICAgICAgICAgICAgICAgICAgICAg aGV4X3RsYl9wYWdlX3NpemVfYnl0ZXMoZW50cnkpKTsKKyAgICAgICAgICAgIHFlbXVfcHJpbnRm KCJcbiIpOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgaGV4X2xv Z190bGJ3KHVpbnQzMl90IGluZGV4LCB1aW50NjRfdCBlbnRyeSkKK3sKKyAgICBpZiAocWVtdV9s b2dsZXZlbF9tYXNrKENQVV9MT0dfTU1VKSkgeworICAgICAgICBpZiAocWVtdV9sb2dfZW5hYmxl ZCgpKSB7CisgICAgICAgICAgICBGSUxFICpsb2dmaWxlID0gcWVtdV9sb2dfdHJ5bG9jaygpOwor ICAgICAgICAgICAgaWYgKGxvZ2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKGxvZ2Zp bGUsICJ0bGJ3WyUwM2RdOiAiLCBpbmRleCk7CisgICAgICAgICAgICAgICAgaWYgKCFoZXhfZHVt cF9tbXVfZW50cnkobG9nZmlsZSwgZW50cnkpKSB7CisgICAgICAgICAgICAgICAgICAgIGZwcmlu dGYobG9nZmlsZSwgImludmFsaWRcbiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICBxZW11X2xvZ191bmxvY2sobG9nZmlsZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K KyAgICB9Cit9CisKK3ZvaWQgaGV4X3RsYncoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQzMl90 IGluZGV4LCB1aW50NjRfdCB2YWx1ZSkKK3sKKyAgICB1aW50MzJfdCBteWlkeCA9IGZUTEJfTk9O UE9XMldSQVAoZlRMQl9JRFhNQVNLKGluZGV4KSk7CisgICAgYm9vbCBvbGRfZW50cnlfdmFsaWQg PSBHRVRfVExCX0ZJRUxEKGVudi0+aGV4X3RsYi0+ZW50cmllc1tteWlkeF0sIFBURV9WKTsKKyAg ICBpZiAob2xkX2VudHJ5X3ZhbGlkICYmIGhleGFnb25fY3B1X21tdV9lbmFibGVkKGVudikpIHsK KyAgICAgICAgQ1BVU3RhdGUgKmNzID0gZW52X2NwdShlbnYpOworCisgICAgICAgIHRsYl9mbHVz aChjcyk7CisgICAgfQorICAgIGVudi0+aGV4X3RsYi0+ZW50cmllc1tteWlkeF0gPSAodmFsdWUp OworICAgIGhleF9sb2dfdGxidyhteWlkeCwgdmFsdWUpOworfQorCit2b2lkIGhleF9tbXVfcmVh bGl6ZShDUFVIZXhhZ29uU3RhdGUgKmVudikKK3sKKyAgICBDUFVTdGF0ZSAqY3MgPSBlbnZfY3B1 KGVudik7CisgICAgaWYgKGNzLT5jcHVfaW5kZXggPT0gMCkgeworICAgICAgICBlbnYtPmhleF90 bGIgPSBnX21hbGxvYzAoc2l6ZW9mKENQVUhleGFnb25UTEJDb250ZXh0KSk7CisgICAgfSBlbHNl IHsKKyAgICAgICAgQ1BVU3RhdGUgKmNwdTBfcyA9IE5VTEw7CisgICAgICAgIENQVUhleGFnb25T dGF0ZSAqZW52MCA9IE5VTEw7CisgICAgICAgIENQVV9GT1JFQUNIKGNwdTBfcykgeworICAgICAg ICAgICAgYXNzZXJ0KGNwdTBfcy0+Y3B1X2luZGV4ID09IDApOworICAgICAgICAgICAgZW52MCA9 ICYoSEVYQUdPTl9DUFUoY3B1MF9zKS0+ZW52KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICB9CisgICAgICAgIGVudi0+aGV4X3RsYiA9IGVudjAtPmhleF90bGI7CisgICAgfQorfQorCit2 b2lkIGhleF9tbXVfb24oQ1BVSGV4YWdvblN0YXRlICplbnYpCit7CisgICAgQ1BVU3RhdGUgKmNz ID0gZW52X2NwdShlbnYpOworICAgIHFlbXVfbG9nX21hc2soQ1BVX0xPR19NTVUsICJIZXhhZ29u IE1NVSB0dXJuZWQgb24hXG4iKTsKKyAgICB0bGJfZmx1c2goY3MpOworfQorCit2b2lkIGhleF9t bXVfb2ZmKENQVUhleGFnb25TdGF0ZSAqZW52KQoreworICAgIENQVVN0YXRlICpjcyA9IGVudl9j cHUoZW52KTsKKyAgICBxZW11X2xvZ19tYXNrKENQVV9MT0dfTU1VLCAiSGV4YWdvbiBNTVUgdHVy bmVkIG9mZiFcbiIpOworICAgIHRsYl9mbHVzaChjcyk7Cit9CisKK3ZvaWQgaGV4X21tdV9tb2Rl X2NoYW5nZShDUFVIZXhhZ29uU3RhdGUgKmVudikKK3sKKyAgICBxZW11X2xvZ19tYXNrKENQVV9M T0dfTU1VLCAiSGV4YWdvbiBtb2RlIGNoYW5nZSFcbiIpOworICAgIENQVVN0YXRlICpjcyA9IGVu dl9jcHUoZW52KTsKKyAgICB0bGJfZmx1c2goY3MpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg aGV4X3RsYl9lbnRyeV9tYXRjaF9ub3Blcm0odWludDY0X3QgZW50cnksIHVpbnQzMl90IGFzaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qg VkEpCit7CisgICAgaWYgKEdFVF9UTEJfRklFTEQoZW50cnksIFBURV9WKSkgeworICAgICAgICBp ZiAoR0VUX1RMQl9GSUVMRChlbnRyeSwgUFRFX0cpKSB7CisgICAgICAgICAgICAvKiBHbG9iYWwg ZW50cnkgLSBpbmdub3JlIEFTSUQgKi8KKyAgICAgICAgfSBlbHNlIGlmIChhc2lkICE9IE5PX0FT SUQpIHsKKyAgICAgICAgICAgIHVpbnQzMl90IHRsYl9hc2lkID0gR0VUX1RMQl9GSUVMRChlbnRy eSwgUFRFX0FTSUQpOworICAgICAgICAgICAgaWYgKHRsYl9hc2lkICE9IGFzaWQpIHsKKyAgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg ICAgICB1aW50NjRfdCBwYWdlX3NpemUgPSBoZXhfdGxiX3BhZ2Vfc2l6ZV9ieXRlcyhlbnRyeSk7 CisgICAgICAgIHVpbnQ2NF90IHBhZ2Vfc3RhcnQgPQorICAgICAgICAgICAgUk9VTkRfRE9XTiho ZXhfdGxiX3ZpcnRfYWRkcihlbnRyeSksIHBhZ2Vfc2l6ZSk7CisgICAgICAgIGlmIChwYWdlX3N0 YXJ0IDw9IFZBICYmIFZBIDwgcGFnZV9zdGFydCArIHBhZ2Vfc2l6ZSkgeworICAgICAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitz dGF0aWMgaW5saW5lIHZvaWQgaGV4X3RsYl9lbnRyeV9nZXRfcGVybShDUFVIZXhhZ29uU3RhdGUg KmVudiwgdWludDY0X3QgZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBNTVVBY2Nlc3NUeXBlIGFjY2Vzc190eXBlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IG1tdV9pZHgsIGludCAqcHJvdCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKmV4Y3ApCit7CisgICAgZ19h c3NlcnRfbm90X3JlYWNoZWQoKTsKK30KKworc3RhdGljIGlubGluZSBib29sIGhleF90bGJfZW50 cnlfbWF0Y2goQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQ2NF90IGVudHJ5LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBhc2lkLCB0YXJnZXRfdWxvbmcg VkEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNTVVBY2Nlc3NUeXBl IGFjY2Vzc190eXBlLCBod2FkZHIgKlBBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50ICpwcm90LCBpbnQgKnNpemUsIGludDMyX3QgKmV4Y3AsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbW11X2lkeCkKK3sKKyAgICBpZiAoaGV4 X3RsYl9lbnRyeV9tYXRjaF9ub3Blcm0oZW50cnksIGFzaWQsIFZBKSkgeworICAgICAgICBoZXhf dGxiX2VudHJ5X2dldF9wZXJtKGVudiwgZW50cnksIGFjY2Vzc190eXBlLCBtbXVfaWR4LCBwcm90 LCBleGNwKTsKKyAgICAgICAgKlBBID0gaGV4X3RsYl9waHlzX2FkZHIoZW50cnkpOworICAgICAg ICAqc2l6ZSA9IGhleF90bGJfcGFnZV9zaXplX2J5dGVzKGVudHJ5KTsKKyAgICAgICAgcmV0dXJu IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBoZXhfdGxiX2ZpbmRf bWF0Y2goQ1BVSGV4YWdvblN0YXRlICplbnYsIHRhcmdldF91bG9uZyBWQSwKKyAgICAgICAgICAg ICAgICAgICAgICAgIE1NVUFjY2Vzc1R5cGUgYWNjZXNzX3R5cGUsIGh3YWRkciAqUEEsIGludCAq cHJvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCAqc2l6ZSwgaW50MzJfdCAqZXhjcCwg aW50IG1tdV9pZHgpCit7CisgICAgKlBBID0gMDsKKyAgICAqcHJvdCA9IDA7CisgICAgKnNpemUg PSAwOworICAgICpleGNwID0gMDsKKyAgICB1aW50MzJfdCBzc3IgPSBhcmNoX2dldF9zeXN0ZW1f cmVnKGVudiwgSEVYX1NSRUdfU1NSKTsKKyAgICB1aW50OF90IGFzaWQgPSBHRVRfU1NSX0ZJRUxE KFNTUl9BU0lELCBzc3IpOworICAgIGludCBpOworICAgIEhleGFnb25DUFUgKmNwdSA9IGVudl9h cmNoY3B1KGVudik7CisgICAgZm9yIChpID0gMDsgaSA8IGNwdS0+bnVtX3RsYnM7IGkrKykgewor ICAgICAgICB1aW50NjRfdCBlbnRyeSA9IGVudi0+aGV4X3RsYi0+ZW50cmllc1tpXTsKKyAgICAg ICAgaWYgKGhleF90bGJfZW50cnlfbWF0Y2goZW52LCBlbnRyeSwgYXNpZCwgVkEsIGFjY2Vzc190 eXBlLCBQQSwgcHJvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSwgZXhj cCwgbW11X2lkeCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg fQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHVpbnQzMl90IGhleF90bGJfbG9va3Vw X2J5X2FzaWQoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQzMl90IGFzaWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBWQSkKK3sKKyAgICBnX2Fzc2Vy dF9ub3RfcmVhY2hlZCgpOworfQorCisvKiBDYWxsZWQgZnJvbSB0bGJwIGluc3RydWN0aW9uICov Cit1aW50MzJfdCBoZXhfdGxiX2xvb2t1cChDUFVIZXhhZ29uU3RhdGUgKmVudiwgdWludDMyX3Qg c3NyLCB1aW50MzJfdCBWQSkKK3sKKyAgICByZXR1cm4gaGV4X3RsYl9sb29rdXBfYnlfYXNpZChl bnYsIEdFVF9TU1JfRklFTEQoU1NSX0FTSUQsIHNzciksIFZBKTsKK30KKworc3RhdGljIGJvb2wg aGV4X3RsYl9pc19tYXRjaChDUFVIZXhhZ29uU3RhdGUgKmVudiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDY0X3QgZW50cnkxLCB1aW50NjRfdCBlbnRyeTIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2wgY29uc2lkZXJfZ2JpdCkKK3sKKyAgICBib29sIHZhbGlk MSA9IEdFVF9UTEJfRklFTEQoZW50cnkxLCBQVEVfVik7CisgICAgYm9vbCB2YWxpZDIgPSBHRVRf VExCX0ZJRUxEKGVudHJ5MiwgUFRFX1YpOworICAgIHVpbnQ2NF90IHNpemUxID0gaGV4X3RsYl9w YWdlX3NpemVfYnl0ZXMoZW50cnkxKTsKKyAgICB1aW50NjRfdCB2YWRkcjEgPSBST1VORF9ET1dO KGhleF90bGJfdmlydF9hZGRyKGVudHJ5MSksIHNpemUxKTsKKyAgICB1aW50NjRfdCBzaXplMiA9 IGhleF90bGJfcGFnZV9zaXplX2J5dGVzKGVudHJ5Mik7CisgICAgdWludDY0X3QgdmFkZHIyID0g Uk9VTkRfRE9XTihoZXhfdGxiX3ZpcnRfYWRkcihlbnRyeTIpLCBzaXplMik7CisgICAgaW50IGFz aWQxID0gR0VUX1RMQl9GSUVMRChlbnRyeTEsIFBURV9BU0lEKTsKKyAgICBpbnQgYXNpZDIgPSBH RVRfVExCX0ZJRUxEKGVudHJ5MiwgUFRFX0FTSUQpOworICAgIGJvb2wgZ2JpdDEgPSBHRVRfVExC X0ZJRUxEKGVudHJ5MSwgUFRFX0cpOworICAgIGJvb2wgZ2JpdDIgPSBHRVRfVExCX0ZJRUxEKGVu dHJ5MiwgUFRFX0cpOworCisgICAgaWYgKCF2YWxpZDEgfHwgIXZhbGlkMikgeworICAgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCgodmFkZHIxIDw9IHZhZGRyMikgJiYgKHZh ZGRyMiA8ICh2YWRkcjEgKyBzaXplMSkpKSB8fAorICAgICAgICAoKHZhZGRyMiA8PSB2YWRkcjEp ICYmICh2YWRkcjEgPCAodmFkZHIyICsgc2l6ZTIpKSkpIHsKKyAgICAgICAgaWYgKGFzaWQxID09 IGFzaWQyKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBp ZiAoKGNvbnNpZGVyX2diaXQgJiYgZ2JpdDEpIHx8IGdiaXQyKSB7CisgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8qCisg KiBSZXR1cm4gY29kZXM6CisgKiAwIG9yIHBvc2l0aXZlICAgICAgICAgICAgIGluZGV4IG9mIG1h dGNoCisgKiAtMSAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIG1hdGNoZXMKKyAqIC0y ICAgICAgICAgICAgICAgICAgICAgICAgbm8gbWF0Y2gKKyAqLworaW50IGhleF90bGJfY2hlY2tf b3ZlcmxhcChDUFVIZXhhZ29uU3RhdGUgKmVudiwgdWludDY0X3QgZW50cnksIHVpbnQ2NF90IGlu ZGV4KQoreworICAgIGludCBtYXRjaGVzID0gMDsKKyAgICBpbnQgbGFzdF9tYXRjaCA9IDA7Cisg ICAgaW50IGk7CisKKyAgICBIZXhhZ29uQ1BVICpjcHUgPSBlbnZfYXJjaGNwdShlbnYpOworICAg IGZvciAoaSA9IDA7IGkgPCBjcHUtPm51bV90bGJzOyBpKyspIHsKKyAgICAgICAgaWYgKGhleF90 bGJfaXNfbWF0Y2goZW52LCBlbnRyeSwgZW52LT5oZXhfdGxiLT5lbnRyaWVzW2ldLCBmYWxzZSkp IHsKKyAgICAgICAgICAgIG1hdGNoZXMrKzsKKyAgICAgICAgICAgIGxhc3RfbWF0Y2ggPSBpOwor ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1hdGNoZXMgPT0gMSkgeworICAgICAgICByZXR1 cm4gbGFzdF9tYXRjaDsKKyAgICB9CisgICAgaWYgKG1hdGNoZXMgPT0gMCkgeworICAgICAgICBy ZXR1cm4gLTI7CisgICAgfQorICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIGlubGluZSB2b2lk IHByaW50X3RocmVhZChjb25zdCBjaGFyICpzdHIsIENQVVN0YXRlICpjcykKK3sKKyAgICBnX2Fz c2VydChicWxfbG9ja2VkKCkpOworICAgIENQVUhleGFnb25TdGF0ZSAqdGhyZWFkID0gY3B1X2Vu dihjcyk7CisgICAgYm9vbCBpc19zdG9wcGVkID0gY3B1X2lzX3N0b3BwZWQoY3MpOworICAgIGlu dCBleGVfbW9kZSA9IGdldF9leGVfbW9kZSh0aHJlYWQpOworICAgIGhleF9sb2NrX3N0YXRlX3Qg bG9ja19zdGF0ZSA9IHRocmVhZC0+dGxiX2xvY2tfc3RhdGU7CisgICAgcWVtdV9sb2dfbWFzayhD UFVfTE9HX01NVSwKKyAgICAgICAgICAgIiVzOiB0aHJlYWRJZCA9ICVkOiAlcywgZXhlX21vZGUg PSAlcywgdGxiX2xvY2tfc3RhdGUgPSAlc1xuIiwKKyAgICAgICAgICAgc3RyLAorICAgICAgICAg ICB0aHJlYWQtPnRocmVhZElkLAorICAgICAgICAgICBpc19zdG9wcGVkID8gInN0b3BwZWQiIDog InJ1bm5pbmciLAorICAgICAgICAgICBleGVfbW9kZSA9PSBIRVhfRVhFX01PREVfT0ZGID8gIm9m ZiIgOgorICAgICAgICAgICBleGVfbW9kZSA9PSBIRVhfRVhFX01PREVfUlVOID8gInJ1biIgOgor ICAgICAgICAgICBleGVfbW9kZSA9PSBIRVhfRVhFX01PREVfV0FJVCA/ICJ3YWl0IiA6CisgICAg ICAgICAgIGV4ZV9tb2RlID09IEhFWF9FWEVfTU9ERV9ERUJVRyA/ICJkZWJ1ZyIgOgorICAgICAg ICAgICAidW5rbm93biIsCisgICAgICAgICAgIGxvY2tfc3RhdGUgPT0gSEVYX0xPQ0tfVU5MT0NL RUQgPyAidW5sb2NrZWQiIDoKKyAgICAgICAgICAgbG9ja19zdGF0ZSA9PSBIRVhfTE9DS19XQUlU SU5HID8gIndhaXRpbmciIDoKKyAgICAgICAgICAgbG9ja19zdGF0ZSA9PSBIRVhfTE9DS19PV05F UiA/ICJvd25lciIgOgorICAgICAgICAgICAidW5rbm93biIpOworfQorCitzdGF0aWMgaW5saW5l IHZvaWQgcHJpbnRfdGhyZWFkX3N0YXRlcyhjb25zdCBjaGFyICpzdHIpCit7CisgICAgQ1BVU3Rh dGUgKmNzOworICAgIENQVV9GT1JFQUNIKGNzKSB7CisgICAgICAgIHByaW50X3RocmVhZChzdHIs IGNzKTsKKyAgICB9Cit9CisKK3ZvaWQgaGV4X3RsYl9sb2NrKENQVUhleGFnb25TdGF0ZSAqZW52 KQoreworICAgIHFlbXVfbG9nX21hc2soQ1BVX0xPR19NTVUsICJoZXhfdGxiX2xvY2s6ICVkXG4i LCBlbnYtPnRocmVhZElkKTsKKyAgICBCUUxfTE9DS19HVUFSRCgpOworICAgIGdfYXNzZXJ0KChl bnYtPnRsYl9sb2NrX2NvdW50ID09IDApIHx8IChlbnYtPnRsYl9sb2NrX2NvdW50ID09IDEpKTsK KworICAgIHVpbnQzMl90IHN5c2NmZyA9IGFyY2hfZ2V0X3N5c3RlbV9yZWcoZW52LCBIRVhfU1JF R19TWVNDRkcpOworICAgIHVpbnQ4X3QgdGxiX2xvY2sgPSBHRVRfU1lTQ0ZHX0ZJRUxEKFNZU0NG R19UTEJMT0NLLCBzeXNjZmcpOworICAgIGlmICh0bGJfbG9jaykgeworICAgICAgICBpZiAoZW52 LT50bGJfbG9ja19zdGF0ZSA9PSBIRVhfTE9DS19RVUVVRUQpIHsKKyAgICAgICAgICAgIGVudi0+ bmV4dF9QQyArPSA0OworICAgICAgICAgICAgZW52LT50bGJfbG9ja19jb3VudCsrOworICAgICAg ICAgICAgZW52LT50bGJfbG9ja19zdGF0ZSA9IEhFWF9MT0NLX09XTkVSOworICAgICAgICAgICAg U0VUX1NZU0NGR19GSUVMRChlbnYsIFNZU0NGR19UTEJMT0NLLCAxKTsKKyAgICAgICAgICAgIHJl dHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZW52LT50bGJfbG9ja19zdGF0ZSA9PSBIRVhf TE9DS19PV05FUikgeworICAgICAgICAgICAgcWVtdV9sb2dfbWFzayhDUFVfTE9HX01NVSB8IExP R19HVUVTVF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkRvdWJsZSB0bGJsb2Nr IGF0IFBDOiAweCV4LCB0aHJlYWQgbWF5IGhhbmdcbiIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgIGVudi0+bmV4dF9QQyk7CisgICAgICAgICAgICBlbnYtPm5leHRfUEMgKz0gNDsKKyAgICAg ICAgICAgIENQVVN0YXRlICpjcyA9IGVudl9jcHUoZW52KTsKKyAgICAgICAgICAgIGNwdV9pbnRl cnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfSEFMVCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg ICAgIH0KKyAgICAgICAgZW52LT50bGJfbG9ja19zdGF0ZSA9IEhFWF9MT0NLX1dBSVRJTkc7Cisg ICAgICAgIENQVVN0YXRlICpjcyA9IGVudl9jcHUoZW52KTsKKyAgICAgICAgY3B1X2ludGVycnVw dChjcywgQ1BVX0lOVEVSUlVQVF9IQUxUKTsKKyAgICB9IGVsc2UgeworICAgICAgICBlbnYtPm5l eHRfUEMgKz0gNDsKKyAgICAgICAgZW52LT50bGJfbG9ja19jb3VudCsrOworICAgICAgICBlbnYt PnRsYl9sb2NrX3N0YXRlID0gSEVYX0xPQ0tfT1dORVI7CisgICAgICAgIFNFVF9TWVNDRkdfRklF TEQoZW52LCBTWVNDRkdfVExCTE9DSywgMSk7CisgICAgfQorCisgICAgaWYgKHFlbXVfbG9nbGV2 ZWxfbWFzayhDUFVfTE9HX01NVSkpIHsKKyAgICAgICAgcWVtdV9sb2dfbWFzayhDUFVfTE9HX01N VSwgIlRocmVhZHMgYWZ0ZXIgaGV4X3RsYl9sb2NrOlxuIik7CisgICAgICAgIHByaW50X3RocmVh ZF9zdGF0ZXMoIlx0VGhyZWFkIik7CisgICAgfQorfQorCit2b2lkIGhleF90bGJfdW5sb2NrKENQ VUhleGFnb25TdGF0ZSAqZW52KQoreworICAgIEJRTF9MT0NLX0dVQVJEKCk7CisgICAgZ19hc3Nl cnQoKGVudi0+dGxiX2xvY2tfY291bnQgPT0gMCkgfHwgKGVudi0+dGxiX2xvY2tfY291bnQgPT0g MSkpOworCisgICAgLyogTm90aGluZyB0byBkbyBpZiB0aGUgVExCIGlzbid0IGxvY2tlZCBieSB0 aGlzIHRocmVhZCAqLworICAgIHVpbnQzMl90IHN5c2NmZyA9IGFyY2hfZ2V0X3N5c3RlbV9yZWco ZW52LCBIRVhfU1JFR19TWVNDRkcpOworICAgIHVpbnQ4X3QgdGxiX2xvY2sgPSBHRVRfU1lTQ0ZH X0ZJRUxEKFNZU0NGR19UTEJMT0NLLCBzeXNjZmcpOworICAgIGlmICgodGxiX2xvY2sgPT0gMCkg fHwKKyAgICAgICAgKGVudi0+dGxiX2xvY2tfc3RhdGUgIT0gSEVYX0xPQ0tfT1dORVIpKSB7Cisg ICAgICAgIHFlbXVfbG9nX21hc2soTE9HX0dVRVNUX0VSUk9SLAorICAgICAgICAgICAgICAgICAg ICAgICJ0aHJlYWQgJWQgYXR0ZW1wdGVkIHRvIHRsYnVubG9jayB3aXRob3V0IGhhdmluZyB0aGUg IgorICAgICAgICAgICAgICAgICAgICAgICJsb2NrLCB0bGJfbG9jayBzdGF0ZSA9ICVkXG4iLAor ICAgICAgICAgICAgICAgICAgICAgIGVudi0+dGhyZWFkSWQsIGVudi0+dGxiX2xvY2tfc3RhdGUp OworICAgICAgICBnX2Fzc2VydChlbnYtPnRsYl9sb2NrX3N0YXRlICE9IEhFWF9MT0NLX1dBSVRJ TkcpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZW52LT50bGJfbG9ja19jb3VudC0t OworICAgIGVudi0+dGxiX2xvY2tfc3RhdGUgPSBIRVhfTE9DS19VTkxPQ0tFRDsKKyAgICBTRVRf U1lTQ0ZHX0ZJRUxEKGVudiwgU1lTQ0ZHX1RMQkxPQ0ssIDApOworCisgICAgLyogTG9vayBmb3Ig YSB0aHJlYWQgdG8gdW5sb2NrICovCisgICAgdW5zaWduZWQgaW50IHRoaXNfdGhyZWFkSWQgPSBl bnYtPnRocmVhZElkOworICAgIENQVUhleGFnb25TdGF0ZSAqdW5sb2NrX3RocmVhZCA9IE5VTEw7 CisgICAgQ1BVU3RhdGUgKmNzOworICAgIENQVV9GT1JFQUNIKGNzKSB7CisgICAgICAgIENQVUhl eGFnb25TdGF0ZSAqdGhyZWFkID0gY3B1X2Vudihjcyk7CisKKyAgICAgICAgLyoKKyAgICAgICAg ICogVGhlIGhhcmR3YXJlIGltcGxlbWVudHMgcm91bmQtcm9iaW4gZmFpcm5lc3MsIHNvIHdlIGxv b2sgZm9yIHRocmVhZHMKKyAgICAgICAgICogc3RhcnRpbmcgYXQgZW52LT50aHJlYWRJZCArIDEg YW5kIGluY3JlbWVudGluZyBtb2R1bG8gdGhlIG51bWJlciBvZgorICAgICAgICAgKiB0aHJlYWRz LgorICAgICAgICAgKgorICAgICAgICAgKiBUbyBpbXBsZW1lbnQgdGhpcywgd2UgY2hlY2sgaWYg dGhyZWFkIGlzIGEgZWFybGllciBpbiB0aGUgbW9kdWxvCisgICAgICAgICAqIHNlcXVlbmNlIHRo YW4gdW5sb2NrX3RocmVhZC4KKyAgICAgICAgICogICAgIGlmIHVubG9jayB0aHJlYWQgaXMgaGln aGVyIHRoYW4gdGhpcyB0aHJlYWQKKyAgICAgICAgICogICAgICAgICB0aHJlYWQgbXVzdCBiZSBi ZXR3ZWVuIHRoaXMgdGhyZWFkIGFuZCB1bmxvY2tfdGhyZWFkCisgICAgICAgICAqICAgICBlbHNl CisgICAgICAgICAqICAgICAgICAgdGhyZWFkIGhpZ2hlciB0aGFuIHRoaXMgdGhyZWFkIGlzIGFo ZWFkIG9mIHVubG9ja190aHJlYWQKKyAgICAgICAgICogICAgICAgICB0aHJlYWQgbXVzdCBiZSBs b3dlciB0aGVuIHVubG9jayB0aHJlYWQKKyAgICAgICAgICovCisgICAgICAgIGlmICh0aHJlYWQt PnRsYl9sb2NrX3N0YXRlID09IEhFWF9MT0NLX1dBSVRJTkcpIHsKKyAgICAgICAgICAgIGlmICgh dW5sb2NrX3RocmVhZCkgeworICAgICAgICAgICAgICAgIHVubG9ja190aHJlYWQgPSB0aHJlYWQ7 CisgICAgICAgICAgICB9IGVsc2UgaWYgKHVubG9ja190aHJlYWQtPnRocmVhZElkID4gdGhpc190 aHJlYWRJZCkgeworICAgICAgICAgICAgICAgIGlmICh0aGlzX3RocmVhZElkIDwgdGhyZWFkLT50 aHJlYWRJZCAmJgorICAgICAgICAgICAgICAgICAgICB0aHJlYWQtPnRocmVhZElkIDwgdW5sb2Nr X3RocmVhZC0+dGhyZWFkSWQpIHsKKyAgICAgICAgICAgICAgICAgICAgdW5sb2NrX3RocmVhZCA9 IHRocmVhZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICAgIGlmICh0aHJlYWQtPnRocmVhZElkID4gdGhpc190aHJlYWRJZCkgeworICAgICAg ICAgICAgICAgICAgICB1bmxvY2tfdGhyZWFkID0gdGhyZWFkOworICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICBpZiAodGhyZWFkLT50aHJlYWRJZCA8IHVubG9ja190aHJlYWQtPnRo cmVhZElkKSB7CisgICAgICAgICAgICAgICAgICAgIHVubG9ja190aHJlYWQgPSB0aHJlYWQ7Cisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlm ICh1bmxvY2tfdGhyZWFkKSB7CisgICAgICAgIGNzID0gZW52X2NwdSh1bmxvY2tfdGhyZWFkKTsK KyAgICAgICAgcHJpbnRfdGhyZWFkKCJcdFdhaXRpbmcgdGhyZWFkIGZvdW5kIiwgY3MpOworICAg ICAgICB1bmxvY2tfdGhyZWFkLT50bGJfbG9ja19zdGF0ZSA9IEhFWF9MT0NLX1FVRVVFRDsKKyAg ICAgICAgU0VUX1NZU0NGR19GSUVMRCh1bmxvY2tfdGhyZWFkLCBTWVNDRkdfVExCTE9DSywgMSk7 CisgICAgICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfVExCX1VOTE9DSyk7Cisg ICAgfQorCisgICAgaWYgKHFlbXVfbG9nbGV2ZWxfbWFzayhDUFVfTE9HX01NVSkpIHsKKyAgICAg ICAgcWVtdV9sb2dfbWFzayhDUFVfTE9HX01NVSwgIlRocmVhZHMgYWZ0ZXIgaGV4X3RsYl91bmxv Y2s6XG4iKTsKKyAgICAgICAgcHJpbnRfdGhyZWFkX3N0YXRlcygiXHRUaHJlYWQiKTsKKyAgICB9 CisKK30KKwpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vbWFjaGluZS5jIGIvdGFyZ2V0L2hl eGFnb24vbWFjaGluZS5jCmluZGV4IDlmZGFmYjQ1NzMuLmZjZGJhY2Y5ZmQgMTAwNjQ0Ci0tLSBh L3RhcmdldC9oZXhhZ29uL21hY2hpbmUuYworKysgYi90YXJnZXQvaGV4YWdvbi9tYWNoaW5lLmMK QEAgLTcsNiArNywzMyBAQAogI2luY2x1ZGUgInFlbXUvb3NkZXAuaCIKICNpbmNsdWRlICJtaWdy YXRpb24vY3B1LmgiCiAjaW5jbHVkZSAiY3B1LmgiCisjaW5jbHVkZSAiaGV4X21tdS5oIgorCitz dGF0aWMgaW50IGdldF9oZXhfdGxiX3B0cihRRU1VRmlsZSAqZiwgdm9pZCAqcHYsIHNpemVfdCBz aXplLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWTVN0YXRlRmllbGQgKmZpZWxkKQor eworICAgIENQVUhleGFnb25UTEJDb250ZXh0ICp0bGIgPSBwdjsKKyAgICBmb3IgKGludCBpID0g MDsgaSA8IEFSUkFZX1NJWkUodGxiLT5lbnRyaWVzKTsgaSsrKSB7CisgICAgICAgIHRsYi0+ZW50 cmllc1tpXSA9IHFlbXVfZ2V0X2JlNjQoZik7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitz dGF0aWMgaW50IHB1dF9oZXhfdGxiX3B0cihRRU1VRmlsZSAqZiwgdm9pZCAqcHYsIHNpemVfdCBz aXplLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZNU3RhdGVGaWVsZCAqZmllbGQsIEpT T05Xcml0ZXIgKnZtZGVzYykKK3sKKyAgICBDUFVIZXhhZ29uVExCQ29udGV4dCAqdGxiID0gcHY7 CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHRsYi0+ZW50cmllcyk7IGkrKykg eworICAgICAgICBxZW11X3B1dF9iZTY0KGYsICB0bGItPmVudHJpZXNbaV0pOworICAgIH0KKyAg ICByZXR1cm4gMDsKK30KKworY29uc3QgVk1TdGF0ZUluZm8gdm1zdGF0ZV9pbmZvX2hleF90bGJf cHRyID0geworICAgIC5uYW1lID0gImhleF90bGJfcG9pbnRlciIsCisgICAgLmdldCAgPSBnZXRf aGV4X3RsYl9wdHIsCisgICAgLnB1dCAgPSBwdXRfaGV4X3RsYl9wdHIsCit9OwogCiAKIGNvbnN0 IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX2hleGFnb25fY3B1ID0gewpAQCAtMjcsNiArNTQs OSBAQCBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV9oZXhhZ29uX2NwdSA9IHsKICAg ICAgICAgVk1TVEFURV9VSU5UVEwoZW52LnRocmVhZElkLCBIZXhhZ29uQ1BVKSwKICAgICAgICAg Vk1TVEFURV9VSU5UVEwoZW52LmNhdXNlX2NvZGUsIEhleGFnb25DUFUpLAogICAgICAgICBWTVNU QVRFX1VJTlRUTChlbnYud2FpdF9uZXh0X3BjLCBIZXhhZ29uQ1BVKSwKKyAgICAgICAgVk1TVEFU RV9QT0lOVEVSKGVudi5oZXhfdGxiLCBIZXhhZ29uQ1BVLCAwLAorICAgICAgICAgICAgICAgICAg ICAgICAgdm1zdGF0ZV9pbmZvX2hleF90bGJfcHRyLCBDUFVIZXhhZ29uVExCQ29udGV4dCAqKSwK KwogICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCkKICAgICB9LAogfTsKZGlmZiAtLWdpdCBh L3RhcmdldC9oZXhhZ29uL3RyYW5zbGF0ZS5jIGIvdGFyZ2V0L2hleGFnb24vdHJhbnNsYXRlLmMK aW5kZXggNzFjMTM3YmUzMC4uOTExOWU0MmZmNyAxMDA2NDQKLS0tIGEvdGFyZ2V0L2hleGFnb24v dHJhbnNsYXRlLmMKKysrIGIvdGFyZ2V0L2hleGFnb24vdHJhbnNsYXRlLmMKQEAgLTk0NCw3ICs5 NDQsNyBAQCBzdGF0aWMgdm9pZCBoZXhhZ29uX3RyX2luaXRfZGlzYXNfY29udGV4dChEaXNhc0Nv bnRleHRCYXNlICpkY2Jhc2UsCiAgICAgSGV4YWdvbkNQVSAqaGV4X2NwdSA9IGVudl9hcmNoY3B1 KGNwdV9lbnYoY3MpKTsKICAgICB1aW50MzJfdCBoZXhfZmxhZ3MgPSBkY2Jhc2UtPnRiLT5mbGFn czsKIAotICAgIGN0eC0+bWVtX2lkeCA9IE1NVV9VU0VSX0lEWDsKKyAgICBjdHgtPm1lbV9pZHgg PSBGSUVMRF9FWDMyKGhleF9mbGFncywgVEJfRkxBR1MsIE1NVV9JTkRFWCk7CiAgICAgY3R4LT5u dW1fcGFja2V0cyA9IDA7CiAgICAgY3R4LT5udW1faW5zbnMgPSAwOwogICAgIGN0eC0+bnVtX2h2 eF9pbnNucyA9IDA7CmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9tZXNvbi5idWlsZCBiL3Rh cmdldC9oZXhhZ29uL21lc29uLmJ1aWxkCmluZGV4IDNlYzUzMDEwZmEuLmFhNzI5YTM2ODMgMTAw NjQ0Ci0tLSBhL3RhcmdldC9oZXhhZ29uL21lc29uLmJ1aWxkCisrKyBiL3RhcmdldC9oZXhhZ29u L21lc29uLmJ1aWxkCkBAIC0yNzMsNyArMjczLDggQEAgaGV4YWdvbl9zcy5hZGQoZmlsZXMoCiAj ICAgICBpZGVmLWdlbmVyYXRlZC1lbmFibGVkLWluc3RydWN0aW9ucwogIwogaWRlZl9wYXJzZXJf ZW5hYmxlZCA9IGdldF9vcHRpb24oJ2hleGFnb25faWRlZl9wYXJzZXInKQotaWYgaWRlZl9wYXJz ZXJfZW5hYmxlZCBhbmQgJ2hleGFnb24tbGludXgtdXNlcicgaW4gdGFyZ2V0X2RpcnMKK2lmIGlk ZWZfcGFyc2VyX2VuYWJsZWQgYW5kICgnaGV4YWdvbi1saW51eC11c2VyJyBpbiB0YXJnZXRfZGly cyBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZXhhZ29uLXNvZnRtbXUnIGluIHRh cmdldF9kaXJzKQogICAgIGlkZWZfcGFyc2VyX2lucHV0X2dlbmVyYXRlZCA9IGN1c3RvbV90YXJn ZXQoCiAgICAgICAgICdpZGVmX3BhcnNlcl9pbnB1dC5oLmluYycsCiAgICAgICAgIG91dHB1dDog J2lkZWZfcGFyc2VyX2lucHV0LmguaW5jJywKLS0gCjIuMzQuMQoK