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.94.2) (envelope-from ) id 1rFUYU-00A8lB-9o for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Dec 2023 07:30:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rFUYS-00GAd6-Pw for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Dec 2023 07:30:16 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rFUWn-00G7J1-HS for pgsql-hackers@lists.postgresql.org; Tue, 19 Dec 2023 07:28:33 +0000 Received: from esa.hc2186-20.iphmx.com ([216.71.154.29]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rFUWk-00Cl1w-K3 for pgsql-hackers@lists.postgresql.org; Tue, 19 Dec 2023 07:28:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=ebay.com; i=@ebay.com; q=dns/txt; s=ebaycorp; t=1702970910; x=1734506910; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=VDfHzIubv8zKQfZmCUfO5fZDwBmiTd38WnttqYMtAOU=; b=UY0jDW4WXmYI45aO6nZ8KmnAKq1j9gpmnD9CajJ56CgXhupJLDkhdBdD U9EkpGVdrfST/bmV22JKGSe1CoSKr1fpaipZpFtlVaGtayEIZTdN8xzFO rY4wB/Bh8s0ihqBdvSVV1iKtrP4KkPSEtepR+uG9b+4zXVXQAvKaeOdpJ 0=; X-IronPort-RemoteIP: 216.113.162.88 X-IronPort-MID: 236803562 X-IronPort-Reputation: 3.7 X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: Vontu_to_CES_Outbound X-IronPort-MailFlowPolicy: $Vontu_to_CES_Outbound X-EBay-Corp: Yes X-IronPort-AV: E=Sophos;i="6.04,287,1695711600"; d="scan'208";a="236803562" Received: from lvs-dlpoutbound.corp.ebay.com (HELO slc-ipatom-003.corp.ebay.com) ([216.113.162.88]) by esa3.hc2186-20.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Dec 2023 23:28:25 -0800 X-ATOM: Processed_By_ATOM X-IronPort-Trust: True Received: from mail-co1nam11lp2169.outbound.protection.outlook.com (HELO NAM11-CO1-obe.outbound.protection.outlook.com) ([104.47.56.169]) by atom.corp.ebay.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Dec 2023 00:28:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g80S/hZMUNtiuhuQKhZjnPHkd5WJDO0Kiv0MCgUbzqd4QsQt9WUqCEPRP2YdbHbSFjfAG65uiMpI/aKM9BQdthpIp2Iz+CRoekvl1ZXIeRaXU6ftBAmD277ubugBa+PrroNVkeaG51c02W4aVCtfSP+Ggqq1SSM2RfwR8hVAdYF9J3V9RrY0spRZObVAo5+zY8QppquQ+zXULgKO7FaXGHOo+4z06xWd/b+dNSJb3uz3pz5cYt10NzzYw4Te/4QV7FKRoaJPHb3po264Vem5Hfs2jvnqs6L7ep+IfsJE0oI0XQqhdi96mTWkBuzMce+jLobCJEgyUdZ8GyC3TCrBLw== 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=1ziMe1hYcGSzIiDpgAEA4AHI50grorLXTve/z95zCbw=; b=aNGoM2wVN0RV7XebcpxH7eg651zRL3DF0UcWbD6bNbcAAHtILlcl+fXGQpGXHs0o+0Rj9gOqewWPZeJA1N+cdEegVBZJeTTS/M9rQfQ0QHGVIW8+VtEMQ7Jt6h9OP9YmQY9ZbT4pPrKjjFPBFkrnaM+dMgHmuXIyUOX+BFA4o/MNi15b8Xt7bCs+2SxXtxsJLcSm20hOFfKGrfG3123rnftJzRILlw0hImP+pa2nwTOGP3Ogxgft9c5tGC5Vr0zEm+MliSElUsvERBK7WxnZCiyqSb7b3WVMVZU3FhESs5lpTrZ14lGMyeY/HsBboqQxuarYGYPIPbi+uDdE2xnCeg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ebay.com; dmarc=pass action=none header.from=ebay.com; dkim=pass header.d=ebay.com; arc=none Received: from DM4PR07MB9812.namprd07.prod.outlook.com (2603:10b6:8:184::21) by SJ0PR07MB8550.namprd07.prod.outlook.com (2603:10b6:a03:35b::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.38; Tue, 19 Dec 2023 07:28:20 +0000 Received: from DM4PR07MB9812.namprd07.prod.outlook.com ([fe80::6f42:9117:d719:b45]) by DM4PR07MB9812.namprd07.prod.outlook.com ([fe80::6f42:9117:d719:b45%5]) with mapi id 15.20.7091.034; Tue, 19 Dec 2023 07:28:19 +0000 From: "Li, Yong" To: "Bagga, Rishu" , Robert Haas , "Debnath, Shawn" CC: Andrey Borodin , PostgreSQL Hackers , Aleksander Alekseev , "Shyrabokau, Anton" Subject: Re: Proposal to add page headers to SLRU pages Thread-Topic: Proposal to add page headers to SLRU pages Thread-Index: AQHaKNss5mPje/mnaE2h8Du+MbQszrCdm+4AgABCcICAADaUAP//iV2AgACdaQCAAOPEloAQTV+AgAFhagA= Date: Tue, 19 Dec 2023 07:28:19 +0000 Message-ID: <628CFBEF-DF56-4D9A-A2F1-0A417848B6B6@ebay.com> References: <162841701969726@mail-sendbernar-corp-main-71.iva.yp-c.yandex.net> <76110763-F29E-469E-AA62-2EED17875BB7@ebay.com> <1404E248-F2B2-48BC-9B5E-BB318F3BE583@amazon.com> In-Reply-To: <1404E248-F2B2-48BC-9B5E-BB318F3BE583@amazon.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/16.80.23121017 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=ebay.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM4PR07MB9812:EE_|SJ0PR07MB8550:EE_ x-ms-office365-filtering-correlation-id: 4ce7d21f-3c27-490d-eaa7-08dc006412cd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: K9MGIcfUwhKnK0W3LZGXD/mQ83yuvMPkg8bIViCEH/Ag6x9hCbYEjRb2lXh6mUBMTWJjCQhAKPL7ezqNvBYJy6O+IeaM+Wj364umqjC5vvYaoOhqzmKZw/zWcRjntxdAoI2bG0OQuvdcHnlDaFvvlHC9jwLrx3Chg+9X3sYVePLnin+FUdQOvo0sValS5JEmmdzE9ZPz00W2LwVoXDygmerSYdR3YYui9nkFQ4wqvrThejCmyCJs4T46KVM4rE4dYrNV4lZN4nE0mn8njyspSthLv3L7E/KyE4T41FvntAkTlHx97wp4IGTyJeVhy5op08Xd9BKG9ljoTxIUGkVo5jbuS/bpmopTz1BIGgC/ze59LVmr5VKwYmsqaomB+ogWM/nTkQG3L7cr2+XrAinFsRevmZl71i4ka1j2ZyEA4z+yKCdv5Qe4TC7AJg6QUQfWYK7aTQGUc/+TH3DXiOIvVTreDPF1eXrX04ro/x39ecLzXShaO2II6+1orA1nqv2aKpZ0nDGqmjTe14a1G+q1RASpROMsUzHsM6FNzW553CD8Ev4ElLFjCyYHwZuc91gXjZChuvkUO6Rkx91bOdamB9v5LpFcOqi+cWhtZW5yv11N4pw9YcFKMIGeby1PbyLIvFSwX+MQGFlskHljLsn6BxWy3k+nLAy2uHzBVHao2kQ= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR07MB9812.namprd07.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(136003)(346002)(396003)(376002)(366004)(39860400002)(230922051799003)(64100799003)(186009)(1800799012)(451199024)(5660300002)(8936002)(8676002)(122000001)(6506007)(6512007)(6486002)(4326008)(71200400001)(76116006)(54906003)(64756008)(6636002)(66446008)(316002)(66556008)(66946007)(4744005)(83380400001)(2906002)(66476007)(91956017)(110136005)(99936003)(33656002)(38100700002)(82960400001)(107886003)(10290500003)(2616005)(26005)(478600001)(966005)(41300700001)(36756003)(86362001)(38070700009)(3613699003)(45980500001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?djlWR01oQVVJQ1I1ZksxVnk0V01oTWRVZDBBbUd5OXgwYm40eW5SZHNlUEdS?= =?utf-8?B?eFplNHUyMlpxT1Z6KytxWE1UVFQ3aGp1VU1HZ3hTMWs5cVF3VzdKNmdzTDE4?= =?utf-8?B?Vi9OMkVqZXBDdUt4S1FuVWFzbCs4NUd3bUdyOCtDKy9SMzJnZUpSckh2Slc4?= =?utf-8?B?WDd5NDNBc2xwNjVvT2l6a3ZPcDU1M3FibGI1bnJTRkFwa1ZDT0FaZ3FDR3Fo?= =?utf-8?B?SUNKRHNKYVBsYU9RdVRwUlZra2hpYytGb1BFeXFDc0Rva0ZOOHZrcU8yODk3?= =?utf-8?B?RUxnS2FXREF4VVlMRVhobk9paGZxdGhMQWRacmRqcmFab2JrOGZHd0l0QnZl?= =?utf-8?B?Z29NUWRwRUhKNnFpSCt2cVNkUDRyb2ViR0NaY2JLWHFjdFpxemNWOEdBRzNs?= =?utf-8?B?VUJVMzJ0NDFRdTlDYTB3SzFZSkc1TnhyNXRXSlJpcnUvYXoralNtKzd2THNJ?= =?utf-8?B?TnJMcUg0YXhKN0xvMm1oMk1ZSDcyL1dYMlpwT0ZDRWptT3dHNmcxUjFqaFVW?= =?utf-8?B?V284SjFPTjF3WkZDOXlWWUN2T2xLdTVkaDV3cWN5cEJVTExmK0NKRXdYWHBh?= =?utf-8?B?cHlrbm5nS0ducXZiRGdPeGJPdVpIM0JjS1c5QkJMQ0VoNmZMNE9ieFlrL3RK?= =?utf-8?B?RHVoc1JuZElQNVZpOWRSVmpNQlZYMXVjVkM2WmJ3ODRJaUxzVy9LMVEvcXN4?= =?utf-8?B?N1EwbUdYNzFVbVE0bHIzMlA0d0JWMkp0Vy9KNXlBRVBtV3BlZDU0NEkrUzQ1?= =?utf-8?B?NGhPdm95UkI4WW9QL05vNFJxOGQxTWpudE5DR0ZDZWlrSytWMTlBMkdoZWs5?= =?utf-8?B?dXVmMmNYOUR1aUJQTW1MTVM4cmhwaHZzYjlvMEdPTWYwYVhzRUtlTWZ5WTZi?= =?utf-8?B?c2Qxdk9SRUVLMlg1c3hKN01SaDFFalg2WTFmMnpsSW1zMVdXc2ZybTVuVGdv?= =?utf-8?B?Yi9VOEFmbU1KdGJqU2x1ZzhqcUNpTHdCUkg2Wlg5VWRNRWZHeW5XUUxUMWxR?= =?utf-8?B?N09tQWZmRzdObmpaNmNmR3E0bWpzbExVQ3RpdVMySzRTbm1QV2dzNEtleUlS?= =?utf-8?B?eUVzankwNGVPWHJBbWxFR09ZWjRtekVXOXlvbDY4ZkY5aTJsMER4WnRhcGsz?= =?utf-8?B?Lzc1OWxYbzdxVE1BeTJ1MjlxN2pZd0FkL3dVcklDelo1aFJlTEF6ZE1QbnRj?= =?utf-8?B?M1N0RUU1aXEzNXVHQnEzNDRqNEY1NVZEWmRvenhXeHAwUm8rc0gvYVM3OVA0?= =?utf-8?B?Zk1iWnFWZ1ltZDNSd2xiZHllVU02MXBmWTZUMmhudTZsTTJ0YnpBN1BoTG0x?= =?utf-8?B?cUZpOU8xK2pYMHY5YnFXaXpVc0M3MllpSC9jbjBnQzVzYkU1NElseGgvMFY4?= =?utf-8?B?cWw0c0tnajRZQzkvdDlhK1JXVC9NRmU0eklkbzBxU0YxMXoyT1ZDZDUzd213?= =?utf-8?B?YjRLbnpPZ2RtbGEyZ2U5Rkk3bHhoQ3BXT0NFN3J6ZVpQTEFEdnhEdHh0dlFD?= =?utf-8?B?bUFnWDdEaUkraUl1ZUpIV1ppTUpuYjVUdFMwdm9Sc1AyZjNtaURnR1g2YzdX?= =?utf-8?B?STJKaTdxNmJFRjJQZnkydTFUNVJpT0NZSjhKdUZST2lJOG1KeXZFUTRFTCtW?= =?utf-8?B?RmdhbStpVGRUMDMxZWppaFNycDlodWNGT0NjYlYxd2JjQjNPYWxONCtmK0lm?= =?utf-8?B?WHdsc01NT3BDbXdFQlR5Skh4Qk1aSm43bkx5ckJSQUtrMTUza0duU0pVL2I3?= =?utf-8?B?dDZzSDdSWTdDQnVYbGUwWTU2encvTVB3Vlo3ZytNTGZ4Rk40SEFDTGpxTE9R?= =?utf-8?B?ekRBS3BkcXlZNVJCY0ZncDNESnFSNUJSMURrWEZvNWl4ZHdKYnlXa2Z4T2Vy?= =?utf-8?B?TWNiNm1CdVl6a0pGcmdrMXY1MjB0aGtFVkFyci9vclFyc2lqYWhSdDJOQ05T?= =?utf-8?B?cG5abTUremhGRXF0ZGZnZmVrOXpVVFdYUWJZa29HY2Q4Sk84Z0RWazZiVnJa?= =?utf-8?B?d2tLZ096QkV2aEVRYUlxbjgvWmZ3MmVTWEFPczl5cjEvQ2tFL25abmhzQ012?= =?utf-8?B?SW5EdzYrZ3hqQ1Zqdm5WQ2dPdDEvbTVXU29Ba2d3dEJ0OXBQMTVDUS9taWN5?= =?utf-8?Q?X8StWaSH8OPPSX44PpvCXxw8L?= Content-Type: multipart/mixed; boundary="_002_628CFBEFDF564D9AA2F10A417848B6B6ebaycom_" MIME-Version: 1.0 X-OriginatorOrg: ebay.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR07MB9812.namprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4ce7d21f-3c27-490d-eaa7-08dc006412cd X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Dec 2023 07:28:19.1757 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46326bff-9928-41a0-baca-17c16c94ea99 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Wi/pItU/USjdrTlqopip4BwAR6d2Fv3i6zlLwHm2JT7SK9vu4t1qGE76TOXCmlfC X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR07MB8550 X-CFilter-Loop: Reflected List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_628CFBEFDF564D9AA2F10A417848B6B6ebaycom_ Content-Type: text/plain; charset="utf-8" Content-ID: <1C03DF927D403C43955856528B8E532B@namprd07.prod.outlook.com> Content-Transfer-Encoding: base64 PiBUaGlzIHdvcmsgaXMgYmVpbmcgZG9uZSBpbiBmaWxlLmMg4oCTIGl0IHNlZW1zIHRvIG1lIHRo ZSBwcm9wZXIgd2F5IHRvDQo+IHByb2NlZWQgd291bGQgYmUgdG8gY29udGludWUgd3JpdGluZyBv bi1kaXNrIHVwZ3JhZGUgbG9naWMgaGVyZS4NCg0KPiBCZXNpZGVzIHRoYXQgdGhpcyBsb29rcyBn b29kIHRvIG1lLCB3b3VsZCBsaWtlIHRvIGhlYXIgd2hhdCBvdGhlcnMgaGF2ZSB0byBzYXkuDQoN ClRoYW5rIHlvdSwgUmlzaHUgZm9yIHRha2luZyB0aW1lIHRvIHJldmlldyB0aGUgY29kZS4gIEkn dmUgdXBkYXRlZCB0aGUgcGF0Y2gNCmFuZCBtb3ZlZCB0aGUgb24tZGlzayB1cGdyYWRlIGxvZ2lj IHRvIHBnX3VwZ3JhZGUvZmlsZS5jLg0KDQpJIGhhdmUgYWxzbyBhZGRlZCB0aGlzIHRocmVhZCB0 byB0aGUgY3VycmVudCBDb21taXRmZXN0IGFuZCBob3BlIHRoaXMgcGF0Y2gNCndpbGwgYmUgIHBh cnQgb2YgdGhlIDE3IHJlbGVhc2UuDQoNClRoZSBjb21taXRmZXN0IGxpbms6DQpodHRwczovL2Nv bW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvNDYvNDcwOS8NCg0KDQpSZWdhcmRzLA0KWW9uZywNCg0K DQo= --_002_628CFBEFDF564D9AA2F10A417848B6B6ebaycom_ Content-Type: application/octet-stream; name="slur_page_header_v2.patch" Content-Description: slur_page_header_v2.patch Content-Disposition: attachment; filename="slur_page_header_v2.patch"; size=54885; creation-date="Tue, 19 Dec 2023 07:28:18 GMT"; modification-date="Tue, 19 Dec 2023 07:28:18 GMT" Content-ID: <9E33C21CA7405F4D8CF994F41B9D9A13@namprd07.prod.outlook.com> Content-Transfer-Encoding: base64 IHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYyAgICAgIHwgIDUyICsrKysrLS0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMgfCAgMjYgKysrLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIHwgIDYzICsrKysrKy0tLS0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMgICAgICB8IDExMyArKysrKysrLS0tLS0tLS0t LS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYyAgfCAgMTIgKy0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jICAgICAgICAgICB8ICAyNyArKy0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jICAgfCAgMTYgKy0tCiBzcmMvYmFja2VuZC9z dG9yYWdlL3BhZ2UvYnVmcGFnZS5jICAgICB8ICAyNSArKysrKwogc3JjL2Jpbi9wZ19jaGVja3N1 bXMvcGdfY2hlY2tzdW1zLmMgICAgfCAgIDkgKysKIHNyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDFf YmFzaWMucGwgICAgIHwgICA2ICstCiBzcmMvYmluL3BnX3VwZ3JhZGUvZmlsZS5jICAgICAgICAg ICAgICB8IDE4NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iaW4vcGdf dXBncmFkZS9wZ191cGdyYWRlLmMgICAgICAgIHwgIDIzICsrLS0KIHNyYy9iaW4vcGdfdXBncmFk ZS9wZ191cGdyYWRlLmggICAgICAgIHwgICA2ICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5o ICAgICAgICAgICAgICB8ICAxNSArLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5o ICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2J1ZnBhZ2UuaCAgICAgICAgICB8 ICAgNyArKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdGVzdF9zbHJ1LmMgfCAgMTMgKy0t CiAxNyBmaWxlcyBjaGFuZ2VkLCA0MDkgaW5zZXJ0aW9ucygrKSwgMTkyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYwppbmRleCA3ZGNhMWRmNjFiLi5iN2Y2OTA3NTRiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdfdHJhY2UuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIK KyNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3N5bmMuaCIKIApAQCAtNTksNyArNjAsNyBAQAogLyogV2UgbmVl ZCB0d28gYml0cyBwZXIgeGFjdCwgc28gZm91ciB4YWN0cyBmaXQgaW4gYSBieXRlICovCiAjZGVm aW5lIENMT0dfQklUU19QRVJfWEFDVAkyCiAjZGVmaW5lIENMT0dfWEFDVFNfUEVSX0JZVEUgNAot I2RlZmluZSBDTE9HX1hBQ1RTX1BFUl9QQUdFIChCTENLU1ogKiBDTE9HX1hBQ1RTX1BFUl9CWVRF KQorI2RlZmluZSBDTE9HX1hBQ1RTX1BFUl9QQUdFIChTaXplT2ZQYWdlQ29udGVudHMgKiBDTE9H X1hBQ1RTX1BFUl9CWVRFKQogI2RlZmluZSBDTE9HX1hBQ1RfQklUTUFTSwkoKDEgPDwgQ0xPR19C SVRTX1BFUl9YQUNUKSAtIDEpCiAKIApAQCAtNzcsMTMgKzc4LDYgQEAgVHJhbnNhY3Rpb25JZFRv UGFnZShUcmFuc2FjdGlvbklkIHhpZCkKICNkZWZpbmUgVHJhbnNhY3Rpb25JZFRvQnl0ZSh4aWQp CShUcmFuc2FjdGlvbklkVG9QZ0luZGV4KHhpZCkgLyBDTE9HX1hBQ1RTX1BFUl9CWVRFKQogI2Rl ZmluZSBUcmFuc2FjdGlvbklkVG9CSW5kZXgoeGlkKQkoKHhpZCkgJSAoVHJhbnNhY3Rpb25JZCkg Q0xPR19YQUNUU19QRVJfQllURSkKIAotLyogV2Ugc3RvcmUgdGhlIGxhdGVzdCBhc3luYyBMU04g Zm9yIGVhY2ggZ3JvdXAgb2YgdHJhbnNhY3Rpb25zICovCi0jZGVmaW5lIENMT0dfWEFDVFNfUEVS X0xTTl9HUk9VUAkzMgkvKiBrZWVwIHRoaXMgYSBwb3dlciBvZiAyICovCi0jZGVmaW5lIENMT0df TFNOU19QRVJfUEFHRQkoQ0xPR19YQUNUU19QRVJfUEFHRSAvIENMT0dfWEFDVFNfUEVSX0xTTl9H Uk9VUCkKLQotI2RlZmluZSBHZXRMU05JbmRleChzbG90bm8sIHhpZCkJKChzbG90bm8pICogQ0xP R19MU05TX1BFUl9QQUdFICsgXAotCSgoeGlkKSAlIChUcmFuc2FjdGlvbklkKSBDTE9HX1hBQ1RT X1BFUl9QQUdFKSAvIENMT0dfWEFDVFNfUEVSX0xTTl9HUk9VUCkKLQogLyoKICAqIFRoZSBudW1i ZXIgb2Ygc3VidHJhbnNhY3Rpb25zIGJlbG93IHdoaWNoIHdlIGNvbnNpZGVyIHRvIGFwcGx5IGNs b2cgZ3JvdXAKICAqIHVwZGF0ZSBvcHRpbWl6YXRpb24uICBUZXN0aW5nIHJldmVhbHMgdGhhdCB0 aGUgbnVtYmVyIGhpZ2hlciB0aGFuIHRoaXMgY2FuCkBAIC0xMDEsNyArOTUsNyBAQCBzdGF0aWMg U2xydUN0bERhdGEgWGFjdEN0bERhdGE7CiAKIHN0YXRpYyBpbnQJWmVyb0NMT0dQYWdlKGludDY0 IHBhZ2VubywgYm9vbCB3cml0ZVhsb2cpOwogc3RhdGljIGJvb2wgQ0xPR1BhZ2VQcmVjZWRlcyhp bnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOwotc3RhdGljIHZvaWQgV3JpdGVaZXJvUGFnZVhsb2dS ZWMoaW50NjQgcGFnZW5vKTsKK3N0YXRpYyBYTG9nUmVjUHRyIFdyaXRlWmVyb1BhZ2VYbG9nUmVj KGludDY0IHBhZ2Vubyk7CiBzdGF0aWMgdm9pZCBXcml0ZVRydW5jYXRlWGxvZ1JlYyhpbnQ2NCBw YWdlbm8sIFRyYW5zYWN0aW9uSWQgb2xkZXN0WGFjdCwKIAkJCQkJCQkJIE9pZCBvbGRlc3RYYWN0 RGIpOwogc3RhdGljIHZvaWQgVHJhbnNhY3Rpb25JZFNldFBhZ2VTdGF0dXMoVHJhbnNhY3Rpb25J ZCB4aWQsIGludCBuc3VieGlkcywKQEAgLTU4Myw4ICs1NzcsOSBAQCBUcmFuc2FjdGlvbklkU2V0 U3RhdHVzQml0KFRyYW5zYWN0aW9uSWQgeGlkLCBYaWRTdGF0dXMgc3RhdHVzLCBYTG9nUmVjUHRy IGxzbiwgaQogCWNoYXIJICAgKmJ5dGVwdHI7CiAJY2hhcgkJYnl0ZXZhbDsKIAljaGFyCQljdXJ2 YWw7CisJUGFnZSAgICAgICAgcGFnZSA9IFhhY3RDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xv dG5vXTsKIAotCWJ5dGVwdHIgPSBYYWN0Q3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10g KyBieXRlbm87CisJYnl0ZXB0ciA9IFBhZ2VHZXRDb250ZW50cyhwYWdlKSArIGJ5dGVubzsKIAlj dXJ2YWwgPSAoKmJ5dGVwdHIgPj4gYnNoaWZ0KSAmIENMT0dfWEFDVF9CSVRNQVNLOwogCiAJLyoK QEAgLTYxMyw3ICs2MDgsNyBAQCBUcmFuc2FjdGlvbklkU2V0U3RhdHVzQml0KFRyYW5zYWN0aW9u SWQgeGlkLCBYaWRTdGF0dXMgc3RhdHVzLCBYTG9nUmVjUHRyIGxzbiwgaQogCSpieXRlcHRyID0g Ynl0ZXZhbDsKIAogCS8qCi0JICogVXBkYXRlIHRoZSBncm91cCBMU04gaWYgdGhlIHRyYW5zYWN0 aW9uIGNvbXBsZXRpb24gTFNOIGlzIGhpZ2hlci4KKwkgKiBVcGRhdGUgdGhlIHBhZ2UgTFNOIGlm IHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0aW9uIExTTiBpcyBoaWdoZXIuCiAJICoKIAkgKiBOb3Rl OiBsc24gd2lsbCBiZSBpbnZhbGlkIHdoZW4gc3VwcGxpZWQgZHVyaW5nIEluUmVjb3ZlcnkgcHJv Y2Vzc2luZywKIAkgKiBzbyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwgdG8g YXZvaWQgTFNOIHVwZGF0ZXMgZHVyaW5nCkBAIC02MjIsMTAgKzYxNyw4IEBAIFRyYW5zYWN0aW9u SWRTZXRTdGF0dXNCaXQoVHJhbnNhY3Rpb25JZCB4aWQsIFhpZFN0YXR1cyBzdGF0dXMsIFhMb2dS ZWNQdHIgbHNuLCBpCiAJICovCiAJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKGxzbikpCiAJewot CQlpbnQJCQlsc25pbmRleCA9IEdldExTTkluZGV4KHNsb3RubywgeGlkKTsKLQotCQlpZiAoWGFj dEN0bC0+c2hhcmVkLT5ncm91cF9sc25bbHNuaW5kZXhdIDwgbHNuKQotCQkJWGFjdEN0bC0+c2hh cmVkLT5ncm91cF9sc25bbHNuaW5kZXhdID0gbHNuOworCQlpZiAoUGFnZUdldExTTihwYWdlKSA8 IGxzbikKKwkJCVBhZ2VTZXRMU04ocGFnZSwgbHNuKTsKIAl9CiB9CiAKQEAgLTY1MSwxOSArNjQ0 LDE5IEBAIFRyYW5zYWN0aW9uSWRHZXRTdGF0dXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQ dHIgKmxzbikKIAlpbnQJCQlieXRlbm8gPSBUcmFuc2FjdGlvbklkVG9CeXRlKHhpZCk7CiAJaW50 CQkJYnNoaWZ0ID0gVHJhbnNhY3Rpb25JZFRvQkluZGV4KHhpZCkgKiBDTE9HX0JJVFNfUEVSX1hB Q1Q7CiAJaW50CQkJc2xvdG5vOwotCWludAkJCWxzbmluZGV4OworCVBhZ2UgICAgICAgIHBhZ2U7 CiAJY2hhcgkgICAqYnl0ZXB0cjsKIAlYaWRTdGF0dXMJc3RhdHVzOwogCiAJLyogbG9jayBpcyBh Y3F1aXJlZCBieSBTaW1wbGVMcnVSZWFkUGFnZV9SZWFkT25seSAqLwogCiAJc2xvdG5vID0gU2lt cGxlTHJ1UmVhZFBhZ2VfUmVhZE9ubHkoWGFjdEN0bCwgcGFnZW5vLCB4aWQpOwotCWJ5dGVwdHIg PSBYYWN0Q3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10gKyBieXRlbm87CisJcGFnZSA9 IFhhY3RDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXTsKKwlieXRlcHRyID0gUGFnZUdl dENvbnRlbnRzKHBhZ2UpICsgYnl0ZW5vOwogCiAJc3RhdHVzID0gKCpieXRlcHRyID4+IGJzaGlm dCkgJiBDTE9HX1hBQ1RfQklUTUFTSzsKIAotCWxzbmluZGV4ID0gR2V0TFNOSW5kZXgoc2xvdG5v LCB4aWQpOwotCSpsc24gPSBYYWN0Q3RsLT5zaGFyZWQtPmdyb3VwX2xzbltsc25pbmRleF07CisJ KmxzbiA9IFBhZ2VHZXRMU04ocGFnZSk7CiAKIAlMV0xvY2tSZWxlYXNlKFhhY3RTTFJVTG9jayk7 CiAKQEAgLTY5OCwxNCArNjkxLDE0IEBAIENMT0dTaG1lbUJ1ZmZlcnModm9pZCkKIFNpemUKIENM T0dTaG1lbVNpemUodm9pZCkKIHsKLQlyZXR1cm4gU2ltcGxlTHJ1U2htZW1TaXplKENMT0dTaG1l bUJ1ZmZlcnMoKSwgQ0xPR19MU05TX1BFUl9QQUdFKTsKKwlyZXR1cm4gU2ltcGxlTHJ1U2htZW1T aXplKENMT0dTaG1lbUJ1ZmZlcnMoKSk7CiB9CiAKIHZvaWQKIENMT0dTaG1lbUluaXQodm9pZCkK IHsKIAlYYWN0Q3RsLT5QYWdlUHJlY2VkZXMgPSBDTE9HUGFnZVByZWNlZGVzOwotCVNpbXBsZUxy dUluaXQoWGFjdEN0bCwgIlhhY3QiLCBDTE9HU2htZW1CdWZmZXJzKCksIENMT0dfTFNOU19QRVJf UEFHRSwKKwlTaW1wbGVMcnVJbml0KFhhY3RDdGwsICJYYWN0IiwgQ0xPR1NobWVtQnVmZmVycygp LAogCQkJCSAgWGFjdFNMUlVMb2NrLCAicGdfeGFjdCIsIExXVFJBTkNIRV9YQUNUX0JVRkZFUiwK IAkJCQkgIFNZTkNfSEFORExFUl9DTE9HLCBmYWxzZSk7CiAJU2xydVBhZ2VQcmVjZWRlc1VuaXRU ZXN0cyhYYWN0Q3RsLCBDTE9HX1hBQ1RTX1BFUl9QQUdFKTsKQEAgLTc0NywxMSArNzQwLDE3IEBA IHN0YXRpYyBpbnQKIFplcm9DTE9HUGFnZShpbnQ2NCBwYWdlbm8sIGJvb2wgd3JpdGVYbG9nKQog ewogCWludAkJCXNsb3RubzsKKwlQYWdlIAkJcGFnZTsKKwlYTG9nUmVjUHRyICBsc24gPSAwOwog CiAJc2xvdG5vID0gU2ltcGxlTHJ1WmVyb1BhZ2UoWGFjdEN0bCwgcGFnZW5vKTsKKwlwYWdlID0g WGFjdEN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dOwogCiAJaWYgKHdyaXRlWGxvZykK LQkJV3JpdGVaZXJvUGFnZVhsb2dSZWMocGFnZW5vKTsKKwl7CisJCWxzbiA9IFdyaXRlWmVyb1Bh Z2VYbG9nUmVjKHBhZ2Vubyk7CisJCVBhZ2VTZXRMU04ocGFnZSwgbHNuKTsKKwl9CiAKIAlyZXR1 cm4gc2xvdG5vOwogfQpAQCAtODA3LDEyICs4MDYsMTIgQEAgVHJpbUNMT0codm9pZCkKIAkJY2hh cgkgICAqYnl0ZXB0cjsKIAogCQlzbG90bm8gPSBTaW1wbGVMcnVSZWFkUGFnZShYYWN0Q3RsLCBw YWdlbm8sIGZhbHNlLCB4aWQpOwotCQlieXRlcHRyID0gWGFjdEN0bC0+c2hhcmVkLT5wYWdlX2J1 ZmZlcltzbG90bm9dICsgYnl0ZW5vOworCQlieXRlcHRyID0gUGFnZUdldENvbnRlbnRzKFhhY3RD dGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSkgKyBieXRlbm87CiAKIAkJLyogWmVybyBz by1mYXItdW51c2VkIHBvc2l0aW9ucyBpbiB0aGUgY3VycmVudCBieXRlICovCiAJCSpieXRlcHRy ICY9ICgxIDw8IGJzaGlmdCkgLSAxOwogCQkvKiBaZXJvIHRoZSByZXN0IG9mIHRoZSBwYWdlICov Ci0JCU1lbVNldChieXRlcHRyICsgMSwgMCwgQkxDS1NaIC0gYnl0ZW5vIC0gMSk7CisJCU1lbVNl dChieXRlcHRyICsgMSwgMCwgU2l6ZU9mUGFnZUNvbnRlbnRzIC0gYnl0ZW5vIC0gMSk7CiAKIAkJ WGFjdEN0bC0+c2hhcmVkLT5wYWdlX2RpcnR5W3Nsb3Rub10gPSB0cnVlOwogCX0KQEAgLTgzNiw3 ICs4MzUsNiBAQCBDaGVja1BvaW50Q0xPRyh2b2lkKQogCVRSQUNFX1BPU1RHUkVTUUxfQ0xPR19D SEVDS1BPSU5UX0RPTkUodHJ1ZSk7CiB9CiAKLQogLyoKICAqIE1ha2Ugc3VyZSB0aGF0IENMT0cg aGFzIHJvb20gZm9yIGEgbmV3bHktYWxsb2NhdGVkIFhJRC4KICAqCkBAIC05NTgsMTIgKzk1Niwx MiBAQCBDTE9HUGFnZVByZWNlZGVzKGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdlMikKIC8qCiAgKiBX cml0ZSBhIFpFUk9QQUdFIHhsb2cgcmVjb3JkCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0aWMgWExv Z1JlY1B0cgogV3JpdGVaZXJvUGFnZVhsb2dSZWMoaW50NjQgcGFnZW5vKQogewogCVhMb2dCZWdp bkluc2VydCgpOwogCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgKCZwYWdlbm8pLCBzaXplb2Yo cGFnZW5vKSk7Ci0JKHZvaWQpIFhMb2dJbnNlcnQoUk1fQ0xPR19JRCwgQ0xPR19aRVJPUEFHRSk7 CisJcmV0dXJuIFhMb2dJbnNlcnQoUk1fQ0xPR19JRCwgQ0xPR19aRVJPUEFHRSk7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jCmluZGV4IGU2ZmQ5YjMzNDkuLjM2 NzQ1OWVhMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90 cy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jCkBAIC0zMSw2 ICszMSw3IEBACiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgog I2luY2x1ZGUgInBnX3RyYWNlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9idWZwYWdlLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5j bHVkZSAidXRpbHMvc25hcG1nci5oIgpAQCAtNjMsNyArNjQsNyBAQCB0eXBlZGVmIHN0cnVjdCBD b21taXRUaW1lc3RhbXBFbnRyeQogCQkJCQkJCQkJc2l6ZW9mKFJlcE9yaWdpbklkKSkKIAogI2Rl ZmluZSBDT01NSVRfVFNfWEFDVFNfUEVSX1BBR0UgXAotCShCTENLU1ogLyBTaXplT2ZDb21taXRU aW1lc3RhbXBFbnRyeSkKKwkoU2l6ZU9mUGFnZUNvbnRlbnRzIC8gU2l6ZU9mQ29tbWl0VGltZXN0 YW1wRW50cnkpCiAKIAogLyoKQEAgLTEyMCw3ICsxMjEsNyBAQCBzdGF0aWMgaW50CVplcm9Db21t aXRUc1BhZ2UoaW50NjQgcGFnZW5vLCBib29sIHdyaXRlWGxvZyk7CiBzdGF0aWMgYm9vbCBDb21t aXRUc1BhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOwogc3RhdGljIHZvaWQg QWN0aXZhdGVDb21taXRUcyh2b2lkKTsKIHN0YXRpYyB2b2lkIERlYWN0aXZhdGVDb21taXRUcyh2 b2lkKTsKLXN0YXRpYyB2b2lkIFdyaXRlWmVyb1BhZ2VYbG9nUmVjKGludDY0IHBhZ2Vubyk7Citz dGF0aWMgWExvZ1JlY1B0ciBXcml0ZVplcm9QYWdlWGxvZ1JlYyhpbnQ2NCBwYWdlbm8pOwogc3Rh dGljIHZvaWQgV3JpdGVUcnVuY2F0ZVhsb2dSZWMoaW50NjQgcGFnZW5vLCBUcmFuc2FjdGlvbklk IG9sZGVzdFhpZCk7CiAKIC8qCkBAIC0yNTQsMTEgKzI1NSwxMiBAQCBUcmFuc2FjdGlvbklkU2V0 Q29tbWl0VHMoVHJhbnNhY3Rpb25JZCB4aWQsIFRpbWVzdGFtcFR6IHRzLAogCUNvbW1pdFRpbWVz dGFtcEVudHJ5IGVudHJ5OwogCiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc05vcm1hbCh4aWQpKTsK KwlBc3NlcnQoeGlkID09IHNsb3RubyAqIENPTU1JVF9UU19YQUNUU19QRVJfUEFHRSArIGVudHJ5 bm8pOwogCiAJZW50cnkudGltZSA9IHRzOwogCWVudHJ5Lm5vZGVpZCA9IG5vZGVpZDsKIAotCW1l bWNweShDb21taXRUc0N0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dICsKKwltZW1jcHko UGFnZUdldENvbnRlbnRzKENvbW1pdFRzQ3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10p ICsKIAkJICAgU2l6ZU9mQ29tbWl0VGltZXN0YW1wRW50cnkgKiBlbnRyeW5vLAogCQkgICAmZW50 cnksIFNpemVPZkNvbW1pdFRpbWVzdGFtcEVudHJ5KTsKIH0KQEAgLTMzNyw3ICszMzksNyBAQCBU cmFuc2FjdGlvbklkR2V0Q29tbWl0VHNEYXRhKFRyYW5zYWN0aW9uSWQgeGlkLCBUaW1lc3RhbXBU eiAqdHMsCiAJLyogbG9jayBpcyBhY3F1aXJlZCBieSBTaW1wbGVMcnVSZWFkUGFnZV9SZWFkT25s eSAqLwogCXNsb3RubyA9IFNpbXBsZUxydVJlYWRQYWdlX1JlYWRPbmx5KENvbW1pdFRzQ3RsLCBw YWdlbm8sIHhpZCk7CiAJbWVtY3B5KCZlbnRyeSwKLQkJICAgQ29tbWl0VHNDdGwtPnNoYXJlZC0+ cGFnZV9idWZmZXJbc2xvdG5vXSArCisJCSAgIFBhZ2VHZXRDb250ZW50cyhDb21taXRUc0N0bC0+ c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dKSArCiAJCSAgIFNpemVPZkNvbW1pdFRpbWVzdGFt cEVudHJ5ICogZW50cnlubywKIAkJICAgU2l6ZU9mQ29tbWl0VGltZXN0YW1wRW50cnkpOwogCkBA IC01MTUsNyArNTE3LDcgQEAgQ29tbWl0VHNTaG1lbUJ1ZmZlcnModm9pZCkKIFNpemUKIENvbW1p dFRzU2htZW1TaXplKHZvaWQpCiB7Ci0JcmV0dXJuIFNpbXBsZUxydVNobWVtU2l6ZShDb21taXRU c1NobWVtQnVmZmVycygpLCAwKSArCisJcmV0dXJuIFNpbXBsZUxydVNobWVtU2l6ZShDb21taXRU c1NobWVtQnVmZmVycygpKSArCiAJCXNpemVvZihDb21taXRUaW1lc3RhbXBTaGFyZWQpOwogfQog CkBAIC01MjksNyArNTMxLDcgQEAgQ29tbWl0VHNTaG1lbUluaXQodm9pZCkKIAlib29sCQlmb3Vu ZDsKIAogCUNvbW1pdFRzQ3RsLT5QYWdlUHJlY2VkZXMgPSBDb21taXRUc1BhZ2VQcmVjZWRlczsK LQlTaW1wbGVMcnVJbml0KENvbW1pdFRzQ3RsLCAiQ29tbWl0VHMiLCBDb21taXRUc1NobWVtQnVm ZmVycygpLCAwLAorCVNpbXBsZUxydUluaXQoQ29tbWl0VHNDdGwsICJDb21taXRUcyIsIENvbW1p dFRzU2htZW1CdWZmZXJzKCksCiAJCQkJICBDb21taXRUc1NMUlVMb2NrLCAicGdfY29tbWl0X3Rz IiwKIAkJCQkgIExXVFJBTkNIRV9DT01NSVRUU19CVUZGRVIsCiAJCQkJICBTWU5DX0hBTkRMRVJf Q09NTUlUX1RTLApAQCAtNTgyLDExICs1ODQsMTcgQEAgc3RhdGljIGludAogWmVyb0NvbW1pdFRz UGFnZShpbnQ2NCBwYWdlbm8sIGJvb2wgd3JpdGVYbG9nKQogewogCWludAkJCXNsb3RubzsKKwlQ YWdlIAkJcGFnZTsKKwlYTG9nUmVjUHRyICBsc24gPSAwOwogCiAJc2xvdG5vID0gU2ltcGxlTHJ1 WmVyb1BhZ2UoQ29tbWl0VHNDdGwsIHBhZ2Vubyk7CisJcGFnZSA9IENvbW1pdFRzQ3RsLT5zaGFy ZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub107CiAKIAlpZiAod3JpdGVYbG9nKQotCQlXcml0ZVplcm9Q YWdlWGxvZ1JlYyhwYWdlbm8pOworCXsKKwkJbHNuID0gV3JpdGVaZXJvUGFnZVhsb2dSZWMocGFn ZW5vKTsKKwkJUGFnZVNldExTTihwYWdlLCBsc24pOworCX0KIAogCXJldHVybiBzbG90bm87CiB9 CkBAIC05NDYsMTIgKzk1NCwxMiBAQCBDb21taXRUc1BhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwg aW50NjQgcGFnZTIpCiAvKgogICogV3JpdGUgYSBaRVJPUEFHRSB4bG9nIHJlY29yZAogICovCi1z dGF0aWMgdm9pZAorc3RhdGljIFhMb2dSZWNQdHIKIFdyaXRlWmVyb1BhZ2VYbG9nUmVjKGludDY0 IHBhZ2VubykKIHsKIAlYTG9nQmVnaW5JbnNlcnQoKTsKIAlYTG9nUmVnaXN0ZXJEYXRhKChjaGFy ICopICgmcGFnZW5vKSwgc2l6ZW9mKHBhZ2VubykpOwotCSh2b2lkKSBYTG9nSW5zZXJ0KFJNX0NP TU1JVF9UU19JRCwgQ09NTUlUX1RTX1pFUk9QQUdFKTsKKwlyZXR1cm4gWExvZ0luc2VydChSTV9D T01NSVRfVFNfSUQsIENPTU1JVF9UU19aRVJPUEFHRSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL211bHRpeGFjdC5jCmluZGV4IGRiMzQyM2YxMmUuLjA5NzBhYTg4NTUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC04Myw2ICs4Myw3IEBACiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdfdHJhY2UuaCIKICNpbmNsdWRlICJwb3N0 bWFzdGVyL2F1dG92YWN1dW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKICNpbmNs dWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcm9jLmgiCkBAIC0xMDYsNyArMTA3LDcgQEAKICAqLwogCiAvKiBXZSBu ZWVkIGZvdXIgYnl0ZXMgcGVyIG9mZnNldCAqLwotI2RlZmluZSBNVUxUSVhBQ1RfT0ZGU0VUU19Q RVJfUEFHRSAoQkxDS1NaIC8gc2l6ZW9mKE11bHRpWGFjdE9mZnNldCkpCisjZGVmaW5lIE1VTFRJ WEFDVF9PRkZTRVRTX1BFUl9QQUdFIChTaXplT2ZQYWdlQ29udGVudHMgLyBzaXplb2YoTXVsdGlY YWN0T2Zmc2V0KSkKIAogI2RlZmluZSBNdWx0aVhhY3RJZFRvT2Zmc2V0UGFnZSh4aWQpIFwKIAko KHhpZCkgLyAoTXVsdGlYYWN0T2Zmc2V0KSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRSkKQEAg LTExOSw4ICsxMjAsOCBAQAogICogYWRkaXRpb25hbCBmbGFnIGJpdHMgZm9yIGVhY2ggVHJhbnNh Y3Rpb25JZC4gIFRvIGRvIHRoaXMgd2l0aG91dCBnZXR0aW5nCiAgKiBpbnRvIGFsaWdubWVudCBp c3N1ZXMsIHdlIHN0b3JlIGZvdXIgYnl0ZXMgb2YgZmxhZ3MsIGFuZCB0aGVuIHRoZQogICogY29y cmVzcG9uZGluZyA0IFhpZHMuICBFYWNoIHN1Y2ggNS13b3JkICgyMC1ieXRlKSBzZXQgd2UgY2Fs bCBhICJncm91cCIsIGFuZAotICogYXJlIHN0b3JlZCBhcyBhIHdob2xlIGluIHBhZ2VzLiAgVGh1 cywgd2l0aCA4a0IgQkxDS1NaLCB3ZSBrZWVwIDQwOSBncm91cHMKLSAqIHBlciBwYWdlLiAgVGhp cyB3YXN0ZXMgMTIgYnl0ZXMgcGVyIHBhZ2UsIGJ1dCB0aGF0J3MgT0sgLS0gc2ltcGxpY2l0eSAo YW5kCisgKiBhcmUgc3RvcmVkIGFzIGEgd2hvbGUgaW4gcGFnZXMuICBUaHVzLCB3aXRoIDhrQiBC TENLU1osIHdlIGtlZXAgNDA4IGdyb3VwcworICogcGVyIHBhZ2UuICBUaGlzIHdhc3RlcyA4IGJ5 dGVzIHBlciBwYWdlLCBidXQgdGhhdCdzIE9LIC0tIHNpbXBsaWNpdHkgKGFuZAogICogcGVyZm9y bWFuY2UpIHRydW1wcyBzcGFjZSBlZmZpY2llbmN5IGhlcmUuCiAgKgogICogTm90ZSB0aGF0IHRo ZSAib2Zmc2V0IiBtYWNyb3Mgd29yayB3aXRoIGJ5dGUgb2Zmc2V0LCBub3QgYXJyYXkgaW5kZXhl cywgc28KQEAgLTEzOCw3ICsxMzksNyBAQAogLyogc2l6ZSBpbiBieXRlcyBvZiBhIGNvbXBsZXRl IGdyb3VwICovCiAjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFIFwKIAkoc2l6ZW9m KFRyYW5zYWN0aW9uSWQpICogTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQICsgTVVM VElYQUNUX0ZMQUdCWVRFU19QRVJfR1JPVVApCi0jZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJHUk9V UFNfUEVSX1BBR0UgKEJMQ0tTWiAvIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFKQorI2RlZmlu ZSBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBTX1BFUl9QQUdFIChTaXplT2ZQYWdlQ29udGVudHMgLyBN VUxUSVhBQ1RfTUVNQkVSR1JPVVBfU0laRSkKICNkZWZpbmUgTVVMVElYQUNUX01FTUJFUlNfUEVS X1BBR0UJXAogCShNVUxUSVhBQ1RfTUVNQkVSR1JPVVBTX1BFUl9QQUdFICogTVVMVElYQUNUX01F TUJFUlNfUEVSX01FTUJFUkdST1VQKQogCkBAIC0zNjYsNyArMzY3LDcgQEAgc3RhdGljIGJvb2wg TXVsdGlYYWN0T2Zmc2V0V291bGRXcmFwKE11bHRpWGFjdE9mZnNldCBib3VuZGFyeSwKIAkJCQkJ CQkJCSBNdWx0aVhhY3RPZmZzZXQgc3RhcnQsIHVpbnQzMiBkaXN0YW5jZSk7CiBzdGF0aWMgYm9v bCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApOwogc3RhdGljIGJvb2wgZmlu ZF9tdWx0aXhhY3Rfc3RhcnQoTXVsdGlYYWN0SWQgbXVsdGksIE11bHRpWGFjdE9mZnNldCAqcmVz dWx0KTsKLXN0YXRpYyB2b2lkIFdyaXRlTVplcm9QYWdlWGxvZ1JlYyhpbnQ2NCBwYWdlbm8sIHVp bnQ4IGluZm8pOworc3RhdGljIFhMb2dSZWNQdHIgV3JpdGVNWmVyb1BhZ2VYbG9nUmVjKGludDY0 IHBhZ2VubywgdWludDggaW5mbyk7CiBzdGF0aWMgdm9pZCBXcml0ZU1UcnVuY2F0ZVhsb2dSZWMo T2lkIG9sZGVzdE11bHRpREIsCiAJCQkJCQkJCSAgTXVsdGlYYWN0SWQgc3RhcnRUcnVuY09mZiwK IAkJCQkJCQkJICBNdWx0aVhhY3RJZCBlbmRUcnVuY09mZiwKQEAgLTg4NCw3ICs4ODUsNyBAQCBS ZWNvcmROZXdNdWx0aVhhY3QoTXVsdGlYYWN0SWQgbXVsdGksIE11bHRpWGFjdE9mZnNldCBvZmZz ZXQsCiAJICogdGFrZSB0aGUgdHJvdWJsZSB0byBnZW5lcmFsaXplIHRoZSBzbHJ1LmMgZXJyb3Ig cmVwb3J0aW5nIGNvZGUuCiAJICovCiAJc2xvdG5vID0gU2ltcGxlTHJ1UmVhZFBhZ2UoTXVsdGlY YWN0T2Zmc2V0Q3RsLCBwYWdlbm8sIHRydWUsIG11bHRpKTsKLQlvZmZwdHIgPSAoTXVsdGlYYWN0 T2Zmc2V0ICopIE11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9d OworCW9mZnB0ciA9IChNdWx0aVhhY3RPZmZzZXQgKikgUGFnZUdldENvbnRlbnRzKE11bHRpWGFj dE9mZnNldEN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dKTsKIAlvZmZwdHIgKz0gZW50 cnlubzsKIAogCSpvZmZwdHIgPSBvZmZzZXQ7CkBAIC05MjEsMTIgKzkyMiwxMiBAQCBSZWNvcmRO ZXdNdWx0aVhhY3QoTXVsdGlYYWN0SWQgbXVsdGksIE11bHRpWGFjdE9mZnNldCBvZmZzZXQsCiAJ CX0KIAogCQltZW1iZXJwdHIgPSAoVHJhbnNhY3Rpb25JZCAqKQotCQkJKE11bHRpWGFjdE1lbWJl ckN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dICsgbWVtYmVyb2ZmKTsKKwkJCShQYWdl R2V0Q29udGVudHMoTXVsdGlYYWN0TWVtYmVyQ3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Ru b10pICsgbWVtYmVyb2ZmKTsKIAogCQkqbWVtYmVycHRyID0gbWVtYmVyc1tpXS54aWQ7CiAKIAkJ ZmxhZ3NwdHIgPSAodWludDMyICopCi0JCQkoTXVsdGlYYWN0TWVtYmVyQ3RsLT5zaGFyZWQtPnBh Z2VfYnVmZmVyW3Nsb3Rub10gKyBmbGFnc29mZik7CisJCQkoUGFnZUdldENvbnRlbnRzKE11bHRp WGFjdE1lbWJlckN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dKSArIGZsYWdzb2ZmKTsK IAogCQlmbGFnc3ZhbCA9ICpmbGFnc3B0cjsKIAkJZmxhZ3N2YWwgJj0gfigoKDEgPDwgTVhBQ1Rf TUVNQkVSX0JJVFNfUEVSX1hBQ1QpIC0gMSkgPDwgYnNoaWZ0KTsKQEAgLTEzNDgsNyArMTM0OSw3 IEBAIHJldHJ5OgogCWVudHJ5bm8gPSBNdWx0aVhhY3RJZFRvT2Zmc2V0RW50cnkobXVsdGkpOwog CiAJc2xvdG5vID0gU2ltcGxlTHJ1UmVhZFBhZ2UoTXVsdGlYYWN0T2Zmc2V0Q3RsLCBwYWdlbm8s IHRydWUsIG11bHRpKTsKLQlvZmZwdHIgPSAoTXVsdGlYYWN0T2Zmc2V0ICopIE11bHRpWGFjdE9m ZnNldEN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dOworCW9mZnB0ciA9IChNdWx0aVhh Y3RPZmZzZXQgKikgUGFnZUdldENvbnRlbnRzKE11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5w YWdlX2J1ZmZlcltzbG90bm9dKTsKIAlvZmZwdHIgKz0gZW50cnlubzsKIAlvZmZzZXQgPSAqb2Zm cHRyOwogCkBAIC0xMzgxLDcgKzEzODIsNyBAQCByZXRyeToKIAkJaWYgKHBhZ2VubyAhPSBwcmV2 X3BhZ2VubykKIAkJCXNsb3RubyA9IFNpbXBsZUxydVJlYWRQYWdlKE11bHRpWGFjdE9mZnNldEN0 bCwgcGFnZW5vLCB0cnVlLCB0bXBNWGFjdCk7CiAKLQkJb2ZmcHRyID0gKE11bHRpWGFjdE9mZnNl dCAqKSBNdWx0aVhhY3RPZmZzZXRDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXTsKKwkJ b2ZmcHRyID0gKE11bHRpWGFjdE9mZnNldCAqKSBQYWdlR2V0Q29udGVudHMoTXVsdGlYYWN0T2Zm c2V0Q3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10pOwogCQlvZmZwdHIgKz0gZW50cnlu bzsKIAkJbmV4dE1YT2Zmc2V0ID0gKm9mZnB0cjsKIApAQCAtMTQyNCw3ICsxNDI1LDcgQEAgcmV0 cnk6CiAJCX0KIAogCQl4YWN0cHRyID0gKFRyYW5zYWN0aW9uSWQgKikKLQkJCShNdWx0aVhhY3RN ZW1iZXJDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSArIG1lbWJlcm9mZik7CisJCQko UGFnZUdldENvbnRlbnRzKE11bHRpWGFjdE1lbWJlckN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltz bG90bm9dKSArIG1lbWJlcm9mZik7CiAKIAkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCgqeGFj dHB0cikpCiAJCXsKQEAgLTE0MzUsNyArMTQzNiw3IEBAIHJldHJ5OgogCiAJCWZsYWdzb2ZmID0g TVhPZmZzZXRUb0ZsYWdzT2Zmc2V0KG9mZnNldCk7CiAJCWJzaGlmdCA9IE1YT2Zmc2V0VG9GbGFn c0JpdFNoaWZ0KG9mZnNldCk7Ci0JCWZsYWdzcHRyID0gKHVpbnQzMiAqKSAoTXVsdGlYYWN0TWVt YmVyQ3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10gKyBmbGFnc29mZik7CisJCWZsYWdz cHRyID0gKHVpbnQzMiAqKSAoUGFnZUdldENvbnRlbnRzKE11bHRpWGFjdE1lbWJlckN0bC0+c2hh cmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dKSArIGZsYWdzb2ZmKTsKIAogCQlwdHJbdHJ1ZWxlbmd0 aF0ueGlkID0gKnhhY3RwdHI7CiAJCXB0clt0cnVlbGVuZ3RoXS5zdGF0dXMgPSAoKmZsYWdzcHRy ID4+IGJzaGlmdCkgJiBNWEFDVF9NRU1CRVJfWEFDVF9CSVRNQVNLOwpAQCAtMTgzNCw4ICsxODM1 LDggQEAgTXVsdGlYYWN0U2htZW1TaXplKHZvaWQpCiAJCQkgbXVsX3NpemUoc2l6ZW9mKE11bHRp WGFjdElkKSAqIDIsIE1heE9sZGVzdFNsb3QpKQogCiAJc2l6ZSA9IFNIQVJFRF9NVUxUSVhBQ1Rf U1RBVEVfU0laRTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2ltcGxlTHJ1U2htZW1TaXplKE5V TV9NVUxUSVhBQ1RPRkZTRVRfQlVGRkVSUywgMCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBT aW1wbGVMcnVTaG1lbVNpemUoTlVNX01VTFRJWEFDVE1FTUJFUl9CVUZGRVJTLCAwKSk7CisJc2l6 ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6ZShOVU1fTVVMVElYQUNUT0ZGU0VU X0JVRkZFUlMpKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2ltcGxlTHJ1U2htZW1TaXplKE5V TV9NVUxUSVhBQ1RNRU1CRVJfQlVGRkVSUykpOwogCiAJcmV0dXJuIHNpemU7CiB9CkBAIC0xODUx LDE0ICsxODUyLDE0IEBAIE11bHRpWGFjdFNobWVtSW5pdCh2b2lkKQogCU11bHRpWGFjdE1lbWJl ckN0bC0+UGFnZVByZWNlZGVzID0gTXVsdGlYYWN0TWVtYmVyUGFnZVByZWNlZGVzOwogCiAJU2lt cGxlTHJ1SW5pdChNdWx0aVhhY3RPZmZzZXRDdGwsCi0JCQkJICAiTXVsdGlYYWN0T2Zmc2V0Iiwg TlVNX01VTFRJWEFDVE9GRlNFVF9CVUZGRVJTLCAwLAorCQkJCSAgIk11bHRpWGFjdE9mZnNldCIs IE5VTV9NVUxUSVhBQ1RPRkZTRVRfQlVGRkVSUywKIAkJCQkgIE11bHRpWGFjdE9mZnNldFNMUlVM b2NrLCAicGdfbXVsdGl4YWN0L29mZnNldHMiLAogCQkJCSAgTFdUUkFOQ0hFX01VTFRJWEFDVE9G RlNFVF9CVUZGRVIsCiAJCQkJICBTWU5DX0hBTkRMRVJfTVVMVElYQUNUX09GRlNFVCwKIAkJCQkg IGZhbHNlKTsKIAlTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKE11bHRpWGFjdE9mZnNldEN0bCwg TVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0UpOwogCVNpbXBsZUxydUluaXQoTXVsdGlYYWN0TWVt YmVyQ3RsLAotCQkJCSAgIk11bHRpWGFjdE1lbWJlciIsIE5VTV9NVUxUSVhBQ1RNRU1CRVJfQlVG RkVSUywgMCwKKwkJCQkgICJNdWx0aVhhY3RNZW1iZXIiLCBOVU1fTVVMVElYQUNUTUVNQkVSX0JV RkZFUlMsCiAJCQkJICBNdWx0aVhhY3RNZW1iZXJTTFJVTG9jaywgInBnX211bHRpeGFjdC9tZW1i ZXJzIiwKIAkJCQkgIExXVFJBTkNIRV9NVUxUSVhBQ1RNRU1CRVJfQlVGRkVSLAogCQkJCSAgU1lO Q19IQU5ETEVSX01VTFRJWEFDVF9NRU1CRVIsCkBAIC0xOTMzLDExICsxOTM0LDE3IEBAIHN0YXRp YyBpbnQKIFplcm9NdWx0aVhhY3RPZmZzZXRQYWdlKGludDY0IHBhZ2VubywgYm9vbCB3cml0ZVhs b2cpCiB7CiAJaW50CQkJc2xvdG5vOworCVBhZ2UgCQlwYWdlOworCVhMb2dSZWNQdHIgIGxzbiA9 IDA7CiAKIAlzbG90bm8gPSBTaW1wbGVMcnVaZXJvUGFnZShNdWx0aVhhY3RPZmZzZXRDdGwsIHBh Z2Vubyk7CisJcGFnZSA9IE11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltz bG90bm9dOwogCiAJaWYgKHdyaXRlWGxvZykKLQkJV3JpdGVNWmVyb1BhZ2VYbG9nUmVjKHBhZ2Vu bywgWExPR19NVUxUSVhBQ1RfWkVST19PRkZfUEFHRSk7CisJeworCQlsc24gPSBXcml0ZU1aZXJv UGFnZVhsb2dSZWMocGFnZW5vLCBYTE9HX01VTFRJWEFDVF9aRVJPX09GRl9QQUdFKTsKKwkJUGFn ZVNldExTTihwYWdlLCBsc24pOworCX0KIAogCXJldHVybiBzbG90bm87CiB9CkBAIC0xOTQ5LDEx ICsxOTU2LDE3IEBAIHN0YXRpYyBpbnQKIFplcm9NdWx0aVhhY3RNZW1iZXJQYWdlKGludDY0IHBh Z2VubywgYm9vbCB3cml0ZVhsb2cpCiB7CiAJaW50CQkJc2xvdG5vOworCVBhZ2UgCQlwYWdlOwor CVhMb2dSZWNQdHIgIGxzbiA9IDA7CiAKIAlzbG90bm8gPSBTaW1wbGVMcnVaZXJvUGFnZShNdWx0 aVhhY3RNZW1iZXJDdGwsIHBhZ2Vubyk7CisJcGFnZSA9IE11bHRpWGFjdE1lbWJlckN0bC0+c2hh cmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dOwogCiAJaWYgKHdyaXRlWGxvZykKLQkJV3JpdGVNWmVy b1BhZ2VYbG9nUmVjKHBhZ2VubywgWExPR19NVUxUSVhBQ1RfWkVST19NRU1fUEFHRSk7CisJewor CQlsc24gPSBXcml0ZU1aZXJvUGFnZVhsb2dSZWMocGFnZW5vLCBYTE9HX01VTFRJWEFDVF9aRVJP X01FTV9QQUdFKTsKKwkJUGFnZVNldExTTihwYWdlLCBsc24pOworCX0KIAogCXJldHVybiBzbG90 bm87CiB9CkBAIC0yMDcxLDEwICsyMDg0LDEwIEBAIFRyaW1NdWx0aVhhY3Qodm9pZCkKIAkJTXVs dGlYYWN0T2Zmc2V0ICpvZmZwdHI7CiAKIAkJc2xvdG5vID0gU2ltcGxlTHJ1UmVhZFBhZ2UoTXVs dGlYYWN0T2Zmc2V0Q3RsLCBwYWdlbm8sIHRydWUsIG5leHRNWGFjdCk7Ci0JCW9mZnB0ciA9IChN dWx0aVhhY3RPZmZzZXQgKikgTXVsdGlYYWN0T2Zmc2V0Q3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVy W3Nsb3Rub107CisJCW9mZnB0ciA9IChNdWx0aVhhY3RPZmZzZXQgKikgUGFnZUdldENvbnRlbnRz KE11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dKTsKIAkJb2Zm cHRyICs9IGVudHJ5bm87CiAKLQkJTWVtU2V0KG9mZnB0ciwgMCwgQkxDS1NaIC0gKGVudHJ5bm8g KiBzaXplb2YoTXVsdGlYYWN0T2Zmc2V0KSkpOworCQlNZW1TZXQob2ZmcHRyLCAwLCBTaXplT2ZQ YWdlQ29udGVudHMgLSAoZW50cnlubyAqIHNpemVvZihNdWx0aVhhY3RPZmZzZXQpKSk7CiAKIAkJ TXVsdGlYYWN0T2Zmc2V0Q3RsLT5zaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSA9IHRydWU7CiAJ fQpAQCAtMjEwNCw5ICsyMTE3LDkgQEAgVHJpbU11bHRpWGFjdCh2b2lkKQogCQltZW1iZXJvZmYg PSBNWE9mZnNldFRvTWVtYmVyT2Zmc2V0KG9mZnNldCk7CiAJCXNsb3RubyA9IFNpbXBsZUxydVJl YWRQYWdlKE11bHRpWGFjdE1lbWJlckN0bCwgcGFnZW5vLCB0cnVlLCBvZmZzZXQpOwogCQl4aWRw dHIgPSAoVHJhbnNhY3Rpb25JZCAqKQotCQkJKE11bHRpWGFjdE1lbWJlckN0bC0+c2hhcmVkLT5w YWdlX2J1ZmZlcltzbG90bm9dICsgbWVtYmVyb2ZmKTsKKwkJCShQYWdlR2V0Q29udGVudHMoTXVs dGlYYWN0TWVtYmVyQ3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10pICsgbWVtYmVyb2Zm KTsKIAotCQlNZW1TZXQoeGlkcHRyLCAwLCBCTENLU1ogLSBtZW1iZXJvZmYpOworCQlNZW1TZXQo eGlkcHRyLCAwLCBTaXplT2ZQYWdlQ29udGVudHMgLSBtZW1iZXJvZmYpOwogCiAJCS8qCiAJCSAq IE5vdGU6IHdlIGRvbid0IG5lZWQgdG8gemVybyBvdXQgdGhlIGZsYWcgYml0cyBpbiB0aGUgcmVt YWluaW5nCkBAIC0yNzU4LDcgKzI3NzEsNyBAQCBmaW5kX211bHRpeGFjdF9zdGFydChNdWx0aVhh Y3RJZCBtdWx0aSwgTXVsdGlYYWN0T2Zmc2V0ICpyZXN1bHQpCiAKIAkvKiBsb2NrIGlzIGFjcXVp cmVkIGJ5IFNpbXBsZUxydVJlYWRQYWdlX1JlYWRPbmx5ICovCiAJc2xvdG5vID0gU2ltcGxlTHJ1 UmVhZFBhZ2VfUmVhZE9ubHkoTXVsdGlYYWN0T2Zmc2V0Q3RsLCBwYWdlbm8sIG11bHRpKTsKLQlv ZmZwdHIgPSAoTXVsdGlYYWN0T2Zmc2V0ICopIE11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5w YWdlX2J1ZmZlcltzbG90bm9dOworCW9mZnB0ciA9IChNdWx0aVhhY3RPZmZzZXQgKikgUGFnZUdl dENvbnRlbnRzKE11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9d KTsKIAlvZmZwdHIgKz0gZW50cnlubzsKIAlvZmZzZXQgPSAqb2ZmcHRyOwogCUxXTG9ja1JlbGVh c2UoTXVsdGlYYWN0T2Zmc2V0U0xSVUxvY2spOwpAQCAtMzE5MiwxMiArMzIwNSwxMiBAQCBNdWx0 aVhhY3RPZmZzZXRQcmVjZWRlcyhNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0MSwgTXVsdGlYYWN0T2Zm c2V0IG9mZnNldDIpCiAgKiBXcml0ZSBhbiB4bG9nIHJlY29yZCByZWZsZWN0aW5nIHRoZSB6ZXJv aW5nIG9mIGVpdGhlciBhIE1FTUJFUnMgb3IKICAqIE9GRlNFVHMgcGFnZSAoaW5mbyBzaG93cyB3 aGljaCkKICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBYTG9nUmVjUHRyCiBXcml0ZU1aZXJvUGFn ZVhsb2dSZWMoaW50NjQgcGFnZW5vLCB1aW50OCBpbmZvKQogewogCVhMb2dCZWdpbkluc2VydCgp OwogCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgKCZwYWdlbm8pLCBzaXplb2YocGFnZW5vKSk7 Ci0JKHZvaWQpIFhMb2dJbnNlcnQoUk1fTVVMVElYQUNUX0lELCBpbmZvKTsKKwlyZXR1cm4gWExv Z0luc2VydChSTV9NVUxUSVhBQ1RfSUQsIGluZm8pOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc2xydS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vc2xydS5jCmluZGV4IDdhMzcxZDkwMzQuLmQ3ZjNkZWVhN2QgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS9zbHJ1LmMKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxz LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVk ZSAic3RvcmFnZS9idWZwYWdlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUg InN0b3JhZ2Uvc2htZW0uaCIKIApAQCAtMTU0LDEzICsxNTUsMTMgQEAgdHlwZWRlZiBlbnVtCiAJ U0xSVV9XUklURV9GQUlMRUQsCiAJU0xSVV9GU1lOQ19GQUlMRUQsCiAJU0xSVV9DTE9TRV9GQUlM RUQsCisJU0xSVV9EQVRBX0NPUlJVUFRFRCwKIH0gU2xydUVycm9yQ2F1c2U7CiAKIHN0YXRpYyBT bHJ1RXJyb3JDYXVzZSBzbHJ1X2VycmNhdXNlOwogc3RhdGljIGludAlzbHJ1X2Vycm5vOwogCiAK LXN0YXRpYyB2b2lkIFNpbXBsZUxydVplcm9MU05zKFNscnVDdGwgY3RsLCBpbnQgc2xvdG5vKTsK IHN0YXRpYyB2b2lkIFNpbXBsZUxydVdhaXRJTyhTbHJ1Q3RsIGN0bCwgaW50IHNsb3Rubyk7CiBz dGF0aWMgdm9pZCBTbHJ1SW50ZXJuYWxXcml0ZVBhZ2UoU2xydUN0bCBjdGwsIGludCBzbG90bm8s IFNscnVXcml0ZUFsbCBmZGF0YSk7CiBzdGF0aWMgYm9vbCBTbHJ1UGh5c2ljYWxSZWFkUGFnZShT bHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBpbnQgc2xvdG5vKTsKQEAgLTE3OSw3ICsxODAsNyBA QCBzdGF0aWMgdm9pZCBTbHJ1SW50ZXJuYWxEZWxldGVTZWdtZW50KFNscnVDdGwgY3RsLCBpbnQ2 NCBzZWdubyk7CiAgKi8KIAogU2l6ZQotU2ltcGxlTHJ1U2htZW1TaXplKGludCBuc2xvdHMsIGlu dCBubHNucykKK1NpbXBsZUxydVNobWVtU2l6ZShpbnQgbnNsb3RzKQogewogCVNpemUJCXN6Owog CkBAIC0xOTIsOSArMTkzLDYgQEAgU2ltcGxlTHJ1U2htZW1TaXplKGludCBuc2xvdHMsIGludCBu bHNucykKIAlzeiArPSBNQVhBTElHTihuc2xvdHMgKiBzaXplb2YoaW50KSk7CS8qIHBhZ2VfbHJ1 X2NvdW50W10gKi8KIAlzeiArPSBNQVhBTElHTihuc2xvdHMgKiBzaXplb2YoTFdMb2NrUGFkZGVk KSk7CS8qIGJ1ZmZlcl9sb2Nrc1tdICovCiAKLQlpZiAobmxzbnMgPiAwKQotCQlzeiArPSBNQVhB TElHTihuc2xvdHMgKiBubHNucyAqIHNpemVvZihYTG9nUmVjUHRyKSk7CS8qIGdyb3VwX2xzbltd ICovCi0KIAlyZXR1cm4gQlVGRkVSQUxJR04oc3opICsgQkxDS1NaICogbnNsb3RzOwogfQogCkBA IC0yMDQsMTQgKzIwMiwxMyBAQCBTaW1wbGVMcnVTaG1lbVNpemUoaW50IG5zbG90cywgaW50IG5s c25zKQogICogY3RsOiBhZGRyZXNzIG9mIGxvY2FsICh1bnNoYXJlZCkgY29udHJvbCBzdHJ1Y3R1 cmUuCiAgKiBuYW1lOiBuYW1lIG9mIFNMUlUuICAoVGhpcyBpcyB1c2VyLXZpc2libGUsIHBpY2sg d2l0aCBjYXJlISkKICAqIG5zbG90czogbnVtYmVyIG9mIHBhZ2Ugc2xvdHMgdG8gdXNlLgotICog bmxzbnM6IG51bWJlciBvZiBMU04gZ3JvdXBzIHBlciBwYWdlIChzZXQgdG8gemVybyBpZiBub3Qg cmVsZXZhbnQpLgogICogY3RsbG9jazogTFdMb2NrIHRvIHVzZSB0byBjb250cm9sIGFjY2VzcyB0 byB0aGUgc2hhcmVkIGNvbnRyb2wgc3RydWN0dXJlLgogICogc3ViZGlyOiBQR0RBVEEtcmVsYXRp dmUgc3ViZGlyZWN0b3J5IHRoYXQgd2lsbCBjb250YWluIHRoZSBmaWxlcy4KICAqIHRyYW5jaGVf aWQ6IExXTG9jayB0cmFuY2hlIElEIHRvIHVzZSBmb3IgdGhlIFNMUlUncyBwZXItYnVmZmVyIExX TG9ja3MuCiAgKiBzeW5jX2hhbmRsZXI6IHdoaWNoIHNldCBvZiBmdW5jdGlvbnMgdG8gdXNlIHRv IGhhbmRsZSBzeW5jIHJlcXVlc3RzCiAgKi8KIHZvaWQKLVNpbXBsZUxydUluaXQoU2xydUN0bCBj dGwsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuc2xvdHMsIGludCBubHNucywKK1NpbXBsZUxydUlu aXQoU2xydUN0bCBjdGwsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuc2xvdHMsCiAJCQkgIExXTG9j ayAqY3RsbG9jaywgY29uc3QgY2hhciAqc3ViZGlyLCBpbnQgdHJhbmNoZV9pZCwKIAkJCSAgU3lu Y1JlcXVlc3RIYW5kbGVyIHN5bmNfaGFuZGxlciwgYm9vbCBsb25nX3NlZ21lbnRfbmFtZXMpCiB7 CkBAIC0yMTksNyArMjE2LDcgQEAgU2ltcGxlTHJ1SW5pdChTbHJ1Q3RsIGN0bCwgY29uc3QgY2hh ciAqbmFtZSwgaW50IG5zbG90cywgaW50IG5sc25zLAogCWJvb2wJCWZvdW5kOwogCiAJc2hhcmVk ID0gKFNscnVTaGFyZWQpIFNobWVtSW5pdFN0cnVjdChuYW1lLAotCQkJCQkJCQkJCSAgU2ltcGxl THJ1U2htZW1TaXplKG5zbG90cywgbmxzbnMpLAorCQkJCQkJCQkJCSAgU2ltcGxlTHJ1U2htZW1T aXplKG5zbG90cyksCiAJCQkJCQkJCQkJICAmZm91bmQpOwogCiAJaWYgKCFJc1VuZGVyUG9zdG1h c3RlcikKQEAgLTIzNiw3ICsyMzMsNiBAQCBTaW1wbGVMcnVJbml0KFNscnVDdGwgY3RsLCBjb25z dCBjaGFyICpuYW1lLCBpbnQgbnNsb3RzLCBpbnQgbmxzbnMsCiAJCXNoYXJlZC0+Q29udHJvbExv Y2sgPSBjdGxsb2NrOwogCiAJCXNoYXJlZC0+bnVtX3Nsb3RzID0gbnNsb3RzOwotCQlzaGFyZWQt Pmxzbl9ncm91cHNfcGVyX3BhZ2UgPSBubHNuczsKIAogCQlzaGFyZWQtPmN1cl9scnVfY291bnQg PSAwOwogCkBAIC0yNjEsMTIgKzI1Nyw2IEBAIFNpbXBsZUxydUluaXQoU2xydUN0bCBjdGwsIGNv bnN0IGNoYXIgKm5hbWUsIGludCBuc2xvdHMsIGludCBubHNucywKIAkJc2hhcmVkLT5idWZmZXJf bG9ja3MgPSAoTFdMb2NrUGFkZGVkICopIChwdHIgKyBvZmZzZXQpOwogCQlvZmZzZXQgKz0gTUFY QUxJR04obnNsb3RzICogc2l6ZW9mKExXTG9ja1BhZGRlZCkpOwogCi0JCWlmIChubHNucyA+IDAp Ci0JCXsKLQkJCXNoYXJlZC0+Z3JvdXBfbHNuID0gKFhMb2dSZWNQdHIgKikgKHB0ciArIG9mZnNl dCk7Ci0JCQlvZmZzZXQgKz0gTUFYQUxJR04obnNsb3RzICogbmxzbnMgKiBzaXplb2YoWExvZ1Jl Y1B0cikpOwotCQl9Ci0KIAkJcHRyICs9IEJVRkZFUkFMSUdOKG9mZnNldCk7CiAJCWZvciAoc2xv dG5vID0gMDsgc2xvdG5vIDwgbnNsb3RzOyBzbG90bm8rKykKIAkJewpAQCAtMjgxLDcgKzI3MSw3 IEBAIFNpbXBsZUxydUluaXQoU2xydUN0bCBjdGwsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuc2xv dHMsIGludCBubHNucywKIAkJfQogCiAJCS8qIFNob3VsZCBmaXQgdG8gZXN0aW1hdGVkIHNobWVt IHNpemUgKi8KLQkJQXNzZXJ0KHB0ciAtIChjaGFyICopIHNoYXJlZCA8PSBTaW1wbGVMcnVTaG1l bVNpemUobnNsb3RzLCBubHNucykpOworCQlBc3NlcnQocHRyIC0gKGNoYXIgKikgc2hhcmVkIDw9 IFNpbXBsZUxydVNobWVtU2l6ZShuc2xvdHMpKTsKIAl9CiAJZWxzZQogCQlBc3NlcnQoZm91bmQp OwpAQCAtMzIzLDExICszMTMsOCBAQCBTaW1wbGVMcnVaZXJvUGFnZShTbHJ1Q3RsIGN0bCwgaW50 NjQgcGFnZW5vKQogCXNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dID0gdHJ1ZTsKIAlTbHJ1UmVj ZW50bHlVc2VkKHNoYXJlZCwgc2xvdG5vKTsKIAotCS8qIFNldCB0aGUgYnVmZmVyIHRvIHplcm9l cyAqLwotCU1lbVNldChzaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10sIDAsIEJMQ0tTWik7Ci0K LQkvKiBTZXQgdGhlIExTTnMgZm9yIHRoaXMgbmV3IHBhZ2UgdG8gemVybyAqLwotCVNpbXBsZUxy dVplcm9MU05zKGN0bCwgc2xvdG5vKTsKKyAgICAvKiBJbml0aWFsaXplIHRoZSBwYWdlLiAqLwor CVBhZ2VJbml0U0xSVShzaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10sIEJMQ0tTWiwgMCk7CiAK IAkvKiBBc3N1bWUgdGhpcyBwYWdlIGlzIG5vdyB0aGUgbGF0ZXN0IGFjdGl2ZSBwYWdlICovCiAJ c2hhcmVkLT5sYXRlc3RfcGFnZV9udW1iZXIgPSBwYWdlbm87CkBAIC0zMzgsMjYgKzMyNSw2IEBA IFNpbXBsZUxydVplcm9QYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pCiAJcmV0dXJuIHNs b3RubzsKIH0KIAotLyoKLSAqIFplcm8gYWxsIHRoZSBMU05zIHdlIHN0b3JlIGZvciB0aGlzIHNs cnUgcGFnZS4KLSAqCi0gKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgZWFjaCB0aW1lIHdlIGNyZWF0 ZSBhIG5ldyBwYWdlLCBhbmQgZWFjaCB0aW1lIHdlIHJlYWQKLSAqIGluIGEgcGFnZSBmcm9tIGRp c2sgaW50byBhbiBleGlzdGluZyBidWZmZXIuICAoU3VjaCBhbiBvbGQgcGFnZSBjYW5ub3QKLSAq IGhhdmUgYW55IGludGVyZXN0aW5nIExTTnMsIHNpbmNlIHdlJ2QgaGF2ZSBmbHVzaGVkIHRoZW0g YmVmb3JlIHdyaXRpbmcKLSAqIHRoZSBwYWdlIGluIHRoZSBmaXJzdCBwbGFjZS4pCi0gKgotICog VGhpcyBhc3N1bWVzIHRoYXQgSW52YWxpZFhMb2dSZWNQdHIgaXMgYml0d2lzZS1hbGwtMC4KLSAq Lwotc3RhdGljIHZvaWQKLVNpbXBsZUxydVplcm9MU05zKFNscnVDdGwgY3RsLCBpbnQgc2xvdG5v KQotewotCVNscnVTaGFyZWQJc2hhcmVkID0gY3RsLT5zaGFyZWQ7Ci0KLQlpZiAoc2hhcmVkLT5s c25fZ3JvdXBzX3Blcl9wYWdlID4gMCkKLQkJTWVtU2V0KCZzaGFyZWQtPmdyb3VwX2xzbltzbG90 bm8gKiBzaGFyZWQtPmxzbl9ncm91cHNfcGVyX3BhZ2VdLCAwLAotCQkJICAgc2hhcmVkLT5sc25f Z3JvdXBzX3Blcl9wYWdlICogc2l6ZW9mKFhMb2dSZWNQdHIpKTsKLX0KLQogLyoKICAqIFdhaXQg Zm9yIGFueSBhY3RpdmUgSS9PIG9uIGEgcGFnZSBzbG90IHRvIGZpbmlzaC4gIChUaGlzIGRvZXMg bm90CiAgKiBndWFyYW50ZWUgdGhhdCBuZXcgSS9PIGhhc24ndCBiZWVuIHN0YXJ0ZWQgYmVmb3Jl IHdlIHJldHVybiwgdGhvdWdoLgpAQCAtNDc4LDkgKzQ0NSw2IEBAIFNpbXBsZUxydVJlYWRQYWdl KFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8sIGJvb2wgd3JpdGVfb2ssCiAJCS8qIERvIHRoZSBy ZWFkICovCiAJCW9rID0gU2xydVBoeXNpY2FsUmVhZFBhZ2UoY3RsLCBwYWdlbm8sIHNsb3Rubyk7 CiAKLQkJLyogU2V0IHRoZSBMU05zIGZvciB0aGlzIG5ld2x5IHJlYWQtaW4gcGFnZSB0byB6ZXJv ICovCi0JCVNpbXBsZUxydVplcm9MU05zKGN0bCwgc2xvdG5vKTsKLQogCQkvKiBSZS1hY3F1aXJl IGNvbnRyb2wgbG9jayBhbmQgdXBkYXRlIHBhZ2Ugc3RhdGUgKi8KIAkJTFdMb2NrQWNxdWlyZShz aGFyZWQtPkNvbnRyb2xMb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC03NDAsNyArNzA0LDcgQEAg U2xydVBoeXNpY2FsUmVhZFBhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubywgaW50IHNsb3Ru bykKIAkJZXJlcG9ydChMT0csCiAJCQkJKGVycm1zZygiZmlsZSBcIiVzXCIgZG9lc24ndCBleGlz dCwgcmVhZGluZyBhcyB6ZXJvZXMiLAogCQkJCQkJcGF0aCkpKTsKLQkJTWVtU2V0KHNoYXJlZC0+ cGFnZV9idWZmZXJbc2xvdG5vXSwgMCwgQkxDS1NaKTsKKwkJUGFnZUluaXRTTFJVKHNoYXJlZC0+ cGFnZV9idWZmZXJbc2xvdG5vXSwgQkxDS1NaLCAwKTsKIAkJcmV0dXJuIHRydWU7CiAJfQogCkBA IC03NjMsNiArNzI3LDEzIEBAIFNscnVQaHlzaWNhbFJlYWRQYWdlKFNscnVDdGwgY3RsLCBpbnQ2 NCBwYWdlbm8sIGludCBzbG90bm8pCiAJCXJldHVybiBmYWxzZTsKIAl9CiAKKwlpZiAoIVBhZ2VJ c1ZlcmlmaWVkRXh0ZW5kZWQoc2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dLCBwYWdlbm8sIFBJ Vl9SRVBPUlRfU1RBVCkpCisJeworCQlzbHJ1X2VycmNhdXNlID0gU0xSVV9EQVRBX0NPUlJVUFRF RDsKKwkJc2xydV9lcnJubyA9IDA7CisJCXJldHVybiBmYWxzZTsKKwl9CisKIAlyZXR1cm4gdHJ1 ZTsKIH0KIApAQCAtNzg5LDYgKzc2MCw4IEBAIFNscnVQaHlzaWNhbFdyaXRlUGFnZShTbHJ1Q3Rs IGN0bCwgaW50NjQgcGFnZW5vLCBpbnQgc2xvdG5vLCBTbHJ1V3JpdGVBbGwgZmRhdGEpCiAJb2Zm X3QJCW9mZnNldCA9IHJwYWdlbm8gKiBCTENLU1o7CiAJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwog CWludAkJCWZkID0gLTE7CisJUGFnZQkJcGFnZSA9IHNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5v XTsKKwlYTG9nUmVjUHRyCWxzbjsKIAogCS8qIHVwZGF0ZSB0aGUgc3RhdHMgY291bnRlciBvZiB3 cml0dGVuIHBhZ2VzICovCiAJcGdzdGF0X2NvdW50X3NscnVfcGFnZV93cml0dGVuKHNoYXJlZC0+ c2xydV9zdGF0c19pZHgpOwpAQCAtNzk4LDQxICs3NzEsMTggQEAgU2xydVBoeXNpY2FsV3JpdGVQ YWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8sIGludCBzbG90bm8sIFNscnVXcml0ZUFsbCBm ZGF0YSkKIAkgKiB3cml0ZSBvdXQgZGF0YSBiZWZvcmUgYXNzb2NpYXRlZCBXQUwgcmVjb3Jkcy4g IFRoaXMgaXMgdGhlIHNhbWUgYWN0aW9uCiAJICogcGVyZm9ybWVkIGR1cmluZyBGbHVzaEJ1ZmZl cigpIGluIHRoZSBtYWluIGJ1ZmZlciBtYW5hZ2VyLgogCSAqLwotCWlmIChzaGFyZWQtPmdyb3Vw X2xzbiAhPSBOVUxMKQorCWxzbiA9IFBhZ2VHZXRMU04ocGFnZSk7CisJaWYgKCFYTG9nUmVjUHRy SXNJbnZhbGlkKGxzbikpCiAJewogCQkvKgotCQkgKiBXZSBtdXN0IGRldGVybWluZSB0aGUgbGFy Z2VzdCBhc3luYy1jb21taXQgTFNOIGZvciB0aGUgcGFnZS4gVGhpcwotCQkgKiBpcyBhIGJpdCB0 ZWRpb3VzLCBidXQgc2luY2UgdGhpcyBlbnRpcmUgZnVuY3Rpb24gaXMgYSBzbG93IHBhdGgKLQkJ ICogYW55d2F5LCBpdCBzZWVtcyBiZXR0ZXIgdG8gZG8gdGhpcyBoZXJlIHRoYW4gdG8gbWFpbnRh aW4gYSBwZXItcGFnZQotCQkgKiBMU04gdmFyaWFibGUgKHdoaWNoJ2QgbmVlZCBhbiBleHRyYSBj b21wYXJpc29uIGluIHRoZQotCQkgKiB0cmFuc2FjdGlvbi1jb21taXQgcGF0aCkuCisJCSAqIEFz IG5vdGVkIGFib3ZlLCBlbG9nKEVSUk9SKSBpcyBub3QgYWNjZXB0YWJsZSBoZXJlLCBzbyBpZgor CQkgKiBYTG9nRmx1c2ggd2VyZSB0byBmYWlsLCB3ZSBtdXN0IFBBTklDLiAgVGhpcyBpc24ndCBt dWNoIG9mIGEKKwkJICogcmVzdHJpY3Rpb24gYmVjYXVzZSBYTG9nRmx1c2ggaXMganVzdCBhYm91 dCBhbGwgY3JpdGljYWwKKwkJICogc2VjdGlvbiBhbnl3YXksIGJ1dCBsZXQncyBtYWtlIHN1cmUu CiAJCSAqLwotCQlYTG9nUmVjUHRyCW1heF9sc247Ci0JCWludAkJCWxzbmluZGV4LAotCQkJCQls c25vZmY7Ci0KLQkJbHNuaW5kZXggPSBzbG90bm8gKiBzaGFyZWQtPmxzbl9ncm91cHNfcGVyX3Bh Z2U7Ci0JCW1heF9sc24gPSBzaGFyZWQtPmdyb3VwX2xzbltsc25pbmRleCsrXTsKLQkJZm9yIChs c25vZmYgPSAxOyBsc25vZmYgPCBzaGFyZWQtPmxzbl9ncm91cHNfcGVyX3BhZ2U7IGxzbm9mZisr KQotCQl7Ci0JCQlYTG9nUmVjUHRyCXRoaXNfbHNuID0gc2hhcmVkLT5ncm91cF9sc25bbHNuaW5k ZXgrK107Ci0KLQkJCWlmIChtYXhfbHNuIDwgdGhpc19sc24pCi0JCQkJbWF4X2xzbiA9IHRoaXNf bHNuOwotCQl9Ci0KLQkJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKG1heF9sc24pKQotCQl7Ci0J CQkvKgotCQkJICogQXMgbm90ZWQgYWJvdmUsIGVsb2coRVJST1IpIGlzIG5vdCBhY2NlcHRhYmxl IGhlcmUsIHNvIGlmCi0JCQkgKiBYTG9nRmx1c2ggd2VyZSB0byBmYWlsLCB3ZSBtdXN0IFBBTklD LiAgVGhpcyBpc24ndCBtdWNoIG9mIGEKLQkJCSAqIHJlc3RyaWN0aW9uIGJlY2F1c2UgWExvZ0Zs dXNoIGlzIGp1c3QgYWJvdXQgYWxsIGNyaXRpY2FsCi0JCQkgKiBzZWN0aW9uIGFueXdheSwgYnV0 IGxldCdzIG1ha2Ugc3VyZS4KLQkJCSAqLwotCQkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7Ci0JCQlY TG9nRmx1c2gobWF4X2xzbik7Ci0JCQlFTkRfQ1JJVF9TRUNUSU9OKCk7Ci0JCX0KKwkJU1RBUlRf Q1JJVF9TRUNUSU9OKCk7CisJCVhMb2dGbHVzaChsc24pOworCQlFTkRfQ1JJVF9TRUNUSU9OKCk7 CiAJfQogCiAJLyoKQEAgLTg5OSw2ICs4NDksOCBAQCBTbHJ1UGh5c2ljYWxXcml0ZVBhZ2UoU2xy dUN0bCBjdGwsIGludDY0IHBhZ2VubywgaW50IHNsb3RubywgU2xydVdyaXRlQWxsIGZkYXRhKQog CQl9CiAJfQogCisJUGFnZVNldENoZWNrc3VtSW5wbGFjZShzaGFyZWQtPnBhZ2VfYnVmZmVyW3Ns b3Rub10sIHBhZ2Vubyk7CisKIAllcnJubyA9IDA7CiAJcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0 KFdBSVRfRVZFTlRfU0xSVV9XUklURSk7CiAJaWYgKHBnX3B3cml0ZShmZCwgc2hhcmVkLT5wYWdl X2J1ZmZlcltzbG90bm9dLCBCTENLU1osIG9mZnNldCkgIT0gQkxDS1NaKQpAQCAtMTAxOSw2ICs5 NzEsMTMgQEAgU2xydVJlcG9ydElPRXJyb3IoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubywgVHJh bnNhY3Rpb25JZCB4aWQpCiAJCQkJCSBlcnJkZXRhaWwoIkNvdWxkIG5vdCBjbG9zZSBmaWxlIFwi JXNcIjogJW0uIiwKIAkJCQkJCQkgICBwYXRoKSkpOwogCQkJYnJlYWs7CisJCWNhc2UgU0xSVV9E QVRBX0NPUlJVUFRFRDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf REFUQV9DT1JSVVBURUQpLAorCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgYWNjZXNzIHN0YXR1cyBv ZiB0cmFuc2FjdGlvbiAldSIsIHhpZCksCisJCQkJCSBlcnJkZXRhaWwoIkludmFsaWQgcGFnZSBm cm9tIGZpbGUgXCIlc1wiIGF0IG9mZnNldCAlZC4iLAorCQkJCQkJCSAgIHBhdGgsIG9mZnNldCkp KTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJLyogY2FuJ3QgZ2V0IGhlcmUsIHdlIHRydXN0 ICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIFNpbXBsZUxydSBlcnJvciBjYXVzZTog JWQiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMKaW5kZXggMWIzYjNhZDcyMC4u MWYzNWVlMjNjNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJh bnMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jCkBAIC0zMiw2 ICszMiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3N1YnRyYW5zLmgiCiAjaW5jbHVkZSAiYWNjZXNz L3RyYW5zYW0uaCIKICNpbmNsdWRlICJwZ190cmFjZS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVm cGFnZS5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKIAogCkBAIC00OSw3ICs1MCw3IEBA CiAgKi8KIAogLyogV2UgbmVlZCBmb3VyIGJ5dGVzIHBlciB4YWN0ICovCi0jZGVmaW5lIFNVQlRS QU5TX1hBQ1RTX1BFUl9QQUdFIChCTENLU1ogLyBzaXplb2YoVHJhbnNhY3Rpb25JZCkpCisjZGVm aW5lIFNVQlRSQU5TX1hBQ1RTX1BFUl9QQUdFIChTaXplT2ZQYWdlQ29udGVudHMgLyBzaXplb2Yo VHJhbnNhY3Rpb25JZCkpCiAKIC8qCiAgKiBBbHRob3VnaCB3ZSByZXR1cm4gYW4gaW50NjQgdGhl IGFjdHVhbCB2YWx1ZSBjYW4ndCBjdXJyZW50bHkgZXhjZWVkCkBAIC05Myw3ICs5NCw3IEBAIFN1 YlRyYW5zU2V0UGFyZW50KFRyYW5zYWN0aW9uSWQgeGlkLCBUcmFuc2FjdGlvbklkIHBhcmVudCkK IAlMV0xvY2tBY3F1aXJlKFN1YnRyYW5zU0xSVUxvY2ssIExXX0VYQ0xVU0lWRSk7CiAKIAlzbG90 bm8gPSBTaW1wbGVMcnVSZWFkUGFnZShTdWJUcmFuc0N0bCwgcGFnZW5vLCB0cnVlLCB4aWQpOwot CXB0ciA9IChUcmFuc2FjdGlvbklkICopIFN1YlRyYW5zQ3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVy W3Nsb3Rub107CisJcHRyID0gKFRyYW5zYWN0aW9uSWQgKikgUGFnZUdldENvbnRlbnRzKFN1YlRy YW5zQ3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10pOwogCXB0ciArPSBlbnRyeW5vOwog CiAJLyoKQEAgLTEzMyw3ICsxMzQsNyBAQCBTdWJUcmFuc0dldFBhcmVudChUcmFuc2FjdGlvbklk IHhpZCkKIAkvKiBsb2NrIGlzIGFjcXVpcmVkIGJ5IFNpbXBsZUxydVJlYWRQYWdlX1JlYWRPbmx5 ICovCiAKIAlzbG90bm8gPSBTaW1wbGVMcnVSZWFkUGFnZV9SZWFkT25seShTdWJUcmFuc0N0bCwg cGFnZW5vLCB4aWQpOwotCXB0ciA9IChUcmFuc2FjdGlvbklkICopIFN1YlRyYW5zQ3RsLT5zaGFy ZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub107CisJcHRyID0gKFRyYW5zYWN0aW9uSWQgKikgUGFnZUdl dENvbnRlbnRzKFN1YlRyYW5zQ3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10pOwogCXB0 ciArPSBlbnRyeW5vOwogCiAJcGFyZW50ID0gKnB0cjsKQEAgLTE5MywxNCArMTk0LDE0IEBAIFN1 YlRyYW5zR2V0VG9wbW9zdFRyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkKQogU2l6ZQogU1VC VFJBTlNTaG1lbVNpemUodm9pZCkKIHsKLQlyZXR1cm4gU2ltcGxlTHJ1U2htZW1TaXplKE5VTV9T VUJUUkFOU19CVUZGRVJTLCAwKTsKKwlyZXR1cm4gU2ltcGxlTHJ1U2htZW1TaXplKE5VTV9TVUJU UkFOU19CVUZGRVJTKTsKIH0KIAogdm9pZAogU1VCVFJBTlNTaG1lbUluaXQodm9pZCkKIHsKIAlT dWJUcmFuc0N0bC0+UGFnZVByZWNlZGVzID0gU3ViVHJhbnNQYWdlUHJlY2VkZXM7Ci0JU2ltcGxl THJ1SW5pdChTdWJUcmFuc0N0bCwgIlN1YnRyYW5zIiwgTlVNX1NVQlRSQU5TX0JVRkZFUlMsIDAs CisJU2ltcGxlTHJ1SW5pdChTdWJUcmFuc0N0bCwgIlN1YnRyYW5zIiwgTlVNX1NVQlRSQU5TX0JV RkZFUlMsCiAJCQkJICBTdWJ0cmFuc1NMUlVMb2NrLCAicGdfc3VidHJhbnMiLAogCQkJCSAgTFdU UkFOQ0hFX1NVQlRSQU5TX0JVRkZFUiwgU1lOQ19IQU5ETEVSX05PTkUsCiAJCQkJICBmYWxzZSk7 CkBAIC0zMDUsNyArMzA2LDYgQEAgQ2hlY2tQb2ludFNVQlRSQU5TKHZvaWQpCiAJVFJBQ0VfUE9T VEdSRVNRTF9TVUJUUkFOU19DSEVDS1BPSU5UX0RPTkUodHJ1ZSk7CiB9CiAKLQogLyoKICAqIE1h a2Ugc3VyZSB0aGF0IFNVQlRSQU5TIGhhcyByb29tIGZvciBhIG5ld2x5LWFsbG9jYXRlZCBYSUQu CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2FzeW5jLmMKaW5kZXggMjY0ZjI1YThmOS4uODViMGQ2M2NkYyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9hc3luYy5jCkBAIC0xNDAsNiArMTQwLDcgQEAKICNpbmNsdWRlICJsaWJwcS9saWJwcS5o IgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisj aW5jbHVkZSAic3RvcmFnZS9idWZwYWdlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNp bmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTE2 Miw3ICsxNjMsNyBAQAogICogdGhhbiB0aGF0LCBzbyBjaGFuZ2VzIGluIHRoYXQgZGF0YSBzdHJ1 Y3R1cmUgd29uJ3QgYWZmZWN0IHVzZXItdmlzaWJsZQogICogcmVzdHJpY3Rpb25zLgogICovCi0j ZGVmaW5lIE5PVElGWV9QQVlMT0FEX01BWF9MRU5HVEgJKEJMQ0tTWiAtIE5BTUVEQVRBTEVOIC0g MTI4KQorI2RlZmluZSBOT1RJRllfUEFZTE9BRF9NQVhfTEVOR1RICShTaXplT2ZQYWdlQ29udGVu dHMgLSBOQU1FREFUQUxFTiAtIDEyOCkKIAogLyoKICAqIFN0cnVjdCByZXByZXNlbnRpbmcgYW4g ZW50cnkgaW4gdGhlIGdsb2JhbCBub3RpZnkgcXVldWUKQEAgLTMxMSw3ICszMTIsNyBAQCBzdGF0 aWMgU2xydUN0bERhdGEgTm90aWZ5Q3RsRGF0YTsKIAogI2RlZmluZSBOb3RpZnlDdGwJCQkJCSgm Tm90aWZ5Q3RsRGF0YSkKICNkZWZpbmUgUVVFVUVfUEFHRVNJWkUJCQkJQkxDS1NaCi0KKyNkZWZp bmUgUVVFVUVfUEFHRV9DQVBBQ0lUWQkJCShRVUVVRV9QQUdFU0laRSAtIE1BWEFMSUdOKFNpemVP ZlBhZ2VIZWFkZXJEYXRhKSkKICNkZWZpbmUgUVVFVUVfRlVMTF9XQVJOX0lOVEVSVkFMCTUwMDAJ Lyogd2FybiBhdCBtb3N0IG9uY2UgZXZlcnkgNXMgKi8KIAogLyoKQEAgLTQ5Miw3ICs0OTMsNyBA QCBBc3luY1NobWVtU2l6ZSh2b2lkKQogCXNpemUgPSBtdWxfc2l6ZShNYXhCYWNrZW5kcyArIDEs IHNpemVvZihRdWV1ZUJhY2tlbmRTdGF0dXMpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgb2Zm c2V0b2YoQXN5bmNRdWV1ZUNvbnRyb2wsIGJhY2tlbmQpKTsKIAotCXNpemUgPSBhZGRfc2l6ZShz aXplLCBTaW1wbGVMcnVTaG1lbVNpemUoTlVNX05PVElGWV9CVUZGRVJTLCAwKSk7CisJc2l6ZSA9 IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6ZShOVU1fTk9USUZZX0JVRkZFUlMpKTsK IAogCXJldHVybiBzaXplOwogfQpAQCAtNTQxLDcgKzU0Miw3IEBAIEFzeW5jU2htZW1Jbml0KHZv aWQpCiAJICogbmFtZXMgYXJlIHVzZWQgaW4gb3JkZXIgdG8gYXZvaWQgd3JhcGFyb3VuZC4KIAkg Ki8KIAlOb3RpZnlDdGwtPlBhZ2VQcmVjZWRlcyA9IGFzeW5jUXVldWVQYWdlUHJlY2VkZXM7Ci0J U2ltcGxlTHJ1SW5pdChOb3RpZnlDdGwsICJOb3RpZnkiLCBOVU1fTk9USUZZX0JVRkZFUlMsIDAs CisJU2ltcGxlTHJ1SW5pdChOb3RpZnlDdGwsICJOb3RpZnkiLCBOVU1fTk9USUZZX0JVRkZFUlMs CiAJCQkJICBOb3RpZnlTTFJVTG9jaywgInBnX25vdGlmeSIsIExXVFJBTkNIRV9OT1RJRllfQlVG RkVSLAogCQkJCSAgU1lOQ19IQU5ETEVSX05PTkUsIHRydWUpOwogCkBAIC0xMzAxLDE0ICsxMzAy LDE0IEBAIGFzeW5jUXVldWVBZHZhbmNlKHZvbGF0aWxlIFF1ZXVlUG9zaXRpb24gKnBvc2l0aW9u LCBpbnQgZW50cnlMZW5ndGgpCiAJICogd3JpdHRlbiBvciByZWFkLgogCSAqLwogCW9mZnNldCAr PSBlbnRyeUxlbmd0aDsKLQlBc3NlcnQob2Zmc2V0IDw9IFFVRVVFX1BBR0VTSVpFKTsKKwlBc3Nl cnQob2Zmc2V0IDw9IFFVRVVFX1BBR0VfQ0FQQUNJVFkpOwogCiAJLyoKIAkgKiBJbiBhIHNlY29u ZCBzdGVwIGNoZWNrIGlmIGFub3RoZXIgZW50cnkgY2FuIHBvc3NpYmx5IGJlIHdyaXR0ZW4gdG8g dGhlCiAJICogcGFnZS4gSWYgc28sIHN0YXkgaGVyZSwgd2UgaGF2ZSByZWFjaGVkIHRoZSBuZXh0 IHBvc2l0aW9uLiBJZiBub3QsIHRoZW4KIAkgKiB3ZSBuZWVkIHRvIG1vdmUgb24gdG8gdGhlIG5l eHQgcGFnZS4KIAkgKi8KLQlpZiAob2Zmc2V0ICsgUVVFVUVBTElHTihBc3luY1F1ZXVlRW50cnlF bXB0eVNpemUpID4gUVVFVUVfUEFHRVNJWkUpCisJaWYgKG9mZnNldCArIFFVRVVFQUxJR04oQXN5 bmNRdWV1ZUVudHJ5RW1wdHlTaXplKSA+IFFVRVVFX1BBR0VfQ0FQQUNJVFkpCiAJewogCQlwYWdl bm8rKzsKIAkJb2Zmc2V0ID0gMDsKQEAgLTE0MDgsNyArMTQwOSw3IEBAIGFzeW5jUXVldWVBZGRF bnRyaWVzKExpc3RDZWxsICpuZXh0Tm90aWZ5KQogCQlvZmZzZXQgPSBRVUVVRV9QT1NfT0ZGU0VU KHF1ZXVlX2hlYWQpOwogCiAJCS8qIENoZWNrIHdoZXRoZXIgdGhlIGVudHJ5IHJlYWxseSBmaXRz IG9uIHRoZSBjdXJyZW50IHBhZ2UgKi8KLQkJaWYgKG9mZnNldCArIHFlLmxlbmd0aCA8PSBRVUVV RV9QQUdFU0laRSkKKwkJaWYgKG9mZnNldCArIHFlLmxlbmd0aCA8PSBRVUVVRV9QQUdFX0NBUEFD SVRZKQogCQl7CiAJCQkvKiBPSywgc28gYWR2YW5jZSBuZXh0Tm90aWZ5IHBhc3QgdGhpcyBpdGVt ICovCiAJCQluZXh0Tm90aWZ5ID0gbG5leHQocGVuZGluZ05vdGlmaWVzLT5ldmVudHMsIG5leHRO b3RpZnkpOwpAQCAtMTQyMCwxNCArMTQyMSwxNCBAQCBhc3luY1F1ZXVlQWRkRW50cmllcyhMaXN0 Q2VsbCAqbmV4dE5vdGlmeSkKIAkJCSAqIG9ubHkgY2hlY2sgZGJvaWQgYW5kIHNpbmNlIGl0IHdv bid0IG1hdGNoIGFueSByZWFkZXIncyBkYXRhYmFzZQogCQkJICogT0lELCB0aGV5IHdpbGwgaWdu b3JlIHRoaXMgZW50cnkgYW5kIG1vdmUgb24uCiAJCQkgKi8KLQkJCXFlLmxlbmd0aCA9IFFVRVVF X1BBR0VTSVpFIC0gb2Zmc2V0OworCQkJcWUubGVuZ3RoID0gUVVFVUVfUEFHRV9DQVBBQ0lUWSAt IG9mZnNldDsKIAkJCXFlLmRib2lkID0gSW52YWxpZE9pZDsKIAkJCXFlLmRhdGFbMF0gPSAnXDAn OwkvKiBlbXB0eSBjaGFubmVsICovCiAJCQlxZS5kYXRhWzFdID0gJ1wwJzsJLyogZW1wdHkgcGF5 bG9hZCAqLwogCQl9CiAKIAkJLyogTm93IGNvcHkgcWUgaW50byB0aGUgc2hhcmVkIGJ1ZmZlciBw YWdlICovCi0JCW1lbWNweShOb3RpZnlDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSAr IG9mZnNldCwKKwkJbWVtY3B5KFBhZ2VHZXRDb250ZW50cyhOb3RpZnlDdGwtPnNoYXJlZC0+cGFn ZV9idWZmZXJbc2xvdG5vXSkgKyBvZmZzZXQsCiAJCQkgICAmcWUsCiAJCQkgICBxZS5sZW5ndGgp OwogCkBAIC0xOTQ3LDEwICsxOTQ4LDEwIEBAIGFzeW5jUXVldWVSZWFkQWxsTm90aWZpY2F0aW9u cyh2b2lkKQogCQkJZWxzZQogCQkJewogCQkJCS8qIGZldGNoIGFsbCB0aGUgcmVzdCBvZiB0aGUg cGFnZSAqLwotCQkJCWNvcHlzaXplID0gUVVFVUVfUEFHRVNJWkUgLSBjdXJvZmZzZXQ7CisJCQkJ Y29weXNpemUgPSBRVUVVRV9QQUdFX0NBUEFDSVRZIC0gY3Vyb2Zmc2V0OwogCQkJfQotCQkJbWVt Y3B5KHBhZ2VfYnVmZmVyLmJ1ZiArIGN1cm9mZnNldCwKLQkJCQkgICBOb3RpZnlDdGwtPnNoYXJl ZC0+cGFnZV9idWZmZXJbc2xvdG5vXSArIGN1cm9mZnNldCwKKwkJCW1lbWNweShQYWdlR2V0Q29u dGVudHMocGFnZV9idWZmZXIuYnVmKSArIGN1cm9mZnNldCwKKwkJCQkgICBQYWdlR2V0Q29udGVu dHMoTm90aWZ5Q3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10pICsgY3Vyb2Zmc2V0LAog CQkJCSAgIGNvcHlzaXplKTsKIAkJCS8qIFJlbGVhc2UgbG9jayB0aGF0IHdlIGdvdCBmcm9tIFNp bXBsZUxydVJlYWRQYWdlX1JlYWRPbmx5KCkgKi8KIAkJCUxXTG9ja1JlbGVhc2UoTm90aWZ5U0xS VUxvY2spOwpAQCAtMjAyMSw3ICsyMDIyLDcgQEAgYXN5bmNRdWV1ZVByb2Nlc3NQYWdlRW50cmll cyh2b2xhdGlsZSBRdWV1ZVBvc2l0aW9uICpjdXJyZW50LAogCQlpZiAoUVVFVUVfUE9TX0VRVUFM KHRoaXNlbnRyeSwgc3RvcCkpCiAJCQlicmVhazsKIAotCQlxZSA9IChBc3luY1F1ZXVlRW50cnkg KikgKHBhZ2VfYnVmZmVyICsgUVVFVUVfUE9TX09GRlNFVCh0aGlzZW50cnkpKTsKKwkJcWUgPSAo QXN5bmNRdWV1ZUVudHJ5ICopIChQYWdlR2V0Q29udGVudHMocGFnZV9idWZmZXIpICsgUVVFVUVf UE9TX09GRlNFVCh0aGlzZW50cnkpKTsKIAogCQkvKgogCQkgKiBBZHZhbmNlICpjdXJyZW50IG92 ZXIgdGhpcyBtZXNzYWdlLCBwb3NzaWJseSB0byB0aGUgbmV4dCBwYWdlLiBBcwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IDExMjliOGU0ZjIuLjlmZDk0NWFkMzggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAgLTIwNCw2ICsyMDQsNyBAQAogI2luY2x1 ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfbGZpbmQuaCIKICNpbmNsdWRlICJzdG9y YWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFnZS5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGVfaW50ZXJuYWxz LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCkBAIC0zMjIsOCArMzIzLDggQEAgc3RhdGlj IFNscnVDdGxEYXRhIFNlcmlhbFNscnVDdGxEYXRhOwogI2RlZmluZSBTZXJpYWxTbHJ1Q3RsCQkJ KCZTZXJpYWxTbHJ1Q3RsRGF0YSkKIAogI2RlZmluZSBTRVJJQUxfUEFHRVNJWkUJCQlCTENLU1oK LSNkZWZpbmUgU0VSSUFMX0VOVFJZU0laRQkJCXNpemVvZihTZXJDb21taXRTZXFObykKLSNkZWZp bmUgU0VSSUFMX0VOVFJJRVNQRVJQQUdFCShTRVJJQUxfUEFHRVNJWkUgLyBTRVJJQUxfRU5UUllT SVpFKQorI2RlZmluZSBTRVJJQUxfRU5UUllTSVpFCQlzaXplb2YoU2VyQ29tbWl0U2VxTm8pCisj ZGVmaW5lIFNFUklBTF9FTlRSSUVTUEVSUEFHRQkoU0VSSUFMX1BBR0VTSVpFIC0gTUFYQUxJR04o U2l6ZU9mUGFnZUhlYWRlckRhdGEpIC8gU0VSSUFMX0VOVFJZU0laRSkKIAogLyoKICAqIFNldCBt YXhpbXVtIHBhZ2VzIGJhc2VkIG9uIHRoZSBudW1iZXIgbmVlZGVkIHRvIHRyYWNrIGFsbCB0cmFu c2FjdGlvbnMuCkBAIC0zMzMsNyArMzM0LDcgQEAgc3RhdGljIFNscnVDdGxEYXRhIFNlcmlhbFNs cnVDdGxEYXRhOwogI2RlZmluZSBTZXJpYWxOZXh0UGFnZShwYWdlKSAoKChwYWdlKSA+PSBTRVJJ QUxfTUFYX1BBR0UpID8gMCA6IChwYWdlKSArIDEpCiAKICNkZWZpbmUgU2VyaWFsVmFsdWUoc2xv dG5vLCB4aWQpICgqKChTZXJDb21taXRTZXFObyAqKSBcCi0JKFNlcmlhbFNscnVDdGwtPnNoYXJl ZC0+cGFnZV9idWZmZXJbc2xvdG5vXSArIFwKKwkoUGFnZUdldENvbnRlbnRzKFNlcmlhbFNscnVD dGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSkgKyBcCiAJKCgoKHVpbnQzMikgKHhpZCkp ICUgU0VSSUFMX0VOVFJJRVNQRVJQQUdFKSAqIFNFUklBTF9FTlRSWVNJWkUpKSkpCiAKICNkZWZp bmUgU2VyaWFsUGFnZSh4aWQpCSgoKHVpbnQzMikgKHhpZCkpIC8gU0VSSUFMX0VOVFJJRVNQRVJQ QUdFKQpAQCAtNzg1LDEwICs3ODYsMTMgQEAgU2VyaWFsUGFnZVByZWNlZGVzTG9naWNhbGx5VW5p dFRlc3RzKHZvaWQpCiAJICogcmVxdWlyZXMgYnVybmluZyB+MkIgWElEcyBpbiBzaW5nbGUtdXNl ciBtb2RlLCBhIG5lZ2xpZ2libGUKIAkgKiBwb3NzaWJpbGl0eS4gIE1vcmVvdmVyLCBpZiBpdCBk b2VzIGhhcHBlbiwgdGhlIGNvbnNlcXVlbmNlIHdvdWxkIGJlCiAJICogbWlsZCwgbmFtZWx5IGEg bmV3IHRyYW5zYWN0aW9uIGZhaWxpbmcgaW4gU2ltcGxlTHJ1UmVhZFBhZ2UoKS4KKwkgKgorCSAq IE5PVEU6ICBBZnRlciBhZGRpbmcgdGhlIHBhZ2UgaGVhZGVyLCB0aGUgZGVmZWN0IGFmZmVjdHMg dHdvIHBhZ2VzLgorCSAqIFdlIG5vdyBhc3NlcnQgY29ycmVjdCB0cmVhdG1lbnQgb2YgaXRzIHNl Y29uZCB0byBwcmlvciBwYWdlLgogCSAqLwogCWhlYWRQYWdlID0gb2xkZXN0UGFnZTsKIAl0YXJn ZXRQYWdlID0gbmV3ZXN0UGFnZTsKLQlBc3NlcnQoU2VyaWFsUGFnZVByZWNlZGVzTG9naWNhbGx5 KGhlYWRQYWdlLCB0YXJnZXRQYWdlIC0gMSkpOworCUFzc2VydChTZXJpYWxQYWdlUHJlY2VkZXNM b2dpY2FsbHkoaGVhZFBhZ2UsIHRhcmdldFBhZ2UgLSAyKSk7CiAjaWYgMAogCUFzc2VydChTZXJp YWxQYWdlUHJlY2VkZXNMb2dpY2FsbHkoaGVhZFBhZ2UsIHRhcmdldFBhZ2UpKTsKICNlbmRpZgpA QCAtODA4LDcgKzgxMiw3IEBAIFNlcmlhbEluaXQodm9pZCkKIAkgKi8KIAlTZXJpYWxTbHJ1Q3Rs LT5QYWdlUHJlY2VkZXMgPSBTZXJpYWxQYWdlUHJlY2VkZXNMb2dpY2FsbHk7CiAJU2ltcGxlTHJ1 SW5pdChTZXJpYWxTbHJ1Q3RsLCAiU2VyaWFsIiwKLQkJCQkgIE5VTV9TRVJJQUxfQlVGRkVSUywg MCwgU2VyaWFsU0xSVUxvY2ssICJwZ19zZXJpYWwiLAorCQkJCSAgTlVNX1NFUklBTF9CVUZGRVJT LCBTZXJpYWxTTFJVTG9jaywgInBnX3NlcmlhbCIsCiAJCQkJICBMV1RSQU5DSEVfU0VSSUFMX0JV RkZFUiwgU1lOQ19IQU5ETEVSX05PTkUsCiAJCQkJICBmYWxzZSk7CiAjaWZkZWYgVVNFX0FTU0VS VF9DSEVDS0lORwpAQCAtMTM0OCw3ICsxMzUyLDcgQEAgUHJlZGljYXRlTG9ja1NobWVtU2l6ZSh2 b2lkKQogCiAJLyogU2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmVzIGZvciBTTFJVIHRyYWNraW5nIG9m IG9sZCBjb21taXR0ZWQgeGlkcy4gKi8KIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgc2l6ZW9mKFNl cmlhbENvbnRyb2xEYXRhKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVt U2l6ZShOVU1fU0VSSUFMX0JVRkZFUlMsIDApKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2lt cGxlTHJ1U2htZW1TaXplKE5VTV9TRVJJQUxfQlVGRkVSUykpOwogCiAJcmV0dXJuIHNpemU7CiB9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3BhZ2UvYnVmcGFnZS5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9wYWdlL2J1ZnBhZ2UuYwppbmRleCA5YTMwMmRkYzMwLi43MjNhMTI3NTk0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL3BhZ2UvYnVmcGFnZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvcGFnZS9idWZwYWdlLmMKQEAgLTU5LDYgKzU5LDMxIEBAIFBhZ2VJ bml0KFBhZ2UgcGFnZSwgU2l6ZSBwYWdlU2l6ZSwgU2l6ZSBzcGVjaWFsU2l6ZSkKIAkvKiBwLT5w ZF9wcnVuZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsJCWRvbmUgYnkgYWJvdmUgTWVtU2V0 ICovCiB9CiAKKy8qCisgKiBQYWdlSW5pdFNMUlUKKyAqCQlJbml0aWFsaXplcyB0aGUgY29udGVu dHMgb2YgYW4gU0xSVSBwYWdlLgorICoJCU5vdGUgdGhhdCB3ZSBkb24ndCBjYWxjdWxhdGUgYW4g aW5pdGlhbCBjaGVja3N1bSBoZXJlOyB0aGF0J3Mgbm90IGRvbmUKKyAqCQl1bnRpbCBpdCdzIHRp bWUgdG8gd3JpdGUuCisgKi8KK3ZvaWQKK1BhZ2VJbml0U0xSVShQYWdlIHBhZ2UsIFNpemUgcGFn ZVNpemUsIFNpemUgc3BlY2lhbFNpemUpCit7CisJUGFnZUhlYWRlcglwID0gKFBhZ2VIZWFkZXIp IHBhZ2U7CisKKwlzcGVjaWFsU2l6ZSA9IE1BWEFMSUdOKHNwZWNpYWxTaXplKTsKKworCUFzc2Vy dChwYWdlU2l6ZSA9PSBCTENLU1opOworCUFzc2VydChwYWdlU2l6ZSA+IHNwZWNpYWxTaXplICsg U2l6ZU9mUGFnZUhlYWRlckRhdGEpOworCisJLyogTWFrZSBzdXJlIGFsbCBmaWVsZHMgb2YgcGFn ZSBhcmUgemVybywgYXMgd2VsbCBhcyB1bnVzZWQgc3BhY2UgKi8KKwlNZW1TZXQocCwgMCwgcGFn ZVNpemUpOworCisJcC0+cGRfZmxhZ3MgPSAwOworCXAtPnBkX2xvd2VyID0gU2l6ZU9mUGFnZUhl YWRlckRhdGE7CisJcC0+cGRfdXBwZXIgPSBwYWdlU2l6ZSAtIHNwZWNpYWxTaXplOworCXAtPnBk X3NwZWNpYWwgPSBwYWdlU2l6ZSAtIHNwZWNpYWxTaXplOworCVBhZ2VTZXRQYWdlU2l6ZUFuZFZl cnNpb24ocGFnZSwgcGFnZVNpemUsIFBHX1NMUlVfUEFHRV9MQVlPVVRfVkVSU0lPTik7Cit9CiAK IC8qCiAgKiBQYWdlSXNWZXJpZmllZEV4dGVuZGVkCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2No ZWNrc3Vtcy9wZ19jaGVja3N1bXMuYyBiL3NyYy9iaW4vcGdfY2hlY2tzdW1zL3BnX2NoZWNrc3Vt cy5jCmluZGV4IDE5YzA4M2JlMTcuLjBmNDM1MzM4MTEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf Y2hlY2tzdW1zL3BnX2NoZWNrc3Vtcy5jCisrKyBiL3NyYy9iaW4vcGdfY2hlY2tzdW1zL3BnX2No ZWNrc3Vtcy5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlIDxkaXJlbnQuaD4KICNpbmNs dWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CiAjaW5jbHVkZSA8dGltZS5oPgog I2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC01ODksMTIgKzU5 MCwyMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCXsKIAkJCXRvdGFsX3NpemUg PSBzY2FuX2RpcmVjdG9yeShEYXRhRGlyLCAiZ2xvYmFsIiwgdHJ1ZSk7CiAJCQl0b3RhbF9zaXpl ICs9IHNjYW5fZGlyZWN0b3J5KERhdGFEaXIsICJiYXNlIiwgdHJ1ZSk7CisJCQl0b3RhbF9zaXpl ICs9IHNjYW5fZGlyZWN0b3J5KERhdGFEaXIsICJwZ19jb21taXRfdHMiLCB0cnVlKTsKKwkJCXRv dGFsX3NpemUgKz0gc2Nhbl9kaXJlY3RvcnkoRGF0YURpciwgInBnX211bHRpeGFjdCIsIHRydWUp OworCQkJdG90YWxfc2l6ZSArPSBzY2FuX2RpcmVjdG9yeShEYXRhRGlyLCAicGdfc2VyaWFsIiwg dHJ1ZSk7CiAJCQl0b3RhbF9zaXplICs9IHNjYW5fZGlyZWN0b3J5KERhdGFEaXIsICJwZ190Ymxz cGMiLCB0cnVlKTsKKwkJCXRvdGFsX3NpemUgKz0gc2Nhbl9kaXJlY3RvcnkoRGF0YURpciwgInBn X3hhY3QiLCB0cnVlKTsKIAkJfQogCiAJCSh2b2lkKSBzY2FuX2RpcmVjdG9yeShEYXRhRGlyLCAi Z2xvYmFsIiwgZmFsc2UpOwogCQkodm9pZCkgc2Nhbl9kaXJlY3RvcnkoRGF0YURpciwgImJhc2Ui LCBmYWxzZSk7CisJCSh2b2lkKSBzY2FuX2RpcmVjdG9yeShEYXRhRGlyLCAicGdfY29tbWl0X3Rz IiwgZmFsc2UpOworCQkodm9pZCkgc2Nhbl9kaXJlY3RvcnkoRGF0YURpciwgInBnX211bHRpeGFj dCIsIGZhbHNlKTsKKwkJKHZvaWQpIHNjYW5fZGlyZWN0b3J5KERhdGFEaXIsICJwZ19zZXJpYWwi LCBmYWxzZSk7CiAJCSh2b2lkKSBzY2FuX2RpcmVjdG9yeShEYXRhRGlyLCAicGdfdGJsc3BjIiwg ZmFsc2UpOworCQkodm9pZCkgc2Nhbl9kaXJlY3RvcnkoRGF0YURpciwgInBnX3hhY3QiLCBmYWxz ZSk7CiAKIAkJaWYgKHNob3dwcm9ncmVzcykKIAkJCXByb2dyZXNzX3JlcG9ydCh0cnVlKTsKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDFfYmFzaWMucGwgYi9zcmMvYmluL3Bn X3Jlc2V0d2FsL3QvMDAxX2Jhc2ljLnBsCmluZGV4IDE4ZDA4ODJjYjEuLmFlNzQ4MjhlNDQgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDFfYmFzaWMucGwKKysrIGIvc3JjL2Jp bi9wZ19yZXNldHdhbC90LzAwMV9iYXNpYy5wbApAQCAtMjA2LDcgKzIwNiw3IEBAIHB1c2ggQGNt ZCwKICAgc3ByaW50ZigiJWQsJWQiLCBoZXgoJGZpbGVzWzBdKSA9PSAwID8gMyA6IGhleCgkZmls ZXNbMF0pLCBoZXgoJGZpbGVzWy0xXSkpOwogCiBAZmlsZXMgPSBnZXRfc2xydV9maWxlcygncGdf bXVsdGl4YWN0L29mZnNldHMnKTsKLSRtdWx0ID0gMzIgKiAkYmxja3N6IC8gNDsKKyRtdWx0ID0g MzIgKiAoJGJsY2tzeiAtIDI0KSAvIDQ7CiAjIC1tIGFyZ3VtZW50IGlzICJuZXcsb2xkIgogcHVz aCBAY21kLCAnLW0nLAogICBzcHJpbnRmKCIlZCwlZCIsCkBAIC0yMTQsMTEgKzIxNCwxMSBAQCBw dXNoIEBjbWQsICctbScsCiAJaGV4KCRmaWxlc1swXSkgPT0gMCA/IDEgOiBoZXgoJGZpbGVzWzBd ICogJG11bHQpKTsKIAogQGZpbGVzID0gZ2V0X3NscnVfZmlsZXMoJ3BnX211bHRpeGFjdC9tZW1i ZXJzJyk7Ci0kbXVsdCA9IDMyICogaW50KCRibGNrc3ogLyAyMCkgKiA0OworJG11bHQgPSAzMiAq IGludCgoJGJsY2tzeiAtIDI0KSAvIDIwKSAqIDQ7CiBwdXNoIEBjbWQsICctTycsIChoZXgoJGZp bGVzWy0xXSkgKyAxKSAqICRtdWx0OwogCiBAZmlsZXMgPSBnZXRfc2xydV9maWxlcygncGdfeGFj dCcpOwotJG11bHQgPSAzMiAqICRibGNrc3ogKiA0OworJG11bHQgPSAzMiAqICgkYmxja3N6IC0g MjQpICogNDsKIHB1c2ggQGNtZCwKICAgJy11JywgKGhleCgkZmlsZXNbMF0pID09IDAgPyAzIDog aGV4KCRmaWxlc1swXSkgKiAkbXVsdCksCiAgICcteCcsICgoaGV4KCRmaWxlc1stMV0pICsgMSkg KiAkbXVsdCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvZmlsZS5jIGIvc3JjL2Jp bi9wZ191cGdyYWRlL2ZpbGUuYwppbmRleCBkMTczNjAyODgyLi4zMjJjMmIzY2U0IDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvZmlsZS5jCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9m aWxlLmMKQEAgLTksNiArOSw3IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgogCisjaW5j bHVkZSA8ZGlyZW50Lmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxmY250bC5o PgogI2lmZGVmIEhBVkVfQ09QWUZJTEVfSApAQCAtMzc1LDMgKzM3NiwxODggQEAgY2hlY2tfaGFy ZF9saW5rKHZvaWQpCiAKIAl1bmxpbmsobmV3X2xpbmtfZmlsZSk7CiB9CisKKworLyoKKyAqIENv cHkgU0xSVV9QQUdFU19QRVJfU0VHTUVOVCBmcm9tIGFjY2Vzcy9zbHJ1LmggdG8gYXZvaWQgaW5j bHVkaW5nIGl0LgorICovCisjZGVmaW5lIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQJMzIKKworI2Rl ZmluZSBTRUdNRU5UX1NJWkUJCQkoQkxDS1NaICogU0xSVV9QQUdFU19QRVJfU0VHTUVOVCkKKwor LyoKKyAqIENvcHkgUGFnZUluaXRTTFJVIGZyb20gc3RvcmFnZS9idWZwYWdlLmMgdG8gYXZvaWQg bGlua2luZyB0byB0aGUgYmFja2VuZC4KKyAqLwordm9pZAorUGFnZUluaXRTTFJVKFBhZ2UgcGFn ZSwgU2l6ZSBwYWdlU2l6ZSwgU2l6ZSBzcGVjaWFsU2l6ZSkKK3sKKwlQYWdlSGVhZGVyCXAgPSAo UGFnZUhlYWRlcikgcGFnZTsKKworCXNwZWNpYWxTaXplID0gTUFYQUxJR04oc3BlY2lhbFNpemUp OworCisJQXNzZXJ0KHBhZ2VTaXplID09IEJMQ0tTWik7CisJQXNzZXJ0KHBhZ2VTaXplID4gc3Bl Y2lhbFNpemUgKyBTaXplT2ZQYWdlSGVhZGVyRGF0YSk7CisKKwkvKiBNYWtlIHN1cmUgYWxsIGZp ZWxkcyBvZiBwYWdlIGFyZSB6ZXJvLCBhcyB3ZWxsIGFzIHVudXNlZCBzcGFjZSAqLworCU1lbVNl dChwLCAwLCBwYWdlU2l6ZSk7CisKKwlwLT5wZF9mbGFncyA9IDA7CisJcC0+cGRfbG93ZXIgPSBT aXplT2ZQYWdlSGVhZGVyRGF0YTsKKwlwLT5wZF91cHBlciA9IHBhZ2VTaXplIC0gc3BlY2lhbFNp emU7CisJcC0+cGRfc3BlY2lhbCA9IHBhZ2VTaXplIC0gc3BlY2lhbFNpemU7CisJUGFnZVNldFBh Z2VTaXplQW5kVmVyc2lvbihwYWdlLCBwYWdlU2l6ZSwgUEdfU0xSVV9QQUdFX0xBWU9VVF9WRVJT SU9OKTsKK30KKworLyoKKyAqIEZpbHRlciBmdW5jdGlvbiBmb3Igc2NhbmRpcigzKSB0byBzZWxl Y3Qgb25seSBzZWdtZW50IGZpbGVzLgorICovCitzdGF0aWMgaW50CitzZWdtZW50X2ZpbGVfZmls dGVyKGNvbnN0IHN0cnVjdCBkaXJlbnQgKmRpcmVudCkKK3sKKwlyZXR1cm4gc3Ryc3BuKGRpcmVu dC0+ZF9uYW1lLCAiMDEyMzQ1Njc4OUFCQ0RFRiIpID09IHN0cmxlbihkaXJlbnQtPmRfbmFtZSk7 Cit9CisKKy8qCisgKiBDb21wYXJlIGZ1bmN0aW9uIGZvciBzY2FuZGlyKDMpIHRvIHNvcnQgc2Vn bWVudCBmaWxlcy4KKyAqLworc3RhdGljIGludAorc2VnbWVudF9maWxlX2NvbXBhcmUoY29uc3Qg c3RydWN0IGRpcmVudCAqKmEsIGNvbnN0IHN0cnVjdCBkaXJlbnQgKipiKQoreworCWxvbmcgc2Vn bm9fYTsKKwlsb25nIHNlZ25vX2I7CisKKwlzZWdub19hID0gc3RydG9sKCgqYSktPmRfbmFtZSwg TlVMTCwgMTYpOworCXNlZ25vX2IgPSBzdHJ0b2woKCpiKS0+ZF9uYW1lLCBOVUxMLCAxNik7CisJ cmV0dXJuIHNlZ25vX2EgLSBzZWdub19iOworfQorCitzdGF0aWMgdm9pZAordXBncmFkZV9maWxl KGNvbnN0IGNoYXIgKnNyY19kaXIsIGNvbnN0IGNoYXIgKnNyY19maWxlLCBjb25zdCBjaGFyICpk c3RfZGlyKQoreworCWNoYXIJc3JjW01BWFBHUEFUSF07CisJY2hhcglkc3RbTUFYUEdQQVRIXTsK KworCWludAkJc2VnX25hbWVfbGVuOworCWludAkJc3JjX3NlZ25vOworCWludDY0CXNyY19wYWdl bm87CisJaW50CQlkc3Rfc2Vnbm87CisJaW50NjQJZHN0X3BhZ2VubzsKKwlpbnQJCWRzdF9vZmZz ZXQ7CisKKwlpbnQJCXNyY19mZDsKKwlpbnQJCWRzdF9mZDsKKworCWNoYXIJCSAgICpzcmNfYnVm OworCXNzaXplX3QJCQlzcmNfbGVuOworCXNzaXplX3QJCQlzcmNfYnVmX29mZnNldDsKKwlQR0Fs aWduZWRCbG9jawlkc3RfYmxvY2s7CisJUGFnZQkJCXBhZ2UgPSBkc3RfYmxvY2suZGF0YTsKKwlp bnQJCQkJbGVuX3RvX2NvcHk7CisKKwlzZWdfbmFtZV9sZW4gPSBzdHJsZW4oc3JjX2ZpbGUpOwor CXNyY19zZWdubyA9IChpbnQpIHN0cnRvbChzcmNfZmlsZSwgTlVMTCwgMTYpOworCXNyY19wYWdl bm8gPSBzcmNfc2Vnbm8gKiBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOworCisJZHN0X3BhZ2VubyA9 IHNyY19wYWdlbm8gKiBCTENLU1ogLyBTaXplT2ZQYWdlQ29udGVudHM7CisJZHN0X29mZnNldCA9 IHNyY19wYWdlbm8gKiBCTENLU1ogLSBkc3RfcGFnZW5vICogU2l6ZU9mUGFnZUNvbnRlbnRzOwor CWRzdF9zZWdubyAgPSBkc3RfcGFnZW5vIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKKworCXNu cHJpbnRmKHNyYywgc2l6ZW9mKHNyYyksICIlcy8lcyIsIHNyY19kaXIsIHNyY19maWxlKTsKKwlz bnByaW50Zihkc3QsIHNpemVvZihkc3QpLCAiJXMvJTAqWCIsIGRzdF9kaXIsIHNlZ19uYW1lX2xl biwgZHN0X3NlZ25vKTsKKworCXNyY19idWYgPSBwZ19tYWxsb2MoU0VHTUVOVF9TSVpFKTsKKwlp ZiAoKHNyY19mZCA9IG9wZW4oc3JjLCBPX1JET05MWSB8IFBHX0JJTkFSWSwgMCkpID09IC0xKQor CQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVzIiwgc3JjLCBzdHJlcnJv cihlcnJubykpOworCWlmICgoc3JjX2xlbiA9IHJlYWQoc3JjX2ZkLCBzcmNfYnVmLCBTRUdNRU5U X1NJWkUpKSA9PSAtMSkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAl cyIsIHNyYywgc3RyZXJyb3IoZXJybm8pKTsKKworCWlmICgoZHN0X2ZkID0gb3Blbihkc3QsIE9f UkRXUiB8IE9fQ1JFQVQgfCBQR19CSU5BUlksIFNfSVJVU1IgfCBTX0lXVVNSKSkgPT0gLTEpCisJ CXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJXMiLCBkc3QsIHN0cmVycm9y KGVycm5vKSk7CisJaWYgKGZ0cnVuY2F0ZShkc3RfZmQsIFNFR01FTlRfU0laRSkgPT0gLTEpCisJ CXBnX2ZhdGFsKCJjb3VsZCBub3QgdHJ1bmNhdGUgZmlsZSBcIiVzXCI6ICVzIiwgZHN0LCBzdHJl cnJvcihlcnJubykpOworCisJLyoKKwkgKiBSZWFkIHRoZSBkZXN0aW5hdGlvbiBwYWdlIGF0IGRz dF9wYWdlbm8gaW50byB0aGUgYnVmZmVyLiAgVGhlIHBhZ2UgbWF5IGNvbnRhaW4KKwkgKiBkYXRh IGZyb20gdGhlIHByZXZpb3VzIHNvdXJjZSBzZWdtZW50LiAgSW5pdGlhbGl6ZSB0aGUgcGFnZSBp ZiB0aGUgcGFnZSBpcyBuZXcuCisJICovCisJaWYgKGxzZWVrKGRzdF9mZCwgKGRzdF9wYWdlbm8g JSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UKSAqIEJMQ0tTWiwgU0VFS19TRVQpID09IC0xKQorCQlw Z19mYXRhbCgiY291bGQgbm90IHNlZWsgaW4gZmlsZSBcIiVzXCI6ICVzIiwgZHN0LCBzdHJlcnJv cihlcnJubykpOworCWlmIChyZWFkKGRzdF9mZCwgcGFnZSwgQkxDS1NaKSA9PSAtMSkKKwkJcGdf ZmF0YWwoImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlcyIsIGRzdCwgc3RyZXJyb3IoZXJy bm8pKTsKKwlpZiAoUGFnZUlzTmV3KHBhZ2UpKQorCQlQYWdlSW5pdFNMUlUocGFnZSwgQkxDS1Na LCAwKTsKKworCS8qCisJICogUmV3aW5kIHRoZSBmaWxlIHBvc2l0aW9uLCBzbyB0aGUgZmlyc3Qg d3JpdGUgd2lsbCBvdmVyd3JpdGUgdGhlIHBhZ2UuCisJICovCisJaWYgKGxzZWVrKGRzdF9mZCwg KGRzdF9wYWdlbm8gJSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UKSAqIEJMQ0tTWiwgU0VFS19TRVQp ID09IC0xKQorCQlwZ19mYXRhbCgiY291bGQgbm90IHNlZWsgaW4gZmlsZSBcIiVzXCI6ICVzIiwg ZHN0LCBzdHJlcnJvcihlcnJubykpOworCisJc3JjX2J1Zl9vZmZzZXQgPSAwOworCXdoaWxlIChz cmNfYnVmX29mZnNldCA8IHNyY19sZW4pCisJeworCQlsZW5fdG9fY29weSA9IE1pbihzcmNfbGVu IC0gc3JjX2J1Zl9vZmZzZXQsIFNpemVPZlBhZ2VDb250ZW50cyAtIGRzdF9vZmZzZXQpOworCQlt ZW1jcHkoUGFnZUdldENvbnRlbnRzKHBhZ2UpICsgZHN0X29mZnNldCwgc3JjX2J1ZiArIHNyY19i dWZfb2Zmc2V0LCBsZW5fdG9fY29weSk7CisJCXNyY19idWZfb2Zmc2V0ICs9IGxlbl90b19jb3B5 OworCisJCWlmIChuZXdfY2x1c3Rlci5jb250cm9sZGF0YS5kYXRhX2NoZWNrc3VtX3ZlcnNpb24g PiAwKQorCQkJKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfY2hlY2tzdW0gPSBwZ19jaGVja3N1bV9w YWdlKHBhZ2UsIGRzdF9wYWdlbm8pOworCQlpZiAod3JpdGUoZHN0X2ZkLCBwYWdlLCBCTENLU1op ID09IC0xKQorCQkJcGdfZmF0YWwoImNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJXMiLCBk c3QsIHN0cmVycm9yKGVycm5vKSk7CisKKwkJZHN0X3BhZ2VubysrOworCQlkc3Rfb2Zmc2V0ID0g MDsKKwkJUGFnZUluaXRTTFJVKHBhZ2UsIEJMQ0tTWiwgMCk7CisKKyAgICAgICAgLyoKKwkJICog U3dpdGNoIHNlZ21lbnRzIGlmIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzZWdt ZW50LgorCQkgKi8KKwkJaWYgKGRzdF9wYWdlbm8gJSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UID09 IDApCisJCXsKKwkJCWlmIChmc3luYyhkc3RfZmQpID09IC0xKQorCQkJCXBnX2ZhdGFsKCJjb3Vs ZCBub3QgZnN5bmMgZmlsZSBcIiVzXCI6ICVzIiwgZHN0LCBzdHJlcnJvcihlcnJubykpOworCQkJ aWYgKGNsb3NlKGRzdF9mZCkgPT0gLTEpCisJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBjbG9zZSBm aWxlIFwiJXNcIjogJXMiLCBkc3QsIHN0cmVycm9yKGVycm5vKSk7CisKKwkJCWRzdF9zZWdubysr OworCQkJc25wcmludGYoZHN0LCBzaXplb2YoZHN0KSwgIiVzLyUwKlgiLCBkc3RfZGlyLCBzZWdf bmFtZV9sZW4sIGRzdF9zZWdubyk7CisJCQlpZiAoKGRzdF9mZCA9IG9wZW4oZHN0LCBPX1JEV1Ig fCBPX0NSRUFUIHwgUEdfQklOQVJZLCBTX0lSVVNSIHwgU19JV1VTUikpID09IC0xKQorCQkJCXBn X2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJXMiLCBkc3QsIHN0cmVycm9yKGVy cm5vKSk7CisJCQlpZiAoZnRydW5jYXRlKGRzdF9mZCwgU0VHTUVOVF9TSVpFKSA9PSAtMSkKKwkJ CQlwZ19mYXRhbCgiY291bGQgbm90IHRydW5jYXRlIGZpbGUgXCIlc1wiOiAlcyIsIGRzdCwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJfQorCX0KKworCWlmIChmc3luYyhkc3RfZmQpID09IC0xKQorCQlw Z19mYXRhbCgiY291bGQgbm90IGZzeW5jIGZpbGUgXCIlc1wiOiAlcyIsIGRzdCwgc3RyZXJyb3Io ZXJybm8pKTsKKwlpZiAoY2xvc2UoZHN0X2ZkKSA9PSAtMSkKKwkJcGdfZmF0YWwoImNvdWxkIG5v dCBjbG9zZSBmaWxlIFwiJXNcIjogJXMiLCBkc3QsIHN0cmVycm9yKGVycm5vKSk7CisKKwlwZ19m cmVlKHNyY19idWYpOworCWNsb3NlKHNyY19mZCk7Cit9CisKK3ZvaWQKK3VwZ3JhZGVfeGFjdF9j YWNoZShjb25zdCBjaGFyICpzcmNfc3ViZGlyLCBjb25zdCBjaGFyICpkc3Rfc3ViZGlyKQorewor CWNoYXIJc3JjX2RpcltNQVhQR1BBVEhdOworCWNoYXIJZHN0X2RpcltNQVhQR1BBVEhdOworCisJ c3RydWN0IGRpcmVudAkgICoqc3JjX3NlZ21lbnRfZmlsZXM7CisJaW50CQkJCQludW1fZmlsZXM7 CisJaW50CQkJCQlpOworCisJc25wcmludGYoc3JjX2Rpciwgc2l6ZW9mKHNyY19kaXIpLCAiJXMv JXMiLCBvbGRfY2x1c3Rlci5wZ2RhdGEsIHNyY19zdWJkaXIpOworCXNucHJpbnRmKGRzdF9kaXIs IHNpemVvZihkc3RfZGlyKSwgIiVzLyVzIiwgbmV3X2NsdXN0ZXIucGdkYXRhLCBkc3Rfc3ViZGly KTsKKworICAgIG51bV9maWxlcyA9IHNjYW5kaXIoc3JjX2RpciwgJnNyY19zZWdtZW50X2ZpbGVz LCBzZWdtZW50X2ZpbGVfZmlsdGVyLCBzZWdtZW50X2ZpbGVfY29tcGFyZSk7CisgICAgaWYgKG51 bV9maWxlcyA9PSAtMSkKKyAgICAgICAgcGdfZmF0YWwoImNvdWxkIG5vdCBzY2FuIGRpcmVjdG9y eSBcIiVzXCI6ICVzIiwgc3JjX2Rpciwgc3RyZXJyb3IoZXJybm8pKTsKKworCWZvciAoaSA9IDA7 IGkgPCBudW1fZmlsZXM7IGkrKykKKwl7CisJCXVwZ3JhZGVfZmlsZShzcmNfZGlyLCBzcmNfc2Vn bWVudF9maWxlc1tpXS0+ZF9uYW1lLCBkc3RfZGlyKTsKKwkJZnJlZShzcmNfc2VnbWVudF9maWxl c1tpXSk7CisJfQorCWZyZWUoc3JjX3NlZ21lbnRfZmlsZXMpOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYyBiL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdy YWRlLmMKaW5kZXggMzk2MGFmNDAzNi4uMmI3ZDAxMDU4ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z191cGdyYWRlL3BnX3VwZ3JhZGUuYworKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFk ZS5jCkBAIC02NjAsMTQgKzY2MCwyMyBAQCBjb3B5X3N1YmRpcl9maWxlcyhjb25zdCBjaGFyICpv bGRfc3ViZGlyLCBjb25zdCBjaGFyICpuZXdfc3ViZGlyKQogc3RhdGljIHZvaWQKIGNvcHlfeGFj dF94bG9nX3hpZCh2b2lkKQogeworCWJvb2wJc2xydV9oZWFkZXJfY2hhbmdlZCA9IGZhbHNlOwor CiAJLyoKIAkgKiBDb3B5IG9sZCBjb21taXQgbG9ncyB0byBuZXcgZGF0YSBkaXIuIHBnX2Nsb2cg aGFzIGJlZW4gcmVuYW1lZCB0bwogCSAqIHBnX3hhY3QgaW4gcG9zdC0xMCBjbHVzdGVycy4KIAkg Ki8KLQljb3B5X3N1YmRpcl9maWxlcyhHRVRfTUFKT1JfVkVSU0lPTihvbGRfY2x1c3Rlci5tYWpv cl92ZXJzaW9uKSA8PSA5MDYgPwotCQkJCQkgICJwZ19jbG9nIiA6ICJwZ194YWN0IiwKLQkJCQkJ ICBHRVRfTUFKT1JfVkVSU0lPTihuZXdfY2x1c3Rlci5tYWpvcl92ZXJzaW9uKSA8PSA5MDYgPwot CQkJCQkgICJwZ19jbG9nIiA6ICJwZ194YWN0Iik7CisJY2hhcgkqeGFjdF9vbGRfZGlyID0gR0VU X01BSk9SX1ZFUlNJT04ob2xkX2NsdXN0ZXIubWFqb3JfdmVyc2lvbikgPD0gOTA2ID8gInBnX2Ns b2ciIDogInBnX3hhY3QiOworCWNoYXIJKnhhY3RfbmV3X2RpciA9IEdFVF9NQUpPUl9WRVJTSU9O KG5ld19jbHVzdGVyLm1ham9yX3ZlcnNpb24pIDw9IDkwNiA/ICJwZ19jbG9nIiA6ICJwZ194YWN0 IjsKKworCWlmIChuZXdfY2x1c3Rlci5jb250cm9sZGF0YS5jYXRfdmVyID49IFNMUlVfUEFHRV9I RUFERVJfQ0FUX1ZFUiAmJgorCQlvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jYXRfdmVyIDwgU0xS VV9QQUdFX0hFQURFUl9DQVRfVkVSKQorCQlzbHJ1X2hlYWRlcl9jaGFuZ2VkID0gdHJ1ZTsKKwor CWlmIChzbHJ1X2hlYWRlcl9jaGFuZ2VkKQorCQl1cGdyYWRlX3hhY3RfY2FjaGUoeGFjdF9vbGRf ZGlyLCB4YWN0X25ld19kaXIpOworCWVsc2UKKwkJY29weV9zdWJkaXJfZmlsZXMoeGFjdF9vbGRf ZGlyLCB4YWN0X25ld19kaXIpOwogCiAJcHJlcF9zdGF0dXMoIlNldHRpbmcgb2xkZXN0IFhJRCBm b3IgbmV3IGNsdXN0ZXIiKTsKIAlleGVjX3Byb2coVVRJTElUWV9MT0dfRklMRSwgTlVMTCwgdHJ1 ZSwgdHJ1ZSwKQEAgLTcwMiw3ICs3MTEsOCBAQCBjb3B5X3hhY3RfeGxvZ194aWQodm9pZCkKIAkg KiBzZXJ2ZXIgZG9lc24ndCBhdHRlbXB0IHRvIHJlYWQgbXVsdGlzIG9sZGVyIHRoYW4gdGhlIGN1 dG9mZiB2YWx1ZS4KIAkgKi8KIAlpZiAob2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2F0X3ZlciA+ PSBNVUxUSVhBQ1RfRk9STUFUQ0hBTkdFX0NBVF9WRVIgJiYKLQkJbmV3X2NsdXN0ZXIuY29udHJv bGRhdGEuY2F0X3ZlciA+PSBNVUxUSVhBQ1RfRk9STUFUQ0hBTkdFX0NBVF9WRVIpCisJCW5ld19j bHVzdGVyLmNvbnRyb2xkYXRhLmNhdF92ZXIgPj0gTVVMVElYQUNUX0ZPUk1BVENIQU5HRV9DQVRf VkVSICYmCisJCSFzbHJ1X2hlYWRlcl9jaGFuZ2VkKQogCXsKIAkJY29weV9zdWJkaXJfZmlsZXMo InBnX211bHRpeGFjdC9vZmZzZXRzIiwgInBnX211bHRpeGFjdC9vZmZzZXRzIik7CiAJCWNvcHlf c3ViZGlyX2ZpbGVzKCJwZ19tdWx0aXhhY3QvbWVtYmVycyIsICJwZ19tdWx0aXhhY3QvbWVtYmVy cyIpOwpAQCAtNzIyLDcgKzczMiw4IEBAIGNvcHlfeGFjdF94bG9nX3hpZCh2b2lkKQogCQkJCSAg bmV3X2NsdXN0ZXIucGdkYXRhKTsKIAkJY2hlY2tfb2soKTsKIAl9Ci0JZWxzZSBpZiAobmV3X2Ns dXN0ZXIuY29udHJvbGRhdGEuY2F0X3ZlciA+PSBNVUxUSVhBQ1RfRk9STUFUQ0hBTkdFX0NBVF9W RVIpCisJZWxzZSBpZiAobmV3X2NsdXN0ZXIuY29udHJvbGRhdGEuY2F0X3ZlciA+PSBNVUxUSVhB Q1RfRk9STUFUQ0hBTkdFX0NBVF9WRVIgfHwKKwkJCSBzbHJ1X2hlYWRlcl9jaGFuZ2VkKQogCXsK IAkJLyoKIAkJICogUmVtb3ZlIG9mZnNldHMvMDAwMCBmaWxlIGNyZWF0ZWQgYnkgaW5pdGRiIHRo YXQgbm8gbG9uZ2VyIG1hdGNoZXMKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191 cGdyYWRlLmggYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCmluZGV4IGE3MTBmMzI1 ZGUuLjIyMTg2ZWE3MTIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRl LmgKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaApAQCAtMTE1LDYgKzExNSwx MSBAQCBleHRlcm4gY2hhciAqb3V0cHV0X2ZpbGVzW107CiAgKi8KICNkZWZpbmUgTVVMVElYQUNU X0ZPUk1BVENIQU5HRV9DQVRfVkVSIDIwMTMwMTIzMQogCisvKgorICogQSBwYWdlIGhlYWRlciB3 YXMgYWRkZWQgdG8gZWFjaCBTTFJVIHBhZ2UgaW4gMTcuMC4KKyAqLworI2RlZmluZSBTTFJVX1BB R0VfSEVBREVSX0NBVF9WRVIgMjAyMzEyMDkxCisKIC8qCiAgKiBsYXJnZSBvYmplY3QgY2h1bmsg c2l6ZSBhZGRlZCB0byBwZ19jb250cm9sZGF0YSwKICAqIGNvbW1pdCA1ZjkzYzM3ODA1ZTc0ODU0 ODg0ODA5MTZiNDU4NWUwOThkM2NjODgzCkBAIC00MDUsNiArNDEwLDcgQEAgdm9pZAkJcmV3cml0 ZVZpc2liaWxpdHlNYXAoY29uc3QgY2hhciAqZnJvbWZpbGUsIGNvbnN0IGNoYXIgKnRvZmlsZSwK IAkJCQkJCQkJIGNvbnN0IGNoYXIgKnNjaGVtYU5hbWUsIGNvbnN0IGNoYXIgKnJlbE5hbWUpOwog dm9pZAkJY2hlY2tfZmlsZV9jbG9uZSh2b2lkKTsKIHZvaWQJCWNoZWNrX2hhcmRfbGluayh2b2lk KTsKK3ZvaWQJCXVwZ3JhZGVfeGFjdF9jYWNoZShjb25zdCBjaGFyICpzcmNfc3ViZGlyLCBjb25z dCBjaGFyICpkc3Rfc3ViZGlyKTsKIAogLyogZm9wZW5fcHJpdigpIGlzIG5vIGxvbmdlciBkaWZm ZXJlbnQgZnJvbSBmb3BlbigpICovCiAjZGVmaW5lIGZvcGVuX3ByaXYocGF0aCwgbW9kZSkJZm9w ZW4ocGF0aCwgbW9kZSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmggYi9z cmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oCmluZGV4IDA5MWUyMjAyYzkuLjI0NzMzMTY2YjggMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3NscnUuaApAQCAtNjgsMTcgKzY4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgU2xydVNoYXJlZERh dGEKIAlpbnQJCSAgICpwYWdlX2xydV9jb3VudDsKIAlMV0xvY2tQYWRkZWQgKmJ1ZmZlcl9sb2Nr czsKIAotCS8qCi0JICogT3B0aW9uYWwgYXJyYXkgb2YgV0FMIGZsdXNoIExTTnMgYXNzb2NpYXRl ZCB3aXRoIGVudHJpZXMgaW4gdGhlIFNMUlUKLQkgKiBwYWdlcy4gIElmIG5vdCB6ZXJvL05VTEws IHdlIG11c3QgZmx1c2ggV0FMIGJlZm9yZSB3cml0aW5nIHBhZ2VzICh0cnVlCi0JICogZm9yIHBn X3hhY3QsIGZhbHNlIGZvciBtdWx0aXhhY3QsIHBnX3N1YnRyYW5zLCBwZ19ub3RpZnkpLiAgZ3Jv dXBfbHNuW10KLQkgKiBoYXMgbHNuX2dyb3Vwc19wZXJfcGFnZSBlbnRyaWVzIHBlciBidWZmZXIg c2xvdCwgZWFjaCBjb250YWluaW5nIHRoZQotCSAqIGhpZ2hlc3QgTFNOIGtub3duIGZvciBhIGNv bnRpZ3VvdXMgZ3JvdXAgb2YgU0xSVSBlbnRyaWVzIG9uIHRoYXQgc2xvdCdzCi0JICogcGFnZS4K LQkgKi8KLQlYTG9nUmVjUHRyICpncm91cF9sc247Ci0JaW50CQkJbHNuX2dyb3Vwc19wZXJfcGFn ZTsKLQogCS8qLS0tLS0tLS0tLQogCSAqIFdlIG1hcmsgYSBwYWdlICJtb3N0IHJlY2VudGx5IHVz ZWQiIGJ5IHNldHRpbmcKIAkgKgkJcGFnZV9scnVfY291bnRbc2xvdG5vXSA9ICsrY3VyX2xydV9j b3VudDsKQEAgLTE0Nyw4ICsxMzYsOCBAQCB0eXBlZGVmIHN0cnVjdCBTbHJ1Q3RsRGF0YQogdHlw ZWRlZiBTbHJ1Q3RsRGF0YSAqU2xydUN0bDsKIAogCi1leHRlcm4gU2l6ZSBTaW1wbGVMcnVTaG1l bVNpemUoaW50IG5zbG90cywgaW50IG5sc25zKTsKLWV4dGVybiB2b2lkIFNpbXBsZUxydUluaXQo U2xydUN0bCBjdGwsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuc2xvdHMsIGludCBubHNucywKK2V4 dGVybiBTaXplIFNpbXBsZUxydVNobWVtU2l6ZShpbnQgbnNsb3RzKTsKK2V4dGVybiB2b2lkIFNp bXBsZUxydUluaXQoU2xydUN0bCBjdGwsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuc2xvdHMsCiAJ CQkJCQkgIExXTG9jayAqY3RsbG9jaywgY29uc3QgY2hhciAqc3ViZGlyLCBpbnQgdHJhbmNoZV9p ZCwKIAkJCQkJCSAgU3luY1JlcXVlc3RIYW5kbGVyIHN5bmNfaGFuZGxlciwKIAkJCQkJCSAgYm9v bCBsb25nX3NlZ21lbnRfbmFtZXMpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9j YXR2ZXJzaW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAppbmRleCBhMDZh OGYwYjIzLi5hZjVhYWRlZDU2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZl cnNpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaApAQCAtNTcsNiAr NTcsNiBAQAogICovCiAKIC8qCQkJCQkJCXl5eXltbWRkTiAqLwotI2RlZmluZSBDQVRBTE9HX1ZF UlNJT05fTk8JMjAyMzEyMDcxCisjZGVmaW5lIENBVEFMT0dfVkVSU0lPTl9OTwkyMDIzMTIxOTEK IAogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1ZnBhZ2UuaCBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvYnVmcGFnZS5oCmluZGV4IDQyNGVjYmEwMjguLjI1MWQ5NTIzZmEg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmcGFnZS5oCisrKyBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvYnVmcGFnZS5oCkBAIC0yMDEsNiArMjAxLDcgQEAgdHlwZWRlZiBQYWdlSGVh ZGVyRGF0YSAqUGFnZUhlYWRlcjsKICAqIGhhbmRsaW5nIHBhZ2VzLgogICovCiAjZGVmaW5lIFBH X1BBR0VfTEFZT1VUX1ZFUlNJT04JCTQKKyNkZWZpbmUgUEdfU0xSVV9QQUdFX0xBWU9VVF9WRVJT SU9OCTEKICNkZWZpbmUgUEdfREFUQV9DSEVDS1NVTV9WRVJTSU9OCTEKIAogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpA QCAtMjU3LDYgKzI1OCwxMSBAQCBQYWdlR2V0Q29udGVudHMoUGFnZSBwYWdlKQogCXJldHVybiAo Y2hhciAqKSBwYWdlICsgTUFYQUxJR04oU2l6ZU9mUGFnZUhlYWRlckRhdGEpOwogfQogCisvKgor ICogU3BhY2UgYXZhaWxhYmxlIGZvciBzdG9yaW5nIHBhZ2UgY29udGVudHMuCisgKi8KKyNkZWZp bmUgU2l6ZU9mUGFnZUNvbnRlbnRzCShCTENLU1ogLSBNQVhBTElHTihTaXplT2ZQYWdlSGVhZGVy RGF0YSkpCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlmdW5jdGlvbnMgdG8gYWNjZXNzIHBh Z2Ugc2l6ZSBpbmZvCiAgKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC00ODYsNiArNDkyLDcgQEAgU3Rh dGljQXNzZXJ0RGVjbChCTENLU1ogPT0gKChCTENLU1ogLyBzaXplb2Yoc2l6ZV90KSkgKiBzaXpl b2Yoc2l6ZV90KSksCiAJCQkJICJCTENLU1ogaGFzIHRvIGJlIGEgbXVsdGlwbGUgb2Ygc2l6ZW9m KHNpemVfdCkiKTsKIAogZXh0ZXJuIHZvaWQgUGFnZUluaXQoUGFnZSBwYWdlLCBTaXplIHBhZ2VT aXplLCBTaXplIHNwZWNpYWxTaXplKTsKK2V4dGVybiB2b2lkIFBhZ2VJbml0U0xSVShQYWdlIHBh Z2UsIFNpemUgcGFnZVNpemUsIFNpemUgc3BlY2lhbFNpemUpOwogZXh0ZXJuIGJvb2wgUGFnZUlz VmVyaWZpZWRFeHRlbmRlZChQYWdlIHBhZ2UsIEJsb2NrTnVtYmVyIGJsa25vLCBpbnQgZmxhZ3Mp OwogZXh0ZXJuIE9mZnNldE51bWJlciBQYWdlQWRkSXRlbUV4dGVuZGVkKFBhZ2UgcGFnZSwgSXRl bSBpdGVtLCBTaXplIHNpemUsCiAJCQkJCQkJCQkJT2Zmc2V0TnVtYmVyIG9mZnNldE51bWJlciwg aW50IGZsYWdzKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zbHJ1L3Rlc3Rf c2xydS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdGVzdF9zbHJ1LmMKaW5kZXggZDBm Yjk0NDRlOC4uYWE4YTI5ZDkyZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Ns cnUvdGVzdF9zbHJ1LmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdGVzdF9zbHJ1 LmMKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc2xydS5oIgogI2luY2x1ZGUg ImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9idWZwYWdlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgpAQCAtNzYsOCArNzcsOCBAQCB0 ZXN0X3NscnVfcGFnZV93cml0ZShQR19GVU5DVElPTl9BUkdTKQogCVRlc3RTbHJ1Q3RsLT5zaGFy ZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPSBTTFJVX1BBR0VfVkFMSUQ7CiAKIAkvKiB3cml0ZSBn aXZlbiBkYXRhIHRvIHRoZSBwYWdlLCB1cCB0byB0aGUgbGltaXQgb2YgdGhlIHBhZ2UgKi8KLQlz dHJuY3B5KFRlc3RTbHJ1Q3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10sIGRhdGEsCi0J CQlCTENLU1ogLSAxKTsKKwlzdHJuY3B5KFBhZ2VHZXRDb250ZW50cyhUZXN0U2xydUN0bC0+c2hh cmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dKSwgZGF0YSwKKwkJCVNpemVPZlBhZ2VDb250ZW50cyAt IDEpOwogCiAJU2ltcGxlTHJ1V3JpdGVQYWdlKFRlc3RTbHJ1Q3RsLCBzbG90bm8pOwogCUxXTG9j a1JlbGVhc2UoVGVzdFNMUlVMb2NrKTsKQEAgLTEwNCw3ICsxMDUsNyBAQCB0ZXN0X3NscnVfcGFn ZV9yZWFkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJTFdMb2NrQWNxdWlyZShUZXN0U0xSVUxvY2ssIExX X0VYQ0xVU0lWRSk7CiAJc2xvdG5vID0gU2ltcGxlTHJ1UmVhZFBhZ2UoVGVzdFNscnVDdGwsIHBh Z2VubywKIAkJCQkJCQkgICB3cml0ZV9vaywgSW52YWxpZFRyYW5zYWN0aW9uSWQpOwotCWRhdGEg PSAoY2hhciAqKSBUZXN0U2xydUN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dOworCWRh dGEgPSAoY2hhciAqKSBQYWdlR2V0Q29udGVudHMoVGVzdFNscnVDdGwtPnNoYXJlZC0+cGFnZV9i dWZmZXJbc2xvdG5vXSk7CiAJTFdMb2NrUmVsZWFzZShUZXN0U0xSVUxvY2spOwogCiAJUEdfUkVU VVJOX1RFWFRfUChjc3RyaW5nX3RvX3RleHQoZGF0YSkpOwpAQCAtMTIyLDcgKzEyMyw3IEBAIHRl c3Rfc2xydV9wYWdlX3JlYWRvbmx5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQkJCQkJcGFnZW5v LAogCQkJCQkJCQkJCUludmFsaWRUcmFuc2FjdGlvbklkKTsKIAlBc3NlcnQoTFdMb2NrSGVsZEJ5 TWUoVGVzdFNMUlVMb2NrKSk7Ci0JZGF0YSA9IChjaGFyICopIFRlc3RTbHJ1Q3RsLT5zaGFyZWQt PnBhZ2VfYnVmZmVyW3Nsb3Rub107CisJZGF0YSA9IChjaGFyICopIFBhZ2VHZXRDb250ZW50cyhU ZXN0U2xydUN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dKTsKIAlMV0xvY2tSZWxlYXNl KFRlc3RTTFJVTG9jayk7CiAKIAlQR19SRVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4dChkYXRh KSk7CkBAIC0yMDIsNyArMjAzLDcgQEAgdGVzdF9zbHJ1X3NobWVtX3JlcXVlc3Qodm9pZCkKIAkJ cHJldl9zaG1lbV9yZXF1ZXN0X2hvb2soKTsKIAogCS8qIHJlc2VydmUgc2hhcmVkIG1lbW9yeSBm b3IgdGhlIHRlc3QgU0xSVSAqLwotCVJlcXVlc3RBZGRpblNobWVtU3BhY2UoU2ltcGxlTHJ1U2ht ZW1TaXplKE5VTV9URVNUX0JVRkZFUlMsIDApKTsKKwlSZXF1ZXN0QWRkaW5TaG1lbVNwYWNlKFNp bXBsZUxydVNobWVtU2l6ZShOVU1fVEVTVF9CVUZGRVJTKSk7CiB9CiAKIHN0YXRpYyBib29sCkBA IC0yMzgsNyArMjM5LDcgQEAgdGVzdF9zbHJ1X3NobWVtX3N0YXJ0dXAodm9pZCkKIAogCVRlc3RT bHJ1Q3RsLT5QYWdlUHJlY2VkZXMgPSB0ZXN0X3NscnVfcGFnZV9wcmVjZWRlc19sb2dpY2FsbHk7 CiAJU2ltcGxlTHJ1SW5pdChUZXN0U2xydUN0bCwgIlRlc3RTTFJVIiwKLQkJCQkgIE5VTV9URVNU X0JVRkZFUlMsIDAsIFRlc3RTTFJVTG9jaywgc2xydV9kaXJfbmFtZSwKKwkJCQkgIE5VTV9URVNU X0JVRkZFUlMsIFRlc3RTTFJVTG9jaywgc2xydV9kaXJfbmFtZSwKIAkJCQkgIHRlc3RfdHJhbmNo ZV9pZCwgU1lOQ19IQU5ETEVSX05PTkUsIGxvbmdfc2VnbWVudF9uYW1lcyk7CiB9CiAK --_002_628CFBEFDF564D9AA2F10A417848B6B6ebaycom_--