From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50110.outbound.protection.outlook.com [40.107.5.110]) by sourceware.org (Postfix) with ESMTPS id 61A7E3858D3C for ; Thu, 24 Mar 2022 15:42:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 61A7E3858D3C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=silk.us Authentication-Results: sourceware.org; spf=none smtp.mailfrom=silk.us ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FuVb4ax+mXUinycftl4jh16RpxwGQTWxZvm9eksKZbeGFpJ6eOXLAPRzJL5LiJus2JBBPrzM77qynQsfp0S82p5BI7Mifot6vBoCGYmVNs2pJ3WSLYUFCtiO1eKErP3wlWYqkdjbGLTcwUmF+7xFL+fHrslp72aI4q4j609z/eHTaMOnC+4K9c2OkOTKhF14WMRZMWz961Dma1HnG7FaK7qY/y3W3pfs3/dNhvOaOtLUbF+5iaw/ZCtv9oqImPiQGsY4n8uawNv0pQmqn5D6R/VI9mEvIoBlKS81BW5FTwtDRhkrls+zfjoAO715muUI8UQUus2H3X4vuF60tTXJXg== 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=IRPMVYT+l0z+hXFi2MGwVMe5uFA9pNli+BcPuqBW1XY=; b=RBSexrStD7sT5928xZJhPF/FLvYxyTZvCBu4lH6/ZddP7IBs9+0Q+OU3WzY4kdQIgPcATd1JV0GbDgBn5j8p7E0SqUTQCYQC4E06qmGEVy6ZRtK+QaYjnnQQE9I9NcRZtdudTIzT+yTBOUKkKHbcF1QjyS7RBmZLF9SUQ/7y6GLiMK/oxw1XeGhffLXkQNLq+uj74l5AlGJtoADJy27bpwq/0Hly6e8RQPknJ6TtgWnoJ2+WaKkP+aJPQbg5EtmU3N1CihCdA+EX0XMSRlw8kyhTrUWoiF71p4FK+c2ZOns3VVPRxOY85JZGRc7/JNnCjH3BjxB6TpIiW21ero+Opw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silk.us; dmarc=pass action=none header.from=silk.us; dkim=pass header.d=silk.us; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=KAMINARIO.onmicrosoft.com; s=selector2-KAMINARIO-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IRPMVYT+l0z+hXFi2MGwVMe5uFA9pNli+BcPuqBW1XY=; b=U2U2wsJg/jGM3WTNXMErmUoO/xzhraIbvENJejZN/b+bSTG+oZRruFE9iCwrX4XSoF/DldCIWxLGdEIdQguKEzr7NyR2gFOURWXsm9Jo7zSt/1l42+62L85XbcFCRitsQfIuWsuE8qj8BMH1TEoKQ8xdc12fZ831vWiklr4U8iE= Received: from AM9PR04MB8291.eurprd04.prod.outlook.com (2603:10a6:20b:3e5::18) by AM0PR04MB4882.eurprd04.prod.outlook.com (2603:10a6:208:c2::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.17; Thu, 24 Mar 2022 15:41:57 +0000 Received: from AM9PR04MB8291.eurprd04.prod.outlook.com ([fe80::e074:dd60:f227:b674]) by AM9PR04MB8291.eurprd04.prod.outlook.com ([fe80::e074:dd60:f227:b674%5]) with mapi id 15.20.5102.018; Thu, 24 Mar 2022 15:41:57 +0000 From: David Mozes To: Adhemerval Zanella CC: Christian Hoff , Florian Weimer , "libc-help@sourceware.org" , Carlos O'Donell Subject: RE: rwlock different behavior on glibc 2.28 then on previous versions Thread-Topic: rwlock different behavior on glibc 2.28 then on previous versions Thread-Index: AdgyX2S3/6mTgWpiREq8PHffipiLYAC8MW5wAFXY8eABdDm6cAAczqWAAA/6npAABnFPgAAFvvdZAAEqGoAAjLErEA== Date: Thu, 24 Mar 2022 15:41:56 +0000 Message-ID: References: <87czis1tgk.fsf@oldenburg.str.redhat.com> <8681b86f-963c-7c01-3d7a-9c4cb3da52c8@gmx.net> <6D2D3001-2308-4336-829F-8369DF7D2514@silk.us> <0599084c-49bc-23a3-da7e-ccb197d4c88c@linaro.org> In-Reply-To: <0599084c-49bc-23a3-da7e-ccb197d4c88c@linaro.org> 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=silk.us; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 09571f88-d4a7-474b-0dfb-08da0dacd423 x-ms-traffictypediagnostic: AM0PR04MB4882:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: MUEL1TAMLR5Sn72JPncHDMbiKHwMKz5SZglapeH/zMBdcmJD2IPNwnlowVfLbGw+EOb4Z86h07/eHBc/RO4IqU9qytdPTnpB32FKsP31r9RLWOJ85Vedpikfn7LLj4TRAwFpJnQ/mYHVshH9JvhFmcDrUCvaV1ZXzin/GRW7htVGG+UHPwThAPQSeEtz5XAw2X0fBjZ5lT+YKqLYtofXJtxriEbrFJlX9a7DQ03u7Y606BmDHlpK2XhEOAOm2Po9l4gY39jnWwBsRYHAbmv0Wut/qik40PC7bqoPGbEVFrK/vZDdF5fYARcBTCkFqGsaaeFq/iaV3bJ0/ra01gc6rvZxIs/CKU3Nr0d2K5G4h6y9I4d5Vknq3vdCXHpv3j8aRd0GPoIOY9+cmDphG2SfS2MBZKZwmyfde86IPvuzIO48r1q4vOcxkCbxm80FudfOzLljAdBb7Kq2DGI/Ko4c4wC3heEA0ZtCzMIDgOZQGKftUfY8XQiVAzow7DXnxnSR78FADdXQzZFx4DDLZOCqv4rXiUHm/nw8gF3ZoVmPbZPCdD7t7O63cdeVr1vjPHOrcKFp2jH92aS4/qo0aDL6CwzdaRVTtd4W/R6nL/bxO3tYETswcPvmlxl6fEVv8n3WqcPQhVTNV3lls0Dkx31JgyzJy28IqD9R1hgbH/Wln+Zg3e3x0YaaN5exv8ZaK/Hlyp+Snsh3GdfizGCXm/twCd7djaDTrdUiqOyh/BlgMZs= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM9PR04MB8291.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(186003)(55016003)(316002)(38100700002)(44832011)(54906003)(7696005)(6916009)(86362001)(26005)(53546011)(122000001)(2906002)(6506007)(64756008)(66446008)(71200400001)(66476007)(66946007)(4326008)(76116006)(52536014)(33656002)(83380400001)(8936002)(38070700005)(8676002)(9686003)(508600001)(5660300002)(66556008)(80162009); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NVdmKzVwcXZPa1ZwYmdlNWpwT3JCbG13VUo2V2NoMFRrU1hiOSt3QkZDNWxL?= =?utf-8?B?UW9uVHM4TnlGdUVnMSsvMUJzVU0xQWlFMGdUeFI0L1NpbldBNjJ6eWdjYjBS?= =?utf-8?B?L1V2Lzgwb2ZBNGFMWVJ3Nk0zZHRPNlgweU5jSXo3OUZXby93MTQyTnN6cnRt?= =?utf-8?B?NGdsbUduQ3NhY0IvMzMvSWhwamwxNEhXazRuT3Z2ZkNWYmxpTm52dGJ5L1Mz?= =?utf-8?B?V2VaaFVobW44eGJYVVNucW1rbHZ1ZzRjZXdWelhYTXhaSUMyK29FeWs4MG50?= =?utf-8?B?K0s1RitaUkhCbEM4eVVTQTBkSHo2L1NubVR4SGJlcFQ0SFg3TE9oNEtHZWdZ?= =?utf-8?B?cUU0cXRhOVF0L2NsejBmVnU2NlorSmMyc2ZDVEViRXpkM1VJSFNad2FFbGpy?= =?utf-8?B?KzdnTTJ2NWNTK0xiNGZzKzgrbFRGeUtDeXFxOVJnR3VlWFNZNC9hb2RxenN4?= =?utf-8?B?S2VhOUVvVGxZcG5jNjRGRUc1Y05INmJrc213NlYxdTFtVVhTYXNTeDdOcjc4?= =?utf-8?B?L1lMQnM5T2UzbDI1TXN5K0pYSk5VTmZIN0pTYmFkSUthWU5PQlBOSDlJbW5o?= =?utf-8?B?Y1E2UTh0eXlWU004OHMvcWF4L0hwSWFEczhsZkl1eG1BQklQSFJUYko5bWlK?= =?utf-8?B?S05KekNUakhZR3drVG5sOUNabDlJN05GSVNqcTFYbDc2dmRJcnV0Qy9EazE2?= =?utf-8?B?dnZNeUdGYWtuRy9QTFRIK3RRbFFvVjErNEVUbkdLNytaZjNFWVNOazVqZFJq?= =?utf-8?B?RHVDemx4L085ci9uZTNXZm5RWEZRa1lvbFlsbmJ2MHhodVZmcjJJWTVYY056?= =?utf-8?B?MTk2bDZqTElqUVF1SjEzRFFzNVBIaStsRmp4aU5YSnhyTTRxM0JCeTNxUlZt?= =?utf-8?B?ME5leGllK2FtOC9haUh4MnkyVXBEVzhGblZyVjRjWWNGSDh6MDM3S3VRSnZI?= =?utf-8?B?SUhzTE1FWDE1MmVTZDAwcEMwNTJWbDlqTGEyemMwWktFeUlpMmpPQi81QklK?= =?utf-8?B?ZXVvbWlTd3g5R05zcHF4bHBNWGRJZ1hIeGZ5ZHpMZ1cyVG04dXJIK25BMk1R?= =?utf-8?B?V0lyeXl2bms5Y0RvYU93amExdE1pUDFTVElaZmJta3FTV09LQzFCTVJOVFhS?= =?utf-8?B?eVVsOEpQeUpIUEV0ZlZhdXhNKzVsUTBmNDZDUndKUllTY1g3Z3F6b0lNdnZU?= =?utf-8?B?enJ0SERWQktVWGR0cFE1c3FZZVJEb3RSUVZnRlJPeDJYbHUydHkxamFZYkpC?= =?utf-8?B?cHd5NWF0YUVDWmtrOXozN3ZmQ2lwMFk2aVVHNUhHZWFueDZmVFNNc1EzZ09r?= =?utf-8?B?V3dDTUxNOEFkUjZGNHZtK1lsaEhEcCs1M3lUcGttNGdVQlpxb2FRNGFmUktR?= =?utf-8?B?dUlzZEJ1VzNMU3Y5aFN0NFlJK2ozczJxZWEwdnZRSXBWQVFKMGRlNi9Sa1NT?= =?utf-8?B?L2xKRTE5OEx1UU5wbDYwVE00dnRKV2s1alpPWUpJUUxmUVlyMkM5TklqaW0v?= =?utf-8?B?KzFjM2hldFkwZS9tamNlZWpMNzVyMjk0SUg0SGtjRlVrU3NJN1JlUkFRejFT?= =?utf-8?B?VlVES1FzYi9jR1BnZFE2bW5sdjdHUmZzY3NsUTd5OTZ0UzdNQXg4M1RydHRl?= =?utf-8?B?TnBieThFOEZwcmw5TTAzNmlvZjYxbnFXQVZZcll2UHhKQVNESENoR3REV0NS?= =?utf-8?B?TUduNFl0dk1QbGdFa0ZyamNlbVVSdlFvTDVybmIzS0d2eG1kNFo5NkxWU1Jy?= =?utf-8?B?UE5vejJkdk55ODNxc2VpY2o0U1dMUlowVHBZTFA2UDZnWFRCeVZQT05GeFdG?= =?utf-8?B?UVVhWXNGOHdvYU81S00wVWhmaTJab2FRZTM3Mm5yMW1KQ3FYR2tUck05TXZ1?= =?utf-8?B?Z1RWTEVhaGR1anpHNFNBRDZ0V1NkcDhQNGVLbnhaMXNTN1lOcWdMRzFQMURv?= =?utf-8?Q?TIgsqAAhBZR2eZ0lU0d4iZ0/15bUWeIM?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: silk.us X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8291.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 09571f88-d4a7-474b-0dfb-08da0dacd423 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Mar 2022 15:41:57.0012 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4a3c5477-cb0e-470b-aba6-13bd9debb76b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: GwMkKrnC1UfA0F8cmX5edPdfAb/K7Hax1YB2OIQPBr3skgLa2xUR/IL6KzLtWf9b4UP1OLB6OliFCMZx5xNXEg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB4882 X-Spam-Status: No, score=1.4 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, KAM_INFOUSMEBIZ, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.4 X-Spam-Level: * X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-help@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-help mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Mar 2022 15:42:04 -0000 VGh4IHN1cmUhDQpJIHdpbGwgc3RhcnQgYSBkaXNjdXNzaW9uIG9uIHRoZSBBbHBoYSBzb29uLg0K U28geW91IG1lYW4gdGhhdCAgaWYgKGF0b21pY19sb2FkX3JlbGF4ZWQgKCZyd2xvY2stPl9fZGF0 YS5fX2N1cl93cml0ZXIpDQotICAgICAgPT0gVEhSRUFEX0dFVE1FTSAoVEhSRUFEX1NFTEYsIHRp ZCkpDQpVc2VkIHRoZSBUSFJFQURfR0VUTUVNIChUSFJFQURfU0VMRiwgdGlkKSkgZm9yIHByb3Rl Y3Rpb24gcmVnYXJkaW5nIHRoZSBsb2FkX3JlbGVheCA/DQoNCllvdSBtYXkgaGF2ZSBhIHN1Z2dl c3Rpb24gb24gaG93IHRvIG1ha2UgYXN5bmMgcHJvZ3JhbW1pbmcgd2l0aCByd19sb2NrPyANCg0K VGh4DQpEYXZpZCANCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEFkaGVtZXJ2 YWwgWmFuZWxsYSA8YWRoZW1lcnZhbC56YW5lbGxhQGxpbmFyby5vcmc+IA0KU2VudDogTW9uZGF5 LCBNYXJjaCAyMSwgMjAyMiAxMDoyMCBQTQ0KVG86IERhdmlkIE1vemVzIDxkYXZpZC5tb3plc0Bz aWxrLnVzPg0KQ2M6IENocmlzdGlhbiBIb2ZmIDxjaHJpc3RpYW5faG9mZkBnbXgubmV0PjsgRmxv cmlhbiBXZWltZXIgPGZ3ZWltZXJAcmVkaGF0LmNvbT47IGxpYmMtaGVscEBzb3VyY2V3YXJlLm9y ZzsgQ2FybG9zIE8nRG9uZWxsIDxjYXJsb3NAcmVkaGF0LmNvbT4NClN1YmplY3Q6IFJlOiByd2xv Y2sgZGlmZmVyZW50IGJlaGF2aW9yIG9uIGdsaWJjIDIuMjggdGhlbiBvbiBwcmV2aW91cyB2ZXJz aW9ucw0KDQpPbiAyMS8wMy8yMDIyIDE2OjQ2LCBEYXZpZCBNb3plcyB3cm90ZToNCj4gDQo+IFRo YW5rcyBBZGhlbWVydmFsLA0KPiBGb3IgdGhlIHN1Z2dlc3Rpb24hDQo+IMKgDQo+IMKgSSBzdWdn ZXN0IHRvIHJlbW92ZSB0aGUgY2hlY2sganVzdCBvbiB0aGUgdW5sb2NrIGZ1bmN0aW9uLkkgdGVz dGVkIGl0IHdpdGggdmVyeSBoaWdoIGxvYWQgYW5kIHdpdGggYXBwbGljYXRpb24gd2l0aCAzayBh Y3RpdmUgdGhyZWFkcy7CoA0KPiDCoENhbiB5b3Ugb24gYSBjYXNlIG9yIGJ1ZyhkZWRsb2NrIG9y IHNvbWV0aGluZykgdGhhdCByZW1vdmluZyB0aElzIGNoZWNrIHdpbGwgZXhwb3NlPw0KDQpJIGFt IG5vIHN1cmUsIHNvIEkgd291bGQgc3VnZ2VzdCB5b3UgdG8gbWF5YmUgc3RhcnQgYSBkaXNjdXNz aW9uIG9uIGxpYmMtYWxwaGEuDQpIb3dldmVyIF9fcHRocmVhZF9yd2xvY2tfd3J1bmxvY2sgYW5k IF9fcHRocmVhZF9yd2xvY2tfcmR1bmxvY2sgaGF2ZSBkaWZmZXJlbnQNCnNlbWFudGljIGFsbG93 aW5nIHVubG9ja2luZyB3cml0ZSBsb2NrcyBvbiBkaWZmZXJlbnQgdGhyZWFkcyB3aWxsIHJlcXVp cmUgYQ0KbG90IG9mIGFuYWx5c2lzIG9uIHdoeSBpdCB3b3VsZCB0cmlnZ2VyIGFueSBtb3JlIHJl Z3Jlc3Npb24gKGFuZCBzb3JyeSwgYnV0IA0Kc3RhdGluZyBpdCB3b3JrcyBvbiBvdXIgZW52aXJv bm1lbnQgaXMgbm90IHN1ZmZpY2UpLg0KDQo+IFRoeA0KPiBEYXZpZA0KPj4gT24gTWFyIDIxLCAy MDIyLCBhdCA3OjAyIFBNLCBBZGhlbWVydmFsIFphbmVsbGEgPGFkaGVtZXJ2YWwuemFuZWxsYUBs aW5hcm8ub3JnPiB3cm90ZToNCj4+DQo+PiDvu79BcyBGbG9yaWFuIGhhcyBwdXQsIHRoaXMgaXMg ZXNzZW50aWFsbHkgYSBtaXN1c2Ugb2YgdGhlIEFQSSBoYXMgYWx3YXlzIGJlZW4NCj4+IHVuZGVm aW5lZC4gwqBUaGUgcndsb2NrIGltcGxlbWVudGF0aW9uIHVzZXMgwqBfX2N1cl93cml0ZSB0byBi b3RoIG1ha2UgYSBmYXN0DQo+PiBkZWFkbG9jayBjaGVjayBhbmQgdG8ga25vdyB3aGV0aGVyIHRv IGhhbmRsZSB0aGUgbG9jayBhcyBhIHdyaXRlciBvciByZWFkZXINCj4+IG9uZS4gwqBUaGUgZm9y bWVyIGlzIGEgaW1wbGVtZW50YXRpb24gZGV0YWlsIHRoYXQgd2UgbWlnaHQgY2hhbmdlIChhbHRo b3VnaA0KPj4gaXQgaXMgdXNlZnVsIGluIHNvbWUgY2FzZSksIGJ1dCB0byBoYW5kbGUgdGhlIGZv cm1lciB3aWxsIG1vc3QgbGlrZWx5IHRvDQo+PiByZWZhY3RvciBhbmQgY2hhbmdlIHRoZSByZGxv Y2sgYWxnb3JpdGhtIChqdXN0IHJlbW92aW5nIHRoZSBjaGVjayBhcyB5b3UgYXJlDQo+PiBwcm9w b3NpbmcgaXMgbm90IHN1ZmZpY2UpLg0KPj4NCj4+IFNpbmNlIGl0IGlzIG5vdCBhIGJ1ZyBpbiBv dXIgaW1wbGVtZW50YXRpb24sIEkgdGhpbmsgeW91IHdpbGwgbmVlZCB0byBkaXNjdXNzDQo+PiBp dCBmdXJ0aGVyIG9uIHRoZSBsaWJjLWFscGhhIHRvIHNlZSBpZiBvdGhlciBhcmUgd2lsbGluZyB0 byBhY3R1YWxseSBtYWtlDQo+PiB0aGlzIGNoYW5nZS4gSSBmb3Jlc2VlIHRoYXQgdGhlIGFsZ29y aXRobSBjaGFuZ2Ugd29uJ3QgYmUgc2ltcGxlIHRvIGtlZXANCj4+IGludGVyZmFjZSByZXF1aXJl bWVudHMgYW5kIGFsbG93IHRoZSBzcGVjaWZpYyBjYXNlIHlvdSBhcmUgYXNraW5nLiBJbiBmYWN0 DQo+PiBJIHRoaW5rIGl0IG1pZ2h0IG5vdCBiZSBhY3R1YWxseSBwb3NzaWJsZSB3aXRob3V0IGNo YW5nZSB0aGUgcndsb2NrIHNlbWFudGljDQo+PiAobm90IHN1cmUgdGhvdWdoKS4NCj4+DQo+PiBD YXJsb3MgaGFzIGZpeGVkIHNvbWUgaXNzdWUgb24gdGhlIHJ3bG9jaywgaGUgbWlnaHQgaGF2ZSBz b21lIGNvbW1lbnRzLg0KPj4NCj4+IE9uIDIxLzAzLzIwMjIgMTE6MDEsIERhdmlkIE1vemVzIHdy b3RlOg0KPj4+IEhlbGxvIENocmlzdGFpbiwNCj4+PiBZZXMsIFRocmVhZCBTYW5pdGl6ZXIgY2F1 Z2h0IGl0Lg0KPj4+IEhvd2V2ZXIsIHdlIGNhbid0IHJ1biBpdCBhbGwgdGhlIHRpbWUgb24gdGhl IHByb2R1Y3Rpb24gY29kZS4NCj4+PiBXZSBuZWVkIHRvIG1ha2UgYSBzbWFsbCBjaGFuZ2Ugb2Yg dGhlIHVubG9jayBjb2RlIHRvIGhhdmUgYXN5bmMgcHJvZ3JhbWluZyBhbmQgYmFja3dhcmQgY29t cGF0aWJpbGl0eSBmb3Igb2xkZXIgY29kZS4NCj4+Pg0KPj4+IFRoeA0KPj4+IERhdmlkIMKgDQo+ Pj4gwqAgwqANCj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4+IEZyb206IENocmlz dGlhbiBIb2ZmIDxjaHJpc3RpYW5faG9mZkBnbXgubmV0Pg0KPj4+IFNlbnQ6IE1vbmRheSwgTWFy Y2ggMjEsIDIwMjIgODoyMCBBTQ0KPj4+IFRvOiBEYXZpZCBNb3plcyA8ZGF2aWQubW96ZXNAc2ls ay51cz47IEZsb3JpYW4gV2VpbWVyIDxmd2VpbWVyQHJlZGhhdC5jb20+DQo+Pj4gQ2M6IGxpYmMt aGVscEBzb3VyY2V3YXJlLm9yZw0KPj4+IFN1YmplY3Q6IFJlOiByd2xvY2sgZGlmZmVyZW50IGJl aGF2aW9yIG9uIGdsaWJjIDIuMjggdGhlbiBvbiBwcmV2aW91cyB2ZXJzaW9ucw0KPj4+DQo+Pj4g SGFsbG8gRGF2aWQsDQo+Pj4NCj4+PiBkaWQgeW91IHRyeSB0byBydW4geW91ciBwcm9ncmFtIHdp dGggSGVsZ3JpbmQgYWxyZWFkeT8gSGVsZ3JpbmQgd2FzDQo+Pj4gZGVzaWduZWQgdG8gY2F0Y2gg cHJvYmxlbXMgbGlrZSB0aGlzLiBNYXliZSBUaHJlYWQgU2FuaXRpemVyIHdvdWxkIGFsc28NCj4+ PiBkZXRlY3QgdGhlIGlzc3VlLg0KPj4+DQo+Pj4NCj4+PiBCZXN0IHJlZ2FyZHMsDQo+Pj4NCj4+ PiDCoMKgIENocmlzdGlhbg0KPj4+DQo+Pj4gT24gMy8yMC8yMiA1OjQ0IFBNLCBEYXZpZCBNb3pl cyB3cm90ZToNCj4+Pj4gSGksDQo+Pj4+IFdoZXJlIGFyZSB3ZSB3aXRoIHRoaXM/DQo+Pj4+IEFs c28sIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoZSBfX3B0aHJlYWRfcndsb2NrX3Vu bG9jayDCoGlzIHByb2JsZW1hdGljLg0KPj4+PiBPbiB0aGUgb25lIGhhbmQsIGl0IGNoZWNrcyB0 aGUgQVBJIGFncmVlbWVudC4gSG93ZXZlciwgb24gdGhlIGNhc2Ugb2YgdmlvbGF0aW9uLCB0aGUg dXNlciBkb24ndCBoYXZlIGFueSBpbmR1Y3Rpb24NCj4+Pj4gQW5kIGZ1bmN0aW9uIHJldHVybiBP Sw0KPj4+PiBTZWUgZXhhbXBsZSBjb2RlIGJlbG93Og0KPj4+Pg0KPj4+Pg0KPj4+PiBzdHJ1Y3Qg dGhyZWFkSW5mb3sNCj4+Pj4gwqDCoMKgwqBwdGhyZWFkX3QqIHRpZDsNCj4+Pj4gwqDCoMKgwqBw dGhyZWFkX3J3bG9ja190ICpyd2xvY2s7DQo+Pj4+IH07DQo+Pj4+DQo+Pj4+IHZvaWQgKmxvY2tl clRocmVhZEZ1bmN0aW9uKHZvaWQgKnZhcmdwKQ0KPj4+PiB7DQo+Pj4+IMKgwqDCoMKga21fc3Rh dHVzIHN0YXQgPSBLTV9PSzsNCj4+Pj4gwqDCoMKgwqBzdHJ1Y3QgdGhyZWFkSW5mbyogVGluZm8g PSAoc3RydWN0IHRocmVhZEluZm8qKXZhcmdwOw0KPj4+Pg0KPj4+PiDCoMKgwqDCoGRvIHsNCj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoHN0YXQgPSBwdGhyZWFkX3J3bG9ja190cnl3cmxvY2soVGluZm8t PnJ3bG9jayk7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqBpZiAoS01fT0sgPT0gc3RhdCkgew0KPj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwcmludGYoIltJTkZPXSAtIEZJUlNUIHRocmVhZCAw eCV4IGxvY2tlZCAlcCBcbiIsICooVGluZm8tPnRpZCksIFRpbmZvLT5yd2xvY2spOw0KPj4+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzbGVlcCgxMCk7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHN0YXQgPSBwdGhyZWFkX3J3bG9ja191bmxvY2soVGluZm8tPnJ3bG9jayk7DQo+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChLTV9PSyA9PSBzdGF0KSB7DQo+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHJpbnRmKCJbSU5GT10gRklSU1QgdGhyZWFkIDB4 JXggcmVsZWFzZWQgJXAgXG4iLCAqKFRpbmZvLT50aWQpLCBUaW5mby0+cndsb2NrKTsNCj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzbGVlcCgxKTsNCj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4+PiDCoMKgwqDCoH13 aGlsZShLTV9PSyAhPSBzdGF0KTsNCj4+Pj4gwqDCoMKgwqByZXR1cm4gTlVMTDsNCj4+Pj4gfQ0K Pj4+Pg0KPj4+Pg0KPj4+PiB2b2lkICpzZWNvbmRUaHJlYWRGdW5jdGlvbih2b2lkICp2YXJncCkN Cj4+Pj4gew0KPj4+PiDCoMKgwqDCoGttX3N0YXR1cyBzdGF0ID0gS01fT0s7DQo+Pj4+IMKgwqDC oMKgc3RydWN0IHRocmVhZEluZm8qIFRpbmZvID0gKHN0cnVjdCB0aHJlYWRJbmZvKil2YXJncDsN Cj4+Pj4NCj4+Pj4gwqDCoMKgwqBzbGVlcCg1KTsNCj4+Pj4gwqDCoMKgwqBkbyB7DQo+Pj4+IMKg wqDCoMKgwqDCoMKgwqBzdGF0ID0gcHRocmVhZF9yd2xvY2tfdW5sb2NrKFRpbmZvLT5yd2xvY2sp Ow0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgaWYgKEtNX09LID09IHN0YXQpIHsNCj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcHJpbnRmKCJbSU5GT10gU0VDT05EIHRocmVhZCAweCV4IHJlbGVh c2VkICVwIFxuIiwgKihUaW5mby0+dGlkKSwgVGluZm8tPnJ3bG9jayk7DQo+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHNsZWVwKDEpOw0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlDQo+ Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHByaW50ZigiW0lORk9dIFNFQ09ORCB0aHJlYWQg MHgleCB0cnlfdG9fcmVsZWFzZWQgJXAgZXJybyBzdGF0dXMgaXM6ICVkIFxuIiwgKihUaW5mby0+ dGlkKSwgVGluZm8tPnJ3bG9jayxzdGF0KTsNCj4+Pj4NCj4+Pj4gwqDCoMKgwqB9d2hpbGUoS01f T0sgIT0gc3RhdCk7DQo+Pj4+IMKgwqDCoMKgcmV0dXJuIE5VTEw7DQo+Pj4+IH0NCj4+Pj4NCj4+ Pj4gdm9pZCAqdGhpcmRUaHJlYWRGdW5jdGlvbih2b2lkICp2YXJncCkNCj4+Pj4gew0KPj4+PiDC oMKgwqDCoGttX3N0YXR1cyBzdGF0ID0gS01fT0s7DQo+Pj4+IMKgwqDCoMKgc3RydWN0IHRocmVh ZEluZm8qIFRpbmZvID0gKHN0cnVjdCB0aHJlYWRJbmZvKil2YXJncDsNCj4+Pj4NCj4+Pj4gwqDC oMKgwqBzbGVlcCgyKTsNCj4+Pj4gwqDCoMKgwqBkbyB7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqBz dGF0ID0gcHRocmVhZF9yd2xvY2tfdHJ5d3Jsb2NrKFRpbmZvLT5yd2xvY2spOw0KPj4+PiDCoMKg wqDCoMKgwqDCoMKgaWYgKEtNX09LID09IHN0YXQpIHsNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcHJpbnRmKCJbSU5GT10gVEhJUkQgdGhyZWFkIDBYJXggbG9ja2VkICV4XG4iLCAqKFRp bmZvLT50aWQpLCBUaW5mby0+cndsb2NrKTsNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg c2xlZXAoNSk7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqB9DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqBl bHNlIHsNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHJpbnRmKCJbRVJST1JdOiBUSElS RCB0aHJlYWQgMHgleCBmYWlsZWQgTG9ja2luZyAlcCBzdGF0dXMgaXMgJWRcbiIsICooVGluZm8t PnRpZCksIFRpbmZvLT5yd2xvY2ssc3RhdCk7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHNsZWVwKDEpOw0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4+PiDCoMKgwqDCoH13aGlsZShL TV9PSyAhPSBzdGF0KTsNCj4+Pj4gwqDCoMKgwqByZXR1cm4gTlVMTDsNCj4+Pj4gfQ0KPj4+Pg0K Pj4+PiB2b2lkIG1haW4oKQ0KPj4+PiB7DQo+Pj4+IMKgwqDCoMKga21fc3RhdHVzIHN0YXQgPSBL TV9PSzsNCj4+Pj4gwqDCoMKgwqAvKiBrbV9yd2xvY2sgbG9jazsgKi8NCj4+Pj4gwqDCoMKgwqBw dGhyZWFkX3J3bG9ja190IHJ3bG9jazsNCj4+Pj4gwqDCoMKgwqBwdGhyZWFkX3QgbG9ja2VyVGlk ID0gMCwgcmVsZWFzZVRpZCA9IDAsIHRoaXJkVGlkPTA7DQo+Pj4+IMKgwqDCoMKgc3RydWN0IHRo cmVhZEluZm8gZmlyc3RUaW5mbywgc2Vjb25kVGluZm8sIHRoaXJkVGluZm87DQo+Pj4+DQo+Pj4+ IMKgwqDCoC8qIHN0YXQgPSBrbV9yd2xvY2tfaW5pdCgmcndsb2NrLCBLTV9UUlVFKTsgKi8NCj4+ Pj4gwqDCoMKgwqBzdGF0ID0gcHRocmVhZF9yd2xvY2tfaW5pdCAoJnJ3bG9jaywgTlVMTCk7DQo+ Pj4+DQo+Pj4+IMKgwqDCoMKgaWYgKEtNX09LID09IHN0YXQpIHsNCj4+Pj4gwqDCoMKgwqDCoMKg wqDCoHByaW50ZigicmVhZFxcd3JpdGVyIGxvY2sgaW5pdGlhbGl6ZWRcbiIpOw0KPj4+PiDCoMKg wqDCoMKgwqDCoMKgcHJpbnRmKCJCZWZvcmUgVGhyZWFkXG4iKTsNCj4+Pj4NCj4+Pj4gwqDCoMKg wqDCoMKgwqDCoGZpcnN0VGluZm8udGlkIMKgPSAmbG9ja2VyVGlkOw0KPj4+PiDCoMKgwqDCoMKg wqDCoMKgZmlyc3RUaW5mby5yd2xvY2sgPSAmcndsb2NrOw0KPj4+PiDCoMKgwqDCoMKgwqDCoMKg c2Vjb25kVGluZm8udGlkIMKgPSAmcmVsZWFzZVRpZDsNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoHNl Y29uZFRpbmZvLnJ3bG9jayA9ICZyd2xvY2s7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqB0aGlyZFRp bmZvLnRpZCDCoD0gJnRoaXJkVGlkOw0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgdGhpcmRUaW5mby5y d2xvY2sgPSAmcndsb2NrOw0KPj4+Pg0KPj4+Pg0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgcHRocmVh ZF9jcmVhdGUoJmxvY2tlclRpZCwgTlVMTCwgbG9ja2VyVGhyZWFkRnVuY3Rpb24sICZmaXJzdFRp bmZvKTsNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoHB0aHJlYWRfY3JlYXRlKCZyZWxlYXNlVGlkLCDC oE5VTEwsIHNlY29uZFRocmVhZEZ1bmN0aW9uLCAmc2Vjb25kVGluZm8pOw0KPj4+PiDCoMKgwqDC oMKgwqDCoMKgcHRocmVhZF9jcmVhdGUoJnRoaXJkVGlkLCBOVUxMLCB0aGlyZFRocmVhZEZ1bmN0 aW9uLCAmdGhpcmRUaW5mbyk7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqBwcmludGYoIkFmdGVyIFRo cmVhZCAleFxuIiwgbG9ja2VyVGlkKTsNCj4+Pj4NCj4+Pj4gcHRocmVhZF9qb2luKGxvY2tlclRp ZCwgTlVMTCk7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqBwdGhyZWFkX2pvaW4ocmVsZWFzZVRpZCwg TlVMTCk7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqBwdGhyZWFkX2pvaW4odGhpcmRUaWQsIE5VTEwp Ow0KPj4+Pg0KPj4+Pg0KPj4+Pg0KPj4+PiB0aGUgb3V0cHV0IHdlIHNhdyBpcyB0aGlzOg0KPj4+ Pg0KPj4+Pg0KPj4+PiB0aGUgb3VwdXQgd2Ugc2F3IGlzIHRoaXM6DQo+Pj4+DQo+Pj4+IFtyb290 QFJvY2t5ODVNb3plcyB0aHJlYWRfbG9ja10jIC4vcndfdGVzdA0KPj4+PiByZWFkXHdyaXRlciBs b2NrIGluaXRpYWxpemVkDQo+Pj4+IEJlZm9yZSBUaHJlYWQNCj4+Pj4gW0lORk9dIC0gRklSU1Qg dGhyZWFkIDB4NDYxZjcwMCBsb2NrZWQgMHg3ZmZjZGEwNTNjYzANCj4+Pj4gQWZ0ZXIgVGhyZWFk IDQ2MWY3MDANCj4+Pj4gW0VSUk9SXTogVEhJUkQgdGhyZWFkIDB4MzYxZDcwMCBmYWlsZWQgTG9j a2luZyAweDdmZmNkYTA1M2NjMCBzdGF0dXMgaXMgMTYgwqAtPiBmaXJzdCB0aHJlYWQgdGFrZSB0 aGUgcndsb2NrDQo+Pj4+IFtFUlJPUl06IFRISVJEIHRocmVhZCAweDM2MWQ3MDAgZmFpbGVkIExv Y2tpbmcgMHg3ZmZjZGEwNTNjYzAgc3RhdHVzIGlzIDE2DQo+Pj4+IFtFUlJPUl06IFRISVJEIHRo cmVhZCAweDM2MWQ3MDAgZmFpbGVkIExvY2tpbmcgMHg3ZmZjZGEwNTNjYzAgc3RhdHVzIGlzIDE2 DQo+Pj4+IFtJTkZPXSBTRUNPTkQgdGhyZWFkIDB4M2UxZTcwMCByZWxlYXNlZCAweDdmZmNkYTA1 M2NjMCDCoMKgLT4gU2Vjb25kIHRocmVhZCB1bmxvY2sgdGhlIHJ3bG9jayAtLSA+IGFuZCBnZXQg T0shIQ0KPj4+PiBbRVJST1JdOiBUSElSRCB0aHJlYWQgMHgzNjFkNzAwIGZhaWxlZCBMb2NraW5n IDB4N2ZmY2RhMDUzY2MwIHN0YXR1cyBpcyAxNg0KPj4+PiBbRVJST1JdOiBUSElSRCB0aHJlYWQg MHgzNjFkNzAwIGZhaWxlZCBMb2NraW5nIDB4N2ZmY2RhMDUzY2MwIHN0YXR1cyBpcyAxNg0KPj4+ PiBbRVJST1JdOiBUSElSRCB0aHJlYWQgMHgzNjFkNzAwIGZhaWxlZCBMb2NraW5nIDB4N2ZmY2Rh MDUzY2MwIHN0YXR1cyBpcyAxNg0KPj4+PiBbRVJST1JdOiBUSElSRCB0aHJlYWQgMHgzNjFkNzAw IGZhaWxlZCBMb2NraW5nIDB4N2ZmY2RhMDUzY2MwIHN0YXR1cyBpcyAxNg0KPj4+PiBbRVJST1Jd OiBUSElSRCB0aHJlYWQgMHgzNjFkNzAwIGZhaWxlZCBMb2NraW5nIDB4N2ZmY2RhMDUzY2MwIHN0 YXR1cyBpcyAxNg0KPj4+PiBbSU5GT10gRklSU1QgdGhyZWFkIDB4NDYxZjcwMCByZWxlYXNlZCAw eDdmZmNkYTA1M2NjMA0KPj4+PiBbRVJST1JdOiBUSElSRCB0aHJlYWQgMHgzNjFkNzAwIGZhaWxl ZCBMb2NraW5nIDB4N2ZmY2RhMDUzY2MwIHN0YXR1cyBpcyAxNg0KPj4+Pg0KPj4+Pg0KPj4+PiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4+PiBGcm9tOiBEYXZpZCBNb3plcw0KPj4+PiBT ZW50OiBTdW5kYXksIE1hcmNoIDEzLCAyMDIyIDEyOjIzIFBNDQo+Pj4+IFRvOiBGbG9yaWFuIFdl aW1lciA8ZndlaW1lckByZWRoYXQuY29tPg0KPj4+PiBDYzogbGliYy1oZWxwQHNvdXJjZXdhcmUu b3JnDQo+Pj4+IFN1YmplY3Q6IFJFOiByd2xvY2sgZGlmZmVyZW50IGJlaGF2aW9yIG9uIGdsaWJj IDIuMjggdGhlbiBvbiBwcmV2aW91cyB2ZXJzaW9ucw0KPj4+Pg0KPj4+PiBUaHggRmxvcmluLA0K Pj4+Pg0KPj4+Pg0KPj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4+PiBGcm9tOiBG bG9yaWFuIFdlaW1lciA8ZndlaW1lckByZWRoYXQuY29tPg0KPj4+PiBTZW50OiBGcmlkYXksIE1h cmNoIDExLCAyMDIyIDM6NTkgUE0NCj4+Pj4gVG86IERhdmlkIE1vemVzIDxkYXZpZC5tb3plc0Bz aWxrLnVzPg0KPj4+PiBDYzogbGliYy1oZWxwQHNvdXJjZXdhcmUub3JnDQo+Pj4+IFN1YmplY3Q6 IFJlOiByd2xvY2sgZGlmZmVyZW50IGJlaGF2aW9yIG9uIGdsaWJjIDIuMjggdGhlbiBvbiBwcmV2 aW91cyB2ZXJzaW9ucw0KPj4+Pg0KPj4+PiAqIERhdmlkIE1vemVzOg0KPj4+Pg0KPj4+Pj4gT24g dGhlIHByZXZpb3VzIHZlcnNpb24gb2YgR2xpYmMgKGJlZm9yZSB0aGUgY29tbWl0KSBXZSBjb3Vs ZCByZWxlYXNlDQo+Pj4+PiB3cml0ZSBsb2NrIHdpdGggZGlmZmVyZW50IHRocmVhZCBhcyB0aGUg b25lIHRoYXQgb3duZWQgdGhlIGxvY2sgKElmIHdlDQo+Pj4+PiBsaWtlKSAuDQo+Pj4+IFNvcnJ5 LCB0aGlzIG1pc3VzZSBvZiB0aGUgQVBJIGhhcyBhbHdheXMgYmVlbiB1bmRlZmluZWQgYWNjb3Jk aW5nIHRvDQo+Pj4+IFBPU0lYICjigJxSZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgdGhlIHJlYWQt d3JpdGUgbG9jayByd2xvY2sgaXMgbm90IGhlbGQNCj4+Pj4gYnkgdGhlIGNhbGxpbmcgdGhyZWFk LuKAnSkuDQo+Pj4+DQo+Pj4+Pj4gQ29ycmVjdCwgYnV0IHByYWN0aWNhbGx5IHdlIGNhbiBkbyBp dCBvbiB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5Lg0KPj4+Pj4+IERvIHlvdSBrbm93IGlmIHRo aXMgImlmIiBzb2x2ZWQgc29tZSBzeW5jaHJvbml6YXRpb24gaXNzdWUgb3IganVzdCBlbmZvcmNl ZCB0aGUgdW5kZWZpbmVkIMKgQVBJPw0KPj4+Pj4gVGhpcyBpcyBoZWxwIHZlcnkgbXVjaCBmb3Ig YXN5bmMgcHJvZ3JhbSB0aGF0IGhhcyBhIG1hbnkgdGhyZWFkcyB0aGF0DQo+Pj4+PiBjb21tdW5p Y2F0ZSB3aXRoIHNvbWUgdGFyZ2V0LiDCoEFuZCB3ZSBsaWtlIHRvIGRlZmluZSBhIGNhbGwgYmFj aw0KPj4+Pj4gZnVuY3Rpb24gaW5zdGVhZCBvZiBibG9ja2luZyBvbiBhaW8gdGhyZWFkIHRoYXQg c2VuZCB0aGUgZGF0YSBpbiBvcmRlcg0KPj4+Pj4gdG8gcmVsZWFzZSB0aGUgcndsb2NrLnRoaXMg aW1wcm92ZXMgdGhlIHBlcmZvcm1hbmNlIGRyYW1hdGljYWxseSAuDQo+Pj4+IENvdWxkIHlvdSB1 c2UgYSBkaWZmZXJlbnQgc3luY2hyb25pemF0aW9uIG9iamVjdCAocGVyaGFwcyBhIGNvbmRpdGlv bg0KPj4+PiB2YXJpYWJsZSk/DQo+Pj4+DQo+Pj4+Pj4gSWYgd2UgdXNlIGEgZGlmZmVyZW50IHN5 bmNocm9uaXphdGlvbiBvYmplY3QgbGlrZSBzZW1hcGhvcmVzLCBjb25kaXRpb24gdmFyaWFibGUg KGJ5IHRoZSB3YXkgdGhleSB1c2UgbXV0ZXggdW5kZXIgdGhlIHNhbWUgQVBJIGFncmVlbWVudCks IMKgd2Ugd2lsbCBuZWVkIHRvIHdyaXRlIHNlbGYgcndsb2NrICwgd2hpY2ggaGFzIGxlc3MgcGVy Zm9ybWFuY2UgdGhhbiBvdGhlciB1bmRlZmluZWQgc3RhdGVzLg0KPj4+Pj4+IElmIHdlIGxpa2Ug dG8ga2VlcCB0aGUgQVBJIGFncmVlbWVudCwgd2h5IG5vdCBkZWZpbmUgdGhlIGRpZmZlcmVudCBh c3luYyBwcm9ncmFtbWluZyB1bmxvY2sgZnVuY3Rpb25zPw0KPj4+PiBUaGFua3MNCj4+Pj4gRmxv cmlhbg0KPj4+Pg0KPj4+PiBUaHgNCj4+Pj4gRGF2aWQNCg==