From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 80BCAC433F5 for ; Fri, 8 Oct 2021 18:28:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 54A0461038 for ; Fri, 8 Oct 2021 18:28:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231328AbhJHSaU (ORCPT ); Fri, 8 Oct 2021 14:30:20 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:7198 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S231245AbhJHSaS (ORCPT ); Fri, 8 Oct 2021 14:30:18 -0400 Received: from pps.filterd (m0089730.ppops.net [127.0.0.1]) by m0089730.ppops.net (8.16.1.2/8.16.1.2) with SMTP id 198FFlZD006442 for ; Fri, 8 Oct 2021 11:28:22 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=facebook; bh=qqEOVvRA/52I878HJ2voIZrpGCd99XHi0O1N8yA61aM=; b=pL6RNih+axhpebOKbgzSap+LwX8xGARP8GrLAU0uFDxX9Lvazu7/HB593BXsg7WIweUh HziV4ehgNygGFTKB6EmsFaRDqRy5VLZ4zYxeFhL1TzoCyve3DqK8QXH9KMBu57JyrLJV 2+d7OSTXxrvDZInOHV/zf45bww5Dic+j67Q= Received: from mail.thefacebook.com ([163.114.132.120]) by m0089730.ppops.net with ESMTP id 3bjrfj1fq7-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 08 Oct 2021 11:28:22 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (100.104.98.9) by o365-in.thefacebook.com (100.104.94.198) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.14; Fri, 8 Oct 2021 11:28:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kSBO1liI1NsWhj9FeT6wcsGsqdZi71hNdeZtxTQWldqstZl4uNhRO3EEUcXnT3gi7eCBmc+muTBthSHwYzJx8LHdh8yobPRrFxEaSbVPoyUu4L3NxL6a31amfFb48jeoy3TQ+Qy0fvHkE8jhfRI9hgWTk76BEfB7xJcgddNQew/beXfLR9OUizFgljsNBvaZxVku4kYYed+pVTQdYi1MRyZu6cE3PtG9qPzLdj7i9zht9+dtiUU0nCsBp4awXSMaMfdDx1wkgMpdpTXT650CyGAG4XGRp3NLxn+bsR2AUyrnYW9SsCrBXiNabPpRk+TT7bieu0ya/KSbhThdyZShbA== 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=qqEOVvRA/52I878HJ2voIZrpGCd99XHi0O1N8yA61aM=; b=iNE+QyKyLS3bF6TSrJhKlZjYWq6itsGvzCuZMg7MruJp7fYU5hnl29UBCGhdyCokF20aYCup2UmoFEusNdu/B7Ag7MXWooRxC9nvKCGkEGjaWdWEhx6I13FjSQo8g8T6ulh2y3x/sYS9liiYiAojDJH9RRW4ewVcNirPaRDb/x/5XpxaZ/tZB1M3DKt/xaTro+m5MXw5dKyMXGp1EigLIc2INzmRgrqBC92cz/7wTxrZHuxiHdkZI9reN01Azf2oYGDSChBmwRPOLh0gBpvQQ2+g42uf4XvEDO6fjfr0MNtSWs1fmvKOYleFrW4RvfuVUcNDT3LNaeLsbggcDhoOlQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fb.com; dmarc=pass action=none header.from=fb.com; dkim=pass header.d=fb.com; arc=none Received: from MN2PR15MB3677.namprd15.prod.outlook.com (2603:10b6:208:183::24) by MN2PR15MB3581.namprd15.prod.outlook.com (2603:10b6:208:1b6::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.16; Fri, 8 Oct 2021 18:28:17 +0000 Received: from MN2PR15MB3677.namprd15.prod.outlook.com ([fe80::8cd5:103a:f8d9:8ebb]) by MN2PR15MB3677.namprd15.prod.outlook.com ([fe80::8cd5:103a:f8d9:8ebb%7]) with mapi id 15.20.4587.020; Fri, 8 Oct 2021 18:28:17 +0000 From: Nick Terrell To: Dan Carpenter CC: stanjo74 , "kernel-janitors@vger.kernel.org" Subject: Re: [bug report] lib: zstd: Upgrade to latest upstream zstd version 1.4.10 Thread-Topic: [bug report] lib: zstd: Upgrade to latest upstream zstd version 1.4.10 Thread-Index: AQHXvA71I5VqFid8R0CZd5Obuk4xCavJZD+AgAAIKAA= Date: Fri, 8 Oct 2021 18:28:17 +0000 Message-ID: <40E866F7-6ADC-4A19-97D3-A6F21A5F9621@fb.com> References: <20211008063704.GA5370@kili> <3809A417-00D7-496C-9D4C-2C2D324094E2@fb.com> In-Reply-To: <3809A417-00D7-496C-9D4C-2C2D324094E2@fb.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: oracle.com; dkim=none (message not signed) header.d=none;oracle.com; dmarc=none action=none header.from=fb.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9f5c302b-a942-4994-9a1b-08d98a8965d5 x-ms-traffictypediagnostic: MN2PR15MB3581: x-microsoft-antispam-prvs: x-fb-source: Internal x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +SFZjrm7LaP8QeW8gJSR3J5cpUqzsyAtP6nxH8kd3EaNgTDOi3eDHdBZmkCYGkEjwVaGBHBppKhGL3QySP91VI68NWQwCpuG3w5Y8ErpdC9tTJKERfNlLjAGu5Kq4c75ekXG6Cbti+LR4NZ1y++1R4LsnJnr2PIFLnanJJdBhFqRbEh1BsVuzLV4VtVzu7OrO+4mX/fo/0y2kAKt0wSdni3Zy3Lq8vK6CyeRQWITpjVuxOvbTh2uST4lZDCNBbGbCnKpcea9DMQ/oBZBRX+j5DEXxq1yvUK7SRKa6IodK8W12L3/e+83q0lSDzX0pxo65dmmZOEK+BWhyBjNW4RsQ6/sFJ2IT0QOS0oK9+I1HKlyW7PkukQUynyuZgaA9nz+Y8DKCS85+a0Zr4TibpyyyboQx5/kP0lS/3VQNuG7hp6quFj3wH/1rzdidzE8ndtgQqsYECodyaz3c3fGkAyHbP/2YUNnyB3hLvJWlq+adbQumXJhxpzqn1ZXHcQ0Fc5Ld+0CbIBXZLmy5K97+cVWM8+44y2/YeVYsjI0+HtcktHOjSnLFSl2az5ZbIU+4D0MCzKaY559TUrHFNlChkNx4xMOAE0tB1TQGuYggPYRejHVfKskxAIqr+uiXjyw11essLB0p2c6ucdonh3C6HkGe8kbnS327a+Nnut3JoJKbls4eEdrF+cK7K9ekqCV7niJCslld49wiw9drAUzLONP/tsDO/+F6nNlyhPG1sPHIYOgnmVxByaK1t3uQ1CjbxNeePZFJULbuVk073yMd/2XQaPrinNxe+FYxmWD8ZHljOCTH/D12rdCV9Je6pY7y96JwmTu+ygrMS9f2fMnD8+y+frjMm/t0r2mDOJcyG+JUOw= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR15MB3677.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(8676002)(6506007)(2906002)(33656002)(76116006)(91956017)(38100700002)(38070700005)(2616005)(26005)(66556008)(53546011)(186003)(316002)(6512007)(6916009)(30864003)(64756008)(66446008)(966005)(4326008)(8936002)(66476007)(508600001)(86362001)(66946007)(6486002)(83380400001)(122000001)(36756003)(5660300002)(54906003)(71200400001)(45980500001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?N1ZKY0hDb3pTTU0wOVBwOHhDeHNMbjZwdUpsa3pYT3JqMGQ0SjQ2YVF1a3p6?= =?utf-8?B?ZjNhUHA2R1g2Q0tKV0puTlVyWTllY0NOK0pLQ3JwNk5JSkZCU0VYTVBVMm4r?= =?utf-8?B?UGJ6MXAycE5yLzhRd085N2dBZ2FtUlBDZ1MxRjhlT1lrMGtFYkRIUFkxeHhi?= =?utf-8?B?U0U1NURTWjV3UitReTJ1YWRtSlFWcjE4V0FUYU5KWWg3Rko3ODlDd2FoNncy?= =?utf-8?B?Z3RxSkpFNnBsWmg1M1pmUktJdWhnM2RpVTNZYU9pUUFsNFcyM2pLNWxJWVY0?= =?utf-8?B?TGNxeXZzMWdzcjJVK0NGLzUvbWp1NGxoZ1dRKzlDSGlIQzBxUjJyYTZTUWZs?= =?utf-8?B?M3djNG8vdC9YWEszQ2M0UFI1WG1qNnJaL2xZYUhpNzdZZFVGaElYVkY1UTJs?= =?utf-8?B?RXJoMDJ3RzZNVlFvbExUMWw5SVU2c2V2MHdZRkpuSHJGWklyZ2tkR0ZOYnpj?= =?utf-8?B?M2JDWGhUaWJJSzc5VlBGRWhZcU5ielBJRVVFYzd0UVVIcGFLaDZSNlkzSEVn?= =?utf-8?B?NjEzblUzMDZqSGh6ZW0rQUJIS1d5OWFiU2F0MFhqaEJDNWZCQzZtR1d1WnRY?= =?utf-8?B?NDVCNG8vUFJtOGRuaTc1Y3RDL3Z1amxYblFySDBRREF3dC9acE4xaU1GY2dY?= =?utf-8?B?SklVMm9aSTRabmxvcEpBYjdzcmU4cGRWVm5mSzB6RWFsMENjVEVYOG1WR2pQ?= =?utf-8?B?UURMVStyOGR1bVZncVUvVlBKcURKdnNFR0RzNzZyTWcwZFJJcktOQWVZTHVU?= =?utf-8?B?a1JVZDFkUkd2N05sdWd1N1luMGlLSHNkZGRua1pUd29sY01VOTM4MDRGOEEy?= =?utf-8?B?THl2OCt2em5WalhRdVlnSFkyL1c5V2tEampkd0hiOVRNbTc5ZXVjVi9qUTI2?= =?utf-8?B?d1BRSEZNUmUwbjZEeUppZjlXQk9VZTdnT2dQWFRIUmhjVjh1RW5uUmZqZUdG?= =?utf-8?B?VWlIQmxiUjdYR1hsc1RDR09zejhQS2lQT3UrRXJSWlp2TklYNEI2K2VZUi9O?= =?utf-8?B?SWdLcys2NnlkNFNSbDA4V3JmT09EQkhSZnFEN0kwR1JMUWlqSjRwbU0vRG5a?= =?utf-8?B?YUpWQllIVGIvZzZ2TExTTmdUUk53amVONktBS3N4d0RESm1KTUlXNnBabENM?= =?utf-8?B?MmFzUXNHb3Q2NWYrT2FvUzF6RG5QNlVSejdaMWpGbnVHYm5uMVUvOUdDTFlx?= =?utf-8?B?Rm1YZmdpYS9lRlZnV1Baak9XSVRXYktXM1NZSU1hTEE2R1p4dVBScUVpTG9J?= =?utf-8?B?NEdNbUFZdFo2WG5xTlo0U0loaWJDZE9KNmJ2SmZFRHRYcGxqb3ludWNvdTM5?= =?utf-8?B?NzhPYUZQM205SGdHNHdHRFI5MXM1a2NqZ1hNbTFjbXFtaytHemcwbjdYb01Y?= =?utf-8?B?ZXpDdlIzSzl6RU9hRkFENlo3THRsV2JoUVJSbU9pYU55c1gxQmJUU1FmbUFN?= =?utf-8?B?dGNndkR2aGtvYjN5TGg2eksybW1qS0VWRE9uNXpQTjdyTTJuMENvNWVOSkRJ?= =?utf-8?B?bXpPTWg0N25jU1BQMEF6Uk5zSWxpb2hKVkw2QWtrejNEdXllci9XUDhJQzhm?= =?utf-8?B?bjMwbVZBcEQycWc2UXNCOTVKMGhqeVcrSHF4cTZMcWhBbksycjVyai9wM0lm?= =?utf-8?B?ODNxVFFOOVBSc0JtYmhIZHYvbXlpMHMwNmNZdjZTdjkrUEREbjVhV0txQXdZ?= =?utf-8?B?dUdiQTNjT25FbWdKVVJ0ZmZEbUo5dWY2MVZ5MWtXc3VmZEtITGRLSVltY3lk?= =?utf-8?Q?7UelXh6jneJvmtYp7tz7hACXZdwpu/Vq3E41A1q?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR15MB3677.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9f5c302b-a942-4994-9a1b-08d98a8965d5 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Oct 2021 18:28:17.1826 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: tKRlAAZFnsTReTE50pfE2xVrpbc3COiSz/Nm+e/5HU1StjI+HnV2ZyJ6Zy11Xh0A X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR15MB3581 X-OriginatorOrg: fb.com X-Proofpoint-ORIG-GUID: OSyZ1fgUeyxFoGa8Ja7uZzapkvnRBG4z X-Proofpoint-GUID: OSyZ1fgUeyxFoGa8Ja7uZzapkvnRBG4z Content-Transfer-Encoding: base64 X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.391,FMLib:17.0.607.475 definitions=2021-10-08_05,2021-10-07_02,2020-04-07_01 X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 mlxlogscore=999 phishscore=0 impostorscore=0 spamscore=0 mlxscore=0 bulkscore=0 priorityscore=1501 adultscore=0 suspectscore=0 clxscore=1015 malwarescore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2109230001 definitions=main-2110080104 X-FB-Internal: deliver Precedence: bulk List-ID: X-Mailing-List: kernel-janitors@vger.kernel.org DQoNCj4gT24gT2N0IDgsIDIwMjEsIGF0IDEwOjU5IEFNLCBOaWNrIFRlcnJlbGwgPHRlcnJlbGxu QGZiLmNvbT4gd3JvdGU6DQo+IA0KPiANCj4gDQo+PiBPbiBPY3QgNywgMjAyMSwgYXQgMTE6Mzcg UE0sIERhbiBDYXJwZW50ZXIgPGRhbi5jYXJwZW50ZXJAb3JhY2xlLmNvbT4gd3JvdGU6DQo+PiAN Cj4+IEhlbGxvIE5pY2sgVGVycmVsbCwNCj4+IA0KPj4gSSBncmVwcGVkIHRoZSBSRUFETUUgZm9y IHpzdGQgYW5kIGl0IGRvZXNuJ3QgYXBwZWFyIHRoZXJlIGlzIGEgbWFpbGluZw0KPj4gbGlzdCB0 byBhZGQgdG8gdGhlIENDLg0KPiANCj4gVGhhbmtzIGZvciB0aGUgcmVwb3J0IERhbiEgWWVhaCwg d2UgZG9u4oCZdCBoYXZlIGEgbWFpbGluZyBsaXN0LCBidXQgd2UgdXNlIEdpdEh1YiBJc3N1ZXMu DQo+IE1pbmQgaWYgSSBvcGVuIHVwIGFuIGlzc3VlIGZvciB0aGlzIGJ1Zz8NCj4gDQo+IFRoZSBg bmJDb21wYXJlcyA9PSAtMWAgbG9va3MgbGlrZSBhIHJlYWwgYnVnLiBJdCB3b27igJl0IGNhdXNl IGluZmluaXRlIGxvb3BzLCBiZWNhdXNlIHRoZQ0KPiB0cmVlIGRhdGEgc3RydWN0dXJlIGhhcyBh IGJvdW5kZWQgZGVwdGgsIGJ1dCBpdCBjb3VsZCBjYXVzZSBsb25nZXIgZXhlY3V0aW9uIHRpbWUg dGhhbg0KPiBpbnRlbmRlZC4NCj4gDQo+IEnigJlsbCBsb29rIGludG8gaXQgYW5kIGZpeCBpdCEN Cj4gDQo+IEJlc3QsDQo+IE5pY2sNCj4gDQo+PiBUaGUgcGF0Y2ggYzY4NGI0ZTlhMzAxOiAibGli OiB6c3RkOiBVcGdyYWRlIHRvIGxhdGVzdCB1cHN0cmVhbSB6c3RkDQo+PiB2ZXJzaW9uIDEuNC4x MCIgZnJvbSBTZXAgMTEsIDIwMjAsIGxlYWRzIHRvIHRoZSBmb2xsb3dpbmcgU21hdGNoIHN0YXRp Yw0KPj4gY2hlY2tlciB3YXJuaW5nczoNCj4+IA0KPj4gbGliL3pzdGQvY29tcHJlc3MvenN0ZF9v cHQuYzo2OTUgWlNURF9pbnNlcnRCdEFuZEdldEFsbE1hdGNoZXMoKSB3YXJuOiBzaG91bGQgdGhp cyBiZSAnbmJDb21wYXJlcyA9PSAtMScNCj4+IGxpYi96c3RkL2NvbXByZXNzL3pzdGRfbGF6eS5j OjM2MCBaU1REX0RVQlRfZmluZEJlc3RNYXRjaCgpIHdhcm46IHNob3VsZCB0aGlzIGJlICduYkNv bXBhcmVzID09IC0xJw0KPj4gbGliL3pzdGQvY29tcHJlc3MvenN0ZF9sYXp5LmM6MTI2NyBaU1RE X2NvbXByZXNzQmxvY2tfbGF6eV9leHREaWN0X2dlbmVyaWMoKSB3YXJuOiBpbmNvbnNpc3RlbnQg aW5kZW50aW5nDQo+PiBsaWIvenN0ZC9jb21wcmVzcy96c3RkX2NvbXByZXNzLmM6NzI2IFpTVERf Q0N0eFBhcmFtc19zZXRQYXJhbWV0ZXIoKSB3YXJuOiBubyBsb3dlciBib3VuZCBvbiAndmFsdWUn DQo+PiBsaWIvenN0ZC9kZWNvbXByZXNzL3pzdGRfZGVjb21wcmVzcy5jOjE3NyBaU1REX2NyZWF0 ZUREaWN0SGFzaFNldCgpIHdhcm46IHZhcmlhYmxlIGRlcmVmZXJlbmNlZCBiZWZvcmUgY2hlY2sg J3JldCcgKHNlZSBsaW5lIDE3NCkNCg0KSeKAmW0gbm90IHN1cmUgaWYgeW91IHByZS1maWx0ZXJl ZCB0aGUgU21hdGNoIHJlc3VsdHMgZm9yIHRydWUgYnVncywgYnV0IEnigJltIHN1cGVyIGltcHJl c3NlZCB0aGF0IGFsbCBvZiB0aGVzZSBhcmUgdHJ1ZSBidWdzIQ0KQW5kIEkganVzdCB3YW50IHRv IHNheSB0aGFuayB5b3UgYWdhaW4gZm9yIHRoZSByZXBvcnQsIHRoaXMgaXMgdGhlIG1vc3QgdXNl ZnVsIHN0YXRpYyBhbmFseXNpcyBidWcgcmVwb3J0IEnigJl2ZSBldmVyIHNlZW4uDQpOb3JtYWxs eSB3aGVuIHBlb3BsZSBzdWJtaXQgYSBzdGF0aWMgYW5hbHlzaXMgd2FybmluZ3MsIGl0IGlzIGEg bGlzdCBvZiBnYXJiYWdlIGZhbHNlIHBvc2l0aXZlcywgYW5kIHRoZXJlIGFyZSBmYXIgdG9vIG1h bnkNCmZhbHNlIHBvc2l0aXZlcyB0byBzb3J0IHRocm91Z2ggdG8gZmluZCBhbnkgcG90ZW50aWFs IHRydWUgYnVncy4NCg0KSeKAmW0gd29ya2luZyBvbiBmaXhpbmcgdGhlc2UgdXBzdHJlYW0gbm93 IFswXVsxXVsyXS4NCg0KVGhhbmtzLA0KTmljaw0KDQpbMF0gaHR0cHM6Ly9naXRodWIuY29tL2Zh Y2Vib29rL3pzdGQvcHVsbC8yODE3DQpbMV0gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3pz dGQvcHVsbC8yODE4DQpbMl0gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3pzdGQvcHVsbC8y ODE5DQoNCj4+IGxpYi96c3RkL2NvbXByZXNzL3pzdGRfb3B0LmMNCj4+ICAgNTA4IEZPUkNFX0lO TElORV9URU1QTEFURQ0KPj4gICA1MDkgVTMyIFpTVERfaW5zZXJ0QnRBbmRHZXRBbGxNYXRjaGVz ICgNCj4+ICAgNTEwICAgICAgICAgICAgICAgICAgICAgWlNURF9tYXRjaF90KiBtYXRjaGVzLCAg IC8qIHN0b3JlIHJlc3VsdCAoZm91bmQgbWF0Y2hlcykgaW4gdGhpcyB0YWJsZSAocHJlc3VtZWQg bGFyZ2UgZW5vdWdoKSAqLw0KPj4gICA1MTEgICAgICAgICAgICAgICAgICAgICBaU1REX21hdGNo U3RhdGVfdCogbXMsDQo+PiAgIDUxMiAgICAgICAgICAgICAgICAgICAgIFUzMiogbmV4dFRvVXBk YXRlMywNCj4+ICAgNTEzICAgICAgICAgICAgICAgICAgICAgY29uc3QgQllURSogY29uc3QgaXAs IGNvbnN0IEJZVEUqIGNvbnN0IGlMaW1pdCwgY29uc3QgWlNURF9kaWN0TW9kZV9lIGRpY3RNb2Rl LA0KPj4gICA1MTQgICAgICAgICAgICAgICAgICAgICBjb25zdCBVMzIgcmVwW1pTVERfUkVQX05V TV0sDQo+PiAgIDUxNSAgICAgICAgICAgICAgICAgICAgIFUzMiBjb25zdCBsbDAsICAgLyogdGVs bHMgaWYgYXNzb2NpYXRlZCBsaXRlcmFsIGxlbmd0aCBpcyAwIG9yIG5vdC4gVGhpcyB2YWx1ZSBt dXN0IGJlIDAgb3IgMSAqLw0KPj4gICA1MTYgICAgICAgICAgICAgICAgICAgICBjb25zdCBVMzIg bGVuZ3RoVG9CZWF0LA0KPj4gICA1MTcgICAgICAgICAgICAgICAgICAgICBVMzIgY29uc3QgbWxz IC8qIHRlbXBsYXRlICovKQ0KPj4gICA1MTggew0KPj4gICA1MTkgICAgIGNvbnN0IFpTVERfY29t cHJlc3Npb25QYXJhbWV0ZXJzKiBjb25zdCBjUGFyYW1zID0gJm1zLT5jUGFyYW1zOw0KPj4gICA1 MjAgICAgIFUzMiBjb25zdCBzdWZmaWNpZW50X2xlbiA9IE1JTihjUGFyYW1zLT50YXJnZXRMZW5n dGgsIFpTVERfT1BUX05VTSAtMSk7DQo+PiAgIDUyMSAgICAgY29uc3QgQllURSogY29uc3QgYmFz ZSA9IG1zLT53aW5kb3cuYmFzZTsNCj4+ICAgNTIyICAgICBVMzIgY29uc3QgY3VyciA9IChVMzIp KGlwLWJhc2UpOw0KPj4gICA1MjMgICAgIFUzMiBjb25zdCBoYXNoTG9nID0gY1BhcmFtcy0+aGFz aExvZzsNCj4+ICAgNTI0ICAgICBVMzIgY29uc3QgbWluTWF0Y2ggPSAobWxzPT0zKSA/IDMgOiA0 Ow0KPj4gICA1MjUgICAgIFUzMiogY29uc3QgaGFzaFRhYmxlID0gbXMtPmhhc2hUYWJsZTsNCj4+ ICAgNTI2ICAgICBzaXplX3QgY29uc3QgaCAgPSBaU1REX2hhc2hQdHIoaXAsIGhhc2hMb2csIG1s cyk7DQo+PiAgIDUyNyAgICAgVTMyIG1hdGNoSW5kZXggID0gaGFzaFRhYmxlW2hdOw0KPj4gICA1 MjggICAgIFUzMiogY29uc3QgYnQgICA9IG1zLT5jaGFpblRhYmxlOw0KPj4gICA1MjkgICAgIFUz MiBjb25zdCBidExvZyA9IGNQYXJhbXMtPmNoYWluTG9nIC0gMTsNCj4+ICAgNTMwICAgICBVMzIg Y29uc3QgYnRNYXNrPSAoMVUgPDwgYnRMb2cpIC0gMTsNCj4+ICAgNTMxICAgICBzaXplX3QgY29t bW9uTGVuZ3RoU21hbGxlcj0wLCBjb21tb25MZW5ndGhMYXJnZXI9MDsNCj4+ICAgNTMyICAgICBj b25zdCBCWVRFKiBjb25zdCBkaWN0QmFzZSA9IG1zLT53aW5kb3cuZGljdEJhc2U7DQo+PiAgIDUz MyAgICAgVTMyIGNvbnN0IGRpY3RMaW1pdCA9IG1zLT53aW5kb3cuZGljdExpbWl0Ow0KPj4gICA1 MzQgICAgIGNvbnN0IEJZVEUqIGNvbnN0IGRpY3RFbmQgPSBkaWN0QmFzZSArIGRpY3RMaW1pdDsN Cj4+ICAgNTM1ICAgICBjb25zdCBCWVRFKiBjb25zdCBwcmVmaXhTdGFydCA9IGJhc2UgKyBkaWN0 TGltaXQ7DQo+PiAgIDUzNiAgICAgVTMyIGNvbnN0IGJ0TG93ID0gKGJ0TWFzayA+PSBjdXJyKSA/ IDAgOiBjdXJyIC0gYnRNYXNrOw0KPj4gICA1MzcgICAgIFUzMiBjb25zdCB3aW5kb3dMb3cgPSBa U1REX2dldExvd2VzdE1hdGNoSW5kZXgobXMsIGN1cnIsIGNQYXJhbXMtPndpbmRvd0xvZyk7DQo+ PiAgIDUzOCAgICAgVTMyIGNvbnN0IG1hdGNoTG93ID0gd2luZG93TG93ID8gd2luZG93TG93IDog MTsNCj4+ICAgNTM5ICAgICBVMzIqIHNtYWxsZXJQdHIgPSBidCArIDIqKGN1cnImYnRNYXNrKTsN Cj4+ICAgNTQwICAgICBVMzIqIGxhcmdlclB0ciAgPSBidCArIDIqKGN1cnImYnRNYXNrKSArIDE7 DQo+PiAgIDU0MSAgICAgVTMyIG1hdGNoRW5kSWR4ID0gY3Vycis4KzE7ICAgLyogZmFydGhlc3Qg cmVmZXJlbmNlZCBwb3NpdGlvbiBvZiBhbnkgbWF0Y2ggPT4gZGV0ZWN0cyByZXBldGl0aXZlIHBh dHRlcm5zICovDQo+PiAgIDU0MiAgICAgVTMyIGR1bW15MzI7ICAgLyogdG8gYmUgbnVsbGlmaWVk IGF0IHRoZSBlbmQgKi8NCj4+ICAgNTQzICAgICBVMzIgbW51bSA9IDA7DQo+PiAgIDU0NCAgICAg VTMyIG5iQ29tcGFyZXMgPSAxVSA8PCBjUGFyYW1zLT5zZWFyY2hMb2c7DQo+PiAgICAgICAgICAg Xl5eXl5eXl5eXl5eXl4NCj4+IFRoaXMgaXMgdW5zaWduZWQuDQo+PiANCj4+IA0KPj4gICA1NDUg DQo+PiAgIDU0NiAgICAgY29uc3QgWlNURF9tYXRjaFN0YXRlX3QqIGRtcyAgICA9IGRpY3RNb2Rl ID09IFpTVERfZGljdE1hdGNoU3RhdGUgPyBtcy0+ZGljdE1hdGNoU3RhdGUgOiBOVUxMOw0KPj4g ICA1NDcgICAgIGNvbnN0IFpTVERfY29tcHJlc3Npb25QYXJhbWV0ZXJzKiBjb25zdCBkbXNDUGFy YW1zID0NCj4+ICAgNTQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlj dE1vZGUgPT0gWlNURF9kaWN0TWF0Y2hTdGF0ZSA/ICZkbXMtPmNQYXJhbXMgOiBOVUxMOw0KPj4g ICA1NDkgICAgIGNvbnN0IEJZVEUqIGNvbnN0IGRtc0Jhc2UgICAgICAgPSBkaWN0TW9kZSA9PSBa U1REX2RpY3RNYXRjaFN0YXRlID8gZG1zLT53aW5kb3cuYmFzZSA6IE5VTEw7DQo+PiAgIDU1MCAg ICAgY29uc3QgQllURSogY29uc3QgZG1zRW5kICAgICAgICA9IGRpY3RNb2RlID09IFpTVERfZGlj dE1hdGNoU3RhdGUgPyBkbXMtPndpbmRvdy5uZXh0U3JjIDogTlVMTDsNCj4+ICAgNTUxICAgICBV MzIgICAgICAgICBjb25zdCBkbXNIaWdoTGltaXQgID0gZGljdE1vZGUgPT0gWlNURF9kaWN0TWF0 Y2hTdGF0ZSA/IChVMzIpKGRtc0VuZCAtIGRtc0Jhc2UpIDogMDsNCj4+ICAgNTUyICAgICBVMzIg ICAgICAgICBjb25zdCBkbXNMb3dMaW1pdCAgID0gZGljdE1vZGUgPT0gWlNURF9kaWN0TWF0Y2hT dGF0ZSA/IGRtcy0+d2luZG93Lmxvd0xpbWl0IDogMDsNCj4+ICAgNTUzICAgICBVMzIgICAgICAg ICBjb25zdCBkbXNJbmRleERlbHRhID0gZGljdE1vZGUgPT0gWlNURF9kaWN0TWF0Y2hTdGF0ZSA/ IHdpbmRvd0xvdyAtIGRtc0hpZ2hMaW1pdCA6IDA7DQo+PiAgIDU1NCAgICAgVTMyICAgICAgICAg Y29uc3QgZG1zSGFzaExvZyAgICA9IGRpY3RNb2RlID09IFpTVERfZGljdE1hdGNoU3RhdGUgPyBk bXNDUGFyYW1zLT5oYXNoTG9nIDogaGFzaExvZzsNCj4+ICAgNTU1ICAgICBVMzIgICAgICAgICBj b25zdCBkbXNCdExvZyAgICAgID0gZGljdE1vZGUgPT0gWlNURF9kaWN0TWF0Y2hTdGF0ZSA/IGRt c0NQYXJhbXMtPmNoYWluTG9nIC0gMSA6IGJ0TG9nOw0KPj4gICA1NTYgICAgIFUzMiAgICAgICAg IGNvbnN0IGRtc0J0TWFzayAgICAgPSBkaWN0TW9kZSA9PSBaU1REX2RpY3RNYXRjaFN0YXRlID8g KDFVIDw8IGRtc0J0TG9nKSAtIDEgOiAwOw0KPj4gICA1NTcgICAgIFUzMiAgICAgICAgIGNvbnN0 IGRtc0J0TG93ICAgICAgPSBkaWN0TW9kZSA9PSBaU1REX2RpY3RNYXRjaFN0YXRlICYmIGRtc0J0 TWFzayA8IGRtc0hpZ2hMaW1pdCAtIGRtc0xvd0xpbWl0ID8gZG1zSGlnaExpbWl0IC0gZG1zQnRN YXNrIDogZG1zTG93TGltaXQ7DQo+PiAgIDU1OCANCj4+ICAgNTU5ICAgICBzaXplX3QgYmVzdExl bmd0aCA9IGxlbmd0aFRvQmVhdC0xOw0KPj4gICA1NjAgICAgIERFQlVHTE9HKDgsICJaU1REX2lu c2VydEJ0QW5kR2V0QWxsTWF0Y2hlczogY3VycmVudD0ldSIsIGN1cnIpOw0KPj4gICA1NjEgDQo+ PiAgIDU2MiAgICAgLyogY2hlY2sgcmVwQ29kZSAqLw0KPj4gICA1NjMgICAgIGFzc2VydChsbDAg PD0gMSk7ICAgLyogbmVjZXNzYXJpbHkgMSBvciAwICovDQo+PiAgIDU2NCAgICAgeyAgIFUzMiBj b25zdCBsYXN0UiA9IFpTVERfUkVQX05VTSArIGxsMDsNCj4+ICAgNTY1ICAgICAgICAgVTMyIHJl cENvZGU7DQo+PiAgIDU2NiAgICAgICAgIGZvciAocmVwQ29kZSA9IGxsMDsgcmVwQ29kZSA8IGxh c3RSOyByZXBDb2RlKyspIHsNCj4+ICAgNTY3ICAgICAgICAgICAgIFUzMiBjb25zdCByZXBPZmZz ZXQgPSAocmVwQ29kZT09WlNURF9SRVBfTlVNKSA/IChyZXBbMF0gLSAxKSA6IHJlcFtyZXBDb2Rl XTsNCj4+ICAgNTY4ICAgICAgICAgICAgIFUzMiBjb25zdCByZXBJbmRleCA9IGN1cnIgLSByZXBP ZmZzZXQ7DQo+PiAgIDU2OSAgICAgICAgICAgICBVMzIgcmVwTGVuID0gMDsNCj4+ICAgNTcwICAg ICAgICAgICAgIGFzc2VydChjdXJyID49IGRpY3RMaW1pdCk7DQo+PiAgIDU3MSAgICAgICAgICAg ICBpZiAocmVwT2Zmc2V0LTEgLyogaW50ZW50aW9uYWwgb3ZlcmZsb3csIGRpc2NhcmRzIDAgYW5k IC0xICovIDwgY3Vyci1kaWN0TGltaXQpIHsgIC8qIGVxdWl2YWxlbnQgdG8gYGN1cnIgPiByZXBJ bmRleCA+PSBkaWN0TGltaXRgICovDQo+PiAgIDU3MiAgICAgICAgICAgICAgICAgLyogV2UgbXVz dCB2YWxpZGF0ZSB0aGUgcmVwY29kZSBvZmZzZXQgYmVjYXVzZSB3aGVuIHdlJ3JlIHVzaW5nIGEg ZGljdGlvbmFyeSB0aGUNCj4+ICAgNTczICAgICAgICAgICAgICAgICAgKiB2YWxpZCBvZmZzZXQg cmFuZ2Ugc2hyaW5rcyB3aGVuIHRoZSBkaWN0aW9uYXJ5IGdvZXMgb3V0IG9mIGJvdW5kcy4NCj4+ ICAgNTc0ICAgICAgICAgICAgICAgICAgKi8NCj4+ICAgNTc1ICAgICAgICAgICAgICAgICBpZiAo KHJlcEluZGV4ID49IHdpbmRvd0xvdykgJiAoWlNURF9yZWFkTUlOTUFUQ0goaXAsIG1pbk1hdGNo KSA9PSBaU1REX3JlYWRNSU5NQVRDSChpcCAtIHJlcE9mZnNldCwgbWluTWF0Y2gpKSkgew0KPj4g ICA1NzYgICAgICAgICAgICAgICAgICAgICByZXBMZW4gPSAoVTMyKVpTVERfY291bnQoaXArbWlu TWF0Y2gsIGlwK21pbk1hdGNoLXJlcE9mZnNldCwgaUxpbWl0KSArIG1pbk1hdGNoOw0KPj4gICA1 NzcgICAgICAgICAgICAgICAgIH0NCj4+ICAgNTc4ICAgICAgICAgICAgIH0gZWxzZSB7ICAvKiBy ZXBJbmRleCA8IGRpY3RMaW1pdCB8fCByZXBJbmRleCA+PSBjdXJyICovDQo+PiAgIDU3OSAgICAg ICAgICAgICAgICAgY29uc3QgQllURSogY29uc3QgcmVwTWF0Y2ggPSBkaWN0TW9kZSA9PSBaU1RE X2RpY3RNYXRjaFN0YXRlID8NCj4+ICAgNTgwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRtc0Jhc2UgKyByZXBJbmRleCAtIGRtc0luZGV4RGVsdGEgOg0KPj4g ICA1ODEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdEJh c2UgKyByZXBJbmRleDsNCj4+ICAgNTgyICAgICAgICAgICAgICAgICBhc3NlcnQoY3VyciA+PSB3 aW5kb3dMb3cpOw0KPj4gICA1ODMgICAgICAgICAgICAgICAgIGlmICggZGljdE1vZGUgPT0gWlNU RF9leHREaWN0DQo+PiAgIDU4NCAgICAgICAgICAgICAgICAgICAmJiAoICgocmVwT2Zmc2V0LTEp IC8qaW50ZW50aW9uYWwgb3ZlcmZsb3cqLyA8IGN1cnIgLSB3aW5kb3dMb3cpICAvKiBlcXVpdmFs ZW50IHRvIGBjdXJyID4gcmVwSW5kZXggPj0gd2luZG93TG93YCAqLw0KPj4gICA1ODUgICAgICAg ICAgICAgICAgICAgICAgJiAoKChVMzIpKChkaWN0TGltaXQtMSkgLSByZXBJbmRleCkgPj0gMykg KSAvKiBpbnRlbnRpb25hbCBvdmVyZmxvdyA6IGRvIG5vdCB0ZXN0IHBvc2l0aW9ucyBvdmVybGFw cGluZyAyIG1lbW9yeSBzZWdtZW50cyAqLykNCj4+ICAgNTg2ICAgICAgICAgICAgICAgICAgICYm IChaU1REX3JlYWRNSU5NQVRDSChpcCwgbWluTWF0Y2gpID09IFpTVERfcmVhZE1JTk1BVENIKHJl cE1hdGNoLCBtaW5NYXRjaCkpICkgew0KPj4gICA1ODcgICAgICAgICAgICAgICAgICAgICByZXBM ZW4gPSAoVTMyKVpTVERfY291bnRfMnNlZ21lbnRzKGlwK21pbk1hdGNoLCByZXBNYXRjaCttaW5N YXRjaCwgaUxpbWl0LCBkaWN0RW5kLCBwcmVmaXhTdGFydCkgKyBtaW5NYXRjaDsNCj4+ICAgNTg4 ICAgICAgICAgICAgICAgICB9DQo+PiAgIDU4OSAgICAgICAgICAgICAgICAgaWYgKGRpY3RNb2Rl ID09IFpTVERfZGljdE1hdGNoU3RhdGUNCj4+ICAgNTkwICAgICAgICAgICAgICAgICAgICYmICgg KChyZXBPZmZzZXQtMSkgLyppbnRlbnRpb25hbCBvdmVyZmxvdyovIDwgY3VyciAtIChkbXNMb3dM aW1pdCArIGRtc0luZGV4RGVsdGEpKSAgLyogZXF1aXZhbGVudCB0byBgY3VyciA+IHJlcEluZGV4 ID49IGRtc0xvd0xpbWl0YCAqLw0KPj4gICA1OTEgICAgICAgICAgICAgICAgICAgICAgJiAoKFUz MikoKGRpY3RMaW1pdC0xKSAtIHJlcEluZGV4KSA+PSAzKSApIC8qIGludGVudGlvbmFsIG92ZXJm bG93IDogZG8gbm90IHRlc3QgcG9zaXRpb25zIG92ZXJsYXBwaW5nIDIgbWVtb3J5IHNlZ21lbnRz ICovDQo+PiAgIDU5MiAgICAgICAgICAgICAgICAgICAmJiAoWlNURF9yZWFkTUlOTUFUQ0goaXAs IG1pbk1hdGNoKSA9PSBaU1REX3JlYWRNSU5NQVRDSChyZXBNYXRjaCwgbWluTWF0Y2gpKSApIHsN Cj4+ICAgNTkzICAgICAgICAgICAgICAgICAgICAgcmVwTGVuID0gKFUzMilaU1REX2NvdW50XzJz ZWdtZW50cyhpcCttaW5NYXRjaCwgcmVwTWF0Y2grbWluTWF0Y2gsIGlMaW1pdCwgZG1zRW5kLCBw cmVmaXhTdGFydCkgKyBtaW5NYXRjaDsNCj4+ICAgNTk0ICAgICAgICAgICAgIH0gICB9DQo+PiAg IDU5NSAgICAgICAgICAgICAvKiBzYXZlIGxvbmdlciBzb2x1dGlvbiAqLw0KPj4gICA1OTYgICAg ICAgICAgICAgaWYgKHJlcExlbiA+IGJlc3RMZW5ndGgpIHsNCj4+ICAgNTk3ICAgICAgICAgICAg ICAgICBERUJVR0xPRyg4LCAiZm91bmQgcmVwQ29kZSAldSAobGwwOiV1LCBvZmZzZXQ6JXUpIG9m IGxlbmd0aCAldSIsDQo+PiAgIDU5OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwQ29k ZSwgbGwwLCByZXBPZmZzZXQsIHJlcExlbik7DQo+PiAgIDU5OSAgICAgICAgICAgICAgICAgYmVz dExlbmd0aCA9IHJlcExlbjsNCj4+ICAgNjAwICAgICAgICAgICAgICAgICBtYXRjaGVzW21udW1d Lm9mZiA9IHJlcENvZGUgLSBsbDA7DQo+PiAgIDYwMSAgICAgICAgICAgICAgICAgbWF0Y2hlc1tt bnVtXS5sZW4gPSAoVTMyKXJlcExlbjsNCj4+ICAgNjAyICAgICAgICAgICAgICAgICBtbnVtKys7 DQo+PiAgIDYwMyAgICAgICAgICAgICAgICAgaWYgKCAocmVwTGVuID4gc3VmZmljaWVudF9sZW4p DQo+PiAgIDYwNCAgICAgICAgICAgICAgICAgICAgfCAoaXArcmVwTGVuID09IGlMaW1pdCkgKSB7 ICAvKiBiZXN0IHBvc3NpYmxlICovDQo+PiAgIDYwNSAgICAgICAgICAgICAgICAgICAgIHJldHVy biBtbnVtOw0KPj4gICA2MDYgICAgIH0gICB9ICAgfSAgIH0NCj4+ICAgNjA3IA0KPj4gICA2MDgg ICAgIC8qIEhDMyBtYXRjaCBmaW5kZXIgKi8NCj4+ICAgNjA5ICAgICBpZiAoKG1scyA9PSAzKSAv KnN0YXRpYyovICYmIChiZXN0TGVuZ3RoIDwgbWxzKSkgew0KPj4gICA2MTAgICAgICAgICBVMzIg Y29uc3QgbWF0Y2hJbmRleDMgPSBaU1REX2luc2VydEFuZEZpbmRGaXJzdEluZGV4SGFzaDMobXMs IG5leHRUb1VwZGF0ZTMsIGlwKTsNCj4+ICAgNjExICAgICAgICAgaWYgKChtYXRjaEluZGV4MyA+ PSBtYXRjaExvdykNCj4+ICAgNjEyICAgICAgICAgICAmIChjdXJyIC0gbWF0Y2hJbmRleDMgPCAo MTw8MTgpKSAvKmhldXJpc3RpYyA6IGxvbmdlciBkaXN0YW5jZSBsaWtlbHkgdG9vIGV4cGVuc2l2 ZSovICkgew0KPj4gICA2MTMgICAgICAgICAgICAgc2l6ZV90IG1sZW47DQo+PiAgIDYxNCAgICAg ICAgICAgICBpZiAoKGRpY3RNb2RlID09IFpTVERfbm9EaWN0KSAvKnN0YXRpYyovIHx8IChkaWN0 TW9kZSA9PSBaU1REX2RpY3RNYXRjaFN0YXRlKSAvKnN0YXRpYyovIHx8IChtYXRjaEluZGV4MyA+ PSBkaWN0TGltaXQpKSB7DQo+PiAgIDYxNSAgICAgICAgICAgICAgICAgY29uc3QgQllURSogY29u c3QgbWF0Y2ggPSBiYXNlICsgbWF0Y2hJbmRleDM7DQo+PiAgIDYxNiAgICAgICAgICAgICAgICAg bWxlbiA9IFpTVERfY291bnQoaXAsIG1hdGNoLCBpTGltaXQpOw0KPj4gICA2MTcgICAgICAgICAg ICAgfSBlbHNlIHsNCj4+ICAgNjE4ICAgICAgICAgICAgICAgICBjb25zdCBCWVRFKiBjb25zdCBt YXRjaCA9IGRpY3RCYXNlICsgbWF0Y2hJbmRleDM7DQo+PiAgIDYxOSAgICAgICAgICAgICAgICAg bWxlbiA9IFpTVERfY291bnRfMnNlZ21lbnRzKGlwLCBtYXRjaCwgaUxpbWl0LCBkaWN0RW5kLCBw cmVmaXhTdGFydCk7DQo+PiAgIDYyMCAgICAgICAgICAgICB9DQo+PiAgIDYyMSANCj4+ICAgNjIy ICAgICAgICAgICAgIC8qIHNhdmUgYmVzdCBzb2x1dGlvbiAqLw0KPj4gICA2MjMgICAgICAgICAg ICAgaWYgKG1sZW4gPj0gbWxzIC8qID09IDMgPiBiZXN0TGVuZ3RoICovKSB7DQo+PiAgIDYyNCAg ICAgICAgICAgICAgICAgREVCVUdMT0coOCwgImZvdW5kIHNtYWxsIG1hdGNoIHdpdGggaGxvZzMs IG9mIGxlbmd0aCAldSIsDQo+PiAgIDYyNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFUz MiltbGVuKTsNCj4+ICAgNjI2ICAgICAgICAgICAgICAgICBiZXN0TGVuZ3RoID0gbWxlbjsNCj4+ ICAgNjI3ICAgICAgICAgICAgICAgICBhc3NlcnQoY3VyciA+IG1hdGNoSW5kZXgzKTsNCj4+ICAg NjI4ICAgICAgICAgICAgICAgICBhc3NlcnQobW51bT09MCk7ICAvKiBubyBwcmlvciBzb2x1dGlv biAqLw0KPj4gICA2MjkgICAgICAgICAgICAgICAgIG1hdGNoZXNbMF0ub2ZmID0gKGN1cnIgLSBt YXRjaEluZGV4MykgKyBaU1REX1JFUF9NT1ZFOw0KPj4gICA2MzAgICAgICAgICAgICAgICAgIG1h dGNoZXNbMF0ubGVuID0gKFUzMiltbGVuOw0KPj4gICA2MzEgICAgICAgICAgICAgICAgIG1udW0g PSAxOw0KPj4gICA2MzIgICAgICAgICAgICAgICAgIGlmICggKG1sZW4gPiBzdWZmaWNpZW50X2xl bikgfA0KPj4gICA2MzMgICAgICAgICAgICAgICAgICAgICAgKGlwK21sZW4gPT0gaUxpbWl0KSAp IHsgIC8qIGJlc3QgcG9zc2libGUgbGVuZ3RoICovDQo+PiAgIDYzNCAgICAgICAgICAgICAgICAg ICAgIG1zLT5uZXh0VG9VcGRhdGUgPSBjdXJyKzE7ICAvKiBza2lwIGluc2VydGlvbiAqLw0KPj4g ICA2MzUgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsNCj4+ICAgNjM2ICAgICAgICAgfSAg IH0gICB9DQo+PiAgIDYzNyAgICAgICAgIC8qIG5vIGRpY3RNYXRjaFN0YXRlIGxvb2t1cDogZGlj dHMgZG9uJ3QgaGF2ZSBhIHBvcHVsYXRlZCBIQzMgdGFibGUgKi8NCj4+ICAgNjM4ICAgICB9DQo+ PiAgIDYzOSANCj4+ICAgNjQwICAgICBoYXNoVGFibGVbaF0gPSBjdXJyOyAgIC8qIFVwZGF0ZSBI YXNoIFRhYmxlICovDQo+PiAgIDY0MSANCj4+ICAgNjQyICAgICB3aGlsZSAobmJDb21wYXJlcy0t ICYmIChtYXRjaEluZGV4ID49IG1hdGNoTG93KSkgew0KPj4gICAgICAgICAgICAgICAgICBeXl5e Xl5eXl5eXl4NCj4+IFRoaXMgaXMgYSBwb3N0IG9wIHNvIGl0IHdpbGwgZXhpdCB0aGUgbG9vcCB3 aXRoIG5iQ29tcGFyZXMgc2V0IHRvIC0xVS4NCj4+IA0KPj4gICA2NDMgICAgICAgICBVMzIqIGNv bnN0IG5leHRQdHIgPSBidCArIDIqKG1hdGNoSW5kZXggJiBidE1hc2spOw0KPj4gICA2NDQgICAg ICAgICBjb25zdCBCWVRFKiBtYXRjaDsNCj4+ICAgNjQ1ICAgICAgICAgc2l6ZV90IG1hdGNoTGVu Z3RoID0gTUlOKGNvbW1vbkxlbmd0aFNtYWxsZXIsIGNvbW1vbkxlbmd0aExhcmdlcik7ICAgLyog Z3VhcmFudGVlZCBtaW5pbXVtIG5iIG9mIGNvbW1vbiBieXRlcyAqLw0KPj4gICA2NDYgICAgICAg ICBhc3NlcnQoY3VyciA+IG1hdGNoSW5kZXgpOw0KPj4gICA2NDcgDQo+PiAgIDY0OCAgICAgICAg IGlmICgoZGljdE1vZGUgPT0gWlNURF9ub0RpY3QpIHx8IChkaWN0TW9kZSA9PSBaU1REX2RpY3RN YXRjaFN0YXRlKSB8fCAobWF0Y2hJbmRleCttYXRjaExlbmd0aCA+PSBkaWN0TGltaXQpKSB7DQo+ PiAgIDY0OSAgICAgICAgICAgICBhc3NlcnQobWF0Y2hJbmRleCttYXRjaExlbmd0aCA+PSBkaWN0 TGltaXQpOyAgLyogZW5zdXJlIHRoZSBjb25kaXRpb24gaXMgY29ycmVjdCB3aGVuICFleHREaWN0 ICovDQo+PiAgIDY1MCAgICAgICAgICAgICBtYXRjaCA9IGJhc2UgKyBtYXRjaEluZGV4Ow0KPj4g ICA2NTEgICAgICAgICAgICAgaWYgKG1hdGNoSW5kZXggPj0gZGljdExpbWl0KSBhc3NlcnQobWVt Y21wKG1hdGNoLCBpcCwgbWF0Y2hMZW5ndGgpID09IDApOyAgLyogZW5zdXJlIGVhcmx5IHNlY3Rp b24gb2YgbWF0Y2ggaXMgZXF1YWwgYXMgZXhwZWN0ZWQgKi8NCj4+ICAgNjUyICAgICAgICAgICAg IG1hdGNoTGVuZ3RoICs9IFpTVERfY291bnQoaXArbWF0Y2hMZW5ndGgsIG1hdGNoK21hdGNoTGVu Z3RoLCBpTGltaXQpOw0KPj4gICA2NTMgICAgICAgICB9IGVsc2Ugew0KPj4gICA2NTQgICAgICAg ICAgICAgbWF0Y2ggPSBkaWN0QmFzZSArIG1hdGNoSW5kZXg7DQo+PiAgIDY1NSAgICAgICAgICAg ICBhc3NlcnQobWVtY21wKG1hdGNoLCBpcCwgbWF0Y2hMZW5ndGgpID09IDApOyAgLyogZW5zdXJl IGVhcmx5IHNlY3Rpb24gb2YgbWF0Y2ggaXMgZXF1YWwgYXMgZXhwZWN0ZWQgKi8NCj4+ICAgNjU2 ICAgICAgICAgICAgIG1hdGNoTGVuZ3RoICs9IFpTVERfY291bnRfMnNlZ21lbnRzKGlwK21hdGNo TGVuZ3RoLCBtYXRjaCttYXRjaExlbmd0aCwgaUxpbWl0LCBkaWN0RW5kLCBwcmVmaXhTdGFydCk7 DQo+PiAgIDY1NyAgICAgICAgICAgICBpZiAobWF0Y2hJbmRleCttYXRjaExlbmd0aCA+PSBkaWN0 TGltaXQpDQo+PiAgIDY1OCAgICAgICAgICAgICAgICAgbWF0Y2ggPSBiYXNlICsgbWF0Y2hJbmRl eDsgICAvKiBwcmVwYXJlIGZvciBtYXRjaFttYXRjaExlbmd0aF0gcmVhZCAqLw0KPj4gICA2NTkg ICAgICAgICB9DQo+PiAgIDY2MCANCj4+ICAgNjYxICAgICAgICAgaWYgKG1hdGNoTGVuZ3RoID4g YmVzdExlbmd0aCkgew0KPj4gICA2NjIgICAgICAgICAgICAgREVCVUdMT0coOCwgImZvdW5kIG1h dGNoIG9mIGxlbmd0aCAldSBhdCBkaXN0YW5jZSAldSAob2ZmQ29kZT0ldSkiLA0KPj4gICA2NjMg ICAgICAgICAgICAgICAgICAgICAoVTMyKW1hdGNoTGVuZ3RoLCBjdXJyIC0gbWF0Y2hJbmRleCwg Y3VyciAtIG1hdGNoSW5kZXggKyBaU1REX1JFUF9NT1ZFKTsNCj4+ICAgNjY0ICAgICAgICAgICAg IGFzc2VydChtYXRjaEVuZElkeCA+IG1hdGNoSW5kZXgpOw0KPj4gICA2NjUgICAgICAgICAgICAg aWYgKG1hdGNoTGVuZ3RoID4gbWF0Y2hFbmRJZHggLSBtYXRjaEluZGV4KQ0KPj4gICA2NjYgICAg ICAgICAgICAgICAgIG1hdGNoRW5kSWR4ID0gbWF0Y2hJbmRleCArIChVMzIpbWF0Y2hMZW5ndGg7 DQo+PiAgIDY2NyAgICAgICAgICAgICBiZXN0TGVuZ3RoID0gbWF0Y2hMZW5ndGg7DQo+PiAgIDY2 OCAgICAgICAgICAgICBtYXRjaGVzW21udW1dLm9mZiA9IChjdXJyIC0gbWF0Y2hJbmRleCkgKyBa U1REX1JFUF9NT1ZFOw0KPj4gICA2NjkgICAgICAgICAgICAgbWF0Y2hlc1ttbnVtXS5sZW4gPSAo VTMyKW1hdGNoTGVuZ3RoOw0KPj4gICA2NzAgICAgICAgICAgICAgbW51bSsrOw0KPj4gICA2NzEg ICAgICAgICAgICAgaWYgKCAobWF0Y2hMZW5ndGggPiBaU1REX09QVF9OVU0pDQo+PiAgIDY3MiAg ICAgICAgICAgICAgICB8IChpcCttYXRjaExlbmd0aCA9PSBpTGltaXQpIC8qIGVxdWFsIDogbm8g d2F5IHRvIGtub3cgaWYgaW5mIG9yIHN1cCAqLykgew0KPj4gICA2NzMgICAgICAgICAgICAgICAg IGlmIChkaWN0TW9kZSA9PSBaU1REX2RpY3RNYXRjaFN0YXRlKSBuYkNvbXBhcmVzID0gMDsgLyog YnJlYWsgc2hvdWxkIGFsc28gc2tpcCBzZWFyY2hpbmcgZG1zICovDQo+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5e Xl5eDQo+PiBPciBpdCBjb3VsZCBleGl0IGhlcmUuDQo+PiANCj4+ICAgNjc0ICAgICAgICAgICAg ICAgICBicmVhazsgLyogZHJvcCwgdG8gcHJlc2VydmUgYnQgY29uc2lzdGVuY3kgKG1pc3MgYSBs aXR0bGUgYml0IG9mIGNvbXByZXNzaW9uKSAqLw0KPj4gICA2NzUgICAgICAgICAgICAgfQ0KPj4g ICA2NzYgICAgICAgICB9DQo+PiAgIDY3NyANCj4+ICAgNjc4ICAgICAgICAgaWYgKG1hdGNoW21h dGNoTGVuZ3RoXSA8IGlwW21hdGNoTGVuZ3RoXSkgew0KPj4gICA2NzkgICAgICAgICAgICAgLyog bWF0Y2ggc21hbGxlciB0aGFuIGN1cnJlbnQgKi8NCj4+ICAgNjgwICAgICAgICAgICAgICpzbWFs bGVyUHRyID0gbWF0Y2hJbmRleDsgICAgICAgICAgICAgLyogdXBkYXRlIHNtYWxsZXIgaWR4ICov DQo+PiAgIDY4MSAgICAgICAgICAgICBjb21tb25MZW5ndGhTbWFsbGVyID0gbWF0Y2hMZW5ndGg7 ICAgIC8qIGFsbCBzbWFsbGVyIHdpbGwgbm93IGhhdmUgYXQgbGVhc3QgdGhpcyBndWFyYW50ZWVk IGNvbW1vbiBsZW5ndGggKi8NCj4+ICAgNjgyICAgICAgICAgICAgIGlmIChtYXRjaEluZGV4IDw9 IGJ0TG93KSB7IHNtYWxsZXJQdHI9JmR1bW15MzI7IGJyZWFrOyB9ICAgLyogYmV5b25kIHRyZWUg c2l6ZSwgc3RvcCB0aGUgc2VhcmNoICovDQo+PiAgIDY4MyAgICAgICAgICAgICBzbWFsbGVyUHRy ID0gbmV4dFB0cisxOyAgICAgICAgICAgICAgIC8qIG5ldyBjYW5kaWRhdGUgPT4gbGFyZ2VyIHRo YW4gbWF0Y2gsIHdoaWNoIHdhcyBzbWFsbGVyIHRoYW4gY3VycmVudCAqLw0KPj4gICA2ODQgICAg ICAgICAgICAgbWF0Y2hJbmRleCA9IG5leHRQdHJbMV07ICAgICAgICAgICAgICAvKiBuZXcgbWF0 Y2hJbmRleCwgbGFyZ2VyIHRoYW4gcHJldmlvdXMsIGNsb3NlciB0byBjdXJyZW50ICovDQo+PiAg IDY4NSAgICAgICAgIH0gZWxzZSB7DQo+PiAgIDY4NiAgICAgICAgICAgICAqbGFyZ2VyUHRyID0g bWF0Y2hJbmRleDsNCj4+ICAgNjg3ICAgICAgICAgICAgIGNvbW1vbkxlbmd0aExhcmdlciA9IG1h dGNoTGVuZ3RoOw0KPj4gICA2ODggICAgICAgICAgICAgaWYgKG1hdGNoSW5kZXggPD0gYnRMb3cp IHsgbGFyZ2VyUHRyPSZkdW1teTMyOyBicmVhazsgfSAgIC8qIGJleW9uZCB0cmVlIHNpemUsIHN0 b3AgdGhlIHNlYXJjaCAqLw0KPj4gICA2ODkgICAgICAgICAgICAgbGFyZ2VyUHRyID0gbmV4dFB0 cjsNCj4+ICAgNjkwICAgICAgICAgICAgIG1hdGNoSW5kZXggPSBuZXh0UHRyWzBdOw0KPj4gICA2 OTEgICAgIH0gICB9DQo+PiAgIDY5MiANCj4+ICAgNjkzICAgICAqc21hbGxlclB0ciA9ICpsYXJn ZXJQdHIgPSAwOw0KPj4gICA2OTQgDQo+PiAtLT4gNjk1ICAgICBpZiAoZGljdE1vZGUgPT0gWlNU RF9kaWN0TWF0Y2hTdGF0ZSAmJiBuYkNvbXBhcmVzKSB7DQo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXg0KPj4gVGhlIHNob3VsZCB0 aGlzIGJlIGNoZWNrIGZvciBpZiBuYkNvbXBhcmVzID09IC0xPyAgVGhpcyBjb3VsZCBiZQ0KPj4g aW50ZW50aW9uYWwuICBIYXJkIHRvIHRlbGwuDQo+PiANCj4+ICAgNjk2ICAgICAgICAgc2l6ZV90 IGNvbnN0IGRtc0ggPSBaU1REX2hhc2hQdHIoaXAsIGRtc0hhc2hMb2csIG1scyk7DQo+PiAgIDY5 NyAgICAgICAgIFUzMiBkaWN0TWF0Y2hJbmRleCA9IGRtcy0+aGFzaFRhYmxlW2Rtc0hdOw0KPj4g ICA2OTggICAgICAgICBjb25zdCBVMzIqIGNvbnN0IGRtc0J0ID0gZG1zLT5jaGFpblRhYmxlOw0K Pj4gICA2OTkgICAgICAgICBjb21tb25MZW5ndGhTbWFsbGVyID0gY29tbW9uTGVuZ3RoTGFyZ2Vy ID0gMDsNCj4+ICAgNzAwICAgICAgICAgd2hpbGUgKG5iQ29tcGFyZXMtLSAmJiAoZGljdE1hdGNo SW5kZXggPiBkbXNMb3dMaW1pdCkpIHsNCj4+ICAgNzAxICAgICAgICAgICAgIGNvbnN0IFUzMiog Y29uc3QgbmV4dFB0ciA9IGRtc0J0ICsgMiooZGljdE1hdGNoSW5kZXggJiBkbXNCdE1hc2spOw0K Pj4gICA3MDIgICAgICAgICAgICAgc2l6ZV90IG1hdGNoTGVuZ3RoID0gTUlOKGNvbW1vbkxlbmd0 aFNtYWxsZXIsIGNvbW1vbkxlbmd0aExhcmdlcik7ICAgLyogZ3VhcmFudGVlZCBtaW5pbXVtIG5i IG9mIGNvbW1vbiBieXRlcyAqLw0KPj4gICA3MDMgICAgICAgICAgICAgY29uc3QgQllURSogbWF0 Y2ggPSBkbXNCYXNlICsgZGljdE1hdGNoSW5kZXg7DQo+PiAgIDcwNCAgICAgICAgICAgICBtYXRj aExlbmd0aCArPSBaU1REX2NvdW50XzJzZWdtZW50cyhpcCttYXRjaExlbmd0aCwgbWF0Y2grbWF0 Y2hMZW5ndGgsIGlMaW1pdCwgZG1zRW5kLCBwcmVmaXhTdGFydCk7DQo+PiAgIDcwNSAgICAgICAg ICAgICBpZiAoZGljdE1hdGNoSW5kZXgrbWF0Y2hMZW5ndGggPj0gZG1zSGlnaExpbWl0KQ0KPj4g ICA3MDYgICAgICAgICAgICAgICAgIG1hdGNoID0gYmFzZSArIGRpY3RNYXRjaEluZGV4ICsgZG1z SW5kZXhEZWx0YTsgICAvKiB0byBwcmVwYXJlIGZvciBuZXh0IHVzYWdlIG9mIG1hdGNoW21hdGNo TGVuZ3RoXSAqLw0KPj4gICA3MDcgDQo+PiAgIDcwOCAgICAgICAgICAgICBpZiAobWF0Y2hMZW5n dGggPiBiZXN0TGVuZ3RoKSB7DQo+PiAgIDcwOSAgICAgICAgICAgICAgICAgbWF0Y2hJbmRleCA9 IGRpY3RNYXRjaEluZGV4ICsgZG1zSW5kZXhEZWx0YTsNCj4+ICAgNzEwICAgICAgICAgICAgICAg ICBERUJVR0xPRyg4LCAiZm91bmQgZG1zIG1hdGNoIG9mIGxlbmd0aCAldSBhdCBkaXN0YW5jZSAl dSAob2ZmQ29kZT0ldSkiLA0KPj4gICA3MTEgICAgICAgICAgICAgICAgICAgICAgICAgKFUzMilt YXRjaExlbmd0aCwgY3VyciAtIG1hdGNoSW5kZXgsIGN1cnIgLSBtYXRjaEluZGV4ICsgWlNURF9S RVBfTU9WRSk7DQo+PiAgIDcxMiAgICAgICAgICAgICAgICAgaWYgKG1hdGNoTGVuZ3RoID4gbWF0 Y2hFbmRJZHggLSBtYXRjaEluZGV4KQ0KPj4gICA3MTMgICAgICAgICAgICAgICAgICAgICBtYXRj aEVuZElkeCA9IG1hdGNoSW5kZXggKyAoVTMyKW1hdGNoTGVuZ3RoOw0KPj4gICA3MTQgICAgICAg ICAgICAgICAgIGJlc3RMZW5ndGggPSBtYXRjaExlbmd0aDsNCj4+ICAgNzE1ICAgICAgICAgICAg ICAgICBtYXRjaGVzW21udW1dLm9mZiA9IChjdXJyIC0gbWF0Y2hJbmRleCkgKyBaU1REX1JFUF9N T1ZFOw0KPj4gICA3MTYgICAgICAgICAgICAgICAgIG1hdGNoZXNbbW51bV0ubGVuID0gKFUzMilt YXRjaExlbmd0aDsNCj4+ICAgNzE3ICAgICAgICAgICAgICAgICBtbnVtKys7DQo+PiAgIDcxOCAg ICAgICAgICAgICAgICAgaWYgKCAobWF0Y2hMZW5ndGggPiBaU1REX09QVF9OVU0pDQo+PiAgIDcx OSAgICAgICAgICAgICAgICAgICAgfCAoaXArbWF0Y2hMZW5ndGggPT0gaUxpbWl0KSAvKiBlcXVh bCA6IG5vIHdheSB0byBrbm93IGlmIGluZiBvciBzdXAgKi8pIHsNCj4+ICAgNzIwICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7ICAgLyogZHJvcCwgdG8gZ3VhcmFudGVlIGNvbnNpc3RlbmN5ICht aXNzIGEgbGl0dGxlIGJpdCBvZiBjb21wcmVzc2lvbikgKi8NCj4+ICAgNzIxICAgICAgICAgICAg ICAgICB9DQo+PiAgIDcyMiAgICAgICAgICAgICB9DQo+PiAgIDcyMyANCj4+ICAgNzI0ICAgICAg ICAgICAgIGlmIChkaWN0TWF0Y2hJbmRleCA8PSBkbXNCdExvdykgeyBicmVhazsgfSAgIC8qIGJl eW9uZCB0cmVlIHNpemUsIHN0b3AgdGhlIHNlYXJjaCAqLw0KPj4gICA3MjUgICAgICAgICAgICAg aWYgKG1hdGNoW21hdGNoTGVuZ3RoXSA8IGlwW21hdGNoTGVuZ3RoXSkgew0KPj4gICA3MjYgICAg ICAgICAgICAgICAgIGNvbW1vbkxlbmd0aFNtYWxsZXIgPSBtYXRjaExlbmd0aDsgICAgLyogYWxs IHNtYWxsZXIgd2lsbCBub3cgaGF2ZSBhdCBsZWFzdCB0aGlzIGd1YXJhbnRlZWQgY29tbW9uIGxl bmd0aCAqLw0KPj4gICA3MjcgICAgICAgICAgICAgICAgIGRpY3RNYXRjaEluZGV4ID0gbmV4dFB0 clsxXTsgICAgICAgICAgICAgIC8qIG5ldyBtYXRjaEluZGV4IGxhcmdlciB0aGFuIHByZXZpb3Vz IChjbG9zZXIgdG8gY3VycmVudCkgKi8NCj4+ICAgNzI4ICAgICAgICAgICAgIH0gZWxzZSB7DQo+ PiAgIDcyOSAgICAgICAgICAgICAgICAgLyogbWF0Y2ggaXMgbGFyZ2VyIHRoYW4gY3VycmVudCAq Lw0KPj4gICA3MzAgICAgICAgICAgICAgICAgIGNvbW1vbkxlbmd0aExhcmdlciA9IG1hdGNoTGVu Z3RoOw0KPj4gICA3MzEgICAgICAgICAgICAgICAgIGRpY3RNYXRjaEluZGV4ID0gbmV4dFB0clsw XTsNCj4+ICAgNzMyICAgICAgICAgICAgIH0NCj4+ICAgNzMzICAgICAgICAgfQ0KPj4gICA3MzQg ICAgIH0NCj4+ICAgNzM1IA0KPj4gICA3MzYgICAgIGFzc2VydChtYXRjaEVuZElkeCA+IGN1cnIr OCk7DQo+PiAgIDczNyAgICAgbXMtPm5leHRUb1VwZGF0ZSA9IG1hdGNoRW5kSWR4IC0gODsgIC8q IHNraXAgcmVwZXRpdGl2ZSBwYXR0ZXJucyAqLw0KPj4gICA3MzggICAgIHJldHVybiBtbnVtOw0K Pj4gICA3MzkgfQ0KPj4gDQo+PiByZWdhcmRzLA0KPj4gZGFuIGNhcnBlbnRlcg0KPiANCg0K