Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wG4eg-005r5z-2o for pgsql-hackers@arkaria.postgresql.org; Fri, 24 Apr 2026 00:44:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wG4ee-003ctH-0p for pgsql-hackers@arkaria.postgresql.org; Fri, 24 Apr 2026 00:44:24 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wG4ed-003ct7-0u for pgsql-hackers@lists.postgresql.org; Fri, 24 Apr 2026 00:44:23 +0000 Received: from dispatch1-usg1.ppe-hosted.com ([205.220.189.246]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wG4eX-00000002Uqy-2UJA for pgsql-hackers@lists.postgresql.org; Fri, 24 Apr 2026 00:44:21 +0000 Received: from m0423599.ppops.net (ip6-localhost [127.0.0.1]) by engine.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 151FE80068 for ; Fri, 24 Apr 2026 00:44:17 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11022140.outbound.protection.outlook.com [52.101.43.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mx1-usg1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id B8A9D200050 for ; Fri, 24 Apr 2026 00:44:15 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Q97dk4sh7Qn2MJbe11e/pn0k4RqElD3JyUJ9kpSNDcBFh+RnMzNUU8IqERN9vYvn/2XK1AYY8dP1XcZHjmwtUf+69dR8+lWdRleumH44W/8zflaa0nl+nWGS6/3SxnCUppqEX/Z5GQgtyBtJAGhQRG7/b6z24wq5IM3UWcAi4KCakuli87dHWnAQOlGzQJfTJ/HABPaCJZa0joEpvesDJo+pFvegb1HV7dSZfMGpar62NraMIEA4Nd1IhQuySUdwYRkt6xiT/OU2Df7o/FjL60LAcAMAh2AwSUeKrnxeG1LzuVwitsiOz3r2XShYZp3YrAokVPELihlLQm7+llQb8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=XT3DuitaVfbat9XmL1MhAg9VLVmvsmdcxKNz4xXi+7w=; b=M6Le3dGrM+dP5bRi5c5YDovEljJjPz0koBho8jF+ZBhySyrDsNku6w5J873NYw1v21XSHKIG4sXIB3m5E/BbznpHg+P1otNbMarO5+ESYe1ZGTxvVCr9Mod8fMJpq054wukZ1LsKydAHE8G4WK59gNBGB9k+aHdlhfwVSm9VU8TaP98Kcf5lTQP/CAtP415al/n89BsEiqorSOuFfK5lSiEsFKRHPi+9PtVxwwFAKuzUA31OXKo/zw0zurfpZiyaQNYlT198uvbNL5t2qAzgsXfkKfsRuVAmmoi/SBCpfKDz8dD5/k01m6vtgYEcJJIYbI+fScu2sdq+rS+evoqb3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=lamco.io; dmarc=pass action=none header.from=lamco.io; dkim=pass header.d=lamco.io; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=lamco.io; Received: from CH0PR07MB9822.namprd07.prod.outlook.com (2603:10b6:610:190::5) by MN2PR07MB7184.namprd07.prod.outlook.com (2603:10b6:208:1a9::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Fri, 24 Apr 2026 00:44:11 +0000 Received: from CH0PR07MB9822.namprd07.prod.outlook.com ([fe80::87f5:6b57:7b0c:97e0]) by CH0PR07MB9822.namprd07.prod.outlook.com ([fe80::87f5:6b57:7b0c:97e0%3]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026 00:44:11 +0000 Content-Type: multipart/mixed; boundary="===============6838725020337159308==" From: Greg Lamberson To: pgsql-hackers@lists.postgresql.org Subject: Re: Extensible sync handler registration (register_sync_handler) Date: Thu, 23 Apr 2026 19:44:08 -0500 Message-ID: <177699144837.2925.1505658927335705957@lamco.io> In-Reply-To: References: X-ClientProxiedBy: CH5PR02CA0016.namprd02.prod.outlook.com (2603:10b6:610:1ed::13) To CH0PR07MB9822.namprd07.prod.outlook.com (2603:10b6:610:190::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH0PR07MB9822:EE_|MN2PR07MB7184:EE_ X-MS-Office365-Filtering-Correlation-Id: 72fa711b-7be0-4837-f114-08dea19a99be X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|6049299003|376014|366016|1800799024|10070799003|4053099003|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: RXAy8soM4g5A/YsQ9ygHweGK/b/hrKlcLcoAWvkganURj2DCoOHvCCMYcifkdmeot3HL0Yp5tQvyTeA1lGv6Uy3UovM6/nDXRR1QAFOBfmqTCAMZTCIdpFUrvBUe5XDRZXO2Osq3sggwxJeeL4cG7ot7YDuh9O0/IafXGooFOQs8Y90DFJ1emdQKbW0PIE2MWXjVVw6KpPxHyyEw5L4gOjTV7Y4Pp7LJAgFDW4Pyq/NRJl/JrqtGD+4JWXT2RVdgDuj0eeUP2RzUgwgnG4KoVH0hFLrjXoiaLuK+R4D14sINoG4M7mF0mM3wVyxCmkBi5Xt3rXhKvsShdmWk1VtW2d0Ik/hjOv1VTnx6rgXIBNzuVoLo5rAjmgrkNwITqhfAD1k0XSlKb5PndJBmn/pqs6Ez24PK0msx10+XoRBuOoapnvbjEHfl34SvlrBfbZ1Psr2vE8dfXaz5LllDXei5UMc3zS+n75QvMSIMUH2qug3hhsu9Xpp99CVP9foj5fJvrE4/82vMiGfdrJY6bhs/wBPCmLEbXIiButCqbd1NzGCwqHJvAf7Zb7CXLZsxIo0S+1lkcBIkrHI6ZZXKt27JMzu5CDWSomTnxijemBjn+qkYY9H5aTi+J1LkwjL2p0ey0ogJssifCX/6AiGjaWZ3MfAHFxFmqmqJVQoUyJOkOHw44sYIwYFLiHaYzOcl1gwhq1KKEG1ZcKr1Wep8QUdIw/wWtd7bxXqjfEdFTxq7ELk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR07MB9822.namprd07.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(6049299003)(376014)(366016)(1800799024)(10070799003)(4053099003)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aTU2ZnNNNUJodDlXcEdjL1ZjeW9Fam10Z2lSRTc3aGcrUzV1dG0wMWN2b0ph?= =?utf-8?B?dlU2Q2F1Mm11RVlkRWdXU0VFcjhWdE5lZkYyWUcrV1BDcXI1NkZuVVJmcEwx?= =?utf-8?B?QmhyQ2liV1gxOXJIN0lzc1haZzVsMG5OTGw5bWVEM2xRM1ZycmpCY09QTWIr?= =?utf-8?B?ZThmRUtIRzl6UEkyRys0dHJBS0NnRHBTSHVia0R1OWlWNDdvUW1GK0d5U00v?= =?utf-8?B?dGlFSVVDOStscnRZT0NDcFlxcFlrOXVLbHk2R1QvZkxOZndtbUg2cEo4V21u?= =?utf-8?B?THJERHNZclVJYWxBY3VZeDNsVTR4RDFaVmh2YXZuMUJ0dmIxaFlRR0pIKzZG?= =?utf-8?B?T0FqaldIalMvUG5JNDR4S3lSRnp0U0RVczhqbFdrMXJueWJKSzZNWVJEenc1?= =?utf-8?B?SzFJSUFOWDE2dDA2OGNhYm5RREs3UksxWnZ4M040S0ltdmJQNEtNYUM0aTVG?= =?utf-8?B?SFVxbmVDVkQrWkVJZ3c3UWtWYy8xS3MrcFk1bHdSWkZOMjNHRkJnd0l5empG?= =?utf-8?B?Y21rdWc4VVYxS2lvYW0veTNJT2VmdS8rQWRyZXFEajhobGlmWVIyOE1HMGxZ?= =?utf-8?B?NzZzWlg5eWMvRmFLSEVMbjM4cHZDVlJGdjE0Tlc1Q240OWU4Z1YxRThTMkNU?= =?utf-8?B?bzRDb0xGM3h1bzFmSFZNZTVqUFhnQVdpNFlscUl1b1c5bUFnMVhpM0hrYnI0?= =?utf-8?B?Y2t1R0RVazRlK0JvN2VkZENZODdxQ3U4WHhmM0hiYVVTci9SdVdkYkRxZWhI?= =?utf-8?B?MlFZTTM5cmtsUE03bWNFTEtxZlhrRzFSTzU4dUxRRGgwczhwb3NuNlpOaHJQ?= =?utf-8?B?SnJuc2lmYXQ1ZDBnZ0xyU1l2NExTMHpnak1TcUNNSlhYdDdDL2hnM2c5cWlx?= =?utf-8?B?K1U4N1N0NXNPTGY0SFl1WFp4UVdaeUVOcWxwcnc3b0xtZVZFKzNoQWsvTEph?= =?utf-8?B?QXhPQ01Pc0NwZ3FvUm5xZjE0KzQraGliWU5rY2phSkt4azY0M3R4YjRWVHpO?= =?utf-8?B?RVl4WWx3RTkyVzV0ZUwwQURzSE1CWnBkaVBycWZvcGtXLzA4SkNKSGc2aWFt?= =?utf-8?B?Vmc5bHRkWGxLNTRWN0xDSlhmMkl4SkpiaGJVVDU0OXNmb0NPdkxzU0x1aUpS?= =?utf-8?B?Q1FFWTUwTE9wTUE4RWhGMmhCdDZaZ1JET29EWTdqNm5lVFhXYytuUXRIN3Nk?= =?utf-8?B?TGp0bkpqYWVBTlo5eVdrSlQ1bzR4M2ZldkJUTjlKMGZua1NEanV0RloyQkZs?= =?utf-8?B?RkRjbit2RFVlUXBHTVE1L3owTXJaU3poZEZjcVJudHdJOFdhSmhxSWE0YUN2?= =?utf-8?B?TE9OUnM5UnBOcGZVVDRncHNleFlXVFRkelN2eFB2eVE4eFpPWm0vOVVlR1dU?= =?utf-8?B?RlFvMDVCbW5xTkZIQlJkcTFjRXhGUVpXZnMwWUZzdUZ2aVBVMldxSW5McTdJ?= =?utf-8?B?c3N0N2pvM3czUW0rSFEvb0I5aHJYaHByQkhRT0VMQU1XOWtOcitwZ0UxMVBp?= =?utf-8?B?S3A5aENVbjBMa2JJM29seGhCQ05yVElRdFpQeThNSHBhV2Noa21raDRDMkFC?= =?utf-8?B?aXh6eHFaOStyQ0dxcENUcTZXcmZ0YW1JVXJEV08rWjNNd3Z6bjJsd1RvaFRE?= =?utf-8?B?ZDd0Mm9pK2t4YzlNdlFkbkh3Nk5mTmkvQTFmcGE0d2hab2JNeUhXdWFwQk1o?= =?utf-8?B?ajJFcVlQVEFJaWl1eU1TWC92S3BuR0N0bVlxTTl0TCtvdURCS2dKMFk0TTJT?= =?utf-8?B?Si8yYVF5QmZQZ25aYktxcGFMTXVRQ0huelBIb2oyL1VWSzI0M3VOdS9vdWJl?= =?utf-8?B?M1JvbWFZSVBVS0tFVFBZSDZXbW9zR29XWGZtYjVOd3lsNk9tbFN5dmVrZXZM?= =?utf-8?B?cS8wZjFoYm9RNnY4UmJPU1FrcWFwcHFSWHRRMVNyelhkbGM4N0llaEJueUp3?= =?utf-8?B?cFlnbS9rMzdINVdMdlRBblA1RlBXbi84NGlnanIxeDRhekVqTWliRmRuMzlw?= =?utf-8?B?eVBra0Ixek95OXBoREpjOExNbGhRZFRraVVEVHlTUDRNSWU5ZCt4Zy9DSFlJ?= =?utf-8?B?QlI5WDRlY0JmR0tldmJXSDV2YTBiNWhQODg4QTN3bVlDTk5MNFJUVzNLamdq?= =?utf-8?B?TWtvQVdxMkF1RFdiNFpXRTBDVFBlL1ZxTmdYNGxUS3IrRmdzaG9wMXN6R1l4?= =?utf-8?B?Sjl5N0x4UTh5NFFHM1NnWDdRbkhpRnVNZEp5STkrRmkxbmJoSXJsS21TclpD?= =?utf-8?B?dnlQdm84YXRzOGNvVFo4bi82SWFRc3lhamM1WnNuTi90aFlWQUl3YVphRmdV?= =?utf-8?B?NjdhWGFyVExNSzR6WVJsT0gxOUtxUFE0SElVckNuMkxTbVFlZGwvdz09?= X-Exchange-RoutingPolicyChecked: cCE/JNDc9fRfn+iqZLy6Crk9SWTuD9kS1UD4LIqAjIawdjZwaS0UYHAq0euTlCp4WPe6BFCQaa5h2aNkwurCsrE9A6RVSwyiwbdkPW62ky5lOMilo7NHXjWu/36GKus3HTEqei4s2YTYEFcfHCXgoZLvybyWlWOLoe+kDmsGzp5YawTeBJOfVW+5hNNOkwA79UUd5wmKMrEN4xmIUE07H+NyAFBbs/p8sjJY73voj/lXEUXu/eUHr76owKlLMmdSbSs6G+3jHIU/muL0ysf4DU5DrStRY2hEEe4ZqSePf10endT76rjW0A+RGuvKgXmWd39yTY6HrqLg/h28PM3y2w== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 1RCBaGfztT2hP4YHb14ekRB9mGWIzLa9n4ctzdEFcqBm5lyMxHQNZp4Bagt4MdJhsSk8JP/ucKry5CbmXEvDwGnH/I1JmdWXkh/Kzyj4LBWdN9P0e05GfRyMT+6CYr1f0X+6OvPG4qC6he6qV61mbLwBzDPZX+FsLPYFU66R72XkWJ0OxMFZ7OEFaGlH6fu66/Mp6l5wKlK1QoeSTvxDJwik856e7zKYMPTQiAHKxHvdkoeT7iJumAxKY0pwIJwVQlxWyN8nHFgQ1AQDnzWMWSwphYBl53GRVkVGbQEjVuMvjKd0dzHkJAvEVyHRdY2BzCD8gTaFlZr+9d3eALBck6bNthuW/YMijRgK1noy0Zq0aFrJhXSqaiIBMqJkbHypXRH3lbZtBJnoB1r1hEfAnUvrO2x84qps0pcF1suBIcBvWe2g0bKKOF/D6vgNDmy14iyYYPU3Q4be8AIe/NgG7guE6FD1NfYtgu7ibzl5KoDVxoB1l2x7uoxc1L/vuYbPgNMz+FdfnqsQLdBPkzfll/BY+Y4xQpI8Cae8D8htzJ9F/sPZ7SUX69ITAqocMbvSF/6B0iRV90DQCo0CL37VAhf9X63Mjalwxz2pbSxy/Vs= X-OriginatorOrg: lamco.io X-MS-Exchange-CrossTenant-Network-Message-Id: 72fa711b-7be0-4837-f114-08dea19a99be X-MS-Exchange-CrossTenant-AuthSource: CH0PR07MB9822.namprd07.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2026 00:44:11.3662 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 41970caf-9d15-4ba7-bce3-02b104df56b0 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: alK7wXCfoJVTmaPDpQWuQd2i2n6vf8Y6cFEiowAqnJwJmXFj94gGJ3dWUi4X2zIS X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR07MB7184 X-MDID: 1776991456-KAySBBzYx5xQ X-PPE-STACK: {"stack":"usg1"} X-MDID-O: usg1;us-east-1f;1776991456;KAySBBzYx5xQ;;e34c3635e614851549967d21ccd44f17 X-PPE-TRUSTED: V=1;DIR=OUT; List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============6838725020337159308== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 djIgYXR0YWNoZWQuICBXaGlsZSBydW5uaW5nIHRoZSB2MSBwYXRjaGVzIHVuZGVyIENGQm90IChh bmQKc3Vic2VxdWVudGx5IHJlcHJvZHVjaW5nIGxvY2FsbHkgd2l0aCBDUFBGTEFHUz0tREVYRUNf QkFDS0VORCBvbgpMaW51eCksIEkgZGlzY292ZXJlZCB0aGF0IHYxIG1pcy1oYW5kbGVzIHByb2Nl c3NlcyB0aGF0IGRvIG5vdAppbmhlcml0IHRoZSBwb3N0bWFzdGVyJ3MgYWRkcmVzcyBzcGFjZSB2 aWEgZm9yaygpLiAgdjIgZml4ZXMgdGhpcwphbmQgYWxzbyBhZGRyZXNzZXMgc2V2ZXJhbCB1bnJl bGF0ZWQgaXRlbXMgdGhhdCBJIHNob3VsZCBoYXZlCmNhdWdodCBpbiB2MSBzZWxmLXJldmlldy4K CkNoYW5nZXMgaW4gdjItMDAwMToKCiogRVhFQ19CQUNLRU5EIGxvYWQtb3JkZXIgZml4LiAgT24g cGxhdGZvcm1zIHdpdGhvdXQgZm9yaygpCiAgKFdpbmRvd3MsIHBsdXMgYW55IGJ1aWxkIHdpdGgg Q1BQRkxBR1M9LURFWEVDX0JBQ0tFTkQpLCBlYWNoCiAgY2hpbGQgcHJvY2VzcyByZS1ydW5zIHBy b2Nlc3Nfc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzKCkgaW4gaXRzCiAgb3duIGZyZXNoIGFkZHJl c3Mgc3BhY2UuICBJbiB2MSwgZXh0ZW5zaW9uIF9QR19pbml0KCkgY291bGQKICByZWFjaCByZWdp c3Rlcl9zeW5jX2hhbmRsZXIoKSBiZWZvcmUgdGhlIGNoaWxkIGhhZCBjYWxsZWQKICBJbml0U3lu YygpLCBzbyB0aGUgZmlyc3QgZHluYW1pYyByZWdpc3RyYXRpb24gbGFuZGVkIGF0IElEIDAsCiAg Y29sbGlkaW5nIHdpdGggU1lOQ19IQU5ETEVSX01ELCBhbmQgdGhlIGlkZW1wb3RlbnQgZ3VhcmQg aW4KICBJbml0U3luY0hhbmRsZXJzKCkgKCJpZiBOU3luY0hhbmRsZXJzICE9IDAgcmV0dXJuIikg dGhlbgogIHN1cHByZXNzZWQgYnVpbHQtaW4gcmVnaXN0cmF0aW9uIGVudGlyZWx5IGZvciB0aGUg cmVzdCBvZiB0aGF0CiAgcHJvY2VzcydzIGxpZmV0aW1lLiAgdjIgY2FsbHMgSW5pdFN5bmNIYW5k bGVycygpIGF0IHRoZSB0b3Agb2YKICByZWdpc3Rlcl9zeW5jX2hhbmRsZXIoKSBhbmQgcmVwbGFj ZXMgdGhlIGNvdW50ZXItYmFzZWQgZ3VhcmQKICB3aXRoIGFuIGV4cGxpY2l0IGJ1aWx0aW5fc3lu Y19oYW5kbGVyc19yZWdpc3RlcmVkIGZsYWcuICBUaGUKICB2MSB0ZXN0IHRoYXQgcmVwb3J0ZWQg ImdvdCBpZD0wIiBvbiBXaW5kb3dzIGFuZCBGcmVlQlNEIENGQm90CiAgbm93IHJlcG9ydHMgaWQ9 NSB1bmRlciBib3RoIGZvcmsgYW5kIEVYRUNfQkFDS0VORC4KCiogRG9jdW1lbnRhdGlvbi4gIHYx IHNoaXBwZWQgd2l0aG91dCBTR01MIGRvY3M7IHYyIGFkZHMKICBkb2Mvc3JjL3NnbWwvY3VzdG9t LXN5bmMtaGFuZGxlci5zZ21sIChtb2RlbGVkIG9uCiAgY3VzdG9tLXJtZ3Iuc2dtbCkgYW5kIHJl Z2lzdGVycyBpdCBpbiBmaWxlbGlzdC5zZ21sIGFuZAogIHBvc3RncmVzLnNnbWwuICBUaGUgZG9j IGJ1aWxkIGlzIGNsZWFuLgoKKiBFcnJvci1tZXNzYWdlIHN0eWxlLiAgVGhlIGZvdXIgZXJybXNn KCkgc3RyaW5ncyB0aGF0IGVtYmVkZGVkCiAgZnVuY3Rpb24gbmFtZXMgKCJyZWdpc3Rlcl9zeW5j X2hhbmRsZXI6IC4uLiIsCiAgInRlc3Rfc3luY19oYW5kbGVyOiAuLi4iKSBhcmUgcmV3b3JkZWQg cGVyIHRoZSBlcnJvci1tZXNzYWdlCiAgc3R5bGUgZ3VpZGUuICBUaGUgdHdvIGRldmVsb3Blci1i dWcgcGF0aHMgdGhhdCB1c2VkCiAgRVJSQ09ERV9OVUxMX1ZBTFVFX05PVF9BTExPV0VEIGFyZSBj aGFuZ2VkIHRvIGVsb2coRkFUQUwsIC4uLikKICBzaW5jZSB0aGV5IGNhbm5vdCBiZSB0cmlnZ2Vy ZWQgZnJvbSBTUUwuCgoqIFN0YWxlIGNvbW1lbnQuICBUaGUgdjEgY29tbWVudCBpbgogIHN5bmNf aGFuZGxlcl9yZWdpc3Rlcl9pbnRlcm5hbCgpIGNsYWltaW5nICJmb3JrKCkgaXMgZnVsbAogIFBP U0lYIGJhcnJpZXIiIHdhcyBhY2N1cmF0ZSBvbmx5IG9uIGZvcmstYmFzZWQgcGxhdGZvcm1zLgog IFJld3JpdHRlbiB0byBjb3ZlciBib3RoIGZvcmsgYW5kIEVYRUNfQkFDS0VORCBwYXRocy4KCiog U1lOQ19IQU5ETEVSX05PTkUgZW51bSB2YWx1ZS4gIFByZXZpb3VzbHkgaW1wbGljaXQgNSAoYWZ0 ZXIKICBNVUxUSVhBQ1RfTUVNQkVSPTQpLCBjaGFuZ2VkIGluIHYxIHRvIGV4cGxpY2l0IC0xIHNv IHRoYXQgYQogIHNlbnRpbmVsICJubyBoYW5kbGVyIiB2YWx1ZSBjYW5ub3QgYmUgY29uZnVzZWQg d2l0aCBhIHZhbGlkCiAgaW5kZXguICBJIGF1ZGl0ZWQgdXNlcyBpbiBtYXN0ZXI6IHRoZSBvbmx5 IHJlZmVyZW5jZXMgYXJlCiAgIT0gY29tcGFyaXNvbnMgaW4gc2xydS5jIGF0IGxpbmVzIDEwNTcs IDE0NDIsIGFuZCAxNTU4LCB3aGljaAogIGFyZSB2YWx1ZS1hZ25vc3RpYy4gIEZsYWdnaW5nIGV4 cGxpY2l0bHkgaGVyZSBiZWNhdXNlIGl0IGlzCiAgYW4gQUJJLXZpc2libGUgZW51bSB2YWx1ZSBj aGFuZ2UuCgpDaGFuZ2VzIGluIHYyLTAwMDI6CgoqIEVycm9yLW1lc3NhZ2Ugc3R5bGUgZml4ZXMg aW4gdGhlIHRlc3QgbW9kdWxlIHRvIG1hdGNoIHRoZQogIGNvcmUtc2lkZSBjbGVhbnVwcyBhYm92 ZS4KKiBwZ2luZGVudCBwYXNzIChyZXF1aXJlZCBhZGRpbmcgVHNoU2hhcmVkU3RhdGUgdmlhCiAg LS1saXN0LW9mLXR5cGVkZWZzIHNpbmNlIGl0IGlzIGEgdGVzdC1tb2R1bGUtbG9jYWwgdHlwZSku CgpWZXJpZmljYXRpb24gZm9yIHYyOgoKKiBtYWtlIGNoZWNrLXdvcmxkIHVuZGVyIGF1dG9jb25m IG9uIExpbnV4LCBmb3JrLWJhc2VkOiBhbGwgUEFTUwoqIG1ha2UgY2hlY2std29ybGQgdW5kZXIg YXV0b2NvbmYgb24gTGludXgsCiAgQ1BQRkxBR1M9LURFWEVDX0JBQ0tFTkQ6IGFsbCBQQVNTCiog bWVzb24gdGVzdCB1bmRlciBMaW51eCB3aXRoIGNfYXJncz0nLURFWEVDX0JBQ0tFTkQnOgogIDM0 NCBPSyAvIDM0IFNLSVAgLyAwIEZBSUwKKiB0ZXN0X3N5bmNfaGFuZGxlci8wMDFfYmFzaWM6IDUv NSB1bmRlciBhbGwgZm91ciBjb21iaW5hdGlvbnMKKiBzcmMvdGVzdC9yZWNvdmVyeTogNTk3LzU5 NyB1bmRlciAtREVYRUNfQkFDS0VORAoqIHRlc3Rfc2xydTogMTgvMTggdW5kZXIgLURFWEVDX0JB Q0tFTkQgKFNMUlUgaXMgdGhlIG1haW4gdXNlcgogIG9mIFNZTkNfSEFORExFUl9OT05FOyB0aGUg ZW51bSB2YWx1ZSBjaGFuZ2UgaXMgc2FmZSkKKiBwZ2luZGVudCwgcGdwZXJsdGlkeSAoMjAyMzAz MDkpLCBwZ3Blcmxjcml0aWM6IGNsZWFuCiogaGVhZGVyc2NoZWNrIG9uIHNyYy9pbmNsdWRlL3N0 b3JhZ2Uvc3luYy5oIGluIHJlZ3VsYXIgYW5kCiAgLS1jcGx1c3BsdXMgbW9kZXM6IGNsZWFuCiog ZG9jL3NyYy9zZ21sIGJ1aWxkcyBjbGVhbmx5OyBuZXcgY2hhcHRlciByZW5kZXJzIGFzIGV4cGVj dGVkCgpJIGFwb2xvZ2l6ZSBmb3IgdGhlIHYxIHZlcmlmaWNhdGlvbiBnYXAuICB2MSdzICJtYWtl IGNoZWNrLXdvcmxkCmdyZWVuIiBjbGFpbSB3YXMgYWNjdXJhdGUgb24gZm9yay1iYXNlZCBMaW51 eCBvbmx5IGFuZCBkaWQgbm90CmV4ZXJjaXNlIEVYRUNfQkFDS0VORDsgdGhhdCBpcyB0aGUgc2lu Z2xlIG1vc3QgaW1wb3J0YW50IHJlYXNvbgp0aGUgV2luZG93cyBmYWlsdXJlIHNsaXBwZWQgdGhy b3VnaC4gIE15IHByZS1zdWJtaXNzaW9uIGNoZWNrbGlzdApub3cgaW5jbHVkZXMgdGhlIC1ERVhF Q19CQUNLRU5EIHBhdGguCgpUaGFua3MsCkdyZWcK --===============6838725020337159308== Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0001-Make-sync.c-syncsw-extensible-via-register_sync_h.patch" RnJvbSBjZDFjZDBlNjY4ZDZmN2Q3ZjMxNWZkMmU2YWE0MWI4MWM5YTRiNzI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIExhbWJlcnNvbiA8Z3JlZ0BsYW1jby5pbz4KRGF0ZTog RnJpLCAxMCBBcHIgMjAyNiAwNzoyNzoxNCAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMS8yXSBN YWtlIHN5bmMuYyBzeW5jc3dbXSBleHRlbnNpYmxlIHZpYQogcmVnaXN0ZXJfc3luY19oYW5kbGVy KCkKCkludHJvZHVjZSBhIHB1YmxpYyBleHRlbnNpb24gQVBJLCByZWdpc3Rlcl9zeW5jX2hhbmRs ZXIoKSwgdGhhdCBsZXRzCmV4dGVuc2lvbnMgaW5zdGFsbCB0aGVpciBvd24gZW50cmllcyBpbiB0 aGUgc3luYy5jIGRpc3BhdGNoIHRhYmxlLgpUaGlzIGVuYWJsZXMgc3RvcmFnZS1yZWxhdGVkIGV4 dGVuc2lvbnMgdG8gcGFydGljaXBhdGUgaW4gdGhlCmNoZWNrcG9pbnQgZnN5bmMgcGlwZWxpbmUg d2l0aG91dCBmYWtpbmcgbWQuYyBzZWdtZW50cyBvciBieXBhc3NpbmcKc3luYy5jJ3MgcmVxdWVz dCBjb2FsZXNjaW5nIGFuZCBjYW5jZWxsYXRpb24gbWFjaGluZXJ5LgoKVGhlIHByZXZpb3VzbHkg c3RhdGljIHN5bmNzd1tdIGFycmF5IGJlY29tZXMgYSBoZWFwLWFsbG9jYXRlZApkaXNwYXRjaCB0 YWJsZSBwb3B1bGF0ZWQgaW4gdHdvIHBoYXNlczogdGhlIGZpdmUgYnVpbHQtaW4gaGFuZGxlcnMK KE1ELCBDTE9HLCBjb21taXRfdHMsIG11bHRpeGFjdF9vZmZzZXQsIG11bHRpeGFjdF9tZW1iZXIp IGFyZQpyZWdpc3RlcmVkIHZpYSBJbml0U3luY0hhbmRsZXJzKCkgYmVmb3JlIHByb2Nlc3Nfc2hh cmVkX3ByZWxvYWRfLQpsaWJyYXJpZXMoKSwgYW5kIGV4dGVuc2lvbiBfUEdfaW5pdCgpIGNhbGxz IHJlY2VpdmUgc2VxdWVudGlhbGx5CmFzc2lnbmVkIElEcyBzdGFydGluZyBhdCBTWU5DX0hBTkRM RVJfRklSU1RfRFlOQU1JQy4gIFJlZ2lzdHJhdGlvbgppcyBmb3JiaWRkZW4gYWZ0ZXIgcHJvY2Vz c19zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNfZG9uZSBpcyBzZXQuCgpJbml0U3luY0hhbmRsZXJz KCkgaXMgY2FsbGVkIGZyb20gYm90aCBQb3N0bWFzdGVyTWFpbigpIChmb3IgdGhlCmZvcmsoKSBw YXRoKSBhbmQgZnJvbSByZWdpc3Rlcl9zeW5jX2hhbmRsZXIoKSBpdHNlbGYgKGZvciB0aGUKRVhF Q19CQUNLRU5EIHBhdGgsIHdoZXJlIGVhY2ggY2hpbGQgcmUtcnVucyBzaGFyZWRfcHJlbG9hZF9s aWJyYXJpZXMKaW4gaXRzIG93biBhZGRyZXNzIHNwYWNlIGFuZCBtYXkgcmVhY2ggYW4gZXh0ZW5z aW9uJ3MgcmVnaXN0cmF0aW9uCmNhbGwgYmVmb3JlIGl0IGhhcyBjYWxsZWQgSW5pdFN5bmMoKSku ICBBbiBleHBsaWNpdApidWlsdGluX3N5bmNfaGFuZGxlcnNfcmVnaXN0ZXJlZCBmbGFnIGd1YXJk cyBhZ2FpbnN0IHJlcGVhdGVkCmJ1aWx0LWluIHJlZ2lzdHJhdGlvbi4KClNZTkNfSEFORExFUl9O T05FIGlzIGNoYW5nZWQgZnJvbSBpdHMgcHJldmlvdXMgaW1wbGljaXQgdmFsdWUgb2YgNQp0byBh biBleHBsaWNpdCAtMSBzbyB0aGF0IHRoZSAibm8gaGFuZGxlciIgc2VudGluZWwgY2Fubm90IGJl CmNvbmZ1c2VkIHdpdGggYSB2YWxpZCBoYW5kbGVyIGluZGV4LiAgVGhlIG9ubHkgY29uc3VtZXJz IGluCmNvcmUgYXJlIHZhbHVlLWFnbm9zdGljICE9IGNvbXBhcmlzb25zIGluIHNscnUuYy4KCkRv Y3VtZW50YXRpb246IGRvYy9zcmMvc2dtbC9jdXN0b20tc3luYy1oYW5kbGVyLnNnbWwsIG1vZGVs ZWQgb24KZG9jL3NyYy9zZ21sL2N1c3RvbS1ybWdyLnNnbWwuCgpEaXNjdXNzaW9uOiBodHRwczov L3Bvc3Rnci5lcy9tL0lBMVBSMDdNQjk4MzA3MjUyMUVFN0ZERUU5ODkwMjUzNEE5NTkyQElBMVBS MDdNQjk4MzAubmFtcHJkMDcucHJvZC5vdXRsb29rLmNvbQotLS0KIGRvYy9zcmMvc2dtbC9jdXN0 b20tc3luYy1oYW5kbGVyLnNnbWwgfCAxMTggKysrKysrKysrKysKIGRvYy9zcmMvc2dtbC9maWxl bGlzdC5zZ21sICAgICAgICAgICAgfCAgIDEgKwogZG9jL3NyYy9zZ21sL3Bvc3RncmVzLnNnbWwg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAg IHwgIDExICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMgICAgICAgfCAyNzggKysr KysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3luYy5oICAgICAg ICAgICAgfCAgNjQgKysrKystCiA2IGZpbGVzIGNoYW5nZWQsIDQzMiBpbnNlcnRpb25zKCspLCA0 MSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2Mvc3JjL3NnbWwvY3VzdG9tLXN5 bmMtaGFuZGxlci5zZ21sCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2N1c3RvbS1zeW5jLWhh bmRsZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC9jdXN0b20tc3luYy1oYW5kbGVyLnNnbWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZkOTVlZmU3NDQwCi0tLSAvZGV2L251 bGwKKysrIGIvZG9jL3NyYy9zZ21sL2N1c3RvbS1zeW5jLWhhbmRsZXIuc2dtbApAQCAtMCwwICsx LDExOCBAQAorPCEtLSBkb2Mvc3JjL3NnbWwvY3VzdG9tLXN5bmMtaGFuZGxlci5zZ21sIC0tPgor Cis8Y2hhcHRlciBpZD0iY3VzdG9tLXN5bmMtaGFuZGxlciI+CisgPHRpdGxlPkN1c3RvbSBTeW5j IEhhbmRsZXJzIGZvciBFeHRlbnNpb25zPC90aXRsZT4KKworIDxwYXJhPgorICBUaGlzIGNoYXB0 ZXIgZXhwbGFpbnMgdGhlIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBjb3JlCisgIDxwcm9kdWN0bmFt ZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gc3lzdGVtIGFuZCBjdXN0b20gc3luYyBoYW5kbGVy cywKKyAgd2hpY2ggZW5hYmxlIGV4dGVuc2lvbnMgdG8gcGFydGljaXBhdGUgaW4gdGhlIGNoZWNr cG9pbnQKKyAgPGZ1bmN0aW9uPmZzeW5jPC9mdW5jdGlvbj4gcGlwZWxpbmUgaW1wbGVtZW50ZWQg aW4KKyAgPGZpbGVuYW1lPnNyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmM8L2ZpbGVuYW1l Pi4KKyA8L3BhcmE+CisKKyA8cGFyYT4KKyAgRXh0ZW5zaW9ucyB0aGF0IG1hbmFnZSBzdG9yYWdl IG91dHNpZGUgdGhlIHN0YW5kYXJkIHJlbGF0aW9uLWZpbGUgbGF5b3V0LAorICBzdWNoIGFzIGEg PGxpbmsgbGlua2VuZD0idGFibGVhbSI+VGFibGUgQWNjZXNzIE1ldGhvZDwvbGluaz4gdGhhdCBz dG9yZXMKKyAgaXRzIGRhdGEgaW4gYSBub24tZmlsZSBmb3JtYXQsIG1heSBuZWVkIHRoZWlyIGRh dGEgdG8gYmUKKyAgPGZ1bmN0aW9uPmZzeW5jPC9mdW5jdGlvbj5lZCBhdCBjaGVja3BvaW50IHRp bWUgaW4gdGhlIHNhbWUgbWFubmVyIGFzIHRoZQorICBidWlsdC1pbiBoYW5kbGVycyBkbyBmb3Ig cmVsYXRpb24gc2VnbWVudHMsIDxhY3JvbnltPkNMT0c8L2Fjcm9ueW0+LAorICA8c3RydWN0bmFt ZT5jb21taXRfdHM8L3N0cnVjdG5hbWU+LCBhbmQgbXVsdGl4YWN0IGRhdGEuICBBIGN1c3RvbSBz eW5jCisgIGhhbmRsZXIgbGV0cyBhbiBleHRlbnNpb24gcmVnaXN0ZXIgaXRzIG93biBzeW5jIGNh bGxiYWNrLCBwYXJ0aWNpcGF0ZSBpbgorICB0aGUgc2FtZSByZXF1ZXN0IGNvYWxlc2NpbmcgYW5k IGNhbmNlbGxhdGlvbiBtZWNoYW5pc21zLCBhbmQgYmVuZWZpdCBmcm9tCisgIHRoZSBjaGVja3Bv aW50ZXIncyBiYXRjaGluZyBhbmQgPHZhcm5hbWU+Y3ljbGVfY3RyPC92YXJuYW1lPiBzZW1hbnRp Y3MKKyAgd2l0aG91dCByZWltcGxlbWVudGluZyB0aGUgbWFjaGluZXJ5IG9yIGZha2luZyBpdHMg ZGF0YSBhcworICA8ZnVuY3Rpb24+bWQuYzwvZnVuY3Rpb24+IHNlZ21lbnRzLgorIDwvcGFyYT4K KworIDxwYXJhPgorICBUbyBjcmVhdGUgYSBjdXN0b20gc3luYyBoYW5kbGVyLCBmaXJzdCBkZWZp bmUgYQorICA8c3RydWN0bmFtZT5TeW5jT3BzPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUgY29udGFp bmluZyB0aGUgaGFuZGxlcgorICBjYWxsYmFja3MuICBUaGUgc3RydWN0dXJlIGlzIGRlZmluZWQg aW4KKyAgPGZpbGVuYW1lPnNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3luYy5oPC9maWxlbmFtZT46Cis8 cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVmIHN0cnVjdCBTeW5jT3BzCit7CisgICAgaW50ICAoKnN5 bmNfc3luY2ZpbGV0YWcpIChjb25zdCBGaWxlVGFnICpmdGFnLCBjaGFyICpwYXRoKTsKKyAgICBp bnQgICgqc3luY191bmxpbmtmaWxldGFnKSAoY29uc3QgRmlsZVRhZyAqZnRhZywgY2hhciAqcGF0 aCk7CisgICAgYm9vbCAoKnN5bmNfZmlsZXRhZ21hdGNoZXMpIChjb25zdCBGaWxlVGFnICpmdGFn LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmlsZVRhZyAqY2FuZGlk YXRlKTsKK30gU3luY09wczsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIE9ubHkgPHN0cnVjdGZpZWxk PnN5bmNfc3luY2ZpbGV0YWc8L3N0cnVjdGZpZWxkPiBpcyByZXF1aXJlZDsgdGhlIG90aGVyCisg IHR3byBwb2ludGVycyBtYXkgYmUgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gaWYgdGhlIGhhbmRs ZXIgZG9lcyBub3QKKyAgcGFydGljaXBhdGUgaW4gPGxpdGVyYWw+U1lOQ19VTkxJTktfUkVRVUVT VDwvbGl0ZXJhbD4gb3IKKyAgPGxpdGVyYWw+U1lOQ19GSUxURVJfUkVRVUVTVDwvbGl0ZXJhbD4g Zmxvd3MuICBUaGlzIG1pcnJvcnMgdGhlIGJ1aWx0LWluCisgIGhhbmRsZXJzIGZvciA8YWNyb255 bT5DTE9HPC9hY3JvbnltPiwgPHN0cnVjdG5hbWU+Y29tbWl0X3RzPC9zdHJ1Y3RuYW1lPiwKKyAg YW5kIG11bHRpeGFjdCBkYXRhLCB3aGljaCBvbmx5IGRlZmluZQorICA8c3RydWN0ZmllbGQ+c3lu Y19zeW5jZmlsZXRhZzwvc3RydWN0ZmllbGQ+LgorIDwvcGFyYT4KKworIDxwYXJhPgorICBUaGVu LCByZWdpc3RlciB0aGUgaGFuZGxlciBhbmQgcmVjb3JkIHRoZSByZXR1cm5lZCBoYW5kbGVyIElE OgorPHByb2dyYW1saXN0aW5nPgorZXh0ZXJuIGludDE2IHJlZ2lzdGVyX3N5bmNfaGFuZGxlcihj b25zdCBTeW5jT3BzICpvcHMsIGNvbnN0IGNoYXIgKm5hbWUpOworPC9wcm9ncmFtbGlzdGluZz4K KyAgPGZ1bmN0aW9uPnJlZ2lzdGVyX3N5bmNfaGFuZGxlcjwvZnVuY3Rpb24+IG11c3QgYmUgY2Fs bGVkIGZyb20gdGhlCisgIGV4dGVuc2lvbiBtb2R1bGUncyA8bGluayBsaW5rZW5kPSJ4ZnVuYy1j LWR5bmxvYWQiPl9QR19pbml0PC9saW5rPgorICBmdW5jdGlvbiB3aGlsZSA8dmFybmFtZT5zaGFy ZWRfcHJlbG9hZF9saWJyYXJpZXM8L3Zhcm5hbWU+IGlzIHN0aWxsIGJlaW5nCisgIGxvYWRlZDsg Y2FsbHMgbWFkZSBhZnRlciB0aGF0IHBoYXNlIGhhcyBjb21wbGV0ZWQgcmFpc2UKKyAgPGxpdGVy YWw+RkFUQUw8L2xpdGVyYWw+LiAgVGhlIGV4dGVuc2lvbiBtdXN0IHRoZXJlZm9yZSBiZSBwbGFj ZWQgaW4KKyAgPHhyZWYgbGlua2VuZD0iZ3VjLXNoYXJlZC1wcmVsb2FkLWxpYnJhcmllcyIvPi4K KyA8L3BhcmE+CisKKyA8cGFyYT4KKyAgVGhlIHJldHVybmVkIDx0eXBlPmludDE2PC90eXBlPiBo YW5kbGVyIElEIGlzIHRoZSB2YWx1ZSB0aGUgZXh0ZW5zaW9uCisgIHN0b3JlcyBpbiA8c3RydWN0 ZmllbGQ+RmlsZVRhZy5oYW5kbGVyPC9zdHJ1Y3RmaWVsZD4gd2hlbiBxdWV1aW5nIHN5bmMKKyAg cmVxdWVzdHMgdmlhIDxmdW5jdGlvbj5SZWdpc3RlclN5bmNSZXF1ZXN0PC9mdW5jdGlvbj4uICBF eHRlbnNpb24gaGFuZGxlcgorICBJRHMgYXJlIGFzc2lnbmVkIHNlcXVlbnRpYWxseSBzdGFydGlu ZyBhdAorICA8bGl0ZXJhbD5TWU5DX0hBTkRMRVJfRklSU1RfRFlOQU1JQzwvbGl0ZXJhbD4sIHdo aWNoIGlzIHRoZSBmaXJzdCB2YWx1ZQorICBhZnRlciB0aGUgYnVpbHQtaW4gaGFuZGxlciBJRHMg PGxpdGVyYWw+U1lOQ19IQU5ETEVSX01EPC9saXRlcmFsPiwKKyAgPGxpdGVyYWw+U1lOQ19IQU5E TEVSX0NMT0c8L2xpdGVyYWw+LAorICA8bGl0ZXJhbD5TWU5DX0hBTkRMRVJfQ09NTUlUX1RTPC9s aXRlcmFsPiwKKyAgPGxpdGVyYWw+U1lOQ19IQU5ETEVSX01VTFRJWEFDVF9PRkZTRVQ8L2xpdGVy YWw+LCBhbmQKKyAgPGxpdGVyYWw+U1lOQ19IQU5ETEVSX01VTFRJWEFDVF9NRU1CRVI8L2xpdGVy YWw+LiAgVGhlIGFzc2lnbmVkIElEIGlzCisgIHN0YWJsZSBmb3IgdGhlIGxpZmV0aW1lIG9mIGEg Z2l2ZW4gc2VydmVyIGNvbmZpZ3VyYXRpb24sIHRoYXQgaXMsIGl0CisgIGRvZXMgbm90IGNoYW5n ZSBiZXR3ZWVuIGJhY2tlbmRzLCB0aGUgY2hlY2twb2ludGVyLCBvciBhdXhpbGlhcnkKKyAgcHJv Y2Vzc2VzIHdpdGhpbiBhIHNpbmdsZSBwb3N0bWFzdGVyIGxpZmV0aW1lLiAgQmVjYXVzZSBzeW5j IHJlcXVlc3RzCisgIGxpdmUgb25seSBpbiB0aGUgY2hlY2twb2ludGVyJ3MgaW4tbWVtb3J5IHBl bmRpbmctb3BlcmF0aW9ucyBoYXNoIHRhYmxlCisgIGFuZCBhcmUgbm90IHBlcnNpc3RlZCBhY3Jv c3Mgc2VydmVyIHJlc3RhcnRzLCB0aGUgYXNzaWduZWQgSUQgZG9lcyBub3QKKyAgbmVlZCB0byBi ZSBzdGFibGUgYWNyb3NzIHJlc3RhcnRzIG9yIGFjcm9zcyBjaGFuZ2VzIHRvCisgIDx2YXJuYW1l PnNoYXJlZF9wcmVsb2FkX2xpYnJhcmllczwvdmFybmFtZT4uCisgPC9wYXJhPgorCisgPHBhcmE+ CisgIFRoZSA8c3RydWN0bmFtZT5GaWxlVGFnPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUgcGFzc2Vk IHRvIHRoZSBoYW5kbGVyCisgIGNhbGxiYWNrcyBoYXMgYSBzbWFsbCBmaXhlZCBsYXlvdXQgdGhh dCBhbGwgaGFuZGxlcnMgc2hhcmUuICBJdHMKKyAgY29udGVudHMgYXJlIG9wYXF1ZSB0byA8Zmls ZW5hbWU+c3luYy5jPC9maWxlbmFtZT47IGVhY2ggaGFuZGxlcgorICBpbnRlcnByZXRzIHRoZSBm aWVsZHMgYWNjb3JkaW5nIHRvIGl0cyBvd24gY29udmVudGlvbi4gIEJlY2F1c2UKKyAgPGZpbGVu YW1lPnN5bmMuYzwvZmlsZW5hbWU+IGRlZHVwbGljYXRlcyBwZW5kaW5nIHN5bmMgcmVxdWVzdHMg YnkKKyAgaGFzaGluZyB0aGUgcmF3IGJ5dGVzIG9mIHRoZSA8c3RydWN0bmFtZT5GaWxlVGFnPC9z dHJ1Y3RuYW1lPgorICAoPGxpdGVyYWw+SEFTSF9CTE9CUzwvbGl0ZXJhbD4pLCBldmVyeSBmaWVs ZCBpbmNsdWRpbmcgYW55IHBhZGRpbmcKKyAgbXVzdCBiZSB6ZXJvZWQgYmVmb3JlIHRoZSBzdHJ1 Y3R1cmUgaXMgcG9wdWxhdGVkLCBvdGhlcndpc2UgbG9naWNhbGx5CisgIGlkZW50aWNhbCB0YWdz IHdpdGggZGlmZmVyZW50IHBhZGRpbmcgYnl0ZXMgd2lsbCBub3QgY29hbGVzY2UgaW50byBhCisg IHNpbmdsZSBjYWxsYmFjayBpbnZvY2F0aW9uLiAgQSBzaW1wbGUgPGZ1bmN0aW9uPm1lbXNldDwv ZnVuY3Rpb24+IHRvCisgIHplcm8gYmVmb3JlIGFzc2lnbm1lbnQgaXMgc3VmZmljaWVudC4KKyA8 L3BhcmE+CisKKyA8cGFyYT4KKyAgVGhlIDxmaWxlbmFtZT5zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c3luY19oYW5kbGVyPC9maWxlbmFtZT4gbW9kdWxlCisgIGNvbnRhaW5zIGEgbWluaW1hbCB3b3Jr aW5nIGV4YW1wbGUsIHdoaWNoIGRlbW9uc3RyYXRlcyByZWdpc3RyYXRpb24KKyAgZnJvbSA8ZnVu Y3Rpb24+X1BHX2luaXQ8L2Z1bmN0aW9uPiwgdGhlIHBlci1jaGVja3BvaW50IGNhbGxiYWNrCisg IGRpc3BhdGNoLCByZXF1ZXN0IGNvYWxlc2NpbmcgdmlhIDxsaXRlcmFsPkhBU0hfQkxPQlM8L2xp dGVyYWw+LCBhbmQKKyAgdGhlIDx2YXJuYW1lPmN5Y2xlX2N0cjwvdmFybmFtZT4gc2tpcCBiZWhh dmlvdXIgb24gaWRsZSBjaGVja3BvaW50cy4KKyAgVGhlIFRBUCB0ZXN0IGluIHRoYXQgbW9kdWxl IGFsc28gc2VydmVzIGFzIGEgY29weS1wYXN0ZSBzdGFydGluZyBwb2ludAorICBmb3IgbmV3IHN5 bmMtaGFuZGxlciBleHRlbnNpb25zLgorIDwvcGFyYT4KKworIDxub3RlPgorICA8cGFyYT4KKyAg IFRoZSBleHRlbnNpb24gbXVzdCByZW1haW4gaW4gPHZhcm5hbWU+c2hhcmVkX3ByZWxvYWRfbGli cmFyaWVzPC92YXJuYW1lPgorICAgYXMgbG9uZyBhcyBhbnkgZGF0YSBtYW5hZ2VkIGJ5IGl0cyBz eW5jIGhhbmRsZXIgbWF5IHJlcXVpcmUKKyAgIGNoZWNrcG9pbnRpbmcuICBJZiB0aGUgZXh0ZW5z aW9uIGlzIHJlbW92ZWQgd2hpbGUgc3VjaCBkYXRhIGV4aXN0cywKKyAgIDxwcm9kdWN0bmFtZT5Q b3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gd2lsbCBub3QgYmUgYWJsZSB0byBkaXNwYXRjaAorICAg cGVuZGluZyBzeW5jIHJlcXVlc3RzIGZvciB0aGF0IGRhdGEsIHdoaWNoIG1heSBsZWFkIHRvIGR1 cmFiaWxpdHkKKyAgIGlzc3VlcyBhdCB0aGUgbmV4dCBjaGVja3BvaW50LgorICA8L3BhcmE+Cisg PC9ub3RlPgorPC9jaGFwdGVyPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2ZpbGVsaXN0LnNn bWwgYi9kb2Mvc3JjL3NnbWwvZmlsZWxpc3Quc2dtbAppbmRleCAyNWE4NTA4Mjc1OS4uYzZhNGYx NzQ1YWUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9maWxlbGlzdC5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9maWxlbGlzdC5zZ21sCkBAIC0xMTMsNiArMTEzLDcgQEAKIDwhRU5USVRZIHdhbC1m b3ItZXh0ZW5zaW9ucyBTWVNURU0gIndhbC1mb3ItZXh0ZW5zaW9ucy5zZ21sIj4KIDwhRU5USVRZ IGdlbmVyaWMtd2FsIFNZU1RFTSAiZ2VuZXJpYy13YWwuc2dtbCI+CiA8IUVOVElUWSBjdXN0b20t cm1nciBTWVNURU0gImN1c3RvbS1ybWdyLnNnbWwiPgorPCFFTlRJVFkgY3VzdG9tLXN5bmMtaGFu ZGxlciBTWVNURU0gImN1c3RvbS1zeW5jLWhhbmRsZXIuc2dtbCI+CiA8IUVOVElUWSBiYWNrdXAt bWFuaWZlc3QgU1lTVEVNICJiYWNrdXAtbWFuaWZlc3Quc2dtbCI+CiA8IUVOVElUWSBvYXV0aC12 YWxpZGF0b3JzIFNZU1RFTSAib2F1dGgtdmFsaWRhdG9ycy5zZ21sIj4KIApkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3Bvc3RncmVzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcG9zdGdyZXMuc2dtbApp bmRleCAyMTAxNDQyYzkwZi4uYzkxODc3YzhkZDggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9w b3N0Z3Jlcy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wb3N0Z3Jlcy5zZ21sCkBAIC0yNTksNiAr MjU5LDcgQEAgYnJlYWsgaXMgbm90IG5lZWRlZCBpbiBhIHdpZGVyIG91dHB1dCByZW5kZXJpbmcu CiAgICZ0YWJsZWFtOwogICAmaW5kZXhhbTsKICAgJndhbC1mb3ItZXh0ZW5zaW9uczsKKyAgJmN1 c3RvbS1zeW5jLWhhbmRsZXI7CiAgICZpbmRleHR5cGVzOwogICAmc3RvcmFnZTsKICAgJnRyYW5z YWN0aW9uOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwppbmRleCA2ZTBmNDFkMjY2MS4u OGQyYWIzN2NlMjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC0xMTYsNiAr MTE2LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oIgorI2luY2x1ZGUg InN0b3JhZ2Uvc3luYy5oIgogI2luY2x1ZGUgInRjb3AvYmFja2VuZF9zdGFydHVwLmgiCiAjaW5j bHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGV0aW1lLmgiCkBAIC05 MjksNiArOTMwLDE2IEBAIFBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ ICovCiAJUmVnaXN0ZXJCdWlsdGluU2htZW1DYWxsYmFja3MoKTsKIAorCS8qCisJICogUmVnaXN0 ZXIgdGhlIGJ1aWx0LWluIHN5bmMgaGFuZGxlcnMgKG1kLCBDTE9HLCBjb21taXRfdHMsCisJICog bXVsdGl4YWN0X29mZnNldCwgbXVsdGl4YWN0X21lbWJlcikuICBUaGlzIG11c3QgaGFwcGVuIGJl Zm9yZQorCSAqIHByb2Nlc3Nfc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzKCkgc28gdGhhdCBleHRl bnNpb25zIHdoaWNoCisJICogY2FsbCByZWdpc3Rlcl9zeW5jX2hhbmRsZXIoKSBmcm9tIHRoZWly IF9QR19pbml0KCkgcmVjZWl2ZSBJRHMKKwkgKiBzdGFydGluZyBhdCBTWU5DX0hBTkRMRVJfRklS U1RfRFlOQU1JQyBpbnN0ZWFkIG9mIGNvbGxpZGluZworCSAqIHdpdGggdGhlIGJ1aWx0LWluIHNs b3RzLgorCSAqLworCUluaXRTeW5jSGFuZGxlcnMoKTsKKwogCS8qCiAJICogcHJvY2VzcyBhbnkg bGlicmFyaWVzIHRoYXQgc2hvdWxkIGJlIHByZWxvYWRlZCBhdCBwb3N0bWFzdGVyIHN0YXJ0CiAJ ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwppbmRleCAyYzk2NGI2ZjNkOS4uZmY2MjM5NjgwY2Yg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwpAQCAtODAsNTAgKzgwLDIxOSBAQCBzdGF0aWMgQ3lj bGVDdHIgY2hlY2twb2ludF9jeWNsZV9jdHIgPSAwOwogI2RlZmluZSBVTkxJTktTX1BFUl9BQlNP UkIJCTEwCiAKIC8qCi0gKiBGdW5jdGlvbiBwb2ludGVycyBmb3IgaGFuZGxpbmcgc3luYyBhbmQg dW5saW5rIHJlcXVlc3RzLgorICogU3luYyBoYW5kbGVyIGRpc3BhdGNoIHRhYmxlLgorICoKKyAq IFBvcHVsYXRlZCBieSBJbml0U3luY0hhbmRsZXJzKCkgZm9yIHRoZSBmaXZlIGJ1aWx0LWluIGhh bmRsZXJzIChNRCwKKyAqIENMT0csIGNvbW1pdF90cywgbXVsdGl4YWN0X29mZnNldCwgbXVsdGl4 YWN0X21lbWJlcikgYW5kIGJ5CisgKiByZWdpc3Rlcl9zeW5jX2hhbmRsZXIoKSBmb3IgaGFuZGxl cnMgaW5zdGFsbGVkIGJ5IGV4dGVuc2lvbnMgZnJvbQorICogdGhlaXIgX1BHX2luaXQoKSBmdW5j dGlvbi4gIEFmdGVyIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyBoYXMKKyAqIGZpbmlzaGVkIGxv YWRpbmcsIHN5bmNzd1tdIGlzIGVmZmVjdGl2ZWx5IGltbXV0YWJsZSBmb3IgdGhlIGxpZmUKKyAq IG9mIHRoZSBwcm9jZXNzLgorICoKKyAqIEV2ZXJ5IHByb2Nlc3MgdGhhdCBjYW4gY2FsbCBpbnRv IHN5bmMuYyAocG9zdG1hc3RlciwgYmFja2VuZHMsIGFuZAorICogdGhlIGNoZWNrcG9pbnRlciBh bmQgb3RoZXIgYXV4aWxpYXJ5IHByb2Nlc3Nlcykgb2J0YWlucyBpdHMgb3duCisgKiBwb3B1bGF0 ZWQgc3luY3N3W10gZWl0aGVyIGJ5IGluaGVyaXRpbmcgaXQgdmlhIGZvcmsoKSBmcm9tIHRoZQor ICogcG9zdG1hc3Rlciwgb3IsIG9uIEVYRUNfQkFDS0VORCBwbGF0Zm9ybXMgd2hlcmUgdGhlcmUg aXMgbm8gZm9yaygpLAorICogYnkgcmUtcnVubmluZyBJbml0U3luY0hhbmRsZXJzKCkgYW5kIHBy b2Nlc3Nfc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzKCkKKyAqIGluIGl0cyBvd24gYWRkcmVzcyBz cGFjZSBkdXJpbmcgc3RhcnR1cC4KKyAqCisgKiBTeW5jT3BzIGl0c2VsZiBpcyBkZWZpbmVkIGlu IHN5bmMuaCBzbyB0aGF0IGV4dGVuc2lvbnMgY2FuIGRlY2xhcmUKKyAqIGNvbnN0IFN5bmNPcHMg aW5zdGFuY2VzIGF0IGZpbGUgc2NvcGUuCiAgKi8KLXR5cGVkZWYgc3RydWN0IFN5bmNPcHMKLXsK LQlpbnQJCQkoKnN5bmNfc3luY2ZpbGV0YWcpIChjb25zdCBGaWxlVGFnICpmdGFnLCBjaGFyICpw YXRoKTsKLQlpbnQJCQkoKnN5bmNfdW5saW5rZmlsZXRhZykgKGNvbnN0IEZpbGVUYWcgKmZ0YWcs IGNoYXIgKnBhdGgpOwotCWJvb2wJCSgqc3luY19maWxldGFnbWF0Y2hlcykgKGNvbnN0IEZpbGVU YWcgKmZ0YWcsCi0JCQkJCQkJCQkJY29uc3QgRmlsZVRhZyAqY2FuZGlkYXRlKTsKLX0gU3luY09w czsKK3N0YXRpYyBTeW5jT3BzICpzeW5jc3cgPSBOVUxMOworc3RhdGljIGNvbnN0IGNoYXIgKipz eW5jX2hhbmRsZXJfbmFtZXMgPSBOVUxMOworc3RhdGljIGludAlOU3luY0hhbmRsZXJzID0gMDsK K3N0YXRpYyBpbnQJc3luY19oYW5kbGVyc19jYXBhY2l0eSA9IDA7CitzdGF0aWMgYm9vbCBidWls dGluX3N5bmNfaGFuZGxlcnNfcmVnaXN0ZXJlZCA9IGZhbHNlOwogCiAvKgotICogVGhlc2UgaW5k ZXhlcyBtdXN0IGNvcnJlc3BvbmQgdG8gdGhlIHZhbHVlcyBvZiB0aGUgU3luY1JlcXVlc3RIYW5k bGVyIGVudW0uCisgKiBCdWlsdC1pbiBTeW5jT3BzLCByZWdpc3RlcmVkIGluIGVudW0gb3JkZXIg ZHVyaW5nIEluaXRTeW5jKCkgc28gdGhhdAorICogU1lOQ19IQU5ETEVSX01EID09IDAsIFNZTkNf SEFORExFUl9DTE9HID09IDEsIGV0Yy4KICAqLwotc3RhdGljIGNvbnN0IFN5bmNPcHMgc3luY3N3 W10gPSB7Ci0JLyogbWFnbmV0aWMgZGlzayAqLwotCVtTWU5DX0hBTkRMRVJfTURdID0gewotCQku c3luY19zeW5jZmlsZXRhZyA9IG1kc3luY2ZpbGV0YWcsCi0JCS5zeW5jX3VubGlua2ZpbGV0YWcg PSBtZHVubGlua2ZpbGV0YWcsCi0JCS5zeW5jX2ZpbGV0YWdtYXRjaGVzID0gbWRmaWxldGFnbWF0 Y2hlcwotCX0sCi0JLyogcGdfeGFjdCAqLwotCVtTWU5DX0hBTkRMRVJfQ0xPR10gPSB7Ci0JCS5z eW5jX3N5bmNmaWxldGFnID0gY2xvZ3N5bmNmaWxldGFnCi0JfSwKLQkvKiBwZ19jb21taXRfdHMg Ki8KLQlbU1lOQ19IQU5ETEVSX0NPTU1JVF9UU10gPSB7Ci0JCS5zeW5jX3N5bmNmaWxldGFnID0g Y29tbWl0dHNzeW5jZmlsZXRhZwotCX0sCi0JLyogcGdfbXVsdGl4YWN0L29mZnNldHMgKi8KLQlb U1lOQ19IQU5ETEVSX01VTFRJWEFDVF9PRkZTRVRdID0gewotCQkuc3luY19zeW5jZmlsZXRhZyA9 IG11bHRpeGFjdG9mZnNldHNzeW5jZmlsZXRhZwotCX0sCi0JLyogcGdfbXVsdGl4YWN0L21lbWJl cnMgKi8KLQlbU1lOQ19IQU5ETEVSX01VTFRJWEFDVF9NRU1CRVJdID0gewotCQkuc3luY19zeW5j ZmlsZXRhZyA9IG11bHRpeGFjdG1lbWJlcnNzeW5jZmlsZXRhZwotCX0KK3N0YXRpYyBjb25zdCBT eW5jT3BzIGJ1aWx0aW5fbWRfb3BzID0geworCS5zeW5jX3N5bmNmaWxldGFnID0gbWRzeW5jZmls ZXRhZywKKwkuc3luY191bmxpbmtmaWxldGFnID0gbWR1bmxpbmtmaWxldGFnLAorCS5zeW5jX2Zp bGV0YWdtYXRjaGVzID0gbWRmaWxldGFnbWF0Y2hlcywKK307CitzdGF0aWMgY29uc3QgU3luY09w cyBidWlsdGluX2Nsb2dfb3BzID0geworCS5zeW5jX3N5bmNmaWxldGFnID0gY2xvZ3N5bmNmaWxl dGFnLAorfTsKK3N0YXRpYyBjb25zdCBTeW5jT3BzIGJ1aWx0aW5fY29tbWl0dHNfb3BzID0gewor CS5zeW5jX3N5bmNmaWxldGFnID0gY29tbWl0dHNzeW5jZmlsZXRhZywKK307CitzdGF0aWMgY29u c3QgU3luY09wcyBidWlsdGluX211bHRpeGFjdF9vZmZzZXRfb3BzID0geworCS5zeW5jX3N5bmNm aWxldGFnID0gbXVsdGl4YWN0b2Zmc2V0c3N5bmNmaWxldGFnLAorfTsKK3N0YXRpYyBjb25zdCBT eW5jT3BzIGJ1aWx0aW5fbXVsdGl4YWN0X21lbWJlcl9vcHMgPSB7CisJLnN5bmNfc3luY2ZpbGV0 YWcgPSBtdWx0aXhhY3RtZW1iZXJzc3luY2ZpbGV0YWcsCiB9OwogCisvKgorICogSW50ZXJuYWwg aGVscGVyIHRoYXQgYWRkcyBhbiBlbnRyeSB0byBzeW5jc3dbXSB3aXRob3V0IHBlcmZvcm1pbmcg dGhlCisgKiBwcmVsb2FkLXBoYXNlIGNoZWNrLiAgVXNlZCBieSBJbml0U3luYygpIHRvIGluc3Rh bGwgdGhlIGJ1aWx0LWluCisgKiBoYW5kbGVycywgd2hpY2ggbXVzdCBiZSBwcmVzZW50IGluIGV2 ZXJ5IHByb2Nlc3MgdGhhdCBjYWxscyBpbnRvCisgKiBzeW5jLmMgKGluY2x1ZGluZyB0aGUgY2hl Y2twb2ludGVyLCB3aGljaCBydW5zIGFmdGVyCisgKiBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMg aGFzIGZpbmlzaGVkIGxvYWRpbmcpLgorICovCitzdGF0aWMgaW50MTYKK3N5bmNfaGFuZGxlcl9y ZWdpc3Rlcl9pbnRlcm5hbChjb25zdCBTeW5jT3BzICpvcHMsIGNvbnN0IGNoYXIgKm5hbWUpCit7 CisJaW50MTYJCW15X2lkOworCU1lbW9yeUNvbnRleHQgb2xkOworCisJaWYgKG9wcyA9PSBOVUxM IHx8IG9wcy0+c3luY19zeW5jZmlsZXRhZyA9PSBOVUxMKQorCQllbG9nKEZBVEFMLCAic3luYyBo YW5kbGVyIHJlZ2lzdHJhdGlvbiByZXF1aXJlcyBhIG5vbi1OVUxMIHN5bmMgY2FsbGJhY2siKTsK KworCWlmIChuYW1lID09IE5VTEwgfHwgKm5hbWUgPT0gJ1wwJykKKwkJZWxvZyhGQVRBTCwgInN5 bmMgaGFuZGxlciBuYW1lIG11c3Qgbm90IGJlIGVtcHR5Iik7CisKKwlpZiAoTlN5bmNIYW5kbGVy cyA+PSBTWU5DX0hBTkRMRVJfTUFYKQorCQllcmVwb3J0KEZBVEFMLAorCQkJCShlcnJjb2RlKEVS UkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCisJCQkJIGVycm1zZygidG9vIG1h bnkgc3luYyBoYW5kbGVycyByZWdpc3RlcmVkIChtYXhpbXVtIGlzICVkKSIsCisJCQkJCQlTWU5D X0hBTkRMRVJfTUFYKSkpOworCisJb2xkID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcE1lbW9y eUNvbnRleHQpOworCisJaWYgKE5TeW5jSGFuZGxlcnMgPj0gc3luY19oYW5kbGVyc19jYXBhY2l0 eSkKKwl7CisJCWludAkJCW5ld19jYXAgPSAoc3luY19oYW5kbGVyc19jYXBhY2l0eSA9PSAwKQor CQkJPyA4CisJCQk6IHN5bmNfaGFuZGxlcnNfY2FwYWNpdHkgKiAyOworCisJCWlmIChuZXdfY2Fw ID4gU1lOQ19IQU5ETEVSX01BWCkKKwkJCW5ld19jYXAgPSBTWU5DX0hBTkRMRVJfTUFYOworCisJ CWlmIChzeW5jc3cgPT0gTlVMTCkKKwkJeworCQkJc3luY3N3ID0gcGFsbG9jKHNpemVvZihTeW5j T3BzKSAqIG5ld19jYXApOworCQkJc3luY19oYW5kbGVyX25hbWVzID0gcGFsbG9jKHNpemVvZihj aGFyICopICogbmV3X2NhcCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlzeW5jc3cgPSByZXBhbGxv YyhzeW5jc3csIHNpemVvZihTeW5jT3BzKSAqIG5ld19jYXApOworCQkJc3luY19oYW5kbGVyX25h bWVzID0gcmVwYWxsb2Moc3luY19oYW5kbGVyX25hbWVzLAorCQkJCQkJCQkJCSAgc2l6ZW9mKGNo YXIgKikgKiBuZXdfY2FwKTsKKwkJfQorCQlzeW5jX2hhbmRsZXJzX2NhcGFjaXR5ID0gbmV3X2Nh cDsKKwl9CisKKwlteV9pZCA9IChpbnQxNikgTlN5bmNIYW5kbGVycysrOworCW1lbWNweSgmc3lu Y3N3W215X2lkXSwgb3BzLCBzaXplb2YoU3luY09wcykpOworCXN5bmNfaGFuZGxlcl9uYW1lc1tt eV9pZF0gPSBwc3RyZHVwKG5hbWUpOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZCk7CisK KwkvKgorCSAqIE5vIGJhcnJpZXIgbmVlZGVkOiByZWdpc3RyYXRpb24gb25seSBoYXBwZW5zIGR1 cmluZworCSAqIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyBsb2FkLCB3aGljaCBpcyBzaW5nbGUt dGhyZWFkZWQuICBPbiBmb3JrLWJhc2VkCisJICogcGxhdGZvcm1zIGJhY2tlbmRzIGFuZCBhdXhp bGlhcnkgcHJvY2Vzc2VzIGluaGVyaXQgdGhlIGZ1bGx5LXBvcHVsYXRlZAorCSAqIGFycmF5IGZy b20gdGhlIHBvc3RtYXN0ZXIgdmlhIGZvcmsoKS4gIE9uIEVYRUNfQkFDS0VORCBwbGF0Zm9ybXMg ZWFjaAorCSAqIGNoaWxkIHJlcGVhdHMgdGhlIHNpbmdsZS10aHJlYWRlZCByZWdpc3RyYXRpb24g c2VxdWVuY2UgaW4gaXRzIG93bgorCSAqIGFkZHJlc3Mgc3BhY2UgZHVyaW5nIHN0YXJ0dXAuIElu IGVpdGhlciBjYXNlLCB0aGUgYXJyYXkgaXMgaW1tdXRhYmxlIGJ5CisJICogdGhlIHRpbWUgYW55 IGNvbmN1cnJlbnQgcmVhZGVyIGNhbiBvYnNlcnZlIGl0LgorCSAqLworCXJldHVybiBteV9pZDsK K30KKworLyoKKyAqIFB1YmxpYyByZWdpc3RyYXRpb24gZW50cnkgcG9pbnQgZm9yIGV4dGVuc2lv bnMuICBTZWUgc3luYy5oIGZvciB0aGUKKyAqIGNvbnRyYWN0LgorICoKKyAqIEV4dGVuc2lvbnMg bXVzdCBjYWxsIHRoaXMgZnJvbSB0aGVpciBfUEdfaW5pdCgpIHdoaWxlCisgKiBzaGFyZWRfcHJl bG9hZF9saWJyYXJpZXMgaXMgc3RpbGwgYmVpbmcgcHJvY2Vzc2VkOyBsYXRlciBjYWxscyByYWlz ZQorICogRkFUQUwuICBCdWlsdC1pbiBoYW5kbGVycyBieXBhc3MgdGhpcyBndWFyZCB2aWEKKyAq IHN5bmNfaGFuZGxlcl9yZWdpc3Rlcl9pbnRlcm5hbCgpIGJlY2F1c2UgdGhlIGNoZWNrcG9pbnRl ciBhbmQgb3RoZXIKKyAqIGF1eGlsaWFyeSBwcm9jZXNzZXMgY2FsbCBJbml0U3luYygpIGFmdGVy IHByZWxvYWQgaGFzIGZpbmlzaGVkLCBhbmQKKyAqIHRoZSBidWlsdC1pbiBkaXNwYXRjaCB0YWJs ZSBtdXN0IHN0aWxsIGJlIHBvcHVsYXRlZCBpbiB0aG9zZQorICogcHJvY2Vzc2VzLgorICoKKyAq IE9uIEVYRUNfQkFDS0VORCBwbGF0Zm9ybXMgZWFjaCBjaGlsZCBwcm9jZXNzIHJlcGVhdHMKKyAq IHByb2Nlc3Nfc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzKCkgaW4gaXRzIG93biBmcmVzaCBhZGRy ZXNzIHNwYWNlCisgKiBkdXJpbmcgc3RhcnR1cCwgYW5kIGFuIGV4dGVuc2lvbidzIF9QR19pbml0 KCkgY2FuIHJlYWNoIHRoaXMKKyAqIGZ1bmN0aW9uIGJlZm9yZSB0aGUgY2hpbGQgaGFzIGNhbGxl ZCBJbml0U3luYygpLiAgQ2FsbAorICogSW5pdFN5bmNIYW5kbGVycygpIGhlcmUgdG8gZW5zdXJl IHRoZSBmaXZlIGJ1aWx0LWluIGhhbmRsZXJzIGFsd2F5cworICogb2NjdXB5IElEcyAwLi5TWU5D X0hBTkRMRVJfRklSU1RfRFlOQU1JQy0xIGJlZm9yZSBhbnkgZHluYW1pYyBJRCBpcworICogYXNz aWduZWQsIHdoaWNoIGtlZXBzIGhhbmRsZXIgSURzIGNvbnNpc3RlbnQgYWNyb3NzIGV2ZXJ5IHBy b2Nlc3MKKyAqIHRoYXQgZGlzcGF0Y2hlcyBzeW5jIHJlcXVlc3RzLiAgSW5pdFN5bmNIYW5kbGVy cygpIGlzIGlkZW1wb3RlbnQuCisgKi8KK2ludDE2CityZWdpc3Rlcl9zeW5jX2hhbmRsZXIoY29u c3QgU3luY09wcyAqb3BzLCBjb25zdCBjaGFyICpuYW1lKQoreworCWlmIChwcm9jZXNzX3NoYXJl ZF9wcmVsb2FkX2xpYnJhcmllc19kb25lKQorCQllcmVwb3J0KEZBVEFMLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coInN5bmMgaGFu ZGxlciByZWdpc3RyYXRpb24gaXMgb25seSBwZXJtaXR0ZWQgd2hpbGUgc2hhcmVkX3ByZWxvYWRf bGlicmFyaWVzIGlzIGJlaW5nIGxvYWRlZCIpKSk7CisKKwlJbml0U3luY0hhbmRsZXJzKCk7CisK KwlyZXR1cm4gc3luY19oYW5kbGVyX3JlZ2lzdGVyX2ludGVybmFsKG9wcywgbmFtZSk7Cit9CisK Ky8qCisgKiBSZWdpc3RlciB0aGUgYnVpbHQtaW4gc3luYyBoYW5kbGVycy4KKyAqCisgKiBUaGlz IE1VU1QgcnVuIGJlZm9yZSBhbnkgY2FsbCB0byByZWdpc3Rlcl9zeW5jX2hhbmRsZXIoKSBmcm9t CisgKiBleHRlbnNpb24gX1BHX2luaXQoKSBjb2RlLCBzbyB0aGF0IHRoZSBidWlsdC1pbiBoYW5k bGVycyBvY2N1cHkKKyAqIHRoZWlyIGNhbm9uaWNhbCBJRHMgKFNZTkNfSEFORExFUl9NRCA9IDAs IFNZTkNfSEFORExFUl9DTE9HID0gMSwKKyAqIGV0Yy4pIGFuZCBleHRlbnNpb24gaGFuZGxlcnMg YXJlIGFzc2lnbmVkIElEcyA+PQorICogU1lOQ19IQU5ETEVSX0ZJUlNUX0RZTkFNSUMuCisgKgor ICogQ2FsbGVkIGZyb206CisgKiAgIC0gUG9zdG1hc3Rlck1haW4oKSwganVzdCBiZWZvcmUgcHJv Y2Vzc19zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMoKQorICogICAtIEF1eGlsaWFyeVByb2Nlc3NN YWluKCkgKG5vdCBjdXJyZW50bHkgbmVlZGVkIGJlY2F1c2UgYXV4IHByb2NzCisgKiAgICAgZm9y ayBmcm9tIHRoZSBwb3N0bWFzdGVyIHdpdGggc3luY3N3W10gYWxyZWFkeSBwb3B1bGF0ZWQsIGJ1 dAorICogICAgIHNlZSB0aGUgaWRlbXBvdGVudCBOU3luY0hhbmRsZXJzPT0wIGd1YXJkIGJlbG93 KQorICogICAtIFN0YW5kYWxvbmUgYmFja2VuZCBpbml0ICh2aWEgSW5pdFN5bmMgLT4gSW5pdFN5 bmNIYW5kbGVycykKKyAqCisgKiBJZGVtcG90ZW50OiB0aGUgTlN5bmNIYW5kbGVycyA9PSAwIGd1 YXJkIGVuc3VyZXMgYnVpbHQtaW5zIGFyZQorICogcmVnaXN0ZXJlZCBleGFjdGx5IG9uY2UgcGVy IHByb2Nlc3MuIFNhZmUgdG8gY2FsbCBmcm9tIG11bHRpcGxlCisgKiBpbml0IHBhdGhzLgorICov Cit2b2lkCitJbml0U3luY0hhbmRsZXJzKHZvaWQpCit7CisJaWYgKGJ1aWx0aW5fc3luY19oYW5k bGVyc19yZWdpc3RlcmVkKQorCQlyZXR1cm47CisKKwkodm9pZCkgc3luY19oYW5kbGVyX3JlZ2lz dGVyX2ludGVybmFsKCZidWlsdGluX21kX29wcywgIm1kIik7CisJKHZvaWQpIHN5bmNfaGFuZGxl cl9yZWdpc3Rlcl9pbnRlcm5hbCgmYnVpbHRpbl9jbG9nX29wcywgImNsb2ciKTsKKwkodm9pZCkg c3luY19oYW5kbGVyX3JlZ2lzdGVyX2ludGVybmFsKCZidWlsdGluX2NvbW1pdHRzX29wcywgImNv bW1pdF90cyIpOworCSh2b2lkKSBzeW5jX2hhbmRsZXJfcmVnaXN0ZXJfaW50ZXJuYWwoJmJ1aWx0 aW5fbXVsdGl4YWN0X29mZnNldF9vcHMsCisJCQkJCQkJCQkJICAibXVsdGl4YWN0X29mZnNldCIp OworCSh2b2lkKSBzeW5jX2hhbmRsZXJfcmVnaXN0ZXJfaW50ZXJuYWwoJmJ1aWx0aW5fbXVsdGl4 YWN0X21lbWJlcl9vcHMsCisJCQkJCQkJCQkJICAibXVsdGl4YWN0X21lbWJlciIpOworCisJYnVp bHRpbl9zeW5jX2hhbmRsZXJzX3JlZ2lzdGVyZWQgPSB0cnVlOworCisJLyoKKwkgKiBFbmZvcmNl IHRoZSBlbnVtLXRvLWNvdW50IGludmFyaWFudDogaWYgYSBuZXcgYnVpbHQtaW4gaXMgYWRkZWQg dG8gdGhlCisJICogU3luY1JlcXVlc3RIYW5kbGVyIGVudW0sIHRoZSBidWlsZCB3aWxsIGZhaWwt ZmFzdCBhdCBmaXJzdCBib290IHVudGlsIGEKKwkgKiBtYXRjaGluZyBzeW5jX2hhbmRsZXJfcmVn aXN0ZXJfaW50ZXJuYWwoKSBjYWxsIGlzIGFkZGVkIGhlcmUuCisJICovCisJQXNzZXJ0KE5TeW5j SGFuZGxlcnMgPT0gU1lOQ19IQU5ETEVSX0ZJUlNUX0RZTkFNSUMpOworfQorCiAvKgogICogSW5p dGlhbGl6ZSBkYXRhIHN0cnVjdHVyZXMgZm9yIHRoZSBmaWxlIHN5bmMgdHJhY2tpbmcuCisgKgor ICogVGhpcyBydW5zIGluIHByb2Nlc3NlcyB0aGF0IGFjdHVhbGx5IG5lZWQgdGhlIHBlbmRpbmdP cHMgaGFzaCB0YWJsZQorICogKHN0YW5kYWxvbmUgYmFja2VuZHMgYW5kIHRoZSBjaGVja3BvaW50 ZXIpLiBJdCBhbHNvIGNhbGxzCisgKiBJbml0U3luY0hhbmRsZXJzKCkgZGVmZW5zaXZlbHkgaW4g Y2FzZSB0aGlzIHByb2Nlc3MgcmVhY2hlZCBoZXJlCisgKiB3aXRob3V0IHRoZSBwb3N0bWFzdGVy IGhhdmluZyBkb25lIHNvLCBlLmcuLCBzdGFuZGFsb25lIG1vZGUuCiAgKi8KIHZvaWQKIEluaXRT eW5jKHZvaWQpCiB7CisJLyoKKwkgKiBNYWtlIHN1cmUgYnVpbHQtaW4gaGFuZGxlcnMgYXJlIHJl Z2lzdGVyZWQuIEluIHRoZSBwb3N0bWFzdGVyLCB0aGlzIHdhcworCSAqIGFscmVhZHkgY2FsbGVk IGZyb20gUG9zdG1hc3Rlck1haW4oKSBiZWZvcmUKKwkgKiBwcm9jZXNzX3NoYXJlZF9wcmVsb2Fk X2xpYnJhcmllcygpOyBpbiBzdGFuZGFsb25lIG1vZGUgaXQgaXMgY2FsbGVkCisJICogaGVyZSBm b3IgdGhlIGZpcnN0IChhbmQgb25seSkgdGltZS4gVGhlIE5TeW5jSGFuZGxlcnMgZ3VhcmQgaW5z aWRlCisJICogSW5pdFN5bmNIYW5kbGVycygpIG1ha2VzIGl0IGlkZW1wb3RlbnQuCisJICovCisJ SW5pdFN5bmNIYW5kbGVycygpOworCiAJLyoKIAkgKiBDcmVhdGUgcGVuZGluZy1vcGVyYXRpb25z IGhhc2h0YWJsZSBpZiB3ZSBuZWVkIGl0LiAgQ3VycmVudGx5LCB3ZSBuZWVkCiAJICogaXQgaWYg d2UgYXJlIHN0YW5kYWxvbmUgKG5vdCB1bmRlciBhIHBvc3RtYXN0ZXIpIG9yIGlmIHdlIGFyZSBh CkBAIC0yMDUsNiArMzc0LDE5IEBAIFN5bmNQb3N0Q2hlY2twb2ludCh2b2lkKQogCWludAkJCWFi c29yYl9jb3VudGVyOwogCUxpc3RDZWxsICAgKmxjOwogCisJLyoKKwkgKiBDYWNoZSB0aGUgc3lu Y3N3IGJhc2UgcG9pbnRlciBpbiBhIGxvY2FsIGZvciB0aGUgZHVyYXRpb24gb2YgdGhpcworCSAq IGZ1bmN0aW9uLiBXaXRob3V0IHRoaXMsIHRoZSBjb21waWxlciBjYW5ub3QgaG9pc3QgdGhlIGxv YWQgb2YgdGhlCisJICogbXV0YWJsZSBzdGF0aWMgcG9pbnRlciBvdXQgb2YgdGhlIGRpc3BhdGNo IGxvb3AsIGFuZCBlYWNoIGRpc3BhdGNoCisJICogY29zdHMgYW4gZXh0cmEgbWVtb3J5IGxvYWQg cGx1cyBhbiBhZGRyZXNzLW1hdGVyaWFsaXphdGlvbiBMRUEKKwkgKiAodmVyaWZpZWQgd2l0aCBv YmpkdW1wIG9uIEdDQyAxNC4yIC1PMikuIFdpdGggdGhlIGxvY2FsIGNhY2hlZCwgdGhlCisJICog cGVyLWVudHJ5IGRpc3BhdGNoIGNvbXBpbGVzIGRvd24gdG8gaWRlbnRpY2FsIGFzc2VtYmx5IGFz IHRoZSBwcmUtcGF0Y2gKKwkgKiBzdGF0aWMtY29uc3QgYXJyYXkuIFNhZmUgYmVjYXVzZSByZWdp c3Rlcl9zeW5jX2hhbmRsZXIoKSBpcyBmb3JiaWRkZW4KKwkgKiBhZnRlciBwcm9jZXNzX3NoYXJl ZF9wcmVsb2FkX2xpYnJhcmllc19kb25lIGFuZCBzeW5jc3cgaXMgbmV2ZXIgbXV0YXRlZAorCSAq IG91dHNpZGUgcmVnaXN0cmF0aW9uLgorCSAqLworCVN5bmNPcHMgICAgKm9wcyA9IHN5bmNzdzsK KwogCWFic29yYl9jb3VudGVyID0gVU5MSU5LU19QRVJfQUJTT1JCOwogCWZvcmVhY2gobGMsIHBl bmRpbmdVbmxpbmtzKQogCXsKQEAgLTIyNyw5ICs0MDksMTIgQEAgU3luY1Bvc3RDaGVja3BvaW50 KHZvaWQpCiAJCWlmIChlbnRyeS0+Y3ljbGVfY3RyID09IGNoZWNrcG9pbnRfY3ljbGVfY3RyKQog CQkJYnJlYWs7CiAKKwkJQXNzZXJ0KGVudHJ5LT50YWcuaGFuZGxlciA+PSAwICYmCisJCQkgICBl bnRyeS0+dGFnLmhhbmRsZXIgPCBOU3luY0hhbmRsZXJzKTsKKwogCQkvKiBVbmxpbmsgdGhlIGZp bGUgKi8KLQkJaWYgKHN5bmNzd1tlbnRyeS0+dGFnLmhhbmRsZXJdLnN5bmNfdW5saW5rZmlsZXRh ZygmZW50cnktPnRhZywKLQkJCQkJCQkJCQkJCQkJICBwYXRoKSA8IDApCisJCWlmIChvcHNbZW50 cnktPnRhZy5oYW5kbGVyXS5zeW5jX3VubGlua2ZpbGV0YWcoJmVudHJ5LT50YWcsCisJCQkJCQkJ CQkJCQkJICAgcGF0aCkgPCAwKQogCQl7CiAJCQkvKgogCQkJICogVGhlcmUncyBhIHJhY2UgY29u ZGl0aW9uLCB3aGVuIHRoZSBkYXRhYmFzZSBpcyBkcm9wcGVkIGF0IHRoZQpAQCAtMzAxLDYgKzQ4 Niw5IEBAIFByb2Nlc3NTeW5jUmVxdWVzdHModm9pZCkKIAl1aW50NjQJCWxvbmdlc3QgPSAwOwog CXVpbnQ2NAkJdG90YWxfZWxhcHNlZCA9IDA7CiAKKwkvKiBTZWUgY29tbWVudCBpbiBTeW5jUG9z dENoZWNrcG9pbnQoKSBhYm92ZS4gKi8KKwlTeW5jT3BzICAgICpvcHMgPSBzeW5jc3c7CisKIAkv KgogCSAqIFRoaXMgaXMgb25seSBjYWxsZWQgZHVyaW5nIGNoZWNrcG9pbnRzLCBhbmQgY2hlY2tw b2ludHMgc2hvdWxkIG9ubHkKIAkgKiBvY2N1ciBpbiBwcm9jZXNzZXMgdGhhdCBoYXZlIGNyZWF0 ZWQgYSBwZW5kaW5nT3BzLgpAQCAtNDEyLDkgKzYwMCwxMiBAQCBQcm9jZXNzU3luY1JlcXVlc3Rz KHZvaWQpCiAJCQl7CiAJCQkJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwogCisJCQkJQXNzZXJ0KGVu dHJ5LT50YWcuaGFuZGxlciA+PSAwICYmCisJCQkJCSAgIGVudHJ5LT50YWcuaGFuZGxlciA8IE5T eW5jSGFuZGxlcnMpOworCiAJCQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzeW5jX3N0YXJ0KTsK LQkJCQlpZiAoc3luY3N3W2VudHJ5LT50YWcuaGFuZGxlcl0uc3luY19zeW5jZmlsZXRhZygmZW50 cnktPnRhZywKLQkJCQkJCQkJCQkJCQkJCQlwYXRoKSA9PSAwKQorCQkJCWlmIChvcHNbZW50cnkt PnRhZy5oYW5kbGVyXS5zeW5jX3N5bmNmaWxldGFnKCZlbnRyeS0+dGFnLAorCQkJCQkJCQkJCQkJ CQkJIHBhdGgpID09IDApCiAJCQkJewogCQkJCQkvKiBTdWNjZXNzOyB1cGRhdGUgc3RhdGlzdGlj cyBhYm91dCBzeW5jIHRpbWluZyAqLwogCQkJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN5bmNf ZW5kKTsKQEAgLTUwNiwxMyArNjk3LDI0IEBAIFJlbWVtYmVyU3luY1JlcXVlc3QoY29uc3QgRmls ZVRhZyAqZnRhZywgU3luY1JlcXVlc3RUeXBlIHR5cGUpCiAJCUhBU0hfU0VRX1NUQVRVUyBoc3Rh dDsKIAkJUGVuZGluZ0ZzeW5jRW50cnkgKnBmZTsKIAkJTGlzdENlbGwgICAqY2VsbDsKKwkJYm9v bAkJKCpmaWxldGFnbWF0Y2hlcykgKGNvbnN0IEZpbGVUYWcgKmZ0YWcsCisJCQkJCQkJCQkgICBj b25zdCBGaWxlVGFnICpjYW5kaWRhdGUpOworCisJCUFzc2VydChmdGFnLT5oYW5kbGVyID49IDAg JiYgZnRhZy0+aGFuZGxlciA8IE5TeW5jSGFuZGxlcnMpOworCisJCS8qCisJCSAqIENhY2hlIHRo ZSBwZXItaGFuZGxlciBmaWxldGFnbWF0Y2hlcyBmdW5jdGlvbiBwb2ludGVyIG9uY2Ugc28gYm90 aAorCQkgKiBtYXRjaCBsb29wcyBrZWVwIGl0IGluIGEgcmVnaXN0ZXIuIFNlZSBjb21tZW50IGlu CisJCSAqIFN5bmNQb3N0Q2hlY2twb2ludCgpLgorCQkgKi8KKwkJZmlsZXRhZ21hdGNoZXMgPSBz eW5jc3dbZnRhZy0+aGFuZGxlcl0uc3luY19maWxldGFnbWF0Y2hlczsKIAogCQkvKiBDYW5jZWwg bWF0Y2hpbmcgZnN5bmMgcmVxdWVzdHMgKi8KIAkJaGFzaF9zZXFfaW5pdCgmaHN0YXQsIHBlbmRp bmdPcHMpOwogCQl3aGlsZSAoKHBmZSA9IChQZW5kaW5nRnN5bmNFbnRyeSAqKSBoYXNoX3NlcV9z ZWFyY2goJmhzdGF0KSkgIT0gTlVMTCkKIAkJewogCQkJaWYgKHBmZS0+dGFnLmhhbmRsZXIgPT0g ZnRhZy0+aGFuZGxlciAmJgotCQkJCXN5bmNzd1tmdGFnLT5oYW5kbGVyXS5zeW5jX2ZpbGV0YWdt YXRjaGVzKGZ0YWcsICZwZmUtPnRhZykpCisJCQkJZmlsZXRhZ21hdGNoZXMoZnRhZywgJnBmZS0+ dGFnKSkKIAkJCQlwZmUtPmNhbmNlbGVkID0gdHJ1ZTsKIAkJfQogCkBAIC01MjIsNyArNzI0LDcg QEAgUmVtZW1iZXJTeW5jUmVxdWVzdChjb25zdCBGaWxlVGFnICpmdGFnLCBTeW5jUmVxdWVzdFR5 cGUgdHlwZSkKIAkJCVBlbmRpbmdVbmxpbmtFbnRyeSAqcHVlID0gKFBlbmRpbmdVbmxpbmtFbnRy eSAqKSBsZmlyc3QoY2VsbCk7CiAKIAkJCWlmIChwdWUtPnRhZy5oYW5kbGVyID09IGZ0YWctPmhh bmRsZXIgJiYKLQkJCQlzeW5jc3dbZnRhZy0+aGFuZGxlcl0uc3luY19maWxldGFnbWF0Y2hlcyhm dGFnLCAmcHVlLT50YWcpKQorCQkJCWZpbGV0YWdtYXRjaGVzKGZ0YWcsICZwdWUtPnRhZykpCiAJ CQkJcHVlLT5jYW5jZWxlZCA9IHRydWU7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3N5bmMuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3luYy5oCmluZGV4IDg4Mjkw NTAwYmM5Li45NTlhNGY3MmE1MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zeW5j LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zeW5jLmgKQEAgLTI5LDggKzI5LDEzIEBAIHR5 cGVkZWYgZW51bSBTeW5jUmVxdWVzdFR5cGUKIH0gU3luY1JlcXVlc3RUeXBlOwogCiAvKgotICog V2hpY2ggc2V0IG9mIGZ1bmN0aW9ucyB0byB1c2UgdG8gaGFuZGxlIGEgZ2l2ZW4gcmVxdWVzdC4g IFRoZSB2YWx1ZXMgb2YKLSAqIHRoZSBlbnVtZXJhdG9ycyBtdXN0IG1hdGNoIHRoZSBpbmRleGVz IG9mIHRoZSBmdW5jdGlvbiB0YWJsZSBpbiBzeW5jLmMuCisgKiBXaGljaCBzZXQgb2YgZnVuY3Rp b25zIHRvIHVzZSB0byBoYW5kbGUgYSBnaXZlbiByZXF1ZXN0LiAgQnVpbHQtaW4KKyAqIGhhbmRs ZXJzIG9jY3VweSB0aGUgZml4ZWQgZW51bSB2YWx1ZXMgYmVsb3c7IGV4dGVuc2lvbnMgcmVnaXN0 ZXIKKyAqIGFkZGl0aW9uYWwgaGFuZGxlcnMgdmlhIHJlZ2lzdGVyX3N5bmNfaGFuZGxlcigpIGR1 cmluZworICogc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzIGluaXRpYWxpemF0aW9uIGFuZCByZWNl aXZlIElEcyBzdGFydGluZworICogYXQgU1lOQ19IQU5ETEVSX0ZJUlNUX0RZTkFNSUMuIFRoZSB2 YWx1ZXMgb2YgdGhlIGJ1aWx0LWluCisgKiBlbnVtZXJhdG9ycyBtdXN0IG1hdGNoIHRoZSBvcmRl ciBpbiB3aGljaCBJbml0U3luYygpIHByZS1yZWdpc3RlcnMKKyAqIHRoZSBjb3JyZXNwb25kaW5n IFN5bmNPcHMgc3RydWN0cyBpbiBzeW5jLmMuCiAgKi8KIHR5cGVkZWYgZW51bSBTeW5jUmVxdWVz dEhhbmRsZXIKIHsKQEAgLTM5LDkgKzQ0LDE5IEBAIHR5cGVkZWYgZW51bSBTeW5jUmVxdWVzdEhh bmRsZXIKIAlTWU5DX0hBTkRMRVJfQ09NTUlUX1RTLAogCVNZTkNfSEFORExFUl9NVUxUSVhBQ1Rf T0ZGU0VULAogCVNZTkNfSEFORExFUl9NVUxUSVhBQ1RfTUVNQkVSLAotCVNZTkNfSEFORExFUl9O T05FLAorCisJLyogRXh0ZW5zaW9ucycgZHluYW1pYyBoYW5kbGVyIElEcyBzdGFydCBoZXJlLiAq LworCVNZTkNfSEFORExFUl9GSVJTVF9EWU5BTUlDLAorCisJLyoKKwkgKiBTZW50aW5lbCBmb3Ig Im5vIGhhbmRsZXIiOiBmaXRzIGluIGludDE2LCBvdXRzaWRlIHRoZSB2YWxpZCBJRCByYW5nZSBz bworCSAqIGl0IGNhbm5vdCBiZSBjb25mdXNlZCB3aXRoIGFueSByZWdpc3RlcmVkIGhhbmRsZXIu CisJICovCisJU1lOQ19IQU5ETEVSX05PTkUgPSAtMSwKIH0gU3luY1JlcXVlc3RIYW5kbGVyOwog CisjZGVmaW5lIFNZTkNfSEFORExFUl9NQVgJSU5UMTZfTUFYCisKIC8qCiAgKiBBIHRhZyBpZGVu dGlmeWluZyBhIGZpbGUuICBDdXJyZW50bHkgaXQgaGFzIHRoZSBtZW1iZXJzIHJlcXVpcmVkIGZv ciBtZC5jJ3MKICAqIHVzYWdlLCBidXQgc3luYy5jIGhhcyBubyBrbm93bGVkZ2Ugb2YgdGhlIGlu dGVybmFsIHN0cnVjdHVyZSwgYW5kIGl0IGlzCkBAIC01NSw2ICs3MCwyNSBAQCB0eXBlZGVmIHN0 cnVjdCBGaWxlVGFnCiAJdWludDY0CQlzZWdubzsKIH0gRmlsZVRhZzsKIAorLyoKKyAqIERpc3Bh dGNoIHRhYmxlIGVudHJ5IGZvciBhIHN5bmMgaGFuZGxlci4gIFB1YmxpYyBzbyBleHRlbnNpb25z IGNhbgorICogZGVmaW5lIHRoZWlyIG93biBTeW5jT3BzIGFuZCBwYXNzIHRoZW0gdG8gcmVnaXN0 ZXJfc3luY19oYW5kbGVyKCkuCisgKgorICogc3luY19zeW5jZmlsZXRhZyBpcyByZXF1aXJlZC4g IHN5bmNfdW5saW5rZmlsZXRhZyBhbmQKKyAqIHN5bmNfZmlsZXRhZ21hdGNoZXMgbWF5IGJlIE5V TEwgaWYgdGhlIGhhbmRsZXIgZG9lcyBub3Qgc3VwcG9ydAorICogU1lOQ19VTkxJTktfUkVRVUVT VCBvciBTWU5DX0ZJTFRFUl9SRVFVRVNUIHJlc3BlY3RpdmVseSwgbWF0Y2hpbmcKKyAqIHRoZSBw YXR0ZXJuIG9mIHRoZSBidWlsdC1pbiBDTE9HL2NvbW1pdF90cy9tdWx0aXhhY3QgaGFuZGxlcnMg d2hpY2gKKyAqIG9ubHkgZGVmaW5lIHN5bmNfc3luY2ZpbGV0YWcuCisgKi8KK3R5cGVkZWYgc3Ry dWN0IFN5bmNPcHMKK3sKKwlpbnQJCQkoKnN5bmNfc3luY2ZpbGV0YWcpIChjb25zdCBGaWxlVGFn ICpmdGFnLCBjaGFyICpwYXRoKTsKKwlpbnQJCQkoKnN5bmNfdW5saW5rZmlsZXRhZykgKGNvbnN0 IEZpbGVUYWcgKmZ0YWcsIGNoYXIgKnBhdGgpOworCWJvb2wJCSgqc3luY19maWxldGFnbWF0Y2hl cykgKGNvbnN0IEZpbGVUYWcgKmZ0YWcsCisJCQkJCQkJCQkJY29uc3QgRmlsZVRhZyAqY2FuZGlk YXRlKTsKK30gU3luY09wczsKKworZXh0ZXJuIHZvaWQgSW5pdFN5bmNIYW5kbGVycyh2b2lkKTsK IGV4dGVybiB2b2lkIEluaXRTeW5jKHZvaWQpOwogZXh0ZXJuIHZvaWQgU3luY1ByZUNoZWNrcG9p bnQodm9pZCk7CiBleHRlcm4gdm9pZCBTeW5jUG9zdENoZWNrcG9pbnQodm9pZCk7CkBAIC02Myw0 ICs5NywyOCBAQCBleHRlcm4gdm9pZCBSZW1lbWJlclN5bmNSZXF1ZXN0KGNvbnN0IEZpbGVUYWcg KmZ0YWcsIFN5bmNSZXF1ZXN0VHlwZSB0eXBlKTsKIGV4dGVybiBib29sIFJlZ2lzdGVyU3luY1Jl cXVlc3QoY29uc3QgRmlsZVRhZyAqZnRhZywgU3luY1JlcXVlc3RUeXBlIHR5cGUsCiAJCQkJCQkJ CWJvb2wgcmV0cnlPbkVycm9yKTsKIAorLyoKKyAqIFJlZ2lzdGVyIGEgY3VzdG9tIHN5bmMgaGFu ZGxlci4gIFJldHVybnMgdGhlIGFzc2lnbmVkIGhhbmRsZXIgSUQKKyAqIHdoaWNoIHRoZSBleHRl bnNpb24gc3RvcmVzIGluIEZpbGVUYWcuaGFuZGxlciB3aGVuIHF1ZXVlaW5nIHN5bmMKKyAqIHJl cXVlc3RzIHZpYSBSZWdpc3RlclN5bmNSZXF1ZXN0KCkuCisgKgorICogTVVTVCBiZSBjYWxsZWQg ZHVyaW5nIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyBpbml0aWFsaXphdGlvbgorICogKGJlZm9y ZSBwcm9jZXNzX3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllc19kb25lIGlzIHNldCk7IGxhdGVyIGNh bGxzCisgKiByYWlzZSBGQVRBTC4gIGBuYW1lYCBpcyB1c2VkIGZvciBlcnJvciBtZXNzYWdlcyBh bmQgaXMgcHN0cmR1cCdkCisgKiBpbnRvIFRvcE1lbW9yeUNvbnRleHQgYnkgdGhlIGNhbGxlcjsg Y2FsbGVycyBkbyBub3QgbmVlZCB0byBrZWVwCisgKiB0aGUgYnVmZmVyIGFsaXZlLgorICoKKyAq IGBvcHMtPnN5bmNfc3luY2ZpbGV0YWdgIGlzIHJlcXVpcmVkOyB0aGUgb3RoZXIgdHdvIHBvaW50 ZXJzIG1heQorICogYmUgTlVMTCBpZiB0aGUgaGFuZGxlciBkb2VzIG5vdCBwYXJ0aWNpcGF0ZSBp biBTWU5DX1VOTElOS19SRVFVRVNUCisgKiBvciBTWU5DX0ZJTFRFUl9SRVFVRVNUIGZsb3dzLgor ICoKKyAqIFRoZSByZXR1cm5lZCBJRCBpcyBzdGFibGUgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUg cG9zdG1hc3Rlci4KKyAqIFN5bmMgcmVxdWVzdHMgbGl2ZSBvbmx5IGluIHRoZSBjaGVja3BvaW50 ZXIncyBpbi1tZW1vcnkgcGVuZGluZ09wcworICogaGFzaCB0YWJsZSAodGhleSBhcmUgbm90IHBl cnNpc3RlZCBhY3Jvc3MgcmVzdGFydHMpLCBzbyB0aGVyZSBpcworICogbm8gY3Jvc3MtcmVzdGFy dCBzdGFiaWxpdHkgcmVxdWlyZW1lbnQgYmV5b25kIHRoZSBzYW1lCisgKiBzaGFyZWRfcHJlbG9h ZF9saWJyYXJpZXMgb3JkZXIgdGhhdCBzbWdyX3JlZ2lzdGVyKCkgYWxyZWFkeSByZWxpZXMKKyAq IG9uLgorICovCitleHRlcm4gaW50MTYgcmVnaXN0ZXJfc3luY19oYW5kbGVyKGNvbnN0IFN5bmNP cHMgKm9wcywgY29uc3QgY2hhciAqbmFtZSk7CisKICNlbmRpZgkJCQkJCQkvKiBTWU5DX0ggKi8K LS0gCjIuNDcuMwoK --===============6838725020337159308== Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0002-Add-test-module-for-sync-handler-registration.patch" RnJvbSBhOTU2NmI5MTEwYjUzNDkxZjc5MmE2MWM4M2Y1ZDc2YjAxZmIwMjlmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIExhbWJlcnNvbiA8Z3JlZ0BsYW1jby5pbz4KRGF0ZTog RnJpLCAxMCBBcHIgMjAyNiAwNzoyNzo0NCAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMi8yXSBB ZGQgdGVzdCBtb2R1bGUgZm9yIHN5bmMgaGFuZGxlciByZWdpc3RyYXRpb24KCnRlc3Rfc3luY19o YW5kbGVyIGV4ZXJjaXNlcyByZWdpc3Rlcl9zeW5jX2hhbmRsZXIoKSBmcm9tIF9QR19pbml0KCkK YW5kIHZlcmlmaWVzOgoKICAtIFRoZSByZWdpc3RlcmVkIGhhbmRsZXIgSUQgaXMgYXQgbGVhc3Qg U1lOQ19IQU5ETEVSX0ZJUlNUX0RZTkFNSUMuCiAgLSBEaXN0aW5jdCBGaWxlVGFncyBwcm9kdWNl IGRpc3RpbmN0IHN5bmNfc3luY2ZpbGV0YWcgY2FsbGJhY2tzCiAgICBhdCBDSEVDS1BPSU5UIHRp bWUuCiAgLSBEdXBsaWNhdGUgRmlsZVRhZ3MgY29hbGVzY2UgdmlhIEhBU0hfQkxPQlMgdG8gYSBz aW5nbGUgZGlzcGF0Y2guCiAgLSBJZGxlIGNoZWNrcG9pbnRzIGRvIG5vdCByZS1kaXNwYXRjaCBh bHJlYWR5LXByb2Nlc3NlZCBlbnRyaWVzCiAgICAoY3ljbGVfY3RyIHNraXApLgoKU2hhcmVkIHN0 YXRlIGJldHdlZW4gdGhlIGJhY2tlbmQgYW5kIHRoZSBjaGVja3BvaW50ZXIgdXNlcwpHZXROYW1l ZERTTVNlZ21lbnQoKSBzbyB0aGUgZGlzcGF0Y2ggY291bnRlciBpcyB2aXNpYmxlIHRvIHRoZQpi YWNrZW5kIHRoYXQgcXVlcmllcyBpdC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20v SUExUFIwN01COTgzMDcyNTIxRUU3RkRFRTk4OTAyNTM0QTk1OTJASUExUFIwN01COTgzMC5uYW1w cmQwNy5wcm9kLm91dGxvb2suY29tCi0tLQogc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgICAg ICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3luY19oYW5kbGVy Ly5naXRpZ25vcmUgfCAgIDQgKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3N5bmNfaGFuZGxlci9N YWtlZmlsZSAgIHwgIDI3ICsrKwogLi4uL21vZHVsZXMvdGVzdF9zeW5jX2hhbmRsZXIvbWVzb24u YnVpbGQgICAgIHwgIDMzICsrKysKIC4uLi9tb2R1bGVzL3Rlc3Rfc3luY19oYW5kbGVyL3QvMDAx X2Jhc2ljLnBsICB8ICA5NiArKysrKysrKysKIC4uLi90ZXN0X3N5bmNfaGFuZGxlci0tMS4wLnNx bCAgICAgICAgICAgICAgICB8ICAxMyArKwogLi4uL3Rlc3Rfc3luY19oYW5kbGVyL3Rlc3Rfc3lu Y19oYW5kbGVyLmMgICAgIHwgMTg3ICsrKysrKysrKysrKysrKysrKwogLi4uL3Rlc3Rfc3luY19o YW5kbGVyLmNvbnRyb2wgICAgICAgICAgICAgICAgIHwgICA0ICsKIDkgZmlsZXMgY2hhbmdlZCwg MzY2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rl c3Rfc3luY19oYW5kbGVyLy5naXRpZ25vcmUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfc3luY19oYW5kbGVyL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3N5bmNfaGFuZGxlci9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zeW5jX2hhbmRsZXIvdC8wMDFfYmFzaWMucGwK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3luY19oYW5kbGVyL3Rl c3Rfc3luY19oYW5kbGVyLS0xLjAuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3N5bmNfaGFuZGxlci90ZXN0X3N5bmNfaGFuZGxlci5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3N5bmNfaGFuZGxlci90ZXN0X3N5bmNfaGFuZGxl ci5jb250cm9sCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSBiL3NyYy90 ZXN0L21vZHVsZXMvTWFrZWZpbGUKaW5kZXggMGE3NGFiNWM4NmYuLjJhMzMzNGQ3NTA4IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv TWFrZWZpbGUKQEAgLTUyLDYgKzUyLDcgQEAgU1VCRElSUyA9IFwKIAkJICB0ZXN0X3NobWVtIFwK IAkJICB0ZXN0X3NobV9tcSBcCiAJCSAgdGVzdF9zbHJ1IFwKKwkJICB0ZXN0X3N5bmNfaGFuZGxl ciBcCiAJCSAgdGVzdF90aWRzdG9yZSBcCiAJCSAgdW5zYWZlX3Rlc3RzIFwKIAkJICB3b3JrZXJf c3BpIFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgYi9zcmMvdGVz dC9tb2R1bGVzL21lc29uLmJ1aWxkCmluZGV4IDRiY2E0MmJiMzcwLi4wMGJjNzQ1NGNjOCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL21lc29uLmJ1aWxkCkBAIC01Myw2ICs1Myw3IEBAIHN1YmRpcigndGVzdF9zYXNscHJlcCcp CiBzdWJkaXIoJ3Rlc3Rfc2htZW0nKQogc3ViZGlyKCd0ZXN0X3NobV9tcScpCiBzdWJkaXIoJ3Rl c3Rfc2xydScpCitzdWJkaXIoJ3Rlc3Rfc3luY19oYW5kbGVyJykKIHN1YmRpcigndGVzdF90aWRz dG9yZScpCiBzdWJkaXIoJ3R5cGNhY2hlJykKIHN1YmRpcigndW5zYWZlX3Rlc3RzJykKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zeW5jX2hhbmRsZXIvLmdpdGlnbm9yZSBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9zeW5jX2hhbmRsZXIvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWRjYjNmZjk3MjMKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3luY19oYW5kbGVyLy5naXRpZ25vcmUKQEAgLTAsMCAr MSw0IEBACisjIEdlbmVyYXRlZCBzdWJkaXJlY3RvcmllcworL2xvZy8KKy9yZXN1bHRzLworL3Rt cF9jaGVjay8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zeW5jX2hhbmRsZXIv TWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3luY19oYW5kbGVyL01ha2VmaWxlCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMjMyNmE0N2U5YwotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zeW5jX2hhbmRsZXIvTWFrZWZpbGUK QEAgLTAsMCArMSwyNyBAQAorIyBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3luY19oYW5kbGVyL01h a2VmaWxlCisKK01PRFVMRV9iaWcgPSB0ZXN0X3N5bmNfaGFuZGxlcgorT0JKUyA9IFwKKwkkKFdJ TjMyUkVTKSBcCisJdGVzdF9zeW5jX2hhbmRsZXIubworUEdGSUxFREVTQyA9ICJ0ZXN0X3N5bmNf aGFuZGxlciAtIHRlc3QgbW9kdWxlIGZvciBzeW5jIGhhbmRsZXIgcmVnaXN0cmF0aW9uIgorCitF WFRFTlNJT04gPSB0ZXN0X3N5bmNfaGFuZGxlcgorREFUQSA9IHRlc3Rfc3luY19oYW5kbGVyLS0x LjAuc3FsCisKK1RBUF9URVNUUyA9IDEKKworIyBUZXN0cyByZXF1aXJlIHNoYXJlZF9wcmVsb2Fk X2xpYnJhcmllcz10ZXN0X3N5bmNfaGFuZGxlciB3aGljaCB0eXBpY2FsCisjIGluc3RhbGxjaGVj ayB1c2VycyBkbyBub3QgaGF2ZS4gTWF0Y2ggdGVzdF9zbHJ1J3MgY29udmVudGlvbi4KK05PX0lO U1RBTExDSEVDSyA9IDEKKworaWZkZWYgVVNFX1BHWFMKK1BHX0NPTkZJRyA9IHBnX2NvbmZpZwor UEdYUyA6PSAkKHNoZWxsICQoUEdfQ09ORklHKSAtLXBneHMpCitpbmNsdWRlICQoUEdYUykKK2Vs c2UKK3N1YmRpciA9IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zeW5jX2hhbmRsZXIKK3RvcF9idWls ZGRpciA9IC4uLy4uLy4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUu Z2xvYmFsCitpbmNsdWRlICQodG9wX3NyY2RpcikvY29udHJpYi9jb250cmliLWdsb2JhbC5tawor ZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zeW5jX2hhbmRsZXIvbWVz b24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3luY19oYW5kbGVyL21lc29uLmJ1aWxk Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lN2YwMzYxNmJhMAotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zeW5jX2hhbmRsZXIvbWVzb24u YnVpbGQKQEAgLTAsMCArMSwzMyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3Rlc3Rfc3luY19oYW5kbGVyX3NvdXJjZXMgPSBm aWxlcygKKyAgJ3Rlc3Rfc3luY19oYW5kbGVyLmMnLAorKQorCitpZiBob3N0X3N5c3RlbSA9PSAn d2luZG93cycKKyAgdGVzdF9zeW5jX2hhbmRsZXJfc291cmNlcyArPSByY19saWJfZ2VuLnByb2Nl c3Mod2luMzJ2ZXJfcmMsIGV4dHJhX2FyZ3M6IFsKKyAgICAnLS1OQU1FJywgJ3Rlc3Rfc3luY19o YW5kbGVyJywKKyAgICAnLS1GSUxFREVTQycsICd0ZXN0X3N5bmNfaGFuZGxlciAtIHRlc3QgbW9k dWxlIGZvciBzeW5jIGhhbmRsZXIgcmVnaXN0cmF0aW9uJyxdKQorZW5kaWYKKwordGVzdF9zeW5j X2hhbmRsZXIgPSBzaGFyZWRfbW9kdWxlKCd0ZXN0X3N5bmNfaGFuZGxlcicsCisgIHRlc3Rfc3lu Y19oYW5kbGVyX3NvdXJjZXMsCisgIGt3YXJnczogcGdfdGVzdF9tb2RfYXJncywKKykKK3Rlc3Rf aW5zdGFsbF9saWJzICs9IHRlc3Rfc3luY19oYW5kbGVyCisKK3Rlc3RfaW5zdGFsbF9kYXRhICs9 IGZpbGVzKAorICAndGVzdF9zeW5jX2hhbmRsZXIuY29udHJvbCcsCisgICd0ZXN0X3N5bmNfaGFu ZGxlci0tMS4wLnNxbCcsCispCisKK3Rlc3RzICs9IHsKKyAgJ25hbWUnOiAndGVzdF9zeW5jX2hh bmRsZXInLAorICAnc2QnOiBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzogbWVz b24uY3VycmVudF9idWlsZF9kaXIoKSwKKyAgJ3RhcCc6IHsKKyAgICAndGVzdHMnOiBbCisgICAg ICAndC8wMDFfYmFzaWMucGwnLAorICAgIF0sCisgIH0sCit9CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3Rfc3luY19oYW5kbGVyL3QvMDAxX2Jhc2ljLnBsIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3N5bmNfaGFuZGxlci90LzAwMV9iYXNpYy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uMjljMGZjM2M2MWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3Rfc3luY19oYW5kbGVyL3QvMDAxX2Jhc2ljLnBsCkBAIC0wLDAgKzEs OTYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVu dCBHcm91cAorIworIyBCYXNpYyB0ZXN0IGZvciByZWdpc3Rlcl9zeW5jX2hhbmRsZXIoKSBkaXNw YXRjaC4KKyMKKyMgVmVyaWZpZXMgdGhhdCBhIGN1c3RvbSBzeW5jIGhhbmRsZXIgcmVnaXN0ZXJl ZCB2aWEgcmVnaXN0ZXJfc3luY19oYW5kbGVyKCkKKyMgaW4gX1BHX2luaXQoKSByZWNlaXZlcyBj YWxsYmFjayBpbnZvY2F0aW9ucyBmcm9tIFByb2Nlc3NTeW5jUmVxdWVzdHMoKSBhdAorIyBDSEVD S1BPSU5UIHRpbWUsIHRoYXQgaWRlbnRpY2FsIEZpbGVUYWdzIGNvYWxlc2NlIHZpYSBIQVNIX0JM T0JTCisjIGRlZHVwbGljYXRpb24sIHRoYXQgZGlzdGluY3QgRmlsZVRhZ3MgcHJvZHVjZSBkaXN0 aW5jdCBjYWxsYmFja3MsIGFuZAorIyB0aGF0IGFuIGlkbGUgY2hlY2twb2ludCBkb2VzIG5vdCBy ZS1kaXNwYXRjaCBlbnRyaWVzIHRoYXQgd2VyZSBhbHJlYWR5CisjIHByb2Nlc3NlZCAoY3ljbGVf Y3RyIHNraXApLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwor Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXItPm5ldygnc3luY19oYW5kbGVyJyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5hcHBlbmRf Y29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXsKK3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyA9 ICd0ZXN0X3N5bmNfaGFuZGxlcicKKyMgVEFQIGNsdXN0ZXJzIHNldCBmc3luYyA9IG9mZiBieSBk ZWZhdWx0IGZvciBzcGVlZDsgcmUtZW5hYmxlIGhlcmUgc28KKyMgdGhhdCBQcm9jZXNzU3luY1Jl cXVlc3RzIGFjdHVhbGx5IGRpc3BhdGNoZXMgb3VyIHN5bmMgaGFuZGxlciBjYWxsYmFjay4KK2Zz eW5jID0gb24KK30pOworJG5vZGUtPnN0YXJ0OworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X3N5bmNfaGFuZGxlcicpOworCisjIFRoZSBoYW5kbGVy IElEIG11c3QgYmUgPj0gU1lOQ19IQU5ETEVSX0ZJUlNUX0RZTkFNSUMuIEJ1aWx0LWlucworIyBj dXJyZW50bHkgb2NjdXB5IElEcyAwLi40LCBzbyB0aGUgZmlyc3QgZXh0ZW5zaW9uIGhhbmRsZXIg c2hvdWxkIGJlCisjIGF0IGxlYXN0IDUuCitteSAkaWQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICdTRUxFQ1QgdGVzdF9zeW5jX2hhbmRsZXJfaWQoKScpOworb2soJGlkID49IDUsCisJ ImhhbmRsZXIgaWQgJGlkIGlzID49IFNZTkNfSEFORExFUl9GSVJTVF9EWU5BTUlDIChidWlsdC1p bnMgPSA1KSIpCisgIG9yIGRpYWcoImdvdCBpZD0kaWQiKTsKKworIyBCYXNlbGluZTogbm8gZGlz cGF0Y2hlcyBiZWZvcmUgd2UgcXVldWUgYW55dGhpbmcuCitteSAkYmFzZWxpbmUgPQorICAkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgdGVzdF9zeW5jX2hhbmRsZXJfY291bnQo KScpOworaXMoJGJhc2VsaW5lLCAnMCcsICdiYXNlbGluZSBkaXNwYXRjaCBjb3VudCBpcyB6ZXJv Jyk7CisKKyMgUXVldWUgNSBkaXN0aW5jdCBGaWxlVGFncyAoZGlmZmVyaW5nIGluIHNlZ25vIG9u bHkpIGFuZCBjaGVja3BvaW50LgorIyBFeHBlY3QgNSBjYWxsYmFjayBpbnZvY2F0aW9ucyBzaW5j ZSB0aGV5IGFyZSBhbGwgZGlzdGluY3QgaGFzaCBrZXlzLgorJG5vZGUtPnNhZmVfcHNxbCgKKwkn cG9zdGdyZXMnLCBxeworU0VMRUNUIHRlc3Rfc3luY19oYW5kbGVyX3JlZ2lzdGVyKDEpOworU0VM RUNUIHRlc3Rfc3luY19oYW5kbGVyX3JlZ2lzdGVyKDIpOworU0VMRUNUIHRlc3Rfc3luY19oYW5k bGVyX3JlZ2lzdGVyKDMpOworU0VMRUNUIHRlc3Rfc3luY19oYW5kbGVyX3JlZ2lzdGVyKDQpOwor U0VMRUNUIHRlc3Rfc3luY19oYW5kbGVyX3JlZ2lzdGVyKDUpOworfSk7Ciskbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICdDSEVDS1BPSU5UJyk7CitteSAkYWZ0ZXJfZGlzdGluY3QgPQorICAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgdGVzdF9zeW5jX2hhbmRsZXJfY291 bnQoKScpOworaXMoJGFmdGVyX2Rpc3RpbmN0LCAnNScsCisJJzUgZGlzdGluY3QgRmlsZVRhZ3Mg cHJvZHVjZSA1IHN5bmNfc3luY2ZpbGV0YWcgY2FsbGJhY2tzJykKKyAgb3IgZGlhZygiZ290ICRh ZnRlcl9kaXN0aW5jdCIpOworCisjIFF1ZXVlIDEwIGR1cGxpY2F0ZSBGaWxlVGFncyAoc2FtZSBz ZWdubyA0MikgYW5kIGNoZWNrcG9pbnQuCisjIEV4cGVjdCBleGFjdGx5IDEgYWRkaXRpb25hbCBj YWxsYmFjayBiZWNhdXNlIHBlbmRpbmdPcHMgdXNlcyBIQVNIX0JMT0JTCisjIGFuZCBjb2xsYXBz ZXMgaWRlbnRpY2FsIEZpbGVUYWdzIGludG8gYSBzaW5nbGUgaGFzaCBlbnRyeS4KKyRub2RlLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXsKK1NFTEVDVCB0ZXN0X3N5bmNfaGFuZGxlcl9yZWdp c3Rlcig0Mik7CitTRUxFQ1QgdGVzdF9zeW5jX2hhbmRsZXJfcmVnaXN0ZXIoNDIpOworU0VMRUNU IHRlc3Rfc3luY19oYW5kbGVyX3JlZ2lzdGVyKDQyKTsKK1NFTEVDVCB0ZXN0X3N5bmNfaGFuZGxl cl9yZWdpc3Rlcig0Mik7CitTRUxFQ1QgdGVzdF9zeW5jX2hhbmRsZXJfcmVnaXN0ZXIoNDIpOwor U0VMRUNUIHRlc3Rfc3luY19oYW5kbGVyX3JlZ2lzdGVyKDQyKTsKK1NFTEVDVCB0ZXN0X3N5bmNf aGFuZGxlcl9yZWdpc3Rlcig0Mik7CitTRUxFQ1QgdGVzdF9zeW5jX2hhbmRsZXJfcmVnaXN0ZXIo NDIpOworU0VMRUNUIHRlc3Rfc3luY19oYW5kbGVyX3JlZ2lzdGVyKDQyKTsKK1NFTEVDVCB0ZXN0 X3N5bmNfaGFuZGxlcl9yZWdpc3Rlcig0Mik7Cit9KTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgJ0NIRUNLUE9JTlQnKTsKK215ICRhZnRlcl9jb2FsZXNjZSA9CisgICRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCB0ZXN0X3N5bmNfaGFuZGxlcl9jb3VudCgpJyk7Citp cygkYWZ0ZXJfY29hbGVzY2UsICc2JywKKwknMTAgZHVwbGljYXRlIEZpbGVUYWdzIGNvYWxlc2Nl IHZpYSBIQVNIX0JMT0JTIHRvIDEgYWRkaXRpb25hbCBjYWxsYmFjaycpCisgIG9yIGRpYWcoImdv dCAkYWZ0ZXJfY29hbGVzY2UiKTsKKworIyBTZWNvbmQgQ0hFQ0tQT0lOVCB3aXRoIG5vIG5ldyBy ZXF1ZXN0cy4gVGhlIGNvdW50IG11c3Qgc3RheSB0aGUgc2FtZToKKyMgZXZlcnkgZW50cnkgZnJv bSB0aGUgcHJldmlvdXMgY2hlY2twb2ludCB3YXMgcHJvY2Vzc2VkIGFuZCByZW1vdmVkCisjIGZy b20gcGVuZGluZ09wcywgYW5kIG5vIG5ldyBlbnRyaWVzIGhhdmUgYmVlbiBxdWV1ZWQsIHNvCisj IFByb2Nlc3NTeW5jUmVxdWVzdHMgaGFzIG5vdGhpbmcgdG8gZGlzcGF0Y2guCiskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICdDSEVDS1BPSU5UJyk7CitteSAkYWZ0ZXJfaWRsZSA9CisgICRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCB0ZXN0X3N5bmNfaGFuZGxlcl9jb3Vu dCgpJyk7CitpcygkYWZ0ZXJfaWRsZSwgJzYnLCAnaWRsZSBjaGVja3BvaW50IGRvZXMgbm90IHJl LWRpc3BhdGNoJykKKyAgb3IgZGlhZygiZ290ICRhZnRlcl9pZGxlIik7CisKKyRub2RlLT5zdG9w OworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9z eW5jX2hhbmRsZXIvdGVzdF9zeW5jX2hhbmRsZXItLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc3luY19oYW5kbGVyL3Rlc3Rfc3luY19oYW5kbGVyLS0xLjAuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wN2VhMjk3ZjE1ZgotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zeW5jX2hhbmRsZXIvdGVzdF9zeW5jX2hhbmRsZXIt LTEuMC5zcWwKQEAgLTAsMCArMSwxMyBAQAorLyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3N5bmNf aGFuZGxlci90ZXN0X3N5bmNfaGFuZGxlci0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBz Y3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lP TgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3Rfc3luY19oYW5kbGVyIiB0byBsb2Fk IHRoaXMgZmlsZS4gXHF1aXQKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3Rfc3luY19oYW5kbGVyX2lk KCkgUkVUVVJOUyBpbnQ0CisgIEFTICdNT0RVTEVfUEFUSE5BTUUnLCAndGVzdF9zeW5jX2hhbmRs ZXJfaWQnIExBTkdVQUdFIEMgU1RSSUNUOworCitDUkVBVEUgRlVOQ1RJT04gdGVzdF9zeW5jX2hh bmRsZXJfcmVnaXN0ZXIoc2VnIGJpZ2ludCkgUkVUVVJOUyB2b2lkCisgIEFTICdNT0RVTEVfUEFU SE5BTUUnLCAndGVzdF9zeW5jX2hhbmRsZXJfcmVnaXN0ZXInIExBTkdVQUdFIEMgU1RSSUNUOwor CitDUkVBVEUgRlVOQ1RJT04gdGVzdF9zeW5jX2hhbmRsZXJfY291bnQoKSBSRVRVUk5TIGJpZ2lu dAorICBBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ3Rlc3Rfc3luY19oYW5kbGVyX2NvdW50JyBMQU5H VUFHRSBDIFNUUklDVDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zeW5jX2hh bmRsZXIvdGVzdF9zeW5jX2hhbmRsZXIuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zeW5jX2hh bmRsZXIvdGVzdF9zeW5jX2hhbmRsZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uYjJjZDI1Y2MxOGQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc3luY19oYW5kbGVyL3Rlc3Rfc3luY19oYW5kbGVyLmMKQEAgLTAsMCArMSwxODcgQEAK Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB0ZXN0X3N5bmNfaGFuZGxlci5jCisgKgkJTWlu aW1hbCBleHRlbnNpb24gZXhlcmNpc2luZyByZWdpc3Rlcl9zeW5jX2hhbmRsZXIoKSArIGRpc3Bh dGNoLgorICoKKyAqIFRoaXMgbW9kdWxlIGRlbW9uc3RyYXRlcyB0aGUgc3luYy5jIGV4dGVuc2li aWxpdHkgQVBJIGJ5IHJlZ2lzdGVyaW5nIGEKKyAqIHRyaXZpYWwgU3luY09wcyBkdXJpbmcgX1BH X2luaXQoKSwgZXhwb3NpbmcgU1FMLWNhbGxhYmxlIGhlbHBlcnMgdG8KKyAqIHF1ZXVlIEZpbGVU YWdzIGZvciB0aGUgcmVnaXN0ZXJlZCBoYW5kbGVyLCBhbmQgdHJhY2tpbmcgaG93IG1hbnkgdGlt ZXMKKyAqIHRoZSBoYW5kbGVyJ3Mgc3luY19zeW5jZmlsZXRhZyBjYWxsYmFjayBpcyBpbnZva2Vk LgorICoKKyAqIEJlY2F1c2Ugc3luY19zeW5jZmlsZXRhZyBydW5zIGluIHRoZSBjaGVja3BvaW50 ZXIgcHJvY2VzcyBidXQKKyAqIHRlc3Rfc3luY19oYW5kbGVyX2NvdW50KCkgcnVucyBpbiBhIHJl Z3VsYXIgYmFja2VuZCwgdGhlIGNhbGwgY291bnRlcgorICogbGl2ZXMgaW4gc2hhcmVkIG1lbW9y eSB2aWEgR2V0TmFtZWREU01TZWdtZW50KCkuCisgKgorICogVGhlIFRBUCB0ZXN0IGluIHQvMDAx X2Jhc2ljLnBsIHVzZXMgdGhpcyBtb2R1bGUgdG8gdmVyaWZ5OgorICogICAtIHJlZ2lzdGVyX3N5 bmNfaGFuZGxlcigpIHJldHVybnMgYW4gSUQgPj0gU1lOQ19IQU5ETEVSX0ZJUlNUX0RZTkFNSUMK KyAqICAgLSBRdWV1ZWQgRmlsZVRhZ3Mgcm91bmQtdHJpcCB0aHJvdWdoIHRoZSBjaGVja3BvaW50 ZXIgYW5kIGxhbmQgaW4KKyAqICAgICB0aGUgcmVnaXN0ZXJlZCBzeW5jX3N5bmNmaWxldGFnIGNh bGxiYWNrIGF0IENIRUNLUE9JTlQgdGltZQorICogICAtIElkZW50aWNhbCBGaWxlVGFncyBjb2Fs ZXNjZSB2aWEgSEFTSF9CTE9CUyBkZWR1cGxpY2F0aW9uIGluCisgKiAgICAgcGVuZGluZ09wcyAo TiBkdXBsaWNhdGVzIC0+IDEgY2FsbGJhY2spCisgKiAgIC0gRGlzdGluY3QgRmlsZVRhZ3MgcHJv ZHVjZSBkaXN0aW5jdCBjYWxsYmFja3MKKyAqICAgLSBJZGxlIGNoZWNrcG9pbnRzIGRvIG5vdCBy ZS1kaXNwYXRjaCAoY3ljbGVfY3RyIHNraXApCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI2LCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9O CisgKgkJc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3N5bmNfaGFuZGxlci90ZXN0X3N5bmNfaGFuZGxl ci5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIK KworI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJw Z19jb25maWcuaCIKKyNpbmNsdWRlICJwb3J0L2F0b21pY3MuaCIKKyNpbmNsdWRlICJzdG9yYWdl L2RzbV9yZWdpc3RyeS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3luYy5oIgorI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCisKK1BHX01PRFVMRV9NQUdJQzsKKwordm9pZAkJX1BHX2luaXQodm9p ZCk7CisKK3R5cGVkZWYgc3RydWN0IFRzaFNoYXJlZFN0YXRlCit7CisJcGdfYXRvbWljX3VpbnQ2 NCBjYWxsX2NvdW50OworfSBUc2hTaGFyZWRTdGF0ZTsKKworc3RhdGljIGludDE2IHRzaF9oYW5k bGVyX2lkID0gLTE7CitzdGF0aWMgVHNoU2hhcmVkU3RhdGUgKnRzaF9zaGFyZWQgPSBOVUxMOwor CisvKgorICogR2V0TmFtZWREU01TZWdtZW50J3MgaW5pdF9jYWxsYmFjayBzaWduYXR1cmUgZ2Fp bmVkIGFuIGV4dHJhIGBhcmdgCisgKiBwYXJhbWV0ZXIgaW4gUEcgMTlkZXZlbC4gUHJvdmlkZSBi b3RoIHNoYXBlcyBzbyB0aGUgdGVzdCBtb2R1bGUgaXMKKyAqIGJ1aWxkYWJsZSBhY3Jvc3MgMTgg YW5kIDE5LgorICovCisjaWYgUEdfVkVSU0lPTl9OVU0gPj0gMTkwMDAwCitzdGF0aWMgdm9pZAor dHNoX2luaXRfc2htZW0odm9pZCAqcHRyLCB2b2lkICphcmcpCisjZWxzZQorc3RhdGljIHZvaWQK K3RzaF9pbml0X3NobWVtKHZvaWQgKnB0cikKKyNlbmRpZgoreworCVRzaFNoYXJlZFN0YXRlICpz dGF0ZSA9IChUc2hTaGFyZWRTdGF0ZSAqKSBwdHI7CisKKwlwZ19hdG9taWNfaW5pdF91NjQoJnN0 YXRlLT5jYWxsX2NvdW50LCAwKTsKK30KKworc3RhdGljIHZvaWQKK3RzaF9hdHRhY2hfc2htZW0o dm9pZCkKK3sKKwlib29sCQlmb3VuZDsKKworCWlmICh0c2hfc2hhcmVkICE9IE5VTEwpCisJCXJl dHVybjsKKyNpZiBQR19WRVJTSU9OX05VTSA+PSAxOTAwMDAKKwl0c2hfc2hhcmVkID0gR2V0TmFt ZWREU01TZWdtZW50KCJ0ZXN0X3N5bmNfaGFuZGxlciIsCisJCQkJCQkJCQlzaXplb2YoVHNoU2hh cmVkU3RhdGUpLAorCQkJCQkJCQkJdHNoX2luaXRfc2htZW0sCisJCQkJCQkJCQkmZm91bmQsCisJ CQkJCQkJCQlOVUxMKTsKKyNlbHNlCisJdHNoX3NoYXJlZCA9IEdldE5hbWVkRFNNU2VnbWVudCgi dGVzdF9zeW5jX2hhbmRsZXIiLAorCQkJCQkJCQkJc2l6ZW9mKFRzaFNoYXJlZFN0YXRlKSwKKwkJ CQkJCQkJCXRzaF9pbml0X3NobWVtLAorCQkJCQkJCQkJJmZvdW5kKTsKKyNlbmRpZgorfQorCitz dGF0aWMgaW50Cit0ZXN0X3N5bmNfc3luY2ZpbGV0YWcoY29uc3QgRmlsZVRhZyAqZnRhZywgY2hh ciAqcGF0aCkKK3sKKwkvKgorCSAqIFRoaXMgcnVucyBpbiB0aGUgY2hlY2twb2ludGVyIHByb2Nl c3MuIEF0dGFjaCB0byB0aGUgc2hhcmVkIG1lbW9yeQorCSAqIHNlZ21lbnQgdGhlIGZpcnN0IHRp bWUgd2UncmUgY2FsbGVkIHNvIHRoYXQgY291bnRlciBpbmNyZW1lbnRzIGFyZQorCSAqIHZpc2li bGUgdG8gdGhlIGJhY2tlbmQgdGhhdCBxdWVyaWVzIHRlc3Rfc3luY19oYW5kbGVyX2NvdW50KCku CisJICovCisJdHNoX2F0dGFjaF9zaG1lbSgpOworCXBnX2F0b21pY19mZXRjaF9hZGRfdTY0KCZ0 c2hfc2hhcmVkLT5jYWxsX2NvdW50LCAxKTsKKworCWlmIChwYXRoICE9IE5VTEwpCisJCXNucHJp bnRmKHBhdGgsIE1BWFBHUEFUSCwgInRlc3Rfc3luY19oYW5kbGVyOnNlZyVsbHUiLAorCQkJCSAo dW5zaWduZWQgbG9uZyBsb25nKSBmdGFnLT5zZWdubyk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQKK3Rlc3Rfc3luY191bmxpbmtmaWxldGFnKGNvbnN0IEZpbGVUYWcgKmZ0YWcsIGNoYXIg KnBhdGgpCit7CisJaWYgKHBhdGggIT0gTlVMTCkKKwkJc25wcmludGYocGF0aCwgTUFYUEdQQVRI LCAidGVzdF9zeW5jX2hhbmRsZXI6dW5saW5rIik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBi b29sCit0ZXN0X3N5bmNfZmlsZXRhZ21hdGNoZXMoY29uc3QgRmlsZVRhZyAqZnRhZywgY29uc3Qg RmlsZVRhZyAqY2FuZGlkYXRlKQoreworCS8qCisJICogTWF0Y2ggb24gZGJPaWQsIG1pcnJvcmlu ZyBtZC5jJ3MgRFJPUCBEQVRBQkFTRSBzZW1hbnRpY3MuIFRoZSB0ZXN0CisJICogZG9lc24ndCBl eGVyY2lzZSB0aGUgZmlsdGVyIHBhdGggdG9kYXksIGJ1dCB0aGUgY2FsbGJhY2sgaXMgZGVmaW5l ZCBzbworCSAqIGV4dGVuc2lvbnMgY2FuIHVzZSB0aGlzIG1vZHVsZSBhcyBhIGNvcHktcGFzdGUg c3RhcnRpbmcgcG9pbnQuCisJICovCisJcmV0dXJuIGZ0YWctPnJsb2NhdG9yLmRiT2lkID09IGNh bmRpZGF0ZS0+cmxvY2F0b3IuZGJPaWQ7Cit9CisKK3N0YXRpYyBjb25zdCBTeW5jT3BzIHRlc3Rf c3luY19vcHMgPSB7CisJLnN5bmNfc3luY2ZpbGV0YWcgPSB0ZXN0X3N5bmNfc3luY2ZpbGV0YWcs CisJLnN5bmNfdW5saW5rZmlsZXRhZyA9IHRlc3Rfc3luY191bmxpbmtmaWxldGFnLAorCS5zeW5j X2ZpbGV0YWdtYXRjaGVzID0gdGVzdF9zeW5jX2ZpbGV0YWdtYXRjaGVzLAorfTsKKwordm9pZAor X1BHX2luaXQodm9pZCkKK3sKKwl0c2hfaGFuZGxlcl9pZCA9IHJlZ2lzdGVyX3N5bmNfaGFuZGxl cigmdGVzdF9zeW5jX29wcywgInRlc3Rfc3luY19oYW5kbGVyIik7CisJZWxvZyhMT0csICJ0ZXN0 X3N5bmNfaGFuZGxlcjogcmVnaXN0ZXJlZCBhcyBpZCAlZCIsCisJCSAoaW50KSB0c2hfaGFuZGxl cl9pZCk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9zeW5jX2hhbmRsZXJfaWQpOwor RGF0dW0KK3Rlc3Rfc3luY19oYW5kbGVyX2lkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJUEdfUkVU VVJOX0lOVDMyKChpbnQzMikgdHNoX2hhbmRsZXJfaWQpOworfQorCitQR19GVU5DVElPTl9JTkZP X1YxKHRlc3Rfc3luY19oYW5kbGVyX3JlZ2lzdGVyKTsKK0RhdHVtCit0ZXN0X3N5bmNfaGFuZGxl cl9yZWdpc3RlcihQR19GVU5DVElPTl9BUkdTKQoreworCWludDY0CQlzZWcgPSBQR19HRVRBUkdf SU5UNjQoMCk7CisJRmlsZVRhZwkJdGFnOworCisJaWYgKHRzaF9oYW5kbGVyX2lkIDwgMCkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVEVSTkFMX0VSUk9SKSwKKwkJ CQkgZXJybXNnKCJzeW5jIGhhbmRsZXIgd2FzIG5vdCByZWdpc3RlcmVkIGR1cmluZyBtb2R1bGUg aW5pdGlhbGl6YXRpb24iKSkpOworCisJLyoKKwkgKiBNYW5kYXRvcnkgbWVtc2V0OiBwZW5kaW5n T3BzIHVzZXMgSEFTSF9CTE9CUyB3aGljaCBoYXNoZXMgZXZlcnkgYnl0ZSBvZgorCSAqIHRoZSBG aWxlVGFnLiBVbmluaXRpYWxpemVkIHBhZGRpbmcgd291bGQgYnJlYWsgY29hbGVzY2luZy4KKwkg Ki8KKwltZW1zZXQoJnRhZywgMCwgc2l6ZW9mKEZpbGVUYWcpKTsKKwl0YWcuaGFuZGxlciA9IHRz aF9oYW5kbGVyX2lkOworCXRhZy5mb3JrbnVtID0gMDsKKwl0YWcucmxvY2F0b3Iuc3BjT2lkID0g MTsKKwl0YWcucmxvY2F0b3IuZGJPaWQgPSBNeURhdGFiYXNlSWQ7CisJdGFnLnJsb2NhdG9yLnJl bE51bWJlciA9IDE7CisJdGFnLnNlZ25vID0gKHVpbnQ2NCkgc2VnOworCisJaWYgKCFSZWdpc3Rl clN5bmNSZXF1ZXN0KCZ0YWcsIFNZTkNfUkVRVUVTVCwgdHJ1ZSAvKiByZXRyeU9uRXJyb3IgKi8g KSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVEVSTkFMX0VSUk9S KSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgcmVnaXN0ZXIgc3luYyByZXF1ZXN0IikpKTsKKwor CVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9zeW5jX2hh bmRsZXJfY291bnQpOworRGF0dW0KK3Rlc3Rfc3luY19oYW5kbGVyX2NvdW50KFBHX0ZVTkNUSU9O X0FSR1MpCit7CisJdHNoX2F0dGFjaF9zaG1lbSgpOworCVBHX1JFVFVSTl9JTlQ2NCgoaW50NjQp IHBnX2F0b21pY19yZWFkX3U2NCgmdHNoX3NoYXJlZC0+Y2FsbF9jb3VudCkpOworfQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3N5bmNfaGFuZGxlci90ZXN0X3N5bmNfaGFuZGxl ci5jb250cm9sIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3N5bmNfaGFuZGxlci90ZXN0X3N5bmNf aGFuZGxlci5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4z ZDUyOGY3YTg2NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zeW5j X2hhbmRsZXIvdGVzdF9zeW5jX2hhbmRsZXIuY29udHJvbApAQCAtMCwwICsxLDQgQEAKK2NvbW1l bnQgPSAnVGVzdCBtb2R1bGUgZm9yIHN5bmMgaGFuZGxlciByZWdpc3RyYXRpb24nCitkZWZhdWx0 X3ZlcnNpb24gPSAnMS4wJworbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvdGVzdF9zeW5jX2hh bmRsZXInCityZWxvY2F0YWJsZSA9IHRydWUKLS0gCjIuNDcuMwoK --===============6838725020337159308==--