From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3335B428CD; Tue, 4 Apr 2023 10:10:23 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B4C4F410FA; Tue, 4 Apr 2023 10:10:22 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id F363D40EE3 for ; Tue, 4 Apr 2023 10:10:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1680595820; x=1712131820; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=aIKlUUpMBoDaPscCW08W1hNS/C4vNrOTog1FJNrO9DA=; b=mkmAwYaHLvcJ8Cb5wyxyGeygbmDj3kSUDlFySSqF84yTfli+lJKiVjp4 AQS+2xyO0BskNVuGR0DU/YBoitbNxis4CpvAOjqu03fmdGivobVKSiKa6 +1aZac8PzWkvNVdJonT0RU2nnEKaUbP3WXdWsUWPHZk2VDBZsmLdYg4pH XTr0NOGkVCHltKIGOJ5j1cPW+5q0demj71lMcLGdgreaQoPY/cdjmXNZG FKUndbvVHfC0tOr/CZZqAdeOsijDLRruj/ioFeHjopP5dyXosnX4DN6ZG yYRk8YHFcHEe61/6lLdhW4oLgrmG+519htcLUVXPcHyI+VII1vmkIRThy w==; X-IronPort-AV: E=McAfee;i="6600,9927,10669"; a="344683236" X-IronPort-AV: E=Sophos;i="5.98,317,1673942400"; d="scan'208,217";a="344683236" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Apr 2023 01:10:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10669"; a="663498475" X-IronPort-AV: E=Sophos;i="5.98,317,1673942400"; d="scan'208,217";a="663498475" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga006.jf.intel.com with ESMTP; 04 Apr 2023 01:10:16 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 4 Apr 2023 01:10:16 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 4 Apr 2023 01:10:15 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Tue, 4 Apr 2023 01:10:15 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.44) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Tue, 4 Apr 2023 01:10:15 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=isGG8SB6Vc6AxT07Riw1YQmgGY0BM+r7j66w0V8p0LelVE07JicnDRyibCcoceHc2PYrphF97FykAogwnSUq+Pssgrz/hwn6SC7NI6W2xho3bVQJ4K33ZzhsnvnG/X2Dh3AZvxPcYSGt5IR5thaJxK7xXPXGIjtgOXB+MYrLzIo1GvIwLa7V1szpCXUexDqgw5kGyf5XiUc4OJKOgK238PH7YgpoQXHrIhEU/gJvqb9cZwo7bkoK/qO3g0lRY4+3zJR5YDxfSWhgqxy2++F4jrLIvcJgFQG15w+JRR3i6NE+yByTR/mg+vSJXFbaHWkx+TAGaQP6ygXX//5cmXlR3A== 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=aIKlUUpMBoDaPscCW08W1hNS/C4vNrOTog1FJNrO9DA=; b=dj/I2qlpQ0pubFwmglvlfBbaulGn3hI1hQwOxA2XgcsymkLmdcZUJS6lZjbWf618QIeRpdF2jvrJhXqY+bb4gSnBoj30rGmXDGEq1F4v+j+8KOMe/JKYiB0XQvSwLJsR0w8uXwIcsWfYlDU7V7iN64Kj78SthquoyohnlTNFxWc2MO3ppc3AX7z9yLxv35xNxSMVEn/pbq01Ns4pWPgB5H68vkg6fh3UKZf/P3xL3jXfPsc1Gm9QQCNOSg2bxc7OmYNWZ0BT5MrNLXZNBc6Z2sbnW1BwlT+ADj2tq5+0NN0iCbKlN21GrTwW7iKoz6MgtEr63y+riIumIO+ZByhb/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CY5PR11MB6487.namprd11.prod.outlook.com (2603:10b6:930:31::17) by BY1PR11MB7983.namprd11.prod.outlook.com (2603:10b6:a03:52b::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.30; Tue, 4 Apr 2023 08:10:12 +0000 Received: from CY5PR11MB6487.namprd11.prod.outlook.com ([fe80::8f88:d34d:a56c:d4e8]) by CY5PR11MB6487.namprd11.prod.outlook.com ([fe80::8f88:d34d:a56c:d4e8%4]) with mapi id 15.20.6254.033; Tue, 4 Apr 2023 08:10:09 +0000 From: "Hu, Jiayu" To: kumaraparameshwaran rathinavel , "dev@dpdk.org" CC: Thomas Monjalon Subject: RE: [PATCH] gro : ipv6 changes to support GRO for TCP/ipv6 Thread-Topic: [PATCH] gro : ipv6 changes to support GRO for TCP/ipv6 Thread-Index: AQHY5H1gTxxTE+wYREWj+ZLxeYq8L68S8QUAgAjd56A= Date: Tue, 4 Apr 2023 08:10:09 +0000 Message-ID: References: <20221020121309.14737-1-kparameshwar@kparameshwa-a02.vmware.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CY5PR11MB6487:EE_|BY1PR11MB7983:EE_ x-ms-office365-filtering-correlation-id: 37d45355-aa3a-4dbe-ede3-08db34e40206 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: IuWrEQxQG92tlph3TD/oEZ94odzLfnEgZxqxK/pyFDAG/N3j9YRvSJ17sd4DENznnrShbzD0T5c2bRWto68P5XRocRrXSrAa1u0Rqw935+ZrkMiaGIp55Risb0ioi6DeJjp17+uLWxN8+vM5i/iSYnGxXKUo99s/61xatORGFl3Mq/K6Z5vJmdykYg0Omwt6iA+aedz6GNtBCCusFAZKkZgl9E0yvxPo4jlpOzd5mn4oFyY2qPNh1mLYfeTywWOS13dQHwUydpfXWdqo5TXgkKc4JWS6LmfLLThiEJtWG9kFSk4LMIqZ5XoorTBRTqP7QWHqpH796GbCYH51LkdygGZtsSNWYpeABgU4ZCjzVqnjKIypgt6/BEbTc15ZmO7Ai4UKMqO2iVq+eWNZoctFrp9bra+NVZ4K/ixFeFNK9gE3kUb0pW1f3Xj6wgnJX5+ZK8+16WiY2fBhgmytNj/P5bgxhzDgyDKnEqMm7SfJtRg+9ntDxsUshxeIUnCZBKWBJ60hajtvYMzvdaiPPTJCus4AUboW6YX9krq6IIvhZxyXAm7W8fYt67I5BeFl+eMJnGy/jQABDSYpRzVsjEMCz8RXsq65wOxQzTOe8YRjYsP98KHLGgKOqGieST2naCPN x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY5PR11MB6487.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(396003)(39860400002)(346002)(376002)(136003)(366004)(451199021)(9326002)(316002)(82960400001)(110136005)(30864003)(66446008)(66476007)(8676002)(52536014)(64756008)(76116006)(41300700001)(4326008)(38070700005)(66556008)(66946007)(5660300002)(122000001)(38100700002)(8936002)(478600001)(86362001)(2906002)(71200400001)(7696005)(53546011)(26005)(55016003)(33656002)(186003)(9686003)(6506007)(83380400001)(579004)(559001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OHBrdWQzZmgxZVBSYm9zNDViWXJZQ0syTnIyY1FOZ2hBMFlVOGNPbDF5ZWNR?= =?utf-8?B?NTdZaVBTTVhqUldoTHdGUkVYWGgwZFVDc1kwbTNIaFpHWW5yb1pUdlYrRzdC?= =?utf-8?B?Zys4bDNzbmtJZHU0ckNkNXRVaUxxMmpmYjN5d0syV25ENXllZ2V0eUhWbDJX?= =?utf-8?B?NzR1czJhZ1FPa0hwNDVia0xBR0h1L25FTGtUcGZvVlFZVjQvOUlLMnhSV04z?= =?utf-8?B?Mk5UejJUZFdHSjJjN3lrUVVzTjBXbnhtdzdGNHhnZnExNEQ4WDN4TThUWFl5?= =?utf-8?B?M1JNbC9PTUNKN2VSQXNYU3BWVzN2TndtcHdkZGJMVVVuRXlncC9HY0Z0RXdZ?= =?utf-8?B?QjFVOU5mVmY1Mmw0ZHQ0KzZwNkFXQ0dEZkk4M01FUDUvTFZHNjZlYklWOE40?= =?utf-8?B?aDNIQkdUZlVJbkJ4K3dFQzVZd25BRlA0bm0vMnBnMU9mc1NMRUpDQ3g5LzNW?= =?utf-8?B?RDEyWjdsMkR0VUw5MStyYTVPMmQvam15bEUrRU9xNFI1M1NyelZRakVPUE43?= =?utf-8?B?R0JxeGNHbnFhdGJOa28rZ2hMZnNrZTNFT1V5SjBvbi9MSDVEbFBwOW1jdldK?= =?utf-8?B?MzlWb3J6UEZRRkd2VGVQd080ZG5HcXl2eGhHNXdyVFdjRyt2MUY2OUZHK09V?= =?utf-8?B?WlhsN1YxeGVhVzB5NldXN1BDcFZKR1QyY3BBVEs5MkZ4UFVIQkx4TGxJUVpu?= =?utf-8?B?RzEwMWdUbVk4Wk5CY3NtSDJIQ1RTYTFvd216dU90ZzBaOXFTK1FNUit1Y1dx?= =?utf-8?B?T0hJS0FVd1RRb1FqMVBIS2o4VFZtM2ZGN05hcjV3NXhESDdzQld3UzcrdVY3?= =?utf-8?B?NEo5MVRaL0RKVXFlRkNZTU1kZEhJYnNPQzZaRVhGY3c0QUtQK1pTWVU1WnQz?= =?utf-8?B?eVozZXJRc3NIUFRieHJEV0hJVEpNVGg1QmNKM3JqMEZid3JENm9RUk96TmNQ?= =?utf-8?B?YmNna1RGekdmN3JkRDk1U3YyRHVXN2Q1a25yR3FmNWRDblQzdXp2b2l2bWln?= =?utf-8?B?OGxqejhSbGtYTWIxR3dSbndHNkcrcHZWZFF2aUJhZzRUY0RxV21RdnJuQzhy?= =?utf-8?B?TjVhRHRBTndMME9MMUJwYXJUaEFPdURZekdFUm8ycHNTKzgrZFNYRkZoSTlp?= =?utf-8?B?WXVJNkYwOXpXZXZkQVphQ1lWV25lWnhTQ1NvUlROQlprSktJUkIxYVBtWDZs?= =?utf-8?B?WWFibWR5Q1ovdkxHa3B0dldoUG41UjZ3UXpiazZiQndnMitJZ1hsdXlhZjBl?= =?utf-8?B?cnQ1Z2o1Mi94bUV5KzRIM04xWWFSK3ozMnBRelN4T3YzTzZuamtNdUV1MElT?= =?utf-8?B?SWpnTmljblFxM01aRWdlb01zOHhIdTh1QkgzMjdNdFpqbFZ3VnpIeEtjOVNv?= =?utf-8?B?dmRxdGFSOEpVN0tCMWNZbFlMS0hoeUVPbEYrNnVTS3JyUkhtbTA3ME1DcW5H?= =?utf-8?B?bXFzOVhiMmhKTCtKK0x3cWxwY1M2WEU0UWwvZ0RIMExPNlJ1MzJLT1JKVEhj?= =?utf-8?B?bkFPZUhtWHpiZzBEZVlpeVoyWTVJT3NQZGs5bmNRTjdWcFQwekZiYVBUaFM1?= =?utf-8?B?TlVpckY2dERZT0F4Nkx1Uk40SUxpRzh3M2p3L3FCNUc0d1RYekpWQnUzMTAz?= =?utf-8?B?bVY0VDVvdW1FMmhybW96NVY1UHo3MWJ2KytOd1IveVEwTjRQY2JKa1VPQm1Y?= =?utf-8?B?d2VZR0hob1ZzbE41Q0FybWlTd3NnTmNzSENMS244Z0x1VzNyNEJMQUJ1ekk5?= =?utf-8?B?WERtc21QT0o1RVVWUnNFUkVYbStrR2VaWkpTdjllcUY2Q2hISTRlNmZDMmFl?= =?utf-8?B?dHluZERyUDA0K1JxMVlGZGJwTEpRNCsxQ1VVUWlkTWJwYWZUMzNBeGxUU3V6?= =?utf-8?B?R3ZqbU9IZ3lXOEc5bDJhM3M5RWFTajNVc0tlbE9iZlc5clh3c3dOTy9MODk5?= =?utf-8?B?S3VJaU1kTzZQNEhwY01HakxmckhSQ2UrZFJEcWFZdUVBV291TVNueCsyUTFQ?= =?utf-8?B?dDdIcXBudmF3R254ZHhhRXB5emx5UzVIcmJJUmU1ME95TlZXaTFSZStmUjFu?= =?utf-8?B?WHhwSlVNRFBlTGdhdFNmMHMyT0RwOHRMOWZKNXdXTHBUcTBhbWVqd3BXZ1Rz?= =?utf-8?Q?riqZm5v5J6KGwS0axX48GUf/x?= Content-Type: multipart/alternative; boundary="_000_CY5PR11MB6487A92817740F09E573BC5892939CY5PR11MB6487namp_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY5PR11MB6487.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 37d45355-aa3a-4dbe-ede3-08db34e40206 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Apr 2023 08:10:09.4113 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: eaz9qQfUscp1F919TgmHWitx7rI8dr+US9zXMH+qv2JwpZm+Sxaev6m7z9cX8k6dhAM6EJ3LMaQx1wDUonTOFQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR11MB7983 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org --_000_CY5PR11MB6487A92817740F09E573BC5892939CY5PR11MB6487namp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgS3VtYXIsDQoNCkkgZG9u4oCZdCBoYXZlIG11Y2ggZXhwZXJpZW5jZSBvbiBJUHY2LCBidXQg SSB3aWxsIGZpbmQgdGltZSB0byByZXZpZXcgdGhlIHBhdGNoLg0KQmVzaWRlcywgaWYgYW55b25l IGNhbiBoZWxwIHRvIHJldmlldyB0aGUgcGF0Y2gsIGl0IHdvdWxkIGJlIGFwcHJlY2lhdGVkLg0K DQpUaGFua3MsDQpKaWF5dQ0KDQpGcm9tOiBrdW1hcmFwYXJhbWVzaHdhcmFuIHJhdGhpbmF2ZWwg PGt1bWFyYXBhcmFtZXNoOTJAZ21haWwuY29tPg0KU2VudDogVGh1cnNkYXksIE1hcmNoIDMwLCAy MDIzIDEyOjM5IEFNDQpUbzogZGV2QGRwZGsub3JnDQpDYzogSHUsIEppYXl1IDxqaWF5dS5odUBp bnRlbC5jb20+OyBUaG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ+DQpTdWJqZWN0 OiBSZTogW1BBVENIXSBncm8gOiBpcHY2IGNoYW5nZXMgdG8gc3VwcG9ydCBHUk8gZm9yIFRDUC9p cHY2DQoNCkhpLA0KDQpJIHdvdWxkIGxpa2UgdG8gZ2V0IGEgcmV2aWV3IG9uIHRoZSBmb2xsb3dp bmcgcGF0Y2ggd2hlcmUgc3VwcG9ydCBpcyBhZGRlZCBmb3IgSVB2NiBHUk8uDQoNClRoYW5rcywN ClBhcmFtLg0KDQoNCk9uIFRodSwgT2N0IDIwLCAyMDIyIGF0IDU6NDPigK9QTSBLdW1hcmEgUGFy YW1lc2h3YXJhbiA8a3VtYXJhcGFyYW1lc2g5MkBnbWFpbC5jb208bWFpbHRvOmt1bWFyYXBhcmFt ZXNoOTJAZ21haWwuY29tPj4gd3JvdGU6DQpGcm9tOiBLdW1hcmEgUGFyYW1lc2h3YXJhbiA8a3Vt YXJhcGFyYW1lc2g5MkBnbWFpbC5jb208bWFpbHRvOmt1bWFyYXBhcmFtZXNoOTJAZ21haWwuY29t Pj4NCg0KVGhlIHBhdGNoIGFkZHMgR1JPIHN1cHBvcnQgZm9yIFRDUC9pcHY2IHBhY2tldHMuIFRo aXMgZG9lcyBub3QNCmluY2x1ZGUgdGhlIHN1cHBvcnQgZm9yIHZ4bGFuLCB1ZHAgaXB2NiBwYWNr ZXRzLg0KDQpTaWduZWQtb2ZmLWJ5OiBLdW1hcmEgUGFyYW1lc2h3YXJhbiA8a3VtYXJhcGFyYW1l c2g5MkBnbWFpbC5jb208bWFpbHRvOmt1bWFyYXBhcmFtZXNoOTJAZ21haWwuY29tPj4NCi0tLQ0K djE6DQogICAgICAgICogQ2hhbmdlcyB0byBzdXBwb3J0IEdSTyBmb3IgVENQL2lwdjYgcGFja2V0 cy4gVGhpcyBkb2VzIG5vdCBpbmNsdWRlDQogICAgICAgICAgdnhsYW4gY2hhbmdlcy4NCiAgICAg ICAgKiBUaGUgR1JPIGlzIHBlcmZvcm1lZCBvbmx5IGZvciBpcHY2IHBhY2tldHMgdGhhdCBkb2Vz IG5vdCBjb250YWluDQogICAgICAgICBleHRlbnNpb24gaGVhZGVycy4NCiAgICAgICAgKiBUaGUg bG9naWMgZm9yIHRoZSBUQ1AgY29hbGVzY2luZyByZW1haW5zIHRoZSBzYW1lLCBpbiBpcHY2IGhl YWRlcg0KICAgICAgICAgIHRoZSBzb3VyY2UgYWRkcmVzcywgZGVzdGluYXRpb24gYWRkcmVzcywg ZmxvdyBsYWJlbCwgdmVyc2lvbiBmaWVsZHMNCiAgICAgICAgICBhcmUgZXhwZWN0ZWQgdG8gYmUg dGhlIHNhbWUuDQogICAgICAgICogUmUtb3JnYW5pc2VkIHRoZSBjb2RlIHRvIHJldXNlIGNlcnRh aW4gdGNwIGZ1bmN0aW9ucyBmb3IgYm90aCBpcHY0IGFuZA0KICAgICAgICAgIGlwdjYgZmxvd3Mu DQoNCiBsaWIvZ3JvL2dyb190Y3AuaCAgICAgICAgfCAxNTUgKysrKysrKysrKysrKysrKw0KIGxp Yi9ncm8vZ3JvX3RjcDQuYyAgICAgICB8ICAgNyArLQ0KIGxpYi9ncm8vZ3JvX3RjcDQuaCAgICAg ICB8IDE1MiArLS0tLS0tLS0tLS0tLS0NCiBsaWIvZ3JvL2dyb190Y3A2LmMgICAgICAgfCAzODgg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogbGliL2dyby9ncm9fdGNw Ni5oICAgICAgIHwgMTUwICsrKysrKysrKysrKysrKw0KIGxpYi9ncm8vZ3JvX3Z4bGFuX3RjcDQu YyB8ICAgMyArLQ0KIGxpYi9ncm8vZ3JvX3Z4bGFuX3RjcDQuaCB8ICAgMyArLQ0KIGxpYi9ncm8v bWVzb24uYnVpbGQgICAgICB8ICAgMSArDQogbGliL2dyby9ydGVfZ3JvLmMgICAgICAgIHwgIDg2 ICsrKysrKystLQ0KIGxpYi9ncm8vcnRlX2dyby5oICAgICAgICB8ICAgMyArDQogMTAgZmlsZXMg Y2hhbmdlZCwgNzc3IGluc2VydGlvbnMoKyksIDE3MSBkZWxldGlvbnMoLSkNCiBjcmVhdGUgbW9k ZSAxMDA2NDQgbGliL2dyby9ncm9fdGNwLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2dyby9n cm9fdGNwNi5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9ncm8vZ3JvX3RjcDYuaA0KDQpkaWZm IC0tZ2l0IGEvbGliL2dyby9ncm9fdGNwLmggYi9saWIvZ3JvL2dyb190Y3AuaA0KbmV3IGZpbGUg bW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLjE2YmNlOWQwOTgNCi0tLSAvZGV2L251bGwN CisrKyBiL2xpYi9ncm8vZ3JvX3RjcC5oDQpAQCAtMCwwICsxLDE1NSBAQA0KKyNpZm5kZWYgX0dS T19UQ1BfSF8NCisjZGVmaW5lIF9HUk9fVENQX0hfDQorDQorI2luY2x1ZGUgPHJ0ZV90Y3AuaD4N CisNCisvKg0KKyAqIFRoZSBtYXggbGVuZ3RoIG9mIGEgSVB2NCBwYWNrZXQsIHdoaWNoIGluY2x1 ZGVzIHRoZSBsZW5ndGggb2YgdGhlIEwzDQorICogaGVhZGVyLCB0aGUgTDQgaGVhZGVyIGFuZCB0 aGUgZGF0YSBwYXlsb2FkLg0KKyAqLw0KKyNkZWZpbmUgTUFYX0lQX1BLVF9MRU5HVEggVUlOVDE2 X01BWA0KKw0KKy8qIFRoZSBtYXhpbXVtIFRDUCBoZWFkZXIgbGVuZ3RoICovDQorI2RlZmluZSBN QVhfVENQX0hMRU4gNjANCisjZGVmaW5lIElOVkFMSURfVENQX0hEUkxFTihsZW4pIFwNCisgICAg ICAgKCgobGVuKSA8IHNpemVvZihzdHJ1Y3QgcnRlX3RjcF9oZHIpKSB8fCAoKGxlbikgPiBNQVhf VENQX0hMRU4pKQ0KKw0KK3N0cnVjdCBncm9fdGNwX2l0ZW0gew0KKyAgICAgICAvKg0KKyAgICAg ICAgKiBUaGUgZmlyc3QgTUJVRiBzZWdtZW50IG9mIHRoZSBwYWNrZXQuIElmIHRoZSB2YWx1ZQ0K KyAgICAgICAgKiBpcyBOVUxMLCBpdCBtZWFucyB0aGUgaXRlbSBpcyBlbXB0eS4NCisgICAgICAg ICovDQorICAgICAgIHN0cnVjdCBydGVfbWJ1ZiAqZmlyc3RzZWc7DQorICAgICAgIC8qIFRoZSBs YXN0IE1CVUYgc2VnbWVudCBvZiB0aGUgcGFja2V0ICovDQorICAgICAgIHN0cnVjdCBydGVfbWJ1 ZiAqbGFzdHNlZzsNCisgICAgICAgLyoNCisgICAgICAgICogVGhlIHRpbWUgd2hlbiB0aGUgZmly c3QgcGFja2V0IGlzIGluc2VydGVkIGludG8gdGhlIHRhYmxlLg0KKyAgICAgICAgKiBUaGlzIHZh bHVlIHdvbid0IGJlIHVwZGF0ZWQsIGV2ZW4gaWYgdGhlIHBhY2tldCBpcyBtZXJnZWQNCisgICAg ICAgICogd2l0aCBvdGhlciBwYWNrZXRzLg0KKyAgICAgICAgKi8NCisgICAgICAgdWludDY0X3Qg c3RhcnRfdGltZTsNCisgICAgICAgLyoNCisgICAgICAgICogbmV4dF9wa3RfaWR4IGlzIHVzZWQg dG8gY2hhaW4gdGhlIHBhY2tldHMgdGhhdA0KKyAgICAgICAgKiBhcmUgaW4gdGhlIHNhbWUgZmxv dyBidXQgY2FuJ3QgYmUgbWVyZ2VkIHRvZ2V0aGVyDQorICAgICAgICAqIChlLmcuIGNhdXNlZCBi eSBwYWNrZXQgcmVvcmRlcmluZykuDQorICAgICAgICAqLw0KKyAgICAgICB1aW50MzJfdCBuZXh0 X3BrdF9pZHg7DQorICAgICAgIC8qIFRDUCBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIHBhY2tldCAq Lw0KKyAgICAgICB1aW50MzJfdCBzZW50X3NlcTsNCisgICAgICAgLyogSVB2NCBJRCBvZiB0aGUg cGFja2V0ICovDQorICAgICAgIHVpbnQxNl90IGlwX2lkOw0KKyAgICAgICAvKiB0aGUgbnVtYmVy IG9mIG1lcmdlZCBwYWNrZXRzICovDQorICAgICAgIHVpbnQxNl90IG5iX21lcmdlZDsNCisgICAg ICAgLyogSW5kaWNhdGUgaWYgSVB2NCBJRCBjYW4gYmUgaWdub3JlZCAqLw0KKyAgICAgICB1aW50 OF90IGlzX2F0b21pYzsNCit9Ow0KKw0KKy8qDQorICogTWVyZ2UgdHdvIFRDUCBwYWNrZXRzIHdp dGhvdXQgdXBkYXRpbmcgY2hlY2tzdW1zLg0KKyAqIElmIGNtcCBpcyBsYXJnZXIgdGhhbiAwLCBh cHBlbmQgdGhlIG5ldyBwYWNrZXQgdG8gdGhlDQorICogb3JpZ2luYWwgcGFja2V0LiBPdGhlcndp c2UsIHByZS1wZW5kIHRoZSBuZXcgcGFja2V0IHRvDQorICogdGhlIG9yaWdpbmFsIHBhY2tldC4N CisgKi8NCitzdGF0aWMgaW5saW5lIGludA0KK21lcmdlX3R3b190Y3BfcGFja2V0cyhzdHJ1Y3Qg Z3JvX3RjcF9pdGVtICppdGVtLA0KKyAgICAgICAgICAgICAgIHN0cnVjdCBydGVfbWJ1ZiAqcGt0 LA0KKyAgICAgICAgICAgICAgIGludCBjbXAsDQorICAgICAgICAgICAgICAgdWludDMyX3Qgc2Vu dF9zZXEsDQorICAgICAgICAgICAgICAgdWludDE2X3QgaXBfaWQsDQorICAgICAgICAgICAgICAg dWludDE2X3QgbDJfb2Zmc2V0KQ0KK3sNCisgICAgICAgc3RydWN0IHJ0ZV9tYnVmICpwa3RfaGVh ZCwgKnBrdF90YWlsLCAqbGFzdHNlZzsNCisgICAgICAgdWludDE2X3QgaGRyX2xlbiwgbDJfbGVu Ow0KKw0KKyAgICAgICBpZiAoY21wID4gMCkgew0KKyAgICAgICAgICAgICAgIHBrdF9oZWFkID0g aXRlbS0+Zmlyc3RzZWc7DQorICAgICAgICAgICAgICAgcGt0X3RhaWwgPSBwa3Q7DQorICAgICAg IH0gZWxzZSB7DQorICAgICAgICAgICAgICAgcGt0X2hlYWQgPSBwa3Q7DQorICAgICAgICAgICAg ICAgcGt0X3RhaWwgPSBpdGVtLT5maXJzdHNlZzsNCisgICAgICAgfQ0KKw0KKyAgICAgICAvKiBj aGVjayBpZiB0aGUgSVB2NCBwYWNrZXQgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4IHZh bHVlICovDQorICAgICAgIGhkcl9sZW4gPSBsMl9vZmZzZXQgKyBwa3RfaGVhZC0+bDJfbGVuICsg cGt0X2hlYWQtPmwzX2xlbiArDQorICAgICAgICAgICAgICAgcGt0X2hlYWQtPmw0X2xlbjsNCisg ICAgICAgbDJfbGVuID0gbDJfb2Zmc2V0ID4gMCA/IHBrdF9oZWFkLT5vdXRlcl9sMl9sZW4gOiBw a3RfaGVhZC0+bDJfbGVuOw0KKyAgICAgICBpZiAodW5saWtlbHkocGt0X2hlYWQtPnBrdF9sZW4g LSBsMl9sZW4gKyBwa3RfdGFpbC0+cGt0X2xlbiAtDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGhkcl9sZW4gPiBNQVhfSVBfUEtUX0xFTkdUSCkpDQorICAgICAgICAgICAgICAgcmV0 dXJuIDA7DQorDQorICAgICAgIC8qIHJlbW92ZSB0aGUgcGFja2V0IGhlYWRlciBmb3IgdGhlIHRh aWwgcGFja2V0ICovDQorICAgICAgIHJ0ZV9wa3RtYnVmX2Fkaihwa3RfdGFpbCwgaGRyX2xlbik7 DQorDQorICAgICAgIC8qIGNoYWluIHR3byBwYWNrZXRzIHRvZ2V0aGVyICovDQorICAgICAgIGlm IChjbXAgPiAwKSB7DQorICAgICAgICAgICAgICAgaXRlbS0+bGFzdHNlZy0+bmV4dCA9IHBrdDsN CisgICAgICAgICAgICAgICBpdGVtLT5sYXN0c2VnID0gcnRlX3BrdG1idWZfbGFzdHNlZyhwa3Qp Ow0KKyAgICAgICAgICAgICAgIC8qIHVwZGF0ZSBJUCBJRCB0byB0aGUgbGFyZ2VyIHZhbHVlICov DQorICAgICAgICAgICAgICAgaXRlbS0+aXBfaWQgPSBpcF9pZDsNCisgICAgICAgfSBlbHNlIHsN CisgICAgICAgICAgICAgICBsYXN0c2VnID0gcnRlX3BrdG1idWZfbGFzdHNlZyhwa3QpOw0KKyAg ICAgICAgICAgICAgIGxhc3RzZWctPm5leHQgPSBpdGVtLT5maXJzdHNlZzsNCisgICAgICAgICAg ICAgICBpdGVtLT5maXJzdHNlZyA9IHBrdDsNCisgICAgICAgICAgICAgICAvKiB1cGRhdGUgc2Vu dF9zZXEgdG8gdGhlIHNtYWxsZXIgdmFsdWUgKi8NCisgICAgICAgICAgICAgICBpdGVtLT5zZW50 X3NlcSA9IHNlbnRfc2VxOw0KKyAgICAgICAgICAgICAgIGl0ZW0tPmlwX2lkID0gaXBfaWQ7DQor ICAgICAgIH0NCisgICAgICAgaXRlbS0+bmJfbWVyZ2VkKys7DQorDQorICAgICAgIC8qIHVwZGF0 ZSBNQlVGIG1ldGFkYXRhIGZvciB0aGUgbWVyZ2VkIHBhY2tldCAqLw0KKyAgICAgICBwa3RfaGVh ZC0+bmJfc2VncyArPSBwa3RfdGFpbC0+bmJfc2VnczsNCisgICAgICAgcGt0X2hlYWQtPnBrdF9s ZW4gKz0gcGt0X3RhaWwtPnBrdF9sZW47DQorDQorICAgICAgIHJldHVybiAxOw0KK30NCisNCisv Kg0KKyAqIENoZWNrIGlmIHR3byBUQ1AvSVB2NCBwYWNrZXRzIGFyZSBuZWlnaGJvcnMuDQorICov DQorc3RhdGljIGlubGluZSBpbnQNCitjaGVja19zZXFfb3B0aW9uKHN0cnVjdCBncm9fdGNwX2l0 ZW0gKml0ZW0sDQorICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV90Y3BfaGRyICp0Y3BoLA0KKyAg ICAgICAgICAgICAgIHVpbnQzMl90IHNlbnRfc2VxLA0KKyAgICAgICAgICAgICAgIHVpbnQxNl90 IGlwX2lkLA0KKyAgICAgICAgICAgICAgIHVpbnQxNl90IHRjcF9obCwNCisgICAgICAgICAgICAg ICB1aW50MTZfdCB0Y3BfZGwsDQorICAgICAgICAgICAgICAgdWludDE2X3QgbDJfb2Zmc2V0LA0K KyAgICAgICAgICAgICAgIHVpbnQ4X3QgaXNfYXRvbWljKQ0KK3sNCisgICAgICAgc3RydWN0IHJ0 ZV9tYnVmICpwa3Rfb3JpZyA9IGl0ZW0tPmZpcnN0c2VnOw0KKyAgICAgICBjaGFyICppcGhfb3Jp ZzsNCisgICAgICAgc3RydWN0IHJ0ZV90Y3BfaGRyICp0Y3BoX29yaWc7DQorICAgICAgIHVpbnQx Nl90IGxlbiwgdGNwX2hsX29yaWc7DQorDQorICAgICAgIGlwaF9vcmlnID0gKGNoYXIgKikocnRl X3BrdG1idWZfbXRvZChwa3Rfb3JpZywgY2hhciAqKSArDQorICAgICAgICAgICAgICAgIGwyX29m ZnNldCArIHBrdF9vcmlnLT5sMl9sZW4pOw0KKyAgICAgICB0Y3BoX29yaWcgPSAoc3RydWN0IHJ0 ZV90Y3BfaGRyICopKGlwaF9vcmlnICsgcGt0X29yaWctPmwzX2xlbik7DQorICAgICAgIHRjcF9o bF9vcmlnID0gcGt0X29yaWctPmw0X2xlbjsNCisNCisgICAgICAgLyogQ2hlY2sgaWYgVENQIG9w dGlvbiBmaWVsZHMgZXF1YWwgKi8NCisgICAgICAgbGVuID0gUlRFX01BWCh0Y3BfaGwsIHRjcF9o bF9vcmlnKSAtIHNpemVvZihzdHJ1Y3QgcnRlX3RjcF9oZHIpOw0KKyAgICAgICBpZiAoKHRjcF9o bCAhPSB0Y3BfaGxfb3JpZykgfHwgKChsZW4gPiAwKSAmJg0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobWVtY21wKHRjcGggKyAxLCB0Y3BoX29yaWcgKyAxLA0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbikgIT0gMCkpKQ0KKyAgICAgICAgICAgICAg IHJldHVybiAwOw0KKw0KKyAgICAgICAvKiBEb24ndCBtZXJnZSBwYWNrZXRzIHdob3NlIERGIGJp dHMgYXJlIGRpZmZlcmVudCAqLw0KKyAgICAgICBpZiAodW5saWtlbHkoaXRlbS0+aXNfYXRvbWlj IF4gaXNfYXRvbWljKSkNCisgICAgICAgICAgICAgICByZXR1cm4gMDsNCisNCisgICAgICAgLyog Y2hlY2sgaWYgdGhlIHR3byBwYWNrZXRzIGFyZSBuZWlnaGJvcnMgKi8NCisgICAgICAgbGVuID0g cGt0X29yaWctPnBrdF9sZW4gLSBsMl9vZmZzZXQgLSBwa3Rfb3JpZy0+bDJfbGVuIC0NCisgICAg ICAgICAgICAgICBwa3Rfb3JpZy0+bDNfbGVuIC0gdGNwX2hsX29yaWc7DQorICAgICAgIGlmICgo c2VudF9zZXEgPT0gaXRlbS0+c2VudF9zZXEgKyBsZW4pICYmIChpc19hdG9taWMgfHwNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlwX2lkID09IGl0ZW0tPmlwX2lkICsgMSkpKQ0K KyAgICAgICAgICAgICAgIC8qIGFwcGVuZCB0aGUgbmV3IHBhY2tldCAqLw0KKyAgICAgICAgICAg ICAgIHJldHVybiAxOw0KKyAgICAgICBlbHNlIGlmICgoc2VudF9zZXEgKyB0Y3BfZGwgPT0gaXRl bS0+c2VudF9zZXEpICYmIChpc19hdG9taWMgfHwNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGlwX2lkICsgaXRlbS0+bmJfbWVyZ2VkID09IGl0ZW0tPmlwX2lkKSkpDQorICAgICAg ICAgICAgICAgLyogcHJlLXBlbmQgdGhlIG5ldyBwYWNrZXQgKi8NCisgICAgICAgICAgICAgICBy ZXR1cm4gLTE7DQorDQorICAgICAgIHJldHVybiAwOw0KK30NCisNCisjZW5kaWYNCmRpZmYgLS1n aXQgYS9saWIvZ3JvL2dyb190Y3A0LmMgYi9saWIvZ3JvL2dyb190Y3A0LmMNCmluZGV4IDhmNWU4 MDAyNTAuLmVlYTJhNzJlY2QgMTAwNjQ0DQotLS0gYS9saWIvZ3JvL2dyb190Y3A0LmMNCisrKyBi L2xpYi9ncm8vZ3JvX3RjcDQuYw0KQEAgLTcsNiArNyw3IEBADQogI2luY2x1ZGUgPHJ0ZV9ldGhk ZXYuaD4NCg0KICNpbmNsdWRlICJncm9fdGNwNC5oIg0KKyNpbmNsdWRlICJncm9fdGNwLmgiDQoN CiB2b2lkICoNCiBncm9fdGNwNF90YmxfY3JlYXRlKHVpbnQxNl90IHNvY2tldF9pZCwNCkBAIC0z MCw3ICszMSw3IEBAIGdyb190Y3A0X3RibF9jcmVhdGUodWludDE2X3Qgc29ja2V0X2lkLA0KICAg ICAgICBpZiAodGJsID09IE5VTEwpDQogICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQoNCi0g ICAgICAgc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZ3JvX3RjcDRfaXRlbSkgKiBlbnRyaWVzX251bTsN CisgICAgICAgc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZ3JvX3RjcF9pdGVtKSAqIGVudHJpZXNfbnVt Ow0KICAgICAgICB0YmwtPml0ZW1zID0gcnRlX3ptYWxsb2Nfc29ja2V0KF9fZnVuY19fLA0KICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIFJURV9D QUNIRV9MSU5FX1NJWkUsDQpAQCAtMTc3LDcgKzE3OCw3IEBAIGluc2VydF9uZXdfZmxvdyhzdHJ1 Y3QgZ3JvX3RjcDRfdGJsICp0YmwsDQogICogdXBkYXRlIHRoZSBwYWNrZXQgbGVuZ3RoIGZvciB0 aGUgZmx1c2hlZCBwYWNrZXQuDQogICovDQogc3RhdGljIGlubGluZSB2b2lkDQotdXBkYXRlX2hl YWRlcihzdHJ1Y3QgZ3JvX3RjcDRfaXRlbSAqaXRlbSkNCit1cGRhdGVfaGVhZGVyKHN0cnVjdCBn cm9fdGNwX2l0ZW0gKml0ZW0pDQogew0KICAgICAgICBzdHJ1Y3QgcnRlX2lwdjRfaGRyICppcHY0 X2hkcjsNCiAgICAgICAgc3RydWN0IHJ0ZV9tYnVmICpwa3QgPSBpdGVtLT5maXJzdHNlZzsNCkBA IC0zMDIsNyArMzAzLDcgQEAgZ3JvX3RjcDRfcmVhc3NlbWJsZShzdHJ1Y3QgcnRlX21idWYgKnBr dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudF9zZXEsIGlwX2lkLCBwa3Qt Pmw0X2xlbiwgdGNwX2RsLCAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19h dG9taWMpOw0KICAgICAgICAgICAgICAgIGlmIChjbXApIHsNCi0gICAgICAgICAgICAgICAgICAg ICAgIGlmIChtZXJnZV90d29fdGNwNF9wYWNrZXRzKCYodGJsLT5pdGVtc1tjdXJfaWR4XSksDQor ICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVyZ2VfdHdvX3RjcF9wYWNrZXRzKCYodGJsLT5p dGVtc1tjdXJfaWR4XSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwa3QsIGNtcCwgc2VudF9zZXEsIGlwX2lkLCAwKSkNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIDE7DQogICAgICAgICAgICAgICAgICAgICAgICAvKg0KZGlm ZiAtLWdpdCBhL2xpYi9ncm8vZ3JvX3RjcDQuaCBiL2xpYi9ncm8vZ3JvX3RjcDQuaA0KaW5kZXgg MjEyZjk3YTA0Mi4uNjM0YTIxNWI5OCAxMDA2NDQNCi0tLSBhL2xpYi9ncm8vZ3JvX3RjcDQuaA0K KysrIGIvbGliL2dyby9ncm9fdGNwNC5oDQpAQCAtNSwyMiArNSw5IEBADQogI2lmbmRlZiBfR1JP X1RDUDRfSF8NCiAjZGVmaW5lIF9HUk9fVENQNF9IXw0KDQotI2luY2x1ZGUgPHJ0ZV90Y3AuaD4N Ci0NCiAjZGVmaW5lIElOVkFMSURfQVJSQVlfSU5ERVggMHhmZmZmZmZmZlVMDQogI2RlZmluZSBH Uk9fVENQNF9UQkxfTUFYX0lURU1fTlVNICgxMDI0VUwgKiAxMDI0VUwpDQoNCi0vKg0KLSAqIFRo ZSBtYXggbGVuZ3RoIG9mIGEgSVB2NCBwYWNrZXQsIHdoaWNoIGluY2x1ZGVzIHRoZSBsZW5ndGgg b2YgdGhlIEwzDQotICogaGVhZGVyLCB0aGUgTDQgaGVhZGVyIGFuZCB0aGUgZGF0YSBwYXlsb2Fk Lg0KLSAqLw0KLSNkZWZpbmUgTUFYX0lQVjRfUEtUX0xFTkdUSCBVSU5UMTZfTUFYDQotDQotLyog VGhlIG1heGltdW0gVENQIGhlYWRlciBsZW5ndGggKi8NCi0jZGVmaW5lIE1BWF9UQ1BfSExFTiA2 MA0KLSNkZWZpbmUgSU5WQUxJRF9UQ1BfSERSTEVOKGxlbikgXA0KLSAgICAgICAoKChsZW4pIDwg c2l6ZW9mKHN0cnVjdCBydGVfdGNwX2hkcikpIHx8ICgobGVuKSA+IE1BWF9UQ1BfSExFTikpDQot DQogLyogSGVhZGVyIGZpZWxkcyByZXByZXNlbnRpbmcgYSBUQ1AvSVB2NCBmbG93ICovDQogc3Ry dWN0IHRjcDRfZmxvd19rZXkgew0KICAgICAgICBzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgZXRoX3Nh ZGRyOw0KQEAgLTQyLDQyICsyOSwxMiBAQCBzdHJ1Y3QgZ3JvX3RjcDRfZmxvdyB7DQogICAgICAg IHVpbnQzMl90IHN0YXJ0X2luZGV4Ow0KIH07DQoNCi1zdHJ1Y3QgZ3JvX3RjcDRfaXRlbSB7DQot ICAgICAgIC8qDQotICAgICAgICAqIFRoZSBmaXJzdCBNQlVGIHNlZ21lbnQgb2YgdGhlIHBhY2tl dC4gSWYgdGhlIHZhbHVlDQotICAgICAgICAqIGlzIE5VTEwsIGl0IG1lYW5zIHRoZSBpdGVtIGlz IGVtcHR5Lg0KLSAgICAgICAgKi8NCi0gICAgICAgc3RydWN0IHJ0ZV9tYnVmICpmaXJzdHNlZzsN Ci0gICAgICAgLyogVGhlIGxhc3QgTUJVRiBzZWdtZW50IG9mIHRoZSBwYWNrZXQgKi8NCi0gICAg ICAgc3RydWN0IHJ0ZV9tYnVmICpsYXN0c2VnOw0KLSAgICAgICAvKg0KLSAgICAgICAgKiBUaGUg dGltZSB3aGVuIHRoZSBmaXJzdCBwYWNrZXQgaXMgaW5zZXJ0ZWQgaW50byB0aGUgdGFibGUuDQot ICAgICAgICAqIFRoaXMgdmFsdWUgd29uJ3QgYmUgdXBkYXRlZCwgZXZlbiBpZiB0aGUgcGFja2V0 IGlzIG1lcmdlZA0KLSAgICAgICAgKiB3aXRoIG90aGVyIHBhY2tldHMuDQotICAgICAgICAqLw0K LSAgICAgICB1aW50NjRfdCBzdGFydF90aW1lOw0KLSAgICAgICAvKg0KLSAgICAgICAgKiBuZXh0 X3BrdF9pZHggaXMgdXNlZCB0byBjaGFpbiB0aGUgcGFja2V0cyB0aGF0DQotICAgICAgICAqIGFy ZSBpbiB0aGUgc2FtZSBmbG93IGJ1dCBjYW4ndCBiZSBtZXJnZWQgdG9nZXRoZXINCi0gICAgICAg ICogKGUuZy4gY2F1c2VkIGJ5IHBhY2tldCByZW9yZGVyaW5nKS4NCi0gICAgICAgICovDQotICAg ICAgIHVpbnQzMl90IG5leHRfcGt0X2lkeDsNCi0gICAgICAgLyogVENQIHNlcXVlbmNlIG51bWJl ciBvZiB0aGUgcGFja2V0ICovDQotICAgICAgIHVpbnQzMl90IHNlbnRfc2VxOw0KLSAgICAgICAv KiBJUHY0IElEIG9mIHRoZSBwYWNrZXQgKi8NCi0gICAgICAgdWludDE2X3QgaXBfaWQ7DQotICAg ICAgIC8qIHRoZSBudW1iZXIgb2YgbWVyZ2VkIHBhY2tldHMgKi8NCi0gICAgICAgdWludDE2X3Qg bmJfbWVyZ2VkOw0KLSAgICAgICAvKiBJbmRpY2F0ZSBpZiBJUHY0IElEIGNhbiBiZSBpZ25vcmVk ICovDQotICAgICAgIHVpbnQ4X3QgaXNfYXRvbWljOw0KLX07DQotDQogLyoNCiAgKiBUQ1AvSVB2 NCByZWFzc2VtYmx5IHRhYmxlIHN0cnVjdHVyZS4NCiAgKi8NCiBzdHJ1Y3QgZ3JvX3RjcDRfdGJs IHsNCiAgICAgICAgLyogaXRlbSBhcnJheSAqLw0KLSAgICAgICBzdHJ1Y3QgZ3JvX3RjcDRfaXRl bSAqaXRlbXM7DQorICAgICAgIHN0cnVjdCBncm9fdGNwX2l0ZW0gKml0ZW1zOw0KICAgICAgICAv KiBmbG93IGFycmF5ICovDQogICAgICAgIHN0cnVjdCBncm9fdGNwNF9mbG93ICpmbG93czsNCiAg ICAgICAgLyogY3VycmVudCBpdGVtIG51bWJlciAqLw0KQEAgLTE5NSwxMTEgKzE1Miw0IEBAIGlz X3NhbWVfdGNwNF9mbG93KHN0cnVjdCB0Y3A0X2Zsb3dfa2V5IGsxLCBzdHJ1Y3QgdGNwNF9mbG93 X2tleSBrMikNCiAgICAgICAgICAgICAgICAgICAgICAgIChrMS5kc3RfcG9ydCA9PSBrMi5kc3Rf cG9ydCkpOw0KIH0NCg0KLS8qDQotICogTWVyZ2UgdHdvIFRDUC9JUHY0IHBhY2tldHMgd2l0aG91 dCB1cGRhdGluZyBjaGVja3N1bXMuDQotICogSWYgY21wIGlzIGxhcmdlciB0aGFuIDAsIGFwcGVu ZCB0aGUgbmV3IHBhY2tldCB0byB0aGUNCi0gKiBvcmlnaW5hbCBwYWNrZXQuIE90aGVyd2lzZSwg cHJlLXBlbmQgdGhlIG5ldyBwYWNrZXQgdG8NCi0gKiB0aGUgb3JpZ2luYWwgcGFja2V0Lg0KLSAq Lw0KLXN0YXRpYyBpbmxpbmUgaW50DQotbWVyZ2VfdHdvX3RjcDRfcGFja2V0cyhzdHJ1Y3QgZ3Jv X3RjcDRfaXRlbSAqaXRlbSwNCi0gICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX21idWYgKnBrdCwN Ci0gICAgICAgICAgICAgICBpbnQgY21wLA0KLSAgICAgICAgICAgICAgIHVpbnQzMl90IHNlbnRf c2VxLA0KLSAgICAgICAgICAgICAgIHVpbnQxNl90IGlwX2lkLA0KLSAgICAgICAgICAgICAgIHVp bnQxNl90IGwyX29mZnNldCkNCi17DQotICAgICAgIHN0cnVjdCBydGVfbWJ1ZiAqcGt0X2hlYWQs ICpwa3RfdGFpbCwgKmxhc3RzZWc7DQotICAgICAgIHVpbnQxNl90IGhkcl9sZW4sIGwyX2xlbjsN Ci0NCi0gICAgICAgaWYgKGNtcCA+IDApIHsNCi0gICAgICAgICAgICAgICBwa3RfaGVhZCA9IGl0 ZW0tPmZpcnN0c2VnOw0KLSAgICAgICAgICAgICAgIHBrdF90YWlsID0gcGt0Ow0KLSAgICAgICB9 IGVsc2Ugew0KLSAgICAgICAgICAgICAgIHBrdF9oZWFkID0gcGt0Ow0KLSAgICAgICAgICAgICAg IHBrdF90YWlsID0gaXRlbS0+Zmlyc3RzZWc7DQotICAgICAgIH0NCi0NCi0gICAgICAgLyogY2hl Y2sgaWYgdGhlIElQdjQgcGFja2V0IGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heCB2YWx1 ZSAqLw0KLSAgICAgICBoZHJfbGVuID0gbDJfb2Zmc2V0ICsgcGt0X2hlYWQtPmwyX2xlbiArIHBr dF9oZWFkLT5sM19sZW4gKw0KLSAgICAgICAgICAgICAgIHBrdF9oZWFkLT5sNF9sZW47DQotICAg ICAgIGwyX2xlbiA9IGwyX29mZnNldCA+IDAgPyBwa3RfaGVhZC0+b3V0ZXJfbDJfbGVuIDogcGt0 X2hlYWQtPmwyX2xlbjsNCi0gICAgICAgaWYgKHVubGlrZWx5KHBrdF9oZWFkLT5wa3RfbGVuIC0g bDJfbGVuICsgcGt0X3RhaWwtPnBrdF9sZW4gLQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBoZHJfbGVuID4gTUFYX0lQVjRfUEtUX0xFTkdUSCkpDQotICAgICAgICAgICAgICAgcmV0 dXJuIDA7DQotDQotICAgICAgIC8qIHJlbW92ZSB0aGUgcGFja2V0IGhlYWRlciBmb3IgdGhlIHRh aWwgcGFja2V0ICovDQotICAgICAgIHJ0ZV9wa3RtYnVmX2Fkaihwa3RfdGFpbCwgaGRyX2xlbik7 DQotDQotICAgICAgIC8qIGNoYWluIHR3byBwYWNrZXRzIHRvZ2V0aGVyICovDQotICAgICAgIGlm IChjbXAgPiAwKSB7DQotICAgICAgICAgICAgICAgaXRlbS0+bGFzdHNlZy0+bmV4dCA9IHBrdDsN Ci0gICAgICAgICAgICAgICBpdGVtLT5sYXN0c2VnID0gcnRlX3BrdG1idWZfbGFzdHNlZyhwa3Qp Ow0KLSAgICAgICAgICAgICAgIC8qIHVwZGF0ZSBJUCBJRCB0byB0aGUgbGFyZ2VyIHZhbHVlICov DQotICAgICAgICAgICAgICAgaXRlbS0+aXBfaWQgPSBpcF9pZDsNCi0gICAgICAgfSBlbHNlIHsN Ci0gICAgICAgICAgICAgICBsYXN0c2VnID0gcnRlX3BrdG1idWZfbGFzdHNlZyhwa3QpOw0KLSAg ICAgICAgICAgICAgIGxhc3RzZWctPm5leHQgPSBpdGVtLT5maXJzdHNlZzsNCi0gICAgICAgICAg ICAgICBpdGVtLT5maXJzdHNlZyA9IHBrdDsNCi0gICAgICAgICAgICAgICAvKiB1cGRhdGUgc2Vu dF9zZXEgdG8gdGhlIHNtYWxsZXIgdmFsdWUgKi8NCi0gICAgICAgICAgICAgICBpdGVtLT5zZW50 X3NlcSA9IHNlbnRfc2VxOw0KLSAgICAgICAgICAgICAgIGl0ZW0tPmlwX2lkID0gaXBfaWQ7DQot ICAgICAgIH0NCi0gICAgICAgaXRlbS0+bmJfbWVyZ2VkKys7DQotDQotICAgICAgIC8qIHVwZGF0 ZSBNQlVGIG1ldGFkYXRhIGZvciB0aGUgbWVyZ2VkIHBhY2tldCAqLw0KLSAgICAgICBwa3RfaGVh ZC0+bmJfc2VncyArPSBwa3RfdGFpbC0+bmJfc2VnczsNCi0gICAgICAgcGt0X2hlYWQtPnBrdF9s ZW4gKz0gcGt0X3RhaWwtPnBrdF9sZW47DQotDQotICAgICAgIHJldHVybiAxOw0KLX0NCi0NCi0v Kg0KLSAqIENoZWNrIGlmIHR3byBUQ1AvSVB2NCBwYWNrZXRzIGFyZSBuZWlnaGJvcnMuDQotICov DQotc3RhdGljIGlubGluZSBpbnQNCi1jaGVja19zZXFfb3B0aW9uKHN0cnVjdCBncm9fdGNwNF9p dGVtICppdGVtLA0KLSAgICAgICAgICAgICAgIHN0cnVjdCBydGVfdGNwX2hkciAqdGNwaCwNCi0g ICAgICAgICAgICAgICB1aW50MzJfdCBzZW50X3NlcSwNCi0gICAgICAgICAgICAgICB1aW50MTZf dCBpcF9pZCwNCi0gICAgICAgICAgICAgICB1aW50MTZfdCB0Y3BfaGwsDQotICAgICAgICAgICAg ICAgdWludDE2X3QgdGNwX2RsLA0KLSAgICAgICAgICAgICAgIHVpbnQxNl90IGwyX29mZnNldCwN Ci0gICAgICAgICAgICAgICB1aW50OF90IGlzX2F0b21pYykNCi17DQotICAgICAgIHN0cnVjdCBy dGVfbWJ1ZiAqcGt0X29yaWcgPSBpdGVtLT5maXJzdHNlZzsNCi0gICAgICAgc3RydWN0IHJ0ZV9p cHY0X2hkciAqaXBoX29yaWc7DQotICAgICAgIHN0cnVjdCBydGVfdGNwX2hkciAqdGNwaF9vcmln Ow0KLSAgICAgICB1aW50MTZfdCBsZW4sIHRjcF9obF9vcmlnOw0KLQ0KLSAgICAgICBpcGhfb3Jp ZyA9IChzdHJ1Y3QgcnRlX2lwdjRfaGRyICopKHJ0ZV9wa3RtYnVmX210b2QocGt0X29yaWcsIGNo YXIgKikgKw0KLSAgICAgICAgICAgICAgICAgICAgICAgbDJfb2Zmc2V0ICsgcGt0X29yaWctPmwy X2xlbik7DQotICAgICAgIHRjcGhfb3JpZyA9IChzdHJ1Y3QgcnRlX3RjcF9oZHIgKikoKGNoYXIg KilpcGhfb3JpZyArIHBrdF9vcmlnLT5sM19sZW4pOw0KLSAgICAgICB0Y3BfaGxfb3JpZyA9IHBr dF9vcmlnLT5sNF9sZW47DQotDQotICAgICAgIC8qIENoZWNrIGlmIFRDUCBvcHRpb24gZmllbGRz IGVxdWFsICovDQotICAgICAgIGxlbiA9IFJURV9NQVgodGNwX2hsLCB0Y3BfaGxfb3JpZykgLSBz aXplb2Yoc3RydWN0IHJ0ZV90Y3BfaGRyKTsNCi0gICAgICAgaWYgKCh0Y3BfaGwgIT0gdGNwX2hs X29yaWcpIHx8ICgobGVuID4gMCkgJiYNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG1lbWNtcCh0Y3BoICsgMSwgdGNwaF9vcmlnICsgMSwNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsZW4pICE9IDApKSkNCi0gICAgICAgICAgICAgICByZXR1cm4gMDsN Ci0NCi0gICAgICAgLyogRG9uJ3QgbWVyZ2UgcGFja2V0cyB3aG9zZSBERiBiaXRzIGFyZSBkaWZm ZXJlbnQgKi8NCi0gICAgICAgaWYgKHVubGlrZWx5KGl0ZW0tPmlzX2F0b21pYyBeIGlzX2F0b21p YykpDQotICAgICAgICAgICAgICAgcmV0dXJuIDA7DQotDQotICAgICAgIC8qIGNoZWNrIGlmIHRo ZSB0d28gcGFja2V0cyBhcmUgbmVpZ2hib3JzICovDQotICAgICAgIGxlbiA9IHBrdF9vcmlnLT5w a3RfbGVuIC0gbDJfb2Zmc2V0IC0gcGt0X29yaWctPmwyX2xlbiAtDQotICAgICAgICAgICAgICAg cGt0X29yaWctPmwzX2xlbiAtIHRjcF9obF9vcmlnOw0KLSAgICAgICBpZiAoKHNlbnRfc2VxID09 IGl0ZW0tPnNlbnRfc2VxICsgbGVuKSAmJiAoaXNfYXRvbWljIHx8DQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChpcF9pZCA9PSBpdGVtLT5pcF9pZCArIDEpKSkNCi0gICAgICAgICAg ICAgICAvKiBhcHBlbmQgdGhlIG5ldyBwYWNrZXQgKi8NCi0gICAgICAgICAgICAgICByZXR1cm4g MTsNCi0gICAgICAgZWxzZSBpZiAoKHNlbnRfc2VxICsgdGNwX2RsID09IGl0ZW0tPnNlbnRfc2Vx KSAmJiAoaXNfYXRvbWljIHx8DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpcF9p ZCArIGl0ZW0tPm5iX21lcmdlZCA9PSBpdGVtLT5pcF9pZCkpKQ0KLSAgICAgICAgICAgICAgIC8q IHByZS1wZW5kIHRoZSBuZXcgcGFja2V0ICovDQotICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0K LQ0KLSAgICAgICByZXR1cm4gMDsNCi19DQogI2VuZGlmDQpkaWZmIC0tZ2l0IGEvbGliL2dyby9n cm9fdGNwNi5jIGIvbGliL2dyby9ncm9fdGNwNi5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5k ZXggMDAwMDAwMDAwMC4uN2E3MzlmMjQ3Mg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbGliL2dyby9n cm9fdGNwNi5jDQpAQCAtMCwwICsxLDM4OCBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMy1DbGF1c2UNCisgKiBDb3B5cmlnaHQoYykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbg0K KyAqLw0KKw0KKyNpbmNsdWRlIDxydGVfbWFsbG9jLmg+DQorI2luY2x1ZGUgPHJ0ZV9tYnVmLmg+ DQorI2luY2x1ZGUgPHJ0ZV9ldGhkZXYuaD4NCisNCisjaW5jbHVkZSAiZ3JvX3RjcDYuaCINCisj aW5jbHVkZSAiZ3JvX3RjcC5oIg0KKw0KK3ZvaWQgKg0KK2dyb190Y3A2X3RibF9jcmVhdGUodWlu dDE2X3Qgc29ja2V0X2lkLA0KKyAgICAgICAgICAgICAgIHVpbnQxNl90IG1heF9mbG93X251bSwN CisgICAgICAgICAgICAgICB1aW50MTZfdCBtYXhfaXRlbV9wZXJfZmxvdykNCit7DQorICAgICAg IHN0cnVjdCBncm9fdGNwNl90YmwgKnRibDsNCisgICAgICAgc2l6ZV90IHNpemU7DQorICAgICAg IHVpbnQzMl90IGVudHJpZXNfbnVtLCBpOw0KKw0KKyAgICAgICBlbnRyaWVzX251bSA9IG1heF9m bG93X251bSAqIG1heF9pdGVtX3Blcl9mbG93Ow0KKyAgICAgICBlbnRyaWVzX251bSA9IFJURV9N SU4oZW50cmllc19udW0sIEdST19UQ1A2X1RCTF9NQVhfSVRFTV9OVU0pOw0KKw0KKyAgICAgICBp ZiAoZW50cmllc19udW0gPT0gMCkNCisgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisNCisg ICAgICAgdGJsID0gcnRlX3ptYWxsb2Nfc29ja2V0KF9fZnVuY19fLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZW9mKHN0cnVjdCBncm9fdGNwNl90YmwpLA0KKyAgICAgICAgICAgICAgICAg ICAgICAgUlRFX0NBQ0hFX0xJTkVfU0laRSwNCisgICAgICAgICAgICAgICAgICAgICAgIHNvY2tl dF9pZCk7DQorICAgICAgIGlmICh0YmwgPT0gTlVMTCkNCisgICAgICAgICAgICAgICByZXR1cm4g TlVMTDsNCisNCisgICAgICAgc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZ3JvX3RjcF9pdGVtKSAqIGVu dHJpZXNfbnVtOw0KKyAgICAgICB0YmwtPml0ZW1zID0gcnRlX3ptYWxsb2Nfc29ja2V0KF9fZnVu Y19fLA0KKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSwNCisgICAgICAgICAgICAgICAgICAg ICAgIFJURV9DQUNIRV9MSU5FX1NJWkUsDQorICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRf aWQpOw0KKyAgICAgICBpZiAodGJsLT5pdGVtcyA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAg cnRlX2ZyZWUodGJsKTsNCisgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAgICAgfQ0K KyAgICAgICB0YmwtPm1heF9pdGVtX251bSA9IGVudHJpZXNfbnVtOw0KKw0KKyAgICAgICBzaXpl ID0gc2l6ZW9mKHN0cnVjdCBncm9fdGNwNl9mbG93KSAqIGVudHJpZXNfbnVtOw0KKyAgICAgICB0 YmwtPmZsb3dzID0gcnRlX3ptYWxsb2Nfc29ja2V0KF9fZnVuY19fLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZSwNCisgICAgICAgICAgICAgICAgICAgICAgIFJURV9DQUNIRV9MSU5FX1NJ WkUsDQorICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRfaWQpOw0KKyAgICAgICBpZiAodGJs LT5mbG93cyA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgcnRlX2ZyZWUodGJsLT5pdGVtcyk7 DQorICAgICAgICAgICAgICAgcnRlX2ZyZWUodGJsKTsNCisgICAgICAgICAgICAgICByZXR1cm4g TlVMTDsNCisgICAgICAgfQ0KKyAgICAgICAvKiBJTlZBTElEX0FSUkFZX0lOREVYIGluZGljYXRl cyBhbiBlbXB0eSBmbG93ICovDQorICAgICAgIGZvciAoaSA9IDA7IGkgPCBlbnRyaWVzX251bTsg aSsrKQ0KKyAgICAgICAgICAgICAgIHRibC0+Zmxvd3NbaV0uc3RhcnRfaW5kZXggPSBJTlZBTElE X0FSUkFZX0lOREVYOw0KKyAgICAgICB0YmwtPm1heF9mbG93X251bSA9IGVudHJpZXNfbnVtOw0K Kw0KKyAgICAgICByZXR1cm4gdGJsOw0KK30NCisNCit2b2lkDQorZ3JvX3RjcDZfdGJsX2Rlc3Ry b3kodm9pZCAqdGJsKQ0KK3sNCisgICAgICAgc3RydWN0IGdyb190Y3A2X3RibCAqdGNwX3RibCA9 IHRibDsNCisNCisgICAgICAgaWYgKHRjcF90YmwpIHsNCisgICAgICAgICAgICAgICBydGVfZnJl ZSh0Y3BfdGJsLT5pdGVtcyk7DQorICAgICAgICAgICAgICAgcnRlX2ZyZWUodGNwX3RibC0+Zmxv d3MpOw0KKyAgICAgICB9DQorICAgICAgIHJ0ZV9mcmVlKHRjcF90YmwpOw0KK30NCisNCitzdGF0 aWMgaW5saW5lIHVpbnQzMl90DQorZmluZF9hbl9lbXB0eV9pdGVtKHN0cnVjdCBncm9fdGNwNl90 YmwgKnRibCkNCit7DQorICAgICAgIHVpbnQzMl90IGk7DQorICAgICAgIHVpbnQzMl90IG1heF9p dGVtX251bSA9IHRibC0+bWF4X2l0ZW1fbnVtOw0KKw0KKyAgICAgICBmb3IgKGkgPSAwOyBpIDwg bWF4X2l0ZW1fbnVtOyBpKyspDQorICAgICAgICAgICAgICAgaWYgKHRibC0+aXRlbXNbaV0uZmly c3RzZWcgPT0gTlVMTCkNCisgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpOw0KKyAgICAg ICByZXR1cm4gSU5WQUxJRF9BUlJBWV9JTkRFWDsNCit9DQorDQorc3RhdGljIGlubGluZSB1aW50 MzJfdA0KK2ZpbmRfYW5fZW1wdHlfZmxvdyhzdHJ1Y3QgZ3JvX3RjcDZfdGJsICp0YmwpDQorew0K KyAgICAgICB1aW50MzJfdCBpOw0KKyAgICAgICB1aW50MzJfdCBtYXhfZmxvd19udW0gPSB0Ymwt Pm1heF9mbG93X251bTsNCisNCisgICAgICAgZm9yIChpID0gMDsgaSA8IG1heF9mbG93X251bTsg aSsrKQ0KKyAgICAgICAgICAgICAgIGlmICh0YmwtPmZsb3dzW2ldLnN0YXJ0X2luZGV4ID09IElO VkFMSURfQVJSQVlfSU5ERVgpDQorICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsNCisg ICAgICAgcmV0dXJuIElOVkFMSURfQVJSQVlfSU5ERVg7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUg dWludDMyX3QNCitpbnNlcnRfbmV3X2l0ZW0oc3RydWN0IGdyb190Y3A2X3RibCAqdGJsLA0KKyAg ICAgICAgICAgICAgIHN0cnVjdCBydGVfbWJ1ZiAqcGt0LA0KKyAgICAgICAgICAgICAgIHVpbnQ2 NF90IHN0YXJ0X3RpbWUsDQorICAgICAgICAgICAgICAgdWludDMyX3QgcHJldl9pZHgsDQorICAg ICAgICAgICAgICAgdWludDMyX3Qgc2VudF9zZXEsDQorICAgICAgICAgICAgICAgdWludDhfdCBp c19hdG9taWMpDQorew0KKyAgICAgICB1aW50MzJfdCBpdGVtX2lkeDsNCisNCisgICAgICAgaXRl bV9pZHggPSBmaW5kX2FuX2VtcHR5X2l0ZW0odGJsKTsNCisgICAgICAgaWYgKGl0ZW1faWR4ID09 IElOVkFMSURfQVJSQVlfSU5ERVgpDQorICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfQVJS QVlfSU5ERVg7DQorDQorICAgICAgIHRibC0+aXRlbXNbaXRlbV9pZHhdLmZpcnN0c2VnID0gcGt0 Ow0KKyAgICAgICB0YmwtPml0ZW1zW2l0ZW1faWR4XS5sYXN0c2VnID0gcnRlX3BrdG1idWZfbGFz dHNlZyhwa3QpOw0KKyAgICAgICB0YmwtPml0ZW1zW2l0ZW1faWR4XS5zdGFydF90aW1lID0gc3Rh cnRfdGltZTsNCisgICAgICAgdGJsLT5pdGVtc1tpdGVtX2lkeF0ubmV4dF9wa3RfaWR4ID0gSU5W QUxJRF9BUlJBWV9JTkRFWDsNCisgICAgICAgdGJsLT5pdGVtc1tpdGVtX2lkeF0uc2VudF9zZXEg PSBzZW50X3NlcTsNCisgICAgICAgdGJsLT5pdGVtc1tpdGVtX2lkeF0ubmJfbWVyZ2VkID0gMTsN CisgICAgICAgdGJsLT5pdGVtc1tpdGVtX2lkeF0uaXNfYXRvbWljID0gaXNfYXRvbWljOw0KKyAg ICAgICB0YmwtPml0ZW1fbnVtKys7DQorDQorICAgICAgIC8qIGlmIHRoZSBwcmV2aW91cyBwYWNr ZXQgZXhpc3RzLCBjaGFpbiB0aGVtIHRvZ2V0aGVyLiAqLw0KKyAgICAgICBpZiAocHJldl9pZHgg IT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkgew0KKyAgICAgICAgICAgICAgIHRibC0+aXRlbXNbaXRl bV9pZHhdLm5leHRfcGt0X2lkeCA9DQorICAgICAgICAgICAgICAgICAgICAgICB0YmwtPml0ZW1z W3ByZXZfaWR4XS5uZXh0X3BrdF9pZHg7DQorICAgICAgICAgICAgICAgdGJsLT5pdGVtc1twcmV2 X2lkeF0ubmV4dF9wa3RfaWR4ID0gaXRlbV9pZHg7DQorICAgICAgIH0NCisNCisgICAgICAgcmV0 dXJuIGl0ZW1faWR4Ow0KK30NCisNCitzdGF0aWMgaW5saW5lIHVpbnQzMl90DQorZGVsZXRlX2l0 ZW0oc3RydWN0IGdyb190Y3A2X3RibCAqdGJsLCB1aW50MzJfdCBpdGVtX2lkeCwNCisgICAgICAg ICAgICAgICB1aW50MzJfdCBwcmV2X2l0ZW1faWR4KQ0KK3sNCisgICAgICAgdWludDMyX3QgbmV4 dF9pZHggPSB0YmwtPml0ZW1zW2l0ZW1faWR4XS5uZXh0X3BrdF9pZHg7DQorDQorICAgICAgIC8q IE5VTEwgaW5kaWNhdGVzIGFuIGVtcHR5IGl0ZW0gKi8NCisgICAgICAgdGJsLT5pdGVtc1tpdGVt X2lkeF0uZmlyc3RzZWcgPSBOVUxMOw0KKyAgICAgICB0YmwtPml0ZW1fbnVtLS07DQorICAgICAg IGlmIChwcmV2X2l0ZW1faWR4ICE9IElOVkFMSURfQVJSQVlfSU5ERVgpDQorICAgICAgICAgICAg ICAgdGJsLT5pdGVtc1twcmV2X2l0ZW1faWR4XS5uZXh0X3BrdF9pZHggPSBuZXh0X2lkeDsNCisN CisgICAgICAgcmV0dXJuIG5leHRfaWR4Ow0KK30NCisNCitzdGF0aWMgaW5saW5lIHVpbnQzMl90 DQoraW5zZXJ0X25ld19mbG93KHN0cnVjdCBncm9fdGNwNl90YmwgKnRibCwNCisgICAgICAgICAg ICAgICBzdHJ1Y3QgdGNwNl9mbG93X2tleSAqc3JjLA0KKyAgICAgICAgICAgICAgIHJ0ZV9iZTMy X3QgdnRjX2Zsb3csDQorICAgICAgICAgICAgICAgdWludDMyX3QgaXRlbV9pZHgpDQorew0KKyAg ICAgICBzdHJ1Y3QgdGNwNl9mbG93X2tleSAqZHN0Ow0KKyAgICAgICB1aW50MzJfdCBmbG93X2lk eDsNCisNCisgICAgICAgZmxvd19pZHggPSBmaW5kX2FuX2VtcHR5X2Zsb3codGJsKTsNCisgICAg ICAgaWYgKHVubGlrZWx5KGZsb3dfaWR4ID09IElOVkFMSURfQVJSQVlfSU5ERVgpKQ0KKyAgICAg ICAgICAgICAgIHJldHVybiBJTlZBTElEX0FSUkFZX0lOREVYOw0KKw0KKyAgICAgICBkc3QgPSAm KHRibC0+Zmxvd3NbZmxvd19pZHhdLmtleSk7DQorDQorICAgICAgIHJ0ZV9ldGhlcl9hZGRyX2Nv cHkoJihzcmMtPmV0aF9zYWRkciksICYoZHN0LT5ldGhfc2FkZHIpKTsNCisgICAgICAgcnRlX2V0 aGVyX2FkZHJfY29weSgmKHNyYy0+ZXRoX2RhZGRyKSwgJihkc3QtPmV0aF9kYWRkcikpOw0KKyAg ICAgICBtZW1jcHkoJmRzdC0+c3JjX2FkZHJbMF0sICZzcmMtPnNyY19hZGRyWzBdLCBzaXplb2Yo ZHN0LT5zcmNfYWRkcikpOw0KKyAgICAgICBtZW1jcHkoJmRzdC0+ZHN0X2FkZHJbMF0sICZzcmMt PmRzdF9hZGRyWzBdLCBzaXplb2YoZHN0LT5kc3RfYWRkcikpOw0KKyAgICAgICBkc3QtPnJlY3Zf YWNrID0gc3JjLT5yZWN2X2FjazsNCisgICAgICAgZHN0LT5zcmNfcG9ydCA9IHNyYy0+c3JjX3Bv cnQ7DQorICAgICAgIGRzdC0+ZHN0X3BvcnQgPSBzcmMtPmRzdF9wb3J0Ow0KKw0KKyAgICAgICB0 YmwtPmZsb3dzW2Zsb3dfaWR4XS5zdGFydF9pbmRleCA9IGl0ZW1faWR4Ow0KKyAgICAgICB0Ymwt PmZsb3dfbnVtKys7DQorICAgICAgIHRibC0+Zmxvd3MtPnZ0Y19mbG93ID0gdnRjX2Zsb3c7DQor DQorICAgICAgIHJldHVybiBmbG93X2lkeDsNCit9DQorDQorLyoNCisgKiB1cGRhdGUgdGhlIHBh Y2tldCBsZW5ndGggZm9yIHRoZSBmbHVzaGVkIHBhY2tldC4NCisgKi8NCitzdGF0aWMgaW5saW5l IHZvaWQNCit1cGRhdGVfaGVhZGVyKHN0cnVjdCBncm9fdGNwX2l0ZW0gKml0ZW0pDQorew0KKyAg ICAgICBzdHJ1Y3QgcnRlX2lwdjZfaGRyICppcHY2X2hkcjsNCisgICAgICAgc3RydWN0IHJ0ZV9t YnVmICpwa3QgPSBpdGVtLT5maXJzdHNlZzsNCisNCisgICAgICAgaXB2Nl9oZHIgPSAoc3RydWN0 IHJ0ZV9pcHY2X2hkciAqKShydGVfcGt0bWJ1Zl9tdG9kKHBrdCwgY2hhciAqKSArDQorICAgICAg ICAgICAgICAgICAgICAgICBwa3QtPmwyX2xlbik7DQorICAgICAgIGlwdjZfaGRyLT5wYXlsb2Fk X2xlbiA9IHJ0ZV9jcHVfdG9fYmVfMTYocGt0LT5wa3RfbGVuIC0NCisgICAgICAgICAgICAgICAg ICAgICAgIHBrdC0+bDJfbGVuIC0gcGt0LT5sM19sZW4pOw0KK30NCisNCitpbnQzMl90DQorZ3Jv X3RjcDZfcmVhc3NlbWJsZShzdHJ1Y3QgcnRlX21idWYgKnBrdCwNCisgICAgICAgICAgICAgICBz dHJ1Y3QgZ3JvX3RjcDZfdGJsICp0YmwsDQorICAgICAgICAgICAgICAgdWludDY0X3Qgc3RhcnRf dGltZSkNCit7DQorICAgICAgIHN0cnVjdCBydGVfZXRoZXJfaGRyICpldGhfaGRyOw0KKyAgICAg ICBzdHJ1Y3QgcnRlX2lwdjZfaGRyICppcHY2X2hkcjsNCisgICAgICAgc3RydWN0IHJ0ZV90Y3Bf aGRyICp0Y3BfaGRyOw0KKyAgICAgICB1aW50MzJfdCBzZW50X3NlcTsNCisgICAgICAgaW50MzJf dCB0Y3BfZGw7DQorICAgICAgIHVpbnQxNl90IGlwX3RsZW47DQorICAgICAgIHN0cnVjdCB0Y3A2 X2Zsb3dfa2V5IGtleTsNCisgICAgICAgdWludDMyX3QgY3VyX2lkeCwgcHJldl9pZHgsIGl0ZW1f aWR4Ow0KKyAgICAgICB1aW50MzJfdCBpLCBtYXhfZmxvd19udW0sIHJlbWFpbmluZ19mbG93X251 bTsNCisgICAgICAgaW50IGNtcDsNCisgICAgICAgdWludDhfdCBmaW5kOw0KKyAgICAgICBydGVf YmUzMl90IHZ0Y19mbG93X2RpZmY7DQorDQorICAgICAgIC8qDQorICAgICAgICAqIERvbid0IHBy b2Nlc3MgdGhlIHBhY2tldCB3aG9zZSBUQ1AgaGVhZGVyIGxlbmd0aCBpcyBncmVhdGVyDQorICAg ICAgICAqIHRoYW4gNjAgYnl0ZXMgb3IgbGVzcyB0aGFuIDIwIGJ5dGVzLg0KKyAgICAgICAgKi8N CisgICAgICAgaWYgKHVubGlrZWx5KElOVkFMSURfVENQX0hEUkxFTihwa3QtPmw0X2xlbikpKQ0K KyAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisNCisgICAgICAgZXRoX2hkciA9IHJ0ZV9wa3Rt YnVmX210b2QocGt0LCBzdHJ1Y3QgcnRlX2V0aGVyX2hkciAqKTsNCisgICAgICAgaXB2Nl9oZHIg PSAoc3RydWN0IHJ0ZV9pcHY2X2hkciAqKSgoY2hhciAqKWV0aF9oZHIgKyBwa3QtPmwyX2xlbik7 DQorICAgICAgIHRjcF9oZHIgPSAoc3RydWN0IHJ0ZV90Y3BfaGRyICopKChjaGFyICopaXB2Nl9o ZHIgKyBwa3QtPmwzX2xlbik7DQorDQorICAgICAgIC8qDQorICAgICAgICAqIERvbid0IHByb2Nl c3MgdGhlIHBhY2tldCB3aGljaCBoYXMgRklOLCBTWU4sIFJTVCwgUFNILCBVUkcsIEVDRQ0KKyAg ICAgICAgKiBvciBDV1Igc2V0Lg0KKyAgICAgICAgKi8NCisgICAgICAgaWYgKHRjcF9oZHItPnRj cF9mbGFncyAhPSBSVEVfVENQX0FDS19GTEFHKQ0KKyAgICAgICAgICAgICAgIHJldHVybiAtMTsN CisNCisgICAgICAgaXBfdGxlbiA9IHJ0ZV9iZV90b19jcHVfMTYoaXB2Nl9oZHItPnBheWxvYWRf bGVuKTsNCisgICAgICAgLyoNCisgICAgICAgICogVHJpbSB0aGUgdGFpbCBwYWRkaW5nIGJ5dGVz LiBUaGUgSVB2NiBoZWFkZXIgaXMgZml4ZWQgdG8NCisgICAgICAgICogNDAgYnl0ZXMgdW5saWtl IElQdjQgdGhhdCBpcyB2YXJpYWJsZS4gVGhlIGxlbmd0aCBpbiB0aGUgSVB2NiBoZWFkZXINCisg ICAgICAgICogY29udGFpbnMgb25seSBsZW5ndGggb2YgVENQIEhlYWRlciArIFRDUCBQYXlsb2Fk LCB3aGVyZWFzIElQdjQgaGVhZGVyIGNvbnRhaW5zDQorICAgICAgICAqIGxlbmd0aCBvZiBJUCBI ZWFkZXIgKyBUQ1AgSGVhZGVyICsgVENQIFBheWxvYWQNCisgICAgICAgICovDQorICAgICAgIGlm IChwa3QtPnBrdF9sZW4gPiAodWludDMyX3QpKGlwX3RsZW4gKyBwa3QtPmwyX2xlbiArIHBrdC0+ bDNfbGVuKSkNCisgICAgICAgICAgICAgICBydGVfcGt0bWJ1Zl90cmltKHBrdCwgcGt0LT5wa3Rf bGVuIC0gaXBfdGxlbiAtIHBrdC0+bDJfbGVuIC0gcGt0LT5sM19sZW4pOw0KKyAgICAgICAvKg0K KyAgICAgICAgKiBEb24ndCBwcm9jZXNzIHRoZSBwYWNrZXQgd2hvc2UgcGF5bG9hZCBsZW5ndGgg aXMgbGVzcyB0aGFuIG9yDQorICAgICAgICAqIGVxdWFsIHRvIDAuDQorICAgICAgICAqLw0KKyAg ICAgICB0Y3BfZGwgPSBpcF90bGVuIC0gcGt0LT5sNF9sZW47DQorICAgICAgIGlmICh0Y3BfZGwg PD0gMCkNCisgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorDQorICAgICAgIHNlbnRfc2VxID0g cnRlX2JlX3RvX2NwdV8zMih0Y3BfaGRyLT5zZW50X3NlcSk7DQorDQorICAgICAgIHJ0ZV9ldGhl cl9hZGRyX2NvcHkoJihldGhfaGRyLT5zcmNfYWRkciksICYoa2V5LmV0aF9zYWRkcikpOw0KKyAg ICAgICBydGVfZXRoZXJfYWRkcl9jb3B5KCYoZXRoX2hkci0+ZHN0X2FkZHIpLCAmKGtleS5ldGhf ZGFkZHIpKTsNCisgICAgbWVtY3B5KCZrZXkuc3JjX2FkZHJbMF0sICZpcHY2X2hkci0+c3JjX2Fk ZHIsIHNpemVvZihrZXkuc3JjX2FkZHIpKTsNCisgICAgbWVtY3B5KCZrZXkuZHN0X2FkZHJbMF0s ICZpcHY2X2hkci0+ZHN0X2FkZHIsIHNpemVvZihrZXkuZHN0X2FkZHIpKTsNCisgICAgICAga2V5 LnNyY19wb3J0ID0gdGNwX2hkci0+c3JjX3BvcnQ7DQorICAgICAgIGtleS5kc3RfcG9ydCA9IHRj cF9oZHItPmRzdF9wb3J0Ow0KKyAgICAgICBrZXkucmVjdl9hY2sgPSB0Y3BfaGRyLT5yZWN2X2Fj azsNCisNCisgICAgICAgLyogU2VhcmNoIGZvciBhIG1hdGNoZWQgZmxvdy4gKi8NCisgICAgICAg bWF4X2Zsb3dfbnVtID0gdGJsLT5tYXhfZmxvd19udW07DQorICAgICAgIHJlbWFpbmluZ19mbG93 X251bSA9IHRibC0+Zmxvd19udW07DQorICAgICAgIGZpbmQgPSAwOw0KKyAgICAgICBmb3IgKGkg PSAwOyBpIDwgbWF4X2Zsb3dfbnVtICYmIHJlbWFpbmluZ19mbG93X251bTsgaSsrKSB7DQorICAg ICAgICAgICAgICAgaWYgKHRibC0+Zmxvd3NbaV0uc3RhcnRfaW5kZXggIT0gSU5WQUxJRF9BUlJB WV9JTkRFWCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3NhbWVfdGNwNl9mbG93 KHRibC0+Zmxvd3NbaV0ua2V5LCBrZXkpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIElQIHZlcnNpb24gKDQp IFRyYWZmaWMgQ2xhc3MgKDgpIEZsb3cgTGFiZWwgKDIwKQ0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKiBBbGwgZmllbGRzIGV4Y2VwdCBUcmFmZmljIGNsYXNzIHNob3VsZCBiZSBz YW1lDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZ0Y19mbG93X2RpZmYgPSAoaXB2Nl9oZHItPnZ0Y19mbG93IF4gdGJs LT5mbG93cy0+dnRjX2Zsb3cpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo dnRjX2Zsb3dfZGlmZiAmIGh0b25sKDB4RjAwRkZGRkYpKSB7DQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZCA9IDE7DQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAg ICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nX2Zsb3dfbnVtLS07DQorICAg ICAgICAgICAgICAgfQ0KKyAgICAgICB9DQorDQorICAgICAgIC8qDQorICAgICAgICAqIEZhaWwg dG8gZmluZCBhIG1hdGNoZWQgZmxvdy4gSW5zZXJ0IGEgbmV3IGZsb3cgYW5kIHN0b3JlIHRoZQ0K KyAgICAgICAgKiBwYWNrZXQgaW50byB0aGUgZmxvdy4NCisgICAgICAgICovDQorICAgICAgIGlm IChmaW5kID09IDApIHsNCisgICAgICAgICAgICAgICBpdGVtX2lkeCA9IGluc2VydF9uZXdfaXRl bSh0YmwsIHBrdCwgc3RhcnRfdGltZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SU5WQUxJRF9BUlJBWV9JTkRFWCwgc2VudF9zZXEsIHRydWUpOw0KKyAgICAgICAgICAgICAgIGlm IChpdGVtX2lkeCA9PSBJTlZBTElEX0FSUkFZX0lOREVYKQ0KKyAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgICAgIGlmIChpbnNlcnRfbmV3X2Zsb3codGJsLCAm a2V5LCBpcHY2X2hkci0+dnRjX2Zsb3csIGl0ZW1faWR4KSA9PQ0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJTlZBTElEX0FSUkFZX0lOREVYKSB7DQorICAgICAgICAgICAgICAgICAg ICAgICAvKg0KKyAgICAgICAgICAgICAgICAgICAgICAgICogRmFpbCB0byBpbnNlcnQgYSBuZXcg Zmxvdywgc28gZGVsZXRlIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICogc3RvcmVkIHBh Y2tldC4NCisgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgICAgICAgICAgICAgICAg ICAgZGVsZXRlX2l0ZW0odGJsLCBpdGVtX2lkeCwgSU5WQUxJRF9BUlJBWV9JTkRFWCk7DQorICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgICAgfQ0KKyAgICAg ICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICB9DQorDQorICAgICAgIC8qDQorICAgICAgICAq IENoZWNrIGFsbCBwYWNrZXRzIGluIHRoZSBmbG93IGFuZCB0cnkgdG8gZmluZCBhIG5laWdoYm9y IGZvcg0KKyAgICAgICAgKiB0aGUgaW5wdXQgcGFja2V0Lg0KKyAgICAgICAgKi8NCisgICAgICAg Y3VyX2lkeCA9IHRibC0+Zmxvd3NbaV0uc3RhcnRfaW5kZXg7DQorICAgICAgIHByZXZfaWR4ID0g Y3VyX2lkeDsNCisgICAgICAgZG8gew0KKyAgICAgICAgICAgICAgIGNtcCA9IGNoZWNrX3NlcV9v cHRpb24oJih0YmwtPml0ZW1zW2N1cl9pZHhdKSwgdGNwX2hkciwNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VudF9zZXEsIDAsIHBrdC0+bDRfbGVuLCB0Y3BfZGwsIDAsDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOw0KKyAgICAgICAgICAgICAgIGlmIChj bXApIHsNCisgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXJnZV90d29fdGNwX3BhY2tldHMo Jih0YmwtPml0ZW1zW2N1cl9pZHhdKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBrdCwgY21wLCBzZW50X3NlcSwgMCwgMCkpIHsNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAg ICAgICAgICAgICAgICAgICAgLyoNCisgICAgICAgICAgICAgICAgICAgICAgICAqIEZhaWwgdG8g bWVyZ2UgdGhlIHR3byBwYWNrZXRzLCBhcyB0aGUgcGFja2V0DQorICAgICAgICAgICAgICAgICAg ICAgICAgKiBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXggdmFsdWUuIFN0b3JlDQorICAg ICAgICAgICAgICAgICAgICAgICAgKiB0aGUgcGFja2V0IGludG8gdGhlIGZsb3cuDQorICAgICAg ICAgICAgICAgICAgICAgICAgKi8NCisgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnNlcnRf bmV3X2l0ZW0odGJsLCBwa3QsIHN0YXJ0X3RpbWUsIGN1cl9pZHgsDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW50X3NlcSwgdHJ1ZSkgPT0NCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlZBTElEX0FSUkFZX0lOREVYKQ0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gMDsNCisgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAg cHJldl9pZHggPSBjdXJfaWR4Ow0KKyAgICAgICAgICAgICAgIGN1cl9pZHggPSB0YmwtPml0ZW1z W2N1cl9pZHhdLm5leHRfcGt0X2lkeDsNCisgICAgICAgfSB3aGlsZSAoY3VyX2lkeCAhPSBJTlZB TElEX0FSUkFZX0lOREVYKTsNCisNCisgICAgICAgLyogRmFpbCB0byBmaW5kIGEgbmVpZ2hib3Is IHNvIHN0b3JlIHRoZSBwYWNrZXQgaW50byB0aGUgZmxvdy4gKi8NCisgICAgICAgaWYgKGluc2Vy dF9uZXdfaXRlbSh0YmwsIHBrdCwgc3RhcnRfdGltZSwgcHJldl9pZHgsIHNlbnRfc2VxLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSA9PSBJTlZBTElEX0FSUkFZX0lOREVY KQ0KKyAgICAgICAgICAgICAgIHJldHVybiAtMTsNCisNCisgICAgICAgcmV0dXJuIDA7DQorfQ0K Kw0KK3VpbnQxNl90DQorZ3JvX3RjcDZfdGJsX3RpbWVvdXRfZmx1c2goc3RydWN0IGdyb190Y3A2 X3RibCAqdGJsLA0KKyAgICAgICAgICAgICAgIHVpbnQ2NF90IGZsdXNoX3RpbWVzdGFtcCwNCisg ICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX21idWYgKipvdXQsDQorICAgICAgICAgICAgICAgdWlu dDE2X3QgbmJfb3V0KQ0KK3sNCisgICAgICAgdWludDE2X3QgayA9IDA7DQorICAgICAgIHVpbnQz Ml90IGksIGo7DQorICAgICAgIHVpbnQzMl90IG1heF9mbG93X251bSA9IHRibC0+bWF4X2Zsb3df bnVtOw0KKw0KKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbWF4X2Zsb3dfbnVtOyBpKyspIHsNCisg ICAgICAgICAgICAgICBpZiAodW5saWtlbHkodGJsLT5mbG93X251bSA9PSAwKSkNCisgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBrOw0KKw0KKyAgICAgICAgICAgICAgIGogPSB0YmwtPmZs b3dzW2ldLnN0YXJ0X2luZGV4Ow0KKyAgICAgICAgICAgICAgIHdoaWxlIChqICE9IElOVkFMSURf QVJSQVlfSU5ERVgpIHsNCisgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YmwtPml0ZW1zW2pd LnN0YXJ0X3RpbWUgPD0gZmx1c2hfdGltZXN0YW1wKSB7DQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG91dFtrKytdID0gdGJsLT5pdGVtc1tqXS5maXJzdHNlZzsNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKHRibC0+aXRlbXNbal0ubmJfbWVyZ2VkID4gMSkNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfaGVhZGVyKCYodGJs LT5pdGVtc1tqXSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBEZWxldGUgdGhlIHBhY2tldCBhbmQgZ2V0IHRo ZSBuZXh0DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHBhY2tldCBpbiB0aGUg Zmxvdy4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGogPSBkZWxldGVfaXRlbSh0YmwsIGosIElOVkFMSURfQVJSQVlf SU5ERVgpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YmwtPmZsb3dzW2ldLnN0 YXJ0X2luZGV4ID0gajsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPT0g SU5WQUxJRF9BUlJBWV9JTkRFWCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0YmwtPmZsb3dfbnVtLS07DQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmICh1bmxpa2VseShrID09IG5iX291dCkpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGs7DQorICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICogVGhlIGxlZnQgcGFja2V0cyBpbiB0aGlzIGZsb3cgd29uJ3QgYmUNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGltZW91dC4gR28gdG8gY2hlY2sgb3RoZXIg Zmxvd3MuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICB9DQorICAgICAgIH0N CisgICAgICAgcmV0dXJuIGs7DQorfQ0KKw0KK3VpbnQzMl90DQorZ3JvX3RjcDZfdGJsX3BrdF9j b3VudCh2b2lkICp0YmwpDQorew0KKyAgICAgICBzdHJ1Y3QgZ3JvX3RjcDZfdGJsICpncm9fdGJs ID0gdGJsOw0KKw0KKyAgICAgICBpZiAoZ3JvX3RibCkNCisgICAgICAgICAgICAgICByZXR1cm4g Z3JvX3RibC0+aXRlbV9udW07DQorDQorICAgICAgIHJldHVybiAwOw0KK30NCmRpZmYgLS1naXQg YS9saWIvZ3JvL2dyb190Y3A2LmggYi9saWIvZ3JvL2dyb190Y3A2LmgNCm5ldyBmaWxlIG1vZGUg MTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi5hZWEyMzFhZGJiDQotLS0gL2Rldi9udWxsDQorKysg Yi9saWIvZ3JvL2dyb190Y3A2LmgNCkBAIC0wLDAgKzEsMTUwIEBADQorLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KKyAqIENvcHlyaWdodChjKSAyMDE3IEludGVsIENv cnBvcmF0aW9uDQorICovDQorDQorI2lmbmRlZiBfR1JPX1RDUDZfSF8NCisjZGVmaW5lIF9HUk9f VENQNl9IXw0KKw0KKyNkZWZpbmUgSU5WQUxJRF9BUlJBWV9JTkRFWCAweGZmZmZmZmZmVUwNCisj ZGVmaW5lIEdST19UQ1A2X1RCTF9NQVhfSVRFTV9OVU0gKDEwMjRVTCAqIDEwMjRVTCkNCisNCisv KiBIZWFkZXIgZmllbGRzIHJlcHJlc2VudGluZyBhIFRDUC9JUHY2IGZsb3cgKi8NCitzdHJ1Y3Qg dGNwNl9mbG93X2tleSB7DQorICAgICAgIHN0cnVjdCBydGVfZXRoZXJfYWRkciBldGhfc2FkZHI7 DQorICAgICAgIHN0cnVjdCBydGVfZXRoZXJfYWRkciBldGhfZGFkZHI7DQorICAgIHVpbnQ4X3Qg IHNyY19hZGRyWzE2XTsNCisgICAgdWludDhfdCAgZHN0X2FkZHJbMTZdOw0KKw0KKyAgICAgICB1 aW50MzJfdCByZWN2X2FjazsNCisgICAgICAgdWludDE2X3Qgc3JjX3BvcnQ7DQorICAgICAgIHVp bnQxNl90IGRzdF9wb3J0Ow0KK307DQorDQorc3RydWN0IGdyb190Y3A2X2Zsb3cgew0KKyAgICAg ICBzdHJ1Y3QgdGNwNl9mbG93X2tleSBrZXk7DQorICAgICAgIHJ0ZV9iZTMyX3QgdnRjX2Zsb3c7 DQorICAgICAgIC8qDQorICAgICAgICAqIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgcGFja2V0IGlu IHRoZSBmbG93Lg0KKyAgICAgICAgKiBJTlZBTElEX0FSUkFZX0lOREVYIGluZGljYXRlcyBhbiBl bXB0eSBmbG93Lg0KKyAgICAgICAgKi8NCisgICAgICAgdWludDMyX3Qgc3RhcnRfaW5kZXg7DQor fTsNCisNCisvKg0KKyAqIFRDUC9JUHY2IHJlYXNzZW1ibHkgdGFibGUgc3RydWN0dXJlLg0KKyAq Lw0KK3N0cnVjdCBncm9fdGNwNl90Ymwgew0KKyAgICAgICAvKiBpdGVtIGFycmF5ICovDQorICAg ICAgIHN0cnVjdCBncm9fdGNwX2l0ZW0gKml0ZW1zOw0KKyAgICAgICAvKiBmbG93IGFycmF5ICov DQorICAgICAgIHN0cnVjdCBncm9fdGNwNl9mbG93ICpmbG93czsNCisgICAgICAgLyogY3VycmVu dCBpdGVtIG51bWJlciAqLw0KKyAgICAgICB1aW50MzJfdCBpdGVtX251bTsNCisgICAgICAgLyog Y3VycmVudCBmbG93IG51bSAqLw0KKyAgICAgICB1aW50MzJfdCBmbG93X251bTsNCisgICAgICAg LyogaXRlbSBhcnJheSBzaXplICovDQorICAgICAgIHVpbnQzMl90IG1heF9pdGVtX251bTsNCisg ICAgICAgLyogZmxvdyBhcnJheSBzaXplICovDQorICAgICAgIHVpbnQzMl90IG1heF9mbG93X251 bTsNCit9Ow0KKw0KKy8qKg0KKyAqIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIFRDUC9JUHY2IHJl YXNzZW1ibHkgdGFibGUuDQorICoNCisgKiBAcGFyYW0gc29ja2V0X2lkDQorICogIFNvY2tldCBp bmRleCBmb3IgYWxsb2NhdGluZyB0aGUgVENQL0lQdjYgcmVhc3NlbWJsZSB0YWJsZQ0KKyAqIEBw YXJhbSBtYXhfZmxvd19udW0NCisgKiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGZsb3dzIGluIHRo ZSBUQ1AvSVB2NiBHUk8gdGFibGUNCisgKiBAcGFyYW0gbWF4X2l0ZW1fcGVyX2Zsb3cNCisgKiAg VGhlIG1heGltdW0gbnVtYmVyIG9mIHBhY2tldHMgcGVyIGZsb3cNCisgKg0KKyAqIEByZXR1cm4N CisgKiAgLSBSZXR1cm4gdGhlIHRhYmxlIHBvaW50ZXIgb24gc3VjY2Vzcy4NCisgKiAgLSBSZXR1 cm4gTlVMTCBvbiBmYWlsdXJlLg0KKyAqLw0KK3ZvaWQgKmdyb190Y3A2X3RibF9jcmVhdGUodWlu dDE2X3Qgc29ja2V0X2lkLA0KKyAgICAgICAgICAgICAgIHVpbnQxNl90IG1heF9mbG93X251bSwN CisgICAgICAgICAgICAgICB1aW50MTZfdCBtYXhfaXRlbV9wZXJfZmxvdyk7DQorDQorLyoqDQor ICogVGhpcyBmdW5jdGlvbiBkZXN0cm95cyBhIFRDUC9JUHY2IHJlYXNzZW1ibHkgdGFibGUuDQor ICoNCisgKiBAcGFyYW0gdGJsDQorICogIFBvaW50ZXIgcG9pbnRpbmcgdG8gdGhlIFRDUC9JUHY2 IHJlYXNzZW1ibHkgdGFibGUuDQorICovDQordm9pZCBncm9fdGNwNl90YmxfZGVzdHJveSh2b2lk ICp0YmwpOw0KKw0KKy8qKg0KKyAqIFRoaXMgZnVuY3Rpb24gbWVyZ2VzIGEgVENQL0lQdjYgcGFj a2V0LiBJdCBkb2Vzbid0IHByb2Nlc3MgdGhlIHBhY2tldCwNCisgKiB3aGljaCBoYXMgU1lOLCBG SU4sIFJTVCwgUFNILCBDV1IsIEVDRSBvciBVUkcgc2V0LCBvciBkb2Vzbid0IGhhdmUNCisgKiBw YXlsb2FkLg0KKyAqDQorICogVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGNoZWNrIGlmIHRoZSBwYWNr ZXQgaGFzIGNvcnJlY3QgY2hlY2tzdW1zIGFuZA0KKyAqIGRvZXNuJ3QgcmUtY2FsY3VsYXRlIGNo ZWNrc3VtcyBmb3IgdGhlIG1lcmdlZCBwYWNrZXQuIEFkZGl0aW9uYWxseSwNCisgKiBpdCBhc3N1 bWVzIHRoZSBwYWNrZXRzIGFyZSBjb21wbGV0ZSAoaS5lLiwgTUY9PTAgJiYgZnJhZ19vZmY9PTAp LA0KKyAqIHdoZW4gSVAgZnJhZ21lbnRhdGlvbiBpcyBwb3NzaWJsZSAoaS5lLiwgREY9PTApLiBJ dCByZXR1cm5zIHRoZQ0KKyAqIHBhY2tldCwgaWYgdGhlIHBhY2tldCBoYXMgaW52YWxpZCBwYXJh bWV0ZXJzIChlLmcuIFNZTiBiaXQgaXMgc2V0KQ0KKyAqIG9yIHRoZXJlIGlzIG5vIGF2YWlsYWJs ZSBzcGFjZSBpbiB0aGUgdGFibGUuDQorICoNCisgKiBAcGFyYW0gcGt0DQorICogIFBhY2tldCB0 byByZWFzc2VtYmxlDQorICogQHBhcmFtIHRibA0KKyAqICBQb2ludGVyIHBvaW50aW5nIHRvIHRo ZSBUQ1AvSVB2NiByZWFzc2VtYmx5IHRhYmxlDQorICogQHN0YXJ0X3RpbWUNCisgKiAgVGhlIHRp bWUgd2hlbiB0aGUgcGFja2V0IGlzIGluc2VydGVkIGludG8gdGhlIHRhYmxlDQorICoNCisgKiBA cmV0dXJuDQorICogIC0gUmV0dXJuIGEgcG9zaXRpdmUgdmFsdWUgaWYgdGhlIHBhY2tldCBpcyBt ZXJnZWQuDQorICogIC0gUmV0dXJuIHplcm8gaWYgdGhlIHBhY2tldCBpc24ndCBtZXJnZWQgYnV0 IHN0b3JlZCBpbiB0aGUgdGFibGUuDQorICogIC0gUmV0dXJuIGEgbmVnYXRpdmUgdmFsdWUgZm9y IGludmFsaWQgcGFyYW1ldGVycyBvciBubyBhdmFpbGFibGUNCisgKiAgICBzcGFjZSBpbiB0aGUg dGFibGUuDQorICovDQoraW50MzJfdCBncm9fdGNwNl9yZWFzc2VtYmxlKHN0cnVjdCBydGVfbWJ1 ZiAqcGt0LA0KKyAgICAgICAgICAgICAgIHN0cnVjdCBncm9fdGNwNl90YmwgKnRibCwNCisgICAg ICAgICAgICAgICB1aW50NjRfdCBzdGFydF90aW1lKTsNCisNCisvKioNCisgKiBUaGlzIGZ1bmN0 aW9uIGZsdXNoZXMgdGltZW91dCBwYWNrZXRzIGluIGEgVENQL0lQdjQgcmVhc3NlbWJseSB0YWJs ZSwNCisgKiBhbmQgd2l0aG91dCB1cGRhdGluZyBjaGVja3N1bXMuDQorICoNCisgKiBAcGFyYW0g dGJsDQorICogIFRDUC9JUHY0IHJlYXNzZW1ibHkgdGFibGUgcG9pbnRlcg0KKyAqIEBwYXJhbSBm bHVzaF90aW1lc3RhbXANCisgKiAgRmx1c2ggcGFja2V0cyB3aGljaCBhcmUgaW5zZXJ0ZWQgaW50 byB0aGUgdGFibGUgYmVmb3JlIG9yIGF0IHRoZQ0KKyAqICBmbHVzaF90aW1lc3RhbXAuDQorICog QHBhcmFtIG91dA0KKyAqICBQb2ludGVyIGFycmF5IHVzZWQgdG8ga2VlcCBmbHVzaGVkIHBhY2tl dHMNCisgKiBAcGFyYW0gbmJfb3V0DQorICogIFRoZSBlbGVtZW50IG51bWJlciBpbiAnb3V0Jy4g SXQgYWxzbyBkZXRlcm1pbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZg0KKyAqICBwYWNrZXRzIHRo YXQgY2FuIGJlIGZsdXNoZWQgZmluYWxseS4NCisgKg0KKyAqIEByZXR1cm4NCisgKiAgVGhlIG51 bWJlciBvZiBmbHVzaGVkIHBhY2tldHMNCisgKi8NCit1aW50MTZfdCBncm9fdGNwNl90YmxfdGlt ZW91dF9mbHVzaChzdHJ1Y3QgZ3JvX3RjcDZfdGJsICp0YmwsDQorICAgICAgICAgICAgICAgdWlu dDY0X3QgZmx1c2hfdGltZXN0YW1wLA0KKyAgICAgICAgICAgICAgIHN0cnVjdCBydGVfbWJ1ZiAq Km91dCwNCisgICAgICAgICAgICAgICB1aW50MTZfdCBuYl9vdXQpOw0KKw0KKy8qKg0KKyAqIFRo aXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRoZSBwYWNrZXRzIGluIGEgVENQL0lQ djQNCisgKiByZWFzc2VtYmx5IHRhYmxlLg0KKyAqDQorICogQHBhcmFtIHRibA0KKyAqICBUQ1Av SVB2NCByZWFzc2VtYmx5IHRhYmxlIHBvaW50ZXINCisgKg0KKyAqIEByZXR1cm4NCisgKiAgVGhl IG51bWJlciBvZiBwYWNrZXRzIGluIHRoZSB0YWJsZQ0KKyAqLw0KK3VpbnQzMl90IGdyb190Y3A2 X3RibF9wa3RfY291bnQodm9pZCAqdGJsKTsNCisNCisvKg0KKyAqIENoZWNrIGlmIHR3byBUQ1Av SVB2NCBwYWNrZXRzIGJlbG9uZyB0byB0aGUgc2FtZSBmbG93Lg0KKyAqLw0KK3N0YXRpYyBpbmxp bmUgaW50DQoraXNfc2FtZV90Y3A2X2Zsb3coc3RydWN0IHRjcDZfZmxvd19rZXkgazEsIHN0cnVj dCB0Y3A2X2Zsb3dfa2V5IGsyKQ0KK3sNCisgICAgcmV0dXJuICghbWVtY21wKCZrMSwgJmsyLCBz aXplb2Yoc3RydWN0IHRjcDZfZmxvd19rZXkpKSk7DQorfQ0KKw0KKyNlbmRpZg0KXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlDQpkaWZmIC0tZ2l0IGEvbGliL2dyby9ncm9fdnhsYW5fdGNwNC5j IGIvbGliL2dyby9ncm9fdnhsYW5fdGNwNC5jDQppbmRleCAzYmU0ZGViN2M3Li41NmIzMGI4Yzk4 IDEwMDY0NA0KLS0tIGEvbGliL2dyby9ncm9fdnhsYW5fdGNwNC5jDQorKysgYi9saWIvZ3JvL2dy b192eGxhbl90Y3A0LmMNCkBAIC03LDYgKzcsNyBAQA0KICNpbmNsdWRlIDxydGVfZXRoZGV2Lmg+ DQogI2luY2x1ZGUgPHJ0ZV91ZHAuaD4NCg0KKyNpbmNsdWRlICJncm9fdGNwLmgiDQogI2luY2x1 ZGUgImdyb192eGxhbl90Y3A0LmgiDQoNCiB2b2lkICoNCkBAIC0yNDgsNyArMjQ5LDcgQEAgbWVy Z2VfdHdvX3Z4bGFuX3RjcDRfcGFja2V0cyhzdHJ1Y3QgZ3JvX3Z4bGFuX3RjcDRfaXRlbSAqaXRl bSwNCiAgICAgICAgICAgICAgICB1aW50MTZfdCBvdXRlcl9pcF9pZCwNCiAgICAgICAgICAgICAg ICB1aW50MTZfdCBpcF9pZCkNCiB7DQotICAgICAgIGlmIChtZXJnZV90d29fdGNwNF9wYWNrZXRz KCZpdGVtLT5pbm5lcl9pdGVtLCBwa3QsIGNtcCwgc2VudF9zZXEsDQorICAgICAgIGlmIChtZXJn ZV90d29fdGNwX3BhY2tldHMoJml0ZW0tPmlubmVyX2l0ZW0sIHBrdCwgY21wLCBzZW50X3NlcSwN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBfaWQsIHBrdC0+b3V0ZXJfbDJfbGVu ICsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGt0LT5vdXRlcl9sM19sZW4pKSB7 DQogICAgICAgICAgICAgICAgLyogVXBkYXRlIHRoZSBvdXRlciBJUHY0IElEIHRvIHRoZSBsYXJn ZSB2YWx1ZS4gKi8NCmRpZmYgLS1naXQgYS9saWIvZ3JvL2dyb192eGxhbl90Y3A0LmggYi9saWIv Z3JvL2dyb192eGxhbl90Y3A0LmgNCmluZGV4IDc4MzI5NDJhNjguLmQ2OGQ1ZmNkNWIgMTAwNjQ0 DQotLS0gYS9saWIvZ3JvL2dyb192eGxhbl90Y3A0LmgNCisrKyBiL2xpYi9ncm8vZ3JvX3Z4bGFu X3RjcDQuaA0KQEAgLTUsNiArNSw3IEBADQogI2lmbmRlZiBfR1JPX1ZYTEFOX1RDUDRfSF8NCiAj ZGVmaW5lIF9HUk9fVlhMQU5fVENQNF9IXw0KDQorI2luY2x1ZGUgImdyb190Y3AuaCINCiAjaW5j bHVkZSAiZ3JvX3RjcDQuaCINCg0KICNkZWZpbmUgR1JPX1ZYTEFOX1RDUDRfVEJMX01BWF9JVEVN X05VTSAoMTAyNFVMICogMTAyNFVMKQ0KQEAgLTM2LDcgKzM3LDcgQEAgc3RydWN0IGdyb192eGxh bl90Y3A0X2Zsb3cgew0KIH07DQoNCiBzdHJ1Y3QgZ3JvX3Z4bGFuX3RjcDRfaXRlbSB7DQotICAg ICAgIHN0cnVjdCBncm9fdGNwNF9pdGVtIGlubmVyX2l0ZW07DQorICAgICAgIHN0cnVjdCBncm9f dGNwX2l0ZW0gaW5uZXJfaXRlbTsNCiAgICAgICAgLyogSVB2NCBJRCBpbiB0aGUgb3V0ZXIgSVB2 NCBoZWFkZXIgKi8NCiAgICAgICAgdWludDE2X3Qgb3V0ZXJfaXBfaWQ7DQogICAgICAgIC8qIElu ZGljYXRlIGlmIG91dGVyIElQdjQgSUQgY2FuIGJlIGlnbm9yZWQgKi8NCmRpZmYgLS1naXQgYS9s aWIvZ3JvL21lc29uLmJ1aWxkIGIvbGliL2dyby9tZXNvbi5idWlsZA0KaW5kZXggZTRmYTI5NThi ZC4uZGJjZTA1MjIwZCAxMDA2NDQNCi0tLSBhL2xpYi9ncm8vbWVzb24uYnVpbGQNCisrKyBiL2xp Yi9ncm8vbWVzb24uYnVpbGQNCkBAIC00LDYgKzQsNyBAQA0KIHNvdXJjZXMgPSBmaWxlcygNCiAg ICAgICAgICdydGVfZ3JvLmMnLA0KICAgICAgICAgJ2dyb190Y3A0LmMnLA0KKyAgICAgICAgJ2dy b190Y3A2LmMnLA0KICAgICAgICAgJ2dyb191ZHA0LmMnLA0KICAgICAgICAgJ2dyb192eGxhbl90 Y3A0LmMnLA0KICAgICAgICAgJ2dyb192eGxhbl91ZHA0LmMnLA0KZGlmZiAtLWdpdCBhL2xpYi9n cm8vcnRlX2dyby5jIGIvbGliL2dyby9ydGVfZ3JvLmMNCmluZGV4IGUzNTM5OWZkNDIuLmM4MTgw ZDI0ZTMgMTAwNjQ0DQotLS0gYS9saWIvZ3JvL3J0ZV9ncm8uYw0KKysrIGIvbGliL2dyby9ydGVf Z3JvLmMNCkBAIC04LDYgKzgsNyBAQA0KDQogI2luY2x1ZGUgInJ0ZV9ncm8uaCINCiAjaW5jbHVk ZSAiZ3JvX3RjcDQuaCINCisjaW5jbHVkZSAiZ3JvX3RjcDYuaCINCiAjaW5jbHVkZSAiZ3JvX3Vk cDQuaCINCiAjaW5jbHVkZSAiZ3JvX3Z4bGFuX3RjcDQuaCINCiAjaW5jbHVkZSAiZ3JvX3Z4bGFu X3VkcDQuaCINCkBAIC0yMCwxNCArMjEsMTYgQEAgdHlwZWRlZiB1aW50MzJfdCAoKmdyb190Ymxf cGt0X2NvdW50X2ZuKSh2b2lkICp0YmwpOw0KDQogc3RhdGljIGdyb190YmxfY3JlYXRlX2ZuIHRi bF9jcmVhdGVfZm5bUlRFX0dST19UWVBFX01BWF9OVU1dID0gew0KICAgICAgICAgICAgICAgIGdy b190Y3A0X3RibF9jcmVhdGUsIGdyb192eGxhbl90Y3A0X3RibF9jcmVhdGUsDQotICAgICAgICAg ICAgICAgZ3JvX3VkcDRfdGJsX2NyZWF0ZSwgZ3JvX3Z4bGFuX3VkcDRfdGJsX2NyZWF0ZSwgTlVM TH07DQorICAgICAgICAgICAgICAgZ3JvX3VkcDRfdGJsX2NyZWF0ZSwgZ3JvX3Z4bGFuX3VkcDRf dGJsX2NyZWF0ZSwgZ3JvX3RjcDZfdGJsX2NyZWF0ZSwgTlVMTH07DQogc3RhdGljIGdyb190Ymxf ZGVzdHJveV9mbiB0YmxfZGVzdHJveV9mbltSVEVfR1JPX1RZUEVfTUFYX05VTV0gPSB7DQogICAg ICAgICAgICAgICAgICAgICAgICBncm9fdGNwNF90YmxfZGVzdHJveSwgZ3JvX3Z4bGFuX3RjcDRf dGJsX2Rlc3Ryb3ksDQogICAgICAgICAgICAgICAgICAgICAgICBncm9fdWRwNF90YmxfZGVzdHJv eSwgZ3JvX3Z4bGFuX3VkcDRfdGJsX2Rlc3Ryb3ksDQorICAgICAgICAgICAgICAgICAgICAgICBn cm9fdGNwNl90YmxfZGVzdHJveSwNCiAgICAgICAgICAgICAgICAgICAgICAgIE5VTEx9Ow0KIHN0 YXRpYyBncm9fdGJsX3BrdF9jb3VudF9mbiB0YmxfcGt0X2NvdW50X2ZuW1JURV9HUk9fVFlQRV9N QVhfTlVNXSA9IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGdyb190Y3A0X3RibF9wa3RfY291 bnQsIGdyb192eGxhbl90Y3A0X3RibF9wa3RfY291bnQsDQogICAgICAgICAgICAgICAgICAgICAg ICBncm9fdWRwNF90YmxfcGt0X2NvdW50LCBncm9fdnhsYW5fdWRwNF90YmxfcGt0X2NvdW50LA0K KyAgICAgICAgICAgICAgICAgICAgICAgZ3JvX3RjcDZfdGJsX3BrdF9jb3VudCwNCiAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEx9Ow0KDQogI2RlZmluZSBJU19JUFY0X1RDUF9QS1QocHR5cGUp IChSVEVfRVRIX0lTX0lQVjRfSERSKHB0eXBlKSAmJiBcDQpAQCAtMzUsNiArMzgsMTIgQEAgc3Rh dGljIGdyb190YmxfcGt0X2NvdW50X2ZuIHRibF9wa3RfY291bnRfZm5bUlRFX0dST19UWVBFX01B WF9OVU1dID0gew0KICAgICAgICAgICAgICAgICgocHR5cGUgJiBSVEVfUFRZUEVfTDRfRlJBRykg IT0gUlRFX1BUWVBFX0w0X0ZSQUcpICYmIFwNCiAgICAgICAgICAgICAgICAoUlRFX0VUSF9JU19U VU5ORUxfUEtUKHB0eXBlKSA9PSAwKSkNCg0KKy8qIEdSTyB3aXRoIGV4dGVuc2lvbiBoZWFkZXJz IGlzIG5vdCBzdXBwb3J0ZWQgKi8NCisjZGVmaW5lIElTX0lQVjZfVENQX1BLVChwdHlwZSkgKFJU RV9FVEhfSVNfSVBWNl9IRFIocHR5cGUpICYmIFwNCisgICAgICAgICAgICAgICAoKHB0eXBlICYg UlRFX1BUWVBFX0w0X1RDUCkgPT0gUlRFX1BUWVBFX0w0X1RDUCkgJiYgXA0KKyAgICAgICAgICAg ICAgICgocHR5cGUgJiBSVEVfUFRZUEVfTDRfRlJBRykgIT0gUlRFX1BUWVBFX0w0X0ZSQUcpICYm IFwNCisgICAgICAgICAgICAgICAoUlRFX0VUSF9JU19UVU5ORUxfUEtUKHB0eXBlKSA9PSAwKSkN CisNCiAjZGVmaW5lIElTX0lQVjRfVURQX1BLVChwdHlwZSkgKFJURV9FVEhfSVNfSVBWNF9IRFIo cHR5cGUpICYmIFwNCiAgICAgICAgICAgICAgICAoKHB0eXBlICYgUlRFX1BUWVBFX0w0X1VEUCkg PT0gUlRFX1BUWVBFX0w0X1VEUCkgJiYgXA0KICAgICAgICAgICAgICAgIChSVEVfRVRIX0lTX1RV Tk5FTF9QS1QocHR5cGUpID09IDApKQ0KQEAgLTE0Nyw3ICsxNTYsMTEgQEAgcnRlX2dyb19yZWFz c2VtYmxlX2J1cnN0KHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsDQogICAgICAgIC8qIGFsbG9jYXRl IGEgcmVhc3NlbWJseSB0YWJsZSBmb3IgVENQL0lQdjQgR1JPICovDQogICAgICAgIHN0cnVjdCBn cm9fdGNwNF90YmwgdGNwX3RibDsNCiAgICAgICAgc3RydWN0IGdyb190Y3A0X2Zsb3cgdGNwX2Zs b3dzW1JURV9HUk9fTUFYX0JVUlNUX0lURU1fTlVNXTsNCi0gICAgICAgc3RydWN0IGdyb190Y3A0 X2l0ZW0gdGNwX2l0ZW1zW1JURV9HUk9fTUFYX0JVUlNUX0lURU1fTlVNXSA9IHt7MH0gfTsNCisg ICAgICAgc3RydWN0IGdyb190Y3BfaXRlbSB0Y3BfaXRlbXNbUlRFX0dST19NQVhfQlVSU1RfSVRF TV9OVU1dID0ge3swfSB9Ow0KKw0KKyAgICAgICBzdHJ1Y3QgZ3JvX3RjcDZfdGJsIHRjcDZfdGJs Ow0KKyAgICAgICBzdHJ1Y3QgZ3JvX3RjcDZfZmxvdyB0Y3A2X2Zsb3dzW1JURV9HUk9fTUFYX0JV UlNUX0lURU1fTlVNXTsNCisgICAgICAgc3RydWN0IGdyb190Y3BfaXRlbSB0Y3A2X2l0ZW1zW1JU RV9HUk9fTUFYX0JVUlNUX0lURU1fTlVNXSA9IHt7MH0gfTsNCg0KICAgICAgICAvKiBhbGxvY2F0 ZSBhIHJlYXNzZW1ibHkgdGFibGUgZm9yIFVEUC9JUHY0IEdSTyAqLw0KICAgICAgICBzdHJ1Y3Qg Z3JvX3VkcDRfdGJsIHVkcF90Ymw7DQpAQCAtMTcxLDEwICsxODQsMTAgQEAgcnRlX2dyb19yZWFz c2VtYmxlX2J1cnN0KHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsDQogICAgICAgIGludDMyX3QgcmV0 Ow0KICAgICAgICB1aW50MTZfdCBpLCB1bnByb2Nlc3NfbnVtID0gMCwgbmJfYWZ0ZXJfZ3JvID0g bmJfcGt0czsNCiAgICAgICAgdWludDhfdCBkb190Y3A0X2dybyA9IDAsIGRvX3Z4bGFuX3RjcF9n cm8gPSAwLCBkb191ZHA0X2dybyA9IDAsDQotICAgICAgICAgICAgICAgZG9fdnhsYW5fdWRwX2dy byA9IDA7DQorICAgICAgICAgICAgICAgZG9fdnhsYW5fdWRwX2dybyA9IDAsIGRvX3RjcDZfZ3Jv ID0gMDsNCg0KICAgICAgICBpZiAodW5saWtlbHkoKHBhcmFtLT5ncm9fdHlwZXMgJiAoUlRFX0dS T19JUFY0X1ZYTEFOX1RDUF9JUFY0IHwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSVEVfR1JPX1RDUF9JUFY0IHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSVEVfR1JPX1RDUF9JUFY0IHwgUlRFX0dST19UQ1BfSVBWNiB8DQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRFX0dST19JUFY0X1ZYTEFOX1VEUF9J UFY0IHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfR1JPX1VE UF9JUFY0KSkgPT0gMCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIG5iX3BrdHM7DQpAQCAtMjM2 LDYgKzI0OSwxOCBAQCBydGVfZ3JvX3JlYXNzZW1ibGVfYnVyc3Qoc3RydWN0IHJ0ZV9tYnVmICoq cGt0cywNCiAgICAgICAgICAgICAgICBkb191ZHA0X2dybyA9IDE7DQogICAgICAgIH0NCg0KKyAg ICAgICBpZiAocGFyYW0tPmdyb190eXBlcyAmIFJURV9HUk9fVENQX0lQVjYpIHsNCisgICAgICAg ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaXRlbV9udW07IGkrKykNCisgICAgICAgICAgICAgICAg ICAgICAgIHRjcDZfZmxvd3NbaV0uc3RhcnRfaW5kZXggPSBJTlZBTElEX0FSUkFZX0lOREVYOw0K Kw0KKyAgICAgICAgICAgICAgIHRjcDZfdGJsLmZsb3dzID0gdGNwNl9mbG93czsNCisgICAgICAg ICAgICAgICB0Y3A2X3RibC5pdGVtcyA9IHRjcDZfaXRlbXM7DQorICAgICAgICAgICAgICAgdGNw Nl90YmwuZmxvd19udW0gPSAwOw0KKyAgICAgICAgICAgICAgIHRjcDZfdGJsLml0ZW1fbnVtID0g MDsNCisgICAgICAgICAgICAgICB0Y3A2X3RibC5tYXhfZmxvd19udW0gPSBpdGVtX251bTsNCisg ICAgICAgICAgICAgICB0Y3A2X3RibC5tYXhfaXRlbV9udW0gPSBpdGVtX251bTsNCisgICAgICAg ICAgICAgICBkb190Y3A2X2dybyA9IDE7DQorICAgICAgIH0NCg0KICAgICAgICBmb3IgKGkgPSAw OyBpIDwgbmJfcGt0czsgaSsrKSB7DQogICAgICAgICAgICAgICAgLyoNCkBAIC0yNzYsNiArMzAx LDE0IEBAIHJ0ZV9ncm9fcmVhc3NlbWJsZV9idXJzdChzdHJ1Y3QgcnRlX21idWYgKipwa3RzLA0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYl9hZnRlcl9ncm8tLTsNCiAgICAgICAg ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJldCA8IDApDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVucHJvY2Vzc19wa3RzW3VucHJvY2Vzc19udW0rK10gPSBwa3RzW2ldOw0KKyAg ICAgICAgICAgICAgIH0gZWxzZSBpZiAoSVNfSVBWNl9UQ1BfUEtUKHBrdHNbaV0tPnBhY2tldF90 eXBlKSAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb190Y3A2X2dybykgew0K KyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZ3JvX3RjcDZfcmVhc3NlbWJsZShwa3RzW2ld LCAmdGNwNl90YmwsIDApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCA+IDApDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1lcmdlIHN1Y2Nlc3NmdWxseSAqLw0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYl9hZnRlcl9ncm8tLTsNCisgICAgICAg ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJldCA8IDApDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVucHJvY2Vzc19wa3RzW3VucHJvY2Vzc19udW0rK10gPSBwa3RzW2ldOw0KICAg ICAgICAgICAgICAgIH0gZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgdW5wcm9jZXNzX3Br dHNbdW5wcm9jZXNzX251bSsrXSA9IHBrdHNbaV07DQogICAgICAgIH0NCkBAIC0yODMsOSArMzE2 LDE3IEBAIHJ0ZV9ncm9fcmVhc3NlbWJsZV9idXJzdChzdHJ1Y3QgcnRlX21idWYgKipwa3RzLA0K ICAgICAgICBpZiAoKG5iX2FmdGVyX2dybyA8IG5iX3BrdHMpDQogICAgICAgICAgICAgICAgIHx8 ICh1bnByb2Nlc3NfbnVtIDwgbmJfcGt0cykpIHsNCiAgICAgICAgICAgICAgICBpID0gMDsNCisg ICAgICAgICAgICAgICAvKiBDb3B5IHVucHJvY2Vzc2VkIHBhY2tldHMgKi8NCisgICAgICAgICAg ICAgICBpZiAodW5wcm9jZXNzX251bSA+IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgIG1l bWNweSgmcGt0c1tpXSwgdW5wcm9jZXNzX3BrdHMsDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBydGVfbWJ1ZiAqKSAqDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wcm9jZXNzX251bSk7DQorICAgICAgICAgICAg ICAgICAgICAgICBpID0gdW5wcm9jZXNzX251bTsNCisgICAgICAgICAgICAgICB9DQorDQogICAg ICAgICAgICAgICAgLyogRmx1c2ggYWxsIHBhY2tldHMgZnJvbSB0aGUgdGFibGVzICovDQogICAg ICAgICAgICAgICAgaWYgKGRvX3Z4bGFuX3RjcF9ncm8pIHsNCi0gICAgICAgICAgICAgICAgICAg ICAgIGkgPSBncm9fdnhsYW5fdGNwNF90YmxfdGltZW91dF9mbHVzaCgmdnhsYW5fdGNwX3RibCwN CisgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gZ3JvX3Z4bGFuX3RjcDRfdGJsX3RpbWVvdXRf Zmx1c2goJnZ4bGFuX3RjcF90YmwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMCwgcGt0cywgbmJfcGt0cyk7DQogICAgICAgICAgICAgICAgfQ0KDQpAQCAtMzA0LDEz ICszNDUsMTEgQEAgcnRlX2dyb19yZWFzc2VtYmxlX2J1cnN0KHN0cnVjdCBydGVfbWJ1ZiAqKnBr dHMsDQogICAgICAgICAgICAgICAgICAgICAgICBpICs9IGdyb191ZHA0X3RibF90aW1lb3V0X2Zs dXNoKCZ1ZHBfdGJsLCAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZwa3RzW2ldLCBuYl9wa3RzIC0gaSk7DQogICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAg ICAgIC8qIENvcHkgdW5wcm9jZXNzZWQgcGFja2V0cyAqLw0KLSAgICAgICAgICAgICAgIGlmICh1 bnByb2Nlc3NfbnVtID4gMCkgew0KLSAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KCZwa3Rz W2ldLCB1bnByb2Nlc3NfcGt0cywNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplb2Yoc3RydWN0IHJ0ZV9tYnVmICopICoNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnByb2Nlc3NfbnVtKTsNCisNCisgICAgICAgICAgICAgICBpZiAo ZG9fdGNwNl9ncm8pIHsNCisgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gZ3JvX3RjcDZfdGJs X3RpbWVvdXRfZmx1c2goJnRjcDZfdGJsLCAwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZwa3RzW2ldLCBuYl9wa3RzIC0gaSk7DQogICAgICAgICAgICAgICAgfQ0K LSAgICAgICAgICAgICAgIG5iX2FmdGVyX2dybyA9IGkgKyB1bnByb2Nlc3NfbnVtOw0KICAgICAg ICB9DQoNCiAgICAgICAgcmV0dXJuIG5iX2FmdGVyX2dybzsNCkBAIC0zMjMsMTMgKzM2MiwxMyBA QCBydGVfZ3JvX3JlYXNzZW1ibGUoc3RydWN0IHJ0ZV9tYnVmICoqcGt0cywNCiB7DQogICAgICAg IHN0cnVjdCBydGVfbWJ1ZiAqdW5wcm9jZXNzX3BrdHNbbmJfcGt0c107DQogICAgICAgIHN0cnVj dCBncm9fY3R4ICpncm9fY3R4ID0gY3R4Ow0KLSAgICAgICB2b2lkICp0Y3BfdGJsLCAqdWRwX3Ri bCwgKnZ4bGFuX3RjcF90YmwsICp2eGxhbl91ZHBfdGJsOw0KKyAgICAgICB2b2lkICp0Y3BfdGJs LCAqdWRwX3RibCwgKnZ4bGFuX3RjcF90YmwsICp2eGxhbl91ZHBfdGJsLCAqdGNwNl90Ymw7DQog ICAgICAgIHVpbnQ2NF90IGN1cnJlbnRfdGltZTsNCiAgICAgICAgdWludDE2X3QgaSwgdW5wcm9j ZXNzX251bSA9IDA7DQotICAgICAgIHVpbnQ4X3QgZG9fdGNwNF9ncm8sIGRvX3Z4bGFuX3RjcF9n cm8sIGRvX3VkcDRfZ3JvLCBkb192eGxhbl91ZHBfZ3JvOw0KKyAgICAgICB1aW50OF90IGRvX3Rj cDRfZ3JvLCBkb192eGxhbl90Y3BfZ3JvLCBkb191ZHA0X2dybywgZG9fdnhsYW5fdWRwX2dybywg ZG9fdGNwNl9ncm87DQoNCiAgICAgICAgaWYgKHVubGlrZWx5KChncm9fY3R4LT5ncm9fdHlwZXMg JiAoUlRFX0dST19JUFY0X1ZYTEFOX1RDUF9JUFY0IHwNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSVEVfR1JPX1RDUF9JUFY0IHwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSVEVfR1JPX1RDUF9JUFY0IHwgUlRFX0dST19UQ1BfSVBWNiB8 DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRFX0dST19JUFY0X1ZY TEFOX1VEUF9JUFY0IHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS VEVfR1JPX1VEUF9JUFY0KSkgPT0gMCkpDQogICAgICAgICAgICAgICAgcmV0dXJuIG5iX3BrdHM7 DQpAQCAtMzM4LDYgKzM3Nyw3IEBAIHJ0ZV9ncm9fcmVhc3NlbWJsZShzdHJ1Y3QgcnRlX21idWYg Kipwa3RzLA0KICAgICAgICB2eGxhbl90Y3BfdGJsID0gZ3JvX2N0eC0+dGJsc1tSVEVfR1JPX0lQ VjRfVlhMQU5fVENQX0lQVjRfSU5ERVhdOw0KICAgICAgICB1ZHBfdGJsID0gZ3JvX2N0eC0+dGJs c1tSVEVfR1JPX1VEUF9JUFY0X0lOREVYXTsNCiAgICAgICAgdnhsYW5fdWRwX3RibCA9IGdyb19j dHgtPnRibHNbUlRFX0dST19JUFY0X1ZYTEFOX1VEUF9JUFY0X0lOREVYXTsNCisgICAgICAgdGNw Nl90YmwgPSBncm9fY3R4LT50YmxzW1JURV9HUk9fVENQX0lQVjZfSU5ERVhdOw0KDQogICAgICAg IGRvX3RjcDRfZ3JvID0gKGdyb19jdHgtPmdyb190eXBlcyAmIFJURV9HUk9fVENQX0lQVjQpID09 DQogICAgICAgICAgICAgICAgUlRFX0dST19UQ1BfSVBWNDsNCkBAIC0zNDcsNiArMzg3LDcgQEAg cnRlX2dyb19yZWFzc2VtYmxlKHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsDQogICAgICAgICAgICAg ICAgUlRFX0dST19VRFBfSVBWNDsNCiAgICAgICAgZG9fdnhsYW5fdWRwX2dybyA9IChncm9fY3R4 LT5ncm9fdHlwZXMgJiBSVEVfR1JPX0lQVjRfVlhMQU5fVURQX0lQVjQpID09DQogICAgICAgICAg ICAgICAgUlRFX0dST19JUFY0X1ZYTEFOX1VEUF9JUFY0Ow0KKyAgICAgICBkb190Y3A2X2dybyA9 IChncm9fY3R4LT5ncm9fdHlwZXMgJiBSVEVfR1JPX1RDUF9JUFY2KSA9PSBSVEVfR1JPX1RDUF9J UFY2Ow0KDQogICAgICAgIGN1cnJlbnRfdGltZSA9IHJ0ZV9yZHRzYygpOw0KDQpAQCAtMzcxLDcg KzQxMiwxMyBAQCBydGVfZ3JvX3JlYXNzZW1ibGUoc3RydWN0IHJ0ZV9tYnVmICoqcGt0cywNCiAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChncm9fdWRwNF9yZWFzc2VtYmxlKHBrdHNbaV0sIHVk cF90YmwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj dXJyZW50X3RpbWUpIDwgMCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wcm9j ZXNzX3BrdHNbdW5wcm9jZXNzX251bSsrXSA9IHBrdHNbaV07DQotICAgICAgICAgICAgICAgfSBl bHNlDQorICAgICAgICAgICAgICAgfSBlbHNlIGlmIChJU19JUFY2X1RDUF9QS1QocGt0c1tpXS0+ cGFja2V0X3R5cGUpICYmDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX3RjcDZf Z3JvKSB7DQorICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvX3RjcDZfcmVhc3NlbWJsZShw a3RzW2ldLCB0Y3A2X3RibCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN1cnJlbnRfdGltZSkgPCAwKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnByb2Nlc3NfcGt0c1t1bnByb2Nlc3NfbnVtKytdID0gcGt0c1tpXTsNCisgICAgICAg ICAgICAgICB9DQorICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAg dW5wcm9jZXNzX3BrdHNbdW5wcm9jZXNzX251bSsrXSA9IHBrdHNbaV07DQogICAgICAgIH0NCiAg ICAgICAgaWYgKHVucHJvY2Vzc19udW0gPiAwKSB7DQpAQCAtNDI2LDYgKzQ3MywxNSBAQCBydGVf Z3JvX3RpbWVvdXRfZmx1c2godm9pZCAqY3R4LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBncm9fY3R4LT50YmxzW1JURV9HUk9fVURQX0lQVjRfSU5ERVhdLA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmbHVzaF90aW1lc3RhbXAsDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZvdXRbbnVtXSwgbGVmdF9uYl9vdXQpOw0KKyAgICAgICAgICAgICAgIGxl ZnRfbmJfb3V0ID0gbWF4X25iX291dCAtIG51bTsNCisgICAgICAgfQ0KKw0KKyAgICAgICBpZiAo KGdyb190eXBlcyAmIFJURV9HUk9fVENQX0lQVjYpICYmIGxlZnRfbmJfb3V0ID4gMCkgew0KKyAg ICAgICAgICAgICAgIG51bSArPSBncm9fdGNwNl90YmxfdGltZW91dF9mbHVzaCgNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3JvX2N0eC0+dGJsc1tSVEVfR1JPX1RDUF9JUFY2X0lO REVYXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2hfdGltZXN0YW1wLA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0W251bV0sIGxlZnRfbmJfb3V0KTsN CisNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBudW07DQpkaWZmIC0tZ2l0IGEvbGliL2dy by9ydGVfZ3JvLmggYi9saWIvZ3JvL3J0ZV9ncm8uaA0KaW5kZXggOWY5ZWQ0OTM1YS4uYWM1YTQ2 NGNmMSAxMDA2NDQNCi0tLSBhL2xpYi9ncm8vcnRlX2dyby5oDQorKysgYi9saWIvZ3JvL3J0ZV9n cm8uaA0KQEAgLTM3LDYgKzM3LDkgQEAgZXh0ZXJuICJDIiB7DQogLyoqPCBVRFAvSVB2NCBHUk8g ZmxhZyAqLw0KICNkZWZpbmUgUlRFX0dST19JUFY0X1ZYTEFOX1VEUF9JUFY0X0lOREVYIDMNCiAj ZGVmaW5lIFJURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNCAoMVVMTCA8PCBSVEVfR1JPX0lQVjRf VlhMQU5fVURQX0lQVjRfSU5ERVgpDQorDQorI2RlZmluZSBSVEVfR1JPX1RDUF9JUFY2X0lOREVY IDQNCisjZGVmaW5lIFJURV9HUk9fVENQX0lQVjYgKDFVTEwgPDwgUlRFX0dST19UQ1BfSVBWNl9J TkRFWCkNCiAvKio8IFZ4TEFOIFVEUC9JUHY0IEdSTyBmbGFnLiAqLw0KDQogLyoqDQotLQ0KMi4y NS4xDQo= --_000_CY5PR11MB6487A92817740F09E573BC5892939CY5PR11MB6487namp_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl PjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6 IkNhbWJyaWEgTWF0aCI7DQoJcGFub3NlLTE6MiA0IDUgMyA1IDQgNiAzIDIgNDt9DQpAZm9udC1m YWNlDQoJe2ZvbnQtZmFtaWx5OkRlbmdYaWFuOw0KCXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAx IDE7fQ0KQGZvbnQtZmFjZQ0KCXtmb250LWZhbWlseTpDYWxpYnJpOw0KCXBhbm9zZS0xOjIgMTUg NSAyIDIgMiA0IDMgMiA0O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6IlxARGVuZ1hpYW4i Ow0KCXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAxIDE7fQ0KLyogU3R5bGUgRGVmaW5pdGlvbnMg Ki8NCnAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwNCgl7bWFyZ2luOjBp bjsNCglmb250LXNpemU6MTEuMHB0Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlm O30NCmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsNCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0K CWNvbG9yOmJsdWU7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9DQpzcGFuLkVtYWlsU3R5 bGUxOQ0KCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbC1jb21wb3NlOw0KCWZvbnQtZmFtaWx5OiJD YWxpYnJpIixzYW5zLXNlcmlmOw0KCWNvbG9yOndpbmRvd3RleHQ7fQ0KLk1zb0NocERlZmF1bHQN Cgl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNh bnMtc2VyaWY7fQ0KQHBhZ2UgV29yZFNlY3Rpb24xDQoJe3NpemU6OC41aW4gMTEuMGluOw0KCW1h cmdpbjoxLjBpbiAxLjBpbiAxLjBpbiAxLjBpbjt9DQpkaXYuV29yZFNlY3Rpb24xDQoJe3BhZ2U6 V29yZFNlY3Rpb24xO30NCi0tPjwvc3R5bGU+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+DQo8bzpz aGFwZWRlZmF1bHRzIHY6ZXh0PSJlZGl0IiBzcGlkbWF4PSIxMDI2IiAvPg0KPC94bWw+PCFbZW5k aWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+DQo8bzpzaGFwZWxheW91dCB2OmV4dD0iZWRp dCI+DQo8bzppZG1hcCB2OmV4dD0iZWRpdCIgZGF0YT0iMSIgLz4NCjwvbzpzaGFwZWxheW91dD48 L3htbD48IVtlbmRpZl0tLT4NCjwvaGVhZD4NCjxib2R5IGxhbmc9IkVOLVVTIiBsaW5rPSJibHVl IiB2bGluaz0icHVycGxlIiBzdHlsZT0id29yZC13cmFwOmJyZWFrLXdvcmQiPg0KPGRpdiBjbGFz cz0iV29yZFNlY3Rpb24xIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkhpIEt1bWFyLDxvOnA+PC9v OnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj5JIGRvbuKAmXQgaGF2ZSBtdWNoIGV4cGVyaWVuY2Ugb24gSVB2Niwg YnV0IEkgd2lsbCBmaW5kIHRpbWUgdG8gcmV2aWV3IHRoZSBwYXRjaC48bzpwPjwvbzpwPjwvcD4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiPkJlc2lkZXMsIGlmIGFueW9uZSBjYW4gaGVscCB0byByZXZp ZXcgdGhlIHBhdGNoLCBpdCB3b3VsZCBiZSBhcHByZWNpYXRlZC48bzpwPjwvbzpwPjwvcD4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05v cm1hbCI+VGhhbmtzLDxvOnA+PC9vOnA+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+SmlheXU8 bzpwPjwvbzpwPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9w Pg0KPGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgYmx1ZSAxLjVwdDtw YWRkaW5nOjBpbiAwaW4gMGluIDQuMHB0Ij4NCjxkaXY+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9u ZTtib3JkZXItdG9wOnNvbGlkICNFMUUxRTEgMS4wcHQ7cGFkZGluZzozLjBwdCAwaW4gMGluIDBp biI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj5Gcm9tOjwvYj4ga3VtYXJhcGFyYW1lc2h3YXJh biByYXRoaW5hdmVsICZsdDtrdW1hcmFwYXJhbWVzaDkyQGdtYWlsLmNvbSZndDsNCjxicj4NCjxi PlNlbnQ6PC9iPiBUaHVyc2RheSwgTWFyY2ggMzAsIDIwMjMgMTI6MzkgQU08YnI+DQo8Yj5Ubzo8 L2I+IGRldkBkcGRrLm9yZzxicj4NCjxiPkNjOjwvYj4gSHUsIEppYXl1ICZsdDtqaWF5dS5odUBp bnRlbC5jb20mZ3Q7OyBUaG9tYXMgTW9uamFsb24gJmx0O3Rob21hc0Btb25qYWxvbi5uZXQmZ3Q7 PGJyPg0KPGI+U3ViamVjdDo8L2I+IFJlOiBbUEFUQ0hdIGdybyA6IGlwdjYgY2hhbmdlcyB0byBz dXBwb3J0IEdSTyBmb3IgVENQL2lwdjY8bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQo8 cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4NCjxkaXY+DQo8ZGl2Pg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+SGksIDxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+ DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5JIHdvdWxkIGxpa2UgdG8gZ2V0IGEgcmV2aWV3IG9uIHRo ZSBmb2xsb3dpbmcgcGF0Y2ggd2hlcmUgc3VwcG9ydCBpcyBhZGRlZCBmb3IgSVB2NiBHUk8uDQo8 bzpwPjwvbzpwPjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+ Jm5ic3A7PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+VGhh bmtzLDxvOnA+PC9vOnA+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ UGFyYW0uPG86cD48L286cD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIj5PbiBUaHUsIE9jdCAyMCwgMjAyMiBhdCA1OjQz4oCvUE0gS3VtYXJhIFBhcmFtZXNod2Fy YW4gJmx0OzxhIGhyZWY9Im1haWx0bzprdW1hcmFwYXJhbWVzaDkyQGdtYWlsLmNvbSI+a3VtYXJh cGFyYW1lc2g5MkBnbWFpbC5jb208L2E+Jmd0OyB3cm90ZTo8bzpwPjwvbzpwPjwvcD4NCjwvZGl2 Pg0KPGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci1sZWZ0OnNvbGlkICNDQ0ND Q0MgMS4wcHQ7cGFkZGluZzowaW4gMGluIDBpbiA2LjBwdDttYXJnaW4tbGVmdDo0LjhwdDttYXJn aW4tcmlnaHQ6MGluIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tYm90dG9t OjEyLjBwdCI+RnJvbTogS3VtYXJhIFBhcmFtZXNod2FyYW4gJmx0OzxhIGhyZWY9Im1haWx0bzpr dW1hcmFwYXJhbWVzaDkyQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmt1bWFyYXBhcmFtZXNo OTJAZ21haWwuY29tPC9hPiZndDs8YnI+DQo8YnI+DQpUaGUgcGF0Y2ggYWRkcyBHUk8gc3VwcG9y dCBmb3IgVENQL2lwdjYgcGFja2V0cy4gVGhpcyBkb2VzIG5vdDxicj4NCmluY2x1ZGUgdGhlIHN1 cHBvcnQgZm9yIHZ4bGFuLCB1ZHAgaXB2NiBwYWNrZXRzLjxicj4NCjxicj4NClNpZ25lZC1vZmYt Ynk6IEt1bWFyYSBQYXJhbWVzaHdhcmFuICZsdDs8YSBocmVmPSJtYWlsdG86a3VtYXJhcGFyYW1l c2g5MkBnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5rdW1hcmFwYXJhbWVzaDkyQGdtYWlsLmNv bTwvYT4mZ3Q7PGJyPg0KLS0tPGJyPg0KdjE6PGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICogQ2hhbmdlcyB0byBzdXBwb3J0IEdSTyBmb3IgVENQL2lwdjYgcGFja2V0cy4gVGhpcyBk b2VzIG5vdCBpbmNsdWRlPGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB2 eGxhbiBjaGFuZ2VzLiA8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBUaGUgR1JP IGlzIHBlcmZvcm1lZCBvbmx5IGZvciBpcHY2IHBhY2tldHMgdGhhdCBkb2VzIG5vdCBjb250YWlu IDxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtleHRlbnNpb24gaGVhZGVy cy4gPGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICogVGhlIGxvZ2ljIGZvciB0aGUg VENQIGNvYWxlc2NpbmcgcmVtYWlucyB0aGUgc2FtZSwgaW4gaXB2NiBoZWFkZXIgPGJyPg0KJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB0aGUgc291cmNlIGFkZHJlc3MsIGRlc3Rp bmF0aW9uIGFkZHJlc3MsIGZsb3cgbGFiZWwsIHZlcnNpb24gZmllbGRzIDxicj4NCiZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgYXJlIGV4cGVjdGVkIHRvIGJlIHRoZSBzYW1lLiA8 YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBSZS1vcmdhbmlzZWQgdGhlIGNvZGUg dG8gcmV1c2UgY2VydGFpbiB0Y3AgZnVuY3Rpb25zIGZvciBib3RoIGlwdjQgYW5kIDxicj4NCiZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgaXB2NiBmbG93cy48YnI+DQo8YnI+DQom bmJzcDtsaWIvZ3JvL2dyb190Y3AuaCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDE1NSAr KysrKysrKysrKysrKysrPGJyPg0KJm5ic3A7bGliL2dyby9ncm9fdGNwNC5jJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDs3ICstPGJyPg0KJm5ic3A7bGliL2dyby9ncm9f dGNwNC5oJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAxNTIgKy0tLS0tLS0tLS0tLS0tPGJy Pg0KJm5ic3A7bGliL2dyby9ncm9fdGNwNi5jJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAz ODggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrPGJyPg0KJm5ic3A7bGli L2dyby9ncm9fdGNwNi5oJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAxNTAgKysrKysrKysr KysrKysrPGJyPg0KJm5ic3A7bGliL2dyby9ncm9fdnhsYW5fdGNwNC5jIHwmbmJzcDsgJm5ic3A7 MyArLTxicj4NCiZuYnNwO2xpYi9ncm8vZ3JvX3Z4bGFuX3RjcDQuaCB8Jm5ic3A7ICZuYnNwOzMg Ky08YnI+DQombmJzcDtsaWIvZ3JvL21lc29uLmJ1aWxkJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCZu YnNwOyAmbmJzcDsxICs8YnI+DQombmJzcDtsaWIvZ3JvL3J0ZV9ncm8uYyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyB8Jm5ic3A7IDg2ICsrKysrKystLTxicj4NCiZuYnNwO2xpYi9ncm8vcnRl X2dyby5oJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwmbmJzcDsgJm5ic3A7MyArPGJyPg0K Jm5ic3A7MTAgZmlsZXMgY2hhbmdlZCwgNzc3IGluc2VydGlvbnMoKyksIDE3MSBkZWxldGlvbnMo LSk8YnI+DQombmJzcDtjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2dyby9ncm9fdGNwLmg8YnI+DQom bmJzcDtjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2dyby9ncm9fdGNwNi5jPGJyPg0KJm5ic3A7Y3Jl YXRlIG1vZGUgMTAwNjQ0IGxpYi9ncm8vZ3JvX3RjcDYuaDxicj4NCjxicj4NCmRpZmYgLS1naXQg YS9saWIvZ3JvL2dyb190Y3AuaCBiL2xpYi9ncm8vZ3JvX3RjcC5oPGJyPg0KbmV3IGZpbGUgbW9k ZSAxMDA2NDQ8YnI+DQppbmRleCAwMDAwMDAwMDAwLi4xNmJjZTlkMDk4PGJyPg0KLS0tIC9kZXYv bnVsbDxicj4NCisrKyBiL2xpYi9ncm8vZ3JvX3RjcC5oPGJyPg0KQEAgLTAsMCArMSwxNTUgQEA8 YnI+DQorI2lmbmRlZiBfR1JPX1RDUF9IXzxicj4NCisjZGVmaW5lIF9HUk9fVENQX0hfPGJyPg0K Kzxicj4NCisjaW5jbHVkZSAmbHQ7cnRlX3RjcC5oJmd0Ozxicj4NCis8YnI+DQorLyo8YnI+DQor ICogVGhlIG1heCBsZW5ndGggb2YgYSBJUHY0IHBhY2tldCwgd2hpY2ggaW5jbHVkZXMgdGhlIGxl bmd0aCBvZiB0aGUgTDM8YnI+DQorICogaGVhZGVyLCB0aGUgTDQgaGVhZGVyIGFuZCB0aGUgZGF0 YSBwYXlsb2FkLjxicj4NCisgKi88YnI+DQorI2RlZmluZSBNQVhfSVBfUEtUX0xFTkdUSCBVSU5U MTZfTUFYPGJyPg0KKzxicj4NCisvKiBUaGUgbWF4aW11bSBUQ1AgaGVhZGVyIGxlbmd0aCAqLzxi cj4NCisjZGVmaW5lIE1BWF9UQ1BfSExFTiA2MDxicj4NCisjZGVmaW5lIElOVkFMSURfVENQX0hE UkxFTihsZW4pIFw8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7KCgobGVuKSAmbHQ7 IHNpemVvZihzdHJ1Y3QgcnRlX3RjcF9oZHIpKSB8fCAoKGxlbikgJmd0OyBNQVhfVENQX0hMRU4p KTxicj4NCis8YnI+DQorc3RydWN0IGdyb190Y3BfaXRlbSB7PGJyPg0KKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOy8qPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIFRoZSBm aXJzdCBNQlVGIHNlZ21lbnQgb2YgdGhlIHBhY2tldC4gSWYgdGhlIHZhbHVlPGJyPg0KKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIGlzIE5VTEwsIGl0IG1lYW5zIHRoZSBpdGVtIGlzIGVt cHR5Ljxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKi88YnI+DQorJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IHJ0ZV9tYnVmICpmaXJzdHNlZzs8YnI+DQorJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogVGhlIGxhc3QgTUJVRiBzZWdtZW50IG9mIHRoZSBwYWNr ZXQgKi88YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IHJ0ZV9tYnVmICps YXN0c2VnOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKjxicj4NCismbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBUaGUgdGltZSB3aGVuIHRoZSBmaXJzdCBwYWNrZXQgaXMg aW5zZXJ0ZWQgaW50byB0aGUgdGFibGUuPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAqIFRoaXMgdmFsdWUgd29uJ3QgYmUgdXBkYXRlZCwgZXZlbiBpZiB0aGUgcGFja2V0IGlzIG1l cmdlZDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiB3aXRoIG90aGVyIHBhY2tl dHMuPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAqLzxicj4NCismbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDt1aW50NjRfdCBzdGFydF90aW1lOzxicj4NCismbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsvKjxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBuZXh0 X3BrdF9pZHggaXMgdXNlZCB0byBjaGFpbiB0aGUgcGFja2V0cyB0aGF0PGJyPg0KKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAqIGFyZSBpbiB0aGUgc2FtZSBmbG93IGJ1dCBjYW4ndCBiZSBt ZXJnZWQgdG9nZXRoZXI8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICogKGUuZy4g Y2F1c2VkIGJ5IHBhY2tldCByZW9yZGVyaW5nKS48YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICovPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IG5leHRf cGt0X2lkeDs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogVENQIHNlcXVlbmNl IG51bWJlciBvZiB0aGUgcGFja2V0ICovPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw O3VpbnQzMl90IHNlbnRfc2VxOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBJ UHY0IElEIG9mIHRoZSBwYWNrZXQgKi88YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 dWludDE2X3QgaXBfaWQ7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIHRoZSBu dW1iZXIgb2YgbWVyZ2VkIHBhY2tldHMgKi88YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7dWludDE2X3QgbmJfbWVyZ2VkOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsv KiBJbmRpY2F0ZSBpZiBJUHY0IElEIGNhbiBiZSBpZ25vcmVkICovPGJyPg0KKyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3VpbnQ4X3QgaXNfYXRvbWljOzxicj4NCit9Ozxicj4NCis8YnI+DQor Lyo8YnI+DQorICogTWVyZ2UgdHdvIFRDUCBwYWNrZXRzIHdpdGhvdXQgdXBkYXRpbmcgY2hlY2tz dW1zLjxicj4NCisgKiBJZiBjbXAgaXMgbGFyZ2VyIHRoYW4gMCwgYXBwZW5kIHRoZSBuZXcgcGFj a2V0IHRvIHRoZTxicj4NCisgKiBvcmlnaW5hbCBwYWNrZXQuIE90aGVyd2lzZSwgcHJlLXBlbmQg dGhlIG5ldyBwYWNrZXQgdG88YnI+DQorICogdGhlIG9yaWdpbmFsIHBhY2tldC48YnI+DQorICov PGJyPg0KK3N0YXRpYyBpbmxpbmUgaW50PGJyPg0KK21lcmdlX3R3b190Y3BfcGFja2V0cyhzdHJ1 Y3QgZ3JvX3RjcF9pdGVtICppdGVtLDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IHJ0ZV9tYnVmICpwa3QsPGJyPg0KKyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpbnQg Y21wLDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7dWludDMyX3Qgc2VudF9zZXEsPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBpcF9pZCw8YnI+DQorJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQx Nl90IGwyX29mZnNldCk8YnI+DQorezxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtz dHJ1Y3QgcnRlX21idWYgKnBrdF9oZWFkLCAqcGt0X3RhaWwsICpsYXN0c2VnOzxicj4NCismbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBoZHJfbGVuLCBsMl9sZW47PGJyPg0KKzxi cj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoY21wICZndDsgMCkgezxicj4NCism bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cGt0 X2hlYWQgPSBpdGVtLSZndDtmaXJzdHNlZzs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3BrdF90YWlsID0gcGt0Ozxicj4NCismbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9IGVsc2Ugezxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cGt0X2hlYWQgPSBwa3Q7PGJyPg0K KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtw a3RfdGFpbCA9IGl0ZW0tJmd0O2ZpcnN0c2VnOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDt9PGJyPg0KKzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBjaGVjayBp ZiB0aGUgSVB2NCBwYWNrZXQgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4IHZhbHVlICov PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2hkcl9sZW4gPSBsMl9vZmZzZXQgKyBw a3RfaGVhZC0mZ3Q7bDJfbGVuICsgcGt0X2hlYWQtJmd0O2wzX2xlbiArPGJyPg0KKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtwa3RfaGVhZC0m Z3Q7bDRfbGVuOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtsMl9sZW4gPSBsMl9v ZmZzZXQgJmd0OyAwID8gcGt0X2hlYWQtJmd0O291dGVyX2wyX2xlbiA6IHBrdF9oZWFkLSZndDts Ml9sZW47PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmICh1bmxpa2VseShwa3Rf aGVhZC0mZ3Q7cGt0X2xlbiAtIGwyX2xlbiArIHBrdF90YWlsLSZndDtwa3RfbGVuIC08YnI+DQor Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aGRy X2xlbiAmZ3Q7IE1BWF9JUF9QS1RfTEVOR1RIKSk8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiAwOzxicj4NCis8YnI+DQor Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogcmVtb3ZlIHRoZSBwYWNrZXQgaGVhZGVyIGZv ciB0aGUgdGFpbCBwYWNrZXQgKi88YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cnRl X3BrdG1idWZfYWRqKHBrdF90YWlsLCBoZHJfbGVuKTs8YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOy8qIGNoYWluIHR3byBwYWNrZXRzIHRvZ2V0aGVyICovPGJyPg0KKyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChjbXAgJmd0OyAwKSB7PGJyPg0KKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpdGVtLSZndDts YXN0c2VnLSZndDtuZXh0ID0gcGt0Ozxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aXRlbS0mZ3Q7bGFzdHNlZyA9IHJ0ZV9wa3RtYnVm X2xhc3RzZWcocGt0KTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOy8qIHVwZGF0ZSBJUCBJRCB0byB0aGUgbGFyZ2VyIHZhbHVlICov PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtpdGVtLSZndDtpcF9pZCA9IGlwX2lkOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDt9IGVsc2Ugezxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7bGFzdHNlZyA9IHJ0ZV9wa3RtYnVmX2xhc3RzZWcocGt0KTs8YnI+ DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw O2xhc3RzZWctJmd0O25leHQgPSBpdGVtLSZndDtmaXJzdHNlZzs8YnI+DQorJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2l0ZW0tJmd0O2ZpcnN0 c2VnID0gcGt0Ozxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7LyogdXBkYXRlIHNlbnRfc2VxIHRvIHRoZSBzbWFsbGVyIHZhbHVlICov PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtpdGVtLSZndDtzZW50X3NlcSA9IHNlbnRfc2VxOzxicj4NCismbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aXRlbS0mZ3Q7aXBfaWQgPSBp cF9pZDs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fTxicj4NCismbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDtpdGVtLSZndDtuYl9tZXJnZWQrKzs8YnI+DQorPGJyPg0KKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIHVwZGF0ZSBNQlVGIG1ldGFkYXRhIGZvciB0aGUgbWVy Z2VkIHBhY2tldCAqLzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtwa3RfaGVhZC0m Z3Q7bmJfc2VncyArPSBwa3RfdGFpbC0mZ3Q7bmJfc2Vnczs8YnI+DQorJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7cGt0X2hlYWQtJmd0O3BrdF9sZW4gKz0gcGt0X3RhaWwtJmd0O3BrdF9sZW47 PGJyPg0KKzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gMTs8YnI+DQor fTxicj4NCis8YnI+DQorLyo8YnI+DQorICogQ2hlY2sgaWYgdHdvIFRDUC9JUHY0IHBhY2tldHMg YXJlIG5laWdoYm9ycy48YnI+DQorICovPGJyPg0KK3N0YXRpYyBpbmxpbmUgaW50PGJyPg0KK2No ZWNrX3NlcV9vcHRpb24oc3RydWN0IGdyb190Y3BfaXRlbSAqaXRlbSw8YnI+DQorJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBydGVf dGNwX2hkciAqdGNwaCw8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IHNlbnRfc2VxLDxicj4NCismbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgaXBfaWQs PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDt1aW50MTZfdCB0Y3BfaGwsPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCB0Y3BfZGwsPGJyPg0KKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBs Ml9vZmZzZXQsPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDt1aW50OF90IGlzX2F0b21pYyk8YnI+DQorezxicj4NCismbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgcnRlX21idWYgKnBrdF9vcmlnID0gaXRlbS0mZ3Q7Zmly c3RzZWc7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2NoYXIgKmlwaF9vcmlnOzxi cj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgcnRlX3RjcF9oZHIgKnRjcGhf b3JpZzs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgbGVuLCB0Y3Bf aGxfb3JpZzs8YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lwaF9vcmln ID0gKGNoYXIgKikocnRlX3BrdG1idWZfbXRvZChwa3Rfb3JpZywgY2hhciAqKSArIDxicj4NCism bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGwy X29mZnNldCArIHBrdF9vcmlnLSZndDtsMl9sZW4pOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDt0Y3BoX29yaWcgPSAoc3RydWN0IHJ0ZV90Y3BfaGRyICopKGlwaF9vcmlnICsgcGt0 X29yaWctJmd0O2wzX2xlbik7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3RjcF9o bF9vcmlnID0gcGt0X29yaWctJmd0O2w0X2xlbjs8YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOy8qIENoZWNrIGlmIFRDUCBvcHRpb24gZmllbGRzIGVxdWFsICovPGJyPg0K KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2xlbiA9IFJURV9NQVgodGNwX2hsLCB0Y3BfaGxf b3JpZykgLSBzaXplb2Yoc3RydWN0IHJ0ZV90Y3BfaGRyKTs8YnI+DQorJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7aWYgKCh0Y3BfaGwgIT0gdGNwX2hsX29yaWcpIHx8ICgobGVuICZndDsgMCkg JmFtcDsmYW1wOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsobWVtY21wKHRjcGggKyAxLCB0Y3BoX29yaWcgKyAxLDxicj4NCismbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7bGVuKSAhPSAwKSkpPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gMDs8YnI+DQorPGJy Pg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIERvbid0IG1lcmdlIHBhY2tldHMgd2hv c2UgREYgYml0cyBhcmUgZGlmZmVyZW50ICovPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO2lmICh1bmxpa2VseShpdGVtLSZndDtpc19hdG9taWMgXiBpc19hdG9taWMpKTxicj4NCism bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0 dXJuIDA7PGJyPg0KKzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBjaGVjayBp ZiB0aGUgdHdvIHBhY2tldHMgYXJlIG5laWdoYm9ycyAqLzxicj4NCismbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDtsZW4gPSBwa3Rfb3JpZy0mZ3Q7cGt0X2xlbiAtIGwyX29mZnNldCAtIHBrdF9v cmlnLSZndDtsMl9sZW4gLTxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7cGt0X29yaWctJmd0O2wzX2xlbiAtIHRjcF9obF9vcmlnOzxi cj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoKHNlbnRfc2VxID09IGl0ZW0tJmd0 O3NlbnRfc2VxICsgbGVuKSAmYW1wOyZhbXA7IChpc19hdG9taWMgfHw8YnI+DQorJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7KGlwX2lkID09IGl0 ZW0tJmd0O2lwX2lkICsgMSkpKTxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogYXBwZW5kIHRoZSBuZXcgcGFja2V0ICovPGJyPg0K KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDty ZXR1cm4gMTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ZWxzZSBpZiAoKHNlbnRf c2VxICsgdGNwX2RsID09IGl0ZW0tJmd0O3NlbnRfc2VxKSAmYW1wOyZhbXA7IChpc19hdG9taWMg fHw8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7KGlwX2lkICsgaXRlbS0mZ3Q7bmJfbWVyZ2VkID09IGl0ZW0tJmd0O2lwX2lkKSkpPGJy Pg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsvKiBwcmUtcGVuZCB0aGUgbmV3IHBhY2tldCAqLzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIC0xOzxicj4NCis8YnI+ DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIDA7PGJyPg0KK308YnI+DQorPGJy Pg0KKyNlbmRpZjxicj4NCmRpZmYgLS1naXQgYS9saWIvZ3JvL2dyb190Y3A0LmMgYi9saWIvZ3Jv L2dyb190Y3A0LmM8YnI+DQppbmRleCA4ZjVlODAwMjUwLi5lZWEyYTcyZWNkIDEwMDY0NDxicj4N Ci0tLSBhL2xpYi9ncm8vZ3JvX3RjcDQuYzxicj4NCisrKyBiL2xpYi9ncm8vZ3JvX3RjcDQuYzxi cj4NCkBAIC03LDYgKzcsNyBAQDxicj4NCiZuYnNwOyNpbmNsdWRlICZsdDtydGVfZXRoZGV2Lmgm Z3Q7PGJyPg0KPGJyPg0KJm5ic3A7I2luY2x1ZGUgJnF1b3Q7Z3JvX3RjcDQuaCZxdW90Ozxicj4N CisjaW5jbHVkZSAmcXVvdDtncm9fdGNwLmgmcXVvdDs8YnI+DQo8YnI+DQombmJzcDt2b2lkICo8 YnI+DQombmJzcDtncm9fdGNwNF90YmxfY3JlYXRlKHVpbnQxNl90IHNvY2tldF9pZCw8YnI+DQpA QCAtMzAsNyArMzEsNyBAQCBncm9fdGNwNF90YmxfY3JlYXRlKHVpbnQxNl90IHNvY2tldF9pZCw8 YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgaWYgKHRibCA9PSBOVUxMKTxicj4NCiZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgcmV0 dXJuIE5VTEw7PGJyPg0KPGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3NpemUgPSBz aXplb2Yoc3RydWN0IGdyb190Y3A0X2l0ZW0pICogZW50cmllc19udW07PGJyPg0KKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO3NpemUgPSBzaXplb2Yoc3RydWN0IGdyb190Y3BfaXRlbSkgKiBl bnRyaWVzX251bTs8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgdGJsLSZndDtpdGVt cyA9IHJ0ZV96bWFsbG9jX3NvY2tldChfX2Z1bmNfXyw8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyBzaXplLDxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IFJURV9DQUNIRV9M SU5FX1NJWkUsPGJyPg0KQEAgLTE3Nyw3ICsxNzgsNyBAQCBpbnNlcnRfbmV3X2Zsb3coc3RydWN0 IGdyb190Y3A0X3RibCAqdGJsLDxicj4NCiZuYnNwOyAqIHVwZGF0ZSB0aGUgcGFja2V0IGxlbmd0 aCBmb3IgdGhlIGZsdXNoZWQgcGFja2V0Ljxicj4NCiZuYnNwOyAqLzxicj4NCiZuYnNwO3N0YXRp YyBpbmxpbmUgdm9pZDxicj4NCi11cGRhdGVfaGVhZGVyKHN0cnVjdCBncm9fdGNwNF9pdGVtICpp dGVtKTxicj4NCit1cGRhdGVfaGVhZGVyKHN0cnVjdCBncm9fdGNwX2l0ZW0gKml0ZW0pPGJyPg0K Jm5ic3A7ezxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBzdHJ1Y3QgcnRlX2lwdjRf aGRyICppcHY0X2hkcjs8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgc3RydWN0IHJ0 ZV9tYnVmICpwa3QgPSBpdGVtLSZndDtmaXJzdHNlZzs8YnI+DQpAQCAtMzAyLDcgKzMwMyw3IEBA IGdyb190Y3A0X3JlYXNzZW1ibGUoc3RydWN0IHJ0ZV9tYnVmICpwa3QsPGJyPg0KJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHNlbnRfc2VxLCBp cF9pZCwgcGt0LSZndDtsNF9sZW4sIHRjcF9kbCwgMCw8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgaXNfYXRvbWljKTs8YnI+DQombmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGlmIChj bXApIHs8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAobWVyZ2VfdHdvX3RjcDRf cGFja2V0cygmYW1wOyh0YmwtJmd0O2l0ZW1zW2N1cl9pZHhdKSw8YnI+DQorJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDtpZiAobWVyZ2VfdHdvX3RjcF9wYWNrZXRzKCZhbXA7KHRibC0mZ3Q7aXRl bXNbY3VyX2lkeF0pLDxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7IHBrdCwgY21wLCBzZW50X3NlcSwgaXBfaWQsIDApKTxicj4NCiZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyByZXR1cm4g MTs8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAvKjxicj4NCmRpZmYgLS1naXQgYS9s aWIvZ3JvL2dyb190Y3A0LmggYi9saWIvZ3JvL2dyb190Y3A0Lmg8YnI+DQppbmRleCAyMTJmOTdh MDQyLi42MzRhMjE1Yjk4IDEwMDY0NDxicj4NCi0tLSBhL2xpYi9ncm8vZ3JvX3RjcDQuaDxicj4N CisrKyBiL2xpYi9ncm8vZ3JvX3RjcDQuaDxicj4NCkBAIC01LDIyICs1LDkgQEA8YnI+DQombmJz cDsjaWZuZGVmIF9HUk9fVENQNF9IXzxicj4NCiZuYnNwOyNkZWZpbmUgX0dST19UQ1A0X0hfPGJy Pg0KPGJyPg0KLSNpbmNsdWRlICZsdDtydGVfdGNwLmgmZ3Q7PGJyPg0KLTxicj4NCiZuYnNwOyNk ZWZpbmUgSU5WQUxJRF9BUlJBWV9JTkRFWCAweGZmZmZmZmZmVUw8YnI+DQombmJzcDsjZGVmaW5l IEdST19UQ1A0X1RCTF9NQVhfSVRFTV9OVU0gKDEwMjRVTCAqIDEwMjRVTCk8YnI+DQo8YnI+DQot Lyo8YnI+DQotICogVGhlIG1heCBsZW5ndGggb2YgYSBJUHY0IHBhY2tldCwgd2hpY2ggaW5jbHVk ZXMgdGhlIGxlbmd0aCBvZiB0aGUgTDM8YnI+DQotICogaGVhZGVyLCB0aGUgTDQgaGVhZGVyIGFu ZCB0aGUgZGF0YSBwYXlsb2FkLjxicj4NCi0gKi88YnI+DQotI2RlZmluZSBNQVhfSVBWNF9QS1Rf TEVOR1RIIFVJTlQxNl9NQVg8YnI+DQotPGJyPg0KLS8qIFRoZSBtYXhpbXVtIFRDUCBoZWFkZXIg bGVuZ3RoICovPGJyPg0KLSNkZWZpbmUgTUFYX1RDUF9ITEVOIDYwPGJyPg0KLSNkZWZpbmUgSU5W QUxJRF9UQ1BfSERSTEVOKGxlbikgXDxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDso KChsZW4pICZsdDsgc2l6ZW9mKHN0cnVjdCBydGVfdGNwX2hkcikpIHx8ICgobGVuKSAmZ3Q7IE1B WF9UQ1BfSExFTikpPGJyPg0KLTxicj4NCiZuYnNwOy8qIEhlYWRlciBmaWVsZHMgcmVwcmVzZW50 aW5nIGEgVENQL0lQdjQgZmxvdyAqLzxicj4NCiZuYnNwO3N0cnVjdCB0Y3A0X2Zsb3dfa2V5IHs8 YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgc3RydWN0IHJ0ZV9ldGhlcl9hZGRyIGV0 aF9zYWRkcjs8YnI+DQpAQCAtNDIsNDIgKzI5LDEyIEBAIHN0cnVjdCBncm9fdGNwNF9mbG93IHs8 YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgdWludDMyX3Qgc3RhcnRfaW5kZXg7PGJy Pg0KJm5ic3A7fTs8YnI+DQo8YnI+DQotc3RydWN0IGdyb190Y3A0X2l0ZW0gezxicj4NCi0mbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKjxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgKiBUaGUgZmlyc3QgTUJVRiBzZWdtZW50IG9mIHRoZSBwYWNrZXQuIElmIHRoZSB2YWx1ZTxi cj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBpcyBOVUxMLCBpdCBtZWFucyB0aGUg aXRlbSBpcyBlbXB0eS48YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICovPGJyPg0K LSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBydGVfbWJ1ZiAqZmlyc3RzZWc7PGJy Pg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIFRoZSBsYXN0IE1CVUYgc2VnbWVudCBv ZiB0aGUgcGFja2V0ICovPGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBy dGVfbWJ1ZiAqbGFzdHNlZzs8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Lyo8YnI+ DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICogVGhlIHRpbWUgd2hlbiB0aGUgZmlyc3Qg cGFja2V0IGlzIGluc2VydGVkIGludG8gdGhlIHRhYmxlLjxicj4NCi0mbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgKiBUaGlzIHZhbHVlIHdvbid0IGJlIHVwZGF0ZWQsIGV2ZW4gaWYgdGhlIHBh Y2tldCBpcyBtZXJnZWQ8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICogd2l0aCBv dGhlciBwYWNrZXRzLjxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKi88YnI+DQot Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDY0X3Qgc3RhcnRfdGltZTs8YnI+DQotJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Lyo8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICogbmV4dF9wa3RfaWR4IGlzIHVzZWQgdG8gY2hhaW4gdGhlIHBhY2tldHMgdGhhdDxicj4N Ci0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBhcmUgaW4gdGhlIHNhbWUgZmxvdyBidXQg Y2FuJ3QgYmUgbWVyZ2VkIHRvZ2V0aGVyPGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAqIChlLmcuIGNhdXNlZCBieSBwYWNrZXQgcmVvcmRlcmluZykuPGJyPg0KLSZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAqLzxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50 MzJfdCBuZXh0X3BrdF9pZHg7PGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIFRD UCBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIHBhY2tldCAqLzxicj4NCi0mbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDt1aW50MzJfdCBzZW50X3NlcTs8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7LyogSVB2NCBJRCBvZiB0aGUgcGFja2V0ICovPGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3VpbnQxNl90IGlwX2lkOzxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsvKiB0aGUgbnVtYmVyIG9mIG1lcmdlZCBwYWNrZXRzICovPGJyPg0KLSZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO3VpbnQxNl90IG5iX21lcmdlZDs8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7LyogSW5kaWNhdGUgaWYgSVB2NCBJRCBjYW4gYmUgaWdub3JlZCAqLzxicj4NCi0m bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50OF90IGlzX2F0b21pYzs8YnI+DQotfTs8YnI+ DQotPGJyPg0KJm5ic3A7Lyo8YnI+DQombmJzcDsgKiBUQ1AvSVB2NCByZWFzc2VtYmx5IHRhYmxl IHN0cnVjdHVyZS48YnI+DQombmJzcDsgKi88YnI+DQombmJzcDtzdHJ1Y3QgZ3JvX3RjcDRfdGJs IHs8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgLyogaXRlbSBhcnJheSAqLzxicj4N Ci0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgZ3JvX3RjcDRfaXRlbSAqaXRlbXM7 PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBncm9fdGNwX2l0ZW0gKml0 ZW1zOzxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAvKiBmbG93IGFycmF5ICovPGJy Pg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHN0cnVjdCBncm9fdGNwNF9mbG93ICpmbG93 czs8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgLyogY3VycmVudCBpdGVtIG51bWJl ciAqLzxicj4NCkBAIC0xOTUsMTExICsxNTIsNCBAQCBpc19zYW1lX3RjcDRfZmxvdyhzdHJ1Y3Qg dGNwNF9mbG93X2tleSBrMSwgc3RydWN0IHRjcDRfZmxvd19rZXkgazIpPGJyPg0KJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgKGsxLmRzdF9wb3J0ID09IGsyLmRzdF9wb3J0KSk7PGJyPg0KJm5i c3A7fTxicj4NCjxicj4NCi0vKjxicj4NCi0gKiBNZXJnZSB0d28gVENQL0lQdjQgcGFja2V0cyB3 aXRob3V0IHVwZGF0aW5nIGNoZWNrc3Vtcy48YnI+DQotICogSWYgY21wIGlzIGxhcmdlciB0aGFu IDAsIGFwcGVuZCB0aGUgbmV3IHBhY2tldCB0byB0aGU8YnI+DQotICogb3JpZ2luYWwgcGFja2V0 LiBPdGhlcndpc2UsIHByZS1wZW5kIHRoZSBuZXcgcGFja2V0IHRvPGJyPg0KLSAqIHRoZSBvcmln aW5hbCBwYWNrZXQuPGJyPg0KLSAqLzxicj4NCi1zdGF0aWMgaW5saW5lIGludDxicj4NCi1tZXJn ZV90d29fdGNwNF9wYWNrZXRzKHN0cnVjdCBncm9fdGNwNF9pdGVtICppdGVtLDxicj4NCi0mbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0 IHJ0ZV9tYnVmICpwa3QsPGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDtpbnQgY21wLDxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3Qgc2VudF9zZXEsPGJyPg0K LSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1 aW50MTZfdCBpcF9pZCw8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQxNl90IGwyX29mZnNldCk8YnI+DQotezxicj4NCi0mbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgcnRlX21idWYgKnBrdF9oZWFkLCAqcGt0X3Rh aWwsICpsYXN0c2VnOzxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBo ZHJfbGVuLCBsMl9sZW47PGJyPg0KLTxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtp ZiAoY21wICZndDsgMCkgezxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7cGt0X2hlYWQgPSBpdGVtLSZndDtmaXJzdHNlZzs8YnI+DQot Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3Br dF90YWlsID0gcGt0Ozxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9IGVsc2Ugezxi cj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7cGt0X2hlYWQgPSBwa3Q7PGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtwa3RfdGFpbCA9IGl0ZW0tJmd0O2ZpcnN0c2VnOzxicj4N Ci0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9PGJyPg0KLTxicj4NCi0mbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsvKiBjaGVjayBpZiB0aGUgSVB2NCBwYWNrZXQgbGVuZ3RoIGlzIGdyZWF0 ZXIgdGhhbiB0aGUgbWF4IHZhbHVlICovPGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw O2hkcl9sZW4gPSBsMl9vZmZzZXQgKyBwa3RfaGVhZC0mZ3Q7bDJfbGVuICsgcGt0X2hlYWQtJmd0 O2wzX2xlbiArPGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDtwa3RfaGVhZC0mZ3Q7bDRfbGVuOzxicj4NCi0mbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDtsMl9sZW4gPSBsMl9vZmZzZXQgJmd0OyAwID8gcGt0X2hlYWQtJmd0O291dGVy X2wyX2xlbiA6IHBrdF9oZWFkLSZndDtsMl9sZW47PGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwO2lmICh1bmxpa2VseShwa3RfaGVhZC0mZ3Q7cGt0X2xlbiAtIGwyX2xlbiArIHBrdF90 YWlsLSZndDtwa3RfbGVuIC08YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7aGRyX2xlbiAmZ3Q7IE1BWF9JUFY0X1BLVF9MRU5HVEgpKTxi cj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7cmV0dXJuIDA7PGJyPg0KLTxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBy ZW1vdmUgdGhlIHBhY2tldCBoZWFkZXIgZm9yIHRoZSB0YWlsIHBhY2tldCAqLzxicj4NCi0mbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtydGVfcGt0bWJ1Zl9hZGoocGt0X3RhaWwsIGhkcl9sZW4p Ozxicj4NCi08YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogY2hhaW4gdHdvIHBh Y2tldHMgdG9nZXRoZXIgKi88YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKGNt cCAmZ3Q7IDApIHs8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO2l0ZW0tJmd0O2xhc3RzZWctJmd0O25leHQgPSBwa3Q7PGJyPg0KLSZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpdGVt LSZndDtsYXN0c2VnID0gcnRlX3BrdG1idWZfbGFzdHNlZyhwa3QpOzxicj4NCi0mbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogdXBkYXRlIElQ IElEIHRvIHRoZSBsYXJnZXIgdmFsdWUgKi88YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2l0ZW0tJmd0O2lwX2lkID0gaXBfaWQ7PGJy Pg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO30gZWxzZSB7PGJyPg0KLSZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtsYXN0c2VnID0gcnRl X3BrdG1idWZfbGFzdHNlZyhwa3QpOzxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7bGFzdHNlZy0mZ3Q7bmV4dCA9IGl0ZW0tJmd0O2Zp cnN0c2VnOzxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7aXRlbS0mZ3Q7Zmlyc3RzZWcgPSBwa3Q7PGJyPg0KLSZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiB1cGRhdGUgc2VudF9z ZXEgdG8gdGhlIHNtYWxsZXIgdmFsdWUgKi88YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2l0ZW0tJmd0O3NlbnRfc2VxID0gc2VudF9z ZXE7PGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDtpdGVtLSZndDtpcF9pZCA9IGlwX2lkOzxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDt9PGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2l0ZW0tJmd0O25iX21l cmdlZCsrOzxicj4NCi08YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogdXBkYXRl IE1CVUYgbWV0YWRhdGEgZm9yIHRoZSBtZXJnZWQgcGFja2V0ICovPGJyPg0KLSZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3BrdF9oZWFkLSZndDtuYl9zZWdzICs9IHBrdF90YWlsLSZndDtuYl9z ZWdzOzxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtwa3RfaGVhZC0mZ3Q7cGt0X2xl biArPSBwa3RfdGFpbC0mZ3Q7cGt0X2xlbjs8YnI+DQotPGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3JldHVybiAxOzxicj4NCi19PGJyPg0KLTxicj4NCi0vKjxicj4NCi0gKiBDaGVj ayBpZiB0d28gVENQL0lQdjQgcGFja2V0cyBhcmUgbmVpZ2hib3JzLjxicj4NCi0gKi88YnI+DQot c3RhdGljIGlubGluZSBpbnQ8YnI+DQotY2hlY2tfc2VxX29wdGlvbihzdHJ1Y3QgZ3JvX3RjcDRf aXRlbSAqaXRlbSw8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBydGVfdGNwX2hkciAqdGNwaCw8YnI+DQotJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IHNl bnRfc2VxLDxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7dWludDE2X3QgaXBfaWQsPGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCB0Y3BfaGwsPGJyPg0KLSZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50 MTZfdCB0Y3BfZGwsPGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBsMl9vZmZzZXQsPGJyPg0KLSZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50OF90IGlzX2F0b21p Yyk8YnI+DQotezxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgcnRlX21i dWYgKnBrdF9vcmlnID0gaXRlbS0mZ3Q7Zmlyc3RzZWc7PGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3N0cnVjdCBydGVfaXB2NF9oZHIgKmlwaF9vcmlnOzxicj4NCi0mbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgcnRlX3RjcF9oZHIgKnRjcGhfb3JpZzs8YnI+DQotJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgbGVuLCB0Y3BfaGxfb3JpZzs8YnI+DQot PGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lwaF9vcmlnID0gKHN0cnVjdCBydGVf aXB2NF9oZHIgKikocnRlX3BrdG1idWZfbXRvZChwa3Rfb3JpZywgY2hhciAqKSArPGJyPg0KLSZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7bDJfb2Zmc2V0ICsgcGt0X29yaWctJmd0O2wyX2xlbik7 PGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3RjcGhfb3JpZyA9IChzdHJ1Y3QgcnRl X3RjcF9oZHIgKikoKGNoYXIgKilpcGhfb3JpZyArIHBrdF9vcmlnLSZndDtsM19sZW4pOzxicj4N Ci0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0Y3BfaGxfb3JpZyA9IHBrdF9vcmlnLSZndDts NF9sZW47PGJyPg0KLTxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBDaGVjayBp ZiBUQ1Agb3B0aW9uIGZpZWxkcyBlcXVhbCAqLzxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtsZW4gPSBSVEVfTUFYKHRjcF9obCwgdGNwX2hsX29yaWcpIC0gc2l6ZW9mKHN0cnVjdCBy dGVfdGNwX2hkcik7PGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmICgodGNwX2hs ICE9IHRjcF9obF9vcmlnKSB8fCAoKGxlbiAmZ3Q7IDApICZhbXA7JmFtcDs8YnI+DQotJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7KG1lbWNtcCh0 Y3BoICsgMSwgdGNwaF9vcmlnICsgMSw8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2xl bikgIT0gMCkpKTxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7cmV0dXJuIDA7PGJyPg0KLTxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsvKiBEb24ndCBtZXJnZSBwYWNrZXRzIHdob3NlIERGIGJpdHMgYXJlIGRpZmZlcmVu dCAqLzxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAodW5saWtlbHkoaXRlbS0m Z3Q7aXNfYXRvbWljIF4gaXNfYXRvbWljKSk8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiAwOzxicj4NCi08YnI+DQotJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogY2hlY2sgaWYgdGhlIHR3byBwYWNrZXRzIGFyZSBu ZWlnaGJvcnMgKi88YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7bGVuID0gcGt0X29y aWctJmd0O3BrdF9sZW4gLSBsMl9vZmZzZXQgLSBwa3Rfb3JpZy0mZ3Q7bDJfbGVuIC08YnI+DQot Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3Br dF9vcmlnLSZndDtsM19sZW4gLSB0Y3BfaGxfb3JpZzs8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7aWYgKChzZW50X3NlcSA9PSBpdGVtLSZndDtzZW50X3NlcSArIGxlbikgJmFtcDsm YW1wOyAoaXNfYXRvbWljIHx8PGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyhpcF9pZCA9PSBpdGVtLSZndDtpcF9pZCArIDEpKSk8YnI+ DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw Oy8qIGFwcGVuZCB0aGUgbmV3IHBhY2tldCAqLzxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIDE7PGJyPg0KLSZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO2Vsc2UgaWYgKChzZW50X3NlcSArIHRjcF9kbCA9PSBpdGVtLSZn dDtzZW50X3NlcSkgJmFtcDsmYW1wOyAoaXNfYXRvbWljIHx8PGJyPg0KLSZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyhpcF9pZCArIGl0ZW0tJmd0 O25iX21lcmdlZCA9PSBpdGVtLSZndDtpcF9pZCkpKTxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogcHJlLXBlbmQgdGhlIG5ldyBw YWNrZXQgKi88YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO3JldHVybiAtMTs8YnI+DQotPGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwO3JldHVybiAwOzxicj4NCi19PGJyPg0KJm5ic3A7I2VuZGlmPGJyPg0KZGlmZiAtLWdp dCBhL2xpYi9ncm8vZ3JvX3RjcDYuYyBiL2xpYi9ncm8vZ3JvX3RjcDYuYzxicj4NCm5ldyBmaWxl IG1vZGUgMTAwNjQ0PGJyPg0KaW5kZXggMDAwMDAwMDAwMC4uN2E3MzlmMjQ3Mjxicj4NCi0tLSAv ZGV2L251bGw8YnI+DQorKysgYi9saWIvZ3JvL2dyb190Y3A2LmM8YnI+DQpAQCAtMCwwICsxLDM4 OCBAQDxicj4NCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlPGJyPg0K KyAqIENvcHlyaWdodChjKSAyMDE3IEludGVsIENvcnBvcmF0aW9uPGJyPg0KKyAqLzxicj4NCis8 YnI+DQorI2luY2x1ZGUgJmx0O3J0ZV9tYWxsb2MuaCZndDs8YnI+DQorI2luY2x1ZGUgJmx0O3J0 ZV9tYnVmLmgmZ3Q7PGJyPg0KKyNpbmNsdWRlICZsdDtydGVfZXRoZGV2LmgmZ3Q7PGJyPg0KKzxi cj4NCisjaW5jbHVkZSAmcXVvdDtncm9fdGNwNi5oJnF1b3Q7PGJyPg0KKyNpbmNsdWRlICZxdW90 O2dyb190Y3AuaCZxdW90Ozxicj4NCis8YnI+DQordm9pZCAqPGJyPg0KK2dyb190Y3A2X3RibF9j cmVhdGUodWludDE2X3Qgc29ja2V0X2lkLDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgbWF4X2Zsb3dfbnVtLDxicj4N CismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 dWludDE2X3QgbWF4X2l0ZW1fcGVyX2Zsb3cpPGJyPg0KK3s8YnI+DQorJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7c3RydWN0IGdyb190Y3A2X3RibCAqdGJsOzxicj4NCismbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDtzaXplX3Qgc2l6ZTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7dWludDMyX3QgZW50cmllc19udW0sIGk7PGJyPg0KKzxicj4NCismbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDtlbnRyaWVzX251bSA9IG1heF9mbG93X251bSAqIG1heF9pdGVtX3Blcl9mbG93 Ozxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtlbnRyaWVzX251bSA9IFJURV9NSU4o ZW50cmllc19udW0sIEdST19UQ1A2X1RCTF9NQVhfSVRFTV9OVU0pOzxicj4NCis8YnI+DQorJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKGVudHJpZXNfbnVtID09IDApPGJyPg0KKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4g TlVMTDs8YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3RibCA9IHJ0ZV96 bWFsbG9jX3NvY2tldChfX2Z1bmNfXyw8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtz aXplb2Yoc3RydWN0IGdyb190Y3A2X3RibCksPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7UlRFX0NBQ0hFX0xJTkVfU0laRSw8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtz b2NrZXRfaWQpOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAodGJsID09IE5V TEwpPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDtyZXR1cm4gTlVMTDs8YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO3NpemUgPSBzaXplb2Yoc3RydWN0IGdyb190Y3BfaXRlbSkgKiBlbnRyaWVzX251bTs8YnI+ DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dGJsLSZndDtpdGVtcyA9IHJ0ZV96bWFsbG9j X3NvY2tldChfX2Z1bmNfXyw8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzaXplLDxi cj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO1JURV9DQUNIRV9MSU5FX1NJWkUsPGJyPg0K KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c29ja2V0X2lkKTs8YnI+DQorJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7aWYgKHRibC0mZ3Q7aXRlbXMgPT0gTlVMTCkgezxicj4NCismbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cnRlX2ZyZWUo dGJsKTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3JldHVybiBOVUxMOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9 PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7bWF4X2l0ZW1fbnVtID0g ZW50cmllc19udW07PGJyPg0KKzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzaXpl ID0gc2l6ZW9mKHN0cnVjdCBncm9fdGNwNl9mbG93KSAqIGVudHJpZXNfbnVtOzxicj4NCismbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2Zsb3dzID0gcnRlX3ptYWxsb2Nfc29ja2V0 KF9fZnVuY19fLDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3NpemUsPGJyPg0KKyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7UlRFX0NBQ0hFX0xJTkVfU0laRSw8YnI+DQorJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDtzb2NrZXRfaWQpOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDtpZiAodGJsLSZndDtmbG93cyA9PSBOVUxMKSB7PGJyPg0KKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtydGVfZnJlZSh0YmwtJmd0 O2l0ZW1zKTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO3J0ZV9mcmVlKHRibCk7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gTlVMTDs8YnI+DQorJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7fTxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsv KiBJTlZBTElEX0FSUkFZX0lOREVYIGluZGljYXRlcyBhbiBlbXB0eSBmbG93ICovPGJyPg0KKyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2ZvciAoaSA9IDA7IGkgJmx0OyBlbnRyaWVzX251bTsg aSsrKTxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7dGJsLSZndDtmbG93c1tpXS5zdGFydF9pbmRleCA9IElOVkFMSURfQVJSQVlfSU5E RVg7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7bWF4X2Zsb3dfbnVt ID0gZW50cmllc19udW07PGJyPg0KKzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDty ZXR1cm4gdGJsOzxicj4NCit9PGJyPg0KKzxicj4NCit2b2lkPGJyPg0KK2dyb190Y3A2X3RibF9k ZXN0cm95KHZvaWQgKnRibCk8YnI+DQorezxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDtzdHJ1Y3QgZ3JvX3RjcDZfdGJsICp0Y3BfdGJsID0gdGJsOzxicj4NCis8YnI+DQorJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHRjcF90YmwpIHs8YnI+DQorJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3J0ZV9mcmVlKHRjcF90Ymwt Jmd0O2l0ZW1zKTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3J0ZV9mcmVlKHRjcF90YmwtJmd0O2Zsb3dzKTs8YnI+DQorJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7fTxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDty dGVfZnJlZSh0Y3BfdGJsKTs8YnI+DQorfTxicj4NCis8YnI+DQorc3RhdGljIGlubGluZSB1aW50 MzJfdDxicj4NCitmaW5kX2FuX2VtcHR5X2l0ZW0oc3RydWN0IGdyb190Y3A2X3RibCAqdGJsKTxi cj4NCit7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IGk7PGJyPg0K KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IG1heF9pdGVtX251bSA9IHRibC0m Z3Q7bWF4X2l0ZW1fbnVtOzxicj4NCis8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 Zm9yIChpID0gMDsgaSAmbHQ7IG1heF9pdGVtX251bTsgaSsrKTxicj4NCismbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHRibC0mZ3Q7aXRl bXNbaV0uZmlyc3RzZWcgPT0gTlVMTCk8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDty ZXR1cm4gaTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIElOVkFMSURf QVJSQVlfSU5ERVg7PGJyPg0KK308YnI+DQorPGJyPg0KK3N0YXRpYyBpbmxpbmUgdWludDMyX3Q8 YnI+DQorZmluZF9hbl9lbXB0eV9mbG93KHN0cnVjdCBncm9fdGNwNl90YmwgKnRibCk8YnI+DQor ezxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBpOzxicj4NCismbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBtYXhfZmxvd19udW0gPSB0YmwtJmd0O21h eF9mbG93X251bTs8YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2ZvciAo aSA9IDA7IGkgJmx0OyBtYXhfZmxvd19udW07IGkrKyk8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmICh0YmwtJmd0O2Zsb3dzW2ld LnN0YXJ0X2luZGV4ID09IElOVkFMSURfQVJSQVlfSU5ERVgpPGJyPg0KKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7cmV0dXJuIGk7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3Jl dHVybiBJTlZBTElEX0FSUkFZX0lOREVYOzxicj4NCit9PGJyPg0KKzxicj4NCitzdGF0aWMgaW5s aW5lIHVpbnQzMl90PGJyPg0KK2luc2VydF9uZXdfaXRlbShzdHJ1Y3QgZ3JvX3RjcDZfdGJsICp0 YmwsPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDtzdHJ1Y3QgcnRlX21idWYgKnBrdCw8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQ2NF90IHN0YXJ0X3RpbWUsPGJy Pg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDt1aW50MzJfdCBwcmV2X2lkeCw8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IHNlbnRfc2VxLDxicj4NCismbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDhfdCBp c19hdG9taWMpPGJyPg0KK3s8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMy X3QgaXRlbV9pZHg7PGJyPg0KKzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpdGVt X2lkeCA9IGZpbmRfYW5fZW1wdHlfaXRlbSh0YmwpOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDtpZiAoaXRlbV9pZHggPT0gSU5WQUxJRF9BUlJBWV9JTkRFWCk8YnI+DQorJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVybiBJ TlZBTElEX0FSUkFZX0lOREVYOzxicj4NCis8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7dGJsLSZndDtpdGVtc1tpdGVtX2lkeF0uZmlyc3RzZWcgPSBwa3Q7PGJyPg0KKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO3RibC0mZ3Q7aXRlbXNbaXRlbV9pZHhdLmxhc3RzZWcgPSBydGVf cGt0bWJ1Zl9sYXN0c2VnKHBrdCk7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3Ri bC0mZ3Q7aXRlbXNbaXRlbV9pZHhdLnN0YXJ0X3RpbWUgPSBzdGFydF90aW1lOzxicj4NCismbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2l0ZW1zW2l0ZW1faWR4XS5uZXh0X3BrdF9p ZHggPSBJTlZBTElEX0FSUkFZX0lOREVYOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDt0YmwtJmd0O2l0ZW1zW2l0ZW1faWR4XS5zZW50X3NlcSA9IHNlbnRfc2VxOzxicj4NCismbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2l0ZW1zW2l0ZW1faWR4XS5uYl9tZXJnZWQg PSAxOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2l0ZW1zW2l0ZW1f aWR4XS5pc19hdG9taWMgPSBpc19hdG9taWM7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO3RibC0mZ3Q7aXRlbV9udW0rKzs8YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOy8qIGlmIHRoZSBwcmV2aW91cyBwYWNrZXQgZXhpc3RzLCBjaGFpbiB0aGVtIHRvZ2V0 aGVyLiAqLzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAocHJldl9pZHggIT0g SU5WQUxJRF9BUlJBWV9JTkRFWCkgezxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dGJsLSZndDtpdGVtc1tpdGVtX2lkeF0ubmV4dF9w a3RfaWR4ID08YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2l0ZW1zW3By ZXZfaWR4XS5uZXh0X3BrdF9pZHg7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2l0ZW1zW3ByZXZfaWR4XS5uZXh0X3Br dF9pZHggPSBpdGVtX2lkeDs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fTxicj4N Cis8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIGl0ZW1faWR4Ozxicj4N Cit9PGJyPg0KKzxicj4NCitzdGF0aWMgaW5saW5lIHVpbnQzMl90PGJyPg0KK2RlbGV0ZV9pdGVt KHN0cnVjdCBncm9fdGNwNl90YmwgKnRibCwgdWludDMyX3QgaXRlbV9pZHgsPGJyPg0KKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJf dCBwcmV2X2l0ZW1faWR4KTxicj4NCit7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw O3VpbnQzMl90IG5leHRfaWR4ID0gdGJsLSZndDtpdGVtc1tpdGVtX2lkeF0ubmV4dF9wa3RfaWR4 Ozxicj4NCis8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogTlVMTCBpbmRpY2F0 ZXMgYW4gZW1wdHkgaXRlbSAqLzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0Ymwt Jmd0O2l0ZW1zW2l0ZW1faWR4XS5maXJzdHNlZyA9IE5VTEw7PGJyPg0KKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO3RibC0mZ3Q7aXRlbV9udW0tLTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7aWYgKHByZXZfaXRlbV9pZHggIT0gSU5WQUxJRF9BUlJBWV9JTkRFWCk8YnI+DQor Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3Ri bC0mZ3Q7aXRlbXNbcHJldl9pdGVtX2lkeF0ubmV4dF9wa3RfaWR4ID0gbmV4dF9pZHg7PGJyPg0K Kzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gbmV4dF9pZHg7PGJyPg0K K308YnI+DQorPGJyPg0KK3N0YXRpYyBpbmxpbmUgdWludDMyX3Q8YnI+DQoraW5zZXJ0X25ld19m bG93KHN0cnVjdCBncm9fdGNwNl90YmwgKnRibCw8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCB0Y3A2X2Zsb3dfa2V5ICpz cmMsPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDtydGVfYmUzMl90IHZ0Y19mbG93LDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgaXRlbV9pZHgpPGJyPg0K K3s8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IHRjcDZfZmxvd19rZXkg KmRzdDs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgZmxvd19pZHg7 PGJyPg0KKzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtmbG93X2lkeCA9IGZpbmRf YW5fZW1wdHlfZmxvdyh0YmwpOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAo dW5saWtlbHkoZmxvd19pZHggPT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkpPGJyPg0KKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gSU5W QUxJRF9BUlJBWV9JTkRFWDs8YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw O2RzdCA9ICZhbXA7KHRibC0mZ3Q7Zmxvd3NbZmxvd19pZHhdLmtleSk7PGJyPg0KKzxicj4NCism bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtydGVfZXRoZXJfYWRkcl9jb3B5KCZhbXA7KHNyYy0m Z3Q7ZXRoX3NhZGRyKSwgJmFtcDsoZHN0LSZndDtldGhfc2FkZHIpKTs8YnI+DQorJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7cnRlX2V0aGVyX2FkZHJfY29weSgmYW1wOyhzcmMtJmd0O2V0aF9k YWRkciksICZhbXA7KGRzdC0mZ3Q7ZXRoX2RhZGRyKSk7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO21lbWNweSgmYW1wO2RzdC0mZ3Q7c3JjX2FkZHJbMF0sICZhbXA7c3JjLSZndDtz cmNfYWRkclswXSwgc2l6ZW9mKGRzdC0mZ3Q7c3JjX2FkZHIpKTs8YnI+DQorJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7bWVtY3B5KCZhbXA7ZHN0LSZndDtkc3RfYWRkclswXSwgJmFtcDtzcmMt Jmd0O2RzdF9hZGRyWzBdLCBzaXplb2YoZHN0LSZndDtkc3RfYWRkcikpOzxicj4NCismbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDtkc3QtJmd0O3JlY3ZfYWNrID0gc3JjLSZndDtyZWN2X2Fjazs8 YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ZHN0LSZndDtzcmNfcG9ydCA9IHNyYy0m Z3Q7c3JjX3BvcnQ7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2RzdC0mZ3Q7ZHN0 X3BvcnQgPSBzcmMtJmd0O2RzdF9wb3J0Ozxicj4NCis8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7dGJsLSZndDtmbG93c1tmbG93X2lkeF0uc3RhcnRfaW5kZXggPSBpdGVtX2lkeDs8 YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dGJsLSZndDtmbG93X251bSsrOzxicj4N CismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0YmwtJmd0O2Zsb3dzLSZndDt2dGNfZmxvdyA9 IHZ0Y19mbG93Ozxicj4NCis8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJu IGZsb3dfaWR4Ozxicj4NCit9PGJyPg0KKzxicj4NCisvKjxicj4NCisgKiB1cGRhdGUgdGhlIHBh Y2tldCBsZW5ndGggZm9yIHRoZSBmbHVzaGVkIHBhY2tldC48YnI+DQorICovPGJyPg0KK3N0YXRp YyBpbmxpbmUgdm9pZDxicj4NCit1cGRhdGVfaGVhZGVyKHN0cnVjdCBncm9fdGNwX2l0ZW0gKml0 ZW0pPGJyPg0KK3s8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IHJ0ZV9p cHY2X2hkciAqaXB2Nl9oZHI7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVj dCBydGVfbWJ1ZiAqcGt0ID0gaXRlbS0mZ3Q7Zmlyc3RzZWc7PGJyPg0KKzxicj4NCismbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDtpcHY2X2hkciA9IChzdHJ1Y3QgcnRlX2lwdjZfaGRyICopKHJ0 ZV9wa3RtYnVmX210b2QocGt0LCBjaGFyICopICs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtwa3QtJmd0O2wyX2xlbik7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lw djZfaGRyLSZndDtwYXlsb2FkX2xlbiA9IHJ0ZV9jcHVfdG9fYmVfMTYocGt0LSZndDtwa3RfbGVu IC08YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtwa3QtJmd0O2wyX2xlbiAtIHBrdC0m Z3Q7bDNfbGVuKTs8YnI+DQorfTxicj4NCis8YnI+DQoraW50MzJfdDxicj4NCitncm9fdGNwNl9y ZWFzc2VtYmxlKHN0cnVjdCBydGVfbWJ1ZiAqcGt0LDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IGdyb190Y3A2X3RibCAq dGJsLDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7dWludDY0X3Qgc3RhcnRfdGltZSk8YnI+DQorezxicj4NCismbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgcnRlX2V0aGVyX2hkciAqZXRoX2hkcjs8YnI+DQorJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IHJ0ZV9pcHY2X2hkciAqaXB2Nl9oZHI7PGJyPg0K KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBydGVfdGNwX2hkciAqdGNwX2hkcjs8 YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3Qgc2VudF9zZXE7PGJyPg0K KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2ludDMyX3QgdGNwX2RsOzxicj4NCismbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBpcF90bGVuOzxicj4NCismbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgdGNwNl9mbG93X2tleSBrZXk7PGJyPg0KKyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IGN1cl9pZHgsIHByZXZfaWR4LCBpdGVtX2lkeDs8YnI+ DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDMyX3QgaSwgbWF4X2Zsb3dfbnVtLCBy ZW1haW5pbmdfZmxvd19udW07PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2ludCBj bXA7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQ4X3QgZmluZDs8YnI+DQor Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cnRlX2JlMzJfdCB2dGNfZmxvd19kaWZmOzxicj4N Cis8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Lyo8YnI+DQorJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICogRG9uJ3QgcHJvY2VzcyB0aGUgcGFja2V0IHdob3NlIFRDUCBoZWFk ZXIgbGVuZ3RoIGlzIGdyZWF0ZXI8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICog dGhhbiA2MCBieXRlcyBvciBsZXNzIHRoYW4gMjAgYnl0ZXMuPGJyPg0KKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAqLzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAodW5s aWtlbHkoSU5WQUxJRF9UQ1BfSERSTEVOKHBrdC0mZ3Q7bDRfbGVuKSkpPGJyPg0KKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gLTE7 PGJyPg0KKzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtldGhfaGRyID0gcnRlX3Br dG1idWZfbXRvZChwa3QsIHN0cnVjdCBydGVfZXRoZXJfaGRyICopOzxicj4NCismbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDtpcHY2X2hkciA9IChzdHJ1Y3QgcnRlX2lwdjZfaGRyICopKChjaGFy ICopZXRoX2hkciArIHBrdC0mZ3Q7bDJfbGVuKTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7dGNwX2hkciA9IChzdHJ1Y3QgcnRlX3RjcF9oZHIgKikoKGNoYXIgKilpcHY2X2hkciAr IHBrdC0mZ3Q7bDNfbGVuKTs8YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw Oy8qPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIERvbid0IHByb2Nlc3MgdGhl IHBhY2tldCB3aGljaCBoYXMgRklOLCBTWU4sIFJTVCwgUFNILCBVUkcsIEVDRTxicj4NCismbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBvciBDV1Igc2V0Ljxicj4NCismbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgKi88YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHRj cF9oZHItJmd0O3RjcF9mbGFncyAhPSBSVEVfVENQX0FDS19GTEFHKTxicj4NCismbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIC0xOzxi cj4NCis8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aXBfdGxlbiA9IHJ0ZV9iZV90 b19jcHVfMTYoaXB2Nl9oZHItJmd0O3BheWxvYWRfbGVuKTs8YnI+DQorJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7LyogPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIFRyaW0g dGhlIHRhaWwgcGFkZGluZyBieXRlcy4gVGhlIElQdjYgaGVhZGVyIGlzIGZpeGVkIHRvIDxicj4N CismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiA0MCBieXRlcyB1bmxpa2UgSVB2NCB0aGF0 IGlzIHZhcmlhYmxlLiBUaGUgbGVuZ3RoIGluIHRoZSBJUHY2IGhlYWRlciA8YnI+DQorJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICogY29udGFpbnMgb25seSBsZW5ndGggb2YgVENQIEhlYWRl ciArIFRDUCBQYXlsb2FkLCB3aGVyZWFzIElQdjQgaGVhZGVyIGNvbnRhaW5zDQo8YnI+DQorJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICogbGVuZ3RoIG9mIElQIEhlYWRlciArIFRDUCBIZWFk ZXIgKyBUQ1AgUGF5bG9hZDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKi88YnI+ DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHBrdC0mZ3Q7cGt0X2xlbiAmZ3Q7ICh1 aW50MzJfdCkoaXBfdGxlbiArIHBrdC0mZ3Q7bDJfbGVuICsgcGt0LSZndDtsM19sZW4pKTxicj4N CismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 cnRlX3BrdG1idWZfdHJpbShwa3QsIHBrdC0mZ3Q7cGt0X2xlbiAtIGlwX3RsZW4gLSBwa3QtJmd0 O2wyX2xlbiAtIHBrdC0mZ3Q7bDNfbGVuKTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7Lyo8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICogRG9uJ3QgcHJvY2VzcyB0 aGUgcGFja2V0IHdob3NlIHBheWxvYWQgbGVuZ3RoIGlzIGxlc3MgdGhhbiBvcjxicj4NCismbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBlcXVhbCB0byAwLjxicj4NCismbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgKi88YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dGNwX2Rs ID0gaXBfdGxlbiAtIHBrdC0mZ3Q7bDRfbGVuOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtpZiAodGNwX2RsICZsdDs9IDApPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gLTE7PGJyPg0KKzxicj4NCismbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzZW50X3NlcSA9IHJ0ZV9iZV90b19jcHVfMzIodGNwX2hk ci0mZ3Q7c2VudF9zZXEpOzxicj4NCis8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 cnRlX2V0aGVyX2FkZHJfY29weSgmYW1wOyhldGhfaGRyLSZndDtzcmNfYWRkciksICZhbXA7KGtl eS5ldGhfc2FkZHIpKTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cnRlX2V0aGVy X2FkZHJfY29weSgmYW1wOyhldGhfaGRyLSZndDtkc3RfYWRkciksICZhbXA7KGtleS5ldGhfZGFk ZHIpKTs8YnI+DQorJm5ic3A7ICZuYnNwOyBtZW1jcHkoJmFtcDtrZXkuc3JjX2FkZHJbMF0sICZh bXA7aXB2Nl9oZHItJmd0O3NyY19hZGRyLCBzaXplb2Yoa2V5LnNyY19hZGRyKSk7PGJyPg0KKyZu YnNwOyAmbmJzcDsgbWVtY3B5KCZhbXA7a2V5LmRzdF9hZGRyWzBdLCAmYW1wO2lwdjZfaGRyLSZn dDtkc3RfYWRkciwgc2l6ZW9mKGtleS5kc3RfYWRkcikpOzxicj4NCismbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDtrZXkuc3JjX3BvcnQgPSB0Y3BfaGRyLSZndDtzcmNfcG9ydDs8YnI+DQorJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7a2V5LmRzdF9wb3J0ID0gdGNwX2hkci0mZ3Q7ZHN0X3Bv cnQ7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2tleS5yZWN2X2FjayA9IHRjcF9o ZHItJmd0O3JlY3ZfYWNrOzxicj4NCis8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 LyogU2VhcmNoIGZvciBhIG1hdGNoZWQgZmxvdy4gKi88YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7bWF4X2Zsb3dfbnVtID0gdGJsLSZndDttYXhfZmxvd19udW07PGJyPg0KKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JlbWFpbmluZ19mbG93X251bSA9IHRibC0mZ3Q7Zmxvd19u dW07PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2ZpbmQgPSAwOzxicj4NCismbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtmb3IgKGkgPSAwOyBpICZsdDsgbWF4X2Zsb3dfbnVtICZh bXA7JmFtcDsgcmVtYWluaW5nX2Zsb3dfbnVtOyBpKyspIHs8YnI+DQorJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmICh0YmwtJmd0O2Zsb3dz W2ldLnN0YXJ0X2luZGV4ICE9IElOVkFMSURfQVJSQVlfSU5ERVgpIHs8YnI+DQorJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDtpZiAoaXNfc2FtZV90Y3A2X2Zsb3codGJsLSZndDtmbG93c1tpXS5r ZXksIGtleSkpIHs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7LyogPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIElQIHZlcnNpb24gKDQpIFRyYWZmaWMgQ2xhc3MgKDgp IEZsb3cgTGFiZWwgKDIwKQ0KPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIEFsbCBmaWVsZHMgZXhjZXB0IFRyYWZmaWMgY2xhc3Mg c2hvdWxkIGJlIHNhbWU8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7Ki88YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dnRjX2Zsb3dfZGlmZiA9IChpcHY2X2hkci0mZ3Q7dnRj X2Zsb3cgXiB0YmwtJmd0O2Zsb3dzLSZndDt2dGNfZmxvdyk7PGJyPg0KKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmICh2dGNfZmxvd19kaWZm ICZhbXA7IGh0b25sKDB4RjAwRkZGRkYpKSB7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDtjb250aW51ZTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7fTxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDtmaW5kID0gMTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7YnJlYWs7PGJyPg0KKyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7fTxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JlbWFpbmlu Z19mbG93X251bS0tOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7fTxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9PGJy Pg0KKzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKjxicj4NCismbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgKiBGYWlsIHRvIGZpbmQgYSBtYXRjaGVkIGZsb3cuIEluc2VydCBh IG5ldyBmbG93IGFuZCBzdG9yZSB0aGU8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICogcGFja2V0IGludG8gdGhlIGZsb3cuPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAqLzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoZmluZCA9PSAwKSB7PGJy Pg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDtpdGVtX2lkeCA9IGluc2VydF9uZXdfaXRlbSh0YmwsIHBrdCwgc3RhcnRfdGltZSw8YnI+DQor Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7SU5W QUxJRF9BUlJBWV9JTkRFWCwgc2VudF9zZXEsIHRydWUpOzxicj4NCismbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKGl0ZW1faWR4ID09IElO VkFMSURfQVJSQVlfSU5ERVgpPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJu IC0xOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7aWYgKGluc2VydF9uZXdfZmxvdyh0YmwsICZhbXA7a2V5LCBpcHY2X2hkci0mZ3Q7 dnRjX2Zsb3csIGl0ZW1faWR4KSA9PTxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtJTlZBTElEX0FSUkFZX0lOREVYKSB7PGJyPg0KKyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Lyo8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgKiBGYWlsIHRvIGluc2VydCBhIG5ldyBmbG93LCBzbyBkZWxldGUgdGhlPGJyPg0KKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICogc3RvcmVkIHBhY2tldC48YnI+DQorJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgKi88YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtkZWxldGVf aXRlbSh0YmwsIGl0ZW1faWR4LCBJTlZBTElEX0FSUkFZX0lOREVYKTs8YnI+DQorJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gLTE7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gMDs8YnI+DQorJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fTxicj4NCis8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7Lyo8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICogQ2hlY2sgYWxs IHBhY2tldHMgaW4gdGhlIGZsb3cgYW5kIHRyeSB0byBmaW5kIGEgbmVpZ2hib3IgZm9yPGJyPg0K KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIHRoZSBpbnB1dCBwYWNrZXQuPGJyPg0KKyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAqLzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtjdXJfaWR4ID0gdGJsLSZndDtmbG93c1tpXS5zdGFydF9pbmRleDs8YnI+DQorJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7cHJldl9pZHggPSBjdXJfaWR4Ozxicj4NCismbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDtkbyB7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtjbXAgPSBjaGVja19zZXFfb3B0aW9uKCZhbXA7KHRi bC0mZ3Q7aXRlbXNbY3VyX2lkeF0pLCB0Y3BfaGRyLDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzZW50X3NlcSwgMCwgcGt0LSZndDts NF9sZW4sIHRjcF9kbCwgMCw8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7dHJ1ZSk7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoY21wKSB7PGJyPg0KKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7aWYgKG1lcmdlX3R3b190Y3BfcGFja2V0cygmYW1wOyh0YmwtJmd0 O2l0ZW1zW2N1cl9pZHhdKSw8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDtwa3QsIGNtcCwgc2VudF9zZXEsIDAsIDApKSB7PGJyPg0KKyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3JldHVy biAxOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB9PGJy Pg0KKzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qPGJyPg0KKyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICogRmFpbCB0byBtZXJnZSB0aGUgdHdvIHBhY2tldHMsIGFzIHRoZSBw YWNrZXQ8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKiBsZW5ndGggaXMgZ3JlYXRl ciB0aGFuIHRoZSBtYXggdmFsdWUuIFN0b3JlPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICogdGhlIHBhY2tldCBpbnRvIHRoZSBmbG93Ljxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAqLzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChpbnNlcnRfbmV3 X2l0ZW0odGJsLCBwa3QsIHN0YXJ0X3RpbWUsIGN1cl9pZHgsPGJyPg0KKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c2VudF9zZXEsIHRydWUpID09 PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtJTlZBTElEX0FSUkFZX0lOREVYKTxicj4N CismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDty ZXR1cm4gLTE7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIDA7PGJyPg0K KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9 PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtwcmV2X2lkeCA9IGN1cl9pZHg7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtjdXJfaWR4ID0gdGJsLSZndDtpdGVtc1tjdXJf aWR4XS5uZXh0X3BrdF9pZHg7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO30gd2hp bGUgKGN1cl9pZHggIT0gSU5WQUxJRF9BUlJBWV9JTkRFWCk7PGJyPg0KKzxicj4NCismbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBGYWlsIHRvIGZpbmQgYSBuZWlnaGJvciwgc28gc3RvcmUg dGhlIHBhY2tldCBpbnRvIHRoZSBmbG93LiAqLzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtpZiAoaW5zZXJ0X25ld19pdGVtKHRibCwgcGt0LCBzdGFydF90aW1lLCBwcmV2X2lkeCwg c2VudF9zZXEsPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO3RydWUpID09IElOVkFMSURfQVJSQVlfSU5ERVgpPGJyPg0KKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gLTE7 PGJyPg0KKzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtyZXR1cm4gMDs8YnI+DQor fTxicj4NCis8YnI+DQordWludDE2X3Q8YnI+DQorZ3JvX3RjcDZfdGJsX3RpbWVvdXRfZmx1c2go c3RydWN0IGdyb190Y3A2X3RibCAqdGJsLDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDY0X3QgZmx1c2hfdGltZXN0YW1wLDxi cj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7c3RydWN0IHJ0ZV9tYnVmICoqb3V0LDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3QgbmJfb3V0KTxicj4NCit7PGJy Pg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQxNl90IGsgPSAwOzxicj4NCismbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBpLCBqOzxicj4NCismbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBtYXhfZmxvd19udW0gPSB0YmwtJmd0O21heF9mbG93X251 bTs8YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2ZvciAoaSA9IDA7IGkg Jmx0OyBtYXhfZmxvd19udW07IGkrKykgezxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKHVubGlrZWx5KHRibC0mZ3Q7Zmxvd19u dW0gPT0gMCkpPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmV0dXJuIGs7PGJyPg0K Kzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7aiA9IHRibC0mZ3Q7Zmxvd3NbaV0uc3RhcnRfaW5kZXg7PGJyPg0KKyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt3aGlsZSAoaiAhPSBJ TlZBTElEX0FSUkFZX0lOREVYKSB7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYg KHRibC0mZ3Q7aXRlbXNbal0uc3RhcnRfdGltZSAmbHQ7PSBmbHVzaF90aW1lc3RhbXApIHs8YnI+ DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 b3V0W2srK10gPSB0YmwtJmd0O2l0ZW1zW2pdLmZpcnN0c2VnOzxicj4NCismbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAodGJsLSZndDtpdGVt c1tqXS5uYl9tZXJnZWQgJmd0OyAxKTxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dXBk YXRlX2hlYWRlcigmYW1wOyh0YmwtJmd0O2l0ZW1zW2pdKSk7PGJyPg0KKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qPGJyPg0KKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIERlbGV0ZSB0 aGUgcGFja2V0IGFuZCBnZXQgdGhlIG5leHQ8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICogcGFja2V0IGluIHRoZSBmbG93Ljxicj4N CismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Ki88YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7aiA9IGRlbGV0ZV9pdGVtKHRibCwgaiwgSU5WQUxJRF9BUlJBWV9JTkRFWCk7PGJyPg0K KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3Ri bC0mZ3Q7Zmxvd3NbaV0uc3RhcnRfaW5kZXggPSBqOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoaiA9PSBJTlZBTElEX0FSUkFZ X0lOREVYKTxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dGJsLSZndDtmbG93X251bS0t Ozxicj4NCis8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7aWYgKHVubGlrZWx5KGsgPT0gbmJfb3V0KSk8YnI+DQorJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO3JldHVybiBrOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO30g ZWxzZTxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsvKjxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgKiBUaGUgbGVmdCBwYWNrZXRzIGluIHRoaXMgZmxvdyB3b24ndCBiZTxi cj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgKiB0aW1lb3V0LiBHbyB0byBjaGVjayBvdGhlciBmbG93cy48YnI+DQorJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICovPGJyPg0KKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2JyZWFrOzxi cj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7fTxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9PGJyPg0KKyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3JldHVybiBrOzxicj4NCit9PGJyPg0KKzxicj4NCit1aW50MzJfdDxi cj4NCitncm9fdGNwNl90YmxfcGt0X2NvdW50KHZvaWQgKnRibCk8YnI+DQorezxicj4NCismbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgZ3JvX3RjcDZfdGJsICpncm9fdGJsID0gdGJs Ozxicj4NCis8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKGdyb190YmwpPGJy Pg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDtyZXR1cm4gZ3JvX3RibC0mZ3Q7aXRlbV9udW07PGJyPg0KKzxicj4NCismbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDtyZXR1cm4gMDs8YnI+DQorfTxicj4NCmRpZmYgLS1naXQgYS9saWIvZ3Jv L2dyb190Y3A2LmggYi9saWIvZ3JvL2dyb190Y3A2Lmg8YnI+DQpuZXcgZmlsZSBtb2RlIDEwMDY0 NDxicj4NCmluZGV4IDAwMDAwMDAwMDAuLmFlYTIzMWFkYmI8YnI+DQotLS0gL2Rldi9udWxsPGJy Pg0KKysrIGIvbGliL2dyby9ncm9fdGNwNi5oPGJyPg0KQEAgLTAsMCArMSwxNTAgQEA8YnI+DQor LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZTxicj4NCisgKiBDb3B5cmln aHQoYykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbjxicj4NCisgKi88YnI+DQorPGJyPg0KKyNpZm5k ZWYgX0dST19UQ1A2X0hfPGJyPg0KKyNkZWZpbmUgX0dST19UQ1A2X0hfPGJyPg0KKzxicj4NCisj ZGVmaW5lIElOVkFMSURfQVJSQVlfSU5ERVggMHhmZmZmZmZmZlVMPGJyPg0KKyNkZWZpbmUgR1JP X1RDUDZfVEJMX01BWF9JVEVNX05VTSAoMTAyNFVMICogMTAyNFVMKTxicj4NCis8YnI+DQorLyog SGVhZGVyIGZpZWxkcyByZXByZXNlbnRpbmcgYSBUQ1AvSVB2NiBmbG93ICovPGJyPg0KK3N0cnVj dCB0Y3A2X2Zsb3dfa2V5IHs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0 IHJ0ZV9ldGhlcl9hZGRyIGV0aF9zYWRkcjs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7c3RydWN0IHJ0ZV9ldGhlcl9hZGRyIGV0aF9kYWRkcjs8YnI+DQorJm5ic3A7ICZuYnNwOyB1 aW50OF90Jm5ic3A7IHNyY19hZGRyWzE2XTs8YnI+DQorJm5ic3A7ICZuYnNwOyB1aW50OF90Jm5i c3A7IGRzdF9hZGRyWzE2XTs8YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw O3VpbnQzMl90IHJlY3ZfYWNrOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50 MTZfdCBzcmNfcG9ydDs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dWludDE2X3Qg ZHN0X3BvcnQ7PGJyPg0KK307PGJyPg0KKzxicj4NCitzdHJ1Y3QgZ3JvX3RjcDZfZmxvdyB7PGJy Pg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0cnVjdCB0Y3A2X2Zsb3dfa2V5IGtleTs8 YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cnRlX2JlMzJfdCB2dGNfZmxvdzs8YnI+ DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Lyo8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICogVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBwYWNrZXQgaW4gdGhlIGZsb3cuPGJy Pg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAqIElOVkFMSURfQVJSQVlfSU5ERVggaW5k aWNhdGVzIGFuIGVtcHR5IGZsb3cuPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAq Lzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MzJfdCBzdGFydF9pbmRleDs8 YnI+DQorfTs8YnI+DQorPGJyPg0KKy8qPGJyPg0KKyAqIFRDUC9JUHY2IHJlYXNzZW1ibHkgdGFi bGUgc3RydWN0dXJlLjxicj4NCisgKi88YnI+DQorc3RydWN0IGdyb190Y3A2X3RibCB7PGJyPg0K KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIGl0ZW0gYXJyYXkgKi88YnI+DQorJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IGdyb190Y3BfaXRlbSAqaXRlbXM7PGJyPg0KKyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy8qIGZsb3cgYXJyYXkgKi88YnI+DQorJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7c3RydWN0IGdyb190Y3A2X2Zsb3cgKmZsb3dzOzxicj4NCismbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBjdXJyZW50IGl0ZW0gbnVtYmVyICovPGJyPg0KKyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IGl0ZW1fbnVtOzxicj4NCismbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsvKiBjdXJyZW50IGZsb3cgbnVtICovPGJyPg0KKyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQzMl90IGZsb3dfbnVtOzxicj4NCismbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsvKiBpdGVtIGFycmF5IHNpemUgKi88YnI+DQorJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7dWludDMyX3QgbWF4X2l0ZW1fbnVtOzxicj4NCismbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsvKiBmbG93IGFycmF5IHNpemUgKi88YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7dWludDMyX3QgbWF4X2Zsb3dfbnVtOzxicj4NCit9Ozxicj4NCis8YnI+DQorLyoq PGJyPg0KKyAqIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIFRDUC9JUHY2IHJlYXNzZW1ibHkgdGFi bGUuPGJyPg0KKyAqPGJyPg0KKyAqIEBwYXJhbSBzb2NrZXRfaWQ8YnI+DQorICombmJzcDsgU29j a2V0IGluZGV4IGZvciBhbGxvY2F0aW5nIHRoZSBUQ1AvSVB2NiByZWFzc2VtYmxlIHRhYmxlPGJy Pg0KKyAqIEBwYXJhbSBtYXhfZmxvd19udW08YnI+DQorICombmJzcDsgVGhlIG1heGltdW0gbnVt YmVyIG9mIGZsb3dzIGluIHRoZSBUQ1AvSVB2NiBHUk8gdGFibGU8YnI+DQorICogQHBhcmFtIG1h eF9pdGVtX3Blcl9mbG93PGJyPg0KKyAqJm5ic3A7IFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYWNr ZXRzIHBlciBmbG93PGJyPg0KKyAqPGJyPg0KKyAqIEByZXR1cm48YnI+DQorICombmJzcDsgLSBS ZXR1cm4gdGhlIHRhYmxlIHBvaW50ZXIgb24gc3VjY2Vzcy48YnI+DQorICombmJzcDsgLSBSZXR1 cm4gTlVMTCBvbiBmYWlsdXJlLjxicj4NCisgKi88YnI+DQordm9pZCAqZ3JvX3RjcDZfdGJsX2Ny ZWF0ZSh1aW50MTZfdCBzb2NrZXRfaWQsPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBtYXhfZmxvd19udW0sPGJyPg0K KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1 aW50MTZfdCBtYXhfaXRlbV9wZXJfZmxvdyk7PGJyPg0KKzxicj4NCisvKio8YnI+DQorICogVGhp cyBmdW5jdGlvbiBkZXN0cm95cyBhIFRDUC9JUHY2IHJlYXNzZW1ibHkgdGFibGUuPGJyPg0KKyAq PGJyPg0KKyAqIEBwYXJhbSB0Ymw8YnI+DQorICombmJzcDsgUG9pbnRlciBwb2ludGluZyB0byB0 aGUgVENQL0lQdjYgcmVhc3NlbWJseSB0YWJsZS48YnI+DQorICovPGJyPg0KK3ZvaWQgZ3JvX3Rj cDZfdGJsX2Rlc3Ryb3kodm9pZCAqdGJsKTs8YnI+DQorPGJyPg0KKy8qKjxicj4NCisgKiBUaGlz IGZ1bmN0aW9uIG1lcmdlcyBhIFRDUC9JUHY2IHBhY2tldC4gSXQgZG9lc24ndCBwcm9jZXNzIHRo ZSBwYWNrZXQsPGJyPg0KKyAqIHdoaWNoIGhhcyBTWU4sIEZJTiwgUlNULCBQU0gsIENXUiwgRUNF IG9yIFVSRyBzZXQsIG9yIGRvZXNuJ3QgaGF2ZTxicj4NCisgKiBwYXlsb2FkLjxicj4NCisgKjxi cj4NCisgKiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgY2hlY2sgaWYgdGhlIHBhY2tldCBoYXMgY29y cmVjdCBjaGVja3N1bXMgYW5kPGJyPg0KKyAqIGRvZXNuJ3QgcmUtY2FsY3VsYXRlIGNoZWNrc3Vt cyBmb3IgdGhlIG1lcmdlZCBwYWNrZXQuIEFkZGl0aW9uYWxseSw8YnI+DQorICogaXQgYXNzdW1l cyB0aGUgcGFja2V0cyBhcmUgY29tcGxldGUgKGkuZS4sIE1GPT0wICZhbXA7JmFtcDsgZnJhZ19v ZmY9PTApLDxicj4NCisgKiB3aGVuIElQIGZyYWdtZW50YXRpb24gaXMgcG9zc2libGUgKGkuZS4s IERGPT0wKS4gSXQgcmV0dXJucyB0aGU8YnI+DQorICogcGFja2V0LCBpZiB0aGUgcGFja2V0IGhh cyBpbnZhbGlkIHBhcmFtZXRlcnMgKGUuZy4gU1lOIGJpdCBpcyBzZXQpPGJyPg0KKyAqIG9yIHRo ZXJlIGlzIG5vIGF2YWlsYWJsZSBzcGFjZSBpbiB0aGUgdGFibGUuPGJyPg0KKyAqPGJyPg0KKyAq IEBwYXJhbSBwa3Q8YnI+DQorICombmJzcDsgUGFja2V0IHRvIHJlYXNzZW1ibGU8YnI+DQorICog QHBhcmFtIHRibDxicj4NCisgKiZuYnNwOyBQb2ludGVyIHBvaW50aW5nIHRvIHRoZSBUQ1AvSVB2 NiByZWFzc2VtYmx5IHRhYmxlPGJyPg0KKyAqIEBzdGFydF90aW1lPGJyPg0KKyAqJm5ic3A7IFRo ZSB0aW1lIHdoZW4gdGhlIHBhY2tldCBpcyBpbnNlcnRlZCBpbnRvIHRoZSB0YWJsZTxicj4NCisg Kjxicj4NCisgKiBAcmV0dXJuPGJyPg0KKyAqJm5ic3A7IC0gUmV0dXJuIGEgcG9zaXRpdmUgdmFs dWUgaWYgdGhlIHBhY2tldCBpcyBtZXJnZWQuPGJyPg0KKyAqJm5ic3A7IC0gUmV0dXJuIHplcm8g aWYgdGhlIHBhY2tldCBpc24ndCBtZXJnZWQgYnV0IHN0b3JlZCBpbiB0aGUgdGFibGUuPGJyPg0K KyAqJm5ic3A7IC0gUmV0dXJuIGEgbmVnYXRpdmUgdmFsdWUgZm9yIGludmFsaWQgcGFyYW1ldGVy cyBvciBubyBhdmFpbGFibGU8YnI+DQorICombmJzcDsgJm5ic3A7IHNwYWNlIGluIHRoZSB0YWJs ZS48YnI+DQorICovPGJyPg0KK2ludDMyX3QgZ3JvX3RjcDZfcmVhc3NlbWJsZShzdHJ1Y3QgcnRl X21idWYgKnBrdCw8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBncm9fdGNwNl90YmwgKnRibCw8YnI+DQorJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VpbnQ2NF90IHN0 YXJ0X3RpbWUpOzxicj4NCis8YnI+DQorLyoqPGJyPg0KKyAqIFRoaXMgZnVuY3Rpb24gZmx1c2hl cyB0aW1lb3V0IHBhY2tldHMgaW4gYSBUQ1AvSVB2NCByZWFzc2VtYmx5IHRhYmxlLDxicj4NCisg KiBhbmQgd2l0aG91dCB1cGRhdGluZyBjaGVja3N1bXMuPGJyPg0KKyAqPGJyPg0KKyAqIEBwYXJh bSB0Ymw8YnI+DQorICombmJzcDsgVENQL0lQdjQgcmVhc3NlbWJseSB0YWJsZSBwb2ludGVyPGJy Pg0KKyAqIEBwYXJhbSBmbHVzaF90aW1lc3RhbXA8YnI+DQorICombmJzcDsgRmx1c2ggcGFja2V0 cyB3aGljaCBhcmUgaW5zZXJ0ZWQgaW50byB0aGUgdGFibGUgYmVmb3JlIG9yIGF0IHRoZTxicj4N CisgKiZuYnNwOyBmbHVzaF90aW1lc3RhbXAuPGJyPg0KKyAqIEBwYXJhbSBvdXQ8YnI+DQorICom bmJzcDsgUG9pbnRlciBhcnJheSB1c2VkIHRvIGtlZXAgZmx1c2hlZCBwYWNrZXRzPGJyPg0KKyAq IEBwYXJhbSBuYl9vdXQ8YnI+DQorICombmJzcDsgVGhlIGVsZW1lbnQgbnVtYmVyIGluICdvdXQn LiBJdCBhbHNvIGRldGVybWluZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mPGJyPg0KKyAqJm5ic3A7 IHBhY2tldHMgdGhhdCBjYW4gYmUgZmx1c2hlZCBmaW5hbGx5Ljxicj4NCisgKjxicj4NCisgKiBA cmV0dXJuPGJyPg0KKyAqJm5ic3A7IFRoZSBudW1iZXIgb2YgZmx1c2hlZCBwYWNrZXRzPGJyPg0K KyAqLzxicj4NCit1aW50MTZfdCBncm9fdGNwNl90YmxfdGltZW91dF9mbHVzaChzdHJ1Y3QgZ3Jv X3RjcDZfdGJsICp0YmwsPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50NjRfdCBmbHVzaF90aW1lc3RhbXAsPGJyPg0KKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3Qg cnRlX21idWYgKipvdXQsPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDt1aW50MTZfdCBuYl9vdXQpOzxicj4NCis8YnI+DQorLyoqPGJy Pg0KKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRoZSBwYWNrZXRzIGlu IGEgVENQL0lQdjQ8YnI+DQorICogcmVhc3NlbWJseSB0YWJsZS48YnI+DQorICo8YnI+DQorICog QHBhcmFtIHRibDxicj4NCisgKiZuYnNwOyBUQ1AvSVB2NCByZWFzc2VtYmx5IHRhYmxlIHBvaW50 ZXI8YnI+DQorICo8YnI+DQorICogQHJldHVybjxicj4NCisgKiZuYnNwOyBUaGUgbnVtYmVyIG9m IHBhY2tldHMgaW4gdGhlIHRhYmxlPGJyPg0KKyAqLzxicj4NCit1aW50MzJfdCBncm9fdGNwNl90 YmxfcGt0X2NvdW50KHZvaWQgKnRibCk7PGJyPg0KKzxicj4NCisvKjxicj4NCisgKiBDaGVjayBp ZiB0d28gVENQL0lQdjQgcGFja2V0cyBiZWxvbmcgdG8gdGhlIHNhbWUgZmxvdy48YnI+DQorICov PGJyPg0KK3N0YXRpYyBpbmxpbmUgaW50PGJyPg0KK2lzX3NhbWVfdGNwNl9mbG93KHN0cnVjdCB0 Y3A2X2Zsb3dfa2V5IGsxLCBzdHJ1Y3QgdGNwNl9mbG93X2tleSBrMik8YnI+DQorezxicj4NCism bmJzcDsgJm5ic3A7IHJldHVybiAoIW1lbWNtcCgmYW1wO2sxLCAmYW1wO2syLCBzaXplb2Yoc3Ry dWN0IHRjcDZfZmxvd19rZXkpKSk7PGJyPg0KK308YnI+DQorPGJyPg0KKyNlbmRpZjxicj4NClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZTxicj4NCmRpZmYgLS1naXQgYS9saWIvZ3JvL2dyb192 eGxhbl90Y3A0LmMgYi9saWIvZ3JvL2dyb192eGxhbl90Y3A0LmM8YnI+DQppbmRleCAzYmU0ZGVi N2M3Li41NmIzMGI4Yzk4IDEwMDY0NDxicj4NCi0tLSBhL2xpYi9ncm8vZ3JvX3Z4bGFuX3RjcDQu Yzxicj4NCisrKyBiL2xpYi9ncm8vZ3JvX3Z4bGFuX3RjcDQuYzxicj4NCkBAIC03LDYgKzcsNyBA QDxicj4NCiZuYnNwOyNpbmNsdWRlICZsdDtydGVfZXRoZGV2LmgmZ3Q7PGJyPg0KJm5ic3A7I2lu Y2x1ZGUgJmx0O3J0ZV91ZHAuaCZndDs8YnI+DQo8YnI+DQorI2luY2x1ZGUgJnF1b3Q7Z3JvX3Rj cC5oJnF1b3Q7PGJyPg0KJm5ic3A7I2luY2x1ZGUgJnF1b3Q7Z3JvX3Z4bGFuX3RjcDQuaCZxdW90 Ozxicj4NCjxicj4NCiZuYnNwO3ZvaWQgKjxicj4NCkBAIC0yNDgsNyArMjQ5LDcgQEAgbWVyZ2Vf dHdvX3Z4bGFuX3RjcDRfcGFja2V0cyhzdHJ1Y3QgZ3JvX3Z4bGFuX3RjcDRfaXRlbSAqaXRlbSw8 YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7IHVpbnQxNl90IG91dGVyX2lwX2lkLDxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgdWludDE2X3QgaXBfaWQpPGJyPg0KJm5ic3A7 ezxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAobWVyZ2VfdHdvX3RjcDRfcGFj a2V0cygmYW1wO2l0ZW0tJmd0O2lubmVyX2l0ZW0sIHBrdCwgY21wLCBzZW50X3NlcSw8YnI+DQor Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKG1lcmdlX3R3b190Y3BfcGFja2V0cygmYW1w O2l0ZW0tJmd0O2lubmVyX2l0ZW0sIHBrdCwgY21wLCBzZW50X3NlcSw8YnI+DQombmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgaXBfaWQsIHBrdC0m Z3Q7b3V0ZXJfbDJfbGVuICs8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgcGt0LSZndDtvdXRlcl9sM19sZW4pKSB7PGJyPg0KJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAvKiBVcGRh dGUgdGhlIG91dGVyIElQdjQgSUQgdG8gdGhlIGxhcmdlIHZhbHVlLiAqLzxicj4NCmRpZmYgLS1n aXQgYS9saWIvZ3JvL2dyb192eGxhbl90Y3A0LmggYi9saWIvZ3JvL2dyb192eGxhbl90Y3A0Lmg8 YnI+DQppbmRleCA3ODMyOTQyYTY4Li5kNjhkNWZjZDViIDEwMDY0NDxicj4NCi0tLSBhL2xpYi9n cm8vZ3JvX3Z4bGFuX3RjcDQuaDxicj4NCisrKyBiL2xpYi9ncm8vZ3JvX3Z4bGFuX3RjcDQuaDxi cj4NCkBAIC01LDYgKzUsNyBAQDxicj4NCiZuYnNwOyNpZm5kZWYgX0dST19WWExBTl9UQ1A0X0hf PGJyPg0KJm5ic3A7I2RlZmluZSBfR1JPX1ZYTEFOX1RDUDRfSF88YnI+DQo8YnI+DQorI2luY2x1 ZGUgJnF1b3Q7Z3JvX3RjcC5oJnF1b3Q7PGJyPg0KJm5ic3A7I2luY2x1ZGUgJnF1b3Q7Z3JvX3Rj cDQuaCZxdW90Ozxicj4NCjxicj4NCiZuYnNwOyNkZWZpbmUgR1JPX1ZYTEFOX1RDUDRfVEJMX01B WF9JVEVNX05VTSAoMTAyNFVMICogMTAyNFVMKTxicj4NCkBAIC0zNiw3ICszNyw3IEBAIHN0cnVj dCBncm9fdnhsYW5fdGNwNF9mbG93IHs8YnI+DQombmJzcDt9Ozxicj4NCjxicj4NCiZuYnNwO3N0 cnVjdCBncm9fdnhsYW5fdGNwNF9pdGVtIHs8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7c3RydWN0IGdyb190Y3A0X2l0ZW0gaW5uZXJfaXRlbTs8YnI+DQorJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7c3RydWN0IGdyb190Y3BfaXRlbSBpbm5lcl9pdGVtOzxicj4NCiZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAvKiBJUHY0IElEIGluIHRoZSBvdXRlciBJUHY0IGhlYWRlciAq Lzxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB1aW50MTZfdCBvdXRlcl9pcF9pZDs8 YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgLyogSW5kaWNhdGUgaWYgb3V0ZXIgSVB2 NCBJRCBjYW4gYmUgaWdub3JlZCAqLzxicj4NCmRpZmYgLS1naXQgYS9saWIvZ3JvL21lc29uLmJ1 aWxkIGIvbGliL2dyby9tZXNvbi5idWlsZDxicj4NCmluZGV4IGU0ZmEyOTU4YmQuLmRiY2UwNTIy MGQgMTAwNjQ0PGJyPg0KLS0tIGEvbGliL2dyby9tZXNvbi5idWlsZDxicj4NCisrKyBiL2xpYi9n cm8vbWVzb24uYnVpbGQ8YnI+DQpAQCAtNCw2ICs0LDcgQEA8YnI+DQombmJzcDtzb3VyY2VzID0g ZmlsZXMoPGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOydydGVfZ3JvLmMn LDxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsnZ3JvX3RjcDQuYycsPGJy Pg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAnZ3JvX3RjcDYuYycsPGJyPg0KJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOydncm9fdWRwNC5jJyw8YnI+DQombmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7J2dyb192eGxhbl90Y3A0LmMnLDxicj4NCiZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsnZ3JvX3Z4bGFuX3VkcDQuYycsPGJyPg0KZGlmZiAt LWdpdCBhL2xpYi9ncm8vcnRlX2dyby5jIGIvbGliL2dyby9ydGVfZ3JvLmM8YnI+DQppbmRleCBl MzUzOTlmZDQyLi5jODE4MGQyNGUzIDEwMDY0NDxicj4NCi0tLSBhL2xpYi9ncm8vcnRlX2dyby5j PGJyPg0KKysrIGIvbGliL2dyby9ydGVfZ3JvLmM8YnI+DQpAQCAtOCw2ICs4LDcgQEA8YnI+DQo8 YnI+DQombmJzcDsjaW5jbHVkZSAmcXVvdDtydGVfZ3JvLmgmcXVvdDs8YnI+DQombmJzcDsjaW5j bHVkZSAmcXVvdDtncm9fdGNwNC5oJnF1b3Q7PGJyPg0KKyNpbmNsdWRlICZxdW90O2dyb190Y3A2 LmgmcXVvdDs8YnI+DQombmJzcDsjaW5jbHVkZSAmcXVvdDtncm9fdWRwNC5oJnF1b3Q7PGJyPg0K Jm5ic3A7I2luY2x1ZGUgJnF1b3Q7Z3JvX3Z4bGFuX3RjcDQuaCZxdW90Ozxicj4NCiZuYnNwOyNp bmNsdWRlICZxdW90O2dyb192eGxhbl91ZHA0LmgmcXVvdDs8YnI+DQpAQCAtMjAsMTQgKzIxLDE2 IEBAIHR5cGVkZWYgdWludDMyX3QgKCpncm9fdGJsX3BrdF9jb3VudF9mbikodm9pZCAqdGJsKTs8 YnI+DQo8YnI+DQombmJzcDtzdGF0aWMgZ3JvX3RibF9jcmVhdGVfZm4gdGJsX2NyZWF0ZV9mbltS VEVfR1JPX1RZUEVfTUFYX05VTV0gPSB7PGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBncm9fdGNwNF90YmxfY3JlYXRlLCBncm9fdnhs YW5fdGNwNF90YmxfY3JlYXRlLDxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Z3JvX3VkcDRfdGJsX2NyZWF0ZSwgZ3JvX3Z4bGFuX3Vk cDRfdGJsX2NyZWF0ZSwgTlVMTH07PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtncm9fdWRwNF90YmxfY3JlYXRlLCBncm9fdnhsYW5f dWRwNF90YmxfY3JlYXRlLCBncm9fdGNwNl90YmxfY3JlYXRlLCBOVUxMfTs8YnI+DQombmJzcDtz dGF0aWMgZ3JvX3RibF9kZXN0cm95X2ZuIHRibF9kZXN0cm95X2ZuW1JURV9HUk9fVFlQRV9NQVhf TlVNXSA9IHs8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBncm9fdGNwNF90YmxfZGVz dHJveSwgZ3JvX3Z4bGFuX3RjcDRfdGJsX2Rlc3Ryb3ksPGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgZ3JvX3VkcDRfdGJsX2Rlc3Ryb3ksIGdyb192eGxhbl91ZHA0X3RibF9kZXN0cm95 LDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2dyb190Y3A2X3RibF9kZXN0cm95LDxi cj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IE5VTEx9Ozxicj4NCiZuYnNwO3N0YXRpYyBn cm9fdGJsX3BrdF9jb3VudF9mbiB0YmxfcGt0X2NvdW50X2ZuW1JURV9HUk9fVFlQRV9NQVhfTlVN XSA9IHs8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBncm9fdGNwNF90YmxfcGt0X2Nv dW50LCBncm9fdnhsYW5fdGNwNF90YmxfcGt0X2NvdW50LDxicj4NCiZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7IGdyb191ZHA0X3RibF9wa3RfY291bnQsIGdyb192eGxhbl91ZHA0X3RibF9wa3Rf Y291bnQsPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Z3JvX3RjcDZfdGJsX3BrdF9j b3VudCw8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBOVUxMfTs8YnI+DQo8YnI+DQom bmJzcDsjZGVmaW5lIElTX0lQVjRfVENQX1BLVChwdHlwZSkgKFJURV9FVEhfSVNfSVBWNF9IRFIo cHR5cGUpICZhbXA7JmFtcDsgXDxicj4NCkBAIC0zNSw2ICszOCwxMiBAQCBzdGF0aWMgZ3JvX3Ri bF9wa3RfY291bnRfZm4gdGJsX3BrdF9jb3VudF9mbltSVEVfR1JPX1RZUEVfTUFYX05VTV0gPSB7 PGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAoKHB0eXBlICZhbXA7IFJURV9QVFlQRV9MNF9GUkFHKSAhPSBSVEVfUFRZUEVfTDRfRlJB RykgJmFtcDsmYW1wOyBcPGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAoUlRFX0VUSF9JU19UVU5ORUxfUEtUKHB0eXBlKSA9PSAwKSk8 YnI+DQo8YnI+DQorLyogR1JPIHdpdGggZXh0ZW5zaW9uIGhlYWRlcnMgaXMgbm90IHN1cHBvcnRl ZCAqLzxicj4NCisjZGVmaW5lIElTX0lQVjZfVENQX1BLVChwdHlwZSkgKFJURV9FVEhfSVNfSVBW Nl9IRFIocHR5cGUpICZhbXA7JmFtcDsgXDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7KChwdHlwZSAmYW1wOyBSVEVfUFRZUEVfTDRf VENQKSA9PSBSVEVfUFRZUEVfTDRfVENQKSAmYW1wOyZhbXA7IFw8YnI+DQorJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOygocHR5cGUgJmFtcDsg UlRFX1BUWVBFX0w0X0ZSQUcpICE9IFJURV9QVFlQRV9MNF9GUkFHKSAmYW1wOyZhbXA7IFw8YnI+ DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyhSVEVfRVRIX0lTX1RVTk5FTF9QS1QocHR5cGUpID09IDApKTxicj4NCis8YnI+DQombmJzcDsj ZGVmaW5lIElTX0lQVjRfVURQX1BLVChwdHlwZSkgKFJURV9FVEhfSVNfSVBWNF9IRFIocHR5cGUp ICZhbXA7JmFtcDsgXDxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgKChwdHlwZSAmYW1wOyBSVEVfUFRZUEVfTDRfVURQKSA9PSBSVEVf UFRZUEVfTDRfVURQKSAmYW1wOyZhbXA7IFw8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IChSVEVfRVRIX0lTX1RVTk5FTF9QS1QocHR5 cGUpID09IDApKTxicj4NCkBAIC0xNDcsNyArMTU2LDExIEBAIHJ0ZV9ncm9fcmVhc3NlbWJsZV9i dXJzdChzdHJ1Y3QgcnRlX21idWYgKipwa3RzLDxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAvKiBhbGxvY2F0ZSBhIHJlYXNzZW1ibHkgdGFibGUgZm9yIFRDUC9JUHY0IEdSTyAqLzxi cj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBzdHJ1Y3QgZ3JvX3RjcDRfdGJsIHRjcF90 Ymw7PGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHN0cnVjdCBncm9fdGNwNF9mbG93 IHRjcF9mbG93c1tSVEVfR1JPX01BWF9CVVJTVF9JVEVNX05VTV07PGJyPg0KLSZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3N0cnVjdCBncm9fdGNwNF9pdGVtIHRjcF9pdGVtc1tSVEVfR1JPX01B WF9CVVJTVF9JVEVNX05VTV0gPSB7ezB9IH07PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO3N0cnVjdCBncm9fdGNwX2l0ZW0gdGNwX2l0ZW1zW1JURV9HUk9fTUFYX0JVUlNUX0lURU1f TlVNXSA9IHt7MH0gfTs8YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3N0 cnVjdCBncm9fdGNwNl90YmwgdGNwNl90Ymw7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO3N0cnVjdCBncm9fdGNwNl9mbG93IHRjcDZfZmxvd3NbUlRFX0dST19NQVhfQlVSU1RfSVRF TV9OVU1dOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJ1Y3QgZ3JvX3RjcF9p dGVtIHRjcDZfaXRlbXNbUlRFX0dST19NQVhfQlVSU1RfSVRFTV9OVU1dID0ge3swfSB9Ozxicj4N Cjxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAvKiBhbGxvY2F0ZSBhIHJlYXNzZW1i bHkgdGFibGUgZm9yIFVEUC9JUHY0IEdSTyAqLzxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyBzdHJ1Y3QgZ3JvX3VkcDRfdGJsIHVkcF90Ymw7PGJyPg0KQEAgLTE3MSwxMCArMTg0LDEw IEBAIHJ0ZV9ncm9fcmVhc3NlbWJsZV9idXJzdChzdHJ1Y3QgcnRlX21idWYgKipwa3RzLDxicj4N CiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBpbnQzMl90IHJldDs8YnI+DQombmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgdWludDE2X3QgaSwgdW5wcm9jZXNzX251bSA9IDAsIG5iX2FmdGVy X2dybyA9IG5iX3BrdHM7PGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHVpbnQ4X3Qg ZG9fdGNwNF9ncm8gPSAwLCBkb192eGxhbl90Y3BfZ3JvID0gMCwgZG9fdWRwNF9ncm8gPSAwLDxi cj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ZG9fdnhsYW5fdWRwX2dybyA9IDA7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtkb192eGxhbl91ZHBfZ3JvID0gMCwgZG9fdGNw Nl9ncm8gPSAwOzxicj4NCjxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBpZiAodW5s aWtlbHkoKHBhcmFtLSZndDtncm9fdHlwZXMgJmFtcDsgKFJURV9HUk9fSVBWNF9WWExBTl9UQ1Bf SVBWNCB8PGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtSVEVfR1JPX1RDUF9JUFY0IHw8 YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO1JURV9HUk9fVENQX0lQVjQgfCBSVEVfR1JP X1RDUF9JUFY2IHw8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IFJURV9HUk9fSVBWNF9W WExBTl9VRFBfSVBWNCB8PGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBSVEVfR1JPX1VE UF9JUFY0KSkgPT0gMCkpPGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyByZXR1cm4gbmJfcGt0czs8YnI+DQpAQCAtMjM2LDYgKzI0OSwx OCBAQCBydGVfZ3JvX3JlYXNzZW1ibGVfYnVyc3Qoc3RydWN0IHJ0ZV9tYnVmICoqcGt0cyw8YnI+ DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 IGRvX3VkcDRfZ3JvID0gMTs8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfTxicj4N Cjxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAocGFyYW0tJmd0O2dyb190eXBl cyAmYW1wOyBSVEVfR1JPX1RDUF9JUFY2KSB7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtmb3IgKGkgPSAwOyBpICZsdDsgaXRlbV9u dW07IGkrKyk8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0Y3A2X2Zsb3dzW2ldLnN0 YXJ0X2luZGV4ID0gSU5WQUxJRF9BUlJBWV9JTkRFWDs8YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0Y3A2X3RibC5mbG93 cyA9IHRjcDZfZmxvd3M7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDt0Y3A2X3RibC5pdGVtcyA9IHRjcDZfaXRlbXM7PGJyPg0KKyZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0Y3A2 X3RibC5mbG93X251bSA9IDA7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0Y3A2X3RibC5pdGVtX251bSA9IDA7PGJyPg0KKyZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt0Y3A2X3Ri bC5tYXhfZmxvd19udW0gPSBpdGVtX251bTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3RjcDZfdGJsLm1heF9pdGVtX251bSA9IGl0 ZW1fbnVtOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ZG9fdGNwNl9ncm8gPSAxOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDt9PGJyPg0KPGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGZvciAoaSA9IDA7 IGkgJmx0OyBuYl9wa3RzOyBpKyspIHs8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IC8qPGJyPg0KQEAgLTI3Niw2ICszMDEsMTQgQEAg cnRlX2dyb19yZWFzc2VtYmxlX2J1cnN0KHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsPGJyPg0KJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IG5iX2Fm dGVyX2dyby0tOzxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGVsc2UgaWYgKHJldCAm bHQ7IDApPGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7IHVucHJvY2Vzc19wa3RzW3VucHJvY2Vzc19udW0rK10gPSBwa3RzW2ldOzxicj4N CismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 fSBlbHNlIGlmIChJU19JUFY2X1RDUF9QS1QocGt0c1tpXS0mZ3Q7cGFja2V0X3R5cGUpICZhbXA7 JmFtcDsgPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO2RvX3RjcDZfZ3JvKSB7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 cmV0ID0gZ3JvX3RjcDZfcmVhc3NlbWJsZShwa3RzW2ldLCAmYW1wO3RjcDZfdGJsLCAwKTs8YnI+ DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAocmV0ICZndDsgMCk8YnI+DQorJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogbWVyZ2Ug c3VjY2Vzc2Z1bGx5ICovPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO25iX2FmdGVyX2dyby0tOzxicj4NCismbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO2Vsc2UgaWYgKHJldCAmbHQ7IDApPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VucHJvY2Vzc19wa3RzW3VucHJvY2Vz c19udW0rK10gPSBwa3RzW2ldOzxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfSBlbHNlPGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgdW5wcm9jZXNzX3BrdHNbdW5wcm9jZXNzX251bSsrXSA9IHBrdHNbaV07PGJyPg0KJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IH08YnI+DQpAQCAtMjgzLDkgKzMxNiwxNyBAQCBydGVf Z3JvX3JlYXNzZW1ibGVfYnVyc3Qoc3RydWN0IHJ0ZV9tYnVmICoqcGt0cyw8YnI+DQombmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgaWYgKChuYl9hZnRlcl9ncm8gJmx0OyBuYl9wa3RzKTxicj4N CiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7fHwgKHVucHJvY2Vzc19udW0gJmx0OyBuYl9wa3RzKSkgezxicj4NCiZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgaSA9IDA7PGJyPg0K KyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsv KiBDb3B5IHVucHJvY2Vzc2VkIHBhY2tldHMgKi88YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmICh1bnByb2Nlc3NfbnVtICZndDsg MCkgezxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO21lbWNweSgmYW1wO3BrdHNbaV0s IHVucHJvY2Vzc19wa3RzLDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c2l6ZW9mKHN0 cnVjdCBydGVfbWJ1ZiAqKSAqPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt1bnByb2Nl c3NfbnVtKTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpID0gdW5wcm9jZXNzX251 bTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwO308YnI+DQorPGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAvKiBGbHVzaCBhbGwgcGFja2V0cyBmcm9tIHRoZSB0YWJsZXMg Ki88YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7IGlmIChkb192eGxhbl90Y3BfZ3JvKSB7PGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7aSA9IGdyb192eGxhbl90Y3A0X3RibF90aW1lb3V0X2ZsdXNoKCZhbXA7dnhsYW5fdGNw X3RibCw8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpICs9IGdyb192eGxhbl90Y3A0 X3RibF90aW1lb3V0X2ZsdXNoKCZhbXA7dnhsYW5fdGNwX3RibCw8YnI+DQombmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7IDAsIHBrdHMsIG5iX3BrdHMpOzxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfTxicj4NCjxicj4NCkBAIC0zMDQs MTMgKzM0NSwxMSBAQCBydGVfZ3JvX3JlYXNzZW1ibGVfYnVyc3Qoc3RydWN0IHJ0ZV9tYnVmICoq cGt0cyw8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBpICs9IGdyb191ZHA0X3RibF90 aW1lb3V0X2ZsdXNoKCZhbXA7dWRwX3RibCwgMCw8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZhbXA7cGt0c1tpXSwgbmJfcGt0cyAtIGkpOzxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfTxicj4NCi0mbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LyogQ29weSB1bnByb2Nl c3NlZCBwYWNrZXRzICovPGJyPg0KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAodW5wcm9jZXNzX251bSAmZ3Q7IDApIHs8YnI+DQotJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDttZW1jcHkoJmFtcDtwa3RzW2ldLCB1bnByb2Nlc3NfcGt0 cyw8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3NpemVvZihzdHJ1Y3QgcnRlX21idWYg KikgKjxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dW5wcm9jZXNzX251bSk7PGJyPg0K Kzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7aWYgKGRvX3RjcDZfZ3JvKSB7PGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 aSArPSBncm9fdGNwNl90YmxfdGltZW91dF9mbHVzaCgmYW1wO3RjcDZfdGJsLCAwLCA8YnI+DQor Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZhbXA7cGt0c1tpXSwgbmJfcGt0cyAtIGkpOzxicj4N CiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg fTxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7bmJfYWZ0ZXJfZ3JvID0gaSArIHVucHJvY2Vzc19udW07PGJyPg0KJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7IH08YnI+DQo8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg cmV0dXJuIG5iX2FmdGVyX2dybzs8YnI+DQpAQCAtMzIzLDEzICszNjIsMTMgQEAgcnRlX2dyb19y ZWFzc2VtYmxlKHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsPGJyPg0KJm5ic3A7ezxicj4NCiZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBzdHJ1Y3QgcnRlX21idWYgKnVucHJvY2Vzc19wa3RzW25i X3BrdHNdOzxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBzdHJ1Y3QgZ3JvX2N0eCAq Z3JvX2N0eCA9IGN0eDs8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dm9pZCAqdGNw X3RibCwgKnVkcF90YmwsICp2eGxhbl90Y3BfdGJsLCAqdnhsYW5fdWRwX3RibDs8YnI+DQorJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dm9pZCAqdGNwX3RibCwgKnVkcF90YmwsICp2eGxhbl90 Y3BfdGJsLCAqdnhsYW5fdWRwX3RibCwgKnRjcDZfdGJsOzxicj4NCiZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyB1aW50NjRfdCBjdXJyZW50X3RpbWU7PGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7IHVpbnQxNl90IGksIHVucHJvY2Vzc19udW0gPSAwOzxicj4NCi0mbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDt1aW50OF90IGRvX3RjcDRfZ3JvLCBkb192eGxhbl90Y3BfZ3JvLCBk b191ZHA0X2dybywgZG9fdnhsYW5fdWRwX2dybzs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7dWludDhfdCBkb190Y3A0X2dybywgZG9fdnhsYW5fdGNwX2dybywgZG9fdWRwNF9ncm8s IGRvX3Z4bGFuX3VkcF9ncm8sIGRvX3RjcDZfZ3JvOzxicj4NCjxicj4NCiZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyBpZiAodW5saWtlbHkoKGdyb19jdHgtJmd0O2dyb190eXBlcyAmYW1wOyAo UlRFX0dST19JUFY0X1ZYTEFOX1RDUF9JUFY0IHw8YnI+DQotJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO1JURV9HUk9fVENQX0lQVjQgfDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7UlRF X0dST19UQ1BfSVBWNCB8IFJURV9HUk9fVENQX0lQVjYgfCA8YnI+DQombmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7IFJURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNCB8PGJyPg0KJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyBSVEVfR1JPX1VEUF9JUFY0KSkgPT0gMCkpPGJyPg0KJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyByZXR1cm4gbmJfcGt0 czs8YnI+DQpAQCAtMzM4LDYgKzM3Nyw3IEBAIHJ0ZV9ncm9fcmVhc3NlbWJsZShzdHJ1Y3QgcnRl X21idWYgKipwa3RzLDxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB2eGxhbl90Y3Bf dGJsID0gZ3JvX2N0eC0mZ3Q7dGJsc1tSVEVfR1JPX0lQVjRfVlhMQU5fVENQX0lQVjRfSU5ERVhd Ozxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB1ZHBfdGJsID0gZ3JvX2N0eC0mZ3Q7 dGJsc1tSVEVfR1JPX1VEUF9JUFY0X0lOREVYXTs8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgdnhsYW5fdWRwX3RibCA9IGdyb19jdHgtJmd0O3RibHNbUlRFX0dST19JUFY0X1ZYTEFO X1VEUF9JUFY0X0lOREVYXTs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7dGNwNl90 YmwgPSBncm9fY3R4LSZndDt0YmxzW1JURV9HUk9fVENQX0lQVjZfSU5ERVhdOzxicj4NCjxicj4N CiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBkb190Y3A0X2dybyA9IChncm9fY3R4LSZndDtn cm9fdHlwZXMgJmFtcDsgUlRFX0dST19UQ1BfSVBWNCkgPT08YnI+DQombmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IFJURV9HUk9fVENQX0lQVjQ7 PGJyPg0KQEAgLTM0Nyw2ICszODcsNyBAQCBydGVfZ3JvX3JlYXNzZW1ibGUoc3RydWN0IHJ0ZV9t YnVmICoqcGt0cyw8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7IFJURV9HUk9fVURQX0lQVjQ7PGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7IGRvX3Z4bGFuX3VkcF9ncm8gPSAoZ3JvX2N0eC0mZ3Q7Z3JvX3R5cGVzICZhbXA7 IFJURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNCkgPT08YnI+DQombmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IFJURV9HUk9fSVBWNF9WWExBTl9V RFBfSVBWNDs8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ZG9fdGNwNl9ncm8gPSAo Z3JvX2N0eC0mZ3Q7Z3JvX3R5cGVzICZhbXA7IFJURV9HUk9fVENQX0lQVjYpID09IFJURV9HUk9f VENQX0lQVjY7PGJyPg0KPGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGN1cnJlbnRf dGltZSA9IHJ0ZV9yZHRzYygpOzxicj4NCjxicj4NCkBAIC0zNzEsNyArNDEyLDEzIEBAIHJ0ZV9n cm9fcmVhc3NlbWJsZShzdHJ1Y3QgcnRlX21idWYgKipwa3RzLDxicj4NCiZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7IGlmIChncm9fdWRwNF9yZWFzc2VtYmxlKHBrdHNbaV0sIHVkcF90YmwsPGJy Pg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Y3VycmVudF90aW1lKSAmbHQ7IDApPGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHVucHJvY2Vzc19wa3RzW3VucHJvY2Vzc19udW0rK10g PSBwa3RzW2ldOzxicj4NCi0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7fSBlbHNlPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9IGVsc2UgaWYgKElTX0lQVjZfVENQX1BLVChwa3Rz W2ldLSZndDtwYWNrZXRfdHlwZSkgJmFtcDsmYW1wOyA8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ZG9fdGNwNl9ncm8pIHs8YnI+DQor Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoZ3JvX3RjcDZfcmVhc3NlbWJsZShwa3RzW2ld LCB0Y3A2X3RibCwgPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7Y3VycmVudF90aW1lKSAmbHQ7IDApPGJyPg0KKyZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3VucHJvY2Vzc19wa3RzW3Vu cHJvY2Vzc19udW0rK10gPSBwa3RzW2ldOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fTxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ZWxzZTxicj4NCiZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7IHVucHJvY2Vzc19wa3RzW3VucHJvY2Vzc19udW0rK10gPSBwa3RzW2ld Ozxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB9PGJyPg0KJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7IGlmICh1bnByb2Nlc3NfbnVtICZndDsgMCkgezxicj4NCkBAIC00MjYsNiAr NDczLDE1IEBAIHJ0ZV9ncm9fdGltZW91dF9mbHVzaCh2b2lkICpjdHgsPGJyPg0KJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGdyb19jdHgtJmd0 O3RibHNbUlRFX0dST19VRFBfSVBWNF9JTkRFWF0sPGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGZsdXNoX3RpbWVzdGFtcCw8YnI+DQom bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJmFt cDtvdXRbbnVtXSwgbGVmdF9uYl9vdXQpOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7bGVmdF9uYl9vdXQgPSBtYXhfbmJfb3V0IC0g bnVtOzxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9PGJyPg0KKzxicj4NCismbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoKGdyb190eXBlcyAmYW1wOyBSVEVfR1JPX1RDUF9J UFY2KSAmYW1wOyZhbXA7IGxlZnRfbmJfb3V0ICZndDsgMCkgezxicj4NCismbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7bnVtICs9IGdyb190Y3A2 X3RibF90aW1lb3V0X2ZsdXNoKDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtncm9fY3R4LSZndDt0YmxzW1JURV9HUk9fVENQX0lQVjZf SU5ERVhdLDxicj4NCismbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDtmbHVzaF90aW1lc3RhbXAsPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZhbXA7b3V0W251bV0sIGxlZnRfbmJfb3V0 KTs8YnI+DQorPGJyPg0KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IH08YnI+DQo8YnI+DQom bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgcmV0dXJuIG51bTs8YnI+DQpkaWZmIC0tZ2l0IGEv bGliL2dyby9ydGVfZ3JvLmggYi9saWIvZ3JvL3J0ZV9ncm8uaDxicj4NCmluZGV4IDlmOWVkNDkz NWEuLmFjNWE0NjRjZjEgMTAwNjQ0PGJyPg0KLS0tIGEvbGliL2dyby9ydGVfZ3JvLmg8YnI+DQor KysgYi9saWIvZ3JvL3J0ZV9ncm8uaDxicj4NCkBAIC0zNyw2ICszNyw5IEBAIGV4dGVybiAmcXVv dDtDJnF1b3Q7IHs8YnI+DQombmJzcDsvKiombHQ7IFVEUC9JUHY0IEdSTyBmbGFnICovPGJyPg0K Jm5ic3A7I2RlZmluZSBSVEVfR1JPX0lQVjRfVlhMQU5fVURQX0lQVjRfSU5ERVggMzxicj4NCiZu YnNwOyNkZWZpbmUgUlRFX0dST19JUFY0X1ZYTEFOX1VEUF9JUFY0ICgxVUxMICZsdDsmbHQ7IFJU RV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNF9JTkRFWCk8YnI+DQorPGJyPg0KKyNkZWZpbmUgUlRF X0dST19UQ1BfSVBWNl9JTkRFWCA0PGJyPg0KKyNkZWZpbmUgUlRFX0dST19UQ1BfSVBWNiAoMVVM TCAmbHQ7Jmx0OyBSVEVfR1JPX1RDUF9JUFY2X0lOREVYKTxicj4NCiZuYnNwOy8qKiZsdDsgVnhM QU4gVURQL0lQdjQgR1JPIGZsYWcuICovPGJyPg0KPGJyPg0KJm5ic3A7LyoqPGJyPg0KLS0gPGJy Pg0KMi4yNS4xPG86cD48L286cD48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8L2Rpdj4NCjwvZGl2Pg0K PC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPg0K --_000_CY5PR11MB6487A92817740F09E573BC5892939CY5PR11MB6487namp_--