Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp392047pxf; Wed, 31 Mar 2021 06:10:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwicxLY172Qzv3v/z5vn8vF88TO1IZTbwr4g+GDkYlVGm0ledldeEbE2BxuprQHwmCPHI2U X-Received: by 2002:aa7:df84:: with SMTP id b4mr3619683edy.240.1617196226532; Wed, 31 Mar 2021 06:10:26 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1617196226; cv=pass; d=google.com; s=arc-20160816; b=avUyky1vn2UnoJFH7E9DRc0qh6v3VNJ1vkBE/gjlvpz54NFrPNYEAC8yTlUXQL/opx MbzdZItzCDphBypnNMgrQMytkmry82ioHefUGmYMWTn5qLzxTAozZZk7s8EM2rH8r1Qh zGm+bST43FtOXN6vBPbLLyREs0PhXcp0Y1LNeWrMGc+JZVK1uesS+vcjt/gICOM17RKO hltw74tcA2m5/YKejkc6BudqPc2GjAq/r8a72jmmfvUNdZM0bQZQmYgAnrOFE/rTBcql U+h4azpeLC4DaRn8pROn4jBP6nbCMIkcvdrCbGrJrFzrFHL9mJfgRC3f64D8S6JbarXY J/pQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:to:from :dkim-signature; bh=9PoKxI2QQdZ7B/WLPXs259CH8nboaMjrmauo7gBVrxQ=; b=YMI3cVf0EkHaPLb0JQAnfnUEzL+WjzXxR5hnKzPAhwYjSifUWKVzcTmcpL7j9huRui nSw1zWtsaU1LnNg+YdRp9dnIAigFqz71F6PuV39EmWECoPuB8YYBr5WzXP1VFkjmvkDq C2uttveq2L7j6dsRvQ2oTMMObwd1I1Yx5quf/w6VoDBGL0Me7/GbTh4acqFAfoMP3VhG lVzmdImsrFEaktxZVT1wCLHngrR4YpO2cuZopdQHgOfAFPbzt/6HIrygz04COD8Y3XtY XG1B1IbJvaBEd+D8I1fmRYHiy3NWhro+8zSLOo8UD1QJqC2Gi+H+pXgcdqHt36KnTiLH 9x1w== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@hammerspace.com header.s=selector2 header.b=aeN3+1UK; arc=pass (i=1 spf=pass spfdomain=hammerspace.com dkim=pass dkdomain=hammerspace.com dmarc=pass fromdomain=hammerspace.com); spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hammerspace.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c18si1735248ede.125.2021.03.31.06.09.55; Wed, 31 Mar 2021 06:10:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@hammerspace.com header.s=selector2 header.b=aeN3+1UK; arc=pass (i=1 spf=pass spfdomain=hammerspace.com dkim=pass dkdomain=hammerspace.com dmarc=pass fromdomain=hammerspace.com); spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hammerspace.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235165AbhCaNJW (ORCPT + 99 others); Wed, 31 Mar 2021 09:09:22 -0400 Received: from mail-bn8nam11on2117.outbound.protection.outlook.com ([40.107.236.117]:43859 "EHLO NAM11-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S235748AbhCaNJM (ORCPT ); Wed, 31 Mar 2021 09:09:12 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e3rFx6GXKGpaG/gbD0WhQH4O9LJ34TJChHDhMONmo0NtJCC4fL++WcAB8boK83moHhfNe1NzTaHRAlaHu9lYipR5aOWpykLUHRu1rOJpAmJ5a88YKlv+NsXQsS7F7uVfNq/bSt9AAAgV8xwiX9aHYxY7SeIjPBYeQOkZZhSYJX26TBdH25aq4uP3HGy7O3PgnFHXKc5jsFl3/Pjfmhmwjx5FDRPOgkrN+tWuC85HPEbaTnZV3dWAhLtbMP7IGiZf0dYq68f5ys0enUC9WXE6CRHAfyUAnqGpm+lbOkTeTKpHQpvd6OvXPmlJe+dtLCvPp5i5mZ/td0ndunN6h4dDcA== 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-SenderADCheck; bh=9PoKxI2QQdZ7B/WLPXs259CH8nboaMjrmauo7gBVrxQ=; b=ly//SfZpd3zZCDgxy49sxJY8HZMgQOyG3nWJLpFNF/9iJCTEq2R5aO1XX3FoEHDuxWGTvxoc9Y5GuCPlK5Xcy8zw/aT4Q/ipfHJaOxUjC3I0KDLtiZf6MCZznrSyXvsUB4YWarqKg3quzaj9u04yxvu+Encks7xPE9iFeTLh6WHAZSU8BG2fHAMV9wy/2Aged4nDVUEsrKuWAiUxh7k06n/AIlzhW9gsp20CuX4sfK5qaeNvmW/KBJEY9bh9sYO0428x8ay6i8DRB3eeCWlf0zZuvoMN8EE0iMg3yZeIjS7Qa/XRsNvPtbubmBNkiP5x1w21qh8nAoEwisw+wTBniw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hammerspace.com; dmarc=pass action=none header.from=hammerspace.com; dkim=pass header.d=hammerspace.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hammerspace.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9PoKxI2QQdZ7B/WLPXs259CH8nboaMjrmauo7gBVrxQ=; b=aeN3+1UKbU/WpBhxVkZm+mKCBkJxUex47G2kuY92x+2nj85DMsoqNCG+Gnio+7vO8+HWWNnPzMf1Qq3N8v3AMjXBX07NMpKMoP+OKBZkZn310ilkMaAIZqgoU4VHJ9OPflzMbH9QVybz2tpJaYUw9BS815lC7xkmfNr8T55TOAw= Received: from CH2PR13MB3525.namprd13.prod.outlook.com (2603:10b6:610:21::29) by CH2PR13MB3430.namprd13.prod.outlook.com (2603:10b6:610:23::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.15; Wed, 31 Mar 2021 13:09:07 +0000 Received: from CH2PR13MB3525.namprd13.prod.outlook.com ([fe80::69bf:b8e4:7fa0:ae74]) by CH2PR13MB3525.namprd13.prod.outlook.com ([fe80::69bf:b8e4:7fa0:ae74%7]) with mapi id 15.20.3999.027; Wed, 31 Mar 2021 13:09:07 +0000 From: Trond Myklebust To: "linux-nfs@vger.kernel.org" , "abuehaze@amazon.com" Subject: Re: NFS read performance degradation after upgrading to kernel 5.4.* Thread-Topic: NFS read performance degradation after upgrading to kernel 5.4.* Thread-Index: AQHXJKmxdeeWg+Zy5UOb4+776OBXz6qbMo4AgAL/doD//+K3AA== Date: Wed, 31 Mar 2021 13:09:07 +0000 Message-ID: <9f3477020dd5d6f120ddc2cc80ada38e1cf258af.camel@hammerspace.com> References: <0D482540-0455-4AA7-B534-FCE24793ECB0@amazon.com> In-Reply-To: <0D482540-0455-4AA7-B534-FCE24793ECB0@amazon.com> Accept-Language: en-US, en-GB Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=hammerspace.com; x-originating-ip: [68.36.133.222] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 898affe6-3efa-4113-1bdb-08d8f4462ab5 x-ms-traffictypediagnostic: CH2PR13MB3430: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5516; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: yXNEuVOyl7C1/vH+62UQQmqiD93/kh6BklKqYgoFk8IS8Kj113wCu8yvGDyHq3vANRKqpooUX1f17jBG42U5bu8MtJNclmKGyI/feQ0bw08nu8UFxItFB9Yboc1Cxclq/GCTkV0/8TMCqT9ckPwYmObTsHvmw/lG6ytzSX7kY8C9460+25+18Y57nVsgjoq2DthrKrejVn43KdJRuAiX5KTBSBxvFU97rRGYoSRHvhKa4aCX8Sm+vN7FJEOCH6FZoy/ZKpMiE6tksUKjfJttHx2vcFPtLOlR46ZzZksjRpVmniZTQ8d/NIX9ywXnGiP7MXcL35yKjBx9ycKcci3W8wsTpWhEDdCLFdh3a8Id6No7JTtgKm5CkobNSvD0AMe1yH+1QHXpJjZfaGrH5yDTVBLu1O46yxRqDw2rnOZmUB+NS+TpLJyF4CZ7riVMnYSokmFJuv5qHhGH47o7s0EHkcYbthJQpRfL4IQGbXxKwiI5Su5OBaM05Ex4wmdk+64He+qcwzIW0QM5hhzgUHlkaPiRHyZO28PI/9dHazGKEkRGmEvrRSZEtxlbnHIyoAUV8invdgOq4HA1JJc7y9R/0YqpjG2AfawxMLYKxvaToc/AB5bCLvJjGHn14XOZvA5WajM9tW+1GPs+PLii4MdD7PeFzdNHTpPlLad2A/GydXdV5R7tQ6FKda5WuL8JtajhjJGzQpIl9Wo7rq9wcBa7DQsJy4G4zhNAVzhVA9CbhyFitUkRiunYOidyvJ5YKnmc x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR13MB3525.namprd13.prod.outlook.com;PTR:;CAT:NONE;SFS:(136003)(376002)(346002)(366004)(66446008)(15974865002)(6512007)(2616005)(5660300002)(66946007)(8676002)(64756008)(2906002)(6506007)(83380400001)(186003)(76116006)(66556008)(36756003)(110136005)(26005)(6486002)(508600001)(86362001)(966005)(71200400001)(8936002)(66476007)(30864003)(38100700001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?Y0NMdGZvdlh6TkY2d2NCM1dhWDRGdUxrZ2wyMEo4YXRiY200RTBKdldnTXpr?= =?utf-8?B?TnVxY3V0MUJlcVZtUFREOUFUN0ZPbFV6RTNKLzk2cWdCSUxEQ2FBdWdja1J2?= =?utf-8?B?MjhzY3poUmFhZjdOZkZHcGJhMWZNSUNKYkZ6bEM4Z1VONE5DMEY5bE8wc1hW?= =?utf-8?B?MlIveEQxTmpoVVE0L3YrcjdEeHVKR3VIWW02eWtRZHg2NGdQNzdsMm5IRHhm?= =?utf-8?B?MDlqQUV6R1g4ODluQWYrbWp0djdwL2R4cVN6bjZ4VmNsaXQxQXo1M0lvRUpS?= =?utf-8?B?dnNVam1aemJVem5hRVhQbjZBVjFsZGwwa0UvU1lpcGdjbmFEdlB4c0g1Znhm?= =?utf-8?B?TlRxYnhkQ3loaVdYNWxwRmZySWpPUFhSN2xTQVUxYWo5SlovaDNxZVNrK0pu?= =?utf-8?B?dG9HOXZvUVhJTnE3NXVJMEJ0ZkNaZVBjQUhMV2FaNitXSWh6QmRpSms0bDdQ?= =?utf-8?B?Rk9iUG1vc1JCdXpSbzNmSTIzeUlkMENjeVRST2FxK1EzRENrVS8ycXlpYUlw?= =?utf-8?B?MVNRLzljblROWUhmYlUvaStvUGdGMDZVQURncUlySStIMmRMQXV5Umh0UmJp?= =?utf-8?B?ajlLaFNQWmw0cVE0d0h6T0hGaUkxRmFMcndVL2ZHS1paMFF6ZkZ4cU1oak4z?= =?utf-8?B?em5oUGxwSlhvZkU2MW02RUFSczQrSmc0cU9YWXdBM0FKWitQTCtheHQ5MkNn?= =?utf-8?B?N1RsUFk5UVpsYmUrVzlXdXdxblBjSDlZMHE1cjlhMFFhYXFLdEdMN0Y1WVh2?= =?utf-8?B?SmIxSHJBVE50U2FnMzhaZUNydlAvOG92NmUvK0loR1ZDRHU2Z3ZSK2hodWla?= =?utf-8?B?MHU0ME4xL25lb2JyODNORXlNMkxSRFRxeGtTWERFQU5VeVUzVDhaOUxJbU1y?= =?utf-8?B?d255Vm9lMzlndUdmOWJKbWRjWlRINE02aVhVMHZFTFpraEFQUktldklKT1cw?= =?utf-8?B?QVlndldscForeGZneVhTa2VwUC9JZkZPQzN0VHVxYkN0RW9oelZZeDZLYVlu?= =?utf-8?B?ZUhxVmFlM1BDbzl1ZXVacU9tdGY2aFNHS0NIeWFmSVBrQjBTNElHU0RLcm12?= =?utf-8?B?YjNWVm9aZ3JXVWhoS3loam1Id0kzZ3VNT2Y4MG0rUGNQaWJpZFNkcHlWcURP?= =?utf-8?B?TDRFWEtyN1EvK2ZTc1NEYXU3VTBZV2c4bWk3OXFwYkVLUjVrWEFvcDgvS0xz?= =?utf-8?B?WEdzaTlyaitLQjBwTHJyM2ZpSUo5NHF4dVBVa013YUdkNTZudktBc1VFdW5V?= =?utf-8?B?UGRvejhHSWZKeTd4Yjl3QVBqWnFmQ2c5cHZtSHRsUUhqR0ZCamZBeXZHampX?= =?utf-8?B?dFR6ZEd5V3NCajkrV09jK2pGek83K3dXcDRwbnI2bW5iVVBpbXh2dGN6ck9R?= =?utf-8?B?ejBiOW1qL292dklJbTNaRCtMK0kxSTJxQTU0WnBYdDhXSXlDN1pneDZKUUw0?= =?utf-8?B?cVFUS05mcytrNW1uTnZWM0RNVGRPN3BNU2NIclRqbDJDZ1o5NUovaU9RWkNr?= =?utf-8?B?Q2FSRkRKN2lBbi9zdXlQd3JHa2g0TnVDdG9jY3IybHpGdEdpeFlwMysrMnVH?= =?utf-8?B?bkVqcTZySjMrZVJZVmUwcmtlU0tCaG0waGxwZU85dEMwOWhKaXZXL0wvT0Q2?= =?utf-8?B?WnJVUnJCbDYyTTRRTG9rRjhKRzhKSzZnNTJqNlB6ZHRSc3dlN21QWVVGSUho?= =?utf-8?B?UE05SVRaVHdBREtWSkhLRU5oT1BEc20wenNmMWJpUDlHZGtMTGhTUmtieFBt?= =?utf-8?Q?br91iX9UKryQYAsT1NSNOzM99NXpZbJVRzg80LQ?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <228A493437BB96408BE20FDB31F673B3@namprd13.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: hammerspace.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR13MB3525.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 898affe6-3efa-4113-1bdb-08d8f4462ab5 X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Mar 2021 13:09:07.2756 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0d4fed5c-3a70-46fe-9430-ece41741f59e X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 0JOjZBgVZdTHbuYTEfPkwAQarogyXsGVmoqIpz2qTSc17fQHCyuLr/Dld0IAnZMiRMxEJQlAieWWRq/EEntiYw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR13MB3430 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org T24gV2VkLCAyMDIxLTAzLTMxIGF0IDEyOjUzICswMDAwLCBNb2hhbWVkIEFidWVsZm90b2gsIEhh emVtIHdyb3RlOg0KPiBIaSBUcm9uZCwNCj4gDQo+IEkgYW0gd29uZGVyaW5nIGlmIHdlIHNob3Vs ZCBjb25zaWRlciByYWlzaW5nIHRoZSBkZWZhdWx0IG1heGltdW0gTkZTDQo+IHJlYWQgYWhlYWQg c2l6ZSBnaXZlbiB0aGUgZmFjdHMgSSBtZW50aW9uZWQgaW4gbXkgcHJldmlvdXMgZS1tYWlsLg0K PiANCg0KV2UgY2FuJ3Qga2VlcCBjaGFuZ2luZyB0aGUgZGVmYXVsdCBldmVyeSB0aW1lIHNvbWVv bmUgdHJpZXMgdG8gbWVhc3VyZQ0KYSBuZXcgd29ya2xvYWQuDQoNClRoZSBjaGFuZ2UgaW4gNS40 IHdhcyBhbHNvIG1lYXN1cmVtZW50IGJhc2VkLCBhbmQgd2FzIGR1ZSB0byBwb29yDQpwZXJmb3Jt YW5jZSBpbiBjYXNlcyB3aGVyZSByc2l6ZS93c2l6ZSBpcyBzbWFsbGVyIGFuZCByZWFkYWhlYWQg d2FzDQpvdmVyc2hvb3RpbmcuDQoNCg0KDQo+IFRoYW5rIHlvdS4NCj4gDQo+IEhhemVtDQo+IA0K PiDvu79PbiAyOS8wMy8yMDIxLCAxNzowNywgIk1vaGFtZWQgQWJ1ZWxmb3RvaCwgSGF6ZW0iIDwN Cj4gYWJ1ZWhhemVAYW1hem9uLmNvbT4gd3JvdGU6DQo+IA0KPiANCj4gwqDCoMKgIEhlbGxvIFRl YW0sDQo+IA0KPiDCoMKgwqAgLVdlIGhhdmUgZ290IG11bHRpcGxlIGN1c3RvbWVycyBjb21wbGFp bmluZyBhYm91dCBORlMgcmVhZA0KPiBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBhZnRlciB0aGV5 IHVwZ3JhZGVkIHRvIGtlcm5lbCA1LjQuKg0KPiANCj4gwqDCoMKgIC1BZnRlciBkb2luZyBzb21l IGRlZXAgZGl2ZSBhbmQgdGVzdGluZyB3ZSBmaWd1cmVkIG91dCB0aGF0IHRoZQ0KPiByZWFzb24g YmVoaW5kIHRoZSByZWdyZXNzaW9uIHdhcyBwYXRjaMKgIE5GUzogT3B0aW1pc2UgdGhlIGRlZmF1 bHQNCj4gcmVhZGFoZWFkIHNpemVbMV0gV2hpY2ggaGFzIGJlZW4gbWVyZ2VkIHRvIExpbnV4IGtl cm5lbHMgNS40LiogYW5kDQo+IGFib3ZlLg0KPiDCoMKgwqAgLU91ciBjdXN0b21lcnMgYXJlIHVz aW5nIEFXUyBFQzIgaW5zdGFuY2VzIGFzIGNsaWVudCBtb3VudGluZyBFRlMNCj4gZXhwb3J0ICh3 aGljaCBpcyBBV1MgbWFuYWdlZCBORlNWNCBzZXJ2aWNlKSwgSSBhbSBzaGFyaW5nIHRoZSByZXN1 bHRzDQo+IHRoYXQgd2UgZ290IGJlZm9yZSAmIGFmdGVyIHRoZSB1cGdyYWRlIGdpdmVuIHRoYXQg dGhlIE5GUyBzZXJ2ZXIoRUZTKQ0KPiBzaG91bGQgYmUgYWJsZSB0byBhY2hpZXZlIGJldHdlZW4g MjUwLTMwME1CL3NlYyB3aGljaCB0aGUgY2xpZW50cyBjYW4NCj4gYWNoaWV2ZSB3aXRob3V0IHBh dGNoWzFdIHdoaWxlIGdldHRpbmcgcXVhcnRlciBvZiB0aGlzIHNwZWVkIGFyb3VuZA0KPiA3ME1C L3NlYyB3aXRoIHRoZSBtZW50aW9uZWQgcGF0Y2ggbWVyZ2VkIGFzIHNlZW4gYmVsb3cuDQo+IA0K PiDCoMKgwqDCoA0KPiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+IA0K PiANCj4gwqDCoMKgIEJlZm9yZSB0aGUgdXBncmFkZToNCj4gwqDCoMKgICMgdW5hbWUgLXINCj4g wqDCoMKgIDQuMTQuMjI1LTE2OC4zNTcuYW16bjIueDg2XzY0DQo+IMKgwqDCoCBbcm9vdEBpcC0x NzItMzEtMjgtMTM1IGVjMi11c2VyXSMgc3luYzsgZWNobyAzID4NCj4gL3Byb2Mvc3lzL3ZtL2Ry b3BfY2FjaGVzDQo+IMKgwqDCoCBbcm9vdEBpcC0xNzItMzEtMjgtMTM1IGVjMi11c2VyXSMgbW91 bnQgLXQgbmZzNCAtbw0KPiBuZnN2ZXJzPTQuMSxyc2l6ZT0xMDQ4NTc2LHdzaXplPTEwNDg1NzYs aGFyZCx0aW1lbz02MDAscmV0cmFucz0yLG5vcmUNCj4gc3Zwb3J0IGZzLTY3MDBmNTUzLmVmcy5l dS13ZXN0LTEuYW1hem9uYXdzLmNvbTovIGVmcw0KPiDCoMKgwqAgW3Jvb3RAaXAtMTcyLTMxLTI4 LTEzNSBlYzItdXNlcl0jIHJzeW5jIC0tcHJvZ3Jlc3MgZWZzL3Rlc3QgLg0KPiDCoMKgwqAgdGVz dA0KPiDCoMKgwqDCoMKgIDgsNTg5LDkzNCw1OTIgMTAwJcKgIDMxMy4yME1CL3PCoMKgwqAgMDow MDoyNiAoeGZyIzEsIHRvLWNoaz0wLzEpDQo+IA0KPiDCoMKgwqANCj4gIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+ ICMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KPiANCj4gwqDCoMKgIEFmdGVyIHRoZSB1cGdyYWRlIHVz aW5nIHRoZSBzYW1lIGNsaWVudCAmIHNlcnZlcjoNCj4gwqDCoMKgICN1bmFtZSAtcjsgc3luYzsg ZWNobyAzID4gL3Byb2Mvc3lzL3ZtL2Ryb3BfY2FjaGVzOyAuL25mcy0NCj4gcmVhZGFoZWFkIHNo b3cgL2hvbWUvZWMyLXVzZXIvZWZzLztyc3luYyAtLXByb2dyZXNzIGVmcy90ZXN0IC4NCj4gwqDC oMKgIDUuNC4wLTEuMTMyLjY0LmFtem4yLng4Nl82NA0KPiDCoMKgwqAgL2hvbWUvZWMyLXVzZXIv ZWZzIDA6NDAgL3N5cy9jbGFzcy9iZGkvMDo0MC9yZWFkX2FoZWFkX2tiID0gMTI4DQo+IMKgwqDC oCB0ZXN0DQo+IMKgwqDCoMKgwqAgMSwwNzMsNzQxLDgyNCAxMDAlwqDCoCA2OC42MU1CL3PCoMKg wqAgMDowMDoxNCAoeGZyIzEsIHRvLWNoaz0wLzEpDQo+IA0KPiANCj4gwqDCoMKgIC1XZSBhcmXC oCByZWNvbW1lbmRpbmdbMl0gRUZTIHVzZXJzIHRvIHVzZSByc2l6ZT0xMDQ4NTc2IGFzIG1vdW50 DQo+IG9wdGlvbiBmb3IgZ2V0dGluZyB0aGUgYmVzdCByZWFkIHBlcmZvcm1hbmNlIGZyb20gdGhl aXIgRUZTIGV4cG9ydHMNCj4gZ2l2ZW4gdGhhdCBFQzIgdG8gRUZTIHRyYWZmaWMgaXMgcmVzaWRp bmcgaW4gdGhlIHNhbWUgQVdTDQo+IGF2YWlsYWJpbGl0eSB6b25lIGhlbmNlIGl0IGhhcyBsb3cg bGF0ZW5jeSBhbmQgdXAgdG8gMjUwLTMwME1CL3NlYw0KPiB0aHJvdWdocHV0IGhvd2V2ZXIgd2l0 aCB0aGUgbWVudGlvbmVkIHBhdGNoIG1lcmdlZCB0aGUgY3VzdG9tZXIgY2Fu4oCZdA0KPiBhY2hp ZXZlIHRoaXMgdGhyb3VnaHB1dCBhZnRlciB0aGUga2VybmVsIHVwZ3JhZGUgYmVjYXVzZSB0aGUg ZGVmYXVsdA0KPiBORlMgcmVhZCBhaGVhZCBoYXMgYmVlbiBkZWNyZWFzZWQgZnJvbSAoMTUqcnNp emUpPTE1IE1CIHRvIDEyOEtCIHNvDQo+IHRoZSBjbGllbnRzIGhhdmUgdG8gbWFudWFsbHkgcmFp c2UgdGhlIG1hbnVhbGx5IHJhaXNlIHRoZQ0KPiByZWFkX2FoZWFkX2tiIHBhcmFtZXRlciBmcm9t IDEyOCB0byAxNTM2MCB0byBnZXQgdGhlIHNhbWUgZXhwZXJpZW5jZQ0KPiB0aGV5IHdlcmUgZ2V0 dGluZyBiZWZvcmUgdGhlIHVwZ3JhZGUuDQo+IMKgwqDCoCAtV2Uga25vdyB0aGF0IHRoZSBwdXJw b3NlIG9mIHRoZSBtZW50aW9uZWQgcGF0Y2ggd2FzIHRvIGRlY3JlYXNlDQo+IE9TIGJvb3QgdGlt ZSAoZm9yIG5ldGJvb3QgdXNlcnMpIGFsc28gZGVjcmVhc2luZyBBcHBsaWNhdGlvbiBzdGFydCB1 cA0KPiB0aW1lcyBpbiBjb25nZXN0ZWQgJiBMb3cgdGhyb3VnaHB1dCBuZXR3b3JrcyBhcyBtZW50 aW9uZWQgaW4gWzNdLA0KPiBob3dldmVyIHRoaXMgd291bGQgYWxzbyBjYXVzZSByZWdyZXNzaW9u IGZvciBoaWdoIHRocm91Z2hwdXQgJiBsb3cNCj4gbGF0ZW5jeSB3b3JrbG9hZCBlc3BlY2lhbGx5 IHNlcXVlbnRpYWwgcmVhZCB3b3JrZmxvd3MuDQo+IMKgwqDCoCAtQWZ0ZXIgZG9pbmcgZnVydGhl ciBkZWJ1Z2dpbmcgd2UgYWxzbyBmb3VuZCB0aGF0IHRoZSBtYXhpbXVtDQo+IHJlYWQgYWhlYWQg c2l6ZSBpcyBjb25zdGFudCBzbyB0aGVyZSBpcyBubyBBdXRvdHVuaW5nIGZvciB0aGlzDQo+IGNv bmZpZ3VyYXRpb24gZXZlbiBpZiB0aGUgY2xpZW50IGlzIGZpbGxpbmcgdGhlIHJlYWQgYWhlYWQg d2luZG93DQo+IHdoaWNoIG1lYW5zIGFueSBORlMgY2xpZW50IHNwZWNpYWxseSBvbmVzIHVzaW5n IG1heGltdW0gcnNpemUgbW91bnQNCj4gb3B0aW9uIHdpbGwgaGF2ZSB0byBtYW51YWxseSB0dW5l IHRoZWlyIG1heGltdW0gTkZTIHJlYWQgYWhlYWQgc2l6ZQ0KPiBhZnRlciB0aGUgdXBncmFkZSB3 aGljaCBpbiBteSBvcGluaW9uIGlzIHNvbWUgc29ydCBvZiByZWdyZXNzaW9uIGZyb20NCj4gb2xk ZXIga2VybmVscyBiZWhhdmlvdXIuDQo+IA0KPiDCoMKgwqDCoA0KPiAjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4g IyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gDQo+IMKgwqDCoCBBZnRlciBpbmNyZWFzaW5nIHRoZSBt YXhpbXVtIE5GUyByZWFkIGFoZWFkIHNpemUgdG8gMTVNQiBpdOKAmXMNCj4gY2xlYXIgdGhhdCBy ZWFkIGFoZWFkIHdpbmRvdyBpcyBleHBhbmRlZCBhcyBleHBlY3RlZCBhbmQgaXQgd2lsbCBiZQ0K PiBkb3VibGVkIHVudGlsIGl0IHJlYWNoIDE1TUIuDQo+IA0KPiDCoMKgwqAgTWFyIDI5IDExOjI1 OjE4IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBpbml0X3JhX3NpemUgMjU2DQo+IMKgwqDCoCBN YXIgMjkgMTE6MjU6MTggaXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IGN1cnJlbnQgcmEgMjU2DQo+ IMKgwqDCoCBNYXIgMjkgMTE6MjU6MTggaXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IG1heCByYSAz ODQwDQo+IMKgwqDCoCBNYXIgMjkgMTE6MjU6MTggaXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IGN1 cnJlbnQgcmEgNTkNCj4gwqDCoMKgIE1hciAyOSAxMToyNToxOCBpcC0xNzItMzEtMTctMTkxIGtl cm5lbDogbWF4IHJhIDMyDQo+IMKgwqDCoCBNYXIgMjkgMTE6MjU6MTggaXAtMTcyLTMxLTE3LTE5 MSBrZXJuZWw6IGN1cnJlbnQgcmEgNTEyDQo+IMKgwqDCoCBNYXIgMjkgMTE6MjU6MTggaXAtMTcy LTMxLTE3LTE5MSBrZXJuZWw6IG1heCByYSAzODQwDQo+IMKgwqDCoCBNYXIgMjkgMTE6MjU6MTgg aXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IGN1cnJlbnQgcmEgMTAyNA0KPiDCoMKgwqAgTWFyIDI5 IDExOjI1OjE4IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBtYXggcmEgMzg0MA0KPiDCoMKgwqAg TWFyIDI5IDExOjI1OjE4IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBjdXJyZW50IHJhIDIwNDgN Cj4gwqDCoMKgIE1hciAyOSAxMToyNToxOCBpcC0xNzItMzEtMTctMTkxIGtlcm5lbDogbWF4IHJh IDM4NDANCj4gDQo+IMKgwqDCoA0KPiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gIyMjIyMjIyMjIyMjIyMjIyMj IyMNCj4gDQo+IMKgwqDCoCBXaXRoIDEyOEtCIGFzIG1heGltdW0gTkZTIHJlYWQgYWhlYWQgc2l6 ZSzCoCB0aGUgcmVhZCBhaGVhZCB3aW5kb3cNCj4gc2l6ZSBpcyBpbmNyZWFzaW5nIHVudGlsIGl0 IHJlYWNoIHRoZSBjb25maWd1cmVkIG1heGltdW0gUmVhZCBhaGVhZA0KPiAoMTI4S0IpLg0KPiAN Cj4gwqDCoMKgIE1hciAyOSAxMTozNTozNyBpcC0xNzItMzEtMTctMTkxIGtlcm5lbDogbWF4IHJh IDMyDQo+IMKgwqDCoCBNYXIgMjkgMTE6MzU6MzcgaXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IG1h eCByYSAzMg0KPiDCoMKgwqAgTWFyIDI5IDExOjM1OjM3IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVs OiBpbml0X3JhX3NpemUgMzINCj4gwqDCoMKgIE1hciAyOSAxMTozNTozNyBpcC0xNzItMzEtMTct MTkxIGtlcm5lbDogY3VycmVudCByYSA0MA0KPiDCoMKgwqAgTWFyIDI5IDExOjM1OjM3IGlwLTE3 Mi0zMS0xNy0xOTEga2VybmVsOiBjdXJyZW50IHJhIDMyDQo+IMKgwqDCoCBNYXIgMjkgMTE6MzU6 MzcgaXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IG1heCByYSAzMg0KPiDCoMKgwqAgTWFyIDI5IDEx OjM1OjM3IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBjdXJyZW50IHJhIDQwDQo+IMKgwqDCoCBN YXIgMjkgMTE6MzU6MzcgaXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IG1heCByYSAzMg0KPiDCoMKg wqAgTWFyIDI5IDExOjM1OjM3IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBjdXJyZW50IHJhIDY0 DQo+IMKgwqDCoCBNYXIgMjkgMTE6MzU6MzcgaXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IG1heCBy YSAzMg0KPiDCoMKgwqAgTWFyIDI5IDExOjM1OjM3IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBt YXggcmEgMzINCj4gwqDCoMKgIE1hciAyOSAxMTozNTozNyBpcC0xNzItMzEtMTctMTkxIGtlcm5l bDogaW5pdF9yYV9zaXplIDQNCj4gwqDCoMKgIE1hciAyOSAxMTozNTozNyBpcC0xNzItMzEtMTct MTkxIGtlcm5lbDogY3VycmVudCByYSA0DQo+IMKgwqDCoCBNYXIgMjkgMTE6MzU6MzcgaXAtMTcy LTMxLTE3LTE5MSBrZXJuZWw6IG1heCByYSAzMg0KPiDCoMKgwqAgTWFyIDI5IDExOjM1OjM3IGlw LTE3Mi0zMS0xNy0xOTEga2VybmVsOiBjdXJyZW50IHJhIDY0DQo+IMKgwqDCoCBNYXIgMjkgMTE6 MzU6MzcgaXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IG1heCByYSA2NA0KPiDCoMKgwqAgTWFyIDI5 IDExOjM1OjM3IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBjdXJyZW50IHJhIDY0DQo+IMKgwqDC oCBNYXIgMjkgMTE6MzU6MzcgaXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IG1heCByYSAzMg0KPiDC oMKgwqAgTWFyIDI5IDExOjM1OjM3IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBjdXJyZW50IHJh IDMyDQo+IMKgwqDCoCBNYXIgMjkgMTE6MzU6MzcgaXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IG1h eCByYSAzMg0KPiDCoMKgwqAgTWFyIDI5IDExOjM1OjM3IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVs OiBjdXJyZW50IHJhIDU5DQo+IMKgwqDCoCBNYXIgMjkgMTE6MzU6MzcgaXAtMTcyLTMxLTE3LTE5 MSBrZXJuZWw6IG1heCByYSAzMg0KPiDCoMKgwqAgTWFyIDI5IDExOjM1OjM3IGlwLTE3Mi0zMS0x Ny0xOTEga2VybmVsOiBjdXJyZW50IHJhIDMyDQo+IMKgwqDCoCBNYXIgMjkgMTE6MzU6MzcgaXAt MTcyLTMxLTE3LTE5MSBrZXJuZWw6IG1heCByYSAzMg0KPiDCoMKgwqAgTWFyIDI5IDExOjM1OjM3 IGlwLTE3Mi0zMS0xNy0xOTEga2VybmVsOiBjdXJyZW50IHJhIDMyDQo+IMKgwqDCoCBNYXIgMjkg MTE6MzU6MzcgaXAtMTcyLTMxLTE3LTE5MSBrZXJuZWw6IG1heCByYSAzMg0KPiANCj4gwqDCoMKg IC1JbiBteSByZXByb2R1Y3Rpb24gSSB1c2VkIHJzeW5jIGFzIGNsYXJpZmllZCBhYm92ZSBhbmQg aXQgaXMNCj4gYWx3YXlzIGRvaW5nIHJlYWQgc3lzY2FsbHMgcmVxdWVzdGluZyAyNTYgS0IgaW4g ZWFjaCBjYWxsOg0KPiDCoMKgwqAgMTU6NDc6MTAuNzgwNjU4IHJlYWQoMywNCj4gIlwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAi Li4uDQo+ICwgMjYyMTQ0KSA9IDI2MjE0NCA8MC4wMjM3NDk+DQo+IMKgwqDCoCAxNTo0NzoxMC44 MDU0NjcgcmVhZCgzLA0KPiAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIuLi4NCj4gLCAyNjIxNDQpID0gMjYyMTQ0IDwwLjAy MzczOT4NCj4gwqDCoMKgIDE1OjQ3OjEwLjgzMDI3MiByZWFkKDMsDQo+ICJcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIi4uLg0K PiAsIDI2MjE0NCkgPSAyNjIxNDQgPDAuMDIzNjY0Pg0KPiDCoMKgwqAgMTU6NDc6MTAuODU0OTcy IHJlYWQoMywNCj4gIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDAiLi4uDQo+ICwgMjYyMTQ0KSA9IDI2MjE0NCA8MC4wMjM4MTQ+ DQo+IMKgwqDCoCAxNTo0NzoxMC44Nzk4MzcgcmVhZCgzLA0KPiAiXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIuLi4NCj4gLCAy NjIxNDQpID0gMjYyMTQ0IDwwLjAyMzYyNT4NCj4gwqDCoMKgIDE1OjQ3OjEwLjkwNDQ5NiByZWFk KDMsDQo+ICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwIi4uLg0KPiAsIDI2MjE0NCkgPSAyNjIxNDQgPDAuMDIzNjQ1Pg0KPiDC oMKgwqAgMTU6NDc6MTAuOTI5MTgwIHJlYWQoMywNCj4gIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiLi4uDQo+ICwgMjYyMTQ0 KSA9IDI2MjE0NCA8MC4wMjQwNzI+DQo+IMKgwqDCoCAxNTo0NzoxMC45NTQzMDggcmVhZCgzLA0K PiAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww XDBcMFwwXDBcMCIuLi4NCj4gLCAyNjIxNDQpID0gMjYyMTQ0IDwwLjAyMzY2OT4NCj4gDQo+IA0K PiDCoMKgwqAgLUxvb2tpbmcgaW50byB0aGUgcmVhZGFoZWFkIHNvdXJjZSBjb2RlIGFuZCBJIGNh biBzZWUgdGhhdA0KPiByZWFkYWhlYWQgaXMgZG9pbmcgc29tZSBoZXVyaXN0aWNzIHRvIGRldGVy bWluZSBpZiB0aGUgYWNjZXNzIHBhdHRlcm4NCj4gaXMgc2VxdWVudGlhbCBvciByYW5kb20gdGhl biBpdCBtb2RpZnkgdGhlIHJlYWQgYWhlYWQgd2luZG93KGFtb3VudA0KPiBvZiBkYXRhIGl0IHdp bGwgcHJlZmV0Y2gpIGFjY29yZGluZ2x5LCByZWFkIGFoZWFkIGNhbid0IGFsc28gcmVhZA0KPiBi ZXlvbmQgdGhlIHJlcXVlc3RlZCBmaWxlIHNpemUsIHRoaXMgdGhlb3JldGljYWxseSBtZWFucyB0 aGF0IGhhdmluZw0KPiBMYXJnZSBORlMgTWF4IHJlYWQgYWhlYWQgc2l6ZSAoMTVNQikgc2hvdWxk bid0IGhhdmUgbXVjaCBpbXBhY3Qgb24NCj4gcGVyZm9ybWFuY2UgZXZlbiB3aXRoIHJhbmRvbSBJ L08gcGF0dGVybiBvciB3aXRoIGRhdGEgc2V0IGNvbnNpc3RzIG9mDQo+IHNtYWxsIGZpbGVzLCB0 aGUgb25seSBtYWpvciBpbXBhY3Qgb2YgaGF2aW5nIGxhcmdlIE5GUyByZWFkIGFoZWFkDQo+IHNp emUgd291bGQgYmUgc29tZSBuZXR3b3JraW5nIGNvbmdlc3Rpb24gb3IgYm9vdHVwIGRlbGF5IHdp dGggaG9zdHMNCj4gdXNpbmcgY29uZ2VzdGVkIG9yIGxvdyB0aHJvdWdocHV0IG5ldHdvcmtzIGFz IGlsbHVzdHJhdGVkIGluIA0KPiBodHRwczovL2J1Z3ppbGxhLmtlcm5lbC5vcmcvc2hvd19idWcu Y2dpP2lkPTIwNDkzOcKgJiANCj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtbmZzLzBi NzYyMTNlLTQyNmItMDY1NC01YjY5LTAyYmZlYWQ3ODAzMUBnbWFpbC5jb20vVC8NCj4gLg0KPiDC oMKgwqAgLVdpdGggcGF0Y2gNCj4gaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvbGludXgt bmZzL21zZzc1MDE4Lmh0bWzCoHRoZSBwYWNrZXQNCj4gY2FwdHVyZXMgYXJlIHNob3dpbmcgdGhl IGNsaWVudCBlaXRoZXIgYXNraW5nIGZvciAxMjhLQiBvciAyNTYgS0IgaW4NCj4gdGhlIE5GUyBS RUFEIGNhbGxzIGFuZCBpdCBjYW4ndCByZWFjaCBldmVuIHRoZSAxTUIgY29uZmlndXJlZCByc2l6 ZQ0KPiBtb3VudCBvcHRpb24gdGhpcyBpcyBiZWNhdXNlIHRoZSBvbmRlbWFuZF9yZWFkYWhlYWQg d2hpY2ggc2hvdWxkIGJlDQo+IHJlc3BvbnNpYmxlIGZvciBtb3ZpbmcgYW5kIHNjYWxpbmcgdGhl IHJlYWQgYWhlYWQgd2luZG93IGhhcyBhbiBpZg0KPiBjb25kaXRpb24gd2hpY2ggd2FzIGEgcGFy dCBvZiANCj4gaHR0cHM6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9saW51eC1rZXJuZWxAdmdlci5r ZXJuZWwub3JnL21zZzEyNzQ3NDMuaHRtbA0KPiAsIHRoaXMgcGF0Y2ggYWN0dWFsbHkgbW9kaWZp ZWQgcmVhZCBhaGVhZCB0byBpc3N1ZSB0aGUgbWF4aW11bSBvZiB0aGUNCj4gdXNlciByZXF1ZXN0 IHNpemUocnN5bmMgaXMgZG9pbmcgMjU2S0IgcmVhZCByZXF1ZXN0cyksIGFuZCB0aGUgcmVhZC0N Cj4gYWhlYWQgbWF4IHNpemUoMTI4S0IgYnkgZGVmYXVsdCksIGJ1dCBjYXBwZWQgdG8gdGhlIG1h eCByZXF1ZXN0IHNpemUNCj4gb24gdGhlIGRldmljZSBzaWRlKDFNQiBpbiBvdXIgY2FzZSkuIFRo ZSBsYXR0ZXIgaXMgZG9uZSB0byBhdm9pZA0KPiByZWFkaW5nIGFoZWFkIHRvbyBtdWNoLCBpZiB0 aGUgYXBwbGljYXRpb24gYXNrcyBmb3IgYSBodWdlIHJlYWQuIHRoaXMNCj4gaXMgd2h5IHdpdGgg MTI4S0IgYXMgcmVhZCBhaGVhZCBzaXplIGFuZCBhcHBsaWNhdGlvbiBhc2tpbmcgZm9yIDI1NktC DQo+IHdlIG5ldmVyIGV4Y2VlZCAyNTZLQiBiZWNhdXNlIHRoaXMgcGF0Y2ggYWN0dWFsbHkgaW50 ZW5kZWQgdG8gZG8NCj4gdGhhdCwgaXQgYXZvaWRzIGxpbWl0aW5nIHRoZSByZXF1ZXN0ZWQgZGF0 YSB0byB0aGUgbWF4aW11bSByZWFkIGFoZWFkDQo+IHNpemUgYnV0IHdlIGFyZSBzdGlsbCBsaW1p dGVkIGJ5IHRoZSBtaW5pbXVtIGJldHdlZW4gYW1vdW50IG9mIGRhdGENCj4gYXBwbGljYXRpb24g aXMgcmVhZGluZyB3aGljaCBpcyAyNTZLQiBhcyBzeW5jIGluIHJzeW5jIHN0cmFjZSBvdXRwdXQN Cj4gJiBiZGktPmlvX3BhZ2VzKDI1NiBwYWdlcz0xTUIpIGFzIGNvbmZpZ3VyZWQgaW4gdGhlIHJz aXplIG1vdW50DQo+IG9wdGlvbi4NCj4gDQo+IMKgwqDCoCAtT3V0cHV0IGFmdGVyIGFkZGluZyBz b21lIGRlYnVnZ2luZyB0byB0aGUga2VybmVsIHNob3dpbmcgdGhlDQo+IHNpemUgb2YgZWFjaCB2 YXJpYWJsZSBpbiB0aGUgbWVudGlvbmVkICJpZiIgY29uZGl0aW9uOg0KPiANCj4gwqDCoMKgIFvC oCAyMzguMzg3Nzg4XSByZXFfc2l6ZT0gNjQgLS0tLS0tPjI1Nk1CIHJzeW5jIHJlYWQgcmVxdWVz dHMNCj4gwqDCoMKgIFvCoCAyMzguMzg3NzkwXSBpbyBwYWdlcz0gMjU2LS0tLS0+MU1CIGFzIHN1 cHBvcnRlZCBieSBFRlMgYW5kIGFzDQo+IGNvbmZpZ3VyZWQgaW4gdGhlIHJzaXplIG1vdW50IG9w dGlvbi4NCj4gwqDCoMKgIFvCoCAyMzguMzkwNDg3XSBtYXhfcGFnZXMgYmVmb3JlPSAzMi0tLS0t PjEyOCBLQiByZWFkIGFoZWFkIHNpemUNCj4gd2hpY2ggaXMgdGhlIGRlZmF1bHQuDQo+IMKgwqDC oCBbwqAgMjM4LjM5MzE3N10gbWF4X3BhZ2VzIGFmdGVyPSA2NC0tLS0+cmFpc2VkIHRvIDI1NiBL QiBiZWNhdXNlDQo+IG9mIGNoYW5nZXMgbWVudGlvbmVkIGluIFs0XSAibWF4X3BhZ2VzID0gbWlu KHJlcV9zaXplLCBiZGktDQo+ID5pb19wYWdlcyk7Ig0KPiANCj4gwqDCoMKgIA0KPiBodHRwczov L2VsaXhpci5ib290bGluLmNvbS9saW51eC9sYXRlc3Qvc291cmNlL21tL3JlYWRhaGVhZC5jI0w0 MzUNCj4gDQo+IMKgwqDCoCAvKg0KPiDCoMKgwqDCoCAqIEEgbWluaW1hbCByZWFkYWhlYWQgYWxn b3JpdGhtIGZvciB0cml2aWFsIHNlcXVlbnRpYWwvcmFuZG9tDQo+IHJlYWRzLg0KPiDCoMKgwqDC oCAqLw0KPiDCoMKgwqAgc3RhdGljIHZvaWQgb25kZW1hbmRfcmVhZGFoZWFkKHN0cnVjdCByZWFk YWhlYWRfY29udHJvbCAqcmFjdGwsDQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGZp bGVfcmFfc3RhdGUgKnJhLCBib29sIGhpdF9yZWFkYWhlYWRfbWFya2VyLA0KPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgcmVxX3NpemUpDQo+IMKgwqDCoCB7DQo+IMKgwqDC oMKgwqDCoMKgIHN0cnVjdCBiYWNraW5nX2Rldl9pbmZvICpiZGkgPSBpbm9kZV90b19iZGkocmFj dGwtPm1hcHBpbmctDQo+ID5ob3N0KTsNCj4gwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBt YXhfcGFnZXMgPSByYS0+cmFfcGFnZXM7DQo+IMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcg YWRkX3BhZ2VzOw0KPiDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIGluZGV4ID0gcmVhZGFo ZWFkX2luZGV4KHJhY3RsKTsNCj4gwqDCoMKgwqDCoMKgwqAgcGdvZmZfdCBwcmV2X2luZGV4Ow0K PiANCj4gwqDCoMKgwqDCoMKgwqAgLyoNCj4gwqDCoMKgwqDCoMKgwqDCoCAqIElmIHRoZSByZXF1 ZXN0IGV4Y2VlZHMgdGhlIHJlYWRhaGVhZCB3aW5kb3csIGFsbG93IHRoZQ0KPiByZWFkIHRvDQo+ IMKgwqDCoMKgwqDCoMKgwqAgKiBiZSB1cCB0byB0aGUgb3B0aW1hbCBoYXJkd2FyZSBJTyBzaXpl DQo+IMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4gwqDCoMKgwqDCoMKgwqAgaWYgKHJlcV9zaXplID4g bWF4X3BhZ2VzICYmIGJkaS0+aW9fcGFnZXMgPiBtYXhfcGFnZXMpDQo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgbWF4X3BhZ2VzID0gbWluKHJlcV9zaXplLCBiZGktPmlvX3BhZ2VzKTsNCj4gDQo+ IA0KPiDCoMKgwqDCoA0KPiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMNCj4gDQo+IMKgwqDCoCAtV2l0aCAxMjhLQiBhcyBkZWZhdWx0IG1heGltdW0gcmVhZCBh aGVhZCBzaXplIHRoZSBwYWNrZXQgY2FwdHVyZQ0KPiBmcm9tIHRoZSBjbGllbnQgc2lkZSBpcyBz aG93aW5nIHRoZSBORlN2NCBSRUFEIGNhbGxzwqAgc2hvd2luZyBjb3VudA0KPiBpbiBieXRlc8Kg IG1vdmluZyBiZXR3ZWVuIDEyOEtCIHRvIDI1NktCLg0KPiANCj4gwqDCoMKgIDczNDAzwqDCoMKg wqDCoMKgwqDCoCAyOSAxNzIuMzEuMTcuMTkxIC0+IDE3Mi4zMS4yOC4xNjEgTkZTIDM5NCBWNCBD YWxsDQo+IFJFQUQgU3RhdGVJRDogMHhjZWMyIE9mZnNldDogMTA3Mjk1NTM5MiBMZW46IDEzMTA3 Mg0KPiDCoMKgwqAgNzM0MDTCoMKgwqDCoMKgwqDCoMKgIDI5IDE3Mi4zMS4xNy4xOTEgLT4gMTcy LjMxLjI4LjE2MSBORlMgMzk0IFY0IENhbGwNCj4gUkVBRCBTdGF0ZUlEOiAweGNlYzIgT2Zmc2V0 OiAxMDczMDg2NDY0IExlbjogMjYyMTQ0DQo+IMKgwqDCoCA3MzQwNsKgwqDCoMKgwqDCoMKgwqAg MjkgMTcyLjMxLjI4LjE2MSAtPiAxNzIuMzEuMTcuMTkxIE5GUyA4Njk5IFY0IFJlcGx5DQo+IChD YWxsIEluIDczNDAzKVtVbnJlYXNzZW1ibGVkIFBhY2tldF0NCj4gwqDCoMKgIDczNDE1wqDCoMKg wqDCoMKgwqDCoCAyOSAxNzIuMzEuMTcuMTkxIC0+IDE3Mi4zMS4yOC4xNjEgTkZTIDM5NCBWNCBD YWxsDQo+IFJFQUQgU3RhdGVJRDogMHhjZWMyIE9mZnNldDogMTA3MzM0ODYwOCBMZW46IDEzMTA3 Mg0KPiDCoMKgwqAgNzM0MTbCoMKgwqDCoMKgwqDCoMKgIDI5IDE3Mi4zMS4yOC4xNjEgLT4gMTcy LjMxLjE3LjE5MSBORlMgODY5OSBWNCBSZXBseQ0KPiAoQ2FsbCBJbiA3MzQwNClbVW5yZWFzc2Vt YmxlZCBQYWNrZXRdDQo+IMKgwqDCoCA3MzQyOMKgwqDCoMKgwqDCoMKgwqAgMjkgMTcyLjMxLjE3 LjE5MSAtPiAxNzIuMzEuMjguMTYxIE5GUyAzOTQgVjQgQ2FsbA0KPiBSRUFEIFN0YXRlSUQ6IDB4 Y2VjMiBPZmZzZXQ6IDEwNzM0Nzk2ODAgTGVuOiAxMzEwNzINCj4gwqDCoMKgIDczNDI5wqDCoMKg wqDCoMKgwqDCoCAyOSAxNzIuMzEuMjguMTYxIC0+IDE3Mi4zMS4xNy4xOTEgTkZTIDg2OTkgVjQg UmVwbHkNCj4gKENhbGwgSW4gNzM0MTUpW1VucmVhc3NlbWJsZWQgUGFja2V0XQ0KPiDCoMKgwqAg NzM0MzjCoMKgwqDCoMKgwqDCoMKgIDI5IDE3Mi4zMS4xNy4xOTEgLT4gMTcyLjMxLjI4LjE2MSBO RlMgMzk0IFY0IENhbGwNCj4gUkVBRCBTdGF0ZUlEOiAweGNlYzIgT2Zmc2V0OiAxMDczNjEwNzUy IExlbjogMTMxMDcyDQo+IMKgwqDCoCA3MzQzOcKgwqDCoMKgwqDCoMKgwqAgMjkgMTcyLjMxLjI4 LjE2MSAtPiAxNzIuMzEuMTcuMTkxIE5GUyA4Njk5IFY0IFJlcGx5DQo+IChDYWxsIEluIDczNDI4 KVtVbnJlYXNzZW1ibGVkIFBhY2tldF0NCj4gDQo+IMKgwqDCoCAtbmZzc3RhdCBpcyBzaG93aW5n IDgxODMgTkZTVjQgUkVBRCBjYWxscyByZXF1aXJlZCB0byByZWFkIDFHQg0KPiBmaWxlLg0KPiAN Cj4gwqDCoMKgICMgbmZzc3RhdCANCj4gwqDCoMKgIENsaWVudCBycGMgc3RhdHM6DQo+IMKgwqDC oCBjYWxsc8KgwqDCoMKgwqAgcmV0cmFuc8KgwqDCoCBhdXRocmVmcnNoDQo+IMKgwqDCoCA4MjA0 wqDCoMKgwqDCoMKgIDDCoMKgwqDCoMKgwqDCoMKgwqAgODIwNMKgwqDCoCANCj4gDQo+IMKgwqDC oCBDbGllbnQgbmZzIHY0Og0KPiDCoMKgwqAgbnVsbMKgwqDCoMKgwqDCoMKgwqAgcmVhZMKgwqDC oMKgwqDCoMKgwqAgd3JpdGXCoMKgwqDCoMKgwqDCoCBjb21taXTCoMKgwqDCoMKgwqAgb3BlbsKg wqDCoMKgwqDCoMKgwqANCj4gb3Blbl9jb25mwqDCoMKgIA0KPiDCoMKgwqAgMcKgwqDCoMKgwqDC oMKgwqAgMCUgODE4M8KgwqDCoMKgIDk5JSAwwqDCoMKgwqDCoMKgwqDCoCAwJSAwwqDCoMKgwqDC oMKgwqDCoCAwJSAwwqDCoMKgwqDCoMKgwqDCoCAwJQ0KPiAwwqDCoMKgwqDCoMKgwqDCoCAwJSAN Cj4gwqDCoMKgIG9wZW5fbm9hdMKgwqDCoCBvcGVuX2RncmTCoMKgwqAgY2xvc2XCoMKgwqDCoMKg wqDCoCBzZXRhdHRywqDCoMKgwqDCoCBmc2luZm/CoMKgwqDCoMKgwqANCj4gcmVuZXfCoMKgwqDC oMKgwqDCoCANCj4gwqDCoMKgIDHCoMKgwqDCoMKgwqDCoMKgIDAlIDDCoMKgwqDCoMKgwqDCoMKg IDAlIDHCoMKgwqDCoMKgwqDCoMKgIDAlIDDCoMKgwqDCoMKgwqDCoMKgIDAlIDLCoMKgwqDCoMKg wqDCoMKgIDAlDQo+IDDCoMKgwqDCoMKgwqDCoMKgIDAlIA0KPiDCoMKgwqAgc2V0Y2xudGlkwqDC oMKgIGNvbmZpcm3CoMKgwqDCoMKgIGxvY2vCoMKgwqDCoMKgwqDCoMKgIGxvY2t0wqDCoMKgwqDC oMKgwqAgbG9ja3XCoMKgwqDCoMKgwqDCoA0KPiBhY2Nlc3PCoMKgwqDCoMKgwqAgDQo+IMKgwqDC oCAwwqDCoMKgwqDCoMKgwqDCoCAwJSAwwqDCoMKgwqDCoMKgwqDCoCAwJSAwwqDCoMKgwqDCoMKg wqDCoCAwJSAwwqDCoMKgwqDCoMKgwqDCoCAwJSAwwqDCoMKgwqDCoMKgwqDCoCAwJQ0KPiAxwqDC oMKgwqDCoMKgwqDCoCAwJSANCj4gwqDCoMKgIGdldGF0dHLCoMKgwqDCoMKgIGxvb2t1cMKgwqDC oMKgwqDCoCBsb29rdXBfcm9vdMKgIHJlbW92ZcKgwqDCoMKgwqDCoCByZW5hbWXCoMKgwqDCoMKg wqANCj4gbGlua8KgwqDCoMKgwqDCoMKgwqAgDQo+IMKgwqDCoCA0wqDCoMKgwqDCoMKgwqDCoCAw JSAxwqDCoMKgwqDCoMKgwqDCoCAwJSAxwqDCoMKgwqDCoMKgwqDCoCAwJSAwwqDCoMKgwqDCoMKg wqDCoCAwJSAwwqDCoMKgwqDCoMKgwqDCoCAwJQ0KPiAwwqDCoMKgwqDCoMKgwqDCoCAwJSANCj4g wqDCoMKgIHN5bWxpbmvCoMKgwqDCoMKgIGNyZWF0ZcKgwqDCoMKgwqDCoCBwYXRoY29uZsKgwqDC oMKgIHN0YXRmc8KgwqDCoMKgwqDCoCByZWFkbGlua8KgwqDCoMKgDQo+IHJlYWRkaXLCoMKgwqDC oMKgIA0KPiDCoMKgwqAgMMKgwqDCoMKgwqDCoMKgwqAgMCUgMMKgwqDCoMKgwqDCoMKgwqAgMCUg McKgwqDCoMKgwqDCoMKgwqAgMCUgMMKgwqDCoMKgwqDCoMKgwqAgMCUgMMKgwqDCoMKgwqDCoMKg wqAgMCUNCj4gMMKgwqDCoMKgwqDCoMKgwqAgMCUgDQo+IMKgwqDCoCBzZXJ2ZXJfY2Fwc8KgIGRl bGVncmV0dXJuwqAgZ2V0YWNswqDCoMKgwqDCoMKgIHNldGFjbMKgwqDCoMKgwqDCoCBmc19sb2Nh dGlvbnMNCj4gcmVsX2xrb3duZXLCoCANCj4gwqDCoMKgIDPCoMKgwqDCoMKgwqDCoMKgIDAlIDDC oMKgwqDCoMKgwqDCoMKgIDAlIDDCoMKgwqDCoMKgwqDCoMKgIDAlIDDCoMKgwqDCoMKgwqDCoMKg IDAlIDDCoMKgwqDCoMKgwqDCoMKgIDAlDQo+IDDCoMKgwqDCoMKgwqDCoMKgIDAlIA0KPiDCoMKg wqAgc2VjaW5mb8KgwqDCoMKgwqAgZXhjaGFuZ2VfaWTCoCBjcmVhdGVfc2VzwqDCoCBkZXN0cm95 X3Nlc8KgIHNlcXVlbmNlwqDCoMKgwqANCj4gZ2V0X2xlYXNlX3TCoCANCj4gwqDCoMKgIDDCoMKg wqDCoMKgwqDCoMKgIDAlIDDCoMKgwqDCoMKgwqDCoMKgIDAlIDLCoMKgwqDCoMKgwqDCoMKgIDAl IDHCoMKgwqDCoMKgwqDCoMKgIDAlIDDCoMKgwqDCoMKgwqDCoMKgIDAlDQo+IDDCoMKgwqDCoMKg wqDCoMKgIDAlIA0KPiDCoMKgwqAgcmVjbGFpbV9jb21wIGxheW91dGdldMKgwqDCoCBnZXRkZXZp bmZvwqDCoCBsYXlvdXRjb21taXQgbGF5b3V0cmV0dXJuDQo+IGdldGRldmxpc3TCoMKgIA0KPiDC oMKgwqAgMMKgwqDCoMKgwqDCoMKgwqAgMCUgMcKgwqDCoMKgwqDCoMKgwqAgMCUgMMKgwqDCoMKg wqDCoMKgwqAgMCUgMMKgwqDCoMKgwqDCoMKgwqAgMCUgMMKgwqDCoMKgwqDCoMKgwqAgMCUNCj4g MMKgwqDCoMKgwqDCoMKgwqAgMCUgDQo+IMKgwqDCoCAobnVsbCnCoMKgwqDCoMKgwqAgDQo+IMKg wqDCoCAxIDAlDQo+IA0KPiDCoMKgwqDCoA0KPiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMNCj4gDQo+IMKgwqDCoCAtV2hlbiB1c2luZyAxNU1CIGFzIG1heGltdW0g cmVhZCBhaGVhZCBzaXplLCB0aGUgY2xpZW50IGlzDQo+IHNlbmRpbmcgMU1CIE5GU1Y0IHJlYWQg cmVxdWVzdHMgaGVuY2UgaXTigJlzIGFibGUgdG8gcmVhZCB0aGUgc2FtZSAxR0INCj4gZmlsZSBp biAxMDI0IE5GUyBSRUFEIGNhbGxzIA0KPiANCj4gwqDCoMKgICN1bmFtZSAtcjsgbW91bnQgLXQg bmZzNCAtbw0KPiBuZnN2ZXJzPTQuMSxyc2l6ZT0xMDUyNjcyLHdzaXplPTEwNDg1NzYsaGFyZCx0 aW1lbz02MDAscmV0cmFucz0yLG5vcmUNCj4gc3Zwb3J0IGZzLTY3MDBmNTUzLmVmcy5ldS13ZXN0 LTEuYW1hem9uYXdzLmNvbTovIGVmczsgLi9uZnMtcmVhZGFoZWFkDQo+IHNob3cgL2hvbWUvZWMy LXVzZXIvZWZzLw0KPiDCoMKgwqAgNS4zLjkNCj4gwqDCoMKgIC9ob21lL2VjMi11c2VyL2VmcyAw OjQwIC9zeXMvY2xhc3MvYmRpLzA6NDAvcmVhZF9haGVhZF9rYiA9IDE1MzYwDQo+IMKgwqDCoCAj c3luYzsgZWNobyAzID4gL3Byb2Mvc3lzL3ZtL2Ryb3BfY2FjaGVzDQo+IMKgwqDCoCAjcnN5bmMg LS1wcm9ncmVzcyBlZnMvdGVzdCAuDQo+IMKgwqDCoCB0ZXN0DQo+IMKgwqDCoMKgwqAgMSwwNzMs NzQxLDgyNCAxMDAlwqAgMjYwLjE1TUIvc8KgwqDCoCAwOjAwOjAzICh4ZnIjMSwgdG8tY2hrPTAv MSkNCj4gwqDCoMKgIFtyb290QGlwLTE3Mi0zMS0xNy00MiBlYzItdXNlcl0jIG5mc3N0YXQgDQo+ IMKgwqDCoCBDbGllbnQgcnBjIHN0YXRzOg0KPiDCoMKgwqAgY2FsbHPCoMKgwqDCoMKgIHJldHJh bnPCoMKgwqAgYXV0aHJlZnJzaA0KPiDCoMKgwqAgMTA0M8KgwqDCoMKgwqDCoCAwwqDCoMKgwqDC oMKgwqDCoMKgIDEwNDPCoMKgwqAgDQo+IA0KPiDCoMKgwqAgQ2xpZW50IG5mcyB2NDoNCj4gwqDC oMKgIG51bGzCoMKgwqDCoMKgwqDCoMKgIHJlYWTCoMKgwqDCoMKgwqDCoMKgIHdyaXRlwqDCoMKg wqDCoMKgwqAgY29tbWl0wqDCoMKgwqDCoMKgIG9wZW7CoMKgwqDCoMKgwqDCoMKgDQo+IG9wZW5f Y29uZsKgwqDCoCANCj4gwqDCoMKgIDHCoMKgwqDCoMKgwqDCoMKgIDAlIDEwMjTCoMKgwqDCoCA5 OCUgMMKgwqDCoMKgwqDCoMKgwqAgMCUgMMKgwqDCoMKgwqDCoMKgwqAgMCUgMMKgwqDCoMKgwqDC oMKgwqAgMCUNCj4gMMKgwqDCoMKgwqDCoMKgwqAgMCUgDQo+IMKgwqDCoCBvcGVuX25vYXTCoMKg wqAgb3Blbl9kZ3JkwqDCoMKgIGNsb3NlwqDCoMKgwqDCoMKgwqAgc2V0YXR0csKgwqDCoMKgwqAg ZnNpbmZvwqDCoMKgwqDCoMKgDQo+IHJlbmV3wqDCoMKgwqDCoMKgwqAgDQo+IMKgwqDCoCAxwqDC oMKgwqDCoMKgwqDCoCAwJSAwwqDCoMKgwqDCoMKgwqDCoCAwJSAxwqDCoMKgwqDCoMKgwqDCoCAw JSAwwqDCoMKgwqDCoMKgwqDCoCAwJSAywqDCoMKgwqDCoMKgwqDCoCAwJQ0KPiAwwqDCoMKgwqDC oMKgwqDCoCAwJSANCj4gwqDCoMKgIHNldGNsbnRpZMKgwqDCoCBjb25maXJtwqDCoMKgwqDCoCBs b2NrwqDCoMKgwqDCoMKgwqDCoCBsb2NrdMKgwqDCoMKgwqDCoMKgIGxvY2t1wqDCoMKgwqDCoMKg wqANCj4gYWNjZXNzwqDCoMKgwqDCoMKgIA0KPiDCoMKgwqAgMMKgwqDCoMKgwqDCoMKgwqAgMCUg MMKgwqDCoMKgwqDCoMKgwqAgMCUgMMKgwqDCoMKgwqDCoMKgwqAgMCUgMMKgwqDCoMKgwqDCoMKg wqAgMCUgMMKgwqDCoMKgwqDCoMKgwqAgMCUNCj4gMcKgwqDCoMKgwqDCoMKgwqAgMCUgDQo+IMKg wqDCoCBnZXRhdHRywqDCoMKgwqDCoCBsb29rdXDCoMKgwqDCoMKgwqAgbG9va3VwX3Jvb3TCoCBy ZW1vdmXCoMKgwqDCoMKgwqAgcmVuYW1lwqDCoMKgwqDCoMKgDQo+IGxpbmvCoMKgwqDCoMKgwqDC oMKgIA0KPiDCoMKgwqAgMsKgwqDCoMKgwqDCoMKgwqAgMCUgMcKgwqDCoMKgwqDCoMKgwqAgMCUg McKgwqDCoMKgwqDCoMKgwqAgMCUgMMKgwqDCoMKgwqDCoMKgwqAgMCUgMMKgwqDCoMKgwqDCoMKg wqAgMCUNCj4gMMKgwqDCoMKgwqDCoMKgwqAgMCUgDQo+IMKgwqDCoCBzeW1saW5rwqDCoMKgwqDC oCBjcmVhdGXCoMKgwqDCoMKgwqAgcGF0aGNvbmbCoMKgwqDCoCBzdGF0ZnPCoMKgwqDCoMKgwqAg cmVhZGxpbmvCoMKgwqDCoA0KPiByZWFkZGlywqDCoMKgwqDCoCANCj4gwqDCoMKgIDDCoMKgwqDC oMKgwqDCoMKgIDAlIDDCoMKgwqDCoMKgwqDCoMKgIDAlIDHCoMKgwqDCoMKgwqDCoMKgIDAlIDDC oMKgwqDCoMKgwqDCoMKgIDAlIDDCoMKgwqDCoMKgwqDCoMKgIDAlDQo+IDDCoMKgwqDCoMKgwqDC oMKgIDAlIA0KPiDCoMKgwqAgc2VydmVyX2NhcHPCoCBkZWxlZ3JldHVybsKgIGdldGFjbMKgwqDC oMKgwqDCoCBzZXRhY2zCoMKgwqDCoMKgwqAgZnNfbG9jYXRpb25zDQo+IHJlbF9sa293bmVywqAg DQo+IMKgwqDCoCAzwqDCoMKgwqDCoMKgwqDCoCAwJSAwwqDCoMKgwqDCoMKgwqDCoCAwJSAwwqDC oMKgwqDCoMKgwqDCoCAwJSAwwqDCoMKgwqDCoMKgwqDCoCAwJSAwwqDCoMKgwqDCoMKgwqDCoCAw JQ0KPiAwwqDCoMKgwqDCoMKgwqDCoCAwJSANCj4gwqDCoMKgIHNlY2luZm/CoMKgwqDCoMKgIGV4 Y2hhbmdlX2lkwqAgY3JlYXRlX3Nlc8KgwqAgZGVzdHJveV9zZXPCoCBzZXF1ZW5jZcKgwqDCoMKg DQo+IGdldF9sZWFzZV90wqAgDQo+IMKgwqDCoCAwwqDCoMKgwqDCoMKgwqDCoCAwJSAwwqDCoMKg wqDCoMKgwqDCoCAwJSAywqDCoMKgwqDCoMKgwqDCoCAwJSAxwqDCoMKgwqDCoMKgwqDCoCAwJSAw wqDCoMKgwqDCoMKgwqDCoCAwJQ0KPiAwwqDCoMKgwqDCoMKgwqDCoCAwJSANCj4gwqDCoMKgIHJl Y2xhaW1fY29tcCBsYXlvdXRnZXTCoMKgwqAgZ2V0ZGV2aW5mb8KgwqAgbGF5b3V0Y29tbWl0IGxh eW91dHJldHVybg0KPiBnZXRkZXZsaXN0wqDCoCANCj4gwqDCoMKgIDDCoMKgwqDCoMKgwqDCoMKg IDAlIDHCoMKgwqDCoMKgwqDCoMKgIDAlIDDCoMKgwqDCoMKgwqDCoMKgIDAlIDDCoMKgwqDCoMKg wqDCoMKgIDAlIDDCoMKgwqDCoMKgwqDCoMKgIDAlDQo+IDDCoMKgwqDCoMKgwqDCoMKgIDAlIA0K PiDCoMKgwqAgKG51bGwpwqDCoMKgwqDCoMKgIA0KPiDCoMKgwqAgMSAwJSANCj4gDQo+IMKgwqDC oCAtVGhlIHBhY2tldCBjYXB0dXJlIGZyb20gdGhlIGNsaWVudCBzaWRlIGlzIHNob3dpbmcgTkZT djQgUkVBRA0KPiBjYWxscyB3aXRoIDFNQiBhcyByZWFkIGNvdW50IGluIGJ5dGVzIHdoZW4gaGF2 aW5nIDE1TUIgYXMgbWF4aW11bSBORlMNCj4gcmVhZCBhaGVhZCBzaXplLg0KPiANCj4gwqDCoMKg IDIwMjEtMDMtMjIgMTQ6MjU6MzQuOTg0NzMxwqAgOTM5OCAxNzIuMzEuMTcuNDIg4oaSIDE3Mi4z MS4yOC4xNjEgTkZTDQo+IDAuMDAwMzc1IFY0IENhbGwgUkVBRCBTdGF0ZUlEOiAweDM2NDAgT2Zm c2V0OiA5NDM3MTg0MCBMZW46IDEwNDg1NzYgDQo+IMKgwqDCoCAyMDIxLTAzLTIyIDE0OjI1OjM0 Ljk4NDgwNcKgIDk0MDUgMTcyLjMxLjE3LjQyIOKGkiAxNzIuMzEuMjguMTYxIE5GUw0KPiAwLjAw MDA3NCBWNCBDYWxsIFJFQUQgU3RhdGVJRDogMHgzNjQwIE9mZnNldDogOTU0MjA0MTYgTGVuOiAx MDQ4NTc2IA0KPiDCoMKgwqAgMjAyMS0wMy0yMiAxNDoyNTozNC45ODQ5MDLCoCA5NDE2IDE3Mi4z MS4xNy40MiDihpIgMTcyLjMxLjI4LjE2MSBORlMNCj4gMC4wMDAwOTcgVjQgQ2FsbCBSRUFEIFN0 YXRlSUQ6IDB4MzY0MCBPZmZzZXQ6IDk2NDY4OTkyIExlbjogMTA0ODU3NiANCj4gwqDCoMKgIDIw MjEtMDMtMjIgMTQ6MjU6MzQuOTg0OTQxwqAgOTQyMSAxNzIuMzEuMTcuNDIg4oaSIDE3Mi4zMS4y OC4xNjEgTkZTDQo+IDAuMDAwMDM5IFY0IENhbGwgUkVBRCBTdGF0ZUlEOiAweDM2NDAgT2Zmc2V0 OiA5NzUxNzU2OCBMZW46IDEwNDg1NzYgDQo+IA0KPiDCoMKgwqDCoA0KPiAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMN Cj4gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gDQo+IA0KPiDCoMKgwqAgLUkgdGhpbmsg dGhlcmUgYXJlIDIgb3B0aW9ucyB0byBtaXRpZ2F0ZSB0aGlzIGJlaGF2aW91ciB3aGljaCBJDQo+ IGFtIGxpc3RpbmcgYmVsb3c6DQo+IMKgwqDCoCBBKVJhaXNpbmcgdGhlIGRlZmF1bHQgbWF4aW11 bSBORlMgcmVhZCBhaGVhZMKgIHNpemUgYmVjYXVzZSB0aGUNCj4gY3VycmVudCBkZWZhdWx0IDEy OEtCIGRvZXNu4oCZdCBzZWVtIHRvIGJlIHN1ZmZpY2llbnQgZm9yIEhpZ2gNCj4gdGhyb3VnaG91 dCAmIGxvdyBsYXRlbmN5IHdvcmtsb2FkLCBJIHN0cm9uZ2x5IGJlbGlldmUgdGhhdCB0aGUgTkZT DQo+IHJzaXplIG1vdW50IG9wdGlvbiBzaG91bGQgYmUgdXNlZCBhcyB2YXJpYWJsZSBpbiBkZWNp ZGluZyB0aGUgbWF4aW11bQ0KPiBORlMgcmVhZCBhaGVhZMKgIHNpemUgd2hpY2ggd2FzIHRoZSBj YXNlIGJlZm9yZSBbMV0gd2hpbGUgbm93IGl04oCZcw0KPiBhbHdheXMgMTI4S0IgcmVnYXJkbGVz cyB0aGUgdXRpbGl6ZWQgcnNpemUgbW91bnQgb3B0aW9uLiBBbHNvIEkgdGhpbmsNCj4gY2xpZW50 cyBydW5uaW5nIGluIEhpZ2ggbGF0ZW5jeSAmIExvdyB0aHJvdWdob3V0IGVudmlyb25tZW50DQo+ IHNob3VsZG7igJl0IHVzZSAxTUIgYXMgcnNpemUgaW4gdGhlaXIgbW91bnQgb3B0aW9ucyhpLmUg dGhleSBzaG91bGQgdXNlDQo+IHNtYWxsZXIgcnNpemUpIGJlY2F1c2UgaXQgbWF5IGluY3JlYXNl IHRoZWlyIHN1ZmZlcmluZyBldmVuIHdpdGggbG93DQo+IG1heGltdW0gTkZTIHJlYWQgYWhlYWQg c2l6ZS4NCj4gwqDCoMKgIEIpQWRkaW5nIHNvbWUgbG9naWMgdG8gcmVhZCBhaGVhZCB0byBoYXZl IHNvbWUga2luZCBvZiBBdXRvdHVuaW5nDQo+IChTaW1pbGFyIHRvIFRDUCBBdXRvdHVuaW5nKSB3 aGVyZSB0aGUgbWF4aW11bSByZWFkIGFoZWFkIHNpemUgY2FuDQo+IGR5bmFtaWNhbGx5IGluY3Jl YXNlIGluIGNhc2UgdGhlIGNsaWVudC9yZWFkZXIgaXMgY29uc3RhbnRseSBmaWxsaW5nDQo+IHVw L3V0aWxpemluZyB0aGUgcmVhZCBhaGVhZCB3aW5kb3cgc2l6ZS4NCj4gDQo+IA0KPiDCoMKgwqAg TGlua3M6DQo+IMKgwqDCoCBbMV0gaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvbGludXgt bmZzL21zZzc1MDE4Lmh0bWwNCj4gwqDCoMKgIFsyXSANCj4gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6 b24uY29tL2Vmcy9sYXRlc3QvdWcvbW91bnRpbmctZnMtbmZzLW1vdW50LXNldHRpbmdzLmh0bWwN Cj4gwqDCoMKgIFszXSBodHRwczovL2J1Z3ppbGxhLmtlcm5lbC5vcmcvc2hvd19idWcuY2dpP2lk PTIwNDkzOQ0KPiDCoMKgwqAgWzRdIA0KPiBodHRwczovL3d3dy5tYWlsLWFyY2hpdmUuY29tL2xp bnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcvbXNnMTI3NDc0My5odG1sDQo+IA0KPiANCj4gwqDC oMKgIFRoYW5rIHlvdS4NCj4gDQo+IMKgwqDCoCBIYXplbQ0KPiANCj4gDQo+IA0KPiANCj4gDQo+ IA0KPiANCj4gQW1hem9uIFdlYiBTZXJ2aWNlcyBFTUVBIFNBUkwsIDM4IGF2ZW51ZSBKb2huIEYu IEtlbm5lZHksIEwtMTg1NQ0KPiBMdXhlbWJvdXJnLCBSLkMuUy4gTHV4ZW1ib3VyZyBCMTg2Mjg0 DQo+IA0KPiBBbWF6b24gV2ViIFNlcnZpY2VzIEVNRUEgU0FSTCwgSXJpc2ggQnJhbmNoLCBPbmUg QnVybGluZ3RvbiBQbGF6YSwNCj4gQnVybGluZ3RvbiBSb2FkLCBEdWJsaW4gNCwgSXJlbGFuZCwg YnJhbmNoIHJlZ2lzdHJhdGlvbiBudW1iZXIgOTA4NzA1DQo+IA0KPiANCg0KLS0gDQpUcm9uZCBN eWtsZWJ1c3QNCkNUTywgSGFtbWVyc3BhY2UgSW5jDQo0OTg0IEVsIENhbWlubyBSZWFsLCBTdWl0 ZSAyMDgNCkxvcyBBbHRvcywgQ0EgOTQwMjINCuKAiw0Kd3d3LmhhbW1lci5zcGFjZQ0KDQo=