From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01on2081.outbound.protection.outlook.com [40.107.117.81]) by sourceware.org (Postfix) with ESMTPS id E3F703858280 for ; Tue, 25 Jul 2023 15:52:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E3F703858280 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=siemens.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=siemens.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a8IJBodTN0egNJH1PViZ5p8i2vAC6lD9tlVfvMgJr5RG+s7xpI1ZX0QQA1xJcg2/trhNxuX96TV5WJK+XLGUWMZveobYxcO5dhEHx0xwF1YCs2GX8ATPqg/WzCFeljspmQaqYP8rvruz9cazNAL/i3tvmi6osPWTwdjAf+xqfF1EqZO2Ic1m/8dLASL7lhGh3mOkhK+eoslSgE+rsdf/sItpgo/0JEKytBifD4fN9phzSUwM1uFZRcW5ROFyGjEfChzTnza8jDCf1/a9cmIVcQeF0dh8P3k3owohCpCMhI1AESb/KtndkEXrktE4URpteWxgnwt7pquMhPLLpJBpGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3ndhBhp7vaT6LRZMYD9av5KBhIqSF3N28tdToRZPAek=; b=KZKVPNGql9dzEF0V7zx4pFtFASlLXthmByXtMFvJVfpDgoJEYUGqRvEnwp9J+BvOpzuif9Jn+wsZ3XrqNL+g4kg8G4qNFci2Ttgi7OnLSRySu0suF5gJn8YF/QcMWGW/o7eSyLS/Mzf2RiggkuHQor7LKGkciXBLdMcWYvmCVZCVL7OGljdMDBRyf77V0y9CVwWT0Ikus/SkYYFLZHplzZZvqLNc7ckNxO861S4LWdFIbc667ILZjaXhsWfIEM+gtuQUfYUcx5R064BtG5T12SO+FDK1gCu2kuGpp3rCjX7qL3Uk5GW5TwU43Tjxl5FI/8gjHqlMk1BjRjB9dUNxvw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=siemens.com; dmarc=pass action=none header.from=siemens.com; dkim=pass header.d=siemens.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=siemens.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3ndhBhp7vaT6LRZMYD9av5KBhIqSF3N28tdToRZPAek=; b=yweMUMV9ADQSo+FVPwHI5tNEMkcFprzG+XvFh873MJdlO3kn8nmxT62Vg31N6KEp3GcDjaMSaQtP1tWQQKiRPCcMc8vsL6I5OmnqLEywbluACeyd3iD8hCJdq+OAoYehgXa5oTalPGcNx107bQft78SRFjBzlEZVThYy7bGt5WeWN3DUHX4IZ4YVYtFT3NGduY6YbFGtcz1l7PP50KsitZZLqn0nnH9VbiXnuINzaJaMI7nxjyeu7e1WB4hctretpG6p4o8M8sJ6wWEn/qiS1NsQ0ZGfgDMAV/jiMDm49BU4qRXFMq4epEpH8QOCK+Nw5YjlYLZfDCKtSLb+JN5r8A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=siemens.com; Received: from SG2PR06MB5430.apcprd06.prod.outlook.com (2603:1096:4:1ba::14) by SEYPR06MB6538.apcprd06.prod.outlook.com (2603:1096:101:177::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6609.33; Tue, 25 Jul 2023 15:52:11 +0000 Received: from SG2PR06MB5430.apcprd06.prod.outlook.com ([fe80::f7f2:5dc1:2d75:a61a]) by SG2PR06MB5430.apcprd06.prod.outlook.com ([fe80::f7f2:5dc1:2d75:a61a%7]) with mapi id 15.20.6609.032; Tue, 25 Jul 2023 15:52:11 +0000 Content-Type: multipart/mixed; boundary="------------yfVu489Sv3kPTKl0A6zPkD6j" Message-ID: <5196826c-e81a-ab5c-63e9-bd8509232da0@siemens.com> Date: Tue, 25 Jul 2023 23:52:06 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Reply-To: cltang@codesourcery.com Subject: [PATCH, OpenACC 2.7] Connect readonly modifier to points-to analysis Content-Language: en-US To: cltang@codesourcery.com, gcc-patches , Thomas Schwinge , Catherine Moore , Tobias Burnus References: From: Chung-Lin Tang In-Reply-To: X-ClientProxiedBy: TYCPR01CA0075.jpnprd01.prod.outlook.com (2603:1096:405:3::15) To SG2PR06MB5430.apcprd06.prod.outlook.com (2603:1096:4:1ba::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SG2PR06MB5430:EE_|SEYPR06MB6538:EE_ X-MS-Office365-Filtering-Correlation-Id: b1d0285e-d64f-4305-fc92-08db8d271b43 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HpM9MBQ7/S70BnkMB7dlFJ+zoDLy9LpRNESDvSBUmV4OodAsZMgWfRmO164sHf3MWVNSg0I9VdLu4b/g+bKirgVUGsbEzW21yS5pdfqa/cnXRPrBHDmVoAbNLWZmxwxuZf859ORZhJHi7qB4Q6h4BD+Rt0fmpXuHbdm2+XAfJSvK73DgCXB1/dP5GL8fseAG4go4TICDjCMBm+D2k0HBzH3InJ8Q0gbLmnLjDpQPZaJwN2z+T3Sx6KGRjDj/T1d7kL6LAuzJeLMrnATDHY5StOllOeMiFe+UYj9afztmS6OppHv3fOwDyR/VvucijOEsJWVY3OdY94WFN3vpyow/yiOWNigxfaIVhxu8Lt/oS2TulZhUb0lBEfRq2EkoabKNlRHjubZXPTw95f+x1q91PEndPtGLtZnZzewdLeGnYKBHhDf1CgH1bSiywxkGsj6shdMESYRfIN4qZChlaRZRDF5s21aXTJJVN/qTqyc2dgHZOFnRdU/d77JGalCn1udMIUIboO0+NkyOYMCEBfk2DUncgBun+QNUVqs/CAis57SW1nRFm9Y25+5Ek0UkWGe0FKkSBTRRhOXDaq92vSoUiHDsSKL8Xju7OXPfxkoUV0V7XJBPv/JBCLdWx+GQSoEI2kNupEbKrS78vVSWgDqrVQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SG2PR06MB5430.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(346002)(39860400002)(136003)(366004)(376002)(396003)(451199021)(84970400001)(31686004)(110136005)(478600001)(186003)(6666004)(33964004)(6486002)(235185007)(5660300002)(8936002)(6506007)(36756003)(6512007)(2906002)(26005)(83380400001)(82960400001)(66476007)(38100700002)(41300700001)(8676002)(53546011)(31696002)(316002)(86362001)(2616005)(66946007)(66556008)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UUsyNk1GODVDSlcvcDZ1S01NTXV3YTdMRVQ4VlhCbEpaaXVmRVhrMVRaVG8r?= =?utf-8?B?QS9kR2ZBSUtEeWVoRjRhcnhUbnJUZ2N0R3JiMmR6ejMzNmN6VjFQc0U5M2E0?= =?utf-8?B?d3B6VkYzZmoxTkJQc1p0TGFHcmo4M05sRmZ1bG9HODZpMCtybU5yckZUYWFj?= =?utf-8?B?QiszTEhPbzF6bVNxNVNraGdxUUh4ZzNaZDgrejNydEZwenFWYjlGR0hGY2Y4?= =?utf-8?B?RTFuNTM3T0tNUTdWanQvZFVpbDhJVnpmWkhZQjl1Q0dIaEo5RlJKQ2toSklz?= =?utf-8?B?KzFiUS9HMUpUVDM2UlZReTN2TjlFZjViK3hubXZXUkVsZFZmdmgxR09qQ2hO?= =?utf-8?B?TlRvZmRoVW82Vm9haWhIN09NQXkydUZlZG1PM1pFVW1UQWhOWDhXNm94eGRq?= =?utf-8?B?eE8reE5tY0s5ZEI2NTRiMWg1Yk5ROEgrZFRCZlNjUXZEZGhNL1VaMWhZbUEr?= =?utf-8?B?elBCZklUSkJkTDlESENCT2xhbEkrUmdWSEtwTFR2VW5oRDVRalgrNVNiZlla?= =?utf-8?B?Q2RVMXRNVWhnZldJOStHWjFYd2luMS9wZmY2Z2lNaDVzQVRzdHh2WlI5V2hM?= =?utf-8?B?d09BWGZWZWluT2h6dVZQakE0cHE2ajg1ZEVRWXlmQ1liSE9FUTliUDVYdTlk?= =?utf-8?B?am5DNEJHVktIZklhV3pkSnlUeXF1YWN6UkpndnJlcVBXUnRFN01sdTJHL1Rn?= =?utf-8?B?bWZWWlBqTmRqU0dOc09oc3IxNUhBMXdJYWowWTFHZXNHS3EvWDJYWjNRalF4?= =?utf-8?B?NFpCT3JlSHVaVG1FbnJWMU1Idk8yV2ZDRnQyNTF6bVNrWStjQWFXQjlNdzBI?= =?utf-8?B?ZExUTklHSjV4dnEyNHFrK2M3SWhUQUlrUW1KN1dDKy9zSUxDanpoZlhHdEZM?= =?utf-8?B?Wkt6SUF3Zzh0cVhOenIzMXdGa3dXSmtSN28rV21kVnVDVnQvcDhHMkF3Y0Vu?= =?utf-8?B?TFZGeDVTNHJ0VU9TaWNSYTQwYlJIeWVEcFZMNkRNdUlvQ29abDNFa3QzL2tP?= =?utf-8?B?NjFDbkRZRllZSXZmZ2ZNTGNxeWJjUEhTaUFSRk93UzZjNWhRN2JxMEpDUmFH?= =?utf-8?B?RGlTdHVmdmh3Z3RTb2dwdHhLeHZDSlF6TkdNN05zVmJRQ0VBQ0JQbHBsTHJK?= =?utf-8?B?cnlGNSs0NjQrTVlmUDIyZUtTYVB2b25ybGVpbHp5Y25uYnJjQjNBeUxwNHJ5?= =?utf-8?B?aDZER2Q2WHdqaGtBLzRGTjhVYlE0Qmx3RHo1TFdDNTcwNm1IMW1uWVE3V0JU?= =?utf-8?B?MHNYYTBWNGZLaXU4eVdqcGJrT2t6dGxjK1RQWm91U280MUVHZDRadXhNUDJ5?= =?utf-8?B?RCtQZEt2Sk8rRGdUaTdTM2FqS3Zqc2VsM1J2Q1krMmtXbndpamhOaGJXNVVv?= =?utf-8?B?UXRRTGhYb2pWNU9yWm55Tmtua2h5MW8xd1BjRmJFTmZ5T3V5VFhCbWdaWFFK?= =?utf-8?B?L0lpVnY2ejFMZCs0Tk8vcWxLVURmOFU3QTNvUkhDSVN0NXdSalBFQVVvZXha?= =?utf-8?B?NHg3elV4OVNjTys0NThLcUo0QzFuNG5vb29uMlZaY0h0MStLdTFUTVIvY1Vm?= =?utf-8?B?eG1ldkM1ZWNKa2hCeThmdmo1S1NQRXYzQVVBTmhZSGZqL3hqWlhmbTk5b2VN?= =?utf-8?B?bXJFZ3lpL2wwSFhsUTBPdHFmd2NIQWdmNFFRT1lwcHdBZnhRSUV1TnY4aTRy?= =?utf-8?B?bHJoWmJTd2tJR3hkY1VrdEE1MHh1K3FaTzlQK0o3VWozR3dkZHN4VWVaRU4v?= =?utf-8?B?SGRmbG82ai9BOUJPNTljeXdkRDZDa0xSV09id1ZnZGc3a3orekZLdlhHN1Mz?= =?utf-8?B?RmRkT2pTWndDQVN0MnB3WHBLeFp2aTZZMlR1TDhFTVZVTHBveDBNM2c0bjNF?= =?utf-8?B?NHNDZUNOM0Q3RkhyYkdSSWhyZ0FXWUhkVU1oQ05oQlFlVUJISVJZTXpoanJ3?= =?utf-8?B?SjdKOS9CNWhkU1dCbUxzRThsVzdHWnI1Mmp2cmtpUTRRTGJKSzRxS0xsNmdl?= =?utf-8?B?MVZmbEJRVVBPSUF2ODIwNHROd2YzMmYwSG53YVVncVVtWno2dnlQQ05sTUJk?= =?utf-8?B?VUdQT090d05NZnFHTGZLK21ZZlpFUDNWeEFNR05pNXp5ajIrNlRPeTg4aXp6?= =?utf-8?B?RTAwZEFHVUxvbmw5MUdCWGZsZ05OVzNmbUpEZEx6ckV0QkFWcFByVWNpT1Zj?= =?utf-8?B?bGc9PQ==?= X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: b1d0285e-d64f-4305-fc92-08db8d271b43 X-MS-Exchange-CrossTenant-AuthSource: SG2PR06MB5430.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jul 2023 15:52:10.6402 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: qjZkTDG+ALzaiixSrGPiPovs9isXzMCHNC+HWe9DWIxLmqNruO45/Xfr811E5Rd/1z/OwySOPbXW6ZgcLi+IKMnUFJuDE6vOuJmpm/H2Nrg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR06MB6538 X-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00,DKIMWL_WL_MED,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------yfVu489Sv3kPTKl0A6zPkD6j Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 2023/7/11 2:33 AM, Chung-Lin Tang via Gcc-patches wrote: > As we discussed earlier, the work for actually linking this to middle-end > points-to analysis is a somewhat non-trivial issue. This first patch allows > the language feature to be used in OpenACC directives first (with no effect for now). > The middle-end changes are probably going to be a later patch. This second patch tries to link the readonly modifier to points-to analysis. There already exists SSA_NAME_POINTS_TO_READONLY_MEMORY and it's support in the alias oracle routines in tree-ssa-alias.cc, so basically what this patch does is try to make the variables holding the array section base pointers to have this flag set. There is an another OMP_CLAUSE_MAP_POINTS_TO_READONLY set by front-ends on the associated pointer clauses if OMP_CLAUSE_MAP_READONLY is set. Also a DECL_POINTS_TO_READONLY flag is set for VAR_DECLs when creating the tmp vars carrying these receiver references on the offloaded side. These eventually get translated to SSA_NAME_POINTS_TO_READONLY_MEMORY. This still doesn't always work as expected in terms of optimization: struct pointer fields and Fortran arrays (kind of like C structs) which have several accesses to create the pointer access on the receive/offloaded side, and SRA appears to not work on these sequences, so gets in the way of much redundancy elimination. Currently have one testcase where we can demonstrate 'readonly' can avoid a clobber by function call. Tested on powerpc64le-linux/nvptx. Note this patch is create a-top of the front-end patch. (will respond to the other front-end patch comments later) Thanks, Chung-Lin 2023-07-25 Chung-Lin Tang gcc/c/ChangeLog: * c-typeck.cc (handle_omp_array_sections): Set OMP_CLAUSE_MAP_POINTS_TO_READONLY on pointer clause. gcc/cp/ChangeLog: * semantics.cc (handle_omp_array_sections): Set OMP_CLAUSE_MAP_POINTS_TO_READONLY on pointer clause. gcc/fortran/ChangeLog: * trans-openmp.cc (gfc_trans_omp_array_section): Set OMP_CLAUSE_MAP_POINTS_TO_READONLY on pointer clause. gcc/ChangeLog: * gimple-expr.cc (copy_var_decl): Copy DECL_POINTS_TO_READONLY for VAR_DECLs. * gimplify.cc (struct gimplify_omp_ctx): Add 'hash_set *pt_readonly_ptrs' field. (internal_get_tmp_var): Set DECL_POINTS_TO_READONLY/SSA_NAME_POINTS_TO_READONLY_MEMORY for new temp vars. (build_omp_struct_comp_nodes): Set OMP_CLAUSE_MAP_POINTS_TO_READONLY on pointer clause. (gimplify_scan_omp_clauses): Collect OMP_CLAUSE_MAP_POINTS_TO_READONLY to ctx->pt_readonly_ptrs. * omp-low.cc (lower_omp_target): Set DECL_POINTS_TO_READONLY for variables of receiver refs. * tree-pretty-print.cc (dump_omp_clause): Print OMP_CLAUSE_MAP_POINTS_TO_READONLY. (dump_generic_node): Print SSA_NAME_POINTS_TO_READONLY_MEMORY. * tree.h (DECL_POINTS_TO_READONLY): New macro. (OMP_CLAUSE_MAP_POINTS_TO_READONLY): New macro. gcc/testsuite/ChangeLog: * c-c++-common/goacc/readonly-1.c: Adjust testcase. * c-c++-common/goacc/readonly-2.c: New testcase. * gfortran.dg/goacc/readonly-1.f90: Adjust testcase. --------------yfVu489Sv3kPTKl0A6zPkD6j Content-Type: text/plain; charset=UTF-8; name="oacc-points-to-readonly.patch" Content-Disposition: attachment; filename="oacc-points-to-readonly.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jL2MtdHlwZWNrLmNjIGIvZ2NjL2MvYy10eXBlY2suY2MKaW5kZXgg N2NmNDExMTU1YzYuLjQyNTkxZTQwMjlhIDEwMDY0NAotLS0gYS9nY2MvYy9jLXR5cGVjay5jYwor KysgYi9nY2MvYy9jLXR5cGVjay5jYwpAQCAtMTQyNTgsNiArMTQyNTgsOCBAQCBoYW5kbGVfb21w X2FycmF5X3NlY3Rpb25zICh0cmVlIGMsIGVudW0gY19vbXBfcmVnaW9uX3R5cGUgb3J0KQogCU9N UF9DTEFVU0VfU0VUX01BUF9LSU5EIChjMiwgR09NUF9NQVBfQVRUQUNIX0RFVEFDSCk7CiAgICAg ICBlbHNlCiAJT01QX0NMQVVTRV9TRVRfTUFQX0tJTkQgKGMyLCBHT01QX01BUF9GSVJTVFBSSVZB VEVfUE9JTlRFUik7CisgICAgICBpZiAoT01QX0NMQVVTRV9NQVBfUkVBRE9OTFkgKGMpKQorCU9N UF9DTEFVU0VfTUFQX1BPSU5UU19UT19SRUFET05MWSAoYzIpID0gMTsKICAgICAgIE9NUF9DTEFV U0VfTUFQX0lNUExJQ0lUIChjMikgPSBPTVBfQ0xBVVNFX01BUF9JTVBMSUNJVCAoYyk7CiAgICAg ICBpZiAoT01QX0NMQVVTRV9NQVBfS0lORCAoYzIpICE9IEdPTVBfTUFQX0ZJUlNUUFJJVkFURV9Q T0lOVEVSCiAJICAmJiAhY19tYXJrX2FkZHJlc3NhYmxlICh0KSkKZGlmZiAtLWdpdCBhL2djYy9j cC9zZW1hbnRpY3MuY2MgYi9nY2MvY3Avc2VtYW50aWNzLmNjCmluZGV4IDhmYjQ3ZmQxNzllLi42 YWI0NjdlMTE0MCAxMDA2NDQKLS0tIGEvZ2NjL2NwL3NlbWFudGljcy5jYworKysgYi9nY2MvY3Av c2VtYW50aWNzLmNjCkBAIC01ODcyLDYgKzU4NzIsOCBAQCBoYW5kbGVfb21wX2FycmF5X3NlY3Rp b25zICh0cmVlIGMsIGVudW0gY19vbXBfcmVnaW9uX3R5cGUgb3J0KQogCSAgICB9CiAJICBlbHNl CiAJICAgIE9NUF9DTEFVU0VfU0VUX01BUF9LSU5EIChjMiwgR09NUF9NQVBfRklSU1RQUklWQVRF X1BPSU5URVIpOworCSAgaWYgKE9NUF9DTEFVU0VfTUFQX1JFQURPTkxZIChjKSkKKwkgICAgT01Q X0NMQVVTRV9NQVBfUE9JTlRTX1RPX1JFQURPTkxZIChjMikgPSAxOwogCSAgT01QX0NMQVVTRV9N QVBfSU1QTElDSVQgKGMyKSA9IE9NUF9DTEFVU0VfTUFQX0lNUExJQ0lUIChjKTsKIAkgIGlmIChP TVBfQ0xBVVNFX01BUF9LSU5EIChjMikgIT0gR09NUF9NQVBfRklSU1RQUklWQVRFX1BPSU5URVIK IAkgICAgICAmJiAhY3h4X21hcmtfYWRkcmVzc2FibGUgKHQpKQpkaWZmIC0tZ2l0IGEvZ2NjL2Zv cnRyYW4vdHJhbnMtb3Blbm1wLmNjIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmNjCmluZGV4 IDIyNTNkNTU5ZjljLi5kN2NkNjVhZjFiYiAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMt b3Blbm1wLmNjCisrKyBiL2djYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYwpAQCAtMjUyNCw2ICsy NTI0LDggQEAgZ2ZjX3RyYW5zX29tcF9hcnJheV9zZWN0aW9uIChzdG10YmxvY2tfdCAqYmxvY2ss IGdmY19leGVjX29wIG9wLAogICAgICAgbm9kZTMgPSBidWlsZF9vbXBfY2xhdXNlIChpbnB1dF9s b2NhdGlvbiwgT01QX0NMQVVTRV9NQVApOwogICAgICAgT01QX0NMQVVTRV9TRVRfTUFQX0tJTkQg KG5vZGUzLCBwdHJfa2luZCk7CiAgICAgICBPTVBfQ0xBVVNFX0RFQ0wgKG5vZGUzKSA9IGdmY19j b252X2Rlc2NyaXB0b3JfZGF0YV9nZXQgKGRlY2wpOworICAgICAgaWYgKG4tPnUucmVhZG9ubHkp CisJT01QX0NMQVVTRV9NQVBfUE9JTlRTX1RPX1JFQURPTkxZIChub2RlMykgPSAxOwogICAgICAg LyogVGhpcyBwdXJwb3NlbHkgZG9lcyBub3QgaW5jbHVkZSBHT01QX01BUF9BTFdBWVNfUE9JTlRF Ui4gIFRoZSBleHRyYQogCSBjYXN0IHByZXZlbnRzIGdpbXBsaWZ5LmNjIGZyb20gcmVjb2duaXNp bmcgaXQgYXMgYmVpbmcgcGFydCBvZiB0aGUKIAkgc3RydWN0IC0gYW5kIGFkZGluZyBhbiAnYWxs b2M6IGZvciB0aGUgJ2Rlc2MuZGF0YScgcG9pbnRlciwgd2hpY2gKQEAgLTI1NTksNiArMjU2MSw4 IEBAIGdmY190cmFuc19vbXBfYXJyYXlfc2VjdGlvbiAoc3RtdGJsb2NrX3QgKmJsb2NrLCBnZmNf ZXhlY19vcCBvcCwKIAkJCQlPTVBfQ0xBVVNFX01BUCk7CiAgICAgICBPTVBfQ0xBVVNFX1NFVF9N QVBfS0lORCAobm9kZTMsIHB0cl9raW5kKTsKICAgICAgIE9NUF9DTEFVU0VfREVDTCAobm9kZTMp ID0gZGVjbDsKKyAgICAgIGlmIChuLT51LnJlYWRvbmx5KQorCU9NUF9DTEFVU0VfTUFQX1BPSU5U U19UT19SRUFET05MWSAobm9kZTMpID0gMTsKICAgICB9CiAgIHB0cjIgPSBmb2xkX2NvbnZlcnQg KHB0cmRpZmZfdHlwZV9ub2RlLCBwdHIyKTsKICAgT01QX0NMQVVTRV9TSVpFIChub2RlMykgPSBm b2xkX2J1aWxkMiAoTUlOVVNfRVhQUiwgcHRyZGlmZl90eXBlX25vZGUsCmRpZmYgLS1naXQgYS9n Y2MvZ2ltcGxlLWV4cHIuY2MgYi9nY2MvZ2ltcGxlLWV4cHIuY2MKaW5kZXggZjE1Y2MwYmE3MTUu LjQyYzBmNjQ2OWIxIDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxlLWV4cHIuY2MKKysrIGIvZ2NjL2dp bXBsZS1leHByLmNjCkBAIC0zNzYsNiArMzc2LDggQEAgY29weV92YXJfZGVjbCAodHJlZSB2YXIs IHRyZWUgbmFtZSwgdHJlZSB0eXBlKQogICBERUNMX0NPTlRFWFQgKGNvcHkpID0gREVDTF9DT05U RVhUICh2YXIpOwogICBUUkVFX1VTRUQgKGNvcHkpID0gMTsKICAgREVDTF9TRUVOX0lOX0JJTkRf RVhQUl9QIChjb3B5KSA9IDE7CisgIGlmIChWQVJfUCAodmFyKSkKKyAgICBERUNMX1BPSU5UU19U T19SRUFET05MWSAoY29weSkgPSBERUNMX1BPSU5UU19UT19SRUFET05MWSAodmFyKTsKICAgREVD TF9BVFRSSUJVVEVTIChjb3B5KSA9IERFQ0xfQVRUUklCVVRFUyAodmFyKTsKICAgaWYgKERFQ0xf VVNFUl9BTElHTiAodmFyKSkKICAgICB7CmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxpZnkuY2MgYi9n Y2MvZ2ltcGxpZnkuY2MKaW5kZXggMzZlNWRmMDUwYjkuLjM5NGU0MGZlYWQyIDEwMDY0NAotLS0g YS9nY2MvZ2ltcGxpZnkuY2MKKysrIGIvZ2NjL2dpbXBsaWZ5LmNjCkBAIC0yMjEsNiArMjIxLDcg QEAgc3RydWN0IGdpbXBsaWZ5X29tcF9jdHgKICAgc3BsYXlfdHJlZSB2YXJpYWJsZXM7CiAgIGhh c2hfc2V0PHRyZWU+ICpwcml2YXRpemVkX3R5cGVzOwogICB0cmVlIGNsYXVzZXM7CisgIGhhc2hf c2V0PHRyZWVfb3BlcmFuZF9oYXNoPiAqcHRfcmVhZG9ubHlfcHRyczsKICAgLyogSXRlcmF0aW9u IHZhcmlhYmxlcyBpbiBhbiBPTVBfRk9SLiAgKi8KICAgdmVjPHRyZWU+IGxvb3BfaXRlcl92YXI7 CiAgIGxvY2F0aW9uX3QgbG9jYXRpb247CkBAIC02MjgsNiArNjI5LDE1IEBAIGludGVybmFsX2dl dF90bXBfdmFyICh0cmVlIHZhbCwgZ2ltcGxlX3NlcSAqcHJlX3AsIGdpbXBsZV9zZXEgKnBvc3Rf cCwKICAgZ2ltcGxpZnlfZXhwciAoJnZhbCwgcHJlX3AsIHBvc3RfcCwgaXNfZ2ltcGxlX3JlZ19y aHNfb3JfY2FsbCwKIAkJIGZiX3J2YWx1ZSk7CiAKKyAgYm9vbCBwdF9yZWFkb25seSA9IGZhbHNl OworICBpZiAoZ2ltcGxpZnlfb21wX2N0eHAgJiYgZ2ltcGxpZnlfb21wX2N0eHAtPnB0X3JlYWRv bmx5X3B0cnMpCisgICAgeworICAgICAgdHJlZSBwdHIgPSB2YWw7CisgICAgICBpZiAoVFJFRV9D T0RFIChwdHIpID09IFBPSU5URVJfUExVU19FWFBSKQorCXB0ciA9IFRSRUVfT1BFUkFORCAocHRy LCAwKTsKKyAgICAgIHB0X3JlYWRvbmx5ID0gZ2ltcGxpZnlfb21wX2N0eHAtPnB0X3JlYWRvbmx5 X3B0cnMtPmNvbnRhaW5zIChwdHIpOworICAgIH0KKwogICBpZiAoYWxsb3dfc3NhCiAgICAgICAm JiBnaW1wbGlmeV9jdHhwLT5pbnRvX3NzYQogICAgICAgJiYgaXNfZ2ltcGxlX3JlZ190eXBlIChU UkVFX1RZUEUgKHZhbCkpKQpAQCAtNjM5LDkgKzY0OSwxOCBAQCBpbnRlcm5hbF9nZXRfdG1wX3Zh ciAodHJlZSB2YWwsIGdpbXBsZV9zZXEgKnByZV9wLCBnaW1wbGVfc2VxICpwb3N0X3AsCiAJICBp ZiAobmFtZSkKIAkgICAgU0VUX1NTQV9OQU1FX1ZBUl9PUl9JREVOVElGSUVSICh0LCBjcmVhdGVf dG1wX3Zhcl9uYW1lIChuYW1lKSk7CiAJfQorICAgICAgaWYgKHB0X3JlYWRvbmx5KQorCVNTQV9O QU1FX1BPSU5UU19UT19SRUFET05MWV9NRU1PUlkgKHQpID0gMTsKICAgICB9CiAgIGVsc2UKLSAg ICB0ID0gbG9va3VwX3RtcF92YXIgKHZhbCwgaXNfZm9ybWFsLCBub3RfZ2ltcGxlX3JlZyk7Cisg ICAgeworICAgICAgdCA9IGxvb2t1cF90bXBfdmFyICh2YWwsIGlzX2Zvcm1hbCwgbm90X2dpbXBs ZV9yZWcpOworICAgICAgaWYgKHB0X3JlYWRvbmx5KQorCXsKKwkgIERFQ0xfUE9JTlRTX1RPX1JF QURPTkxZICh0KSA9IDE7CisJICBnaW1wbGlmeV9vbXBfY3R4cC0+cHRfcmVhZG9ubHlfcHRycy0+ YWRkICh0KTsKKwl9CisgICAgfQogCiAgIG1vZCA9IGJ1aWxkMiAoSU5JVF9FWFBSLCBUUkVFX1RZ UEUgKHQpLCB0LCB1bnNoYXJlX2V4cHIgKHZhbCkpOwogCkBAIC04OTA2LDYgKzg5MjUsOCBAQCBi dWlsZF9vbXBfc3RydWN0X2NvbXBfbm9kZXMgKGVudW0gdHJlZV9jb2RlIGNvZGUsIHRyZWUgZ3Jw X3N0YXJ0LCB0cmVlIGdycF9lbmQsCiAgIE9NUF9DTEFVU0VfU0VUX01BUF9LSU5EIChjMiwgbWtp bmQpOwogICBPTVBfQ0xBVVNFX0RFQ0wgKGMyKSA9IHVuc2hhcmVfZXhwciAoT01QX0NMQVVTRV9E RUNMIChncnBfZW5kKSk7CiAgIE9NUF9DTEFVU0VfQ0hBSU4gKGMyKSA9IE5VTExfVFJFRTsKKyAg aWYgKE9NUF9DTEFVU0VfTUFQX1BPSU5UU19UT19SRUFET05MWSAoZ3JwX2VuZCkpCisgICAgT01Q X0NMQVVTRV9NQVBfUE9JTlRTX1RPX1JFQURPTkxZIChjMikgPSAxOwogICB0cmVlIGdycF9taWQg PSBOVUxMX1RSRUU7CiAgIGlmIChPTVBfQ0xBVVNFX0NIQUlOIChncnBfc3RhcnQpICE9IGdycF9l bmQpCiAgICAgZ3JwX21pZCA9IE9NUF9DTEFVU0VfQ0hBSU4gKGdycF9zdGFydCk7CkBAIC0xMTc0 MSw2ICsxMTc2MiwxNiBAQCBnaW1wbGlmeV9zY2FuX29tcF9jbGF1c2VzICh0cmVlICpsaXN0X3As IGdpbXBsZV9zZXEgKnByZV9wLAogCiAJICAgICAgZ2ltcGxpZnlfb21wX2N0eHAgPSBvdXRlcl9j dHg7CiAJICAgIH0KKwkgIGVsc2UgaWYgKE9NUF9DTEFVU0VfQ09ERSAoYykgPT0gT01QX0NMQVVT RV9NQVAKKwkJICAgJiYgKGNvZGUgPT0gT0FDQ19QQVJBTExFTAorCQkgICAgICAgfHwgY29kZSA9 PSBPQUNDX0tFUk5FTFMKKwkJICAgICAgIHx8IGNvZGUgPT0gT0FDQ19TRVJJQUwpCisJCSAgICYm IE9NUF9DTEFVU0VfTUFQX1BPSU5UU19UT19SRUFET05MWSAoYykpCisJICAgIHsKKwkgICAgICBp ZiAoY3R4LT5wdF9yZWFkb25seV9wdHJzID09IE5VTEwpCisJCWN0eC0+cHRfcmVhZG9ubHlfcHRy cyA9IG5ldyBoYXNoX3NldDx0cmVlX29wZXJhbmRfaGFzaD4gKCk7CisJICAgICAgY3R4LT5wdF9y ZWFkb25seV9wdHJzLT5hZGQgKE9NUF9DTEFVU0VfREVDTCAoYykpOworCSAgICB9CiAJICBpZiAo bm90aWNlX291dGVyKQogCSAgICBnb3RvIGRvX25vdGljZTsKIAkgIGJyZWFrOwpkaWZmIC0tZ2l0 IGEvZ2NjL29tcC1sb3cuY2MgYi9nY2Mvb21wLWxvdy5jYwppbmRleCBiODgyZGYwNDhlZi4uMjA0 ZmM3MmNhMmQgMTAwNjQ0Ci0tLSBhL2djYy9vbXAtbG93LmNjCisrKyBiL2djYy9vbXAtbG93LmNj CkBAIC0xNDA5OCw2ICsxNDA5OCw4IEBAIGxvd2VyX29tcF90YXJnZXQgKGdpbXBsZV9zdG10X2l0 ZXJhdG9yICpnc2lfcCwgb21wX2NvbnRleHQgKmN0eCkKIAkJaWYgKHJlZl90b19hcnJheSkKIAkJ ICB4ID0gZm9sZF9jb252ZXJ0X2xvYyAoY2xhdXNlX2xvYywgVFJFRV9UWVBFIChuZXdfdmFyKSwg eCk7CiAJCWdpbXBsaWZ5X2V4cHIgKCZ4LCAmbmV3X2JvZHksIE5VTEwsIGlzX2dpbXBsZV92YWws IGZiX3J2YWx1ZSk7CisJCWlmIChPTVBfQ0xBVVNFX01BUF9QT0lOVFNfVE9fUkVBRE9OTFkgKGMp ICYmIFZBUl9QICh4KSkKKwkJICBERUNMX1BPSU5UU19UT19SRUFET05MWSAoeCkgPSAxOwogCQlp ZiAoKGlzX3JlZiAmJiAhcmVmX3RvX2FycmF5KQogCQkgICAgfHwgcmVmX3RvX3B0cikKIAkJICB7 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9yZWFkb25seS0x LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb2FjYy9yZWFkb25seS0xLmMKaW5kZXgg MTcxZjk2YzA4ZGIuLjFmMTBmZDI1ZTQ2IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9nb2FjYy9yZWFkb25seS0xLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vZ29hY2MvcmVhZG9ubHktMS5jCkBAIC0xOSw4ICsxOSw4IEBAIGludCBtYWluICh2b2lkKQog ICByZXR1cm4gMDsKIH0KIAotLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIo P24pI3ByYWdtYSBhY2MgcGFyYWxsZWwgbWFwXFwocmVhZG9ubHksdG86XFwqcy5wdHIgXFxcW2xl bjogNjRcXFxdXFwpIC4rIG1hcFxcKHJlYWRvbmx5LHRvOnhcXFxbMFxcXF0gXFxcW2xlbjogMTI4 XFxcXVxcKSIgMSAib3JpZ2luYWwiIHsgdGFyZ2V0IHsgYyB9IH0gfSB9ICovCi0vKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIig/bikjcHJhZ21hIGFjYyBwYXJhbGxlbCBtYXBc XChyZWFkb25seSx0bzpcXCpOT05fTFZBTFVFX0VYUFIgPHMucHRyPiBcXFxbbGVuOiA2NFxcXF1c XCkgLisgbWFwXFwocmVhZG9ubHksdG86eFxcXFswXFxcXSBcXFxbbGVuOiAxMjhcXFxdXFwpIiAx ICJvcmlnaW5hbCIgeyB0YXJnZXQgeyBjKysgfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICIoP24pI3ByYWdtYSBhY2MgcGFyYWxsZWwgbWFwXFwocmVhZG9u bHksdG86XFwqcy5wdHIgXFxcW2xlbjogNjRcXFxdXFwpIG1hcFxcKHB0X3JlYWRvbmx5LGF0dGFj aF9kZXRhY2g6cy5wdHIgXFxcW2JpYXM6IDBcXFxdXFwpIG1hcFxcKHJlYWRvbmx5LHRvOnhcXFxb MFxcXF0gXFxcW2xlbjogMTI4XFxcXVxcKSBtYXBcXChwdF9yZWFkb25seSxmaXJzdHByaXZhdGU6 eCBcXFxbcG9pbnRlciBhc3NpZ24sIGJpYXM6IDBcXFxdXFwpIiAxICJvcmlnaW5hbCIgeyB0YXJn ZXQgeyBjIH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAi KD9uKSNwcmFnbWEgYWNjIHBhcmFsbGVsIG1hcFxcKHJlYWRvbmx5LHRvOlxcKk5PTl9MVkFMVUVf RVhQUiA8cy5wdHI+IFxcXFtsZW46IDY0XFxcXVxcKSBtYXBcXChwdF9yZWFkb25seSxhdHRhY2hf ZGV0YWNoOnMucHRyIFxcXFtiaWFzOiAwXFxcXVxcKSBtYXBcXChyZWFkb25seSx0bzp4XFxcWzBc XFxdIFxcXFtsZW46IDEyOFxcXF1cXCkgbWFwXFwocHRfcmVhZG9ubHksZmlyc3Rwcml2YXRlOngg XFxcW3BvaW50ZXIgYXNzaWduLCBiaWFzOiAwXFxcXVxcKSIgMSAib3JpZ2luYWwiIHsgdGFyZ2V0 IHsgYysrIH0gfSB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAi KD9uKSNwcmFnbWEgYWNjIGNhY2hlIFxcKHJlYWRvbmx5OnhcXFxbMFxcXF0gXFxcW2xlbjogMTI4 XFxcXVxcKTskIiAxICJvcmlnaW5hbCIgfSB9ICovCiAKIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vZ29hY2MvcmVhZG9ubHktMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vZ29hY2MvcmVhZG9ubHktMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5kMzJkMzM2MjAwMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL2dvYWNjL3JlYWRvbmx5LTIuYwpAQCAtMCwwICsxLDE1IEBACisvKiB7IGRn LWFkZGl0aW9uYWwtb3B0aW9ucyAiLU8gLWZkdW1wLXRyZWUtZnJlIiB9ICovCisKKyNwcmFnbWEg YWNjIHJvdXRpbmUKK2V4dGVybiB2b2lkIGZvbyAoaW50ICpwdHIsIGludCB2YWwpOworCitpbnQg bWFpbiAodm9pZCkKK3sKKyAgaW50IHIsIGFbMzJdOworICAjcHJhZ21hIGFjYyBwYXJhbGxlbCBj b3B5aW4ocmVhZG9ubHk6IGFbOjMyXSkgY29weW91dChyKQorICB7CisgICAgZm9vIChhLCBhWzhd KTsKKyAgICByID0gYVs4XTsKKyAgfQorfQorLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICJyXC5cW18wLTlcXSsgPSBNRU1cXFxbXFteX1xdK19cWzAtOVxdK1xcKHB0cm9cXClc XFxdXFxcWzhcXFxdOyIgMSAiZnJlMSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2dmb3J0cmFuLmRnL2dvYWNjL3JlYWRvbmx5LTEuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh bi5kZy9nb2FjYy9yZWFkb25seS0xLmY5MAppbmRleCAwNjlmZWMwYTBkNS4uMWU1ZTYwZjk3NDQg MTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29hY2MvcmVhZG9ubHktMS5m OTAKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb2FjYy9yZWFkb25seS0xLmY5MApA QCAtMjAsOCArMjAsOCBAQCBwcm9ncmFtIG1haW4KICAgISRhY2MgZW5kIHBhcmFsbGVsCiBlbmQg cHJvZ3JhbSBtYWluCiAKLSEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIoP24p I3ByYWdtYSBhY2MgcGFyYWxsZWwgbWFwXFwocmVhZG9ubHksdG86XFwqXFwoaW50ZWdlclxcKGtp bmQ9NFxcKVxcXFswOlxcXF0gXFwqXFwpIHBhcm0uKmRhdGEgXFxcW2xlbjogLitcXFxdXFwpIC4r IG1hcFxcKHJlYWRvbmx5LHRvOlxcKlxcKGludGVnZXJcXChraW5kPTRcXClcXFxbMDpcXFxdIFxc KlxcKSBwYXJtLipkYXRhIFxcXFtsZW46IC4rXFxcXVxcKSIgMSAib3JpZ2luYWwiIH0gfQotISB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIig/bikjcHJhZ21hIGFjYyBwYXJhbGxl bCBtYXBcXChyZWFkb25seSx0bzphXFxcW1xcKFxcKGludGVnZXJcXChraW5kPThcXClcXCkgcGFy bS4qZGF0YSAtIFxcKGludGVnZXJcXChraW5kPThcXClcXCkgJmFcXCkgLyA0XFxcXSBcXFxbbGVu OiAuK1xcXF1cXCkgLisgbWFwXFwocmVhZG9ubHksdG86YlxcXFtcXChcXChpbnRlZ2VyXFwoa2lu ZD04XFwpXFwpIHBhcm0uKmRhdGEgLSBcXChpbnRlZ2VyXFwoa2luZD04XFwpXFwpICZiXFwpIC8g NFxcXF0gXFxcW2xlbjogLitcXFxdXFwpIiAxICJvcmlnaW5hbCIgfSB9CishIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiKD9uKSNwcmFnbWEgYWNjIHBhcmFsbGVsIG1hcFxcKHJl YWRvbmx5LHRvOlxcKlxcKGludGVnZXJcXChraW5kPTRcXClcXFxbMDpcXFxdIFxcKlxcKSBwYXJt LipkYXRhIFxcXFtsZW46IC4rXFxcXVxcKSBtYXBcXChwdF9yZWFkb25seSxhbGxvYzphLjAgXFxc W3BvaW50ZXIgYXNzaWduLCBiaWFzOiBcXChpbnRlZ2VyXFwoa2luZD04XFwpXFwpIHBhcm0uKmRh dGEgLSBcXChpbnRlZ2VyXFwoa2luZD04XFwpXFwpIGEuMFxcXF1cXCkgbWFwXFwocmVhZG9ubHks dG86XFwqXFwoaW50ZWdlclxcKGtpbmQ9NFxcKVxcXFswOlxcXF0gXFwqXFwpIHBhcm0uKmRhdGEg XFxcW2xlbjogLitcXFxdXFwpIG1hcFxcKHB0X3JlYWRvbmx5LGFsbG9jOmIgXFxcW3BvaW50ZXIg YXNzaWduLCBiaWFzOiBcXChpbnRlZ2VyXFwoa2luZD04XFwpXFwpIHBhcm0uKmRhdGEgLSBcXChp bnRlZ2VyXFwoa2luZD04XFwpXFwpIGJcXFxdXFwpIiAxICJvcmlnaW5hbCIgfSB9CishIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiKD9uKSNwcmFnbWEgYWNjIHBhcmFsbGVsIG1h cFxcKHJlYWRvbmx5LHRvOmFcXFxbXFwoXFwoaW50ZWdlclxcKGtpbmQ9OFxcKVxcKSBwYXJtLipk YXRhIC0gXFwoaW50ZWdlclxcKGtpbmQ9OFxcKVxcKSAmYVxcKSAvIDRcXFxdIFxcXFtsZW46IC4r XFxcXVxcKSBtYXBcXChwdF9yZWFkb25seSxhbGxvYzphIFxcXFtwb2ludGVyIGFzc2lnbiwgYmlh czogXFwoaW50ZWdlclxcKGtpbmQ9OFxcKVxcKSBwYXJtLipkYXRhIC0gXFwoaW50ZWdlclxcKGtp bmQ9OFxcKVxcKSAmYVxcXF1cXCkgbWFwXFwocmVhZG9ubHksdG86YlxcXFtcXChcXChpbnRlZ2Vy XFwoa2luZD04XFwpXFwpIHBhcm0uKmRhdGEgLSBcXChpbnRlZ2VyXFwoa2luZD04XFwpXFwpICZi XFwpIC8gNFxcXF0gXFxcW2xlbjogLitcXFxdXFwpIG1hcFxcKHB0X3JlYWRvbmx5LGFsbG9jOmIg XFxcW3BvaW50ZXIgYXNzaWduLCBiaWFzOiBcXChpbnRlZ2VyXFwoa2luZD04XFwpXFwpIHBhcm0u KmRhdGEgLSBcXChpbnRlZ2VyXFwoa2luZD04XFwpXFwpICZiXFxcXVxcKSIgMSAib3JpZ2luYWwi IH0gfQogISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIig/bikjcHJhZ21hIGFj YyBjYWNoZSBcXChyZWFkb25seTpcXCpcXChpbnRlZ2VyXFwoa2luZD00XFwpXFxcWzA6XFxcXSBc XCpcXCkgcGFybS4qZGF0YSBcXFxbbGVuOiAuK1xcXF1cXCkgXFwocmVhZG9ubHk6XFwqXFwoaW50 ZWdlclxcKGtpbmQ9NFxcKVxcXFswOlxcXF0gXFwqXFwpIHBhcm0uKmRhdGEgXFxcW2xlbjogLitc XFxdXFwpOyIgMiAib3JpZ2luYWwiIH0gfQogCiAKZGlmZiAtLWdpdCBhL2djYy90cmVlLXByZXR0 eS1wcmludC5jYyBiL2djYy90cmVlLXByZXR0eS1wcmludC5jYwppbmRleCA5NjA0YzNlZWNjNS4u MWE4YjEyMWYzMGIgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLXByZXR0eS1wcmludC5jYworKysgYi9n Y2MvdHJlZS1wcmV0dHktcHJpbnQuY2MKQEAgLTkwNyw2ICs5MDcsOCBAQCBkdW1wX29tcF9jbGF1 c2UgKHByZXR0eV9wcmludGVyICpwcCwgdHJlZSBjbGF1c2UsIGludCBzcGMsIGR1bXBfZmxhZ3Nf dCBmbGFncykKICAgICAgIHBwX3N0cmluZyAocHAsICJtYXAoIik7CiAgICAgICBpZiAoT01QX0NM QVVTRV9NQVBfUkVBRE9OTFkgKGNsYXVzZSkpCiAJcHBfc3RyaW5nIChwcCwgInJlYWRvbmx5LCIp OworICAgICAgaWYgKE9NUF9DTEFVU0VfTUFQX1BPSU5UU19UT19SRUFET05MWSAoY2xhdXNlKSkK KwlwcF9zdHJpbmcgKHBwLCAicHRfcmVhZG9ubHksIik7CiAgICAgICBzd2l0Y2ggKE9NUF9DTEFV U0VfTUFQX0tJTkQgKGNsYXVzZSkpCiAJewogCWNhc2UgR09NUF9NQVBfQUxMT0M6CkBAIC0zNDM2 LDYgKzM0MzgsOCBAQCBkdW1wX2dlbmVyaWNfbm9kZSAocHJldHR5X3ByaW50ZXIgKnBwLCB0cmVl IG5vZGUsIGludCBzcGMsIGR1bXBfZmxhZ3NfdCBmbGFncywKIAlwcF9zdHJpbmcgKHBwLCAiKEQp Iik7CiAgICAgICBpZiAoU1NBX05BTUVfT0NDVVJTX0lOX0FCTk9STUFMX1BISSAobm9kZSkpCiAJ cHBfc3RyaW5nIChwcCwgIihhYikiKTsKKyAgICAgIGlmIChTU0FfTkFNRV9QT0lOVFNfVE9fUkVB RE9OTFlfTUVNT1JZIChub2RlKSkKKwlwcF9zdHJpbmcgKHBwLCAiKHB0cm8pIik7CiAgICAgICBi cmVhazsKIAogICAgIGNhc2UgV0lUSF9TSVpFX0VYUFI6CmRpZmYgLS1naXQgYS9nY2MvdHJlZS1z c2FuYW1lcy5jYyBiL2djYy90cmVlLXNzYW5hbWVzLmNjCmluZGV4IDIzMzg3YjkwZmUzLi4zMmQz NWEyOWRmYyAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtc3NhbmFtZXMuY2MKKysrIGIvZ2NjL3RyZWUt c3NhbmFtZXMuY2MKQEAgLTQwMiw2ICs0MDIsOSBAQCBtYWtlX3NzYV9uYW1lX2ZuIChzdHJ1Y3Qg ZnVuY3Rpb24gKmZuLCB0cmVlIHZhciwgZ2ltcGxlICpzdG10LAogICBlbHNlCiAgICAgU1NBX05B TUVfUkFOR0VfSU5GTyAodCkgPSBOVUxMOwogCisgIGlmIChWQVJfUCAodmFyKSAmJiBERUNMX1BP SU5UU19UT19SRUFET05MWSAodmFyKSkKKyAgICBTU0FfTkFNRV9QT0lOVFNfVE9fUkVBRE9OTFlf TUVNT1JZICh0KSA9IDE7CisKICAgU1NBX05BTUVfSU5fRlJFRV9MSVNUICh0KSA9IDA7CiAgIFNT QV9OQU1FX0lTX0RFRkFVTFRfREVGICh0KSA9IDA7CiAgIGluaXRfc3NhX25hbWVfaW1tX3VzZSAo dCk7CmRpZmYgLS1naXQgYS9nY2MvdHJlZS5oIGIvZ2NjL3RyZWUuaAppbmRleCBhYzU2M2RlMWZj My4uODgwZmZiMzY3YTMgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLmgKKysrIGIvZ2NjL3RyZWUuaApA QCAtMTAyMSw2ICsxMDIxLDEzIEBAIGV4dGVybiB2b2lkIG9tcF9jbGF1c2VfcmFuZ2VfY2hlY2tf ZmFpbGVkIChjb25zdF90cmVlLCBjb25zdCBjaGFyICosIGludCwKICNkZWZpbmUgREVDTF9ISURE RU5fU1RSSU5HX0xFTkdUSChOT0RFKSBcCiAgIChUUkVFX0NIRUNLIChOT0RFLCBQQVJNX0RFQ0wp LT5kZWNsX2NvbW1vbi5kZWNsX25vbnNoYXJlYWJsZV9mbGFnKQogCisvKiBJbiBhIFZBUl9ERUNM LCBzZXQgZm9yIHZhcmlhYmxlcyByZWdhcmRlZCBhcyBwb2ludGluZyB0byBtZW1vcnkgbm90IHdy aXR0ZW4KKyAgIHRvLiBTU0FfTkFNRV9QT0lOVFNfVE9fUkVBRE9OTFlfTUVNT1JZIGdldHMgc2V0 IGZvciBTU0FfTkFNRXMgY3JlYXRlZCBmcm9tCisgICBzdWNoIFZBUl9ERUNMcy4gQ3VycmVudGx5 IHVzZWQgYnkgT3BlbkFDQyAncmVhZG9ubHknIG1vZGlmaWVyIGluIGNvcHlpbgorICAgY2xhdXNl cy4gICovCisjZGVmaW5lIERFQ0xfUE9JTlRTX1RPX1JFQURPTkxZKE5PREUpIFwKKyAgKFRSRUVf Q0hFQ0sgKE5PREUsIFZBUl9ERUNMKS0+ZGVjbF9jb21tb24uZGVjbF9ub3RfZmxleGFycmF5KQor CiAvKiBJbiBhIENBTExfRVhQUiwgbWVhbnMgdGhhdCB0aGUgY2FsbCBpcyB0aGUganVtcCBmcm9t IGEgdGh1bmsgdG8gdGhlCiAgICB0aHVua2VkLXRvIGZ1bmN0aW9uLiAgQmUgY2FyZWZ1bCB0byBh dm9pZCB1c2luZyB0aGlzIG1hY3JvIHdoZW4gb25lIG9mIHRoZQogICAgbmV4dCB0d28gYXBwbGll cyBpbnN0ZWFkLiAgKi8KQEAgLTE4MTUsNiArMTgyMiwxMCBAQCBjbGFzcyBhdXRvX3N1cHByZXNz X2xvY2F0aW9uX3dyYXBwZXJzCiAjZGVmaW5lIE9NUF9DTEFVU0VfTUFQX1JFQURPTkxZKE5PREUp IFwKICAgVFJFRV9SRUFET05MWSAoT01QX0NMQVVTRV9TVUJDT0RFX0NIRUNLIChOT0RFLCBPTVBf Q0xBVVNFX01BUCkpCiAKKy8qIFNldCBpZiAnT01QX0NMQVVTRV9ERUNMIChOT0RFKScgcG9pbnRz IHRvIHJlYWQtb25seSBtZW1vcnkuICAqLworI2RlZmluZSBPTVBfQ0xBVVNFX01BUF9QT0lOVFNf VE9fUkVBRE9OTFkoTk9ERSkgXAorICBUUkVFX0NPTlNUQU5UIChPTVBfQ0xBVVNFX1NVQkNPREVf Q0hFQ0sgKE5PREUsIE9NUF9DTEFVU0VfTUFQKSkKKwogLyogU2FtZSBhcyBhYm92ZSwgZm9yIHVz ZSBpbiBPcGVuQUNDIGNhY2hlIGRpcmVjdGl2ZXMuICAqLwogI2RlZmluZSBPTVBfQ0xBVVNFX19D QUNIRV9fUkVBRE9OTFkoTk9ERSkgXAogICBUUkVFX1JFQURPTkxZIChPTVBfQ0xBVVNFX1NVQkNP REVfQ0hFQ0sgKE5PREUsIE9NUF9DTEFVU0VfX0NBQ0hFXykpCg== --------------yfVu489Sv3kPTKl0A6zPkD6j--