From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id DC1EE1584F2 for ; Fri, 14 Mar 2025 15:34:59 +0000 (UTC) Received: from lists.gentoo.org (bobolink.gentoo.org [140.211.166.189]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: relay-lists.gentoo.org@gentoo.org) by smtp.gentoo.org (Postfix) with ESMTPSA id BF3E13431F7 for ; Fri, 14 Mar 2025 15:34:59 +0000 (UTC) Received: from bobolink.gentoo.org (localhost [127.0.0.1]) by bobolink.gentoo.org (Postfix) with ESMTP id CFA331103E3; Fri, 14 Mar 2025 15:34:16 +0000 (UTC) Received: from mail-4323.protonmail.ch (mail-4323.protonmail.ch [185.70.43.23]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bobolink.gentoo.org (Postfix) with ESMTPS id 4E7901103C7 for ; Fri, 14 Mar 2025 15:34:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=asokolov.org; s=protonmail3; t=1741966450; x=1742225650; bh=o6Haz2uOYQW5m6sU4Emhq/Gm1QmAkfAyLPCh2bzDcSk=; h=Date:To:From:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector:List-Unsubscribe:List-Unsubscribe-Post; b=AmtQNTLA57gPEc2B4+rwp8w5jYUx+/s/3fOjztfzwTWDeXV1+If5feqydlz7y25YB c7iKpc2EfSX030dij+j/VcHRcODteMklbeoSlmD3wWl7Ri//zfOt3G/xzSCGZHSx0C RZrgMGLJONQvugnjwb+2i6JbMAkJTXFftQ0PpjREeJGMLMbR216A6nDfreRO9BUJv3 Kx7Wm+EqO7s2nLiJsdrMSoQxrff/DESAZwpLfnCqSR93VbktC+i5TpMEz7K65Sic+c IU5kXiv4O/bdR8/CRIwXUsmvrNQdaFORkrU2qHLNInpjjtpuFyUHPMO3Sn68BRbpbQ QI7vLizkhWjRw== Date: Fri, 14 Mar 2025 15:34:07 +0000 To: gentoo-dev@lists.gentoo.org From: Alexey Sokolov Subject: Re: [gentoo-dev] [PATCH 5/5] dkms.eclass: introduce new eclass Message-ID: <525d7dd4-5720-443a-b635-a65eacac0874@asokolov.org> In-Reply-To: <20250314124851.716771-5-nowa@gentoo.org> References: <20250314124851.716771-1-nowa@gentoo.org> <20250314124851.716771-5-nowa@gentoo.org> Feedback-ID: 91776987:user:proton X-Pm-Message-ID: ce6c183315ac7e51216139d9a24aac9ffcf047d5 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="b1=_mfSvRjmIMuF1CfrXXTMv83XG0Wfan3jZug7fUXMEU" X-Archives-Salt: ee1642a7-63a2-4fe1-8750-65ae4e42af66 X-Archives-Hash: 9677c9593d4de7ef764a0833314c5dea --b1=_mfSvRjmIMuF1CfrXXTMv83XG0Wfan3jZug7fUXMEU Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 MTQuMDMuMjAyNSAxMjo0OCwgTm93YSBBbW1lcmxhYW4g0L/QuNGI0LXRgjoKCj4gU2lnbmVkLW9m Zi1ieTogTm93YSBBbW1lcmxhYW4KPiBbPG5vd2FAZ2VudG9vLm9yZz5dKG1haWx0bzpub3dhQGdl bnRvby5vcmcpCj4gLS0tCj4gIGVjbGFzcy9ka21zLmVjbGFzcyB8IDU0NSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMSBmaWxlIGNoYW5nZWQsIDU0NSBp bnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBlY2xhc3MvZGttcy5lY2xhc3MKPgo+ IGRpZmYgLS1naXQgYS9lY2xhc3MvZGttcy5lY2xhc3MgYi9lY2xhc3MvZGttcy5lY2xhc3MKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzQ0NWI5NTcyMWMzCj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2VjbGFzcy9ka21zLmVjbGFzcwo+IEBAIC0wLDAgKzEsNTQ1 IEBACj4gKyMgQ29weXJpZ2h0IDIwMjUgR2VudG9vIEF1dGhvcnMKPiArIyBEaXN0cmlidXRlZCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYyCj4gKwo+ ICsjIEBFQ0xBU1M6IGRrbXMuZWNsYXNzCj4gKyMgQE1BSU5UQUlORVI6Cj4gKyMgTm93YSBBbW1l cmxhYW4KPiBbPG5vd2FAZ2VudG9vLm9yZz5dKG1haWx0bzpub3dhQGdlbnRvby5vcmcpCj4gKyMg QEFVVEhPUjoKPiArIyBBdXRob3I6IE5vd2EgQW1tZXJsYWFuCj4gWzxub3dhQGdlbnRvby5vcmc+ XShtYWlsdG86bm93YUBnZW50b28ub3JnKQo+ICsjIEBTVVBQT1JURURfRUFQSVM6IDgKPiArIyBA UFJPVklERVM6IGxpbnV4LW1vZC1yMQo+ICsjIEBCTFVSQjogSGVscGVyIGVjbGFzcyB0byBtYW5h Z2UgREtNUyBtb2R1bGVzCj4gKyMgQERFU0NSSVBUSU9OOgo+ICsjIFJlZ2lzdGVycywgYnVpbGRz IGFuZCBpbnN0YWxscyBrZXJuZWwgbW9kdWxlcyB1c2luZyB0aGUgREtNUwo+ICsjIChEeW5hbWlj IEtlcm5lbCBNb2R1bGUgU3VwcG9ydCkgc3lzdGVtIHByb3ZpZGVkIGJ5IHN5cy1rZXJuZWwvZGtt cy4KPiArIwo+ICsjIFRoZSBka21zX2F1dG9jb25mIG1heSBiZSB1c2VkIHRvIHRyYW5zbGF0ZSB0 aGUgbW9kbGlzdCBhbmQgbW9kYXJncwo+ICsjIGFycmF5cyBmcm9tIGxpbnV4LW1vZC1yMS5lY2xh c3MgdG8gYSBES01TIGNvbmZpZ3VyYXRpb24gZmlsZS4KPiArIwo+ICsjIElmIHRoZSB1cHN0cmVh bSBzb3VyY2VzIGFscmVhZHkgY29udGFpbiBhIERLTVMgY29uZmlndXJhdGlvbiBmaWxlCj4gKyMg dGhpcyBtYXkgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBka21zX2F1dG9jb25mIGZ1bmN0aW9uLiBJ biB0aGlzCj4gKyMgY2FzZSBka21zX2dlbnRvb2Z5X2NvbmYgZnVuY3Rpb24gbWF5IGJlIHVzZWQg dG8gaW5zZXJ0IHRoZSB1c2Vycwo+ICsjIGNvbXBpbGVyLCBNQUtFT1BUUyBhbmQgKkZMQUdTIHBy ZWZlcmVuY2VzIGludG8gdGhlIERLTVMKPiArIyBjb25maWd1cmF0aW9uIGZpbGUuCj4gKyMKPiAr IyBUaGUgZGttc19kb3BhY2thZ2UgZnVuY3Rpb24gaXMgdXNlZCB0byBpbnN0YWxsIGEgREtNUyBw YWNrYWdlLCB0aGlzCj4gKyMgZnVuY3Rpb24gZXhwZWN0cyB0byBmaW5kIGEgZGttcy5jb25mIGZp bGUgYXQgdGhlIHBhdGggc3BlY2lmaWVkCj4gKyMgYnkgdGhlIGFyZ3VtZW50IHBhc3NlZCB0byB0 aGlzIGZ1bmN0aW9uLiBJZiBub3QgcGF0aCBpcyBzcGVjaWZpZWQKPiArIyB0aGUgY3VycmVudCB3 b3JraW5nIGRpcmVjdG9yeSBpcyB1c2VkLgoKdHlwbzogaWYgbm8gcGF0aCBpcyBzcGVjaWZpZWQK Cj4gKyMKPiArIyBGb3IgY29udmVuaWVuY2UgdGhpcyBlY2xhc3MgZXhwb3J0cyBhIHNyY19jb21w aWxlIGZ1bmN0aW9uIHRoYXQgcnVucwo+ICsjIGRrbXNfYXV0b2NvbmYgaWYgdGhlIGRrbXMgVVNF IGZsYWcgaXMgZW5hYmxlZCwgYW5kIGlmIHRoZSBmbGFnIGlzCj4gKyMgZGlzYWJsZWQgaXQgcnVu cyBsaW51eC1tb2QtcjFfc3JjX2NvbXBpbGUgaW5zdGVhZC4gU2ltaWxhcmx5LAo+ICsjIHRoZSBz cmNfaW5zdGFsbCBmdW5jdGlvbiBleHBvcnRlZCBieSB0aGlzIGVjbGFzcyBmaW5kcyBhbnkKPiAr IyBka21zLmNvbmYgZmlsZXMgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb3Igb25l IG9mIGl0cwo+ICsjIHN1YmRpcmVjdG9yaWVzIGFuZCB0aGVuIGNhbGxzIGRrbXNfZG9wYWNrYWdl IGZvciB0aGVzZSBwYWNrYWdlcy4KPiArIyBBbmQgaWYgdGhlIGRrbXMgVVNFIGZsYWcgaXMgZGlz YWJsZWQgaXQgcnVucwo+ICsjIGxpbnV4LW1vZC1yMV9zcmNfaW5zdGFsbCBpbnN0ZWFkLgo+ICsj Cj4gKyMgVGhlIHBrZ19wb3N0aW5zdCBhbmQgcGtnX3Bvc3RybSBmdW5jdGlvbnMgdGhlbiB0YWtl IGNhcmUgb2YKPiArIyAoZGUpcmVnaXN0ZXJpbmcsICh1bilidWlsZGluZywgcmVtb3ZpbmcsIGFu ZC9vciBhZGRpbmcgdGhlIERLTVMKPiArIyBwYWNrYWdlcy4gRm9yIGNvbnZlbmllbmNlIHRoZSBl Y2xhc3MgYWxzbyBleHBvcnRzIGEgcGtnX2NvbmZpZwo+ICsjIGZ1bmN0aW9uIHRoYXQgcmVidWls ZHMgYW5kIHJlaW5zdGFsbHMgYW55IERLTVMgcGFja2FnZXMgdGhlIGVidWlsZAo+ICsjIG93bnMg Zm9yIHRoZSBjdXJyZW50bHkgcnVubmluZyBrZXJuZWwuCj4gKyMKPiArIyBARVhBTVBMRToKPiAr Iwo+ICsjIFRvIGFkZCBES01TIHN1cHBvcnQgdG8gYW4gZWJ1aWxkIGN1cnJlbnRseSB1c2luZyBv bmx5IGxpbnV4LW1vZC1yMS4KPiArIwo+ICsjIENoYW5nZToKPiArIwo+ICsjIEBDT0RFCj4gKyMg aW5oZXJpdCBsaW51eC1tb2QtcjEKPiArIwo+ICsjIHNyY19jb21waWxlKCkgewo+ICsjICAgICBs b2NhbCBtb2RsaXN0PSgKPiArIyAgICAgICAgIGdlbnRvbwo+ICsjICAgICAgICAgZ2FtZXBhZD1r ZXJuZWwvZHJpdmVycy9oaWQ6Z2FtZXBhZDpnYW1lcGFkL29iago+ICsjICAgICApCj4gKyMgICAg IGxvY2FsIG1vZGFyZ3M9KCBOSUhfU09VUkNFPSIke0tWX09VVF9ESVJ9IiApCj4gKyMKPiArIyAg ICAgbGludXgtbW9kLXIxX3NyY19jb21waWxlCj4gKyMgfQo+ICsjIEBDT0RFCj4gKyMKPiArIyBU bzoKPiArIwo+ICsjIEBDT0RFCj4gKyMgaW5oZXJpdCBka21zCj4gKyMKPiArIyBzcmNfY29tcGls ZSgpIHsKPiArIyAgICAgbG9jYWwgbW9kbGlzdD0oCj4gKyMgICAgICAgICBnZW50b28KPiArIyAg ICAgICAgIGdhbWVwYWQ9a2VybmVsL2RyaXZlcnMvaGlkOmdhbWVwYWQ6Z2FtZXBhZC9vYmoKPiAr IyAgICAgKQo+ICsjICAgICBsb2NhbCBtb2RhcmdzPSggTklIX1NPVVJDRT0iJHtLVl9PVVRfRElS fSIgKQo+ICsjCj4gKyMgICAgIGRrbXNfc3JjX2NvbXBpbGUKPiArIyB9Cj4gKyMgQENPREUKPiAr Iwo+ICsjIE5vdGUgdGhhdCBkdWUgdG8gdGhlIGluaGVyaXQgb3JkZXIgdGhlIHNyY19pbnN0YWxs IGFuZCBwa2dfcG9zdGluc3QKPiArIyBwaGFzZSBmdW5jdGlvbnMgbWF5IGhhdmUgdG8gYmUgZGVm aW5lZCBleHBsaWNpdGx5Lgo+ICsjCj4gKyMgQEVYQU1QTEU6Cj4gKyMKPiArIyBBIG1vcmUgY29t cGxleCBleGFtcGxlIGlzIHRoZSBjYXNlIG9mIGFuIGVidWlsZCB0aGF0IGlzIGN1cnJlbnRseQo+ ICsjIGluaGVyaXRpbmcgbGludXgtbW9kLXIxLCBidXQgaXMgbm90IHVzaW5nIGFueSBvZiBpdHMg cGhhc2UKPiArIyBmdW5jdGlvbnMuIEluIHRoaXMgY2FzZSB0aGVyZSBpcyB1c3VhbGx5IG5vIG1v ZGxpc3QgZm9yCj4gKyMgZGttc19hdXRvY29uZiB0byBjb252ZXJ0IGludG8gYSBES01TIGNvbmZp Z3VyYXRpb24gZmlsZS4KPiArIyBJbnN0ZWFkIHRoZSBlYnVpbGQgbXVzdCB1dGlsaXplIGEgZGtt cy5jb25mIHByb3ZpZGVkIGJ5IHVwc3RyZWFtCj4gKyMgaW4gdGhlIHNvdXJjZXMsIG9yIGFsdGVy bmF0aXZlbHkgY3JlYXRlIG9uZSBmcm9tIHNjcmF0Y2ggYW5kCj4gKyMgaW5jbHVkZSBpdCBpbiBG SUxFU0RJUi4KPiArIwo+ICsjIFRpcDogQ2hlY2sgaWYgdGhlcmUgaXMgYSBycG0vZGViIHNwZWMg b3Igc2ltaWxhciBzY3JpcHQgdGhhdCBjYW4KPiArIyBjcmVhdGUgYSBka21zLmNvbmYgdG8gZmlu ZCBhIGhpbnQgb2Ygd2hhdCBpdCBzaG91bGQgbG9vayBsaWtlIGFuZAo+ICsjIHdoZXJlIGl0IHNo b3VsZCBiZSBjcmVhdGVkIGZvciB0aGlzIHBhcnRpY3VsYXIgcGFja2FnZS4KPiArIwo+ICsjIEBD T0RFCj4gKyMgaW5oZXJpdCBka21zIGxpbnV4LW1vZC1yMQo+ICsjCj4gKyMgc3JjX3ByZXBhcmUo KSB7Cj4gKyMgICBkZWZhdWx0Cj4gKyMgICBzZWQgLWUgInMvQFZFUlNJT05ALyR7UFZ9LyIgLWkg bW9kdWxlcy9ka21zLmNvbmYgfHwgZGllCj4gKyMgfQo+ICsjCj4gKyMgc3JjX2NvbXBpbGUoKSB7 Cj4gKyMgICAgIGlmIHVzZSBka21zOyB0aGVuCj4gKyMgICAgICAgICBka21zX2dlbnRvb2Z5X2Nv bmYgbW9kdWxlcy9ka21zLmNvbmYKPiArIyAgICAgZWxzZQo+ICsjICAgICAgICAgZW1ha2UgIiR7 TU9EVUxFU19NQUtFQVJHU1tAXX0iIG1vZHVsZXMKPiArIyAgICAgZmkKPiArIyB9Cj4gKyMKPiAr IyBzcmNfaW5zdGFsbCgpIHsKPiArIyAgICAgaWYgdXNlIGRrbXM7IHRoZW4KPiArIyAgICAgICAg IGRrbXNfZG9wYWNrYWdlIG1vZHVsZXMKPiArIyAgICAgZWxzZQo+ICsjICAgICAgICAgbGludXhf ZG9tb2R1bGUgbW9kdWxlcy9teW1vZHVsZS5rbwo+ICsjICAgICAgICAgbW9kdWxlc19wb3N0X3By b2Nlc3MKPiArIyAgICAgZmkKPiArIyAgICAgZWluc3RhbGxkb2NzCj4gKyMgfQo+ICsjCj4gKyMg cGtnX3Bvc3RpbnN0KCkgewo+ICsjICAgICBka21zX3BrZ19wb3N0aW5zdAo+ICsjIH0KPiArIyBA Q09ERQo+ICsKPiArY2FzZSAke0VBUEl9IGluCj4gKwk4KSA7Owo+ICsJKikgZGllICIke0VDTEFT U306IEVBUEkgJHtFQVBJOi0wfSBub3Qgc3VwcG9ydGVkIiA7Owo+ICtlc2FjCj4gKwo+ICtpZiBb WyAteiAke19ES01TX0VDTEFTU30gXV07IHRoZW4KPiArX0RLTVNfRUNMQVNTPTEKPiArCj4gK2lu aGVyaXQgbGludXgtbW9kLXIxCj4gKwo+ICtJVVNFPSJka21zIgo+ICsKPiArUkRFUEVORD0iZGtt cz8gKCBzeXMta2VybmVsL2RrbXMgJHtCREVQRU5EfSApIgo+ICtJREVQRU5EPSJka21zPyAoIHN5 cy1rZXJuZWwvZGttcyAke0JERVBFTkR9ICkiCj4gKwo+ICsjIEBFQ0xBU1NfVkFSSUFCTEU6IERL TVNfUEFDS0FHRVMKPiArIyBAT1VUUFVUX1ZBUklBQkxFCj4gKyMgQERFU0NSSVBUSU9OOgo+ICsj IEFmdGVyIGRrbXNfc3JjX2luc3RhbGwgb3IgZGttc19kb3BhY2thZ2UgdGhpcyBhcnJheSB3aWxs IGJlCj4gKyMgcG9wdWxhdGVkIHdpdGggYWxsIGRrbXMgcGFja2FnZXMgaW5zdGFsbGVkIGJ5IHRo ZSBlYnVpbGQuIFRoZSBuYW1lcwo+ICsjIGFuZCB2ZXJzaW9ucyBvZiBlYWNoIHBhY2thZ2UgYXJl IHNlcGFyYXRlZCB3aXRoIGEgJzonLgo+ICtES01TX1BBQ0tBR0VTPSgpCj4gKwo+ICsjIEBGVU5D VElPTjogZGttc19nZW50b29meV9jb25mCj4gKyMgQFVTQUdFOiA8bGlzdCBvZiBmaWxlcz4KPiAr IyBAREVTQ1JJUFRJT046Cj4gKyMgQWRkcyBsaW51eC1tb2QtcjEncyBNT0RVTEVTX01BS0VBUkdT IGFuZCB0aGUgZWJ1aWxkcyBtb2RhcmdzIHRvIGFueQo+ICsjIG1ha2UgY2FsbHMgaW4gYW4gZXhp c3RpbmcgZGttcy5jb25mLiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkCj4gKyMgZm9yIGV2 ZXJ5IGRrbXMuY29uZiB0aGF0IHdpbGwgYmUgaW5zdGFsbGVkIHRvIGVuc3VyZSB0aGF0IHRoZSB1 c2Vycwo+ICsjIGNvbXBpbGVyIGNob2ljZSBhbmQgZmxhZ3MgYXJlIHJlc3BlY3RlZCBieSBES01T IGF0IHJ1bnRpbWUuCj4gKyMgTXVsdGlwbGUgZmlsZXMgbWF5IGJlIHBhc3NlZCB0byB0aGlzIGZ1 bmN0aW9uIGFzIGFyZ3VtZW50cy4gSWYgbm8KPiArIyBhcmd1bWVudHMgYXJlIGdpdmVuIHRoYW4g dGhpcyBmdW5jdGlvbiBydW5zIG9uIHRoZSBka21zLmNvbmYgaW4gdGhlCj4gKyMgcHJlc2VudCB3 b3JraW5nIGRpcmVjdG9yeS4gRG9lcyBub3RoaW5nIGlmIFVTRT1ka21zIGlzIGRpc2FibGVkLgo+ ICtka21zX2dlbnRvb2Z5X2NvbmYoKSB7Cj4gKwlkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNO QU1FfSAiJEAiCj4gKwo+ICsJdXNlIGRrbXMgfHwgcmV0dXJuIDAKPiArCVtbIC16ICR7TU9EVUxF U19PUFRJT05BTF9JVVNFfSBdXSB8fAo+ICsJCXVzZSAiJHtNT0RVTEVTX09QVElPTkFMX0lVU0Uj K30iIHx8IHJldHVybiAwCj4gKwo+ICsJbG9jYWwgZmlsZSBpbnB1dD0oICIke0B9IiApCj4gKwlb WyAkeyN9IC1lcSAwIF1dICYmIGlucHV0PSggZGttcy5jb25mICkKPiArCj4gKwkjIFRoaXMgd2ls bCBzZXQgZWRrbXNhcmdzCj4gKwlka21zX3Nhbml0aXplX21ha2VhcmdzCj4gKwo+ICsJZm9yIGZp bGUgaW4gIiR7aW5wdXRbQF19IjsgZG8KPiArCQlbWyAtZiAke2ZpbGV9IF1dIHx8Cj4gKwkJCWRp ZSAiJHtGVU5DTkFNRX06IERLTVMgY29uZiBkb2VzIG5vdCBleGlzdDogJHtmaWxlfSIKPiArCj4g KwkJc2VkIC1pICIke2ZpbGV9IiBcCj4gKwkJCS1lICIvXk1BS0UvIHM6bWFrZSA6bWFrZSAke2Vk a21zYXJnc1sqXX0gOiIgXAo+ICsJCQktZSAiL15NQUtFLyBzOm1ha2UkOm1ha2UgJHtlZGttc2Fy Z3NbKl19OiIgXAo+ICsJCQktZSAiL15NQUtFLyBzOm1ha2VcIjptYWtlICR7ZWRrbXNhcmdzWypd fVwiOiIgXAo+ICsJCQktZSAiL15NQUtFLyBzOidtYWtlJyA6J21ha2UnICR7ZWRrbXNhcmdzWypd fSA6ICIgXAo+ICsJCQktZSAiL15NQUtFLyBzOidtYWtlJyQ6J21ha2UnICR7ZWRrbXNhcmdzWypd fToiIFwKPiArCQkJLWUgIi9eTUFLRS8gczonbWFrZSdcIjonbWFrZScgJHtlZGttc2FyZ3NbKl19 XCI6IiB8fAo+ICsJCQkJZGllICIke0ZVTkNOQU1FfTogZmFpbGVkIHRvIEdlbnRvbydmeSAke2Zp bGV9Igo+ICsJZG9uZQo+ICt9Cj4gKwo+ICsjIEBGVU5DVElPTjogZGttc19zYW5pdGl6ZV9tYWtl YXJncwo+ICsjIEBERVNDUklQVElPTjoKPiArIyBVc2VzIGxpbnV4LW1vZC1yMSdzIE1PRFVMRVNf TUFLRUFSR1MgYW5kIG1vZGFyZ3MgdG8gc2V0IHRoZQo+ICsjIGVka21zYXJncyBhcnJheS4gVGhp cyBhcnJheSBjb250YWlucyBhbGwgdmFyaWFibGVzIGZyb20gdGhlIHR3bwo+ICsjIGlucHV0IGFy cmF5cyBleGNlcHQgdGhvc2UgcmVmZXJlbmNpbmcgdGhlIGN1cnJlbnQga2VybmVsIHZlcnNpb24u Cj4gKyMgUXVvdGVzIGFyZSBhZGRlZCB0byB0aGUgdmFyaWFibGVzIHRvIHByZXZlbnQgcGFyc2lu ZyBwcm9ibGVtcyBhdAo+ICsjIERLTVMgcnVudGltZS4gRG9lcyBub3RoaW5nIGlmIFVTRT1ka21z IGlzIGRpc2FibGVkLgo+ICtka21zX3Nhbml0aXplX21ha2VhcmdzKCkgewo+ICsJZGVidWctcHJp bnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgo+ICsKPiArCXVzZSBka21zIHx8IHJldHVybiAw Cj4gKwlbWyAteiAke01PRFVMRVNfT1BUSU9OQUxfSVVTRX0gXV0gfHwKPiArCQl1c2UgIiR7TU9E VUxFU19PUFRJT05BTF9JVVNFIyt9IiB8fCByZXR1cm4gMAo+ICsKPiArCWxvY2FsIC1hIGFyZ3M9 KCAiJHtNT0RVTEVTX01BS0VBUkdTW0BdfSIgKQo+ICsJW1sgJHttb2RhcmdzQGF9ID09ICphKiBd XSAmJiBhcmdzKz0oICIke21vZGFyZ3NbQF19IiApCj4gKwo+ICsJZWRrbXNhcmdzPSggJHtNQUtF T1BUU30gKQo+ICsJbG9jYWwgYXJnCj4gKwlmb3IgYXJnIGluICIke2FyZ3NbQF19IjsgZG8KPiAr CQkjIFJlcGxhY2UgR2VudG9vIGtlcm5lbCB0YXJnZXRzIHdpdGggREtNUyB2YXJpYWJsZXMKPiAr CQljYXNlICR7YXJnfSBpbgo+ICsJCQkqPSR7S1ZfT1VUX0RJUn18Kj0ke0tWX0RJUn0pCj4gKwkJ CQllZGttc2FyZ3MrPSggIiR7YXJnJSU9Kn09XCR7a2VybmVsX3NvdXJjZV9kaXJ9IiApCj4gKwkJ CTs7Cj4gKwkJCSR7S1ZfT1VUX0RJUn18JHtLVl9ESVJ9KQo+ICsJCQkJZWRrbXNhcmdzKz0oICJc JHtrZXJuZWxfc291cmNlX2Rpcn0iICkKPiArCQkJOzsKPiArCQkJKj0ke0tWX0ZVTEx9KQo+ICsJ CQkJZWRrbXNhcmdzKz0oICIke2FyZyUlPSp9PVwke2tlcm5lbHZlcn0iICkKPiArCQkJOzsKPiAr CQkJJHtLVl9GVUxMfSkKPiArCQkJCWVka21zYXJncys9KCAiXCR7a2VybmVsdmVyfSIgKQo+ICsJ CQk7Owo+ICsJCQkqJHtLVl9GVUxMfSp8KiR7S1ZfRElSfSp8KiR7S1ZfT1VUX0RJUn0qKQo+ICsJ CQkJIyBTa2lwIG90aGVyIGFyZ3VtZW50cyBwb2ludGluZyB0byB0aGUgY3VycmVudCB0YXJnZXQK PiArCQkJCWNvbnRpbnVlCj4gKwkJCTs7Cj4gKwkJCSo9KikKPiArCQkJCSMgUXVvdGUgdmFsdWVz IGZvciB2YXJpYWJsZXMgdG8gYXZvaWQgcGFyc2luZyBwcm9ibGVtcwo+ICsJCQkJZWRrbXNhcmdz Kz0oICIke2FyZyUlPSp9PScke2FyZyMqPX0nIiApCj4gKwkJCTs7Cj4gKwkJCSopCj4gKwkJCQll ZGttc2FyZ3MrPSggIiR7YXJnfSIgKQo+ICsJCQk7Owo+ICsJCWVzYWMKPiArCWRvbmUKPiArfQo+ ICsKPiArIyBARlVOQ1RJT046IGRrbXNfYXV0b2NvbmYKPiArIyBAVVNBR0U6IFstLW5vLWtlcm5l bHJlbGVhc2V8LS1uby1hdXRvaW5zdGFsbF0KPiArIyBAREVTQ1JJUFRJT046Cj4gKyMgVXNlcyBs aW51eC1tb2QtcjEncyBtb2RsaXN0IGFuZCBtb2RhcmdzIHRvIGNvbnN0cnVjdCBhIERLTVMKPiAr IyBjb25maWd1cmF0aW9uIGZpbGUuIEJ5IGRlZmF1bHQgREtNUyBhZGRzIHRoZSAnS0VSTkVMUkVM RUFTRT0nCj4gKyMgdmFyaWFibGUgdG8gYWxsIG1ha2UgY29tbWFuZHMuIFNvbWUgTWFrZWZpbGVz IHdpbGwgYmVoYXZlCj4gKyMgZGlmZmVyZW50bHkgd2hlbiB0aGlzIHZhcmlhYmxlIGlzIHNldCwg aWYgdGhpcyBsZWFkcyB0byBwcm9ibGVtcwo+ICsjIHBhc3MgdGhlIC0tbm8ta2VybmVscmVsZWFz ZSBhcmd1bWVudCB0byB0aGlzIGZ1bmN0aW9uIHRvIHN1cHByZXNzCj4gKyMgdGhlIGFkZGl0aW9u IG9mICdLRVJORUxSRUxFQVNFPScgdG8gdGhlIGNhbGxzIHRvIG1ha2UgYXQgcnVudGltZS4KPiAr IyBCeSBkZWZhdWx0IHRoZSBjcmVhdGVkIERLTVMgY29uZmlndXJhdGlvbiBmaWxlIHdpbGwgZW5h YmxlCj4gKyMgYXV0b21hdGljIGluc3RhbGxhdGlvbiBvZiBhbGwga2VybmVsIG1vZHVsZXMuIFRv IGRpc2FibGUgdGhpcyBhZGQKPiArIyB0aGUgLS1uby1hdXRvaW5zdGFsbCBhcmd1bWVudC4gRG9l cyBub3RoaW5nIGlmIFVTRT1ka21zIGlzIGRpc2FibGVkLgo+ICtka21zX2F1dG9jb25mKCkgewo+ ICsJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgo+ICsKPiArCXVzZSBka21z IHx8IHJldHVybiAwCj4gKwlbWyAteiAke01PRFVMRVNfT1BUSU9OQUxfSVVTRX0gXV0gfHwKPiAr CQl1c2UgIiR7TU9EVUxFU19PUFRJT05BTF9JVVNFIyt9IiB8fCByZXR1cm4gMAo+ICsKPiArCWxv Y2FsIGFyZyBhdXRvaW5zdGFsbD0xIG1ha2VfY29tbWFuZD1tYWtlCj4gKwlbWyAkeyN9IC1ndCAy IF1dICYmIGRpZSAiJHtGVU5DTkFNRX06IHRvbyBtYW55IGFyZ3VtZW50cyIKPiArCWZvciBhcmcg aW4gIiR7QH0iOyBkbwo+ICsJCWNhc2UgJHthcmd9IGluCj4gKwkJCS0tbm8ta2VybmVscmVsZWFz ZSkKPiArCQkJCSMgUGVyIERLTVMgbWFudWFsLCBxdW90aW5nIGRpc2FibGVzIHNldHRpbmcgS0VS TkVMUkVMRUFTRQo+ICsJCQkJbWFrZV9jb21tYW5kPVwnbWFrZVwnCj4gKwkJCTs7Cj4gKwkJCS0t bm8tYXV0b2luc3RhbGwpCj4gKwkJCQlhdXRvaW5zdGFsbD0KPiArCQkJOzsKPiArCQkJKikKPiAr CQkJCWRpZSAiJHtGVU5DTkFNRX06IGludmFsaWQgYXJndW1lbnQgJHthcmd9Igo+ICsJCQk7Owo+ ICsJCWVzYWMKPiArCWRvbmUKPiArCj4gKwltb2R1bGVzX3Byb2Nlc3NfbW9kbGlzdAo+ICsKPiAr CWxvY2FsIGluZGV4IG1vZCBuYW1lIHBhY2thZ2UgZGttc19jb25maWdfZmlsZXM9KCkKPiArCWZv ciBtb2QgaW4gIiR7bW9kbGlzdFtAXX0iOyBkbwo+ICsJCW5hbWU9JHttb2QlJT0qfQo+ICsJCW1v ZD0ke21vZCMiJHtuYW1lfSJ9Cj4gKwkJSUZTPTogcmVhZCAtcmEgbW9kIDw8PCIke21vZCM9fSIK PiArCj4gKwkJcHVzaGQgIiR7bW9kWzFdfSIgPi9kZXYvbnVsbCB8fCBkaWUKPiArCQlpZiBbWyAt ZiBka21zLmNvbmYgXV07IHRoZW4KPiArCQkJIyBGaW5kIHRoZSBpbmRleCBvZiBhbiBleGlzdGlu ZyBtb2R1bGUsIGVsc2UgZmluZCB0aGUKPiArCQkJIyBmaXJzdCBhdmFpbGFibGUgaW5kZXguCj4g KwkJCWluZGV4PSQoCj4gKwkJCQlzb3VyY2UgZGttcy5jb25mICY+L2Rldi9udWxsIHx8Cj4gKwkJ CQkJZGllICIke0ZVTkNOQU1FfTogaW52YWxpZCBka21zLmNvbmYgYXQgJHtQV0R9Igo+ICsJCQkJ Zm9yIGkgaW4gIiR7IUJVSUxUX01PRFVMRV9OQU1FW0BdfSI7IGRvCj4gKwkJCQkJaWYgW1sgJHtu YW1lfSA9PSAke0JVSUxUX01PRFVMRV9OQU1FWyR7aX1dfSBdXQo+ICsJCQkJCXRoZW4KPiArCQkJ CQkJZWNobyAke2l9IHx8IGRpZQo+ICsJCQkJCQlleGl0IDAKPiArCQkJCQlmaQo+ICsJCQkJZG9u ZQo+ICsJCQkJZWNobyAkeyNCVUlMVF9NT0RVTEVfTkFNRVtAXX0gfHwgZGllCj4gKwkJCSkgfHwg Y29udGludWUKPiArCQllbHNlCj4gKwkJCSMgSWYgdGhlIGtlcm5lbCBtb2R1bGVzIGFyZSBpbiBh IHN1YmRpciBhZGQgdGhpcyB0byB0aGUKPiArCQkJIyBES01TIHBhY2thZ2UgbmFtZSBpZGVudGlm aWVyIHRvIGVuc3VyZSBpdCBpcyB1bmlxdWUuCj4gKwkJCSMgVGhlcmUgbWF5IGJlIG11bHRpcGxl IHN1YmRpcnMgd2l0aCBrZXJuZWwgbW9kdWxlcy4KPiArCQkJaWYgW1sgJHtQV0R9ID09ICR7U30g XV07IHRoZW4KPiArCQkJCXBhY2thZ2U9JHtQTn0KPiArCQkJZWxzZQo+ICsJCQkJcGFja2FnZT0k e1BOfV8ke25hbWV9Cj4gKwkJCWZpCj4gKwkJCWNhdCA8PC1FT0YgPiBka21zLmNvbmYgfHwgZGll Cj4gKwkJCQlQQUNLQUdFX05BTUU9JHtwYWNrYWdlfQo+ICsJCQkJUEFDS0FHRV9WRVJTSU9OPSR7 UFZ9Cj4gKwkJCUVPRgo+ICsJCQlpZiBbWyAtbiAke2F1dG9pbnN0YWxsfSBdXTsgdGhlbgo+ICsJ CQkJZWNobyAiQVVUT0lOU1RBTEw9eWVzIiA+PiBka21zLmNvbmYgfHwgZGllCj4gKwkJCWVsc2UK PiArCQkJCWVjaG8gIkFVVE9JTlNUQUxMPW5vIiA+PiBka21zLmNvbmYgfHwgZGllCj4gKwkJCWZp Cj4gKwkJCWluZGV4PTAKPiArCQlmaQo+ICsKPiArCQkjIElmIHRoZXJlIGlzIG5vIE1BS0UgY29t bWFuZCBpbiB0aGlzIGRrbXMuY29uZiB5ZXQsIGFkZCBvbmUKPiArCQlpZiAhIGdyZXAgLXFFICJe TUFLRShcWzBcXXwpPSIgZGttcy5jb25mOyB0aGVuCj4gKwkJCWVjaG8gIk1BS0VbMF09XCIke21h a2VfY29tbWFuZH0gJHttb2RbM119XCIiID4+IGRrbXMuY29uZiB8fCBkaWUKPiArCQlmaQo+ICsK PiArCQkjIERLTVMgZW5mb3JjZXMgdGhhdCB0aGUgaW5zdGFsbCB0YXJnZXQgc3RhcnRzIHdpdGgg b25lIG9mCj4gKwkJIyB0aGVzZSBvcHRpb25zLgo+ICsJCWxvY2FsIGRlc3Q9JHttb2RbMF19Cj4g KwkJaWYgISBbWyAke2Rlc3R9ID09IC9rZXJuZWwqIHx8ICR7ZGVzdH0gPT0gL3VwZGF0ZXMqIHx8 Cj4gKwkJCSR7ZGVzdH0gPT0gL2V4dHJhKiBdXQo+ICsJCXRoZW4KPiArCQkJZGVzdD0vZXh0cmEv JHtkZXN0fQo+ICsJCWZpCj4gKwo+ICsJCSMgQWRkIG9uZSBlbXB0eSBsaW5lIGluIGNhc2UgdXBz dHJlYW0gcHJvdmlkZWQgZGttcy5jb25mIGlzCj4gKwkJIyBtaXNzaW5nIGEgbGluZSBlbmRpbmcg b24gdGhlIGZpbmFsIGxpbmUuIEFsc28gbG9va3MgbmljZXIKPiArCQkjIGJlY2F1c2Ugbm93IGFs bCB0aGUgc2V0dGluZ3MgZm9yIGVhY2gga2VybmVsIG1vZHVsZSBhcmUKPiArCQkjIGdyb3VwZWQg dG9nZXRoZXIuCj4gKwkJY2F0IDw8LUVPRiA+PiBka21zLmNvbmYgfHwgZGllCj4gKwo+ICsJCQlC VUlMVF9NT0RVTEVfTkFNRVske2luZGV4fV09JHtuYW1lfQo+ICsJCQlCVUlMVF9NT0RVTEVfTE9D QVRJT05bJHtpbmRleH1dPS4ke21vZFsyXSMiJHttb2RbMV0lLy59In0vCj4gKwkJCURFU1RfTU9E VUxFX05BTUVbJHtpbmRleH1dPSR7bmFtZX0KPiArCQkJREVTVF9NT0RVTEVfTE9DQVRJT05bJHtp bmRleH1dPSR7ZGVzdH0KPiArCQlFT0YKPiArCQlpZiB1c2Ugc3RyaXA7IHRoZW4KPiArCQkJZWNo byAiU1RSSVBbJHtpbmRleH1dPXllcyIgPj4gZGttcy5jb25mIHx8IGRpZQo+ICsJCWVsc2UKPiAr CQkJZWNobyAiU1RSSVBbJHtpbmRleH1dPW5vIiA+PiBka21zLmNvbmYgfHwgZGllCj4gKwkJZmkK PiArCj4gKwkJIyBBcHBlbmQgdGhpcyBka21zLmNvbmYgdG8gb3VyIHRyYWNrZXIgYXJyYXkKPiAr CQlpZiAhIGhhcyAiJHtQV0R9L2RrbXMuY29uZiIgIiR7ZGttc19jb25maWdfZmlsZXNbQF19Ijsg dGhlbgo+ICsJCQlka21zX2NvbmZpZ19maWxlcys9KCAiJHtQV0R9L2RrbXMuY29uZiIgKQo+ICsJ CWZpCj4gKwkJcG9wZCA+L2Rldi9udWxsIHx8IGRpZQo+ICsJZG9uZQo+ICsKPiArCSMgQWRkIHRo ZSB1c2VycyBjb21waWxlciAqRkxBR1MgYW5kIE1BS0VPUFRTIHRvIGFsbCBka21zLmNvbmYncwo+ ICsJZGttc19nZW50b29meV9jb25mICIke2RrbXNfY29uZmlnX2ZpbGVzW0BdfSIKPiArfQo+ICsK PiArIyBARlVOQ1RJT046IGRrbXNfZG9wYWNrYWdlCj4gKyMgQFVTQUdFOiA8ZGttcyBwYWNrYWdl IHJvb3Q+Cj4gKyMgQERFU0NSSVBUSU9OOgo+ICsjIEluc3RhbGxzIGEgREtNUyBwYWNrYWdlIHRv ICR7RUR9L3Vzci9zcmMuIElmIG5vIHBhdGggaXMgc3BlY2lmaWVkCj4gKyMgYXMgdGhlIGZpcnN0 IGFyZ3VtZW50LCB0aGVuIHRoZSByb290IG9mIHRoZSBwYWNrYWdlIGlzIGFzc3VtZWQgdG8KPiAr IyBiZSB0aGUgcHdkLiBBcHBlbmRzIHRoZSBpbnN0YWxsZWQgcGFja2FnZSB0byB0aGUgZ2xvYmFs Cj4gKyMgREtNU19QQUNLQUdFUyBhcnJheS4gRG9lcyBub3RoaW5nIGlmIFVTRT1ka21zIGlzIGRp c2FibGVkLgo+ICtka21zX2RvcGFja2FnZSgpIHsKPiArCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7 RlVOQ05BTUV9ICIkQCIKPiArCj4gKwl1c2UgZGttcyB8fCByZXR1cm4gMAo+ICsJW1sgLXogJHtN T0RVTEVTX09QVElPTkFMX0lVU0V9IF1dIHx8Cj4gKwkJdXNlICIke01PRFVMRVNfT1BUSU9OQUxf SVVTRSMrfSIgfHwgcmV0dXJuIDAKPiArCj4gKwlbWyAkeyN9IC1ndCAxIF1dICYmIGRpZSAiJHtG VU5DTkFNRX06IHRvbyBtYW55IGFyZ3VtZW50cyIKPiArCWxvY2FsIHBhY2thZ2Vfcm9vdD0kezE6 LSIke1BXRH0ifQo+ICsJW1sgJHtwYWNrYWdlX3Jvb3R9ICE9IC8qIF1dICYmIHBhY2thZ2Vfcm9v dD0ke1BXRH0vJHtwYWNrYWdlX3Jvb3R9Cj4gKwlbWyAtZiAke3BhY2thZ2Vfcm9vdH0vZGttcy5j b25mIF1dIHx8Cj4gKwkJZGllICIke0ZVTkNOQU1FfTogbm8gREtNUyBjb25mIGF0ICR7cGFja2Fn ZV9yb290fSIKPiArCSMgc3Vic2hlbGwgdG8gYXZvaWQgcG9sbHV0aW5nIHRoZSBlbnZpcm9ubWVu dCB3aXRoIHRoZSBka21zLmNvbmYuCj4gKwlsb2NhbCBwYWNrYWdlPSIkKAo+ICsJCXNvdXJjZSAi JHtwYWNrYWdlX3Jvb3R9L2RrbXMuY29uZiIgJj4vZGV2L251bGwgfHwKPiArCQkJZGllICIke0ZV TkNOQU1FfTogaW52YWxpZCBES01TIGNvbmYgYXQgJHtwYWNrYWdlX3Jvb3R9Igo+ICsJCWRlc3Q9 L3Vzci9zcmMvJHtQQUNLQUdFX05BTUV9LSR7UEFDS0FHRV9WRVJTSU9OfQo+ICsJCSMgUmVwbGFj ZSByZWZlcmVuY2VzIHRvIGN1cnJlbnQgZGlyIHdpdGggbWVyZ2VkIGRpcgo+ICsJCXNlZCAtaSAi JHtwYWNrYWdlX3Jvb3R9L2RrbXMuY29uZiIgXAo+ICsJCQktZSAicyMke3BhY2thZ2Vfcm9vdH0j JHtFUFJFRklYfSR7ZGVzdH0jZyIgfHwgZGllCj4gKwkJbWtkaXIgLXAgIiR7RUR9JHtkZXN0fSIg fHwgZGllCj4gKwkJY3AgLWEgIiR7cGFja2FnZV9yb290fSIvKiAiJHtFRH0ke2Rlc3R9IiB8fCBk aWUKPiArCQltb2R1bGVzX3Byb2Nlc3NfZHJhY3V0LmNvbmYuZCAiJHtCVUlMVF9NT0RVTEVfTkFN RVtAXX0iCj4gKwkJZWNobyAiJHtQQUNLQUdFX05BTUV9OiR7UEFDS0FHRV9WRVJTSU9OfSIKPiAr CSkiCj4gKwlpZiBoYXMgIiR7cGFja2FnZX0iICIke0RLTVNfUEFDS0FHRVNbQF19IjsgdGhlbgo+ ICsJCWRpZSAiJHtGVU5DTkFNRX06IERLTVMgcGFja2FnZSB3aXRoIHRoZSBzYW1lIG5hbWUgaXMg YWxyZWFkeSBpbnN0YWxsZWQiCj4gKwllbGlmIFtbICR7cGFja2FnZX0gPT0gOiogfHwgJHtwYWNr YWdlfSA9PSAqOiBdXTsgdGhlbgo+ICsJCWRpZSAiJHtGVU5DTkFNRX06IERLTVMgY29uZiBkaWQg bm90IHNldCBhIHBhY2thZ2UgbmFtZSBvciB2ZXJzaW9uIgo+ICsJZWxzZQo+ICsJCURLTVNfUEFD S0FHRVMrPSggIiR7cGFja2FnZX0iICkKPiArCWZpCj4gK30KPiArCj4gKyMgQEZVTkNUSU9OOiBk a21zX3NyY19jb21waWxlCj4gKyMgQERFU0NSSVBUSU9OOgo+ICsjIFJ1bnMgZGttc19hdXRvY29u ZiBpZiBVU0U9ZGttcyBpcyBlbmFibGVkLCBvdGhlcndpc2UgcnVucwo+ICsjIGxpbnV4LW1vZC1y MV9zcmNfY29tcGlsZS4gQXJndW1lbnRzIGdpdmVuIHRvIHRoaXMgZnVuY3Rpb24gYXJlCj4gKyMg cGFzc2VkIG9udG8gZGttc19hdXRvY29uZi4KPiArZGttc19zcmNfY29tcGlsZSgpIHsKPiArCWRl YnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIkQCIKPiArCj4gKwlpZiAhIHVzZSBka21z OyB0aGVuCj4gKwkJbGludXgtbW9kLXIxX3NyY19jb21waWxlCj4gKwkJcmV0dXJuIDAKPiArCWZp Cj4gKwlbWyAteiAke01PRFVMRVNfT1BUSU9OQUxfSVVTRX0gXV0gfHwKPiArCQl1c2UgIiR7TU9E VUxFU19PUFRJT05BTF9JVVNFIyt9IiB8fCByZXR1cm4gMAo+ICsKPiArCWRrbXNfYXV0b2NvbmYg IiR7QH0iCj4gK30KPiArCj4gKyMgQEZVTkNUSU9OOiBka21zX3NyY19pbnN0YWxsCj4gKyMgQERF U0NSSVBUSU9OOgo+ICsjIFJ1bnMgZGttc19kb3BhY2thZ2UgZm9yIGVhY2ggZGttcy5jb25mIGZv dW5kIGluIHRoZSBwd2Qgb3IgYW55Cj4gKyMgc3ViLWRpcmVjdG9yaWVzLiBUaGVuIHJ1bnMgZWlu c3RhbGxkb2NzLiBJZiBVU0U9ZGttcyBpcyBkaXNhYmxlZAo+ICsjIHRoZW4gbGludXgtbW9kLXIx X3NyY19pbnN0YWxsIGlzIHJ1biBpbnN0ZWFkLgo+ICtka21zX3NyY19pbnN0YWxsKCkgewo+ICsJ ZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgo+ICsKPiArCWlmICEgdXNlIGRr bXM7IHRoZW4KPiArCQlsaW51eC1tb2QtcjFfc3JjX2luc3RhbGwKPiArCQlyZXR1cm4gMAo+ICsJ ZmkKPiArCVtbIC16ICR7TU9EVUxFU19PUFRJT05BTF9JVVNFfSBdXSB8fAo+ICsJCXVzZSAiJHtN T0RVTEVTX09QVElPTkFMX0lVU0UjK30iIHx8IHJldHVybiAwCj4gKwo+ICsJd2hpbGUgSUZTPSBy ZWFkIC1yIC1kICcnIGZpbGU7IGRvCj4gKwkJZGttc19kb3BhY2thZ2UgJChkaXJuYW1lICIke2Zp bGV9IikKPiArCWRvbmUgPCA8KGZpbmQgIiR7UFdEfSIgLXR5cGUgZiAtbmFtZSBka21zLmNvbmYg LXByaW50MCB8fCBkaWUpCj4gKwo+ICsJZWluc3RhbGxkb2NzCj4gK30KPiArCj4gKyMgQEZVTkNU SU9OOiBka21zX3BrZ19jb25maWcKPiArIyBAREVTQ1JJUFRJT046Cj4gKyMgUmVidWlsZHMgYW5k IHJlaW5zdGFsbHMgYWxsIERLTVMgcGFja2FnZXMgb3duZWQgYnkgdGhlIGVidWlsZC4KPiArIyBE b2VzIG5vdGhpbmcgaWYgVVNFPWRrbXMgaXMgZGlzYWJsZWQuCj4gK2RrbXNfcGtnX2NvbmZpZygp IHsKPiArCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIkQCIKPiArCj4gKwl1c2Ug ZGttcyB8fCByZXR1cm4gMAo+ICsJW1sgLXogJHtNT0RVTEVTX09QVElPTkFMX0lVU0V9IF1dIHx8 Cj4gKwkJdXNlICIke01PRFVMRVNfT1BUSU9OQUxfSVVTRSMrfSIgfHwgcmV0dXJuIDAKPiArCj4g Kwlsb2NhbCBwYWNrYWdlIEFSQ0g9JCh0Yy1hcmNoLWtlcm5lbCkKPiArCWZvciBwYWNrYWdlIGlu ICIke0RLTVNfUEFDS0FHRVNbQF19IjsgZG8KPiArCQlJRlM9OiByZWFkIC1yYSBwYWNrYWdlIDw8 PCIke3BhY2thZ2UjfSIKPiArCQlbWyAkeyNwYWNrYWdlW0BdfSAtZXEgMiBdXSB8fAo+ICsJCQlk aWUgIiR7RlVOQ05BTUV9OiBpbmNvcnJlY3QgcGFja2FnZSBpbiAke0RLTVNfUEFDS0FHRVNbKl19 Igo+ICsJCWVpbmZvICJCdWlsZGluZyAke3BhY2thZ2VbMF19IHZlcnNpb24gJHtwYWNrYWdlWzFd fSIKPiArCQlka21zIGJ1aWxkIC1tICR7cGFja2FnZVswXX0gLXYgJHtwYWNrYWdlWzFdfSAtLWZv cmNlIHx8Cj4gKwkJCWRpZSAiJHtGVU5DTkFNRX06IGZhaWxlZCB0byBidWlsZCAke3BhY2thZ2V9 IHdpdGggREtNUyIKPiArCQllaW5mbyAiSW5zdGFsbGluZyAke3BhY2thZ2VbMF19IHZlcnNpb24g JHtwYWNrYWdlWzFdfSIKPiArCQlka21zIGluc3RhbGwgLW0gJHtwYWNrYWdlWzBdfSAtdiAke3Bh Y2thZ2VbMV19IC0tZm9yY2UgfHwKPiArCQkJZGllICIke0ZVTkNOQU1FfTogZmFpbGVkIHRvIGlu c3RhbGwgJHtwYWNrYWdlfSB3aXRoIERLTVMiCj4gKwlkb25lCj4gKwo+ICsJaWYgW1sgJHtNT0RV TEVTX0lOSVRSQU1GU19JVVNFfSBdXSAmJiB1c2UgZGlzdC1rZXJuZWwgJiYKPiArCQl1c2UgJHtN T0RVTEVTX0lOSVRSQU1GU19JVVNFIyt9Cj4gKwl0aGVuCj4gKwkJZGlzdC1rZXJuZWxfcmVpbnN0 YWxsX2luaXRyYW1mcyAiJHtLVl9ESVJ9IiAiJHtLVl9GVUxMfSIgLS1hbGwKPiArCWZpCj4gK30K PiArCj4gKyMgQEZVTkNUSU9OOiBka21zX3Bvc3RpbnN0Cj4gKyMgQERFU0NSSVBUSU9OOgo+ICsj IFJlZ2lzdGVycywgYnVpbGRzIGFuZCBpbnN0YWxscyBhbGwgREtNUyBwYWNrYWdlcyBvd25lZCBi eSB0aGUKPiArIyBlYnVpbGQuIENhbGxzIGRpc3Qta2VybmVsX3JlaW5zdGFsbF9pbml0cmFtZnMg aWYgcmVxdWVzdGVkIGJ5IHRoZQo+ICsjIGVidWlsZCB2aWEgbGludXgtbW9kLXIxJ3MgTU9EVUxF U19JTklUUkFNRlNfSVVTRS4gUnVucwo+ICsjIGxpbnV4LW1vZC1yMV9wa2dfcG9zdGluc3QgaWYg VVNFPWRrbXMgaXMgZGlzYWJsZWQuCj4gK2RrbXNfcGtnX3Bvc3RpbnN0KCkgewo+ICsJZGVidWct cHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgo+ICsKPiArCWlmICEgdXNlIGRrbXM7IHRo ZW4KPiArCQlsaW51eC1tb2QtcjFfcGtnX3Bvc3RpbnN0Cj4gKwkJcmV0dXJuIDAKPiArCWZpCj4g KwlbWyAteiAke01PRFVMRVNfT1BUSU9OQUxfSVVTRX0gXV0gfHwKPiArCQl1c2UgIiR7TU9EVUxF U19PUFRJT05BTF9JVVNFIyt9IiB8fCByZXR1cm4gMAo+ICsKPiArCWxvY2FsIHBhY2thZ2UgQVJD SD0kKHRjLWFyY2gta2VybmVsKQo+ICsJZm9yIHBhY2thZ2UgaW4gIiR7REtNU19QQUNLQUdFU1tA XX0iOyBkbwo+ICsJCUlGUz06IHJlYWQgLXJhIHBhY2thZ2UgPDw8IiR7cGFja2FnZSN9Igo+ICsJ CVtbICR7I3BhY2thZ2VbQF19IC1lcSAyIF1dIHx8Cj4gKwkJCWRpZSAiJHtGVU5DTkFNRX06IGlu Y29ycmVjdCBwYWNrYWdlIGluICR7REtNU19QQUNLQUdFU1sqXX0iCj4gKwkJZWluZm8gIlJlZ2lz dGVyaW5nICR7cGFja2FnZVswXX0gdmVyc2lvbiAke3BhY2thZ2VbMV19Igo+ICsJCWRrbXMgYWRk IC1tICR7cGFja2FnZVswXX0gLXYgJHtwYWNrYWdlWzFdfSB8fAo+ICsJCQlkaWUgIiR7RlVOQ05B TUV9OiBmYWlsZWQgdG8gcmVnaXN0ZXIgJHtwYWNrYWdlWzBdfSB3aXRoIERLTVMiCj4gKwkJZWlu Zm8gIkJ1aWxkaW5nICR7cGFja2FnZVswXX0gdmVyc2lvbiAke3BhY2thZ2VbMV19Igo+ICsJCWRr bXMgYnVpbGQgLW0gJHtwYWNrYWdlWzBdfSAtdiAke3BhY2thZ2VbMV19IFwKPiArCQkJLWsgJHtL Vl9GVUxMfSAtLWZvcmNlIHx8Cj4gKwkJCQlkaWUgIiR7RlVOQ05BTUV9OiBmYWlsZWQgdG8gYnVp bGQgJHtwYWNrYWdlWzBdfSB3aXRoIERLTVMiCj4gKwkJZWluZm8gIkluc3RhbGxpbmcgJHtwYWNr YWdlWzBdfSB2ZXJzaW9uICR7cGFja2FnZVsxXX0iCj4gKwkJZGttcyBpbnN0YWxsIC1tICR7cGFj a2FnZVswXX0gLXYgJHtwYWNrYWdlWzFdfSBcCj4gKwkJCS1rICR7S1ZfRlVMTH0gLS1mb3JjZSB8 fAo+ICsJCQkJZGllICIke0ZVTkNOQU1FfTogZmFpbGVkIHRvIGluc3RhbGwgJHtwYWNrYWdlWzBd fSB3aXRoIERLTVMiCj4gKwlkb25lCj4gKwo+ICsJaWYgW1sgJHtNT0RVTEVTX0lOSVRSQU1GU19J VVNFfSBdXSAmJiB1c2UgZGlzdC1rZXJuZWwgJiYKPiArCQl1c2UgJHtNT0RVTEVTX0lOSVRSQU1G U19JVVNFIyt9Cj4gKwl0aGVuCj4gKwkJZGlzdC1rZXJuZWxfcmVpbnN0YWxsX2luaXRyYW1mcyAi JHtLVl9ESVJ9IiAiJHtLVl9GVUxMfSIgLS1hbGwKPiArCWZpCj4gK30KPiArCj4gKyMgQEZVTkNU SU9OOiBka21zX3BrZ19wcmVybQo+ICsjIEBERVNDUklQVElPTjoKPiArIyBVbmluc3RhbGxzLCB1 bmJ1aWxkcyBhbmQgZGVyZWdpc3RlcnMgYWxsIERLTVMgcGFja2FnZXMgb3duZWQgYnkgdGhlCj4g KyMgZWJ1aWxkLiBEb2VzIG5vdGhpbmcgaWYgVVNFPWRrbXMgaXMgZGlzYWJsZWQuCj4gK2RrbXNf cGtnX3ByZXJtKCkgewo+ICsJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgo+ ICsKPiArCXVzZSBka21zIHx8IHJldHVybiAwCj4gKwlbWyAteiAke01PRFVMRVNfT1BUSU9OQUxf SVVTRX0gXV0gfHwKPiArCQl1c2UgIiR7TU9EVUxFU19PUFRJT05BTF9JVVNFIyt9IiB8fCByZXR1 cm4gMAo+ICsKPiArCWxvY2FsIHBhY2thZ2UgQVJDSD0kKHRjLWFyY2gta2VybmVsKQo+ICsJZm9y IHBhY2thZ2UgaW4gIiR7REtNU19QQUNLQUdFU1tAXX0iOyBkbwo+ICsJCUlGUz06IHJlYWQgLXJh IHBhY2thZ2UgPDw8IiR7cGFja2FnZSN9Igo+ICsJCVtbICR7I3BhY2thZ2VbQF19IC1lcSAyIF1d IHx8Cj4gKwkJCWRpZSAiJHtGVU5DTkFNRX06IGluY29ycmVjdCBwYWNrYWdlIGluICR7REtNU19Q QUNLQUdFU1sqXX0iCj4gKwkJZWluZm8gIlVuaW5zdGFsbGluZyAke3BhY2thZ2VbMF19IHZlcnNp b24gJHtwYWNrYWdlWzFdfSIKPiArCQlka21zIHVuaW5zdGFsbCAtbSAke3BhY2thZ2VbMF19IC12 ICR7cGFja2FnZVsxXX0gLS1hbGwgfHwKPiArCQkJZXdhcm4gIiR7RlVOQ05BTUV9OiBmYWlsZWQg dG8gdW5pbnN0YWxsICR7cGFja2FnZVswXX0gd2l0aCBES01TIgo+ICsJCWVpbmZvICJVbmJ1aWxk aW5nICR7cGFja2FnZVswXX0gdmVyc2lvbiAke3BhY2thZ2VbMV19Igo+ICsJCWRrbXMgdW5idWls ZCAtbSAke3BhY2thZ2VbMF19IC12ICR7cGFja2FnZVsxXX0gLS1hbGwgfHwKPiArCQkJZXdhcm4g IiR7RlVOQ05BTUV9OiBmYWlsZWQgdG8gdW5idWlsZCAke3BhY2thZ2VbMF19IHdpdGggREtNUyIK PiArCQllaW5mbyAiRGVyZWdpc3RlcmluZyAke3BhY2thZ2VbMF19IHZlcnNpb24gJHtwYWNrYWdl WzFdfSIKPiArCQlka21zIHJlbW92ZSAtbSAke3BhY2thZ2VbMF19IC12ICR7cGFja2FnZVsxXX0g LS1hbGwgfHwKPiArCQkJZXdhcm4gIiR7RlVOQ05BTUV9OiBmYWlsZWQgdG8gZGVyZWdpc3RlciAk e3BhY2thZ2VbMF19IHdpdGggREtNUyIKPiArCWRvbmUKPiArfQo+ICsKPiArZmkKPiArCj4gK0VY UE9SVF9GVU5DVElPTlMgc3JjX2NvbXBpbGUgc3JjX2luc3RhbGwgcGtnX2NvbmZpZyBwa2dfcG9z dGluc3QgcGtnX3ByZXJtCj4gLS0KPiAyLjQ4LjE= --b1=_mfSvRjmIMuF1CfrXXTMv83XG0Wfan3jZug7fUXMEU Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCiAgPGhlYWQ+DQogICAgPG1ldGEgaHR0cC1lcXVpdj0i Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KICA8L2hl YWQ+DQogIDxib2R5Pg0KICAgIDxkaXYgY2xhc3M9Im1vei1jaXRlLXByZWZpeCI+MTQuMDMuMjAy NSAxMjo0OCwgTm93YSBBbW1lcmxhYW4g0L/QuNGI0LXRgjo8YnI+DQogICAgPC9kaXY+DQogICAg PGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSINCiAgICAgIGNpdGU9Im1pZDoyMDI1MDMxNDEyNDg1MS43 MTY3NzEtNS1ub3dhQGdlbnRvby5vcmciPg0KICAgICAgPHByZSB3cmFwPSIiIGNsYXNzPSJtb3ot cXVvdGUtcHJlIj5TaWduZWQtb2ZmLWJ5OiBOb3dhIEFtbWVybGFhbiA8YSBjbGFzcz0ibW96LXR4 dC1saW5rLXJmYzIzOTZFIiBocmVmPSJtYWlsdG86bm93YUBnZW50b28ub3JnIj4mbHQ7bm93YUBn ZW50b28ub3JnJmd0OzwvYT4NCi0tLQ0KIGVjbGFzcy9ka21zLmVjbGFzcyB8IDU0NSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiAxIGZpbGUgY2hhbmdlZCwg NTQ1IGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZWNsYXNzL2RrbXMuZWNsYXNz DQoNCmRpZmYgLS1naXQgYS9lY2xhc3MvZGttcy5lY2xhc3MgYi9lY2xhc3MvZGttcy5lY2xhc3MN Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLmM0NDViOTU3MjFjMw0K LS0tIC9kZXYvbnVsbA0KKysrIGIvZWNsYXNzL2RrbXMuZWNsYXNzDQpAQCAtMCwwICsxLDU0NSBA QA0KKyMgQ29weXJpZ2h0IDIwMjUgR2VudG9vIEF1dGhvcnMNCisjIERpc3RyaWJ1dGVkIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdjINCisNCisjIEBF Q0xBU1M6IGRrbXMuZWNsYXNzDQorIyBATUFJTlRBSU5FUjoNCisjIE5vd2EgQW1tZXJsYWFuIDxh IGNsYXNzPSJtb3otdHh0LWxpbmstcmZjMjM5NkUiIGhyZWY9Im1haWx0bzpub3dhQGdlbnRvby5v cmciPiZsdDtub3dhQGdlbnRvby5vcmcmZ3Q7PC9hPg0KKyMgQEFVVEhPUjoNCisjIEF1dGhvcjog Tm93YSBBbW1lcmxhYW4gPGEgY2xhc3M9Im1vei10eHQtbGluay1yZmMyMzk2RSIgaHJlZj0ibWFp bHRvOm5vd2FAZ2VudG9vLm9yZyI+Jmx0O25vd2FAZ2VudG9vLm9yZyZndDs8L2E+DQorIyBAU1VQ UE9SVEVEX0VBUElTOiA4DQorIyBAUFJPVklERVM6IGxpbnV4LW1vZC1yMQ0KKyMgQEJMVVJCOiBI ZWxwZXIgZWNsYXNzIHRvIG1hbmFnZSBES01TIG1vZHVsZXMNCisjIEBERVNDUklQVElPTjoNCisj IFJlZ2lzdGVycywgYnVpbGRzIGFuZCBpbnN0YWxscyBrZXJuZWwgbW9kdWxlcyB1c2luZyB0aGUg REtNUw0KKyMgKER5bmFtaWMgS2VybmVsIE1vZHVsZSBTdXBwb3J0KSBzeXN0ZW0gcHJvdmlkZWQg Ynkgc3lzLWtlcm5lbC9ka21zLg0KKyMNCisjIFRoZSBka21zX2F1dG9jb25mIG1heSBiZSB1c2Vk IHRvIHRyYW5zbGF0ZSB0aGUgbW9kbGlzdCBhbmQgbW9kYXJncw0KKyMgYXJyYXlzIGZyb20gbGlu dXgtbW9kLXIxLmVjbGFzcyB0byBhIERLTVMgY29uZmlndXJhdGlvbiBmaWxlLg0KKyMNCisjIElm IHRoZSB1cHN0cmVhbSBzb3VyY2VzIGFscmVhZHkgY29udGFpbiBhIERLTVMgY29uZmlndXJhdGlv biBmaWxlDQorIyB0aGlzIG1heSBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGRrbXNfYXV0b2NvbmYg ZnVuY3Rpb24uIEluIHRoaXMNCisjIGNhc2UgZGttc19nZW50b29meV9jb25mIGZ1bmN0aW9uIG1h eSBiZSB1c2VkIHRvIGluc2VydCB0aGUgdXNlcnMNCisjIGNvbXBpbGVyLCBNQUtFT1BUUyBhbmQg KkZMQUdTIHByZWZlcmVuY2VzIGludG8gdGhlIERLTVMNCisjIGNvbmZpZ3VyYXRpb24gZmlsZS4N CisjDQorIyBUaGUgZGttc19kb3BhY2thZ2UgZnVuY3Rpb24gaXMgdXNlZCB0byBpbnN0YWxsIGEg REtNUyBwYWNrYWdlLCB0aGlzDQorIyBmdW5jdGlvbiBleHBlY3RzIHRvIGZpbmQgYSBka21zLmNv bmYgZmlsZSBhdCB0aGUgcGF0aCBzcGVjaWZpZWQNCisjIGJ5IHRoZSBhcmd1bWVudCBwYXNzZWQg dG8gdGhpcyBmdW5jdGlvbi4gSWYgbm90IHBhdGggaXMgc3BlY2lmaWVkDQorIyB0aGUgY3VycmVu dCB3b3JraW5nIGRpcmVjdG9yeSBpcyB1c2VkLjwvcHJlPg0KICAgIDwvYmxvY2txdW90ZT4NCiAg ICA8cD50eXBvOiBpZiBubyBwYXRoIGlzIHNwZWNpZmllZDxicj4NCiAgICA8L3A+DQogICAgPHA+ PHNwYW4gc3R5bGU9IndoaXRlLXNwYWNlOiBwcmUtd3JhcCI+DQo8L3NwYW4+PC9wPg0KICAgIDxw PjxzcGFuIHN0eWxlPSJ3aGl0ZS1zcGFjZTogcHJlLXdyYXAiPg0KPC9zcGFuPjwvcD4NCiAgICA8 YmxvY2txdW90ZSB0eXBlPSJjaXRlIg0KICAgICAgY2l0ZT0ibWlkOjIwMjUwMzE0MTI0ODUxLjcx Njc3MS01LW5vd2FAZ2VudG9vLm9yZyI+DQogICAgICA8cHJlIHdyYXA9IiIgY2xhc3M9Im1vei1x dW90ZS1wcmUiPisjDQorIyBGb3IgY29udmVuaWVuY2UgdGhpcyBlY2xhc3MgZXhwb3J0cyBhIHNy Y19jb21waWxlIGZ1bmN0aW9uIHRoYXQgcnVucw0KKyMgZGttc19hdXRvY29uZiBpZiB0aGUgZGtt cyBVU0UgZmxhZyBpcyBlbmFibGVkLCBhbmQgaWYgdGhlIGZsYWcgaXMNCisjIGRpc2FibGVkIGl0 IHJ1bnMgbGludXgtbW9kLXIxX3NyY19jb21waWxlIGluc3RlYWQuIFNpbWlsYXJseSwNCisjIHRo ZSBzcmNfaW5zdGFsbCBmdW5jdGlvbiBleHBvcnRlZCBieSB0aGlzIGVjbGFzcyBmaW5kcyBhbnkN CisjIGRrbXMuY29uZiBmaWxlcyBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvciBv bmUgb2YgaXRzDQorIyBzdWJkaXJlY3RvcmllcyBhbmQgdGhlbiBjYWxscyBka21zX2RvcGFja2Fn ZSBmb3IgdGhlc2UgcGFja2FnZXMuDQorIyBBbmQgaWYgdGhlIGRrbXMgVVNFIGZsYWcgaXMgZGlz YWJsZWQgaXQgcnVucw0KKyMgbGludXgtbW9kLXIxX3NyY19pbnN0YWxsIGluc3RlYWQuDQorIw0K KyMgVGhlIHBrZ19wb3N0aW5zdCBhbmQgcGtnX3Bvc3RybSBmdW5jdGlvbnMgdGhlbiB0YWtlIGNh cmUgb2YNCisjIChkZSlyZWdpc3RlcmluZywgKHVuKWJ1aWxkaW5nLCByZW1vdmluZywgYW5kL29y IGFkZGluZyB0aGUgREtNUw0KKyMgcGFja2FnZXMuIEZvciBjb252ZW5pZW5jZSB0aGUgZWNsYXNz IGFsc28gZXhwb3J0cyBhIHBrZ19jb25maWcNCisjIGZ1bmN0aW9uIHRoYXQgcmVidWlsZHMgYW5k IHJlaW5zdGFsbHMgYW55IERLTVMgcGFja2FnZXMgdGhlIGVidWlsZA0KKyMgb3ducyBmb3IgdGhl IGN1cnJlbnRseSBydW5uaW5nIGtlcm5lbC4NCisjDQorIyBARVhBTVBMRToNCisjDQorIyBUbyBh ZGQgREtNUyBzdXBwb3J0IHRvIGFuIGVidWlsZCBjdXJyZW50bHkgdXNpbmcgb25seSBsaW51eC1t b2QtcjEuDQorIw0KKyMgQ2hhbmdlOg0KKyMNCisjIEBDT0RFDQorIyBpbmhlcml0IGxpbnV4LW1v ZC1yMQ0KKyMNCisjIHNyY19jb21waWxlKCkgew0KKyMgICAgIGxvY2FsIG1vZGxpc3Q9KA0KKyMg ICAgICAgICBnZW50b28NCisjICAgICAgICAgZ2FtZXBhZD1rZXJuZWwvZHJpdmVycy9oaWQ6Z2Ft ZXBhZDpnYW1lcGFkL29iag0KKyMgICAgICkNCisjICAgICBsb2NhbCBtb2RhcmdzPSggTklIX1NP VVJDRT0iJHtLVl9PVVRfRElSfSIgKQ0KKyMNCisjICAgICBsaW51eC1tb2QtcjFfc3JjX2NvbXBp bGUNCisjIH0NCisjIEBDT0RFDQorIw0KKyMgVG86DQorIw0KKyMgQENPREUNCisjIGluaGVyaXQg ZGttcw0KKyMNCisjIHNyY19jb21waWxlKCkgew0KKyMgICAgIGxvY2FsIG1vZGxpc3Q9KA0KKyMg ICAgICAgICBnZW50b28NCisjICAgICAgICAgZ2FtZXBhZD1rZXJuZWwvZHJpdmVycy9oaWQ6Z2Ft ZXBhZDpnYW1lcGFkL29iag0KKyMgICAgICkNCisjICAgICBsb2NhbCBtb2RhcmdzPSggTklIX1NP VVJDRT0iJHtLVl9PVVRfRElSfSIgKQ0KKyMNCisjICAgICBka21zX3NyY19jb21waWxlDQorIyB9 DQorIyBAQ09ERQ0KKyMNCisjIE5vdGUgdGhhdCBkdWUgdG8gdGhlIGluaGVyaXQgb3JkZXIgdGhl IHNyY19pbnN0YWxsIGFuZCBwa2dfcG9zdGluc3QNCisjIHBoYXNlIGZ1bmN0aW9ucyBtYXkgaGF2 ZSB0byBiZSBkZWZpbmVkIGV4cGxpY2l0bHkuDQorIw0KKyMgQEVYQU1QTEU6DQorIw0KKyMgQSBt b3JlIGNvbXBsZXggZXhhbXBsZSBpcyB0aGUgY2FzZSBvZiBhbiBlYnVpbGQgdGhhdCBpcyBjdXJy ZW50bHkNCisjIGluaGVyaXRpbmcgbGludXgtbW9kLXIxLCBidXQgaXMgbm90IHVzaW5nIGFueSBv ZiBpdHMgcGhhc2UNCisjIGZ1bmN0aW9ucy4gSW4gdGhpcyBjYXNlIHRoZXJlIGlzIHVzdWFsbHkg bm8gbW9kbGlzdCBmb3INCisjIGRrbXNfYXV0b2NvbmYgdG8gY29udmVydCBpbnRvIGEgREtNUyBj b25maWd1cmF0aW9uIGZpbGUuDQorIyBJbnN0ZWFkIHRoZSBlYnVpbGQgbXVzdCB1dGlsaXplIGEg ZGttcy5jb25mIHByb3ZpZGVkIGJ5IHVwc3RyZWFtDQorIyBpbiB0aGUgc291cmNlcywgb3IgYWx0 ZXJuYXRpdmVseSBjcmVhdGUgb25lIGZyb20gc2NyYXRjaCBhbmQNCisjIGluY2x1ZGUgaXQgaW4g RklMRVNESVIuDQorIw0KKyMgVGlwOiBDaGVjayBpZiB0aGVyZSBpcyBhIHJwbS9kZWIgc3BlYyBv ciBzaW1pbGFyIHNjcmlwdCB0aGF0IGNhbg0KKyMgY3JlYXRlIGEgZGttcy5jb25mIHRvIGZpbmQg YSBoaW50IG9mIHdoYXQgaXQgc2hvdWxkIGxvb2sgbGlrZSBhbmQNCisjIHdoZXJlIGl0IHNob3Vs ZCBiZSBjcmVhdGVkIGZvciB0aGlzIHBhcnRpY3VsYXIgcGFja2FnZS4NCisjDQorIyBAQ09ERQ0K KyMgaW5oZXJpdCBka21zIGxpbnV4LW1vZC1yMQ0KKyMNCisjIHNyY19wcmVwYXJlKCkgew0KKyMg ICBkZWZhdWx0DQorIyAgIHNlZCAtZSAicy9AVkVSU0lPTkAvJHtQVn0vIiAtaSBtb2R1bGVzL2Rr bXMuY29uZiB8fCBkaWUNCisjIH0NCisjDQorIyBzcmNfY29tcGlsZSgpIHsNCisjICAgICBpZiB1 c2UgZGttczsgdGhlbg0KKyMgICAgICAgICBka21zX2dlbnRvb2Z5X2NvbmYgbW9kdWxlcy9ka21z LmNvbmYNCisjICAgICBlbHNlDQorIyAgICAgICAgIGVtYWtlICIke01PRFVMRVNfTUFLRUFSR1Nb QF19IiBtb2R1bGVzDQorIyAgICAgZmkNCisjIH0NCisjDQorIyBzcmNfaW5zdGFsbCgpIHsNCisj ICAgICBpZiB1c2UgZGttczsgdGhlbg0KKyMgICAgICAgICBka21zX2RvcGFja2FnZSBtb2R1bGVz DQorIyAgICAgZWxzZQ0KKyMgICAgICAgICBsaW51eF9kb21vZHVsZSBtb2R1bGVzL215bW9kdWxl LmtvDQorIyAgICAgICAgIG1vZHVsZXNfcG9zdF9wcm9jZXNzDQorIyAgICAgZmkNCisjICAgICBl aW5zdGFsbGRvY3MNCisjIH0NCisjDQorIyBwa2dfcG9zdGluc3QoKSB7DQorIyAgICAgZGttc19w a2dfcG9zdGluc3QNCisjIH0NCisjIEBDT0RFDQorDQorY2FzZSAke0VBUEl9IGluDQorCTgpIDs7 DQorCSopIGRpZSAiJHtFQ0xBU1N9OiBFQVBJICR7RUFQSTotMH0gbm90IHN1cHBvcnRlZCIgOzsN Citlc2FjDQorDQoraWYgW1sgLXogJHtfREtNU19FQ0xBU1N9IF1dOyB0aGVuDQorX0RLTVNfRUNM QVNTPTENCisNCitpbmhlcml0IGxpbnV4LW1vZC1yMQ0KKw0KK0lVU0U9ImRrbXMiDQorDQorUkRF UEVORD0iZGttcz8gKCBzeXMta2VybmVsL2RrbXMgJHtCREVQRU5EfSApIg0KK0lERVBFTkQ9ImRr bXM/ICggc3lzLWtlcm5lbC9ka21zICR7QkRFUEVORH0gKSINCisNCisjIEBFQ0xBU1NfVkFSSUFC TEU6IERLTVNfUEFDS0FHRVMNCisjIEBPVVRQVVRfVkFSSUFCTEUNCisjIEBERVNDUklQVElPTjoN CisjIEFmdGVyIGRrbXNfc3JjX2luc3RhbGwgb3IgZGttc19kb3BhY2thZ2UgdGhpcyBhcnJheSB3 aWxsIGJlDQorIyBwb3B1bGF0ZWQgd2l0aCBhbGwgZGttcyBwYWNrYWdlcyBpbnN0YWxsZWQgYnkg dGhlIGVidWlsZC4gVGhlIG5hbWVzDQorIyBhbmQgdmVyc2lvbnMgb2YgZWFjaCBwYWNrYWdlIGFy ZSBzZXBhcmF0ZWQgd2l0aCBhICc6Jy4NCitES01TX1BBQ0tBR0VTPSgpDQorDQorIyBARlVOQ1RJ T046IGRrbXNfZ2VudG9vZnlfY29uZg0KKyMgQFVTQUdFOiAmbHQ7bGlzdCBvZiBmaWxlcyZndDsN CisjIEBERVNDUklQVElPTjoNCisjIEFkZHMgbGludXgtbW9kLXIxJ3MgTU9EVUxFU19NQUtFQVJH UyBhbmQgdGhlIGVidWlsZHMgbW9kYXJncyB0byBhbnkNCisjIG1ha2UgY2FsbHMgaW4gYW4gZXhp c3RpbmcgZGttcy5jb25mLiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkDQorIyBmb3IgZXZl cnkgZGttcy5jb25mIHRoYXQgd2lsbCBiZSBpbnN0YWxsZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHVz ZXJzDQorIyBjb21waWxlciBjaG9pY2UgYW5kIGZsYWdzIGFyZSByZXNwZWN0ZWQgYnkgREtNUyBh dCBydW50aW1lLg0KKyMgTXVsdGlwbGUgZmlsZXMgbWF5IGJlIHBhc3NlZCB0byB0aGlzIGZ1bmN0 aW9uIGFzIGFyZ3VtZW50cy4gSWYgbm8NCisjIGFyZ3VtZW50cyBhcmUgZ2l2ZW4gdGhhbiB0aGlz IGZ1bmN0aW9uIHJ1bnMgb24gdGhlIGRrbXMuY29uZiBpbiB0aGUNCisjIHByZXNlbnQgd29ya2lu ZyBkaXJlY3RvcnkuIERvZXMgbm90aGluZyBpZiBVU0U9ZGttcyBpcyBkaXNhYmxlZC4NCitka21z X2dlbnRvb2Z5X2NvbmYoKSB7DQorCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIk QCINCisNCisJdXNlIGRrbXMgfHwgcmV0dXJuIDANCisJW1sgLXogJHtNT0RVTEVTX09QVElPTkFM X0lVU0V9IF1dIHx8DQorCQl1c2UgIiR7TU9EVUxFU19PUFRJT05BTF9JVVNFIyt9IiB8fCByZXR1 cm4gMA0KKw0KKwlsb2NhbCBmaWxlIGlucHV0PSggIiR7QH0iICkNCisJW1sgJHsjfSAtZXEgMCBd XSAmYW1wOyZhbXA7IGlucHV0PSggZGttcy5jb25mICkNCisNCisJIyBUaGlzIHdpbGwgc2V0IGVk a21zYXJncw0KKwlka21zX3Nhbml0aXplX21ha2VhcmdzDQorDQorCWZvciBmaWxlIGluICIke2lu cHV0W0BdfSI7IGRvDQorCQlbWyAtZiAke2ZpbGV9IF1dIHx8DQorCQkJZGllICIke0ZVTkNOQU1F fTogREtNUyBjb25mIGRvZXMgbm90IGV4aXN0OiAke2ZpbGV9Ig0KKw0KKwkJc2VkIC1pICIke2Zp bGV9IiBcDQorCQkJLWUgIi9eTUFLRS8gczptYWtlIDptYWtlICR7ZWRrbXNhcmdzWypdfSA6IiBc DQorCQkJLWUgIi9eTUFLRS8gczptYWtlJDptYWtlICR7ZWRrbXNhcmdzWypdfToiIFwNCisJCQkt ZSAiL15NQUtFLyBzOm1ha2VcIjptYWtlICR7ZWRrbXNhcmdzWypdfVwiOiIgXA0KKwkJCS1lICIv Xk1BS0UvIHM6J21ha2UnIDonbWFrZScgJHtlZGttc2FyZ3NbKl19IDogIiBcDQorCQkJLWUgIi9e TUFLRS8gczonbWFrZSckOidtYWtlJyAke2Vka21zYXJnc1sqXX06IiBcDQorCQkJLWUgIi9eTUFL RS8gczonbWFrZSdcIjonbWFrZScgJHtlZGttc2FyZ3NbKl19XCI6IiB8fA0KKwkJCQlkaWUgIiR7 RlVOQ05BTUV9OiBmYWlsZWQgdG8gR2VudG9vJ2Z5ICR7ZmlsZX0iDQorCWRvbmUNCit9DQorDQor IyBARlVOQ1RJT046IGRrbXNfc2FuaXRpemVfbWFrZWFyZ3MNCisjIEBERVNDUklQVElPTjoNCisj IFVzZXMgbGludXgtbW9kLXIxJ3MgTU9EVUxFU19NQUtFQVJHUyBhbmQgbW9kYXJncyB0byBzZXQg dGhlDQorIyBlZGttc2FyZ3MgYXJyYXkuIFRoaXMgYXJyYXkgY29udGFpbnMgYWxsIHZhcmlhYmxl cyBmcm9tIHRoZSB0d28NCisjIGlucHV0IGFycmF5cyBleGNlcHQgdGhvc2UgcmVmZXJlbmNpbmcg dGhlIGN1cnJlbnQga2VybmVsIHZlcnNpb24uDQorIyBRdW90ZXMgYXJlIGFkZGVkIHRvIHRoZSB2 YXJpYWJsZXMgdG8gcHJldmVudCBwYXJzaW5nIHByb2JsZW1zIGF0DQorIyBES01TIHJ1bnRpbWUu IERvZXMgbm90aGluZyBpZiBVU0U9ZGttcyBpcyBkaXNhYmxlZC4NCitka21zX3Nhbml0aXplX21h a2VhcmdzKCkgew0KKwlkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJEAiDQorDQor CXVzZSBka21zIHx8IHJldHVybiAwDQorCVtbIC16ICR7TU9EVUxFU19PUFRJT05BTF9JVVNFfSBd XSB8fA0KKwkJdXNlICIke01PRFVMRVNfT1BUSU9OQUxfSVVTRSMrfSIgfHwgcmV0dXJuIDANCisN CisJbG9jYWwgLWEgYXJncz0oICIke01PRFVMRVNfTUFLRUFSR1NbQF19IiApDQorCVtbICR7bW9k YXJnc0BhfSA9PSAqYSogXV0gJmFtcDsmYW1wOyBhcmdzKz0oICIke21vZGFyZ3NbQF19IiApDQor DQorCWVka21zYXJncz0oICR7TUFLRU9QVFN9ICkNCisJbG9jYWwgYXJnDQorCWZvciBhcmcgaW4g IiR7YXJnc1tAXX0iOyBkbw0KKwkJIyBSZXBsYWNlIEdlbnRvbyBrZXJuZWwgdGFyZ2V0cyB3aXRo IERLTVMgdmFyaWFibGVzDQorCQljYXNlICR7YXJnfSBpbg0KKwkJCSo9JHtLVl9PVVRfRElSfXwq PSR7S1ZfRElSfSkNCisJCQkJZWRrbXNhcmdzKz0oICIke2FyZyUlPSp9PVwke2tlcm5lbF9zb3Vy Y2VfZGlyfSIgKQ0KKwkJCTs7DQorCQkJJHtLVl9PVVRfRElSfXwke0tWX0RJUn0pDQorCQkJCWVk a21zYXJncys9KCAiXCR7a2VybmVsX3NvdXJjZV9kaXJ9IiApDQorCQkJOzsNCisJCQkqPSR7S1Zf RlVMTH0pDQorCQkJCWVka21zYXJncys9KCAiJHthcmclJT0qfT1cJHtrZXJuZWx2ZXJ9IiApDQor CQkJOzsNCisJCQkke0tWX0ZVTEx9KQ0KKwkJCQllZGttc2FyZ3MrPSggIlwke2tlcm5lbHZlcn0i ICkNCisJCQk7Ow0KKwkJCSoke0tWX0ZVTEx9KnwqJHtLVl9ESVJ9KnwqJHtLVl9PVVRfRElSfSop DQorCQkJCSMgU2tpcCBvdGhlciBhcmd1bWVudHMgcG9pbnRpbmcgdG8gdGhlIGN1cnJlbnQgdGFy Z2V0DQorCQkJCWNvbnRpbnVlDQorCQkJOzsNCisJCQkqPSopDQorCQkJCSMgUXVvdGUgdmFsdWVz IGZvciB2YXJpYWJsZXMgdG8gYXZvaWQgcGFyc2luZyBwcm9ibGVtcw0KKwkJCQllZGttc2FyZ3Mr PSggIiR7YXJnJSU9Kn09JyR7YXJnIyo9fSciICkNCisJCQk7Ow0KKwkJCSopDQorCQkJCWVka21z YXJncys9KCAiJHthcmd9IiApDQorCQkJOzsNCisJCWVzYWMNCisJZG9uZQ0KK30NCisNCisjIEBG VU5DVElPTjogZGttc19hdXRvY29uZg0KKyMgQFVTQUdFOiBbLS1uby1rZXJuZWxyZWxlYXNlfC0t bm8tYXV0b2luc3RhbGxdDQorIyBAREVTQ1JJUFRJT046DQorIyBVc2VzIGxpbnV4LW1vZC1yMSdz IG1vZGxpc3QgYW5kIG1vZGFyZ3MgdG8gY29uc3RydWN0IGEgREtNUw0KKyMgY29uZmlndXJhdGlv biBmaWxlLiBCeSBkZWZhdWx0IERLTVMgYWRkcyB0aGUgJ0tFUk5FTFJFTEVBU0U9Jw0KKyMgdmFy aWFibGUgdG8gYWxsIG1ha2UgY29tbWFuZHMuIFNvbWUgTWFrZWZpbGVzIHdpbGwgYmVoYXZlDQor IyBkaWZmZXJlbnRseSB3aGVuIHRoaXMgdmFyaWFibGUgaXMgc2V0LCBpZiB0aGlzIGxlYWRzIHRv IHByb2JsZW1zDQorIyBwYXNzIHRoZSAtLW5vLWtlcm5lbHJlbGVhc2UgYXJndW1lbnQgdG8gdGhp cyBmdW5jdGlvbiB0byBzdXBwcmVzcw0KKyMgdGhlIGFkZGl0aW9uIG9mICdLRVJORUxSRUxFQVNF PScgdG8gdGhlIGNhbGxzIHRvIG1ha2UgYXQgcnVudGltZS4NCisjIEJ5IGRlZmF1bHQgdGhlIGNy ZWF0ZWQgREtNUyBjb25maWd1cmF0aW9uIGZpbGUgd2lsbCBlbmFibGUNCisjIGF1dG9tYXRpYyBp bnN0YWxsYXRpb24gb2YgYWxsIGtlcm5lbCBtb2R1bGVzLiBUbyBkaXNhYmxlIHRoaXMgYWRkDQor IyB0aGUgLS1uby1hdXRvaW5zdGFsbCBhcmd1bWVudC4gRG9lcyBub3RoaW5nIGlmIFVTRT1ka21z IGlzIGRpc2FibGVkLg0KK2RrbXNfYXV0b2NvbmYoKSB7DQorCWRlYnVnLXByaW50LWZ1bmN0aW9u ICR7RlVOQ05BTUV9ICIkQCINCisNCisJdXNlIGRrbXMgfHwgcmV0dXJuIDANCisJW1sgLXogJHtN T0RVTEVTX09QVElPTkFMX0lVU0V9IF1dIHx8DQorCQl1c2UgIiR7TU9EVUxFU19PUFRJT05BTF9J VVNFIyt9IiB8fCByZXR1cm4gMA0KKw0KKwlsb2NhbCBhcmcgYXV0b2luc3RhbGw9MSBtYWtlX2Nv bW1hbmQ9bWFrZQ0KKwlbWyAkeyN9IC1ndCAyIF1dICZhbXA7JmFtcDsgZGllICIke0ZVTkNOQU1F fTogdG9vIG1hbnkgYXJndW1lbnRzIg0KKwlmb3IgYXJnIGluICIke0B9IjsgZG8NCisJCWNhc2Ug JHthcmd9IGluDQorCQkJLS1uby1rZXJuZWxyZWxlYXNlKQ0KKwkJCQkjIFBlciBES01TIG1hbnVh bCwgcXVvdGluZyBkaXNhYmxlcyBzZXR0aW5nIEtFUk5FTFJFTEVBU0UNCisJCQkJbWFrZV9jb21t YW5kPVwnbWFrZVwnDQorCQkJOzsNCisJCQktLW5vLWF1dG9pbnN0YWxsKQ0KKwkJCQlhdXRvaW5z dGFsbD0NCisJCQk7Ow0KKwkJCSopDQorCQkJCWRpZSAiJHtGVU5DTkFNRX06IGludmFsaWQgYXJn dW1lbnQgJHthcmd9Ig0KKwkJCTs7DQorCQllc2FjDQorCWRvbmUNCisNCisJbW9kdWxlc19wcm9j ZXNzX21vZGxpc3QNCisNCisJbG9jYWwgaW5kZXggbW9kIG5hbWUgcGFja2FnZSBka21zX2NvbmZp Z19maWxlcz0oKQ0KKwlmb3IgbW9kIGluICIke21vZGxpc3RbQF19IjsgZG8NCisJCW5hbWU9JHtt b2QlJT0qfQ0KKwkJbW9kPSR7bW9kIyIke25hbWV9In0NCisJCUlGUz06IHJlYWQgLXJhIG1vZCAm bHQ7Jmx0OyZsdDsiJHttb2QjPX0iDQorDQorCQlwdXNoZCAiJHttb2RbMV19IiAmZ3Q7L2Rldi9u dWxsIHx8IGRpZQ0KKwkJaWYgW1sgLWYgZGttcy5jb25mIF1dOyB0aGVuDQorCQkJIyBGaW5kIHRo ZSBpbmRleCBvZiBhbiBleGlzdGluZyBtb2R1bGUsIGVsc2UgZmluZCB0aGUNCisJCQkjIGZpcnN0 IGF2YWlsYWJsZSBpbmRleC4NCisJCQlpbmRleD0kKA0KKwkJCQlzb3VyY2UgZGttcy5jb25mICZh bXA7Jmd0Oy9kZXYvbnVsbCB8fA0KKwkJCQkJZGllICIke0ZVTkNOQU1FfTogaW52YWxpZCBka21z LmNvbmYgYXQgJHtQV0R9Ig0KKwkJCQlmb3IgaSBpbiAiJHshQlVJTFRfTU9EVUxFX05BTUVbQF19 IjsgZG8NCisJCQkJCWlmIFtbICR7bmFtZX0gPT0gJHtCVUlMVF9NT0RVTEVfTkFNRVske2l9XX0g XV0NCisJCQkJCXRoZW4NCisJCQkJCQllY2hvICR7aX0gfHwgZGllDQorCQkJCQkJZXhpdCAwDQor CQkJCQlmaQ0KKwkJCQlkb25lDQorCQkJCWVjaG8gJHsjQlVJTFRfTU9EVUxFX05BTUVbQF19IHx8 IGRpZQ0KKwkJCSkgfHwgY29udGludWUNCisJCWVsc2UNCisJCQkjIElmIHRoZSBrZXJuZWwgbW9k dWxlcyBhcmUgaW4gYSBzdWJkaXIgYWRkIHRoaXMgdG8gdGhlDQorCQkJIyBES01TIHBhY2thZ2Ug bmFtZSBpZGVudGlmaWVyIHRvIGVuc3VyZSBpdCBpcyB1bmlxdWUuDQorCQkJIyBUaGVyZSBtYXkg YmUgbXVsdGlwbGUgc3ViZGlycyB3aXRoIGtlcm5lbCBtb2R1bGVzLg0KKwkJCWlmIFtbICR7UFdE fSA9PSAke1N9IF1dOyB0aGVuDQorCQkJCXBhY2thZ2U9JHtQTn0NCisJCQllbHNlDQorCQkJCXBh Y2thZ2U9JHtQTn1fJHtuYW1lfQ0KKwkJCWZpDQorCQkJY2F0ICZsdDsmbHQ7LUVPRiAmZ3Q7IGRr bXMuY29uZiB8fCBkaWUNCisJCQkJUEFDS0FHRV9OQU1FPSR7cGFja2FnZX0NCisJCQkJUEFDS0FH RV9WRVJTSU9OPSR7UFZ9DQorCQkJRU9GDQorCQkJaWYgW1sgLW4gJHthdXRvaW5zdGFsbH0gXV07 IHRoZW4NCisJCQkJZWNobyAiQVVUT0lOU1RBTEw9eWVzIiAmZ3Q7Jmd0OyBka21zLmNvbmYgfHwg ZGllDQorCQkJZWxzZQ0KKwkJCQllY2hvICJBVVRPSU5TVEFMTD1ubyIgJmd0OyZndDsgZGttcy5j b25mIHx8IGRpZQ0KKwkJCWZpDQorCQkJaW5kZXg9MA0KKwkJZmkNCisNCisJCSMgSWYgdGhlcmUg aXMgbm8gTUFLRSBjb21tYW5kIGluIHRoaXMgZGttcy5jb25mIHlldCwgYWRkIG9uZQ0KKwkJaWYg ISBncmVwIC1xRSAiXk1BS0UoXFswXF18KT0iIGRrbXMuY29uZjsgdGhlbg0KKwkJCWVjaG8gIk1B S0VbMF09XCIke21ha2VfY29tbWFuZH0gJHttb2RbM119XCIiICZndDsmZ3Q7IGRrbXMuY29uZiB8 fCBkaWUNCisJCWZpDQorDQorCQkjIERLTVMgZW5mb3JjZXMgdGhhdCB0aGUgaW5zdGFsbCB0YXJn ZXQgc3RhcnRzIHdpdGggb25lIG9mDQorCQkjIHRoZXNlIG9wdGlvbnMuDQorCQlsb2NhbCBkZXN0 PSR7bW9kWzBdfQ0KKwkJaWYgISBbWyAke2Rlc3R9ID09IC9rZXJuZWwqIHx8ICR7ZGVzdH0gPT0g L3VwZGF0ZXMqIHx8DQorCQkJJHtkZXN0fSA9PSAvZXh0cmEqIF1dDQorCQl0aGVuDQorCQkJZGVz dD0vZXh0cmEvJHtkZXN0fQ0KKwkJZmkNCisNCisJCSMgQWRkIG9uZSBlbXB0eSBsaW5lIGluIGNh c2UgdXBzdHJlYW0gcHJvdmlkZWQgZGttcy5jb25mIGlzDQorCQkjIG1pc3NpbmcgYSBsaW5lIGVu ZGluZyBvbiB0aGUgZmluYWwgbGluZS4gQWxzbyBsb29rcyBuaWNlcg0KKwkJIyBiZWNhdXNlIG5v dyBhbGwgdGhlIHNldHRpbmdzIGZvciBlYWNoIGtlcm5lbCBtb2R1bGUgYXJlDQorCQkjIGdyb3Vw ZWQgdG9nZXRoZXIuDQorCQljYXQgJmx0OyZsdDstRU9GICZndDsmZ3Q7IGRrbXMuY29uZiB8fCBk aWUNCisNCisJCQlCVUlMVF9NT0RVTEVfTkFNRVske2luZGV4fV09JHtuYW1lfQ0KKwkJCUJVSUxU X01PRFVMRV9MT0NBVElPTlske2luZGV4fV09LiR7bW9kWzJdIyIke21vZFsxXSUvLn0ifS8NCisJ CQlERVNUX01PRFVMRV9OQU1FWyR7aW5kZXh9XT0ke25hbWV9DQorCQkJREVTVF9NT0RVTEVfTE9D QVRJT05bJHtpbmRleH1dPSR7ZGVzdH0NCisJCUVPRg0KKwkJaWYgdXNlIHN0cmlwOyB0aGVuDQor CQkJZWNobyAiU1RSSVBbJHtpbmRleH1dPXllcyIgJmd0OyZndDsgZGttcy5jb25mIHx8IGRpZQ0K KwkJZWxzZQ0KKwkJCWVjaG8gIlNUUklQWyR7aW5kZXh9XT1ubyIgJmd0OyZndDsgZGttcy5jb25m IHx8IGRpZQ0KKwkJZmkNCisNCisJCSMgQXBwZW5kIHRoaXMgZGttcy5jb25mIHRvIG91ciB0cmFj a2VyIGFycmF5DQorCQlpZiAhIGhhcyAiJHtQV0R9L2RrbXMuY29uZiIgIiR7ZGttc19jb25maWdf ZmlsZXNbQF19IjsgdGhlbg0KKwkJCWRrbXNfY29uZmlnX2ZpbGVzKz0oICIke1BXRH0vZGttcy5j b25mIiApDQorCQlmaQ0KKwkJcG9wZCAmZ3Q7L2Rldi9udWxsIHx8IGRpZQ0KKwlkb25lDQorDQor CSMgQWRkIHRoZSB1c2VycyBjb21waWxlciAqRkxBR1MgYW5kIE1BS0VPUFRTIHRvIGFsbCBka21z LmNvbmYncw0KKwlka21zX2dlbnRvb2Z5X2NvbmYgIiR7ZGttc19jb25maWdfZmlsZXNbQF19Ig0K K30NCisNCisjIEBGVU5DVElPTjogZGttc19kb3BhY2thZ2UNCisjIEBVU0FHRTogJmx0O2RrbXMg cGFja2FnZSByb290Jmd0Ow0KKyMgQERFU0NSSVBUSU9OOg0KKyMgSW5zdGFsbHMgYSBES01TIHBh Y2thZ2UgdG8gJHtFRH0vdXNyL3NyYy4gSWYgbm8gcGF0aCBpcyBzcGVjaWZpZWQNCisjIGFzIHRo ZSBmaXJzdCBhcmd1bWVudCwgdGhlbiB0aGUgcm9vdCBvZiB0aGUgcGFja2FnZSBpcyBhc3N1bWVk IHRvDQorIyBiZSB0aGUgcHdkLiBBcHBlbmRzIHRoZSBpbnN0YWxsZWQgcGFja2FnZSB0byB0aGUg Z2xvYmFsDQorIyBES01TX1BBQ0tBR0VTIGFycmF5LiBEb2VzIG5vdGhpbmcgaWYgVVNFPWRrbXMg aXMgZGlzYWJsZWQuDQorZGttc19kb3BhY2thZ2UoKSB7DQorCWRlYnVnLXByaW50LWZ1bmN0aW9u ICR7RlVOQ05BTUV9ICIkQCINCisNCisJdXNlIGRrbXMgfHwgcmV0dXJuIDANCisJW1sgLXogJHtN T0RVTEVTX09QVElPTkFMX0lVU0V9IF1dIHx8DQorCQl1c2UgIiR7TU9EVUxFU19PUFRJT05BTF9J VVNFIyt9IiB8fCByZXR1cm4gMA0KKw0KKwlbWyAkeyN9IC1ndCAxIF1dICZhbXA7JmFtcDsgZGll ICIke0ZVTkNOQU1FfTogdG9vIG1hbnkgYXJndW1lbnRzIg0KKwlsb2NhbCBwYWNrYWdlX3Jvb3Q9 JHsxOi0iJHtQV0R9In0NCisJW1sgJHtwYWNrYWdlX3Jvb3R9ICE9IC8qIF1dICZhbXA7JmFtcDsg cGFja2FnZV9yb290PSR7UFdEfS8ke3BhY2thZ2Vfcm9vdH0NCisJW1sgLWYgJHtwYWNrYWdlX3Jv b3R9L2RrbXMuY29uZiBdXSB8fA0KKwkJZGllICIke0ZVTkNOQU1FfTogbm8gREtNUyBjb25mIGF0 ICR7cGFja2FnZV9yb290fSINCisJIyBzdWJzaGVsbCB0byBhdm9pZCBwb2xsdXRpbmcgdGhlIGVu dmlyb25tZW50IHdpdGggdGhlIGRrbXMuY29uZi4NCisJbG9jYWwgcGFja2FnZT0iJCgNCisJCXNv dXJjZSAiJHtwYWNrYWdlX3Jvb3R9L2RrbXMuY29uZiIgJmFtcDsmZ3Q7L2Rldi9udWxsIHx8DQor CQkJZGllICIke0ZVTkNOQU1FfTogaW52YWxpZCBES01TIGNvbmYgYXQgJHtwYWNrYWdlX3Jvb3R9 Ig0KKwkJZGVzdD0vdXNyL3NyYy8ke1BBQ0tBR0VfTkFNRX0tJHtQQUNLQUdFX1ZFUlNJT059DQor CQkjIFJlcGxhY2UgcmVmZXJlbmNlcyB0byBjdXJyZW50IGRpciB3aXRoIG1lcmdlZCBkaXINCisJ CXNlZCAtaSAiJHtwYWNrYWdlX3Jvb3R9L2RrbXMuY29uZiIgXA0KKwkJCS1lICJzIyR7cGFja2Fn ZV9yb290fSMke0VQUkVGSVh9JHtkZXN0fSNnIiB8fCBkaWUNCisJCW1rZGlyIC1wICIke0VEfSR7 ZGVzdH0iIHx8IGRpZQ0KKwkJY3AgLWEgIiR7cGFja2FnZV9yb290fSIvKiAiJHtFRH0ke2Rlc3R9 IiB8fCBkaWUNCisJCW1vZHVsZXNfcHJvY2Vzc19kcmFjdXQuY29uZi5kICIke0JVSUxUX01PRFVM RV9OQU1FW0BdfSINCisJCWVjaG8gIiR7UEFDS0FHRV9OQU1FfToke1BBQ0tBR0VfVkVSU0lPTn0i DQorCSkiDQorCWlmIGhhcyAiJHtwYWNrYWdlfSIgIiR7REtNU19QQUNLQUdFU1tAXX0iOyB0aGVu DQorCQlkaWUgIiR7RlVOQ05BTUV9OiBES01TIHBhY2thZ2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGlz IGFscmVhZHkgaW5zdGFsbGVkIg0KKwllbGlmIFtbICR7cGFja2FnZX0gPT0gOiogfHwgJHtwYWNr YWdlfSA9PSAqOiBdXTsgdGhlbg0KKwkJZGllICIke0ZVTkNOQU1FfTogREtNUyBjb25mIGRpZCBu b3Qgc2V0IGEgcGFja2FnZSBuYW1lIG9yIHZlcnNpb24iDQorCWVsc2UNCisJCURLTVNfUEFDS0FH RVMrPSggIiR7cGFja2FnZX0iICkNCisJZmkNCit9DQorDQorIyBARlVOQ1RJT046IGRrbXNfc3Jj X2NvbXBpbGUNCisjIEBERVNDUklQVElPTjoNCisjIFJ1bnMgZGttc19hdXRvY29uZiBpZiBVU0U9 ZGttcyBpcyBlbmFibGVkLCBvdGhlcndpc2UgcnVucw0KKyMgbGludXgtbW9kLXIxX3NyY19jb21w aWxlLiBBcmd1bWVudHMgZ2l2ZW4gdG8gdGhpcyBmdW5jdGlvbiBhcmUNCisjIHBhc3NlZCBvbnRv IGRrbXNfYXV0b2NvbmYuDQorZGttc19zcmNfY29tcGlsZSgpIHsNCisJZGVidWctcHJpbnQtZnVu Y3Rpb24gJHtGVU5DTkFNRX0gIiRAIg0KKw0KKwlpZiAhIHVzZSBka21zOyB0aGVuDQorCQlsaW51 eC1tb2QtcjFfc3JjX2NvbXBpbGUNCisJCXJldHVybiAwDQorCWZpDQorCVtbIC16ICR7TU9EVUxF U19PUFRJT05BTF9JVVNFfSBdXSB8fA0KKwkJdXNlICIke01PRFVMRVNfT1BUSU9OQUxfSVVTRSMr fSIgfHwgcmV0dXJuIDANCisNCisJZGttc19hdXRvY29uZiAiJHtAfSINCit9DQorDQorIyBARlVO Q1RJT046IGRrbXNfc3JjX2luc3RhbGwNCisjIEBERVNDUklQVElPTjoNCisjIFJ1bnMgZGttc19k b3BhY2thZ2UgZm9yIGVhY2ggZGttcy5jb25mIGZvdW5kIGluIHRoZSBwd2Qgb3IgYW55DQorIyBz dWItZGlyZWN0b3JpZXMuIFRoZW4gcnVucyBlaW5zdGFsbGRvY3MuIElmIFVTRT1ka21zIGlzIGRp c2FibGVkDQorIyB0aGVuIGxpbnV4LW1vZC1yMV9zcmNfaW5zdGFsbCBpcyBydW4gaW5zdGVhZC4N Citka21zX3NyY19pbnN0YWxsKCkgew0KKwlkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1F fSAiJEAiDQorDQorCWlmICEgdXNlIGRrbXM7IHRoZW4NCisJCWxpbnV4LW1vZC1yMV9zcmNfaW5z dGFsbA0KKwkJcmV0dXJuIDANCisJZmkNCisJW1sgLXogJHtNT0RVTEVTX09QVElPTkFMX0lVU0V9 IF1dIHx8DQorCQl1c2UgIiR7TU9EVUxFU19PUFRJT05BTF9JVVNFIyt9IiB8fCByZXR1cm4gMA0K Kw0KKwl3aGlsZSBJRlM9IHJlYWQgLXIgLWQgJycgZmlsZTsgZG8NCisJCWRrbXNfZG9wYWNrYWdl ICQoZGlybmFtZSAiJHtmaWxlfSIpDQorCWRvbmUgJmx0OyAmbHQ7KGZpbmQgIiR7UFdEfSIgLXR5 cGUgZiAtbmFtZSBka21zLmNvbmYgLXByaW50MCB8fCBkaWUpDQorDQorCWVpbnN0YWxsZG9jcw0K K30NCisNCisjIEBGVU5DVElPTjogZGttc19wa2dfY29uZmlnDQorIyBAREVTQ1JJUFRJT046DQor IyBSZWJ1aWxkcyBhbmQgcmVpbnN0YWxscyBhbGwgREtNUyBwYWNrYWdlcyBvd25lZCBieSB0aGUg ZWJ1aWxkLg0KKyMgRG9lcyBub3RoaW5nIGlmIFVTRT1ka21zIGlzIGRpc2FibGVkLg0KK2RrbXNf cGtnX2NvbmZpZygpIHsNCisJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIg0K Kw0KKwl1c2UgZGttcyB8fCByZXR1cm4gMA0KKwlbWyAteiAke01PRFVMRVNfT1BUSU9OQUxfSVVT RX0gXV0gfHwNCisJCXVzZSAiJHtNT0RVTEVTX09QVElPTkFMX0lVU0UjK30iIHx8IHJldHVybiAw DQorDQorCWxvY2FsIHBhY2thZ2UgQVJDSD0kKHRjLWFyY2gta2VybmVsKQ0KKwlmb3IgcGFja2Fn ZSBpbiAiJHtES01TX1BBQ0tBR0VTW0BdfSI7IGRvDQorCQlJRlM9OiByZWFkIC1yYSBwYWNrYWdl ICZsdDsmbHQ7Jmx0OyIke3BhY2thZ2UjfSINCisJCVtbICR7I3BhY2thZ2VbQF19IC1lcSAyIF1d IHx8DQorCQkJZGllICIke0ZVTkNOQU1FfTogaW5jb3JyZWN0IHBhY2thZ2UgaW4gJHtES01TX1BB Q0tBR0VTWypdfSINCisJCWVpbmZvICJCdWlsZGluZyAke3BhY2thZ2VbMF19IHZlcnNpb24gJHtw YWNrYWdlWzFdfSINCisJCWRrbXMgYnVpbGQgLW0gJHtwYWNrYWdlWzBdfSAtdiAke3BhY2thZ2Vb MV19IC0tZm9yY2UgfHwNCisJCQlkaWUgIiR7RlVOQ05BTUV9OiBmYWlsZWQgdG8gYnVpbGQgJHtw YWNrYWdlfSB3aXRoIERLTVMiDQorCQllaW5mbyAiSW5zdGFsbGluZyAke3BhY2thZ2VbMF19IHZl cnNpb24gJHtwYWNrYWdlWzFdfSINCisJCWRrbXMgaW5zdGFsbCAtbSAke3BhY2thZ2VbMF19IC12 ICR7cGFja2FnZVsxXX0gLS1mb3JjZSB8fA0KKwkJCWRpZSAiJHtGVU5DTkFNRX06IGZhaWxlZCB0 byBpbnN0YWxsICR7cGFja2FnZX0gd2l0aCBES01TIg0KKwlkb25lDQorDQorCWlmIFtbICR7TU9E VUxFU19JTklUUkFNRlNfSVVTRX0gXV0gJmFtcDsmYW1wOyB1c2UgZGlzdC1rZXJuZWwgJmFtcDsm YW1wOw0KKwkJdXNlICR7TU9EVUxFU19JTklUUkFNRlNfSVVTRSMrfQ0KKwl0aGVuDQorCQlkaXN0 LWtlcm5lbF9yZWluc3RhbGxfaW5pdHJhbWZzICIke0tWX0RJUn0iICIke0tWX0ZVTEx9IiAtLWFs bA0KKwlmaQ0KK30NCisNCisjIEBGVU5DVElPTjogZGttc19wb3N0aW5zdA0KKyMgQERFU0NSSVBU SU9OOg0KKyMgUmVnaXN0ZXJzLCBidWlsZHMgYW5kIGluc3RhbGxzIGFsbCBES01TIHBhY2thZ2Vz IG93bmVkIGJ5IHRoZQ0KKyMgZWJ1aWxkLiBDYWxscyBkaXN0LWtlcm5lbF9yZWluc3RhbGxfaW5p dHJhbWZzIGlmIHJlcXVlc3RlZCBieSB0aGUNCisjIGVidWlsZCB2aWEgbGludXgtbW9kLXIxJ3Mg TU9EVUxFU19JTklUUkFNRlNfSVVTRS4gUnVucw0KKyMgbGludXgtbW9kLXIxX3BrZ19wb3N0aW5z dCBpZiBVU0U9ZGttcyBpcyBkaXNhYmxlZC4NCitka21zX3BrZ19wb3N0aW5zdCgpIHsNCisJZGVi dWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIg0KKw0KKwlpZiAhIHVzZSBka21zOyB0 aGVuDQorCQlsaW51eC1tb2QtcjFfcGtnX3Bvc3RpbnN0DQorCQlyZXR1cm4gMA0KKwlmaQ0KKwlb WyAteiAke01PRFVMRVNfT1BUSU9OQUxfSVVTRX0gXV0gfHwNCisJCXVzZSAiJHtNT0RVTEVTX09Q VElPTkFMX0lVU0UjK30iIHx8IHJldHVybiAwDQorDQorCWxvY2FsIHBhY2thZ2UgQVJDSD0kKHRj LWFyY2gta2VybmVsKQ0KKwlmb3IgcGFja2FnZSBpbiAiJHtES01TX1BBQ0tBR0VTW0BdfSI7IGRv DQorCQlJRlM9OiByZWFkIC1yYSBwYWNrYWdlICZsdDsmbHQ7Jmx0OyIke3BhY2thZ2UjfSINCisJ CVtbICR7I3BhY2thZ2VbQF19IC1lcSAyIF1dIHx8DQorCQkJZGllICIke0ZVTkNOQU1FfTogaW5j b3JyZWN0IHBhY2thZ2UgaW4gJHtES01TX1BBQ0tBR0VTWypdfSINCisJCWVpbmZvICJSZWdpc3Rl cmluZyAke3BhY2thZ2VbMF19IHZlcnNpb24gJHtwYWNrYWdlWzFdfSINCisJCWRrbXMgYWRkIC1t ICR7cGFja2FnZVswXX0gLXYgJHtwYWNrYWdlWzFdfSB8fA0KKwkJCWRpZSAiJHtGVU5DTkFNRX06 IGZhaWxlZCB0byByZWdpc3RlciAke3BhY2thZ2VbMF19IHdpdGggREtNUyINCisJCWVpbmZvICJC dWlsZGluZyAke3BhY2thZ2VbMF19IHZlcnNpb24gJHtwYWNrYWdlWzFdfSINCisJCWRrbXMgYnVp bGQgLW0gJHtwYWNrYWdlWzBdfSAtdiAke3BhY2thZ2VbMV19IFwNCisJCQktayAke0tWX0ZVTEx9 IC0tZm9yY2UgfHwNCisJCQkJZGllICIke0ZVTkNOQU1FfTogZmFpbGVkIHRvIGJ1aWxkICR7cGFj a2FnZVswXX0gd2l0aCBES01TIg0KKwkJZWluZm8gIkluc3RhbGxpbmcgJHtwYWNrYWdlWzBdfSB2 ZXJzaW9uICR7cGFja2FnZVsxXX0iDQorCQlka21zIGluc3RhbGwgLW0gJHtwYWNrYWdlWzBdfSAt diAke3BhY2thZ2VbMV19IFwNCisJCQktayAke0tWX0ZVTEx9IC0tZm9yY2UgfHwNCisJCQkJZGll ICIke0ZVTkNOQU1FfTogZmFpbGVkIHRvIGluc3RhbGwgJHtwYWNrYWdlWzBdfSB3aXRoIERLTVMi DQorCWRvbmUNCisNCisJaWYgW1sgJHtNT0RVTEVTX0lOSVRSQU1GU19JVVNFfSBdXSAmYW1wOyZh bXA7IHVzZSBkaXN0LWtlcm5lbCAmYW1wOyZhbXA7DQorCQl1c2UgJHtNT0RVTEVTX0lOSVRSQU1G U19JVVNFIyt9DQorCXRoZW4NCisJCWRpc3Qta2VybmVsX3JlaW5zdGFsbF9pbml0cmFtZnMgIiR7 S1ZfRElSfSIgIiR7S1ZfRlVMTH0iIC0tYWxsDQorCWZpDQorfQ0KKw0KKyMgQEZVTkNUSU9OOiBk a21zX3BrZ19wcmVybQ0KKyMgQERFU0NSSVBUSU9OOg0KKyMgVW5pbnN0YWxscywgdW5idWlsZHMg YW5kIGRlcmVnaXN0ZXJzIGFsbCBES01TIHBhY2thZ2VzIG93bmVkIGJ5IHRoZQ0KKyMgZWJ1aWxk LiBEb2VzIG5vdGhpbmcgaWYgVVNFPWRrbXMgaXMgZGlzYWJsZWQuDQorZGttc19wa2dfcHJlcm0o KSB7DQorCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIkQCINCisNCisJdXNlIGRr bXMgfHwgcmV0dXJuIDANCisJW1sgLXogJHtNT0RVTEVTX09QVElPTkFMX0lVU0V9IF1dIHx8DQor CQl1c2UgIiR7TU9EVUxFU19PUFRJT05BTF9JVVNFIyt9IiB8fCByZXR1cm4gMA0KKw0KKwlsb2Nh bCBwYWNrYWdlIEFSQ0g9JCh0Yy1hcmNoLWtlcm5lbCkNCisJZm9yIHBhY2thZ2UgaW4gIiR7REtN U19QQUNLQUdFU1tAXX0iOyBkbw0KKwkJSUZTPTogcmVhZCAtcmEgcGFja2FnZSAmbHQ7Jmx0OyZs dDsiJHtwYWNrYWdlI30iDQorCQlbWyAkeyNwYWNrYWdlW0BdfSAtZXEgMiBdXSB8fA0KKwkJCWRp ZSAiJHtGVU5DTkFNRX06IGluY29ycmVjdCBwYWNrYWdlIGluICR7REtNU19QQUNLQUdFU1sqXX0i DQorCQllaW5mbyAiVW5pbnN0YWxsaW5nICR7cGFja2FnZVswXX0gdmVyc2lvbiAke3BhY2thZ2Vb MV19Ig0KKwkJZGttcyB1bmluc3RhbGwgLW0gJHtwYWNrYWdlWzBdfSAtdiAke3BhY2thZ2VbMV19 IC0tYWxsIHx8DQorCQkJZXdhcm4gIiR7RlVOQ05BTUV9OiBmYWlsZWQgdG8gdW5pbnN0YWxsICR7 cGFja2FnZVswXX0gd2l0aCBES01TIg0KKwkJZWluZm8gIlVuYnVpbGRpbmcgJHtwYWNrYWdlWzBd fSB2ZXJzaW9uICR7cGFja2FnZVsxXX0iDQorCQlka21zIHVuYnVpbGQgLW0gJHtwYWNrYWdlWzBd fSAtdiAke3BhY2thZ2VbMV19IC0tYWxsIHx8DQorCQkJZXdhcm4gIiR7RlVOQ05BTUV9OiBmYWls ZWQgdG8gdW5idWlsZCAke3BhY2thZ2VbMF19IHdpdGggREtNUyINCisJCWVpbmZvICJEZXJlZ2lz dGVyaW5nICR7cGFja2FnZVswXX0gdmVyc2lvbiAke3BhY2thZ2VbMV19Ig0KKwkJZGttcyByZW1v dmUgLW0gJHtwYWNrYWdlWzBdfSAtdiAke3BhY2thZ2VbMV19IC0tYWxsIHx8DQorCQkJZXdhcm4g IiR7RlVOQ05BTUV9OiBmYWlsZWQgdG8gZGVyZWdpc3RlciAke3BhY2thZ2VbMF19IHdpdGggREtN UyINCisJZG9uZQ0KK30NCisNCitmaQ0KKw0KK0VYUE9SVF9GVU5DVElPTlMgc3JjX2NvbXBpbGUg c3JjX2luc3RhbGwgcGtnX2NvbmZpZyBwa2dfcG9zdGluc3QgcGtnX3ByZXJtDQotLQ0KMi40OC4x DQoNCg0KPC9wcmU+DQogICAgPC9ibG9ja3F1b3RlPg0KICAgIDxwPjxicj4NCiAgICA8L3A+DQog IDwvYm9keT4NCjwvaHRtbD4NCg== --b1=_mfSvRjmIMuF1CfrXXTMv83XG0Wfan3jZug7fUXMEU--