From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C398C4338F for ; Tue, 10 Aug 2021 06:19:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E6E8760EE7 for ; Tue, 10 Aug 2021 06:19:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237751AbhHJGTx (ORCPT ); Tue, 10 Aug 2021 02:19:53 -0400 Received: from mout.gmx.net ([212.227.17.20]:56005 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237312AbhHJGTv (ORCPT ); Tue, 10 Aug 2021 02:19:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1628576358; bh=HY4h3sC1kqrCmY9w5GDOKZAXmj3iuDblIFebtBcLIiE=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=kPOSSY8hOAfP4j+Hm0L+m3VCVA+63QCGUENP+yMKRmegQFpOos+/ytAVVRN3SAJNc Cj2MlsxTOyVHqban9LAmn7askgN1pPVlHs5JyHxJ4R+5lGxnYdmnymq1B37BZfI60T 39evflXQX7+OWmRGParEEOlP/3NLIl1a49d9qoto= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [0.0.0.0] ([149.28.201.231]) by mail.gmx.net (mrgmx104 [212.227.17.174]) with ESMTPSA (Nemesis) id 1N8XU1-1n92G413rN-014Pgo; Tue, 10 Aug 2021 08:19:17 +0200 Subject: Re: [PATCH v5 09/11] btrfs: defrag: use defrag_one_cluster() to implement btrfs_defrag_file() To: Dan Carpenter , kbuild@lists.01.org, Qu Wenruo , linux-btrfs@vger.kernel.org Cc: lkp@intel.com, kbuild-all@lists.01.org References: <202108070109.1tqb3qPy-lkp@intel.com> <002d4e5e-b523-cead-0e00-7a6e1c7c3228@gmx.com> From: Qu Wenruo Message-ID: <93964ec4-fc08-62c7-258a-ec668a6952f0@gmx.com> Date: Tue, 10 Aug 2021 14:19:12 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: <002d4e5e-b523-cead-0e00-7a6e1c7c3228@gmx.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: base64 X-Provags-ID: V03:K1:l68kh6/RDjYUkkdZPpO+nFWySsH5t/jH6sKvhCm1VJDZ9WM3+B/ 0R3kYL/z2rM2yty3DuegdrIr+ThHQX9mgak0apZ5qUFloqju9I9H5KMJ4a2ALxzVgEv/1oR 0OumrJ8MEvGdQHtXrQDUJfD7A8ibuKVSekYcRl/OLzZhG63gNexK4tT1pbiypdZY1fmUx3e eN8KJ1+9r1VhL+k5ZwVQQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:Dp9Mz1ReUIU=:TYFDwptmO3mG4+WObhxceU oeq/HB2B2cM+MCRtoy7YnpPNCpe+/ZYH4urip52cqs9JrvJmhYQ0EnxxjST5BTcLEzf8Bb9Ti UaHATUQMnUSBTG1VjGTFiGrqDb7Pt6KNDLAx+Ufetc6hKuli/mrex8ERyDLAHPrJLm/BOKFYi pbZh+/u1rzn+jviD0v8KPAHRwJcbDAKnCAJcNGwty8MAc8r5i0IqTVy3UMArBsMHr7jREPTve 1ikjvwPDVLxMxAFJVLYjV93wGfAHr14YLQAHbxuquggf/kRbTxhuOnufPMNfNDmLj/oJPsOje 42LeqAxkbBBaMLAogZH32XJbioPmCcELnPDNFdiplq/XT3RnfpoA2/HeUZy/ISBGAGOuDwvB4 NrbgbwjNo0odxiAC5wihFLJFbfLZp9fzAxt40grTH8YkFWC+OFJnry+jF+5z0mXniCIJKAocH 97zSmx+MyHISy9OBCNgeQbbWvGgZlMZxpbYzkcsC6lOFuUERhXMOylLfld+UjU+6QJhgdvr0w gZfB+6PSEoDKDF+xMFRFMfeCDP/2std7WKPRAI1WVZdPBVu1nzk57SLQO+pqmwSNCxAlJamAE 8zDy35IDkWLRXyO1MY30hHFR0KGq6b15OJcTT9tXFR/be0rfeSIQbaPtiE0ghJFbmb1fE7hz1 /cisVWH/SQsQjVVRFW7wagwTKNf/qB2SHQGvjPwNXAnleDU/6LiQeI1biuaDm7DSjT4n3ocR6 6ijTs8NlWA+iY7EIAO5EXy9I4VPpEb4zBWuVjQHcZbCDALIjUSlr4OrbiWiW1ScOsiLwwKj5E /BqpQ8sWzMnkxgudDcDdB2Cqy/fmiShFnbWXMrqlZLFT1E2keyUfBZkv6ibK2oCey3k4KeXwP aRwhK3jdLriyX1ZwDxAmBEwNPVXLqyoymDI6v0bjfogTZAZgwM7nEggKcxz4yreRljjQH4887 /vGzUyxNPigRT854s+La+uaINaB9Zrz/a1pVoYNz2AQrzQeF32exPEF+KsVqNAtr0zIMcsJYJ m299UwTaZdkgupcQcFwK+SpCqQn/AQ/SmBB8RttPaWTB5BXzMgP353Ol3pSQTjc2HCEJTBBqS f7Q1d1JRcS3E6XvXQyzw3mXQUMx6qcZziisrIhgfXjsteutjSbVefctuw== Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org DQoNCk9uIDIwMjEvOC85IOS4i+WNiDg6MTMsIFF1IFdlbnJ1byB3cm90ZToNCj4gDQo+IA0KPiBP biAyMDIxLzgvOSDkuIvljYg3OjMyLCBEYW4gQ2FycGVudGVyIHdyb3RlOg0KPj4gSGkgUXUsDQo+ Pg0KPj4gdXJsOiAgICANCj4+IGh0dHBzOi8vZ2l0aHViLmNvbS8wZGF5LWNpL2xpbnV4L2NvbW1p dHMvUXUtV2VucnVvL2J0cmZzLWRlZnJhZy1yZXdvcmstdG8tc3VwcG9ydC1zZWN0b3ItcGVyZmVj dC1kZWZyYWcvMjAyMTA4MDYtMTYxNTAxIA0KPj4NCj4+IGJhc2U6ICAgDQo+PiBodHRwczovL2dp dC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9rZGF2ZS9saW51eC5naXQgZm9y LW5leHQNCj4+IGNvbmZpZzogaDgzMDAtcmFuZGNvbmZpZy1tMDMxLTIwMjEwODA0IChhdHRhY2hl ZCBhcyAuY29uZmlnKQ0KPj4gY29tcGlsZXI6IGg4MzAwLWxpbnV4LWdjYyAoR0NDKSAxMC4zLjAN Cj4+DQo+PiBJZiB5b3UgZml4IHRoZSBpc3N1ZSwga2luZGx5IGFkZCBmb2xsb3dpbmcgdGFnIGFz IGFwcHJvcHJpYXRlDQo+PiBSZXBvcnRlZC1ieToga2VybmVsIHRlc3Qgcm9ib3QgPGxrcEBpbnRl bC5jb20+DQo+PiBSZXBvcnRlZC1ieTogRGFuIENhcnBlbnRlciA8ZGFuLmNhcnBlbnRlckBvcmFj bGUuY29tPg0KPj4NCj4+IE5ldyBzbWF0Y2ggd2FybmluZ3M6DQo+PiBmcy9idHJmcy9pb2N0bC5j OjE4NjkgYnRyZnNfZGVmcmFnX2ZpbGUoKSBlcnJvcjogdW5pbml0aWFsaXplZCBzeW1ib2wgDQo+ PiAncmV0Jy4NCj4gDQo+IE9LLCBpdCdzIGluZGVlZCBhIHBvc3NpYmxlIGNhc2UsIGFuZCBJIGV2 ZW4gZmluZCBhIHNwZWNpYWwgY2FzZSB3aGVyZSB3ZQ0KPiBkb24ndCBuZWVkIHRvIGdvIHRocm91 Z2ggdGhlIGJyYW5jaCByZXBvcnRlZCBieSB0aGUgc3RhdGljIGNoZWNrZXIuDQo+IA0KPj4NCj4+ IHZpbSArL3JldCArMTg2OSBmcy9idHJmcy9pb2N0bC5jDQo+Pg0KPj4gZmU5MGQxNjE0NDM5YTgg UXUgV2VucnVvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0wOC0wNsKgIDE3 NTfCoCBpbnQgDQo+PiBidHJmc19kZWZyYWdfZmlsZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1 Y3QgZmlsZV9yYV9zdGF0ZSAqcmEsDQo+PiA0Y2I1MzAwYmM4MzliOCBDaHJpcyBNYXNvbsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAxMS0wNS0yNCAgDQo+PiAxNzU4wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBidHJmc19pb2N0bF9kZWZyYWdfcmFuZ2VfYXJncyAq cmFuZ2UsDQo+PiA0Y2I1MzAwYmM4MzliOCBDaHJpcyBNYXNvbsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgMjAxMS0wNS0yNCAgDQo+PiAxNzU5wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHU2NCBuZXdlcl90aGFuLCB1bnNpZ25lZCBsb25nIG1heF90b19kZWZyYWcpDQo+PiA0Y2I1 MzAwYmM4MzliOCBDaHJpcyBNYXNvbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAxMS0w NS0yNMKgIDE3NjDCoCB7DQo+PiAwYjI0NmFmYTYyYjBjZiBKZWZmIE1haG9uZXnCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAyMDE2LTA2LTIywqAgMTc2McKgwqDCoMKgwqAgc3RydWN0IA0KPj4g YnRyZnNfZnNfaW5mbyAqZnNfaW5mbyA9IGJ0cmZzX3NiKGlub2RlLT5pX3NiKTsNCj4+IGQwYjky OGZmMWVkNTZhIFF1IFdlbnJ1b8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMjEt MDgtMDbCoCAxNzYyICAgICAgDQo+PiB1bnNpZ25lZCBsb25nIHNlY3RvcnNfZGVmcmFnZ2VkID0g MDsNCj4+IDE1MWEzMWIyNWU1Yzk0IExpIFplZmFuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAyMDExLTA5LTAywqAgMTc2M8KgwqDCoMKgwqAgdTY0IA0KPj4gaXNpemUgPSBpX3Np emVfcmVhZChpbm9kZSk7DQo+PiBkMGI5MjhmZjFlZDU2YSBRdSBXZW5ydW/CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAyMDIxLTA4LTA2wqAgMTc2NMKgwqDCoMKgwqAgdTY0IGN1cjsN Cj4+IGQwYjkyOGZmMWVkNTZhIFF1IFdlbnJ1b8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDIwMjEtMDgtMDbCoCAxNzY1wqDCoMKgwqDCoCB1NjQgDQo+PiBsYXN0X2J5dGU7DQo+PiAx ZTJlZjQ2ZDg5ZWU0MSBEYXZpZCBTdGVyYmHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDE3 LTA3LTE3wqAgMTc2NsKgwqDCoMKgwqAgYm9vbCANCj4+IGRvX2NvbXByZXNzID0gcmFuZ2UtPmZs YWdzICYgQlRSRlNfREVGUkFHX1JBTkdFX0NPTVBSRVNTOw0KPj4gZmU5MGQxNjE0NDM5YTggUXUg V2VucnVvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0wOC0wNsKgIDE3NjfC oMKgwqDCoMKgIGJvb2wgDQo+PiByYV9hbGxvY2F0ZWQgPSBmYWxzZTsNCj4+IGQwYjkyOGZmMWVk NTZhIFF1IFdlbnJ1b8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMjEtMDgtMDbC oCAxNzY4wqDCoMKgwqDCoCBpbnQgDQo+PiBjb21wcmVzc190eXBlID0gQlRSRlNfQ09NUFJFU1Nf WkxJQjsNCj4+IGQwYjkyOGZmMWVkNTZhIFF1IFdlbnJ1b8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDIwMjEtMDgtMDbCoCAxNzY5wqDCoMKgwqDCoCBpbnQgcmV0Ow0KPj4gZDBiOTI4 ZmYxZWQ1NmEgUXUgV2VucnVvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0w OC0wNsKgIDE3NzDCoMKgwqDCoMKgIHUzMiANCj4+IGV4dGVudF90aHJlc2ggPSByYW5nZS0+ZXh0 ZW50X3RocmVzaDsNCj4+IDRjYjUzMDBiYzgzOWI4IENocmlzIE1hc29uwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAyMDExLTA1LTI0wqAgMTc3MQ0KPj4gMGFiZDViMTcyNDllYTUgTGl1IEJv wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAxMy0wNC0xNsKgIDE3NzLC oMKgwqDCoMKgIGlmIA0KPj4gKGlzaXplID09IDApDQo+PiAwYWJkNWIxNzI0OWVhNSBMaXUgQm/C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDEzLTA0LTE2wqAgMTc3MyAg ICAgICAgICANCj4+IHJldHVybiAwOw0KPj4gMGFiZDViMTcyNDllYTUgTGl1IEJvwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAxMy0wNC0xNsKgIDE3NzQNCj4+IDBhYmQ1 YjE3MjQ5ZWE1IExpdSBCb8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIw MTMtMDQtMTbCoCAxNzc1wqDCoMKgwqDCoCBpZiANCj4+IChyYW5nZS0+c3RhcnQgPj0gaXNpemUp DQo+PiAwYWJkNWIxNzI0OWVhNSBMaXUgQm/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAyMDEzLTA0LTE2wqAgMTc3NiAgICAgICAgICANCj4+IHJldHVybiAtRUlOVkFMOw0K PiANCj4gRmlyc3RseSwgd2Ugc2tpcCBzZXZlcmFsIGludmFsaWQgY2FzZXMsIGxpa2UgZW1wdHkg ZmlsZSBvciByYW5nZSBiZXlvbmQNCj4gaXNpemUuDQo+IA0KPiBOb3RpY2UgdGhhdCBub3cgcmFu Z2UtPnN0YXJ0IDwgaXNpemU7IEFLQSByYW5nZS0+c3RhcnQgPD0gaXNpemUgLSAxOw0KPiANCj4+ IDFhNDE5ZDg1YTc2ODUzIExpIFplZmFuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAyMDEwLTEwLTI1wqAgMTc3Nw0KPj4gMWUyZWY0NmQ4OWVlNDEgRGF2aWQgU3RlcmJhwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAxNy0wNy0xN8KgIDE3NzjCoMKgwqDCoMKgIGlmIA0KPj4g KGRvX2NvbXByZXNzKSB7DQo+PiBjZTk2YjdmZmQxMWUyNiBDaGVuZ2d1YW5nIFh1wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDIwMTktMTAtMTDCoCAxNzc5wqDCoMKgwqDCoMKgwqDCoMKgIGlmIA0K Pj4gKHJhbmdlLT5jb21wcmVzc190eXBlID49IEJUUkZTX05SX0NPTVBSRVNTX1RZUEVTKQ0KPj4g MWE0MTlkODVhNzY4NTMgTGkgWmVmYW7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDIwMTAtMTAtMjXCoCAxNzgwICAgICAgICAgICAgICANCj4+IHJldHVybiAtRUlOVkFMOw0KPj4g MWE0MTlkODVhNzY4NTMgTGkgWmVmYW7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDIwMTAtMTAtMjXCoCAxNzgxwqDCoMKgwqDCoMKgwqDCoMKgIGlmIA0KPj4gKHJhbmdlLT5jb21w cmVzc190eXBlKQ0KPj4gMWE0MTlkODVhNzY4NTMgTGkgWmVmYW7CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDIwMTAtMTAtMjXCoCAxNzgyICAgICAgICAgICAgICANCj4+IGNvbXBy ZXNzX3R5cGUgPSByYW5nZS0+Y29tcHJlc3NfdHlwZTsNCj4+IDFhNDE5ZDg1YTc2ODUzIExpIFpl ZmFuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDEwLTEwLTI1wqAgMTc4M8Kg wqDCoMKgwqAgfQ0KPj4gZjQ2YjVhNjZiMzMxNmUgQ2hyaXN0b3BoIEhlbGx3aWfCoMKgwqDCoMKg wqDCoMKgIDIwMDgtMDYtMTHCoCAxNzg0DQo+PiAwYWJkNWIxNzI0OWVhNSBMaXUgQm/CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDEzLTA0LTE2wqAgMTc4NcKgwqDCoMKg wqAgaWYgDQo+PiAoZXh0ZW50X3RocmVzaCA9PSAwKQ0KPj4gZWUyMjE4NGI1M2M4MjMgQnlvbmdo byBMZWXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMTUtMTItMTXCoCAxNzg2ICAgICAg ICAgIA0KPj4gZXh0ZW50X3RocmVzaCA9IFNaXzI1Nks7DQo+PiA5NDAxMDBhNGE3Yjc4YiBDaHJp cyBNYXNvbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAxMC0wMy0xMMKgIDE3ODcNCj4+ IGQwYjkyOGZmMWVkNTZhIFF1IFdlbnJ1b8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDIwMjEtMDgtMDbCoCAxNzg4wqDCoMKgwqDCoCBpZiANCj4+IChyYW5nZS0+c3RhcnQgKyByYW5n ZS0+bGVuID4gcmFuZ2UtPnN0YXJ0KSB7DQo+PiBkMGI5MjhmZjFlZDU2YSBRdSBXZW5ydW/CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDIxLTA4LTA2wqAgMTc4OcKgwqDCoMKgwqDC oMKgwqDCoCAvKiANCj4+IEdvdCBhIHNwZWNpZmljIHJhbmdlICovDQo+PiBkMGI5MjhmZjFlZDU2 YSBRdSBXZW5ydW/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDIxLTA4LTA2wqAg MTc5MCAgICAgICAgICANCj4+IGxhc3RfYnl0ZSA9IG1pbihpc2l6ZSwgcmFuZ2UtPnN0YXJ0ICsg cmFuZ2UtPmxlbikgLSAxOw0KPj4gZDBiOTI4ZmYxZWQ1NmEgUXUgV2VucnVvwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0wOC0wNsKgIDE3OTHCoMKgwqDCoMKgIH0gZWxzZSB7 DQo+PiBkMGI5MjhmZjFlZDU2YSBRdSBXZW5ydW/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAyMDIxLTA4LTA2wqAgMTc5MsKgwqDCoMKgwqDCoMKgwqDCoCAvKiANCj4+IERlZnJhZyB1 bnRpbCBmaWxlIGVuZCAqLw0KPj4gZDBiOTI4ZmYxZWQ1NmEgUXUgV2VucnVvwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0wOC0wNsKgIDE3OTMgICAgICAgICAgDQo+PiBsYXN0 X2J5dGUgPSBpc2l6ZSAtIDE7DQo+PiBkMGI5MjhmZjFlZDU2YSBRdSBXZW5ydW/CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDIxLTA4LTA2wqAgMTc5NMKgwqDCoMKgwqAgfQ0KPiAN Cj4gTm8gbWF0dGVyIHRoZSByYW5nZS0+bGVuLCBsYXN0X2J5dGUgPD0gaXNpemUgLSAxOw0KPiBB bHNvIHN0YXJ0LT5yYW5nZSA8PSBpc2l6ZSAtIDE7DQo+IA0KPiBUaHVzIHdlIGNhbiBoYXZlIGEg d29yc3QgY2FzZSB3aGVyZSBzdGFydC0+cmFuZ2UgPT0gbGFzdF9ieXRlLg0KPiANCj4+IGQwYjky OGZmMWVkNTZhIFF1IFdlbnJ1b8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMjEt MDgtMDbCoCAxNzk1DQo+PiA0Y2I1MzAwYmM4MzliOCBDaHJpcyBNYXNvbsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMjAxMS0wNS0yNMKgIDE3OTbCoMKgwqDCoMKgIC8qDQo+PiBmZTkwZDE2 MTQ0MzlhOCBRdSBXZW5ydW/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDIxLTA4 LTA2wqAgMTc5N8KgwqDCoMKgwqDCoCAqIElmIA0KPj4gd2Ugd2VyZSBub3QgZ2l2ZW4gYSByYSwg YWxsb2NhdGUgYSByZWFkYWhlYWQgY29udGV4dC4gQXMNCj4+IDBhNTJkMTA4MDg5ZjMzIERhdmlk IFN0ZXJiYcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMTctMDYtMjLCoCAxNzk4wqDCoMKg wqDCoMKgICogDQo+PiByZWFkYWhlYWQgaXMganVzdCBhbiBvcHRpbWl6YXRpb24sIGRlZnJhZyB3 aWxsIHdvcmsgd2l0aG91dCBpdCBzbw0KPj4gMGE1MmQxMDgwODlmMzMgRGF2aWQgU3RlcmJhwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAxNy0wNi0yMsKgIDE3OTnCoMKgwqDCoMKgwqAgKiB3 ZSANCj4+IGRvbid0IGVycm9yIG91dC4NCj4+IDRjYjUzMDBiYzgzOWI4IENocmlzIE1hc29uwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDExLTA1LTI0wqAgMTgwMMKgwqDCoMKgwqDCoCAq Lw0KPj4gZmU5MGQxNjE0NDM5YTggUXUgV2VucnVvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgMjAyMS0wOC0wNsKgIDE4MDHCoMKgwqDCoMKgIGlmICghcmEpIHsNCj4+IGZlOTBkMTYx NDQzOWE4IFF1IFdlbnJ1b8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMjEtMDgt MDbCoCAxODAyICAgICAgICAgIA0KPj4gcmFfYWxsb2NhdGVkID0gdHJ1ZTsNCj4+IDYzZTcyN2Vj ZDIzOGJlIERhdmlkIFN0ZXJiYcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMTctMDYtMjLC oCAxODAzwqDCoMKgwqDCoMKgwqDCoMKgIHJhIA0KPj4gPSBremFsbG9jKHNpemVvZigqcmEpLCBH RlBfS0VSTkVMKTsNCj4+IDBhNTJkMTA4MDg5ZjMzIERhdmlkIFN0ZXJiYcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDIwMTctMDYtMjLCoCAxODA0wqDCoMKgwqDCoMKgwqDCoMKgIGlmIA0KPj4g KHJhKQ0KPj4gNGNiNTMwMGJjODM5YjggQ2hyaXMgTWFzb27CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDIwMTEtMDUtMjTCoCAxODA1ICAgICAgICAgICAgICANCj4+IGZpbGVfcmFfc3RhdGVf aW5pdChyYSwgaW5vZGUtPmlfbWFwcGluZyk7DQo+PiA0Y2I1MzAwYmM4MzliOCBDaHJpcyBNYXNv bsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAxMS0wNS0yNMKgIDE4MDbCoMKgwqDCoMKg IH0NCj4+IDRjYjUzMDBiYzgzOWI4IENocmlzIE1hc29uwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAyMDExLTA1LTI0wqAgMTgwNw0KPj4gZDBiOTI4ZmYxZWQ1NmEgUXUgV2VucnVvwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0wOC0wNsKgIDE4MDjCoMKgwqDCoMKgIC8q IA0KPj4gQWxpZ24gdGhlIHJhbmdlICovDQo+PiBkMGI5MjhmZjFlZDU2YSBRdSBXZW5ydW/CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDIxLTA4LTA2wqAgMTgwOcKgwqDCoMKgwqAg Y3VyID0gDQo+PiByb3VuZF9kb3duKHJhbmdlLT5zdGFydCwgZnNfaW5mby0+c2VjdG9yc2l6ZSk7 DQo+PiBkMGI5MjhmZjFlZDU2YSBRdSBXZW5ydW/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAyMDIxLTA4LTA2wqAgMTgxMCAgICAgIA0KPj4gbGFzdF9ieXRlID0gcm91bmRfdXAobGFz dF9ieXRlLCBmc19pbmZvLT5zZWN0b3JzaXplKSAtIDE7DQo+IA0KPiBFdmVuIGZvciB0aGUgd29y c3QgY2FzZSwgcmFuZ2UtPnN0YXJ0ID09IGxhc3RfYnl0ZS4NCj4gDQo+IElmIHJhbmdlLT5zdGFy dCA9IGxhc3RfYnl0ZSA9IDRLIChha2EgaXNpemUgPSA0SyArIDEpLCB0aGVuOg0KPiBjdXIgPSA0 SzsNCj4gbGFzdF9ieXRlID0gNEsgLSAxOw0KPiANCj4gTm93IHdlIGRvbid0IG5lZWQgdG8gZ28g dGhyb3VnaCB0aGUgd2hpbGUoKSBsb29wIGF0IGFsbC4NCg0KQlRXLCBoZXJlIHRoZSBwcm9wZXIg d2F5IHRvIGNhbGN1bGF0ZSBsYXN0X2J5dGUgc2hvdWxkIGJlOg0KDQpyb3VuZF91cChsYXN0X2J5 dGUgKyAxLCBzZWN0b3JzaXplKSAtIDE7DQoNClNvIHRoYXQgd2UgYXJlIGVuc3VyZWQgdGhhdCBy b3VuZGVkIHVwIGxhc3RfYnl0ZSB3aWxsIG5ldmVyIGJlIHNtYWxsZXIgDQp0aGFuIHJhbmdlLT5z dGFydC4NCg0KSSBoYXZlIGZpeGVkIGJvdGggdW5pbml0aWFsaXplZCBAcmV0IGFuZCB0aGlzIEBs YXN0X2J5dGUgcHJvYmxlbSBpbiBteSANCmdpdGh1YiByZXBvIGFscmVhZHkuDQoNClRoYW5rcywN ClF1DQo+IA0KPj4gNGNiNTMwMGJjODM5YjggQ2hyaXMgTWFzb27CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDIwMTEtMDUtMjTCoCAxODExDQo+PiBkMGI5MjhmZjFlZDU2YSBRdSBXZW5ydW/C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDIxLTA4LTA2wqAgMTgxMsKgwqDCoMKg wqAgd2hpbGUgDQo+PiAoY3VyIDwgbGFzdF9ieXRlKSB7DQo+PiBkMGI5MjhmZjFlZDU2YSBRdSBX ZW5ydW/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDIxLTA4LTA2wqAgMTgxM8Kg wqDCoMKgwqDCoMKgwqDCoCB1NjQgDQo+PiBjbHVzdGVyX2VuZDsNCj4+IDFlNzAxYTMyOTJlMjVh IENocmlzIE1hc29uwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDEwLTAzLTExwqAgMTgx NA0KPj4gZDBiOTI4ZmYxZWQ1NmEgUXUgV2VucnVvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgMjAyMS0wOC0wNsKgIDE4MTXCoMKgwqDCoMKgwqDCoMKgwqAgLyogDQo+PiBUaGUgY2x1 c3RlciBzaXplIDI1Nksgc2hvdWxkIGFsd2F5cyBiZSBwYWdlIGFsaWduZWQgKi8NCj4+IGQwYjky OGZmMWVkNTZhIFF1IFdlbnJ1b8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMjEt MDgtMDbCoCAxODE2ICAgICAgICAgIA0KPj4gQlVJTERfQlVHX09OKCFJU19BTElHTkVEKENMVVNU RVJfU0laRSwgUEFHRV9TSVpFKSk7DQo+PiAwMDg4NzNlYWZiYzc3ZCBMaSBaZWZhbsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAxMS0wOS0wMsKgIDE4MTcNCj4+IGQwYjkyOGZm MWVkNTZhIFF1IFdlbnJ1b8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMjEtMDgt MDbCoCAxODE4wqDCoMKgwqDCoMKgwqDCoMKgIC8qIA0KPj4gV2Ugd2FudCB0aGUgY2x1c3RlciBl bmRzIGF0IHBhZ2UgYm91bmRhcnkgd2hlbiBwb3NzaWJsZSAqLw0KPj4gZDBiOTI4ZmYxZWQ1NmEg UXUgV2VucnVvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0wOC0wNsKgIDE4 MTkgICAgICAgICAgDQo+PiBjbHVzdGVyX2VuZCA9ICgoKGN1ciA+PiBQQUdFX1NISUZUKSArDQo+ PiBkMGI5MjhmZjFlZDU2YSBRdSBXZW5ydW/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAyMDIxLTA4LTA2ICANCj4+IDE4MjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIChTWl8yNTZLID4+IFBBR0VfU0hJRlQpKSA8PCBQQUdFX1NISUZUKSAtIDE7DQo+PiBk MGI5MjhmZjFlZDU2YSBRdSBXZW5ydW/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAy MDIxLTA4LTA2wqAgMTgyMSAgICAgICAgICANCj4+IGNsdXN0ZXJfZW5kID0gbWluKGNsdXN0ZXJf ZW5kLCBsYXN0X2J5dGUpOw0KPj4gOTQwMTAwYTRhN2I3OGIgQ2hyaXMgTWFzb27CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDIwMTAtMDMtMTDCoCAxODIyDQo+PiA2NDcwODUzOWNkMjNiMyBK b3NlZiBCYWNpa8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0wMi0xMMKgIDE4MjMg ICAgICAgICAgDQo+PiBidHJmc19pbm9kZV9sb2NrKGlub2RlLCAwKTsNCj4+IGVlZGUyYmYzNGY0 ZmE4IE9tYXIgU2FuZG92YWzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAxNi0xMS0wM8KgIDE4 MjTCoMKgwqDCoMKgwqDCoMKgwqAgaWYgDQo+PiAoSVNfU1dBUEZJTEUoaW5vZGUpKSB7DQo+PiBl ZWRlMmJmMzRmNGZhOCBPbWFyIFNhbmRvdmFswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMTYt MTEtMDPCoCAxODI1ICAgICAgICAgICAgICANCj4+IHJldCA9IC1FVFhUQlNZOw0KPj4gNjQ3MDg1 MzljZDIzYjMgSm9zZWYgQmFjaWvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMjEtMDIt MTDCoCAxODI2ICAgICAgICAgICAgICANCj4+IGJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwgMCk7 DQo+PiBkMGI5MjhmZjFlZDU2YSBRdSBXZW5ydW/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAyMDIxLTA4LTA2wqAgMTgyNyAgICAgICAgICAgICAgDQo+PiBicmVhazsNCj4+IGVjYjhi ZWE4N2QwNWZkIExpdSBCb8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIw MTItMDMtMjnCoCAxODI4wqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+IGQwYjkyOGZmMWVkNTZhIFF1 IFdlbnJ1b8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMjEtMDgtMDbCoCAxODI5 wqDCoMKgwqDCoMKgwqDCoMKgIGlmIA0KPj4gKCEoaW5vZGUtPmlfc2ItPnNfZmxhZ3MgJiBTQl9B Q1RJVkUpKSB7DQo+PiA2NDcwODUzOWNkMjNiMyBKb3NlZiBCYWNpa8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgMjAyMS0wMi0xMMKgIDE4MzAgICAgICAgICAgICAgIA0KPj4gYnRyZnNfaW5v ZGVfdW5sb2NrKGlub2RlLCAwKTsNCj4+IDRjYjUzMDBiYzgzOWI4IENocmlzIE1hc29uwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDExLTA1LTI0wqAgMTgzMSAgICAgICAgICAgICAgDQo+ PiBicmVhazsNCj4+DQo+PiBDYW4gd2UgaGl0IHRoaXMgYnJlYWsgc3RhdGVtZW50IG9uIHRoZSBm aXJzdCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgbG9vcD8NCj4+DQo+PiAzZWFhMjg4NTI3NmZkNiBD aHJpcyBNYXNvbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAwOC0wNy0yNMKgIDE4MzLC oMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4gZDBiOTI4ZmYxZWQ1NmEgUXUgV2VucnVvwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0wOC0wNsKgIDE4MzPCoMKgwqDCoMKgwqDCoMKg wqAgaWYgDQo+PiAoZG9fY29tcHJlc3MpDQo+PiBkMGI5MjhmZjFlZDU2YSBRdSBXZW5ydW/CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDIxLTA4LTA2wqAgMTgzNCAgICAgICAgICAg ICAgDQo+PiBCVFJGU19JKGlub2RlKS0+ZGVmcmFnX2NvbXByZXNzID0gY29tcHJlc3NfdHlwZTsN Cj4+IGQwYjkyOGZmMWVkNTZhIFF1IFdlbnJ1b8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDIwMjEtMDgtMDbCoCAxODM1wqDCoMKgwqDCoMKgwqDCoMKgIHJldCANCj4+ID0gZGVmcmFn X29uZV9jbHVzdGVyKEJUUkZTX0koaW5vZGUpLCByYSwgY3VyLA0KPj4gZDBiOTI4ZmYxZWQ1NmEg UXUgV2VucnVvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0wOC0wNiAgDQo+ PiAxODM2wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjbHVzdGVyX2VuZCArIDEg LSBjdXIsIGV4dGVudF90aHJlc2gsDQo+PiBkMGI5MjhmZjFlZDU2YSBRdSBXZW5ydW/CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDIxLTA4LTA2ICANCj4+IDE4MzfCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5ld2VyX3RoYW4sIGRvX2NvbXByZXNzLA0KPj4gZDBi OTI4ZmYxZWQ1NmEgUXUgV2VucnVvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAy MS0wOC0wNiAgDQo+PiAxODM4wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmc2Vj dG9yc19kZWZyYWdnZWQsIG1heF90b19kZWZyYWcpOw0KPj4gZDBiOTI4ZmYxZWQ1NmEgUXUgV2Vu cnVvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0wOC0wNsKgIDE4MzkgICAg ICAgICAgDQo+PiBidHJmc19pbm9kZV91bmxvY2soaW5vZGUsIDApOw0KPj4gZDBiOTI4ZmYxZWQ1 NmEgUXUgV2VucnVvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0wOC0wNsKg IDE4NDDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgDQo+PiAocmV0IDwgMCkNCj4+IGQwYjkyOGZmMWVk NTZhIFF1IFdlbnJ1b8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMjEtMDgtMDbC oCAxODQxICAgICAgICAgICAgICANCj4+IGJyZWFrOw0KPj4gZDBiOTI4ZmYxZWQ1NmEgUXUgV2Vu cnVvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0wOC0wNsKgIDE4NDLCoMKg wqDCoMKgwqDCoMKgwqAgY3VyIA0KPj4gPSBjbHVzdGVyX2VuZCArIDE7DQo+PiA0Y2I1MzAwYmM4 MzliOCBDaHJpcyBNYXNvbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAxMS0wNS0yNMKg IDE4NDPCoMKgwqDCoMKgIH0NCj4+IGY0NmI1YTY2YjMzMTZlIENocmlzdG9waCBIZWxsd2lnwqDC oMKgwqDCoMKgwqDCoCAyMDA4LTA2LTExwqAgMTg0NA0KPj4gZDBiOTI4ZmYxZWQ1NmEgUXUgV2Vu cnVvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0wOC0wNsKgIDE4NDXCoMKg wqDCoMKgIGlmIA0KPj4gKHJhX2FsbG9jYXRlZCkNCj4+IGQwYjkyOGZmMWVkNTZhIFF1IFdlbnJ1 b8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMjEtMDgtMDbCoCAxODQ2ICAgICAg ICAgIA0KPj4ga2ZyZWUocmEpOw0KPj4gZDBiOTI4ZmYxZWQ1NmEgUXUgV2VucnVvwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0wOC0wNsKgIDE4NDfCoMKgwqDCoMKgIGlmIA0K Pj4gKHNlY3RvcnNfZGVmcmFnZ2VkKSB7DQo+PiBkMGI5MjhmZjFlZDU2YSBRdSBXZW5ydW/CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDIxLTA4LTA2wqAgMTg0OMKgwqDCoMKgwqDC oMKgwqDCoCAvKg0KPj4gZDBiOTI4ZmYxZWQ1NmEgUXUgV2VucnVvwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMjAyMS0wOC0wNsKgIDE4NDnCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIA0K Pj4gV2UgaGF2ZSBkZWZyYWdnZWQgc29tZSBzZWN0b3JzLCBmb3IgY29tcHJlc3Npb24gY2FzZQ0K Pj4gZDBiOTI4ZmYxZWQ1NmEgUXUgV2VucnVvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgMjAyMS0wOC0wNsKgIDE4NTDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIA0KPj4gdGhleSBuZWVk IHRvIGJlIHdyaXR0ZW4gYmFjayBpbW1lZGlhdGVseS4NCj4+IGQwYjkyOGZmMWVkNTZhIFF1IFdl bnJ1b8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMjEtMDgtMDbCoCAxODUxwqDC oMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+IGQwYjkyOGZmMWVkNTZhIFF1IFdlbnJ1b8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMjEtMDgtMDbCoCAxODUywqDCoMKgwqDCoMKgwqDC oMKgIGlmIA0KPj4gKHJhbmdlLT5mbGFncyAmIEJUUkZTX0RFRlJBR19SQU5HRV9TVEFSVF9JTykg ew0KPj4gMWU3MDFhMzI5MmUyNWEgQ2hyaXMgTWFzb27CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDIwMTAtMDMtMTHCoCAxODUzICAgICAgICAgICAgICANCj4+IGZpbGVtYXBfZmx1c2goaW5v ZGUtPmlfbWFwcGluZyk7DQo+PiBkZWM4ZWY5MDU1MmY3YiBGaWxpcGUgTWFuYW5hwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDIwMTQtMDMtMDHCoCAxODU0ICAgICAgICAgICAgICANCj4+IGlmICh0 ZXN0X2JpdChCVFJGU19JTk9ERV9IQVNfQVNZTkNfRVhURU5ULA0KPj4gZGVjOGVmOTA1NTJmN2Ig RmlsaXBlIE1hbmFuYcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDE0LTAzLTAxICANCj4+IDE4 NTXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmQlRSRlNfSShp bm9kZSktPnJ1bnRpbWVfZmxhZ3MpKQ0KPj4gMWU3MDFhMzI5MmUyNWEgQ2hyaXMgTWFzb27CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDIwMTAtMDMtMTEgIA0KPj4gMTg1NsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmlsZW1hcF9mbHVzaChpbm9kZS0+aV9tYXBwaW5nKTsN Cj4+IGRlYzhlZjkwNTUyZjdiIEZpbGlwZSBNYW5hbmHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg MjAxNC0wMy0wMcKgIDE4NTfCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4gZDBiOTI4ZmYxZWQ1NmEg UXUgV2VucnVvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAyMS0wOC0wNsKgIDE4 NTjCoMKgwqDCoMKgwqDCoMKgwqAgaWYgDQo+PiAocmFuZ2UtPmNvbXByZXNzX3R5cGUgPT0gQlRS RlNfQ09NUFJFU1NfTFpPKQ0KPj4gMGIyNDZhZmE2MmIwY2YgSmVmZiBNYWhvbmV5wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgMjAxNi0wNi0yMsKgIDE4NTkgICAgICAgICAgICAgIA0KPj4gYnRy ZnNfc2V0X2ZzX2luY29tcGF0KGZzX2luZm8sIENPTVBSRVNTX0xaTyk7DQo+PiBkMGI5MjhmZjFl ZDU2YSBRdSBXZW5ydW/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDIxLTA4LTA2 wqAgMTg2MCAgICAgICAgICANCj4+IGVsc2UgaWYgKHJhbmdlLT5jb21wcmVzc190eXBlID09IEJU UkZTX0NPTVBSRVNTX1pTVEQpDQo+PiA1YzFhYWIxZGQ1NDQ1ZSBOaWNrIFRlcnJlbGzCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAyMDE3LTA4LTA5wqAgMTg2MSAgICAgICAgICAgICAgDQo+PiBi dHJmc19zZXRfZnNfaW5jb21wYXQoZnNfaW5mbywgQ09NUFJFU1NfWlNURCk7DQo+PiBkMGI5Mjhm ZjFlZDU2YSBRdSBXZW5ydW/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDIxLTA4 LTA2wqAgMTg2MsKgwqDCoMKgwqDCoMKgwqDCoCByZXQgDQo+PiA9IHNlY3RvcnNfZGVmcmFnZ2Vk Ow0KPj4gMWE0MTlkODVhNzY4NTMgTGkgWmVmYW7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDIwMTAtMTAtMjXCoCAxODYzwqDCoMKgwqDCoCB9DQo+IA0KPiBXZSBhbHNvIHNraXAg YWJvdmUgKHNlY3RvcnNfZGVmcmFnZWQpIGJyYW5jaC4NCj4gDQo+PiAxZTJlZjQ2ZDg5ZWU0MSBE YXZpZCBTdGVyYmHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDE3LTA3LTE3wqAgMTg2NMKg wqDCoMKgwqAgaWYgDQo+PiAoZG9fY29tcHJlc3MpIHsNCj4+IDY0NzA4NTM5Y2QyM2IzIEpvc2Vm IEJhY2lrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyMDIxLTAyLTEwwqAgMTg2NSAgICAg ICAgICANCj4+IGJ0cmZzX2lub2RlX2xvY2soaW5vZGUsIDApOw0KPj4gZWVjNjNjNjVkY2JlYjEg RGF2aWQgU3RlcmJhwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAxNy0wNy0xN8KgIDE4NjYg ICAgICAgICAgDQo+PiBCVFJGU19JKGlub2RlKS0+ZGVmcmFnX2NvbXByZXNzID0gQlRSRlNfQ09N UFJFU1NfTk9ORTsNCj4+IDY0NzA4NTM5Y2QyM2IzIEpvc2VmIEJhY2lrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAyMDIxLTAyLTEwwqAgMTg2NyAgICAgICAgICANCj4+IGJ0cmZzX2lub2Rl X3VubG9jayhpbm9kZSwgMCk7DQo+PiA2MzMwODVjNzljODRjMyBGaWxpcGUgRGF2aWQgQm9yYmEg TWFuYW5hIDIwMTMtMDgtMTbCoCAxODY4wqDCoMKgwqDCoCB9DQo+PiA5NDAxMDBhNGE3Yjc4YiBD aHJpcyBNYXNvbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjAxMC0wMy0xMCBAMTg2OcKg wqDCoMKgwqAgcmV0dXJuIA0KPj4gcmV0Ow0KPiANCj4gQW5kIEByZXQgaXMgaW5kZWVkIHVuaW5p dGlhbGl6ZWQuDQo+IA0KPiBXaWxsIGZpeCBpdCBpbiBuZXh0IHVwZGF0ZS4NCj4gDQo+IFRoYW5r cywNCj4gUXUNCj4gDQo+PiBmNDZiNWE2NmIzMzE2ZSBDaHJpc3RvcGggSGVsbHdpZ8KgwqDCoMKg wqDCoMKgwqAgMjAwOC0wNi0xMcKgIDE4NzDCoCB9DQo+Pg0KPj4gLS0tDQo+PiAwLURBWSBDSSBL ZXJuZWwgVGVzdCBTZXJ2aWNlLCBJbnRlbCBDb3Jwb3JhdGlvbg0KPj4gaHR0cHM6Ly9saXN0cy4w MS5vcmcvaHlwZXJraXR0eS9saXN0L2tidWlsZC1hbGxAbGlzdHMuMDEub3JnDQo+Pg0K