From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: dmitry@gutov.dev, bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Sep 2023 08:53:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 66117@debbugs.gnu.org Cc: dmitry gutov X-Debbugs-Original-To: bug-gnu-emacs@gnu.org X-Debbugs-Original-Xcc: dmitry gutov Received: via spool by submit@debbugs.gnu.org id=B.16951999468452 (code B ref -1); Wed, 20 Sep 2023 08:53:02 +0000 Received: (at submit) by debbugs.gnu.org; 20 Sep 2023 08:52:26 +0000 Received: from localhost ([127.0.0.1]:58348 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qiswc-0002CG-NS for submit@debbugs.gnu.org; Wed, 20 Sep 2023 04:52:26 -0400 Received: from lists.gnu.org ([2001:470:142::17]:33134) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qiswa-0002Bx-Ox for submit@debbugs.gnu.org; Wed, 20 Sep 2023 04:52:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qiswF-00072u-Bw for bug-gnu-emacs@gnu.org; Wed, 20 Sep 2023 04:52:03 -0400 Received: from mout01.posteo.de ([185.67.36.65]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qiswB-0003rB-11 for bug-gnu-emacs@gnu.org; Wed, 20 Sep 2023 04:52:03 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 13F63240027 for ; Wed, 20 Sep 2023 10:51:57 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1695199917; bh=VTwniVCBRl70cu31ldn8T+oqSrPa+tfra0GiejktDM0=; h=From:To:Subject:Date:Message-ID:MIME-Version:From; b=m/BgfqEHqci0jKEMULCmwtzJNm+Yjep0B26FR5Am6k0Im1w9d06lpV3PAN1yMrETc 6Wqz7+lma0B3kNRPi/gHQZDXmxAaweBnC74ZEEdEyC1lx8myVxgmfmJFfIw/Z5uKSh MrKhZhVTU79F8zTZow/7pHXORx9ShhVF5HNohyKxKEHPj5yLw6jq7QEdlwl3b8gISc UHqDdQI7yGc1ifN3Zvpyuj1PyFskOD+U26NK2CVv1eIavh+gO44LW5hXIQV4NhsVS1 C12TUHvF341fJ343CfBXVr3/WAixMfvfHtsJ7lRZwGxPjPonQ8KpU2NxXSdnc9mP7G vwCxeUNFQYYcg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4RrC2H4BtPz6v4c for ; Wed, 20 Sep 2023 10:51:51 +0200 (CEST) From: Ihor Radchenko Date: Wed, 20 Sep 2023 08:53:06 +0000 Message-ID: <878r919qfh.fsf@localhost> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=185.67.36.65; envelope-from=yantar92@posteo.net; helo=mout01.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --=-=-= Content-Type: text/plain X-Debbugs-CC: Dmitry Gutov Hello, Background: Some Org users (especially org-roam users) often complain that Org agenda is very slow (sometimes, tens of seconds or minutes) when running it right after startup. The cause is often not Org agenda itself, but Emacs opening files slowly. In some cases, the main reason files are opened slowly is user-defined hooks or various packages adding advices mindlessly. However, Emacs itself is also taking a significant fraction of time when opening a large number of buffers. I have recently got data on opening a large number of Org files in Emacs that clearly demonstrates that `file-buffer-visiting' (and thus `find-file') scale poorly when the number of buffers increases. This is especially clear when Org mode needs to open several hundreds of not-yet-opened Org files in a new Emacs session. In the attached profile, ~500 Org buffers are being opened and calls to `find-buffer-visiting' take 12.4 sec out of total 30.9 sec - 1/3 of all the execution time. After replacing some of the calls to `find-buffer-visiting' with `get-file-buffer', the total execution time decreased to ~20 sec, confirming that `find-buffer-visiting' is contributing significantly to slow performance. Would it be possible to implement some kind of caching mechanism to be used by `find-buffer-visiting'? --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=org_agenda_profile_2 Content-Transfer-Encoding: base64 Cltwcm9maWxlci1wcm9maWxlICIyOC4xIiBjcHUgI3MoaGFzaC10YWJsZSBzaXplIDM2OTQgdGVz dCBlcXVhbCByZWhhc2gtc2l6ZSAxLjUgcmVoYXNoLXRocmVzaG9sZCAwLjgxMjUgZGF0YSAoW3N5 bnRheC1wcHNzICtlbWFjcy1saXNwLWhpZ2hsaWdodC12YXJzLWFuZC1mYWNlcyBmb250LWxvY2st Zm9udGlmeS1rZXl3b3Jkcy1yZWdpb24gZm9udC1sb2NrLWRlZmF1bHQtZm9udGlmeS1yZWdpb24g Zm9udC1sb2NrLWZvbnRpZnktcmVnaW9uICIjPGNvbXBpbGVkIC0weDE1NDdkNDdlYjdhNzA0ODM+ IiBqaXQtbG9jay0tcnVuLWZ1bmN0aW9ucyBqaXQtbG9jay1mb250aWZ5LW5vdyBqaXQtbG9jay1m dW5jdGlvbiByZWRpc3BsYXlfaW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKSBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbF0gNSBbbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxMTA5IFsiIzxjb21waWxlZCAweGZjMzkwZjViMzQ1ZjE1 Mz4iIGZ1bmNhbGwgaWYgc2V0cSB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBwcm9q ZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBwcm9qZWN0LWN1cnJlbnQgYnJl YWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGZ1bmNh bGwgYnJlYWRjcnVtYi0taGVhZGVyLWxpbmUgZXZhbCByZWRpc3BsYXlfaW50ZXJuYWxcIFwoQ1wg ZnVuY3Rpb25cKV0gOTEwIFtub3QgYW5kIGlmIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBpZiBk aXItbG9jYWxzLS1hbGwtZmlsZXMgbGV0IG9yIGlmIGlmIGxldCogZGlyLWxvY2Fscy1maW5kLWZp bGVdIDIgW3Nob3ctcGFyZW4tLWRlZmF1bHQgc2hvdy1wYXJlbi1mdW5jdGlvbiBhcHBseSB0aW1l ci1ldmVudC1oYW5kbGVyIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsXSAxIFtwcm9qZWN0LXByb2plY3RpbGUgcHJvamVjdC0tZmluZC1pbi1kaXJlY3Rvcnkg cHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1w cm9qZWN0LWNydW1icyBmdW5jYWxsIGJyZWFkY3J1bWItLWhlYWRlci1saW5lIGV2YWwgcmVkaXNw bGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls XSAxIFtmaWxlLW5hbWUtZGlyZWN0b3J5IHNldHEgZXF1YWwgY29uZCB3aGlsZSBsZXQgbG9jYXRl LWRvbWluYXRpbmctZmlsZSBwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9y eSBwcm9qZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1i LXByb2plY3QtY3J1bWJzIGZ1bmNhbGwgYnJlYWRjcnVtYi0taGVhZGVyLWxpbmUgZXZhbCByZWRp c3BsYXlfaW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKV0gMiBbZm9yd2FyZC1zZXhwIGVsaXNwLS1i ZWdpbm5pbmctb2Ytc2V4cCBlbGlzcC0tZm5zeW0taW4tY3VycmVudC1zZXhwIGVsaXNwLWVsZG9j LWZ1bmNhbGwgZWxkb2MtZG9jdW1lbnRhdGlvbi1kZWZhdWx0IGVsZG9jLS1pbnZva2Utc3RyYXRl Z3kgZWxkb2MtcHJpbnQtY3VycmVudC1zeW1ib2wtaW5mbyAiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2 Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzEyPiIgYXBwbHkgdGltZXItZXZl bnQtaGFuZGxlciBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMiBbc3ludGF4LXBwc3Mgc2Nhbi1z ZXhwcyBmb3J3YXJkLXNleHAgZWxpc3AtLWJlZ2lubmluZy1vZi1zZXhwIGVsaXNwLS1mbnN5bS1p bi1jdXJyZW50LXNleHAgZWxpc3AtZWxkb2MtZnVuY2FsbCBlbGRvYy1kb2N1bWVudGF0aW9uLWRl ZmF1bHQgZWxkb2MtLWludm9rZS1zdHJhdGVneSBlbGRvYy1wcmludC1jdXJyZW50LXN5bWJvbC1p bmZvICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19s YW1iZGFfMTI+IiBhcHBseSB0aW1lci1ldmVudC1oYW5kbGVyIG5pbCBuaWwgbmlsIG5pbF0gMSBb cHJvZ24gaWYgbGV0KiBwcm9nbiBpZiBkaXItbG9jYWxzLS1hbGwtZmlsZXMgbGV0IG9yIGlmIGlm IGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1n ZXQtdmFyaWFibGVzXSAxIFtwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9y eSBwcm9qZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1i LXByb2plY3QtY3J1bWJzIGZ1bmNhbGwgYnJlYWRjcnVtYi0taGVhZGVyLWxpbmUgZXZhbCByZWRp c3BsYXlfaW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWxdIDIgW2dlbmVyYWwtdW5iaW5kLW5vbi1wcmVmaXgta2V5IGFwcGx5IGRlZmluZS1rZXkgYnJl YWRjcnVtYi0tZm9ybWF0LXByb2plY3Qtbm9kZSBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0x IGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgZnVuY2FsbCBicmVhZGNydW1iLS1oZWFkZXItbGlu ZSBldmFsIHJlZGlzcGxheV9pbnRlcm5hbFwgXChDXCBmdW5jdGlvblwpIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsXSAxIFtldmFsIHJlZGlzcGxheV9pbnRlcm5hbFwgXChDXCBmdW5jdGlvblwpIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDEg W3NldHEgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVhZGNy dW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgZnVuY2FsbCBi cmVhZGNydW1iLS1oZWFkZXItbGluZSBldmFsIHJlZGlzcGxheV9pbnRlcm5hbFwgXChDXCBmdW5j dGlvblwpIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDIgW2ZpbGUtYXR0cmlidXRlLW1vZGlmaWNhdGlv bi10aW1lIGxldCBsZXQgd2hpbGUgbGV0IGxldCB0aW1lLWVxdWFsLXAgYW5kIGxldCBvciBpZiBp ZiBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9nbl0gMSBbYnJlYWRjcnVtYi1pbWVu dS1jcnVtYnMgZnVuY2FsbCBicmVhZGNydW1iLS1oZWFkZXItbGluZSBldmFsIHJlZGlzcGxheV9p bnRlcm5hbFwgXChDXCBmdW5jdGlvblwpIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWxdIDEgW3doaWNoLWtleS0ta2V5LWRlc2NyaXB0aW9uPCAiIzxjb21waWxlZCAw eDFmNWRhZTliMTljMWY1ZWI+IiB3aGljaC1rZXktLWdldC1iaW5kaW5ncyB3aGljaC1rZXktLWNy ZWF0ZS1idWZmZXItYW5kLXNob3cgd2hpY2gta2V5LS11cGRhdGUgYXBwbHkgdGltZXItZXZlbnQt aGFuZGxlciBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMyBbd2hpY2gta2V5 LS1leHRyYWN0LWtleSB3aGljaC1rZXktLWtleS1kZXNjcmlwdGlvbjwgIiM8Y29tcGlsZWQgMHgx ZjVkYWU5YjE5YzFmNWViPiIgd2hpY2gta2V5LS1nZXQtYmluZGluZ3Mgd2hpY2gta2V5LS1jcmVh dGUtYnVmZmVyLWFuZC1zaG93IHdoaWNoLWtleS0tdXBkYXRlIGFwcGx5IHRpbWVyLWV2ZW50LWhh bmRsZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMSBbd2hpY2gta2V5LS1mb3Jt YXQtYW5kLXJlcGxhY2Ugd2hpY2gta2V5LS1nZXQtYmluZGluZ3Mgd2hpY2gta2V5LS1jcmVhdGUt YnVmZmVyLWFuZC1zaG93IHdoaWNoLWtleS0tdXBkYXRlIGFwcGx5IHRpbWVyLWV2ZW50LWhhbmRs ZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxIFt3aGljaC1rZXkt LXJlcGxhY2UtaW4tcmVwbC1saXN0LW9uY2Ugd2hpY2gta2V5LS1tYXliZS1yZXBsYWNlIHdoaWNo LWtleS0tZm9ybWF0LWFuZC1yZXBsYWNlIHdoaWNoLWtleS0tZ2V0LWJpbmRpbmdzIHdoaWNoLWtl eS0tY3JlYXRlLWJ1ZmZlci1hbmQtc2hvdyB3aGljaC1rZXktLXVwZGF0ZSBhcHBseSB0aW1lci1l dmVudC1oYW5kbGVyIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDI1NCBbd2hpY2gt a2V5LS1wcm9wZXJ0aXplLWRlc2NyaXB0aW9uIHdoaWNoLWtleS0tZm9ybWF0LWFuZC1yZXBsYWNl IHdoaWNoLWtleS0tZ2V0LWJpbmRpbmdzIHdoaWNoLWtleS0tY3JlYXRlLWJ1ZmZlci1hbmQtc2hv dyB3aGljaC1rZXktLXVwZGF0ZSBhcHBseSB0aW1lci1ldmVudC1oYW5kbGVyIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA2IFt3aGljaC1rZXktLW1heWJlLWFkZC1kb2NzdHJp bmcgd2hpY2gta2V5LS1mb3JtYXQtYW5kLXJlcGxhY2Ugd2hpY2gta2V5LS1nZXQtYmluZGluZ3Mg d2hpY2gta2V5LS1jcmVhdGUtYnVmZmVyLWFuZC1zaG93IHdoaWNoLWtleS0tdXBkYXRlIGFwcGx5 IHRpbWVyLWV2ZW50LWhhbmRsZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxd IDQgWyIjPGNvbXBpbGVkIC0weDFkZGYxMTNiN2QxNDIzYmY+IiBzdWJzdGl0dXRlLWNvbW1hbmQt a2V5cyB3aGljaC1rZXktLXByb3BlcnRpemUtZGVzY3JpcHRpb24gd2hpY2gta2V5LS1mb3JtYXQt YW5kLXJlcGxhY2Ugd2hpY2gta2V5LS1nZXQtYmluZGluZ3Mgd2hpY2gta2V5LS1jcmVhdGUtYnVm ZmVyLWFuZC1zaG93IHdoaWNoLWtleS0tdXBkYXRlIGFwcGx5IHRpbWVyLWV2ZW50LWhhbmRsZXIg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAyIFsiIzxjb21waWxlZCAweDExYWYyOTIxYzFh YjNiZmY+IiBjbC1yZWR1Y2Ugd2hpY2gta2V5LS1wYWQtY29sdW1uICIjPGNvbXBpbGVkIC0weDE0 MmY0NTUzNmQyMjIwOGU+IiB3aGljaC1rZXktLWxpc3QtdG8tcGFnZXMgd2hpY2gta2V5LS1jcmVh dGUtcGFnZXMtMSB3aGljaC1rZXktLWNyZWF0ZS1wYWdlcyB3aGljaC1rZXktLWNyZWF0ZS1idWZm ZXItYW5kLXNob3cgd2hpY2gta2V5LS11cGRhdGUgYXBwbHkgdGltZXItZXZlbnQtaGFuZGxlciBu aWwgbmlsIG5pbCBuaWwgbmlsXSAxIFsiIzxsYW1iZGEgMHgxZTEwYmE0YWY0MDQxY2Q+IiB3aW5k b3ctLWRpc3BsYXktYnVmZmVyIHdpbmRvdy0tbWFrZS1tYWpvci1zaWRlLXdpbmRvdyBhbmQgbGV0 KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGNvbmQgbGV0KiBsZXQqICtwb3B1cC1kaXNwbGF5 LWJ1ZmZlci1zdGFja2VkLXNpZGUtd2luZG93LWZuIGRpc3BsYXktYnVmZmVyLWluLXNpZGUtd2lu ZG93IHdoaWNoLWtleS0tc2hvdy1idWZmZXItc2lkZS13aW5kb3cgcHJvZ24gcHJvZ25dIDEgW2V2 YWwgZm9ybWF0LW1vZGUtbGluZSBkb29tLW1vZGVsaW5lLWZvcm1hdC0tbWFpbiBldmFsIHJlZGlz cGxheV9pbnRlcm5hbFwgXChDXCBmdW5jdGlvblwpIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWxdIDIgW2JyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRj cnVtYi1wcm9qZWN0LWNydW1icyBmdW5jYWxsIGJyZWFkY3J1bWItLWhlYWRlci1saW5lIGV2YWwg cmVkaXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsXSAxIFtmdW5jYWxsIGlmIHNldHEgd2hpbGUgbGV0IGxvY2F0ZS1k b21pbmF0aW5nLWZpbGUgZW52cmMtLWZpbmQtZW52LWRpciAiIzxzdWJyIGVudnJjLS11cGRhdGU+ IiBhcHBseSBlbnZyYy0tdXBkYXRlIGVudnJjLW1vZGUgZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxl LWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGFwcGx5IHJ1bi1tb2RlLWhvb2tzIGZ1bmRhbWVudGFsLW1v ZGVdIDEgW3Byb2duIHByb2duIHdoaWxlIHByb2duIHdoaWxlIHByb2duIHVud2luZC1wcm90ZWN0 IGxldCBsZXQqIGNhdGNoICIjPGxhbWJkYSAtMHgxZDJlZTA2MWYzOWVjNzhmPiIgYXBwbHkgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBwcm9nbl0gMSBbcmVhZC1jaGFyLWV4Y2x1c2l2ZSBzZXRx IHByb2duIHByb2duIHdoaWxlIHByb2duIHdoaWxlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBs ZXQqIGNhdGNoICIjPGxhbWJkYSAtMHgxZDJlZTA2MWYzOWVjNzhmPiIgYXBwbHkgcHJvZ24gdW53 aW5kLXByb3RlY3RdIDYgW3NldHEgcHJvZ24gcHJvZ24gd2hpbGUgcHJvZ24gd2hpbGUgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0IGxldCogY2F0Y2ggIiM8bGFtYmRhIC0weDFkMmVlMDYxZjM5ZWM3 OGY+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSAyMyBbdW53aW5kLXByb3RlY3Qg bGV0IGxldCogY2F0Y2ggIiM8bGFtYmRhIC0weDFkMmVlMDYxZjM5ZWM3OGY+IiBhcHBseSBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgK3BvcHVw LS1zdXBwcmVzcy1kZWxldGUtb3RoZXItd2luZG93cy1hIGFwcGx5IG9yZy1hZ2VuZGEtZ2V0LXJl c3RyaWN0aW9uLWFuZC1jb21tYW5kXSAxIFtpZiAiIzxsYW1iZGEgMHgyODA5YzM0ODA0YWMxYTY+ IiBtYXBjYXIgYXBwbHkgc2V0cSBsZXQgb3JnLWFnZW5kYS1maWxlcyBtYXBjYXIgYXBwZW5kIGVh c3ktbWVudS1jaGFuZ2Ugb3JnLWFnZW5kYS1tb2RlIGlmIGlmIGxldCBvcmctYWdlbmRhLXByZXBh cmUgY2F0Y2hdIDcgW2FuZCAiIzxsYW1iZGEgMHgxZTEwYmE4YjliZDdmZj4iIG1hcGNhciBkZWxx IHNldHEgcHJvZ24gaWYgbGV0IG9yZy1hZ2VuZGEtZmlsZXMgbWFwY2FyIGFwcGVuZCBlYXN5LW1l bnUtY2hhbmdlIG9yZy1hZ2VuZGEtbW9kZSBpZiBpZiBsZXRdIDQgW2Vhc3ktbWVudS1jcmVhdGUt bWVudSBlYXN5LW1lbnUtY2hhbmdlIG9yZy1hZ2VuZGEtbW9kZSBpZiBpZiBsZXQgb3JnLWFnZW5k YS1wcmVwYXJlIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY2Fs bC1pbnRlcmFjdGl2ZWx5IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseV0gMSBbaWYgIiM8bGFtYmRhIDB4MjgwOWMzNDgwNGFjMWE2PiIgbWFwY2FyIGFwcGx5 IHNldHEgbGV0IG9yZy1hZ2VuZGEtZmlsZXMgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWYg aWYgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZSBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNhbGwtaW50ZXJhY3RpdmVseV0gNSBbYW5kICIjPGxhbWJkYSAweDFlMTBi YThiOWJkN2ZmPiIgbWFwY2FyIGRlbHEgc2V0cSBwcm9nbiBpZiBsZXQgb3JnLWFnZW5kYS1maWxl cyBvcmctYWdlbmRhLXByZXBhcmUtYnVmZmVycyBpZiBpZiBsZXQgb3JnLWFnZW5kYS1wcmVwYXJl IGNhdGNoIG9yZy1hZ2VuZGEtbGlzdF0gNCBbbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQg bGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cV0gNCBb IiM8Y29tcGlsZWQgMHgxMjQwYzJjNTc1YzEzZjVlPiIgbWFwY2FyICIjPGNvbXBpbGVkIC0weDE5 NmY5ZGM4MGI0ZTZlNDY+IiBwcm9qZWN0aWxlLWxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgcHJvamVj dGlsZS1yb290LWJvdHRvbS11cCAiIzxjb21waWxlZCAtMHgzM2E5MmM5N2MxMTE4YjA+IiBjbC1z b21lIHByb2plY3RpbGUtcHJvamVjdC1yb290IHByb2plY3QtcHJvamVjdGlsZSBwcm9qZWN0LS1m aW5kLWluLWRpcmVjdG9yeSBwcm9qZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVt YnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwt bW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1i dWZmZXJzIHJ1bi1ob29rc10gMiBbbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNl dHEgbGV0KiBjb25kaXRpb24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2 Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1h dXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2FzZSBsZXRdIDcgW2FuZCB1 bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQgb3JnLXBlcnNpc3QtLXJl YWQtZWxpc3AtZmlsZSBvciBzZXRxIGlmIHByb2duIGlmIGxldCogcHJvZ24gcHJvZ24gbGV0KiBv cmctcGVyc2lzdC1yZWFkXSAxNiBbbG9jYXRlLWZpbGUgbG9jYXRlLWxpYnJhcnkgamlueC0tbG9h ZC1tb2R1bGUgamlueC1tb2RlIGppbngtLW9uIGdsb2JhbC1qaW54LW1vZGUtZW5hYmxlLWluLWJ1 ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYg aWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmXSA0IFtqaW54LS1sb2FkLWRpY3RzIGppbngtbW9k ZSBqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBy dW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUt MCBwcm9nbiBpZiBsZXQgaWZdIDEzIFtzZXRxIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxl LXJlbGF0aXZlLW5hbWUgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXBy b2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2Yt Z2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBy dW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmXSAzIFt5YXMtLXBhcnNl LXRlbXBsYXRlIHlhcy0tbG9hZC1kaXJlY3RvcnktMiB5YXMtLWxvYWQtZGlyZWN0b3J5LTEgYXBw bHkgIiM8Y29tcGlsZWQgLTB4MWJjMzU5NDllOGZmMTE4ZT4iIHlhcy0tbG9hZC1wZW5kaW5nLWpp dHMgeWFzLW1pbm9yLW1vZGUgeWFzLW1pbm9yLW1vZGUtb24geWFzLWdsb2JhbC1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHBy b2duIGlmIGlmXSAxIFthbmQgaWYgc2V0cSB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmls ZSB5YXMtLWNhbGN1bGF0ZS1ncm91cCB5YXMtLXBhcnNlLXRlbXBsYXRlIHlhcy0tbG9hZC1kaXJl Y3RvcnktMiB5YXMtLWxvYWQtZGlyZWN0b3J5LTEgYXBwbHkgIiM8Y29tcGlsZWQgLTB4MWJjMzU5 NDllOGZmMTE4ZT4iIHlhcy0tbG9hZC1wZW5kaW5nLWppdHMgeWFzLW1pbm9yLW1vZGUgeWFzLW1p bm9yLW1vZGUtb24geWFzLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzXSA0IFtmaWxlLWV4 aXN0cy1wIGFuZCBpZiBzZXRxIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIHlhcy0t Y2FsY3VsYXRlLWdyb3VwIHlhcy0tcGFyc2UtdGVtcGxhdGUgeWFzLS1sb2FkLWRpcmVjdG9yeS0y IHlhcy0tbG9hZC1kaXJlY3RvcnktMSBhcHBseSAiIzxjb21waWxlZCAtMHgxYmMzNTk0OWU4ZmYx MThlPiIgeWFzLS1sb2FkLXBlbmRpbmctaml0cyB5YXMtbWlub3ItbW9kZSB5YXMtbWlub3ItbW9k ZS1vbl0gNiBbYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9taW5hdGluZy1maWxl IHlhcy0tY2FsY3VsYXRlLWdyb3VwIHlhcy0tcGFyc2UtdGVtcGxhdGUgeWFzLS1sb2FkLWRpcmVj dG9yeS0yIHlhcy0tbG9hZC1kaXJlY3RvcnktMSBhcHBseSAiIzxjb21waWxlZCAtMHgxYmMzNTk0 OWU4ZmYxMThlPiIgeWFzLS1sb2FkLXBlbmRpbmctaml0cyB5YXMtbWlub3ItbW9kZSB5YXMtbWlu b3ItbW9kZS1vbiB5YXMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1 bi1tb2RlLWhvb2tzIG9yZy1tb2RlXSAyIFtmaW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNvZGlu ZyAiIzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHkgaWYgZWRpdG9yY29uZmlnLS1h ZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29udGVudHMgeWFz LS1sb2FkLWRpcmVjdG9yeS0yIHlhcy0tbG9hZC1kaXJlY3RvcnktMSBhcHBseSAiIzxjb21waWxl ZCAtMHgxYmMzNTk0OWU4ZmYxMThlPiIgeWFzLS1sb2FkLXBlbmRpbmctaml0cyB5YXMtbWlub3It bW9kZSB5YXMtbWlub3ItbW9kZS1vbiB5YXMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnNd IDIgW2FwcGx5IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFw cGx5IGluc2VydC1maWxlLWNvbnRlbnRzIHlhcy0tbG9hZC1kaXJlY3RvcnktMiB5YXMtLWxvYWQt ZGlyZWN0b3J5LTEgYXBwbHkgIiM8Y29tcGlsZWQgLTB4MWJjMzU5NDllOGZmMTE4ZT4iIHlhcy0t bG9hZC1wZW5kaW5nLWppdHMgeWFzLW1pbm9yLW1vZGUgeWFzLW1pbm9yLW1vZGUtb24geWFzLWds b2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmct bW9kZV0gMSBbIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnlt b3VzX2xhbWJkYV8yMj4iIGNsLXJlbW92ZSBjbC1yZW1vdmUtaWYgeWFzLS1zdWJkaXJzIHlhcy0t bG9hZC1kaXJlY3RvcnktMiB5YXMtLWxvYWQtZGlyZWN0b3J5LTEgYXBwbHkgIiM8Y29tcGlsZWQg LTB4MWJjMzU5NDllOGZmMTE4ZT4iIHlhcy0tbG9hZC1wZW5kaW5nLWppdHMgeWFzLW1pbm9yLW1v ZGUgeWFzLW1pbm9yLW1vZGUtb24geWFzLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsXSAxIFthcHBseSAiIzxjb21w aWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNl dC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAt MHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20t LXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseV0gMTMgW3doaWxlIGFuZCBsZXQqIG9yIGxldCBmaW5k LWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgx MzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1u b3NlbGVjdF0gODMwIFtzdWJzdHJpbmcgaWYgbGV0IGZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGlm IGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNvLWxvbmctLWNoZWNrLWhlYWRlci1tb2Rl cyBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNh c2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+Il0gMSBb Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3Qt LW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgcHJvZ24gcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1y ZWFkIHByb2duIGxldCogb3JnLXBlcnNpc3QtbG9hZCBwcm9nbiBpZiBsZXQgcHJvZ25dIDEgW2xl dCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBz ZXRxIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQg cHJvZ24gaWYgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgbGV0Kl0gMTUgW3doaWxlIGxl dCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFzZS1idWZmZXItdmlzaXRp bmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29yZy0t b3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2Vu ZGEtZmlsZS1idWZmZXIgaWYgc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVmZmVyXSA4NDQgW25v dCBzZXRxICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAw eGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIg YXBwbHkgYWZ0ZXItZmluZC1maWxlIGlmIHNhdmUtY3VycmVudC1idWZmZXJdIDE4IFthc3NvYy1k ZWZhdWx0IGxldCBvciBpZiBzZXRxIHdoaWxlIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8 Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZV0gMTYg W2Z1bmNhbGwgaWYgc2V0cSB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0t ZmluZC1lbnYtZGlyICIjPHN1YnIgZW52cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUg ZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mg YXBwbHkgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGVdIDQyIFtsZXQgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJy ZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9u LWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMg cnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWZdIDEg W2JyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUg YnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29r cyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBs ZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cV0gMTggW3lhcy1taW5vci1tb2Rl IHlhcy1taW5vci1tb2RlLW9uIHlhcy1nbG9iYWwtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4t aG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0 by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSA3IFtt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRl ZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGhhc2ggcHJvZ24gbGV0IGVkaXRvcmNvbmZpZy1jYWxsLWdl dC1wcm9wZXJ0aWVzLWZ1bmN0aW9uIHNldHEgcHJvZ24gaWYgY29uZGl0aW9uLWNhc2UgbGV0IGVk aXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9z ZWxlY3RdIDEgW2xldCBvciBpZiBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBw bHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBw bHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgy Y2Y0YmI1ZDk4OWM5OD4iIGFwcGx5IGFmdGVyLWZpbmQtZmlsZV0gOCBbYW5kIGlmIGxldCB3aGls ZSBsZXQgbGV0KiBwcm9nbiBpZiBkaXItbG9jYWxzLS1hbGwtZmlsZXMgZnVuY2FsbCBpZiBzZXRx IHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCpdIDExMiBbIiM8bGFtYmRhIDB4 MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCogb3JnLXBlcnNpc3Qt LW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJl YWQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1sb2FkIHByb2duXSAxIFtzbWFydHBhcmVucy1tb2Rl IHR1cm4tb24tc21hcnRwYXJlbnMtbW9kZSBzbWFydHBhcmVucy1nbG9iYWwtbW9kZS1lbmFibGUt aW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9n biBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0XSAxNCBbbGV0IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgcHJvamVjdC10cnktdmMg cHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXBy b2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJu LW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1l bmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2Fs bCBwcm9nbiBpZiBpZl0gMSBbZm9udC1sb2NrLWZsdXNoIHdoaXRlc3BhY2UtY29sb3Itb24gd2hp dGVzcGFjZS10dXJuLW9uIHdoaXRlc3BhY2UtbW9kZSBpZiBkb29tLWhpZ2hsaWdodC1ub24tZGVm YXVsdC1pbmRlbnRhdGlvbi1oIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5j YWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZl0gMSBbd2hpbGUgYW5kIGxl dCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIG9yZy1maW5kLWJhc2UtYnVmZmVyLXZpc2l0 aW5nIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmct LW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdl bmRhLWZpbGUtYnVmZmVyIGlmIHNldC1idWZmZXJdIDg0MyBbc2F2ZS1jdXJyZW50LWJ1ZmZlciB3 aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlmIGlmICIjPGxh bWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmln LS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0XSAxNzczIFsiIzxzdWJyIHNoZWxsLWNvbW1hbmQ+ IiBzaGVsbC1jb21tYW5kLS1zaGVsbC1jb21tYW5kLXdpdGgtZWRpdG9yLW1vZGUgYXBwbHkgc2hl bGwtY29tbWFuZCAiIzxzdWJyIHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5nPiIgZW52cmMtcHJvcGFn YXRlLWVudmlyb25tZW50IGFwcGx5IHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5nIGxldCogbGV0IGFn ZS1jb25maWctLW1ha2UtYWdlLWNvbmZpZ3VyYXRpb24gZnVuY2FsbCBsZXQgcHJvZ24gaWYgbGV0 XSAxIFtzZXRxIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxlLXJlbGF0aXZlLW5hbWUgbGV0 KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1k ZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGVd IDE0IFthbmQgb3IgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUt YXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlXSA3MyBbZnVuY2FsbCBpZiBz ZXRxIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGVudnJjLS1maW5kLWVudi1kaXIg IiM8c3ViciBlbnZyYy0tdXBkYXRlPiIgYXBwbHkgZW52cmMtLXVwZGF0ZSBlbnZyYy1tb2RlIGVu dnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9k ZSBpZl0gMTM1IFt5YXMtbWlub3ItbW9kZSB5YXMtbWlub3ItbW9kZS1vbiB5YXMtZ2xvYmFsLW1v ZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJk YSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRv b20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3 NT4iIGFwcGx5XSAxOSBbaWYgZGlyLWxvY2Fscy0tYWxsLWZpbGVzIGZ1bmNhbGwgaWYgc2V0cSB3 aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxl IGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHIgbGV0Kl0gOCBb YW5kIGlmIG9yZy1lbGVtZW50LS1jYWNoZS1wZXJzaXN0LWFmdGVyLXJlYWQgcnVuLWhvb2std2l0 aC1hcmdzIHdoaWxlIGxldCogcHJvZ24gaWYgaWYgcHJvZ24gaWYgbGV0KiBwcm9nbiBwcm9nbiBs ZXQqIG9yZy1wZXJzaXN0LXJlYWRdIDEzIFtzZXRxIGlmIGVkaXRvcmNvbmZpZy1jYWxsLWdldC1w cm9wZXJ0aWVzLWZ1bmN0aW9uIHNldHEgcHJvZ24gaWYgY29uZGl0aW9uLWNhc2UgbGV0IGVkaXRv cmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxl Y3Qgc2V0cSBpZiBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsXSA1 IFtpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBhZ2UtcmVh ZC1vdXRwdXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNv bmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZp bGUtY29udGVudHNdIDY5IFtlcXVhbCBpZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVu YW1lIGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldCBpZiBsZXQgd2hpbGVdIDI4 IFtpZiBhZ2UtcmVzZXQgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRp dGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUt Y29udGVudHMgYXBwbHkgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldF0gMTkgW3NldHEg bGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1l IGlmIHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYg bGV0KiBpZl0gMSBbc21hcnRwYXJlbnMtbW9kZSB0dXJuLW9uLXNtYXJ0cGFyZW5zLW1vZGUgc21h cnRwYXJlbnMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1h bC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxl ZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5XSAxOSBbIiM8Y29tcGlsZWQgMHgxNzZhZWViMTlh ZDJlZjZkPiIgZnVuY2FsbCBpZiBzZXRxIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxl IHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3QtY3VycmVu dCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMg YnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBi cmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmXSAxNTUgW2lmIGRv b20tcnVuLWxvY2FsLXZhci1ob29rcy1oIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxs YW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZk MzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4iXSAxIFtmaW5kLWF1 dG8tY29kaW5nIHNlbGVjdC1zYWZlLWNvZGluZy1zeXN0ZW0gc2VjdXJlLWhhc2ggc2V0cSBpZiBs ZXQgIiM8bGFtYmRhIDB4MzM3ZmM1NzUxY2I+IiBmdW5jYWxsIGNvbmQgbGV0KiBvcmctcGVyc2lz dC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24g bGV0IHByb2duIGxldCpdIDMyIFtobC1saW5lLWhpZ2hsaWdodCBobC1saW5lLW1vZGUgYW5kIGlm IGlmIGlmIHNhdmUtY3VycmVudC1idWZmZXIgcHJvZ24gaWYgbGV0IHdoaWxlIGxldCBsZXQgZ2xv YmFsLWhsLWxpbmUtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9v a3NdIDUgW2xldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZp bGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFzZS1idWZmZXItdmlz aXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29y Zy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHldIDQgW3VuaXF1 aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNlIGxldCogY3JlYXRlLWZpbGUtYnVmZmVyIHNl dHEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0 cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseSBm aW5kLWZpbGUtbm9zZWxlY3RdIDEwMDYgW29yZy1tYWNyby0tc2V0LXRlbXBsYXRlcyBvcmctbWFj cm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24g aWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXRxXSAzIFthZHZpY2UtYWRkICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJk NmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMzc+IiBldmFsLWFmdGVyLWxvYWQgY3RybGYt bG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9k ZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9n biBpZiBsZXRdIDQgW3doaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgYW5kIGxl dCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxl dCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHldIDc3NiBbYWdl LXdhaXQtZm9yLWNvbXBsZXRpb24gcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmls ZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUt aW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxl dF0gMjE2IFtzZXRxIGlmIGlmIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZXF1 YWwgYW5kIGlmIG9yZy1yb2FtLWRlc2NlbmRhbnQtb2YtcCBsZXQqIHByb2duIGlmXSAyNSBbZmlu ZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgZGVjb2RlLWNvZGluZy1pbnNlcnRlZC1yZWdp b24gc2F2ZS1yZXN0cmljdGlvbiBhZ2UtZmlsZS1kZWNvZGUtYW5kLWluc2VydCBpZiBzZXRxIGxl dCBzYXZlLWV4Y3Vyc2lvbiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2Vy dC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldF0gNzIgW25vcm1hbC1iYWNrdXAtZW5hYmxlLXBy ZWRpY2F0ZSBmdW5jYWxsIG5vdCBhbmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxl LW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIg YXBwbHkgc2V0cSBsZXQgbGV0XSAxIFtnbG9iYWwtdW5kby10cmVlLW1vZGUtZW5hYmxlLWluLWJ1 ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0 OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0 b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNv bXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIgYXBwbHldIDIzIFtzdHJpbmc9IGFuZCBpZiBlZGl0 b3Jjb25maWctLWFkdmljZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1j b250ZW50cyBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBs ZXQgb3JnLXBlcnNpc3QtLXJlYWQtZWxpc3AtZmlsZSBvciBzZXRxIGlmXSAxOCBbcHJvamVjdC10 cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1 bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1i LS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWIt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUg ZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ25dIDE1IFtmdW5jYWxsIG5v dCBhbmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0 KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0 IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdF0gMSBbb3JnLWZvbGQtY29y ZS1hZGQtZm9sZGluZy1zcGVjIG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0 aWFsaXplIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1v ZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDQgW2xldCog cHJvZ24gaWYgZGlyLWxvY2Fscy0tYWxsLWZpbGVzIGZ1bmNhbGwgaWYgc2V0cSB3aGlsZSBsZXQg bG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9n biBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlc10gMTAyIFtqaXQtbG9jay1tb2RlIGpp dC1sb2NrLXJlZ2lzdGVyIGppbngtbW9kZSBqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHBy b2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXRdIDQgW2Njb252LS1hbmFseXpl LWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJl dGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBsZXQgd2hpbGUgbGV0IGxldCBjb25kIG9yZy0tdGFn LWFkZC10by1hbGlzdCBzZXRxIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1j dXJyZW50LWJ1ZmZlcl0gMSBbZXF1YWwgaWYgaWYgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10 cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0XSAzMCBb YW5kIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNl dHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBw cm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBsZXQqIGhhY2stZGlyLWxvY2Fs LXZhcmlhYmxlc10gNCBbaWYgIiM8bGFtYmRhIC0weGNkNmQ2MzgxZDVkYzE5Mj4iIG1hcGNhciBv cmctcmVtb3ZlLWtleXdvcmQta2V5cyBpZiBsZXQqIGxldCogbGV0IHdoaWxlIGxldCBsZXQgaWYg bGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9uc10gMiBbYW5kIHdoaWxlIGxl dCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBvcmct LWNvbGxlY3Qta2V5d29yZHMtMSBsZXQqIG9yZy1jb2xsZWN0LWtleXdvcmRzIG9yZy1tYWNyby0t Y29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIGxldCBwcm9nbiBv cmctbW9kZSBmdW5jYWxsXSA2IFthbmQgbm90IGFuZCBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgbG9jYXRlLWRvbWlu YXRpbmctZmlsZSBwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeV0gMSBb c2F2ZS1jdXJyZW50LWJ1ZmZlciB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlz aXRpbmcgb3JnLWZpbmQtYmFzZS1idWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhl MDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFn ZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWZdIDE4Nzgg W2lmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxl dCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGZpbGUtbmFtZS1hcy1k aXJlY3RvcnldIDIgW2FuZCBsaW5lLWVuZC1wb3NpdGlvbiBzZWFyY2gtZm9yd2FyZCBhbmQgbGV0 IHNldC1hdXRvLW1vZGUtMSBsZXQgc2F2ZS1leGN1cnNpb24gY2F0Y2ggaGFjay1sb2NhbC12YXJp YWJsZXMtcHJvcC1saW5lIG9yIGFuZCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3 Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzXSAxIFtjY29udi1mdiBjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXpl LWNvbnRhaW5lciBsZXQqIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiB3aGlsZSBsZXQqIHByb2duIGlm IGlmXSAxIFsiIzxjb21waWxlZCAweDE3NmFlZWIxOWFkMmVmNmQ+IiBmdW5jYWxsIGlmIHNldHEg d2hpbGUgbGV0IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgcHJvamVjdC10cnktdmMgcHJvamVjdC0t ZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1 bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2Fs LW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4t YnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3NdIDEwNyBbaWYgb3IgbGV0IGlmIGxldCB3 aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBpZiBzZXRxIHNhdmUt Y3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxldCpdIDIgW2xldCBm aWxlLXJlbW90ZS1wIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxIGlmIGxl dCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgxYjkw ZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBzZXQtYXV0by1tb2Rl IGNvbmRpdGlvbi1jYXNlIGxldF0gMTYgW29yZy1tYWNyby0tZmluZC1rZXl3b3JkLXZhbHVlIG9y Zy1tYWNyby0tZmluZC1kYXRlIG9yZy1tYWNyby0tY29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWlu aXRpYWxpemUtdGVtcGxhdGVzIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlm IHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDMgW2VkaXRvcmNvbmZpZy1jb3JlLWdl dC1wcm9wZXJ0aWVzLWhhc2ggZnVuY2FsbCBzZXRxIGNvbmRpdGlvbi1jYXNlIGxldCBlZGl0b3Jj b25maWctY2FsbC1nZXQtcHJvcGVydGllcy1mdW5jdGlvbiBzZXRxIHByb2duIGlmIGNvbmRpdGlv bi1jYXNlIGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkg ZmluZC1maWxlLW5vc2VsZWN0IHNldHEgaWZdIDggW2xldCBpZiBsZXQqIHByb2duIHVud2luZC1w cm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBpZiBzZXRxIHNhdmUtY3VycmVudC1idWZm ZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxldCogaWYgaWZdIDE4IFthbmQgbGV0KiBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUt ZG9taW5hdGluZy1maWxlIGVudnJjLS1maW5kLWVudi1kaXIgIiM8c3ViciBlbnZyYy0tdXBkYXRl PiIgYXBwbHkgZW52cmMtLXVwZGF0ZSBlbnZyYy1tb2RlIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBhcHBseV0gMyBbY3RybGYtbW9kZS1lbmFibGUtaW4tYnVm ZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBp ZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldHEgaWZdIDYgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGxldCogaWYgaWYgIiM8bGFtYmRh IC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWctLWFk dmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNldHEgaWYg bGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiJdIDEgW2lmIGlmICIjPGxhbWJkYSAt MHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20t LXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4i IGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIgYXBwbHkgYWZ0ZXItZmluZC1m aWxlIGlmIHNhdmUtY3VycmVudC1idWZmZXJdIDEgW3JlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9w dC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91 cCByZWdleHAtb3B0IGNvbmNhdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBsZXQgc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgb3JnLS1jb2xsZWN0LWtl eXdvcmRzLTEgbGV0KiBvcmctY29sbGVjdC1rZXl3b3Jkc10gMSBbcnVuLWhvb2tzIGFwcGx5IHJ1 bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0w IHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxIGlmXSA1IFtj bC11bmlvbiBzZXQgaWYgZG9vbS1oaWdobGlnaHQtbm9uLWRlZmF1bHQtaW5kZW50YXRpb24taCBy dW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQt YXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmXSAxIFtzZXRxIGlmIGlmIGxldCBpZiBsZXQgd2hp bGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYgb3IgbGV0 IGlmIGxldF0gMTE0IFtsZXQgb3JnLWNvbXB1dGUtbGF0ZXgtYW5kLXJlbGF0ZWQtcmVnZXhwIGlm IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgbGV0IHByb2duIG9yZy1t b2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duXSAxIFtpZiBsZXQq IHByb2duIGlmIGRpci1sb2NhbHMtLWFsbC1maWxlcyBmdW5jYWxsIGlmIHNldHEgd2hpbGUgbGV0 IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQgcHJv Z24gaWZdIDExIFtsZXQgaWYgbGV0IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmls ZS1yZWxhdGl2ZS1uYW1lIGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1w cm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9m LWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mg cnVuLW1vZGUtaG9va3Mgb3JnLW1vZGVdIDEgW2VkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxl cyBlZGl0b3Jjb25maWctY29yZS1nZXQtcHJvcGVydGllcy1oYXNoIGZ1bmNhbGwgc2V0cSBjb25k aXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLWNhbGwtZ2V0LXByb3BlcnRpZXMtZnVuY3Rpb24g c2V0cSBwcm9nbiBpZiBjb25kaXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmlu ZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxXSA4IFthbmQgdW53 aW5kLXByb3RlY3Qgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgcHJvZ24gaWYgYWdlLXNjcnlwdC1w IGFzZXQgbGV0KiBwcm9nbiBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5 IGlmIGxldCBwcm9nbl0gNCBbYW5kIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5k LXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0 IHByb2duXSA3IFtsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5h bWUgaWYgc2V0cSBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBp ZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseV0gNCBbbGV0 IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNl dHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyICIjPHN1YnIgZW52 cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3NdIDQgW3Byb2duIGlmIGxldCBvcmctcGVy c2lzdC1sb2FkOmVsaXNwIGZ1bmNhbGwgbGV0KiBjb25zIHNldHEgaWYgcHJvZ24gaWYgd2hpbGUg bGV0KiBwcm9nbiBpZiBpZl0gMTMgWyIjPGNvbXBpbGVkIC0weDFkZGYxMTAxMmIzMzY3YmY+IiBw cm9qZWN0LS12YWx1ZS1pbi1kaXIgcHJvamVjdC10cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJl Y3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRj cnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVo YWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4t aG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZl0gNSBbc2F2 ZS1jdXJyZW50LWJ1ZmZlciB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlzaXRp bmcgYW5kIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNl dHEgbGV0IGxldF0gMTY2NiBbY29uY2F0IHNldHEgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVu d2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBzZXRxIGxvY2F0ZS1kb21pbmF0 aW5nLWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXRdIDMgW3JlcGxhY2UtcmVnZXhw LWluLXN0cmluZyBvcmctbWFjcm8tLWZpbmQta2V5d29yZC12YWx1ZSBvcmctbWFjcm8tLWNvbGxl Y3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBsZXQgcHJvZ24gb3JnLW1v ZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmXSAx IFtsZXQgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxlLXJlbGF0aXZlLW5hbWUg YnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJy ZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJl YWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBv cmctbW9kZSBmdW5jYWxsIHByb2duXSAzIFtsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIy NWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1m aWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1i ZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGxdIDI1IFtvcmctZm9sZC1jb3JlLS1wcm9w ZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSBvcmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3Jn LWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgbGV0IHByb2duIG9yZy1t b2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZl0g MTIgW2NvZGluZy1zeXN0ZW0tY2hhbmdlLXRleHQtY29udmVyc2lvbiBtZXJnZS1jb2Rpbmctc3lz dGVtcyBsZXQgZWRpdG9yY29uZmlnLW1lcmdlLWNvZGluZy1zeXN0ZW1zIHNldHEgcHJvZ24gaWYg Y29uZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVj dCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cSBpZiBsZXQgIiM8bGFtYmRhIC0weDE2OGUw NmZiNGZhZDk1NTc+Il0gMSBbc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldCBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQgYWdlLWZpbGUtaGFuZGxlciAiIzxzdWJyIGluc2VydC1maWxlLWNv bnRlbnRzPiIgYXBwbHkgaWZdIDEgW29yIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmls ZS1yZWxhdGl2ZS1uYW1lIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wIGFuZCBpZiBvcmct cm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseSBkZWxldGUtZmlsZSBpZl0gMTEg W2xldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBp ZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZl0gOCBbYW5kIG9yIGxldCBp ZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgaWYgc2V0 cSBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqXSAx NiBbb3Igbm90IHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGVudnJjLS1maW5kLWVu di1kaXIgIiM8c3ViciBlbnZyYy0tdXBkYXRlPiIgYXBwbHkgZW52cmMtLXVwZGF0ZSBlbnZyYy1t b2RlIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3Jt YWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiJdIDYgW2NhbGxlZC1pbnRl cmFjdGl2ZWx5LXAgeWFzLW1pbm9yLW1vZGUgeWFzLW1pbm9yLW1vZGUtb24geWFzLWdsb2JhbC1t b2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1i ZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBk b29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzVi NzU+Il0gMSBbaWYgc2V0cSBwcm9nbiBwcm9nbiBpZiBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxl dCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNh dGNoIG9yZy1lbGVtZW50LS1wYXJzZS10b10gNCBbYXBwbHkgaWYgZWRpdG9yY29uZmlnLS1hZHZp Y2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29udGVudHMgbGV0IGlm IHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGFnZS1yZWFkLW91 dHB1dCBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlXSA0MSBbZXF1YWwg aWYgaWYgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBlcXVhbCBhbmQgaWYgb3Jn LXJvYW0tZGVzY2VuZGFudC1vZi1wIGxldCogcHJvZ24gaWZdIDEwIFtlcXVhbCBpZiBsZXQgaWYg bGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGlmIHNldHEg c2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0Kl0gMyBb aGFjay1sb2NhbC12YXJpYWJsZXMtYXBwbHkgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzLW5vbi1m aWxlLWJ1ZmZlciBwcm9qZWN0LS12YWx1ZS1pbi1kaXIgcHJvamVjdC10cnktdmMgcHJvamVjdC0t ZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1 bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2Fs LW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4t YnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4 YzQ5MWE2ZT4iIGFwcGx5XSAxIFtlbnZyYy1nbG9iYWwtbW9kZS1jbWhoIHRleHQtbW9kZSBvdXRs aW5lLW1vZGUgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8t bW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdF0gMiBbbGV0 IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2du IGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxIGlmIGxldF0gMzggW29y IGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGJyZWFkY3J1 bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1i LS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWIt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUg ZnVuY2FsbCBwcm9nbiBpZl0gNSBbaWYgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90 IGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgx YjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBzZXQtYXV0by1t b2RlIGNvbmRpdGlvbi1jYXNlIGxldCBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1 ZDhjNDkxYTZlPiJdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBhdmwtdHJlZS1tYXBjIHByb2duIGlmIHByb2duIGlmIHNhdmUt Y3VycmVudC1idWZmZXIgcHJvZ24gaWYgb3JnLWVsZW1lbnQtLWNhY2hlLXBlcnNpc3QtYWZ0ZXIt cmVhZCBydW4taG9vay13aXRoLWFyZ3NdIDIgW3VuaXF1aWZ5LXJhdGlvbmFsaXplLWZpbGUtYnVm ZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNlIGxldCogY3JlYXRl LWZpbGUtYnVmZmVyIHNldHEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgx MzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1u b3NlbGVjdCBhcHBseV0gMyBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBj Y29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYt bWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGF2bC10cmVlLW1hcGMgcHJvZ24gaWYg cHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMSBbcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2Rl IGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYx OWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIgYXBw bHkgYWZ0ZXItZmluZC1maWxlXSAyMyBbb3IgYW5kIGlmIGxldCogcHJvZ24gcHJvZ24gbGV0KiBv cmctcGVyc2lzdC1yZWFkIHByb2duIGxldCogb3JnLXBlcnNpc3QtbG9hZCBwcm9nbiBpZiBsZXQg cHJvZ24gb3JnLW1vZGVdIDIxIFtzYXZlLWV4Y3Vyc2lvbiBsZXQgaGFjay1sb2NhbC12YXJpYWJs ZXMtLWZpbmQtdmFyaWFibGVzIGFwcGVuZCBsZXQgaWYgbGV0ICIjPGxhbWJkYSAweDExMmFiZDk1 MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNrLWxvY2Fs LXZhcmlhYmxlcyBqaW54LW1vZGUgamlueC0tb24gZ2xvYmFsLWppbngtbW9kZS1lbmFibGUtaW4t YnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3NdIDIgW3NhdmUtY3VycmVudC1idWZmZXIg d2hpbGUgbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZl ci12aXNpdGluZyBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxl dCArb3JnLS1vcHRpbWl6ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBhcHBseSBvcmct Z2V0LWFnZW5kYS1maWxlLWJ1ZmZlciBpZiBzZXQtYnVmZmVyXSAyMjU4IFttYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1h a2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxp emUtY29udGFpbmVyIGxpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3Igb3JnLXBlcnNpc3Qt LWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbl0gMSBbc2V0cSBpZiBvcmctcGVyc2lzdC0tZ2V0LWNv bGxlY3Rpb24gbGV0IHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJv Z24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgd2hpbGVdIDEgW29yZy1mb2xk LWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIGxldCBwcm9nbiBvcmctbW9kZSBm dW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cV0gMyBbc2VsZWN0LXNhZmUtY29kaW5nLXN5c3RlbSBz ZWN1cmUtaGFzaCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgMHgzNDM4NDhkN2RjYj4iIGZ1bmNhbGwg Y29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJz aXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3Rlcl0g MTQgW2FuZCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNv bmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb25dIDUgWyIjPGNvbXBpbGVk IDB4MTQwNmYzNTk3MjBiM2RlNT4iICIjPGNvbXBpbGVkIC0weDZhYTE2OGIyZDUxYTVlYT4iIHNv cnQtY29kaW5nLXN5c3RlbXMgZmluZC1jb2Rpbmctc3lzdGVtcy1yZWdpb24gc2VsZWN0LXNhZmUt Y29kaW5nLXN5c3RlbSBzZWN1cmUtaGFzaCBlcXVhbCBhbmQgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBpZiBwcm9nbiBpZiBvcmctZWxlbWVudC0tY2FjaGUtcGVyc2lzdC1iZWZvcmUtcmVhZCBydW4t aG9vay13aXRoLWFyZ3MtdW50aWwtc3VjY2VzcyAiIzxsYW1iZGEgMHgxYTFjOTJmZDFlYjdhNWRm PiJdIDEwIFt0dXJuLW9uLXVuZG8tdHJlZS1tb2RlIGdsb2JhbC11bmRvLXRyZWUtbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBw cm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldHFdIDE0IFthcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1h ZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlm IGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9w dGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRh LWZpbGUtYnVmZmVyXSAxIFtub3QgYW5kIHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxl cy1wIHNvLWxvbmctLWNoZWNrLWhlYWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFw cGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxh bWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbl0gNiBbb3JnLXBlcnNpc3QtcmVn aXN0ZXIgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQg d2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IHByb2duIGlmIG9yIGFuZF0gMSBbZmlu ZC1hdXRvLWNvZGluZyBzZWxlY3Qtc2FmZS1jb2Rpbmctc3lzdGVtIHNlY3VyZS1oYXNoIGVxdWFs IGFuZCBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIHByb2duIGlmIG9yZy1lbGVtZW50LS1jYWNo ZS1wZXJzaXN0LWJlZm9yZS1yZWFkIHJ1bi1ob29rLXdpdGgtYXJncy11bnRpbC1zdWNjZXNzICIj PGxhbWJkYSAtMHhiNDNmZTE1MWIxNjRiMD4iICIjPGNvbXBpbGVkIC0weDk4MmYyOTg3NDgxNWU5 YT4iIG1hcGMgc2VxLWRvXSAxNCBbZm9udC1sb2NrLWNvbXBpbGUta2V5d29yZHMgZm9udC1sb2Nr LXNldC1kZWZhdWx0cyBmb250LWxvY2stcmVtb3ZlLWtleXdvcmRzIG9yZy1tb2Rlcm4tbW9kZSBv cmctbW9kZXJuLS1vbiBnbG9iYWwtb3JnLW1vZGVybi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1h dXRvLW1vZGUtMCBwcm9nbiBpZl0gMiBbc2V0IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMt YW5kLW9wdGlvbnMgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyIGNhdGNoIGxldCB3aGlsZSBsZXQgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZS1idWZmZXJz IGlmIGlmXSAxIFtub3QgYW5kIHdoaWxlIGxldCB3aGlsZSBsZXQgaW5oaWJpdC1sb2NhbC12YXJp YWJsZXMtcCBub3QgYW5kIGlmIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3 Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5XSAxMCBbbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGNsLW1hcGNh biBtYXBjYXIgc2V0IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgc2F2 ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAyIFttYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRl ZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0 Kl0gMSBbZXF1YWwgYW5kIGlmIGxldCBsZXQgaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIG9yZy1maW5k LWJhc2UtYnVmZmVyLXZpc2l0aW5nIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4i XSA0IFtsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBs ZXQgaWYgb3IgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZp bGUtbmFtZSBsZXQqXSAyIFtub3QgYW5kIHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxl cy1wIG5vdCBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBp bGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0 LWF1dG8tbW9kZSBjb25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1vZGVdIDUgW2lmIGRpci1sb2Nh bHMtLWFsbC1maWxlcyBmdW5jYWxsIGlmIHNldHEgd2hpbGUgbGV0IGxvY2F0ZS1kb21pbmF0aW5n LWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQgcHJvZ24gaWYgaGFjay1kaXItbG9j YWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXNdIDQzIFtlcXVh bCBhbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZp YXRlLWZpbGUtbmFtZSBpZiBzZXRxIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1u b3NlbGVjdC0xXSAxMCBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1h a2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBhdmwtdHJlZS1tYXBjXSAzIFtub3QgYW5k IHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgaWYgbGV0IGlmIGxl dCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJp YWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgamlueC1tb2RlXSAxMCBbbGV0IGlmIGxl dCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCogaWYg aWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBlZGl0 b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3RdIDQgW2Fib3J0LWlmLWZpbGUtdG9v LWxhcmdlIGVxIGlmIHByb2duIGlmIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4 MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUt bm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0XSAyIFttYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3Jn LXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbl0gNiBbbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBhdmwtdHJlZS1tYXBjIHByb2duIGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1i dWZmZXJdIDIgW25vdCBhbmQgd2hpbGUgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90 IGFuZCBsZXQgc2V0LWF1dG8tbW9kZS0xIGxldCBzYXZlLWV4Y3Vyc2lvbiBjYXRjaCBoYWNrLWxv Y2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgYXBwZW5kIGxldCBpZl0gMTYgW2FuZCBpZiBsZXQgbGV0 IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGxl dCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12aXNpdGluZyBsZXQg IiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsXSAzIFtsZXQgb3Igbm90IGxl dCBub3JtYWwtYmFja3VwLWVuYWJsZS1wcmVkaWNhdGUgZnVuY2FsbCBub3QgYW5kIHNhdmUtY3Vy cmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxldCogaWYgaWYgIiM8bGFt YmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iXSA0IFtub3QgYW5kIHdoaWxlIGxldCB3aGlsZSBsZXQg aW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgbGV0 IHNhdmUtZXhjdXJzaW9uIGNhdGNoIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBvcl0g NiBbbGV0KiBjb25zIHNldHEgaWYgcHJvZ24gaWYgd2hpbGUgbGV0KiBwcm9nbiBpZiBpZiBwcm9n biBpZiBsZXQqIHByb2duIHByb2duXSAzIFtsZXQgZmlsZS1yZW1vdGUtcCBub3Qgb3IgYW5kIGlm IGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGNkciBsZXQqIGNvbmRpdGlvbi1jYXNlIGlm IGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgx YjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZV0gOCBbbGV0KiBjcmVhdGUt ZmlsZS1idWZmZXIgc2V0cSBpZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEz MmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5v c2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxXSAxNCBbbm90IGFuZCB3aGlsZSBs ZXQgd2hpbGUgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1 dG8tbW9kZS0xIHNvLWxvbmctLWNoZWNrLWhlYWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0by1t b2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2VdIDQgW21hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFr ZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6 ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFmPiIgbWFwY2FyICIjPGxhbWJkYSAweDFl MTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCpdIDMgW3NwLS1tZXJnZS1wYWlyLWNvbmZp Z3VyYXRpb25zIHNwLXVwZGF0ZS1sb2NhbC1wYWlycyAtZWFjaCBzcC0tdXBkYXRlLWxvY2FsLXBh aXJzIHNwLS1pbml0IHNtYXJ0cGFyZW5zLW1vZGUgdHVybi1vbi1zbWFydHBhcmVucy1tb2RlIHNt YXJ0cGFyZW5zLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9k ZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMF0gNSBb Y2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWYgaWYg bGV0IG9yZy1hZ2VuZGEtcHJlcGFyZSBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNhbGwtaW50ZXJhY3RpdmVseSBjb25kIGxldCpdIDQgW3NldHEgaWYgaWYgbGV0 IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQg ZmluZC1idWZmZXItdmlzaXRpbmcgYW5kIGxldCogaWYgaWZdIDcgW2lmIHNhdmUtY3VycmVudC1i dWZmZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBsZXQgcHJvZ24gb3Jn LW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWZdIDIgW2Vk aXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jjb25maWctY29yZS0tZ2V0LWhhbmRs ZXMgZWRpdG9yY29uZmlnLWNvcmUtZ2V0LXByb3BlcnRpZXMtaGFzaCBmdW5jYWxsIHNldHEgY29u ZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy1jYWxsLWdldC1wcm9wZXJ0aWVzLWZ1bmN0aW9u IHNldHEgcHJvZ24gaWYgY29uZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZp bmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3RdIDcgW2FwcGx5IGlmIGVk aXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxl LWNvbnRlbnRzIGxldCBjb25kaXRpb24tY2FzZSBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBm aW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0 ODEzMmE+Il0gMjAgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3Jn LXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBpZl0gMSBbYnVmZmVyLXN1YnN0cmlu Zy1uby1wcm9wZXJ0aWVzIG9yZy10cmltIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1r ZXl3b3JkLXBhcnNlciBvcmctbWFjcm8tLWZpbmQta2V5d29yZC12YWx1ZSBvcmctbWFjcm8tLWNv bGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBsZXQgcHJvZ24gb3Jn LW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDEgW2dsb2JhbC11bmRv LXRyZWUtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3Jn LW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlm IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgaWZdIDEyIFtjb25kaXRpb24tY2FzZSBs ZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmls ZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1 bmNhbGwgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFw cGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyIGlmIHNldC1idWZmZXJdIDMgW2lmIG9yIGxl dCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBs ZXQgaWYgb3IgbGV0IGlmIGxldCB3aGlsZV0gNSBbZGlzcGxheS13YXJuaW5nIGVkaXRvcmNvbmZp Zy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNvbnRlbnRz IGlmIHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGxldCBvcmct cGVyc2lzdC0tcmVhZC1lbGlzcC1maWxlIG9yIHNldHEgaWYgcHJvZ24gaWZdIDEyIFt0dXJuLW9u LXNtYXJ0cGFyZW5zLW1vZGUgc21hcnRwYXJlbnMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZl cnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFh NmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3Nh dmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBp bGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiJdIDMgW2lmIG9yZy1leHRyYWN0LWxvZy1zdGF0ZS1zZXR0 aW5ncyBsZXQgbGV0IHdoaWxlIGxldCBsZXQqIGxldCB3aGlsZSBsZXQgbGV0IGlmIGxldCBwcm9n biBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnNdIDMgW2Rpc3BsYXktd2FybmluZyBlZGl0 b3Jjb25maWctbWFqb3ItbW9kZS1ob29rIHJ1bi1ob29rcyBhcHBseSBydW4tbW9kZS1ob29rcyBv cmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQg aWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDQgW2FkZC1ob29rIGZvbnQtbG9jay1tb2Rl LWludGVybmFsIGZvbnQtbG9jay1kZWZhdWx0LWZ1bmN0aW9uIGZvbnQtbG9jay1tb2RlIHR1cm4t b24tZm9udC1sb2NrIHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZvbnQtbG9j ay1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9k ZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbl0gMSBbaWYgc3Vic3Ry aW5nIGlmIGxldCBmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpZiBsZXQgaW5oaWJpdC1sb2NhbC12 YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgc28tbG9uZy0tY2hlY2staGVh ZGVyLW1vZGVzIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZV0gNCBb amlueC1tb2RlIGppbngtLW9uIGdsb2JhbC1qaW54LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVu LWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1 dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdF0gMTEg W3NldHEgbGV0IGNvbmQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQqIGlm IGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRp dG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3Nl bGVjdF0gMSBbcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2Rl LTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgaWYgbGV0 ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+Il0gMyBbZm9udC1sb2NrLWFkZC1rZXl3b3Jk cyB3aGl0ZXNwYWNlLWNvbG9yLW9uIHdoaXRlc3BhY2UtdHVybi1vbiB3aGl0ZXNwYWNlLW1vZGUg aWYgZG9vbS1oaWdobGlnaHQtbm9uLWRlZmF1bHQtaW5kZW50YXRpb24taCBydW4taG9va3MgcnVu LW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAg cHJvZ24gaWZdIDQgW2FuZCBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIHdoaWxlIGFuZCBsZXQqIG9y IGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12aXNpdGluZyBs ZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxldCArb3JnLS1vcHRp bWl6ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBhcHBseV0gMTEyIFtvciBsZXQgaWYg bGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZiBvcmctcm9hbS1kZXNjZW5k YW50LW9mLXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kXSA3IFthcHBseSAiIzxj b21waWxlZCAtMHgxNGYxNTBkMTIwZDYwN2U+IiBhcHBseSBkZWxldGUtZmlsZSBpZiBhZ2UtZGVs ZXRlLW91dHB1dC1maWxlIGlmIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBj b25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1m aWxlLWNvbnRlbnRzIGFwcGx5XSAzMiBbb3Igbm90IHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGlu Zy1maWxlIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3Qt Y3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1j cnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwt bW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1h bC1tb2RlIGlmXSAxMCBbb3JnLWZvbGQtLWFkdmljZS1lZGl0LWNvbW1hbmRzIGxldCBwcm9nbiBv cmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQg aWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cSBpZl0gNCBbbGV0IHNhdmUtZXhjdXJz aW9uIG9yZy1lbGVtZW50LXByb3BlcnR5LWRyYXdlci1wYXJzZXIgY29uZCBzZXRxIGxldCBzYXZl LWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUg bGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gNSBbbGV0IHdoaWxlIGxl dCBmaWxlLXRydWVuYW1lIGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldCBpZiBs ZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXRdIDEz IFtjdHJsZi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBp ZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlk MWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4iIGFwcGx5 XSAyMCBbc2VxLWZpbHRlciBsZXQgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgd2hp bGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IHByb2duIGlmIG9yIGFuZCBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBpZl0gNiBbIiM8Y29tcGlsZWQg LTB4NmFhMTY4YjJkNTFhNWVhPiIgc29ydC1jb2Rpbmctc3lzdGVtcyBmaW5kLWNvZGluZy1zeXN0 ZW1zLXJlZ2lvbiBzZWxlY3Qtc2FmZS1jb2Rpbmctc3lzdGVtIHNlY3VyZS1oYXNoIGVxdWFsIGFu ZCBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIHByb2duIGlmIG9yZy1lbGVtZW50LS1jYWNoZS1w ZXJzaXN0LWJlZm9yZS1yZWFkIHJ1bi1ob29rLXdpdGgtYXJncy11bnRpbC1zdWNjZXNzICIjPGxh bWJkYSAweDExMzFkNWE3OTcwYmE3ZGE+IiAiIzxjb21waWxlZCAtMHg5ODJmMjk4NzQ4MTVlOWE+ Il0gNiBbYWR2aWNlLS1tZW1iZXItcCBhZHZpY2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRkICIj PHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFf Mzc+IiBldmFsLWFmdGVyLWxvYWQgY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2du IGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbl0gMSBbbGV0IGZpbGUtbmFtZS1zYW5zLXZlcnNp b25zIGlmIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBsZXQgIiM8bGFtYmRhIDB4 MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4i IHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2Fz ZSBsZXQgbm9ybWFsLW1vZGVdIDkgW2xldCBsZXQgb3JnLXBlcnNpc3QtLXJlYWQtZWxpc3AtZmls ZSBvciBzZXRxIGlmIHByb2duIGlmIGxldCogcHJvZ24gcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1y ZWFkIHByb2duIGxldCogb3JnLXBlcnNpc3QtbG9hZF0gNiBbZXF1YWwgYW5kIGlmIGxldCBsZXQg aWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0 cSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4t ZGlyZWN0b3J5IHByb2plY3QtY3VycmVudF0gOCBbZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMt ZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGZp bGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldF0gMiBbZm9udC1sb2NrLWRlZmF1bHQt ZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVybi1vbi1mb250LWxv Y2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVu LWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBh cHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBh cHBseV0gMiBbYXBwbHkgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVu dHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29udGVudHMgaWYgcHJvZ24gdW53aW5kLXByb3RlY3Qgc2F2 ZS1jdXJyZW50LWJ1ZmZlciBsZXQgbGV0IG9yZy1wZXJzaXN0LS1yZWFkLWVsaXNwLWZpbGUgb3Ig c2V0cSBpZiBwcm9nbl0gMTIgWz4gcHJvZ24gaWYgbGV0IGNvbmQgbGV0KiBub3Qgb3IgYW5kIGlm IGxldCogcHJvZ24gcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWFkIHByb2duXSAzIFtsZXQgZmlu ZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgx MzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1u b3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cSBpZl0gMTAgW2xldCogb3IgbGV0 IGZpbmQtYnVmZmVyLXZpc2l0aW5nIG9yZy1maW5kLWJhc2UtYnVmZmVyLXZpc2l0aW5nIGxldCAi IzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9wdGltaXpl LWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUt YnVmZmVyIGlmIHNldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaF0gMjYgW2FuZCBp ZiBzYXZlLWN1cnJlbnQtYnVmZmVyIHdoaWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12 aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBw bHkgc2V0cV0gMTA4IFthZHZpY2UtYWRkIG9yZy1mb2xkLS1hZHZpY2UtZWRpdC1jb21tYW5kcyBs ZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJv Z24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHFdIDIwIFtzYXZlLWN1 cnJlbnQtYnVmZmVyIGNhdGNoIGxldCB3aGlsZSBsZXQgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZS1i dWZmZXJzIGlmIGlmIGxldCBvcmctYWdlbmRhLXByZXBhcmUgY2F0Y2ggb3JnLWFnZW5kYS1saXN0 IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjYWxsLWludGVyYWN0aXZlbHkgY29uZF0gMiBbbGV0IG9y IGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZl OWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZp bmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3RdIDM0IFttYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1p bnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uXSA0IFthbmQgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIG9yZy1maW5kLWJhc2UtYnVm ZmVyLXZpc2l0aW5nIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwg bGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9y Zy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyXSAzMCBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1h bmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWlu dGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNv bnRhaW5lciBzZXRxIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJv Z24gaWZdIDIgW3Byb2duIHVud2luZC1wcm90ZWN0IGxldCogb3JnLXVuZm9udGlmeS1yZWdpb24g b3JnLW1vZGVybi0tdW5mb250aWZ5ICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZk NjI2NDYxX2Fub255bW91c19sYW1iZGFfMjc+IiBpbnRlcm5hbC0td2l0aG91dC1yZXN0cmljdGlv biBvcmctbW9kZXJuLW1vZGUgb3JnLW1vZGVybi0tb24gZ2xvYmFsLW9yZy1tb2Rlcm4tbW9kZS1l bmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2Fs bCBwcm9nbiBpZl0gMiBbZXF1YWwgYW5kIGlmIGxldCBsZXQgaWYgbGV0KiBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9taW5hdGluZy1m aWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0XSAyMiBbc2V0IGxldCBvcmctc2V0LWZv bnQtbG9jay1kZWZhdWx0cyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBz ZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 XSAxIFtlZGl0b3Jjb25maWctY29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtLWdl dC1oYW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jjb25maWctY29y ZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtZ2V0LXByb3BlcnRpZXMtaGFzaCBmdW5j YWxsIHNldHEgY29uZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy1jYWxsLWdldC1wcm9wZXJ0 aWVzLWZ1bmN0aW9uIHNldHEgcHJvZ24gaWYgY29uZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZp Zy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdF0gNCBbZGVjb2RlLWNvZGluZy1pbnNlcnRlZC1y ZWdpb24gc2F2ZS1yZXN0cmljdGlvbiBhZ2UtZmlsZS1kZWNvZGUtYW5kLWluc2VydCBpZiBzZXRx IGxldCBzYXZlLWV4Y3Vyc2lvbiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWlu c2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMSBb c2V0cSBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBs ZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBs ZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5XSA5IFtub3Qg YW5kIHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgaWYgbGV0ICIj PGxhbWJkYSAweDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxl cyBhcHBseSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXRxIGFuZCBsZXRdIDYgW21hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsXSAxIFtpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVh NDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmls ZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cSBpZiBsZXQgIiM8bGFtYmRh IC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxldCArb3JnLS1vcHRpbWl6ZS1iYWNrZ3Jv dW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYV0gNSBbb3JnLWNvbXB1dGUtbGF0ZXgtYW5kLXJlbGF0ZWQt cmVnZXhwIGlmIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgbGV0IHBy b2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlm XSAyIFtsZXQgaWYgc2F2ZS1leGN1cnNpb24gbGV0IGhhY2stbG9jYWwtdmFyaWFibGVzLS1maW5k LXZhcmlhYmxlcyBhcHBlbmQgbGV0IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3 PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJs ZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbF0gMiBbbGV0IHdoaWxlIGxldCBsZXQg Y29uZCBvcmctLXRhZy1hZGQtdG8tYWxpc3Qgc2V0cSBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3JnLWFn ZW5kYS1wcmVwYXJlLWJ1ZmZlcnNdIDEgW2lmIHN1YnN0cmluZyBpZiBsZXQgZmlsZS1uYW1lLXNh bnMtdmVyc2lvbnMgaWYgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc28tbG9uZy0tY2hl Y2staGVhZGVyLW1vZGVzIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9k ZSBjb25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1vZGUgaWZdIDEgW2Z1bmN0aW9uIGxldCogb3Jn LXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbiBwcm9nbiBsZXQqIG9yZy1w ZXJzaXN0LXJlYWQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1sb2FkIHByb2duIGlmIGxldCBwcm9n biBvcmctbW9kZV0gMSBbbGV0IGZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGlmIGxldCBpbmhpYml0 LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgaWYgbGV0IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJh YmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1s b2NhbC12YXJpYWJsZXMgamlueC1tb2RlXSA5IFt3aGlsZSBhZ2Utd2FpdC1mb3ItY29tcGxldGlv biBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNh c2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50 cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3RdIDQxIFtzYXZlLXJlc3RyaWN0aW9u IGFnZS1maWxlLWRlY29kZS1hbmQtaW5zZXJ0IGlmIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIHBy b2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBw bHkgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldF0gMzggW2lmIGxldCogcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGlmIHNldHEgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEg LTB4ZDZlOWJiMjVhNDgxMzJhPiJdIDcgWy1lYWNoIHNwLS11cGRhdGUtbG9jYWwtcGFpcnMgc3At LWluaXQgc21hcnRwYXJlbnMtbW9kZSB0dXJuLW9uLXNtYXJ0cGFyZW5zLW1vZGUgc21hcnRwYXJl bnMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2Rl IGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYV0gOCBbcHJvZ24gaWYgb3JnLWVsZW1l bnQtLWNhY2hlLXNldHVwLWNoYW5nZS1mdW5jdGlvbnMgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1 ZmZlciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IGxldCBwcm9nbiBvcmct bW9kZSBmdW5jYWxsIHByb2duIGlmXSAyIFt3cy1idXRsZXItbW9kZSB3cy1idXRsZXItZ2xvYmFs LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2Rl IGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQt YXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxXSA4IFtsZXQgaWYgb3IgbGV0IGlmIGxldCB3aGls ZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQgZmluZC1idWZmZXIt dmlzaXRpbmcgb3JnLWZpbmQtYmFzZS1idWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgx NjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbF0gMSBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQq IGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZh cmlhYmxlcyBsZXQqIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJp YWJsZXMtbm9uLWZpbGUtYnVmZmVyIHByb2plY3QtLXZhbHVlLWluLWRpciBwcm9qZWN0LXRyeS12 YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBwcm9qZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0t cHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzXSAyIFtjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXpl LWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUx MmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5v cm1hbGl6ZS1jb250YWluZXIgbGlzdCBvcmctcGVyc2lzdC0tZmluZC1pbmRleCBvcl0gOCBbZG9v bS1ydW4taG9va3MgaWYgZG9vbS1ydW4tbG9jYWwtdmFyLWhvb2tzLWggcnVuLWhvb2tzIGhhY2st bG9jYWwtdmFyaWFibGVzLWFwcGx5IGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcy1ub24tZmlsZS1i dWZmZXIgcHJvamVjdC0tdmFsdWUtaW4tZGlyIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQt aW4tZGlyZWN0b3J5IHByb2plY3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0x IGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2Rl LW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZl cnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzXSAxIFtmdW5jdGlvbiBhc3NvYy1kZWZhdWx0IHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2V0cSBpZiBpZiBsZXQgIiM8bGFtYmRhIDB4 MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4i IHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2Fz ZSBsZXRdIDMgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIHNldHEg cHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZl0gMyBbbGV0 IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9j YWwtdmFyaWFibGVzIGNvbmRpdGlvbi1jYXNlIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBl YTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12 YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbF0gMSBbb3JnLS1jb2xsZWN0 LWtleXdvcmRzLTEgbGV0KiBvcmctY29sbGVjdC1rZXl3b3JkcyBsZXQgcHJvZ24gaWYgb3JnLXNl dC1yZWdleHBzLWFuZC1vcHRpb25zIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2 ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBsZXQgd2hpbGUgbGV0IGxldCBvcmctYWdlbmRhLXByZXBh cmUtYnVmZmVyc10gMSBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1h cGNhciAiIzxsYW1iZGEgMHgxZTEyYjhmYmZmYThkYT4iIGZ1bmNhbGwgY29uZCBsZXQqIGNvbmQg bGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBsaXN0IG9yZy1wZXJzaXN0LS1m aW5kLWluZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ25dIDEgW2Nv bmNhdCBpZiBsZXQgaWYgbGV0IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1y ZWxhdGl2ZS1uYW1lIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wIGFuZF0gMTAgW2xldCBj b25kIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wIGFuZCBpZiBvcmctcm9hbS1kYi1hdXRv c3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseSBkZWxldGUtZmlsZSBpZiBhZ2UtZGVsZXRlLW91dHB1 dC1maWxlIGlmIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGVdIDIgW2Rvb20tcnVuLWhv b2tzIGlmIGRvb20tcnVuLWxvY2FsLXZhci1ob29rcy1oIHJ1bi1ob29rcyBoYWNrLWxvY2FsLXZh cmlhYmxlcy1hcHBseSBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMtbm9uLWZpbGUtYnVmZmVyIHBy b2plY3QtLXZhbHVlLWluLWRpciBwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVj dG9yeSBwcm9qZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNy dW1iLXByb2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhh bGYtb2YtZ2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1o b29rcyBpZl0gMiBbbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgaWYgbGV0 ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBk ZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUg Y29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmXSA1IFtjY29udi1tYWtlLWludGVycHJl dGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5l ciBsaXN0IG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVj dGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBp Zl0gMiBbb3JnLW1vZGVybi1tb2RlIG9yZy1tb2Rlcm4tLW9uIGdsb2JhbC1vcmctbW9kZXJuLW1v ZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1 bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdF0gMTcgW2xldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJy ZXZpYXRlLWZpbGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFzZS1i dWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2Fs bCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkg b3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWZdIDIgW2lmIGxldCBtYWtlLXRlbXAtZmlsZSBs ZXQgb3IgYXNldCBsZXQqIHByb2duIHByb2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZp bGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSA3IFtsZXQg cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIGlmIGxl dCBpZiAiIzxsYW1iZGEgMHgyNGI2NzY4MDU2Zjg2YmE+IiBmdW5jYWxsIGxldCBkb29tLW1ha2Ut aGFzaGVkLWF1dG8tc2F2ZS1maWxlLW5hbWUtYSBhcHBseSBtYWtlLWF1dG8tc2F2ZS1maWxlLW5h bWUgb3IgZmlsZS1uZXdlci10aGFuLWZpbGUtcF0gOSBbdHVybi1vbi11bmRvLXRyZWUtbW9kZSBn bG9iYWwtdW5kby10cmVlLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1h bC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxl ZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4 PiJdIDQzIFttYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbiBs ZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIHNhdmUt Y3VycmVudC1idWZmZXJdIDEgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5j dGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1j bG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNl dHEgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqXSAxIFtsZXQgZmls ZS1uYW1lLXNhbnMtdmVyc2lvbnMgaWYgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90 IGFuZCBpZiBsZXQgaWYgbGV0ICIjPGxhbWJkYSAweDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25n LS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9k ZS1ob29rc10gOSBbZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uIGZpbGUtbmFtZS1iYXNlIGJyZWFk Y3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNy dW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1 bWItbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1v ZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWZdIDEgW3NldHEg bGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5 IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldF0gMjIgW3Byb2plY3RpbGUtcHJvamVjdC1y b290IHByb2plY3QtcHJvamVjdGlsZSBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBwcm9qZWN0 LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3Qt Y3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFs LW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3Jt YWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53 aW5kLXByb3RlY3RdIDEgW29yIGlmIHNldHEgd2hpbGUgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldHEgaWYgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBs eSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2Rl IGFwcGx5IHNldC1hdXRvLW1vZGVdIDEgW2xldCBvcmctc2V0LWZvbnQtbG9jay1kZWZhdWx0cyBs ZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJv Z24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHFdIDMgWyIjPGNvbXBp bGVkIDB4MTQwNmYzNTk3MjBiM2RlNT4iICIjPGNvbXBpbGVkIC0weDZhYTE2OGIyZDUxYTVlYT4i IHNvcnQtY29kaW5nLXN5c3RlbXMgZmluZC1jb2Rpbmctc3lzdGVtcy1yZWdpb24gc2VsZWN0LXNh ZmUtY29kaW5nLXN5c3RlbSBzZWN1cmUtaGFzaCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgMHgzNWQ1 MWZkNTVjYj4iIGZ1bmNhbGwgY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2Np YXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbl0gNyBbYWR2aWNlLS1hZGQtZnVu Y3Rpb24gYWR2aWNlLWFkZCBvcmctZm9sZC0tYWR2aWNlLWVkaXQtY29tbWFuZHMgbGV0IHByb2du IG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxl dCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdF0gNyBbaW5oaWJpdC1sb2NhbC12YXJpYWJs ZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgc2V0cSBhbmQgc2F2ZS1leGN1cnNpb24g bGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFi OTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1v ZGUgY29uZGl0aW9uLWNhc2VdIDIgWyIjPGxhbWJkYSAweDMzMjkyOGExYTI3ZDE+IiAiIzxjb21w aWxlZCAweDkxYWZlZGFmOTE1ZGY1Nj4iIG1hcGNhciAiIzxjb21waWxlZCAweDE4NTc2NmIwN2My Mzk1ZjQ+IiBhcHBseSBzZXEtbWFwIHNlcS1maWx0ZXIgbGV0IHByb2duIGlmIHNhdmUtY3VycmVu dC1idWZmZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBwcm9nbl0gMSBb bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5k LWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVy c2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJz aXN0LXJlYWQgcHJvZ25dIDEgW29yZy1tb2Rlcm4tLW1ha2UtZm9udC1sb2NrLWtleXdvcmRzIG9y Zy1tb2Rlcm4tbW9kZSBvcmctbW9kZXJuLS1vbiBnbG9iYWwtb3JnLW1vZGVybi1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHBy b2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDIgW29yIGxldCBpZiBs ZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYg b3IgbGV0IGlmIGxldCB3aGlsZSBsZXRdIDM3IFtmaWxlLWF0dHJpYnV0ZS1pbm9kZS1udW1iZXIg cHJvZ24gaWYgc2V0cSBpZiBsZXQgIiM8bGFtYmRhIDB4MzY1ZWVhNDk1Y2I+IiBmdW5jYWxsIGNv bmQgbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lz dC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCpdIDExIFtjY29udi1tYWtlLWludGVycHJl dGVkLWNsb3N1cmUgZnVuY3Rpb24gY2wtbWFwY2FuIGxldCBsZXQgcHJvZ24gaWYgb3JnLXNldC1y ZWdleHBzLWFuZC1vcHRpb25zIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1j dXJyZW50LWJ1ZmZlciBjYXRjaCBsZXQgd2hpbGUgbGV0IGxldF0gMiBbc2V0cSBwcm9nbiB3aGls ZSBsZXQgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxlLXJlbGF0aXZlLW5hbWUg bGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmXSA5IFtmaWxlLW5hbWUtZGlyZWN0 b3J5IHNldHEgZXF1YWwgY29uZCB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZy Yy0tZmluZC1lbnYtZGlyICIjPHN1YnIgZW52cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRh dGUgZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9v a3MgaWYgbm9ybWFsLW1vZGVdIDQgW3NldHEgZXF1YWwgY29uZCB3aGlsZSBsZXQgbG9jYXRlLWRv bWluYXRpbmctZmlsZSBwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBw cm9qZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXBy b2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2Yt Z2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBp ZiBub3JtYWwtbW9kZV0gNSBbZnVuY3Rpb24gaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMg Y2RyIGxldCogY29uZGl0aW9uLWNhc2UgaWYgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcw NmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQt YXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1t b2RlXSAyIFt0ZXh0LW1vZGUgb3V0bGluZS1tb2RlIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxs IHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9k ZS0tYXBwbHktYWxpc3Qgc2V0cV0gNCBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbiBp ZiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2du IGlmXSAxIFtzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEg aWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZl LWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2Fz ZSBpZiBzZXRxXSA1NCBbIiM8Y29tcGlsZWQgMHg4ZmRlY2JiYmE3Y2IzYzI+IiBhZHZpY2UtLWFk ZC1mdW5jdGlvbiBhZHZpY2UtYWRkIG9yZy1mb2xkLS1hZHZpY2UtZWRpdC1jb21tYW5kcyBsZXQg cHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24g aWYgbGV0IGlmXSAxIFthbmQgbm90IGlmIHByb2duIGlmIG9yZy1lbGVtZW50LS1jYWNoZS1wZXJz aXN0LWJlZm9yZS1yZWFkIHJ1bi1ob29rLXdpdGgtYXJncy11bnRpbC1zdWNjZXNzICIjPGxhbWJk YSAweGNhMDQ0ZmNjOTM5YzZkMj4iICIjPGNvbXBpbGVkIC0weDk4MmYyOTg3NDgxNWU5YT4iIG1h cGMgc2VxLWRvIHNlcS1maW5kIGlmIHByb2duIGlmIGxldCpdIDEzIFttYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSAxOSBbc3AtLW1lcmdlLXBhaXJzIHNwLS1tZXJn ZS1wYWlyLWNvbmZpZ3VyYXRpb25zIHNwLXVwZGF0ZS1sb2NhbC1wYWlycyAtZWFjaCBzcC0tdXBk YXRlLWxvY2FsLXBhaXJzIHNwLS1pbml0IHNtYXJ0cGFyZW5zLW1vZGUgdHVybi1vbi1zbWFydHBh cmVucy1tb2RlIHNtYXJ0cGFyZW5zLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1o b29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmXSA4IFt3aGl0 ZXNwYWNlLW1vZGUgaWYgZG9vbS1oaWdobGlnaHQtbm9uLWRlZmF1bHQtaW5kZW50YXRpb24taCBy dW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQt YXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSAy IFtzZXRxIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxl dCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxl dCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxl LW5vc2VsZWN0XSA1IFtwcm9nbiBpZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCB3 aGlsZSBsZXQgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNh bGwgcHJvZ24gaWYgaWZdIDIgW29yZy1tYWNyby0tZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1tYWNy by0tY29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIGxldCBwcm9n biBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBs ZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDExIFt3aGlsZSBsZXQgbGV0KiBwcm9n biBpZiBkaXItbG9jYWxzLS1hbGwtZmlsZXMgZnVuY2FsbCBpZiBzZXRxIHdoaWxlIGxldCBsb2Nh dGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duXSA1 IFtvciBlZGl0b3Jjb25maWctLWRpc2FibGVkLWZvci1tYWpvcm1vZGUgbm90IGFuZCBpZiBzYXZl LWN1cnJlbnQtYnVmZmVyIGNvbmRpdGlvbi1jYXNlIGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1m aW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNldHEgaWYgbGV0ICIj PGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbF0gMSBbd2hpbGUgbGV0IGZpbGUt dHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYgb3IgbGV0IGlmIGxldCB3aGls ZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZl0gNSBbZG9v bS1oaWdobGlnaHQtbm9uLWRlZmF1bHQtaW5kZW50YXRpb24taCBydW4taG9va3MgaWYgbm9ybWFs LW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVk IDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+ IiBhcHBseV0gMSBbY2FyIGlmIGxldCBoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmluZC12YXJpYWJs ZXMgb3IgYW5kIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0t aGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0cSBhbmQg bGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+Il0gMiBbY2NvbnYtbWFrZS1pbnRlcnBy ZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lh dGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9nbiBs ZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmXSAyIFtsZXQqIG9yIG9y Zy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVs ZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRl ciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHEgaWZdIDcgW2Njb252LWFuYWx5 emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5 emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFs eXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVy cHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29j aWF0ZWQgc2V0cSBwcm9nbiBwcm9nbl0gMSBbd3MtYnV0bGVyLWdsb2JhbC1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2du IGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0cSBpZl0gMiBbZXF1YWwgYW5kIGlmIGxldCBsZXQgaWYgbGV0KiBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9taW5h dGluZy1maWxlIGVudnJjLS1maW5kLWVudi1kaXIgIiM8c3ViciBlbnZyYy0tdXBkYXRlPiIgYXBw bHldIDEwIFtzZXQgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgd2hpbGUgbGV0IG9y Zy1lbGVtZW50LWNhY2hlLXJlc2V0IGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlm IGlmIHNldC1hdXRvLW1vZGUtMF0gMSBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1s b2NhbHMtZmluZC1maWxlIGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxl cyBsZXQqIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBjb25kaXRpb24tY2FzZSBpZiBsZXQgIiM8 bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVz IGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVzXSA0IFtjb25jYXQgb3JnLW1ha2Utb3B0aW9ucy1y ZWdleHAgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24g bGV0IG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3JnLWNvbGxlY3Qta2V5d29yZHMgbGV0 IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uXSAzIFtzZXRxIGlmIGlmIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1 ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJi MjVhNDgxMzJhPiIgYXBwbHkgc2V0cV0gNCBbbWFjcm9leHAtbWFjcm9leHBhbmQgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29u di1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGFwcGVuZCBvciBsZXQg aWYgbGV0IHByb2duXSAxIFtjb25jYXQgc2V0cSBsZXQgY29uZCBmaWxlLXRydWVuYW1lIGFiYnJl dmlhdGUtZmlsZS1uYW1lIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4i IGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxl Y3QgYXBwbHldIDUgW2NvbmNhdCBpZiBzZXRxIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQg ZmlsZXMtLXRyYW5zZm9ybS1maWxlLW5hbWUgaWYgbGV0IGlmICIjPGxhbWJkYSAweDI0YjY3Njgw NTZmODZiYT4iIGZ1bmNhbGwgbGV0IGRvb20tbWFrZS1oYXNoZWQtYXV0by1zYXZlLWZpbGUtbmFt ZS1hIGFwcGx5XSAyNSBbbGV0IGZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGlmIGxldCBpbmhpYml0 LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgbGV0IHNldC1hdXRvLW1vZGUtMSBzby1sb25nLS1j aGVjay1oZWFkZXItbW9kZXMgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBzZXQtYXV0by1t b2RlIGNvbmRpdGlvbi1jYXNlIGxldCBub3JtYWwtbW9kZV0gOSBbbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1t YWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFs aXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0XSAxIFtk aXNwbGF5LXdhcm5pbmcgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMg YXBwbHkgaW5zZXJ0LWZpbGUtY29udGVudHMgbGV0IGNvbmRpdGlvbi1jYXNlIGlmIHNhdmUtY3Vy cmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxldCogaWYgaWYgIiM8bGFt YmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5XSA4IFtwcm9nbiBpZiBzYXZlLWN1cnJlbnQt YnVmZmVyIGxldCB3aGlsZSBsZXQgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgcHJvZ24gaWYgb3Ig YW5kIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1wIGlmIGxl dCBzYXZlLXJlc3RyaWN0aW9uXSAxIFtzZXRxIHByb2duIHByb2duIGlmIGxldCAiIzxsYW1iZGEg MHgzNzk0MTI0ZWRjYj4iIGZ1bmNhbGwgY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUt YXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gaWYg cHJvZ25dIDEgW3NldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZiBwcm9nbiBpZiBvcmct ZWxlbWVudC0tY2FjaGUtcGVyc2lzdC1iZWZvcmUtcmVhZCBydW4taG9vay13aXRoLWFyZ3MtdW50 aWwtc3VjY2VzcyAiIzxsYW1iZGEgMHhkYjA4NjFmMDgwN2FkZDM+IiAiIzxjb21waWxlZCAtMHg5 ODJmMjk4NzQ4MTVlOWE+IiBtYXBjIHNlcS1kbyBzZXEtZmluZCBpZiBwcm9nbiBpZiBsZXQqXSA2 IFtsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxl dCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQt dmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGNvbmRpdGlvbi1jYXNlIGlm IGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiJdIDMgW2xldCBpZiBsZXQqIHByb2du IHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBzZXRxIGxvY2F0ZS1kb21p bmF0aW5nLWZpbGUgcHJvamVjdC10cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJv amVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9q ZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWds b2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4tYnVmZmVyc10gNSBbc2F2ZS1jdXJy ZW50LWJ1ZmZlciBpZiBsZXQgb3JnLXBlcnNpc3QtbG9hZDplbGlzcCBmdW5jYWxsIGxldCogY29u cyBzZXRxIGlmIHByb2duIGlmIHdoaWxlIGxldCogcHJvZ24gaWYgaWZdIDEgW25vdCBhbmQgd2hp bGUgbGV0IHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgbGV0IHNl dC1hdXRvLW1vZGUtMSBsZXQgc2F2ZS1leGN1cnNpb24gY2F0Y2ggaGFjay1sb2NhbC12YXJpYWJs ZXMtcHJvcC1saW5lIGFwcGVuZF0gNiBbZXF1YWwgYW5kIGlmIGxldCBsZXQgaWYgbGV0KiBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0KiBpZiBpZiAiIzxs YW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHldIDYgW2xldCogb3Igb3JnLWVsZW1lbnQt LWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2Fj aGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2 ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHEgaWYgaWYgd2hp bGVdIDcgW2VudnJjLS1hcHBseSAiIzxzdWJyIGVudnJjLS11cGRhdGU+IiBhcHBseSBlbnZyYy0t dXBkYXRlIGVudnJjLW1vZGUgZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVu LWhvb2tzIGFwcGx5IHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYg c2V0LWF1dG8tbW9kZS0wIHByb2duXSAxIFtqaXQtbG9jay1tb2RlIGppdC1sb2NrLXJlZ2lzdGVy IGZvbnQtbG9jay10dXJuLW9uLXRoaW5nLWxvY2sgZm9udC1sb2NrLW1vZGUtaW50ZXJuYWwgZm9u dC1sb2NrLWRlZmF1bHQtZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sg dHVybi1vbi1mb250LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxl LWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJv Z24gaWYgaWZdIDEgW2Njb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQq IG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQt Y29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBw cm9nbiBpZiBwcm9nbiBpZl0gNSBbaWYgc3Vic3RyaW5nIGlmIGxldCBmaWxlLW5hbWUtc2Fucy12 ZXJzaW9ucyBpZiBsZXQgaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGlmIGxldCBp ZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwt dmFyaWFibGVzXSAxIFtmdW5jdGlvbiBsZXQqIGxldCB3aGlsZSBsZXQgbGV0IGNvbmQgb3JnLS10 YWctYWRkLXRvLWFsaXN0IHNldHEgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZl LWN1cnJlbnQtYnVmZmVyIGNhdGNoIGxldCB3aGlsZSBsZXRdIDYgW21hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9u IGxldCpdIDIgW2xldCBzYXZlLWV4Y3Vyc2lvbiBjYXRjaCBoYWNrLWxvY2FsLXZhcmlhYmxlcy1w cm9wLWxpbmUgYXBwZW5kIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4i IHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVz IGppbngtbW9kZSBqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rc10gMiBbYW5kIG9yIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJi cmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlmIGlm ICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+Il0gMyBbYXBwbHkgc2V0LWF1dG8tbW9kZSBj b25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5 MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRv c2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBwbHkgIiM8Y29t cGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+Il0gNCBbb3JnLXRyaW0gbGV0IHNhdmUtZXhjdXJzaW9u IG9yZy1lbGVtZW50LWtleXdvcmQtcGFyc2VyIGNvbmQgY29uZCBsZXQgY29uZCBzZXRxIGxldCBz YXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hp bGVdIDMgW3JlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3Vw IHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdCBjb25jYXQgb3JnLW1ha2Utb3B0aW9ucy1yZWdl eHAgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0 IG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3JnLWNvbGxlY3Qta2V5d29yZHMgbGV0XSAy IFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1h bGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGNsLW1hcGNhbiBsZXQg bGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBsZXQgcHJvZ24gb3JnLW1v ZGUgZnVuY2FsbCBwcm9nbl0gMSBbaWYgbGV0ICIjPGxhbWJkYSAweDExMmFiZDk1MGVhMTFmNzc+ IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNrLWxvY2FsLXZhcmlhYmxl cyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1v ZGUtMCBwcm9nbiBpZiBsZXRdIDEgW3NldCBpZiBkb29tLWhpZ2hsaWdodC1ub24tZGVmYXVsdC1p bmRlbnRhdGlvbi1oIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHBy b2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3RdIDIgW2lmIGxldCBjb25kIGxldCogb3IgbGV0IGlmIGlmIHdoaWxlIGxldCBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBj YXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG9dIDIgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rp b24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lz dC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duXSAyIFtsZXQgZmlsZS1yZW1vdGUtcCBub3Qgb3Ig YW5kIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwt dmFyaWFibGVzIGNvbmRpdGlvbi1jYXNlIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTEx Zjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJp YWJsZXNdIDQgW3J1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2du IGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0cSBpZiBsZXRdIDE5IFsiIzxjb21waWxlZCAweDFjZWM4YzlkODM2NjFhZjU+ IiBhZHZpY2UtLXR3ZWFrIGFkdmljZS0tcmVtb3ZlLWZ1bmN0aW9uIGFkdmljZS0tYWRkLWZ1bmN0 aW9uIGFkdmljZS1hZGQgb3JnLWZvbGQtLWFkdmljZS1lZGl0LWNvbW1hbmRzIGxldCBwcm9nbiBv cmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZl0gMSBb ZnVuY2FsbCBpZiBzZXRxIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGly LWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFi bGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGNvbmRpdGlvbi1jYXNlIGlmXSAxIFt3 aGl0ZXNwYWNlLXR1cm4tb24gd2hpdGVzcGFjZS1tb2RlIGlmIGRvb20taGlnaGxpZ2h0LW5vbi1k ZWZhdWx0LWluZGVudGF0aW9uLWggcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1 bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZl0gNCBbY29u Y2F0IHNldHEgaWYgaWYgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5h bWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWZdIDI0IFttYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw YW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmct cGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxl Y3Rpb24gbGV0IHByb2duIGxldCpdIDMgWytvcmctaW5pdC1naWZzLWggZnVuY2FsbCBjb25kaXRp b24tY2FzZSBkb29tLXJ1bi1ob29rIHJ1bi1ob29rLXdyYXBwZWQgbGV0IGNvbmRpdGlvbi1jYXNl IGxldCB3aGlsZSBsZXQgZG9vbS1ydW4taG9va3MgaWYgZG9vbS1ydW4tbG9jYWwtdmFyLWhvb2tz LWggcnVuLWhvb2tzIGhhY2stbG9jYWwtdmFyaWFibGVzLWFwcGx5IHByb2duXSAyIFtjY29udi1t YWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBsZXQgd2hpbGUgbGV0IGxldCBj b25kIG9yZy0tdGFnLWFkZC10by1hbGlzdCBzZXRxIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBsZXQgd2hpbGVdIDIgW29yIG5vdCBsZXQg bm9ybWFsLWJhY2t1cC1lbmFibGUtcHJlZGljYXRlIGZ1bmNhbGwgbm90IGFuZCBzYXZlLWN1cnJl bnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmICIjPGxhbWJk YSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseV0gMiBbZm9udC1sb2NrLWFkZC1rZXl3b3JkcyBv cmctbW9kZXJuLW1vZGUgb3JnLW1vZGVybi0tb24gZ2xvYmFsLW9yZy1tb2Rlcm4tbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBw cm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmXSAxIFt1bmlxdWlmeS1y YXRpb25hbGl6ZSB1bmlxdWlmeS1yYXRpb25hbGl6ZS1maWxlLWJ1ZmZlci1uYW1lcyB1bmlxdWlm eS0tY3JlYXRlLWZpbGUtYnVmZmVyLWFkdmljZSBsZXQqIGNyZWF0ZS1maWxlLWJ1ZmZlciBzZXRx IGlmIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEg bGV0IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3RdIDYgW25vdCBh bmQgd2hpbGUgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1 dG8tbW9kZS0xIHNvLWxvbmctLWNoZWNrLWhlYWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0by1t b2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlXSA0 IFtsZXQqIGFuZCBsZXQqIGFuZCBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVs ZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRy ZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIg b3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvcl0gMyBbbGV0IGxldCBwcm9nbiBvcmctbW9kZSBmdW5j YWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0cSBpZl0gMiBbaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciB3aGls ZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlmIGlmICIjPGxhbWJk YSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXRdIDkgW2xldCBpZiBsZXQg cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVhZGNydW1iLS1w cm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVy bi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUt ZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAt MHgxYzM2NjVkOGM0OTFhNmU+Il0gMyBbY29uZCBpZiBvcmctZWxlbWVudC0tbmV4dC1tb2RlIGlm IHNldHEgcHJvZ24gcHJvZ24gaWYgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW3NldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBwcm9nbiBpZiBvcmctZWxlbWVudC0tY2FjaGUtcGVyc2lzdC1hZnRlci1yZWFkIHJ1bi1ob29r LXdpdGgtYXJncyB3aGlsZSBsZXQqIHByb2duIGlmIGlmIHByb2duIGlmIGxldCogcHJvZ24gcHJv Z25dIDEzIFtqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1o b29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRv LW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cV0g NCBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29u di1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9y bWFsaXplLWFzc29jaWF0ZWQgc2V0cV0gNSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24g bGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0t Z2V0LWNvbGxlY3Rpb24gbGV0IHByb2duXSAxIFthbmQgd2hpbGUgbGV0IGluaGliaXQtbG9jYWwt dmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1dG8tbW9kZS0xIGxldCBzYXZlLWV4Y3Vyc2lv biBjYXRjaCBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgYXBwZW5kIGxldCBpZiBsZXRd IDEgW21hY3JvZXhwLW1hY3JvZXhwYW5kIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5k LWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVy c2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIg IiM8bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCog b3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXJdIDEgW3NldHEgY29uZCB3aGlsZSBsZXQg cHJvZ24gbGV0KiBvcmctcGVyc2lzdC1sb2FkIHByb2duIGlmIGxldCBwcm9nbiBvcmctbW9kZSBm dW5jYWxsIHByb2duIGlmIGlmXSAxIFtsZXQgaWYgb3IgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmls ZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0XSAy NSBbaWYgbGV0IG9yIGFzZXQgbGV0KiBwcm9nbiBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVj cnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBh Z2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseV0gMyBbd3MtYnV0bGVyLW1vZGUgd3Mt YnV0bGVyLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwt bW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQg MHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4i XSAxOCBbbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1hdC1jb21tZW50LXAgYW5kIHdoaWxlIHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gb3IgcHJvZ24gaWYgbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LW9yZy1kYXRhLXBhcnNlciBzZXRxIGNvbmRd IDIgW2VxdWFsIGFuZCBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIHByb2duIGlmIG9yZy1lbGVt ZW50LS1jYWNoZS1wZXJzaXN0LWJlZm9yZS1yZWFkIHJ1bi1ob29rLXdpdGgtYXJncy11bnRpbC1z dWNjZXNzICIjPGxhbWJkYSAweDExNjA5MjRlOWQ5M2UzMTY+IiAiIzxjb21waWxlZCAtMHg5ODJm Mjk4NzQ4MTVlOWE+IiBtYXBjIHNlcS1kbyBzZXEtZmluZCBpZiBwcm9nbl0gNCBbaWYgc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBvciBwcm9nbiBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtb3JnLWRhdGEtcGFyc2VyIHNldHEgY29uZCBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0g MiBbbGV0KiBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVz LW5vbi1maWxlLWJ1ZmZlciBwcm9qZWN0LS12YWx1ZS1pbi1kaXIgcHJvamVjdC10cnktdmMgcHJv amVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2pl Y3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9u LWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFj MzY2NWQ4YzQ5MWE2ZT4iXSAxIFtmdW5jdGlvbiBzZXEtZmluZCBpZiBwcm9nbiBpZiBsZXQqIHBy b2duIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVhZCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LWxv YWQgcHJvZ24gaWYgbGV0XSAyIFtzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQqIGFnZS0tc3Rh cnQgbGV0IGFnZS1zdGFydC1kZWNyeXB0IHByb2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0 LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1m aWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5XSAxIFtyZXBsYWNlLWJ1ZmZlci1pbi13aW5k b3dzIGtpbGwtYnVmZmVyIGFuZCB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxl dCBhZ2UtcmVhZC1vdXRwdXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmls ZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCpdIDQgW2FuZCBj b25kIGZpbGUtdHJ1ZW5hbWUgZXF1YWwgYW5kIGlmIG9yZy1yb2FtLWRlc2NlbmRhbnQtb2YtcCBs ZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMt LWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGVdIDUgW3J1bi1hdC10aW1lIHVuZG8tYXV0 by0tYm91bmRhcnktZW5zdXJlLXRpbWVyIHVuZG8tYXV0by0tdW5kb2FibGUtY2hhbmdlIGluc2Vy dCBzYXZlLXJlc3RyaWN0aW9uIGFnZS1maWxlLWRlY29kZS1hbmQtaW5zZXJ0IGlmIHNldHEgbGV0 IHNhdmUtZXhjdXJzaW9uIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0 LWZpbGUtY29udGVudHMgYXBwbHkgaWZdIDIgW3NldHEgaWYgaWYgbGV0IGlmIGxldCB3aGlsZSBs ZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBpZiBzZXRxIHNhdmUtY3VycmVu dC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmXSAxOCBbb3JnLXBlcnNpc3QtLWZp bmQtaW5kZXggb3Igb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqIG9y Zy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIHNhdmUtY3VycmVu dC1idWZmZXIgbGV0IHdoaWxlXSAyIFtsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2Np YXRlZCBzZXRxIHByb2duIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVhZCBwcm9nbiBsZXQqIG9y Zy1wZXJzaXN0LWxvYWQgcHJvZ24gaWYgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGxdIDEgW2Nv bmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBz ZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g c2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG9dIDcgW2xldCog cHJvZ24gaWYgbGV0KiBhZ2UtY29udGV4dC1zZXQtcmVzdWx0LWZvciBhZ2Utd2FpdC1mb3ItY29t cGxldGlvbiBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0 aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1j b250ZW50cyBhcHBseV0gMiBbcHJvamVjdGlsZS1wcm9qZWN0LXAgZGVsZXRlLWZpbGUtcHJvamVj dGlsZS1yZW1vdmUtZnJvbS1jYWNoZSBhcHBseSAiIzxjb21waWxlZCAtMHgxNGYxNTBkMTIwZDYw N2U+IiBhcHBseSBkZWxldGUtZmlsZSBpZiBhZ2UtZGVsZXRlLW91dHB1dC1maWxlIGlmIHVud2lu ZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqXSA2IFtpZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1l bGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2hdIDQgW3J1bi1t b2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHBy b2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxIGlmIGxldCAiIzxs YW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiJdIDEgW2F1dG8tbWlub3ItbW9kZS1zZXQgYXBwbHkg IiM8Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBh cHBseSBzZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1jYXNlIGxldCBub3JtYWwtbW9kZSBpZiAiIzxs YW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWFdIDEgW2lmIHNhdmUtY3VycmVudC1idWZmZXIgd2hp bGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIG9yZy1maW5kLWJhc2UtYnVm ZmVyLXZpc2l0aW5nIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwg bGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9y Zy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyXSAxMiBbZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0t bm9ybWFsaXplLWNvbnRhaW5lciBsaXN0IG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9yIG9yZy1w ZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3Rl ciBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbl0gNCBbZ2VuZXJhdGUtbmV3LWJ1ZmZlciBsZXQqIGNy ZWF0ZS1maWxlLWJ1ZmZlciBzZXRxIGlmIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1 YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZp bGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0XSAxIFtyZWdleHAtb3B0IGNvbmNh dCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgb3JnLS1jb2xsZWN0LWtleXdvcmRzLTEgbGV0KiBvcmct Y29sbGVjdC1rZXl3b3JkcyBvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0 aWFsaXplLXRlbXBsYXRlcyBsZXQgcHJvZ24gb3JnLW1vZGVdIDEgW2Njb252LW1ha2UtaW50ZXJw cmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFp bmVyIHNldHEgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBp ZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldF0gNCBbcHJvZzEgbGV0IGNvbmRpdGlv bi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGxldCBv cmctcGVyc2lzdC0tcmVhZC1lbGlzcC1maWxlIG9yIHNldHEgaWYgcHJvZ24gaWYgbGV0KiBwcm9n bl0gOSBbbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxl dCBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJi MjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0XSAxIFtzZXRxIGxldCBzYXZlLWV4Y3Vyc2lv biBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCog c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNo IG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZV0gNCBbcmVnZXhwLW9wdCBjb25j YXQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3Jn LWNvbGxlY3Qta2V5d29yZHMgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9u cyBzYXZlLXJlc3RyaWN0aW9uXSAxIFtzZXRxIHByb2duIGlmIGNvbmRpdGlvbi1jYXNlIGxldCBl ZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5v c2VsZWN0IHNldHEgaWYgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2Fs bCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHld IDEgW3Byb2duIHJlY29yZCBzZXQgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgd2hp bGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxs IHByb2duIGlmXSAxIFtzZXRxIGVxdWFsIGNvbmQgd2hpbGUgbGV0IGxvY2F0ZS1kb21pbmF0aW5n LWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQgcHJvZ24gaWYgaGFjay1kaXItbG9j YWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMgY29uZGl0aW9u LWNhc2UgaWZdIDMgW2xldCBwcm9nbiBpZiBhZ2Utc2NyeXB0LXAgYXNldCBsZXQqIHByb2duIGxl dCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyXSA5IFsiIzxzdWJyIGluc2VydC1maWxlLWNv bnRlbnRzPiIgYXBwbHkgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVu dHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29udGVudHMgbGV0IGNvbmRpdGlvbi1jYXNlIGlmIHNhdmUt Y3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxldCogaWYgaWZdIDUg W2NvbmNhdCBzZXRxIGlmIGlmIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZXF1 YWwgYW5kIGlmIG9yZy1yb2FtLWRlc2NlbmRhbnQtb2YtcCBsZXQqIHByb2duXSA5IFtmaWxlLXRy dWVuYW1lIGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldCBpZiBsZXQgd2hpbGUg bGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgaWYgc2V0cSBzYXZlLWN1cnJl bnQtYnVmZmVyIGxldF0gMSBbaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4 YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1h dXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBwbHkgIiM8 Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseSBhZnRlci1maW5kLWZpbGUgaWZdIDIg W3NldC1mYWNlLWV4dGVuZCAiIzxjb21waWxlZCAtMHgxNDAyMDYzOGM3NmQzMzRlPiIgb3JnLS1z ZXQtZmFjZXMtZXh0ZW5kIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNl dC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Rd IDMgW25vdCBhbmQgd2hpbGUgbGV0IHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1w IG5vdCBhbmQgbGV0IHNldC1hdXRvLW1vZGUtMSBzZXRxIGFuZCBzYXZlLWV4Y3Vyc2lvbiBsZXQg IiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iXSA2IFtsaXN0IGxpc3QgbGV0IG9yZy1zZXQt Zm9udC1sb2NrLWRlZmF1bHRzIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlm IHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDQgW3NwLXVwZGF0ZS1sb2NhbC1wYWly cyAtZWFjaCBzcC0tdXBkYXRlLWxvY2FsLXBhaXJzIHNwLS1pbml0IHNtYXJ0cGFyZW5zLW1vZGUg dHVybi1vbi1zbWFydHBhcmVucy1tb2RlIHNtYXJ0cGFyZW5zLWdsb2JhbC1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2du IGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbl0gMiBbc2V0cSBkaXItbG9jYWxzLWZpbmQtZmls ZSBsZXQgcHJvZ24gaWYgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgY2RyIGxldCogY29u ZGl0aW9uLWNhc2UgaWYgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAi Izxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFw cGx5XSAyIFthZHZpY2UtLW1ha2UgYWR2aWNlLS1hZGQtZnVuY3Rpb24gYWR2aWNlLWFkZCBvcmct Zm9sZC0tYWR2aWNlLWVkaXQtY29tbWFuZHMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJv Z24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZl0gMSBbd2hpbGUgbGV0IGlu aGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBpZiBsZXQgaWYgbGV0ICIjPGxhbWJkYSAw eDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBo YWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsXSAxIFtp ZiBvcmctY2hlY2stYWdlbmRhLWZpbGUgaWYgc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIGxldCB3aGlsZSBsZXQgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZS1idWZmZXJzIGlmIGlm IGxldCBvcmctYWdlbmRhLXByZXBhcmUgY2F0Y2hdIDEwIFtmaWxlLW5hbWUtc2Fucy1leHRlbnNp b24gZmlsZS1uYW1lLWJhc2UgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1i LXByb2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYt b2YtZ2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29r cyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkg cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWFdIDEgW2xl dCBpZiBvcmctZWxlbWVudC0tY29sbGVjdC1hZmZpbGlhdGVkLWtleXdvcmRzIGxldCBjb25kIHNl dHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBp ZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uXSAxIFtydW4taG9vay13aXRoLWFy Z3MtdW50aWwtc3VjY2VzcyAiIzxsYW1iZGEgMHgxYjlkN2RlYTBjZWExNjE2PiIgIiM8Y29tcGls ZWQgLTB4OTgyZjI5ODc0ODE1ZTlhPiIgbWFwYyBzZXEtZG8gc2VxLWZpbmQgaWYgcHJvZ24gaWYg bGV0KiBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlYWQgcHJvZ24gbGV0Kl0gMSBbbm90 IHdoaWxlIGxldCBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUt bmFtZSBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVt YnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9k ZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1t b2RlXSAxIFtyZS1zZWFyY2gtZm9yd2FyZCBpZiBsZXQqIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVt ZW50LXNlY3Rpb24tcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1l bnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqXSAyMSBbbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxs LWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDE3IFtlZGl0b3Jjb25maWct Y29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtLWdldC1oYW5kbGVzIGVkaXRvcmNv bmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jjb25maWctY29yZS1nZXQtcHJvcGVydGllcy1o YXNoIGZ1bmNhbGwgc2V0cSBjb25kaXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLWNhbGwtZ2V0 LXByb3BlcnRpZXMtZnVuY3Rpb24gc2V0cSBwcm9nbiBpZiBjb25kaXRpb24tY2FzZSBsZXQgZWRp dG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5XSA4IFttYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1p bnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uXSAxOCBbeWFzLWdsb2JhbC1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2du IGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0cSBpZl0gMSBbaWYgc2F2ZS1leGN1cnNpb24gc2V0cSBhbmQgbGV0ICIjPGxh bWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJm MWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0 aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+ Il0gMSBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGNsLW1hcGNhbiBt YXBjYXIgc2V0IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIGxldCB3 aGlsZSBsZXRdIDIgW2xldCBhZ2UtcmVhZC1vdXRwdXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3Qg YWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0 IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0IHByb2duXSA4 NyBbaWYgc2F2ZS1leGN1cnNpb24gcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1p bnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 IGFnZS1maWxlLWhhbmRsZXIgIiM8c3ViciBpbnNlcnQtZmlsZS1jb250ZW50cz4iIGFwcGx5IGlm XSA2NiBbcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1 bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1i LS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWIt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFt YmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCog ZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hXSAyIFtsZXQgZmlsZS1yZW1vdGUtcCBsZXQgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVhZGNydW1iLS1wcm9qZWN0 LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1s b2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxl LWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2 NjVkOGM0OTFhNmU+Il0gNyBbY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGlzdCBvcmct cGVyc2lzdC0tZmluZC1pbmRleCBvciBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHBy b2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJvZ25dIDIgW2FuZCBpZiBz YXZlLWN1cnJlbnQtYnVmZmVyIHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcg YW5kIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEg bGV0XSA0MSBbZmluZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgIiM8c3ViciBpbnNlcnQt ZmlsZS1jb250ZW50cz4iIGFwcGx5IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxl LWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNvbnRlbnRzIGxldCBjb25kaXRpb24tY2FzZSBp ZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqXSAx MCBbZGVscSBzZXRxIHByb2duIGlmIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9w dGlvbnMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9k ZS0wXSAxIFtmdW5jdGlvbiBjbC1tYXBjYW4gbGV0IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4 cHMtYW5kLW9wdGlvbnMgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIGxldCB3aGlsZSBsZXQgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZS1idWZm ZXJzXSAyIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw YW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmct cGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBzZXRxIHByb2duIGxldCogb3JnLXBlcnNpc3Qt cmVnaXN0ZXIgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ25dIDIgW29yZy1lbGVtZW50LWJlZ2luIGxl dCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3Mt cCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUt ZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0 IG9yIHNldHEgaWYgaWZdIDEgW29yZy1lbGVtZW50LWNyZWF0ZSBsZXQgc2F2ZS1leGN1cnNpb24g b3JnLWVsZW1lbnQta2V5d29yZC1wYXJzZXIgb3JnLW1hY3JvLS1maW5kLWtleXdvcmQtdmFsdWUg b3JnLW1hY3JvLS1jb2xsZWN0LW1hY3JvcyBvcmctbWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMg bGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHBy b2duXSAxIFtpZiBzdWJzdHJpbmcgaWYgbGV0IGZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGxldCBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uIGZpbGUtbmFt ZS1iYXNlIGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNy dW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1t b2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3NdIDMgW3Byb2du IGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1vcmct ZGF0YS1wYXJzZXIgc2V0cSBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRp b24tY2FzZSBpZl0gMSBbbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHIgbGV0KiBjb25k aXRpb24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIj PGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBw bHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2FzZV0gMSBbc2V0IGxldCBpZiBsZXQgcHJvZ24g aWYgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxs IHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbl0gMSBbd2hpdGVzcGFjZS1jb2xvci1v biB3aGl0ZXNwYWNlLXR1cm4tb24gd2hpdGVzcGFjZS1tb2RlIGlmIGRvb20taGlnaGxpZ2h0LW5v bi1kZWZhdWx0LWluZGVudGF0aW9uLWggcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2Rl IGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldF0gMSBbcmVn ZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgY29uY2F0IG9yZy1tYWtl LW9wdGlvbnMtcmVnZXhwIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUt ZXhjdXJzaW9uIGxldCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBsZXQqIG9yZy1jb2xsZWN0LWtl eXdvcmRzIGxldCBwcm9nbiBpZl0gMiBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnBy ZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lh dGVkXSAxIFtzYXZlLWN1cnJlbnQtYnVmZmVyIGNvbmRpdGlvbi1jYXNlIGxldCBlZGl0b3Jjb25m aWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNl dHEgaWYgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29y Zy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1h Z2VuZGEtZmlsZS1idWZmZXIgaWZdIDMgW2Nhci1zYWZlIHNldHEgd2hpbGUgbGV0IG9yZy1hc3Np Z24tZmFzdC1rZXlzIHNldHEgcHJvZ24gaWYgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1h bmQtb3B0aW9ucyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbF0gMSBbY2FsbGVkLWludGVyYWN0 aXZlbHktcCBlbnZyYy1tb2RlIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBhcHBseSBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlm IHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDEgWyIjPGNvbXBpbGVkIDB4M2M1ZDgw MTlkZjdlOTE+IiBhZHZpY2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRkICIjPHN1YnIgRjYxNmU2 ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMzc+IiBldmFsLWFm dGVyLWxvYWQgY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1h dXRvLW1vZGUtMCBwcm9nbl0gMSBbaWYgcHJvZ24gYW5kIHdoaWxlIGxldCogZWRpdG9yY29uZmln LS1kaXNhYmxlZC1mb3ItZmlsZW5hbWUgbm90IGFuZCBpZiBjb25kaXRpb24tY2FzZSBsZXQgZWRp dG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3Nl bGVjdCBzZXRxIGlmXSAzIFtub3QgYW5kIHdoaWxlIGxldCB3aGlsZSBsZXQgaW5oaWJpdC1sb2Nh bC12YXJpYWJsZXMtcCBub3QgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBs eSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2Rl IGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2VdIDEgW3NldHEgaWYgbGV0ICIjPGxh bWJkYSAweDM3MjcxOWRlZGNiPiIgZnVuY2FsbCBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5vcm1h bGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9n biBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmXSAxIFtwdXRoYXNoIGlmIGxldCAi IzxsYW1iZGEgMHgzNDM5NGRiZTljYj4iIGZ1bmNhbGwgY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1u b3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQg cHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZl0gMSBbYWR2aWNlLS1jb3B5 IGFkdmljZS0tbWFrZSBhZHZpY2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRkICIjPHN1YnIgRjYx NmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMzc+IiBldmFs LWFmdGVyLWxvYWQgY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJsZS1pbi1idWZmZXJz IHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNl dC1hdXRvLW1vZGUtMF0gMSBbZXEgIiM8bGFtYmRhIDB4MzMyOTI4YTFhMjdkMT4iICIjPGNvbXBp bGVkIDB4OTFhZmVkMTliMjI5ZjU2PiIgbWFwY2FyICIjPGNvbXBpbGVkIDB4MTg1NzY2YjA3YzIz OTVmND4iIGFwcGx5IHNlcS1tYXAgc2VxLWZpbHRlciBsZXQgcHJvZ24gaWYgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0XSAyNiBbIiM8Y29t cGlsZWQgLTB4MWRkZjExMWU3ZDkxNzNiZj4iIHByb2plY3QtLXZhbHVlLWluLWRpciBwcm9qZWN0 LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBwcm9qZWN0LWN1cnJlbnQgYnJlYWRj cnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJyZWFkY3J1 bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJlYWRjcnVt Yi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxs YW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ25dIDE5IFtvciBjZHIgY2FyIGxl dCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1j dXJyZW50LWJ1ZmZlciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0XSAxIFtp ZiBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAg cHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgaWZdIDIgW2xl dCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9wdGlt aXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRhLWZp bGUtYnVmZmVyIGlmIHNldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBsZXQgd2hp bGUgbGV0IGxldCBvcmctYWdlbmRhLXByZXBhcmUtYnVmZmVyc10gNiBbIiM8Y29tcGlsZWQgLTB4 NmFhMTY4YjJkNTFhNWVhPiIgc29ydC1jb2Rpbmctc3lzdGVtcyBmaW5kLWNvZGluZy1zeXN0ZW1z LXJlZ2lvbiBzZWxlY3Qtc2FmZS1jb2Rpbmctc3lzdGVtIHNlY3VyZS1oYXNoIHNldHEgaWYgbGV0 ICIjPGxhbWJkYSAweDM2NWEzZjIyMWNiPiIgZnVuY2FsbCBjb25kIGxldCogb3JnLXBlcnNpc3Qt LW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxl dF0gMyBbY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxl dCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFm PiIgbWFwY2FyICIjPGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCog Y29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxpc3Qgb3JnLXBlcnNp c3QtLWZpbmQtaW5kZXhdIDQgW3NhdmUtZXhjdXJzaW9uIGxldCBoYWNrLWxvY2FsLXZhcmlhYmxl cy0tZmluZC12YXJpYWJsZXMgb3IgYW5kIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTEx Zjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJp YWJsZXMgc2V0cSBhbmQgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseV0g MiBbaGwtbGluZS1tb2RlIGFuZCBpZiBpZiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIHByb2duIGlm IGxldCB3aGlsZSBsZXQgbGV0IGdsb2JhbC1obC1saW5lLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMg cnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlXSAyIFt3aGlsZSBsZXQgZmlsZS10cnVl bmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZp bmQtYmFzZS1idWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3 PiIgZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJz LWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWYgc2V0LWJ1ZmZlcl0gMiBbZ2V0 LWZpbGUtYnVmZmVyIHNldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBwcm9nbiBpZiBvcmct ZWxlbWVudC0tY2FjaGUtcGVyc2lzdC1hZnRlci1yZWFkIHJ1bi1ob29rLXdpdGgtYXJncyB3aGls ZSBsZXQqIHByb2duIGlmIGlmIHByb2duIGlmIGxldCogcHJvZ25dIDMgW2Z1bmN0aW9uIGNsLW1h cGNhbiBtYXBjYXIgc2V0IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNo IGxldCB3aGlsZSBsZXQgbGV0XSAxIFtydW4taG9vay13aXRoLWFyZ3Mgd2hpbGUgbGV0KiBwcm9n biBpZiBpZiBwcm9nbiBpZiBsZXQqIHByb2duIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVhZCBw cm9nbiBsZXQqIG9yZy1wZXJzaXN0LWxvYWRdIDEgW21ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSBv ciBmaWxlLW5ld2VyLXRoYW4tZmlsZS1wIGFuZCBpZiBjb25kIGxldCogaWYgIiM8bGFtYmRhIC0w eDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0t c2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiJd IDEgW2Njb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBhc3Nv Yy1kZWZhdWx0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2V0cSBpZiBpZiBsZXQg IiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRm MmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZV0g MSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0 KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0 LWNvbGxlY3Rpb24gbGV0XSAyIFtpbnRlcm5hbC0td2l0aG91dC1yZXN0cmljdGlvbiBvcmctbW9k ZXJuLW1vZGUgb3JnLW1vZGVybi0tb24gZ2xvYmFsLW9yZy1tb2Rlcm4tbW9kZS1lbmFibGUtaW4t YnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBp ZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmXSAxIFtvcmctZmluZC1iYXNlLWJ1 ZmZlci12aXNpdGluZyBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxs IGxldCArb3JnLS1vcHRpbWl6ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBhcHBseSBv cmctZ2V0LWFnZW5kYS1maWxlLWJ1ZmZlciBpZiBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZm ZXIgY2F0Y2ggbGV0IHdoaWxlIGxldCBsZXRdIDEgW21hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXpl LWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUx MmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5v cm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbl0gMSBbY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1t b2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1i ZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBk b29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzVi NzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4iXSAxIFtsZXQqIGFuZCBs ZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmct ZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwt dHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yXSA2IFtub3QgYW5kIHdoaWxlIGxldCBpbmhpYml0 LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgbGV0IHNldC1hdXRvLW1vZGUtMSBsZXQgc2F2ZS1l eGN1cnNpb24gY2F0Y2ggaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIG9yIGFuZCBpZl0g OCBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1h bGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNp c3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFmPiIgbWFwY2FyICIj PGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCogY29uZCBsZXQqIG9y Zy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyXSAxIFtvcmctY2l0ZS10cnktbG9hZC1wcm9j ZXNzb3IgaWYgcHJvZ24gbGlzdCBsZXQgb3JnLXNldC1mb250LWxvY2stZGVmYXVsdHMgbGV0IHBy b2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlm XSAxIFtsZXQgc2F2ZS1leGN1cnNpb24gY2F0Y2ggaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1s aW5lIGFwcGVuZCBsZXQgaWYgbGV0ICIjPGxhbWJkYSAweDExMmFiZDk1MGVhMTFmNzc+IiBzby1s b25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4t bW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duXSAxIFtjb25kIGVkaXRvcmNvbmZpZy1z ZXQtaW5kZW50YXRpb24gZWRpdG9yY29uZmlnLXNldC1sb2NhbC12YXJpYWJsZXMgcHJvZ24gaWYg c2F2ZS1jdXJyZW50LWJ1ZmZlciBjb25kaXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLS1hZHZp Y2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxl dCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGxdIDEgW2ZpbGUtbmFtZS1k aXJlY3Rvcnkgc2V0cSBlcXVhbCBjb25kIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxl IHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3QtY3VycmVu dCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMg YnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBi cmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmXSA1IFthdmwtdHJl ZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1w dXQgb3Igc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2hdIDEgW2FiYnJldmlhdGUtZmlsZS1uYW1l IHNldHEgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBl ZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5v c2VsZWN0IHNldHEgaWYgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2Fs bCBsZXRdIDIgW3Byb2duIGlmIHNldHEgaWYgbGV0ICIjPGxhbWJkYSAweDM3ZTYwMmY3MWNiPiIg ZnVuY2FsbCBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEg b3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJl Z2lzdGVyXSAxIFtjb25jYXQgaWYgc2V0cSBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZp bGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIGlmIGxldCBtYWtlLWxvY2stZmlsZS1uYW1lICIjPHN1 YnIgaW5zZXJ0LWZpbGUtY29udGVudHM+IiBhcHBseSBpZiBlZGl0b3Jjb25maWctLWFkdmljZS1p bnNlcnQtZmlsZS1jb250ZW50cyBhcHBseV0gMSBbYW5kIGlmIGxldCBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2lu dCBsZXQgd2hpbGUgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1 cnNpb24gbGV0XSAyIFtpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFi YnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBp ZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiJdIDEgW3NldCBwcm9nbiBpZiBzYXZlLWN1 cnJlbnQtYnVmZmVyIGxldCB3aGlsZSBsZXQgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgcHJvZ24g aWYgb3IgYW5kIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1w IGlmIGxldF0gMiBbY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxl dCogY29ucyBzZXRxIGlmIHByb2duIGlmIHdoaWxlIGxldCogcHJvZ24gaWYgaWYgcHJvZ24gaWZd IDEgW2xldCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlm IHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1j YWNoZS1yZXNldCBwcm9nbl0gMSBbZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXpl LWNvbnRhaW5lciBsZXQqIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiB3aGlsZSBsZXQqIHByb2duIGlm IGlmIHByb2duIGlmXSAyIFtpZiBzZXRxIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmls ZS1ub3NlbGVjdC0xIGlmIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4i IGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxl Y3QgYXBwbHldIDMgW2ZpbGUtbmFtZS1kaXJlY3Rvcnkgc2V0cSBlcXVhbCBjb25kIHdoaWxlIGxl dCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHBy b2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGNkciBsZXQqIGNvbmRpdGlvbi1j YXNlXSAxIFtjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24g Y2wtbWFwY2FuIGxldCBsZXQgcHJvZ24gaWYgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIGxl dCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmXSAxIFtvcmctdHJpbSBsZXQgc2F2 ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQta2V5d29yZC1wYXJzZXIgb3JnLW1hY3JvLS1maW5kLWtl eXdvcmQtdmFsdWUgb3JnLW1hY3JvLS1jb2xsZWN0LW1hY3JvcyBvcmctbWFjcm8taW5pdGlhbGl6 ZS10ZW1wbGF0ZXMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1 dG8tbW9kZS0wIHByb2duXSA0IFtpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4i IHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVz IHNldHEgYW5kIGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29t cGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBz ZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1jYXNlXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBj Y29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmct cGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxl Y3Rpb24gbGV0IHByb2duIGlmIHByb2duIGxldCpdIDIgW3Byb2duIHByb2duIGxldCogb3JnLXBl cnNpc3QtcmVhZCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LWxvYWQgcHJvZ24gaWYgbGV0IHByb2du IG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWZdIDMgW29yZy1mb2xkLWNvcmUtZ2V0LWZvbGRp bmctc3BlYy1mcm9tLWFsaWFzIG9yZy1mb2xkLWNvcmUtc2V0LWZvbGRpbmctc3BlYy1wcm9wZXJ0 eSAiIzxjb21waWxlZCAtMHg0MTk0M2M5MTQ2ZGQ2ZTE+IiBvcmctZm9sZC1jb3JlLWFkZC1mb2xk aW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgbGV0 IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2du IGlmXSAzIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5j dGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJz aXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBw cm9nbiBpZl0gMiBbb3JnLW1vZGVybi0tb24gZ2xvYmFsLW9yZy1tb2Rlcm4tbW9kZS1lbmFibGUt aW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9n biBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldHFdIDQgW2JyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0t dHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1v ZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1 bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdF0gMSBbY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1j bG9zdXJlIGZ1bmN0aW9uIHNlcS1maWx0ZXIgbGV0IHByb2duIGlmIHNhdmUtY3VycmVudC1idWZm ZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBsZXQgcHJvZ24gb3JnLW1v ZGUgZnVuY2FsbF0gMSBbbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1i YXNlLWJ1ZmZlci12aXNpdGluZyBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBm dW5jYWxsIGxldCArb3JnLS1vcHRpbWl6ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBh cHBseSBvcmctZ2V0LWFnZW5kYS1maWxlLWJ1ZmZlciBpZiBzZXQtYnVmZmVyIHNhdmUtY3VycmVu dC1idWZmZXIgY2F0Y2hdIDEyIFt1bmlxdWlmeS1yYXRpb25hbGl6ZS1hLWxpc3QgdW5pcXVpZnkt cmF0aW9uYWxpemUgdW5pcXVpZnktcmF0aW9uYWxpemUtZmlsZS1idWZmZXItbmFtZXMgdW5pcXVp ZnktLWNyZWF0ZS1maWxlLWJ1ZmZlci1hZHZpY2UgbGV0KiBjcmVhdGUtZmlsZS1idWZmZXIgc2V0 cSBpZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRx IGxldCBsZXRdIDQgW3doaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNvLWxvbmct LWNoZWNrLWhlYWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRv LW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2 NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSAxIFttYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbF0gMzUgW3NldHEgY29uZCBsZXQg bGV0IGlmIGxldCogbGV0IHByb2duIGlmIGxldCB3aGlsZSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDEgW3Byb2duIGxldCogb3JnLXBlcnNp c3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IGxldCBwcm9nbl0gMiBbaWYg c3Vic3RyaW5nIGlmIGxldCBmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpZiBsZXQgaW5oaWJpdC1s b2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgbGV0IHNhdmUtZXhj dXJzaW9uIGNhdGNoIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZV0gNSBbbGV0IGZpbGUt cmVtb3RlLXAgYXV0by1taW5vci1tb2RlLS1wbGFpbi1maWxlbmFtZSBhdXRvLW1pbm9yLW1vZGUt LXJ1bi1hdXRvIGF1dG8tbWlub3ItbW9kZS1zZXQgYXBwbHkgIiM8Y29tcGlsZWQgMHgxYjkwZGYy YTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBzZXQtYXV0by1tb2RlIGNv bmRpdGlvbi1jYXNlIGxldCBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkx YTZlPiIgYXBwbHldIDMgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5k LWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVy c2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIg IiM8bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsXSAxIFt3aGlsZSBsZXQgbGV0KiBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2gg b3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0XSA0IFtzYXZlLWN1cnJl bnQtYnVmZmVyIGxldCBsZXQgb3JnLXBlcnNpc3QtLXJlYWQtZWxpc3AtZmlsZSBvciBzZXRxIGlm IHByb2duIGlmIGxldCogcHJvZ24gcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWFkIHByb2duIGxl dCpdIDIgW2Z1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0 cSBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2du IGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlXSAxIFtwcm9nbiBpZiBsZXQgcHJvZ24g b3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0 IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHFdIDUgW2NvbnMgZ2V0aGFzaCBhbmQg b3Igc2V0cSBsZXQgbGV0IHdoaWxlIGxldCBjYXRjaCBhbmQgbGV0KiB3aXRoLW5vLXdhcm5pbmdz IG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbl0g MyBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1h bGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIHNlcS1maW5kIGlmIHBy b2duIGlmIGxldCogcHJvZ24gcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWFkIHByb2duIGxldCpd IDEgW2xldCBmaWxlLXJlbW90ZS1wIGFuZCBpZiBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUw ZWExMWY3Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwt dmFyaWFibGVzIGppbngtbW9kZSBqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1i dWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZV0gOSBbZXF1YWwgaWYgbGV0 IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQg ZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFzZS1idWZmZXItdmlzaXRpbmcgbGV0ICIj PGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXRdIDMgW2Njb252LWZ2IGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1u b3JtYWxpemUtY29udGFpbmVyICIjPGxhbWJkYSAweDExY2Q0NTIxZj4iIG1hcGNhciAiIzxsYW1i ZGEgMHgxZTEyYjhmYmZmYThkYT4iIGZ1bmNhbGwgY29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVy c2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBzZXRxIHByb2duXSAyIFttYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBm dW5jdGlvbiBzZXEtZmlsdGVyIGxldCBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCB3 aGlsZSBsZXQgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXRdIDEgW2lmIHByb2duIGlmIGxldCBzYXZl LWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUg bGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVm ZmVyIGNhdGNoXSA0IFtmb250LWxvY2stc2V0LWRlZmF1bHRzIGZvbnQtbG9jay1yZW1vdmUta2V5 d29yZHMgb3JnLW1vZGVybi1tb2RlIG9yZy1tb2Rlcm4tLW9uIGdsb2JhbC1vcmctbW9kZXJuLW1v ZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1 bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldF0gNCBbbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBl cnNpc3QtLWdldC1jb2xsZWN0aW9uXSA1IFtmdW5jdGlvbiBsaXN0IGxldCArb3JnLS1vcHRpbWl6 ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBhcHBseSBvcmctZ2V0LWFnZW5kYS1maWxl LWJ1ZmZlciBpZiBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggbGV0IHdoaWxl IGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWZdIDIgW2NoZWNrLWZhY2UgZmFj ZS1pZCBtYWtlLWdseXBoLWNvZGUgIiM8bGFtYmRhIC0weDgwZjkzZWM3NTU1MzczYz4iIG1hcGNh ciB2Y29uY2F0IHNldC1kaXNwbGF5LXRhYmxlLXNsb3QgcHJvZ24gaWYgbGV0IHByb2duIG9yZy1t b2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWZdIDIgW2Z1bmN0aW9uIG1hcGNhciAiIzxsYW1iZGEgMHgx ZTEyYjhmYmZmYThkYT4iIGZ1bmNhbGwgY29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVyc2lzdC0t bm9ybWFsaXplLWNvbnRhaW5lciBzZXRxIHByb2duIGlmIHByb2duIGxldCogb3JnLXBlcnNpc3Qt cmVnaXN0ZXIgcHJvZ25dIDEgW2xldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZXMtLXRy YW5zZm9ybS1maWxlLW5hbWUgaWYgbGV0IG1ha2UtbG9jay1maWxlLW5hbWUgIiM8c3ViciBpbnNl cnQtZmlsZS1jb250ZW50cz4iIGFwcGx5IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1m aWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNvbnRlbnRzIGxldCBjb25kaXRpb24tY2Fz ZV0gMyBbaWYgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGlmIGRpci1sb2NhbHMtLWFsbC1maWxl cyBmdW5jYWxsIGlmIHNldHEgd2hpbGUgbGV0IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgbGV0KiBk aXItbG9jYWxzLWZpbmQtZmlsZV0gMyBbcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3Vw IHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4 cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQt Z3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgY29uY2F0 IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAxIFtidWZmZXIt bGlzdCBzZXEtZmlsdGVyIGxldCBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCB3aGls ZSBsZXQgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwg cHJvZ24gaWZdIDIgW2FuZCB3aGlsZSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWV4Y3Vyc2lvbiBsZXQgb3JnLS1jb2xsZWN0LWtleXdvcmRzLTEgbGV0KiBvcmctY29s bGVjdC1rZXl3b3JkcyBsZXQgcHJvZ24gaWYgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIGxl dCBwcm9nbl0gMyBbcHJvZ24gaWYgZGlyLWxvY2Fscy0tYWxsLWZpbGVzIGZ1bmNhbGwgaWYgc2V0 cSB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1m aWxlIGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBsZXQqXSAxIFtt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3Jn LXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xs ZWN0aW9uIGxldF0gMiBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50 ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxldCB3aGlsZSBsZXQgbGV0IGNvbmQgb3Jn LS10YWctYWRkLXRvLWFsaXN0IHNldHEgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoXSA1IFtmdW5jYWxsIHNldHEgY29uZGl0aW9uLWNhc2Ug bGV0IGVkaXRvcmNvbmZpZy1jYWxsLWdldC1wcm9wZXJ0aWVzLWZ1bmN0aW9uIHNldHEgcHJvZ24g aWYgY29uZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3Nl bGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cSBpZiBsZXRdIDIgW2FkdmljZS1hZGQg IiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJk YV8zNz4iIGV2YWwtYWZ0ZXItbG9hZCBjdHJsZi1sb2NhbC1tb2RlIGN0cmxmLW1vZGUtZW5hYmxl LWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2 NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQt dXAtYXV0b3NhdmUtYSBhcHBseV0gMyBbaWYgcHJvZ24gbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1l bGVtZW50LWtleXdvcmQtcGFyc2VyIG9yZy1tYWNyby0tZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1t YWNyby0tY29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIGxldCBw cm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMF0gMiBbcHJv Z24gaWYgb3IgYW5kIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2 ZS1wIGlmIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9u IGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBsZXQgd2hpbGVdIDEgW2VxdWFsIGFuZCBvciBh bmQgaWYgbGV0KiBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlYWQgcHJvZ24gbGV0KiBv cmctcGVyc2lzdC1sb2FkIHByb2duIGlmIGxldF0gMSBbY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIHNldHEgcHJv Z24gaWYgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbl0gMiBb b3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggbGV0KiBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0 LXJlYWQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1sb2FkIHByb2duIGlmIGxldCBwcm9nbiBvcmct bW9kZSBmdW5jYWxsIHByb2duXSAxIFtub3QgYW5kIHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZh cmlhYmxlcy1wIG5vdCBhbmQgaWYgbGV0IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTEx Zjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJp YWJsZXMgcnVuLW1vZGUtaG9va3NdIDQgW3doaXRlc3BhY2UtZGlzcGxheS1jaGFyLW9uIHdoaXRl c3BhY2UtdHVybi1vbiB3aGl0ZXNwYWNlLW1vZGUgaWYgZG9vbS1oaWdobGlnaHQtbm9uLWRlZmF1 bHQtaW5kZW50YXRpb24taCBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2Fs bCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0XSAxIFtzZXRxICIjPGxh bWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmln LS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRx IGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmct LW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hXSAxIFttYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyICIjPGxhbWJk YSAweDExY2Q0NTIxZj4iIG1hcGNhciAiIzxsYW1iZGEgMHgxZTEyYjhmYmZmYThkYT4iIGZ1bmNh bGwgY29uZCBsZXQqIGNvbmRdIDIgW29yIGFuZCBpZiBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxl dCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNh dGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZl0gMiBbbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRl ZCBzZXRxIHByb2duIHByb2duIGxldCpdIDEgW2xldCBpZiBsZXQgZmlsZS10cnVlbmFtZSBhYmJy ZXZpYXRlLWZpbGUtbmFtZSBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+ IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2Vs ZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdF0gMiBbY29uZCBsZXQqIGFuZCBsZXQqIGFuZCBs ZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNz LXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVl LWVudGVyIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1 dF0gMiBbYmFja3RyYWNlLWZyYW1lIGNhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgb3JnLW1vZGVybi1t b2RlIG9yZy1tb2Rlcm4tLW9uIGdsb2JhbC1vcmctbW9kZXJuLW1vZGUtZW5hYmxlLWluLWJ1ZmZl cnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYg c2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldF0gMSBbY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBjbC1tYXBjYW4gbGV0IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5k LW9wdGlvbnMgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVm ZmVyIGNhdGNoIGxldF0gMSBbc3RyaW5nLW1hdGNoIG5vdCBhbmQgd2hpbGUgbGV0IGluaGliaXQt bG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1dG8tbW9kZS0xIGxldCBzYXZlLWV4 Y3Vyc2lvbiBjYXRjaCBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgYXBwZW5kIGxldF0g MiBbaWYgaWYgZG9vbS1oaWdobGlnaHQtbm9uLWRlZmF1bHQtaW5kZW50YXRpb24taCBydW4taG9v a3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1t b2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSAxIFtlZGl0 b3Jjb25maWctLWFkdmljZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1j b250ZW50cyBsZXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3Qgc2F2ZS1jdXJyZW50LWJ1ZmZlciBs ZXQgYWdlLXJlYWQtb3V0cHV0IGlmIHByb2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZp bGUgc2V0cSBjb25kaXRpb24tY2FzZV0gNSBba2lsbC1idWZmZXIgaWYgYWdlLXJlc2V0IHVud2lu ZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxl dCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gOSBbYW5kIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGlmIHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQg ZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVh NDgxMzJhPiJdIDcgW3doaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQg bGV0IHNldC1hdXRvLW1vZGUtMSBzZXRxIGFuZCBzYXZlLWV4Y3Vyc2lvbiBsZXQgIiM8bGFtYmRh IDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQx OD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHldIDEgW29yZy1lbGVtZW50LS1nZXQtY2Fj aGVkLXN0cmluZyBwcm9nbiBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQta2V5d29yZC1w YXJzZXIgY29uZCBjb25kIGxldCBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVt ZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZl0gMSBbc3RyaW5nPSBhbmQgaWYgZWRpdG9y Y29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29u dGVudHMgbGV0IGluc2VydC1maWxlLWNvbnRlbnRzLWxpdGVyYWxseSBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHBy b2duXSAyIFthbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBh YmJyZXZpYXRlLWZpbGUtbmFtZSBzZXRxIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgcHJvamVjdC10 cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1 bWItLXByb2plY3QtY3J1bWJzLTFdIDIgW2lmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRp ci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlh YmxlcyBjZHIgbGV0Kl0gMyBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0 aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNs b3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAiIzxs YW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+IiBm dW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCpdIDEgWyIjPGxhbWJkYSAweDMzMjkyOGExYTI3ZDE+ IiAiIzxjb21waWxlZCAweDkxYWZlYzVmNWEyNTM1Nj4iIG1hcGNhciAiIzxjb21waWxlZCAweDE4 NTc2NmIwN2MyMzk1ZjQ+IiBhcHBseSBzZXEtbWFwIHNlcS1maWx0ZXIgbGV0IHByb2duIGlmIHNh dmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBs ZXRdIDIgW2lmIGVkaXRvcmNvbmZpZy1zZXQtaW5kZW50YXRpb24gZWRpdG9yY29uZmlnLXNldC1s b2NhbC12YXJpYWJsZXMgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBjb25kaXRpb24tY2Fz ZSBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQt ZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4i IGZ1bmNhbGxdIDEgW2Rpc3BsYXktd2FybmluZyBlZGl0b3Jjb25maWctLWFkdmljZS1pbnNlcnQt ZmlsZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1jb250ZW50cyBsZXQgaWYgcHJvZ24gdW53 aW5kLXByb3RlY3Qgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgYWdlLXJlYWQtb3V0cHV0IGlmIHBy b2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cV0gNTMgW3NldHEgZXF1YWwg Y29uZCB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGly ICIjPHN1YnIgZW52cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBl bnZyYy1nbG9iYWwtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1v ZGUgaWZdIDUgW2xldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgb3JnLXJvYW0tLWZpbGUtbmFt ZS1leHRlbnNpb24gbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9yZy1yb2Ft LWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1kZWxl dGUtb3V0cHV0LWZpbGVdIDYgW3BsaXN0LXB1dCBzZXRxIGxldCogY29ucyBzZXRxIGlmIHByb2du IGlmIHdoaWxlIGxldCogcHJvZ24gaWYgaWYgcHJvZ24gaWYgbGV0Kl0gNiBbbm90IHdoaWxlIGxl dCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHBy b2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwt dmFyaWFibGVzIGNvbmRpdGlvbi1jYXNlIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTEx Zjc3PiJdIDEgW2lmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmls ZS1uYW1lIHNldHEgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0 IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1m aWxlLW5vc2VsZWN0IHNldHFdIDExIFttYXBjIHlhcy0tbW9kZXMtdG8tYWN0aXZhdGUgeWFzLS1s b2FkLXBlbmRpbmctaml0cyB5YXMtbWlub3ItbW9kZSB5YXMtbWlub3ItbW9kZS1vbiB5YXMtZ2xv YmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIj PGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYV0gMSBbYW5kIGxldCogb3JnLWVsZW1lbnQtY29u dGVudHMtZW5kIHNldHEgcHJvZ24gcHJvZ24gaWYgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQq IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMSBb YXV0by1zYXZlLWZpbGUtbmFtZS1wIG5vdCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMtLWRl bGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWYgYWdlLWRlbGV0ZS1vdXRwdXQtZmlsZSBp ZiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJv Z24gdW53aW5kLXByb3RlY3RdIDMgW2RpcmVjdG9yeS1hYmJyZXYtYXBwbHkgc2V0cSBsZXQgaWYg bGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBs b2NhdGUtZG9taW5hdGluZy1maWxlIGVudnJjLS1maW5kLWVudi1kaXIgIiM8c3ViciBlbnZyYy0t dXBkYXRlPiIgYXBwbHkgZW52cmMtLXVwZGF0ZSBlbnZyYy1tb2RlXSAxIFt3aGlsZSBsZXQgd2hp bGUgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1dG8tbW9k ZS0xIHNvLWxvbmctLWNoZWNrLWhlYWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFw cGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlXSAxIFtjb25k IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0KiBpZiBpZiAiIzxsYW1iZGEg LTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2 aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cSBpZl0g MSBbcmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nIHN0cmluZy1wcmVmaXgtcCBpZiBvcmctcm9hbS1k ZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9yZy1y b2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1k ZWxldGUtb3V0cHV0LWZpbGUgaWZdIDI0IFtnbG9iYWwtY29tcGFueS1tb2RlLWNtaGgga2lsbC1h bGwtbG9jYWwtdmFyaWFibGVzIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0 OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0 b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNv bXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIgYXBwbHkgYWZ0ZXItZmluZC1maWxlXSAxIFtzZXQt YXV0by1tb2RlLTEgc28tbG9uZy0tY2hlY2staGVhZGVyLW1vZGVzIHNvLWxvbmctLXNldC1hdXRv LW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1vZGUg aWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90 ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5XSAxIFthbmQgd2hpbGUgbGV0 IGlmIG9yZy1lbGVtZW50LS1jb2xsZWN0LWFmZmlsaWF0ZWQta2V5d29yZHMgbGV0IGNvbmQgc2V0 cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlm IGlmIHdoaWxlIGxldF0gMiBbcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBw cm9nbiBpZiBvcmctZWxlbWVudC0tY2FjaGUtcGVyc2lzdC1hZnRlci1yZWFkIHJ1bi1ob29rLXdp dGgtYXJncyB3aGlsZSBsZXQqIHByb2duIGlmIGlmIHByb2duIGlmXSAxIFthbmQgbGV0KiBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9t aW5hdGluZy1maWxlIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHBy b2plY3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJv amVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1n bG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzXSAx IFtraWxsLWFsbC1sb2NhbC12YXJpYWJsZXMgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFj MzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1 dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBw bHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseSBhZnRlci1maW5kLWZpbGUg aWZdIDEwIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9u IGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3Qt LWdldC1jb2xsZWN0aW9uIGxldF0gMSBbYW5kIG9yIHNldHEgbGV0IGxldCB3aGlsZSBsZXQgY2F0 Y2ggYW5kIGxldCogd2l0aC1uby13YXJuaW5ncyBvcmctcGVyc2lzdC0tZmluZC1pbmRleCBvciBv cmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duXSAyIFstZWFjaCBzcC0tdXBkYXRl LWxvY2FsLXBhaXJzIHNwLS1pbml0IHNtYXJ0cGFyZW5zLW1vZGUgdHVybi1vbi1zbWFydHBhcmVu cy1tb2RlIHNtYXJ0cGFyZW5zLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29r cyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1v ZGUtMCBwcm9nbiBpZl0gMSBbYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmct ZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVt ZW50LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIg YXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0t Y2FjaGUtcHV0IG9yXSAxIFtsZXQgZmlsZS1yZW1vdGUtcCBsZXQgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBh bmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZp bGVdIDcgW2xldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZXMtLXRyYW5zZm9ybS1maWxl LW5hbWUgaWYgbGV0IGlmICIjPGxhbWJkYSAweDI0YjY3NjgwNTZmODZiYT4iIGZ1bmNhbGwgbGV0 IGRvb20tbWFrZS1oYXNoZWQtYXV0by1zYXZlLWZpbGUtbmFtZS1hIGFwcGx5IG1ha2UtYXV0by1z YXZlLWZpbGUtbmFtZSBhdXRvLXNhdmUtbW9kZSBwcm9nbl0gNSBbcHJvamVjdC0tdmFsdWUtaW4t ZGlyIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3QtY3Vy cmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVt YnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9k ZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1t b2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQt cHJvdGVjdF0gMTYgW2VxdWFsIGFuZCBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXBy b3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgIiM8bGFtYmRhIC0weGQ2ZTliYjI1 YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0XSAyIFtvdXRsaW5lLW1vZGUgbGV0IHByb2duIG9yZy1t b2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBz ZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxIGlmXSA3IFtwcm9nbiBpZiBsZXQgbGV0IHdo aWxlIGxldCBjYXRjaCBhbmQgbGV0KiB3aXRoLW5vLXdhcm5pbmdzIG9yZy1wZXJzaXN0LS1maW5k LWluZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0Kl0gMSBb c2V0cSBpZiBpZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUt ZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12 aXNpdGluZyBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsXSAyIFtp ZiBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRx IGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldF0g MSBbY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1u b3JtYWxpemUtY29udGFpbmVyICIjPGxhbWJkYSAweDExY2Q0NTIxZj4iIG1hcGNhciAiIzxsYW1i ZGEgMHgxZTEyYjhmYmZmYThkYT4iIGZ1bmNhbGwgY29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVy c2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lcl0gMyBbIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTcz MmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV80PiIgbWFwYyB5YXMtLW1vZGVzLXRvLWFj dGl2YXRlIHlhcy1taW5vci1tb2RlIHlhcy1taW5vci1tb2RlLW9uIHlhcy1nbG9iYWwtbW9kZS1l bmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0w eDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0t c2h1dC11cC1hdXRvc2F2ZS1hXSAyIFtzZXEtZmluZCBpZiBwcm9nbiBpZiBsZXQqIHByb2duIHBy b2duIGxldCogb3JnLXBlcnNpc3QtcmVhZCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LWxvYWQgcHJv Z24gaWYgbGV0IHByb2duXSAxIFtsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g b3JnLWVsZW1lbnQtb3JnLWRhdGEtcGFyc2VyIHNldHEgY29uZCBsZXQqIHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0t cGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXRdIDIgW3doaWxlIGxldCB3aGlsZSBs ZXQgaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBub3QgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhj MDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25n LS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5v cm1hbC1tb2RlXSAxIFtpZiBvcmctZWxlbWVudC0tY29sbGVjdC1hZmZpbGlhdGVkLWtleXdvcmRz IGxldCBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVs ZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uXSAxMCBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGxd IDE2IFtpZiBsZXQgd2hpbGUgbGV0IGxldCogbGV0IHdoaWxlIGxldCBsZXQgaWYgbGV0IHByb2du IGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBsZXQgcHJvZ25dIDIgW2F1dG8tbWlub3It bW9kZS0tcnVuLWF1dG8gYXV0by1taW5vci1tb2RlLXNldCBhcHBseSAiIzxjb21waWxlZCAweDFi OTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1v ZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVk OGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSAxIFticmVhZGNydW1i LS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWIt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFt YmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCog ZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1 Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+Il0gMyBbd2hpbGUgbGV0 IHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgaWYgbGV0IGlmIGxl dCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJp YWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgamlueC1tb2RlXSAxIFthcHBseSBvcmct Z2V0LWFnZW5kYS1maWxlLWJ1ZmZlciBpZiBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIg Y2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWYgaWYg bGV0IG9yZy1hZ2VuZGEtcHJlcGFyZSBjYXRjaF0gMSBbbm90IGFuZCBsZXQgc2V0LWF1dG8tbW9k ZS0xIHNvLWxvbmctLWNoZWNrLWhlYWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFw cGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxh bWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMSBb c2V0LWZhY2UtZm9yZWdyb3VuZCBwcm9nbiBpZiBsZXQgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNh bGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZl0gMSBbZmlsZS1l eGlzdHMtcCBpZiBhZ2Utc2NyeXB0LXAgYXNldCBsZXQqIHByb2duIGxldCogYWdlLWZpbGUtaW5z ZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBh Z2UtZmlsZS1oYW5kbGVyICIjPHN1YnIgaW5zZXJ0LWZpbGUtY29udGVudHM+Il0gMyBbc3RyaW5n PSBhbmQgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkg aW5zZXJ0LWZpbGUtY29udGVudHMgbGV0IGlmIHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3Vy cmVudC1idWZmZXIgbGV0IGFnZS1yZWFkLW91dHB1dCBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdF0g MTUgW2FuZCB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBhZ2UtcmVhZC1v dXRwdXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRp dGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUt Y29udGVudHMgYXBwbHldIDczIFtvciBpZiBsZXQgZG9vbS1tYWtlLWhhc2hlZC1hdXRvLXNhdmUt ZmlsZS1uYW1lLWEgYXBwbHkgbWFrZS1hdXRvLXNhdmUtZmlsZS1uYW1lIG9yIGZpbGUtbmV3ZXIt dGhhbi1maWxlLXAgYW5kIGlmIGNvbmQgbGV0KiBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkx YTZlPiIgYXBwbHkgcHJvZ25dIDQgW2FwcGx5IGRlZmluZS1rZXkgZ2xvYmFsLXNldC1rZXkgdW5k by10cmVlLW92ZXJyaWRkZW4tdW5kby1iaW5kaW5ncy1wIHR1cm4tb24tdW5kby10cmVlLW1vZGUg Z2xvYmFsLXVuZG8tdHJlZS1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3Jt YWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWFdIDEgW2lmIGxldCogaWYg bGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3Jn LWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZs LXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZm ZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dF0gMiBbbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1j b250ZW50cy1lbmQgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFy c2UtdG8gY29uZGl0aW9uLWNhc2VdIDIgW3Byb2duIGZpbGUtZXhpc3RzLXAgYW5kIGlmIGFnZS1k ZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRx IGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0 LWZpbGUtY29udGVudHMgYXBwbHkgaWZdIDIgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGlmIHNldHEg c2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBp ZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRv cmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdF0gMiBbc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1vcmctZGF0YS1wYXJzZXIgc2V0cSBjb25kIGxldCog c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNo IG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJl c3RyaWN0aW9uXSAxIFtmdW5jYWxsIGNvbmQgbGV0KiBpZiBsZXQqIGxldCB3aGlsZSBsZXQgbGV0 IGNvbmQgb3JnLS10YWctYWRkLXRvLWFsaXN0IHNldHEgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoXSAxIFtjb25kIGxldCBjb25kIHNldHEg bGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBp ZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3Vy cmVudC1idWZmZXJdIDEwIFthbmQgaWYgZXhwYW5kLWZpbGUtbmFtZSBsZXQgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0IGZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIGlmIGxldCBpZiAiIzxsYW1i ZGEgMHgyNGI2NzY4MDU2Zjg2YmE+IiBmdW5jYWxsIGxldCBkb29tLW1ha2UtaGFzaGVkLWF1dG8t c2F2ZS1maWxlLW5hbWUtYSBhcHBseV0gMyBbb3Igbm90IHdoaWxlIGxldCBsb2NhdGUtZG9taW5h dGluZy1maWxlIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2pl Y3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVj dC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9i YWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1t b2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGxdIDQgW29yIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZp bGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgaWYgc2V0cSBzYXZlLWN1cnJlbnQtYnVm ZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmXSAxMSBbYW5kIGxldCogYW5k IGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxl c3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRy ZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUt cHV0IG9yIHNldHFdIDIgW2Z1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3Nv Y2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9n biBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2duXSAzIFtp ZiBsZXQgaWYgbGV0ICIjPGxhbWJkYSAweDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNr LWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29r cyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbl0gMSBb aWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0 aW5nIG9yZy1maW5kLWJhc2UtYnVmZmVyLXZpc2l0aW5nIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2 ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2Vu ZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyIGlmXSA2IFtsZXQg bWFrZS1sb2NrLWZpbGUtbmFtZSAiIzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHkg aWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0 LWZpbGUtY29udGVudHMgbGV0IGNvbmRpdGlvbi1jYXNlIGlmIHNhdmUtY3VycmVudC1idWZmZXIg bGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxldCpdIDEgW2xldCBjb25kIGxldCogYW5kIGxl dCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1l bGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10 cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVy XSAxIFtjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYg Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3Qt LW5vcm1hbGl6ZS1jb250YWluZXIgbGV0KiBjb25zIHNldHEgaWYgcHJvZ24gaWYgd2hpbGUgbGV0 KiBwcm9nbl0gMyBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9u IGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3Qt LWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyXSAxIFtw cm9nbiBpZiBsZXQgcHJvZ24gaWYgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIGxldCBwcm9n biBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZl0g MiBbZ29nZ2xlcy1tb2RlIHJ1bi1ob29rcyBhcHBseSBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBm dW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cV0gMSBbYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMt MSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9k ZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZm ZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlm IHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDggW25vdCBhbmQgaWYgbGV0IGlmIGxl dCBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVh ZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRj cnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNy dW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnNdIDEgW3NlcS1maWx0ZXIgbGV0IHByb2duIGlmIHNh dmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBs ZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZl0gMTAgW2NvbnMgbGV0IGxldCBl ZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5v c2VsZWN0IHNldHEgaWYgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2Fs bCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkg b3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWZdIDIgW3NldHEgZXF1YWwgY29uZCB3aGlsZSBs ZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBw cm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHIgbGV0KiBjb25kaXRpb24t Y2FzZSBpZl0gMyBbbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1jb250ZW50cy1lbmQgc2V0cSBw cm9nbiBwcm9nbiBpZiBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbl0gMSBbc2V0cSB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZp c2l0aW5nIG9yZy1maW5kLWJhc2UtYnVmZmVyLXZpc2l0aW5nIGxldCAiIzxsYW1iZGEgLTB4MTY4 ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1h Z2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyIGlmIHNldC1i dWZmZXJdIDEgW2FwcGx5IG1ha2UtcHJvY2Vzcy0td2l0aC1lZGl0b3ItcHJvY2Vzcy1maWx0ZXIg YXBwbHkgbWFrZS1wcm9jZXNzIHNldHEgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGxldCBsZXQq IGFnZS0tc3RhcnQgbGV0IGFnZS1zdGFydC1kZWNyeXB0IHByb2duIHVud2luZC1wcm90ZWN0IGFn ZS1kZWNyeXB0LWZpbGVdIDQ3IFtsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYg b3JnLXJvYW0tZGItYXV0b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWYg YWdlLWRlbGV0ZS1vdXRwdXQtZmlsZSBpZiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxl IHNldHEgY29uZGl0aW9uLWNhc2VdIDYgW2FuZCBpZiBjb25kIGxldCogaWYgIiM8bGFtYmRhIC0w eDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0t c2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIg YXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseV0gMTkgW3JlZ2V4cC1v cHQgY29uY2F0IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBs ZXQqIG9yZy1jb2xsZWN0LWtleXdvcmRzIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5k LW9wdGlvbnMgbGV0XSA0IFtvcmctZWxlbWVudC1jcmVhdGUgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LW9yZy1kYXRhLXBhcnNlciBzZXRxIGNvbmQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0 Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHFdIDYgW3NldHEg bGV0IGxldCB3aGlsZSBsZXQgbGV0KiBsZXQgd2hpbGUgbGV0IGxldCBpZiBsZXQgcHJvZ24gaWYg b3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIGxldF0gMSBbY2wtcmVtb3ZlLWlmLW5vdCBlZGl0 b3Jjb25maWctY29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtLWdldC1oYW5kbGVz IGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jjb25maWctY29yZS0tZ2V0LWhh bmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtZ2V0LXByb3BlcnRpZXMtaGFzaCBmdW5jYWxsIHNldHEg Y29uZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy1jYWxsLWdldC1wcm9wZXJ0aWVzLWZ1bmN0 aW9uIHNldHEgcHJvZ24gaWYgY29uZGl0aW9uLWNhc2UgbGV0XSAxIFtjcmVhdGUtZmlsZS1idWZm ZXIgc2V0cSBpZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBs eSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFw cGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmXSAxIFtsZXQgZmlsZS1uYW1lLXNhbnMtdmVy c2lvbnMgaWYgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1 dG8tbW9kZS0xIHNldHEgYW5kIHNhdmUtZXhjdXJzaW9uIGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4 YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiJdIDcgW29y IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRp b24tY2FzZSBpZiBzZXRxIGxldF0gMiBbYW5kIGlmIGVkaXRvcmNvbmZpZy1zZXQtbGluZS1sZW5n dGggZWRpdG9yY29uZmlnLXNldC1sb2NhbC12YXJpYWJsZXMgcHJvZ24gaWYgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBjb25kaXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxl LW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEg LTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iXSAxIFtsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmls ZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYgb3IgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10 cnVlbmFtZSBlcXVhbCBhbmRdIDMgW2xldCBmaWxlLXJlbW90ZS1wIG5vdCBvciBhbmQgaWYgaGFj ay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMg aGFjay1kaXItbG9jYWwtdmFyaWFibGVzLW5vbi1maWxlLWJ1ZmZlciBwcm9qZWN0LS12YWx1ZS1p bi1kaXIgcHJvamVjdC10cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1j dXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNy dW1ic10gMyBbbWFwY2FyICIjPGNvbXBpbGVkIDB4MTg1NzY2YjA3YzIzOTVmND4iIGFwcGx5IHNl cS1tYXAgc2VxLWZpbHRlciBsZXQgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgd2hp bGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IHByb2duIGlmIG9yXSAzIFthbmQgd2hpbGUg bGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IG9y Zy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3JnLWNvbGxlY3Qta2V5d29yZHMgbGV0IHByb2du IGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uXSAxIFtsZXQgbGV0KiBhZ2UtLXN0YXJ0IGxldCBhZ2Utc3RhcnQtZGVjcnlwdCBwcm9n biB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBs eSBpZl0gOCBbbm90IG9yIGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1yZWxh dGl2ZS1uYW1lIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wIGFuZCBpZiBvcmctcm9hbS1k Yi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseV0gMyBbbGV0IGZpbGUtcmVtb3RlLXAgbGV0 IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgbGV0KiBjb25kaXRpb24tY2FzZSBp ZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4 MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8t bW9kZV0gMiBbb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hl LWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1l bnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQg b3Igc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0Kl0gNiBbc2V0cSBsZXQgaWYgbGV0KiBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9taW5h dGluZy1maWxlIGVudnJjLS1maW5kLWVudi1kaXIgIiM8c3ViciBlbnZyYy0tdXBkYXRlPiIgYXBw bHkgZW52cmMtLXVwZGF0ZSBlbnZyYy1tb2RlIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1i dWZmZXJzXSAxIFtpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZp bGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgYW5kIGxldCogaWYgaWYgIiM8bGFtYmRh IC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0XSA0IFtmaWxlLW5hbWUtYXMtZGly ZWN0b3J5IHNldHEgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBs ZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMt LWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWZdIDE0IFtnbG9iYWwtaGwtbGluZS1t b2RlLWNtaGggdGV4dC1tb2RlIG91dGxpbmUtbW9kZSBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2Fs bCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1v ZGUtLWFwcGx5LWFsaXN0XSAxIFtvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50 LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1k by1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1l bGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGlsZSBsZXRdIDcgW2NvbXBhbnktbW9k ZS1vbiBnbG9iYWwtY29tcGFueS1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBu b3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29t cGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4 OWM5OD4iXSAyIFtwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVy IGxldCB3aGlsZSBsZXQgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgbGV0IHByb2duIG9yZy1tb2Rl IGZ1bmNhbGwgcHJvZ25dIDEgW2xldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBs ZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBs ZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmls ZS1ub3NlbGVjdF0gMjEgW2lmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlh dGUtZmlsZS1uYW1lIHNldHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYt ZGlyICIjPHN1YnIgZW52cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9k ZSBlbnZyYy1nbG9iYWwtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWZdIDE1IFts ZXQgbGV0KiBwcm9nbiBpZiBkaXItbG9jYWxzLS1hbGwtZmlsZXMgZnVuY2FsbCBpZiBzZXRxIHdo aWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUg bGV0IHByb2duIGlmXSAyIFt2Y29uY2F0IHNldC1kaXNwbGF5LXRhYmxlLXNsb3QgcHJvZ24gaWYg bGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHBy b2duIGlmIGxldCBpZl0gMiBbY29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFs aXplLWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4 MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCogb3JnLXBlcnNpc3Qt LW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbl0gMSBbaW5oaWJpdC1sb2NhbC12YXJpYWJs ZXMtcCBub3QgYW5kIGlmIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4i IHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVz IHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWZdIDYgW21hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUg ZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmct cGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0 ZXIgcHJvZ24gaWYgcHJvZ24gaWZdIDEgW2NvbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUt a2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21w YXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZl0gNCBbb2Nsb3N1 cmUtLWNvcHkgYWR2aWNlLS1jb3B5IGFkdmljZS0tbWFrZSBhZHZpY2UtLWFkZC1mdW5jdGlvbiBh ZHZpY2UtYWRkICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255 bW91c19sYW1iZGFfMzc+IiBldmFsLWFmdGVyLWxvYWQgY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1t b2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1i ZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ25dIDEgW3Vud2luZC1wcm90ZWN0IGxl dCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0 ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxl LW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmXSAxIFtjY29udi0tYW5h bHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252 LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXpl LWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUx MmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0Kl0gNCBbYW5kIG9yIHNldHEgbGV0IGxldCB3 aGlsZSBsZXQgY2F0Y2ggYW5kIGxldCogd2l0aC1uby13YXJuaW5ncyBvcmctcGVyc2lzdC0tZmlu ZC1pbmRleCBsZXQqIHByb2duIHByb2duIGxldCpdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBjbC1tYXBjYW4gbGV0IGxldCBw cm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoXSAyIFticmVhZGNydW1iLWxvY2Fs LW1vZGUgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwt bW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1h bC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxl ZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5XSAyIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zXSA0IFtsZXQqIGFnZS0tc3RhcnQgbGV0IGFnZS1zdGFydC1kZWNy eXB0IHByb2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24t Y2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRl bnRzIGFwcGx5IGlmIGxldF0gMyBbaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFs IGFuZCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1m aWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hXSAyIFtjZHIg Y2FyIGlmIGxldCBjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBv cmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1l bGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50 ZXJdIDQgWyIjPHN1YnIgaW5zZXJ0LWZpbGUtY29udGVudHM+IiBhcHBseSBpZiBlZGl0b3Jjb25m aWctLWFkdmljZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1jb250ZW50 cyBsZXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3Qgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgYWdl LXJlYWQtb3V0cHV0IGlmIHByb2duIHVud2luZC1wcm90ZWN0XSAzMiBbbGV0IG9yIGlmIHNldHEg d2hpbGUgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgbGV0KiBjb25kaXRp b24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNv bXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3Jn LXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lz dGVyXSAyIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl XSAxIFtkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2 OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4iIGFwcGx5IGFm dGVyLWZpbmQtZmlsZSBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBpZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+Il0gMSBbYXBw bHkgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5z ZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgbGV0IGFnZS1maWxlLXJ1bi1yZWFsLWhhbmRsZXIgaWYg bGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyICIjPHN1YnIgaW5z ZXJ0LWZpbGUtY29udGVudHM+IiBhcHBseV0gOSBbc2V0cSBsZXQgaWYgbGV0IHdoaWxlIGxldCBm aWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBw cm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kXSA3IFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCog b3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGlzdCBvcmctcGVyc2lzdC0tZmluZC1p bmRleCBvciBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3JnLXBl cnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWZdIDIgW3doaWxlIGxldCBvcmctcmVtb3ZlLWZvbnQtbG9j ay1kaXNwbGF5LXByb3BlcnRpZXMgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBvcmctdW5mb250 aWZ5LXJlZ2lvbiBvcmctbW9kZXJuLS11bmZvbnRpZnkgIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3 NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV8yNz4iIGludGVybmFsLS13aXRob3V0 LXJlc3RyaWN0aW9uIG9yZy1tb2Rlcm4tbW9kZSBvcmctbW9kZXJuLS1vbiBnbG9iYWwtb3JnLW1v ZGVybi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmct bW9kZV0gMiBbbGV0KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1zZWN0aW9uLXBhcnNlciBj b25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQg c2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u XSAzIFtmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAg bGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5j LS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZp bGVdIDIgWyIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAw eGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIg YXBwbHkgYWZ0ZXItZmluZC1maWxlIGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmls ZS1ub3NlbGVjdC0xXSAyIFticmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWIt cHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1v Zi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tz IGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAi Izxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iXSAzIFtjYXIgaWYgbGV0IGNvbmQgbGV0KiBh bmQgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1j YWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1l bnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXJdIDEgWyIjPHN1YnIgaW5zZXJ0 LWZpbGUtY29udGVudHM+IiBhcHBseSBpZiBlZGl0b3Jjb25maWctLWFkdmljZS1pbnNlcnQtZmls ZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1jb250ZW50cyBpZiBwcm9nbiB1bndpbmQtcHJv dGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQgb3JnLXBlcnNpc3QtLXJlYWQtZWxpc3At ZmlsZSBvciBzZXRxIGlmXSAxIFttZW1xIGNvbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUt a2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21w YXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZl0gMiBbZXF1YWwgaWYg aWYgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFt ZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgYW5kIGxldCogaWYgaWZdIDIgW3JlZ2V4cC1vcHQt Z3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAg cmVnZXhwLW9wdCBjb25jYXQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAgc2V0cSBjb25kIGxldCBs ZXQgaWYgbGV0KiBsZXQgcHJvZ24gaWZdIDEgW2xldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBsZXQqIG9y Zy1jb2xsZWN0LWtleXdvcmRzIG9yZy1tYWNyby0tY29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWlu aXRpYWxpemUtdGVtcGxhdGVzIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmXSAx IFthcHBseSBtYWtlLXByb2Nlc3Mgc2V0cSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgbGV0IGxl dCogYWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3RlY3Qg YWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlXSAxIFtsZXQgaWYgbGV0IGZpbGUt dHJ1ZW5hbWUgZXF1YWwgYW5kIGlmIG9yZy1yb2FtLWRlc2NlbmRhbnQtb2YtcCBsZXQqIHByb2du IGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMtLWRlbGV0ZS1m aWxlLWEgYXBwbHldIDMgW3N0cmluZy1wcmVmaXgtcCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9m LXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9z eW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0 LWZpbGUgaWYgdW53aW5kLXByb3RlY3RdIDYgW2xldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0 IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9j YWwtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcy1ub24tZmlsZS1idWZmZXIgcHJv amVjdC0tdmFsdWUtaW4tZGlyIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0 b3J5IHByb2plY3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1 bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFs Zi1vZi1nbG9iYWwtbW9kZV0gMSBbZGVscSBsZXQgaWYgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2 aWF0ZS1maWxlLW5hbWUgaWYgc2V0cSBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUt bm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+Il0g MiBbaW50ZXJuLXNvZnQgZG9vbS1ydW4taG9va3MgaWYgZG9vbS1ydW4tbG9jYWwtdmFyLWhvb2tz LWggcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFh NmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3Nh dmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iXSAyIFttYXBjYXIgIiM8 bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCogb3Jn LXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbiBpZiBwcm9nbiBsZXQqIG9y Zy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmXSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJl dGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0 ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGlmIHByb2duXSAx IFtzZXRxIHByb2duIGlmIGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1 bmNhbGwgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFw cGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyIGlmIHNldC1idWZmZXIgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBjYXRjaCBsZXRdIDIgW3doaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxl dCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQt dmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZh cmlhYmxlcy1ub24tZmlsZS1idWZmZXIgcHJvamVjdC0tdmFsdWUtaW4tZGlyIHByb2plY3QtdHJ5 LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3QtY3VycmVudF0gMSBbY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt LWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2Ut aW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUt YXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXRdIDMgW29yZy1l bGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1l bnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBh dmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1j YWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGlsZSBsZXRdIDEgW3Byb2duIGlmIGxldCBpZiBwcm9n biBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgY29uZCBsZXQq IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRj aCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2VdIDEgW2lmIGxldCB3aGlsZSBs ZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYg bGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lXSAxIFthZnRl ci1maW5kLWZpbGUgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0 LTEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0 cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseV0g MSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw YW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmct cGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxl Y3Rpb24gbGV0IHByb2duIGlmIHByb2duXSAyIFtkb29tLXJ1bi1ob29rcyBpZiBkb29tLXJ1bi1s b2NhbC12YXItaG9va3MtaCBydW4taG9va3MgaGFjay1sb2NhbC12YXJpYWJsZXMtYXBwbHkgcHJv Z24gaWYgbGV0IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0t aGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUt aG9va3Mgb3JnLW1vZGVdIDEgW3NhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1l eGN1cnNpb24gbGV0IG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3JnLWNvbGxlY3Qta2V5 d29yZHMgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggbGV0XSAzIFth cHBseSBlbnZyYy0tdXBkYXRlIGVudnJjLW1vZGUgZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWlu LWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVk OGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAt YXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iXSAyIFtpbmhp Yml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2 Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1h dXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1v ZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duXSAzIFtsZXQq IG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAg b3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1k by1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1l bGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZl0gNCBbbGlzdCBzZXEtZmluZCBsZXQgbGV0 KiBhZ2UtLXN0YXJ0IGxldCBhZ2Utc3RhcnQtZGVjcnlwdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBh Z2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50c10gNCBbbGV0IGNvbmQgbGV0KiBhbmQg bGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIHdoaWxlIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1 ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uXSAzIFtpZiBsZXQgIiM8bGFtYmRhIDB4ZGQ3YmExZDBjN2ZlMzRjPiIgYXBw bHkgYWJvcnQtaWYtZmlsZS10b28tbGFyZ2UgZXEgaWYgcHJvZ24gaWYgbGV0KiBpZiBpZiAiIzxs YW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXRdIDEgW2FnZS1jb250ZXh0 LXJlc3VsdC1mb3IgbGV0IGFnZS0tY2hlY2stZXJyb3ItZm9yLWRlY3J5cHQgcHJvZ24gdW53aW5k LXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0 IHByb2duXSAyIFtub3Qgd2hpbGUgbGV0IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZW52cmMtLWZp bmQtZW52LWRpciAiIzxzdWJyIGVudnJjLS11cGRhdGU+IiBhcHBseSBlbnZyYy0tdXBkYXRlIGVu dnJjLW1vZGUgZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlm IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseV0gMSBb bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0 KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWRdIDUgW3VuZG8tdHJlZS1vdmVycmlk ZGVuLXVuZG8tYmluZGluZ3MtcCB0dXJuLW9uLXVuZG8tdHJlZS1tb2RlIGdsb2JhbC11bmRvLXRy ZWUtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1v ZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNl dC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSAxIFtvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBh dmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBh dmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1j YWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0Kl0gMiBbbGV0IGlmIGxldCogcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgbG9jYXRlLWRv bWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9nbiBpZiBoYWNr LWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHJdIDMgW2Njb252LW1ha2UtaW50ZXJwcmV0ZWQt Y2xvc3VyZSBmdW5jdGlvbiBjbC1tYXBjYW4gIiM8bGFtYmRhIDB4MTk5NDhkMjcwN2E5ZD4iIGNs LW1hcGNhbiBtYXBjYXIgc2V0IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlv bnMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ25dIDEgW2xldCogb3JnLWNvbGxlY3Qt a2V5d29yZHMgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggbGV0IHdo aWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWZdIDEgW2FuZCBsZXQqIG9y IGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZl OWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZp bmQtZmlsZS1ub3NlbGVjdCBhcHBseV0gMyBbaWYgYWdlLXNjcnlwdC1wIGFzZXQgbGV0KiBwcm9n biBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldCBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQgYWdlLWZpbGUtaGFuZGxlciAiIzxzdWJyIGluc2VydC1maWxlLWNv bnRlbnRzPiIgYXBwbHldIDUgW2FuZCBpZiBzZXRxIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQgZmlsZXMtLXRyYW5zZm9ybS1maWxlLW5hbWUgaWYgbGV0IGlmICIjPGxhbWJkYSAweDI0YjY3 NjgwNTZmODZiYT4iIGZ1bmNhbGwgbGV0IGRvb20tbWFrZS1oYXNoZWQtYXV0by1zYXZlLWZpbGUt bmFtZS1hIGFwcGx5XSAxIFtpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRv IGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1leGN1cnNpb25dIDUgW2lmIGxldCBkb29tLW1ha2UtaGFzaGVkLWF1dG8tc2F2ZS1m aWxlLW5hbWUtYSBhcHBseSBtYWtlLWF1dG8tc2F2ZS1maWxlLW5hbWUgb3IgZmlsZS1uZXdlci10 aGFuLWZpbGUtcCBhbmQgaWYgY29uZCBsZXQqIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFh NmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMSBbY2NvbnYtbWFrZS1pbnRlcnByZXRl ZC1jbG9zdXJlIGZ1bmN0aW9uIGFzc29jLWRlZmF1bHQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzZXRxIGlmIGlmIGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiIgYXBw bHkgIiM8Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9k ZSBhcHBseSBzZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1jYXNlXSAyIFtwcm9nbiBwcm9nbiBsZXQq IHdoaWxlIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmlu ZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1i dWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlXSA3IFtpZiBz ZXRxIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5k LWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFj ay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcy1ub24tZmlsZS1i dWZmZXIgcHJvamVjdC0tdmFsdWUtaW4tZGlyIHByb2plY3QtdHJ5LXZjXSAxIFthbmQgbGV0KiBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQtYnVm ZmVyLXZpc2l0aW5nIG9yZy1maW5kLWJhc2UtYnVmZmVyLXZpc2l0aW5nIGxldCAiIzxsYW1iZGEg LTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91 bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyXSAy IFtpZiBpZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZiBv cmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXBdIDIg W2xldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUt ZmlsZS1uYW1lIGlmIHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2Vs ZWN0LTEgaWZdIDIgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVy cHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRh aW5lciBsaXN0IG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29s bGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZl0gMiBb Y29tcGFueS1tb2RlIGNvbXBhbnktbW9kZS1vbiBnbG9iYWwtY29tcGFueS1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2du IGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3RdIDUgW2FuZCB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFu ZCBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxl dCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0XSAyIFtsZXQgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVhZGNydW1iLS1wcm9q ZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1v bi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5h YmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgx YzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbl0gMSBbY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRl cnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxpc3QgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91 bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyIGlm IHNldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBsZXQgd2hpbGUgbGV0IGxldF0g MSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJw cmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFp bmVyIHNldHEgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBp ZiBwcm9nbiBpZl0gMSBbY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRl ZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0 KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbl0gMiBbc3RyaW5n PSBhbmQgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkg aW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgbGV0IGFnZS1maWxlLXJ1bi1yZWFsLWhhbmRsZXIg aWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyICIjPHN1YnIg aW5zZXJ0LWZpbGUtY29udGVudHM+Il0gMSBbYWR2aWNlLS1jb3B5IGFkdmljZS0tbWFrZSBhZHZp Y2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRkICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJk NmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMzc+IiBldmFsLWFmdGVyLWxvYWQgY3RybGYt bG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3Jt YWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53 aW5kLXByb3RlY3RdIDIgW2FjY2VwdC1wcm9jZXNzLW91dHB1dCB3aGlsZSBhZ2Utd2FpdC1mb3It Y29tcGxldGlvbiBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29u ZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmls ZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ25dIDIgW2xldCBmaWxlLXRydWVuYW1lIGZpbGUt bmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1 ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYgb3JdIDMgW2lmIGlmIHdoaWxlIGxl dCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZl ciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMiBbb3JnLXBlcnNpc3QtLW5vcm1hbGl6 ZS1jb250YWluZXIgbGV0KiBjb25zIHNldHEgaWYgcHJvZ24gaWYgd2hpbGUgbGV0KiBwcm9nbiBp ZiBpZiBwcm9nbiBpZiBsZXQqIHByb2duXSAxIFtwcm9qZWN0LS12YWx1ZS1pbi1kaXIgcHJvamVj dC10cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFk Y3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNy dW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1 bWItbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1v ZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDcgW2xvb2tpbmctYXQtcCBh bmQgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVt ZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSA0IFtidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRp ZXMgcHJvZzEgY29ucyBzZXRxIGlmIHdoaWxlIGxldCogbGV0IHByb2duIHVud2luZC1wcm90ZWN0 IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHByb2duIGlmIGFnZS1zY3J5cHQtcCBhc2V0XSAyIFth ZnRlci1pbnNlcnQtZmlsZS1zZXQtY29kaW5nICIjPHN1YnIgaW5zZXJ0LWZpbGUtY29udGVudHM+ IiBhcHBseSBpZiBlZGl0b3Jjb25maWctLWFkdmljZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBs eSBpbnNlcnQtZmlsZS1jb250ZW50cyBsZXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3Qgc2F2ZS1j dXJyZW50LWJ1ZmZlciBsZXQgYWdlLXJlYWQtb3V0cHV0IGlmIHByb2duXSA0IFsiIzxjb21waWxl ZCAweDFhNWM4Mjg3YjkzZDA5NGQ+IiBhZGQtaG9vayBzbWFydHBhcmVucy1tb2RlIHR1cm4tb24t c21hcnRwYXJlbnMtbW9kZSBzbWFydHBhcmVucy1nbG9iYWwtbW9kZS1lbmFibGUtaW4tYnVmZmVy cyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2 ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2 ZS1hIGFwcGx5XSAyIFtmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IHNldHEgcHJvZ24gdW53aW5kLXBy b3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0x IGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2Rl LW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZl cnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFh NmU+IiBhcHBseV0gMiBbZ2V0aGFzaCBhbmQgb3Igc2V0cSBsZXQgbGV0IHdoaWxlIGxldCBjYXRj aCBhbmQgbGV0KiB3aXRoLW5vLXdhcm5pbmdzIG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9yIG9y Zy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXRdIDEgW2xldCogb3JnLXVuZm9udGlmeS1yZWdp b24gb3JnLW1vZGVybi0tdW5mb250aWZ5ICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2 MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMjc+IiBpbnRlcm5hbC0td2l0aG91dC1yZXN0cmlj dGlvbiBvcmctbW9kZXJuLW1vZGUgb3JnLW1vZGVybi0tb24gZ2xvYmFsLW9yZy1tb2Rlcm4tbW9k ZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVu Y2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDEgW3NlbGVjdC1zYWZlLWNvZGluZy1z eXN0ZW0gc2VjdXJlLWhhc2ggZXF1YWwgYW5kIGlmIHNhdmUtY3VycmVudC1idWZmZXIgaWYgcHJv Z24gaWYgb3JnLWVsZW1lbnQtLWNhY2hlLXBlcnNpc3QtYmVmb3JlLXJlYWQgcnVuLWhvb2std2l0 aC1hcmdzLXVudGlsLXN1Y2Nlc3MgIiM8bGFtYmRhIDB4MWE3NTYwZjdjOGU0ZDY1MD4iICIjPGNv bXBpbGVkIC0weDk4MmYyOTg3NDgxNWU5YT4iIG1hcGMgc2VxLWRvIHNlcS1maW5kXSA0IFttYWNy b2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCog b3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGV0KiBjb25zIHNldHEgaWYgcHJvZ24g aWYgd2hpbGUgbGV0KiBwcm9nbiBpZiBpZl0gMyBbbGV0IGZpbGUtbmFtZS1zYW5zLXZlcnNpb25z IGlmIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgbGV0IHNldC1hdXRvLW1v ZGUtMSBsZXQgc2F2ZS1leGN1cnNpb24gY2F0Y2ggaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1s aW5lIG9yIGFuZCBpZl0gNyBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVu Y3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVy c2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXJd IDMgW29yZy1zZXR1cC1maWxsaW5nIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlm IGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0cSBpZl0gMiBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFs bCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lz dC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0 LXJlYWQgcHJvZ24gbGV0Kl0gMSBbYW5kIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVz IGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGNvbmRpdGlvbi1jYXNlIGlmIGxldCAiIzxs YW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMg YXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgamlueC1tb2RlIGppbngtLW9uIGdsb2JhbC1qaW54 LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzXSAxIFsiIzxjb21waWxlZCAweDFhNWM4 Mjg3YjkzZDA5NGQ+IiBhZGQtaG9vayBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250LWxvY2st ZGVmYXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9u LWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVm ZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBp ZiBzZXQtYXV0by1tb2RlLTBdIDEgW2lmIHNhdmUtZXhjdXJzaW9uIGxldCBoYWNrLWxvY2FsLXZh cmlhYmxlcy0tZmluZC12YXJpYWJsZXMgb3IgYW5kIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5 NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2Nh bC12YXJpYWJsZXMgc2V0cSBhbmQgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+Il0g MyBbZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGFwcGx5IHJ1 bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0w IHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxXSAyIFthbmQg aWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZp bGUtbmFtZSBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBz ZXRxXSAxIFtvciBpZiBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8 Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1 ZDk4OWM5OD4iIGFwcGx5IGFmdGVyLWZpbmQtZmlsZSBpZl0gNCBbZ2xvYmFsLXNldC1rZXkgIiM8 Y29tcGlsZWQgMHhhMDgxZTAwOTkzMjZlYTA+IiB1bmRvLXRyZWUtb3ZlcnJpZGRlbi11bmRvLWJp bmRpbmdzLXAgdHVybi1vbi11bmRvLXRyZWUtbW9kZSBnbG9iYWwtdW5kby10cmVlLW1vZGUtZW5h YmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwg cHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldF0gMSBbb3JnLW1hY3JvLS1j b2xsZWN0LW1hY3JvcyBvcmctbWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgbGV0IHByb2duIG9y Zy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBp ZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxXSAxMCBbbm9ybWFsLW1vZGUgaWYgIiM8 bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxl dCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2 ZDM1Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseSBhZnRl ci1maW5kLWZpbGUgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gNSBbaWYgbGV0KiBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9taW5hdGlu Zy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxv Y2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzXSAxNSBbd2hp bGUgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1dG8tbW9k ZS0xIGxldCBzYXZlLWV4Y3Vyc2lvbiBjYXRjaCBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxp bmUgYXBwZW5kIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4iXSAxIFty ZXBsYWNlLWJ1ZmZlci1pbi13aW5kb3dzIGtpbGwtYnVmZmVyIGFuZCB1bndpbmQtcHJvdGVjdCBz YXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQgb3JnLXBlcnNpc3QtLXJlYWQtZWxpc3AtZmlsZSBv ciBzZXRxIGlmIHByb2duIGlmIGxldCogcHJvZ24gcHJvZ25dIDEgW2lmICIjPGxhbWJkYSAtMHgx YzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNo dXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFw cGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIgYXBwbHkgYWZ0ZXItZmluZC1maWxl IGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0XSA2IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9z dXJlIGZ1bmN0aW9uXSAxIFsrb3JnLS1vcHRpbWl6ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZl cnMtYSBhcHBseSBvcmctZ2V0LWFnZW5kYS1maWxlLWJ1ZmZlciBpZiBzZXQtYnVmZmVyIHNhdmUt Y3VycmVudC1idWZmZXIgY2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJl LWJ1ZmZlcnMgaWYgaWYgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZV0gMiBbY29uZCB3aGlsZSBsZXQg bG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9n biBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBsZXQqIGhhY2stZGlyLWxvY2FsLXZh cmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMtbm9uLWZpbGUtYnVmZmVyIHByb2plY3Qt LXZhbHVlLWluLWRpciBwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeV0g MyBbY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIHNldHEgcHJvZ24g bGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBzYXZl LWN1cnJlbnQtYnVmZmVyIGxldCB3aGlsZV0gMiBbc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVm ZmVyIHdoaWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1i YXNlLWJ1ZmZlci12aXNpdGluZyBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBm dW5jYWxsIGxldCArb3JnLS1vcHRpbWl6ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBh cHBseSBvcmctZ2V0LWFnZW5kYS1maWxlLWJ1ZmZlcl0gNSBbY2NvbnYtLWFuYWx5emUtZnVuY3Rp b24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRx IG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1y ZWdpc3RlciBwcm9nbiBpZiBwcm9nbl0gMSBbc3RyaW5nLW1hdGNoIGlmIHN1YnN0cmluZyBpZiBs ZXQgZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgaWYgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVz LXAgbm90IGFuZCBsZXQgc2V0LWF1dG8tbW9kZS0xIGxldCBzYXZlLWV4Y3Vyc2lvbiBjYXRjaF0g MSBbZXEgaWYgcHJvZ24gaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJh PiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3Nl bGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cV0gMSBbYW5kIHdoaWxlIGxldCBvciBs ZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFzZS1idWZmZXItdmlzaXRpbmcgbGV0 ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1p emUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmls ZS1idWZmZXIgaWYgc2V0LWJ1ZmZlcl0gNyBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5 emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFs eXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVy cHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29j aWF0ZWQgc2V0cSBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlYWRdIDIgW2xldCBmaWxl LXJlbW90ZS1wIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1l IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBi cmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJy ZWFkY3J1bWItbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mg b3JnLW1vZGUgZnVuY2FsbCBwcm9nbl0gMyBbc2F2ZS1leGN1cnNpb24gY2F0Y2ggaGFjay1sb2Nh bC12YXJpYWJsZXMtcHJvcC1saW5lIGFwcGVuZCBsZXQgaWYgbGV0ICIjPGxhbWJkYSAweDExMmFi ZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNrLWxv Y2FsLXZhcmlhYmxlcyBqaW54LW1vZGUgamlueC0tb24gZ2xvYmFsLWppbngtbW9kZS1lbmFibGUt aW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3NdIDEgW2VkaXRvcmNvbmZpZy1zZXQt dHJhaWxpbmctbmwgZWRpdG9yY29uZmlnLXNldC1sb2NhbC12YXJpYWJsZXMgcHJvZ24gaWYgc2F2 ZS1jdXJyZW50LWJ1ZmZlciBjb25kaXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2Ut ZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAi IzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0XSAxIFtwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQgZmlsZXMtLXRyYW5zZm9ybS1maWxlLW5hbWUgaWYgbGV0IG1ha2UtbG9j ay1maWxlLW5hbWUgIiM8c3ViciBpbnNlcnQtZmlsZS1jb250ZW50cz4iIGFwcGx5IGlmIGVkaXRv cmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNv bnRlbnRzIGxldCBjb25kaXRpb24tY2FzZSBpZl0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGxdIDggW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQt Y2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBz ZXRxIHByb2duIHByb2duXSAyIFstdW5pb24gc3AtLW1lcmdlLXByb3Agc3AtLW1lcmdlLXBhaXJz IHNwLS1tZXJnZS1wYWlyLWNvbmZpZ3VyYXRpb25zIHNwLXVwZGF0ZS1sb2NhbC1wYWlycyAtZWFj aCBzcC0tdXBkYXRlLWxvY2FsLXBhaXJzIHNwLS1pbml0IHNtYXJ0cGFyZW5zLW1vZGUgdHVybi1v bi1zbWFydHBhcmVucy1tb2RlIHNtYXJ0cGFyZW5zLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZm ZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duXSAzIFtm aWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxl LXRydWVuYW1lIGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldCBpZl0gMiBbbGV0 IGZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIHNldHEgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldHEgbGV0KiBjb25kaXRpb24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQw OGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxv bmctLXNldC1hdXRvLW1vZGUgYXBwbHldIDIgW2ludGVybi1zb2Z0IGRvb20tcnVuLWhvb2tzIGlm IGRvb20tcnVuLWxvY2FsLXZhci1ob29rcy1oIHJ1bi1ob29rcyBoYWNrLWxvY2FsLXZhcmlhYmxl cy1hcHBseSBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMtbm9uLWZpbGUtYnVmZmVyIHByb2plY3Qt LXZhbHVlLWluLWRpciBwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBw cm9qZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXBy b2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2Yt Z2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rc10g MyBbaWYgbGV0ICIjPGxhbWJkYSAweDMzNjcwNWNhNWNiPiIgZnVuY2FsbCBjb25kIGxldCogb3Jn LXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xs ZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2du XSAxIFt0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2Jh bC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9v a3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYg bGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSAxIFtlcXVhbCBpZiBsZXQgaWYgbGV0 IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCogaWYgaWYg IiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0XSAxIFtvciBub3Qg d2hpbGUgbGV0IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmls ZSBsZXQgcHJvZ24gaWYgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNrLWRp ci1sb2NhbC12YXJpYWJsZXMgY29uZGl0aW9uLWNhc2UgaWYgbGV0XSAyIFtpZiBsZXQgc2F2ZS1l eGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxl dCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZl ciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2VdIDEgW21hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5j dGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJz aXN0LS1nZXQtY29sbGVjdGlvbl0gMSBbZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBp ZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRv cmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxl Y3Qgc2V0cSBpZiBsZXRdIDEgW3NvcnQtY29kaW5nLXN5c3RlbXMgZmluZC1jb2Rpbmctc3lzdGVt cy1yZWdpb24gc2VsZWN0LXNhZmUtY29kaW5nLXN5c3RlbSBzZWN1cmUtaGFzaCBzZXRxIGlmIGxl dCAiIzxsYW1iZGEgMHgzNjFmYjhiZjFjYj4iIGZ1bmNhbGwgY29uZCBsZXQqIG9yZy1wZXJzaXN0 LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBs ZXQgcHJvZ25dIDEgW2tpbGwtYnVmZmVyIGFuZCB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQt YnVmZmVyIGxldCBsZXQgb3JnLXBlcnNpc3QtLXJlYWQtZWxpc3AtZmlsZSBvciBzZXRxIGlmIHBy b2duIGlmIGxldCogcHJvZ24gcHJvZ24gbGV0Kl0gMSBbYW5kIGxpc3QgYW5kIGxldCBwcm9nbiBp ZiBvcmctZXh0cmFjdC1sb2ctc3RhdGUtc2V0dGluZ3MgbGV0IGxldCB3aGlsZSBsZXQgbGV0KiBs ZXQgd2hpbGUgbGV0IGxldF0gMSBbbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LWtleXdv cmQtcGFyc2VyIG9yZy1tYWNyby0tZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1tYWNyby0tY29sbGVj dC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIGxldCBwcm9nbiBvcmctbW9k ZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZl0gMyBbaW5oaWJp dC1sb2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgc28tbG9uZy0t Y2hlY2staGVhZGVyLW1vZGVzIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8t bW9kZSBjb25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2 NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duXSA1IFtnZXRoYXNoIG9yIHNldHEgbGV0IGxldCB3aGls ZSBsZXQgY2F0Y2ggYW5kIGxldCogd2l0aC1uby13YXJuaW5ncyBvcmctcGVyc2lzdC0tZmluZC1p bmRleCBvciBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duXSAxIFtvcmctZm9s ZC1pbml0aWFsaXplIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1h dXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 cSBpZl0gMSBbZm9ybWF0LWRlY29kZSAiIzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBw bHkgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5z ZXJ0LWZpbGUtY29udGVudHMgbGV0IGNvbmRpdGlvbi1jYXNlIGlmIHNhdmUtY3VycmVudC1idWZm ZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxldCogaWZdIDEgW21hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29u di1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBsZXQgd2hpbGUgbGV0IGxl dF0gMSBbaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5h bWUgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBs ZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseV0gNCBb b3JnLWZvbGQtY29yZS1zZXQtZm9sZGluZy1zcGVjLXByb3BlcnR5IGlmIGxldCBwcm9nbiBvcmct bW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cV0gMSBbbGV0IGlmIG9yIGxldCBpZiBsZXQg d2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQtYnVm ZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlmIGlmXSAyIFtmb250LWxvY2stbW9kZS1pbnRlcm5hbCBm b250LWxvY2stZGVmYXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9j ayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBw cm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWZdIDMgW29yZy1jb2xsZWN0LWtleXdv cmRzIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIGxldCB3aGlsZSBs ZXQgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZS1idWZmZXJzIGlmIGlmXSAxIFtpZiBpZiAiIzxsYW1i ZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0t YWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cSBp ZiBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxldF0gMSBbbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNl cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSAxIFtzZXQgaWYgbGV0 IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBsZXQgcHJvZ24gb3JnLW1vZGUg ZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWZdIDIgW2lmIGxldCog cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgbG9jYXRl LWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyICIjPHN1YnIgZW52cmMtLXVwZGF0 ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwtbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3MgYXBwbHldIDQgW2xldCB3aGlsZSBsZXQgbGV0IGlmIGxl dCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgbGV0IHByb2duIG9yZy1tb2Rl IGZ1bmNhbGwgcHJvZ24gaWYgaWZdIDEgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1t YWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBsZXQgd2hpbGUgbGV0IGxldCBj b25kIG9yZy0tdGFnLWFkZC10by1hbGlzdF0gMiBbbm90IGFuZCB3aGlsZSBsZXQgd2hpbGUgbGV0 IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc28tbG9uZy0tY2hlY2staGVhZGVyLW1vZGVzIHNv LWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2FzZSBs ZXQgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iXSAxIFthbmQg b3IgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFt ZSBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxl dF0gNCBbZXF1YWwgaWYgaWYgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSAiIzxj b21waWxlZCAweDJmOTg5NzMyMTYwYzNiYj4iIGNsLXNvbWUgcHJvamVjdGlsZS1wcm9qZWN0LXJv b3QgcHJvamVjdC1wcm9qZWN0aWxlIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3Qt Y3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xXSAxIFtpZiBsZXQgZmlsZS10cnVl bmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZp bmQtYmFzZS1idWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3 PiIgZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJz LWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWYgc2V0LWJ1ZmZlcl0gMSBbIiM8 Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseSBhZnRlci1maW5kLWZpbGUgaWYgc2F2 ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZiAi IzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0XSAxIFtsZXQg d2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYgb3Ig bGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSAiIzxjb21waWxlZCAweDFkYTcyNDA3 M2ZjMmRkZTE+IiBjbC1zb21lXSAxIFsiIzxjb21waWxlZCAweDkxYWZlYjNkZjFiMmY1Nj4iIG1h cGNhciAiIzxjb21waWxlZCAweDE4NTc2NmIwN2MyMzk1ZjQ+IiBhcHBseSBzZXEtbWFwIHNlcS1m aWx0ZXIgbGV0IHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlIGxldCBvcmct ZWxlbWVudC1jYWNoZS1yZXNldCBsZXQgcHJvZ25dIDkgW2FiYnJldmlhdGUtZmlsZS1uYW1lIHNl dHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyICIjPHN1YnIgZW52 cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgYXBwbHkgcnVuLW1vZGUtaG9va3Mgb3Jn LW1vZGUgZnVuY2FsbCBwcm9nbiBpZl0gMiBbdW53aW5kLXByb3RlY3Qgc2F2ZS1jdXJyZW50LWJ1 ZmZlciBsZXQgbGV0IG9yZy1wZXJzaXN0LS1yZWFkLWVsaXNwLWZpbGUgb3Igc2V0cSBpZiBwcm9n biBpZiBsZXQqIHByb2duIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVhZCBwcm9nbl0gMSBbZWRp dG9yY29uZmlnLWNvcmUtLWdldC1oYW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxl cyBlZGl0b3Jjb25maWctY29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtLWdldC1o YW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jjb25maWctY29yZS0t Z2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtZ2V0LXByb3BlcnRpZXMtaGFzaCBmdW5jYWxs IHNldHEgY29uZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy1jYWxsLWdldC1wcm9wZXJ0aWVz LWZ1bmN0aW9uIHNldHEgcHJvZ24gaWYgY29uZGl0aW9uLWNhc2VdIDEgWyIjPHN1YnIgRjYxNmU2 ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfND4iICIjPHN1YnIg RjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfND4iIG1h cGMgeWFzLS1tb2Rlcy10by1hY3RpdmF0ZSB5YXMtbWlub3ItbW9kZSB5YXMtbWlub3ItbW9kZS1v biB5YXMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhv b2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duXSA0 IFsiIzxjb21waWxlZCAtMHg0NTNiZDExYWQwMDM5OGM+IiBtYXBjYXIgIiM8Y29tcGlsZWQgLTB4 MzY5MGNmMmIxNmQ0NTYyPiIgcHJvamVjdGlsZS1sb2NhdGUtZG9taW5hdGluZy1maWxlIHByb2pl Y3RpbGUtcm9vdC1ib3R0b20tdXAgcHJvamVjdGlsZS1yb290LW1hcmtlZCAiIzxjb21waWxlZCAw eDFkYTcyNDA3M2ZjMmRkZTE+IiBjbC1zb21lIHByb2plY3RpbGUtcHJvamVjdC1yb290IHByb2pl Y3QtcHJvamVjdGlsZSBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBwcm9qZWN0LWN1cnJlbnQg YnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJy ZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJl YWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzXSA0IFtpbnRlcm4tc29mdCBkb29tLXJ1bi1o b29rcyBpZiBkb29tLXJ1bi1sb2NhbC12YXItaG9va3MtaCBydW4taG9va3MgaGFjay1sb2NhbC12 YXJpYWJsZXMtYXBwbHkgcHJvZ24gaWYgbGV0IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBl YTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12 YXJpYWJsZXMgcnVuLW1vZGUtaG9va3NdIDEgWyIjPGNvbXBpbGVkIDB4MTM0MDM4MDBiOGZjOWQ0 PiIgY2wtc29tZSAiIzxjb21waWxlZCAtMHgzNjkwY2YyYjE2ZDQ1NjI+IiBwcm9qZWN0aWxlLWxv Y2F0ZS1kb21pbmF0aW5nLWZpbGUgcHJvamVjdGlsZS1yb290LWJvdHRvbS11cCBwcm9qZWN0aWxl LXJvb3QtbWFya2VkICIjPGNvbXBpbGVkIDB4MWRhNzI0MDczZmMyZGRlMT4iIGNsLXNvbWUgcHJv amVjdGlsZS1wcm9qZWN0LXJvb3QgcHJvamVjdC1wcm9qZWN0aWxlIHByb2plY3QtLWZpbmQtaW4t ZGlyZWN0b3J5IHByb2plY3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJy ZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9u LWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnNd IDMgWyIjPGNvbXBpbGVkIDB4OTFhZmVkYWNhMzViYjU2PiIgbWFwY2FyICIjPGNvbXBpbGVkIDB4 MTg1NzY2YjA3YzIzOTVmND4iIGFwcGx5IHNlcS1tYXAgc2VxLWZpbHRlciBsZXQgcHJvZ24gaWYg c2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0 IHByb2duIGlmXSAzIFtjYXIgZXEgaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVu dC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hl LWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVy IGF2bC10cmVlLWVudGVyXSAxIFtjb21wYW55LW1vZGUgY29tcGFueS1tb2RlLW9uIGdsb2JhbC1j b21wYW55LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlm ICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQx ZTY5NmQzNWI3NT4iIGFwcGx5XSAzIFtjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVu Y3Rpb24gY2wtbWFwY2FuIG1hcGNhciBzZXQgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1h bmQtb3B0aW9ucyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZl0gMSBbbWFj cm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDMgW2FuZCBvciBsZXQg aWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBm aW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12aXNpdGluZyBsZXQgIiM8 bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxldF0gMiBbb3JnLWVsZW1lbnQt LWNhY2hlLWFmdGVyLWNoYW5nZSBpbnNlcnQgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUt Y3VycmVudC1idWZmZXIgbGV0IGxldCBjb25kIG9yZy1lbGVtZW50LXBhcnNlLXNlY29uZGFyeS1z dHJpbmcgb3JnLW1hY3JvLS1maW5kLWRhdGUgb3JnLW1hY3JvLS1jb2xsZWN0LW1hY3JvcyBvcmct bWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgbGV0IHByb2duIG9yZy1tb2RlXSAxIFttYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rp b24gYXNzb2MtZGVmYXVsdCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNldHEgaWYg aWYgbGV0XSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDU2 IFtvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1u YW1lIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12aXNpdGlu ZyBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxldCArb3JnLS1v cHRpbWl6ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYV0gMSBbYWR2aWNlLS1yZW1vdmUt ZnVuY3Rpb24gIiM8Y29tcGlsZWQgLTB4MTEwM2QwYzIyNTU1MDUwYj4iIGFkdmljZS0tdHdlYWsg YWR2aWNlLS1yZW1vdmUtZnVuY3Rpb24gYWR2aWNlLS1hZGQtZnVuY3Rpb24gYWR2aWNlLWFkZCBv cmctZm9sZC0tYWR2aWNlLWVkaXQtY29tbWFuZHMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwg cHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duXSAxIFtvcmctZm9sZC1jb3JlLS1wcm9w ZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSBvcmctZm9sZC1jb3JlLWdldC1mb2xkaW5nLXNwZWMgb3Jn LWZvbGQtY29yZS0tZml4LWZvbGRlZC1yZWdpb24gaW5zZXJ0IGxldCBwcm9nbiB1bndpbmQtcHJv dGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQgY29uZCBvcmctZWxlbWVudC1wYXJzZS1z ZWNvbmRhcnktc3RyaW5nIG9yZy1tYWNyby0tZmluZC1kYXRlIG9yZy1tYWNyby0tY29sbGVjdC1t YWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIGxldF0gMSBbYXBwbHkgIiM8Y29t cGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4 OWM5OD4iIGFwcGx5IGFmdGVyLWZpbmQtZmlsZSBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBm aW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0 ODEzMmE+IiBhcHBseV0gMiBbbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAi IzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+ IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250 YWluZXIgc2V0cSBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duXSAxIFtvcmct Zm9sZC1jb3JlLS1maXgtZm9sZGVkLXJlZ2lvbiBpbnNlcnQgbGV0IHByb2duIHVud2luZC1wcm90 ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGxldCBjb25kIG9yZy1lbGVtZW50LXBhcnNlLXNl Y29uZGFyeS1zdHJpbmcgb3JnLW1hY3JvLS1maW5kLWRhdGUgb3JnLW1hY3JvLS1jb2xsZWN0LW1h Y3JvcyBvcmctbWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgbGV0IHByb2duIG9yZy1tb2RlXSAx IFtpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNvbmRpdGlvbi1jYXNlIGxldCBlZGl0b3Jjb25maWct LWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNldHEg aWYgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29yZy0t b3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2Vu ZGEtZmlsZS1idWZmZXJdIDEgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUt Zm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYg Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uXSAxIFtsZXQgZmlsZS1uYW1l LXNhbnMtdmVyc2lvbnMgaWYgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBs ZXQgc2V0LWF1dG8tbW9kZS0xIGxldCBzYXZlLWV4Y3Vyc2lvbiBjYXRjaCBoYWNrLWxvY2FsLXZh cmlhYmxlcy1wcm9wLWxpbmUgYXBwZW5kIGxldCBpZl0gNiBbb3Igc2V0cSBsZXQgbGV0IHdoaWxl IGxldCBjYXRjaCBhbmQgbGV0KiB3aXRoLW5vLXdhcm5pbmdzIG9yZy1wZXJzaXN0LS1maW5kLWlu ZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0Kl0gMyBbb3Jn LWVsZW1lbnQtY3JlYXRlIGxldCBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtcHJvcGVy dHktZHJhd2VyLXBhcnNlciBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50 LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0Kl0gMiBbZWRpdG9yY29u ZmlnLS1kaXNhYmxlZC1mb3ItZmlsZW5hbWUgbm90IGFuZCBpZiBjb25kaXRpb24tY2FzZSBsZXQg ZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1u b3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNh bGwgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hXSAxIFtz ZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lz dC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVy IGxldCB3aGlsZSBsZXRdIDEgWyIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2 NDYxX2Fub255bW91c19sYW1iZGFfMjM+IiBtYXBjYXIgb3JnLWZvbGQtY29yZS1uZXh0LWZvbGRp bmctc3RhdGUtY2hhbmdlIG9yZy1mb2xkLWNvcmUtLWZpeC1mb2xkZWQtcmVnaW9uIGluc2VydCBs ZXQgcHJvZ24gdW53aW5kLXByb3RlY3Qgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgbGV0IGNvbmQg b3JnLWVsZW1lbnQtcGFyc2Utc2Vjb25kYXJ5LXN0cmluZyBvcmctbWFjcm8tLWZpbmQtZGF0ZSBv cmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlc10g MSBbYWR2aWNlLS1hZGQtZnVuY3Rpb24gYWR2aWNlLWFkZCAiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2 Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzM3PiIgZXZhbC1hZnRlci1sb2Fk IGN0cmxmLWxvY2FsLW1vZGUgY3RybGYtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mg cnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2Rl LTAgcHJvZ24gaWZdIDEgW3NldHEgd2hpbGUgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAg bm90IGFuZCBsZXQgc2V0LWF1dG8tbW9kZS0xIHNldHEgYW5kIHNhdmUtZXhjdXJzaW9uIGxldCAi IzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgxYjkwZGYy YTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZV0gMSBbc2V0cSBwcm9nbiBwcm9nbiBp ZiBsZXQgIiM8bGFtYmRhIDB4MzNiNzE2OWUxY2I+IiBmdW5jYWxsIGNvbmQgbGV0KiBvcmctcGVy c2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rp b24gbGV0IHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXJdIDEgW3NldCBpZiBpZiBwcm9n biBjb25kaXRpb24tY2FzZSBsZXQgd2hpbGUgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUt Y3VycmVudC1idWZmZXIgbGV0IGxldCBjb25kIG9yZy1lbGVtZW50LXBhcnNlLXNlY29uZGFyeS1z dHJpbmcgb3JnLW1hY3JvLS1maW5kLWRhdGVdIDEgW2NvbmNhdCBzZXRxIGlmIGlmIGxldCBpZiBs ZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQt YnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlmXSAxIFtpZiBleHBhbmQtZmlsZS1uYW1lIGxldCog cHJvZ24gaWYgZGlyLWxvY2Fscy0tYWxsLWZpbGVzIGZ1bmNhbGwgaWYgc2V0cSB3aGlsZSBsZXQg bG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9n bl0gMSBbc2VhcmNoLWZvcndhcmQgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgc2V0cSBhbmQgc2F2 ZS1leGN1cnNpb24gbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxj b21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5 IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0XSAyIFtjb25jYXQgc2V0cSBsZXQgY29u ZCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNp dGluZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkg c2V0cSBsZXRdIDIgW3NhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LXByb3BlcnR5LWRyYXdlci1w YXJzZXIgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1l bGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxIFthbmQgbGV0KiBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgcHJvamVjdGlsZS1sb2NhdGUtZG9taW5hdGlu Zy1maWxlIHByb2plY3RpbGUtcm9vdC1ib3R0b20tdXAgcHJvamVjdGlsZS1yb290LW1hcmtlZCAi Izxjb21waWxlZCAtMHgxYjAyZTk3MjEzODgzZWVlPiIgY2wtc29tZSBwcm9qZWN0aWxlLXByb2pl Y3Qtcm9vdCBwcm9qZWN0LXByb2plY3RpbGUgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJv amVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTFdIDEgW2lmIHdoaWxlIGxl dCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgMHgx YjgwZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIg c28tbG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBzZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1jYXNl IGxldF0gMSBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRl ZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVy c2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZl0gMSBbIiM8Y29tcGlsZWQgMHgxMzQwMzgw MGI4ZmM5ZDQ+IiBjbC1zb21lICIjPGNvbXBpbGVkIC0weDE5NmY5ZGM4MGI0ZTZlNDY+IiBwcm9q ZWN0aWxlLWxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgcHJvamVjdGlsZS1yb290LWJvdHRvbS11cCAi Izxjb21waWxlZCAtMHhmZWQzZGNjNmUzZjhlNjU+IiBjbC1zb21lIHByb2plY3RpbGUtcHJvamVj dC1yb290IHByb2plY3QtcHJvamVjdGlsZSBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBwcm9q ZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2pl Y3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xv YmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rc10gMSBb bGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lICIjPGNvbXBpbGVkIC0weGZlZDNkY2M2ZTNmOGU2 NT4iIGNsLXNvbWUgcHJvamVjdGlsZS1wcm9qZWN0LXJvb3QgcHJvamVjdC1wcm9qZWN0aWxlIHBy b2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9q ZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1v bi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5h YmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmXSAxIFtjb25kIGxldCogYW5kIGxldCogb3JnLWVs ZW1lbnQtZW5kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRp dGlvbi1jYXNlIGlmXSAyIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3Jtc10gMiBbYW5kIGxpbmUtZW5kLXBvc2l0aW9uIHNlYXJjaC1mb3J3YXJkIGFuZCBsZXQgc2V0 LWF1dG8tbW9kZS0xIGxldCBzYXZlLWV4Y3Vyc2lvbiBjYXRjaCBoYWNrLWxvY2FsLXZhcmlhYmxl cy1wcm9wLWxpbmUgYXBwZW5kIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3 Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzXSAyIFtpZiBkb29tLWhpZ2hsaWdodC1u b24tZGVmYXVsdC1pbmRlbnRhdGlvbi1oIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9k ZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cV0gMyBbIiM8Y29tcGlsZWQgLTB4ZmVkM2RjYzZl M2Y4ZTY1PiIgY2wtc29tZSBwcm9qZWN0aWxlLXByb2plY3Qtcm9vdCBwcm9qZWN0LXByb2plY3Rp bGUgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWIt LXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10 dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9k ZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRh IC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5XSAxIFtyZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1v cHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3Jv dXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgY29uY2F0IG9y Zy1tYWtlLW9wdGlvbnMtcmVnZXhwIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtZXhjdXJzaW9uIGxldCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMV0gMiBbc2V0cSBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGJyZWFkY3J1bWItLXByb2pl Y3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9u LWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFj MzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duXSAyIFtsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxp emUtY29udGFpbmVyIHNldHEgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBp ZiBwcm9nbiBpZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCB3aGlsZSBsZXRdIDEg W29yIGxldCBpZiBsZXQqIHByb2duIGlmIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0t Y3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlv bl0gMSBbZWRpdG9yY29uZmlnLWNvcmUtLWdldC1oYW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1n ZXQtaGFuZGxlcyBlZGl0b3Jjb25maWctY29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNv cmUtLWdldC1oYW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jjb25m aWctY29yZS1nZXQtcHJvcGVydGllcy1oYXNoIGZ1bmNhbGwgc2V0cSBjb25kaXRpb24tY2FzZSBs ZXQgZWRpdG9yY29uZmlnLWNhbGwtZ2V0LXByb3BlcnRpZXMtZnVuY3Rpb24gc2V0cSBwcm9nbiBp ZiBjb25kaXRpb24tY2FzZSBsZXRdIDQgW2lmIGxldCBvcmctZWxlbWVudC0tY2FjaGUtdmVyaWZ5 LWVsZW1lbnQgYW5kIGlmIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUt ZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBsZXQgd2hpbGUgbGV0IHNhdmUt cmVzdHJpY3Rpb25dIDEgW3NldHEgbGV0IGxldCB3aGlsZSBsZXQgY2F0Y2ggYW5kIGxldCogd2l0 aC1uby13YXJuaW5ncyBvcmctcGVyc2lzdC0tZmluZC1pbmRleCBvciBvcmctcGVyc2lzdC0tZ2V0 LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXJdIDEgW3NldC1i dWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZp c2l0aW5nIGFuZCBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBs eSBzZXRxIGxldCBsZXRdIDIgW2xldCogYW5kIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMtYmVn aW4gbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29u ZGl0aW9uLWNhc2VdIDMgW2lmIGxldCogcHJvZ24gaWYgbGV0IGlmIGxldCogbGV0IHByb2duIGlm IGxldCB3aGlsZSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vy c2lvbl0gMSBbPD0gYW5kIHdoaWxlIGxldCBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10 byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uXSA1IFtpZiBzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGls ZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1i dWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlXSAzIFttYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29u di1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9y bWFsaXplLWNvbnRhaW5lciBzZXRxIHByb2duIGlmIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVn aXN0ZXIgcHJvZ24gaWYgcHJvZ25dIDEgW2xldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4g bGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVz cy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJl ZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBv cmctZWxlbWVudC0tY2FjaGUtcHV0XSAyIFtzYXZlLWV4Y3Vyc2lvbiBsZXQgaGFjay1sb2NhbC12 YXJpYWJsZXMtLWZpbmQtdmFyaWFibGVzIGFwcGVuZCBsZXQgaWYgbGV0ICIjPGxhbWJkYSAweDEx MmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNr LWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlm XSAxIFstdW5mb2xkIHNwLS11cGRhdGUtbG9jYWwtcGFpcnMgc3AtLWluaXQgc21hcnRwYXJlbnMt bW9kZSB0dXJuLW9uLXNtYXJ0cGFyZW5zLW1vZGUgc21hcnRwYXJlbnMtZ2xvYmFsLW1vZGUtZW5h YmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwg cHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmXSAxIFtzYXZlLWN1cnJlbnQtYnVm ZmVyIGFzZXQgbGV0KiBwcm9nbiBhZ2Utd2FpdC1mb3ItY29tcGxldGlvbiBwcm9nbiB1bndpbmQt cHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZl0gNCBb YW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1m aWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5 cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdl LWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHNdIDIgW2lmIHByb2duIGlmIG9yZy1lbGVtZW50LS1j YWNoZS1wZXJzaXN0LWJlZm9yZS1yZWFkIHJ1bi1ob29rLXdpdGgtYXJncy11bnRpbC1zdWNjZXNz ICIjPGxhbWJkYSAweDFkMTFhZWM5YmFiMTMwMGE+IiAiIzxjb21waWxlZCAtMHg5ODJmMjk4NzQ4 MTVlOWE+IiBtYXBjIHNlcS1kbyBzZXEtZmluZCBpZiBwcm9nbiBpZiBsZXQqIHByb2duIHByb2du XSAxIFtyZXBsYWNlLWJ1ZmZlci1pbi13aW5kb3dzIGtpbGwtYnVmZmVyIGFuZCB1bndpbmQtcHJv dGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBwcm9nbiBpZiBhZ2Utc2NyeXB0LXAgYXNldCBs ZXQqIHByb2duIGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWZdIDQg W2FwcGx5IGluc2VydC1maWxlLWNvbnRlbnRzIGxldCBjb25kaXRpb24tY2FzZSBpZiBzYXZlLWN1 cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmICIjPGxh bWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldF0gMiBbb3IgaWYgbGV0IGRv b20tbWFrZS1oYXNoZWQtYXV0by1zYXZlLWZpbGUtbmFtZS1hIGFwcGx5IG1ha2UtYXV0by1zYXZl LWZpbGUtbmFtZSBhdXRvLXNhdmUtbW9kZSBwcm9nbiBpZiBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1 ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVw LWF1dG9zYXZlLWFdIDIgW3NhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2V0cSBpZiBp ZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4 MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8t bW9kZSBjb25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1vZGUgaWZdIDEgW29yZy1wZXJzaXN0LS1y ZWFkLWVsaXNwLWZpbGUgb3Igc2V0cSBpZiBwcm9nbiBpZiBsZXQqIHByb2duIHByb2duIGxldCog b3JnLXBlcnNpc3QtcmVhZCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LWxvYWQgcHJvZ24gaWZdIDEg W21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFu ZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0IHdo aWxlIGxldCBsZXQgY29uZCBvcmctLXRhZy1hZGQtdG8tYWxpc3Qgc2V0cV0gMSBbZG9vbS1mYWxs YmFjay1idWZmZXIgZXEgbm90IGRvb20tcHJvdGVjdC1mYWxsYmFjay1idWZmZXItaCBraWxsLWJ1 ZmZlciBpZiBhZ2UtcmVzZXQgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNv bmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZp bGUtY29udGVudHMgYXBwbHldIDIgW29yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBsZXQg cHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24g aWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgaWZdIDEgW2FnZS1yZXNl dCB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBs eSBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFnZS1maWxlLWhhbmRsZXJdIDEgW29y IG5vdCB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmlu ZC1maWxlIGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHIgbGV0 KiBjb25kaXRpb24tY2FzZSBpZiBsZXRdIDIgW2FkZC1ob29rIHdoaXRlc3BhY2UtY29sb3Itb24g d2hpdGVzcGFjZS10dXJuLW9uIHdoaXRlc3BhY2UtbW9kZSBpZiBkb29tLWhpZ2hsaWdodC1ub24t ZGVmYXVsdC1pbmRlbnRhdGlvbi1oIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBm dW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZl0gMiBbbGV0IGlmICIj PGxhbWJkYSAweDI0YjY3NjgwNTZmODZiYT4iIGZ1bmNhbGwgbGV0IGRvb20tbWFrZS1oYXNoZWQt YXV0by1zYXZlLWZpbGUtbmFtZS1hIGFwcGx5IG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSBhdXRv LXNhdmUtbW9kZSBwcm9nbiBpZiBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBw bHkgcHJvZ24gdW53aW5kLXByb3RlY3RdIDQgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQt Y2xvc3VyZSBmdW5jdGlvbiBhc3NvYy1kZWZhdWx0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2V0cSBpZiBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iXSAxIFtp ZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBsZXQqIGhhY2stZGlyLWxvY2FsLXZhcmlh YmxlcyBjb25kaXRpb24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4i IHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVz IGppbngtbW9kZSBqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBydW4tbW9kZS1ob29rc10gMSBbYW5kIGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQgb3JnLXJvYW0tLWZpbGUtbmFtZS1leHRlbnNpb24gbGV0KiBwcm9nbiBpZiBvcmctcm9h bS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5 IGRlbGV0ZS1maWxlXSA0IFtpbnNlcnQgc2F2ZS1yZXN0cmljdGlvbiBhZ2UtZmlsZS1kZWNvZGUt YW5kLWluc2VydCBpZiBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldCBwcm9nbiB1 bndpbmQtcHJvdGVjdF0gOSBbaWYgbGV0IHdoaWxlIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3Jn LWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWYgaWYgbGV0XSAxIFtmaWxlLXJlbW90ZS1wIGxldCBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGxldCogcHJvZ24gaWYg b3JnLXJvYW0tZmlsZS1wIGFuZCBpZiBvcmctcm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUt YSBhcHBseSBkZWxldGUtZmlsZSBpZl0gMSBbc2V0LWF1dG8tY29kaW5nIGRlY29kZS1jb2Rpbmct aW5zZXJ0ZWQtcmVnaW9uIHNhdmUtcmVzdHJpY3Rpb24gYWdlLWZpbGUtZGVjb2RlLWFuZC1pbnNl cnQgaWYgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBh Z2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ25dIDEyIFtlcXVh bCBjb25kIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1m aW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGNkciBs ZXQqIGNvbmRpdGlvbi1jYXNlIGlmIGxldF0gMSBbcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBjb25kaXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2Vs ZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4 ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1h Z2VuZGEtYnVmZmVycy1hIGFwcGx5XSAyIFtzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlv biBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBw cm9nbiBpZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldF0gMSBbYXBwbHkgaWYgZWRp dG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUt Y29udGVudHMgbGV0IGluc2VydC1maWxlLWNvbnRlbnRzLWxpdGVyYWxseSBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0 IHByb2duIGlmXSAyIFt1bmRvLWF1dG8tLWJvdW5kYXJ5LXRpbWVyIGFwcGx5IHRpbWVyLWV2ZW50 LWhhbmRsZXIgYWNjZXB0LXByb2Nlc3Mtb3V0cHV0IHdoaWxlIGFnZS13YWl0LWZvci1jb21wbGV0 aW9uIHByb2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24t Y2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRl bnRzIGFwcGx5XSAyIFtmaWxlLW5hbWUtZGlyZWN0b3J5IHNldHEgZXF1YWwgY29uZCB3aGlsZSBs ZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBw cm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBsZXQqIGhhY2stZGlyLWxvY2Fs LXZhcmlhYmxlcyBjb25kaXRpb24tY2FzZV0gMSBbbGV0IGlmIHByb2duIHVud2luZC1wcm90ZWN0 IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGFnZS1yZWFkLW91dHB1dCBpZiBwcm9nbiB1bndpbmQt cHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0Kl0gNiBbc2V0cSBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQgcHJvZ24gaWYg aGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNrLWRpci1sb2NhbC12YXJpYWJs ZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzLW5vbi1maWxlLWJ1ZmZlciBwcm9qZWN0LS12YWx1 ZS1pbi1kaXIgcHJvamVjdC10cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVj dC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0 LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2Jh bC1tb2RlXSAyIFtpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxl LW5hbWUgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlmIGlmICIjPGxhbWJkYSAt MHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldF0gMSBbZGlzcGxheS13YXJuaW5nIGVk aXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxl LWNvbnRlbnRzIGxldCBpbnNlcnQtZmlsZS1jb250ZW50cy1saXRlcmFsbHkgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxl dCBwcm9nbiBpZiBhZ2Utc2NyeXB0LXBdIDQgW2FnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRp b24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNv bnRlbnRzIGFwcGx5IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWdlLWZpbGUtaGFu ZGxlciAiIzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHldIDEgW2VudnJjLW1vZGUg ZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1t b2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAw eGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiJd IDIgW2JyZWFkY3J1bWItLWZvcm1hdC1wcm9qZWN0LW5vZGUgYnJlYWRjcnVtYi0tcHJvamVjdC1j cnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9j YWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1 ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVw LWF1dG9zYXZlLWEgYXBwbHldIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50 ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29u dGFpbmVyIGxpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3Igb3JnLXBlcnNpc3QtLWdldC1j b2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyXSAyIFtjYWxsZWQt aW50ZXJhY3RpdmVseS1wIGdldGVudiBsaXN0IHNlcS1maW5kIGxldCBsZXQqIGFnZS0tc3RhcnQg bGV0IGFnZS1zdGFydC1kZWNyeXB0IHByb2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZp bGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMSBbZnVuY2FsbCBs ZXQgZG9vbS1tYWtlLWhhc2hlZC1hdXRvLXNhdmUtZmlsZS1uYW1lLWEgYXBwbHkgbWFrZS1hdXRv LXNhdmUtZmlsZS1uYW1lIGF1dG8tc2F2ZS1tb2RlIHByb2duIGlmIGlmICIjPGxhbWJkYSAtMHgx YzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNo dXQtdXAtYXV0b3NhdmUtYSBhcHBseV0gMiBbc2V0cSBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0IGZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIGlmIGxldCBpZiAiIzxsYW1iZGEgMHgyNGI2 NzY4MDU2Zjg2YmE+IiBmdW5jYWxsIGxldCBkb29tLW1ha2UtaGFzaGVkLWF1dG8tc2F2ZS1maWxl LW5hbWUtYSBhcHBseSBtYWtlLWF1dG8tc2F2ZS1maWxlLW5hbWUgYXV0by1zYXZlLW1vZGVdIDEg W2xldCBsZXQgd2hpbGUgbGV0IGxldCogbGV0IHdoaWxlIGxldCBsZXQgaWYgbGV0IHByb2duIGlm IG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBsZXQgcHJvZ25dIDEgW2FuZCBsZXQqIHByb2du IHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQqIGlmIGlmICIjPGxh bWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmln LS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5XSAyIFthbmQgb3IgbGV0IGlmIGxldCB3 aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBlcXVhbCBhbmQgaWYgb3JnLXJvYW0tZGVzY2VuZGFudC1v Zi1wIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wXSAxMSBbY2NvbnYtbWFrZS1pbnRlcnBy ZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciAiIzxsYW1iZGEgMHgxZTEyYjhmYmZmYThkYT4i IGZ1bmNhbGwgY29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRh aW5lciBzZXRxIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWZdIDEgW2Fu ZCBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxl dCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQt ZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4i XSAxIFtzdHJpbmc9IGFuZCBjb25kIGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUg aWYgc2V0cSBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBs ZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseV0gMSBbY2NvbnYt LWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2Ut aW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUt Y29udGFpbmVyIGxpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3Igb3JnLXBlcnNpc3QtLWdl dC1jb2xsZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqXSAxIFtpZiBsZXQgaWYgIiM8bGFt YmRhIDB4MjRiNjc2ODA1NmY4NmJhPiIgZnVuY2FsbCBsZXQgZG9vbS1tYWtlLWhhc2hlZC1hdXRv LXNhdmUtZmlsZS1uYW1lLWEgYXBwbHkgbWFrZS1hdXRvLXNhdmUtZmlsZS1uYW1lIG9yIGZpbGUt bmV3ZXItdGhhbi1maWxlLXAgYW5kIGlmIGNvbmQgbGV0KiBpZl0gMSBbc3AtdXBkYXRlLWxvY2Fs LXBhaXJzIC1lYWNoIHNwLS11cGRhdGUtbG9jYWwtcGFpcnMgc3AtLWluaXQgc21hcnRwYXJlbnMt bW9kZSB0dXJuLW9uLXNtYXJ0cGFyZW5zLW1vZGUgc21hcnRwYXJlbnMtZ2xvYmFsLW1vZGUtZW5h YmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgx YzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSA2IFthc3Nx LWRlbGV0ZS1hbGwgdW5yZWNvcmQtd2luZG93LWJ1ZmZlciByZXBsYWNlLWJ1ZmZlci1pbi13aW5k b3dzIGtpbGwtYnVmZmVyIGFuZCB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxl dCBhZ2UtcmVhZC1vdXRwdXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmls ZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duXSAzIFtjb25jYXQgc2V0cSBsZXQgY29uZCBmaWxl LXRydWVuYW1lIGVxdWFsIGFuZCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9n biBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUt ZmlsZS1hXSAxMCBbYW5kIG5vdCBhbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1w cm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBzZXRxIGxvY2F0ZS1kb21pbmF0aW5nLWZp bGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZV0gMiBbbGlzdCBhcHBlbmQgYWdlLS1zdGFydCBs ZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmls ZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUt aW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWZdIDEgW3NldHEgZXF1YWwgY29uZCB3aGlsZSBs ZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBw cm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBsZXQqIGhhY2stZGlyLWxvY2Fs LXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMtbm9uLWZpbGUtYnVmZmVyIHByb2pl Y3QtLXZhbHVlLWluLWRpcl0gMyBbY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6 ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1h bmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0 aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGlzdCBvcmctcGVyc2lz dC0tZmluZC1pbmRleCBvciBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duXSAx IFtmb250LWxvY2stcmVtb3ZlLWtleXdvcmRzIG9yZy1tb2Rlcm4tbW9kZSBvcmctbW9kZXJuLS1v biBnbG9iYWwtb3JnLW1vZGVybi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4t bW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBw cm9nbiBpZiBsZXQgaWZdIDEgW3JlbW92ZS1ob29rIGZvbnQtbG9jay10dXJuLW9uLXRoaW5nLWxv Y2sgZm9udC1sb2NrLW1vZGUtaW50ZXJuYWwgZm9udC1sb2NrLWRlZmF1bHQtZnVuY3Rpb24gZm9u dC1sb2NrLW1vZGUgcHJvZ24gaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4 YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1h dXRvc2F2ZS1hIGFwcGx5XSAzIFtlbnZyYy0tYXBwbHkgIiM8c3ViciBlbnZyYy0tdXBkYXRlPiIg YXBwbHkgZW52cmMtLXVwZGF0ZSBlbnZyYy1tb2RlIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1 ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVw LWF1dG9zYXZlLWFdIDIgW3N0cmluZy1tYXRjaC1wIG9yIHNldHEgbGV0IHdoaWxlIGxldCBsZXQg Y29uZCBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0 b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHldIDEgW3NhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3Jn LWNvbGxlY3Qta2V5d29yZHMgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9u cyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbl0gMyBbc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgb3JnLS1jb2xsZWN0LWtleXdvcmRzLTEg bGV0KiBvcmctY29sbGVjdC1rZXl3b3JkcyBvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1t YWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9n biBpZiBpZl0gMiBbZnVuY3Rpb24gc2VxLWZpbmQgbGV0IGxldCogYWdlLS1zdGFydCBsZXQgYWdl LXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRx IGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0 LWZpbGUtY29udGVudHNdIDEgW2dsb2JhbC1lbGRvYy1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIg YXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEg YXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAw eDgyY2Y0YmI1ZDk4OWM5OD4iIGFwcGx5XSAxIFsiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMy ZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzI3PiIgaW50ZXJuYWwtLXdpdGhvdXQtcmVz dHJpY3Rpb24gb3JnLW1vZGVybi1tb2RlIG9yZy1tb2Rlcm4tLW9uIGdsb2JhbC1vcmctbW9kZXJu LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2Rl IGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldF0gMiBbbGV0 IGZpbGUtcmVtb3RlLXAgYW5kIGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgY29uZGl0 aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBs eSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cSBpZiBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZh ZDk1NTc+Il0gNCBbbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZiBvcmct cm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlm IG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5XSA0IFtnbG9iYWwtdW5k by10cmVlLW1vZGUtY21oaCB0ZXh0LW1vZGUgb3V0bGluZS1tb2RlIGxldCBwcm9nbiBvcmctbW9k ZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDEgW3Byb2duIGlmIGlmICIjPGxhbWJkYSAtMHgxYzM2 NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQt dXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5 ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIgYXBwbHkgYWZ0ZXItZmluZC1maWxlIGlm XSAyIFtjZHIgYWdlLWNvbnRleHQtcmVzdWx0LWZvciBsZXQgYWdlLS1jaGVjay1lcnJvci1mb3It ZGVjcnlwdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0 aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1j b250ZW50cyBhcHBseSBpZiBsZXRdIDEgW3NwLS1tZXJnZS1wYWlyLWNvbmZpZ3VyYXRpb25zIHNw LXVwZGF0ZS1sb2NhbC1wYWlycyAtZWFjaCBzcC0tdXBkYXRlLWxvY2FsLXBhaXJzIHNwLS1pbml0 IHNtYXJ0cGFyZW5zLW1vZGUgdHVybi1vbi1zbWFydHBhcmVucy1tb2RlIHNtYXJ0cGFyZW5zLWds b2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAi IzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3Rd IDMgW3NldHEgbGV0IHdoaWxlIGxldCBsZXQqIGxldCogbGV0IHdoaWxlIGxldCBsZXQgaWYgbGV0 IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBsZXRdIDIgW2lmIHNhdmUtY3Vy cmVudC1idWZmZXIgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFu ZCBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxl dF0gOSBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBl cnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFmPiIgbWFwY2Fy ICIjPGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCogY29uZCBsZXQq IG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIHNldHEgcHJvZ24gaWZdIDIgWyIjPGNv bXBpbGVkIDB4MWE1YzgyODdiOTNkMDk0ZD4iIGFkZC1ob29rIGdvZ2dsZXMtbW9kZSBydW4taG9v a3MgYXBwbHkgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQt YXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmXSAxIFtpZiB3YXJuLW1heWJlLW91dC1vZi1tZW1v cnkgcHJvZ24gaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBw bHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBh cHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cV0gMSBbYXBwbHkgaWYgZG9vbS0taW5oaWJpdC1z YXZlcGxhY2UtaW4tbG9uZy1maWxlcy1hIGFwcGx5IHNhdmUtcGxhY2UtdG8tYWxpc3Qga2lsbC1i dWZmZXIgaWYgYWdlLXJlc2V0IHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBj b25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1m aWxlLWNvbnRlbnRzXSAyIFtmb250LWxvY2stY29tcGlsZS1rZXl3b3JkcyBmb250LWxvY2stYWRk LWtleXdvcmRzIHdoaXRlc3BhY2UtY29sb3Itb24gd2hpdGVzcGFjZS10dXJuLW9uIHdoaXRlc3Bh Y2UtbW9kZSBpZiBkb29tLWhpZ2hsaWdodC1ub24tZGVmYXVsdC1pbmRlbnRhdGlvbi1oIHJ1bi1o b29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRv LW1vZGUtMCBwcm9nbl0gMiBbZXF1YWwgaWYgaWYgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10 cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBpZiBzZXRxIHNhdmUtY3VycmVudC1idWZmZXIg bGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmXSAzIFtpZiBzdWJzdHJpbmcgaWYgbGV0IGZpbGUt bmFtZS1zYW5zLXZlcnNpb25zIGlmIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBs ZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5 MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9k ZV0gMSBbc2VxLWRyb3Agb3JnLWVsZW1lbnQtY3JlYXRlIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmct ZWxlbWVudC1rZXl3b3JkLXBhcnNlciBvcmctbWFjcm8tLWZpbmQta2V5d29yZC12YWx1ZSBvcmct bWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBsZXQg cHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDEgW2Zp bGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYgb3IgbGV0IGlmIGxldCB3 aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQqIGlmIGlmICIj PGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+Il0gMSBbc2F2ZS1leGN1cnNpb24gcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZiBs ZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFnZS1maWxlLWhhbmRsZXIgIiM8c3ViciBpbnNl cnQtZmlsZS1jb250ZW50cz4iIGFwcGx5IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1m aWxlLWNvbnRlbnRzXSAzIFtzcC0tdXBkYXRlLXNwLXBhaXItbGlzdCBzcC11cGRhdGUtbG9jYWwt cGFpcnMgLWVhY2ggc3AtLXVwZGF0ZS1sb2NhbC1wYWlycyBzcC0taW5pdCBzbWFydHBhcmVucy1t b2RlIHR1cm4tb24tc21hcnRwYXJlbnMtbW9kZSBzbWFydHBhcmVucy1nbG9iYWwtbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFj MzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0XSAzIFtwcm9nbiBpZiBs ZXQqIHByb2duIGlmIGRpci1sb2NhbHMtLWFsbC1maWxlcyBmdW5jYWxsIGlmIHNldHEgd2hpbGUg bGV0IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQg cHJvZ25dIDYgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1p bnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCpdIDMgW2xldCBsZXQgIiM8bGFtYmRhIDB4 MzRhNmIzZGY5Y2I+IiBmdW5jYWxsIGNvbmQgbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFz c29jaWF0ZWQgc2V0cSBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlYWQgcHJvZ24gbGV0 KiBvcmctcGVyc2lzdC1sb2FkIHByb2duXSAxIFtlcXVhbCBpZiBpZiBsZXQgaWYgbGV0IHdoaWxl IGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCogaWYgaWYgIiM8bGFt YmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHFdIDEgW2FuZCBpZiBlZGl0b3Jjb25m aWctLWFkdmljZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1jb250ZW50 cyBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQgb3Jn LXBlcnNpc3QtLXJlYWQtZWxpc3AtZmlsZSBvciBzZXRxIGlmIHByb2duXSAxIFtmdW5jdGlvbiBt YXBjYXIgYXBwZW5kIG9yIGxldCBpZiBsZXQgcHJvZ24gaWYgb3JnLXNldC1yZWdleHBzLWFuZC1v cHRpb25zIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmXSAxIFtmdW5jdGlvbiBt YXBjYXIgIiM8bGFtYmRhIDB4MWUxMDlhYWMwY2QzZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25k IGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGlzdCBvcmctcGVyc2lzdC0t ZmluZC1pbmRleCBvciBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCpd IDEgW2xldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxl dCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmls ZS1uYW1lIGxldF0gMSBbaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGlmIGxldCAi IzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJs ZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0cSBhbmQgbGV0ICIjPGxhbWJkYSAweDFi ODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBz by1sb25nLS1zZXQtYXV0by1tb2RlXSAzIFthbmQgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5z ZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29udGVudHMgbGV0IGlmIHByb2du IHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGFnZS1yZWFkLW91dHB1dCBp ZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlXSAxIFtpbmhpYml0LWxvY2Fs LXZhcmlhYmxlcy1wIHNvLWxvbmctLWNoZWNrLWhlYWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0 by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2Rl IGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseV0gNyBbbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2Nv bnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5v cm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFmPiIgbWFwY2FyICIjPGxhbWJk YSAweDFlMTJiOGZiZmZhOGRhPiJdIDIgW2xldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWdl LWZpbGUtaGFuZGxlciAiIzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHkgaWYgZWRp dG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUt Y29udGVudHMgbGV0IGluc2VydC1maWxlLWNvbnRlbnRzLWxpdGVyYWxseSBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQqXSAxIFtsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFz LWRpcmVjdG9yeSBsZXQgaWYgb3IgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBh YmJyZXZpYXRlLWZpbGUtbmFtZSBpZl0gMSBbYXV0by1zYXZlLW1vZGUgcHJvZ24gaWYgaWYgIiM8 bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxl dCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2 ZDM1Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseSBhZnRl ci1maW5kLWZpbGVdIDIgW2lmIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlv bnMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0w IHByb2duIGlmIGxldF0gMiBbY29uZCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1l IGlmIHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYg bGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXRd IDEgW2xldCBpZiBsZXQgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxlLXJlbGF0 aXZlLW5hbWUgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3Qt Y3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFs LW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3Jt YWwtbW9kZV0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSA1 OSBbbm90IHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1m aW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCog aGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcy1ub24tZmls ZS1idWZmZXIgcHJvamVjdC0tdmFsdWUtaW4tZGlyIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZp bmQtaW4tZGlyZWN0b3J5XSAxIFtyZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgY29uY2F0IG9y Zy1tYWtlLW9wdGlvbnMtcmVnZXhwIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtZXhjdXJzaW9uIGxldCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBsZXQqIG9yZy1jb2xs ZWN0LWtleXdvcmRzIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnNdIDIg W2lmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGxl dCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12aXNpdGluZyBsZXQg IiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxldCArb3JnLS1vcHRpbWl6 ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBhcHBseSBvcmctZ2V0LWFnZW5kYS1maWxl LWJ1ZmZlcl0gMyBbbGV0IGNvbmQgZmlsZS10cnVlbmFtZSBlcXVhbCBhbmQgaWYgb3JnLXJvYW0t ZGVzY2VuZGFudC1vZi1wIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wIGFuZCBpZiBvcmct cm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseSBkZWxldGUtZmlsZV0gMSBbaWYg c3Vic3RyaW5nIGlmIGxldCBmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpZiBsZXQgaW5oaWJpdC1s b2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgc2V0cSBhbmQgc2F2 ZS1leGN1cnNpb24gbGV0XSAyIFsiIzxjb21waWxlZCAweGEwODFlMDA5OTMyNmVhMD4iIHVuZG8t dHJlZS1vdmVycmlkZGVuLXVuZG8tYmluZGluZ3MtcCB0dXJuLW9uLXVuZG8tdHJlZS1tb2RlIGds b2JhbC11bmRvLXRyZWUtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUt aG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24g aWYgbGV0IGlmXSAxIFthcHBseSBkZWxldGUtZmlsZSBpZiBhZ2UtZGVsZXRlLW91dHB1dC1maWxl IGlmIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFw cGx5IGlmIGxldF0gMiBbbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5h bWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVu YW1lXSA0IFstc29ydCBzcC0tdXBkYXRlLXNwLXBhaXItbGlzdCBzcC11cGRhdGUtbG9jYWwtcGFp cnMgLWVhY2ggc3AtLXVwZGF0ZS1sb2NhbC1wYWlycyBzcC0taW5pdCBzbWFydHBhcmVucy1tb2Rl IHR1cm4tb24tc21hcnRwYXJlbnMtbW9kZSBzbWFydHBhcmVucy1nbG9iYWwtbW9kZS1lbmFibGUt aW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2 NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duXSAyIFtzZXRxIHdoaWxlIGFuZCBsZXQqIG9yIGxldCBm aW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVh NDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0XSAyIFthbmQgaWYgZWRpdG9yY29uZmlnLS1hZHZp Y2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29udGVudHMgbGV0IGNv bmRpdGlvbi1jYXNlIGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVj dC0xIGlmIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iXSAxIFtjb25k IGZpbGUtdHJ1ZW5hbWUgZXF1YWwgYW5kIGlmIG9yZy1yb2FtLWRlc2NlbmRhbnQtb2YtcCBsZXQq IHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMtLWRl bGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWZdIDQgW3NldHEgd2hpbGUgbGV0IGluaGli aXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZm PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1 dG8tbW9kZSBhcHBseSBzZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1jYXNlIGxldCBub3JtYWwtbW9k ZSBpZl0gMSBbd2l0aC1uby13YXJuaW5ncyBvcmctcGVyc2lzdC0tZmluZC1pbmRleCBsZXQqIHBy b2duIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVhZCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LWxv YWQgcHJvZ24gaWYgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGxdIDEgW2lmIHN1YnN0cmluZyBp ZiBsZXQgZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgYXV0by1taW5vci1tb2RlLS1wbGFpbi1maWxl bmFtZSBhdXRvLW1pbm9yLW1vZGUtLXJ1bi1hdXRvIGF1dG8tbWlub3ItbW9kZS1zZXQgYXBwbHkg IiM8Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBh cHBseSBzZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1jYXNlIGxldCBub3JtYWwtbW9kZV0gMSBbYW5k IGlmIHdhcm4tbWF5YmUtb3V0LW9mLW1lbW9yeSBwcm9nbiBpZiBsZXQqIGlmIGlmICIjPGxhbWJk YSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1h ZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdF0gMSBbaWYg b3IgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBlcXVhbCBhbmQgaWYgb3JnLXJv YW0tZGVzY2VuZGFudC1vZi1wIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wXSAyIFtsZXQq IGdsb2JhbC1obC1saW5lLW1vZGUtY21oaCB0ZXh0LW1vZGUgb3V0bGluZS1tb2RlIGxldCBwcm9n biBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBs ZXQgaWZdIDEgW3NldHEgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2gg bGV0IHdoaWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWYgaWZdIDIgW3Jl Z2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1v cHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3Jv dXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVn ZXhwLW9wdCBjb25jYXQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAgbGV0IHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb25dIDEgW2xldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0 LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIg bGV0IHdoaWxlIGxldF0gMSBbYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9taW5h dGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGly LWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGNvbmRp dGlvbi1jYXNlIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0t aGFjay1sb2NhbC12YXJpYWJsZXNdIDMgW3Byb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2pl Y3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVj dC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9i YWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1t b2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHBy b2duIGlmXSAxIFtvciBmaWxlLW5ld2VyLXRoYW4tZmlsZS1wIGFuZCBpZiBjb25kIGxldCogaWYg IiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0 IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFl Njk2ZDM1Yjc1PiIgYXBwbHldIDEgW29yIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5h bWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQq IGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseV0gMSBbd2hpbGUgbGV0 IGZpbGUtdHJ1ZW5hbWUgZXF1YWwgYW5kIGlmIG9yZy1yb2FtLWRlc2NlbmRhbnQtb2YtcCBsZXQq IHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMtLWRl bGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGVdIDEgW3doaWxlIGxldCBmaWxlLXRydWVuYW1l IGFiYnJldmlhdGUtZmlsZS1uYW1lIGlmIHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmlu ZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgx MzJhPiIgYXBwbHkgc2V0cV0gMSBbaWYgd2hpbGUgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxl dCBmaWxlcy0tdHJhbnNmb3JtLWZpbGUtbmFtZSBpZiBsZXQgaWYgIiM8bGFtYmRhIDB4MjRiNjc2 ODA1NmY4NmJhPiIgZnVuY2FsbCBsZXQgZG9vbS1tYWtlLWhhc2hlZC1hdXRvLXNhdmUtZmlsZS1u YW1lLWEgYXBwbHkgbWFrZS1hdXRvLXNhdmUtZmlsZS1uYW1lXSA0IFtnZW5lcmFsLXVuYmluZC1u b24tcHJlZml4LWtleSBhcHBseSBkZWZpbmUta2V5IGJyZWFkY3J1bWItLWZvcm1hdC1wcm9qZWN0 LW5vZGUgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1 bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1v ZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1o b29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMF0gMSBbb3Jn LWZvbGQtY29yZS1zZXQtZm9sZGluZy1zcGVjLXByb3BlcnR5ICIjPGNvbXBpbGVkIC0weDQxOTQz YzkxMmI3OTZlMT4iIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3Jl LWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2Fs bCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0XSAyIFtvcmctbWFjcm8t LWZpbmQtZGF0ZSBvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXpl LXRlbXBsYXRlcyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0 by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSA0IFsi IzxzdWJyIGVudnJjLS11cGRhdGU+IiBhcHBseSBlbnZyYy0tdXBkYXRlIGVudnJjLW1vZGUgZW52 cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2Rl IGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseV0gMyBbbGV0IHByb2duIHVu d2luZC1wcm90ZWN0IGxldCBmaWxlLXJlbGF0aXZlLW5hbWUgbGV0KiBwcm9nbiBpZiBvcmctcm9h bS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5 IGRlbGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGVdIDEgW2FuZCBpZiBsZXQgbGV0 IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGlm IHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWZdIDMg W3doaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgaWYgbGV0ICIjPGxh bWJkYSAweDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBh cHBseSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXRxIGFuZCBsZXQgIiM8bGFtYmRhIDB4MWI4MGQw OGMwMzA2NzA2Zj4iIGFwcGx5XSAxIFtpZiB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5h bWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVu YW1lIGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0XSAxIFtzZWN1cmUtaGFzaCBzZXRxIGlmIGxl dCAiIzxsYW1iZGEgMHgzM2E2YmIyNjVjYj4iIGZ1bmNhbGwgY29uZCBsZXQqIG9yZy1wZXJzaXN0 LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBs ZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbl0gMSBbYWR2aWNlLS10d2Vh ayBhZHZpY2UtLXJlbW92ZS1mdW5jdGlvbiBhZHZpY2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRk ICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1i ZGFfMzc+IiBldmFsLWFmdGVyLWxvYWQgY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMz NjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3RdIDEgW2Z1bmN0aW9uIGxl dCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFm PiIgbWFwY2FyICIjPGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCog Y29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxpc3Qgb3JnLXBlcnNp c3QtLWZpbmQtaW5kZXggb3Igb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uXSAyIFtzZXQtYnVm ZmVyIHNhdmUtY3VycmVudC1idWZmZXIgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVy LXZpc2l0aW5nIGFuZCBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBh cHBseSBzZXRxIGxldF0gMyBbc3AtLW1lcmdlLXBhaXJzIHNwLS1tZXJnZS1wYWlyLWNvbmZpZ3Vy YXRpb25zIHNwLXVwZGF0ZS1sb2NhbC1wYWlycyAtZWFjaCBzcC0tdXBkYXRlLWxvY2FsLXBhaXJz IHNwLS1pbml0IHNtYXJ0cGFyZW5zLW1vZGUgdHVybi1vbi1zbWFydHBhcmVucy1tb2RlIHNtYXJ0 cGFyZW5zLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwt bW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ25dIDMgW2lm IGlmIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVj dG9yeSBsZXQgaWYgb3IgbGV0IGlmIGxldCB3aGlsZV0gMSBbZmlsZS1uZXdlci10aGFuLWZpbGUt cCBhbmQgaWYgY29uZCBsZXQqIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBs eSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBs eSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJj ZjRiYjVkOTg5Yzk4PiJdIDEgW2JldHRlci1qdW1wZXItbG9jYWwtbW9kZSB0dXJuLW9uLWJldHRl ci1qdW1wZXItbW9kZSBiZXR0ZXItanVtcGVyLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhv b2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBs eSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBs eSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5XSAxIFtjY29udi1hbmFseXpl LWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxl dCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFm PiIgbWFwY2FyICIjPGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCog Y29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIHNldHFdIDMgW2FwcGx5 IGluc2VydC1maWxlLWNvbnRlbnRzIGxldCBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBzYXZlLWN1 cnJlbnQtYnVmZmVyIGxldCBhZ2UtcmVhZC1vdXRwdXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3Qg YWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duXSAzIFthbmQgbGV0IHBy b2duIGlmIG9yZy1leHRyYWN0LWxvZy1zdGF0ZS1zZXR0aW5ncyBsZXQgbGV0IHdoaWxlIGxldCBs ZXQqIGxldCB3aGlsZSBsZXQgbGV0IGlmIGxldF0gMSBbd2hpbGUgbGV0IGlmIGxldCBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGxldCogcHJvZ24gaWYgb3JnLXJv YW0tZmlsZS1wIGFuZCBpZiBvcmctcm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBs eV0gMSBbLSA8IGFuZCBsZXQgb3Igbm90IGxldCBub3JtYWwtYmFja3VwLWVuYWJsZS1wcmVkaWNh dGUgZnVuY2FsbCBub3QgYW5kIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGlmIGxldCpdIDEgW2Z1bmN0aW9uIGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQq IGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQg ZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1u b3NlbGVjdCBzZXRxIGlmXSAxIFtsZXQgcHJvZ24gaWYgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRp b25zIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUt MCBwcm9nbiBpZiBsZXQgaWZdIDMgW3NldCBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9n biBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldHEgaWZdIDQgW2NkciBhZ2UtY29udGV4dC1yZXN1bHQtZm9yIG5yZXZlcnNl IGFnZS1jb250ZXh0LXNldC1yZXN1bHQtZm9yIGFnZS13YWl0LWZvci1jb21wbGV0aW9uIHByb2du IHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5 IGlmXSAxIFtzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBs ZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBs ZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmls ZS1ub3NlbGVjdCBzZXRxXSAzIFtsZXQgZ2xvYmFsLWhsLWxpbmUtbW9kZS1lbmFibGUtaW4tYnVm ZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5 MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRv c2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBwbHkgIiM8Y29t cGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+Il0gMSBbbGV0IGZpbGUtcmVtb3RlLXAgZW52cmMtZ2xv YmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGFwcGx5IHJ1bi1tb2RlLWhvb2tz IG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxl dCBpZl0gMiBbcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFnZS1maWxlLWhhbmRsZXIgIiM8c3Vi ciBpbnNlcnQtZmlsZS1jb250ZW50cz4iIGFwcGx5IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWlu c2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNvbnRlbnRzIGxldCBpbnNlcnQt ZmlsZS1jb250ZW50cy1saXRlcmFsbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBwcm9nbl0g MSBbb2Nsb3N1cmUtLWNvcHkgYWR2aWNlLS1jb3B5IGFkdmljZS0tbWFrZSBhZHZpY2UtLWFkZC1m dW5jdGlvbiBhZHZpY2UtYWRkIG9yZy1mb2xkLS1hZHZpY2UtZWRpdC1jb21tYW5kcyBsZXQgcHJv Z24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWZd IDEgW3N1YnN0cmluZyBkZWNvZGUtY29kaW5nLWluc2VydGVkLXJlZ2lvbiBzYXZlLXJlc3RyaWN0 aW9uIGFnZS1maWxlLWRlY29kZS1hbmQtaW5zZXJ0IGlmIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9u IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMg YXBwbHkgaWYgbGV0IHByb2duXSA1IFtjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVu Y3Rpb24gc2V0IG9yZy1zZXR1cC1maWxsaW5nIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHBy b2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDEgW21hcGNhciAiIzxj b21waWxlZCAweDE4NTc2NmIwN2MyMzk1ZjQ+IiBhcHBseSBzZXEtbWFwIHNlcS1maWx0ZXIgbGV0 IHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1j YWNoZS1yZXNldCBsZXQgcHJvZ24gb3JnLW1vZGVdIDEgW2xpbmUtZW5kLXBvc2l0aW9uIHNlYXJj aC1mb3J3YXJkIGFuZCBsZXQgc2V0LWF1dG8tbW9kZS0xIGxldCBzYXZlLWV4Y3Vyc2lvbiBjYXRj aCBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgYXBwZW5kIGxldCBpZiBsZXQgIiM8bGFt YmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFw cGx5XSAxIFtsZXQqIGxldCB3aGlsZSBsZXQgbGV0IGNvbmQgb3JnLS10YWctYWRkLXRvLWFsaXN0 IHNldHEgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIGxldCB3aGlsZSBsZXQgbGV0XSAxIFtjb25kIGxldCogY29uZCBsZXQqIG9yZy1wZXJz aXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3Ig b3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJl Z2lzdGVyIHByb2duIGlmIHByb2duXSAxIFtlcXVhbCBpZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBm aWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNpdGlu ZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiJdIDIgW29yZy1j b2xsZWN0LWtleXdvcmRzIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMg bGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHBy b2duIGlmIGxldF0gMSBbc2V0IHByb2duIGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIg cHJvZ24gaWYgb3JnLWVsZW1lbnQtLWNhY2hlLXBlcnNpc3QtYWZ0ZXItcmVhZCBydW4taG9vay13 aXRoLWFyZ3Mgd2hpbGUgbGV0KiBwcm9nbiBpZiBpZiBwcm9nbl0gMSBbaW5oaWJpdC1sb2NhbC12 YXJpYWJsZXMtcCBub3QgYW5kIGlmIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWEx MWY3Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFy aWFibGVzIGppbngtbW9kZSBqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1idWZm ZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rc10gMSBbcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1w IGFuZCBpZiBvcmctcm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseSBkZWxldGUt ZmlsZSBpZiBhZ2UtZGVsZXRlLW91dHB1dC1maWxlIGlmIHVud2luZC1wcm90ZWN0IGFnZS1kZWNy eXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbl0gMSBbY2wtc3Vic3QgcHJvamVjdGls ZS1wcm9qZWN0LXJvb3QgcHJvamVjdC1wcm9qZWN0aWxlIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0 b3J5IHByb2plY3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1 bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFs Zi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhv b2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBs eSBwcm9nbl0gMSBbbGV0IGZpbGUtdHJ1ZW5hbWUgZXF1YWwgYW5kIGlmIG9yZy1yb2FtLWRlc2Nl bmRhbnQtb2YtcCBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0t ZGItYXV0b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWZdIDEgW3doaWxl IGxldCBvcmctYXNzaWduLWZhc3Qta2V5cyBzZXRxIHByb2duIGlmIGxldCBwcm9nbiBpZiBvcmct c2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24g aWZdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxs IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0 LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxXSAxIFtzZXRxIGxldCBpZiBsZXQgd2hpbGUgbGV0 IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgaWYgc2V0cSBzYXZlLWN1cnJlbnQt YnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmXSAzIFt3aGlsZSBsZXQg bG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyICIjPHN1YnIgZW52cmMt LXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwtbW9k ZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRh IC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duXSAxIFthZ2UtY29udGV4dC1zZXQtcmVz dWx0LWZvciBhZ2Utd2FpdC1mb3ItY29tcGxldGlvbiBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2Ut ZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5k LXByb3RlY3RdIDIgW29yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2du IGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1jYWNoZS1y ZXNldCBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbF0gMiBbYW5kICIjPGxhbWJkYSAweDI3MDQz MGU3YWM0MmJlPiIgIiM8Y29tcGlsZWQgLTB4OTgyZjI5ODc0ODE1ZTlhPiIgbWFwYyBzZXEtZG8g c2VxLWZpbmQgbGV0IGxldCogYWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24g dW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlXSAzIFts ZXQgb3JnLXJvYW0tLWZpbGUtbmFtZS1leHRlbnNpb24gbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1m aWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRl bGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5kLXByb3RlY3QgYWdl LWRlY3J5cHQtZmlsZV0gMSBbIiM8Y29tcGlsZWQgMHhhZGJmNDZlMWE2ZDY4NWE+IiBhZHZpY2Ut LWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRkIG9yZy1mb2xkLS1hZHZpY2UtZWRpdC1jb21tYW5kcyBs ZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJv Z24gaWYgbGV0IGlmXSAxIFtmYWNlLWF0dHJpYnV0ZSBmYWNlLWZvcmVncm91bmQgbGlzdCBuY29u YyByZW1vdmUgbGV0IG9yZy1maW5kLWludmlzaWJsZS1mb3JlZ3JvdW5kIGxldCBsZXQgcHJvZ24g b3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDEgW21hcGNhciBj b25zIGxldCogb3JnLWNvbGxlY3Qta2V5d29yZHMgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhw cy1hbmQtb3B0aW9ucyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQt YXV0by1tb2RlLTBdIDEgW29yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gaWYg cHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBp ZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCB3aGlsZV0gMSBbYWZ0ZXItaW5zZXJ0LWZpbGUtc2V0 LWNvZGluZyAiIzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHkgaWYgZWRpdG9yY29u ZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29udGVu dHMgbGV0IGluc2VydC1maWxlLWNvbnRlbnRzLWxpdGVyYWxseSBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0XSAxIFth bmQgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlm IGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXRdIDMg W3VuZG8tYXV0by0tYm91bmRhcnktdGltZXIgYXBwbHkgdGltZXItZXZlbnQtaGFuZGxlciBzbGVl cC1mb3IgYWdlLXdhaXQtZm9yLWNvbXBsZXRpb24gcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRl Y3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCog YWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWZdIDEyIFtpZiBsZXQgaW5oaWJp dC1sb2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgc28tbG9uZy0t Y2hlY2staGVhZGVyLW1vZGVzIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8t bW9kZSBjb25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2 NWQ4YzQ5MWE2ZT4iXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZv cm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCog b3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1j b2xsZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gMSBbbGV0KiBkaXItbG9jYWxzLWZpbmQtZmls ZSBsZXQgcHJvZ24gaWYgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNrLWRp ci1sb2NhbC12YXJpYWJsZXMgY29uZGl0aW9uLWNhc2UgaWYgbGV0ICIjPGxhbWJkYSAweDExMmFi ZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNrLWxv Y2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rc10gMSBbbGV0IGlmIGxldCBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmls ZS1wIGFuZCBpZiBvcmctcm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseSBkZWxl dGUtZmlsZV0gMyBbc2V0cSBwcm9nbiBpZiB3aGlsZSBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0IGZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIGlmIGxldCBpZiAiIzxsYW1iZGEgMHgyNGI2 NzY4MDU2Zjg2YmE+IiBmdW5jYWxsIGxldCBkb29tLW1ha2UtaGFzaGVkLWF1dG8tc2F2ZS1maWxl LW5hbWUtYV0gMiBbbGV0IGlmIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlv bnMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0w IHByb2duIGlmXSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNs b3N1cmVdIDEyIFtvciBub3Qgd2hpbGUgbGV0IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wIGFuZCBp Zl0gMiBbaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxlcy0tdHJhbnNmb3JtLWZp bGUtbmFtZSBpZiBsZXQgaWYgIiM8bGFtYmRhIDB4MjRiNjc2ODA1NmY4NmJhPiIgZnVuY2FsbCBs ZXQgZG9vbS1tYWtlLWhhc2hlZC1hdXRvLXNhdmUtZmlsZS1uYW1lLWEgYXBwbHkgbWFrZS1hdXRv LXNhdmUtZmlsZS1uYW1lIG9yXSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVu Y3Rpb24gaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgY2RyIGxldCogY29uZGl0aW9uLWNh c2UgaWYgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxl ZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5XSAxIFts ZXQgaW5zZXJ0LWZpbGUtY29udGVudHMtbGl0ZXJhbGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxl dCogcHJvZ24gdW53aW5kLXByb3RlY3Qgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgcHJvZ24gaWYg YWdlLXNjcnlwdC1wIGFzZXQgbGV0KiBwcm9nbiBsZXQqXSAxIFt1bndpbmQtcHJvdGVjdCBhZ2Ut ZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0IGFnZS1maWxlLWhhbmRsZXIgIiM8c3ViciBpbnNlcnQtZmlsZS1jb250ZW50 cz4iXSAyIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFs eXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVy cHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29j aWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3Jn LXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ25dIDEgW3N1YnN0cmluZyBsZXQgaWYgbGV0IGlmIGxldCBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGJyZWFkY3J1bWItLXBy b2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJu LW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1l bmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3NdIDEgW2lmIGxldCB3aGls ZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQg aWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFsXSAxIFtnZW5lcmFsLXVuYmluZC1u b24tcHJlZml4LWtleSBhcHBseSBkZWZpbmUta2V5IGxldCBsZXQgcHJvZ24gb3JnLW1vZGUgZnVu Y2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmXSAyIFtsZXQg aWYgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgaWYgc2V0cSBzYXZlLWN1 cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmICIjPGxh bWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseV0gMSBbc2V0cSBkaXItbG9jYWxzLWZpbmQt ZmlsZSBsZXQgcHJvZ24gaWYgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNr LWRpci1sb2NhbC12YXJpYWJsZXMgY29uZGl0aW9uLWNhc2UgaWYgbGV0ICIjPGxhbWJkYSAweDEx MmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNr LWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rc10gMiBbY29tcGFueS1pbml0LWJhY2tlbmQg Y29tcGFueS1tb2RlIGNvbXBhbnktbW9kZS1vbiBnbG9iYWwtY29tcGFueS1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1 ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVw LWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+Il0gMiBbaWYg bGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgbGV0KiBjb25kaXRpb24tY2Fz ZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVk IDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1 dG8tbW9kZSBjb25kaXRpb24tY2FzZV0gMSBbYW5kIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0 KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXRdIDIg W2Rlcml2ZWQtbW9kZS1wICIjPHN1YnIgc2F2ZS1wbGFjZS10by1hbGlzdD4iIGFwcGx5IGlmIGRv b20tLWluaGliaXQtc2F2ZXBsYWNlLWluLWxvbmctZmlsZXMtYSBhcHBseSBzYXZlLXBsYWNlLXRv LWFsaXN0IGtpbGwtYnVmZmVyIGlmIGFnZS1yZXNldCB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlw dC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3RdIDIgW2xldCBm aWxlLXJlbW90ZS1wIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29r cyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkg cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkg IiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseV0gMSBbbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsXSAxIFtucmV2ZXJzZSBhZ2UtY29udGV4dC1z ZXQtcmVzdWx0LWZvciBhZ2Utd2FpdC1mb3ItY29tcGxldGlvbiBwcm9nbiB1bndpbmQtcHJvdGVj dCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ25d IDEgW2xldCB3aGlsZSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1 cnJlbnQtYnVmZmVyIGNhdGNoIGxldCB3aGlsZSBsZXQgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZS1i dWZmZXJzIGlmIGlmIGxldCBvcmctYWdlbmRhLXByZXBhcmVdIDEgW2Njb252LW1ha2UtaW50ZXJw cmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBoYXNoIHByb2duIGxldCBlZGl0b3Jjb25maWctY2Fs bC1nZXQtcHJvcGVydGllcy1mdW5jdGlvbiBzZXRxIHByb2duIGlmIGNvbmRpdGlvbi1jYXNlIGxl dCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxl LW5vc2VsZWN0IHNldHEgaWZdIDIgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXNdIDI0IFtqaXQtbG9jay1yZWdpc3RlciBqaW54LW1vZGUgamlueC0tb24gZ2xvYmFs LWppbngtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3Jn LW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlm XSAzIFt0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2Jh bC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1v ZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1w cm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4 ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBwbHldIDIgW2xpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXgg b3Igb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9y Zy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmXSAxIFtsZXQgaW5o aWJpdC1sb2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgbGV0IHNh dmUtZXhjdXJzaW9uIGNhdGNoIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBhcHBlbmQg bGV0IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1s b2NhbC12YXJpYWJsZXNdIDEgW2FuZCBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJy ZXZpYXRlLWZpbGUtbmFtZSBzZXRxIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZW52cmMtLWZpbmQt ZW52LWRpciAiIzxzdWJyIGVudnJjLS11cGRhdGU+IiBhcHBseSBlbnZyYy0tdXBkYXRlIGVudnJj LW1vZGUgZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmXSAx IFthZHZpY2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRkICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZm NzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMzc+IiBldmFsLWFmdGVyLWxvYWQg Y3RybGYtbG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBp ZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWFdIDEgW2lmIGhh Y2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVz IGNvbmRpdGlvbi1jYXNlIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28t bG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVu LW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZl0gMSBbbm90IGRvb20tcHJvdGVj dC1mYWxsYmFjay1idWZmZXItaCBraWxsLWJ1ZmZlciBpZiBhZ2UtcmVzZXQgdW53aW5kLXByb3Rl Y3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90 ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0XSAxIFts ZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyICIjPHN1YnIgZW52 cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFt YmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0XSAxIFtz ZXRxIGxldCB3aGlsZSBsZXQgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQgcHJvZ24gaWYg aGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNrLWRpci1sb2NhbC12YXJpYWJs ZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzLW5vbi1maWxlLWJ1ZmZlciBwcm9qZWN0LS12YWx1 ZS1pbi1kaXIgcHJvamVjdC10cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnldIDEgW3Nl dGNhciB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBp ZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGZpbGUtbmFtZS1hcy1kaXJl Y3RvcnkgbGV0XSAxIFtjdHJsZi1sb2NhbC1tb2RlIGN0cmxmLW1vZGUtZW5hYmxlLWluLWJ1ZmZl cnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYg c2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlz dCBzZXRxXSA0IFtvcmctcGVyc2lzdC0tZGlzcGxheS10aW1lIHByb2cxIGxldCBjb25kaXRpb24t Y2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQgb3Jn LXBlcnNpc3QtLXJlYWQtZWxpc3AtZmlsZSBvciBzZXRxIGlmIHByb2duIGlmIGxldCpdIDEgW2Fu ZCB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFz ZS1idWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVu Y2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBw bHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWZdIDMgW3Byb2duIGlmIGxldCBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQgZmlsZXMtLXRyYW5zZm9ybS1maWxlLW5hbWUgaWYgbGV0IGlmICIj PGxhbWJkYSAweDI0YjY3NjgwNTZmODZiYT4iIGZ1bmNhbGwgbGV0IGRvb20tbWFrZS1oYXNoZWQt YXV0by1zYXZlLWZpbGUtbmFtZS1hIGFwcGx5IG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZV0gMSBb dW5kby10cmVlLW92ZXJyaWRkZW4tdW5kby1iaW5kaW5ncy1wIHR1cm4tb24tdW5kby10cmVlLW1v ZGUgZ2xvYmFsLXVuZG8tdHJlZS1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBu b3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29t cGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseV0gMiBbcHJvZ24gaWYgbGV0IGlmIGxldCAi IzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJs ZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVu Y2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDEgW2ZpbGUtcmVsYXRpdmUtbmFtZSBs ZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMt LWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWYgYWdlLWRlbGV0ZS1vdXRwdXQtZmls ZSBpZiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHFdIDEgW2Z1bmN0aW9uIGxl dCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgcHJvZ24gcHJvZ24gbGV0 KiBvcmctcGVyc2lzdC1yZWFkIHByb2duIGxldCogb3JnLXBlcnNpc3QtbG9hZCBwcm9nbiBpZiBs ZXQgcHJvZ24gb3JnLW1vZGVdIDEgW2FuZCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0 KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1k ZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGUg aWYgdW53aW5kLXByb3RlY3RdIDEgW2NkciBsZXQgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwg cHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2Rl LS1hcHBseS1hbGlzdCBzZXRxXSAzIFthbmQgaWYgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJs ZXMgY2RyIGxldCogY29uZGl0aW9uLWNhc2UgaWYgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMw NjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1z ZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0XSAxIFth bmQgcHJvZ24gb3IgcHJvZ24ga2lsbC1idWZmZXIgaWYgYWdlLXJlc2V0IHVud2luZC1wcm90ZWN0 IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5XSAxIFtsZXQgbm9ybWFs LW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVk IDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+ IiBhcHBseSBhZnRlci1maW5kLWZpbGUgaWZdIDEgW3NldHEgcHJvZ24gaWYgbGV0IGxldCAiIzxs YW1iZGEgMHgzM2ZkYjFmYTVjYj4iIGZ1bmNhbGwgY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3Jt YWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJv Z24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3Rlcl0gMSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxs IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBoYXNoIHByb2duIGxl dCBlZGl0b3Jjb25maWctY2FsbC1nZXQtcHJvcGVydGllcy1mdW5jdGlvbiBzZXRxIHByb2duIGlm XSAxIFt3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBp ZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZl0gMSBb aWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0 cSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4t ZGlyZWN0b3J5IHByb2plY3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJy ZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9u LWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMg cnVuLWhvb2tzXSAzIFthbmQgaWYgaWYgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBwcm9nbiBpZiBs ZXQgd2hpbGUgbGV0IGxldCBnbG9iYWwtaGwtbGluZS1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZl0gMSBbcHJvZ24gaWYgaWYgcHJvZ24gaWYgbGV0KiBw cm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlYWQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1s b2FkIHByb2duIGlmIGxldF0gMSBbaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90 ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBzZXRxIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUg bGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQgcHJvZ24gaWZdIDEgW2ZvbnQtbG9jay1tb2Rl IHR1cm4tb24tZm9udC1sb2NrIHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZv bnQtbG9jay1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBv cmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQg aWZdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQt Y2xvc3VyZSBmdW5jdGlvbiBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAiIzxs YW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHldIDEgW3N0cmluZz0gYW5kIGlmIGVkaXRv cmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNv bnRlbnRzIGxldCBjb25kaXRpb24tY2FzZSBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5k LWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmXSA0IFthbmQgaWYgbGV0IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCBmaWxlLW5hbWUtc2Fucy1leHRlbnNpb24gZmlsZS1uYW1lLWJhc2UgYnJl YWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJyZWFk Y3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJlYWRj cnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZl0g MSBbc2F2ZS1leGN1cnNpb24gbGV0IG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3JnLWNv bGxlY3Qta2V5d29yZHMgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBs ZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZl0gMSBbaWYgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IHByb2duIGlmIG9y IGFuZCBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBpZiBs ZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMSBbcHJvZ24gaWYgc2F2ZS1jdXJy ZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHEgaWYgaWYgd2hpbGUgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10b10gNCBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5j dGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxldCogY29ucyBzZXRx IGlmXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5 emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5j dGlvbiBsZXQqIGxldCB3aGlsZSBsZXQgbGV0IGNvbmQgb3JnLS10YWctYWRkLXRvLWFsaXN0XSAx IFthbmQgY29uZCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCogaWYgaWYg IiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jj b25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0 IHNldHFdIDEgW29yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNo ZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGls ZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uXSAyIFtzZXRxIGlmIGxldCogaWYgaWYgIiM8bGFt YmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWct LWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNldHEg aWYgbGV0XSAxIFt5YXMtLW1vZGVzLXRvLWFjdGl2YXRlIHlhcy1taW5vci1tb2RlIHlhcy1taW5v ci1tb2RlLW9uIHlhcy1nbG9iYWwtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYg bm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2du IHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNv bXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiJdIDEgW21hY3JvZXhwLW1hY3JvZXhwYW5kIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFu ZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBl cnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0 aW9uXSAxIFtpZiBpZiBpZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGZpbGUt bmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldCBpZiBsZXRdIDIgW2FkdmljZS0tY2FyIGFk dmljZS0tbWVtYmVyLXAgYWR2aWNlLS1hZGQtZnVuY3Rpb24gYWR2aWNlLWFkZCAiIzxzdWJyIEY2 MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzM3PiIgZXZh bC1hZnRlci1sb2FkIGN0cmxmLWxvY2FsLW1vZGUgY3RybGYtbW9kZS1lbmFibGUtaW4tYnVmZmVy cyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2 ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0XSAxIFthcHBseSBzZXEtZHJvcCBvcmctZWxl bWVudC1jcmVhdGUgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LWtleXdvcmQtcGFyc2Vy IGNvbmQgY29uZCBsZXQgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0t Y3VycmVudC1lbGVtZW50IHNldHEgaWZdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw YW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmct cGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBj YXIgIiM8bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxl dCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGlzdF0gMSBbaWYgbGV0IGNvbmQg bGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNo ZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNv bXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRl ciBwcm9nbl0gMSBbc2V0cSBwcm9nbiBpZiBsZXQgbGV0ICIjPGxhbWJkYSAweDNhMTI5ZTg1ZGNi PiIgZnVuY2FsbCBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNl dHEgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gMSBbZnVu Y3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAiIzxsYW1iZGEgMHgx MWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNv bmQgbGV0KiBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBw cm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyXSAyIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIHNl cS1maW5kIGxldCBsZXQqIGFnZS0tc3RhcnQgbGV0IGFnZS1zdGFydC1kZWNyeXB0IHByb2duIHVu d2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbl0g MSBbd2hpbGUgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgaWYgbGV0ICIj PGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJh MWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29u ZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlXSAxIFtvcmctc2V0LWZvbnQtbG9jay1kZWZhdWx0 cyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAg cHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgaWZdIDEgW2Fz ZXQgbGV0KiBwcm9nbiBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlm IGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWdlLWZpbGUtaGFuZGxlciAiIzxzdWJyIGlu c2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHkgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0 LWZpbGUtY29udGVudHNdIDEgW2lmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1u b3NlbGVjdC0xIGlmIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFw cGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3Qg YXBwbHkgZmluZC1maWxlLW5vc2VsZWN0XSAzIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5h bHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29u di1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVy c2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBsaXN0IG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9y IG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0Kl0gMSBbcHJvZ24gbGV0 IGxldCogYWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3Rl Y3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90 ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHldIDEgW2lmIHByb2du IGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBw cm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cV0gMSBbY29ucyAi IzxsYW1iZGEgMHgzMzI5Mjg0NGI5MjNlPiIgbWFwY2FyIGFwcGVuZCBvciBsZXQgaWYgbGV0IHBy b2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVu Y2FsbCBwcm9nbl0gMSBbZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29j aWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3Jn LXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50 LWJ1ZmZlcl0gMiBbZnVuY3Rpb24gbWFwY2FyICIjPGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIg ZnVuY2FsbCBjb25kIGxldCogY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFp bmVyIHNldHEgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbl0g MSBbb3Igbm90IHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGVudnJjLS1maW5kLWVu di1kaXIgIiM8c3ViciBlbnZyYy0tdXBkYXRlPiIgYXBwbHkgZW52cmMtLXVwZGF0ZSBlbnZyYy1t b2RlIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBhcHBseSBy dW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsXSAyIFsiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2 Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzM3PiIgZXZhbC1hZnRlci1sb2Fk IGN0cmxmLWxvY2FsLW1vZGUgY3RybGYtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mg aWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHBy b2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIj PGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiJdIDEgW3doaWxlIGxldCogcHJvZ24gaWYgaWYg cHJvZ24gaWYgbGV0KiBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlYWQgcHJvZ24gbGV0 KiBvcmctcGVyc2lzdC1sb2FkIHByb2duXSAyIFtsZXQgaWYgc2F2ZS1leGN1cnNpb24gbGV0IGhh Y2stbG9jYWwtdmFyaWFibGVzLS1maW5kLXZhcmlhYmxlcyBhcHBlbmQgbGV0IGlmIGxldCAiIzxs YW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMg YXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgamlueC1tb2RlIGppbngtLW9uIGdsb2JhbC1qaW54 LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnNdIDIgW2xvb2tpbmctYXQtcCBpZiBsZXQgaWYgb3JnLWVs ZW1lbnQtLWNvbGxlY3QtYWZmaWxpYXRlZC1rZXl3b3JkcyBsZXQgY29uZCBzZXRxIGxldCBzYXZl LWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUg bGV0XSAyIFtzZXRxIGxldCBjb25kIGZpbGUtdHJ1ZW5hbWUgZXF1YWwgYW5kIGlmIG9yZy1yb2Ft LWRlc2NlbmRhbnQtb2YtcCBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3Jn LXJvYW0tZGItYXV0b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHldIDEgW3JlZ2V4cC1vcHQtZ3Jv dXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgb3JnLW1vZGVy bi0tbWFrZS1mb250LWxvY2sta2V5d29yZHMgb3JnLW1vZGVybi1tb2RlIG9yZy1tb2Rlcm4tLW9u IGdsb2JhbC1vcmctbW9kZXJuLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1t b2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wXSAx IFt3aGlsZSBsZXQgbGV0IHdoaWxlIGxldCBsZXQgbGV0ICtjb21wYW55LS1iYWNrZW5kcyBzZXQg b3IgK2NvbXBhbnktaW5pdC1iYWNrZW5kcy1oIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmct bW9kZSBmdW5jYWxsIHByb2duXSAxIFtzdHJpbmctbWF0Y2gtcCBsZXQgcHJvZ24gaWYgbGV0IHBy b2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHByb2duIGlmIGFnZS1z Y3J5cHQtcCBhc2V0IGxldCogcHJvZ24gbGV0Kl0gMyBbd2hpbGUgbGV0IGluaGliaXQtbG9jYWwt dmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1dG8tbW9kZS0xIHNvLWxvbmctLWNoZWNrLWhl YWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29u ZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFh NmU+Il0gMSBbaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1t b2RlLTEgbGV0IHNhdmUtZXhjdXJzaW9uIGNhdGNoIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3At bGluZSBhcHBlbmQgbGV0IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28t bG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHldIDUgW2xvY2F0ZS1kb21pbmF0aW5nLWZp bGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQgcHJvZ24gaWYgaGFjay1kaXItbG9jYWwt LWdldC12YXJpYWJsZXMgY2RyIGxldCogY29uZGl0aW9uLWNhc2UgaWYgbGV0ICIjPGxhbWJkYSAw eDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+ IiBzby1sb25nLS1zZXQtYXV0by1tb2RlXSAyIFtsZXQgZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMg aWYgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc28tbG9uZy0tY2hlY2staGVhZGVyLW1v ZGVzIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24t Y2FzZSBsZXQgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFw cGx5IHByb2duXSAxIFtzZXRxIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZXMtLXRy YW5zZm9ybS1maWxlLW5hbWUgaWYgbGV0IGlmICIjPGxhbWJkYSAweDI0YjY3NjgwNTZmODZiYT4i IGZ1bmNhbGwgbGV0IGRvb20tbWFrZS1oYXNoZWQtYXV0by1zYXZlLWZpbGUtbmFtZS1hIGFwcGx5 IG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSBvcl0gMSBbcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRp ci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlh YmxlcyBjZHIgbGV0KiBjb25kaXRpb24tY2FzZSBpZl0gMSBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1t YWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gY2wtbWFwY2FuIG1hcGNhciBzZXQgbGV0 IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXJdIDEgW2FiYnJldmlhdGUtZmlsZS1uYW1l IHNldHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyICIjPHN1YnIg ZW52cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBlbnZyYy1nbG9i YWwtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8 bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duXSAyIFthbmQgaWYgbGV0IGxl dCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBz ZXRxIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQg cHJvZ25dIDIgW2xldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJz aW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBsZXQgd2hpbGUgbGV0IHNhdmUtcmVzdHJp Y3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IG9yZy0tY29sbGVjdC1rZXl3 b3Jkcy0xIGxldCpdIDEgW2F2bC10cmVlLW1hcGMgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJy ZW50LWJ1ZmZlciBwcm9nbiBpZiBvcmctZWxlbWVudC0tY2FjaGUtcGVyc2lzdC1hZnRlci1yZWFk IHJ1bi1ob29rLXdpdGgtYXJncyB3aGlsZSBsZXQqIHByb2duIGlmIGlmIHByb2duXSAxIFtzYXZl LWN1cnJlbnQtYnVmZmVyIHByb2duIGlmIGxldCB3aGlsZSBsZXQgbGV0IGdsb2JhbC1obC1saW5l LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2Rl IGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wXSAxIFt1bndpbmQtcHJvdGVjdCBs ZXQgb3JnLXJvYW0tLWZpbGUtbmFtZS1leHRlbnNpb24gbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1m aWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRl bGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5kLXByb3RlY3RdIDIg W29yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAg b3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1k by1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1l bGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGlsZV0gNCBbY2hhaW4tZG9vbS1maXJz dC1maWxlLWhvb2stdG8tZmluZC1maWxlLWhvb2staCBhcHBseSBhZnRlci1maW5kLWZpbGUgaWYg c2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBp ZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0XSAxIFtk ZXJpdmVkLW1vZGUtcCBhcHBseSB3cy1idXRsZXItZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZl cnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFh NmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3Nh dmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5XSAxIFtub3Qg YW5kIHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgbGV0IHNldC1h dXRvLW1vZGUtMSBzZXRxIGFuZCBzYXZlLWV4Y3Vyc2lvbiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQw OGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iXSA1IFtv cmctZWxlbWVudC1jcmVhdGUgbGV0KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1zZWN0aW9u LXBhcnNlciBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50 LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uXSAyIFtl cXVhbCBhbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJy ZXZpYXRlLWZpbGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgYW5kIGxldCogaWZdIDIg W3Byb2duIGlmIGxldCogYWdlLWNvbnRleHQtc2V0LXJlc3VsdC1mb3IgYWdlLXdhaXQtZm9yLWNv bXBsZXRpb24gcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRp dGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUt Y29udGVudHMgYXBwbHkgaWZdIDEgW2JhY2t1cC1maWxlLW5hbWUtcCBub3QgYW5kIGlmIG9yZy1y b2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1k ZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRx IGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0XSAzIFtpZiBsZXQgcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0IGFnZS1maWxlLWhhbmRsZXIgIiM8c3ViciBpbnNlcnQtZmlsZS1jb250 ZW50cz4iIGFwcGx5IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRz IGFwcGx5IGluc2VydC1maWxlLWNvbnRlbnRzIGxldCBjb25kaXRpb24tY2FzZSBpZiBzYXZlLWN1 cnJlbnQtYnVmZmVyXSAxIFtiYWNrdXAtZmlsZS1uYW1lLXAgb3IgaWYgaWYgIiM8bGFtYmRhIC0w eDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0t c2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIg YXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseSBhZnRlci1maW5kLWZp bGVdIDEgW3doaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgaWYgbGV0 IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2Nh bC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgamlueC1tb2RlIGppbngtLW9u IGdsb2JhbC1qaW54LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnNdIDEgW21lcmdlLWNvZGluZy1zeXN0 ZW1zIGxldCBlZGl0b3Jjb25maWctbWVyZ2UtY29kaW5nLXN5c3RlbXMgc2V0cSBwcm9nbiBpZiBj b25kaXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0 IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2 ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGxdIDEgW2NvbmNhdCBzZXRxIGlmIGxldCBsZXQgaWYgbGV0KiBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUt ZG9taW5hdGluZy1maWxlIGVudnJjLS1maW5kLWVudi1kaXIgIiM8c3ViciBlbnZyYy0tdXBkYXRl PiIgYXBwbHldIDEgW3Vud2luZC1wcm90ZWN0IGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctYXQtY29t bWVudC1wIGFuZCB3aGlsZSBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIG9yIHByb2du IGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1vcmct ZGF0YS1wYXJzZXIgc2V0cV0gMiBbaWYgbGV0IGZpbGUtdHJ1ZW5hbWUgZXF1YWwgYW5kIGlmIG9y Zy1yb2FtLWRlc2NlbmRhbnQtb2YtcCBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQg aWYgb3JnLXJvYW0tZGItYXV0b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGVd IDIgW3NlY3VyZS1oYXNoIGVxdWFsIGFuZCBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIHByb2du IGlmIG9yZy1lbGVtZW50LS1jYWNoZS1wZXJzaXN0LWJlZm9yZS1yZWFkIHJ1bi1ob29rLXdpdGgt YXJncy11bnRpbC1zdWNjZXNzICIjPGxhbWJkYSAtMHg2NGVlNzY2MWFkYzRkYWQ+IiAiIzxjb21w aWxlZCAtMHg5ODJmMjk4NzQ4MTVlOWE+IiBtYXBjIHNlcS1kbyBzZXEtZmluZCBpZl0gMSBbbm90 IGFuZCBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNvbmRpdGlvbi1jYXNlIGxldCBlZGl0b3Jjb25m aWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNl dHEgaWYgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29y Zy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWFdIDEgW3Byb2duIHByb2du IG9yZy1lbGVtZW50LS1jYWNoZS1yb290IGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxl bWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlv bi1jYXNlIGlmIHNldHFdIDQgW2Z1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1j b250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFmPiIgbWFwY2FyICIjPGxhbWJkYSAweDFlMTJi OGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCogY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3Jt YWxpemUtY29udGFpbmVyIHNldHEgcHJvZ24gcHJvZ24gbGV0Kl0gMSBbZ2xvYmFsLWNvbXBhbnkt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFt YmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCog ZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1 Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseV0gMSBbY29u Y2F0IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBsZXQqIG9y Zy1jb2xsZWN0LWtleXdvcmRzIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlv bnMgbGV0IHByb2duXSAxIFt1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUg aWYgc2V0cSBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBs ZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldF0g MSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1h a2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgb3JnLXJlbW92ZS1rZXl3b3Jk LWtleXMgaWYgbGV0KiBsZXQqIGxldF0gMSBbZm9udC1sb2NrLW1vZGUgcHJvZ24gaWYgbm9ybWFs LW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVk IDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+ IiBhcHBseV0gMSBbb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgcHJvZ24gaWYgb3IgYW5kIHNhdmUt Y3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1wIGlmIGxldCBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVu dC1hdC1wb2ludCBsZXRdIDEgW2lmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZp YXRlLWZpbGUtbmFtZSBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBh cHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0 IGFwcGx5XSAxIFtzZXEtbWFwIHNlcS1maWx0ZXIgY2FyIGlmIGxldCBoYWNrLWxvY2FsLXZhcmlh Ymxlcy0tZmluZC12YXJpYWJsZXMgb3IgYW5kIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBl YTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12 YXJpYWJsZXMgc2V0cSBhbmRdIDEgW2lmIGxldCogaWYgbGV0KiBvcmctZWxlbWVudC1lbmQgbGV0 IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJy ZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWZd IDIgW2Njb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFs eXplLWZvcm0gY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252 LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJz aXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxldCogY29ucyBzZXRxIGlmIHByb2duIGlmXSAxIFtz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2gg bGV0IHdoaWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWYgaWYgbGV0IG9y Zy1hZ2VuZGEtcHJlcGFyZSBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5XSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24g bGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0t Z2V0LWNvbGxlY3Rpb24gbGV0XSAxIFthbmQgaWYgbGV0IHdoaWxlIGxldCBsZXQqIGRpci1sb2Nh bHMtZmluZC1maWxlIGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBs ZXQqIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMtbm9u LWZpbGUtYnVmZmVyIHByb2plY3QtLXZhbHVlLWluLWRpciBwcm9qZWN0LXRyeS12Y10gMSBbbWFj cm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJw cmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2Np YXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmct cGVyc2lzdC1yZWdpc3RlciBwcm9nbl0gMSBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRh IDB4MTFjZDQ1MjFmPiIgbWFwY2FyICIjPGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2Fs bCBjb25kIGxldCogY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIHNl dHEgcHJvZ24gbGV0Kl0gMSBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9u IHNlcS1maW5kIGxldCBsZXQqIGFnZS0tc3RhcnQgbGV0IGFnZS1zdGFydC1kZWNyeXB0IHByb2du IHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQqXSAxIFtzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNl dC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAt MHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20t LXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4i IGFwcGx5XSAyIFtsZXQgb3JnLWZpbmQtaW52aXNpYmxlLWZvcmVncm91bmQgbGV0IGxldCBwcm9n biBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBs ZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDEgW2Njb252LS1hbmFseXplLWZ1bmN0 aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNs b3N1cmUgZnVuY3Rpb24gc2VxLWZpbHRlciBsZXQgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IHByb2duIGlmXSAyIFtzZXRx IGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBpZiBkaXItbG9jYWxzLS1hbGwtZmlsZXMgZnVuY2Fs bCBpZiBzZXRxIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fs cy1maW5kLWZpbGVdIDEgW2NhciBpZiBsZXQgY29uZCBsZXQqIG9yIGxldCBpZiBwcm9nbiBpZiBz YXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgY29uZCBsZXQqIHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW2NhciBzdHJpbmctbWF0Y2ggaWYgd2hpbGUg bGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxlcy0tdHJhbnNmb3JtLWZpbGUtbmFtZSBp ZiBsZXQgaWYgIiM8bGFtYmRhIDB4MjRiNjc2ODA1NmY4NmJhPiIgZnVuY2FsbCBsZXQgZG9vbS1t YWtlLWhhc2hlZC1hdXRvLXNhdmUtZmlsZS1uYW1lLWFdIDEgW2Zvcm1hdC1kZWNvZGUgIiM8c3Vi ciBpbnNlcnQtZmlsZS1jb250ZW50cz4iIGFwcGx5IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWlu c2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNvbnRlbnRzIGxldCBpZiBwcm9n biB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBhZ2UtcmVhZC1vdXRwdXQg aWYgcHJvZ25dIDIgW2xldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1rZXl3b3JkLXBhcnNl ciBjb25kIGNvbmQgbGV0IGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQt LWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldF0gMiBbbGV0ICIjPGxhbWJkYSAw eDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBo YWNrLWxvY2FsLXZhcmlhYmxlcyBqaW54LW1vZGUgamlueC0tb24gZ2xvYmFsLWppbngtbW9kZS1l bmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2Fs bCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBsZXQqIGxldCB3aGlsZV0gMSBbZ2xvYmFsLXNldC1rZXkgdW5kby10cmVlLW92 ZXJyaWRkZW4tdW5kby1iaW5kaW5ncy1wIHR1cm4tb24tdW5kby10cmVlLW1vZGUgZ2xvYmFsLXVu ZG8tdHJlZS1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBp ZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlk MWU2OTZkMzViNzU+Il0gMSBbYW5kIHdoaWxlIGxldCB3aGlsZSBsZXQgaW5oaWJpdC1sb2NhbC12 YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgbGV0IHNhdmUtZXhjdXJzaW9u IGNhdGNoIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBhcHBlbmQgbGV0XSAxIFtpZiBs ZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUt a2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21w YXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIg cHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gNCBbc2V0cSBsZXQqIGNvbnMgc2V0cSBpZiBw cm9nbiBpZiB3aGlsZSBsZXQqIHByb2duIGlmIGlmIHByb2duIGlmIGxldCogcHJvZ25dIDEgW2lm IHNhdmUtZXhjdXJzaW9uIGxldCBoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmluZC12YXJpYWJsZXMg YXBwZW5kIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4iIHNvLWxvbmct LWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVzIGppbngtbW9k ZSBqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rc10g MSBbYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseSBhZnRlci1maW5k LWZpbGUgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYg bGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXRd IDEgW2Njb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBj Y29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0t bm9ybWFsaXplLWNvbnRhaW5lciBzZXRxIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIg cHJvZ24gaWYgcHJvZ24gaWYgcHJvZ25dIDEgW2xpc3QgbGV0IG9yZy1zZXQtZm9udC1sb2NrLWRl ZmF1bHRzIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1v ZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDIgW2lmIHNh dmUtY3VycmVudC1idWZmZXIgbGV0KiBhZ2UtLXN0YXJ0IGxldCBhZ2Utc3RhcnQtZGVjcnlwdCBw cm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2Ug cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBh cHBseV0gMiBbaWYgb3JnLWVsZW1lbnQtLWNhY2hlLXBlcnNpc3QtYmVmb3JlLXJlYWQgcnVuLWhv b2std2l0aC1hcmdzLXVudGlsLXN1Y2Nlc3MgIiM8bGFtYmRhIC0weDE1ZmJmZWFkZjM1ZThhNzY+ IiAiIzxjb21waWxlZCAtMHg5ODJmMjk4NzQ4MTVlOWE+IiBtYXBjIHNlcS1kbyBzZXEtZmluZCBp ZiBwcm9nbiBpZiBsZXQqIHByb2duIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVhZF0gMSBbYnVm ZmVyLWxpc3QgbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAi IzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNv bmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseV0gMSBbb3IgbGV0IGlmIHByb2du IGlmIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEg aWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMSBb YW5kIG9yIG9yZy1mb2xkLWluaXRpYWxpemUgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJv Z24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1h cHBseS1hbGlzdF0gMSBbeWFzLS1sb2FkLXBlbmRpbmctaml0cyB5YXMtbWlub3ItbW9kZSB5YXMt bWlub3ItbW9kZS1vbiB5YXMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tz IGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAi Izxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iXSAyIFtjY29udi1mdiBjY29udi1tYWtlLWlu dGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gc2VxLWZpbmQgaWYgcHJvZ24gaWYgbGV0KiBwcm9n biBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlYWQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1sb2Fk IHByb2duXSAyIFtmYWNlLWF0dHJpYnV0ZSBmYWNlLWJhY2tncm91bmQgbGlzdCBuY29uYyByZW1v dmUgbGV0IG9yZy1maW5kLWludmlzaWJsZS1mb3JlZ3JvdW5kIGxldCBsZXQgcHJvZ24gb3JnLW1v ZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDEgW2xldCBpZiAiIzxsYW1i ZGEgMHgyNGI2NzY4MDU2Zjg2YmE+IiBmdW5jYWxsIGxldCBkb29tLW1ha2UtaGFzaGVkLWF1dG8t c2F2ZS1maWxlLW5hbWUtYSBhcHBseSBtYWtlLWF1dG8tc2F2ZS1maWxlLW5hbWUgb3IgZmlsZS1u ZXdlci10aGFuLWZpbGUtcCBhbmQgaWYgY29uZCBsZXQqIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVk OGM0OTFhNmU+Il0gMyBbcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHNhdmUtZXhjdXJzaW9uIG9y Zy1hdC1jb21tZW50LXAgYW5kIHdoaWxlIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g b3IgcHJvZ24gaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVt ZW50LW9yZy1kYXRhLXBhcnNlcl0gMyBbc21hcnRwYXJlbnMtZ2xvYmFsLW1vZGUtZW5hYmxlLWlu LWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24g aWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXRxIGlmXSAxIFtjb25kaXRpb24tY2FzZSBwcm9nbiBpZiBzYXZlLWN1cnJlbnQt YnVmZmVyIGNvbmRpdGlvbi1jYXNlIGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUt bm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNldHEgaWYgbGV0ICIjPGxhbWJkYSAt MHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3Vu ZGVkLWFnZW5kYS1idWZmZXJzLWFdIDEgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29u di1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyICIjPGxhbWJkYSAweDFl MTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCogY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1u b3JtYWxpemUtY29udGFpbmVyIGxpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3Igb3JnLXBl cnNpc3QtLWdldC1jb2xsZWN0aW9uXSAxIFtjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1h bmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNj b252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUg ZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBzZXRxIHByb2du IGlmIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXJdIDEgW21hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24g bGV0Kl0gMSBbcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGVzLS10cmFuc2Zvcm0tZmlsZS1u YW1lIGlmIGxldCBpZiAiIzxsYW1iZGEgMHgyNGI2NzY4MDU2Zjg2YmE+IiBmdW5jYWxsIGxldCBk b29tLW1ha2UtaGFzaGVkLWF1dG8tc2F2ZS1maWxlLW5hbWUtYSBhcHBseSBtYWtlLWF1dG8tc2F2 ZS1maWxlLW5hbWUgb3IgZmlsZS1uZXdlci10aGFuLWZpbGUtcCBhbmRdIDIgW3VucmVjb3JkLXdp bmRvdy1idWZmZXIgcmVwbGFjZS1idWZmZXItaW4td2luZG93cyBraWxsLWJ1ZmZlciBpZiBhZ2Ut cmVzZXQgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNl IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMg YXBwbHkgaWYgbGV0XSAxIFthbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlv bi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1l eGN1cnNpb24gbGV0IGlmXSA1IFtvcmctZWxlbWVudC1jcmVhdGUgbGV0IHNhdmUtZXhjdXJzaW9u IG9yZy1lbGVtZW50LWtleXdvcmQtcGFyc2VyIGNvbmQgY29uZCBsZXQgY29uZCBzZXRxIGxldCBz YXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hp bGVdIDEgW2NkciBwcm9nbiBpZiAiIzxsYW1iZGEgLTB4ODAyMTdjN2RmN2IxZGZkPiIgbWFwY2Fy IG5jb25jIHJlbW92ZSBsZXQgb3JnLWZpbmQtaW52aXNpYmxlLWZvcmVncm91bmQgbGV0IGxldCBw cm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmXSAxIFtsaXN0IGlmIGlmIGFwcGVuZCBhZ2Ut LXN0YXJ0IGxldCBhZ2Utc3RhcnQtZGVjcnlwdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVj cnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBh Z2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50c10gMSBbY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRl cnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250 YWluZXIgc2V0cSBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2du IGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXJdIDEgW2Njb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHIgbGV0 KiBjb25kaXRpb24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFw cGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1v ZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2FzZSBsZXRdIDIgWyIjPGxhbWJkYSAw eDExY2Q0NTIxZj4iIG1hcGNhciAiIzxsYW1iZGEgMHgxZTEyYjhmYmZmYThkYT4iIGZ1bmNhbGwg Y29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBzZXRx IHByb2duIGlmIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ25dIDEgW2lmIGNo YWluLWRvb20tZmlyc3QtYnVmZmVyLWhvb2stdG8tZmluZC1maWxlLWhvb2staCBhcHBseSAiIzxj b21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4iIGFwcGx5IGFmdGVyLWZpbmQtZmlsZSBpZiBzYXZl LWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmICIj PGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseV0gMSBbcHJvZ24gbGV0IHNhdmUtZXhj dXJzaW9uIG9yZy1lbGVtZW50LWtleXdvcmQtcGFyc2VyIGNvbmQgY29uZCBsZXQgY29uZCBzZXRx IGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYg aWYgd2hpbGVdIDMgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXNd IDIzIFtmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1p Zi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9v a3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5 IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5 ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiJdIDEgW2FiYnJldmlhdGUtZmlsZS1uYW1l IHNldHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxl dCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHIgbGV0KiBjb25kaXRp b24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5XSAxIFtz ZXRxIGVxdWFsIGNvbmQgd2hpbGUgbGV0IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZW52cmMtLWZp bmQtZW52LWRpciAiIzxzdWJyIGVudnJjLS11cGRhdGU+IiBhcHBseSBlbnZyYy0tdXBkYXRlIGVu dnJjLW1vZGUgZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGFw cGx5IHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlXSAyIFtvcmctcm9hbS0tZmlsZS1uYW1lLWV4dGVu c2lvbiBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0 b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWYgYWdlLWRlbGV0ZS1vdXRw dXQtZmlsZSBpZiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHFdIDEgW2hhY2st ZGlyLWxvY2FsLXZhcmlhYmxlcy1ub24tZmlsZS1idWZmZXIgcHJvamVjdC0tdmFsdWUtaW4tZGly IHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3QtY3VycmVu dCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMg YnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBi cmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2Rl IGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbl0gMiBbbGV0KiBv cmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBt YXBjYXIgIiM8bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25k IGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbiBwcm9nbiBs ZXQqIG9yZy1wZXJzaXN0LXJlYWRdIDEgW3N0cmluZz0gYW5kIGNvbmQgZmlsZS10cnVlbmFtZSBm aWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxl LXRydWVuYW1lIGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0XSAyIFttYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5k LWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gc2VxLWZpbmQgbGV0 IGxldCogYWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3Rl Y3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxXSAxIFtobC1saW5lLW1vZGUtc2V0LWV4cGxpY2l0bHkg aGwtbGluZS1tb2RlIGFuZCBpZiBpZiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIHByb2duIGlmIGxl dCB3aGlsZSBsZXQgbGV0IGdsb2JhbC1obC1saW5lLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVu LWhvb2tzIHJ1bi1tb2RlLWhvb2tzXSAxIFthbmQgaWYgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1j dXJyZW50LWJ1ZmZlciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IGxldCBw cm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duXSAxIFthc3NxLWRlbGV0ZS1hbGwgdW5yZWNvcmQt d2luZG93LWJ1ZmZlciByZXBsYWNlLWJ1ZmZlci1pbi13aW5kb3dzIGtpbGwtYnVmZmVyIGlmIGFn ZS1yZXNldCB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNh c2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50 cyBhcHBseSBpZl0gMiBbY2FsbGVkLWludGVyYWN0aXZlbHktcCBzbWFydHBhcmVucy1tb2RlIHR1 cm4tb24tc21hcnRwYXJlbnMtbW9kZSBzbWFydHBhcmVucy1nbG9iYWwtbW9kZS1lbmFibGUtaW4t YnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4 YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1h dXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiJdIDEgW2xldCBh YmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFz ZS1idWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVu Y2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBw bHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWYgc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQt YnVmZmVyIGNhdGNoXSAxIFt0aW1lci1pbmMtdGltZSB0aW1lci1ldmVudC1oYW5kbGVyIGFjY2Vw dC1wcm9jZXNzLW91dHB1dCB3aGlsZSBhZ2Utd2FpdC1mb3ItY29tcGxldGlvbiBwcm9nbiB1bndp bmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZl0g MSBbYW5kIGlmIGFnZS1yZXNldCB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEg Y29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQt ZmlsZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3RdIDEgW2dsb2Jh bC1kYXNoLWZvbnRpZnktbW9kZS1jbWhoIGtpbGwtYWxsLWxvY2FsLXZhcmlhYmxlcyBub3JtYWwt bW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQg MHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4i IGFwcGx5IGFmdGVyLWZpbmQtZmlsZV0gMSBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWNv bnRlbnRzLWVuZCBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJz ZS10b10gMSBbbGV0IGFnZS1maW5kLWNvbmZpZ3VyYXRpb24gbGV0IGxldCogYWdlLWNvbnRleHQt LW1ha2UgYWdlLW1ha2UtY29udGV4dCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRz IGFwcGx5IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWdlLWZpbGUtaGFuZGxlciAi IzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiJdIDEgW2Njb252LW1ha2UtaW50ZXJwcmV0ZWQt Y2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgZGVscSBsZXQgaWYgbGV0IHByb2duIGlmIG9yZy1zZXQt cmVnZXhwcy1hbmQtb3B0aW9ucyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZl0g MiBbIiM8c3ViciBzYXZlLXBsYWNlLXRvLWFsaXN0PiIgYXBwbHkgaWYgZG9vbS0taW5oaWJpdC1z YXZlcGxhY2UtaW4tbG9uZy1maWxlcy1hIGFwcGx5IHNhdmUtcGxhY2UtdG8tYWxpc3Qga2lsbC1i dWZmZXIgaWYgYWdlLXJlc2V0IHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBj b25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSAxIFtsZXQgbGV0IGlmIGxl dCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgbG9j YXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyICIjPHN1YnIgZW52cmMtLXVw ZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwtbW9kZS1l bmFibGUtaW4tYnVmZmVyc10gMSBbb3Igbm90IHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1m aWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2Fs LS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stZGlyLWxv Y2FsLXZhcmlhYmxlcy1ub24tZmlsZS1idWZmZXIgcHJvamVjdC0tdmFsdWUtaW4tZGlyIHByb2pl Y3QtdHJ5LXZjXSAxIFtzZWFyY2gtZm9yd2FyZCBhbmQgbGV0IHNldC1hdXRvLW1vZGUtMSBsZXQg c2F2ZS1leGN1cnNpb24gY2F0Y2ggaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIG9yIGFu ZCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4iIHNvLWxvbmctLWhhY2stbG9j YWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVzXSAxIFtpZiBsZXQqIGlmIGxl dCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUt a2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIg YXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0t Y2FjaGUtcHV0XSAzIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBh bmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBhdmwtdHJlZS1t YXBjIHByb2duIGlmXSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBsZXQgd2hpbGUgbGV0XSAxIFtjY29u di1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGV0KiBjb25zIHNl dHEgaWYgcHJvZ24gaWYgd2hpbGUgbGV0KiBwcm9nbiBpZl0gMSBbbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBsZXQqIGxldCB3aGlsZSBsZXQgbGV0IGNvbmRdIDEgW2NsLXJlbW92ZS1pZi1u b3QgZWRpdG9yY29uZmlnLWNvcmUtLWdldC1oYW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQt aGFuZGxlcyBlZGl0b3Jjb25maWctY29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUt LWdldC1oYW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jjb25maWct Y29yZS1nZXQtcHJvcGVydGllcy1oYXNoIGZ1bmNhbGwgc2V0cSBjb25kaXRpb24tY2FzZSBsZXQg ZWRpdG9yY29uZmlnLWNhbGwtZ2V0LXByb3BlcnRpZXMtZnVuY3Rpb24gc2V0cSBwcm9nbiBpZiBj b25kaXRpb24tY2FzZV0gMiBbaWYgc2V0cSBwcm9nbiB3aGlsZSBsZXQgaWYgbGV0IHByb2duIHVu d2luZC1wcm90ZWN0IGxldCBmaWxlLXJlbGF0aXZlLW5hbWUgbGV0KiBwcm9nbiBpZiBvcmctcm9h bS1maWxlLXAgYW5kXSAyIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZF0gMSBb b3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIG9yZy1maW5kLWJhc2UtYnVmZmVyLXZpc2l0aW5n IGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9w dGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRh LWZpbGUtYnVmZmVyIGlmIHNldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBsZXRd IDMgW2ZpbGUtYXR0cmlidXRlLWZpbGUtaWRlbnRpZmllciBsZXQqIGlmIGlmICIjPGxhbWJkYSAt MHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1hZHZp Y2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxl dCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iXSAxIFtjY29udi0tYW5hbHl6ZS1mdW5j dGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1j bG9zdXJlIGZ1bmN0aW9uIGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlmIGlmICIjPGxh bWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmln LS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0XSAxIFthcHBlbmQgYW5kIGFwcGVuZCBzZXRxIGxl dCogbGV0KiBsZXQgd2hpbGUgbGV0IGxldCBpZiBsZXQgcHJvZ24gaWYgb3JnLXNldC1yZWdleHBz LWFuZC1vcHRpb25zIGxldF0gMSBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0 aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGV0KiBjb25zIHNldHEg aWYgcHJvZ24gaWYgd2hpbGUgbGV0KiBwcm9nbiBpZiBpZiBwcm9nbl0gMSBbYXBwbHkgZmluZC1m aWxlLW5vc2VsZWN0IHNldHEgaWYgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIg ZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEg YXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWYgc2V0LWJ1ZmZlciBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIGxldF0gMSBbaWYgc3Vic3RyaW5nIGlmIGxldCBmaWxlLW5hbWUtc2Fu cy12ZXJzaW9ucyBzZXRxIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxIGxl dCogY29uZGl0aW9uLWNhc2UgaWYgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBh cHBseV0gMSBbbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZp bGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVs ZXRlLWZpbGUgaWYgYWdlLWRlbGV0ZS1vdXRwdXQtZmlsZSBpZiB1bndpbmQtcHJvdGVjdCBhZ2Ut ZGVjcnlwdC1maWxlXSAxIFtzZXRxIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGVu dnJjLS1maW5kLWVudi1kaXIgIiM8c3ViciBlbnZyYy0tdXBkYXRlPiIgYXBwbHkgZW52cmMtLXVw ZGF0ZSBlbnZyYy1tb2RlIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1o b29rcyBhcHBseSBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duXSAxIFtvciBz ZXRxIGxldCB3aGlsZSBsZXQgbGV0IGNvbmQgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAg YW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1m aWxlXSAxIFtlbnZyYy1nbG9iYWwtbW9kZS1jbWhoIGtpbGwtYWxsLWxvY2FsLXZhcmlhYmxlcyBu b3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29t cGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4 OWM5OD4iIGFwcGx5IGFmdGVyLWZpbmQtZmlsZV0gMSBbb3JnLWNpdGUtZ2V0LXByb2Nlc3NvciBv cmctY2l0ZS10cnktbG9hZC1wcm9jZXNzb3IgaWYgcHJvZ24gbGlzdCBsZXQgb3JnLXNldC1mb250 LWxvY2stZGVmYXVsdHMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0 LWF1dG8tbW9kZS0wIHByb2duXSAxIFtvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1h dXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 cSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5XSAxIFtsZXQgYWdl LWZpbGUtcnVuLXJlYWwtaGFuZGxlciBjb25kaXRpb24tY2FzZSBsZXQqIGFnZS1maWxlLWluc2Vy dC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWdl LWZpbGUtaGFuZGxlciAiIzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHkgaWYgZWRp dG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHNdIDEgW2FkdmljZS0tdHdlYWsg YWR2aWNlLS1yZW1vdmUtZnVuY3Rpb24gYWR2aWNlLS1hZGQtZnVuY3Rpb24gYWR2aWNlLWFkZCBv cmctZm9sZC0tYWR2aWNlLWVkaXQtY29tbWFuZHMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwg cHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldF0gMSBbc2V0cSB3aGlsZSBs ZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIGlm IGxldCBpZiAiIzxsYW1iZGEgMHgyNGI2NzY4MDU2Zjg2YmE+IiBmdW5jYWxsIGxldCBkb29tLW1h a2UtaGFzaGVkLWF1dG8tc2F2ZS1maWxlLW5hbWUtYSBhcHBseSBtYWtlLWF1dG8tc2F2ZS1maWxl LW5hbWVdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxldCog Y29ucyBzZXRxIGlmIHByb2duIGlmIHdoaWxlIGxldCpdIDEgW29yZy1tb2Rlcm4tLXVwZGF0ZS1s YWJlbC1mYWNlIG9yZy1tb2Rlcm4tbW9kZSBvcmctbW9kZXJuLS1vbiBnbG9iYWwtb3JnLW1vZGVy bi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9k ZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDIg W3lhcy0tbG9hZC1wZW5kaW5nLWppdHMgeWFzLW1pbm9yLW1vZGUgeWFzLW1pbm9yLW1vZGUtb24g eWFzLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29r cyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBs ZXQgaWZdIDEgW2lmIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGlmIHNl dHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBp ZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cV0gMSBbcHJvZ24g dW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2du IHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkg aWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyXSAxIFtsZXQg ZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxl LW5hbWUtc2Fucy1leHRlbnNpb24gZmlsZS1uYW1lLWJhc2UgYnJlYWRjcnVtYi0tcHJvamVjdC1j cnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9j YWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZl0gMSBbbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUg ZnVuY3Rpb24gc2VxLWZpbmQgaWYgcHJvZ24gaWYgbGV0KiBwcm9nbiBwcm9nbiBsZXQqIG9yZy1w ZXJzaXN0LXJlYWRdIDEgW3NhdmUtZXhjdXJzaW9uIHNldHEgaWYgaWYgbGV0ICIjPGxhbWJkYSAw eDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+ IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNh c2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+Il0gMSBb YnVmZmVyLWxpc3Qgc2VxLWZpbHRlciBsZXQgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBs ZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IHByb2duIGlmIG9yIGFuZCBzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcF0gMSBbY29uZCBvcmct LXRhZy1hZGQtdG8tYWxpc3Qgc2V0cSBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtY3VycmVudC1idWZmZXIgY2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVw YXJlLWJ1ZmZlcnMgaWYgaWYgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZV0gMSBbYXBwbHkgc2F2ZS1w bGFjZS10by1hbGlzdCBraWxsLWJ1ZmZlciBpZiBhZ2UtcmVzZXQgdW53aW5kLXByb3RlY3QgYWdl LWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxl dCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0XSAzIFtpZiBvcmct cm9hbS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFw cGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5kLXByb3Rl Y3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90 ZWN0XSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1 cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAiIzxsYW1i ZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUxMDlhYWMwY2QzZGE+IiBmdW5j YWxsIGNvbmQgbGV0KiBjb25kIGxldCpdIDEgW2VxIG5vdCBkb29tLXByb3RlY3QtZmFsbGJhY2st YnVmZmVyLWgga2lsbC1idWZmZXIgaWYgYWdlLXJlc2V0IHVud2luZC1wcm90ZWN0IGFnZS1kZWNy eXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFn ZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmXSAxIFtjb25jYXQgc2V0cSBpZiBp ZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1l IGlmIHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTFdIDMg W2FwcGx5IGRlZmluZS1rZXkgYnJlYWRjcnVtYi0tZm9ybWF0LXByb2plY3Qtbm9kZSBicmVhZGNy dW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVt Yi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1i LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxh bWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQq XSAxIFtvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3JnLXBlcnNp c3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0XSAxIFtjYWxsZWQtaW50ZXJh Y3RpdmVseS1wIGF1dG8tc2F2ZS1tb2RlIHByb2duIGlmIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVk OGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAt YXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIj PGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIgYXBwbHldIDEgW3Byb2duIGxldCogc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1vcmctZGF0YS1wYXJzZXIgc2V0 cSBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRx XSAxIFtzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIgd2hpbGUgbGV0IG9yIGxldCBmaW5k LWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12aXNpdGluZyBsZXQgIiM8bGFt YmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxldCArb3JnLS1vcHRpbWl6ZS1iYWNr Z3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBhcHBseSBvcmctZ2V0LWFnZW5kYS1maWxlLWJ1ZmZl ciBpZl0gMyBbdXBjYXNlIG9yZy1lbGVtZW50LS1nZXQtY2FjaGVkLXN0cmluZyBwcm9nbiBsZXQg c2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQta2V5d29yZC1wYXJzZXIgY29uZCBjb25kIGxldCBj b25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQg c2V0cSBpZl0gMSBbbm90IG9yIGFuZCBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBj ZHIgbGV0KiBjb25kaXRpb24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2 Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1h dXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZV0gMSBbYW5kIGxldCBvciBub3QgbGV0IG5vcm1h bC1iYWNrdXAtZW5hYmxlLXByZWRpY2F0ZSBmdW5jYWxsIG5vdCBhbmQgc2F2ZS1jdXJyZW50LWJ1 ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZl0gMSBbd2hpbGUgbGV0 IGxldCBnbG9iYWwtaGwtbGluZS1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4t bW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBw cm9nbiBpZiBsZXQgaWZdIDEgW2xldCBpZiBwcm9nbiBpZiBsZXQgc2F2ZS1leGN1cnNpb24gb3Jn LWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMiBbbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVk LWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQg c2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3JnLXBlcnNp c3QtcmVnaXN0ZXIgcHJvZ25dIDMgW2lmIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5h bWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYgb3IgbGV0IGlmIGxldCB3aGlsZSBsZXRd IDMgW2Njb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBj Y29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gc2VxLWZpbmQgbGV0IGxldCog YWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdl LWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlXSAyIFtzcC0tdXBkYXRlLWxvY2FsLXBh aXJzIHNwLS1pbml0IHNtYXJ0cGFyZW5zLW1vZGUgdHVybi1vbi1zbWFydHBhcmVucy1tb2RlIHNt YXJ0cGFyZW5zLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3Jt YWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHldIDEgW2xldCog b3IgbGV0IGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hl LXB1dCBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZV0gMSBb aWYgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHBy b2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBw bHkgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyXSAxIFth bmQgbGluZS1lbmQtcG9zaXRpb24gc2VhcmNoLWZvcndhcmQgYW5kIGxldCBzZXQtYXV0by1tb2Rl LTEgc2V0cSBhbmQgc2F2ZS1leGN1cnNpb24gbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcw NmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQt YXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGVdIDEgW3JlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhw LW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1n cm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgY29uY2F0IG9yZy1tYWtlLW9wdGlvbnMt cmVnZXhwIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9u IGxldCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBsZXQqXSAxIFtyZWdleHAtb3B0LWdyb3VwIHJl Z2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdCBjb25jYXQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAg c2V0cSBjb25kIGxldCBsZXQgaWYgbGV0KiBsZXQgcHJvZ24gaWYgbGV0IHdoaWxlXSAxIFtlcXVh bCBpZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZiBvcmct cm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXBdIDIgW21h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBl cnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqXSAxIFttYWNyb2V4cGFuZC1hbGwg Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3Qt LW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFmPiIgbWFwY2FyICIjPGxh bWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCogY29uZCBsZXQqIG9yZy1w ZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXhd IDIgW2Njb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgb3JnLXJl bW92ZS1rZXl3b3JkLWtleXMgaWYgbGV0KiBsZXQqIGxldCB3aGlsZSBsZXQgbGV0IGlmIGxldCBw cm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnNdIDEgW21hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbF0gNSBbYXNldCBsZXQqIHByb2duIGFnZS13YWl0 LWZvci1jb21wbGV0aW9uIHByb2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0 cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2Vy dC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldF0gMSBbbGV0IHByb2duIGlmIG9yZy1zZXQtcmVn ZXhwcy1hbmQtb3B0aW9ucyBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3Vy cmVudC1idWZmZXIgY2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1 ZmZlcnMgaWYgaWYgbGV0XSAxIFtjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1 cmUgZnVuY3Rpb24gbWFwY2FyICIjPGxhbWJkYSAweDFlMTA5YWFjMGNkM2RhPiIgZnVuY2FsbCBj b25kIGxldCogY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxpc3Qg b3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3Igb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxl dF0gMSBbb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxl c3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRy ZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBz YXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZl0g MyBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1h bGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNp c3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgcHJvZ24gcHJvZ24gbGV0KiBvcmctcGVyc2lz dC1yZWFkIHByb2duIGxldCogb3JnLXBlcnNpc3QtbG9hZCBwcm9nbl0gMSBbdW5yZWNvcmQtd2lu ZG93LWJ1ZmZlciByZXBsYWNlLWJ1ZmZlci1pbi13aW5kb3dzIGtpbGwtYnVmZmVyIGFuZCB1bndp bmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBhZ2UtcmVhZC1vdXRwdXQgaWYgcHJv Z24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHBy b2duIHVud2luZC1wcm90ZWN0XSAxIFtzZXQtZGlzcGxheS10YWJsZS1zbG90IHByb2duIGlmIGxl dCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9n biBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDEgW3JlZ2V4cC1vcHQgY29u Y2F0IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIHNldHEgY29uZCBsZXQgbGV0IGlmIGxldCogbGV0 IHByb2duIGlmIGxldCB3aGlsZSBsZXQgc2F2ZS1yZXN0cmljdGlvbl0gMSBbb3JnLXBlcnNpc3Qt bG9hZCBwcm9nbiBpZiBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQt YXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSAx IFtwcm9nMSBjb25zIHNldHEgaWYgd2hpbGUgbGV0KiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3Qg c2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgcHJvZ24gaWYgYWdlLXNjcnlwdC1wIGFzZXQgbGV0Kl0g MSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGxdIDEgW2lmIGxldCogb3Jn LWVsZW1lbnQtZW5kIG9yIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g c2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9u LWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbl0gMSBbYWJicmV2aWF0ZS1maWxlLW5h bWUgc2V0cSBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUg bGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXIt bG9jYWwtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcy1ub24tZmlsZS1idWZmZXIg cHJvamVjdC0tdmFsdWUtaW4tZGlyIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGly ZWN0b3J5IHByb2plY3QtY3VycmVudF0gMiBbeWFzLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZm ZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkx YTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9z YXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21w aWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4iIGFwcGx5XSAxIFtjY29udi1hbmFseXplLWZvcm0gY2Nv bnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlv biBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9z dXJlIGZ1bmN0aW9uIGFzc29jLWRlZmF1bHQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzZXRxIGlmIGlmIGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiJdIDEgW2Njb252 LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3Jn LXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xs ZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyXSAxIFtj b25kICtvcmctaW5pdC1naWZzLWggZnVuY2FsbCBjb25kaXRpb24tY2FzZSBkb29tLXJ1bi1ob29r IHJ1bi1ob29rLXdyYXBwZWQgbGV0IGNvbmRpdGlvbi1jYXNlIGxldCB3aGlsZSBsZXQgZG9vbS1y dW4taG9va3MgaWYgZG9vbS1ydW4tbG9jYWwtdmFyLWhvb2tzLWggcnVuLWhvb2tzIGhhY2stbG9j YWwtdmFyaWFibGVzLWFwcGx5XSAxIFthZnRlci1pbnNlcnQtZmlsZS1zZXQtY29kaW5nICIjPHN1 YnIgaW5zZXJ0LWZpbGUtY29udGVudHM+IiBhcHBseSBpZiBlZGl0b3Jjb25maWctLWFkdmljZS1p bnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1jb250ZW50cyBpZiBwcm9nbiB1 bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQgb3JnLXBlcnNpc3QtLXJl YWQtZWxpc3AtZmlsZSBvciBzZXRxXSAxIFthbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVu d2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBzZXRxICIjPGxhbWJkYSAtMHhk NmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXRdIDEgW2lmIHdoaWxlIGxldCBmaWxl LXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGlmIHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZl OWJiMjVhNDgxMzJhPiIgYXBwbHldIDIgW2lmIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTli YjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5k LWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNldHEgaWYgbGV0ICIjPGxh bWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiJdIDEgW2RlbHEgbGV0IGlmIGxldCBwcm9nbiBpZiBv cmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJv Z24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duXSAxIFthbmQgbGV0KiBvciBsZXQgZmluZC1i dWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFzZS1idWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJk YSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dy b3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIg aWYgc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxIFtzZXRxIGxldCogYWdlLS1zdGFy dCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQt ZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZp bGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWZdIDEgW3NldCBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldCBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQgYWdlLWZpbGUtaGFuZGxlciAiIzxzdWJyIGluc2VydC1maWxl LWNvbnRlbnRzPiIgYXBwbHkgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29u dGVudHNdIDEgW2FkdmljZS0tcCBhZHZpY2UtLW1lbWJlci1wIGFkdmljZS0tYWRkLWZ1bmN0aW9u IGFkdmljZS1hZGQgIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5v bnltb3VzX2xhbWJkYV8zNz4iIGV2YWwtYWZ0ZXItbG9hZCBjdHJsZi1sb2NhbC1tb2RlIGN0cmxm LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxh bWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMSBb bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3Jn LXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGlzdCBvcmctcGVyc2lzdC0tZmluZC1pbmRl eCBvcl0gMSBbb3IgcHJvZ24gbGlzdCBhcHBlbmQgYWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRl Y3J5cHQgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlv bi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29u dGVudHNdIDEgW2xldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0 IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyICIjPHN1YnIgaW5zZXJ0 LWZpbGUtY29udGVudHM+IiBhcHBseSBpZiBlZGl0b3Jjb25maWctLWFkdmljZS1pbnNlcnQtZmls ZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1jb250ZW50cyBsZXRdIDEgW2Z1bmN0aW9uIGxl dCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFm PiIgbWFwY2FyICIjPGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCog Y29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIHNldHEgcHJvZ24gaWYg cHJvZ25dIDIgW2tpbGwtYnVmZmVyIGFuZCB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVm ZmVyIGxldCBwcm9nbiBpZiBhZ2Utc2NyeXB0LXAgYXNldCBsZXQqIHByb2duIGxldCogYWdlLWZp bGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0XSAxIFtmdW5jYWxsIHByb2duIGlm IGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0cSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIj PGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iXSAxIFtjb25kIGlmIG9yZy1lbGVtZW50LS1u ZXh0LW1vZGUgc2V0cSBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNl LXRvIGNvbmRpdGlvbi1jYXNlIGlmXSAyIFthbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVu d2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBzZXRxIGxvY2F0ZS1kb21pbmF0 aW5nLWZpbGUgZW52cmMtLWZpbmQtZW52LWRpciAiIzxzdWJyIGVudnJjLS11cGRhdGU+IiBhcHBs eSBlbnZyYy0tdXBkYXRlXSAyIFtzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUt ZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBsZXQgd2hpbGUgbGV0IHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IG9yZy0tY29sbGVj dC1rZXl3b3Jkcy0xIGxldCogb3JnLWNvbGxlY3Qta2V5d29yZHNdIDEgW2FuZCBsZXQgc2V0LWF1 dG8tbW9kZS0xIGxldCBzYXZlLWV4Y3Vyc2lvbiBjYXRjaCBoYWNrLWxvY2FsLXZhcmlhYmxlcy1w cm9wLWxpbmUgYXBwZW5kIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4i IHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVz IHJ1bi1tb2RlLWhvb2tzXSAyIFsiIzxjb21waWxlZCAtMHg0MTk0M2M5MTQ2ZGQ2ZTE+IiBvcmct Zm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1m b2xkLWluaXRpYWxpemUgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0 LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZl0gMSBbbWFjcm9leHAtbWFjcm9leHBhbmQgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFr ZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6 ZS1hc3NvY2lhdGVkXSAxIFtjYXIgaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVu dC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hl LWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVy IGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlcl0gMSBbbWFjcm9leHBhbmQtYWxsIGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1u b3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQg cHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbl0g MSBbYXBwbHkgYWJvcnQtaWYtZmlsZS10b28tbGFyZ2UgZXEgaWYgcHJvZ24gaWYgbGV0KiBpZiBp ZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRv cmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseV0gMyBbaWYgYWdlLWRlbGV0 ZS1vdXRwdXQtZmlsZSBpZiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29u ZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmls ZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3RdIDIgW29yZy1wZXJz aXN0LS1ub3JtYWxpemUtY29udGFpbmVyICIjPGxhbWJkYSAweDExY2Q0NTIxZj4iIG1hcGNhciAi IzxsYW1iZGEgMHgxZTEwOWFhYzBjZDNkYT4iIGZ1bmNhbGwgY29uZCBsZXQqIGNvbmQgbGV0KiBv cmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBsaXN0IG9yZy1wZXJzaXN0LS1maW5kLWlu ZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ25dIDEgW3NldHEgbGV0 IGxldCogYWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3Rl Y3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90 ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHldIDIgW2Fzc29jLWRl bGV0ZS1hbGwgYXNzcS1kZWxldGUtYWxsIHVucmVjb3JkLXdpbmRvdy1idWZmZXIgcmVwbGFjZS1i dWZmZXItaW4td2luZG93cyBraWxsLWJ1ZmZlciBhbmQgdW53aW5kLXByb3RlY3Qgc2F2ZS1jdXJy ZW50LWJ1ZmZlciBsZXQgYWdlLXJlYWQtb3V0cHV0IGlmIHByb2duIHVud2luZC1wcm90ZWN0IGFn ZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZV0gMSBbZGVyaXZlZC1tb2RlLXAgZG9v bS1tb2RlbGluZS1hdXRvLXNldC1tb2RlbGluZSBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYg IiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0 IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFl Njk2ZDM1Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+Il0gMSBbcHJv Z24gaWYgZGlyLWxvY2Fscy0tYWxsLWZpbGVzIGZ1bmNhbGwgaWYgc2V0cSB3aGlsZSBsZXQgbG9j YXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9nbiBp ZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHJdIDEgW21hcGNhciBzZXQgbGV0IHBy b2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3Jn LWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWZdIDEgW3Byb2duIGRvb20tZGlzYWJsZS1zbWFydHBh cmVucy1uYXZpZ2F0ZS1za2lwLW1hdGNoLWggcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIj PGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5 NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiJdIDEgW2xldCog aWYgbGV0KiBvcmctZWxlbWVudC1jb250ZW50cy1iZWdpbiBnb3RvLWNoYXIgY29uZCBsZXQqIHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBv cmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXRdIDEgW2Fkdmlj ZS0tbWFrZSBhZHZpY2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRkICIjPHN1YnIgRjYxNmU2ZjZl Nzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMzc+IiBldmFsLWFmdGVy LWxvYWQgY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1o b29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRv LW1vZGUtMCBwcm9nbl0gMSBbdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmls ZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFnZS1maWxl LWhhbmRsZXIgIiM8c3ViciBpbnNlcnQtZmlsZS1jb250ZW50cz4iIGFwcGx5IGlmIGVkaXRvcmNv bmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNvbnRl bnRzXSAxIFtvciBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFt ZSBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMg YnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBi cmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2Rl IGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseV0gMiBbY2NvbnYtZnYgY2Nv bnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGhhY2stZGlyLWxvY2FsLS1nZXQt dmFyaWFibGVzIGNkciBsZXQqIGNvbmRpdGlvbi1jYXNlIGlmIGxldCAiIzxsYW1iZGEgMHgxYjgw ZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIgc28t bG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBzZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1jYXNlXSAx IFthZGQtaG9vayB0ZXh0LW1vZGUgb3V0bGluZS1tb2RlIGxldCBwcm9nbiBvcmctbW9kZSBmdW5j YWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3RdIDEgW2FuZCBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 IGZpbGUtbmFtZS1zYW5zLWV4dGVuc2lvbiBmaWxlLW5hbWUtYmFzZSBicmVhZGNydW1iLS1wcm9q ZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1v bi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5h YmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGxd IDEgW2FnZS1maWxlLXJ1bi1yZWFsLWhhbmRsZXIgY29uZGl0aW9uLWNhc2UgbGV0KiBhZ2UtZmls ZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0IGFnZS1maWxlLWhhbmRsZXIgIiM8c3ViciBpbnNlcnQtZmlsZS1jb250ZW50cz4iIGFwcGx5 IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5XSAxIFtm aWxlLW1vZGVzIGxldCBvciBpZiBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBw bHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBw bHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgy Y2Y0YmI1ZDk4OWM5OD4iIGFwcGx5XSAxIFtzZXQgbGV0IG9yZy1jb21wdXRlLWxhdGV4LWFuZC1y ZWxhdGVkLXJlZ2V4cCBpZiBsZXQgcHJvZ24gaWYgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25z IGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMF0g MSBbbm90IGFuZCBpZiBvcmctcm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseSBk ZWxldGUtZmlsZSBpZiBhZ2UtZGVsZXRlLW91dHB1dC1maWxlIGlmIHVud2luZC1wcm90ZWN0IGFn ZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQqXSAxIFtkb29tLW1ha2UtaGFzaGVkLWF1dG8tc2F2ZS1maWxlLW5hbWUtYSBhcHBseSBtYWtl LWF1dG8tc2F2ZS1maWxlLW5hbWUgb3IgZmlsZS1uZXdlci10aGFuLWZpbGUtcCBhbmQgaWYgY29u ZCBsZXQqIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYV0gMSBbcmVnZXhwLW9wdC1n cm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCBy ZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAt b3B0LWdyb3VwIHJlZ2V4cC1vcHQgY29uY2F0IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIHNldHEg Y29uZCBsZXQgbGV0IGlmXSAxIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9z dXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFt YmRhIDB4MTFjZDQ1MjFmPiIgbWFwY2FyICIjPGxhbWJkYSAweDFlMTA5YWFjMGNkM2RhPiJdIDEg W2FkdmljZS0tcmVtb3ZlLWZ1bmN0aW9uIGFkdmljZS0tYWRkLWZ1bmN0aW9uIGFkdmljZS1hZGQg b3JnLWZvbGQtLWFkdmljZS1lZGl0LWNvbW1hbmRzIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxs IHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDEgW2ZpbGUtcmVt b3RlLXAgZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5v cm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21w aWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5 Yzk4PiJdIDEgW2NvbmNhdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBzZXRxIGNvbmQgbGV0IGxl dCBpZiBsZXQqIGxldCBwcm9nbiBpZiBsZXQgd2hpbGUgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb25dIDEgW2NsLWZpbmQtaWYgcHJvamVjdC10cnktdmMgcHJvamVjdC0tZmluZC1p bi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEg YnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUt b24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4tYnVmZmVy cyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBz ZXQtYXV0by1tb2RlLTBdIDEgW2lmIHNhdmUtZXhjdXJzaW9uIGxldCBoYWNrLWxvY2FsLXZhcmlh Ymxlcy0tZmluZC12YXJpYWJsZXMgYXBwZW5kIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJk OTUwZWExMWY3Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9j YWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ25dIDEgW2Fu ZCBwcm9nbiBvciBwcm9nbiBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5 IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWdlLWZpbGUtaGFuZGxlciAiIzxzdWJy IGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHkgaWZdIDEgW29yZy1wZXJzaXN0LS1ub3JtYWxp emUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24g bGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBzYXZl LWN1cnJlbnQtYnVmZmVyIGxldCB3aGlsZV0gMSBbaWYgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxl bWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50 LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBp ZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cV0gMyBb Y2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252 LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUx MmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5v cm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbiBsZXQqXSAxIFthZHZpY2UtLW1lbWJlci1wIGFk dmljZS0tYWRkLWZ1bmN0aW9uIGFkdmljZS1hZGQgb3JnLWZvbGQtLWFkdmljZS1lZGl0LWNvbW1h bmRzIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUt MCBwcm9nbiBpZiBsZXQgaWZdIDEgW3N0cmluZy1tYXRjaCBub3QgYW5kIHdoaWxlIGxldCB3aGls ZSBsZXQgaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBzby1sb25nLS1jaGVjay1oZWFkZXItbW9k ZXMgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBzZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1j YXNlIGxldCBub3JtYWwtbW9kZSBpZl0gMSBbcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdy b3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdCBjb25jYXQgb3JnLW1ha2Utb3B0aW9ucy1y ZWdleHAgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24g bGV0IG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3JnLWNvbGxlY3Qta2V5d29yZHMgbGV0 IHByb2duXSAxIFtsZXQqIGlmIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtl eSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFy ZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yXSAxIFttYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252 LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBhdmwtdHJlZS1tYXBjIHByb2duXSAx IFtnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1o b29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBp ZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cSBpZl0gMSBbcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVy IGxldCBwcm9nbiBpZiBhZ2Utc2NyeXB0LXAgYXNldCBsZXQqIHByb2duIGxldCogYWdlLWZpbGUt aW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHldIDEgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi0t YW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1p bnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0IHdoaWxlIGxldCBsZXQgY29uZCBv cmctLXRhZy1hZGQtdG8tYWxpc3Qgc2V0cSBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u XSAxIFtmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxl dCBmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0 KiBwcm9nbl0gMSBbPSBhbmQgbm90IGFuZCBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgbG9jYXRlLWRvbWluYXRpbmct ZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyXSAxIFtsZXQgaWYgc2F2ZS1leGN1cnNpb24gbGV0IGhh Y2stbG9jYWwtdmFyaWFibGVzLS1maW5kLXZhcmlhYmxlcyBvciBhbmQgaWYgbGV0ICIjPGxhbWJk YSAweDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBs eSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXRxIGFuZCBsZXRdIDEgW3NldHEgcHJvZ24gaWYgbGV0 IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxlcy0tdHJhbnNmb3JtLWZpbGUtbmFtZSBpZiBs ZXQgaWYgIiM8bGFtYmRhIDB4MjRiNjc2ODA1NmY4NmJhPiIgZnVuY2FsbCBsZXQgZG9vbS1tYWtl LWhhc2hlZC1hdXRvLXNhdmUtZmlsZS1uYW1lLWEgYXBwbHldIDEgW2Njb252LWFuYWx5emUtZm9y bSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9y bSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9y bSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9y bSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9y bSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9y bV0gMiBbaWYgYXNldCBsZXQqIHByb2duIGFnZS1jb250ZXh0LXNldC1wYXNzcGhyYXNlLWNhbGxi YWNrIGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0IHByb2du IHVud2luZC1wcm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyICIjPHN1YnIgaW5zZXJ0LWZpbGUt Y29udGVudHM+IiBhcHBseV0gMSBbdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFt ZSBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5 bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWYgYWdlLWRlbGV0ZS1vdXRwdXQt ZmlsZSBpZiB1bndpbmQtcHJvdGVjdF0gMSBbc2F2ZS1jdXJyZW50LWJ1ZmZlciBwcm9nbiBpZiBw cm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2duIGlm IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlIGxldF0gMSBbZmlsZS1yZW1vdGUtcCBsZXQg cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVhZGNydW1iLS1w cm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVy bi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUt ZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAt MHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseV0gMSBbY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnBy ZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciAiIzxsYW1iZGEgMHgxZTEyYjhmYmZmYThkYT4i IGZ1bmNhbGwgY29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRh aW5lciBzZXRxIHByb2duIGlmIHByb2duIGxldCpdIDEgW2xldCogd2l0aC1uby13YXJuaW5ncyBv cmctcGVyc2lzdC0tZmluZC1pbmRleCBvciBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0 IHByb2duIGlmIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJvZ24g aWYgcHJvZ25dIDEgW2NvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50 IGxldCB3aGlsZSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vy c2lvbl0gMSBbcmVnZXhwLW9wdCBzZXRxIHByb2duIGlmIGxldCBwcm9nbiBpZiBvcmctc2V0LXJl Z2V4cHMtYW5kLW9wdGlvbnMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYg c2V0LWF1dG8tbW9kZS0wXSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVy cHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwaGFzaCBwcm9nbiBsZXQgZWRpdG9yY29uZmlnLWNh bGwtZ2V0LXByb3BlcnRpZXMtZnVuY3Rpb24gc2V0cSBwcm9nbiBpZiBjb25kaXRpb24tY2FzZSBs ZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0XSAxIFtpZiBvcmctcm9h bS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9y Zy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFn ZS1kZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZV0g MSBbc2V0Y2FyIHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGlm IHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0 KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHldIDEgW2Fzc29jIGlm IG9yIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5h bWUgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIG9yZy1maW5kLWJhc2UtYnVmZmVyLXZpc2l0aW5n IGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGxdIDEgWyIjPGxhbWJk YSAweDExY2Q0NTIxZj4iIG1hcGNhciAiIzxsYW1iZGEgMHgxZTEyYjhmYmZmYThkYT4iIGZ1bmNh bGwgY29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBs aXN0IG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlv biBsZXQgcHJvZ24gbGV0Kl0gMSBbc2V0cSB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmls ZSBwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBwcm9qZWN0LWN1cnJl bnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJz IGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUg YnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29r cyBvcmctbW9kZSBmdW5jYWxsIHByb2duXSAxIFs8IGlmIHdoaWxlIGxldCBmaWxlLXRydWVuYW1l IGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZp bGUtdHJ1ZW5hbWUgZXF1YWxdIDEgW2xpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3Igb3Jn LXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lz dGVyIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0XSAx IFtsZXQgaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5h bWUgc2V0cSAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0 IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUt bm9zZWxlY3RdIDEgW3Byb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJv Z24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVt ZW50LWNhY2hlLXJlc2V0IHByb2duIGlmXSAxIFtjb25jYXQgc2V0cSBpZiBpZiBsZXQgaWYgbGV0 IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1 ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12aXNpdGluZyBsZXQgIiM8bGFtYmRh IC0weDE2OGUwNmZiNGZhZDk1NTc+Il0gMSBbaWYgbGV0IGlmIGxldCBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEg YnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUt b24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4tYnVmZmVy cyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbF0gMSBbZ2V0ZW52IGxp c3Qgc2VxLWZpbmQgbGV0IGxldCogYWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJv Z24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHBy b2duIHVud2luZC1wcm90ZWN0IGxldCpdIDEgW2Rvb20tcHJvdGVjdC1mYWxsYmFjay1idWZmZXIt aCBraWxsLWJ1ZmZlciBpZiBhZ2UtcmVzZXQgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmls ZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUt aW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0IHByb2duXSAxIFtjbC1yZW1vdmUgY2wt cmVtb3ZlLWlmLW5vdCBlZGl0b3Jjb25maWctY29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmln LWNvcmUtLWdldC1oYW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jj b25maWctY29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtLWdldC1oYW5kbGVzIGVk aXRvcmNvbmZpZy1jb3JlLWdldC1wcm9wZXJ0aWVzLWhhc2ggZnVuY2FsbCBzZXRxIGNvbmRpdGlv bi1jYXNlIGxldCBlZGl0b3Jjb25maWctY2FsbC1nZXQtcHJvcGVydGllcy1mdW5jdGlvbiBzZXRx IHByb2duIGlmXSAxIFtpZiBpZiBpZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1l IGVxdWFsIGFuZCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZl0gMSBb bGV0KiBpZiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1 cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBp ZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9u XSAxIFtlcXVhbCBjb25kIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGly LWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFi bGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGNvbmRpdGlvbi1jYXNlIGlmIGxldF0g MSBbK2NvbXBhbnktaW5pdC1iYWNrZW5kcy1oIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAi IzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2 OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4iIGFwcGx5XSAx IFthdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHEgaWYgaWYgd2hpbGUgbGV0IGxl dCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAx IFtvciBmaWxlLXJlbW90ZS1wIG5vdCBvciBhbmQgaWYgaGFjay1kaXItbG9jYWwtLWdldC12YXJp YWJsZXMgbGV0KiBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMgY29uZGl0aW9uLWNhc2UgaWYgbGV0 ICIjPGxhbWJkYSAweDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlh YmxlcyBhcHBseSBoYWNrLWxvY2FsLXZhcmlhYmxlc10gMSBbbWFjcm9leHBhbmQtYWxsIGNjb252 LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBjbC1tYXBjYW4gbGV0IGxldCBwcm9n biBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIGxldCB3aGlsZSBsZXRdIDEgW3NldHEg YWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0IHByb2duIHVud2luZC1w cm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyICIjPHN1YnIgaW5zZXJ0LWZpbGUtY29udGVudHM+ IiBhcHBseSBpZiBlZGl0b3Jjb25maWctLWFkdmljZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBs eSBpbnNlcnQtZmlsZS1jb250ZW50cyBsZXRdIDEgW2lmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wIGFu ZCBpZiBvcmctcm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseSBkZWxldGUtZmls ZSBpZl0gMSBbYWR2aWNlLS1tZW1iZXItcCBhZHZpY2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRk ICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1i ZGFfMzc+IiBldmFsLWFmdGVyLWxvYWQgY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMz NjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0Kl0gMSBbb3IgbGV0 IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQq IGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXRd IDEgW3Byb2duIHVud2luZC1wcm90ZWN0IGxldCBvcmctcm9hbS0tZmlsZS1uYW1lLWV4dGVuc2lv biBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5 bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWYgYWdlLWRlbGV0ZS1vdXRwdXQt ZmlsZSBpZl0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1j bG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0 cSBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmXSAxIFtp ZiAiIzxsYW1iZGEgMHgyODA5YzM0ODA0YWMxYTY+IiBtYXBjYXIgYXBwbHkgc2V0cSBsZXQgb3Jn LWFnZW5kYS1maWxlcyBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhXSA1IFth bmQgIiM8bGFtYmRhIDB4MWUxMGJhOGI5YmQ3ZmY+IiBtYXBjYXIgZGVscSBzZXRxIHByb2duIGlm IGxldCBvcmctYWdlbmRhLWZpbGVzIGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjYWxsLWludGVyYWN0aXZlbHkgY29uZCBsZXQqXSA0IFtvcmctZGF5cy10 by1pc28td2VlayBsZXQqIGlmIGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjYWxsLWludGVyYWN0aXZlbHkgY29uZCBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA5IFtkby1hZnRl ci1sb2FkLWV2YWx1YXRpb24gcmVxdWlyZSBvcmctZGF5cy10by1pc28td2VlayBsZXQqIGlmIGxl dCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjYWxsLWludGVy YWN0aXZlbHkgY29uZCBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZV0gMTAgW21hY3JvZXhwLW1hY3JvZXhwYW5kIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGxdIDEyIFtvcmctYWdlbmRhLWdldC1zZXhwcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0 IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgaWYgbGV0Kl0gMjcgW2J5dGUtY29kZSByZXF1aXJlIG9yZy1h Z2VuZGEtZ2V0LXNleHBzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJv Z24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZl cl0gMTEgW2RvLWFmdGVyLWxvYWQtZXZhbHVhdGlvbiBsb2FkIGJ5dGUtY29kZSByZXF1aXJlIG9y Zy1hZ2VuZGEtZ2V0LXNleHBzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCog cHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb25dIDggW2Rlcml2ZWQtbW9kZS1wIGVsaXNwLS1mb250 LWxvY2stZmx1c2gtZWxpc3AtYnVmZmVycyBkby1hZnRlci1sb2FkLWV2YWx1YXRpb24gbG9hZCBi eXRlLWNvZGUgcmVxdWlyZSBvcmctYWdlbmRhLWdldC1zZXhwcyBjb25zIHNldHEgbGV0IGNvbmQg bGV0IHdoaWxlIGxldCBsZXQqIHByb2duXSAxIFtyZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQt Z3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgZGlhcnkt bmFtZS1wYXR0ZXJuIGRpYXJ5LWZvbnQtbG9jay1kYXRlLWZvcm1zIGRpYXJ5LWZvbnQtbG9jay1r ZXl3b3JkcyBkZWZ2YXIgcmVxdWlyZSBvcmctYWdlbmRhLWdldC1zZXhwcyBjb25zIHNldHEgbGV0 IGNvbmQgbGV0XSAxIFtkby1hZnRlci1sb2FkLWV2YWx1YXRpb24gcmVxdWlyZSBvcmctYWdlbmRh LWdldC1zZXhwcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxl dCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXJdIDgg W21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1h bGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbF0gMTAgW250aCBnb3RvLWNo YXIgcHJvZ24gbGV0KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1pdGVtLXBhcnNlciBjb25k IHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0 cSBpZiBpZiB3aGlsZSBsZXRdIDEgW29yZy1lbGVtZW50LXNlY3Rpb24tcGFyc2VyIGNvbmQgc2V0 cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlm IGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1j dXJyZW50LWJ1ZmZlciBjYXRjaF0gMSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1j bG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0 LWRlYWRsaW5lcyBzZXRxIGxldF0gNCBbY29uZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1l eGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8g Y29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWZdIDIgW3Byb2duIHByb2duIGlmIGxldCBsZXQqIHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVu dC0taGVhZGxpbmUtZGVmZXJyZWQgYXBwbHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5IG9yZy1lbGVt ZW50LS1wcm9wZXJ0eSBhbmQgaWYgIiM8bGFtYmRhIC0weDJjZWE3ZWY0ZTViNTI0MD4iIGZ1bmNh bGxdIDEgW2FuZCBsZXQqIGFuZCBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVs ZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRy ZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRy ZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUt cHV0XSAzIFtsZXQgaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1m aWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBs ZXQgY29uZCBsZXQgd2hpbGVdIDM5IFttYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnBy ZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQq IG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxXSAxIFthbmQgbGV0KiBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdl bmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZV0gMzUgW2xldCog c2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtcGFyYWdyYXBoLXBhcnNlciBjb25kIHNldHEgbGV0 IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3 aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSA0IFtjY29udi1h bmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0t YW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1p bnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9y Zy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0XSA3IFtlcXVhbCBh bmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRl LWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25z XSAyNCBbb3JnLWVsZW1lbnQtY29udGVudHMtZW5kIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0 Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0XSAxIFtm dW5jdGlvbiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJv Z24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdl dC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZF0gMTIgW2Njb252LWZ2IGNjb252LW1ha2UtaW50ZXJw cmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdl bmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBw cm9nbiBsZXRdIDI5IFtpZiBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVu dC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24g aWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9y IHNldHEgaWYgaWYgd2hpbGVdIDEgW2lmIGxldCogaWYgbGV0KiBvcmctZWxlbWVudC1jb250ZW50 cy1lbmQgc2V0cSBwcm9nbiBwcm9nbiBpZiBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogc2F2 ZS1yZXN0cmljdGlvbl0gMSBbb3JnLWNoZWNrLWFnZW5kYS1maWxlIGNhdGNoIHdoaWxlIHdoaWxl IGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjYWxsLWlu dGVyYWN0aXZlbHkgY29uZCBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDUgW2lmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQt dGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlXSA0OCBbaWYgbGV0IGNvbmQg bGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBnb3RvLWNoYXIgc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1oZWFkbGlu ZS1kZWZlcnJlZCBhcHBseSBvcmctZWxlbWVudC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtLXByb3Bl cnR5IGFuZF0gMSBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1h bmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1h bmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1h bmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0t YW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1p bnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uXSA2IFtvcmctZWxlbWVudC1jcmVhdGUgbGV0KiBz YXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1oZWFkbGluZS1wYXJzZXIgY29uZCBzZXRxIGxldCBz YXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hp bGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbl0gNCBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29u di1tYWtlLWludGVycHJldGVkLWNsb3N1cmVdIDkgW2xldCogYW5kIGxldCogYW5kIGxldCogb3Ig b3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmct ZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVu dGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJl bnQtYnVmZmVyXSA0IFtsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGdv dG8tY2hhciBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqXSAxIFtjY29udi0t YW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtLWFuYWx5emUtZnVuY3Rp b24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbl0gNiBbZnVuY3Rpb24gbGlzdCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dy b3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIg aWYgbGV0KiBvcmctYWdlbmRhLWdldC1kYXktZW50cmllcyBhcHBseSBzZXRxIGNvbmQgbGV0IGNh dGNoIHdoaWxlIHdoaWxlXSA5IFtzZXRxIHByb2duIGxldCBpZiBsZXQqIHNhdmUtZXhjdXJzaW9u IHByb2duIGlmIG9yZy1lbGVtZW50LXRpbWVzdGFtcC1wYXJzZXIgbGV0IHdoaWxlIGxldCBwcm9n biBpZiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tZ2V0LXRpbWUtcHJvcGVydGllc10gMSBb bGV0KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1oZWFkbGluZS1wYXJzZXIgY29uZCBzZXRx IGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYg aWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gNSBbc2F2 ZS1leGN1cnNpb24gaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBj b25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAxIFtpZiBsZXQqIG9y Zy1hZ2VuZGEtZ2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXQgY2F0Y2ggd2hpbGUg d2hpbGUgbGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNh bGwtaW50ZXJhY3RpdmVseSBjb25kXSAxMDIgW2NvbmQgbGV0KiBvciBsZXQgaWYgbGV0KiBwcm9n biBpZiBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRx IGlmIGlmIHdoaWxlIGxldF0gMyBbbm90IG9yIGFuZCBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJz aW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSA5IFtjY29udi1tYWtlLWludGVycHJl dGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5k YS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJv Z24gbGV0IHNhdmUtcmVzdHJpY3Rpb25dIDEyIFtzYXZlLWV4Y3Vyc2lvbiBsZXQgY29uZCB3aGls ZSBjYXRjaCBzYXZlLWV4Y3Vyc2lvbiBsZXQgb3JnLWVsZW1lbnQtLWxpc3Qtc3RydWN0IG9yIG9y Zy1lbGVtZW50LXBsYWluLWxpc3QtcGFyc2VyIGNvbmQgbGV0IGNvbmQgc2V0cSBsZXQgc2F2ZS1l eGN1cnNpb25dIDIgW2xldCogaWYgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUt a2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21w YXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVu dGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIg cHJvZ25dIDEgW2xvb2tpbmctYXQtcCBpZiBvcmctZWxlbWVudC10aW1lc3RhbXAtcGFyc2VyIGxl dCB3aGlsZSBsZXQgcHJvZ24gaWYgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWdldC10aW1l LXByb3BlcnRpZXMgbmNvbmMgc2V0Y2FyIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g c2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0taGVhZGxpbmUtZGVmZXJyZWRdIDEgW3Nh dmUtY3VycmVudC1idWZmZXIgZXEgYW5kIHNhdmUtY3VycmVudC1idWZmZXIgaWYgcHJvZ24gaWYg aWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBw cm9nbl0gMiBbaWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1j YWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hl LWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1l bnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQg b3JdIDMgW2lmIGxldCBjb25kIGxldCogYW5kIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQt LWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2Fj aGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVl LWVudGVyIHByb2duXSAyIFtpZiBsZXQqIGlmIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQt LWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2Fj aGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVl LS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZl0gMSBbYXZsLXRyZWUtLWRvLWVudGVy IGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBwcm9nbiBpZiBzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGls ZSBsZXQgbGV0Kl0gMiBbbGV0IGNvbmQgaWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1l bGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0 aW9uLWNhc2UgaWYgc2V0cV0gNSBbc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZiBsZXQqIG9yZy1hZ2Vu ZGEtZ2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXQgY2F0Y2ggd2hpbGUgd2hpbGUg bGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNhbGwtaW50 ZXJhY3RpdmVseV0gMTAwIFtjb25kIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQq IG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kXSAyIFtsZXQqIHNhdmUtZXhj dXJzaW9uIG9yZy1lbGVtZW50LXBsYWluLWxpc3QtcGFyc2VyIGNvbmQgbGV0IGNvbmQgc2V0cSBs ZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlm IHdoaWxlIGxldCBsZXQqXSAxIFtwcm9nbiBsZXQqIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50 LWl0ZW0tcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1 cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb25d IDIgW3NhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBp ZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3Vy cmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJvZ24gaWZdIDEx IFtzZXRjYXIgbGV0IGNvbmQgbGV0KiBpZiBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVt ZW50LS1oZWFkbGluZS1wYXJzZS10aXRsZSBhcHBseSBvcmctZWxlbWVudC0tcHJvcGVydHkgb3Jn LWVsZW1lbnQtcHJvcGVydHktaW5oZXJpdGVkXSAyIFtpZiBwcm9nbiBwcm9nbiBpZiBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgb3Jn LWVsZW1lbnQtLWhlYWRsaW5lLWRlZmVycmVkIGFwcGx5IG9yZy1lbGVtZW50LS1wcm9wZXJ0eSBv cmctZWxlbWVudC0tcHJvcGVydHkgYW5kIGlmICIjPGxhbWJkYSAweGQ0NTYyNjljM2U5ZDE2ZT4i XSAxIFtpZiBsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPCBhbmQgb3IgaWYgaWYgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlmIHByb2duXSAzIFsxLSBpZiBsaXN0IG9yZy1l bGVtZW50LWNyZWF0ZSBsZXQqIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LWhlYWRsaW5lLXBh cnNlciBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVs ZW1lbnQgc2V0cSBpZiBpZiB3aGlsZV0gMSBbbGV0KiBzYXZlLWV4Y3Vyc2lvbiBwcm9nbiBpZiBv cmctZWxlbWVudC10aW1lc3RhbXAtcGFyc2VyIGxldCB3aGlsZSBsZXQgcHJvZ24gaWYgc2F2ZS1l eGN1cnNpb24gb3JnLWVsZW1lbnQtLWdldC10aW1lLXByb3BlcnRpZXMgbmNvbmMgc2V0Y2FyIHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW2xldCogb3Igb3JnLWVsZW1lbnQtLWNh Y2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBub3Qgb3IgYW5kIGlmIHdoaWxl IGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWZdIDEg W25vdCBhbmQgb3IgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcF0gMiBb bGV0IG9yZy1nZXQtd2RheXMgY29uZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0 NTYyNjljM2U5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlmXSAz IFtwcm9nbiBpZiBsZXQgaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVu dC0tY2FjaGUtcHV0IG9yIHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlv bl0gMSBbbGV0KiBjb25kIG9yZy1lbnRyeS1nZXQgbGV0KiBjYXRjaCBwcm9nbiBpZiAiIzxsYW1i ZGEgMHhkNDU2MjY5YzNlOWQxNmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiBwcm9n biBpZl0gMSBbY29uZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNjljM2U5 ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmXSA0 IFtsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1s ZXNzLXAgYW5kIG9yIGFuZCBpZiBzZXRxIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMiBbbGV0IGNvbmQgbGV0KiBpZiBsZXQgbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBzYXZlLWN1cnJlbnQt YnVmZmVyIG9yZy1lbGVtZW50LS1oZWFkbGluZS1wYXJzZS10aXRsZSBhcHBseSBvcmctZWxlbWVu dC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtcHJvcGVydHktaW5oZXJpdGVkIGlmXSAxIFtpZiBsZXQq IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LXNlY3Rpb24tcGFyc2VyIGNvbmQgc2V0cSBsZXQg c2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdo aWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb25dIDQgW2lmIGxldCogaWYgbGV0KiBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0 Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUt cmVzdHJpY3Rpb25dIDMgW2xldCogaWYgbGV0KiBhbmQgaWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVm ZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2Ut dG8gc2V0cV0gMSBbbGV0KiBhbmQgbGV0KiBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWhlYWRsaW5lLWRlZmVy cmVkIGFwcGx5IG9yZy1lbGVtZW50LS1wcm9wZXJ0eSBvcmctZWxlbWVudC0tcHJvcGVydHkgYW5k IGlmICIjPGxhbWJkYSAweGQ0NTYyNjljM2U5ZDE2ZT4iIGZ1bmNhbGxdIDEgW2VxIGlmIGxldCBj b25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0t Y2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNo ZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUt ZW50ZXJdIDIgW2NhciBpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2lu IGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxl c3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRy ZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlcl0gMSBbaWYgbGV0IGNvbmQgbGV0KiBhbmQg bGV0KiBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVu dC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIG9yZy1lbGVtZW50LXR5cGUgbWVt cSBpZl0gMSBbaWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1j YWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hl LWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHNhdmUt Y3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBzZXRxXSAxIFtzYXZlLWV4 Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBvcmctZWxlbWVudC10eXBlIG1lbXEgaWZdIDYg W29yZy10aW1lLXN0cmluZy10by10aW1lIGNvbmRpdGlvbi1jYXNlIHRpbWUtdG8tZGF5cyBjb25k IG9yZy10aW1lLXN0cmluZy10by1hYnNvbHV0ZSBhcHBseSBjb25kaXRpb24tY2FzZSBvcmctYWdl bmRhLS10aW1lc3RhbXAtdG8tYWJzb2x1dGUgY29uZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxh bWJkYSAweGQ0NTYyNjljM2U5ZDE2ZT4iIGZ1bmNhbGwgY29uc10gNyBbYW5kIGxldCogb3Igb3Jn LWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxl bWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVy IGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJv Z24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yXSAyIFtz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2gg b3JnLWVsZW1lbnQtLXBhcnNlLXRvIG9yZy1lbGVtZW50LXR5cGUgbWVtcSBpZiBpZiBpZiBpZiB3 aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW29yZy1lbGVt ZW50LS1wcm9wZXJ0eSBtZW1xIGFuZCBpZiAiIzxsYW1iZGEgMHhkNDU2MjY5YzNlOWQxNmU+IiBm dW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZl0gMSBbaWYg bGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNo ZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRl ciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRl ciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRl ciBhdmwtdHJlZS1lbnRlcl0gMSBbbG9va2luZy1hdC1wIGlmIG9yZy1lbGVtZW50LXRpbWVzdGFt cC1wYXJzZXIgbGV0IHdoaWxlIGxldCogc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtcGxhbm5p bmctcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJl bnQtZWxlbWVudCBzZXRxIGlmIGlmXSAxIFtvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1l bGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1l bnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBh dmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2du IGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvcl0gMSBbaWYg bGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEg aWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZl LWN1cnJlbnQtYnVmZmVyXSAxIFt3aGlsZSBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMg Y29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxNiBbYW5kIHdoaWxl IHNhdmUtZXhjdXJzaW9uIGxldCogY29uZCBzZXRxIGxldCBvcmctZWxlbWVudC0tb2JqZWN0LWxl eCBsZXQgd2hpbGUgY2F0Y2ggbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBjYXRjaF0gMSBbbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlh dGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtc2V4cHMgY29ucyBz ZXRxIGxldCBjb25kIGxldF0gMzkgW3RpbWUtZGF0ZS0tZGF5LWluLXllYXIgdGltZS10by1kYXlz IG9yZy10b2RheSBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxldCBj b25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbl0gMSBbbG9v a2luZy1hdC1wIGNvbmQgbGV0IGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1l bnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJp Y3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW29yZy1lbGVtZW50LWNvbnRlbnRzLWVuZCBlcSBpZiBj YXRjaCBwcm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2 ZS1yZXN0cmljdGlvbl0gMiBbbGV0KiBhbmQgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0t Y2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNo ZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUt ZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0 XSAxIFtjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGxldCog b3JnLWFnZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxl dCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uXSA2IFtjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5j dGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1j bG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqXSAxOCBbc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxldCogb3JnLWFn ZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBjb25kIGxldCBjYXRjaCB3aGlsZSB3aGls ZSBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdF0gNjEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0KiBvcmctYWdl bmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0XSA0IFtj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0 aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNs b3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQt c2NoZWR1bGVkXSAxOCBbaWYgb3IgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlm IHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMTkgW2FuZCBj b25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQg c2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2hdIDMgW2NhciBlcSBpZiBsZXQgY29uZCBsZXQqIGFu ZCBsZXQqIGFuZCBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNh Y2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVu dGVyIGF2bC10cmVlLS1kby1lbnRlcl0gMiBbYW5kIGxldCogc2V0LWJ1ZmZlciBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1oZWFkbGluZS1kZWZlcnJlZCBhcHBseSBvcmctZWxlbWVu dC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5IGFuZCBpZiAiIzxsYW1iZGEgLTB4MWFi ZTY3M2RiNjgyZjY1Mz4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duXSAxIFtsZXQqIHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVs ZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBs ZXQgY29uZCBsZXRdIDEwIFthdmwtdHJlZS0tZW50ZXItYmFsYW5jZSBhdmwtdHJlZS0tZG8tZW50 ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBw cm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0 cSBpZiBpZiB3aGlsZSBsZXQgbGV0Kl0gMSBbbGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9y IG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3Jn LWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVy IHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBz ZXRxIGlmXSA0IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSAy OCBbY2FyIGlmIGxldCBjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxl bWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb25dIDEgW2lmIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBh cnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0XSAyIFtzYXZlLWV4Y3Vyc2lvbiBvcmct ZWxlbWVudC1wbGFubmluZy1wYXJzZXIgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmct ZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAzIFtvciBpZiBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgb3JnLWFnZW5kYS1za2lwIGNhdGNoIHByb2duIGlmICIj PGxhbWJkYSAtMHgyNjRkZWRlMzAwYzNhYjU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBp Zl0gMiBbb3JnLWVsZW1lbnQtLWxpc3Qtc3RydWN0IG9yIG9yZy1lbGVtZW50LXBsYWluLWxpc3Qt cGFyc2VyIGNvbmQgbGV0IGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQt LWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqXSAzIFttYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDI1IFtjb25kIGxldCogYW5kIGxl dCogc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1oZWFkbGluZS1k ZWZlcnJlZCBhcHBseSBvcmctZWxlbWVudC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5 IGFuZCBpZiAiIzxsYW1iZGEgLTB4MWFiZTY3M2RiNjgyZjY1Mz4iIGZ1bmNhbGwgY29ucyBzZXRx XSAxIFtvciBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIgbm90IGlmIHByb2duIGlmIGxl dCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBv cmctZWxlbWVudC1hdC1wb2ludCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAxIFtt YWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZV0gMyBbbGV0 IHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ25dIDkgW2xldCBpZiBsZXQqIHByb2duIHVu d2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9y Zy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxldCBjb25kIGxldF0gMzggW2FuZCBs ZXQqIHNhdmUtZXhjdXJzaW9uIHByb2duIGlmIG9yZy1lbGVtZW50LXRpbWVzdGFtcC1wYXJzZXIg bGV0IHdoaWxlIGxldCBwcm9nbiBpZiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tZ2V0LXRp bWUtcHJvcGVydGllcyBuY29uYyBzZXRjYXIgc2F2ZS1yZXN0cmljdGlvbl0gMSBbY29uZCBsZXQq IG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAg b3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1k by1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1k by1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1j dXJyZW50LWJ1ZmZlcl0gMSBbbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCogb3Ig b3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmct ZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVu dGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1l bnQtLWNhY2hlLXB1dF0gMiBbYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWV4Y3Vyc2lvbiBsZXQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0taGVh ZGxpbmUtcGFyc2UtdGl0bGUgYXBwbHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5IG9yZy1lbGVtZW50 LXByb3BlcnR5LWluaGVyaXRlZCBpZiBvcmctaW4tYXJjaGl2ZWQtaGVhZGluZy1wIHByb2duIHVu d2luZC1wcm90ZWN0IGxldF0gNyBbYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBv cmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1l bGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50 ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHNhdmUtY3VycmVu dC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dF0gMSBbc2F2ZS1leGN1cnNpb24gcHJvZ24g aWYgb3JnLWVsZW1lbnQtdGltZXN0YW1wLXBhcnNlciBsZXQgd2hpbGUgbGV0IHByb2duIGlmIHNh dmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1nZXQtdGltZS1wcm9wZXJ0aWVzIG5jb25jIHNldGNh ciBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXJdIDEg W29yZy1lbGVtZW50LWJlZ2luIG9yIG1heCBzZXRxIGlmIGlmIGlmIHByb2duIHVud2luZC1wcm90 ZWN0IGxldCBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZl0gMiBbYW5kIGxldCogb3JnLWVsZW1lbnQt Y29udGVudHMtZW5kIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBh cnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmXSAxIFtvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9y Zy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVs ZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRl ciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50 LS1jYWNoZS1wdXQgb3Igc2V0cSBpZl0gMSBbbGV0KiBpZiBsZXQqIGFuZCBsZXQqIG9yIG9yZy1l bGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1l bnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBh dmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1j YWNoZS1wdXRdIDEgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRs aW5lcyBzZXRxXSAxNyBbaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0 ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29u cyBzZXRxIGxldCBjb25kIGxldCB3aGlsZV0gMTA1IFtvcmctZWxlbWVudC1jcmVhdGUgbGV0KiBz YXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1wbGFpbi1saXN0LXBhcnNlciBjb25kIGxldCBjb25k IHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0 cSBpZiBpZiB3aGlsZSBsZXRdIDEgW2lmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFi YnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxp bmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldF0gNDUgW2xldCogYW5kIGxldCogb3JnLWVs ZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxl bWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2VdIDIgW3NhdmUtZXhjdXJzaW9uIG9yZy1lbGVt ZW50LXNlY3Rpb24tcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1l bnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJp Y3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMyBbdGltZS10by1kYXlz IG9yZy10b2RheSBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxl dCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyXSA4IFtvcmctdG9kYXkgZXEgb3JnLWFnZW5kYS10b2RheS1w IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxl dCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSA4IFtsZXQq IGlmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5 IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJl IGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJv Z24gaWYgcHJvZ24gaWZdIDEgW2xvb2tpbmctYXQtcCBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJz aW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0 Y2hdIDEgW2Njb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0 KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBs ZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbl0gOCBbbGV0KiBhbmQgbGV0KiBvcmct ZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQt LWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRv LWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50 ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMSBbYW5kIGxldCBvcmctZWxlbWVudC0t bGlzdC1zdHJ1Y3Qgb3Igb3JnLWVsZW1lbnQtcGxhaW4tbGlzdC1wYXJzZXIgY29uZCBsZXQgY29u ZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNl dHEgaWYgaWYgd2hpbGVdIDMgW2lmIHNhdmUtY3VycmVudC1idWZmZXIgaWYgbGV0KiBvcmctYWdl bmRhLWdldC1kYXktZW50cmllcyBhcHBseSBzZXRxIGNvbmQgbGV0IGNhdGNoIHdoaWxlIHdoaWxl IGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMyBbd2hp bGUgY2F0Y2ggcHJvZ24gc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQq IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0XSAyIFtpZiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgaWYgbGV0KiBvcmctYWdlbmRh LWdldC1kYXktZW50cmllcyBhcHBseSBzZXRxIGNvbmQgbGV0IGNhdGNoIHdoaWxlIHdoaWxlIGxl dCogY2F0Y2hdIDEgW3RpbWUtdG8tZGF5cyBvcmctdG9kYXkgbGV0KiBvcmctYWdlbmRhLWdldC1z Y2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMTEgW21hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jtc10gNSBbbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXBy b3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5k YS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXRdIDQxIFtsZXQqIGlmIGxldCog b3JnLWVsZW1lbnQtZW5kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRv IGNvbmRpdGlvbi1jYXNlIGlmIHNldHFdIDEgW2lmIG9yZy1jaGVjay1hZ2VuZGEtZmlsZSBjYXRj aCB3aGlsZSB3aGlsZSBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhIGZ1bmNh bGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDQ1IFttYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24g b3JnLWVsZW1lbnQtY2FjaGUtbWFwXSAzMiBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWNv bnRlbnRzLWJlZ2luIGdvdG8tY2hhciBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBj b25kaXRpb24tY2FzZSBpZiBzZXRxXSAxIFthbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUt a2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21w YXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIg cHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNl dHEgaWZdIDIgW3NldHEgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0t Y2FjaGUtcHV0IGNvbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUt Y3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNl IGlmIHNldHEgbGV0XSAxIFtjb25kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmct ZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwt dHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJy ZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHFdIDEgW3NldHEgaWYgaWYg d2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBz ZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAxIFtuY29uYyBzZXRjYXIgc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1oZWFkbGlu ZS1kZWZlcnJlZCBhcHBseSBvcmctZWxlbWVudC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtLXByb3Bl cnR5IGFuZCBpZiAiIzxsYW1iZGEgLTB4MmNlYTdlZjRlNWI1MjQwPiIgZnVuY2FsbCBjb25zIHNl dHEgaWZdIDIgW2FuZCBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZp bGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWJsb2NrcyBjb25zIHNldHEg bGV0IGNvbmQgbGV0IHdoaWxlXSAxOCBbc2V0cSBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3Jn LWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0XSAxIFtjY29udi1hbmFseXplLWZvcm0gY2Nv bnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2Nv bnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9y bSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVs ZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNv bmRdIDE2IFtpZiBsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPCBhbmQgb3IgaWYgaWYg d2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMyBbbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRs aW5lcyBzZXRxXSAxMCBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGxdIDE5 IFtsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBs ZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1 cnJlbnQtYnVmZmVyIGlmIGxldCpdIDE3IFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbF0gNSBbaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJi cmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC1ibG9ja3Mg Y29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZV0gOTEgW2Njb252LWFuYWx5emUtZm9ybSBjY29u di1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29u di1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29u di0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFr ZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQq IG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zXSAyNyBbb3JnLWVsZW1lbnQtaXRlbS1wYXJz ZXIgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVt ZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoXSAxIFttYXBjYXIgbGV0KiBvcmctYWdlbmRh LWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9n biBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy XSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDEwIFtt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3Jn LWVsZW1lbnQtY2FjaGUtbWFwIGxldCpdIDggW2lmIGxldCBjb25kIGxldCogYW5kIGxldCogYW5k IGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxl c3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRy ZWUtZW50ZXIgcHJvZ24gaWZdIDEgW2Njb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1k ZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUt cmVzdHJpY3Rpb25dIDI3IFtjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24g bGV0KiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHBy b2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxp bmVzIHNldHEgbGV0XSAxMSBbY2F0Y2ggd2hpbGUgd2hpbGUgbGV0KiBjYXRjaCBvcmctYWdlbmRh LWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNhbGwtaW50ZXJhY3RpdmVseSBjb25kIGxldCog Y2F0Y2ggb3JnLWFnZW5kYSBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWxdIDYgW2lmIHNhdmUtZXhjdXJzaW9uIGxldCogc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1l bnQtaGVhZGxpbmUtcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1l bnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqXSAxIFtmdW5jdGlv biBtYXBjYXIgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25k IGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbl0gMTggW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxs LWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsXSAx MCBbc2V0cSBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZiBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRh eS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZF0gMSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYt bWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlXSAxNSBbcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNo ZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hp bGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEg W21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUg ZnVuY3Rpb24gbWFwY2FyIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBs ZXQgY29uZF0gNiBbcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFuZCBvciBhbmQgb3IgaWYgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0IG9yZy1hZ2VuZGEtc2tpcCBjYXRjaCBwcm9nbiBpZiAiIzxs YW1iZGEgMHhkNDU2MjY5YzNlOWQxNmU+Il0gMyBbaWYgbGV0KiBpZiBsZXQqIGFuZCBsZXQqIG9y IG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3Jn LWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1l bnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxIFtzYXZl LWV4Y3Vyc2lvbiBwcm9nbiBpZiBvcmctZWxlbWVudC10aW1lc3RhbXAtcGFyc2VyIGxldCB3aGls ZSBsZXQqIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LXBsYW5uaW5nLXBhcnNlciBjb25kIHNl dHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBp Zl0gMiBbc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNl dHEgcHJvZ24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVnaW5dIDEgW2xldCogb3Igb3JnLWVsZW1l bnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0t Y2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10 cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10 cmVlLWVudGVyIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hl LXB1dCBvcl0gMSBbbmNvbmMgb3JnLWVsZW1lbnQtY3JlYXRlIGxldCogc2F2ZS1leGN1cnNpb24g cHJvZ24gaWYgb3JnLWVsZW1lbnQtdGltZXN0YW1wLXBhcnNlciBsZXQgd2hpbGUgbGV0KiBzYXZl LWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1wbGFubmluZy1wYXJzZXIgY29uZCBzZXRxIGxldCBzYXZl LWV4Y3Vyc2lvbl0gMSBbaWYgb3JnLWVsZW1lbnQtLW5leHQtbW9kZSBpZiBzZXRxIHByb2duIHBy b2duIGlmIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXJdIDEgW3NhdmUtZXhjdXJzaW9uIGxldCogY2F0 Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2OWMzZTlkMTZlPiIgZnVuY2FsbCBjb25zIHNl dHEgaWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWZdIDQgW2lmIGxldCogb3JnLWVsZW1lbnQt ZW5kIHNldHEgcHJvZ24gd2hpbGUgbGV0IGNvbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRv IG9yZy1lbGVtZW50LXR5cGUgbWVtcV0gMSBbY29uZCBsZXQqIGFuZCBsZXQqIGFuZCBsZXQqIG9y IG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3Jn LWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1l bnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1l bnRlciBhdmwtdHJlZS0tZG8tZW50ZXJdIDEgW2lmIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IHNhdmUtY3VycmVudC1idWZmZXIgb3Jn LWVsZW1lbnQtLWhlYWRsaW5lLXBhcnNlLXRpdGxlIGFwcGx5IG9yZy1lbGVtZW50LS1wcm9wZXJ0 eSBvcmctZWxlbWVudC1wcm9wZXJ0eS1pbmhlcml0ZWQgaWYgb3JnLWluLWFyY2hpdmVkLWhlYWRp bmctcCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMSBbbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJz ZS10byBvcmctZWxlbWVudC10eXBlIG1lbXEgaWYgaWYgaWYgaWYgd2hpbGUgaWYgbGV0Kl0gMSBb YW5kIGxldCogc2F2ZS1leGN1cnNpb24gcHJvZ24gaWYgb3JnLWVsZW1lbnQtdGltZXN0YW1wLXBh cnNlciBsZXQgd2hpbGUgbGV0KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1wbGFubmluZy1w YXJzZXIgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1l bGVtZW50XSA0IFtsZXQqIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LXBsYW5uaW5nLXBhcnNl ciBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1l bnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uXSAxIFtpZiBsZXQqIGFuZCBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVs ZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRy ZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBw cm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxIFtpZiBpZiBvcmctZWxlbWVudC0tY2FjaGUt a2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIg YXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9n biBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBp ZiBpZl0gMiBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCogb3Igb3JnLWVs ZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVu dC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24g aWYgcHJvZ24gaWZdIDEgW2NkciBjYXIgaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxl bWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNh Y2hlLWtleS1sZXNzLXAgbm90IGFuZCBvcl0gMSBbb3JnLWluLWNvbW1lbnRlZC1oZWFkaW5nLXAg YW5kIG9yIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBvcmctYWdlbmRhLXNraXAgY2F0Y2gg cHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2OWMzZTlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHEg aWZdIDIgW2xldCogYW5kIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBv cmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBub3QgYW5kIG9yIGlmIGlmIHdoaWxlIGlmIGxl dCpdIDEgW3NhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWhl YWRsaW5lLWRlZmVycmVkIGFwcGx5IG9yZy1lbGVtZW50LS1wcm9wZXJ0eSBvcmctZWxlbWVudC0t cHJvcGVydHkgYW5kIGlmICIjPGxhbWJkYSAweGQ0NTYyNjljM2U5ZDE2ZT4iIGZ1bmNhbGwgY29u cyBzZXRxIGlmIHByb2duIGlmIHByb2duXSAxIFthbmQgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxl bWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50 LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZs LXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZs LXRyZWUtZW50ZXIgcHJvZ24gaWZdIDEgW29yZy1lbGVtZW50LWNyZWF0ZSBsZXQqIHNhdmUtZXhj dXJzaW9uIG9yZy1lbGVtZW50LXBsYW5uaW5nLXBhcnNlciBjb25kIHNldHEgbGV0IHNhdmUtZXhj dXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQg bGV0KiBzYXZlLXJlc3RyaWN0aW9uXSAxIFt3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZm ZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10 byBvcmctZWxlbWVudC10eXBlIG1lbXEgaWYgaWZdIDEgW29yZy1lbGVtZW50LWJlZ2luIGxldCog b3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBv cmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRv LWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1 cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cV0gMSBbbm90IG9yIGFu ZCBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHBy b2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCpdIDEgW3Byb2duIGlm IHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVh ZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldF0gOCBbY2Nv bnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2Nv bnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2Nv bnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1h a2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0 KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXRdIDIxIFttYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbF0gMjcgW2NvbmQgbGV0KiB3aGlsZSBpZiBsZXQq IHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2 ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9y Zy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZl0gOCBbbGV0ICIjPGxhbWJkYSAt MHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3Vu ZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWYg bGV0KiBvcmctYWdlbmRhLWdldC1kYXktZW50cmllcyBhcHBseSBzZXRxIGNvbmQgbGV0IGNhdGNo IHdoaWxlXSA1OSBbcHJvZ24gc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmXSAzIFthbmQg bGV0KiBzZXRxIHByb2duIHdoaWxlIGxldCBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10 byBjb25kaXRpb24tY2FzZSBpZiBzZXRxXSAxIFtzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQg bGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGlmIGxldCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHldIDUgW2xl dCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZl ciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWZdIDQg W3Byb2duIGNvbnMgc2V0cSBsZXQgY29uZCB3aGlsZSBjYXRjaCBzYXZlLWV4Y3Vyc2lvbiBsZXQg b3JnLWVsZW1lbnQtLWxpc3Qtc3RydWN0IG9yIG9yZy1lbGVtZW50LXBsYWluLWxpc3QtcGFyc2Vy IGNvbmQgbGV0IGNvbmQgc2V0cV0gMiBbZXF1YWwgYW5kIGlmIGxldCBsZXQgaWYgbGV0KiBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0 KiBvcmctYWdlbmRhLWdldC1zZXhwcyBjb25zXSAxOCBbYW5kIGxldCogYW5kIGxldCogb3Igb3Jn LWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxl bWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJv Z24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0 XSAxIFt3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxldCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJp ZXMgYXBwbHkgc2V0cSBjb25kIGxldCBjYXRjaF0gMyBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252 LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQq XSA2IFtvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3Jn LWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZs LXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHByb2duIGlmIHNhdmUtY3Vy cmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBzZXRxXSAxIFtub3QgaWYgcHJv Z24gaWYgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24g bGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gbGV0IHByb2duIGlmXSAxIFtpZiBsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMt YmVnaW4gbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1oZWFkbGluZS1kZWZlcnJlZCBhcHBseSBvcmctZWxlbWVu dC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5IGFuZCBpZl0gMSBbd2hpbGUgbGV0KiBv cmctYWdlbmRhLWdldC1ibG9ja3MgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0 KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyXSA4IFtsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtc2V4cHMgY29ucyBzZXRxIGxldCBj b25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxMSBbbWVtcSBhbmQgcHJvZ24gb3IgcHJvZ24g YXJlZiBwcm9nbiBwcm9nbiBvcmctZWxlbWVudC0tY2FjaGUtcm9vdCBsZXQqIHNhdmUtY3VycmVu dC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbl0gMyBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVy cHJldGVkLWNsb3N1cmVdIDMgW2Njb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQg cHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRh LWdldC1zY2hlZHVsZWQgY29uc10gMTcgW2NhciBpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9y Zy1lbGVtZW50LWNvbnRlbnRzLWJlZ2luIHByb2duIGlmIG9yIHNldHEgaWYgcHJvZ24gc2V0cSBw cm9nbl0gMSBbaWYgb3IgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGxldCogc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVu dC1jYWNoZS1tYXAgbGV0Kl0gMTEgW2xldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmct YWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGVdIDExIFtjb25kIG5v dCB3aGlsZSBsZXQgbGV0KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1wYXJhZ3JhcGgtcGFy c2VyIGNvbmQgbGV0IGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1 cnJlbnQtZWxlbWVudCBzZXRxIGlmXSAxIFtjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1h bmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0 aW9uIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBp ZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqXSAyMCBbbGV0KiBzYXZlLWV4 Y3Vyc2lvbiBwcm9nbiBpZiBvcmctZWxlbWVudC10aW1lc3RhbXAtcGFyc2VyIGxldCB3aGlsZSBs ZXQqIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LXBsYW5uaW5nLXBhcnNlciBjb25kIHNldHEg bGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cV0gMiBb ZnVuY3Rpb24gbGV0KiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHBy b2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1n ZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXRdIDE4IFtsZXQqIGFuZCBsZXQqIG9yIG9yZy1lbGVt ZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQt LWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwt dHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yXSAyIFtjb25zIHNldHEgaWYgcHJvZ24gaWYgcHJv Z24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uXSAzIFt0aW1lLXRvLWRheXMgb3JnLXRvZGF5IGxldCogb3JnLWFnZW5kYS1nZXQt dGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxl dCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSA2IFtpZiBzYXZlLWN1cnJlbnQtYnVm ZmVyIHNldHEgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gMiBbYW5kIGxldCogcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFn ZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlXSAxNyBbbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVz ZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxs LWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSA5IFtpZiBsZXQqIHBy b2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBs ZXQqIG9yZy1hZ2VuZGEtZ2V0LXNleHBzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGVdIDU4 IFtvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUt ZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0 IG9yIHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbl0gMSBbaWYgbGV0KiBvcmctZWxlbWVudC1jb250ZW50cy1iZWdpbiBsZXQgY29uZCBsZXQg d2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZl0g MSBbY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1t YXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUg bGV0IGxldCogcHJvZ25dIDQgW2xldCogb3JnLWVsZW1lbnQtZW5kIGxldCB3aGlsZSBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0 Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUt cmVzdHJpY3Rpb25dIDEgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2Nv bnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2Nv bnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9y bSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVs ZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cV0g MjMgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gMiBb Y2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciBs ZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxl IGxldCBsZXQqIHByb2duIGxldF0gNSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zXSAyIFtsZXQgaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJi cmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC1ibG9ja3Mg Y29ucyBzZXRxIGxldCBjb25kIGxldF0gMzQgW2xldCogb3JnLWVsZW1lbnQtYmVnaW4gPSBhbmQg aWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBj YXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2VdIDEgW2xldCogb3JnLWVs ZW1lbnQtYmVnaW4gb3IgbWF4IHNldHEgaWYgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 IGxldCBpZiBwcm9nbiBpZiBpZl0gMSBbb3JnLWVsZW1lbnQtLXBhcnNlLXRvIG9yZy1lbGVtZW50 LXR5cGUgbWVtcSBpZiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duXSAxIFtpZiBsZXQqIG9yZy1lbGVtZW50LWJl Z2luIGxldCogd2hpbGUgaWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1j YWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1j dXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG9dIDYgW2FuZCBsZXQqIGFu ZCBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1s ZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10 cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10 cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ25dIDEg W21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1z Y2hlZHVsZWQgY29uc10gMTEgW2VxIGlmIGxldCogcHJvZ24gaWYgbGV0IHNhdmUtZXhjdXJzaW9u IG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAxIFthbmQgbGV0KiBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxl bWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDEgW2FuZCBsZXQqIG9yIG9yZy1l bGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1l bnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2du IGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBzZXRxIGlm IGlmXSA0IFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcF0gMSBbc2F2ZS1leGN1cnNpb24gc2F2ZS1l eGN1cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFw IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHFdIDEgW3doaWxlIGxldCBsZXQqIHNh dmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LXBhcmFncmFwaC1wYXJzZXIgY29uZCBsZXQgY29uZCBz ZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEg aWYgaWYgd2hpbGVdIDEgW2lmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxl bWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50 LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBp ZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXRdIDEg W2lmIHByb2duIGxldCogc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtcGxhaW4tbGlzdC1wYXJz ZXIgY29uZCBsZXQgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3Vy cmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGVdIDEgW3RpbWUtZGF0ZS0tZGF5LWluLXllYXIg dGltZS10by1kYXlzIG9yZy10b2RheSBlcSBvcmctYWdlbmRhLXRvZGF5LXAgbGV0KiBvcmctYWdl bmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24g bGV0XSAxIFtvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldF0g MSBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0KiBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1l bGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHFd IDkgW2xldCogb3JnLWVsZW1lbnQtY29udGVudHMtZW5kIGxldCBjb25kIGxldCB3aGlsZSBsZXQg bGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIg Y2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHFdIDEgW2xl dCogcHJvZ24gaWYgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1l bnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2hdIDEgW2FuZCBsZXQqIGFuZCBsZXQqIG9yIG9y Zy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVs ZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRl ciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHBy b2duIGlmIHNhdmUtY3VycmVudC1idWZmZXJdIDEgW21hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUg ZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxp bmVzXSA0IFtjb25kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0t Y2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8t ZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8t ZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxl bWVudC0tY2FjaGUtcHV0IG9yXSAxIFtjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxl dCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBjb25kXSA1IFtsZXQgbGV0 KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1wYXJhZ3JhcGgtcGFyc2VyIGNvbmQgc2V0cSBs ZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlm IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb25dIDEgW2Zvcm1hdC10aW1lLXN0cmluZyBz dWJzdHJpbmcgcmVnZXhwLXF1b3RlIGNvbmNhdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFt cHMgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXRdIDI1IFtm dW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVs ZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMTAgW2Zvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5k YS1nZXQtYmxvY2tzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24g bGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW2VxIGlmIGxldCBjb25kIGxl dCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUt a2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21w YXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbl0gMSBbb3Igb3JnLWVs ZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVu dC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24g aWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9y IHNldHEgaWYgaWZdIDMgW2FuZCBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1n ZXQtYmxvY2tzIGNvbnMgc2V0cV0gNCBbZXF1YWwgYW5kIGlmIGxldCBsZXQgaWYgbGV0KiBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0 KiBvcmctYWdlbmRhLWdldC1ibG9ja3MgY29uc10gMjIgW2xldCogc2F2ZS1leGN1cnNpb24gb3Jn LWVsZW1lbnQtaXRlbS1wYXJzZXIgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxl bWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gNiBbbGV0KiBvciBsZXQgaWYgcHJvZ24gaWYgc2F2ZS1j dXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHEgaWYgaWYgd2hpbGUg bGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMSBbb3JnLXRvZGF5IGxldCogb3JnLWFnZW5kYS1n ZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24g bGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0g NiBbbGV0KiBhbmQgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1l bGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10 cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBwcm9nbiBpZiBzYXZlLWN1cnJl bnQtYnVmZmVyXSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbl0gNCBb cHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZl0gNyBbcHJvZ24gbGV0KiBzYXZlLWV4 Y3Vyc2lvbiBvcmctZWxlbWVudC1wbGFpbi1saXN0LXBhcnNlciBjb25kIGxldCBjb25kIHNldHEg bGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBp ZiB3aGlsZSBsZXRdIDIgW29yIHNldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxl bWVudC0tY2FjaGUtcHV0IG9yIHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50 LS1wYXJzZS10b10gMSBbaWYgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBv cmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwg Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciBsZXQqIG9yZy1h Z2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmRdIDIgW2xvb2tpbmctYXQtcCBj b25kIHdoaWxlIGNhdGNoIHNhdmUtZXhjdXJzaW9uIGxldCBvcmctZWxlbWVudC0tbGlzdC1zdHJ1 Y3Qgb3Igb3JnLWVsZW1lbnQtcGxhaW4tbGlzdC1wYXJzZXIgY29uZCBsZXQgY29uZCBzZXRxIGxl dCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50XSAxIFtmdW5jdGlv biBtYXBjYXIgbGV0KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXQgY29u ZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb25dIDI0IFtzZXRxIGlmIGlmIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBsZXQqIHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3Jn LWVsZW1lbnQtY2FjaGUtbWFwXSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXNdIDIzIFttYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbF0gMiBbcHJvZ24gaWYgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJy ZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNl LXRvXSAxIFtvcmctaGVhZGxpbmUtcmUgcmUtc2VhcmNoLWZvcndhcmQgYW5kIGlmIGlmIHByb2du IGlmIGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaF0gMSBbZXEgY29uZCBsZXQqIGFuZCBsZXQqIGFu ZCBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1s ZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10 cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZl0gMSBbYW5kIGxldCogb3JnLWVs ZW1lbnQtYmVnaW4gPSBvciBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmXSAzIFthbmQgbGV0KiBvciBvcmctZWxlbWVudC0t Y2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNo ZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBwcm9n biBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cV0g MSBbY2FyIGVxIGlmIGxldCBjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0 KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZp bmQgYW5kXSA0IFthbmQgbGV0KiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duXSAyIFtsZXQqIG9y IGxldCBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlv bi1jYXNlIGlmIHNldHFdIDEgW3doaWxlIGxldCogb3JnLWFnZW5kYS1nZXQtc2V4cHMgY29ucyBz ZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSA2IFtsZXQqIHNhdmUtY3VycmVu dC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1w YXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uXSA3IFtzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBp ZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNj aGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlXSAyNCBbY2NvbnYtLWFuYWx5emUt ZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBz IGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCpdIDMgW21hY3JvZXhwLS1hbGwt Y2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJl dGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5k YS1nZXQtc2NoZWR1bGVkXSAyIFttYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRl ZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMg Y29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXRdIDEgW29yZy1l bGVtZW50LS1jYWNoZS1wdXQgY29uZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0 aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZl LWV4Y3Vyc2lvbiBsZXRdIDEgW2Njb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQg cHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRh LWdldC1kZWFkbGluZXMgc2V0cV0gOSBbaWYgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0t Y2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNo ZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBwcm9n biBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXRdIDEgW21hY3Jv ZXhwLW1hY3JvZXhwYW5kIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2Ut aW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBv cmctYWdlbmRhLWdldC1kZWFkbGluZXNdIDIgW2lmIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1l bnQtY2FjaGUtbWFwIGxldCpdIDIgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZv cm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1m dW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRl ZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIGxldCBwcm9nbiBpZl0gMiBbY2FyIGVxIGlmIGxldCBjb25kIGxldCogYW5kIGxldCogbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZV0gMiBbZm9ybWF0IGxp c3QgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3 aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0g MiBbb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBh cmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBw cm9nbiBpZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1w dXQgb3Igc2V0cSBpZiBpZiB3aGlsZV0gMSBbYW5kIG5vdCBjb25kIG5vdCB3aGlsZSBsZXQgbGV0 KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1wYXJhZ3JhcGgtcGFyc2VyIGNvbmQgc2V0cSBs ZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmXSA0 IFtpZiBsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0t Y2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNo ZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUt LWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbl0gMiBbYW5k IGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1h dCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdo aWxlIGxldF0gMTAgW3NhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlm IHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVh ZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldF0gMTUgW29yIGxldCogc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVu dC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBj b25kXSAyIFtsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3Vy cmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWhlYWRsaW5lLWRlZmVycmVkIGFwcGx5IG9yZy1lbGVt ZW50LS1wcm9wZXJ0eSBvcmctZWxlbWVudC0tcHJvcGVydHkgYW5kIGlmICIjPGxhbWJkYSAtMHgy Y2VhN2VmNGU1YjUyNDA+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZl0gMSBbbGV0IGxldCogc2F2ZS1l eGN1cnNpb24gb3JnLWVsZW1lbnQtaXRlbS1wYXJzZXIgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vy c2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxl dCogc2F2ZS1yZXN0cmljdGlvbl0gMSBbbGV0IGNvbmQgd2hpbGUgY2F0Y2ggc2F2ZS1leGN1cnNp b24gbGV0IG9yZy1lbGVtZW50LS1saXN0LXN0cnVjdCBvciBvcmctZWxlbWVudC1wbGFpbi1saXN0 LXBhcnNlciBjb25kIGxldCBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50 LS1jdXJyZW50LWVsZW1lbnRdIDEgW2xldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBh cnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1l eGN1cnNpb24gc2F2ZS1leGN1cnNpb25dIDYgW29yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRx IGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxldCogb3JnLWFnZW5kYS1nZXQt ZGF5LWVudHJpZXNdIDggW2xldCBpZiBsZXQqIHNhdmUtZXhjdXJzaW9uIHByb2duIGlmIG9yZy1l bGVtZW50LXRpbWVzdGFtcC1wYXJzZXIgbGV0IHdoaWxlIGxldCogc2F2ZS1leGN1cnNpb24gb3Jn LWVsZW1lbnQtcGxhbm5pbmctcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb25dIDEg W2VxIGlmIGxldCogaWYgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9y Zy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJlIGF2 bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24g aWZdIDEgW3Byb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0Kl0gNyBbbGV0KiBpZiBs ZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmct ZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwt dHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwt dHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxIFtzYXZlLWN1cnJlbnQt YnVmZmVyIHNldHEgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqXSA2IFtpZiBsZXQgY29uZCBs ZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWNvbnRlbnRzLWVuZCBzZXRxIHByb2duIHByb2duIGlm IGxldCBjb25kIGxldCB3aGlsZSBsZXRdIDEgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFs eXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252 LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVu Y3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVz IHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlXSA3IFtjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmct ZWxlbWVudC1hdC1wb2ludCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9n biBpZiBwcm9nbl0gNCBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zXSA4IFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbF0gMTkgW29y Zy1pdGVtLXJlIGxvb2tpbmctYXQtcCBjb25kIGxldCBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJz aW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uXSAxIFtpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVs ZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRp b24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAxMiBbY2NvbnYtYW5hbHl6ZS1m b3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1m b3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1m b3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1m b3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1m b3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFs eXplLWZvcm1dIDIgW29yZy1pbi1hcmNoaXZlZC1oZWFkaW5nLXAgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IGFuZCBvciBhbmQgb3IgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IG9yZy1hZ2Vu ZGEtc2tpcCBjYXRjaCBwcm9nbiBpZl0gNSBbbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1l bGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gc2V0cSBw cm9nbiBpZiBwcm9nbiBvcmctZWxlbWVudC1iZWdpbiBvcl0gMiBbc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJz ZS10byBzZXRxIHByb2duIGlmIHByb2duIG9yZy1lbGVtZW50LWJlZ2luIG9yIG1heCBzZXRxIGlm IGlmIGlmXSAxIFtvcmctZWxlbWVudC10eXBlIG1lbXEgaWYgaWYgaWYgaWYgd2hpbGUgaWYgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQq XSAxIFtlcSBpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWNvbnRlbnRzLWVu ZCBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbl0gMSBbbGV0IG9yZy1pbi1zcmMtYmxvY2stcCBvciBpZiBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQgb3JnLWFnZW5kYS1za2lwIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAtMHgyNjRkZWRl MzAwYzNhYjU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZl0gMyBbY29ucyBzZXRxIGxldCBjb25kIGxl dCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxldCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXNd IDMgW29yZy1lbGVtZW50LS1wcm9wZXJ0eSBvcmctZWxlbWVudC1wcm9wZXJ0eS1pbmhlcml0ZWQg aWYgb3JnLWluLWFyY2hpdmVkLWhlYWRpbmctcCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYW5k IG9yIGFuZCBvciBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgb3JnLWFnZW5kYS1za2lwXSAz IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxs IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbl0gMjMgW2xldCBjb25kIGxl dCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUt a2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21w YXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIg cHJvZ24gaWZdIDEgW2xldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0t Y2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8t ZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8t ZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxl bWVudC0tY2FjaGUtcHV0IG9yIHNldHFdIDEgW3NhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0 aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZl LWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgb3JnLWVsZW1lbnQtbGluZWFn ZV0gNCBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rp b24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCpdIDEyIFtpZiBpZiBpZiB3aGlsZSBpZiBsZXQq IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCog b3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzXSAyIFts ZXQqIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LXBhcmFncmFwaC1wYXJzZXIgY29uZCBsZXQg Y29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50 IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCpdIDEgW3Vud2luZC1wcm90ZWN0IGxldCBhYmJyZXZp YXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMg Y29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbl0gMyBbaWYgaWYgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmct YWdlbmRhLWdldC1zY2hlZHVsZWRdIDEgWyIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIg ZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEg YXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWYgbGV0KiBvcmctYWdlbmRhLWdldC1k YXktZW50cmllcyBhcHBseSBzZXRxIGNvbmQgbGV0IGNhdGNoIHdoaWxlIHdoaWxlXSAxIFtpZiBl cSBvcmctYWdlbmRhLXRvZGF5LXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBz ZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlv bl0gNiBbb3JnLWVsZW1lbnQtLXByb3BlcnR5IGxldCogb3JnLS1wcm9wZXJ0eS1sb2NhbC12YWx1 ZXMgbGV0KiBjb25kIG9yZy1lbnRyeS1nZXQgbGV0KiBjYXRjaCBwcm9nbiBpZiAiIzxsYW1iZGEg MHhkNDU2MjY5YzNlOWQxNmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbl0gNSBbY2FyIGVx IGlmIGxldCBjb25kIGxldCogYW5kIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hl LWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29t cGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXJdIDEgW3doaWxlIGxldCogc2F2 ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtcGxhbm5pbmctcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2 ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxl IGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb25dIDEgW2lmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1t YXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kXSAzIFtt ZW1xIGlmIG9yIHNldHEgaWYgcHJvZ24gc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGls ZSBpZiBsZXQqXSAyIFtpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgbGV0IGlmIHByb2duIGlm IGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRd IDEgW29yIGNkciBjYXIgbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRh LWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9n bl0gMiBbb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNv bXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHByb2duIGlm IHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBzZXRxIGlmIGlm IHdoaWxlIGxldF0gMSBbbWFjcm9leHAtbWFjcm9leHBhbmQgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXNdIDExIFtpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCog b3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBv cmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50 ZXIgcHJvZ24gaWZdIDIgW2lmIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBvcmctZWxlbWVudC1saW5l YWdlIHNldHEgb3JnLS1wcm9wZXJ0eS1sb2NhbC12YWx1ZXMgbGV0KiBjb25kIG9yZy1lbnRyeS1n ZXQgbGV0KiBjYXRjaF0gMSBbbGV0IGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3Jn LWVsZW1lbnQtLWNhY2hlLXB1dCBvciBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMSBbY2NvbnYtYW5h bHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5h bHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5h bHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29u di1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5l c10gMTEgW2lmIGxldCogaWYgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5 IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJl IGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVy IGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbl0gMSBbcHJvZ24gaWYgcHJv Z24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHEg aWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZl LWN1cnJlbnQtYnVmZmVyXSAyIFtmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNleHBz IGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDIgW3Byb2duIGxldCogc2F2ZS1leGN1cnNpb24gcHJv Z24gaWYgb3JnLWVsZW1lbnQtdGltZXN0YW1wLXBhcnNlciBsZXQgd2hpbGUgbGV0IHByb2duIGlm IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1nZXQtdGltZS1wcm9wZXJ0aWVzIG5jb25jIHNl dGNhciBzYXZlLXJlc3RyaWN0aW9uXSAxIFtwcm9nbiBsZXQqIHNhdmUtZXhjdXJzaW9uIHByb2du IGlmIG9yZy1lbGVtZW50LXRpbWVzdGFtcC1wYXJzZXIgbGV0IHdoaWxlIGxldCogc2F2ZS1leGN1 cnNpb24gb3JnLWVsZW1lbnQtcGxhbm5pbmctcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1 cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudF0gMiBbc2F2ZS1leGN1cnNpb24gb3Jn LWVsZW1lbnQtcGxhaW4tbGlzdC1wYXJzZXIgY29uZCBsZXQgY29uZCBzZXRxIGxldCBzYXZlLWV4 Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMSBbY29uZCBvciBsZXQqIHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUt bWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmRdIDEgW3NldHEg cHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNl dHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoXSAxIFtsZXQqIGlmIGxldCogYW5kIGxldCogb3Igb3Jn LWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBub3Qgb3Ig YW5kIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMSBbbGV0KiB3aGlsZSBpZiBs ZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCog c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNo IG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxXSA5IFt1bndpbmQt cHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdl bmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24g bGV0XSAzIFtvcmctZWxlbWVudC1lbmQgbGV0IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0t cGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbl0gMiBbcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNh Y2hlLW1hcCBsZXQqXSA3IFthbmQgbGV0KiBvcmctZWxlbWVudC1lbmQgbGV0IHdoaWxlIGxldCBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBj YXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXRdIDEg W2VxIGlmIGxldCogaWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50 LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNh Y2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJl ZS1lbnRlciBwcm9nbiBpZl0gMSBbb3JnLWVsZW1lbnQtYmVnaW4gZ290by1jaGFyIHByb2duIGlm IHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBsZXQgcHJvZ24gaWZdIDIgW29yZy1lbGVtZW50LXBhcmFncmFwaC1wYXJzZXIgY29uZCBs ZXQgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVt ZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbl0gMSBbbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFn ZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQq IHByb2duIGxldF0gNCBbY29uZCB3aGlsZSBjYXRjaCBzYXZlLWV4Y3Vyc2lvbiBsZXQgb3JnLWVs ZW1lbnQtLWxpc3Qtc3RydWN0IG9yIG9yZy1lbGVtZW50LXBsYWluLWxpc3QtcGFyc2VyIGNvbmQg bGV0IGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxl bWVudCBzZXRxXSAxIFtsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0 IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgaWZdIDE0IFttYWNyb2V4cC1tYWNyb2V4cGFu ZCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwg Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlXSAxIFtsaXN0IGxldCogb3JnLWFnZW5kYS1n ZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24g bGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0g NCBbaWYgbGV0KiBpZiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24t Y2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAyIFtwcm9n biBpZiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tZ2V0LXRpbWUtcHJvcGVydGllcyBuY29u YyBzZXRjYXIgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVm ZmVyIG9yZy1lbGVtZW50LS1oZWFkbGluZS1kZWZlcnJlZCBhcHBseSBvcmctZWxlbWVudC0tcHJv cGVydHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5IGFuZCBpZiAiIzxsYW1iZGEgLTB4MmNlYTdlZjRl NWI1MjQwPiJdIDEgW2FuZCBpZiBzZXRxIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1j YWNoZS1tYXBdIDEgW29yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1j YWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRy ZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIg b3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBzZXRxIGlmIGlmIHdoaWxlIGxldF0gMSBbd2hpbGUg bGV0IHByb2duIGlmIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tZ2V0LW5vZGUtcHJv cGVydGllcyBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyIG9yZy1lbGVtZW50LS1nZXQtZ2xvYmFsLW5vZGUtcHJvcGVydGllcyBhcHBseSBvcmct ZWxlbWVudC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5IG9yZy1lbGVtZW50LXByb3Bl cnR5LWluaGVyaXRlZF0gMSBbb3JnLWVsZW1lbnQtYXQtcG9pbnQgcHJvZ24gaWYgaWYgaWYgaWYg d2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBp ZiBwcm9nbiBsZXQqXSAxIFtsZXQqIG9yIGxldCBpZiBsZXQqIHByb2duIGlmIGxldCBzYXZlLWV4 Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0 IGxldCpdIDEgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYt bWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqXSAyIFthdmwtdHJlZS0t ZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1l bnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQg b3Igc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uXSAxIFtjY29udi1h bmFseXplLWZvcm0gY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0 KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUg bGV0XSAzIFtvcmctLXByb3BlcnR5LWxvY2FsLXZhbHVlcyBsZXQqIGNvbmQgb3JnLWVudHJ5LWdl dCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNjljM2U5ZDE2ZT4iIGZ1bmNh bGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duXSA0IFtpZiBsZXQqIHByb2duIGlmIGxldCBz YXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hp bGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyXSAxIFtjb25kIGxldCogYW5kIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNh Y2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUt Y29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVu dGVyIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXJdIDEgW2xldCogYW5kIGxldCogbGV0KiBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2gg b3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJvZ24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVn aW4gb3IgbWF4XSAxIFtlcSBpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWNv bnRlbnRzLWJlZ2luIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uXSAxIFtsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4 IHNldHEgaWYgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlmIHByb2duXSAx IFtpZiBpZiBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJvZ24gaWYgcHJvZ24gaWYgcHJv Z24gaWYgaWYgaWYgd2hpbGUgaWZdIDQgW2xldCogb3JnLWFnZW5kYS1nZXQtdGltZXN0YW1wcyBj b25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgaWZdIDEzIFthbmQgbGV0 KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxp c3QgbGV0KiBvcmctYWdlbmRhLWdldC1zZXhwcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxl XSAyMCBbb3Igc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNo ZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJy ZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYg c2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbl0gMiBbbGV0IGNvbmQgbGV0KiBvciBsZXQgaWYgbGV0 KiBwcm9nbiBpZiBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVu dCBzZXRxIGlmIGlmIHdoaWxlXSAxIFtsZXQgb3JnLWFnZW5kYS1za2lwIGNhdGNoIHByb2duIGlm ICIjPGxhbWJkYSAweGQ0NTYyNjljM2U5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2du IGlmIHByb2duIGlmIHByb2duIGlmXSAzIFtpZiBsZXQgY29uZCBsZXQqIHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0t cGFyc2UtdG8gc2V0cSBwcm9nbiBpZiBwcm9nbiBvcmctZWxlbWVudC1iZWdpbiBvciBtYXhdIDEg W3NldHEgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBw cm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEt Z2V0LWRlYWRsaW5lcyBzZXRxIGxldF0gMSBbYW5kIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMt YmVnaW4gbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1oZWFkbGluZS1kZWZlcnJlZCBhcHBseSBvcmctZWxlbWVu dC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5IGFuZCBpZiAiIzxsYW1iZGEgMHhkNDU2 MjY5YzNlOWQxNmU+IiBmdW5jYWxsXSAxIFtjb25kIGxldCogb3IgbGV0IGlmIHByb2duIGlmIHNh dmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBzZXRxIGlmIGlmIHdo aWxlIGxldCBsZXQqXSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1j bGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbF0gMzUgW3VwY2FzZSBjb25jYXQgbGV0KiB3aGlsZSBsZXQgcHJvZ24gaWYgbGV0IHNhdmUt ZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1nZXQtbm9kZS1wcm9wZXJ0aWVzIGxldCBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWdl dC1nbG9iYWwtbm9kZS1wcm9wZXJ0aWVzIGFwcGx5XSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDQgW2lmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxl bWVudC0tcGFyc2UtdG8gc2V0cSBwcm9nbiBpZiBwcm9nbiBvcmctZWxlbWVudC1iZWdpbiBvcl0g MiBbdW53aW5kLXByb3RlY3QgbGV0IGFuZCBvciBhbmQgb3IgaWYgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IG9yZy1hZ2VuZGEtc2tpcCBjYXRjaCBwcm9nbiBpZiAiIzxsYW1iZGEgMHhkNDU2MjY5 YzNlOWQxNmU+IiBmdW5jYWxsXSAzIFtlcSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1l bnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb25d IDEgW3Vud2luZC1wcm90ZWN0IGxldCBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmXSAxIFtvciBp ZiBpZiBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNjljM2U5ZDE2ZT4iIGZ1 bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlmXSAxIFtpZiBsZXQqIGlmIGxldCog b3JnLWVsZW1lbnQtZW5kIDw9IGFuZCB3aGlsZSBsZXQgY29uZCBsZXQqIHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0t cGFyc2UtdG9dIDIgW2lmIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBv cmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBh dmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBh dmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2du IGlmXSAxIFtsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hl LWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29t cGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVy IHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBz ZXRxXSAxIFtvciBvciBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQt LWNhY2hlLWFjdGl2ZS1wIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g c2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9u LWNhc2UgaWYgc2V0cSBsZXRdIDIgW2FuZCBpZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgaWYgcHJv Z24gaWYgaWYgaWYgd2hpbGUgaWZdIDEgW2lmIGxldCogaWYgbGV0KiBvcmctZWxlbWVudC1jb250 ZW50cy1iZWdpbiBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJz ZS10b10gMSBbc3RyaW5nLW1hdGNoLXAgYW5kIGNvbmQgbGV0KiBjYXRjaCBwcm9nbiBpZiAiIzxs YW1iZGEgMHhkNDU2MjY5YzNlOWQxNmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiBw cm9nbiBpZl0gMSBbY2RyIGNhciBpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIGFuZCBsZXQqIG9y IG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3Jn LWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVy XSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYt bWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbl0gNSBbaWYgaWYgcHJvZ24gaWYgY29uZCBsZXQg d2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZl0g MSBbaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDQgW29yIGlmIGlmIHByb2duIHVu d2luZC1wcm90ZWN0IGxldCBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBp Zl0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t YWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxs IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxldCogc2F2ZS1y ZXN0cmljdGlvbl0gMSBbbGV0KiBwcm9nbiBsZXQgIiM8bGFtYmRhIDB4OWMzMmExOWQyYzNiMzM4 PiIgc29ydCBtYXBjYXIgc2V0cSBwcm9nbiBsZXQgb3JnLWFnZW5kYS1maW5hbGl6ZS1lbnRyaWVz IGluc2VydCBwcm9nbiBpZiBwcm9nbiBpZiB3aGlsZV0gMSBbaWYgaWYgcHJvZ24gaWYgbGV0IHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9yZy1l bGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2du IGlmXSAyIFtsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMtYmVnaW4gcHJvZ24gaWYg b3Igc2V0cSBpZiBwcm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlmIGlmXSAxIFthbmQgb3IgaWYg bGV0IG9yZy10aW1lLXN0YW1wLWZvcm1hdCBmb3JtYXQtdGltZS1zdHJpbmcgc3Vic3RyaW5nIHJl Z2V4cC1xdW90ZSBjb25jYXQgbGV0KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0 cSBsZXQgY29uZCBsZXRdIDEgW2NhciBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9y Zy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBs ZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAyIFtub3QgY29uZCBsZXQgd2hpbGUgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBz YXZlLXJlc3RyaWN0aW9uXSAyIFthbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1w cm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2Vu ZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxXSAzIFtlcSBzYXZlLWN1cnJlbnQtYnVmZmVyIGFu ZCBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gbGV0XSA1IFtjZHIgY2FyIGlmIGxldCBjb25kIGxldCogYW5kIGxl dCogb3JnLWVsZW1lbnQtZW5kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXJdIDIgW2xldCogYW5kIGxldCogb3Igb3Jn LWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBub3QgYW5k IG9yIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0g MSBbdW53aW5kLXByb3RlY3QgbGV0IG9yZy1pbi1zcmMtYmxvY2stcCBvciBpZiBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQgb3JnLWFnZW5kYS1za2lwIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAw eGQ0NTYyNmY3MWU5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxXSAxIFtwcm9nbiBsZXQqIHdoaWxl IGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQg bGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIg Y2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJvZ25dIDIgW2FuZCBjb25kIGxldCog Y2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2ZjcxZTlkMTZlPiIgZnVuY2FsbCBjb25z IHNldHEgaWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ25dIDEgW29yZy1wYXJzZS10aW1lLXN0cmlu ZyBlbmNvZGUtdGltZSBvcmctdGltZS1zdHJpbmctdG8tdGltZSBjb25kaXRpb24tY2FzZSB0aW1l LXRvLWRheXMgY29uZCBvcmctdGltZS1zdHJpbmctdG8tYWJzb2x1dGUgYXBwbHkgY29uZGl0aW9u LWNhc2Ugb3JnLWFnZW5kYS0tdGltZXN0YW1wLXRvLWFic29sdXRlIGNvbmQgbGV0KiBjYXRjaCBw cm9nbiBpZiAiIzxsYW1iZGEgMHhkNDU2MjZmNzFlOWQxNmU+Il0gMSBbc2F2ZS1jdXJyZW50LWJ1 ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBs ZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYg b3JnLWVsZW1lbnQtYXQtcG9pbnQgbGV0IG9yIG9yZy1hdC1wbGFubmluZy1wXSAyIFtsZXQqIHBy b2duIGlmIHByb2duIGNvbmRpdGlvbi1jYXNlIGVxIGFuZCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIG9yIG9yZy1hdC1wbGFubmluZy1wIG9yIGFuZCBvciBjb25kIHByb2duXSAyIFts ZXQgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gNCBbY2NvbnYtYW5hbHl6ZS1mb3Jt IGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3Jt IGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXpl LWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG9y Zy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNl dHEgbGV0XSAxNCBbaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNh Y2hlLW1hcF0gOSBbbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBj b25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmXSAxMyBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxldCog c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBv cmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWRdIDUgW2lm IHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24g aWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1z Y2hlZHVsZWQgY29ucyBzZXRxXSAyIFtzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1j YXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1 cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb25dIDEyIFtj Y29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGxl dCogb3JnLWFnZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxl IGxldCBsZXQqIHByb2duIGxldF0gNyBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5l cyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMTQgW29yIHNldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2du IGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVz IHNldHEgbGV0XSAxIFtjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPSBvciBp ZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0 XSAyIFthbmQgaWYgIiM8bGFtYmRhIC0weDJjZWE3ZWY4ODViNTI0MD4iIGZ1bmNhbGwgY29ucyBz ZXRxIGlmIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlXSAzIFtzYXZlLWN1 cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBpZiBsZXQgc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQt YXQtcG9pbnQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJv Z25dIDIgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBh bmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0 KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUg bGV0IGxldCpdIDMgW2lmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2 ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ25dIDEwIFthbmQg aWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBj YXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXRdIDIg W2VxIGlmIGxldCBjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPCBhbmQgb3Ig aWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0XSAyIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDEzIFtlcSBvciBhbmQgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBvcmctZWxlbWVudC0tY2FjaGUtYWN0aXZlLXAgYW5kIGlmIGxldCBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2lu dCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAyIFtzdWJzdHJpbmcgcmVnZXhwLXF1 b3RlIGNvbmNhdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxldCBj b25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbl0gMTEgW29y Zy1lbGVtZW50LS1wcm9wZXJ0eSBhbmQgaWYgIiM8bGFtYmRhIC0weDJjZWE3ZWY4ODViNTI0MD4i IGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmXSA2 IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSAyIFtsaXN0 IGxldCogb3JnLWFnZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdo aWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtY3VycmVudC1idWZmZXJdIDQgW29yIGFuZCBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duXSA0 IFtpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5k IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHByb2duIG9yZy1lbGVt ZW50LWJlZ2luXSAxIFthbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiA9IGFuZCBpZiBsZXQqIHNh dmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1l bGVtZW50LS1wYXJzZS10b10gMiBbd2hpbGUgaWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9y Zy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gc2V0 cSBwcm9nbiBpZiBwcm9nbl0gMSBbaWYgbGV0KiBvcmctZWxlbWVudC1lbmQgPD0gYW5kIHdoaWxl IGxldCBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZl0g MiBbcHJvZ24gY29uZCBsZXQqIHdoaWxlIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmct ZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRp dGlvbi1jYXNlXSA0IFt3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1l bnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24t Y2FzZSBpZiBzZXRxIGxldF0gOSBbY29uZCBsZXQgb3JnLXRpbWUtc3RhbXAtZm9ybWF0IGZvcm1h dC10aW1lLXN0cmluZyBzdWJzdHJpbmcgcmVnZXhwLXF1b3RlIGNvbmNhdCBsZXQqIG9yZy1hZ2Vu ZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXRdIDIgW21h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbF0gNCBbb3JnLWVsZW1l bnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQg Y29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1l eGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gNCBbZGlyZWN0b3J5LWFiYnJldi1hcHBseSBz ZXRxIGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUt bmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEg bGV0XSAyIFtjZHIgY2FyIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5k YS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxl dCBzYXZlLXJlc3RyaWN0aW9uXSA2IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zXSA1IFtsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxl dCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2Vu ZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmRdIDUgW29yIG9yZy1lbGVtZW50LS1j YWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgbm90IGFuZCBvciBpZiBpZiB3 aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlm XSA0IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1t YXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXNdIDEwIFtsZXQgbGV0KiBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50 LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxl dF0gMyBbaWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBlcSBvciBhbmQgaWYgcHJvZ24gaWYgaWYg aWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAxIFttYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzXSAzIFtpZiBsZXQqIGlmIGxl dCogYW5kIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmlu ZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1i dWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvXSAzIFtmdW5jdGlvbiBvcmctZWxlbWVu dC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBs ZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMTggW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1j bG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0 LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxldCB3aGlsZV0gMiBbZXF1YWwgYW5kIGlmIGxldCBs ZXQgaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUg Zm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cV0gMjYgW2xldCog YW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVu dC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoXSA3IFtvcmctZWxlbWVu dC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWZdIDEgW2FuZCBzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBhbmQgbGV0KiBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3Jn LWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJp Y3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW3NldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBv cmctZWxlbWVudC0tY2FjaGUtYWN0aXZlLXAgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10 byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5 emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5j dGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMg c2V0cSBsZXQgY29uZCBsZXRdIDcgW2xldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRp b24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUt ZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludF0gMTAgW2FuZCBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBpZiBwcm9nbiBsZXQqIG9yZy1l bGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBj b25kIGxldCB3aGlsZSBsZXQgbGV0Kl0gNyBbbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zXSA0IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGxdIDYgW3NldHEgbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFi YnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxp bmVzIHNldHEgbGV0IGNvbmQgbGV0XSAyIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG9y Zy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxl dCBjb25kXSA1IFt3aXRoLW5vLXdhcm5pbmdzIG9yZy1hZ2VuZGEtZ2V0LWJsb2NrcyBjb25zIHNl dHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgaWZdIDEgW2Njb252LWFuYWx5emUt Zm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUt Zm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYg Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hl LW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmRdIDEy IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1h a2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0KiBvcmctYWdlbmRhLWdl dC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXRdIDIgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw YW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1l bnQtY2FjaGUtbWFwXSA5IFtwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJvZ24gaWYgcHJvZ24g aWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uXSAxIFtpZiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRp dGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2 ZS1leGN1cnNpb24gbGV0IGlmXSAzIFtpZiBsZXQqIG9yZy1lbGVtZW50LWNvbnRlbnRzLWJlZ2lu IHByb2duIGlmIG9yIHNldHEgaWYgcHJvZ24gc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZl0g MiBbaWYgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNo ZS1tYXAgbGV0Kl0gNyBbbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiA8IGFuZCBpZiBw cm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b25dIDEgW2Rlcml2ZWQtbW9kZS1wIGlmIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g c2F2ZS1leGN1cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2Fj aGUtbWFwXSAyIFtsZXQqIGFuZCBsZXQqIGFuZCBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1r ZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgYW5kIG9yIGFuZCBpZiBzZXRxIGlmIGlm IHdoaWxlXSAxIFttb2QgaWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1j YWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1j dXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2Ug aWYgc2V0cSBsZXRdIDcgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3Jtc10gMiBbbWFjcm9leHAtbWFjcm9leHBhbmQgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWlu dGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwXSAxIFttYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGxdIDQgW2NvbmQgb3JnLWVudHJ5LWdl dCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNmY3MWU5ZDE2ZT4iIGZ1bmNh bGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlmIHByb2duXSA1IFtsZXQgbGV0KiBwcm9n biBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGlmIGxldCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBjb25kIGxldCBj YXRjaCB3aGlsZV0gMyBbY29uZCBvcmctdGltZS1zdHJpbmctdG8tYWJzb2x1dGUgYXBwbHkgY29u ZGl0aW9uLWNhc2Ugb3JnLWFnZW5kYS0tdGltZXN0YW1wLXRvLWFic29sdXRlIGNvbmQgbGV0KiBj YXRjaCBwcm9nbiBpZiAiIzxsYW1iZGEgMHhkNDU2MjZmNzFlOWQxNmU+IiBmdW5jYWxsIGNvbnMg c2V0cSBpZiBwcm9nbl0gNSBbb3JnLWVsZW1lbnQtLXByb3BlcnR5IGVxIGxldCogY2F0Y2ggcHJv Z24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2ZjcxZTlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHEgaWYg cHJvZ24gaWYgcHJvZ24gaWYgcHJvZ25dIDMgW2lmIGxldCBjb25kIGxldCogYW5kIGxldCogb3Jn LWVsZW1lbnQtYmVnaW4gbGV0KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3Jn LWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbl0gNyBbY29uZCBs ZXQgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1 cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHBy b2duIG9yZy1lbGVtZW50LWJlZ2luIG9yXSAxIFtpZiBvcmctZWxlbWVudC1hdC1wb2ludCBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1l bGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBj b25kIGxldF0gMiBbb3JnLXRvZGF5IGVxIG9yZy1hZ2VuZGEtdG9kYXktcCBsZXQqIG9yZy1hZ2Vu ZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHBy b2duIGxldCBzYXZlLXJlc3RyaWN0aW9uXSA5IFt0aW1lLXRvLWRheXMgb3JnLXRvZGF5IGVxIG9y Zy1hZ2VuZGEtdG9kYXktcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEg bGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldF0gNCBbbGV0IGFiYnJldmlhdGUt ZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEg bGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAx IFtzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBv cmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbl0gNCBbaWYgbGV0KiBpZiBsZXQq IG9yZy1lbGVtZW50LWVuZCBvciBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRp dGlvbi1jYXNlIGlmIHNldHFdIDIgW21hY3JvZXhwLW1hY3JvZXhwYW5kIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zXSA1IFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRl cnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1h Z2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQq IHByb2duXSAxIFttYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwXSAxIFtp ZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIDwgYW5kIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlm IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDEgW3N1YnN0cmluZyBs ZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNmY3MWU5ZDE2ZT4iIGZ1bmNhbGwg Y29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmXSAxIFtvcmctYWdlbmRhLS10 aW1lc3RhbXAtdG8tYWJzb2x1dGUgY29uZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAw eGQ0NTYyNmY3MWU5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlm IHByb2duXSAxIFtsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxl bWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIGFuZCBvciBhbmQg aWYgc2V0cSBpZiBpZiB3aGlsZV0gMSBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2lu IG9yIG1heCBzZXRxIGlmIGlmIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBwcm9nbiBpZl0g MSBbbGV0KiBvcmctYWdlbmRhLWdldC1ibG9ja3MgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGls ZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZl LWN1cnJlbnQtYnVmZmVyIGlmXSA3IFtsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIDwg YW5kIG9yIGlmIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBwcm9nbiBpZiBwcm9nbiBpZl0g MSBbaWYgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQg aWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgb3JnLWVsZW1lbnQtbGluZWFnZSBzZXRxIG9yZy0tcHJv cGVydHktbG9jYWwtdmFsdWVzIGxldCogY29uZCBvcmctZW50cnktZ2V0IGxldCogY2F0Y2ggcHJv Z25dIDEgW29yZy10b2RheSBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRx IGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxMCBbb3JnLWFnZW5kYS1nZXQtdGlt ZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgaWYgbGV0 Kl0gOCBbYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPCBhbmQgaWYgcHJvZ24gaWYgaWYgaWYg d2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMSBbY29u Y2F0IHNldHEgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJy ZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWJsb2NrcyBj b25zXSAyIFtsZXQgb3JnLWVsZW1lbnQtLWNhY2hlLXZlcmlmeS1lbGVtZW50IGFuZCBpZiBsZXQg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3Jn LWVsZW1lbnQtYXQtcG9pbnQgb3JnLWVsZW1lbnQtbGluZWFnZSBzZXRxIG9yZy0tcHJvcGVydHkt bG9jYWwtdmFsdWVzIGxldCogY29uZF0gMiBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWNv bnRlbnRzLWVuZCBlcSBpZiBjYXRjaCBwcm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlmIGlmIGlm XSAxIFtvcmctdGltZS1zdHJpbmctdG8tYWJzb2x1dGUgYXBwbHkgY29uZGl0aW9uLWNhc2Ugb3Jn LWFnZW5kYS0tdGltZXN0YW1wLXRvLWFic29sdXRlIGNvbmQgbGV0KiBjYXRjaCBwcm9nbiBpZiAi IzxsYW1iZGEgMHhkNDU2MjZmNzFlOWQxNmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBp Zl0gMiBbb3JnLWZvbGQtY29yZS0tcHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQt Y29yZS1nZXQtcmVnaW9uLWF0LXBvaW50IG9yZy1mb2xkLWNvcmUtLWZpeC1mb2xkZWQtcmVnaW9u IGluc2VydCBwcm9nbiBpZiB3aGlsZSBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdl bmRhXSAxIFtvcmctdG9kYXkgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQg Y29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1l eGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZl0gNyBbYWJicmV2aWF0ZS1maWxlLW5hbWUg Zm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXQg Y29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb25dIDEgW29y Zy1hZ2VuZGEtZ2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXQgY2F0Y2ggd2hpbGUg d2hpbGUgbGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNh bGwtaW50ZXJhY3RpdmVseSBjb25kIGxldCogY2F0Y2hdIDUgW21hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUg ZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1 bGVkIGNvbnMgc2V0cSBsZXRdIDMgW2VxIHNhdmUtY3VycmVudC1idWZmZXIgbm90IGFuZCBpZiBw cm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb25dIDcgW29yZy1lbGVtZW50LS1wcm9wZXJ0eSBvcmctZWxlbWVudC1saW5lYWdl IHNldHEgb3JnLS1wcm9wZXJ0eS1sb2NhbC12YWx1ZXMgbGV0KiBjb25kIG9yZy1lbnRyeS1nZXQg bGV0KiBjYXRjaCBwcm9nbiBpZiAiIzxsYW1iZGEgMHhkNDU2MjZmNmFlOWQxNmU+IiBmdW5jYWxs IGNvbnMgc2V0cSBpZl0gMSBbaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlmIHBy b2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMyBb Y29uZCBsZXQgb3JnLWdldC13ZGF5cyBjb25kIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRh IC0weDFjNTA4MTE5YjdmZmJhMTg+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiBwcm9n bl0gMyBbbGV0KiBpZiBsZXQqIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gc2V0cSBw cm9nbiBpZiBwcm9nbiBvcmctZWxlbWVudC1iZWdpbiBvcl0gMSBbY2RyIGNhciBpZiBsZXQgY29u ZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCogd2hpbGUgaWYgbGV0KiBzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZF0gMiBbYW5kIGxldCog b3JnLWVsZW1lbnQtYmVnaW4gbGV0KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIg b3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10b10g MyBbaWYgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50 LS1jYWNoZS1rZXktbGVzcy1wIGFuZCBvciBhbmQgaWYgc2V0cSBpZiBpZiB3aGlsZSBpZl0gMSBb YW5kIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMtYmVnaW4gZ290by1jaGFyIHByb2duIGlmICIj PGxhbWJkYSAtMHgxYzUwODExOWI3ZmZiYTE4PiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ24g aWYgcHJvZ24gaWYgcHJvZ25dIDEgW2FuZCBpZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgbGV0IG9y IG9yZy1hdC1wbGFubmluZy1wIG9yIGlmIHByb2duIHVud2luZC1wcm90ZWN0XSAxIFtvcmctZWxl bWVudC1iZWdpbiA8IGFuZCBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmXSAyIFtvciBzZXQtYnVmZmVyIHNh dmUtY3VycmVudC1idWZmZXIgZXEgYW5kIHNhdmUtY3VycmVudC1idWZmZXIgaWYgcHJvZ24gaWYg aWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAxIFtz YXZlLWV4Y3Vyc2lvbiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVu dC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNl dHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0 IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50XSA1IFttYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1h cGNhciBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0 IHdoaWxlXSAxIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlc10g MSBbY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIDwgYW5kIGlmIHByb2duIGlm IGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMyBbY2NvbnYtYW5hbHl6ZS1m b3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBj YXIgbGV0KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQg d2hpbGUgbGV0IGxldCogcHJvZ25dIDMgW2VxIG9yZy1hZ2VuZGEtdG9kYXktcCBsZXQqIG9yZy1h Z2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQq IHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAyIFttYWNyb2V4cC1t YWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFs bC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jtc10gMSBbYW5kIHNhdmUtY3VycmVudC1i dWZmZXIgaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gMiBbcHJvZ24gcHJvZ24gYW5kIGlmIHdo aWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYg cHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0Kl0gMiBbbWFjcm9leHAtbWFjcm9l eHBhbmQgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXNdIDYgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVu Y3Rpb24gbWFwY2FyIGxldCogb3JnLWFnZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0 XSAyIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252 LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0KiBvcmctYWdlbmRh LWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldF0gNCBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252 LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252 LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252 LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252 LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwXSAxMSBb Y2FyLXNhZmUgaWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMiBbbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxl bWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29u ZCBsZXRdIDMgW2lmIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJvZ24g aWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4IHNldHFdIDEgW2lmIGxldCogbGV0IGxl dCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNh dGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uXSAyIFtpZiBsZXQgY29u ZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWNvbnRlbnRzLWJlZ2luIGdvdG8tY2hhciBzYXZl LWV4Y3Vyc2lvbiBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNmY2YWU5ZDE2 ZT4iIGZ1bmNhbGwgY29uc10gMSBbaWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiA8IGFuZCBvciBp ZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHBy b2duIGlmXSAxIFtlcXVhbCBhbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90 ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEt Z2V0LXRpbWVzdGFtcHMgY29uc10gMTggW2xldCogYW5kIGxldCogb3JnLWVsZW1lbnQtY29udGVu dHMtYmVnaW4gcHJvZ24gaWYgb3Igc2V0cSBpZiBwcm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlm IGlmXSAyIFtjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBj Y29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1l bnQtY2FjaGUtbWFwIGxldCpdIDQgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIG1hcGNhciBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRx IGxldCBjb25kIGxldF0gNiBbbWFjcm9leHAtbWFjcm9leHBhbmQgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXNdIDEgW2xldCogaWYgbGV0KiBvcmctZWxlbWVudC1jb250ZW50cy1iZWdpbiBsZXQg Y29uZCBsZXQgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24t Y2FzZV0gMSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciBs ZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxl IGxldCBsZXQqXSAyIFtvcmctZWxlbWVudC0tY2FjaGUtaW50ZXJydXB0LXAgaWYgd2hpbGUgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAxIFtzZXRxIGlmIGxldCBsZXQgaWYgbGV0 KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxp c3QgbGV0KiBvcmctYWdlbmRhLWdldC1ibG9ja3MgY29ucyBzZXRxXSAyIFttYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSA2IFtsZXQgYWJicmV2aWF0ZS1maWxlLW5h bWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC1zZXhwcyBjb25zIHNldHEgbGV0IGNv bmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldF0gNCBbbWFjcm9leHAtLWFsbC1jbGF1c2Vz IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1j bGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbl0gNCBbYW5kIG9yIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxl dCBvcmctYWdlbmRhLXNraXAgY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2ZjZhZTlk MTZlPiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ25dIDMgW2xldCBsZXQgaWYgbGV0KiBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0 KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXQgY29uZF0gMiBbbGV0KiBp ZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCogd2hpbGUgaWYgbGV0KiBzYXZlLWN1cnJlbnQt YnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaF0gNSBbbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQq IG9yZy1lbGVtZW50LWNhY2hlLW1hcF0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBh bmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxldCog c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBv cmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXNdIDEgW3Jl Z2V4cC1xdW90ZSBjb25jYXQgbGV0KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0 cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb25dIDEgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hl ZHVsZWQgY29ucyBzZXRxXSA0IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4 cGFuZC1hbGxdIDMgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9u IG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25z IHNldHEgbGV0IGNvbmQgbGV0XSAyIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwt Y2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFu ZC1hbGxdIDE2IFthbmQgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQq IG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxXSAxIFtsaXN0IGxldCogb3JnLWFnZW5kYS1n ZXQtYmxvY2tzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0 IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMTAg W29yZy1lbGVtZW50LS1oZWFkbGluZS1jYWNoZS1yb290IGlmIHNhdmUtY3VycmVudC1idWZmZXIg bGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBs ZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBj b25zIHNldHFdIDEgW2xldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hl LW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0XSAxIFtvciBz ZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1w IGlmIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxl dCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IGxldCBwcm9nbl0gMiBbY29uY2F0IHNldHEgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1h Z2VuZGEtZ2V0LXNleHBzIGNvbnNdIDMgW3NhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZm ZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0 IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9y Zy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDQgW2Nj b252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1t YWtlLWludGVycHJldGVkLWNsb3N1cmVdIDUgW2FuZCBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCog b3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cV0gNCBbY29uZCB3aGlsZSBsZXQgcHJv Z24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGlu ZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ25dIDIgW29yIHNldC1idWZm ZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3Jn LWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cV0gMiBbc2F2ZS1jdXJyZW50LWJ1ZmZlciBh bmQgaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbl0gMiBbZXEgaWYgbGV0IGNvbmQgbGV0KiBhbmQg bGV0KiBvcmctZWxlbWVudC1jb250ZW50cy1lbmQgZXEgaWYgY2F0Y2ggcHJvZ24gc2V0cSBwcm9n biBpZiBwcm9nbl0gMSBbaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlmIHByb2du IGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBs ZXRdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWlu dGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGxldCogb3JnLWFnZW5kYS1nZXQtdGlt ZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duXSAxIFtt YWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxl dCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDIgW29yZy1hZ2VuZGEtZ2V0 LWJsb2NrcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgaWYgbGV0 Kl0gMTAgW2xldCogYW5kIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0t Y2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUt Y3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJvZ24gaWZd IDEgW2VxIG9yIGFuZCBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3Rp dmUtcCBpZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lv biBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgb3JnLWVsZW1lbnQtbGluZWFnZSBzZXRxIG9y Zy0tcHJvcGVydHktbG9jYWwtdmFsdWVzXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtLWFu YWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50 ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXBd IDEgW3Byb2duIHByb2duIHNldHEgcHJvZ24gY29uZCBsZXQqIHdoaWxlIGlmIGxldCogc2F2ZS1j dXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXJdIDEgW2lmIGlmIHdoaWxl IGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJv Z24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGlu ZXMgc2V0cV0gMiBbb3JnLWVudHJ5LWdldCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAw eGQ0NTYyNmY2YWU5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlm IHByb2duIGlmXSAzIFthbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBlcSBvciBhbmQgaWYgcHJv Z24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u XSA0IFtwcm9nbiBpZiBwcm9nbiBvcmctZWxlbWVudC1iZWdpbiBvciBtYXggc2V0cSBpZiBpZiBp ZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJvZ24gaWYgcHJvZ25dIDEgW3NldHEgb3JnLS1w cm9wZXJ0eS1sb2NhbC12YWx1ZXMgbGV0KiBjb25kIG9yZy1lbnRyeS1nZXQgbGV0KiBjYXRjaCBw cm9nbiBpZiAiIzxsYW1iZGEgMHhkNDU2MjZmNmFlOWQxNmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBp ZiBwcm9nbiBpZl0gMSBbYXBwbHkgY29uZGl0aW9uLWNhc2Ugb3JnLWFnZW5kYS0tdGltZXN0YW1w LXRvLWFic29sdXRlIGNvbmQgbGV0KiBjYXRjaCBwcm9nbiBpZiAiIzxsYW1iZGEgMHhkNDU2MjZm NmFlOWQxNmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiBwcm9nbl0gMyBbY2FyIGlm IGxldCBjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPSBhbmQgaWYgbGV0KiBz YXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqXSAyIFtz ZXRxIGFuZCBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJl dmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVk IGNvbnNdIDEgW2xldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4IHNldHEgaWYg aWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlmIHByb2duXSAyIFtsZXQqIGNh dGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNmY2YWU5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBz ZXRxIGlmIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIGlmXSA1IFtnb3RvLWNoYXIgbGV0KiBv cmctYWdlbmRhLWdldC1ibG9ja3MgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0 KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyXSAxIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBz IGNvbnMgc2V0cSBsZXQgY29uZF0gMSBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2lu IGxldCogd2hpbGUgaWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNo ZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJy ZW50LWJ1ZmZlcl0gMyBbb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiB3aGlsZSBpZiBsZXQqIHNhdmUt Y3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVt ZW50LS1wYXJzZS10byBzZXRxIHByb2duXSAzIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsXSAzIFtvcmctZWxlbWVudC0tcHJvcGVydHkgb3JnLWVsZW1lbnQt cGFyZW50IHNldHEgd2hpbGUgcHJvZ24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4 IHNldHEgaWYgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3RdIDIgW21hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw YW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBsZXQq IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmXSA5IFthbmQgaWYg bGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUt bmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldF0g MSBbb3JnLWVsZW1lbnQtYmVnaW4gPSBvciBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCpdIDIgW2FuZCBv ciBsZXQgb3JnLWVsZW1lbnQtLWNhY2hlLXZlcmlmeS1lbGVtZW50IGFuZCBpZiBsZXQgc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1l bnQtYXQtcG9pbnQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDEgW2NvbmQg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxl dCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBjb25kIGxldCBjYXRjaCB3 aGlsZSB3aGlsZSBsZXQqIGNhdGNoXSAyIFsrb3JnLS1vcHRpbWl6ZS1iYWNrZ3JvdW5kZWQtYWdl bmRhLWJ1ZmZlcnMtYSBhcHBseSBvcmctZ2V0LWFnZW5kYS1maWxlLWJ1ZmZlciBpZiBsZXQqIG9y Zy1hZ2VuZGEtZ2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXQgY2F0Y2ggd2hpbGUg d2hpbGUgbGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3RdIDEgW2lmIHByb2duIHNldHEgcHJvZ24g aWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIGxldCBwcm9nbl0gMSBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1 bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6 ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6 ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6 ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1h bmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlXSAyIFtj YXIgaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1jb250ZW50cy1lbmQgZXEg aWYgY2F0Y2ggcHJvZ24gc2V0cSBwcm9nbiBpZiBwcm9nbl0gMSBbb3JnLWVsZW1lbnQtY2FjaGUt bWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxl IGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUt Y3VycmVudC1idWZmZXIgaWZdIDIgW2ludGVybiBvcmctZWxlbWVudC0tcHJvcGVydHkgbGV0KiBv cmctLXByb3BlcnR5LWxvY2FsLXZhbHVlcyBsZXQqIGNvbmQgb3JnLWVudHJ5LWdldCBsZXQqIGNh dGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0YzkzZjljODQ5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBz ZXRxIGlmXSAxIFtpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGVx IG9yIGFuZCBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZV0gMiBbbGV0KiBvcmctZWxlbWVudC1lbmQg bGV0IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1j dXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gc2V0cSBwcm9nbiBpZiBw cm9nbiBvcmctZWxlbWVudC1iZWdpbl0gMSBbb3Igc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVm ZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBpZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQg b3JnLWVsZW1lbnQtbGluZWFnZSBzZXRxIG9yZy0tcHJvcGVydHktbG9jYWwtdmFsdWVzIGxldCpd IDEgW3NldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtYWN0 aXZlLXAgaWYgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNp b24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IGxldCBvciBvcmctYXQtcGxhbm5pbmctcCBv ciBpZl0gMSBbaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9n biBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0 LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxldF0gMSBbb3JnLXVuaXF1aWZ5IHNldHEgc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxldCogb3Jn LWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBjb25kIGxldCBjYXRjaCB3aGlsZSB3 aGlsZSBsZXQqXSAyIFtsZXQgY29uZCBsZXQgb3JnLXRpbWUtc3RhbXAtZm9ybWF0IGZvcm1hdC10 aW1lLXN0cmluZyBzdWJzdHJpbmcgcmVnZXhwLXF1b3RlIGNvbmNhdCBsZXQqIG9yZy1hZ2VuZGEt Z2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZV0gMSBbY29uZCBsZXQq IHdoaWxlIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmlu ZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1i dWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJvZ25dIDIgW2lmIGxldCBj b25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVm ZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxl dCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uXSAzIFtpZiBs ZXQqIGFuZCBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZp bmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZl0gMiBb bGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQg Y29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMyBbc2V0cSBwcm9nMSBjYXItc2FmZSBzZXRxIHdoaWxl IHdoaWxlIGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBj YWxsLWludGVyYWN0aXZlbHkgY29uZCBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5XSAxIFtsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZiBsZXQqIG9yZy1hZ2VuZGEt Z2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXRdIDUgW2lmIGNhdGNoIHByb2duIHNl dHEgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIGxldF0gMSBbbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJw cmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdl bmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBw cm9nbiBsZXRdIDIgW2lmIGxldCogaWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiA9IG9yIGlmIGlm IGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDEg W29yIGNvbmQgbGV0KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1l bnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24t Y2FzZV0gMSBbc2V0cSBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVu dC1idWZmZXIgaWYgbGV0KiBvcmctYWdlbmRhLWdldC1kYXktZW50cmllcyBhcHBseSBzZXRxIGNv bmQgbGV0IGNhdGNoIHdoaWxlIHdoaWxlIGxldCogY2F0Y2hdIDMgW2lmIGxldCBjb25kIGxldCog YW5kIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMtZW5kIGVxIGlmIHdoaWxlIGNhdGNoIHByb2du IHNldHEgcHJvZ24gaWYgcHJvZ25dIDEgW2VxIGlmIGxldCogaWYgbGV0KiBvcmctZWxlbWVudC1l bmQgbGV0IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2 ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNh c2VdIDEgW2FuZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0YzkzZjljODQ5ZDE2 ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmXSAxIFtp ZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWVuZCA8PSBhbmQgd2hpbGUgbGV0 IGNvbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1i dWZmZXJdIDEgW29yZy1nZXQtd2RheXMgY29uZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJk YSAweGQ0YzkzZjljODQ5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2du IGlmIHByb2duXSAyIFs8IGFuZCBvciBpZiBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJv Z24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWZdIDIgW21lbXEgaWYgc2F2ZS1jdXJyZW50LWJ1 ZmZlciBzZXRxIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWZdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xh dXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3Jtc10gMyBbY29uZCBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1t YXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldF0gMiBbbGlzdCBv ciBjZHIgY2FyIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQt c2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCpdIDEgW2lmIGxl dCBjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMtZW5kIGVxIGlmIGNhdGNo IHByb2duIHNldHEgcHJvZ24gaWYgcHJvZ24gaWZdIDEgWz0gYW5kIGlmIGxldCogc2F2ZS1jdXJy ZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQt LXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHFdIDEgW2xldCogb3JnLWVsZW1lbnQtY2Fj aGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdo aWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtY3VycmVudC1idWZmZXJdIDUgW2xldCogYW5kIGxldCogaWYgcHJvZ24gaWYgaWYgaWYgd2hp bGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZl0g NiBbY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1t YXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3 aGlsZSBsZXQgbGV0Kl0gMiBbbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxl dCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUg bGV0IGxldCogcHJvZ24gbGV0XSAzIFtzZXRxIHByb2duIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1 ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNl LXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHFdIDEgW3NldHEgbGV0IGlmIGxldCogcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3Jn LWFnZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmRdIDEgW2VxIGNvbmQgbGV0 KiBhbmQgbGV0KiBvcmctZWxlbWVudC1lbmQgb3IgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJz ZS10byBzZXRxIHByb2duXSAxIFtvciBhbmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVu dC0tY2FjaGUtYWN0aXZlLXAgYW5kIGlmIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBvcmctZWxlbWVu dC1saW5lYWdlIHNldHEgb3JnLS1wcm9wZXJ0eS1sb2NhbC12YWx1ZXNdIDEgW21hY3JvZXhwYW5k LWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQt Y2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0 IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAzIFtjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGlzdCBsZXQgK29yZy0tb3B0aW1pemUtYmFj a2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZm ZXIgaWYgbGV0KiBvcmctYWdlbmRhLWdldC1kYXktZW50cmllcyBhcHBseSBzZXRxIGNvbmQgbGV0 IGNhdGNoIHdoaWxlXSA1IFs+IG9yIGlmIGlmIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRh IDB4ZDRjOTNmOWM4NDlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ24gaWYgcHJvZ25d IDEgW29yZy1lbGVtZW50LXBhcmVudCBzZXRxIHdoaWxlIHByb2duIGlmIHByb2duIG9yZy1lbGVt ZW50LWJlZ2luIG9yIG1heCBzZXRxIGlmIGlmIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldF0g NCBbYW5kIG9yIGlmIGlmIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDRjOTNmOWM4 NDlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ24gaWYgcHJvZ25dIDEgW2lmIGxldCBj YXRjaCB3aGlsZSB3aGlsZSBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDIgW2FuZCBsZXQqIG9yZy1lbGVt ZW50LWVuZCA8PSBhbmQgd2hpbGUgbGV0IGNvbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRv IGNvbmRpdGlvbi1jYXNlIGlmXSAzIFtvcmctZWxlbWVudC1jb250ZW50cy1lbmQgZXEgaWYgd2hp bGUgY2F0Y2ggcHJvZ24gc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQq XSAxIFthbmQgaWYgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1 cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IG9yZy1lbGVtZW50LWxpbmVhZ2Ugc2V0 cSBvcmctLXByb3BlcnR5LWxvY2FsLXZhbHVlcyBsZXQqIGNvbmQgb3JnLWVudHJ5LWdldCBsZXQq XSAxIFtsZXQqIGFuZCBsZXQqIGFuZCBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVs ZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRp b24tY2FzZV0gMyBbcHJvZ24gc2V0cSB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFw IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHFdIDEgW2xldCogYW5kIGxldCogYW5k IGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQg bGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIg Y2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHFdIDMgW29yIGxldCBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxl bWVudC0tcGFyc2UtdG8gc2V0cSBwcm9nbiBpZiBwcm9nbiBvcmctZWxlbWVudC1iZWdpbiBvciBt YXggc2V0cV0gMSBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWNvbnRlbnRzLWJlZ2luIGdv dG8tY2hhciBwcm9nbiBpZiAiIzxsYW1iZGEgMHhkNGM5M2Y5Yzg0OWQxNmU+IiBmdW5jYWxsIGNv bnMgc2V0cSBpZiBwcm9nbiBpZiBwcm9nbl0gMSBbb3JnLWVsZW1lbnQtLXByb3BlcnR5IG9yZy1l bGVtZW50LXByb3BlcnR5LWluaGVyaXRlZCBpZiBvcmctaW4tY29tbWVudGVkLWhlYWRpbmctcCBh bmQgb3IgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IG9yZy1hZ2VuZGEtc2tpcCBjYXRjaCBw cm9nbiBpZiAiIzxsYW1iZGEgMHhkNGM5M2Y5Yzg0OWQxNmU+IiBmdW5jYWxsXSAyIFthbmQgb3Ig YW5kIG9yIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBvcmctYWdlbmRhLXNraXAgY2F0Y2gg cHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDRjOTNmOWM4NDlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHFd IDIgW2lmIG9yZy1lbGVtZW50LS1jYWNoZS1zeW5jIGlmIGlmIHByb2duIGlmIGxldCBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVu dC1hdC1wb2ludCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMiBbd2hpbGUg d2hpbGUgbGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNh bGwtaW50ZXJhY3RpdmVseSBjb25kIGxldCogY2F0Y2ggb3JnLWFnZW5kYSBmdW5jYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAxIFtwcm9nbiBhbmQgaWYgd2hp bGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBw cm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVk dWxlZF0gMSBbZW5jb2RlLXRpbWUgb3JnLXRpbWUtc3RyaW5nLXRvLXRpbWUgY29uZGl0aW9uLWNh c2UgdGltZS10by1kYXlzIGNvbmQgb3JnLXRpbWUtc3RyaW5nLXRvLWFic29sdXRlIGFwcGx5IGNv bmRpdGlvbi1jYXNlIG9yZy1hZ2VuZGEtLXRpbWVzdGFtcC10by1hYnNvbHV0ZSBjb25kIGxldCog Y2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDRjOTNmOWM4NDlkMTZlPiIgZnVuY2FsbF0gNSBb b3JnLWVsZW1lbnQtcHJvcGVydHktaW5oZXJpdGVkIGlmIG9yZy1pbi1jb21tZW50ZWQtaGVhZGlu Zy1wIGFuZCBvciBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgb3JnLWFnZW5kYS1za2lwIGNh dGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0YzkzZjljODQ5ZDE2ZT4iIGZ1bmNhbGwgY29uc10g MSBbc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBvcmctYWdlbmRhLWZpeC1kaXNwbGF5ZWQtdGFncyBz ZXRxIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBsZXQqIG9yZy1hZ2VuZGEtZm9ybWF0LWl0ZW0g bGV0KiBzYXZlLWV4Y3Vyc2lvbiBsZXQqIGNhdGNoXSAxIFtjYXRjaCBwcm9nbiBpZiAiIzxsYW1i ZGEgMHhkNGM5M2Y5Yzg0OWQxNmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiBwcm9n biBpZiBwcm9nbiBpZiBpZiBpZl0gNiBbc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0t Y2FjaGUtYWN0aXZlLXAgaWYgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1t YXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUg bGV0XSAxIFtjb25jYXQgc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBsZXQgaWYgbGV0IG9yZy1hZ2Vu ZGEtaGlnaGxpZ2h0LXRvZG8gbWFwY2FyIHNldHEgcHJvZ24gbGV0IG9yZy1hZ2VuZGEtZmluYWxp emUtZW50cmllcyBpbnNlcnRdIDEgW2xldCogYW5kIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBh cnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1l eGN1cnNpb24gc2F2ZS1leGN1cnNpb25dIDEgW3NldHEgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYg bGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBs ZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcF0gMiBbaWYgb3IgaWYgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmXSA3IFthcHBs eSBvcmctZ2V0LWFnZW5kYS1maWxlLWJ1ZmZlciBpZiBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRheS1l bnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXQgY2F0Y2ggd2hpbGUgd2hpbGUgbGV0KiBjYXRjaCBv cmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAyIFttYWNyb2V4cGFuZC1hbGwg Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVt ZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zXSAxIFtvciBh bmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtYWN0aXZlLXAgaWYgcHJv Z24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGlu ZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0XSAyIFtwcm9nbiBwcm9nbiBzZXRxIHByb2du IGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJv Z24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXBdIDEgW21hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRl ZC1jbG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEt Z2V0LXNjaGVkdWxlZF0gOCBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVz ZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIG1hcGNhciBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxl dCBjb25kIGxldF0gMSBbbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1lbmQgPD0gYW5kIHdoaWxl IGxldCBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZV0gMSBb bGV0IGNhdGNoIHNhdmUtZXhjdXJzaW9uIG9yZy1hdC1kYXRlLXJhbmdlLXAgb3IgaWYgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0IGNhdGNoIHdoaWxlIGxldCogb3JnLWFnZW5kYS1nZXQtdGltZXN0 YW1wcyBjb25zIHNldHEgbGV0XSAxIFtjb25kIGxldCogY29uZCBzZXRxIGxldCB3aGlsZSBzYXZl LWV4Y3Vyc2lvbiBsZXQqIGNvbmQgc2V0cSBsZXQgb3JnLWVsZW1lbnQtLW9iamVjdC1sZXggbGV0 IHdoaWxlIGNhdGNoIGxldF0gMSBbY2RyIGNhciBpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9y Zy1lbGVtZW50LWJlZ2luIDwgYW5kIGlmIHByb2duIGlmIGlmIGlmXSAxIFtjZHIgY2FyIGxldCog b3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMg c2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0XSAyIFt0aW1lLWRhdGUt LWRheS1pbi15ZWFyIHRpbWUtdG8tZGF5cyBjb25kIG9yZy10aW1lLXN0cmluZy10by1hYnNvbHV0 ZSBhcHBseSBjb25kaXRpb24tY2FzZSBvcmctYWdlbmRhLS10aW1lc3RhbXAtdG8tYWJzb2x1dGUg Y29uZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAtMHgyNjRkZWRlNmYwYzNhYjU+IiBm dW5jYWxsIGNvbnMgc2V0cV0gMSBbb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1wIGlmIHByb2du IGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVk IGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ25dIDIgW3NldHEgcHJv Z24gY29uZCBsZXQqIHdoaWxlIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVu dC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvXSAyIFtvciBzZXQt YnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1wIGlm IHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVh ZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldF0gMSBbc2V0cSBjb25kIGxldCBjYXRj aCB3aGlsZSB3aGlsZSBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhIGZ1bmNh bGwtaW50ZXJhY3RpdmVseV0gMyBbZ290by1jaGFyIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdo aWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYg cHJvZ25dIDEgW2lmIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBwcm9nbiBpZiBwcm9nbiBp ZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqXSAxIFthYmJyZXZpYXRlLWZpbGUtbmFtZSBm b3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNv bmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAxIFs8IGFu ZCBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1l eGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duXSAxIFtsZXQqIGFuZCBsZXQqIGxldCBsZXQqIHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBv cmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMiBbb3IgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24g bGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWRd IDEgW2lmIG9yZy1jbG9zZXN0LWRhdGUgY29uZCBvcmctdGltZS1zdHJpbmctdG8tYWJzb2x1dGUg YXBwbHkgY29uZGl0aW9uLWNhc2Ugb3JnLWFnZW5kYS0tdGltZXN0YW1wLXRvLWFic29sdXRlIGxl dCBjb25kIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2ZmI4ZTlkMTZlPiIg ZnVuY2FsbCBjb25zXSAyIFtvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVs ZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0XSAxIFt1bndpbmQtcHJvdGVjdCBs ZXQgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMiBbb3IgaWYgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCpdIDEg W2xpc3Qgb3IgY2RyIGNhciBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2Vu ZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbl0g MyBbaWYgb3JnLWluLWFyY2hpdmVkLWhlYWRpbmctcCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQg YW5kIG9yIGFuZCBvciBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgb3JnLWFnZW5kYS1za2lw IGNhdGNoIHByb2duXSAzIFtsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWNvbnRl bnRzLWVuZCBlcSBpZiB3aGlsZSBjYXRjaCBwcm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlmXSAx IFtzZXRxIHdoaWxlIGNhdGNoIHByb2duIHNldHEgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hp bGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSA0IFtjY29udi0tYW5h bHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRl cnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVk dWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqXSAyIFtjYXItc2FmZSBz ZXRxIHdoaWxlIHdoaWxlIGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjYWxsLWludGVyYWN0aXZlbHkgY29uZCBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDEgW3NhdmUtY3VycmVudC1i dWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEg bGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlm IG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0 XSAyIFttZW1xIGFuZCBwcm9nbiBvciBwcm9nbiBhcmVmIHByb2duIHByb2duIG9yZy1lbGVtZW50 LS1oZWFkbGluZS1jYWNoZS1yb290IGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbl0gOSBbdGltZS10by1kYXlzIG9yZy10 b2RheSBlcSBvcmctYWdlbmRhLXRvZGF5LXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMg c2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rp b25dIDMgW2xldCogaWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiA8IGFuZCBvciBpZiBpZiB3aGls ZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duXSAzIFtz YXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNo ZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxXSAyIFtjb25kIGxl dCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gZXEgb3IgYW5kIGlmIHByb2duIGlmIGlmIGlm IHdoaWxlIGlmIGxldCpdIDIgW2NvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1lbmQgPD0g YW5kIHdoaWxlIGxldCBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10b10gMSBbaWYgbGV0 IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9y Zy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHBy b2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwXSA1IFtpZiBjb25zIGxldCBj b25kIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBp ZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNj aGVkdWxlZF0gMSBbc2V0cSBpZiBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGls ZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0XSAyIFtlcSBvciBh bmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtYWN0aXZlLXAgaWYgcHJv Z24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGlu ZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGVdIDEgW2NvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxl bWVudC1jb250ZW50cy1lbmQgZXEgaWYgd2hpbGUgY2F0Y2ggcHJvZ24gc2V0cSBwcm9nbiBpZiBw cm9nbiBpZiBpZl0gMSBbdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZv cm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtYmxvY2tzIGNvbnMgc2V0cSBsZXQgY29uZCBs ZXQgd2hpbGUgbGV0IGxldCogcHJvZ25dIDEgW29yIGlmIGlmIHByb2duIHVud2luZC1wcm90ZWN0 IGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHBy b2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCpdIDEgW2lmIG9yIHNldHEgaWYgcHJv Z24gc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJp Y3Rpb25dIDEgW2xldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxldCogb3JnLWFn ZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cV0gMiBbaWYgbGV0KiBpZiBsZXQqIG9yZy1l bGVtZW50LWJlZ2luIGVxIG9yIGFuZCBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqXSAx IFtzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxldCogb3JnLWFnZW5kYS1n ZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBjb25kIGxldCBjYXRjaCB3aGlsZSB3aGlsZSBsZXQq IGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDMgW2lmIGxldCBj b25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtZW5kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3Jn LWVsZW1lbnQtLXBhcnNlLXRvXSAxIFtpZiBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQq IG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lc10gMSBb b3JnLWVsZW1lbnQtLXByb3BlcnR5IG9yZy1lbGVtZW50LXBhcmVudCBzZXRxIHdoaWxlIGNhdGNo IHByb2duIHNldHEgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0Kl0gMiBbaWYg bGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWNvbnRlbnRzLWVuZCBlcSBpZiB3aGlsZSBjYXRjaCBw cm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlmIGlmXSAxIFtwcm9nbiBjb25kIGxldCogd2hpbGUg aWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBj YXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gc2V0cV0gMSBbb3IgcHJvZ24gYXJlZiBwcm9nbiBw cm9nbiBvcmctZWxlbWVudC0tY2FjaGUtcm9vdCBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3Jn LWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10b10gMSBb c2F2ZS1jdXJyZW50LWJ1ZmZlciBub3QgYW5kIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdo aWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDIgW3NldHEg bGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1l IGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtYmxvY2tzIGNvbnMgc2V0cSBsZXQgY29u ZF0gMSBbd2hpbGUgcHJvZ24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4IHNldHEg aWYgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlmXSAxIFtjYXRjaCBwcm9n biBzZXRxIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ25dIDEgW3doaWxlIGlmIGxldCogc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVu dC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldF0g MiBbbGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIHdoaWxlIGlmIGxldCogc2F2ZS1jdXJyZW50 LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBh cnNlLXRvIGNvbmRpdGlvbi1jYXNlXSAyIFtpZiBwcm9nbiBpZiBsZXQgc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9p bnQgb3JnLWVsZW1lbnQtbGluZWFnZSBzZXRxIG9yZy0tcHJvcGVydHktbG9jYWwtdmFsdWVzIGxl dCogY29uZCBvcmctZW50cnktZ2V0XSAxIFtjZHIgY2FyIGlmIGxldCBjb25kIGxldCogYW5kIGxl dCogb3JnLWVsZW1lbnQtYmVnaW4gPCBhbmQgb3IgaWYgaWYgd2hpbGUgaWZdIDEgW29yIGlmIHBy b2duIHVud2luZC1wcm90ZWN0IGxldCBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW2xldCBjb25kIGxldCogYW5k IGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1i dWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEg bGV0IHNhdmUtcmVzdHJpY3Rpb25dIDEgW2FuZCBpZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgc2F2 ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0Kl0gMyBb b3IgY29uZCBsZXQgb3JnLWdldC13ZGF5cyBjb25kIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFt YmRhIDB4ZDQ1NjI2ZmI4ZTlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ24gaWZdIDEg W3NldHEgcHJvZzEgY2FyLXNhZmUgaWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYg d2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uXSA0IFthbmQgbm90IGFuZCBpZiBsZXQgbGV0 IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZv cm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkXSAxIFtvcmctZWxlbWVudC1i ZWdpbiA8IGFuZCBvciBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1l eGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCpdIDIgW21heCBzZXRxIGlmIGlmIGlmIHBy b2duIHVud2luZC1wcm90ZWN0IGxldCBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZl0g MSBbY29uY2F0IGludGVybiBvcmctZWxlbWVudC0tcHJvcGVydHkgbGV0KiBvcmctLXByb3BlcnR5 LWxvY2FsLXZhbHVlcyBsZXQqIGNvbmQgb3JnLWVudHJ5LWdldCBsZXQqIGNhdGNoIHByb2duIGlm ICIjPGxhbWJkYSAweGQ0NTYyNmZiOGU5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxXSAzIFtvciBh bmQgY29uZCBvcmctZW50cnktZ2V0IGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1 NjI2ZmI4ZTlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ24gaWYgcHJvZ25dIDEgW21h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnBy ZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFt cHMgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZV0gMSBbbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rp b24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNv bnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGVdIDEgW2xldCogaWYgbGV0KiBvcmctZWxlbWVudC1l bmQgb3IgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHByb2du XSAxIFtvcmctZ2V0LXRpbWUtb2YtZGF5IGFuZCBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxl dCBsZXQqIG9yZy1hZ2VuZGEtZm9ybWF0LWl0ZW0gbGV0KiBzYXZlLWV4Y3Vyc2lvbiBsZXQqIGNh dGNoIHByb2duIGlmICIjPGxhbWJkYSAtMHgxZmVhYzI0ZDZiOGQyYTc0PiIgZnVuY2FsbF0gMiBb bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5k LWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGxldCog b3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXRdIDEgW2xldCBh YmJyZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWJsb2Nr cyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldF0gMSBbaWYg bGV0KiBvcmctZWxlbWVudC1iZWdpbiA9IGFuZCBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIg b3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10b10g MiBbb3JnLWVsZW1lbnQtLXByb3BlcnR5IGFuZCBpZiAiIzxsYW1iZGEgMHhkNDU2MjY5ODhlOWQx NmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZiBp Zl0gNCBbbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50 LS1jYWNoZS1rZXktbGVzcy1wIGFuZCBvciBhbmQgaWYgc2V0cSBpZiBpZiB3aGlsZSBpZiBsZXQq XSAxIFtsZXQqIGlmIGxldCBpZiBvcmctY2xvc2VzdC1kYXRlIGNvbmQgb3JnLXRpbWUtc3RyaW5n LXRvLWFic29sdXRlIGFwcGx5IGNvbmRpdGlvbi1jYXNlIG9yZy1hZ2VuZGEtLXRpbWVzdGFtcC10 by1hYnNvbHV0ZSBsZXQgY29uZCBsZXQqIGNhdGNoIHByb2duIGlmXSAxIFtjb25kIGxldCogYW5k IGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9y Zy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG5vdCBvciBhbmQgaWYgd2hpbGUgaWYgbGV0Kl0g MSBbc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZiBsZXQgb3JnLWFnZW5kYS1uZXctbWFya2VyIG9yZy1h ZGQtcHJvcHMgbGV0KiBzYXZlLWV4Y3Vyc2lvbiBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJk YSAweDUwNTlmZTU5OTQ0MmMwND4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmXSAxIFsiIzxsYW1iZGEg LTB4MTNiOTcyMDlhNzBiOWZkNj4iIG9yZy1lbGVtZW50LWxpbmVhZ2UtbWFwIGxldCBvcmctZW50 cnktZ2V0LXdpdGgtaW5oZXJpdGFuY2Ugb3Igb3JnLWdldC1jYXRlZ29yeSBsZXQqIHNhdmUtZXhj dXJzaW9uIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4NTA1OWZlNTk5NDQyYzA0PiIg ZnVuY2FsbCBjb25zIHNldHFdIDEgW3NldHEgcHJvZ24gaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVt ZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZF0gMSBbaWYgc2F2ZS1j dXJyZW50LWJ1ZmZlciBwcm9nbiBpZiBvcmctZWxlbWVudC0tY2FjaGUtc3luYyBpZiBpZiBwcm9n biBpZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBs ZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnRdIDEgW2xldCBjb25kIGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50 LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHByb2duIG9yZy1lbGVtZW50LWJlZ2luIG9yIG1heCBz ZXRxXSAxIFt3aGlsZSBsZXQgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBv cmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCog cHJvZ24gbGV0XSAxIFthbmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUt YWN0aXZlLXAgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1 cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHBy b2duIG9yZy1lbGVtZW50LWJlZ2luIG9yXSAxIFtpZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2luID0g b3IgaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IGxldCBwcm9nbiBpZl0gMSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVz ZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1h a2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbl0gMyBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1h a2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsaXN0IGxldCArb3JnLS1vcHRpbWl6ZS1i YWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBhcHBseSBvcmctZ2V0LWFnZW5kYS1maWxlLWJ1 ZmZlciBpZiBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBs ZXRdIDIgW21hY3JvZXhwLW1hY3JvZXhwYW5kIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBh bmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbl0gMiBbY29uZCBp ZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxl dCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNh dGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldF0gMSBb bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsXSA0IFtwcm9nbiBz ZXRxIHByb2duIGNvbmQgbGV0KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3Jn LWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoXSAxIFtvcmctcGFyc2UtdGltZS1zdHJpbmcg ZW5jb2RlLXRpbWUgb3JnLXRpbWUtc3RyaW5nLXRvLXRpbWUgdGltZS10by1kYXlzIGlmIG9yZy1j bG9zZXN0LWRhdGUgY29uZCBvcmctdGltZS1zdHJpbmctdG8tYWJzb2x1dGUgYXBwbHkgY29uZGl0 aW9uLWNhc2Ugb3JnLWFnZW5kYS0tdGltZXN0YW1wLXRvLWFic29sdXRlIGxldCBjb25kIGxldCog Y2F0Y2ggcHJvZ25dIDIgW29yZy1lbGVtZW50LWJlZ2luIGxldCogd2hpbGUgaWYgbGV0KiBzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxl bWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWZdIDIgW2VuY29kZS10aW1lIG9yZy10aW1l LXN0cmluZy10by10aW1lIHRpbWUtdG8tZGF5cyBpZiBvcmctY2xvc2VzdC1kYXRlIGNvbmQgb3Jn LXRpbWUtc3RyaW5nLXRvLWFic29sdXRlIGFwcGx5IGNvbmRpdGlvbi1jYXNlIG9yZy1hZ2VuZGEt LXRpbWVzdGFtcC10by1hYnNvbHV0ZSBsZXQgY29uZCBsZXQqIGNhdGNoIHByb2duIGlmXSAxIFth bmQgb3IgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqXSAxIFtj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBj Y29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYt bWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gNCBbbGV0IHByb2duIGlmIHBy b2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1 bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCpdIDEgW21hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jtc10gMSBbaWYgcHJvZ24gb3JnLWVsZW1lbnQt YmVnaW4gb3IgbWF4IHNldHEgaWYgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2du IGlmIHByb2duIGlmXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1p bnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9y Zy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBw cm9nbiBsZXRdIDIgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQq IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24g bGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0Kl0gMSBbbGV0IG9yZy1lbGVtZW50LS1jYWNo ZS12ZXJpZnktZWxlbWVudCBhbmQgaWYgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJp Y3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmXSAyIFtjYXIgZXEgaWYgbGV0IGNvbmQg bGV0KiBhbmQgbGV0KiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqXSAxIFtjb25kIGxl dCogYW5kIGxldCogb3JnLWVsZW1lbnQtZW5kIG9yIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFy c2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cV0gMiBbaWYgZXEgb3JnLWFnZW5kYS10b2RheS1w IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxl dCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAxIFttYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDEgW2FuZCBub3QgYW5k IGlmIGxldCBsZXQgaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1m aWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXNdIDEgW2xl dCogb3JnLWVsZW1lbnQtY29udGVudHMtZW5kIGVxIGlmIGNhdGNoIHByb2duIHNldHEgcHJvZ24g aWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0Kl0gMSBbZXEgaWYgd2hpbGUgY2F0Y2ggcHJv Z24gc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJp Y3Rpb25dIDIgW29yZy1lbGVtZW50LWJlZ2luIGVxIG9yIGFuZCBpZiBwcm9nbiBpZiBpZiBpZiB3 aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duXSAx IFtsZXQqIGFuZCBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hl LWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBz ZXRxXSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsXSAzIFtj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBw cm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEt Z2V0LWRlYWRsaW5lc10gNiBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCog b3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBu b3QgYW5kIG9yIGlmIGlmIHdoaWxlIGlmXSAxIFtvciBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1i dWZmZXIgYW5kIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMiBbY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnBy ZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxpc3QgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRl ZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyIGlmIGxl dCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBjb25kIGxldCBjYXRjaF0g MiBbbGV0KiBvcmctLXByb3BlcnR5LWxvY2FsLXZhbHVlcyBsZXQqIGNvbmQgb3JnLWVudHJ5LWdl dCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNjk4OGU5ZDE2ZT4iIGZ1bmNh bGwgY29ucyBzZXRxIGlmIHByb2duIGlmXSAxIFtpZiBsZXQqIGlmIGxldCogbGV0IGxldCogc2F2 ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9y Zy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHByb2duIG9yZy1lbGVtZW50LWJlZ2lu XSAxIFtzZXRxIGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRl LWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNleHBzIGNvbnMgc2V0 cSBsZXQgY29uZF0gMiBbb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29u ZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZiBsZXQqXSAyIFtsZXQqIGFuZCBsZXQqIGFuZCBs ZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNz LXAgbm90IG9yIGFuZCBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb25dIDIgW2xpc3Qg ZW5jb2RlLXRpbWUgZm9ybWF0LXRpbWUtc3RyaW5nIHN1YnN0cmluZyByZWdleHAtcXVvdGUgY29u Y2F0IGxldCogb3JnLWFnZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0 IHdoaWxlIGxldCBsZXQqXSA0IFtjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4g bGV0KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hl LWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyXSAyIFtpZiBsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMtYmVnaW4g Z290by1jaGFyIHNhdmUtZXhjdXJzaW9uIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4 ZmQ4NjUwMGNmNzVjYzAyPiIgZnVuY2FsbCBjb25zIHNldHEgaWZdIDEgW2NvbmQgb3JnLWRhdGUt dG8tZ3JlZ29yaWFuIGxldCogaWYgbGV0IGlmIG9yZy1jbG9zZXN0LWRhdGUgY29uZCBvcmctdGlt ZS1zdHJpbmctdG8tYWJzb2x1dGUgYXBwbHkgY29uZGl0aW9uLWNhc2Ugb3JnLWFnZW5kYS0tdGlt ZXN0YW1wLXRvLWFic29sdXRlIGxldCBjb25kIGxldCogY2F0Y2hdIDEgW2NhciBlcSBpZiBsZXQg Y29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIG9yIG1heCBzZXRxIGlmIGlmIGlm IHByb2duXSAxIFtzYXZlLWV4Y3Vyc2lvbiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJv Z24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4IHNldHEgaWYgaWZdIDEgW2xldCBj b25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtZW5kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3Jn LWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlXSAxIFtjb25kIHNldHEgbGV0IHdoaWxl IHNhdmUtZXhjdXJzaW9uIGxldCogY29uZCBzZXRxIGxldCBvcmctZWxlbWVudC0tb2JqZWN0LWxl eCBsZXQgd2hpbGUgY2F0Y2ggbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMSBbbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsXSAzIFtwcm9nbiBpZiBsZXQgc2F2 ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVs ZW1lbnQtYXQtcG9pbnQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24g aWYgcHJvZ24gbGV0Kl0gMSBbb3JnLWVsZW1lbnQtY29udGVudHMtYmVnaW4gcHJvZ24gaWYgb3Ig c2V0cSBpZiBwcm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmXSAxIFtl cSBpZiBsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtZW5kIDw9IGFuZCB3aGlsZSBsZXQgY29uZCBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBj YXRjaF0gMSBbb3JnLXRpbWUtc3RhbXAtZm9ybWF0IGZvcm1hdC10aW1lLXN0cmluZyBzdWJzdHJp bmcgcmVnZXhwLXF1b3RlIGNvbmNhdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29u cyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbl0gMSBbc2V0cSBjb25kIHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZiBsZXQq IG9yZy1hZ2VuZGEtZ2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXQgY2F0Y2ggd2hp bGUgd2hpbGUgbGV0Kl0gMSBbdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1l IGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtc2V4cHMgY29ucyBzZXRxIGxldCBjb25k IGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbl0gMSBbbWFjcm9leHAtbWFjcm9leHBhbmQgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwYW5kLWFsbF0gNCBbPCBvciBpZiBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQq IG9yZy1lbGVtZW50LWNhY2hlLW1hcF0gMSBbdGltZS1kYXRlLS1kYXktaW4teWVhciB0aW1lLXRv LWRheXMgb3JnLXRvZGF5IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNv bmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uXSAxIFtzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9u IGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBvcmctZWxlbWVudC1saW5lYWdlIHNldHEgb3Jn LS1wcm9wZXJ0eS1sb2NhbC12YWx1ZXMgbGV0KiBjb25kIG9yZy1lbnRyeS1nZXQgbGV0KiBjYXRj aCBwcm9nbiBpZl0gMiBbYW5kIGxldCogYW5kIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBv cmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNl dHEgcHJvZ25dIDEgW29yZy1lbGVtZW50LWJlZ2luIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hl LWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBub3QgYW5kIG9yIGlmIGlmIHdoaWxl IGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDEgW2NvbmQgbGV0 IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJy ZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYg c2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMyBbc2V0cSBzYXZlLWN1 cnJlbnQtYnVmZmVyIGlmIGxldCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0 cSBjb25kIGxldCBjYXRjaCB3aGlsZSB3aGlsZSBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBm dW5jYWxsLWludGVyYWN0aXZlbHldIDEgW21hY3JvZXhwLW1hY3JvZXhwYW5kIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zXSAxIFthbmQgaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2OTg3ZTlkMTZlPiIg ZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hp bGVdIDIgW2xldCBjb25kIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2OTg3 ZTlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ25dIDEg W2NkciBjYXIgaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1lbmQgPD0gYW5k IHdoaWxlIGxldCBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMSBbbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5j dGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMg c2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0XSAxIFttZW1xIGNvbmQg d2hpbGUgbGV0IHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5k YS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0XSAxIFtjYXIg ZXEgaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBlcSBvciBhbmQg aWYgcHJvZ24gaWYgaWZdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBj Y29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGxldCogb3JnLWFn ZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCog cHJvZ25dIDIgW3Byb2duIGFyZWYgcHJvZ24gcHJvZ24gb3JnLWVsZW1lbnQtLWNhY2hlLXJvb3Qg bGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQq IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRj aCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2VdIDIgW2VxIG9yZy1hZ2VuZGEt dG9kYXktcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxldCB3 aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyXSAxIFtvciBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIg aWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJl c3RyaWN0aW9uXSAxIFtsZXQqIG9yZy1lbGVtZW50LWNvbnRlbnRzLWJlZ2luIGdvdG8tY2hhciBw cm9nbiBpZiAiIzxsYW1iZGEgLTB4ZDhkOWE0ZGI1NzExZDc5PiIgZnVuY2FsbCBjb25zIHNldHEg aWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWZdIDEgW3Byb2duIGlmIGlmIGxldCogY2F0Y2gg cHJvZ24gaWYgIiM8bGFtYmRhIC0weDI2NGRlMWNjNDBjM2FiNT4iIGZ1bmNhbGwgY29ucyBzZXRx IGlmIHByb2duIGlmIHByb2duIGlmXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6 ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1m diBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGxldCogb3Jn LWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGVdIDEgW2Nv bmNhdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxldCBjb25kIGxl dCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxIFttZW1xIGlmIG5vdCBhbmQgd2hpbGUgcHJvZ24gaWYg cHJvZ24gb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4IHNldHEgaWYgaWYgaWYgcHJvZ25dIDEgW2xl dCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3Mt cCBub3QgYW5kIG9yIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBsZXQgcHJvZ25dIDMgW3NldHEgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1h Z2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxXSAyIFtsZXQgb3JnLXRpbWUtc3RhbXAtZm9y bWF0IGZvcm1hdC10aW1lLXN0cmluZyBzdWJzdHJpbmcgcmVnZXhwLXF1b3RlIGNvbmNhdCBsZXQq IG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBs ZXQgbGV0Kl0gMSBbcHJvZ24gcHJvZ24gb3JnLWVsZW1lbnQtLWhlYWRsaW5lLWNhY2hlLXJvb3Qg aWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3Jn LWFnZW5kYS1nZXQtZGVhZGxpbmVzXSAxIFthbmQgaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYg d2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBp Zl0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSA0IFtt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXNdIDEgW3NhdmUtZXhj dXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBs ZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldF0gMSBbb3IgYW5kIHNhdmUtY3Vy cmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1wIGlmIHByb2duIGlmIHByb2du IGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVz IHNldHEgbGV0IGNvbmQgbGV0XSAyIFtvciBhbmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxl bWVudC0tY2FjaGUtYWN0aXZlLXAgaWYgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IG9yZy1lbGVtZW50 LWxpbmVhZ2Ugc2V0cSBvcmctLXByb3BlcnR5LWxvY2FsLXZhbHVlcyBsZXQqXSAxIFtmdW5jYWxs IGxldCBvcmctdGltZS1zdGFtcC1mb3JtYXQgZm9ybWF0LXRpbWUtc3RyaW5nIHN1YnN0cmluZyBy ZWdleHAtcXVvdGUgY29uY2F0IGxldCogb3JnLWFnZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNl dHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldF0gMSBbYW5kIHNhdmUtY3VycmVudC1idWZmZXIgb3Jn LWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1wIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUt bWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQg d2hpbGUgbGV0XSAxIFtvciBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlv bi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1l eGN1cnNpb24gbGV0XSAxIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t YWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsXSAzIFthbmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtYWN0 aXZlLXAgYW5kIGlmIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhj dXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBvcmctZWxlbWVudC1saW5lYWdlIHNl dHEgb3JnLS1wcm9wZXJ0eS1sb2NhbC12YWx1ZXMgbGV0Kl0gMSBbaWYgc2F2ZS1jdXJyZW50LWJ1 ZmZlciBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHBy b2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1 bGVkIGNvbnMgc2V0cSBsZXRdIDEgW2xldCBjYXRjaCB3aGlsZSB3aGlsZSBsZXQqIGNhdGNoIG9y Zy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGUgbmlsXSAzIFtvcmctZWxlbWVudC0tY2FjaGUtYWN0aXZlLXAgYW5kIGxldCogc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1l bGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMiBbb3IgY2RyIGNhciBsZXQq IG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRx IGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXRdIDIgW2VxIGlmIGxldCBjb25k IGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPSBhbmQgaWYgbGV0KiBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqXSAxIFtjb25kIGxldCog YW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPiBub3Qgb3IgYW5kIGlmIHdoaWxlIGlmIGxldCog c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDEgW3RpbWUtc2luY2UgdGltZS10 by1kYXlzIG9yZy10b2RheSBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBj b25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbl0gMSBbb3JnLWluLXNyYy1ibG9jay1wIG9yIGlmIHByb2duIHVud2luZC1wcm90ZWN0 IGxldCBvcmctYWdlbmRhLXNraXAgY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIC0weGQ4ZDlhNGRh NDcxMWQ3OT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duXSAyIFtpZiBsZXQgY29uZCBsZXQq IGFuZCBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHByb2du XSAxIFs8IGFuZCBvciBpZiBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJvZ24gaWYgcHJv Z24gaWYgcHJvZ24gaWYgaWYgaWZdIDIgW2VxIG9yIGFuZCBzYXZlLWN1cnJlbnQtYnVmZmVyIG9y Zy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hl LW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0 XSAxIFtwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGlmIGxldCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBj b25kIGxldCBjYXRjaCB3aGlsZSB3aGlsZSBsZXQqXSAxIFtzdHJpbmc9IGFuZCBpZiBsZXQqIHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3Jn LWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0 XSAxIFtwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1h Z2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQq IHByb2duXSAzIFttZW1iZXItaWdub3JlLWNhc2UgY29uZCBvcmctZW50cnktZ2V0IGxldCogY2F0 Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2OWZhZTlkMTZlPiIgZnVuY2FsbCBjb25zIHNl dHEgaWYgcHJvZ24gaWYgcHJvZ24gaWZdIDEgW29yZy10aW1lLXN0cmluZy10by10aW1lIHRpbWUt dG8tZGF5cyBpZiBvcmctY2xvc2VzdC1kYXRlIGNvbmQgb3JnLXRpbWUtc3RyaW5nLXRvLWFic29s dXRlIGFwcGx5IGNvbmRpdGlvbi1jYXNlIG9yZy1hZ2VuZGEtLXRpbWVzdGFtcC10by1hYnNvbHV0 ZSBsZXQgY29uZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNjlmYWU5ZDE2 ZT4iXSAyIFtlcSBpZiBjYXRjaCBwcm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdo aWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMSBbbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFs bCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGxldCogb3Jn LWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cV0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDIgW2lmIGxldCBjb25kIGxldCogYW5kIGxldCog b3JnLWVsZW1lbnQtZW5kIG9yIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0 aW9uLWNhc2VdIDEgW3NhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2 ZS1wIGlmIHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3Jn LWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGVdIDEgW21h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwt Y2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXNdIDIgW21hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXNdIDEgW2lmIGxldCogaWYgbGV0 KiBvcmctZWxlbWVudC1iZWdpbiA+IG5vdCBvciBhbmQgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMSBbY2RyIHNldHEgY29uZCB3aGlsZSBsZXQg cHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hl ZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZV0gMSBbc2V0cSBpZiBsZXQgbGV0IGlm IGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1h dCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtc2V4cHMgY29ucyBzZXRxXSAxIFtwbGlzdC1tZW1i ZXIgY2RyIGNhciBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0 LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duXSAx IFtpZiBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duXSAyIFttYWNyb2V4cC1tYWNyb2V4 cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2Vz IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsXSAxIFtsZXQgK29yZy0tb3B0aW1pemUtYmFj a2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZm ZXIgaWYgbGV0KiBvcmctYWdlbmRhLWdldC1kYXktZW50cmllcyBhcHBseSBzZXRxIGNvbmQgbGV0 IGNhdGNoIHdoaWxlIHdoaWxlIGxldCogY2F0Y2hdIDEgW2xldCogbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQt LXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlmXSAxIFtsZXQqIGxldCogc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVu dC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBs ZXRdIDEgW2NvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiA8IGFuZCBvciBpZiBp ZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJvZ24gaWYgcHJvZ25dIDEgW29yZy1lbGVtZW50 LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBv cmctZWxlbWVudC1saW5lYWdlIHNldHEgb3JnLS1wcm9wZXJ0eS1sb2NhbC12YWx1ZXMgbGV0KiBj b25kXSAxIFthbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1j YWNoZS1rZXktbGVzcy1wIGFuZCBvciBhbmQgaWYgc2V0cSBpZiBpZiB3aGlsZSBpZiBsZXQqIHNh dmUtcmVzdHJpY3Rpb25dIDEgW2RpcmVjdG9yeS1hYmJyZXYtYXBwbHkgc2V0cSBsZXQgaWYgbGV0 KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxp c3QgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZF0gMSBbbm90IGFu ZCBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duXSAyIFtpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQq IGFuZCBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQg YW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVm ZmVyXSAyIFtsZXQqIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0Kl0gMiBbYW5kIGxldCog bGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVm ZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxl dCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uXSAxIFs9IGFu ZCBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5k IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmXSAyIFthbmQgbGV0KiBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2gg b3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJvZ24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVn aW4gb3IgbWF4IHNldHEgaWZdIDIgW2NvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1iZWdp biBnb3RvLWNoYXIgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJl c3RyaWN0aW9uXSAxIFtjb25jYXQgc2V0cSBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFn ZW5kYS1nZXQtZGVhZGxpbmVzIHNldHFdIDEgW29yZy1nZXQtcHJpb3JpdHkgKyBpZiBvcmctYWRk LXByb3BzIGxldCogc2F2ZS1leGN1cnNpb24gbGV0KiBjYXRjaCBwcm9nbiBpZiAiIzxsYW1iZGEg LTB4ZWZhMzk1OTBkMDZiNWI0PiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ25dIDEgW2xldCog aWYgbGV0KiBvcmctZWxlbWVudC1jb250ZW50cy1lbmQgZXEgaWYgd2hpbGUgY2F0Y2ggcHJvZ24g c2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZl0gMSBbPCBhbmQgb3IgaWYgaWYgd2hpbGUgaWYg bGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBs ZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcF0gMSBbbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWNv bnRlbnRzLWJlZ2luIGdvdG8tY2hhciBzYXZlLWV4Y3Vyc2lvbiBsZXQqIGNhdGNoIHByb2duIGlm ICIjPGxhbWJkYSAweGQ0NTYyNjlmYWU5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2du XSAxIFtwcm9nMSBjYXItc2FmZSBpZiBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3 aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW2lmIGxldCog aWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkg b3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgbm90IG9yIGFuZCBpZiB3aGlsZSBpZiBsZXQq XSAxIFtsZXQgb3JnLWVsZW1lbnQtLWNhY2hlLXZlcmlmeS1lbGVtZW50IGFuZCBpZiBsZXQgc2F2 ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVs ZW1lbnQtYXQtcG9pbnQgbGV0IG9yIG9yZy1hdC1wbGFubmluZy1wIG9yIGlmXSAxIFt3aXRoLW5v LXdhcm5pbmdzIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0 IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgaWZdIDEgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQg Y29ucyBzZXRxXSAxIFtvciBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIgc2V0cSBwcm9n biBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g bGV0IHByb2duIGlmXSAxIFtpZiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25k aXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtZXhjdXJzaW9uIGxldF0gMSBbcHJvZ24gaWYgb3Igc2V0cSBpZiBwcm9nbiBzZXRxIHByb2du IGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCpdIDEgW2Z1bmNhbGwgY29ucyBzZXRxIGlm IHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0 cmljdGlvbl0gMyBbbGV0KiBvcmctZWxlbWVudC1lbmQgb3IgbGV0IGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50 LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uXSAxIFthbmQgb3IgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHBy b2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCpdIDEgW2lmIGxldCogb3JnLWVsZW1l bnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNo ZS1rZXktbGVzcy1wIG5vdCBhbmQgb3IgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0 aW9uXSAxIFtpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCog b3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBu b3QgYW5kIG9yIGlmIGlmXSAxIFthbmQgaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqXSAx IFtzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1w YXJzZS10byBzZXRxIHByb2duIGlmIHByb2duIG9yZy1lbGVtZW50LWJlZ2luIG9yIG1heCBzZXRx IGlmIGlmIGlmIHByb2duXSAxIFtwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJvZ24gaWYgcHJv Z24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IGxldCBwcm9nbl0gMSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsXSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2Nv bnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciBsZXQqIG9yZy1hZ2Vu ZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0XSAxIFthbmQgbGV0KiBvcmctZWxlbWVudC1i ZWdpbiBnb3RvLWNoYXIgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMSBbcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQt YmxvY2tzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCpdIDEgW2lmIGxldCog b3JnLWVsZW1lbnQtZW5kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRv IHNldHEgcHJvZ24gaWYgcHJvZ25dIDEgW3NhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQt LWNhY2hlLWFjdGl2ZS1wIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCog b3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0 IGxldCpdIDEgW2lmIGlmIHByb2duIGlmIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBvcmctZWxlbWVu dC1saW5lYWdlIHNldHEgb3JnLS1wcm9wZXJ0eS1sb2NhbC12YWx1ZXMgbGV0KiBjb25kXSAxIFtt YWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jtc10gMiBbbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFu ZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0Kl0g MSBbc2V0cSBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJl dmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVk IGNvbnMgc2V0cV0gMSBbY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luID0gYW5k IGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQg bGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXJd IDEgW3RpbWUtc2luY2UgdGltZS10by1kYXlzIG9yZy10b2RheSBsZXQqIG9yZy1hZ2VuZGEtZ2V0 LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxl dCBzYXZlLXJlc3RyaWN0aW9uXSAyIFtpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1h cCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdo aWxlIGxldCBsZXQqIHByb2duIGxldF0gMSBbc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVmZmVy IG5vdCBhbmQgaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBj YXIgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3 aGlsZV0gMSBbbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiA9IG9yIGlmIGlmIGlmIHdo aWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ25dIDEg W29yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNl LXRvIHNldHEgcHJvZ24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4IHNldHFdIDEg W2xldCBhbmQgb3IgYW5kIG9yIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBvcmctYWdlbmRh LXNraXAgY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIC0weDI2NGRlMWM1MjBjM2FiNT4iIGZ1bmNh bGwgY29uc10gMSBbaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBsZXQgbGV0KiBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1l bnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHFdIDIgW2xldCogb3JnLWVsZW1lbnQt YmVnaW4gb3IgbWF4IHNldHEgaWYgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2du IGlmIHByb2duIGlmIGlmXSAxIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1l eHBhbmQtYWxsXSAxIFthbmQgbm90IGFuZCBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFn ZW5kYS1nZXQtdGltZXN0YW1wc10gMSBbYW5kIGxldCogb3JnLWVsZW1lbnQtZW5kIDw9IGFuZCB3 aGlsZSBsZXQgY29uZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1j dXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gc2V0cSBwcm9nbl0gMSBb YW5kIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0t Y2FjaGUta2V5LWxlc3MtcCBhbmQgb3IgYW5kIGlmIHNldHEgaWYgaWYgd2hpbGUgaWZdIDEgW3Nl dHEgY29uZCB3aGlsZSBsZXQgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBv cmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCpd IDEgW2FwcGx5IGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtY3VycmVudC1idWZmZXIgaWYgbGV0KiBvcmctYWdlbmRhLWdldC1kYXktZW50cmll cyBhcHBseSBzZXRxIGNvbmQgbGV0IGNhdGNoXSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNs b3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQt c2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCpdIDEgW29yZy1l bGVtZW50LS1jYWNoZS1hY3RpdmUtcCBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1h cCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBs ZXQgbGV0KiBwcm9nbiBsZXRdIDEgW2lmIG9yZy1pbi1zcmMtYmxvY2stcCBvciBpZiBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQgb3JnLWFnZW5kYS1za2lwIGNhdGNoIHByb2duIGlmICIjPGxhbWJk YSAweGQ0NTYyNjllMWU5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmXSAxIFtvciBjb25kIGxl dCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2OWUxZTlkMTZlPiIgZnVuY2FsbCBj b25zIHNldHEgaWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ25dIDEgW3Byb2duIGlmIGxldCBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxl bWVudC1hdC1wb2ludCBvcmctZWxlbWVudC1saW5lYWdlIHNldHEgb3JnLS1wcm9wZXJ0eS1sb2Nh bC12YWx1ZXMgbGV0KiBjb25kIG9yZy1lbnRyeS1nZXQgbGV0Kl0gMSBbYW5kIGxldCogb3JnLWVs ZW1lbnQtYmVnaW4gPCBhbmQgb3IgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2du IGlmIHByb2duIGlmIGlmXSAxIFtvcmctZWxlbWVudC1wcm9wZXJ0eS1pbmhlcml0ZWQgaWYgb3Jn LWluLWFyY2hpdmVkLWhlYWRpbmctcCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYW5kIG9yIGFu ZCBvciBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgb3JnLWFnZW5kYS1za2lwIGNhdGNoXSAx IFttYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9u IG1hcGNhciBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQg bGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldF0gMSBbb3JnLWVsZW1lbnQtbGluZWFnZSBzZXRx IG9yZy0tcHJvcGVydHktbG9jYWwtdmFsdWVzIGxldCogY29uZCBvcmctZW50cnktZ2V0IGxldCog Y2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2ZGQzZTlkMTZlPiIgZnVuY2FsbCBjb25z IHNldHEgaWYgcHJvZ25dIDEgW2NvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1lbmQgbGV0 IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJy ZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gc2V0cSBwcm9nbl0gMSBbbGV0 KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZp bmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmXSAxIFtzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxl bWVudC0tcGFyc2UtdG8gc2V0cSBwcm9nbiBpZiBwcm9nbiBvcmctZWxlbWVudC1iZWdpbiBvciBt YXhdIDIgW2xldCBjYXRjaCB3aGlsZSBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29u cyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmlj dGlvbl0gMSBbYXBwbHkgc2V0cSBjb25kIGxldCBjYXRjaCB3aGlsZSB3aGlsZSBsZXQqIGNhdGNo IG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhXSAxIFtjb25kIHdoaWxlIGxldCBwcm9nbiBsZXQq IG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25z IHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqXSAxIFttZW1xIGNvbmQgd2hpbGUgbGV0 IHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVh ZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqXSAxIFtub3Qgb3IgaWYgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxl dCogc2F2ZS1yZXN0cmljdGlvbl0gMSBbbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEg cHJvZ24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4IHNldHEgaWYgaWZdIDEgW2xl dCogYW5kIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMtZW5kIGVxIGlmIHdoaWxlIGNhdGNoIHBy b2duIHNldHEgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWZdIDMgW2xldCBwcm9nbiBpZiBwcm9nbiBs ZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBz ZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbl0gMiBbYW5kIGxldCogb3JnLWVs ZW1lbnQtYmVnaW4gPCBhbmQgb3IgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2du IGlmIHByb2duIGlmIHByb2duXSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBh bmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVu dC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBs ZXQgd2hpbGUgbGV0XSAxIFtjYXItc2FmZSBvciByZS1zZWFyY2gtZm9yd2FyZCBpZiBvciBpZiBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGVdIDEg W2lmIG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g bGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFn ZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZF0gMSBbb3IgcmUtc2VhcmNoLWZv cndhcmQgaWYgb3IgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0Kl0gMSBbaWYgbGV0IG9y Zy1lbGVtZW50LS1jYWNoZS12ZXJpZnktZWxlbWVudCBhbmQgaWYgbGV0IHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBv aW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duXSAxIFtsZXQqIGFu ZCBsZXQqIG9yZy1lbGVtZW50LWVuZCBvciBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRv IGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0XSAxIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNl cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwt Y2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsXSAxIFtzYXZlLWN1cnJlbnQtYnVmZmVyIG5vdCBpZiBwcm9n biBpZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBs ZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBsZXQgcHJvZ25dIDEgW21hY3JvZXhwLW1hY3JvZXhwYW5kIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGxdIDEgW2FuZCBwcm9nbiBvciBwcm9nbiBhcmVmIHByb2duIHByb2duIG9yZy1lbGVtZW50 LS1jYWNoZS1yb290IGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUt ZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVu dC1idWZmZXJdIDEgW25vdCBhbmQgaWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVt ZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g c2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9u LWNhc2UgaWYgc2V0cV0gMSBbb3JnLWVsZW1lbnQtLWNhY2hlLXZlcmlmeS1lbGVtZW50IGFuZCBp ZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQg aWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgb3JnLWVsZW1lbnQtbGluZWFnZSBzZXRxIG9yZy0tcHJv cGVydHktbG9jYWwtdmFsdWVzIGxldCogY29uZCBvcmctZW50cnktZ2V0XSAxIFtjb25kIGxldCBj YXRjaCB3aGlsZSB3aGlsZSBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDEgW3Byb2duIG9yZy1lbGVtZW50 LWJlZ2luIG9yIG1heCBzZXRxIGlmIGlmIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBwcm9n biBpZiBwcm9nbiBpZiBpZl0gMSBbZGVyaXZlZC1tb2RlLXAgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBpZiBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXQg Y2F0Y2ggd2hpbGUgd2hpbGUgbGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3RdIDEgW3NldHEgcHJv Z24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gMSBbYW5kIGxldCogb3JnLWVsZW1lbnQtYmVn aW4gPiBub3Qgb3IgYW5kIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBsZXQgcHJvZ24gaWZdIDEgW2lmIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQt LWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBub3Qgb3IgYW5kIGlmIHdo aWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMSBbd2hpbGUgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHByb2duIG9yZy1lbGVt ZW50LWJlZ2luIG9yIG1heCBzZXRxXSAxIFthbmQgb3IgY29uZCBsZXQgb3JnLWdldC13ZGF5cyBj b25kIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2ZGQzZTlkMTZlPiIgZnVu Y2FsbCBjb25zIHNldHEgaWYgcHJvZ25dIDEgW2xldCBvcmctYWdlbmRhLXNraXAtZXZhbCBvciBs ZXQgb3IgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IG9yZy1hZ2VuZGEtc2tpcCBjYXRjaCBw cm9nbiBpZiAiIzxsYW1iZGEgMHhkNDU2MjZkZDNlOWQxNmU+IiBmdW5jYWxsIGNvbnNdIDEgW2xl dCogb3JnLWFnZW5kYS1nZXQtc2V4cHMgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQg bGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGlmXSAxIFtvcmctZWxlbWVudC0tY2FjaGUtaW50ZXJydXB0LXAgaWYgd2hpbGUg bGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVm ZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHByb2duIG9yZy1l bGVtZW50LWJlZ2luIG9yXSAxIFtvcmctZm9sZC1jb3JlLW5leHQtZm9sZGluZy1zdGF0ZS1jaGFu Z2Ugb3JnLWZvbGQtY29yZS0tZml4LWZvbGRlZC1yZWdpb24gaW5zZXJ0IHByb2duIGlmIHdoaWxl IGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjYWxsLWlu dGVyYWN0aXZlbHkgY29uZCBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5XSAxIFthbmQgb3IgaWYgbGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNhbGwtaW50ZXJhY3RpdmVseSBjb25kIGxldCogY2F0Y2ggb3JnLWFnZW5kYSBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDEgW2FkLUFkdmlj ZS1kZWxldGUtcmVnaW9uIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWUwYzFiNDAyMTIzNDI3Yj4iIGdv Z2dsZXMtLWFkdmljZSBhcHBseSBkZWxldGUtcmVnaW9uIHdoaWxlIHNhdmUtZXhjdXJzaW9uIHBy b2duIHVud2luZC1wcm90ZWN0IGxldCBsZXQgb3JnLWFnZW5kYS1hbGlnbi10YWdzIGlmIHNhdmUt ZXhjdXJzaW9uIGxldF0gMSBbd2hpbGUgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1hZ2VuZGEtZm9u dGlmeS1wcmlvcml0aWVzIHByb2duIGlmIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctYWdlbmRh LWZpbmFsaXplIGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjYWxsLWludGVyYWN0aXZlbHkgY29uZF0gMSBbcHJvZ24gaWYgbGV0IHdoaWxlIGxldCArb3Jn LWRlZmVyLW1vZGUtaW4tYWdlbmRhLWJ1ZmZlcnMtaCBydW4taG9va3MgbGV0IGlmIG9yZy1hZ2Vu ZGEtZmluYWxpemUgbGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5IGNhbGwtaW50ZXJhY3RpdmVseSBjb25kXSAxIFtzYXZlLWN1cnJlbnQtYnVmZmVyIHByb2du IGlmIGxldCB3aGlsZSBsZXQgK29yZy1kZWZlci1tb2RlLWluLWFnZW5kYS1idWZmZXJzLWggcnVu LWhvb2tzIGxldCBpZiBvcmctYWdlbmRhLWZpbmFsaXplIGxldCogY2F0Y2ggb3JnLWFnZW5kYS1s aXN0IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjYWxsLWludGVyYWN0aXZlbHldIDEwIFtyZWRpc3Bs YXlfaW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMiBbbmF2LWZsYXNoLXNob3cgaWYgK25h di1mbGFzaC1ibGluay1jdXJzb3IgaWYgK25hdi1mbGFzaC1ibGluay1jdXJzb3ItbWF5YmUtaCBy dW4taG9va3MgaWYgbGV0IGRvb20tcnVuLXN3aXRjaC13aW5kb3ctb3ItZnJhbWUtaG9va3MtaCBy ZWRpc3BsYXlfaW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bF0gMyBbY2hhci1kaXNwbGF5YWJsZS1wIGRvb20tbW9kZWxpbmUtaWNvbiBkb29tLW1vZGVsaW5l LXNlZ21lbnQtLW11NGUgZXZhbCBmb3JtYXQtbW9kZS1saW5lIGRvb20tbW9kZWxpbmUtZm9ybWF0 LS1tYWluIGV2YWwgcmVkaXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gOCBbYXBwbHkgdG9vbHRpcC1zaG93LWhlbHAtbm9uLW1v ZGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bF0gNiBbZG9vbS1tb2RlbGluZS1mb3JtYXQtLW1haW4gZXZhbCByZWRpc3BsYXlfaW50ZXJuYWxc IFwoQ1wgZnVuY3Rpb25cKSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWxdIDEgW2Rvb20tbW9kZWxpbmUtc3RyaW5nLXBpeGVsLXdpZHRoIGRvb20tbW9k ZWxpbmUtZm9ybWF0LS1tYWluIGV2YWwgcmVkaXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9u XCkgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDMgW3Rp bWVyLWluYy10aW1lIHRpbWVyLWV2ZW50LWhhbmRsZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMSBbIiM8c3ViciBGNjE2ZTZmNmU3OTZk NmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV85PiIgYXBwbHkgdGltZXItZXZl bnQtaGFuZGxlciBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWxdIDE3IFtzeW50YXgtcHBzcyBzaG93LXBhcmVuLS1kZWZhdWx0IHNob3ctcGFyZW4tZnVu Y3Rpb24gYXBwbHkgdGltZXItZXZlbnQtaGFuZGxlciBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsXSAxIFsiIzxjb21waWxlZCAtMHg3YTEyNDMyYjEwNmVhND4iIHdo aWNoLWtleS0tZ2V0LWtleW1hcC1iaW5kaW5ncy0xIHdoaWNoLWtleS0tZ2V0LWtleW1hcC1iaW5k aW5ncyB3aGljaC1rZXktLWdldC1jdXJyZW50LWJpbmRpbmdzIHdoaWNoLWtleS0tZ2V0LWJpbmRp bmdzIHdoaWNoLWtleS0tY3JlYXRlLWJ1ZmZlci1hbmQtc2hvdyB3aGljaC1rZXktLXVwZGF0ZSBh cHBseSB0aW1lci1ldmVudC1oYW5kbGVyIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMSBb IiM8Y29tcGlsZWQgMHgxZjVkYWU5YjE5YzFmNWViPiIgd2hpY2gta2V5LS1nZXQtYmluZGluZ3Mg d2hpY2gta2V5LS1jcmVhdGUtYnVmZmVyLWFuZC1zaG93IHdoaWNoLWtleS0tdXBkYXRlIGFwcGx5 IHRpbWVyLWV2ZW50LWhhbmRsZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsXSAyIFtzdWJzdGl0dXRlLWNvbW1hbmQta2V5cyB3aGljaC1rZXktLXByb3BlcnRpemUtZGVz Y3JpcHRpb24gd2hpY2gta2V5LS1mb3JtYXQtYW5kLXJlcGxhY2Ugd2hpY2gta2V5LS1nZXQtYmlu ZGluZ3Mgd2hpY2gta2V5LS1jcmVhdGUtYnVmZmVyLWFuZC1zaG93IHdoaWNoLWtleS0tdXBkYXRl IGFwcGx5IHRpbWVyLWV2ZW50LWhhbmRsZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bF0gNCBbIiM8Y29tcGlsZWQgLTB4MWRkZjExZGUyNzgzZDNiZj4iIHN1YnN0aXR1dGUtY29tbWFu ZC1rZXlzIHdoaWNoLWtleS0tbWF5YmUtYWRkLWRvY3N0cmluZyB3aGljaC1rZXktLWZvcm1hdC1h bmQtcmVwbGFjZSB3aGljaC1rZXktLWdldC1iaW5kaW5ncyB3aGljaC1rZXktLWNyZWF0ZS1idWZm ZXItYW5kLXNob3cgd2hpY2gta2V5LS11cGRhdGUgYXBwbHkgdGltZXItZXZlbnQtaGFuZGxlciBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDMgW2tiZCB3aGljaC1rZXktLWZvcm1hdC1hbmQt cmVwbGFjZSB3aGljaC1rZXktLWdldC1iaW5kaW5ncyB3aGljaC1rZXktLWNyZWF0ZS1idWZmZXIt YW5kLXNob3cgd2hpY2gta2V5LS11cGRhdGUgYXBwbHkgdGltZXItZXZlbnQtaGFuZGxlciBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMSBbd2hpY2gta2V5LS1yZXBsYWNlLWlu LXJlcGwtbGlzdC1vbmNlIHdoaWNoLWtleS0tbWF5YmUtcmVwbGFjZSB3aGljaC1rZXktLW1heWJl LWdldC1wcmVmaXgtdGl0bGUgd2hpY2gta2V5LS1jcmVhdGUtcGFnZXMgd2hpY2gta2V5LS1jcmVh dGUtYnVmZmVyLWFuZC1zaG93IHdoaWNoLWtleS0tdXBkYXRlIGFwcGx5IHRpbWVyLWV2ZW50LWhh bmRsZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gNCBbYXBwbHkgd2hpY2gta2V5 LS1lY2hvICIjPGNvbXBpbGVkIC0weDlmNWE2OGNiOTk1MTg5Mz4iIHdoaWNoLWtleS0tc2hvdy1w YWdlIHdoaWNoLWtleS0tY3JlYXRlLWJ1ZmZlci1hbmQtc2hvdyB3aGljaC1rZXktLXVwZGF0ZSBh cHBseSB0aW1lci1ldmVudC1oYW5kbGVyIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxd IDEgW3dpbmRvdy0tc2l6ZS1maXhlZC0xIHdpbmRvdy1zaXplLWZpeGVkLXAgd2luZG93LS1taW4t ZGVsdGEtMSB3aW5kb3ctbWluLWRlbHRhIHdpbmRvdy0tcmVzaXphYmxlIHdpbmRvdy0tcmVzaXph YmxlLXAgd2luZG93LXJlc2l6ZSB3aW5kb3ctcmVzaXplLW5vLWVycm9yIGZpdC13aW5kb3ctdG8t YnVmZmVyICIjPGxhbWJkYSAweDFlMTBiYTRhZjQwNDFjZD4iIHdpbmRvdy0tZGlzcGxheS1idWZm ZXIgd2luZG93LS1tYWtlLW1ham9yLXNpZGUtd2luZG93IGFuZCBsZXQqIHByb2duIHVud2luZC1w cm90ZWN0XSAxIFtpZiBkb29tL3RvZ2dsZS1wcm9maWxlciBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsXSAyIFtBdXRvbWF0aWNcIEdDXSA2NTUwKSkgKDI1ODY1IDU2MDA4IDI1MzU3NCA0ODAw MDApIG5pbF0K --=-=-= Content-Type: text/plain In GNU Emacs 30.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.17.8) of 2023-09-19 built on localhost Repository revision: 6721c616653279913f51f211b80614bff82c24c3 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101008 System Description: Gentoo Linux -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at --=-=-=-- From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Sep 2023 01:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169534663631111 (code B ref 66117); Fri, 22 Sep 2023 01:38:02 +0000 Received: (at 66117) by debbugs.gnu.org; 22 Sep 2023 01:37:16 +0000 Received: from localhost ([127.0.0.1]:35037 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjV6a-00085j-Dh for submit@debbugs.gnu.org; Thu, 21 Sep 2023 21:37:16 -0400 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:47767) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjV6S-000856-Cj for 66117@debbugs.gnu.org; Thu, 21 Sep 2023 21:37:12 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id A1EF95C00D5; Thu, 21 Sep 2023 21:36:52 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Thu, 21 Sep 2023 21:36:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm1; t= 1695346612; x=1695433012; bh=+EVi6PHBJt/HuXF7aD1N9c5PFkqCqrE4YIU 3aFv1k6M=; b=CVckxRUkgupYbnBCA7KqyEmB4YBAsGUG/l1RuvXNuZkJhpKAMpl vP539uNeHJBQXm52+2WIkBX3mlbb8lZCMapBrNJlvvAWv7evCdLFPazSt7jkcoSV tx+2Eh4LOmJfbZhKHLRkMaGtG/TJ/ZxAi8d9ZqDW4CV5XztZNrlP8/oGek3Djyzg Tbqsrdzct9VVNF9t1tgVMKnW9kRySDbm7ioi2zLWXFJ5XNEAalKt7xvJ+3VkF5er 36juYrrRLOyG0FK+BdLGz8z7/V9aopsIRU2ymU/JQ+nve7PKzOSiPkhAi+s0zzWf 0+tXVd8y5xtSsFGMAdltfTsqfpakVeu3Cfg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1695346612; x= 1695433012; bh=+EVi6PHBJt/HuXF7aD1N9c5PFkqCqrE4YIU3aFv1k6M=; b=C xw8OH+0UiQVf5kiyDwmqXkWkXFQPt0MbYC3HnDd8fRAYkFW8q2i6F5jV+nv+V7T1 xb99LjGYvQE1RjsjbOGYh5iIvWP+Cykw9zd3CsytoWNqaQ0V22K5s5t0G1sDiQtK 2GFHj3191lqfq9Q30kJ+VQ2ipxWDOE/YOo0nyoW7kzEmltD5pyuvLsVFuXJl/en4 2n+Wui3HvPuMVpcGCylRiuzJMpSMhL32UJPbwlGAt4CUwbLBRYkK5kii9uc6T6bd Mvm0y73szO3fIPgg9gHMlroB8Ty3KQJIiuorsodq+U1YaPfZto3YW8Cj+KyUA4kj R9aRosop/RfsyHwkwKCUA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedviedrudekjedggeehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefkffggfgfuvfhfhfgjtgfgsehtje ertddtfeejnecuhfhrohhmpeffmhhithhrhicuifhuthhovhcuoegumhhithhrhiesghhu thhovhdruggvvheqnecuggftrfgrthhtvghrnhepgeehtdehudejieetuedttdejkeehje etueekheffuddtjeeuvdefveeuveeiuddunecuvehluhhsthgvrhfuihiivgeptdenucfr rghrrghmpehmrghilhhfrhhomhepughmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 21 Sep 2023 21:36:51 -0400 (EDT) Message-ID: <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> Date: Fri, 22 Sep 2023 04:36:50 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> From: Dmitry Gutov In-Reply-To: <878r919qfh.fsf@localhost> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.2 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.2 (---) Hi Ihor, On 20/09/2023 11:53, Ihor Radchenko wrote: > In the attached profile, ~500 Org buffers are being opened and calls to > `find-buffer-visiting' take 12.4 sec out of total 30.9 sec - 1/3 of all > the execution time. After replacing some of the calls to > `find-buffer-visiting' with `get-file-buffer', the total execution time > decreased to ~20 sec, confirming that `find-buffer-visiting' is > contributing significantly to slow performance. > > Would it be possible to implement some kind of caching mechanism to be > used by `find-buffer-visiting'? I'm guessing you Cc'd me because of an existing comment inside xref.el? As you can see I decided not to use this function there, but even get-file-buffer wasn't as fast as I would've wanted, so there's a quick-and-dirty caching solution for sequential lookups (which assumes that the same file would be looked up multiple times in a row). Putting aside the perspective of maintaining a cache in the core (hopefully this will be discussed later in this feature request), any chance you could initialize that cache yourself first (by iterating through buffers and building file-truename -> buffer map), before you are doing those many lookups? Somewhere in org-agenda-list, perhaps. That should change the complexity from N*M to N+M, more or less. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Sep 2023 11:03:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169538056112097 (code B ref 66117); Fri, 22 Sep 2023 11:03:01 +0000 Received: (at 66117) by debbugs.gnu.org; 22 Sep 2023 11:02:41 +0000 Received: from localhost ([127.0.0.1]:35377 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjdvl-000393-Am for submit@debbugs.gnu.org; Fri, 22 Sep 2023 07:02:41 -0400 Received: from mout01.posteo.de ([185.67.36.65]:38233) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjdvg-00038l-NP for 66117@debbugs.gnu.org; Fri, 22 Sep 2023 07:02:40 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id D089C240029 for <66117@debbugs.gnu.org>; Fri, 22 Sep 2023 13:02:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1695380539; bh=WlgpjR94lCL9VVP8+KCWoxN4IEJZvbWPT/R8Z/116pY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=TkOsXDCRy1TmdogHJJuJxbk8T/EJ0XyPR+saiFR/PlvKocDRJeOzAntS1+S6JmZK1 pGxAur7xErAKDL2xDGl08CjMVwgDOf6hVsO7SmvVqvL4Qhw8JwcNACYPNRZZ8VWlNT m4zSLAE6arkkq3VyqqeeU3enEWisnXWlCPp/z2f2pQN55z0M4i/KRqH2YJY6ldi73P vAuXHawYtkfMiE/kE41k3wTw+jXLq7THNMe+wg4krB24Jf8uVkctH8Dfz0pY00ZJ8s fulcqWGFJ9QaRnoxb1bXDtWUqwF1mT0sT9Q3vTzDC7CD3A1eGRNCVwRLM2OwB6mjGd m9aUBQiMJE68g== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4RsTqt6Wxqz6v2V; Fri, 22 Sep 2023 13:02:18 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> Date: Fri, 22 Sep 2023 11:03:34 +0000 Message-ID: <875y42xyex.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Dmitry Gutov writes: >> Would it be possible to implement some kind of caching mechanism to be >> used by `find-buffer-visiting'? > > I'm guessing you Cc'd me because of an existing comment inside xref.el? Actually, mostly because I though that this discussion might be of interest for you. > As you can see I decided not to use this function there, but even > get-file-buffer wasn't as fast as I would've wanted, so there's a > quick-and-dirty caching solution for sequential lookups (which assumes > that the same file would be looked up multiple times in a row). For me, the situation is different - a new not-yet-open file is looked up multiple times in a row, which is a bit more tricky. > Putting aside the perspective of maintaining a cache in the core > (hopefully this will be discussed later in this feature request), any > chance you could initialize that cache yourself first (by iterating > through buffers and building file-truename -> buffer map), before you > are doing those many lookups? Somewhere in org-agenda-list, perhaps. > > That should change the complexity from N*M to N+M, more or less. Sure. That's my plan to address older Emacs versions. But such iteration will involve copy-pasting a big part of `find-buffer-visiting' source code, which is not something I want to maintain in a long term (what if `find-buffer-visiting' changes in future?). Moreover, `find-buffer-visiting' is called by `find-file-noselect', and I simply cannot make use of cache there without modifying the code upstream; or writing my own version of `find-file-noselect' - bad idea maintenance-wise. I think that the best way that will benefit more than Org mode is arranging internal cache that will link buffer-file-name, buffer-file-truename, and buffer-file-number with buffers; and maintain the correctness of the cache if buffer-file-name changes for any reason. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Sep 2023 12:12:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.16953847087001 (code B ref 66117); Fri, 22 Sep 2023 12:12:02 +0000 Received: (at 66117) by debbugs.gnu.org; 22 Sep 2023 12:11:48 +0000 Received: from localhost ([127.0.0.1]:35486 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjf0e-0001or-Bw for submit@debbugs.gnu.org; Fri, 22 Sep 2023 08:11:48 -0400 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:38543) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjf0c-0001od-6q for 66117@debbugs.gnu.org; Fri, 22 Sep 2023 08:11:47 -0400 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 16A7C5C016D; Fri, 22 Sep 2023 08:11:30 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Fri, 22 Sep 2023 08:11:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm1; t= 1695384690; x=1695471090; bh=PxzrH6EJaS51wDWrIMOjHPqzOpVeNjBJFni YNIUfnMs=; b=ixS77j+KoCuNyvJOLpn/cpSRScDcIj4/G8LzyNnKO3WiiXROb3w kt4sR1gwR1lwSbNOGAJlY2s+vT1bIADBBCVj5VkAUCCPsa2wtPSMgTQHZruw/iAc aE1E3dEnNL6xT4E+pjbdXkvDpGBB7XUBYiwEyK3ly7kv/jX4XEf2nHZNKPjvtqkj Yviy1jpNBT9l4jYw1Z30L/A9V2NycF5+CyQ1cvm2xYvjXuLQcWpDnWMjh0Pi6nPi HAkvqkFDWdDDNl1WO3IpnVs1ULg//8KWAnleD4k00Yrnhlvjl9PYKCqVk2pyKD9q 2i9sdysb8A3ST5xObB9gsosPZ4Yi28o+ATQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1695384690; x=1695471090; bh=PxzrH6EJaS51wDWrIMOjHPqzOpVeNjBJFni YNIUfnMs=; b=otuuoZ9sDZ7hKB5S9fZNhJ8mpegtkZViYq6kChCpQ6DXHKGPbrJ jmOfB8tu7vQlKimZVd0WsW4z+F3RblcU9YKJvYzZzGRndJKmBlkixJhl/EH9WpZO i/hwfPdDfdmEKwF/zPPn8ozGkj+yYOGKu22Sb4yUqpt4I3LPfqg7KJGcQmueQ6F0 TuQ0+/57KducNAmHZVPruWH7L5sy9qSTnkP/SWtzYG9Nh6+f14PsXAod8h/tZySJ 23hdwkAsLceWjUNil+l9Ox0FyqM/sja5Sfb14YiEf/z4pUSeTK/jIVn2MT/QyOU4 07JTWVC7BGvJ73U5GAEOS8tuUYAuXh6OyUA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedviedrudekkedgfedtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefkffggfgfuvfevfhfhjggtgfesth ejredttdefjeenucfhrhhomhepffhmihhtrhihucfiuhhtohhvuceoughmihhtrhihsehg uhhtohhvrdguvghvqeenucggtffrrghtthgvrhhnpeeigfetveehveevffehledtueekie eikeeufeegudfgfeeghfdulefgfeevledvveenucevlhhushhtvghrufhiiigvpedtnecu rfgrrhgrmhepmhgrihhlfhhrohhmpegumhhithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 22 Sep 2023 08:11:28 -0400 (EDT) Message-ID: Date: Fri, 22 Sep 2023 15:11:26 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> From: Dmitry Gutov In-Reply-To: <875y42xyex.fsf@localhost> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.2 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.2 (---) On 22/09/2023 14:03, Ihor Radchenko wrote: > Dmitry Gutov writes: > >>> Would it be possible to implement some kind of caching mechanism to be >>> used by `find-buffer-visiting'? >> >> I'm guessing you Cc'd me because of an existing comment inside xref.el? > > Actually, mostly because I though that this discussion might be of > interest for you. All right, thank you for that. >> As you can see I decided not to use this function there, but even >> get-file-buffer wasn't as fast as I would've wanted, so there's a >> quick-and-dirty caching solution for sequential lookups (which assumes >> that the same file would be looked up multiple times in a row). > > For me, the situation is different - a new not-yet-open file is looked > up multiple times in a row, which is a bit more tricky. This could be handled with a locally held dictionary as well, but... >> Putting aside the perspective of maintaining a cache in the core >> (hopefully this will be discussed later in this feature request), any >> chance you could initialize that cache yourself first (by iterating >> through buffers and building file-truename -> buffer map), before you >> are doing those many lookups? Somewhere in org-agenda-list, perhaps. >> >> That should change the complexity from N*M to N+M, more or less. > > Sure. That's my plan to address older Emacs versions. But such iteration > will involve copy-pasting a big part of `find-buffer-visiting' source > code, which is not something I want to maintain in a long term (what if > `find-buffer-visiting' changes in future?). > > Moreover, `find-buffer-visiting' is called by `find-file-noselect', and > I simply cannot make use of cache there without modifying the code > upstream; or writing my own version of `find-file-noselect' - bad idea > maintenance-wise. ...if most of said calls are done through find-file-noselect, I suppose that solution is a no-go. > I think that the best way that will benefit more than Org mode is > arranging internal cache that will link buffer-file-name, > buffer-file-truename, and buffer-file-number with buffers; and maintain > the correctness of the cache if buffer-file-name changes for any reason. I think that is doable. It probably won't regress the performance of any particular scenario either, but we should benchmark opening a bunch of files this way anyway (might actually get faster, due to find-buffer-visiting calls). From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Sep 2023 12:41:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169538640719963 (code B ref 66117); Fri, 22 Sep 2023 12:41:01 +0000 Received: (at 66117) by debbugs.gnu.org; 22 Sep 2023 12:40:07 +0000 Received: from localhost ([127.0.0.1]:35526 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjfS2-0005Bv-G0 for submit@debbugs.gnu.org; Fri, 22 Sep 2023 08:40:06 -0400 Received: from mout01.posteo.de ([185.67.36.65]:55135) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjfRz-0005BI-HL for 66117@debbugs.gnu.org; Fri, 22 Sep 2023 08:40:04 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id E121A240028 for <66117@debbugs.gnu.org>; Fri, 22 Sep 2023 14:39:46 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1695386386; bh=SpLPxrqufFmSk4SeITA8VHRoWBL+olkHpCKwV0NEdOI=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=AzCnrryMs4fy8djQkX1peVY88It+3MwtRFnhXW22aRadjFTXVFax/6123/tA+FUIV jkdlAoucCE9AimQNqTjHUXWnodDH0MoyhN8q6frpD0OFiN244fQrfl+vBH9exCcXoj E/sgY7BSpbTQ/QOeaKwbxRB8EPiH+eyF0WJmbGgD0fjErhfp1aeflT0K+0w3diT92v zod1n079Dj7W2yzXRAtKI3G2qWe0LnxaeaffSb5OqTPqnBk+je0pYY5d7gqkJkL9nG 6Q3j4xvTkX25xYsYcz3dyQOXfyD8e++PtsaU0l994v9EZApak5Qs1mVcGQ/1shzLMO A4uk3SqisMSGg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4RsX0K6x6gz6tw1; Fri, 22 Sep 2023 14:39:45 +0200 (CEST) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> Date: Fri, 22 Sep 2023 15:41:01 +0300 Message-ID: <87zg1ewfc2.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Dmitry Gutov writes: >> Moreover, `find-buffer-visiting' is called by `find-file-noselect', and >> I simply cannot make use of cache there without modifying the code >> upstream; or writing my own version of `find-file-noselect' - bad idea >> maintenance-wise. > > ...if most of said calls are done through find-file-noselect, I suppose > that solution is a no-go. Not a no-go, but not a complete solution either. I asked the user who provided the profiler report I have attached to replace `find-buffer-visiting' with `get-file-buffer' in the relevant Org sources and it did lead to ~30% runtime reduction. However, upon recording the profiler report with that change, `find-buffer-visiting' still took a significant fraction of CPU time. So, I decided to reach out upstream. Will it be acceptable to implement the cache using variable watchers? >> I think that the best way that will benefit more than Org mode is >> arranging internal cache that will link buffer-file-name, >> buffer-file-truename, and buffer-file-number with buffers; and maintain >> the correctness of the cache if buffer-file-name changes for any reason. > > I think that is doable. > > It probably won't regress the performance of any particular scenario > either, but we should benchmark opening a bunch of files this way anyway > (might actually get faster, due to find-buffer-visiting calls). The regression might happen when the number of buffers is small - when hash tables become slower compared to simple list lookup. But in such scenario, we will be talking about very small absolute runtimes anyway, so it should probably not matter in practice. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Sep 2023 13:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169538756322343 (code B ref 66117); Fri, 22 Sep 2023 13:00:02 +0000 Received: (at 66117) by debbugs.gnu.org; 22 Sep 2023 12:59:23 +0000 Received: from localhost ([127.0.0.1]:35617 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjfkg-0005oI-R6 for submit@debbugs.gnu.org; Fri, 22 Sep 2023 08:59:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43474) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjfkd-0005o4-P2 for 66117@debbugs.gnu.org; Fri, 22 Sep 2023 08:59:20 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjfkN-0000HC-Q5; Fri, 22 Sep 2023 08:59:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=+rr61iBF2JzlG2dbBYIwCQ0cBOUI0iRqlOYlhCdm3ds=; b=CCYvOOB/xzI6 ui6TUEs2mUMMk4aix2VK/eoPdCcqtNUZ+DQE6+qqgt4aFIOInlHAy3RZ2Fh96YStsOV3JnQSsxOUo OERPAzAZxxF8Mwv/5A7gOZJ4iW5MigcdJEOEwAIDY+Vgy23bKGGYieBH9d/jJLqNHkHP7+TAC7NQa K5ChOxru+YsoDHk/JWevlIxdv+m1knocH8WoaTvRLaeIAXTmR+X761APDThwLK8LWA1/1Xi1niryX Zj7WP1BGuq8ic1QYVFHwJMoYbbBgP8dg4hsgTMES714fuw83jiPLdAreJ6CLfaHtAHf3+OX1eRDBb 35W4AKbcir44/FA/2KOeuQ==; Date: Fri, 22 Sep 2023 15:59:13 +0300 Message-Id: <834jjm749q.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87zg1ewfc2.fsf@localhost> (message from Ihor Radchenko on Fri, 22 Sep 2023 15:41:01 +0300) References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: 66117@debbugs.gnu.org > From: Ihor Radchenko > Date: Fri, 22 Sep 2023 15:41:01 +0300 > > Will it be acceptable to implement the cache using variable watchers? I don't like us using variable watchers for such stuff. Why cannot we just cache the correspondence between files and buffers in some hash-table? > The regression might happen when the number of buffers is small - > when hash tables become slower compared to simple list lookup. > But in such scenario, we will be talking about very small absolute > runtimes anyway, so it should probably not matter in practice. Alternatively, only create the hash-table when the number of buffers exceeds some threshold. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Sep 2023 13:04:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169538780322835 (code B ref 66117); Fri, 22 Sep 2023 13:04:01 +0000 Received: (at 66117) by debbugs.gnu.org; 22 Sep 2023 13:03:23 +0000 Received: from localhost ([127.0.0.1]:35631 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjfoY-0005wF-Ok for submit@debbugs.gnu.org; Fri, 22 Sep 2023 09:03:23 -0400 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:40149) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjfoU-0005vz-CL for 66117@debbugs.gnu.org; Fri, 22 Sep 2023 09:03:21 -0400 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 4C76B5C01CA; Fri, 22 Sep 2023 09:03:02 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Fri, 22 Sep 2023 09:03:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm1; t= 1695387782; x=1695474182; bh=wlt03/SCBjKsW6fZXMHoLw/00ekPPHyESCU hR2mzyZY=; b=0I1epA3FTajiDJPcnjQpCyV+s5n4oJaeIAyGLqIbgmZbhSGsZkr e2fFaDoootmYgzXxGRwmVPqsiX5JHsuguJjkLeJqAzf7A8XT/MPKTKYr8GlwaHA1 6q83sZ16egx3AwbYfdgephicRMMmMRbCVZLu3/B4WbFWR/RWMy3Rz/E8MEQsREqi XFdyfajul6rv6m8MDPijGxD5PvvEQfGB8JHy/aryj9blsV9/Wz5NNygXPb2EWHZK OXN/44TpD/xq29bwf7PJlGwP/gFd3ctrGE+Jx2kHgxL912eWdhlmc7z135SOSr3u YNukZadL+Wl3FQLTIY1+bJeJqNJ2EKd0Uaw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1695387782; x=1695474182; bh=wlt03/SCBjKsW6fZXMHoLw/00ekPPHyESCU hR2mzyZY=; b=apScNBinuGrzVKvXsSFm0+HOCZ7kOvtjMgex6/XKsxjaY5Bp0eh yHB475LWpjyV55wsHacc2PWWexnu8JApy1aGcpCtypt+1lrBHNuE9IEE8F6r0jB4 81WXTQzvw92dVlEpOrrN2gs6csqtUKm1/OMh63vfels71wH7gat71mZXYx/QNljK qNfcLrd1O2h5gAEu8A6MYYLtGm4bEF2WXdcnYyJ30R7F5dKTznoyjosWvW25Znk8 4SiDcGaPEybknTu4ia/qSzaQbM0O2v3PtOoJkU/o6RGHqfnrB76T5ygsf4j348zh pbZaotwJRRtW7Fr+8v/ZX8i2aYQs3crbyZw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedviedrudekkedggedtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefkffggfgfuvfevfhfhjggtgfesth ejredttdefjeenucfhrhhomhepffhmihhtrhihucfiuhhtohhvuceoughmihhtrhihsehg uhhtohhvrdguvghvqeenucggtffrrghtthgvrhhnpeeigfetveehveevffehledtueekie eikeeufeegudfgfeeghfdulefgfeevledvveenucevlhhushhtvghrufhiiigvpedtnecu rfgrrhgrmhepmhgrihhlfhhrohhmpegumhhithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 22 Sep 2023 09:03:00 -0400 (EDT) Message-ID: <9d84725f-fd46-ab26-3b54-97cb4cf45e33@gutov.dev> Date: Fri, 22 Sep 2023 16:02:59 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> From: Dmitry Gutov In-Reply-To: <87zg1ewfc2.fsf@localhost> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.2 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.2 (---) On 22/09/2023 15:41, Ihor Radchenko wrote: > Dmitry Gutov writes: > >>> Moreover, `find-buffer-visiting' is called by `find-file-noselect', and >>> I simply cannot make use of cache there without modifying the code >>> upstream; or writing my own version of `find-file-noselect' - bad idea >>> maintenance-wise. >> >> ...if most of said calls are done through find-file-noselect, I suppose >> that solution is a no-go. > > Not a no-go, but not a complete solution either. > I asked the user who provided the profiler report I have attached to > replace `find-buffer-visiting' with `get-file-buffer' in the relevant Org > sources and it did lead to ~30% runtime reduction. > > However, upon recording the profiler report with that change, > `find-buffer-visiting' still took a significant fraction of CPU time. > So, I decided to reach out upstream. Because the rest of the calls are made from Org? I see this in the profile, though: 6247 20% - editorconfig--advice-find-file-noselect There seems to be a lot of timers in that profile, and this is in one of them (under "Automatic GC" which takes up 53% of the time). So one was to improve this in the meantime would be to bring it up with "editorconfig" authors. I would even question the wisdom of advising find-file-noselect. > Will it be acceptable to implement the cache using variable watchers? I think variable watchers are mostly for debugging? I was thinking of a straight approach where the base primitives that visit a file or kill a buffer update said cache. >>> I think that the best way that will benefit more than Org mode is >>> arranging internal cache that will link buffer-file-name, >>> buffer-file-truename, and buffer-file-number with buffers; and maintain >>> the correctness of the cache if buffer-file-name changes for any reason. >> >> I think that is doable. >> >> It probably won't regress the performance of any particular scenario >> either, but we should benchmark opening a bunch of files this way anyway >> (might actually get faster, due to find-buffer-visiting calls). > > The regression might happen when the number of buffers is small - > when hash tables become slower compared to simple list lookup. > But in such scenario, we will be talking about very small absolute > runtimes anyway, so it should probably not matter in practice. I suppose. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Sep 2023 13:11:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: yantar92@posteo.net, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169538821623441 (code B ref 66117); Fri, 22 Sep 2023 13:11:01 +0000 Received: (at 66117) by debbugs.gnu.org; 22 Sep 2023 13:10:16 +0000 Received: from localhost ([127.0.0.1]:35637 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjfvD-000660-Nk for submit@debbugs.gnu.org; Fri, 22 Sep 2023 09:10:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41802) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjfvA-00065i-Go for 66117@debbugs.gnu.org; Fri, 22 Sep 2023 09:10:14 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjfuu-0003H5-66; Fri, 22 Sep 2023 09:09:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=2FJTyZ6trnwy8uQ4No0HAgPGbEGD5AjqFKeHlr74BK8=; b=D34v0xwrfkU7 EjhMwOKnlz/xF7tNkeDimWcV8X37iVMw+cJDD8fnEtszeFbdID7snOUcFnIboYHHIY1GfL2LGXZ41 IKaoqXo3w05tlC2xQuEaFvF09Wc5HsdMOcSc7kV91xafMVqX5nBYvukz3hu0fMovKAwfQuoGjFQaN 4m+4eX7PDDUmxsUqjt5e6YVSi7GMLwy687Kc+dMwW+vuFPgGbMfAuLIYrVn5Tktec0RAnqYfbuNHr //gRcxLwoWJqdUWwglK+NDhUdO0FosuOdRSVUYCdrg9gbaXIru8E8ENPhIuw4XqvnDAvlT2zALYgk 0UMwJyk7MMl2dGTDfBDKUQ==; Date: Fri, 22 Sep 2023 16:10:05 +0300 Message-Id: <83y1gy5p76.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <9d84725f-fd46-ab26-3b54-97cb4cf45e33@gutov.dev> (message from Dmitry Gutov on Fri, 22 Sep 2023 16:02:59 +0300) References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <9d84725f-fd46-ab26-3b54-97cb4cf45e33@gutov.dev> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: 66117@debbugs.gnu.org > Date: Fri, 22 Sep 2023 16:02:59 +0300 > From: Dmitry Gutov > > I think variable watchers are mostly for debugging? It is also okay to use watchers when there's no other way of reacting to a change. For example, if we need to do something when some variable is changed that is exposed to Lisp. > I was thinking of a straight approach where the base primitives that > visit a file or kill a buffer update said cache. Yes, in this case find-file-noselect could update the cache. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Sep 2023 13:30:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169538938825251 (code B ref 66117); Fri, 22 Sep 2023 13:30:02 +0000 Received: (at 66117) by debbugs.gnu.org; 22 Sep 2023 13:29:48 +0000 Received: from localhost ([127.0.0.1]:35671 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjgE7-0006ZD-TL for submit@debbugs.gnu.org; Fri, 22 Sep 2023 09:29:48 -0400 Received: from mout01.posteo.de ([185.67.36.65]:47203) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjgE3-0006Yw-JP for 66117@debbugs.gnu.org; Fri, 22 Sep 2023 09:29:46 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id D9A63240027 for <66117@debbugs.gnu.org>; Fri, 22 Sep 2023 15:29:26 +0200 (CEST) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4RsY5f0dy8z6tvn; Fri, 22 Sep 2023 15:29:25 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <834jjm749q.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> Date: Fri, 22 Sep 2023 13:30:41 +0000 Message-ID: <87cyyawd1a.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> Will it be acceptable to implement the cache using variable watchers? > > I don't like us using variable watchers for such stuff. > > Why cannot we just cache the correspondence between files and buffers > in some hash-table? Because `buffer-file-name' can be modified from Lisp (via `set-visited-file-name' or directly). Same for `buffer-file-truename' and `buffer-file-number'. Or should we just assume that these variables remain unchanged other than by primitives? >> The regression might happen when the number of buffers is small - >> when hash tables become slower compared to simple list lookup. >> But in such scenario, we will be talking about very small absolute >> runtimes anyway, so it should probably not matter in practice. > > Alternatively, only create the hash-table when the number of buffers > exceeds some threshold. Indeed, this is a good idea. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Sep 2023 13:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.16953898793761 (code B ref 66117); Fri, 22 Sep 2023 13:38:02 +0000 Received: (at 66117) by debbugs.gnu.org; 22 Sep 2023 13:37:59 +0000 Received: from localhost ([127.0.0.1]:35675 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjgM2-0000ya-SP for submit@debbugs.gnu.org; Fri, 22 Sep 2023 09:37:59 -0400 Received: from mout01.posteo.de ([185.67.36.65]:33785) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjgLy-0000yK-TN for 66117@debbugs.gnu.org; Fri, 22 Sep 2023 09:37:57 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 29F99240027 for <66117@debbugs.gnu.org>; Fri, 22 Sep 2023 15:37:38 +0200 (CEST) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4RsYH52rcsz9s1M; Fri, 22 Sep 2023 15:37:37 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <9d84725f-fd46-ab26-3b54-97cb4cf45e33@gutov.dev> References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <9d84725f-fd46-ab26-3b54-97cb4cf45e33@gutov.dev> Date: Fri, 22 Sep 2023 13:38:53 +0000 Message-ID: <87a5tewcnm.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Dmitry Gutov writes: >> However, upon recording the profiler report with that change, >> `find-buffer-visiting' still took a significant fraction of CPU time. >> So, I decided to reach out upstream. > > Because the rest of the calls are made from Org? I am not 100% sure what you mean. > I see this in the profile, though: > > 6247 20% - editorconfig--advice-find-file-noselect > > There seems to be a lot of timers in that profile, and this is in one of > them (under "Automatic GC" which takes up 53% of the time). > > So one was to improve this in the meantime would be to bring it up with > "editorconfig" authors. I would even question the wisdom of advising > find-file-noselect. Nope. If you dig deeper, you will see that it is an around advice that later calls the original `find-file-noselect', where we spend most of the time: 6247 20% - editorconfig--advice-find-file-noselect 6247 20% - let 6247 20% - let 6247 20% - setq 6247 20% - apply 1773 5% - # 1773 5% - if 1773 5% - if 1773 5% - let* 1773 5% - and 1773 5% + find-buffer-visiting 1666 5% - # 1666 5% - if 1666 5% - if 1666 5% - let* 1666 5% - and 1666 5% + find-buffer-visiting 1006 3% - # 1006 3% - if 1006 3% - if 1006 3% - let* 1006 3% - if 1006 3% - setq 1006 3% + create-file-buffer 830 2% - # 830 2% - if 830 2% - if 830 2% - let* 830 2% - and 830 2% + find-buffer-visiting 776 2% - # 776 2% - if 776 2% - if 776 2% - let* 776 2% - and 776 2% + find-buffer-visiting -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Sep 2023 13:46:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.16953903394438 (code B ref 66117); Fri, 22 Sep 2023 13:46:01 +0000 Received: (at 66117) by debbugs.gnu.org; 22 Sep 2023 13:45:39 +0000 Received: from localhost ([127.0.0.1]:35680 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjgTS-00019V-Sh for submit@debbugs.gnu.org; Fri, 22 Sep 2023 09:45:39 -0400 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:57225) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjgTN-00019E-Cg for 66117@debbugs.gnu.org; Fri, 22 Sep 2023 09:45:37 -0400 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 551665C0189; Fri, 22 Sep 2023 09:45:17 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Fri, 22 Sep 2023 09:45:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm1; t= 1695390317; x=1695476717; bh=c+aaKaQS6j1s2BSIy5gvKxyAPZr2/ieuaeG Z/8vshfA=; b=ri//ZoUjOeCaTUBtQVB98PY2LdAqoTavoBEhiRZu42RnLLAim75 J1kSZHplSG8HxQz9VZwOqMVoIWORFQx2t1w29VuoNDwkMap3Uhg2GfmjUsEbQExX 88m0qhMCgNu4qEN/YkQ/YjaITexLjw0w76BLdbAjXP7+/njxDsOmEjKAyM0rvv8W nATQOVCq7anTICH32ksX5IwbCIaPth07zQ29VT+xGM6uE2bXL6pOF+4vjpbNo16l nikX0aRIS00FxPD1llDCWLqd9vH9SmvpmR1xQ/eSRUE7bE+nNf1LQCURsn1I8uww cVtvlQ4fK/EOxvnA0U6bR0lTlijNXuQYm9g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1695390317; x=1695476717; bh=c+aaKaQS6j1s2BSIy5gvKxyAPZr2/ieuaeG Z/8vshfA=; b=BIGea/h3/VQ5qAHqJZ7tEU7OYbQ0/VA4S1NDfWKPhsC1sWqqprE PAbJPxYahFmWfYj9dolZhXtACk/n+9AdTUCW+iouDAjuOacnPE3UePP/uopSN+xv Rncmd5eyxxe3I8sYofu9nTFN67oX0DbFLz383NCQpmG3pzr8rbAEmbNz01F9Rl4L uF8ORxGNrn5iirixkXZQC7sO/GrAIVC2bCiBhdcCKUidIxjfQ5zPjp1Pw1Eznrg8 TNMVen+BLnTAQgaVG/MYO44wlhz5I5DtbCquPTjbPhsAS0wftmUXARe2r5J8GmbK W7FIXq7cQkKXKdhJwsa5H6XANo0QOMtk+qA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedviedrudekkedggeekucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefkffggfgfuvfevfhfhjggtgfesth ejredttdefjeenucfhrhhomhepffhmihhtrhihucfiuhhtohhvuceoughmihhtrhihsehg uhhtohhvrdguvghvqeenucggtffrrghtthgvrhhnpeeigfetveehveevffehledtueekie eikeeufeegudfgfeeghfdulefgfeevledvveenucevlhhushhtvghrufhiiigvpedtnecu rfgrrhgrmhepmhgrihhlfhhrohhmpegumhhithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 22 Sep 2023 09:45:16 -0400 (EDT) Message-ID: <0fac0b06-d4eb-86cc-b0b1-2858c4b8b3ea@gutov.dev> Date: Fri, 22 Sep 2023 16:45:14 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <9d84725f-fd46-ab26-3b54-97cb4cf45e33@gutov.dev> <87a5tewcnm.fsf@localhost> From: Dmitry Gutov In-Reply-To: <87a5tewcnm.fsf@localhost> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.2 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.2 (---) On 22/09/2023 16:38, Ihor Radchenko wrote: > Nope. If you dig deeper, you will see that it is an around advice that > later calls the original `find-file-noselect', where we spend most of > the time: I don't see find-file-noselect in the callstack, but I suppose it's possible that the profiler just skips it, printing just the name of the advice instead. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 22 Sep 2023 14:58:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169539466713155 (code B ref 66117); Fri, 22 Sep 2023 14:58:01 +0000 Received: (at 66117) by debbugs.gnu.org; 22 Sep 2023 14:57:47 +0000 Received: from localhost ([127.0.0.1]:37073 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjhbG-0003Q6-O3 for submit@debbugs.gnu.org; Fri, 22 Sep 2023 10:57:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34844) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjhbC-0003Pr-G8 for 66117@debbugs.gnu.org; Fri, 22 Sep 2023 10:57:45 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjhav-0001kB-BZ; Fri, 22 Sep 2023 10:57:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=DPnIg5y53lo1bzlt7+vVS+9RHWAJJybXs+iRGXyOhKA=; b=K3Gb7hbD5Iaa hHdkM/PLniwtOv/cg5R+DxdDNRZAQ7YVoNwj6vFqfD/rM1ln+L4/snO+UM7vUmILPiudyYDiQK8Jv AE5n8X/uD/JN8CJWR1CIEGRe4yQMuGK5wXDmhou4RZDgFJAFps4cgHd+8vEUP9bkN7ZpS8DLHqFL9 OnCTf02s4qI9CH0V9LZnvAraf48MEvaD4Yx+krZBwq3eEuTpdsXKXjpWyD4mUilpQUJQKQuP40a2y ralJ1QmeZ7+zF40RgaY0vBs/94QOo0e2oHGKacJCIhKwotKJPNtaBkm8wGaDWfhg4EULPC7MN03ro Ik/FM+Sdv4KNyIztbDOqZg==; Date: Fri, 22 Sep 2023 17:57:30 +0300 Message-Id: <83pm2a5k85.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87cyyawd1a.fsf@localhost> (message from Ihor Radchenko on Fri, 22 Sep 2023 13:30:41 +0000) References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Fri, 22 Sep 2023 13:30:41 +0000 > > Eli Zaretskii writes: > > >> Will it be acceptable to implement the cache using variable watchers? > > > > I don't like us using variable watchers for such stuff. > > > > Why cannot we just cache the correspondence between files and buffers > > in some hash-table? > > Because `buffer-file-name' can be modified from Lisp (via > `set-visited-file-name' or directly). Same for `buffer-file-truename' > and `buffer-file-number'. You could update the cache in set-visited-file-name, and ignore direct changes. > Or should we just assume that these variables remain unchanged other > than by primitives? Programs that make these changes are asking for trouble, IMO. AFAICT, find-buffer-visiting will never find such buffers anyway. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 23 Sep 2023 08:22:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169545728922842 (code B ref 66117); Sat, 23 Sep 2023 08:22:02 +0000 Received: (at 66117) by debbugs.gnu.org; 23 Sep 2023 08:21:29 +0000 Received: from localhost ([127.0.0.1]:37731 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjxtJ-0005wM-3v for submit@debbugs.gnu.org; Sat, 23 Sep 2023 04:21:29 -0400 Received: from mout02.posteo.de ([185.67.36.66]:39927) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjxtG-0005w6-RD for 66117@debbugs.gnu.org; Sat, 23 Sep 2023 04:21:27 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id AB562240103 for <66117@debbugs.gnu.org>; Sat, 23 Sep 2023 10:21:09 +0200 (CEST) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4Rt2CS5QKMz6v5T; Sat, 23 Sep 2023 10:21:08 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <83pm2a5k85.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> Date: Sat, 23 Sep 2023 08:22:17 +0000 Message-ID: <87wmwh2tae.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> Because `buffer-file-name' can be modified from Lisp (via >> `set-visited-file-name' or directly). Same for `buffer-file-truename' >> and `buffer-file-number'. > > You could update the cache in set-visited-file-name, and ignore > direct changes. I have eyeballed Emacs sources, and it looks like a huge number of libraries sets `buffer-file-name' directly. Also, even `find-file-noselect' does not use `set-visited-file-name'. - Functions setting ~buffer-file-name~ manually (except those setting it to nil): - tests - ~vc-find-revision-no-save~ - ~url-insert-buffer-contents~ - ~plstore-open~ - ~protect-innocence-hook~ (really?) - ~tramp-handle-insert-file-contents~ - ~tramp-archive-handle-insert-file-contents~ - ~mailcap-view-file~ - ~ange-ftp-parse-netrc~ - ~ange-ftp-write-region~ - ~ange-ftp-insert-file-contents~ - ~mh-display-msg~ - ~mh-make-folder~ - ~mh-read-draft~ - ~feedmail-vm-mail-mode~ - ~feedmail-send-it~ - ~jka-compr-write-region~ - ~jka-compr-insert-file-contents~ - ~image-dired-write-tags~ - ~image-dired-remove-tag~ - ~image-dired-write-comments~ - ~hfy-buffer~ - ~nndraft-request-associate-buffer~ - ~nndraft-auto-save-file-name~ - ~nnbabyl-create-mbox~ - ~mm-display-inline-fontify~ - ~mm-url-insert-file-contents~ - ~mm-extern-url~ - ~message-send-mail-with-mh~ - ~message-set-auto-save-file-name~ - ~gnus-dribble-read-file~ - ~gnus-save-newsrc-file~ - ~gnus-gnus-to-newsrc-format~ - ~gnus-mime-copy-part~ - ~find-alternate-file~ - ~find-file-noselect-1~ (but not by default?) - ~set-visited-file-name~ - ~file-name-non-special~ - ~erc-dcc-find-file~ - ~epa-file-insert-file-contents~ - ~epa-file-write-region~ - ~save-completions-to-file~ - ~load-completions-from-file~ - ~archive-extract~ - Functions setting ~buffer-file-truename~ manually (except those setting it to nil): - ~tar-extract~ - ~find-alternate-file~ - ~find-file-noselect-1~ - ~set-visited-file-name~ - ~revert-buffer--default~ - ~archive-extract~ - Functions setting ~buffer-file-number~ manually (except those setting it to nil): - ~find-alternate-file~ - ~find-file-noselect-1~ - ~set-visited-file-name~ - ~basic-save-buffer~ >> Or should we just assume that these variables remain unchanged other >> than by primitives? > > Programs that make these changes are asking for trouble, IMO. AFAICT, > find-buffer-visiting will never find such buffers anyway. It would, in its current form. Because it calls `get-file-buffer' that loops over all the buffers and checks their buffer-local `buffer-file-name' value, including values set via `setq' in Elisp. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 23 Sep 2023 08:58:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.16954594354906 (code B ref 66117); Sat, 23 Sep 2023 08:58:01 +0000 Received: (at 66117) by debbugs.gnu.org; 23 Sep 2023 08:57:15 +0000 Received: from localhost ([127.0.0.1]:37760 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjyRu-0001H4-HM for submit@debbugs.gnu.org; Sat, 23 Sep 2023 04:57:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43634) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qjyRq-0001Gi-3V for 66117@debbugs.gnu.org; Sat, 23 Sep 2023 04:57:13 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyRY-0000t3-LF; Sat, 23 Sep 2023 04:56:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=ZfHwvyO6IGiDvzUy3IKU9sqRNH7INqLYDYEgB17qH7k=; b=DJqg/4KZJ0sz Er8/NInX9SX2m3KtaKf/+drLcXUEV2j3aRvvJGG+WnycNXCMV7RFgevbSyvszvfUg7n6vhyFJG+q5 IBc73ntJSzD0XLQtnf9kPR54uli9Q6AliYTxwAxL7/SRQq+mGPkUyJ3uH92ODQmYwMHsYP4mfyw7s TC9fO7EWmSJ0/2JCgaE4VAsu8xJDOGH+l64RJQdmzD/vYhC7hkG3Z9W1Ps5DIAutws45FJBYAP7oM mgwQK4ERchuJudM0RGr4VuHaZeEW1SMV3UJs4FU2IzsPDxAxGtn2OVhT4w35qAtFLEShNkceRckl5 C6qqLbFXJ+XRux2DP9phmw==; Date: Sat, 23 Sep 2023 11:57:03 +0300 Message-Id: <83zg1d468w.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87wmwh2tae.fsf@localhost> (message from Ihor Radchenko on Sat, 23 Sep 2023 08:22:17 +0000) References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Sat, 23 Sep 2023 08:22:17 +0000 > > Eli Zaretskii writes: > > >> Because `buffer-file-name' can be modified from Lisp (via > >> `set-visited-file-name' or directly). Same for `buffer-file-truename' > >> and `buffer-file-number'. > > > > You could update the cache in set-visited-file-name, and ignore > > direct changes. > > I have eyeballed Emacs sources, and it looks like a huge number of > libraries sets `buffer-file-name' directly. I think this is an exaggeration, see below. > Also, even `find-file-noselect' does not use > `set-visited-file-name'. Why does it matter? We need to catch this in find-file-noselect and in set-visited-file-name anyway. > - Functions setting ~buffer-file-name~ manually (except those setting it to nil): > - tests > - ~vc-find-revision-no-save~ > - ~url-insert-buffer-contents~ > - ~plstore-open~ > - ~protect-innocence-hook~ (really?) > - ~tramp-handle-insert-file-contents~ > - ~tramp-archive-handle-insert-file-contents~ > - ~mailcap-view-file~ > - ~ange-ftp-parse-netrc~ > - ~ange-ftp-write-region~ > - ~ange-ftp-insert-file-contents~ > - ~mh-display-msg~ > - ~mh-make-folder~ > - ~mh-read-draft~ > - ~feedmail-vm-mail-mode~ > - ~feedmail-send-it~ > - ~jka-compr-write-region~ > - ~jka-compr-insert-file-contents~ > - ~image-dired-write-tags~ > - ~image-dired-remove-tag~ > - ~image-dired-write-comments~ > - ~hfy-buffer~ > - ~nndraft-request-associate-buffer~ > - ~nndraft-auto-save-file-name~ > - ~nnbabyl-create-mbox~ > - ~mm-display-inline-fontify~ > - ~mm-url-insert-file-contents~ > - ~mm-extern-url~ > - ~message-send-mail-with-mh~ > - ~message-set-auto-save-file-name~ > - ~gnus-dribble-read-file~ > - ~gnus-save-newsrc-file~ > - ~gnus-gnus-to-newsrc-format~ > - ~gnus-mime-copy-part~ IMO, these are not important for your purpose. The few buffers whose buffer-file-name is set as in those functions are not going to get in the way of your looking for a buffer that visits a specific name. And if a few of them do, we can always add the cache-updating code to them. > - ~find-alternate-file~ > - ~find-file-noselect-1~ (but not by default?) > - ~set-visited-file-name~ > - ~file-name-non-special~ These _must_ update the cache. > - ~erc-dcc-find-file~ > - ~epa-file-insert-file-contents~ > - ~epa-file-write-region~ > - ~save-completions-to-file~ > - ~load-completions-from-file~ > - ~archive-extract~ These belong to the first group, I think. > - Functions setting ~buffer-file-truename~ manually (except those setting it to nil): Are the cases where we find the buffer via file's truename significant in the profiles you've seen? if not, these functions are not relevant to the issue at hand. If the search by truename _is_ significant, we could cache that as well. > - ~tar-extract~ > - ~find-alternate-file~ > - ~find-file-noselect-1~ > - ~set-visited-file-name~ > - ~revert-buffer--default~ > - ~archive-extract~ > > > - Functions setting ~buffer-file-number~ manually (except those setting it to nil): Same question as for truename above. > - ~find-alternate-file~ > - ~find-file-noselect-1~ > - ~set-visited-file-name~ > - ~basic-save-buffer~ > > > >> Or should we just assume that these variables remain unchanged other > >> than by primitives? > > > > Programs that make these changes are asking for trouble, IMO. AFAICT, > > find-buffer-visiting will never find such buffers anyway. > > It would, in its current form. Because it calls `get-file-buffer' that > loops over all the buffers and checks their buffer-local > `buffer-file-name' value, including values set via `setq' in Elisp. Again, which of the loops took the significant time in the profiles you have? the one in get-file-buffer or the ones in find-buffer-visiting? From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 24 Sep 2023 10:54:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169555281712182 (code B ref 66117); Sun, 24 Sep 2023 10:54:01 +0000 Received: (at 66117) by debbugs.gnu.org; 24 Sep 2023 10:53:37 +0000 Received: from localhost ([127.0.0.1]:41149 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qkMk5-0003AQ-1A for submit@debbugs.gnu.org; Sun, 24 Sep 2023 06:53:37 -0400 Received: from mout01.posteo.de ([185.67.36.65]:52133) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qkMk1-0003AA-Og for 66117@debbugs.gnu.org; Sun, 24 Sep 2023 06:53:34 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 2C389240028 for <66117@debbugs.gnu.org>; Sun, 24 Sep 2023 12:53:16 +0200 (CEST) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4RtjXW0J1Kz9s09; Sun, 24 Sep 2023 12:53:14 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <83zg1d468w.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> Date: Sun, 24 Sep 2023 10:54:34 +0000 Message-ID: <87bkdr2651.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> Also, even `find-file-noselect' does not use >> `set-visited-file-name'. > > Why does it matter? We need to catch this in find-file-noselect and > in set-visited-file-name anyway. Mostly because I feel that I misunderstand where `buffer-file-name' is set. `find-file-noselect-1' only sets `buffer-file-name' when (if find-file-visit-truename ;; defcustom, nil by default (setq buffer-file-name (expand-file-name buffer-file-truename))) >> - ~find-alternate-file~ >> - ~find-file-noselect-1~ (but not by default?) >> - ~set-visited-file-name~ >> - ~file-name-non-special~ > > These _must_ update the cache. I feel that I am still missing where `buffer-file-name' is set when opening file via C-x C-f. Debugger showed something weird in my testing. >> - Functions setting ~buffer-file-truename~ manually (except those setting it to nil): > > Are the cases where we find the buffer via file's truename significant > in the profiles you've seen? Not significant for the profiles I got, but I did not want to break the existing code. > ... if not, these functions are not relevant > to the issue at hand. If the search by truename _is_ significant, we > could cache that as well. Just to make sure that we are on the same page: the cache I am proposing should be complete - if a buffer is missing from the cache, we should be sure that there is no matching buffer. `find-buffer-visiting' explicitly checks for `buffer-file-truename'. So, if the cache does not account for `buffer-file-truename', there will be divergence between the existing code and when using the cache. Same argument for `buffer-file-number' >> > Programs that make these changes are asking for trouble, IMO. AFAICT, >> > find-buffer-visiting will never find such buffers anyway. >> >> It would, in its current form. Because it calls `get-file-buffer' that >> loops over all the buffers and checks their buffer-local >> `buffer-file-name' value, including values set via `setq' in Elisp. > > Again, which of the loops took the significant time in the profiles > you have? the one in get-file-buffer or the ones in > find-buffer-visiting? Most of the time was taken by `find-buffer-visiting'. Replacing `find-buffer-visiting' with `get-file-buffer' in certain (not all) places reduced the total runtime by 30%. I do not have more granular data because the profiler did not give very granular data for the internals of `find-buffer-visiting'. I will try to setup a test on my machine for more detailed data. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 24 Sep 2023 12:52:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169555991412165 (code B ref 66117); Sun, 24 Sep 2023 12:52:01 +0000 Received: (at 66117) by debbugs.gnu.org; 24 Sep 2023 12:51:54 +0000 Received: from localhost ([127.0.0.1]:41294 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qkOaX-0003A2-MY for submit@debbugs.gnu.org; Sun, 24 Sep 2023 08:51:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47670) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qkOa8-00037U-EY for 66117@debbugs.gnu.org; Sun, 24 Sep 2023 08:51:29 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qkOZp-0003L6-UJ; Sun, 24 Sep 2023 08:51:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=5QX4hpMR2DXPlNwHY6+rE5RuQwSmWzTApu3J8MXMF1I=; b=b4s0Lgvijsvn Gb95qD5fUDSLqwbBYplDO7ETzoZFxxm6+CtWhZpKoRia5hzjAHrP6P8pZKPHhzkCL/KAykGjDJT1I jgIGICtUloT43zqj5fFQVv0Q/9TdG5QoBzv+FU1dHwvYEHMFS8+IdCb6kzuQb0VnhE10NMyqcWq1C XbCm4AmZ5IvnMBRZyidoX5U5UAIam5G15MZmyrVlrOFT/cuLc13oWCLWmOmfSe46s5uXcXy2r03Q2 JcDwfrQNiLgd9wZaGsJbb7DJkXs7Apbiej1GonriFGYxhz/jEejmI1YnBXBKCi6TKK/QAStI25nJq o6QrAYJrbidBf0+Jn5iTwg==; Date: Sun, 24 Sep 2023 15:50:38 +0300 Message-Id: <83pm273fc1.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87bkdr2651.fsf@localhost> (message from Ihor Radchenko on Sun, 24 Sep 2023 10:54:34 +0000) References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Sun, 24 Sep 2023 10:54:34 +0000 > > Eli Zaretskii writes: > > >> Also, even `find-file-noselect' does not use > >> `set-visited-file-name'. > > > > Why does it matter? We need to catch this in find-file-noselect and > > in set-visited-file-name anyway. > > Mostly because I feel that I misunderstand where `buffer-file-name' is > set. `find-file-noselect-1' only sets `buffer-file-name' when > > (if find-file-visit-truename ;; defcustom, nil by default > (setq buffer-file-name (expand-file-name buffer-file-truename))) > > >> - ~find-alternate-file~ > >> - ~find-file-noselect-1~ (but not by default?) > >> - ~set-visited-file-name~ > >> - ~file-name-non-special~ > > > > These _must_ update the cache. > > I feel that I am still missing where `buffer-file-name' is set when > opening file via C-x C-f. Debugger showed something weird in my testing. With local files, it seems like insert-file-contents sets it. So maybe we should record the file name in the cache in bset_filename. > >> - Functions setting ~buffer-file-truename~ manually (except those setting it to nil): > > > > Are the cases where we find the buffer via file's truename significant > > in the profiles you've seen? > > Not significant for the profiles I got, but I did not want to break the > existing code. > > > ... if not, these functions are not relevant > > to the issue at hand. If the search by truename _is_ significant, we > > could cache that as well. > > Just to make sure that we are on the same page: the cache I am proposing > should be complete - if a buffer is missing from the cache, we should be > sure that there is no matching buffer. Since we will keep buffer-list (we must), even with this cache available, we can always leave the current code that scans the buffer list if the name is not in the cache. This way, we don't need to worry to have all the buffers in the cache, only those which are looked for frequently and need the efficiency. > `find-buffer-visiting' explicitly checks for `buffer-file-truename'. > So, if the cache does not account for `buffer-file-truename', there will > be divergence between the existing code and when using the cache. > > Same argument for `buffer-file-number' As I said, we could have hash-tables for these as well, if that is needed. But I'd like to see the profiles that indicate we do need them. > >> > Programs that make these changes are asking for trouble, IMO. AFAICT, > >> > find-buffer-visiting will never find such buffers anyway. > >> > >> It would, in its current form. Because it calls `get-file-buffer' that > >> loops over all the buffers and checks their buffer-local > >> `buffer-file-name' value, including values set via `setq' in Elisp. > > > > Again, which of the loops took the significant time in the profiles > > you have? the one in get-file-buffer or the ones in > > find-buffer-visiting? > > Most of the time was taken by `find-buffer-visiting'. Replacing > `find-buffer-visiting' with `get-file-buffer' in certain (not all) > places reduced the total runtime by 30%. So you are saying that 30% of file-visiting buffers are not found by get-file-buffer? Or is the 30% increase due to file names for which there's no corresponding buffer? If so, does the benchmark indeed look for so many buffers that don't exist? > I will try to setup a test on my machine for more detailed data. Thanks, I think we need to understand the hot spots better, indeed. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 26 Sep 2023 08:54:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169571843521547 (code B ref 66117); Tue, 26 Sep 2023 08:54:02 +0000 Received: (at 66117) by debbugs.gnu.org; 26 Sep 2023 08:53:55 +0000 Received: from localhost ([127.0.0.1]:47225 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ql3pL-0005bS-46 for submit@debbugs.gnu.org; Tue, 26 Sep 2023 04:53:55 -0400 Received: from mout01.posteo.de ([185.67.36.65]:52957) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ql3pH-0005bD-Kl for 66117@debbugs.gnu.org; Tue, 26 Sep 2023 04:53:53 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 1F769240028 for <66117@debbugs.gnu.org>; Tue, 26 Sep 2023 10:53:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1695718413; bh=8WTURMaQB1hl5XGhBsUWcuEPRLyF2ylGUf1fi4pROw8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=C8kjQL26Dkf8HLXQT9ZfqKggv3/BdqY4MoXP1xy+MQ/ngaoXnEwDS/CtEwuO8WXZf BXaUsG69g+sqDkBrJxl6fM1vMh8tFYTwjsrkgoY81Mj8TFgAtqM5RZt5XNNVqbirxM yYN5JPGQMPBhH/+b1SSrVjaNG6FUAFdtfvS1Aq7/iYKvqUZEt8YHv1xF5mHD6yl6O9 FgUw6yxC+cvygq4U2w46eHJQ9uDnFynbelr8QMLJqYB7VmtQyEXu8SLyTnrD9ljRD3 Zhhrkw01o0UMiMH2XPQnC7aEmTsnskGTO08g9WvHFiSrB3Zt/3vdsvNOU/HTHCRINi Tahjnkdt1BUFQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4RvtnS01LBz6v6M; Tue, 26 Sep 2023 10:53:31 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <83pm273fc1.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <83pm273fc1.fsf@gnu.org> Date: Tue, 26 Sep 2023 08:54:54 +0000 Message-ID: <87o7hp9uw1.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> I feel that I am still missing where `buffer-file-name' is set when >> opening file via C-x C-f. Debugger showed something weird in my testing. > > With local files, it seems like insert-file-contents sets it. So > maybe we should record the file name in the cache in bset_filename. Thanks for the pointer! AFAIU, the relevant code is if (NILP (handler)) { current_buffer->modtime = mtime; current_buffer->modtime_size = st.st_size; bset_filename (current_buffer, orig_filename); However, it looks like file handlers are responsible for setting the filename. So, > - ~tramp-handle-insert-file-contents~ > - ~tramp-archive-handle-insert-file-contents~ > - ~ange-ftp-insert-file-contents~ > - ~jka-compr-insert-file-contents~ > - ~mm-url-insert-file-contents~ > - ~epa-file-insert-file-contents~ may also need to handle the caching. And also all the third-party handlers. >> Just to make sure that we are on the same page: the cache I am proposing >> should be complete - if a buffer is missing from the cache, we should be >> sure that there is no matching buffer. > > Since we will keep buffer-list (we must), even with this cache > available, we can always leave the current code that scans the buffer > list if the name is not in the cache. This way, we don't need to > worry to have all the buffers in the cache, only those which are > looked for frequently and need the efficiency. I need to elaborate then. The problem Org faces happens when we open a file that is not yet opened in Emacs. So, the FILENAME in question is missing from the buffer list and `find-buffer-visiting' must (1) traverse every buffer in `get-file-buffer'; (2) traverse every buffer again, checking `buffer-file-name' values; (3) traverse every buffer yet again, checking for `buffer-file-number'. We have the worst-case scenario for the current code when the buffer with a given file name is not available and all the checks fail. To address the above scenario, it is not enough to cache _some_ buffer names. Because not-yet-open FILENAME will be missing from the cache, but we will still have to go through the above process, which is slow. What is needed is a _complete_ cache, so that the fact that FILENAME is missing there means that no buffer associated with FILENAME is open in Emacs. >> `find-buffer-visiting' explicitly checks for `buffer-file-truename'. >> So, if the cache does not account for `buffer-file-truename', there will >> be divergence between the existing code and when using the cache. >> >> Same argument for `buffer-file-number' > > As I said, we could have hash-tables for these as well, if that is > needed. But I'd like to see the profiles that indicate we do need > them. I hope that the above clarified why I want to cache everything. >> Most of the time was taken by `find-buffer-visiting'. Replacing >> `find-buffer-visiting' with `get-file-buffer' in certain (not all) >> places reduced the total runtime by 30%. > > So you are saying that 30% of file-visiting buffers are not found by > get-file-buffer? Or is the 30% increase due to file names for which > there's no corresponding buffer? If so, does the benchmark indeed > look for so many buffers that don't exist? The rough code flow for the profile I attached to the initial message is: For each of 500 files used to build agenda: (1) check if file is open in Emacs via `find-buffer-visiting' and open it if not yet open; (2) search the file to find matching headings to be added to agenda. The total CPU time spend building agenda from fresh Emacs decreased by 1/3 (~10 seconds) by replacing calls to `find-buffer-visiting' with `get-file-buffer'. And this replacement did not yet replace every call to `find-buffer-visiting' (in particular, find-file-no-select by itself also calls `find-buffer-visiting'; I replaced no more than half of the calls only). I estimate that over half of the 30 seconds building agenda was spent repeatedly searching over all the buffers. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 26 Sep 2023 11:12:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii , Ihor Radchenko Cc: 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169572669214607 (code B ref 66117); Tue, 26 Sep 2023 11:12:01 +0000 Received: (at 66117) by debbugs.gnu.org; 26 Sep 2023 11:11:32 +0000 Received: from localhost ([127.0.0.1]:47436 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ql5yV-0003nW-KD for submit@debbugs.gnu.org; Tue, 26 Sep 2023 07:11:31 -0400 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:55583) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ql5yR-0003nF-Ja for 66117@debbugs.gnu.org; Tue, 26 Sep 2023 07:11:29 -0400 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 6A3D25C00AC; Tue, 26 Sep 2023 07:11:09 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Tue, 26 Sep 2023 07:11:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm1; t= 1695726669; x=1695813069; bh=p/3pSGo5PApCsbL6Ln+bAkXiLsdL9xzxYVR LSiY47Xc=; b=VC7GxW88BTRreqE/mENbvotnnabR7YlkyemufqZlm9EXp1pRfT0 GEDwycVnK6Iyi7fdTWTJa64CkABe/+cXNup/98BwmiOhXk0WneUMblyKhnM3m67y bSghm3SqRbUYlkOXf1+rsDttn51vllhPGRcfa3e5kjrEe0r/92+H5wTWPuIIAsdY dG2OdL4WngS/k94ptKfTybALd2poyAUscQyqnrrCSOWVL+D1DAsiczP+4li5xyme 2A6DIlh74bY8pcadJPz1OB92DCzfpSK6u+KvEJgu3wPlXacHMtw9r2JGiIJQLVoN J5gKiu2gVsC2cbvVgC7mPFSaf46Hn6caabA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1695726669; x=1695813069; bh=p/3pSGo5PApCsbL6Ln+bAkXiLsdL9xzxYVR LSiY47Xc=; b=DXED0oCfQOcsW7z5rSCNoYGjYWeRBDlPG22ZMiH+uvy6sEeT4hx TVUHCOFUKA4IgsBP+U2LyRkuRy+sxOqOxVQRWCwRyPz27M8iyMYQIx0LxAGKtuQz bI5hpjOi2lE3PTxUdIanlGivi7LWq/RilWJrSd5Au1ZaSHG9N4MvLXdmt5Sv15nQ RVltyXXe3Oeb2DZdSoNfIt4ez+QNYGT8o/q8Te4NXl4hHBWjkKG5agnLW/3fYK+t i7aq5BcIBEJg1E8+Vuc6is+foJnO22M6CDntGMEveRUSgaITbZGgPUAgAbV+0P4r wZ8OH/5buqJPp/h+k5t1dP7l+4kYoTRImlw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvjedrtddtgddtkecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefkffggfgfuvfevfhfhjggtgfesthejredttdefjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpeeigfetveehveevffehledtueekieeikeeufeegudfgfeeghfdulefgfeevledv veenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh hithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 26 Sep 2023 07:11:07 -0400 (EDT) Message-ID: Date: Tue, 26 Sep 2023 14:11:06 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <83pm273fc1.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: <83pm273fc1.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.2 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.2 (---) On 24/09/2023 15:50, Eli Zaretskii wrote: >>> ... if not, these functions are not relevant >>> to the issue at hand. If the search by truename_is_ significant, we >>> could cache that as well. >> Just to make sure that we are on the same page: the cache I am proposing >> should be complete - if a buffer is missing from the cache, we should be >> sure that there is no matching buffer. > Since we will keep buffer-list (we must), even with this cache > available, we can always leave the current code that scans the buffer > list if the name is not in the cache. This way, we don't need to > worry to have all the buffers in the cache, only those which are > looked for frequently and need the efficiency. If the cache was exhaustive (i.e. we could guarantee that 'find-buffer-visiting' is always fast), we could use it in Xref as well. Instead of doing the memoization dance in xref--find-file-buffer which still doesn't account for symlinks. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 26 Sep 2023 13:06:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169573352515420 (code B ref 66117); Tue, 26 Sep 2023 13:06:02 +0000 Received: (at 66117) by debbugs.gnu.org; 26 Sep 2023 13:05:25 +0000 Received: from localhost ([127.0.0.1]:47596 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ql7ki-00040e-Pp for submit@debbugs.gnu.org; Tue, 26 Sep 2023 09:05:24 -0400 Received: from mout01.posteo.de ([185.67.36.65]:35963) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ql7kg-00040P-74 for 66117@debbugs.gnu.org; Tue, 26 Sep 2023 09:05:22 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id E4351240028 for <66117@debbugs.gnu.org>; Tue, 26 Sep 2023 15:05:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1695733502; bh=PL5y0yHxgVLjUUxGmxFyuJbmNdPAt4lOW1TiK/psTkk=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=DnfqHorqi9eyyLM1tnpZwJLyh6hUQvGQZ16TmCH760V008TCguvr1bTNIX2OdE41A pLq8Hf98M/FNKoGWtOyCFjDR+0t2l0TXmGv9WdvpP8cSoiR9iymJii5W9Z4C2c4RPz K1h6oofprRfDoO1Brfv5WkAsgxO2/0LmwyN6x2ehQTWNVC+Xu/wev95l5wVC2DtACr mgU0U0U4Od2gIYLInrgMU1A0FRDj2/12Gd6vHAJ4AQvFmuXErc1UtiYzeblB7NClpU keXkHJSkQQdlhFGUnv+CDpik2+qcIPnFbI8P1PhWG+xohvaiEbPFZFQR+bPBE7kohi cqKTn7we4KHOA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4Rw0Mc6Nw2z9s44; Tue, 26 Sep 2023 15:05:00 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <87bkdr2651.fsf@localhost> References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> Date: Tue, 26 Sep 2023 13:06:04 +0000 Message-ID: <87pm2584oz.fsf@localhost> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --=-=-= Content-Type: text/plain Ihor Radchenko writes: > Most of the time was taken by `find-buffer-visiting'. Replacing > `find-buffer-visiting' with `get-file-buffer' in certain (not all) > places reduced the total runtime by 30%. I do not have more granular data > because the profiler did not give very granular data for the internals > of `find-buffer-visiting'. > > I will try to setup a test on my machine for more detailed data. Here is a reproducer anyone can try locally: 1. Create a dummy set of 1000 files in /tmp/test/: (dotimes (i 1000) (with-temp-file (format "/tmp/test/%d.org" i) (insert "* This is test"))) 2. emacs -Q 3. Open all the 1000 files one by one: (dolist (file (directory-files "/tmp/test/" t "org")) (unless (find-buffer-visiting file) (find-file-noselect file))) Step (3) takes 18.8 seconds on my machine. The CPU profile attached as cpu-profile. If one uses `get-file-buffer' instead of `find-buffer-visiting', the total runtime becomes 5.1 sec - almost 4x faster. To test: (dolist (file (directory-files "/tmp/test/" t "org")) (unless (get-file-buffer file) (cl-letf (((symbol-function 'find-buffer-visiting) (lambda (file &optional predicate) (when-let ((buf (get-file-buffer file))) (and (funcall predicate buf) buf))))) (find-file-noselect file)))) With `get-file-buffer' instead of `find-buffer-visiting', matching against the opened buffers no longer dominates the profiler. See the attached cpu-profile-get-file-buffer. So, it looks like caching `get-file-buffer' is not really necessary. >From the profile, the slowest parts of `find-buffer-visiting' are the two loops checking `buffer-file-truename' and `buffer-file-number' with most of the time apparently spent executing `with-current-buffer'. I tested whether `with-current-buffer' is the culprit by replacing it with `buffer-local-value' calls: (defun find-buffer-visiting (filename &optional predicate) "Return the buffer visiting file FILENAME (a string). This is like `get-file-buffer', except that it checks for any buffer visiting the same file, possibly under a different name. If PREDICATE is non-nil, only buffers satisfying it are eligible, and others are ignored. PREDICATE is called with the buffer as the only argument, but not with the buffer as the current buffer. If there is no such live buffer, return nil." (let ((predicate (or predicate #'identity)) (truename (abbreviate-file-name (file-truename filename)))) (or (let ((buf (get-file-buffer filename))) (when (and buf (funcall predicate buf)) buf)) (let ((list (buffer-list)) found) (while (and (not found) list) (if (and (buffer-local-value 'buffer-file-name (car list)) (string= (buffer-local-value 'buffer-file-truename (car list)) truename) (funcall predicate (car list))) (setq found (car list))) (setq list (cdr list))) found) (let* ((attributes (file-attributes truename)) (number (file-attribute-file-identifier attributes)) (list (buffer-list)) found) (and buffer-file-numbers-unique (car-safe number) ;Make sure the inode is not just nil. (while (and (not found) list) (if (and (buffer-local-value 'buffer-file-name (car list)) (equal (buffer-local-value 'buffer-file-number (car list)) number) ;; Verify this buffer's file number ;; still belongs to its file. (file-exists-p (buffer-local-value 'buffer-file-name (car list))) (equal (file-attributes (buffer-local-value 'buffer-file-truename (car list))) attributes) (funcall predicate (car list))) (setq found (car list))) (setq list (cdr list)))) found)))) The result is 7.8 sec execution time - much better compared to 18.8 seconds in `with-current-buffer' version, but still worse compared to 5.1 sec in `get-file-buffer' version. See the attached cpu-profile-buffer-local-value. So, using `with-current-buffer' when looping over all the buffers is certainly not optimal (maybe in other places as well). However, even `buffer-local-value' is still costly - it adds up over 50% run time. Also, looking at the 5.1 sec profile, there are other things that may slow down opening a large number of files: 0. GC (as usual) 1. hack-local-variables 2. vc-refresh-state 3. uniquify--create-file-buffer-advice -> uniquify-rationalize-file-buffer-names 4. Org mode loading (nothing new here for me) --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=cpu-profile Content-Transfer-Encoding: base64 Cltwcm9maWxlci1wcm9maWxlICIyOC4xIiBjcHUgI3MoaGFzaC10YWJsZSBzaXplIDMyNSB0ZXN0 IGVxdWFsIHJlaGFzaC1zaXplIDEuNSByZWhhc2gtdGhyZXNob2xkIDAuODEyNSBkYXRhIChbbmls IG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsXSA4IFtyZWRpc3BsYXlfaW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKSBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTIgW29yZy1t b2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAzMSBbcmVxdWlyZSBieXRl LWNvZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cF0gMTYgW3JlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIG9y Zy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldF0gMTkgW3JlcXVpcmUgYnl0ZS1jb2Rl IG9yZy1iYWJlbC1kby1sb2FkLWxhbmd1YWdlcyBjdXN0b20taW5pdGlhbGl6ZS1yZXNldCBjdXN0 b20tZGVjbGFyZS12YXJpYWJsZSBieXRlLWNvZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNl dC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXRd IDQgW2N1c3RvbS1hZGQtdG8tZ3JvdXAgY3VzdG9tLWhhbmRsZS1rZXl3b3JkIGN1c3RvbS1kZWNs YXJlLXZhcmlhYmxlIGJ5dGUtY29kZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBs ZXRdIDMgW3JlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1j b2RlIHJlcXVpcmUgYnl0ZS1jb2RlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1t b2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3RdIDMgW3JlcXVpcmUgb3Jn LWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9k ZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSA3IFtyZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJl IGJ5dGUtY29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1 dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBpZiBsZXRdIDI3IFtyZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1 aXJlIGJ5dGUtY29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0 LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdF0gMTkgW3Rvb2wtYmFyLWxvY2FsLWl0ZW0tZnJvbS1tZW51IGJ5dGUtY29kZSBkZWZ2 YXIgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1t b2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgaWZdIDMgW3JlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQt bW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXRdIDcgW2Rl Y29kZS1jb2Rpbmctc3RyaW5nICIjPGNvbXBpbGVkIC0weDcwMzIxZGUyOTYwM2E5OT4iIG1hcGNh ciBieXRlLWNvZGUgZGVmdmFyIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJl cXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBz ZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDMgW3JlcXVpcmUgYnl0 ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1j b2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGVdIDEzIFtmdW5jdGlvbiBmdW5jYWxsIGV2YWwgY3VzdG9tLWluaXRpYWxp emUtcmVzZXQgY3VzdG9tLWRlY2xhcmUtdmFyaWFibGUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1j b2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8t bW9kZV0gMyBbcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRl LWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9h ZC1tb2R1bGVzLW1heWJlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1h cHBseS1hbGlzdCBzZXQtYXV0by1tb2RlXSAxMSBbaml0LWxvY2stcmVmb250aWZ5IGZvbnQtbG9j ay1mbHVzaCBlbGlzcC0tZm9udC1sb2NrLWZsdXNoLWVsaXNwLWJ1ZmZlcnMgZG8tYWZ0ZXItbG9h ZC1ldmFsdWF0aW9uIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUg Ynl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0 ZS1jb2RlXSA3IFtyZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5 dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUt Y29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmVdIDEz IFtyZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSBy ZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1 aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wXSA5IFty ZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1 aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJl IGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZV0gMTUgW2J5dGUtY29tcGlsZS1jb25zdGFudHMt dmVjdG9yIGJ5dGUtY29tcGlsZS1vdXQtdG9wbGV2ZWwgYnl0ZS1jb21waWxlLXRvcC1sZXZlbCBi eXRlLWNvbXBpbGUtbGFtYmRhIGJ5dGUtY29tcGlsZS1mdW5jdGlvbi1mb3JtIGJ5dGUtY29tcGls ZS1mb3JtIGJ5dGUtY29tcGlsZS10b3AtbGV2ZWwgIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTcz MmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV80OT4iIGJ5dGUtY29tcGlsZSBjbC0tZ2Vu ZXJpYy1nZXQtZGlzcGF0Y2hlciBjbC0tZ2VuZXJpYy1tYWtlLW5leHQtZnVuY3Rpb24gY2wtLWdl bmVyaWMtbWFrZS1mdW5jdGlvbiBjbC1nZW5lcmljLWRlZmluZS1tZXRob2QgYnl0ZS1jb2RlIHJl cXVpcmUgYnl0ZS1jb2RlXSAzIFtmb3JtYXQgYnl0ZS1jb2RlIGRlZmNvbnN0IHJlcXVpcmUgYnl0 ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1j b2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmVdIDMgW21ha2Ut Y2xvc3VyZSBrZXktdmFsaWQtcCBrZXltYXAtLWNoZWNrIGtleW1hcC1zZXQgZGVmaW5lLWtleW1h cCBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1h eWJlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZV0gMyBba2V5LXBhcnNlIGtl eW1hcC1zZXQgZGVmaW5lLWtleW1hcCBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWly ZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZV0gMiBbIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2 YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV8xMj4iIG1hcGNhciBvcmctZm9sZC1jb3JlLS1w cm9wZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSBvcmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMg b3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0 LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBpZiBsZXRdIDMgW29yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1s YXN0LXNleHBdIDQgW3JlcXVpcmUgcmVxdWlyZSBieXRlLWNvZGUgb3JnLWVsZW1lbnQtY2FjaGUt cmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0XSAzIFtlbGlzcC0tZm9u dC1sb2NrLWZsdXNoLWVsaXNwLWJ1ZmZlcnMgZG8tYWZ0ZXItbG9hZC1ldmFsdWF0aW9uIHJlcXVp cmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9y Zy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgaWZdIDMgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1 ZmZlci12aXNpdGluZyBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWwgbmlsIG5pbF0gMTcgW2dldGVudiB2Yy1zY2NzLXNlYXJjaC1wcm9qZWN0LWRpciB2Yy1w b3NzaWJsZS1tYXN0ZXIgIiM8Y29tcGlsZWQgMHg0N2YyMDY0OWJkZWMzYWY+IiBtYXBjYXIgdmMt Y2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc2Njcy1yZWdp c3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHhiNjc5YWNkYjU1ODg0MGM+IiBt YXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBh ZnRlci1maW5kLWZpbGVdIDQgW29yZy1tYWNyby0tZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1tYWNy by0tY29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbl0gNTYgW2Rpci1sb2NhbHMtLWFsbC1m aWxlcyBsb2NhdGUtZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGly LWxvY2FsLS1nZXQtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gNTYgW3Nl dC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1i dWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAyMjEyIFtpbnNlcnQtZmls ZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0 IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDM3IFtv cmctc2V0LWZvbnQtbG9jay1kZWZhdWx0cyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSA2IFtzZXQt YnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIgd2hpbGUgbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12 aXNpdGluZyBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSAyMzU4IFsi IzxzdWJyIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRh XzE0PiIgbWFwY2FyIG9yZy1mb2xkLWNvcmUtLXByb3BlcnR5LXN5bWJvbC1nZXQtY3JlYXRlIG9y Zy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3Jn LWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldF0gMyBbZmlsZS1yZW1v dGUtcCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg aWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMTQgW2xvY2F0ZS1kb21p bmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLWhnLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5k ICIjPGNvbXBpbGVkIC0weGE5NzAyY2RiNTU4ODQwYz4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1i YWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlXSA0OCBbc2F2ZS1j dXJyZW50LWJ1ZmZlciB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcg ZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFz dC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gOTI2IFtkaXItbG9j YWxzLS1hbGwtZmlsZXMgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmls ZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMg aGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBp Zl0gNzIgW3NhdmUtY3VycmVudC1idWZmZXIgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVm ZmVyLXZpc2l0aW5nIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhw IGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDEw MTggW2xvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXIt bG9jYWwtLWdldC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseV0gMTAgW2dsb2JhbC1lbGRvYy1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBs ZXQgcHJvZ25dIDQgW29yZy0tc2V0LWZhY2VzLWV4dGVuZCBvcmctbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlm IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw XSAzIFtzYXZlLWN1cnJlbnQtYnVmZmVyIHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlz aXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGVdIDEwNDIgW2Fzc29jLWRlZmF1bHQgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGVdIDMgW2luaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9kZS0xIGhh Y2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9k ZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxp c3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZV0gMzYgW3NhdmUtY3VycmVu dC1idWZmZXIgd2hpbGUgbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBpZiBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gOTQ2IFtmaWxlLXRydWVuYW1lIGFi YnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9z ZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1s YXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAx NyBbc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVmZmVyIHdoaWxlIGFuZCBsZXQqIG9yIGxldCBm aW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDIyMDggW2ZpbGUtbmFt ZS1zYW5zLXZlcnNpb25zIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA5IFtv cmctcGVyc2lzdC0tZmluZC1pbmRleCBvcmctcGVyc2lzdC0tYWRkLXRvLWluZGV4IG9yZy1wZXJz aXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1hdXRvLW1v ZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg aWYgbGV0IHdoaWxlIGxldF0gMyBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3Qg dmMtYnpyLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weGIzZmQ2Y2Ri NTU4ODQwYz4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUg cnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgaWYgbGV0IHdoaWxlXSA1MiBbc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVmZmVy IHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0 IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMjIxNSBbYWJicmV2aWF0ZS1maWxlLW5hbWUgbG9j YXRlLWRvbWluYXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0t Z2V0LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDE0IFtvcmctaWQtdXVp ZCBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVs ZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0XSA1 OSBbZmlsZS10cnVlbmFtZSBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBm aW5kLWJ1ZmZlci12aXNpdGluZyBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVj dXRlIG5pbCBuaWxdIDggW2xvb2t1cC1rZXkgZWFzeS1tZW51LWxvb2t1cC1uYW1lICIjPGNvbXBp bGVkIDB4MTNkZWVmMzA5NmZmYjFmYj4iIG1hcGNhciBlYXN5LW1lbnUtZ2V0LW1hcCBlYXN5LW1l bnUtYWRkLWl0ZW0gZWFzeS1tZW51LWNoYW5nZSBvcmctaW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVu dSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0XSAxMSBbc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY29tbWFuZC1leGVjdXRlXSAzIFtyZWdleHAtcXVvdGUgb3JnLW1hY3JvLS1maW5kLWtl eXdvcmQtdmFsdWUgb3JnLW1hY3JvLS1jb2xsZWN0LW1hY3JvcyBvcmctbWFjcm8taW5pdGlhbGl6 ZS10ZW1wbGF0ZXMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0XSAzIFtsb2Nh dGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1zdm4tcmVnaXN0ZXJlZCB2Yy1jYWxs LWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4YmEzMjZjZGI1NTg4NDBjPiIgbWFwYyB2Yy1yZWdpc3Rl cmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGVdIDQ4 IFtmaWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUgZmlsZS10cnVlbmFtZSBmaW5kLWZpbGUtbm9z ZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1s YXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5p bF0gOCBbZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZj LWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1zY2NzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIj PGNvbXBpbGVkIC0weGI4OTA2Y2RiNTU4ODQwYz4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNr ZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0XSAzIFtzdHJpbmctbWF0Y2ggYXNz b2MtZGVmYXVsdCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1s YXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAzMiBbYWJicmV2aWF0ZS1maWxlLW5hbWUg bG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMtaGctcmVnaXN0ZXJlZCB2Yy1j YWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4YjkyYjJjZGI1NTg4NDBjPiIgbWFwYyB2Yy1yZWdp c3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXRdIDI1IFtz Z21sLWh0bWwtbWV0YS1hdXRvLWNvZGluZy1mdW5jdGlvbiBmaW5kLWF1dG8tY29kaW5nIHNlbGVj dC1zYWZlLWNvZGluZy1zeXN0ZW0gb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIG9y Zy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVu dC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmXSAxMCBbc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSA1MyBbZmlsZS1yZW1vdGUtcCBoYWNrLWRpci1sb2Nh bC0tZ2V0LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMyBbc2dtbC1odG1sLW1ldGEtYXV0by1jb2Rpbmct ZnVuY3Rpb24gZmluZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgaW5zZXJ0LWZpbGUtY29u dGVudHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAxMCBbZXF1YWwgYW5kIGlmIHNhdmUt Y3VycmVudC1idWZmZXIgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5n IGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duXSAxNjggW29yZy1zZXQt cmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9k ZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAxNiBbdW5pcXVpZnkt cmF0aW9uYWxpemUtZmlsZS1idWZmZXItbmFtZXMgdW5pcXVpZnktLWNyZWF0ZS1maWxlLWJ1ZmZl ci1hZHZpY2UgY3JlYXRlLWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSA2NjEgW2ZpbGUtdHJ1 ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGlmIGxl dCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDE3IFtmaWxl LWRpcmVjdG9yeS1wIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDMgW29yZy1lbGVtZW50LXJlc3Ry aWN0aW9uIG9yZy1tYWNyby0tZmluZC1kYXRlIG9yZy1tYWNyby0tY29sbGVjdC1tYWNyb3Mgb3Jn LW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQt YXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdo aWxlIGxldF0gMyBbZmlsZS1leGlzdHMtcCAiIzxjb21waWxlZCAweDFjMDEzYTc0OWJkZWMzYWY+ IiBtYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQg dmMtc2Njcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHhiNGE2YWNk YjU1ODg0MGM+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRl IHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0XSAxMyBbZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgaW5oaWJpdC1sb2NhbC12YXJp YWJsZXMtcCBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGlmIGxldCB3aGlsZSBsZXRdIDI3IFtmaWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUg ZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFz dC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1 dGUgbmlsIG5pbCBuaWwgbmlsXSAxMyBbZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9j YWwtLWdldC12YXJpYWJsZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFy aWFibGVzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1t b2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlXSAx MiBbZm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVybi1vbi1mb250LWxvY2staWYt ZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tz IHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1h cHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0XSAzIFtnZXQtZmlsZS1i dWZmZXIgbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBpZiBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDE5IFtnZXRoYXNoIG9yZy1wZXJzaXN0LS1m aW5kLWluZGV4IG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3Rl ciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGls ZV0gNiBbb3JnLWZvbGQtY29yZS1nZXQtZm9sZGluZy1zcGVjLWZyb20tYWxpYXMgb3JnLWZvbGQt Y29yZS1zZXQtZm9sZGluZy1zcGVjLXByb3BlcnR5ICIjPGNvbXBpbGVkIC0weDQyNmYwNzY3MmQx MzkyMT4iIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRp YWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldF0gNCBb cmV2ZXJzZSByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91 cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdl eHAtb3B0IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIG9y Zy1jb2xsZWN0LWtleXdvcmRzIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9kZSBz ZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZV0g MyBbb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIG9yZy1wZXJzaXN0LS1nZXQtY29s bGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8t bW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXRdIDQzIFtvcmctZXh0cmFjdC1sb2ctc3Rh dGUtc2V0dGluZ3Mgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRv LW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDQgW2ZpbGUt dHJ1ZW5hbWUgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21t YW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTUgW2ZpbGUtZXhpc3RzLXAgIiM8Y29t cGlsZWQgMHgxY2VhMDE4YzliZGVjM2FmPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0 ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2Vu ZCAiIzxjb21waWxlZCAtMHgxY2Q5YjJjZGI1NTg4NDBjPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZj LWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0gMTMgW2FkZC1ob29rICIjPGNvbXBp bGVkIC0weDEyZWRmYTQ2MDgzYjg4OTA+IiBydW4taG9va3MgYXBwbHkgcnVuLW1vZGUtaG9va3Mg b3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGVdIDMgW2dldC1maWxlLWJ1ZmZlciBsZXQg b3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gNyBbYWxpc3QtZ2V0IG9yZy1mb2xk LWNvcmUtZ2V0LWZvbGRpbmctc3BlYy1mcm9tLWFsaWFzIG9yZy1mb2xkLWNvcmUtc2V0LWZvbGRp bmctc3BlYy1wcm9wZXJ0eSAiIzxjb21waWxlZCAtMHg0MjZmMDcxMzkwN2Y5MjE+IiBvcmctZm9s ZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xk LWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZl0gNCBbb3JnLWZvbGQtY29yZS1zZXQt Zm9sZGluZy1zcGVjLXByb3BlcnR5ICIjPGNvbXBpbGVkIC0weDQyNmYwNzY3MmQxMzkyMT4iIG9y Zy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3Jn LWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZV0gMTQgW2Nk ciB1bmlxdWlmeS1yYXRpb25hbGl6ZS1maWxlLWJ1ZmZlci1uYW1lcyB1bmlxdWlmeS0tY3JlYXRl LWZpbGUtYnVmZmVyLWFkdmljZSBjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0 IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMTAgW2lu dGVybiBvcmctZm9sZC1jb3JlLS1wcm9wZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSBvcmctZm9sZC1j b3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWlu aXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGVdIDcgW2ZpbGUtbmV3ZXIt dGhhbi1maWxlLXAgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWwgbmlsXSAxMSBbcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQt Z3JvdXAgcmVnZXhwLW9wdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBvcmctLWNvbGxlY3Qta2V5 d29yZHMtMSBvcmctY29sbGVjdC1rZXl3b3JkcyBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMg b3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdF0gOSBbZmlsZS1yZW1vdGUtcCBoYWNrLWRpci1sb2NhbC0tZ2V0 LXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMg cnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGVdIDcgW2FiYnJl dmlhdGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLWJ6 ci1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweGY5M2ZhNmViYTU5NDUx Zj4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhv b2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgaWYgbGV0XSAxMSBbc2V0LWZhY2UtYXR0cmlidXRlIHNldC1mYWNlLWV4dGVuZCAiIzxjb21w aWxlZCAtMHgxNDE1MTZiNjE0NGQ1YjhlPiIgb3JnLS1zZXQtZmFjZXMtZXh0ZW5kIG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldF0gMyBbZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMg aW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0by1tb2RlLTEgaGFjay1sb2NhbC12YXJp YWJsZXMtcHJvcC1saW5lIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIG9yZy1t b2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgaWYgbGV0XSA0IFthYmJyZXZpYXRlLWZpbGUtbmFtZSBsb2NhdGUtZG9t aW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1zdm4tcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tl bmQgIiM8Y29tcGlsZWQgLTB4MWNhNTJhY2RiNTU4ODQwYz4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2 Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0XSA0NSBbbGV0IGZpbmQt YnVmZmVyLXZpc2l0aW5nIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1z ZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUg bmlsIG5pbCBuaWwgbmlsIG5pbF0gMyBbb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIg b3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0 aW9uIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlXSAzIFtlcXVhbCBhbmQgaWYgc2F2ZS1jdXJyZW50LWJ1 ZmZlciB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdo aWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDEyMiBbZWFzeS1tZW51LWdldC1t YXAgZWFzeS1tZW51LWFkZC1pdGVtIGVhc3ktbWVudS1jaGFuZ2Ugb3JnLWluc3RhbGwtYWdlbmRh LWZpbGVzLW1lbnUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0XSA0IFtzdHJp bmc9IGFuZCBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZm ZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHBdIDY0IFtsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2 Yy1naXQtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTRkN2ZhY2Ri NTU4ODQwYz4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUg cnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgaWYgbGV0IHdoaWxlXSAyMyBbZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgaW5oaWJp dC1sb2NhbC12YXJpYWJsZXMtcCBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSA0IFtvcmctcGVyc2lzdC0tcmVtb3Zl LWZyb20taW5kZXggb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQg b3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duXSAyNCBbbWFrZS1jbG9z dXJlIHNlcS1maWx0ZXIgaGFjay1sb2NhbC12YXJpYWJsZXMtLWZpbmQtdmFyaWFibGVzIGhhY2st bG9jYWwtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMyBbIiM8Y29tcGls ZWQgLTB4MTQxNTE2YjYxNDRkYmY4ZT4iIG9yZy0tc2V0LWZhY2VzLWV4dGVuZCBvcmctbW9kZSBz ZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBu b3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAz IFthbmQgd2hpbGUgbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9z ZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1s YXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gNiBbYXV0by1j b2RpbmctYWxpc3QtbG9va3VwIGZpbmQtYXV0by1jb2Rpbmcgc2VsZWN0LXNhZmUtY29kaW5nLXN5 c3RlbSBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgb3JnLXBlcnNpc3QtLWdldC1j b2xsZWN0aW9uIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9y Zy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgaWZdIDEyIFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0 LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUtMSBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAxMCBbc3RyaW5nPSBhbmQgaWYgc2F2ZS1jdXJy ZW50LWJ1ZmZlciB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmls ZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0g OTIgW2ZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIG1ha2UtbG9jay1maWxlLW5hbWUgaW5zZXJ0 LWZpbGUtY29udGVudHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlm IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMTAgW2FiYnJl dmlhdGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLWdp dC1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxZDk2MDZjZGI1NTg4 NDBjPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4t aG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBpZiBsZXRdIDIwIFtvcmctcGVyc2lzdC1yZWFkIG9yZy1wZXJzaXN0LWxvYWQgb3JnLW1v ZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cF0gMTEgW2ZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIG1ha2UtYXV0by1zYXZlLWZpbGUtbmFt ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gNiBbdmMt ZmlsZS1jbGVhcnByb3BzIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDcgW3ZjLW1ha2UtYmFja2VuZC1zeW0gdmMt ZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxj b21waWxlZCAtMHgxNTNiN2VjZGI1NTg4NDBjPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tl bmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGVdIDMgW2FiYnJldmlhdGUt ZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFj ay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2st bG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBz ZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWZdIDE2 IFtkZWxldGUtZHVwcyBvcmctZm9sZC1jb3JlLS1wcm9wZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSBv cmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9y Zy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGVdIDYgW2Fi YnJldmlhdGUtZmlsZS1uYW1lIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDM0IFtmaWxlLWV4aXN0 cy1wICIjPGNvbXBpbGVkIDB4NjRjMDNlMDliZGVjM2FmPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rl ci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNyYy1yZWdpc3RlcmVkIHZjLWNh bGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxNGFiMjZjZGI1NTg4NDBjPiIgbWFwYyB2Yy1yZWdp c3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0gMTcgW3doaWxlIGFu ZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gNCBbZmluZC1maWxlLW5vc2Vs ZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFz dC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWxdIDMgW25vdCBhbmQgd2hpbGUgbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNp dGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAxMiBbZmls ZS10cnVlbmFtZSBmaWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5h bWUgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21t YW5kLWV4ZWN1dGUgbmlsXSAzIFtyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgb3JnLXBlcnNpc3Qt LWdldC1jb2xsZWN0aW9uIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJl c2V0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldF0gNiBbZmlsZS1uYW1lLXNh bnMtdmVyc2lvbnMgaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0by1tb2RlLTEgaGFj ay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIGhhY2stbG9jYWwtdmFyaWFibGVzIHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qt c2V4cF0gMTIgW3N0cmluZy1tYXRjaCBvcmctZm9sZC1jb3JlLS1wcm9wZXJ0eS1zeW1ib2wtZ2V0 LWNyZWF0ZSBvcmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0 aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1h dXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hp bGVdIDEzIFthbmQgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciB3aGlsZSBhbmQgbGV0KiBvciBsZXQg ZmluZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDM0IFtyZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQt Z3JvdXAgcmVnZXhwLW9wdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBvcmctLWNvbGxlY3Qta2V5 d29yZHMtMSBvcmctY29sbGVjdC1rZXl3b3JkcyBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMg b3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBpZl0gMyBbaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUt aG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cF0gMyBbd2hpbGUgbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBp ZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDE0IFtvcmct YmFiZWwtaGlkZS1hbGwtaGFzaGVzIHJ1bi1ob29rcyBhcHBseSBydW4tbW9kZS1ob29rcyBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8t bW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXRdIDIwIFthdXRvLWNvZGluZy1hbGlzdC1s b29rdXAgZmluZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgaW5zZXJ0LWZpbGUtY29udGVu dHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAyMCBbcmVnZXhwLW9wdCBvcmctbWFrZS1v cHRpb25zLXJlZ2V4cCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBvcmctY29sbGVjdC1rZXl3b3Jk cyBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNl dC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQg d2hpbGVdIDYgW2V4cGFuZC1maWxlLW5hbWUgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gNyBbZmlsZS10cnVlbmFt ZSBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNp dGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQt ZXhlY3V0ZSBuaWxdIDEwIFt0aHJvdyAiIzxjb21waWxlZCAtMHgxODhkMDk0ODU3MGY3NTZjPiIg bWFwLWtleW1hcCBlYXN5LW1lbnUtbG9va3VwLW5hbWUgIiM8Y29tcGlsZWQgMHgxM2RlZWYzMWFi ZTA1MWZiPiIgbWFwY2FyIGVhc3ktbWVudS1nZXQtbWFwIGVhc3ktbWVudS1hZGQtaXRlbSBlYXN5 LW1lbnUtY2hhbmdlIG9yZy1pbnN0YWxsLWFnZW5kYS1maWxlcy1tZW51IG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZV0gNiBbaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBoYWNr LWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxl dCB3aGlsZSBsZXQgcHJvZ25dIDI5IFtjYWxsZWQtaW50ZXJhY3RpdmVseS1wIGZvbnQtbG9jay1t b2RlIGZvbnQtbG9jay1jaGFuZ2UtbW9kZSB0ZXh0LW1vZGUgb3V0bGluZS1tb2RlIG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlXSA0IFtjZHIgYnVmZmVyLWxpc3QgbGV0KiBvciBsZXQg ZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDcgW3JlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdCBv cmctbWFrZS1vcHRpb25zLXJlZ2V4cCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBvcmctY29sbGVj dC1rZXl3b3JkcyBvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXpl LXRlbXBsYXRlcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmXSAzIFttYXBjYXIgIiM8Y29tcGlsZWQg MHgxODQwODMzODQxODk4Y2I0PiIgYXBwbHkgc2VxLW1hcCBzZXEtZmlsdGVyIGhhY2stbG9jYWwt dmFyaWFibGVzLS1maW5kLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldF0gNCBbbGV0IG9yIGxldCBmaW5kLWJ1ZmZl ci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA0IFtzdHJpbmctbWF0Y2ggdmMtcmVnaXN0ZXJlZCB2Yy1i YWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 XSAzIFtvcmctZm9sZC1jb3JlLWdldC1mb2xkaW5nLXNwZWMtZnJvbS1hbGlhcyAiIzxzdWJyIEY2 MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzE0PiIgbWFw Y2FyIG9yZy1mb2xkLWNvcmUtLXByb3BlcnR5LXN5bWJvbC1nZXQtY3JlYXRlIG9yZy1mb2xkLWNv cmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQtaW5p dGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxp c3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmXSAzIFt2Yy1jYWxsLWJhY2tlbmQgIiM8Y29t cGlsZWQgLTB4MTU1YzNlY2RiNTU4ODQwYz4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5k IHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHBdIDggW2FkZC1ob29rIGZvbnQtbG9jay10dXJuLW9uLXRoaW5nLWxvY2sg Zm9udC1sb2NrLW1vZGUtaW50ZXJuYWwgZm9udC1sb2NrLWRlZmF1bHQtZnVuY3Rpb24gZm9udC1s b2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVybi1vbi1mb250LWxvY2staWYtZGVzaXJlZCBn bG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2Rl LWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlz dCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZV0gMyBbY2RyIHNldHEg d2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGlmIGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseV0gMTUgW29yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIG9yZy1jb2xsZWN0LWtleXdv cmRzIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxl dCB3aGlsZSBsZXQgcHJvZ25dIDE2IFthbmQgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciB3aGlsZSBs ZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMjkg W2NsLW1hcGNhbiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gNyBbd2hpbGUg bGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0 IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDEzIFtpbmhpYml0LWxvY2Fs LXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMzMgW2J1ZmZlci1saXN0IGxldCogb3IgbGV0IGZp bmQtYnVmZmVyLXZpc2l0aW5nIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFz dC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1 dGUgbmlsIG5pbF0gMTcgW21ha2UtbG9jay1maWxlLW5hbWUgaW5zZXJ0LWZpbGUtY29udGVudHMg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDExIFtvcmctZm9sZC1jb3JlLS1w cm9wZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSAiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZj NjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzEyPiIgbWFwY2FyIG9yZy1mb2xkLWNvcmUtLXBy b3BlcnR5LXN5bWJvbC1nZXQtY3JlYXRlIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBv cmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGlmXSA3IFthbmQgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciB3aGlsZSBhbmQgbGV0KiBv ciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAyNyBbZ2VuZXJhdGUtbmV3LWJ1ZmZl ciBjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSA0MSBbY2FyIHNldC1idWZm ZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXIt dmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwXSAxNiBbZGVsZXRlLWR1cHMgcmVnZXhwLW9wdCBvcmctbWFrZS1vcHRp b25zLXJlZ2V4cCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBvcmctY29sbGVjdC1rZXl3b3JkcyBv cmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1h dXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXRdIDMg W2FiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUt bm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmls IG5pbF0gNiBbZmlsZS1yZW1vdGUtcCBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29r cyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ25dIDMgW3NldC1tYXRj aC1kYXRhICIjPGNvbXBpbGVkIDB4YjRiYTFhMTQ4ZTBhZj4iIGFiYnJldmlhdGUtZmlsZS1uYW1l IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLXN2bi1yZWdpc3RlcmVkIHZj LWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxOTkxOTZjZGI1NTg4NDBjPiIgbWFwYyB2Yy1y ZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0gMyBbaml0LWxv Y2stcmVmb250aWZ5IGppdC1sb2NrLW1vZGUgaml0LWxvY2stcmVnaXN0ZXIgZm9udC1sb2NrLXR1 cm4tb24tdGhpbmctbG9jayBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250LWxvY2stZGVmYXVs dC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQt bG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBy dW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRv LW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGVdIDggW2FkZC1ob29rIGZvbnQtbG9jay10 dXJuLW9uLXRoaW5nLWxvY2sgZm9udC1sb2NrLW1vZGUtaW50ZXJuYWwgZm9udC1sb2NrLWRlZmF1 bHQtZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gNCBbaW5oaWJpdC1sb2Nh bC12YXJpYWJsZXMtcCBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMTcgW3NldC1hdXRv LW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgaGFjay1sb2NhbC12YXJpYWJs ZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0XSAz IFtidWZmZXItbGlzdCBvcmctaW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAyMSBb dGV4dC1tb2RlIG91dGxpbmUtbW9kZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSA2IFtyZWdleHAtb3B0IG9yZy1zZXQtcmVn ZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAzIFtvcmctZmluZC1pbnZpc2libGUtZm9yZWdyb3Vu ZCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSA0IFthbmQgd2hpbGUgbGV0IG9yIGxldCBmaW5kLWJ1 ZmZlci12aXNpdGluZyBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bF0gMTYgW29yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIG9yZy1jb2xsZWN0LWtleXdvcmRzIG9yZy1t YWNyby0tY29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIG9yZy1t b2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldF0gMTQgW29yZy1pbnN0YWxsLWFnZW5kYS1m aWxlcy1tZW51IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDIyIFtnZXQtZmlsZS1idWZmZXIgZmlu ZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1z ZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUg bmlsIG5pbCBuaWwgbmlsIG5pbF0gMTggW2lmIHNhdmUtY3VycmVudC1idWZmZXIgd2hpbGUgYW5k IGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0g NiBbaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZp c2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDMgW2Fu ZCBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlz aXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1s YXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAxOCBbc2V0cSB3aGlsZSBsZXQgb3IgbGV0 IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGUgbmlsXSAxMyBbc2V0cSB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlz aXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gNiBbY2Fy IHNldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVm ZmVyLXZpc2l0aW5nIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhw IGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMTkgW2ZvbnQtbG9jay1zcGVj aWZpZWQtcCBmb250LWxvY2stZGVmYXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9u LWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2st bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUg bGV0IHByb2duXSAzIFtmb250LWxvY2stbW9kZSBmb250LWxvY2stY2hhbmdlLW1vZGUgdGV4dC1t b2RlIG91dGxpbmUtbW9kZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXRdIDQg W3NldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbCBuaWxdIDYgW2FuZCB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZm ZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gNyBb dW5pcXVpZnktcmF0aW9uYWxpemUtY29uZmxpY3Rpbmctc3VibGlzdCB1bmlxdWlmeS1yYXRpb25h bGl6ZS1hLWxpc3QgdW5pcXVpZnktcmF0aW9uYWxpemUgdW5pcXVpZnktcmF0aW9uYWxpemUtZmls ZS1idWZmZXItbmFtZXMgdW5pcXVpZnktLWNyZWF0ZS1maWxlLWJ1ZmZlci1hZHZpY2UgY3JlYXRl LWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlXSAzIFtmb250LWxvY2stdHVybi1vbi10aGluZy1sb2NrIGZvbnQtbG9j ay1tb2RlLWludGVybmFsIGZvbnQtbG9jay1kZWZhdWx0LWZ1bmN0aW9uIGZvbnQtbG9jay1tb2Rl IHR1cm4tb24tZm9udC1sb2NrIHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZv bnQtbG9jay1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBv cmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1 dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTFd IDMgW2NkciBidWZmZXItbGlzdCBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQt ZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA2 IFthZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmls XSAzIFtmaWxlLWF0dHJpYnV0ZXMgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gNCBbaW5oaWJpdC1s b2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0by1tb2RlLTEgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDEwIFtjZHIgYnVmZmVy LWxpc3QgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDMgW2ZpbGUtd3JpdGFibGUtcCBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDMgW29yZy1tYWNyby0t ZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1tYWNyby0tZmluZC1kYXRlIG9yZy1tYWNyby0tY29sbGVj dC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIG9yZy1tb2RlIHNldC1hdXRv LW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgaWYgbGV0IHdoaWxlIGxldF0gOSBbZmlsZS1uYW1lLWRpcmVjdG9yeSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1h bmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDMgW2luaGliaXQtbG9jYWwtdmFyaWFibGVzLXAg c2V0LWF1dG8tbW9kZS0xIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNrLWxvY2Fs LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9n biBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDE5IFtmb3JtYXQgdmMtcG9z c2libGUtbWFzdGVyICIjPGNvbXBpbGVkIC0weDEyOTQ4NGYzNjQyMTNjNTE+IiBtYXBjYXIgdmMt Y2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtcmNzLXJlZ2lz dGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDMzMjMyY2RiNTU4ODQwYz4iIG1h cGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMV0gNCBbZmluZC1hdXRvLWNvZGluZyBz ZWxlY3Qtc2FmZS1jb2Rpbmctc3lzdGVtIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRl ZCBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVs ZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXRdIDYgW2J1ZmZlci1s aXN0IGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGlm IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAzIFtidWZmZXItbGlz dCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDExIFthZGQtaG9vayBm b250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250LWxvY2stZGVmYXVsdC1mdW5jdGlvbiBmb250LWxv Y2stbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFz dC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMyBbZ2xvYmFsLWZv bnQtbG9jay1tb2RlLWNtaGggdGV4dC1tb2RlIG91dGxpbmUtbW9kZSBvcmctbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ25dIDMgW3NldHEgd2hpbGUgYW5kIGxldCogb3IgbGV0 IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGVdIDMgW2xvb2tpbmctYXQgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAzIFtvcmctbWFjcm8taW5pdGlhbGl6 ZS10ZW1wbGF0ZXMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gNyBbZmluZC1maWxlLW5hbWUtaGFu ZGxlciB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3Mg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBp ZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDYgWyIjPGNvbXBpbGVkIDB4YzU3MGZhM2NiYmJmZmNl PiIgYWRkLWhvb2sgaml0LWxvY2stbW9kZSBqaXQtbG9jay1yZWdpc3RlciBmb250LWxvY2stdHVy bi1vbi10aGluZy1sb2NrIGZvbnQtbG9jay1tb2RlLWludGVybmFsIGZvbnQtbG9jay1kZWZhdWx0 LWZ1bmN0aW9uIGZvbnQtbG9jay1tb2RlIHR1cm4tb24tZm9udC1sb2NrIHR1cm4tb24tZm9udC1s b2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZvbnQtbG9jay1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3RdIDQgW2FuZCB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZm ZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxp c3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0g OSBbYWRkLWhvb2sgaml0LWxvY2stcmVnaXN0ZXIgZm9udC1sb2NrLXR1cm4tb24tdGhpbmctbG9j ayBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250LWxvY2stZGVmYXVsdC1mdW5jdGlvbiBmb250 LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVk IGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1v ZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGVdIDMgW2ZvbnQtbG9jay1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAzIFtm b3JtYXQgb3JnLWZvbGQtY29yZS0tcHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQt Y29yZS1hZGQtZm9sZGluZy1zcGVjIG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1p bml0aWFsaXplIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlXSAxNCBbaGFjay1sb2Nh bC12YXJpYWJsZXMtLWZpbmQtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2Rl LWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlz dCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbl0gMjAgW2lm IHNhdmUtY3VycmVudC1idWZmZXIgd2hpbGUgbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGlu ZyBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qt c2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA5IFtlYXN5LW1lbnUt Y29udmVydC1pdGVtIGVhc3ktbWVudS1jcmVhdGUtbWVudSBlYXN5LW1lbnUtY2hhbmdlIG9yZy1p bnN0YWxsLWFnZW5kYS1maWxlcy1tZW51IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxl IGxldF0gNiBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNr LWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMgaGFjay1s b2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNl dC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXRd IDMgW3VuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZl ciBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhl Y3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDYgW2lmIHNhdmUtY3VycmVudC1idWZmZXIgd2hpbGUgYW5k IGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eV0gOSBbZ2xvYmFsLWZvbnQtbG9jay1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBu b3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSA0 IFtvcmctYmFiZWwtcmVzdWx0LWhpZGUtc3BlYyBydW4taG9va3MgYXBwbHkgcnVuLW1vZGUtaG9v a3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNl dC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0XSAzIFtvcmctcGVyc2lzdC0t YWRkLXRvLWluZGV4IG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdp c3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3 aGlsZSBsZXRdIDcgW3NldC1mYWNlLWF0dHJpYnV0ZSBzZXQtZmFjZS1mb3JlZ3JvdW5kIG9yZy1t b2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHBdIDQgW25vdCBhbmQgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5n IGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMTAgW29yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3Bl YyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBz ZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBu b3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ25dIDcgW2hhY2stbG9jYWwtdmFyaWFibGVz LS1maW5kLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1s YXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMjAgW2FkZC1o b29rIGppdC1sb2NrLW1vZGUgaml0LWxvY2stcmVnaXN0ZXIgZm9udC1sb2NrLXR1cm4tb24tdGhp bmctbG9jayBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250LWxvY2stZGVmYXVsdC1mdW5jdGlv biBmb250LWxvY2stbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ25dIDMgW2Zp bmQtYXV0by1jb2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2du IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZl bHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDExIFtzZWFyY2gtZm9yd2FyZCBmaW5kLWF1dG8t Y29kaW5nIHNldC1hdXRvLWNvZGluZyBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1h bmQtZXhlY3V0ZSBuaWxdIDMgW29yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hl LXJlc2V0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlz dCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHBdIDYgW2FkZC1ob29rIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDMgW2FsaXN0LWdldCAi Izxjb21waWxlZCAweGM1NzBmYTNjYmJiZmZjZT4iIGFkZC1ob29rIGZvbnQtbG9jay1tb2RlLWlu dGVybmFsIGZvbnQtbG9jay1kZWZhdWx0LWZ1bmN0aW9uIGZvbnQtbG9jay1tb2RlIHR1cm4tb24t Zm9udC1sb2NrIHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZvbnQtbG9jay1t b2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBz ZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBu b3JtYWwtbW9kZV0gMyBbbm90IGFuZCB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0 aW5nIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFz dC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDQgWyIjPGNvbXBp bGVkIDB4NTIwZmFlNGY1YTA4NWRjPiIgb3JnLWZvbGQtY29yZS1hZGQtZm9sZGluZy1zcGVjIG9y Zy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgaWYgbGV0IHdoaWxlIGxldF0gOSBbYWRkLWhvb2sgb3JnLWZvbGQtY29yZS1pbml0aWFs aXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRv LW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUg bGV0IHByb2duXSAzIFtzZXRxIHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcg ZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFz dC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1 dGVdIDQgWyIjPGNvbXBpbGVkIDB4YjRiYTFhMTQ4ZTBhZj4iIGZpbGVzLS10cmFuc2Zvcm0tZmls ZS1uYW1lIG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxp c3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBj b21tYW5kLWV4ZWN1dGUgbmlsXSAzIFtwcm92aWRlZC1tb2RlLWRlcml2ZWQtcCBkZXJpdmVkLW1v ZGUtcCBvcmctaW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlm IGxldCB3aGlsZSBsZXQgcHJvZ25dIDMgW2NkciBzZXRxIHdoaWxlIGxldCBvciBsZXQgZmluZC1i dWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0g MyBbb3JnLWN5Y2xlLXNldC1zdGFydHVwLXZpc2liaWxpdHkgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBp ZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cF0gMyBbZmlsZS1hdHRyaWJ1dGVzIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZp bmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qt c2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRl IG5pbF0gNiBbbGFzdCBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0LWF1 dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gMyBbZmls ZS10cnVlbmFtZSBmaWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5h bWUgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA3IFt3aGlsZSBhbmQgbGV0KiBvciBsZXQg ZmluZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhl Y3V0ZSBuaWxdIDEyIFtmb250LWxvY2stY29tcGlsZS1rZXl3b3JkIGZvbnQtbG9jay1jb21waWxl LWtleXdvcmRzIGZvbnQtbG9jay1zZXQtZGVmYXVsdHMgZm9udC1sb2NrLW1vZGUtaW50ZXJuYWwg Zm9udC1sb2NrLWRlZmF1bHQtZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxv Y2sgdHVybi1vbi1mb250LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5h YmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRv LW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlXSA2IFtjZHIgc2V0cSB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZp bmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qt c2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDkgWyIjPGNvbXBpbGVk IDB4MTk4MDAzNGFiZDk5PiIgYWRkLWhvb2sgdGV4dC1tb2RlIG91dGxpbmUtbW9kZSBvcmctbW9k ZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXRdIDcgW2Rpci1sb2NhbHMtZmluZC1maWxlIGhh Y2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSAzIFtvcmctZWxlbWVudC0tY2Fj aGUtc2V0dXAtY2hhbmdlLWZ1bmN0aW9ucyBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9k ZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhw XSAzIFtzZWxlY3Qtc2FmZS1jb2Rpbmctc3lzdGVtIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNz b2NpYXRlZCBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNpc3QtcmVnaXN0ZXIg b3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRv LW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGVd IDMgW2NkciBidWZmZXItbGlzdCBvcmctaW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9k ZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ25dIDMgW2NhciBzZXQtYnVmZmVyIHNh dmUtY3VycmVudC1idWZmZXIgd2hpbGUgbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBm aW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHBdIDMgW2NkciBzZXRxIHdoaWxlIGFuZCBsZXQqIG9yIGxldCBm aW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDMgW3N0cmluZy1wcmVm aXgtcCBjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSA0IFtvcmctc2V0dXAt ZmlsbGluZyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxp c3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAzIFtyZWdleHAtb3B0LWdyb3VwIHJlZ2V4 cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQt Z3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgb3JnLW1h a2Utb3B0aW9ucy1yZWdleHAgb3JnLS1jb2xsZWN0LWtleXdvcmRzLTEgb3JnLWNvbGxlY3Qta2V5 d29yZHMgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlXSAzIFtub3QgYW5kIHdo aWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBpZiBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHldIDMgW2V4cGFuZC1maWxlLW5hbWUgdmMtY3ZzLXJlZ2lzdGVyZWQgdmMtY2FsbC1i YWNrZW5kICIjPGNvbXBpbGVkIC0weGNiNGZhY2RiNTU4ODQwYz4iIG1hcGMgdmMtcmVnaXN0ZXJl ZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldF0g MyBbc2V0LWF1dG8tbW9kZS0xIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNrLWxv Y2FsLXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5XSAzIFtjYXIgc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVmZmVyIHdoaWxlIGFuZCBs ZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMyBbbGV0KiBvciBsZXQgZmluZC1i dWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMyBbc2VxLWZpbmQgb3JnLWNpdGUtZ2V0LXByb2Nl c3NvciBvcmctY2l0ZS10cnktbG9hZC1wcm9jZXNzb3Igb3JnLXNldC1mb250LWxvY2stZGVmYXVs dHMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNl dC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0XSAzIFtvcmctY2l0ZS1nZXQt cHJvY2Vzc29yIG9yZy1jaXRlLXRyeS1sb2FkLXByb2Nlc3NvciBvcmctc2V0LWZvbnQtbG9jay1k ZWZhdWx0cyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxp c3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ25dIDcgW2Zv cm1hdC1kZWNvZGUgaW5zZXJ0LWZpbGUtY29udGVudHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1z ZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUg bmlsIG5pbCBuaWxdIDMgW2ppdC1sb2NrLWNvbnRleHQtZm9udGlmeSAiIzxzdWJyIEY2MTZlNmY2 ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzk+IiBhcHBseSB0aW1l ci1ldmVudC1oYW5kbGVyIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsXSAxNCBbcmVkaXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgY29tcGxldGlu Zy1yZWFkLWRlZmF1bHQgcmVhZC1leHRlbmRlZC1jb21tYW5kLTEgcmVhZC1leHRlbmRlZC1jb21t YW5kIGJ5dGUtY29kZSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsXSAxMSBbdHJ5LWNvbXBsZXRpb24gY29tcGxldGUtd2l0aC1hY3Rpb24gIiM8 c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV81 ND4iIGNvbXBsZXRpb24tYmFzaWMtdHJ5LWNvbXBsZXRpb24gIiM8Y29tcGlsZWQgMHgxZjg0NWIw OTdjZTFlYjA0PiIgY29tcGxldGlvbi0tc29tZSBjb21wbGV0aW9uLS1udGgtY29tcGxldGlvbiBj b21wbGV0aW9uLXRyeS1jb21wbGV0aW9uIGNvbXBsZXRpb24tLWRvLWNvbXBsZXRpb24gY29tcGxl dGlvbi0taW4tcmVnaW9uLTEgIiM8Y29tcGlsZWQgLTB4MTQyNjg3OGQ5ZDAxNjRiNz4iIGFwcGx5 ICIjPGNvbXBpbGVkIC0weGY1MjJmNzA3MTllOWEyPiIgY29tcGxldGlvbi0taW4tcmVnaW9uIGNv bXBsZXRpb24taW4tcmVnaW9uIG1pbmlidWZmZXItY29tcGxldGVdIDE4IFtjb21wbGV0aW5nLXJl YWQtZGVmYXVsdCByZWFkLWV4dGVuZGVkLWNvbW1hbmQtMSByZWFkLWV4dGVuZGVkLWNvbW1hbmQg Ynl0ZS1jb2RlIGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsXSA3IFtzZWxmLWluc2VydC1jb21tYW5kIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgY29tcGxldGluZy1yZWFkLWRlZmF1bHQgcmVhZC1leHRlbmRlZC1j b21tYW5kLTEgcmVhZC1leHRlbmRlZC1jb21tYW5kIGJ5dGUtY29kZSBjb21tYW5kLWV4ZWN1dGUg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMSBbQXV0b21hdGljXCBHQyBuaWxdIDIw OTYgW3Byb2ZpbGVyLXJlcG9ydCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRl IGV4ZWN1dGUtZXh0ZW5kZWQtY29tbWFuZCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1l eGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gNikpICgyNTg3 NCA1MzE3OCAyMzAyNTAgNDc2MDAwKSBuaWxdCg== --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=cpu-profile-get-file-buffer Content-Transfer-Encoding: base64 Cltwcm9maWxlci1wcm9maWxlICIyOC4xIiBjcHUgI3MoaGFzaC10YWJsZSBzaXplIDMyNSB0ZXN0 IGVxdWFsIHJlaGFzaC1zaXplIDEuNSByZWhhc2gtdGhyZXNob2xkIDAuODEyNSBkYXRhIChbcmVk aXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDE2IFtuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDUgW2ZyYW1l LXBhcmFtZXRlciBpZiBldmFsIHJlZGlzcGxheV9pbnRlcm5hbFwgXChDXCBmdW5jdGlvblwpIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAzIFtmdW5jdGlv bi1nZXQgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwg ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGVdIDEgW2ZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxp c3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBj b21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMTYgW29yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQt YXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duXSAyMyBbcmVxdWlyZSBieXRl LWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRv LW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQqIGlmXSAxNyBbcmVxdWlyZSBieXRlLWNvZGUgb3JnLW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZV0gMTkgW2F1dG9sb2FkIGxv YWQgcmVxdWlyZSBieXRlLWNvZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1v ZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQqIGlmXSAzIFttYWtlLXRlbXAtZmlsZSBieXRlLWNvZGUgZGVmdmFyIHJlcXVpcmUg Ynl0ZS1jb2RlIG9yZy1iYWJlbC1kby1sb2FkLWxhbmd1YWdlcyBjdXN0b20taW5pdGlhbGl6ZS1y ZXNldCBjdXN0b20tZGVjbGFyZS12YXJpYWJsZSBieXRlLWNvZGUgb3JnLW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xXSAzIFtyZXF1aXJlIGJ5dGUt Y29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSBvcmctbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IHByb2duIHVud2luZC1wcm90ZWN0XSA0IFtyZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQt Z3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAg cmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhw LW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1n cm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCBy ZWdleHAtb3B0LWdyb3VwXSAzIFtyZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1v ZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZV0gOSBb cmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1 bGVzLW1heWJlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3RdIDIyIFtr ZXktcGFyc2Uga2V5bWFwLXNldCBkZWZpbmUta2V5bWFwIGJ5dGUtY29kZSBkZWZ2YXIgcmVxdWly ZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMV0gMyBbbWFrZS1jbG9z dXJlIGtleS12YWxpZC1wIGtleW1hcC0tY2hlY2sga2V5bWFwLXNldCBkZWZpbmUta2V5bWFwIGJ5 dGUtY29kZSBkZWZ2YXIgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWly ZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdF0gMyBba2V5LXBhcnNlIGtleW1hcC1zZXQgZGVmaW5lLWtleW1h cCBieXRlLWNvZGUgZGVmdmFyIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJl cXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZV0gMyBbdG9v bC1iYXItbG9jYWwtaXRlbS1mcm9tLW1lbnUgYnl0ZS1jb2RlIGRlZnZhciByZXF1aXJlIGJ5dGUt Y29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBw cm9nbl0gMyBbcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJl IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZl0gNyBbcmVx dWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWly ZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3RdIDE3IFtyZXF1aXJl IGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5 dGUtY29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlXSA5IFtjbC0tcGxpc3QtdG8tYWxpc3QgY2wtc3RydWN0LWRlZmlu ZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBv cmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1t b2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMV0gNCBbcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRl LWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNv ZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlXSAxMyBbcmVxdWlyZSBi eXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRl LWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9h ZC1tb2R1bGVzLW1heWJlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMF0gMTcgW3JlcXVpcmUgYnl0 ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1j b2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2Rl IHJlcXVpcmUgYnl0ZS1jb2RlXSAxNyBbcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNv ZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUg cmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1 bGVzLW1heWJlXSA5IFtjdXN0b20tYWRkLW9wdGlvbiByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJl IGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5 dGUtY29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSA0IFttYWtlLWJ5dGUtY29kZSBieXRl LWNvbXBpbGUtbGFtYmRhIGJ5dGUtY29tcGlsZS1mdW5jdGlvbi1mb3JtIGJ5dGUtY29tcGlsZS1m b3JtIGJ5dGUtY29tcGlsZS10b3AtbGV2ZWwgIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2 YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV80OT4iIGJ5dGUtY29tcGlsZSBjbC0tZ2VuZXJp Yy1nZXQtZGlzcGF0Y2hlciBjbC0tZ2VuZXJpYy1tYWtlLW5leHQtZnVuY3Rpb24gY2wtLWdlbmVy aWMtbWFrZS1mdW5jdGlvbiBjbC1nZW5lcmljLWRlZmluZS1tZXRob2QgYnl0ZS1jb2RlIHJlcXVp cmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlXSAzIFtjY29udi1jb252ZXJ0IGNjb252LWNv bnZlcnQgIiM8Y29tcGlsZWQgMHgxZTM3YmRlZjVhNWZmNmQwPiIgY2NvbnYtLWNvbnZlcnQtZnVu Y2JvZHkgY2NvbnYtLWNvbnZlcnQtZnVuY3Rpb24gY2NvbnYtY29udmVydCBjY29udi1jbG9zdXJl LWNvbnZlcnQgYnl0ZS1jb21waWxlLXByZXByb2Nlc3MgIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3 NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV80OT4iIGJ5dGUtY29tcGlsZSBjbC0t Z2VuZXJpYy1nZXQtZGlzcGF0Y2hlciBjbC0tZ2VuZXJpYy1tYWtlLW5leHQtZnVuY3Rpb24gY2wt LWdlbmVyaWMtbWFrZS1mdW5jdGlvbiBjbC1nZW5lcmljLWRlZmluZS1tZXRob2QgYnl0ZS1jb2Rl IHJlcXVpcmVdIDMgW2J5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIG9yZy1sb2Fk LW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQqXSA0IFtvcmctZm9sZC1jb3JlLS1wcm9wZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSBvcmctZm9s ZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xk LWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQq IGlmXSAxNiBbb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXRdIDEwIFtyZXF1aXJlIGJ5dGUt Y29kZSBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVu d2luZC1wcm90ZWN0IGxldCogaWYgbGV0XSAzIFtyZWdleHAtb3B0LWNoYXJzZXQgcmVnZXhwLW9w dC1ncm91cCByZWdleHAtb3B0IHJ4LS10cmFuc2xhdGUtb3IgcngtLXRyYW5zbGF0ZS1mb3JtIHJ4 LS10cmFuc2xhdGUgcngtLXRyYW5zbGF0ZS1zZXEgcngtLXRyYW5zbGF0ZS1yZXAgcngtLXRyYW5z bGF0ZS1mb3JtIHJ4LS10cmFuc2xhdGUgcngtLXRyYW5zbGF0ZS1zZXEgcngtLXRyYW5zbGF0ZS1y ZXAgcngtLXRyYW5zbGF0ZS1mb3JtIHJ4LS10cmFuc2xhdGUgcngtLXRyYW5zbGF0ZS1zZXEgcngt LXRyYW5zbGF0ZS1mb3JtXSAzIFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0LWxvY2Fs LXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxp bmUgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVu d2luZC1wcm90ZWN0IGxldCogaWYgbGV0IHdoaWxlXSAxMCBbZGlyLWxvY2Fscy0tYWxsLWZpbGVz IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9j YWwtLWdldC12YXJpYWJsZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFy aWFibGVzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1t b2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ25dIDUzIFthYmJy ZXZpYXRlLWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1z dm4tcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHgyN2FjYWNkOTQ3ZWJi ZjQ+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1o b29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IHByb2duIHVud2luZC1wcm90ZWN0XSA0MyBbdW5pcXVpZnktcmF0aW9uYWxpemUtZmlsZS1i dWZmZXItbmFtZXMgdW5pcXVpZnktLWNyZWF0ZS1maWxlLWJ1ZmZlci1hZHZpY2UgY3JlYXRlLWZp bGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlm IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDc1MiBbb3V0bGluZS1tb2Rl IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hp bGUgbGV0XSAxMCBbZm9ybWF0IG9yZy1tYWNyby0tZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1tYWNy by0tZmluZC1kYXRlIG9yZy1tYWNyby0tY29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxp emUtdGVtcGxhdGVzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 Kl0gMyBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMtc3ZuLXJlZ2lzdGVy ZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4MjE3NTJjZDk0N2ViYmY0PiIgbWFwYyB2 Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQqXSA1MiBbZ2V0LWZpbGUtYnVmZmVyIGFuZCBsZXQqIGZpbmQtYnVm ZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQq IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMTkgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIHNl dC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFz dC1zZXhwXSA2IFtvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBvcmctY29sbGVjdC1rZXl3b3JkcyBv cmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBv cmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1 dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWZdIDI3IFt2Yy1m aW5kLXJvb3QgdmMtc3ZuLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4 MjRiMzJjZDk0N2ViYmY0PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVz aC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmXSAzIFthZGQtaG9v ayBvdXRsaW5lLW1vZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQqIGlmIGxldCB3aGlsZV0gMyBbb3JnLXNldHVwLWZpbGxpbmcgb3JnLW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXRdIDMgW29yZy0tY29s bGVjdC1rZXl3b3Jkcy0xIG9yZy1jb2xsZWN0LWtleXdvcmRzIG9yZy1zZXQtcmVnZXhwcy1hbmQt b3B0aW9ucyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxp c3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYg bGV0XSA0MiBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMtaGctcmVnaXN0 ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHgzZDhlZWNkOTQ3ZWJiZjQ+IiBtYXBj IHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2du IHVud2luZC1wcm90ZWN0IGxldCpdIDU1IFtpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1h dXRvLW1vZGUtMSBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gMTYgW3Jl Z2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0IG9yZy1tYWtlLW9wdGlv bnMtcmVnZXhwIG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIG9yZy1jb2xsZWN0LWtleXdvcmRzIG9y Zy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duXSA5IFtk aXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRp ci1sb2NhbC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3Jn LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSAxMCBbZmlsZS10cnVl bmFtZSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5j YWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDI0IFtmaWxlLXJlbW90 ZS1wIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwXSAxMCBbZGVsZXRlLWR1cHMgb3JnLWZvbGQtY29yZS0tcHJvcGVydHkt c3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQtY29yZS1hZGQtZm9sZGluZy1zcGVjIG9yZy1mb2xk LWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1tb2RlIHNldC1hdXRvLW1v ZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0Kl0gMTAgW2ZpbGUtZXhpc3RzLXAgIiM8Y29tcGlsZWQg MHg0NWEyOWIyNTdkZWMzYWY+IiBtYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1k ZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc2Njcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxj b21waWxlZCAweDI0MTYyY2Q5NDdlYmJmND4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5k IHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3RdIDE2IFtmaWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5h bWUgZmlsZS10cnVlbmFtZSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA4IFthZnRlci1p bnNlcnQtZmlsZS1zZXQtY29kaW5nIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxl dCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDMgW3VuaXF1aWZ5LS1jcmVhdGUt ZmlsZS1idWZmZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3Qg cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbF0gMTAgW2luaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDQ1IFtvcmctaWQtdXVp ZCBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVs ZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIGlmXSAyOCBbaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBoYWNrLWxvY2FsLXZhcmlh YmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9k ZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90 ZWN0IGxldCogaWYgbGV0XSA0MCBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3Qg dmMtYnpyLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4MmExZDJjZDk0 N2ViYmY0PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBy dW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSA1NiBbY2NvbnYtYW5hbHl6ZS1mb3Jt IGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29u di1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBpZiBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA0IFtnZW5lcmF0ZS1uZXctYnVmZmVyIGNyZWF0ZS1m aWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBp ZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMjMgW2V4cGFuZC1m aWxlLW5hbWUgdmMtY3ZzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4 MmQ2NjZjZDk0N2ViYmY0PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVz aC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmXSA3IFtzdHJpbmct bWF0Y2ggYXNzb2MtZGVmYXVsdCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hpbGUgbGV0 IHByb2duXSAyNiBbZm9ybWF0IG9yZy1mb2xkLWNvcmUtLXByb3BlcnR5LXN5bWJvbC1nZXQtY3Jl YXRlIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxp emUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1w cm90ZWN0IGxldCpdIDE3IFtvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0 LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXRdIDEzIFtm aWxlLXdyaXRhYmxlLXAgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDQgW2Rpci1sb2NhbHMtLWFsbC1maWxlcyBsb2NhdGUt ZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxvY2FsLS1nZXQt dmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQqIGlmIGxldCB3aGlsZSBsZXRdIDQ4IFthbGlzdC1nZXQgb3JnLWZvbGQtY29yZS1nZXQtZm9s ZGluZy1zcGVjLWZyb20tYWxpYXMgb3JnLWZvbGQtY29yZS1zZXQtZm9sZGluZy1zcGVjLXByb3Bl cnR5ICIjPGNvbXBpbGVkIC0weDQyNmUzN2MxNTBkNDkyMT4iIG9yZy1mb2xkLWNvcmUtYWRkLWZv bGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBv cmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1 dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IHByb2duXSA2IFtzdHJpbmctbWF0Y2ggb3JnLWZvbGQtY29yZS0t cHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQtY29yZS1hZGQtZm9sZGluZy1zcGVj IG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0Kl0gMjAgW2xvY2F0ZS1kb21pbmF0aW5n LWZpbGUgdmMtZmluZC1yb290IHZjLWdpdC1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxj b21waWxlZCAweDQwZDJlY2Q5NDdlYmJmND4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5k IHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0Kl0gNDEg W2FkZC1ob29rIGZvbnQtbG9jay10dXJuLW9uLXRoaW5nLWxvY2sgZm9udC1sb2NrLW1vZGUtaW50 ZXJuYWwgZm9udC1sb2NrLWRlZmF1bHQtZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXRdIDQgW2ZpbGUtbmFt ZS1kaXJlY3RvcnkgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVy ZWQgdmMtc3JjLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4NGYzNTJj ZDk0N2ViYmY0PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0 ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMyBbYWJicmV2aWF0ZS1maWxlLW5hbWUg bG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMtYnpyLXJlZ2lzdGVyZWQgdmMt Y2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4NGZlMGFjZDk0N2ViYmY0PiIgbWFwYyB2Yy1yZWdp c3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQt cHJvdGVjdF0gMjIgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUg dmMtZmluZC1yb290IHZjLWhnLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVk IDB4NGY0NWFjZDk0N2ViYmY0PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVm cmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMTkgW2Njb252LS1hbmFs eXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVy cHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbF0gNyBbZXhwYW5kLWZpbGUtbmFtZSB2Yy1yZWZyZXNoLXN0YXRlIHJ1 bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDQgW2lmIGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAzIFtn ZXQtZmlsZS1idWZmZXIgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMjMgW2luaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0 LWF1dG8tbW9kZS0xIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNrLWxvY2FsLXZh cmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1w cm90ZWN0IGxldCpdIDM2IFtzZXQtZmFjZS1leHRlbmQgIiM8Y29tcGlsZWQgLTB4MTQxNTFlY2Uy OGMxOWI4ZT4iIG9yZy0tc2V0LWZhY2VzLWV4dGVuZCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2du IHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0XSA0IFtyZS1zZWFyY2gtZm9yd2FyZCBvcmctbWFj cm8tLWZpbmQta2V5d29yZC12YWx1ZSBvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNy by1pbml0aWFsaXplLXRlbXBsYXRlcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1w cm90ZWN0IGxldCogaWZdIDMgW2F1dG8tY29kaW5nLXJlZ2V4cC1hbGlzdC1sb29rdXAgZmluZC1h dXRvLWNvZGluZyBzZWxlY3Qtc2FmZS1jb2Rpbmctc3lzdGVtIG9yZy1wZXJzaXN0LS1ub3JtYWxp emUtYXNzb2NpYXRlZCBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNpc3QtcmVn aXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNl dC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbl0g OCBbIiM8Y29tcGlsZWQgLTB4MTM2Nzg1OTEyMGY2MTQ5OT4iICIjPGNvbXBpbGVkIDB4OWRmY2Vm MmM3Y2ZkMTJlPiIgbWFwYyBzZXEtZG8gc2VxLWZpbmQgb3JnLWNpdGUtZ2V0LXByb2Nlc3NvciBv cmctY2l0ZS10cnktbG9hZC1wcm9jZXNzb3Igb3JnLXNldC1mb250LWxvY2stZGVmYXVsdHMgb3Jn LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdF0gMyBbZmlsZS1yZW1vdGUtcCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBp ZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gMTMgW3JlZ2V4cC1v cHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0IG9yZy1tYWtlLW9wdGlvbnMtcmVn ZXhwIG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIG9yZy1jb2xsZWN0LWtleXdvcmRzIG9yZy1tYWNy by0tY29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3RdIDMgW2ZpbGUtbmV3ZXItdGhhbi1maWxlLXAgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwt bGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDEwIFt1bmlx dWlmeS1yYXRpb25hbGl6ZSB1bmlxdWlmeS1yYXRpb25hbGl6ZS1maWxlLWJ1ZmZlci1uYW1lcyB1 bmlxdWlmeS0tY3JlYXRlLWZpbGUtYnVmZmVyLWFkdmljZSBjcmVhdGUtZmlsZS1idWZmZXIgZmlu ZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5XSA2IFtmaWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUgZmluZC1maWxlLW5vc2Vs ZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZSBuaWxdIDEyIFtvcmctbWFjcm8tLWZpbmQta2V5d29yZC12YWx1ZSBvcmct bWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8t bW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0XSA5MSBbb3Jn LXBlcnNpc3QtcmVhZCBvcmctcGVyc2lzdC1sb2FkIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBz ZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hpbGVdIDEwIFtvcmctaW5zdGFsbC1hZ2VuZGEt ZmlsZXMtbWVudSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCog aWYgbGV0IHdoaWxlIGxldF0gMTUgW2Rpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxvY2Fs LS1nZXQtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSA3 IFt2Yy1wb3NzaWJsZS1tYXN0ZXIgIiM8Y29tcGlsZWQgMHgxZDdjYzVmMjU3ZGVjM2FmPiIgbWFw Y2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXJj cy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweDUyYWEyY2Q5NDdlYmJm ND4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhv b2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3RdIDMgW3NlYXJjaC1mb3J3YXJkIGZpbmQtYXV0by1jb2Rpbmcgc2VsZWN0LXNhZmUtY29kaW5n LXN5c3RlbSBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgb3JnLXBlcnNpc3QtLWdl dC1jb2xsZWN0aW9uIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0 IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ25dIDQgW2FkZC10by1saXN0IGdsb2JhbC1mb250LWxv Y2stbW9kZS1jbWhoIHRleHQtbW9kZSBvdXRsaW5lLW1vZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmXSAzIFthZGQtaG9vayBmb250LWxvY2stbW9kZSB0 dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250 LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZV0gNyBbZm9udC1sb2NrLXR1cm4tb24tdGhp bmctbG9jayBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250LWxvY2stZGVmYXVsdC1mdW5jdGlv biBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1k ZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mg cnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xXSA3IFtpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIGhhY2stbG9jYWwt dmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQqIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAxMCBbdmMt ZmlsZS1zZXRwcm9wIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1 bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0IHdoaWxlIGxldCBwcm9nbl0g OSBbdmMtZmlsZS1jbGVhcnByb3BzIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qt c2V4cCBldmFsLWxhc3Qtc2V4cF0gMjEgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGluaGliaXQt bG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1w cm90ZWN0IGxldCogaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBd IDQgW29yZy1iYWJlbC1oaWRlLWFsbC1oYXNoZXMgcnVuLWhvb2tzIGFwcGx5IHJ1bi1tb2RlLWhv b2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZl0gMjYg W3NnbWwtaHRtbC1tZXRhLWF1dG8tY29kaW5nLWZ1bmN0aW9uIGZpbmQtYXV0by1jb2Rpbmcgc2V0 LWF1dG8tY29kaW5nIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAxNyBbY2NvbnYt bWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogaWYgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDYgW29yZy1wZXJzaXN0LS1u b3JtYWxpemUtYXNzb2NpYXRlZCBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNp c3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmXSAyOCBbZmlsZS1uYW1lLWRpcmVjdG9yeSB2Yy1j aGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1zY2NzLXJlZ2lz dGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4MWY2ZDg5OWIwNTA0MDUxZT4iIG1h cGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJv Z24gdW53aW5kLXByb3RlY3RdIDMgW29yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8t bW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0IHdoaWxlIGxl dF0gMjYgW2dldC1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXBy b3RlY3QgbGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWxdIDIzIFtvcmctZm9sZC1jb3JlLXNldC1mb2xkaW5nLXNwZWMtcHJvcGVydHkgIiM8Y29tcGls ZWQgLTB4NDI2ZTM2N2E5NzYwOTIxPiIgb3JnLWZvbGQtY29yZS1hZGQtZm9sZGluZy1zcGVjIG9y Zy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0Kl0gNiBbYXV0by1jb2RpbmctYWxpc3QtbG9v a3VwIGZpbmQtYXV0by1jb2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2VydC1maWxlLWNvbnRlbnRz IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwXSAyOSBbY3VycmVudC1hY3RpdmUtbWFwcyBlYXN5LW1lbnUtZ2V0LW1hcCBl YXN5LW1lbnUtYWRkLWl0ZW0gZWFzeS1tZW51LWNoYW5nZSBvcmctaW5zdGFsbC1hZ2VuZGEtZmls ZXMtbWVudSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxp c3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCpdIDMg WyIjPGNvbXBpbGVkIC0weDQyNmUzNjc5NWMwODkyMT4iIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRp bmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8t bW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWZdIDQgW2ZpbGVzLS10 cmFuc2Zvcm0tZmlsZS1uYW1lIG1ha2UtbG9jay1maWxlLW5hbWUgaW5zZXJ0LWZpbGUtY29udGVu dHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1w cm90ZWN0IGxldCogaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSA2IFtoYWNrLWxvY2FsLXZhcmlh Ymxlcy0tZmluZC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mg b3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldF0gOSBb c2V0LWF1dG8tbW9kZS0xIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNrLWxvY2Fs LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duXSA3IFthdXRvLWNvZGluZy1hbGlzdC1sb29rdXAg ZmluZC1hdXRvLWNvZGluZyBzZWxlY3Qtc2FmZS1jb2Rpbmctc3lzdGVtIG9yZy1wZXJzaXN0LS1u b3JtYWxpemUtYXNzb2NpYXRlZCBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNp c3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBw cm9nbl0gNDEgW29yZy1hc3NpZ24tZmFzdC1rZXlzIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9u cyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0IHdo aWxlXSAxNSBbZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVz IHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1zY2NzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5k ICIjPGNvbXBpbGVkIDB4NmQyYjJjZDk0N2ViYmY0PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJh Y2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gNyBb YWJicmV2aWF0ZS1maWxlLW5hbWUgbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3Qg dmMtZ2l0LXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4NmNjY2FjZDk0 N2ViYmY0PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBy dW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMjggW29yZy1tYWNyby0tZmluZC1rZXl3b3Jk LXZhbHVlIG9yZy1tYWNyby0tZmluZC1kYXRlIG9yZy1tYWNyby0tY29sbGVjdC1tYWNyb3Mgb3Jn LW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQt YXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0KiBpZl0gMTQgW2ZvbnQtbG9jay1tb2RlIHR1cm4tb24tZm9udC1sb2Nr IHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZvbnQtbG9jay1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxl dCogaWYgbGV0IHdoaWxlIGxldF0gNCBbZmluZC1maWxlLW5hbWUtaGFuZGxlciBtYWtlLWF1dG8t c2F2ZS1maWxlLW5hbWUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseV0gMyBbaW5zZXJ0LWZpbGUtY29udGVudHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDM0IFtmb3JtYXQgdmMtcG9zc2libGUtbWFz dGVyICIjPGNvbXBpbGVkIDB4NTI2MDYyNjU3ZGVjM2FmPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rl ci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNyYy1yZWdpc3RlcmVkIHZjLWNh bGwtYmFja2VuZCAiIzxjb21waWxlZCAweDY0MTdlY2Q5NDdlYmJmND4iIG1hcGMgdmMtcmVnaXN0 ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMV0gMyBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSBkaXItbG9j YWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRpci1sb2Nh bC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUg c2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMTMgW2FiYnJldmlhdGUtZmlsZS1uYW1l IGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gNDAgW2ZpbGUtbmFtZS1zYW5z LXZlcnNpb25zIGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9kZS0xIHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGls ZSBsZXQgcHJvZ25dIDYgW2dldGVudiB2Yy1zY2NzLXNlYXJjaC1wcm9qZWN0LWRpciB2Yy1wb3Nz aWJsZS1tYXN0ZXIgIiM8Y29tcGlsZWQgMHgxYzBhN2JhMjU3ZGVjM2FmPiIgbWFwY2FyIHZjLWNo ZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNjY3MtcmVnaXN0 ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHg3MDk5MmNkOTQ3ZWJiZjQ+IiBtYXBj IHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRl ci1maW5kLWZpbGVdIDQgW29yZy1mb2xkLWNvcmUtZ2V0LWZvbGRpbmctc3BlYy1mcm9tLWFsaWFz IG9yZy1mb2xkLWNvcmUtc2V0LWZvbGRpbmctc3BlYy1wcm9wZXJ0eSAiIzxjb21waWxlZCAtMHg0 MjZlMzdjMTU2Nzg5MjE+IiBvcmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQt Y29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBw cm9nbiB1bndpbmQtcHJvdGVjdF0gNCBbaW50ZXJuIG9yZy1mb2xkLWNvcmUtLXByb3BlcnR5LXN5 bWJvbC1nZXQtY3JlYXRlIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1j b3JlLWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHBy b2duIHVud2luZC1wcm90ZWN0IGxldCpdIDMgW3JlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1n cm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCBy ZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAgb3JnLS1j b2xsZWN0LWtleXdvcmRzLTEgb3JnLWNvbGxlY3Qta2V5d29yZHMgb3JnLXNldC1yZWdleHBzLWFu ZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlXSA3IFtvcmctc2V0LWZvbnQtbG9jay1kZWZh dWx0cyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0 IHdoaWxlIGxldF0gMTcgW29yZy1wZXJzaXN0LS1yZW1vdmUtZnJvbS1pbmRleCBvcmctcGVyc2lz dC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHBy b2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0XSAxNyBbZmlsZS1uYW1lLXNhbnMtdmVyc2lv bnMgaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9k ZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxp c3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWZd IDE5IFtvcmctLXNldC1mYWNlcy1leHRlbmQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1h dXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXRdIDQgW29yZy1wZXJzaXN0LS1ub3JtYWxp emUtY29udGFpbmVyIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdp c3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVu d2luZC1wcm90ZWN0IGxldCogaWZdIDMgW2NyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9z ZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDMgWyIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJk NmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMTQ+IiBtYXBjYXIgb3JnLWZvbGQtY29yZS0t cHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQtY29yZS1hZGQtZm9sZGluZy1zcGVj IG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3RdIDQgW3NldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlm IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw XSA0NCBbZXhwYW5kLWZpbGUtbmFtZSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXBy b3RlY3QgbGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWxdIDExIFtvcmctZm9sZC1jb3JlLS1wcm9wZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSAiIzxzdWJy IEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzEyPiIg bWFwY2FyIG9yZy1mb2xkLWNvcmUtLXByb3BlcnR5LXN5bWJvbC1nZXQtY3JlYXRlIG9yZy1mb2xk LWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQt aW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duXSAzIFtoYWNrLWxvY2FsLXZhcmlh Ymxlcy1maWx0ZXIgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUg c2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldF0gMyBbb3JnLWZvbGQt Y29yZS0taXNlYXJjaC1zZXR1cCBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQtaW5p dGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxp c3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYg bGV0XSA0IFt2Yy1tYWtlLWJhY2tlbmQtc3ltIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1yY3Mt cmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHg0ODRmMmNkOTQ3ZWJiZjQ+ IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29r cyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IHByb2duIHVud2luZC1wcm90ZWN0IGxldCpdIDQgW3NldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2Fs LXZhcmlhYmxlcy1wcm9wLWxpbmUgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mg b3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmXSA0IFthZGQt aG9vayBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0 IHdoaWxlIGxldF0gMyBbZmlsZS1tb2RlcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0 IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMyBbcmV2ZXJzZSByZWdleHAtb3B0 LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4 cCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBvcmctY29sbGVjdC1rZXl3b3JkcyBvcmctc2V0LXJl Z2V4cHMtYW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0gMyBbbWFwY2FyIHZjLWNoZWNr LW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNjY3MtcmVnaXN0ZXJl ZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHhiMjU3ZWNkOTQ3ZWJiZjQ+IiBtYXBjIHZj LXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVu d2luZC1wcm90ZWN0XSAzIFtzZWxlY3Qtc2FmZS1jb2Rpbmctc3lzdGVtIG9yZy1wZXJzaXN0LS1u b3JtYWxpemUtYXNzb2NpYXRlZCBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNp c3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSA0IFtiYWNrdXAtZmlsZS1uYW1lLXAgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1z ZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVd IDMgW2FkZC1ob29rIG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXpl IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXRdIDMg W2NkciB1bmlxdWlmeS1yYXRpb25hbGl6ZS1maWxlLWJ1ZmZlci1uYW1lcyB1bmlxdWlmeS0tY3Jl YXRlLWZpbGUtYnVmZmVyLWFkdmljZSBjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2Vs ZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSA3 IFsiIzxjb21waWxlZCAweDE5ODAwODU3MWQ0OT4iIGFkZC1ob29rIG9yZy1lbGVtZW50LS1jYWNo ZS1zZXR1cC1jaGFuZ2UtZnVuY3Rpb25zIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZl0gMyBbcmVnZXhwLW9wdC1n cm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCBy ZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAt b3B0LWdyb3VwIHJlZ2V4cC1vcHQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAgb3JnLS1jb2xsZWN0 LWtleXdvcmRzLTEgb3JnLWNvbGxlY3Qta2V5d29yZHMgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRp b25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdF0g NyBbdmMtbWFrZS1iYWNrZW5kLXN5bSB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc2Njcy1yZWdp c3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweGI0YTIyY2Q5NDdlYmJmND4iIG1h cGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0Kl0gNiBbIiM8Y29tcGlsZWQgMHhiNTEwODVhZjMyMGFmPiIg ZmlsZXMtLXRyYW5zZm9ybS1maWxlLW5hbWUgbWFrZS1sb2NrLWZpbGUtbmFtZSBpbnNlcnQtZmls ZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gNCBbc2V0LWZhY2UtYXR0cmlidXRlIHNldC1mYWNlLWV4 dGVuZCAiIzxjb21waWxlZCAtMHgxNDE1MWVjZTI4YzE3ZjhlPiIgb3JnLS1zZXQtZmFjZXMtZXh0 ZW5kIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZl0gMyBb YWJicmV2aWF0ZS1maWxlLW5hbWUgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBkaXItbG9jYWxzLWZp bmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hpbGUgbGV0XSAzOCBbaml0 LWxvY2stcmVmb250aWZ5IGppdC1sb2NrLW1vZGUgaml0LWxvY2stcmVnaXN0ZXIgZm9udC1sb2Nr LXR1cm4tb24tdGhpbmctbG9jayBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250LWxvY2stZGVm YXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZv bnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVy cyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1h dXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGVdIDQgW2FsaXN0LWdldCBvcmctZm9s ZC1jb3JlLWdldC1mb2xkaW5nLXNwZWMtZnJvbS1hbGlhcyAiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2 Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzE0PiIgbWFwY2FyIG9yZy1mb2xk LWNvcmUtLXByb3BlcnR5LXN5bWJvbC1nZXQtY3JlYXRlIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRp bmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8t bW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0XSA0IFt1cGNhc2Ugb3JnLWNvbGxlY3Qta2V5d29yZHMgb3JnLXNldC1y ZWdleHBzLWFuZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2Rl LS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0KiBpZiBsZXRdIDMgW2ZpbmQtYXV0by1jb2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2Vy dC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMjQgW2Fk dmljZS0tY2FsbGVkLWludGVyYWN0aXZlbHktc2tpcCBjYWxsZWQtaW50ZXJhY3RpdmVseS1wIGZv bnQtbG9jay1tb2RlIGZvbnQtbG9jay1jaGFuZ2UtbW9kZSB0ZXh0LW1vZGUgb3V0bGluZS1tb2Rl IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3RdIDQgW3VuaXF1aWZ5LXJh dGlvbmFsaXplLWNvbmZsaWN0aW5nLXN1Ymxpc3QgdW5pcXVpZnktcmF0aW9uYWxpemUtYS1saXN0 IHVuaXF1aWZ5LXJhdGlvbmFsaXplIHVuaXF1aWZ5LXJhdGlvbmFsaXplLWZpbGUtYnVmZmVyLW5h bWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZl ciBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gNiBbZm9ybWF0IG9yZy1tYWNyby0t ZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1tYWNyby0tY29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWlu aXRpYWxpemUtdGVtcGxhdGVzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2Rl LS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0KiBpZl0gMyBbcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1v cHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3Jv dXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVn ZXhwLW9wdC1ncm91cCByZWdleHAtb3B0IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIG9yZy0tY29s bGVjdC1rZXl3b3Jkcy0xIG9yZy1jb2xsZWN0LWtleXdvcmRzIG9yZy1zZXQtcmVnZXhwcy1hbmQt b3B0aW9ucyBvcmctbW9kZV0gNyBbb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3JnLXBlcnNpc3Qt LXJlbW92ZS1mcm9tLWluZGV4IG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hl LXJlc2V0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlz dCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZl0g MyBbYWJicmV2aWF0ZS1maWxlLW5hbWUgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBkaXItbG9jYWxz LWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12 YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0 LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBwcm9nbl0gMjQgW3ZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxMTRiMWQz MjZiODE0NDA5PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0 ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZV0gMyBbb3Jn LXNldHVwLWNvbW1lbnRzLWhhbmRsaW5nIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0KiBpZiBsZXQgd2hpbGUgbGV0XSA0IFtmaWxlLXJlYWRhYmxlLXAgdmMtY3Zz LXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDExNWRkOTMyNmI4MTQ0 MDk+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1o b29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWZdIDMgW21hY3JvZXhwYW5kLWFsbCBjY29u di1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBpZiBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAzIFthc3NvYy1kZWZhdWx0IHNl dC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFz dC1zZXhwXSA0IFtyZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1n cm91cCByZWdleHAtb3B0IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIG9yZy0tY29sbGVjdC1rZXl3 b3Jkcy0xIG9yZy1jb2xsZWN0LWtleXdvcmRzIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBv cmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1 dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0XSA0IFtzZXQtZmFjZS1hdHRyaWJ1dGUgc2V0LWZhY2UtZm9yZWdy b3VuZCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0 IHdoaWxlXSA3IFtmaWxlLW5hbWUtZGlyZWN0b3J5IHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2 Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0 IHdoaWxlIGxldCBwcm9nbl0gNyBbZmlsZS1leGlzdHMtcCAiIzxjb21waWxlZCAtMHgxNGY2NmQ1 OWE4MjEzYzUxPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1y ZWdpc3RlcmVkIHZjLXNyYy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAt MHgxZDkyMDEzMjZiODE0NDA5PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVm cmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdF0gMyBbZmlsZS1leGlzdHMtcCAiIzxjb21waWxlZCAtMHgxMmY3 YmU2OWE4MjEzYzUxPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVs dC1yZWdpc3RlcmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxl ZCAtMHgxZDk2MTEzMjZiODE0NDA5PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMt cmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0gMTIgWyIjPGNvbXBpbGVkIDB4YjUxMDg1YTE3MTlhZj4i IHJlZ2V4cC1vcHQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAgb3JnLS1jb2xsZWN0LWtleXdvcmRz LTEgb3JnLWNvbGxlY3Qta2V5d29yZHMgb3JnLW1hY3JvLS1jb2xsZWN0LW1hY3JvcyBvcmctbWFj cm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRv LW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbl0gMyBbZ2V0 aGFzaCBvcmctcGVyc2lzdC0tZmluZC1pbmRleCBvcmctcGVyc2lzdC0tYWRkLXRvLWluZGV4IG9y Zy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0Kl0gMyBbb3JnLWZvbGQtcmVnaW9uIG9yZy1m b2xkLXNob3ctYWxsIG9yZy1jeWNsZS1zZXQtc3RhcnR1cC12aXNpYmlsaXR5IG9yZy1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXRdIDMgW2FkZC1ob29rIG9y Zy1lbGVtZW50LS1jYWNoZS1zZXR1cC1jaGFuZ2UtZnVuY3Rpb25zIG9yZy1lbGVtZW50LWNhY2hl LXJlc2V0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlz dCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBs ZXRdIDMgW29yZy1wZXJzaXN0LS1hZGQtdG8taW5kZXggb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0 aW9uIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZl0gNCBbc2dtbC1odG1sLW1l dGEtYXV0by1jb2RpbmctZnVuY3Rpb24gZmluZC1hdXRvLWNvZGluZyBzZWxlY3Qtc2FmZS1jb2Rp bmctc3lzdGVtIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBvcmctcGVyc2lzdC0t Z2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVz ZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNl dC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbl0gMTMgW21hcC1rZXltYXAgZWFzeS1tZW51LWxv b2t1cC1uYW1lICIjPGNvbXBpbGVkIDB4MTNkZTNiODM2NGVjNTFmYj4iIG1hcGNhciBlYXN5LW1l bnUtZ2V0LW1hcCBlYXN5LW1lbnUtYWRkLWl0ZW0gZWFzeS1tZW51LWNoYW5nZSBvcmctaW5zdGFs bC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9k ZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0XSA0IFttYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWlu dGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlIG5pbF0gNCBbdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNjY3MtcmVn aXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MWQxYWQ5MzI2YjgxNDQwOT4i IG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tz IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZl0gMyBbaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMt cCBzZXQtYXV0by1tb2RlLTEgaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIGhhY2stbG9j YWwtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIGlmIGxldCB3aGlsZSBsZXRdIDE3IFtmaWxlLWF0dHJpYnV0ZXMgZmluZC1maWxlLW5v c2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA0IFtjZHIgYnVmZmVyLWxpc3Qgb3JnLWluc3RhbGwt YWdlbmRhLWZpbGVzLW1lbnUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIGlmIGxldF0gNiBbc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1w cm90ZWN0IGxldCogaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSA3IFtidWZmZXItbGlzdCBvcmct aW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogaWYgbGV0IHdoaWxlXSA3IFtzZ21sLXhtbC1hdXRvLWNvZGluZy1mdW5j dGlvbiBmaW5kLWF1dG8tY29kaW5nIHNlbGVjdC1zYWZlLWNvZGluZy1zeXN0ZW0gb3JnLXBlcnNp c3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBvcmct cGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IHByb2duXSAzIFtzZWFyY2gtZm9yd2FyZCBmaW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNv ZGluZyBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2du IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gNCBbZmlsZS1kaXJlY3Rvcnkt cCBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDQgW3JlbXEgcmVtb3ZlLWhv b2sgZm9udC1sb2NrLXR1cm4tb24tdGhpbmctbG9jayBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBm b250LWxvY2stZGVmYXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9j ayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1v ZGVdIDMgW2hhY2stbG9jYWwtdmFyaWFibGVzLS1maW5kLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZh cmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gMTMgW2FkZC1o b29rIGdsb2JhbC1lbGRvYy1tb2RlLWNtaGgga2lsbC1hbGwtbG9jYWwtdmFyaWFibGVzIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cF0gMyBbcmV2ZXJzZSByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1v cHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3Jv dXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgb3JnLW1ha2Ut b3B0aW9ucy1yZWdleHAgb3JnLS1jb2xsZWN0LWtleXdvcmRzLTEgb3JnLWNvbGxlY3Qta2V5d29y ZHMgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBz ZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdF0gMyBbYWJicmV2LXRhYmxlLWdldCBvdXRsaW5lLW1v ZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNl dC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3 aGlsZV0gMyBbZmluZC1hdXRvLWNvZGluZyBzZWxlY3Qtc2FmZS1jb2Rpbmctc3lzdGVtIG9yZy1w ZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24g b3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0 LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMTYgW3Rocm93ICIjPGNvbXBpbGVkIC0weDE4 ZThlMzRjMGY3ZDM1NmM+IiBtYXAta2V5bWFwIGVhc3ktbWVudS1sb29rdXAtbmFtZSAiIzxjb21w aWxlZCAweDEzZGUzYjgzNjRlYzUxZmI+IiBtYXBjYXIgZWFzeS1tZW51LWdldC1tYXAgZWFzeS1t ZW51LWFkZC1pdGVtIGVhc3ktbWVudS1jaGFuZ2Ugb3JnLWluc3RhbGwtYWdlbmRhLWZpbGVzLW1l bnUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNl dC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlXSAzIFtzdHJpbmctbWF0Y2gg dmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duXSAzIFsiIzxzdWJyIEY2 MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzI2PiIgY2Nv bnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1h a2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGlmIGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGVdIDMgW3BsaXN0LWdldCBvcmctcGVyc2lzdC0tZmluZC1pbmRl eCBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVs ZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqXSAzIFtmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQt bG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBy dW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRv LW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQt cHJvdGVjdF0gMyBbZWFzeS1tZW51LWNvbnZlcnQtaXRlbSBlYXN5LW1lbnUtY3JlYXRlLW1lbnUg ZWFzeS1tZW51LWNoYW5nZSBvcmctaW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9kZSBz ZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBu b3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWZdIDQgW2ZpbmQtbmV3LWJ1ZmZl ci1maWxlLWNvZGluZy1zeXN0ZW0gYWZ0ZXItaW5zZXJ0LWZpbGUtc2V0LWNvZGluZyBpbnNlcnQt ZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDMgW3NldC1t YXRjaC1kYXRhICIjPGNvbXBpbGVkIDB4YjUxMDg1YTE3MTlhZj4iIHJlcGxhY2UtcmVnZXhwLWlu LXN0cmluZyBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNpc3QtcmVnaXN0ZXIg b3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRv LW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQt cHJvdGVjdF0gNCBbZXEgYWxpc3QtZ2V0ICIjPGNvbXBpbGVkIDB4Y2QwOGYyMmU3YmJmZmNlPiIg YWRkLWhvb2sgaml0LWxvY2stbW9kZSBqaXQtbG9jay1yZWdpc3RlciBmb250LWxvY2stdHVybi1v bi10aGluZy1sb2NrIGZvbnQtbG9jay1tb2RlLWludGVybmFsIGZvbnQtbG9jay1kZWZhdWx0LWZ1 bmN0aW9uIGZvbnQtbG9jay1tb2RlIHR1cm4tb24tZm9udC1sb2NrIHR1cm4tb24tZm9udC1sb2Nr LWlmLWRlc2lyZWQgZ2xvYmFsLWZvbnQtbG9jay1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1o b29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZV0gNCBbcmVwbGFjZS1yZWdleHAtaW4tc3RyaW5n IG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxl bWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0 IGxldCogaWZdIDcgWyIjPGNvbXBpbGVkIDB4YjUxMDg1YWYzMjBhZj4iIGFiYnJldmlhdGUtZmls ZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLXN2bi1yZWdpc3Rl cmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxNGE1ZWQzMjZiODE0NDA5PiIgbWFw YyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9n bl0gMyBbcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAg cmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgb3JnLW1ha2Utb3B0 aW9ucy1yZWdleHAgb3JnLS1jb2xsZWN0LWtleXdvcmRzLTEgb3JnLWNvbGxlY3Qta2V5d29yZHMg b3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQt YXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZV0gMyBbIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5v bnltb3VzX2xhbWJkYV8xMzI+IiBiYWNrdHJhY2UtZnJhbWUgY2FsbGVkLWludGVyYWN0aXZlbHkt cCBhdXRvLXNhdmUtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDMgW3JlZ2V4cC1vcHQgb3JnLW1ha2Utb3B0 aW9ucy1yZWdleHAgb3JnLS1jb2xsZWN0LWtleXdvcmRzLTEgb3JnLWNvbGxlY3Qta2V5d29yZHMg b3JnLW1hY3JvLS1jb2xsZWN0LW1hY3JvcyBvcmctbWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMg b3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gNCBbZm9ybWF0LWRlY29k ZSBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlXSAzIFtjZHIgc2V0cSBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAzIFsiIzxjb21waWxlZCAweDUyMGZh ZTRmNWEwODVkYz4iIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3Jl LWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2du IHVud2luZC1wcm90ZWN0IGxldCogaWZdIDQgW2Vhc3ktbWVudS1kZWZpbmUta2V5IGVhc3ktbWVu dS1hZGQtaXRlbSBlYXN5LW1lbnUtY2hhbmdlIG9yZy1pbnN0YWxsLWFnZW5kYS1maWxlcy1tZW51 IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZl0gMyBbZmlu ZC1maWxlLW5hbWUtaGFuZGxlciBtYWtlLWF1dG8tc2F2ZS1maWxlLW5hbWUgYXV0by1zYXZlLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAzIFtvcmctcGVyc2lzdC0tYWRkLXRvLWlu ZGV4IG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBpZiBsZXRdIDMgW2tpbGwtYWxs LWxvY2FsLXZhcmlhYmxlcyBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSA0IFtvcmctZWxlbWVudC1yZXN0cmljdGlvbiBvcmctbWFj cm8tLWZpbmQtZGF0ZSBvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFs aXplLXRlbXBsYXRlcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxl dCogaWZdIDMgW2ZvbnQtbG9jay1jb21waWxlLWtleXdvcmQgZm9udC1sb2NrLWNvbXBpbGUta2V5 d29yZHMgZm9udC1sb2NrLXNldC1kZWZhdWx0cyBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250 LWxvY2stZGVmYXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0 dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUt aW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGVd IDMgW2NhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgZm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxv Y2sgdHVybi1vbi1mb250LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5h YmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0KiBpZiBsZXQgd2hpbGVdIDMgW2NhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgYXV0by1zYXZlLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gNCBb aml0LWxvY2stY29udGV4dC1mb250aWZ5ICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2 MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfOT4iIGFwcGx5IHRpbWVyLWV2ZW50LWhhbmRsZXIg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDEwIFt0aW1l ci1yZWxhdGl2ZS10aW1lIHJ1bi1hdC10aW1lIHVuZG8tYXV0by0tYm91bmRhcnktZW5zdXJlLXRp bWVyIHVuZG8tYXV0by0tdW5kb2FibGUtY2hhbmdlIGNvbXBsZXRpbmctcmVhZC1kZWZhdWx0IHJl YWQtZXh0ZW5kZWQtY29tbWFuZC0xIHJlYWQtZXh0ZW5kZWQtY29tbWFuZCBieXRlLWNvZGUgY29t bWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMSBbcmVkaXNwbGF5X2lu dGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgY29tcGxldGluZy1yZWFkLWRlZmF1bHQgcmVhZC1leHRl bmRlZC1jb21tYW5kLTEgcmVhZC1leHRlbmRlZC1jb21tYW5kIGJ5dGUtY29kZSBjb21tYW5kLWV4 ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAzIFtjb21wbGV0 aW5nLXJlYWQtZGVmYXVsdCByZWFkLWV4dGVuZGVkLWNvbW1hbmQtMSByZWFkLWV4dGVuZGVkLWNv bW1hbmQgYnl0ZS1jb2RlIGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsXSAxMiBbdHJ5LWNvbXBsZXRpb24gY29tcGxldGUtd2l0aC1hY3Rp b24gIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xh bWJkYV81ND4iIGNvbXBsZXRpb24tYmFzaWMtdHJ5LWNvbXBsZXRpb24gIiM8Y29tcGlsZWQgLTB4 MTdmNzMzMWUyODNhMTRmYz4iIGNvbXBsZXRpb24tLXNvbWUgY29tcGxldGlvbi0tbnRoLWNvbXBs ZXRpb24gY29tcGxldGlvbi10cnktY29tcGxldGlvbiBjb21wbGV0aW9uLS1kby1jb21wbGV0aW9u IGNvbXBsZXRpb24tLWluLXJlZ2lvbi0xICIjPGNvbXBpbGVkIDB4Mzg1OThmNzM1ZDI5YjU0PiIg YXBwbHkgIiM8Y29tcGlsZWQgLTB4ZjdjNmU5NjNlN2E5YTI+IiBjb21wbGV0aW9uLS1pbi1yZWdp b24gY29tcGxldGlvbi1pbi1yZWdpb24gbWluaWJ1ZmZlci1jb21wbGV0ZV0gMTQgW3RpbWVyLWV2 ZW50LWhhbmRsZXIgY29tcGxldGluZy1yZWFkLWRlZmF1bHQgcmVhZC1leHRlbmRlZC1jb21tYW5k LTEgcmVhZC1leHRlbmRlZC1jb21tYW5kIGJ5dGUtY29kZSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAyIFttaW5pYnVmZmVyLWluYWN0aXZl LW1vZGUgY29tcGxldGluZy1yZWFkLWRlZmF1bHQgcmVhZC1leHRlbmRlZC1jb21tYW5kLTEgcmVh ZC1leHRlbmRlZC1jb21tYW5kIGJ5dGUtY29kZSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxIFtBdXRvbWF0aWNcIEdDIG5pbF0gMTg2OSBb cHJvZmlsZXItcmVwb3J0IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgZXhl Y3V0ZS1leHRlbmRlZC1jb21tYW5kIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1 dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA2KSkgKDI1ODc0IDUz NDE0IDQ3NTQ4NiAyOTkwMDApIG5pbF0K --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=cpu-profile-buffer-local-value Content-Transfer-Encoding: base64 Cltwcm9maWxlci1wcm9maWxlICIyOC4xIiBjcHUgI3MoaGFzaC10YWJsZSBzaXplIDMyNSB0ZXN0 IGVxdWFsIHJlaGFzaC1zaXplIDEuNSByZWhhc2gtdGhyZXNob2xkIDAuODEyNSBkYXRhIChbbWVu dS1iYXItdXBkYXRlLWJ1ZmZlcnMtMSBtZW51LWJhci11cGRhdGUtYnVmZmVycyByZWRpc3BsYXlf aW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWxdIDMgW3JlZGlzcGxheV9pbnRlcm5hbFwgXChDXCBmdW5jdGlv blwpIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsXSAzMCBbcGFyc2UtcGFydGlhbC1zZXhwIHN5bnRheC1wcHNzIHNob3ctcGFyZW4tLWRl ZmF1bHQgc2hvdy1wYXJlbi1mdW5jdGlvbiBhcHBseSB0aW1lci1ldmVudC1oYW5kbGVyIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gNCBbbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cGFuZC1hbGwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMSBbb3JnLW1vZGUgc2V0LWF1 dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDM4IFtyZXF1aXJlIGJ5dGUtY29kZSByZXF1 aXJlIGJ5dGUtY29kZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXRdIDE0IFty ZXF1aXJlIGJ5dGUtY29kZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAyMCBbb3JnLWJhYmVsLWRvLWxvYWQtbGFuZ3VhZ2Vz IGN1c3RvbS1pbml0aWFsaXplLXJlc2V0IGN1c3RvbS1kZWNsYXJlLXZhcmlhYmxlIGJ5dGUtY29k ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXRdIDQgW2xvY2F0ZS1maWxlIGxv Y2F0ZS1saWJyYXJ5IG9yZy12ZXJzaW9uIGRlZmNvbnN0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYg bGV0IHdoaWxlIGxldF0gMyBbc2V0LWZhY2UtYXR0cmlidXRlIGZhY2Utc3BlYy1yZXNldC1mYWNl IGZhY2Utc3BlYy1yZWNhbGMgZmFjZS1zcGVjLXNldCBjdXN0b20tZGVjbGFyZS1mYWNlIHJlcXVp cmUgYnl0ZS1jb2RlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWZdIDMgW3JlcXVpcmUgYnl0ZS1jb2Rl IHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIG9yZy1tb2RlIHNldC1hdXRvLW1v ZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg aWYgbGV0XSAzIFtyZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1 dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gOCBbcmVx dWlyZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldF0gMTAgW3JlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUg Ynl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGlmIGxldF0gMjMgW2tleS1wYXJzZSBrZXltYXAtc2V0IGRlZmluZS1rZXltYXAgYnl0ZS1j b2RlIGRlZnZhciByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5 YmUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNl dC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xXSAzIFtyZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUt Y29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0g MjAgW3Rvb2wtYmFyLWxvY2FsLWl0ZW0tZnJvbS1tZW51IGJ5dGUtY29kZSBkZWZ2YXIgcmVxdWly ZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgaWZdIDMgW3JlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUg Ynl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXli ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGVdIDEzIFsiIzxjb21waWxlZCAw eDE5ODAwMDE2ZmU5MTQ+IiBmdW5jYWxsIGV2YWwgY3VzdG9tLWluaXRpYWxpemUtcmVzZXQgY3Vz dG9tLWRlY2xhcmUtdmFyaWFibGUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUg Ynl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZV0gNCBbcmVx dWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWly ZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1h eWJlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBz ZXQtYXV0by1tb2RlXSAxMyBbcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVx dWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWly ZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMF0gMTUgW3JlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVp cmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUg Ynl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXli ZV0gNyBbcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNv ZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUg cmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGVdIDExIFtjdXN0b20tZGVjbGFyZS12 YXJpYWJsZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVx dWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWly ZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlXSA0IFtkYnVzLWluaXQt YnVzIGRidXMtLWluaXQgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1j b2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2Rl IHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZV0gMyBbYnl0ZS1vcHRpbWl6 ZS1vbmUtZm9ybSBieXRlLWNvbXBpbGUtdG9wLWxldmVsICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZm NzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfNDk+IiBieXRlLWNvbXBpbGUgY2wt LWdlbmVyaWMtZ2V0LWRpc3BhdGNoZXIgY2wtLWdlbmVyaWMtbWFrZS1uZXh0LWZ1bmN0aW9uIGNs LS1nZW5lcmljLW1ha2UtZnVuY3Rpb24gY2wtZ2VuZXJpYy1kZWZpbmUtbWV0aG9kIGJ5dGUtY29k ZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSBy ZXF1aXJlXSAzIFtyZXF1aXJlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJl cXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVp cmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmVdIDMgW3JlY29yZCBjbC0tbWFr ZS1zbG90LWRlc2MgY2wtc3RydWN0LWRlZmluZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUg cmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVx dWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGVdIDQgW2tleS1wYXJzZSBrZXltYXAtc2V0 IGRlZmluZS1rZXltYXAgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxv YWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0XSA0IFtrZXktcGFyc2Uga2V5bWFw LXNldCBkZWZpbmUta2V5bWFwIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5 dGUtY29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlXSAyIFtqaXQtbG9jay1yZWZvbnRpZnkgZm9udC1sb2NrLWZsdXNo IGVsaXNwLS1mb250LWxvY2stZmx1c2gtZWxpc3AtYnVmZmVycyBkby1hZnRlci1sb2FkLWV2YWx1 YXRpb24gcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9y Zy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3RdIDQgW29yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHBdIDEzIFtyZXF1aXJlIHJlcXVpcmUgYnl0ZS1jb2RlIG9yZy1lbGVtZW50LWNh Y2hlLXJlc2V0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldF0gMyBbcmV2ZXJz ZSByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgb3JnLWxpbmstbWFrZS1yZWdleHBzIG9yZy1s aW5rLXNldC1wYXJhbWV0ZXJzIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5 dGUtY29kZSBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZV0gNCBb ZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRp bmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0g MTEgW2xvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLWhnLXJlZ2lzdGVyZWQg dmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDEzMDg5M2VhNzdjYjA0NmY+IiBtYXBjIHZj LXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3 aGlsZV0gNDcgW2ZpbGUtYXR0cmlidXRlcyBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGlu ZyBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qt c2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDEwIFtm aWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUgZmlsZS10cnVlbmFtZSBmaW5kLWZpbGUtbm9zZWxl Y3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0g MTggW2ZpbGUtYXR0cmlidXRlcyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSA2IFtmaWxlLXRydWVu YW1lIGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQtYnVmZmVyLXZp c2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbF0gMjQgW2ZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0 IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDMwIFthYmJyZXZpYXRlLWZpbGUtbmFt ZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1zdm4tcmVnaXN0ZXJlZCB2 Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTM3YTg3ZWE3N2NiMDQ2Zj4iIG1hcGMgdmMt cmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0XSAz NCBbdmMtZmlsZS1nZXRwcm9wIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3Mg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBp ZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSAzIFtyZW1vdmUtaG9vayBn bG9iYWwtZWxkb2MtbW9kZS1jaGVjay1idWZmZXJzIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSA0IFtpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1w IHNldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgaGFjay1sb2Nh bC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1h dXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hp bGVdIDQ1IFtkaXItbG9jYWxzLS1hbGwtZmlsZXMgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBkaXIt bG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRpci1s b2NhbC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1v ZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBpZl0gNTkgW29yZy1zZXR1cC1jb21tZW50cy1oYW5kbGluZyBvcmctbW9k ZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhw IGV2YWwtbGFzdC1zZXhwXSA0IFtwbGlzdC1nZXQgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3Jn LXBlcnNpc3QtLXJlbW92ZS1mcm9tLWluZGV4IG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVt ZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1h cHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlXSAzIFt1bmlx dWlmeS1yYXRpb25hbGl6ZS1maWxlLWJ1ZmZlci1uYW1lcyB1bmlxdWlmeS0tY3JlYXRlLWZpbGUt YnVmZmVyLWFkdmljZSBjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxl dCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDY4MCBbZXhw YW5kLWZpbGUtbmFtZSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxMCBbbG9jYXRlLWRvbWluYXRp bmctZmlsZSB2Yy1maW5kLXJvb3QgdmMtc3ZuLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIj PGNvbXBpbGVkIC0weDEyOWZjM2VhNzdjYjA0NmY+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFj a2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZV0gNTkgW29yZy1wZXJz aXN0LXJlYWQgb3JnLXBlcnNpc3QtbG9hZCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAyOCBbIiM8Y29tcGlsZWQgLTB4MTQz NDQ1NWNjMDk5Y2M4ZT4iIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAt b3B0LWdyb3VwIHJlZ2V4cC1vcHQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAgb3JnLS1jb2xsZWN0 LWtleXdvcmRzLTEgb3JnLWNvbGxlY3Qta2V5d29yZHMgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRp b25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMV0gMyBbaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0by1tb2RlLTEgaGFjay1s b2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIGhhY2stbG9jYWwtdmFyaWFibGVzIHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cF0gMzggW3ZjLWZpbGUtY2xlYXJwcm9wcyB2Yy1yZWZyZXNoLXN0YXRl IHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAx MyBbZWFzeS1tZW51LWRlZmluZS1rZXkgZWFzeS1tZW51LWFkZC1pdGVtIGVhc3ktbWVudS1jaGFu Z2Ugb3JnLWluc3RhbGwtYWdlbmRhLWZpbGVzLW1lbnUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBs ZXQgd2hpbGUgbGV0XSAzIFtmaWxlLXdyaXRhYmxlLXAgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSA3IFtmaWxlLXRydWVuYW1lIGZpbmQtZmlsZS1u b3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwg bmlsIG5pbCBuaWxdIDIyIFtmaWxlLWV4aXN0cy1wICIjPGNvbXBpbGVkIDB4NGM0MGUwODgzZGVj M2FmPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3Rl cmVkIHZjLXNyYy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxMmZj ZDdlYTc3Y2IwNDZmPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1z dGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdF0gMTUgW2ZpbGUtcmVtb3RlLXAgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVu LW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duXSA3 IFtyZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAgb3Jn LS1jb2xsZWN0LWtleXdvcmRzLTEgb3JnLWNvbGxlY3Qta2V5d29yZHMgb3JnLXNldC1yZWdleHBz LWFuZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0XSA4IFtzZXQtYXV0by1tb2Rl LTEgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21t YW5kLWV4ZWN1dGUgbmlsXSAzIFtsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2 Yy1naXQtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTMyNDczZWE3 N2NiMDQ2Zj4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUg cnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgaWYgbGV0IHdoaWxlXSA0MyBbYWRkLWhvb2sgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBp ZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cF0gOSBbbG9va2luZy1hdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDExIFtpZiB3aGlsZSBsZXQgb3IgbGV0IGZp bmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY29tbWFuZC1leGVjdXRlXSAyMyBbb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3JnLXBl cnNpc3QtLWFkZC10by1pbmRleCBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNo ZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxp c3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXRdIDYgW2Rpci1sb2Nh bHMtLWFsbC1maWxlcyBsb2NhdGUtZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1maWxl IGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBp ZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cF0gNjIgW2ZpbGUtdHJ1ZW5hbWUgZmlsZS10cnVlbmFtZSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDEw IFtpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2Rl LWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlz dCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbl0gMTkgW2Zp bGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3 aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNh bGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gNyBbb3JnLW1hY3JvLS1m aW5kLWtleXdvcmQtdmFsdWUgb3JnLW1hY3JvLS1jb2xsZWN0LW1hY3JvcyBvcmctbWFjcm8taW5p dGlhbGl6ZS10ZW1wbGF0ZXMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHBy b2duXSA4NCBbb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1v ZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg aWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHBdIDEwIFtub3QgYW5kIHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgaWYg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMjIgW2NvZGluZy1zeXN0ZW0t Z2V0IHNlbGVjdC1zYWZlLWNvZGluZy1zeXN0ZW0gb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3Nv Y2lhdGVkIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBv cmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldF0gNCBbc2dt bC1odG1sLW1ldGEtYXV0by1jb2RpbmctZnVuY3Rpb24gZmluZC1hdXRvLWNvZGluZyBzZXQtYXV0 by1jb2RpbmcgaW5zZXJ0LWZpbGUtY29udGVudHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhw IGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmls XSAyMSBbZmlsZS10cnVlbmFtZSBmaWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0 ZS1maWxlLW5hbWUgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGlmIGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSA5IFtvcmctaWQtdXVpZCBvcmctcGVyc2lzdC0tZ2V0 LWNvbGxlY3Rpb24gb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQg b3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0XSAzMiBbc2VhcmNoLWZvcndhcmQg ZmluZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgaW5zZXJ0LWZpbGUtY29udGVudHMgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAxMSBbdmMtZmlsZS1zZXRwcm9wIHZjLXJlZ2lzdGVy ZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseV0gMyBbb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIG9yZy1wZXJzaXN0 LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1y ZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXRdIDIzIFtidWZmZXItbG9j YWwtdmFsdWUgZXF1YWwgYW5kIGlmIHdoaWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12 aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbl0gNjUxIFtn ZXQtZmlsZS1idWZmZXIgbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUt bm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDIw IFtvcmctbWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0g MjMgW2ZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUg bGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDEwIFtsb2Nh dGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1ienItcmVnaXN0ZXJlZCB2Yy1jYWxs LWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTgyMGZiZWE3N2NiMDQ2Zj4iIG1hcGMgdmMtcmVnaXN0 ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlXSA1 NSBbbG9va3VwLWtleSBlYXN5LW1lbnUtbG9va3VwLW5hbWUgIiM8Y29tcGlsZWQgMHgxM2VjNDYz MGNlMzg1MWZiPiIgbWFwY2FyIGVhc3ktbWVudS1nZXQtbWFwIGVhc3ktbWVudS1hZGQtaXRlbSBl YXN5LW1lbnUtY2hhbmdlIG9yZy1pbnN0YWxsLWFnZW5kYS1maWxlcy1tZW51IG9yZy1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3RdIDYgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGluaGliaXQtbG9jYWwtdmFyaWFi bGVzLXAgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxl dCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseV0gMyBbb3JnLXBlcnNpc3QtLWFkZC10by1pbmRleCBvcmctcGVy c2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1t b2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGlmIGxldCB3aGlsZSBsZXQgcHJvZ25dIDMgW3VuaXF1aWZ5LXJhdGlvbmFsaXplIHVuaXF1aWZ5 LXJhdGlvbmFsaXplLWZpbGUtYnVmZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZm ZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdo aWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2Fs bC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAxMCBbdmMtbWFrZS1iYWNr ZW5kLXN5bSB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc2Njcy1yZWdpc3RlcmVkIHZjLWNhbGwt YmFja2VuZCAiIzxjb21waWxlZCAweGRkMDZhOWE0Zjc1YzUxZD4iIG1hcGMgdmMtcmVnaXN0ZXJl ZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlXSA2IFtp bmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUtMSBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMTggW2Fi YnJldmlhdGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZj LWdpdC1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxOWM3N2JlYTc3 Y2IwNDZmPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBy dW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBpZiBsZXRdIDIwIFtzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBu aWxdIDU0IFtidWZmZXItbG9jYWwtdmFsdWUgZXF1YWwgYW5kIGlmIHdoaWxlIGFuZCBsZXQqIG9y IGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cF0gNjk2IFtvcmctZm9sZC1yZWdpb24gb3JnLWZvbGQtc2hvdy1hbGwgb3Jn LWN5Y2xlLXNldC1zdGFydHVwLXZpc2liaWxpdHkgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNl dC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQg d2hpbGUgbGV0IHByb2duXSAxMCBbYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQtYnVmZmVy LXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAzMiBbb3JnLWluc3RhbGwtYWdlbmRhLWZpbGVzLW1l bnUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNl dC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMTMgW2ZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1l IG1ha2UtbG9jay1maWxlLW5hbWUgaW5zZXJ0LWZpbGUtY29udGVudHMgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGUgbmlsIG5pbF0gMTEgW3N0cmluZz0gYW5kIGlmIHdoaWxlIGxldCBvciBsZXQgZmlu ZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSA0NyBbY2FyIGJ1ZmZl ci1sb2NhbC12YWx1ZSBlcXVhbCBhbmQgaWYgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVm ZmVyLXZpc2l0aW5nIGlmIGxldCB3aGlsZSBsZXQgcHJvZ25dIDggW2ZpbGUtbmFtZS1zYW5zLXZl cnNpb25zIGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9kZS0xIGhhY2stbG9j YWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBd IDYgW3JlcGxhY2UtcmVnZXhwLWluLXN0cmluZyBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24g b3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0 LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0XSA3IFtidWZmZXItbG9jYWwtdmFsdWUgc3RyaW5nPSBh bmQgaWYgd2hpbGUgbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9z ZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDQzIFtv cmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9y Zy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHBy b2duXSA4IFtmaWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUg bGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGUgbmlsIG5pbF0gMTYgW2luc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbF0gNTkgW2ZpbGUtdHJ1ZW5hbWUgZmlsZS10cnVlbmFt ZSBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNp dGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQt ZXhlY3V0ZV0gNiBbcmVnZXhwLW9wdCBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgb3JnLW1v ZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cF0gNiBbc3RyaW5nLW1hdGNoIGFzc29jLWRlZmF1bHQgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxp c3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMTgg W2F1dG8tY29kaW5nLWFsaXN0LWxvb2t1cCBmaW5kLWF1dG8tY29kaW5nIHNlbGVjdC1zYWZlLWNv ZGluZy1zeXN0ZW0gb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIG9yZy1wZXJzaXN0 LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1y ZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmXSA1MCBbY2FyIGJ1ZmZlci1sb2NhbC12YWx1ZSBz dHJpbmc9IGFuZCBpZiB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGlmIGxl dCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSA2IFtvcmctcGVyc2lzdC0t cmVtb3ZlLWZyb20taW5kZXggb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUt cmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duXSAzNiBbdmMt Y2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtcmNzLXJlZ2lz dGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4ZGQ0NTI5YTRmNzVjNTFkPiIgbWFw YyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBs ZXQgd2hpbGVdIDMgW2dsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4t aG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1v ZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0 IHByb2duXSA0IFttYWtlLWxvY2FsLXZhcmlhYmxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWwgbmlsIG5pbF0gNCBbZ2V0aGFzaCBvcmctZm9sZC1jb3JlLS1wcm9wZXJ0eS1zeW1ib2wt Z2V0LWNyZWF0ZSBvcmctZm9sZC1yZWdpb24gb3JnLWZvbGQtc2hvdy1hbGwgb3JnLWN5Y2xlLXNl dC1zdGFydHVwLXZpc2liaWxpdHkgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1v ZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGVdIDMg W3JlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4 cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBvcmctLWNvbGxl Y3Qta2V5d29yZHMtMSBvcmctY29sbGVjdC1rZXl3b3JkcyBvcmctc2V0LXJlZ2V4cHMtYW5kLW9w dGlvbnMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xXSAzIFt2Yy1yY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQg LTB4MTAwNDBmZWE3N2NiMDQ2Zj4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJl ZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbl0gMyBbZ2V0LWZpbGUt YnVmZmVyIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAxNyBbZmlsZS1yZW1vdGUtcCBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gNiBbYW5kIHdoaWxlIGFuZCBsZXQqIG9yIGxl dCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5XSAxOCBbYXV0by1jb2RpbmctcmVnZXhwLWFsaXN0LWxvb2t1cCBmaW5kLWF1dG8t Y29kaW5nIHNldC1hdXRvLWNvZGluZyBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1h bmQtZXhlY3V0ZSBuaWxdIDEwIFtkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0t Z2V0LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMyBbc3RyaW5nLW1hdGNoIG9yZy1mb2xkLWNvcmUtLXBy b3BlcnR5LXN5bWJvbC1nZXQtY3JlYXRlIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBv cmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGlmIGxldCB3aGlsZV0gMjYgW2ZpbGUtZXhpc3RzLXAgIiM8Y29tcGlsZWQgMHhiOTZj ODgzZGVjM2FmPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1y ZWdpc3RlcmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAt MHgxOGE3OTdlYTc3Y2IwNDZmPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVm cmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdF0gMTUgW2FuZCBpZiB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmlu ZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAxNyBbYnVmZmVyLWxp c3Qgb3JnLWluc3RhbGwtYWdlbmRhLWZpbGVzLW1lbnUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gMTEgW2luaGliaXQtbG9j YWwtdmFyaWFibGVzLXAgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFz dC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDM4IFtpbmhpYml0 LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUg bGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMjkgW2ZpbGUtbmFtZS1zYW5zLXZlcnNp b25zIGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9kZS0xIHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDE1IFtzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwg bmlsXSA2IFtleHBhbmQtZmlsZS1uYW1lIHZjLWN2cy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2Vu ZCAiIzxjb21waWxlZCAtMHgxODlhZmZlYTc3Y2IwNDZmPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZj LWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0XSA0IFtv cmctZmluZC1pbnZpc2libGUtZm9yZWdyb3VuZCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3 aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAzIFtv cmctbWFjcm8tLWZpbmQta2V5d29yZC12YWx1ZSBvcmctbWFjcm8tLWZpbmQtZGF0ZSBvcmctbWFj cm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBvcmctbW9k ZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXRdIDI5IFtub3QgYW5kIHdoaWxlIGxldCBvciBs ZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseV0gNiBbdHVybi1vbi1mb250LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1s b2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1t b2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldF0gMyBbYW5kIHdoaWxlIGxldCBvciBsZXQg ZmluZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhl Y3V0ZSBuaWxdIDIyIFt3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQt ZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bF0gNyBbb3V0bGluZS1tb2RlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2Rl LS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDggW2ppdC1sb2NrLW1v ZGUgaml0LWxvY2stcmVnaXN0ZXIgZm9udC1sb2NrLXR1cm4tb24tdGhpbmctbG9jayBmb250LWxv Y2stbW9kZS1pbnRlcm5hbCBmb250LWxvY2stZGVmYXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9k ZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1m b250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mg b3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGVdIDMgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGZpbmQtZmlsZS1u b3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwg bmlsIG5pbCBuaWxdIDQ2IFthbGlzdC1nZXQgIiM8Y29tcGlsZWQgMHgxZDFlNDc0ZjgzYmJmZmNl PiIgYWRkLWhvb2sgb3JnLWVsZW1lbnQtLWNhY2hlLXNldHVwLWNoYW5nZS1mdW5jdGlvbnMgb3Jn LWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1v ZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGVdIDMg W2J1ZmZlci1sb2NhbC12YWx1ZSBhbmQgaWYgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVm ZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cF0gMzIgW2ZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIG1ha2Ut YXV0by1zYXZlLWZpbGUtbmFtZSBhdXRvLXNhdmUtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgbmlsXSA3IFthZGQtaG9vayBvdXRsaW5lLW1vZGUgb3JnLW1vZGUg c2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0g NyBbZmlsZS1uYW1lLWRpcmVjdG9yeSB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1 bHQtcmVnaXN0ZXJlZCB2Yy1zY2NzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBp bGVkIC0weDExYTVmZmVhNzdjYjA0NmY+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2 Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldF0gOCBbY2RyIHNldHEgd2hpbGUgYW5kIGxl dCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMjIg W2VxdWFsIGFuZCBpZiB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcg ZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFz dC1zZXhwXSAxMiBbc2VsZWN0LXNhZmUtY29kaW5nLXN5c3RlbSBvcmctcGVyc2lzdC0tbm9ybWFs aXplLWFzc29jaWF0ZWQgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIG9yZy1wZXJzaXN0LXJl Z2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBz ZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0 IHdoaWxlXSA3IFtpbnRlcm5hbC1nZXQtbGlzcC1mYWNlLWF0dHJpYnV0ZSBmYWNlLWF0dHJpYnV0 ZSBmYWNlLWJhY2tncm91bmQgb3JnLWZpbmQtaW52aXNpYmxlLWZvcmVncm91bmQgb3JnLW1vZGUg c2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0XSAzIFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBz ZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0 IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMyBbYWJicmV2aWF0ZS1maWxlLW5h bWUgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1s b2NhbC0tZ2V0LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDIyIFthdXRv LWNvZGluZy1hbGlzdC1sb29rdXAgZmluZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgaW5z ZXJ0LWZpbGUtY29udGVudHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAzOCBbdW5pcXVp ZnktcmF0aW9uYWxpemUtYS1saXN0IHVuaXF1aWZ5LXJhdGlvbmFsaXplIHVuaXF1aWZ5LXJhdGlv bmFsaXplLWZpbGUtYnVmZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2 aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDQgW2ZpbmQtYXV0by1jb2Rpbmcgc2V0LWF1 dG8tY29kaW5nIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWxdIDIyIFtydW4taG9va3Mgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDMgW2J1ZmZlci1saXN0IGxldCogb3IgbGV0IGZpbmQt YnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2du IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZl bHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMTcgW2NhciBidWZmZXItbG9jYWwtdmFsdWUgYW5kIGlm IHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0 IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAxMiBbY2RyIHNl dHEgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGlmIGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseV0gMTUgW2VxdWFsIGFuZCBpZiB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmlu ZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHBdIDIxIFtidWZmZXItbG9jYWwtdmFsdWUgYW5kIGlmIHdoaWxl IGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxl dCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAz OCBbYWxpc3QtZ2V0IG9yZy1mb2xkLWNvcmUtZ2V0LWZvbGRpbmctc3BlYy1mcm9tLWFsaWFzICIj PHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFf MTQ+IiBtYXBjYXIgb3JnLWZvbGQtY29yZS0tcHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3Jn LWZvbGQtY29yZS1hZGQtZm9sZGluZy1zcGVjIG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmct Zm9sZC1pbml0aWFsaXplIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1h cHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3RdIDMgW2xvY2F0ZS1kb21pbmF0aW5n LWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMg aGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhv b2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0XSA0IFtmb3JtYXQgb3JnLWZvbGQtY29yZS0t cHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQtY29yZS1hZGQtZm9sZGluZy1zcGVj IG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgaWYgbGV0IHdoaWxlXSAxNyBbZmlsZS1yZW1vdGUtcCBoYWNrLWRpci1sb2NhbC0t Z2V0LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMTIgW29yZy1mb2xkLWNvcmUtLXByb3BlcnR5LXN5bWJv bC1nZXQtY3JlYXRlIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3Jl LWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxl dCB3aGlsZSBsZXRdIDE0IFtzZXRxIHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRp bmcgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGVdIDE2IFthbmQgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5n IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDEwIFtvcmctLWNvbGxl Y3Qta2V5d29yZHMtMSBvcmctY29sbGVjdC1rZXl3b3JkcyBvcmctc2V0LXJlZ2V4cHMtYW5kLW9w dGlvbnMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duXSAyNSBbIiM8 c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV8x ND4iIG1hcGNhciBvcmctZm9sZC1jb3JlLS1wcm9wZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSBvcmct Zm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1m b2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXRdIDMgW29yZy1zZXQtZm9u dC1sb2NrLWRlZmF1bHRzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1h cHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9n biBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDQgW2V4cGFuZC1maWxlLW5h bWUgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbF0gMyBbc3RyaW5nPSBhbmQgaWYgd2hpbGUgbGV0IG9yIGxldCBmaW5k LWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9n biBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDM1IFtnZXQtZmlsZS1idWZm ZXIgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTMgW2Rlcml2ZWQtbW9kZS1wIGZvbnQtbG9jay1z ZXQtZGVmYXVsdHMgZm9udC1sb2NrLW1vZGUtaW50ZXJuYWwgZm9udC1sb2NrLWRlZmF1bHQtZnVu Y3Rpb24gZm9udC1sb2NrLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMyBbc2dtbC14bWwtYXV0by1jb2Rp bmctZnVuY3Rpb24gZmluZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgaW5zZXJ0LWZpbGUt Y29udGVudHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3 aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNh bGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSA2IFtidWZmZXItbGlzdCBsZXQg b3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMTMgW2ZpbGUtbmFtZS1kaXJlY3Rv cnkgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSAzIFtzZXRxIHdoaWxl IGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDExIFtjZHIgc2V0cSB3aGlsZSBsZXQgb3IgbGV0IGZpbmQt YnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2du IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZl bHldIDEwIFtxdW90ZSBidWZmZXItbG9jYWwtdmFsdWUgZXF1YWwgYW5kIGlmIHdoaWxlIGFuZCBs ZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBpZiBsZXQgd2hpbGUgbGV0IHByb2duXSA0 IFtmaWxlLW5ld2VyLXRoYW4tZmlsZS1wIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQt ZXhlY3V0ZSBuaWwgbmlsIG5pbF0gMTAgW25vdCBhbmQgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZp bmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gNiBbZXJhc2UtYnVmZmVy IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbF0gMyBbZm9udC1sb2NrLW1v ZGUgZm9udC1sb2NrLWNoYW5nZS1tb2RlIHRleHQtbW9kZSBvdXRsaW5lLW1vZGUgb3JnLW1vZGUg c2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0XSA0IFtyZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1v cHQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAgb3JnLS1jb2xsZWN0LWtleXdvcmRzLTEgb3JnLWNv bGxlY3Qta2V5d29yZHMgb3JnLW1hY3JvLS1jb2xsZWN0LW1hY3JvcyBvcmctbWFjcm8taW5pdGlh bGl6ZS10ZW1wbGF0ZXMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZl0gMyBbYW5kIGlmIHdoaWxlIGxl dCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3 aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNh bGwtaW50ZXJhY3RpdmVseV0gOSBbYWRkLWhvb2sgZm9udC1sb2NrLXR1cm4tb24tdGhpbmctbG9j ayBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250LWxvY2stZGVmYXVsdC1mdW5jdGlvbiBmb250 LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVk IGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1v ZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlXSA0IFthbmQgaWYg d2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3Nl bGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cF0gMTkgW2NkciBzZXRxIHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRp bmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMTQgW3JlZ2V4cC1v cHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3Jv dXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVn ZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgb3JnLW1ha2Utb3B0aW9u cy1yZWdleHAgb3JnLS1jb2xsZWN0LWtleXdvcmRzLTEgb3JnLWNvbGxlY3Qta2V5d29yZHMgb3Jn LXNldC1yZWdleHBzLWFuZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMF0gMyBbYnVm ZmVyLWxvY2FsLXZhbHVlIGFuZCBpZiB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXIt dmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHBdIDE2IFtoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmluZC12YXJpYWJsZXMgaGFj ay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBs ZXQgd2hpbGUgbGV0IHByb2duXSAxMCBbY2FyIGJ1ZmZlci1sb2NhbC12YWx1ZSBhbmQgaWYgd2hp bGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVj dCBpZiBsZXQgd2hpbGUgbGV0IHByb2duXSA3IFthbmQgaWYgd2hpbGUgbGV0IG9yIGxldCBmaW5k LWJ1ZmZlci12aXNpdGluZyBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qt c2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRl XSAxMiBbcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgb3JnLXNl dC1yZWdleHBzLWFuZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1t b2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxl dF0gMyBbZm9ybWF0IHZjLXBvc3NpYmxlLW1hc3RlciAiIzxjb21waWxlZCAtMHgxMmNlYTFmNzdj MjEzYzUxPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdp c3RlcmVkIHZjLXNyYy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgx NzBjZDdlYTc3Y2IwNDZmPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVz aC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xXSAz IFtydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWwgbmlsXSA0IFtub3QgYW5kIHdoaWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNp dGluZyBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDExIFt3aGlsZSBhbmQgbGV0KiBvciBsZXQg ZmluZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhl Y3V0ZSBuaWxdIDE5IFtpZiB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlzaXRp bmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gNCBbb3JnLWZvbGQt Y29yZS0tcHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQtcmVnaW9uIG9yZy1mb2xk LXNob3ctYWxsIG9yZy1jeWNsZS1zZXQtc3RhcnR1cC12aXNpYmlsaXR5IG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgaWYgbGV0IHdoaWxlIGxldF0gMyBbYWxpc3QtZ2V0ICIjPGNvbXBpbGVkIDB4MWQxZTQ3 NGY4M2JiZmZjZT4iIGFkZC1ob29rIGppdC1sb2NrLW1vZGUgaml0LWxvY2stcmVnaXN0ZXIgZm9u dC1sb2NrLXR1cm4tb24tdGhpbmctbG9jayBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250LWxv Y2stZGVmYXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJu LW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4t YnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w XSAzIFtsb2NhdGUtZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGly LWxvY2FsLS1nZXQtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHldIDkgW3doaWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNp dGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQt ZXhlY3V0ZV0gNCBbYnVmZmVyLWxvY2FsLXZhbHVlIHN0cmluZz0gYW5kIGlmIHdoaWxlIGxldCBv ciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDMwIFtjZHIgYnVmZmVyLWxpc3Qgb3JnLWlu c3RhbGwtYWdlbmRhLWZpbGVzLW1lbnUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRv LW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUg bGV0IHByb2duXSAzIFtidWZmZXItbG9jYWwtdmFsdWUgYW5kIGlmIHdoaWxlIGxldCBvciBsZXQg ZmluZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAzNSBbYWJicmV2 aWF0ZS1maWxlLW5hbWUgbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMtYnpy LXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDE3YmEzYmVhNzdjYjA0 NmY+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1o b29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGlmIGxldF0gMTkgW3VuaXF1aWZ5LXJhdGlvbmFsaXplLWNvbmZsaWN0aW5nLXN1Ymxpc3Qg dW5pcXVpZnktcmF0aW9uYWxpemUtYS1saXN0IHVuaXF1aWZ5LXJhdGlvbmFsaXplIHVuaXF1aWZ5 LXJhdGlvbmFsaXplLWZpbGUtYnVmZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZm ZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdo aWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2Fs bC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMTEgW2tpbGwtYWxsLWxvY2FsLXZhcmlh YmxlcyBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1z ZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUg bmlsIG5pbF0gNCBbYXV0by1jb2RpbmctcmVnZXhwLWFsaXN0LWxvb2t1cCBmaW5kLWF1dG8tY29k aW5nIHNlbGVjdC1zYWZlLWNvZGluZy1zeXN0ZW0gb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3Nv Y2lhdGVkIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBv cmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmXSA4IFtzZXRxIHdo aWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxl Y3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSA5IFthZGQtaG9vayAiIzxjb21waWxlZCAtMHgx ZGQyYmY2Mzg1YmVkMDkwPiIgcnVuLWhvb2tzIGFwcGx5IHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlXSAzIFt1bmlxdWlmeS0tY3JlYXRlLWZpbGUtYnVmZmVy LWFkdmljZSBjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSA0IFthYmJyZXZp YXRlLWZpbGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDE1IFsiIzxjb21waWxlZCAw eGE1NzU0ODNjZTYwYWY+IiBmaWxlcy0tdHJhbnNmb3JtLWZpbGUtbmFtZSBtYWtlLWF1dG8tc2F2 ZS1maWxlLW5hbWUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0g MyBbZmlsZS1leGlzdHMtcCAiIzxjb21waWxlZCAtMHgxMjExOGQzNzdjMjEzYzUxPiIgbWFwY2Fy IHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNjY3Mt cmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4ZThiOTdlYTc3Y2IwNDZm PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9v a3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dF0gOSBbb3JnLWRlbGV0ZS1hbGwgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBd IDMgW2NhciBidWZmZXItbG9jYWwtdmFsdWUgc3RyaW5nPSBhbmQgaWYgd2hpbGUgbGV0IG9yIGxl dCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxl dCBwcm9nbl0gNyBbZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgaW5oaWJpdC1sb2NhbC12YXJpYWJs ZXMtcCBzZXQtYXV0by1tb2RlLTEgaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIGhhY2st bG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBz ZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0 XSAzIFtmb250LWxvY2stc3BlY2lmaWVkLXAgZm9udC1sb2NrLWRlZmF1bHQtZnVuY3Rpb24gZm9u dC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVybi1vbi1mb250LWxvY2staWYtZGVzaXJl ZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbl0gNyBbb3JnLWJhYmVsLWhpZGUtYWxsLWhhc2hl cyBydW4taG9va3MgYXBwbHkgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBs ZXQgd2hpbGUgbGV0XSAyMyBbYWJicmV2aWF0ZS1maWxlLW5hbWUgbG9jYXRlLWRvbWluYXRpbmct ZmlsZSB2Yy1maW5kLXJvb3QgdmMtaGctcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29t cGlsZWQgLTB4ZTg0ZDNlYTc3Y2IwNDZmPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQg dmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXRdIDIzIFtmaWxlLW5hbWUtc2Fucy12ZXJz aW9ucyBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBp ZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA3IFtyZWdleHAtb3B0IG9y Zy1tYWtlLW9wdGlvbnMtcmVnZXhwIG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIG9yZy1jb2xsZWN0 LWtleXdvcmRzIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9kZSBzZXQtYXV0by1t b2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGlmIGxldCB3aGlsZV0gNCBbZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdl dC12YXJpYWJsZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVz IHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1h cHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlXSAzIFtjdXJy ZW50LWFjdGl2ZS1tYXBzIGVhc3ktbWVudS1nZXQtbWFwIGVhc3ktbWVudS1hZGQtaXRlbSBlYXN5 LW1lbnUtY2hhbmdlIG9yZy1pbnN0YWxsLWFnZW5kYS1maWxlcy1tZW51IG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgaWYgbGV0IHdoaWxlXSA3IFtvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBvcmctY29sbGVj dC1rZXl3b3JkcyBvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXpl LXRlbXBsYXRlcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXRdIDIwIFtidWZm ZXItbGlzdCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBpZiBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDQgW29yZy1mb2xkLWNvcmUtLXByb3Bl cnR5LXN5bWJvbC1nZXQtY3JlYXRlIG9yZy1mb2xkLWNvcmUtLXByb3BlcnR5LXN5bWJvbC1nZXQt Y3JlYXRlIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRp YWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGls ZV0gNCBbb3JnLWVsZW1lbnQtcmVzdHJpY3Rpb24gb3JnLW1hY3JvLS1maW5kLWRhdGUgb3JnLW1h Y3JvLS1jb2xsZWN0LW1hY3JvcyBvcmctbWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgb3JnLW1v ZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0XSA2IFsiIzxjb21waWxlZCAweDJlMzkxMWZi NzkzMDk5Yz4iIG1hcC1rZXltYXAgZWFzeS1tZW51LWxvb2t1cC1uYW1lICIjPGNvbXBpbGVkIDB4 MTNlYzQ2MzBjZTM4NTFmYj4iIG1hcGNhciBlYXN5LW1lbnUtZ2V0LW1hcCBlYXN5LW1lbnUtYWRk LWl0ZW0gZWFzeS1tZW51LWNoYW5nZSBvcmctaW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVudSBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8t bW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTFdIDMg W2VwYS1maWxlLWZpbmQtZmlsZS1ob29rIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gNyBbZWFzeS1tZW51LWNyZWF0ZS1tZW51IGVhc3kt bWVudS1jaGFuZ2Ugb3JnLWluc3RhbGwtYWdlbmRhLWZpbGVzLW1lbnUgb3JnLW1vZGUgc2V0LWF1 dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duXSA0IFtoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmlu ZC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDIxIFtlcSBhbGlzdC1n ZXQgIiM8Y29tcGlsZWQgMHgxZDFlNDc0ZjgzYmJmZmNlPiIgYWRkLWhvb2sgdGV4dC1tb2RlIG91 dGxpbmUtbW9kZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldF0gMyBbcXVvdGUgYnVmZmVyLWxv Y2FsLXZhbHVlIHN0cmluZz0gYW5kIGlmIHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlz aXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ25dIDMgW3NnbWwt aHRtbC1tZXRhLWF1dG8tY29kaW5nLWZ1bmN0aW9uIGZpbmQtYXV0by1jb2Rpbmcgc2VsZWN0LXNh ZmUtY29kaW5nLXN5c3RlbSBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgb3JnLXBl cnNpc3QtLWdldC1jb2xsZWN0aW9uIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNh Y2hlLXJlc2V0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWZdIDYgW2NkciBidWZmZXItbGlzdCBsZXQq IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdo aWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2Fs bC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gOCBbZ2VuZXJhdGUtbmV3LWJ1ZmZlciBj cmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSAzMCBbcmVnZXhwLXF1b3RlIG9y Zy1tYWNyby0tZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1tYWNyby0tY29sbGVjdC1tYWNyb3Mgb3Jn LW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQt YXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdo aWxlIGxldF0gMyBbZmluZC1hdXRvLWNvZGluZyBzZWxlY3Qtc2FmZS1jb2Rpbmctc3lzdGVtIG9y Zy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rp b24gb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUg c2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBpZiBsZXRdIDcgW2dldGhhc2ggb3JnLWZvbGQtY29yZS0tcHJvcGVydHktc3lt Ym9sLWdldC1jcmVhdGUgb3JnLWZvbGQtY29yZS1hZGQtZm9sZGluZy1zcGVjIG9yZy1mb2xkLWNv cmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYg bGV0IHdoaWxlXSAzIFtxdW90ZSBidWZmZXItbG9jYWwtdmFsdWUgYW5kIGlmIHdoaWxlIGxldCBv ciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDMgW3ZjLW1ha2UtYmFja2VuZC1zeW0gdmMt ZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxj b21waWxlZCAtMHhmZDQzM2VhNzdjYjA0NmY+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2Vu ZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZV0gMyBbY2RyIGJ1ZmZlci1s aXN0IGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGlm IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDMgW2FkZC10by1saXN0IGds b2JhbC1lbGRvYy1tb2RlLWNtaGgga2lsbC1hbGwtbG9jYWwtdmFyaWFibGVzIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg aWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMyBbY2FyIGJ1ZmZlci1s b2NhbC12YWx1ZSBhbmQgaWYgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0 aW5nIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSA3IFtzZXRx IHdoaWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBpZiBsZXQgd2hpbGUg bGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSAxOSBbd2hpbGUgbGV0IG9yIGxldCBmaW5kLWJ1 ZmZlci12aXNpdGluZyBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWxdIDE1IFt0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVk IGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mgbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDMgW2dldGhhc2ggb3JnLXBlcnNpc3QtLWZp bmQtaW5kZXggb3JnLXBlcnNpc3QtLWFkZC10by1pbmRleCBvcmctcGVyc2lzdC1yZWdpc3RlciBv cmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZV0g MyBbYW5kIHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5v c2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwt bGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDE0IFtwcm92 aWRlZC1tb2RlLWRlcml2ZWQtcCBkZXJpdmVkLW1vZGUtcCBvcmctaW5zdGFsbC1hZ2VuZGEtZmls ZXMtbWVudSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxp c3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ25dIDMgW2Nk ciBidWZmZXItbGlzdCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBpZiBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMyBbY2FyIGJ1ZmZlci1sb2NhbC12 YWx1ZSBlcXVhbCBhbmQgaWYgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0 aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0XSA5IFthYm9ydC1pZi1maWxl LXRvby1sYXJnZSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSA0IFtpZiB3aGlsZSBsZXQgb3IgbGV0 IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGUgbmlsXSA0IFthZGQtaG9vayB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3 aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNh bGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSA0IFthYmJyZXZpYXRlLWZpbGUt bmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGly LWxvY2FsLS1nZXQtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBoYWNrLWxvY2Fs LXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmXSAxNiBbZmls ZS1hdHRyaWJ1dGVzIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1u b3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMTEg W29yZy1zZXR1cC1maWxsaW5nIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2Rl LS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDMgW3NlYXJjaC1iYWNr d2FyZCBoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmluZC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJp YWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxp c3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0g MyBbb3JnLXBlcnNpc3QtLWFkZC10by1pbmRleCBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24g b3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0 LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0XSAzIFtvYmFycmF5LWdldCBhYmJyZXYtdGFibGUtZ2V0 IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHBdIDQgW2lmIHdoaWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGlu ZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAzIFtyZS1zZWFy Y2gtZm9yd2FyZCBvcmctbWFjcm8tLWZpbmQta2V5d29yZC12YWx1ZSBvcmctbWFjcm8tLWZpbmQt ZGF0ZSBvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXplLXRlbXBs YXRlcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZV0gNCBbY29weS10cmVlIGZvbnQt bG9jay1kZWZhdWx0LWZ1bmN0aW9uIGZvbnQtbG9jay1tb2RlIHR1cm4tb24tZm9udC1sb2NrIHR1 cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZvbnQtbG9jay1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGlsZSBsZXQgcHJvZ25dIDMg W2ZvbnQtbG9jay1jb21waWxlLWtleXdvcmQgZm9udC1sb2NrLWNvbXBpbGUta2V5d29yZHMgZm9u dC1sb2NrLXNldC1kZWZhdWx0cyBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250LWxvY2stZGVm YXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZv bnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVy cyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1h dXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGVdIDMgW2ppdC1s b2NrLXJlZm9udGlmeSBqaXQtbG9jay1tb2RlIGppdC1sb2NrLXJlZ2lzdGVyIGZvbnQtbG9jay10 dXJuLW9uLXRoaW5nLWxvY2sgZm9udC1sb2NrLW1vZGUtaW50ZXJuYWwgZm9udC1sb2NrLWRlZmF1 bHQtZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHBy b2duXSAzIFtzZXQtbWF0Y2gtZGF0YSAiIzxjb21waWxlZCAweGE1NzU0ODNjZTYwYWY+IiBhYmJy ZXZpYXRlLWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1o Zy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHhjNWUzN2VhNzdjYjA0 NmY+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1o b29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0XSAzIFtmaWxlLXJlYWRhYmxlLXAgdmMtY3ZzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5k ICIjPGNvbXBpbGVkIC0weGRjNWY3ZWE3N2NiMDQ2Zj4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1i YWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldF0gNCBbZmls ZS1uYW1lLXNhbnMtdmVyc2lvbnMgaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBoYWNrLWxvY2Fs LXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGls ZSBsZXRdIDQgW2J1ZmZlci1saXN0IGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgaWYg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA3IFtyZWdleHAt b3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdy b3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJl Z2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1v cHQtZ3JvdXAgcmVnZXhwLW9wdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBvcmctLWNvbGxlY3Qt a2V5d29yZHMtMSBvcmctY29sbGVjdC1rZXl3b3JkcyBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlv bnNdIDMgW29yZy11cGRhdGUtcmFkaW8tdGFyZ2V0LXJlZ2V4cCBvcmctbW9kZSBzZXQtYXV0by1t b2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGlmIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwXSA0IFtxdW90ZSBidWZmZXItbG9jYWwtdmFsdWUgYW5kIGlmIHdoaWxlIGFuZCBsZXQqIG9y IGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxl IGxldCBwcm9nbl0gMyBbaW50ZXJuIG9yZy1mb2xkLWNvcmUtLXByb3BlcnR5LXN5bWJvbC1nZXQt Y3JlYXRlIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRp YWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldCB3aGls ZV0gMyBbcXVvdGUgYnVmZmVyLWxvY2FsLXZhbHVlIHN0cmluZz0gYW5kIGlmIHdoaWxlIGxldCBv ciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHBdIDMgW29yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIG9yZy1w ZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1hdXRv LW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbl0gNCBbIiM8Y29tcGlsZWQgLTB4MTdiMmI1OGI3YzIx M2M1Mj4iIG1hcGNhciB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0 ZXJlZCB2Yy1zcmMtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4ZDll ZjNlYTc3Y2IwNDZmPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1z dGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBpZl0gMyBbbWFrZS1jbG9zdXJlIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0 ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2Vu ZCAiIzxjb21waWxlZCAtMHhkNWU5M2VhNzdjYjA0NmY+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMt YmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGlmIGxldF0gNCBbbWFwY2FyIGVhc3kt bWVudS1nZXQtbWFwIGVhc3ktbWVudS1hZGQtaXRlbSBlYXN5LW1lbnUtY2hhbmdlIG9yZy1pbnN0 YWxsLWFnZW5kYS1maWxlcy1tZW51IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1t b2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlXSAz IFsiIzxjb21waWxlZCAtMHgxNDE2MjJkODk1ZmUzZjhlPiIgb3JnLS1zZXQtZmFjZXMtZXh0ZW5k IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHBdIDMgW2ZpbGUtbmFtZS1kaXJlY3RvcnkgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5k IHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAzIFt1 cGNhc2Ugb3JnLWNvbGxlY3Qta2V5d29yZHMgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIG9y Zy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbl0gMyBbbWFrZS1sb2NrLWZp bGUtbmFtZSBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgaWYgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwg bmlsIG5pbF0gMyBbb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQg b3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBpZiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cF0gNCBbcGFyc2UtcGFydGlhbC1zZXhwIHN5bnRheC1wcHNzIGxpc3AtLWVsLWZ1bmNh bGwtcG9zaXRpb24tcCBsaXNwLS1lbC1tYXRjaC1rZXl3b3JkIGZvbnQtbG9jay1mb250aWZ5LWtl eXdvcmRzLXJlZ2lvbiBmb250LWxvY2stZGVmYXVsdC1mb250aWZ5LXJlZ2lvbiBmb250LWxvY2st Zm9udGlmeS1yZWdpb24gIiM8Y29tcGlsZWQgLTB4NzMzOTQ5MzY5NGFhMDI3PiIgaml0LWxvY2st LXJ1bi1mdW5jdGlvbnMgaml0LWxvY2stZm9udGlmeS1ub3cgaml0LWxvY2stZnVuY3Rpb24gcmVk aXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgbmlsIG5pbCBuaWwgbmlsXSAzIFtsaW5l LW1vdmUtdmlzdWFsIGxpbmUtbW92ZSBwcmV2aW91cy1saW5lIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbF0gNCBbc2Nhbi1zZXhwcyBzaG93LXBhcmVuLS1kZWZhdWx0IHNob3ctcGFyZW4tZnVuY3Rp b24gYXBwbHkgdGltZXItZXZlbnQtaGFuZGxlciBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsXSAxIFtlbGRvYy1kaXNwbGF5LWluLWVjaG8tYXJlYSBydW4taG9vay13 aXRoLWFyZ3MgIiM8Y29tcGlsZWQgMHgxMTgxNTkxNWVlNTliYzY+IiAiIzxjb21waWxlZCAweGVj M2ZmOTdkNTg3MDQ2NT4iIGVsaXNwLWVsZG9jLWZ1bmNhbGwgIiM8c3ViciBGNjE2ZTZmNmU3OTZk NmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV8xNz4iIGVsZG9jLWRvY3VtZW50 YXRpb24tZGVmYXVsdCBlbGRvYy0taW52b2tlLXN0cmF0ZWd5IGVsZG9jLXByaW50LWN1cnJlbnQt c3ltYm9sLWluZm8gIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5v bnltb3VzX2xhbWJkYV8xMj4iIGFwcGx5IHRpbWVyLWV2ZW50LWhhbmRsZXIgbmlsIG5pbCBuaWwg bmlsXSA1IFtqaXQtbG9jay1jb250ZXh0LWZvbnRpZnkgIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3 NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV85PiIgYXBwbHkgdGltZXItZXZlbnQt aGFuZGxlciBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0g MTAgW3JlZGlzcGxheV9pbnRlcm5hbFwgXChDXCBmdW5jdGlvblwpIGNvbXBsZXRpbmctcmVhZC1k ZWZhdWx0IHJlYWQtZXh0ZW5kZWQtY29tbWFuZC0xIHJlYWQtZXh0ZW5kZWQtY29tbWFuZCBieXRl LWNvZGUgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbF0gMjYgW3JlZGlzcGxheS0tcHJlLXJlZGlzcGxheS1mdW5jdGlvbnMgcmVkaXNwbGF5X2lu dGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgY29tcGxldGluZy1yZWFkLWRlZmF1bHQgcmVhZC1leHRl bmRlZC1jb21tYW5kLTEgcmVhZC1leHRlbmRlZC1jb21tYW5kIGJ5dGUtY29kZSBjb21tYW5kLWV4 ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDEgW3RyeS1jb21wbGV0 aW9uIGNvbXBsZXRlLXdpdGgtYWN0aW9uICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2 MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfNTQ+IiBjb21wbGV0aW9uLWJhc2ljLXRyeS1jb21w bGV0aW9uICIjPGNvbXBpbGVkIC0weDFiNDAwMTliNjdkNjE0ZmM+IiBjb21wbGV0aW9uLS1zb21l IGNvbXBsZXRpb24tLW50aC1jb21wbGV0aW9uIGNvbXBsZXRpb24tdHJ5LWNvbXBsZXRpb24gY29t cGxldGlvbi0tZG8tY29tcGxldGlvbiBjb21wbGV0aW9uLS1pbi1yZWdpb24tMSAiIzxjb21waWxl ZCAweDY0MmRlNjcwNTg2OWI1Yz4iIGFwcGx5ICIjPGNvbXBpbGVkIC0weGY5Nzg2ZjkyYjU2OWEy PiIgY29tcGxldGlvbi0taW4tcmVnaW9uIGNvbXBsZXRpb24taW4tcmVnaW9uIG1pbmlidWZmZXIt Y29tcGxldGVdIDIwIFtjb21wbGV0aW5nLXJlYWQtZGVmYXVsdCByZWFkLWV4dGVuZGVkLWNvbW1h bmQtMSByZWFkLWV4dGVuZGVkLWNvbW1hbmQgYnl0ZS1jb2RlIGNvbW1hbmQtZXhlY3V0ZSBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA1IFtBdXRvbWF0aWNcIEdD IG5pbF0gMjI3NiBbcHJvZmlsZXItcmVwb3J0IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGUgZXhlY3V0ZS1leHRlbmRlZC1jb21tYW5kIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBj b21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA3 KSkgKDI1ODc0IDU0NTU2IDc0MzI1NyA2ODcwMDApIG5pbF0K --=-=-= Content-Type: text/plain -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at --=-=-=-- From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Michael Albinus Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 26 Sep 2023 14:19:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169573792124271 (code B ref 66117); Tue, 26 Sep 2023 14:19:02 +0000 Received: (at 66117) by debbugs.gnu.org; 26 Sep 2023 14:18:41 +0000 Received: from localhost ([127.0.0.1]:49543 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ql8td-0006JP-10 for submit@debbugs.gnu.org; Tue, 26 Sep 2023 10:18:41 -0400 Received: from mout.gmx.net ([212.227.15.15]:53931) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ql8tX-0006J5-5G for 66117@debbugs.gnu.org; Tue, 26 Sep 2023 10:18:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1695737893; x=1696342693; i=michael.albinus@gmx.de; bh=c+gv3ikqBfTjIwB9ghxskR5rri0jsD0PR6E+wZ4sKNk=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date; b=AZ11m/X0Ga3G/c91UIcZxQYPcJFPujM/rDdYh2IHJQN0oRYX1jYQ5Y6mv6oN2p13xAZGN5um3x8 o/z4v9sRZQAC3iH0t0EHI6OoVy7E6Uv+GvLEQQuxB3yLv871LK2pNSvbZIiAP46ZrI5VT19k1PqFo F5a6V90M6Df0phKK50mMzb7bJrKkXJiZPjRA06Jv42y+UJtS3WKkcHPhylwymw5Pi9L2n7qcw8zxd NA1EIHhKaODHNAv6Y9lTvCYEIFnp9Mzx+H+PF8q89DWiSJRuNsjvDVUH3dL9ItY/aZ/ZyYogQ5n3B w3cMMRJr5jkgiGCoIgkSpfG0sQbmsdJ3Zp+w== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.39.30]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MQ5vW-1qyI3p0NWq-00M691; Tue, 26 Sep 2023 16:18:13 +0200 From: Michael Albinus In-Reply-To: <87o7hp9uw1.fsf@localhost> (Ihor Radchenko's message of "Tue, 26 Sep 2023 08:54:54 +0000") References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <83pm273fc1.fsf@gnu.org> <87o7hp9uw1.fsf@localhost> Date: Tue, 26 Sep 2023 16:18:12 +0200 Message-ID: <87msx9m317.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:xsq1lZ/xVlZIaEy45CSvdo+VV9rbDKyOLYyeXMlN4XyyvKNoklv Hdlk3kBUn/OSrtqOXNgMmaT9I0q3GLwFK7FOfDH+u1ESy3xgGvKM2b/49TghuQfJnDRKwLh 8+XjbOvOFWak0U08g5avWEt0X7Z6xRpRqp6wuv6c9TjhUsYByEA0sj01p+sv2xuc0sVFHxH ZoFb8UBCJKrI115Ho1ldg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:rOoCpcruKxI=;2QYsH1hsqCvE8VlerM9oxscZqS0 qj/EIBG63YdkeIZRvS3HnttRIqtBhhglh2NrZh9+9aTuJ4CVr5ug9vBscPfu3wT2G4IH+sdfR pBy+NRyU/EJMnV44u7zB12UbeKakmfYgCiM8RAJvhSHi6m1AMxXvry1n1LJ7k4f6h6U3iUzx9 9xv51NYQR0fOW1DSNXSJuDJRQCSDucwJPAwvjq0SH5ShzHDKDobRtb6wu2WkPaD0itukfbXl0 wV0gdrGFlVV+2o0uIDeDt++D878Qp1Ca/4yWTEoyiEhl2sD/LsX5gNhDXayVw/kREL4N2lecq i/oILoY7Yi+zvIp45aTsmQB6pJYTddSow/W2RBT8MiK3VZhnT0cWd4u/vuXnU9Qy8770JCLrc AeGI/OWL9FPo34ybUSuiJ8DXpNnm3mBE4P3jQwzL4V3znpJAwhePqsDuqiMjfofXxN+BoMc9F M9TE25JtFXMe/MdThXabhNefgMKksyjDz4XOZJgISz5RuPOwmbPWMG6aCG5Kb+huO/UdU52RD iRaZJOK8aim0X3GE1wo3Qi6CPAzMvHBJKeoY5aZPtQcmxnvOQkdfIsBOLg3/4xiz3hImBVzqX cslZx5D87O/LbJ4ab7K1NLrqa16jJFtRBeWOU81X1CLy65ZiYjNxFNmJuvN2FinSoTwmMQ7iv ijI9xEe3xJDE4f82nnF0ArCKgY/fpdyf2aDqnFH6cT6Ue9uqhuVggo3b8pzO7LA8boLivnjFu MN2QsEsWrQ/e8QleHKF2XrQ0MVawCxJXnbrvzxFknCtiCX9h6JjRqNgH2IU9mjsKxEYt+ZjrW OUzv1wfgj14K79mH98wpFtmplnEtoB93vdxH/hp+Ui3O6g6kQOYoJCQVKuqlzGmIWFLM62zxL O+Gq6F6WHAhSl5JZeMz39/ISdQTorvIhwEKaAsLhBuvD4hnoOyCp+U5eKTLsEejwWIyuwomhX WQfPFj4bLzZb+ukQRZ2C/0d4TUo= X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) Ihor Radchenko writes: Hi Ihor, >> With local files, it seems like insert-file-contents sets it. So >> maybe we should record the file name in the cache in bset_filename. > > Thanks for the pointer! > AFAIU, the relevant code is > > if (NILP (handler)) > { > current_buffer->modtime = mtime; > current_buffer->modtime_size = st.st_size; > bset_filename (current_buffer, orig_filename); > > However, it looks like file handlers are responsible for setting the > filename. So, > > > - ~tramp-handle-insert-file-contents~ > > - ~tramp-archive-handle-insert-file-contents~ > > - ~ange-ftp-insert-file-contents~ > > - ~jka-compr-insert-file-contents~ > > - ~mm-url-insert-file-contents~ > > - ~epa-file-insert-file-contents~ > > may also need to handle the caching. And also all the third-party handlers. That might be hard to synchronize. Why not fill the cache after that code snippet? The handlers have already done their job, buffer-file-name is set. And so does bset_filename in the local case. Best regards, Michael. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 27 Sep 2023 23:32:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169585746215792 (code B ref 66117); Wed, 27 Sep 2023 23:32:01 +0000 Received: (at 66117) by debbugs.gnu.org; 27 Sep 2023 23:31:02 +0000 Received: from localhost ([127.0.0.1]:52677 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qldzi-00046e-76 for submit@debbugs.gnu.org; Wed, 27 Sep 2023 19:31:02 -0400 Received: from mout.web.de ([217.72.192.78]:48803) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qldzf-000468-OA for 66117@debbugs.gnu.org; Wed, 27 Sep 2023 19:31:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273; t=1695857436; x=1696462236; i=michael_heerdegen@web.de; bh=VehoxghAgeE5zTdX03uCtT4YHNl/gBdl/PSiE37ACtg=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date; b=c4tBJ2cMCbEk5TiHvqkD1QFjoP2tC0CxiCndIDTeWeB2+1xis+cd6emkTMJw/7evtyKmLK33XJC 9rNidFcpx++75duYP1gqImttzOQHRg78xqHwihXPmQgqf7O5JDw5+85Sa85Q5kH4tQOuKVDzpvska uAmJ3dQYj8Zgn7Flh79OkQjoFPUqJJIgdw/5Dc7aZalRrNG5o4SZVJ9e54Z2C/8ObtKHk+kxn19cF jz9NNlfkPje+b7gygvOwGwD25X7VVblOZIVKYwZ2bnja3sMG+2T9v5CYeqL0sYm7kS/Y7B+gfVwp2 F4cYtLlbg+V2by+pId7vUJueWXAnPo++UgUg== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Received: from drachen.dragon ([88.66.201.191]) by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1MKuKF-1r4gIz1py1-00L1C1; Thu, 28 Sep 2023 01:30:36 +0200 From: Michael Heerdegen In-Reply-To: <87pm2584oz.fsf@localhost> (Ihor Radchenko's message of "Tue, 26 Sep 2023 13:06:04 +0000") References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> Date: Thu, 28 Sep 2023 01:30:37 +0200 Message-ID: <87zg17b3du.fsf@web.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:96YqgwleL+nkq82ypB3rJsmoitp9/vSfM3qGS7vMYNUppSoIGe5 F5u2N0fjyJGkzwWvjldTMeS25iXH35GF7SqaJHsU7l1TaFQ7F3RKM7yPceQNyZM1GMlrmQd DT2Yw4XKiX0BxTsrtHusZSz6ug5+2H5/59B2QHtQERK1ILfb5xqe63CWa0Q3DvlNWTgPnND mGbwr22ddUBfmRY3jdZ0g== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:zFzxmrEUJfw=;hFTJdfbTFsHjtIXvTcgd2NGC4R7 iKDCzMn1yUXIiUE2SFvf0F+f+zjze71M68UD5iCH4tcTrlJk7otyawZDWbpzCnenGSZFmSDZB PBko2bLqFyfbUEbhySZkp8yF4Hu6PV5QJT/F6OXEvoQ2k2k6puAbQrM7RvcxYKs4e9e66beIl xOfHOELz/YR6U4uiKrpekLVqUYCRMmeyDMs3hVVWo+hfvT9mmCeYgXrU8ftOgAZ5tDleA5gBq xC1NVD7ruh1D+DH+2ucgJcXjESapTJFu1905h5G6cS4Mhi3gDBF+68Eo3V7BINToy8HqVRt2Q atFDXX6vXLF6oaFuruSpY+HgmS1hoqRe5/Lt3eCl5Kco2kPTcYWNL7UGF5Nu8n2hdMnnwA3L4 feXCRhjU5wvupa1OnIfRIS9K58p2Ek0vX4ZXTQzO5vIuVbxE8V0kfTJzkRkCdFp8JqHQeangi WckdOvz0uR+8vSiu+41RrZXtXWv2AUYZoa7URslDgE62ItcAVcq2+EU7VM0ndL+a1j9NuHMmB xzZTGbe2/NpMKwkmp3Q3/OT3pL8MflxRUpxPhhgnbEqpkRbgjUvwOR5VsVgJjizcgL04CJ38o hSBLdHJyw+gaAQfvomcdSgFBj0anYMuIR9xYhDyn15s8d2miuGtAoWiP05pTAreXFFkASkIX7 v+CRUzm+JxoJICK2OBS+DQ1gSq4AkWrM9LJ5nPbYb2m8pdDGUqJ03JcmrO0WAEzAjKtWVPSKw d7yhSMTe4O1a2vizPa0vub1E15CKlAf9uQRP1OUYjq/QAIWQPN9txcQ6e8odr2tXQtUT9ZuKw t3Mk6duXxDF6R70Hz0tIIWQhUVCXXVkcp/Vjpqw2w4mSg3dlqimRedS9kfCDEMz9NYQFVxB6V 1Kd8wne2sdo2FD5pAe3R7rj0AREycLPwGCQlZisajcvytc3SHop3C2M4ID8LEDjQqI3XhIQOn Dm2Jlw== X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) Ihor Radchenko writes: > So, using `with-current-buffer' when looping over all the buffers is > certainly not optimal (maybe in other places as well). > > However, even `buffer-local-value' is still costly - it adds up over 50% > run time. OTOH - I tried to reproduce your experiments here locally - `find-buffer-visiting' only takes 12% of the total run time here when using the `buffer-local-value' tuned definition of `find-buffer-visiting'. When we additionally merge the two loops in `find-buffer-visiting' into one loop and avoid the duplicated calls of `buffer-local-value', don't we reach a region where maintaining a separate cache doesn't make sense for the additional gain? And I wonder which part(s) of `buffer-local-value' is/are that costly, and why. Storing the same information twice - once in a buffer local variable, and then again in a cache that needs to be updated separately doesn't sound very reasonable. Michael. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 29 Sep 2023 07:33:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.16959727326296 (code B ref 66117); Fri, 29 Sep 2023 07:33:01 +0000 Received: (at 66117) by debbugs.gnu.org; 29 Sep 2023 07:32:12 +0000 Received: from localhost ([127.0.0.1]:55068 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qm7ys-0001dT-AQ for submit@debbugs.gnu.org; Fri, 29 Sep 2023 03:32:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34778) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qm7yc-0001cJ-Bq for 66117@debbugs.gnu.org; Fri, 29 Sep 2023 03:32:08 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qm7yB-00045J-O4; Fri, 29 Sep 2023 03:31:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=4RGrRMDr2mb6xEJJ1NAiOdIMcQdSq4Icbl5WoLmnwlc=; b=IBwI6f/iY5vy HAFO34oOXIy1JGIsMc5d8bkCaQTEqdfnLA+NAqZFbryTVjBXoLJRpEPIQEUo1r+Mf/zFu424yD5nf x0eedO/D5QknVonS5VaLDPGOJHthkJ+fDS7AgJG9yHoRryiJDOZ8QbD4LX0Bt0uASRyKflp1RPHgF 8mw6OooIAeGKflfF2mLMpZOGz5L9bPjp9weo1hpDdA85D6ABZF4i6yc35Q8GVfDsSfocFl+UWbsRX GdyZ8cwmjYvSdT0J/pJDV6Mdq8fvK6oD3cg4Cnjlh9+wak2z9zH21cvIAXU8vsZspVu79VbO9/gjH ZQDCgv++XLkpjzfSTNDgvQ==; Date: Fri, 29 Sep 2023 10:30:58 +0300 Message-Id: <83cyy11ln1.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87pm2584oz.fsf@localhost> (message from Ihor Radchenko on Tue, 26 Sep 2023 13:06:04 +0000) References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Tue, 26 Sep 2023 13:06:04 +0000 > > Here is a reproducer anyone can try locally: > > 1. Create a dummy set of 1000 files in /tmp/test/: > (dotimes (i 1000) (with-temp-file (format "/tmp/test/%d.org" i) (insert "* This is test"))) > > 2. emacs -Q > 3. Open all the 1000 files one by one: > (dolist (file (directory-files "/tmp/test/" t "org")) > (unless (find-buffer-visiting file) (find-file-noselect file))) > > Step (3) takes 18.8 seconds on my machine. The CPU profile attached as > cpu-profile. Since find-file-noselect calls find-buffer-visiting internally, I'm not sure the above test case makes sense. A Lisp program should feel free to call find-file-noselect directly, and Emacs will find the visiting buffer, if it already exists, as part of the job of find-file-noselect. Let's please focus on test cases where the Lisp code being benchmarked doesn't do any unnecessary stuff, since what's at stake is a significant change in our internals. > If one uses `get-file-buffer' instead of `find-buffer-visiting', the > total runtime becomes 5.1 sec - almost 4x faster. This is also not very interesting, since find-file-noselect calls get-file-buffer as well. > So, it looks like caching `get-file-buffer' is not really necessary. I don't think we are ready for conclusions yet, see above. > >From the profile, the slowest parts of `find-buffer-visiting' are the > two loops checking `buffer-file-truename' and `buffer-file-number' with > most of the time apparently spent executing `with-current-buffer'. I > tested whether `with-current-buffer' is the culprit by replacing it with > `buffer-local-value' calls: If we come to the conclusion that those loops in find-buffer-visiting are the hot spot, the right thing is to implement them in C, where we don't need to use the equivalent of with-current-buffer to examine the truename and file-number of every buffer, we can just access them directly. > The result is 7.8 sec execution time - much better compared to 18.8 > seconds in `with-current-buffer' version, but still worse compared to > 5.1 sec in `get-file-buffer' version. See the attached > cpu-profile-buffer-local-value. As explained above, both the 18.8 and the 5.1 figures are not good base lines upon which to make decisions. > So, using `with-current-buffer' when looping over all the buffers is > certainly not optimal (maybe in other places as well). with-current-buffer is normally very expensive. Which is why any performance-critical loop should try to avoid it as much as possible. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 29 Sep 2023 13:56:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169599575428799 (code B ref 66117); Fri, 29 Sep 2023 13:56:01 +0000 Received: (at 66117) by debbugs.gnu.org; 29 Sep 2023 13:55:54 +0000 Received: from localhost ([127.0.0.1]:56847 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qmDyD-0007UR-SC for submit@debbugs.gnu.org; Fri, 29 Sep 2023 09:55:53 -0400 Received: from mout02.posteo.de ([185.67.36.66]:46195) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qmDyB-0007Lp-Gx for 66117@debbugs.gnu.org; Fri, 29 Sep 2023 09:55:52 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id AC002240101 for <66117@debbugs.gnu.org>; Fri, 29 Sep 2023 15:55:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1695995718; bh=9pKta2dq4HU2c5CJUhHBOFhBtKtjvs24CS05ZQQk2KY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=DzfNDQ96gMj1cc45w2nHjeIgkm7EZHH+DIqZXXMpSVjkbQf2O4m7YWwc+T3erTOMU WPjjsfyexph464BLt+B1n8v5wWdIiEtMYazHIVptYcMopC6iB5qOWbRyuUkC+tZzzB tdwwWLu+wiroIMrLKMFVhr/RvcauakiIPMMlBupFMlNIw6pHQrYHFjwiFdOqRxpvNS BTO0Jh+fyr2885ozCVelnKw348T5dhmJEwb6hWIlalVSIoNSEf/ThYbe3QerFk1TxG xGix7ilnhvCHI5Q4SZJVGCaoL5EaMTR3fohBu1p3e5HzEvs5i/usKhci6AaZ8Z/mLU 4jdLfaOHoCtaw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4RxsLC53VHz6v0Y; Fri, 29 Sep 2023 15:55:15 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <83cyy11ln1.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> Date: Fri, 29 Sep 2023 13:56:40 +0000 Message-ID: <87lecp84mf.fsf@localhost> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --=-=-= Content-Type: text/plain Eli Zaretskii writes: >> 3. Open all the 1000 files one by one: >> (dolist (file (directory-files "/tmp/test/" t "org")) >> (unless (find-buffer-visiting file) (find-file-noselect file))) >> >> Step (3) takes 18.8 seconds on my machine. The CPU profile attached as >> cpu-profile. > > Since find-file-noselect calls find-buffer-visiting internally, I'm > not sure the above test case makes sense. A Lisp program should feel > free to call find-file-noselect directly, and Emacs will find the > visiting buffer, if it already exists, as part of the job of > find-file-noselect. > > Let's please focus on test cases where the Lisp code being benchmarked > doesn't do any unnecessary stuff, since what's at stake is a > significant change in our internals. The reason I left an extra `find-buffer-visiting' call was because Org mode does it (for a reason - we need information if a file was already open or not). You may as well do (dolist (file (directory-files "/tmp/test/" t "org")) (find-file-noselect file)) as step (3). The same conclusions will hold - `find-file-noselect' calls `find-buffer-visiting' as well and it also takes most of the CPU time. I am attaching an updated set of the same profiles, but based on the above `dolist' that only calls `find-file-noselect'. The run times are now: 12.0 seconds, 5.3 seconds, and 6.6 seconds. >> If one uses `get-file-buffer' instead of `find-buffer-visiting', the >> total runtime becomes 5.1 sec - almost 4x faster. > > This is also not very interesting, since find-file-noselect calls > get-file-buffer as well. No. `find-file-noselect' calls `find-buffer-visiting'. > If we come to the conclusion that those loops in find-buffer-visiting > are the hot spot, the right thing is to implement them in C, where we > don't need to use the equivalent of with-current-buffer to examine the > truename and file-number of every buffer, we can just access them > directly. I still think that my previous conclusions are true. And I agree that rewriting these expensive loops in C makes sense. Maybe two new subroutines to find buffer by `buffer-file-truename' and by `buffer-file-number'? They will be an equivalent of `get-file-buffer' that searches by `buffer-file-name'. >> So, using `with-current-buffer' when looping over all the buffers is >> certainly not optimal (maybe in other places as well). > > with-current-buffer is normally very expensive. Which is why any > performance-critical loop should try to avoid it as much as possible. Aside: this reminds me about obsoletion of generalized buffer-local variable. AFAIU, there is currently no way to set buffer-local value in buffer without setting that buffer to current. It would be nice if such setting were possible, especially in performance-critical code. --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=cpu-profile Content-Transfer-Encoding: base64 Cltwcm9maWxlci1wcm9maWxlICIyOC4xIiBjcHUgI3MoaGFzaC10YWJsZSBzaXplIDMyNSB0ZXN0 IGVxdWFsIHJlaGFzaC1zaXplIDEuNSByZWhhc2gtdGhyZXNob2xkIDAuODEyNSBkYXRhIChbcmVk aXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDUgW25pbCBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMiBbYWJicmV2 aWF0ZS1maWxlLW5hbWUgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxp c3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBj b21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDU5IFtvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFz dC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDM3IFtyZXF1aXJl IGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgcHJvZ25dIDEzIFtyZXF1aXJlIGJ5dGUtY29kZSBvcmctbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAy MyBbZGVmaW5lLWtleSBieXRlLWNvZGUgZGVmdmFyIHJlcXVpcmUgYnl0ZS1jb2RlIG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gMyBbcmVxdWlyZSBieXRlLWNvZGUgb3JnLWJhYmVs LWRvLWxvYWQtbGFuZ3VhZ2VzIGN1c3RvbS1pbml0aWFsaXplLXJlc2V0IGN1c3RvbS1kZWNsYXJl LXZhcmlhYmxlIGJ5dGUtY29kZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9k ZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gMyBbcmVx dWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWly ZSBieXRlLWNvZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0gMyBbcmVxdWlyZSBvcmctbG9hZC1tb2R1 bGVzLW1heWJlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDUgW3JlcXVpcmUgYnl0ZS1jb2RlIHJlcXVp cmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ25dIDE3IFtyZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJl IG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRv LW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDIy IFtlYXN5LW1lbnUtY29udmVydC1pdGVtIGVhc3ktbWVudS1jcmVhdGUtbWVudSBlYXN5LW1lbnUt Y29udmVydC1pdGVtLTEgZWFzeS1tZW51LWNvbnZlcnQtaXRlbSBlYXN5LW1lbnUtY3JlYXRlLW1l bnUgZWFzeS1tZW51LWRvLWRlZmluZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIG9yZy1sb2Fk LW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlXSA0IFtt YWtlLWNvbXBvc2VkLWtleW1hcCBieXRlLWNvZGUgZGVmdmFyIHJlcXVpcmUgYnl0ZS1jb2RlIHJl cXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBz ZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBu b3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTFdIDMgW3Rvb2wt YmFyLWxvY2FsLWl0ZW0tZnJvbS1tZW51IGJ5dGUtY29kZSBkZWZ2YXIgcmVxdWlyZSBieXRlLWNv ZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0 XSA0IFtyZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29k ZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0gMTEg W3JlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJl cXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBz ZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBu b3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGVdIDE0IFtyZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJl IGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5 dGUtY29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGVdIDE0IFtyZXF1 aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJl IGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIG9y Zy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wXSAxNiBbcmVxdWly ZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBi eXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRl LWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlXSAxMCBbcmVxdWlyZSBieXRlLWNv ZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUg cmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVx dWlyZSBieXRlLWNvZGVdIDEyIFtkby1hZnRlci1sb2FkLWV2YWx1YXRpb24gcmVxdWlyZSBieXRl LWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNv ZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1t b2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdF0gNCBba2V5LXBh cnNlIGtleW1hcC1zZXQgZGVmaW5lLWtleW1hcCBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUg cmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZV0gNCBbY2wtLWdlbmVyaWMtYnVpbGQtY29tYmlu ZWQtbWV0aG9kIGNsLS1nZW5lcmljLW1ha2UtbmV4dC1mdW5jdGlvbiBjbC0tZ2VuZXJpYy1tYWtl LWZ1bmN0aW9uIGNsLWdlbmVyaWMtZGVmaW5lLW1ldGhvZCBieXRlLWNvZGUgcmVxdWlyZSBieXRl LWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNv ZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZV0gNCBbYnl0ZS1vcHRpbWl6ZS1sYXBjb2RlIGJ5 dGUtY29tcGlsZS1vdXQtdG9wbGV2ZWwgYnl0ZS1jb21waWxlLXRvcC1sZXZlbCBieXRlLWNvbXBp bGUtbGFtYmRhIGJ5dGUtY29tcGlsZS1tYWtlLWNsb3N1cmUgYnl0ZS1jb21waWxlLWZvcm0gYnl0 ZS1jb21waWxlLWJvZHkgYnl0ZS1jb21waWxlLWxldCBieXRlLWNvbXBpbGUtZm9ybSBieXRlLWNv bXBpbGUtdG9wLWxldmVsIGJ5dGUtY29tcGlsZS1sYW1iZGEgYnl0ZS1jb21waWxlLWZ1bmN0aW9u LWZvcm0gYnl0ZS1jb21waWxlLWZvcm0gYnl0ZS1jb21waWxlLXRvcC1sZXZlbCAiIzxzdWJyIEY2 MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzQ5PiIgYnl0 ZS1jb21waWxlXSAzIFttYWtlLWZhY2UteC1yZXNvdXJjZS1pbnRlcm5hbCBmYWNlLXNwZWMtcmVj YWxjIGZhY2Utc3BlYy1zZXQgY3VzdG9tLWRlY2xhcmUtZmFjZSByZXF1aXJlIGJ5dGUtY29kZSBy ZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVs ZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldC1hdXRvLW1vZGVdIDMgW2NhbGwtcHJvY2Vzcy1zaGVsbC1jb21tYW5kIHNoZWxsLWNv bW1hbmQgc2hlbGwtY29tbWFuZC10by1zdHJpbmcgIiM8Y29tcGlsZWQgMHhmZDc5YWE2ZjA4YWQy YjQ+IiBmdW5jYWxsIGV2YWwgY3VzdG9tLWluaXRpYWxpemUtcmVzZXQgY3VzdG9tLWRlY2xhcmUt dmFyaWFibGUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJl cXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZV0gMyBba2V5LXBhcnNlIGtleW1h cC1zZXQgZGVmaW5lLWtleW1hcCBieXRlLWNvZGUgZGVmdmFyIHJlcXVpcmUgYnl0ZS1jb2RlIHJl cXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTFdIDQgW29yZy1lbGVtZW50LWNhY2hlLXJlc2V0 IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSA3IFtyZXF1aXJlIGJ5 dGUtY29kZSBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAzIFtyZXF1aXJlIGJ5dGUtY29k ZSByZXF1aXJlIGJ5dGUtY29kZSBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXRdIDMgW2ZvbnQtbG9jay1tb2RlIHR1cm4tb24tZm9udC1sb2Nr IHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZvbnQtbG9jay1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxp c3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0g NCBbY3JlYXRlLWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA2IFtsb2NhdGUt ZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1ienItcmVnaXN0ZXJlZCB2Yy1jYWxsLWJh Y2tlbmQgIiM8Y29tcGlsZWQgMHg1NTMwYmNmOTYyN2JiZjI+IiBtYXBjIHZjLXJlZ2lzdGVyZWQg dmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDM1IFts b2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1zdm4tcmVnaXN0ZXJlZCB2Yy1j YWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHg1NGMzM2NmOTYyN2JiZjI+IiBtYXBjIHZjLXJlZ2lz dGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRd IDMzIFtkaXItbG9jYWxzLS1hbGwtZmlsZXMgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBkaXItbG9j YWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRpci1sb2Nh bC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUg c2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXRdIDY5IFtvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgb3Jn LXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50 LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbl0gNDYg W2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgaGFjay1s b2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGVdIDMgW2ZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1u b3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsXSA3MDczIFtsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2 Yy1naXQtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHg1NDRjYmNmOTYy N2JiZjI+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1 bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXRdIDMyIFtyZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3Jv dXAgcmVnZXhwLW9wdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBvcmctLWNvbGxlY3Qta2V5d29y ZHMtMSBvcmctY29sbGVjdC1rZXl3b3JkcyBvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1t YWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0XSAzIFtlcmFzZS1i dWZmZXIgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMyBbcmVnZXhw LW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1n cm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdCBvcmctbWFr ZS1vcHRpb25zLXJlZ2V4cCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBvcmctY29sbGVjdC1rZXl3 b3JkcyBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGVdIDMg W3NldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5j YWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDY0IFtpbmhpYml0LWxv Y2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9w LWxpbmUgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1 dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGUgbGV0XSAzNSBbc3RyaW5nLW1hdGNoIGFzc29jLWRlZmF1bHQgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDQgW2ZpbGUtdHJ1ZW5hbWUgZmlsZS10cnVlbmFt ZSBmaWxlLXRydWVuYW1lIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbF0gMTAgW2luaGliaXQtbG9jYWwtdmFyaWFi bGVzLXAgc2V0LWF1dG8tbW9kZS0xIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUg bGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMzUgW3VuaXF1aWZ5LXJhdGlvbmFsaXpl LWZpbGUtYnVmZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNlIGNy ZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDY3OCBbdmMtZmlsZS1jbGVhcnByb3Bz IHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQt ZXhlY3V0ZSBuaWwgbmlsXSAxNyBbYXV0by1jb2RpbmctYWxpc3QtbG9va3VwIGZpbmQtYXV0by1j b2Rpbmcgc2VsZWN0LXNhZmUtY29kaW5nLXN5c3RlbSBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFz c29jaWF0ZWQgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIG9yZy1wZXJzaXN0LXJlZ2lzdGVy IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0XSA0NiBbaW5z ZXJ0LWZpbGUtY29udGVudHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5p bF0gNDYgW2dsb2JhbC1mb250LWxvY2stbW9kZS1jbWhoIGtpbGwtYWxsLWxvY2FsLXZhcmlhYmxl cyBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5p bF0gNiBbdW5pcXVpZnktcmF0aW9uYWxpemUgdW5pcXVpZnktcmF0aW9uYWxpemUtZmlsZS1idWZm ZXItbmFtZXMgdW5pcXVpZnktLWNyZWF0ZS1maWxlLWJ1ZmZlci1hZHZpY2UgY3JlYXRlLWZpbGUt YnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1l eGVjdXRlIG5pbCBuaWwgbmlsXSAzIFtvcmctbWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgb3Jn LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDIxIFtzZWFyY2gtZm9yd2Fy ZCBmaW5kLWF1dG8tY29kaW5nIHNlbGVjdC1zYWZlLWNvZGluZy1zeXN0ZW0gb3JnLXBlcnNpc3Qt LW5vcm1hbGl6ZS1hc3NvY2lhdGVkIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBvcmctcGVy c2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1t b2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldF0gNCBbZmlsZS10cnVlbmFtZSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMjIgW2ZpbGUt bmFtZS1zYW5zLXZlcnNpb25zIGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9k ZS0xIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlXSAxMyBbb3JnLXBlcnNpc3QtcmVhZCBvcmctcGVyc2lzdC1sb2FkIG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHBdIDEwIFtpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIGhhY2stbG9jYWwtdmFy aWFibGVzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1t b2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDMyIFthYmJyZXZpYXRlLWZpbGUtbmFtZSBmaW5k LWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSAyNSBbbG9va3VwLWtleSBlYXN5 LW1lbnUtbG9va3VwLW5hbWUgIiM8Y29tcGlsZWQgMHgxM2RjZWI1NjBkM2M1MWZiPiIgbWFwY2Fy IGVhc3ktbWVudS1nZXQtbWFwIGVhc3ktbWVudS1hZGQtaXRlbSBlYXN5LW1lbnUtY2hhbmdlIG9y Zy1pbnN0YWxsLWFnZW5kYS1maWxlcy1tZW51IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQt YXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3RdIDQgW2ZvbnQt bG9jay1kZWZhdWx0LWZ1bmN0aW9uIGZvbnQtbG9jay1tb2RlIHR1cm4tb24tZm9udC1sb2NrIHR1 cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZvbnQtbG9jay1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dF0gNiBbcmVnZXhwLW9wdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBvcmctLWNvbGxlY3Qta2V5 d29yZHMtMSBvcmctY29sbGVjdC1rZXl3b3JkcyBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMg b3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0XSA3IFtnbG9iYWwtZm9udC1sb2NrLW1v ZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDMgW2Fk ZC10by1pbnZpc2liaWxpdHktc3BlYyBvcmctZm9sZC1jb3JlLXNldC1mb2xkaW5nLXNwZWMtcHJv cGVydHkgIiM8Y29tcGlsZWQgLTB4NDI2ZDE0M2IzZjJkMTIxPiIgb3JnLWZvbGQtY29yZS1hZGQt Zm9sZGluZy1zcGVjIG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXpl IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSAzIFthZGQtaG9vayBvcmctZWxlbWVudC0t Y2FjaGUtc2V0dXAtY2hhbmdlLWZ1bmN0aW9ucyBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8t bW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhw XSA4IFtsb2NhdGUtZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGly LWxvY2FsLS1nZXQtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUg bGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA0IFsiIzxjb21waWxlZCAweGY0NWJkMWVmNmY3 Yzk5Yz4iIG1hcC1rZXltYXAgZWFzeS1tZW51LWxvb2t1cC1uYW1lICIjPGNvbXBpbGVkIDB4MTNk Y2ViNTYwZDNjNTFmYj4iIG1hcGNhciBlYXN5LW1lbnUtZ2V0LW1hcCBlYXN5LW1lbnUtYWRkLWl0 ZW0gZWFzeS1tZW51LWNoYW5nZSBvcmctaW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9k ZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTFdIDMgW2F1 dG8tY29kaW5nLXJlZ2V4cC1hbGlzdC1sb29rdXAgZmluZC1hdXRvLWNvZGluZyBzZWxlY3Qtc2Fm ZS1jb2Rpbmctc3lzdGVtIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBvcmctcGVy c2lzdC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2Fj aGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXRdIDcgW2Rpci1sb2NhbHMtLWFsbC1maWxl cyBsb2NhdGUtZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxv Y2FsLS1nZXQtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHldIDY0IFthYmJyZXZpYXRlLWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxl IGRpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGhhY2st ZGlyLWxvY2FsLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBv cmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1 dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IGxldF0gMTUgW2luaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFz dC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1 dGUgbmlsIG5pbF0gMzMgW2dlbmVyYXRlLW5ldy1idWZmZXIgY3JlYXRlLWZpbGUtYnVmZmVyIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWwgbmlsIG5pbCBuaWxdIDQxIFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0LWxv Y2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9w LWxpbmUgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAxOCBb b3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3Jn LWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1v ZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gNCBbYXV0by1jb2RpbmctcmVnZXhwLWFsaXN0LWxv b2t1cCBmaW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNvZGluZyBpbnNlcnQtZmlsZS1jb250ZW50 cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAzIFthdXRvLWNvZGluZy1hbGlzdC1sb29r dXAgZmluZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgaW5zZXJ0LWZpbGUtY29udGVudHMg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gNDcgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGxv Y2F0ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9jYWwt LWdldC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseV0gMjYgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbF0gMTAgW3N0cmluZy1tYXRjaCBvcmctZm9sZC1jb3JlLS1wcm9wZXJ0eS1z eW1ib2wtZ2V0LWNyZWF0ZSBvcmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQt Y29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0XSAxNiBbb3JnLWJhYmVsLWhpZGUtYWxsLWhhc2hlcyBydW4taG9va3MgYXBw bHkgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2du XSAxNCBbZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBz ZXQtYXV0by1tb2RlLTEgaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIGhhY2stbG9jYWwt dmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSAx MSBbZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBoYWNr LWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgcHJvZ25dIDcgW2luaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9k ZS0xIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAzNCBbYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDQgW2Zp bGUtdHJ1ZW5hbWUgZmlsZS10cnVlbmFtZSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSAyOCBbc2V0LWZh Y2UtYXR0cmlidXRlIHNldC1mYWNlLWZvcmVncm91bmQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMyBb aW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxd IDM0IFthZGQtaG9vayBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNl dCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFz dC1zZXhwXSA0IFtmaWxlLWV4aXN0cy1wICIjPGNvbXBpbGVkIDB4MTk2MTE1OWQ4N2RlYzNhZT4i IG1hcGNhciB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2 Yy1yY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4ZDAzMDAzMDY5 ZDg0NDBlPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBy dW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdF0gMTcgW2xldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMyBbb3JnLS1jb2xsZWN0LWtleXdvcmRzLTEgb3Jn LWNvbGxlY3Qta2V5d29yZHMgb3JnLW1hY3JvLS1jb2xsZWN0LW1hY3JvcyBvcmctbWFjcm8taW5p dGlhbGl6ZS10ZW1wbGF0ZXMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2du XSA2IFtmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gNyBbc2dt bC1odG1sLW1ldGEtYXV0by1jb2RpbmctZnVuY3Rpb24gZmluZC1hdXRvLWNvZGluZyBzZXQtYXV0 by1jb2RpbmcgaW5zZXJ0LWZpbGUtY29udGVudHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5p bF0gMjAgW2ZpbGUtZXhpc3RzLXAgIiM8Y29tcGlsZWQgMHgxZDYyZTc0MTg3ZGVjM2FmPiIgbWFw Y2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNj Y3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTMwNzQzMDY5ZDg0 NDBlPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4t aG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdF0gMTAgW29yZy1zZXR1cC1jb21tZW50cy1oYW5kbGluZyBvcmctbW9kZSBzZXQtYXV0by1t b2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMyBbYWRkLWhvb2sgZm9udC1sb2NrLW1vZGUtaW50ZXJu YWwgZm9udC1sb2NrLWRlZmF1bHQtZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSAzIFtvcmctaW5zdGFsbC1hZ2Vu ZGEtZmlsZXMtbWVudSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxp c3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0g MTQgW2ZpbGUtbmFtZS1kaXJlY3RvcnkgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZh dWx0LXJlZ2lzdGVyZWQgdmMtcmNzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBp bGVkIC0weGJlMzgzMDY5ZDg0NDBlPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMt cmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDcgW3JlZ2V4cC1vcHQtZ3JvdXAgcmVn ZXhwLW9wdC1ncm91cCByZWdleHAtb3B0IG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8t bW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25dIDMgW2ZpbGUtZXhpc3RzLXAgIiM8 Y29tcGlsZWQgMHgxZDJiNzA5NTg3ZGVjM2FmPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1w bGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNyYy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFj a2VuZCAiIzxjb21waWxlZCAtMHgxN2Q4ODMwNjlkODQ0MGU+IiBtYXBjIHZjLXJlZ2lzdGVyZWQg dmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0XSA2IFtzZ21sLXhtbC1hdXRvLWNv ZGluZy1mdW5jdGlvbiBmaW5kLWF1dG8tY29kaW5nIHNlbGVjdC1zYWZlLWNvZGluZy1zeXN0ZW0g b3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVj dGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9k ZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldF0gOCBbZmlsZS1kaXJlY3RvcnktcCBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbF0gMTIgW29yZy1tYWNyby0tZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1tYWNyby0tY29sbGVj dC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIG9yZy1tb2RlIHNldC1hdXRv LW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDU2IFtkZWxldGUt ZHVwcyBvcmctc2V0dXAtZmlsbGluZyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAzIFthYmJyZXZpYXRl LWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1ienItcmVn aXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTA1Y2MzMDY5ZDg0NDBlPiIg bWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3Mg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGVdIDI2IFthYmJyZXZpYXRlLWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxl IHZjLWZpbmQtcm9vdCB2Yy1oZy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxl ZCAtMHgxMWNkMDMwNjlkODQ0MGU+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1y ZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gMTAgW3ZjLXBvc3NpYmxlLW1hc3RlciAi Izxjb21waWxlZCAweDFkMDc4MmUxODdkZWMzYWY+IiBtYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRl bXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc2Njcy1yZWdpc3RlcmVkIHZjLWNhbGwt YmFja2VuZCAiIzxjb21waWxlZCAtMHgxMTA1NDMwNjlkODQ0MGU+IiBtYXBjIHZjLXJlZ2lzdGVy ZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0XSAzIFtoYWNrLWxvY2FsLXZh cmlhYmxlcy0tZmluZC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAx MCBbIiM8Y29tcGlsZWQgMHg1MjBmYWU0ZjVhMDg1ZGM+IiBvcmctZm9sZC1jb3JlLWFkZC1mb2xk aW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3Jn LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSA3IFthZGQtaG9vayBvcmctZWxl bWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSA0IFtmb3JtYXQgb3JnLWZvbGQt Y29yZS0tcHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQtY29yZS1hZGQtZm9sZGlu Zy1zcGVjIG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1t b2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gNiBbb3JnLWZvbGQtY29yZS1zZXQtZm9sZGlu Zy1zcGVjLXByb3BlcnR5ICIjPGNvbXBpbGVkIC0weDQyNmQxNDNiM2M4MTEyMT4iIG9yZy1mb2xk LWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQt aW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDEyIFtlYXN5LW1l bnUtY29udmVydC1pdGVtIGVhc3ktbWVudS1jcmVhdGUtbWVudSBlYXN5LW1lbnUtY2hhbmdlIG9y Zy1pbnN0YWxsLWFnZW5kYS1maWxlcy1tZW51IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQt YXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBwcm9nbl0gOSBbcmVnZXhwLW9wdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBvcmctLWNv bGxlY3Qta2V5d29yZHMtMSBvcmctY29sbGVjdC1rZXl3b3JkcyBvcmctbWFjcm8tLWNvbGxlY3Qt bWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBvcmctbW9kZSBzZXQtYXV0by1t b2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZV0gNiBbb3JnLWZvbGQtY29yZS0tcHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUg IiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJk YV8xMj4iIG1hcGNhciBvcmctZm9sZC1jb3JlLS1wcm9wZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSBv cmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9y Zy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXRdIDMgWyIjPGNvbXBpbGVk IDB4MTUwMzZhMGJkN2JiZmZjZT4iIGFkZC1ob29rIGZvbnQtbG9jay1tb2RlLWludGVybmFsIGZv bnQtbG9jay1kZWZhdWx0LWZ1bmN0aW9uIGZvbnQtbG9jay1tb2RlIHR1cm4tb24tZm9udC1sb2Nr IHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZvbnQtbG9jay1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1t b2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGVdIDMgW3VuaXF1aWZ5LXJhdGlvbmFsaXplLWNvbmZsaWN0aW5nLXN1 Ymxpc3QgdW5pcXVpZnktcmF0aW9uYWxpemUtYS1saXN0IHVuaXF1aWZ5LXJhdGlvbmFsaXplIHVu aXF1aWZ5LXJhdGlvbmFsaXplLWZpbGUtYnVmZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmls ZS1idWZmZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0 IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDE5IFthbGlzdC1nZXQgb3Jn LWZvbGQtY29yZS1nZXQtZm9sZGluZy1zcGVjLWZyb20tYWxpYXMgb3JnLWZvbGQtY29yZS1zZXQt Zm9sZGluZy1zcGVjLXByb3BlcnR5ICIjPGNvbXBpbGVkIC0weDQyNmQxNWZhNDNkNTEyMT4iIG9y Zy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3Jn LWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldF0gNCBbZmlsZS13cml0YWJs ZS1wIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxd IDYgW2ZpbGUtbmFtZS1kaXJlY3RvcnkgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJl c2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0g MyBbZ2V0LWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2du IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZl bHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAyMCBbZmlsZS10cnVl bmFtZSBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxNyBbbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qt c2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5p bF0gNCBbb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0 IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5XSAzIFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0LWxv Y2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMyBbaGFjay1sb2NhbC12YXJpYWJsZXMtLWZpbmQt dmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDEwIFts b2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1oZy1yZWdpc3RlcmVkIHZjLWNh bGwtYmFja2VuZCAiIzxjb21waWxlZCAweDFlODU4N2NmOTYyN2JiZjI+IiBtYXBjIHZjLXJlZ2lz dGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRd IDE4IFtvcmctdXBkYXRlLXJhZGlvLXRhcmdldC1yZWdleHAgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHldIDMgW2hhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhv b2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDQgW29yZy1mb2xkLXJlZ2lvbiBvcmctZm9sZC1zaG93 LWFsbCBvcmctY3ljbGUtc2V0LXN0YXJ0dXAtdmlzaWJpbGl0eSBvcmctbW9kZSBzZXQtYXV0by1t b2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSA3IFtmaWxlcy0tdHJh bnNmb3JtLWZpbGUtbmFtZSBtYWtlLWxvY2stZmlsZS1uYW1lIGluc2VydC1maWxlLWNvbnRlbnRz IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAxMiBbY2FyIG9yZy1mb2xkLWNvcmUt Z2V0LWZvbGRpbmctc3BlYy1mcm9tLWFsaWFzIG9yZy1mb2xkLWNvcmUtc2V0LWZvbGRpbmctc3Bl Yy1wcm9wZXJ0eSAiIzxjb21waWxlZCAtMHg0MjZkMTQzYjNmMmQxMjE+IiBvcmctZm9sZC1jb3Jl LWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRp YWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXRdIDMgW3NlYXJjaC1mb3J3YXJkIGZpbmQtYXV0 by1jb2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbCBuaWxdIDMgWyIjPGNvbXBpbGVkIC0weDE0MzQ0NTVjYzA5OWNjOGU+IiBy ZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAt b3B0IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIG9yZy1j b2xsZWN0LWtleXdvcmRzIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTFdIDQgW2FiYnJldmlh dGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLXN2bi1y ZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweDFjODA0M2NmOTYyN2JiZjI+ IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29r cyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZV0gMjEgW2ZpbGUtbmFtZS1kaXJlY3RvcnkgdmMtY2hlY2stbWFzdGVyLXRlbXBs YXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc2Njcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFj a2VuZCAiIzxjb21waWxlZCAweDFjOWYzZmNmOTYyN2JiZjI+IiBtYXBjIHZjLXJlZ2lzdGVyZWQg dmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gNCBbcnVuLWhv b2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxd IDMgW2ZpbGUtbmV3ZXItdGhhbi1maWxlLXAgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1l eGVjdXRlIG5pbCBuaWwgbmlsIG5pbF0gNCBbc2V0LWF1dG8tbW9kZS0xIGhhY2stbG9jYWwtdmFy aWFibGVzLXByb3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gNCBbZm9udC1sb2Nr LXR1cm4tb24tdGhpbmctbG9jayBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250LWxvY2stZGVm YXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZv bnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVy cyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1h dXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xXSAzIFtjZHIgYnVmZmVyLWxpc3Qgb3JnLWluc3Rh bGwtYWdlbmRhLWZpbGVzLW1lbnUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1v ZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gNiBbb3JnLWlkLXV1aWQgb3JnLXBlcnNpc3QtLWdl dC1jb2xsZWN0aW9uIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0 IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbl0gMTkgW2ludGVybmFsLWdl dC1saXNwLWZhY2UtYXR0cmlidXRlIGZhY2UtYXR0cmlidXRlIGZhY2UtZm9yZWdyb3VuZCBvcmct ZmluZC1pbnZpc2libGUtZm9yZWdyb3VuZCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ25dIDMgW3JlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0 LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3Vw IHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0IG9yZy1tYWtlLW9w dGlvbnMtcmVnZXhwIG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIG9yZy1jb2xsZWN0LWtleXdvcmRz IG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDYgW3VwY2FzZSBvcmctY29sbGVjdC1rZXl3b3JkcyBv cmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1h dXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUg bGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gNyBbYWJicmV2aWF0ZS1maWxlLW5hbWUg bG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMtZ2l0LXJlZ2lzdGVyZWQgdmMt Y2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weGUwNzA3MmNmODA0ZmFmZT4iIG1hcGMgdmMtcmVn aXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSAx OCBbb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseV0gNyBbIiM8Y29tcGlsZWQgLTB4NDI2ZDE1ZmFhNDZkMTIxPiIgb3JnLWZvbGQtY29y ZS1hZGQtZm9sZGluZy1zcGVjIG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0 aWFsaXplIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlz dCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbl0gMyBbcmVnZXhw LW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1n cm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCBy ZWdleHAtb3B0IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0x IG9yZy1jb2xsZWN0LWtleXdvcmRzIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9k ZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZV0gNCBbZmlsZS10cnVlbmFtZSBmaWxlLXRydWVuYW1lIGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWwgbmlsIG5pbF0gOCBbZmlsZS1hdHRyaWJ1dGVzIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5j YWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls XSA0IFtmYWNlLWJhY2tncm91bmQgb3JnLWZpbmQtaW52aXNpYmxlLWZvcmVncm91bmQgb3JnLW1v ZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cF0gNCBbIiM8Y29tcGlsZWQgMHhhZDQwMzU3NzQyMGFmPiIgZmlsZXMtLXRy YW5zZm9ybS1maWxlLW5hbWUgbWFrZS1sb2NrLWZpbGUtbmFtZSBpbnNlcnQtZmlsZS1jb250ZW50 cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA3IFtzZ21sLWh0bWwtbWV0YS1hdXRvLWNv ZGluZy1mdW5jdGlvbiBmaW5kLWF1dG8tY29kaW5nIHNlbGVjdC1zYWZlLWNvZGluZy1zeXN0ZW0g b3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVj dGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9k ZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldF0gMzQgW3ZjLWdpdC1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAi Izxjb21waWxlZCAtMHgxZjlkYTgzMDY5ZDg0NDBlPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJh Y2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cF0gMyBbcmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nIG9yZy1wZXJzaXN0 LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1y ZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25dIDMgW3NlcS1maWx0 ZXIgaGFjay1sb2NhbC12YXJpYWJsZXMtLWZpbmQtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFi bGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlXSA0IFttYXBjIHNlcS1kbyBzZXEtZmluZCBvcmctY2l0ZS1nZXQtcHJvY2Vzc29y IG9yZy1jaXRlLXRyeS1sb2FkLXByb2Nlc3NvciBvcmctc2V0LWZvbnQtbG9jay1kZWZhdWx0cyBv cmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1 dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gMyBbdGhyb3cgIiM8Y29tcGlsZWQgLTB4MThj ZWNkYTRmOTA4MzU2Yz4iIG1hcC1rZXltYXAgZWFzeS1tZW51LWxvb2t1cC1uYW1lICIjPGNvbXBp bGVkIDB4MTNkY2ViNTYwZDNjNTFmYj4iIG1hcGNhciBlYXN5LW1lbnUtZ2V0LW1hcCBlYXN5LW1l bnUtYWRkLWl0ZW0gZWFzeS1tZW51LWNoYW5nZSBvcmctaW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVu dSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGVdIDMgW29yZy1hZ2VuZGEtZmls ZXMgb3JnLWluc3RhbGwtYWdlbmRhLWZpbGVzLW1lbnUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gNCBb dmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDFmYjIyODMwNjlkODQ0MGU+IiBtYXBjIHZj LXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAzIFtsb2Nh dGUtZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxvY2FsLS1n ZXQtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZhcmlhYmxl cyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gNCBbcmVnZXhw LW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1n cm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAg b3JnLS1jb2xsZWN0LWtleXdvcmRzLTEgb3JnLWNvbGxlY3Qta2V5d29yZHMgb3JnLXNldC1yZWdl eHBzLWFuZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1h cHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZV0gMTAg W2Fib3J0LWlmLWZpbGUtdG9vLWxhcmdlIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA0IFtmaW5k LWF1dG8tY29kaW5nIHNlbGVjdC1zYWZlLWNvZGluZy1zeXN0ZW0gb3JnLXBlcnNpc3QtLW5vcm1h bGl6ZS1hc3NvY2lhdGVkIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1y ZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZV0gOSBbZm9udC1sb2NrLWZsdXNoIGZvbnQtbG9jay1zZXQtZGVmYXVsdHMgZm9udC1sb2Nr LW1vZGUtaW50ZXJuYWwgZm9udC1sb2NrLWRlZmF1bHQtZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUg dHVybi1vbi1mb250LWxvY2sgdHVybi1vbi1mb250LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9u dC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9y Zy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZV0gNCBbc3RyaW5nLW1hdGNoIHZjLXJl Z2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDMgW2ZvbnQtbG9jay1pbml0aWFsLWZvbnRpZnkg Zm9udC1sb2NrLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1l eGVjdXRlIG5pbCBuaWxdIDQgW3NlbGVjdC1zYWZlLWNvZGluZy1zeXN0ZW0gb3JnLXBlcnNpc3Qt LW5vcm1hbGl6ZS1hc3NvY2lhdGVkIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBvcmctcGVy c2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1t b2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXRdIDQgW2ZpbGUtcmVtb3RlLXAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxp c3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGUgbmlsXSA3IFsiIzxjb21waWxlZCAweDE5ODAwNzQzNDYwOT4iIGFkZC1ob29rIGZv bnQtbG9jay1tb2RlLWludGVybmFsIGZvbnQtbG9jay1kZWZhdWx0LWZ1bmN0aW9uIGZvbnQtbG9j ay1tb2RlIHR1cm4tb24tZm9udC1sb2NrIHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xv YmFsLWZvbnQtbG9jay1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1o b29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGVdIDMgW2J1ZmZlci1saXN0 IG9yZy1pbnN0YWxsLWFnZW5kYS1maWxlcy1tZW51IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBz ZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdo aWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDI0IFtp bnRlcm4gb3JnLWZvbGQtY29yZS0tcHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQt Y29yZS1hZGQtZm9sZGluZy1zcGVjIG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1p bml0aWFsaXplIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gMyBbb3JnLS1jb2xs ZWN0LWtleXdvcmRzLTEgb3JnLWNvbGxlY3Qta2V5d29yZHMgb3JnLXNldC1yZWdleHBzLWFuZC1v cHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlz dCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHBdIDIyIFsiIzxjb21waWxlZCAweDE1MDM2YTBiZDdiYmZmY2U+IiBhZGQtaG9v ayB0ZXh0LW1vZGUgb3V0bGluZS1tb2RlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbl0gNCBbb3JnLWZvbGQtY29yZS1nZXQtZm9sZGluZy1zcGVjLWZyb20tYWxpYXMgb3Jn LWZvbGQtY29yZS1zZXQtZm9sZGluZy1zcGVjLXByb3BlcnR5ICIjPGNvbXBpbGVkIC0weDQyNmQx NWZhYTQ2ZDEyMT4iIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3Jl LWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZV0gNCBbIiM8Y29tcGlsZWQgLTB4MTFhN2MyMmE5ZGE4OWM5MD4iIHJ1bi1ob29rcyBhcHBs eSBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25d IDQgW3VuaXF1aWZ5LWdldC1wcm9wb3NlZC1uYW1lIHVuaXF1aWZ5LXJhdGlvbmFsaXplIHVuaXF1 aWZ5LXJhdGlvbmFsaXplLWZpbGUtYnVmZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1i dWZmZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdo aWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2Fs bC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA0IFtkZXJpdmVkLW1vZGUt cCBmb250LWxvY2stc2V0LWRlZmF1bHRzIGZvbnQtbG9jay1tb2RlLWludGVybmFsIGZvbnQtbG9j ay1kZWZhdWx0LWZ1bmN0aW9uIGZvbnQtbG9jay1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5XSA0IFtzZXQtbWF0Y2gtZGF0YSAiIzxjb21waWxlZCAweGFkNDAzNWQ0ODE5YWY+ IiByZWdleHAtb3B0IG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25dIDQgW2hhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGlu ZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDMgW2ZvbnQtbG9jay1jb21waWxlLWtl eXdvcmQgZm9udC1sb2NrLWNvbXBpbGUta2V5d29yZHMgZm9udC1sb2NrLXNldC1kZWZhdWx0cyBm b250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250LWxvY2stZGVmYXVsdC1mdW5jdGlvbiBmb250LWxv Y2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGds b2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUt aG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGVdIDMgW2dsb2JhbC1lbGRvYy1tb2RlLWNtaGgga2ls bC1hbGwtbG9jYWwtdmFyaWFibGVzIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAzIFtnZXRoYXNoIG9yZy1wZXJzaXN0LS1maW5kLWluZGV4 IG9yZy1wZXJzaXN0LS1hZGQtdG8taW5kZXggb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIG9y Zy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlXSAzIFtmaW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNvZGluZyBpbnNl cnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gMyBbb3Jn LWZvbGQtY29yZS0tcHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQtY29yZS0tcHJv cGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQtY29yZS1hZGQtZm9sZGluZy1zcGVjIG9y Zy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlIGxldF0gNCBbIiM8c3ViciBzdHJpbmctbGVzc3A+IiByZWdleHAtb3B0 IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIG9yZy1jb2xs ZWN0LWtleXdvcmRzIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGxldCB3aGlsZV0gMyBbb3JnLWZvbGQtY29yZS0tcHJvcGVydHktc3ltYm9sLWdldC1jcmVh dGUgb3JnLWZvbGQtcmVnaW9uIG9yZy1mb2xkLXNob3ctYWxsIG9yZy1jeWNsZS1zZXQtc3RhcnR1 cC12aXNpYmlsaXR5IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbl0gMyBb b3JnLXBlcnNpc3QtLXJlbW92ZS1mcm9tLWluZGV4IG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1l bGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2Rl LS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9n biBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDEzIFtvcmctZm9sZC1jb3JlLS1wcm9wZXJ0eS1zeW1i b2wtZ2V0LWNyZWF0ZSBvcmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29y ZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IHByb2duXSAzIFsiIzxjb21waWxlZCAweDgxZDgzMzU0OWE2YT4iIG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSA2IFt2ZWN0b3IgZWFzeS1tZW51LWxv b2t1cC1uYW1lICIjPGNvbXBpbGVkIDB4MTNkY2ViNTYwZDNjNTFmYj4iIG1hcGNhciBlYXN5LW1l bnUtZ2V0LW1hcCBlYXN5LW1lbnUtYWRkLWl0ZW0gZWFzeS1tZW51LWNoYW5nZSBvcmctaW5zdGFs bC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9k ZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0XSAzIFsiIzxjb21waWxlZCAt MHhiZDQ4ZmZhY2JmZTRmNmQ+IiBhZGQtaG9vayBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250 LWxvY2stZGVmYXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0 dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUt aW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlXSAzIFt2Yy1maWxlLXNldHByb3AgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNr ZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1h bmQtZXhlY3V0ZV0gMyBbc2V0LWF1dG8tbW9kZS0xIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDMgW29yZy1tYWNy by0tZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1tYWNyby0tZmluZC1kYXRlIG9yZy1tYWNyby0tY29s bGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbl0gOCBbb3JnLWV4dHJhY3QtbG9nLXN0YXRlLXNldHRp bmdzIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAzIFtz ZXQtZmFjZS1hdHRyaWJ1dGUgc2V0LWZhY2UtZXh0ZW5kICIjPGNvbXBpbGVkIC0weDE0MTUzM2Q4 MzhhZTdmOGU+IiBvcmctLXNldC1mYWNlcy1leHRlbmQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IHByb2duXSAzIFtpbnRlcm4gZWFzeS1tZW51LWxvb2t1cC1uYW1lICIjPGNvbXBp bGVkIDB4MTNkY2ViNTYwZDNjNTFmYj4iIG1hcGNhciBlYXN5LW1lbnUtZ2V0LW1hcCBlYXN5LW1l bnUtYWRkLWl0ZW0gZWFzeS1tZW51LWNoYW5nZSBvcmctaW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVu dSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0XSAzIFtvcmctZm9sZC1jb3JlLWdldC1mb2xkaW5nLXNwZWMt ZnJvbS1hbGlhcyBvcmctZm9sZC1jb3JlLS1wcm9wZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSBvcmct Zm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1m b2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0XSAzIFtvcmct Y29tcHV0ZS1sYXRleC1hbmQtcmVsYXRlZC1yZWdleHAgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRp b25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDMgW2NkciBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwg bmlsIG5pbCBuaWwgbmlsXSA3IFtyZW1xIGZvbnQtbG9jay1kZWZhdWx0LWZ1bmN0aW9uIGZvbnQt bG9jay1tb2RlIGZvbnQtbG9jay1jaGFuZ2UtbW9kZSB0ZXh0LW1vZGUgb3V0bGluZS1tb2RlIG9y Zy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSAzIFtvcmctbWFjcm8tLWNvdW50ZXItaW5pdGlh bGl6ZSBvcmctbWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0g NCBbZmlsZS10cnVlbmFtZSBmaWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUgZmluZC1idWZmZXIt dmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDMgW2VwYS1maWxlLWZpbmQtZmlsZS1ob29rIHJ1bi1ob29r cyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDMgW29y Zy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHBdIDQgW2FkZC1ob29rIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAzIFtqaXQtbG9jay1yZWZvbnRpZnkg aml0LWxvY2stbW9kZSBqaXQtbG9jay1yZWdpc3RlciBmb250LWxvY2stdHVybi1vbi10aGluZy1s b2NrIGZvbnQtbG9jay1tb2RlLWludGVybmFsIGZvbnQtbG9jay1kZWZhdWx0LWZ1bmN0aW9uIGZv bnQtbG9jay1tb2RlIHR1cm4tb24tZm9udC1sb2NrIHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2ly ZWQgZ2xvYmFsLWZvbnQtbG9jay1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4t bW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0LWF1dG8tbW9kZV0gNCBbdGV4dC1tb2RlIG91dGxpbmUtbW9kZSBvcmctbW9kZSBz ZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBu b3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwt bGFzdC1zZXhwXSA0IFtkZWxxIHNlcS1maWx0ZXIgaGFjay1sb2NhbC12YXJpYWJsZXMtLWZpbmQt dmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHldIDQgW2ludGVybi1zb2Z0IGxpc3AtLWVsLW1hdGNoLWtleXdv cmQgZm9udC1sb2NrLWZvbnRpZnkta2V5d29yZHMtcmVnaW9uIGZvbnQtbG9jay1kZWZhdWx0LWZv bnRpZnktcmVnaW9uIGZvbnQtbG9jay1mb250aWZ5LXJlZ2lvbiAiIzxjb21waWxlZCAtMHg3MzM0 NDgyZDkwMmYwMjc+IiBqaXQtbG9jay0tcnVuLWZ1bmN0aW9ucyBqaXQtbG9jay1mb250aWZ5LW5v dyBqaXQtbG9jay1mdW5jdGlvbiByZWRpc3BsYXlfaW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKSBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMyBbc2Nhbi1zZXhwcyBzaG93LXBhcmVuLS1kZWZhdWx0 IHNob3ctcGFyZW4tZnVuY3Rpb24gYXBwbHkgdGltZXItZXZlbnQtaGFuZGxlciBuaWwgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAyIFtqaXQtbG9jay1jb250ZXh0LWZv bnRpZnkgIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3Vz X2xhbWJkYV85PiIgYXBwbHkgdGltZXItZXZlbnQtaGFuZGxlciBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTggW3JlZGlzcGxheV9pbnRlcm5hbFwgXChD XCBmdW5jdGlvblwpIGNvbXBsZXRpbmctcmVhZC1kZWZhdWx0IHJlYWQtZXh0ZW5kZWQtY29tbWFu ZC0xIHJlYWQtZXh0ZW5kZWQtY29tbWFuZCBieXRlLWNvZGUgY29tbWFuZC1leGVjdXRlIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTkgW2NvbXBsZXRpbmctcmVhZC1k ZWZhdWx0IHJlYWQtZXh0ZW5kZWQtY29tbWFuZC0xIHJlYWQtZXh0ZW5kZWQtY29tbWFuZCBieXRl LWNvZGUgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbCBuaWxdIDMgW3RyeS1jb21wbGV0aW9uIGNvbXBsZXRlLXdpdGgtYWN0aW9uICIjPHN1YnIg RjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfNTQ+IiBj b21wbGV0aW9uLWJhc2ljLXRyeS1jb21wbGV0aW9uICIjPGNvbXBpbGVkIC0weGVlYzEyYjdkZjJh MTRmYz4iIGNvbXBsZXRpb24tLXNvbWUgY29tcGxldGlvbi0tbnRoLWNvbXBsZXRpb24gY29tcGxl dGlvbi10cnktY29tcGxldGlvbiBjb21wbGV0aW9uLS1kby1jb21wbGV0aW9uIGNvbXBsZXRpb24t LWluLXJlZ2lvbi0xICIjPGNvbXBpbGVkIC0weDE2ZTlhN2RlOGRmZDY0YjU+IiBhcHBseSAiIzxj b21waWxlZCAtMHg1MGE4OTkxNTQ0YTlhMj4iIGNvbXBsZXRpb24tLWluLXJlZ2lvbiBjb21wbGV0 aW9uLWluLXJlZ2lvbiBtaW5pYnVmZmVyLWNvbXBsZXRlXSAxMyBbQXV0b21hdGljXCBHQyBuaWxd IDE5ODkgW3Byb2ZpbGVyLXJlcG9ydCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVj dXRlIGV4ZWN1dGUtZXh0ZW5kZWQtY29tbWFuZCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTApKSAo MjU4NzggNTQ1NDEgNjQ0NzQzIDc0MjAwMCkgbmlsXQo= --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=cpu-profile-get-file-buffer Content-Transfer-Encoding: base64 Cltwcm9maWxlci1wcm9maWxlICIyOC4xIiBjcHUgI3MoaGFzaC10YWJsZSBzaXplIDMyNSB0ZXN0 IGVxdWFsIHJlaGFzaC1zaXplIDEuNSByZWhhc2gtdGhyZXNob2xkIDAuODEyNSBkYXRhIChbbmls IG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsXSA1IFtyZWRpc3BsYXlfaW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKSBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTcgW3NjYW4t c2V4cHMgc2hvdy1wYXJlbi0tZGVmYXVsdCBzaG93LXBhcmVuLWZ1bmN0aW9uIGFwcGx5IHRpbWVy LWV2ZW50LWhhbmRsZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bF0gMyBbZnVuY3Rpb24tZ2V0IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMSBbYXV0by1jb2RpbmctYWxpc3Qt bG9va3VwIGZpbmQtYXV0by1jb2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2VydC1maWxlLWNvbnRl bnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gNTUgW29yZy1tb2RlIHNldC1hdXRv LW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cF0gMzkgW3JlcXVpcmUgYnl0ZS1jb2RlIG9yZy1tb2RlIHNldC1hdXRvLW1v ZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0XSAyOCBbcmVxdWlyZSBieXRl LWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRv LW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQqIGxldF0gMTMgW3JlcXVpcmUgYnl0ZS1jb2RlIG9yZy1iYWJlbC1kby1sb2Fk LWxhbmd1YWdlcyBjdXN0b20taW5pdGlhbGl6ZS1yZXNldCBjdXN0b20tZGVjbGFyZS12YXJpYWJs ZSBieXRlLWNvZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gNCBb cmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgb3Jn LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMyBbcmVnZXhwLW9wdC1ncm91 cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdl eHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0 LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0ICIjPGNv bXBpbGVkIC0weGNlYzdlZDc0NjI5MTU5OT4iIGZ1bmNhbGwgZXZhbCBjdXN0b20taW5pdGlhbGl6 ZS1yZXNldCBjdXN0b20tZGVjbGFyZS12YXJpYWJsZV0gMyBbcmVxdWlyZSBvcmctbG9hZC1tb2R1 bGVzLW1heWJlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBs ZXQgd2hpbGUgbGV0XSAxMyBbcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1 bGVzLW1heWJlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBs ZXRdIDEzIFtyZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUt Y29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0g MTggW2Vhc3ktbWVudS1jb252ZXJ0LWl0ZW0tMSBlYXN5LW1lbnUtY29udmVydC1pdGVtIGVhc3kt bWVudS1jcmVhdGUtbWVudSBlYXN5LW1lbnUtZG8tZGVmaW5lIHJlcXVpcmUgYnl0ZS1jb2RlIHJl cXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBz ZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBu b3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGVdIDMgW3JlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUg Ynl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IHByb2duIHVud2luZC1wcm90ZWN0XSAyMSBba2V5LXZhbGlkLXAga2V5bWFwLS1jaGVjayBr ZXltYXAtc2V0IGRlZmluZS1rZXltYXAgZGVmdmFyIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUg Ynl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXli ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDMg W3NvcnQtY29kaW5nLXN5c3RlbXMgYnl0ZS1jb2RlIGRlZnZhciByZXF1aXJlIGJ5dGUtY29kZSBy ZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVs ZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGVdIDMgW3JlcXVpcmUgYnl0ZS1jb2RlIHJlcXVp cmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUg b3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGVdIDcgW3JlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1j b2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQt bW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0LWF1dG8tbW9kZV0gMTcgW3JlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0 ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1j b2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTBdIDkgW3JlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1j b2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2Rl IHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlXSAy MCBbcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUg cmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVx dWlyZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlXSA3IFtkby1hZnRl ci1sb2FkLWV2YWx1YXRpb24gcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVx dWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWly ZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1tb2RlXSAzIFtr ZXktcGFyc2Uga2V5bWFwLXNldCBkZWZpbmUta2V5bWFwIGJ5dGUtY29kZSBkZWZ2YXIgcmVxdWly ZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBi eXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZV0gNCBbZGJ1cy1pbml0LWJ1cyBkYnVz LS1pbml0IGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1 aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJl IG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGVdIDIgW2tleS1wYXJzZSBrZXltYXAtc2V0 IGRlZmluZS1rZXltYXAgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1j b2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGVdIDMgW2J5dGUtb3B0aW1pemUtb25lLWZvcm0gYnl0ZS1jb21waWxlLXRv cC1sZXZlbCAiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1v dXNfbGFtYmRhXzQ5PiIgYnl0ZS1jb21waWxlIGNsLS1nZW5lcmljLWdldC1kaXNwYXRjaGVyIGNs LS1nZW5lcmljLW1ha2UtbmV4dC1mdW5jdGlvbiBjbC0tZ2VuZXJpYy1tYWtlLWZ1bmN0aW9uIGNs LWdlbmVyaWMtZGVmaW5lLW1ldGhvZCBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWly ZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZV0gMyBbcmVxdWlyZSByZXF1aXJl IGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5 dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUt Y29kZSByZXF1aXJlXSAzIFtrZXktcGFyc2Uga2V5bWFwLXNldCBkZWZpbmUta2V5bWFwIGJ5dGUt Y29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3Jn LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdF0gMyBbZWxpc3AtLWZvbnQtbG9jay1mbHVzaC1lbGlzcC1idWZmZXJz IGRvLWFmdGVyLWxvYWQtZXZhbHVhdGlvbiByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUt Y29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIG9yZy1sb2Fk LW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGVdIDEgW3N0cmluZy1tYXRjaCBrZXktdmFsaWQtcCBrZXlt YXAtLWNoZWNrIGtleW1hcC1zZXQgZGVmaW5lLWtleW1hcCBkZWZ2YXIgcmVxdWlyZSBieXRlLWNv ZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZV0gMyBbb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1 dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ25dIDIyIFty ZXF1aXJlIHJlcXVpcmUgYnl0ZS1jb2RlIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXRdIDQgW2FiYnJldmlhdGUt ZmlsZS1uYW1lIGxvY2F0ZS11c2VyLWVtYWNzLWZpbGUgIiM8Y29tcGlsZWQgMHgxNTJmYTRlZTEw OGE4NTk5PiIgZnVuY2FsbCBldmFsIGN1c3RvbS1pbml0aWFsaXplLXJlc2V0IGN1c3RvbS1kZWNs YXJlLXZhcmlhYmxlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29k ZSBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3RdIDMgW2Njb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBm dW5jdGlvbiBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5p bCBuaWwgbmlsIG5pbF0gMyBbZmlsZXMtLXRyYW5zZm9ybS1maWxlLW5hbWUgbWFrZS1hdXRvLXNh dmUtZmlsZS1uYW1lIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0IHByb2du IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZl bHkgY29tbWFuZC1leGVjdXRlXSAxMyBbZGlyLWxvY2Fscy0tYWxsLWZpbGVzIGxvY2F0ZS1kb21p bmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdldC12YXJp YWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCog bGV0IHdoaWxlIGxldCBwcm9nbl0gNzUgW2Vhc3ktbWVudS1kZWZpbmUta2V5IGVhc3ktbWVudS1h ZGQtaXRlbSBlYXN5LW1lbnUtY2hhbmdlIG9yZy1pbnN0YWxsLWFnZW5kYS1maWxlcy1tZW51IG9y Zy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXRdIDYgW2F1dG8t Y29kaW5nLXJlZ2V4cC1hbGlzdC1sb29rdXAgZmluZC1hdXRvLWNvZGluZyBzZWxlY3Qtc2FmZS1j b2Rpbmctc3lzdGVtIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBvcmctcGVyc2lz dC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUt cmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbl0gNiBbZGlyLWxvY2Fscy0tYWxsLWZpbGVz IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9j YWwtLWdldC12YXJpYWJsZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFy aWFibGVzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1t b2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ25dIDYxIFthYmJy ZXZpYXRlLWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1z dm4tcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MWM5MjUzNzU0ZGM4 NDQwYj4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVu LWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3RdIDM4IFtsb2NhdGUtZG9taW5hdGluZy1maWxlIHZj LWZpbmQtcm9vdCB2Yy1naXQtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQg LTB4MWM5MGZiNzU0ZGM4NDQwYj4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJl ZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0Kl0gMjcgW2ZpbGUt dHJ1ZW5hbWUgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0 IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gMjcgWyIjPGNv bXBpbGVkIDB4MmNmMjU3NGYxMDdjOTljPiIgbWFwLWtleW1hcCBlYXN5LW1lbnUtbG9va3VwLW5h bWUgIiM8Y29tcGlsZWQgMHgxM2RkYzYxZDQ4M2M1MWZiPiIgbWFwY2FyIGVhc3ktbWVudS1nZXQt bWFwIGVhc3ktbWVudS1hZGQtaXRlbSBlYXN5LW1lbnUtY2hhbmdlIG9yZy1pbnN0YWxsLWFnZW5k YS1maWxlcy1tZW51IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMV0gNyBbc2VhcmNoLWZvcndhcmQgZmluZC1hdXRvLWNvZGluZyBzZWxlY3Qt c2FmZS1jb2Rpbmctc3lzdGVtIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBvcmct cGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQt Y2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbl0gMTEgW3JlbW92ZS1ob29rIGZv bnQtbG9jay10dXJuLW9uLXRoaW5nLWxvY2sgZm9udC1sb2NrLW1vZGUtaW50ZXJuYWwgZm9udC1s b2NrLWRlZmF1bHQtZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVy bi1vbi1mb250LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWlu LWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZV0gMyBbdW5pcXVpZnktcmF0aW9uYWxpemUtZmlsZS1idWZmZXItbmFtZXMg dW5pcXVpZnktLWNyZWF0ZS1maWxlLWJ1ZmZlci1hZHZpY2UgY3JlYXRlLWZpbGUtYnVmZmVyIGZp bmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSA4MDIgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGZp bmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDQ0IFt2Yy1tYWtlLWJhY2tlbmQt c3ltIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1zY2NzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNr ZW5kICIjPGNvbXBpbGVkIC0weDFmYWY0Zjc1NGRjODQ0MGI+IiBtYXBjIHZjLXJlZ2lzdGVyZWQg dmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0 IGxldCpdIDcgW29yZy1wZXJzaXN0LXJlYWQgb3JnLXBlcnNpc3QtbG9hZCBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldF0gMjIgW2xvY2F0 ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLWhnLXJlZ2lzdGVyZWQgdmMtY2FsbC1i YWNrZW5kICIjPGNvbXBpbGVkIC0weDFlM2U1Nzc1NGRjODQ0MGI+IiBtYXBjIHZjLXJlZ2lzdGVy ZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90 ZWN0IGxldCpdIDYyIFtnZXQtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVu d2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBu aWwgbmlsIG5pbF0gMjAgW3NldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eV0gNDQgW2FkZC1ob29rIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1h cHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0KiBsZXQgd2hpbGUgbGV0IHByb2duXSA0IFtpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIGhh Y2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGVdIDIwIFtsb2NhdGUtZG9taW5hdGluZy1m aWxlIHZjLWZpbmQtcm9vdCB2Yy1zdm4tcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29t cGlsZWQgLTB4MWZmZWJiNzU0ZGM4NDQwYj4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5k IHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0Kl0gNTAg W2xvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLWJ6ci1yZWdpc3RlcmVkIHZj LWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxZjkyZmY3NTRkYzg0NDBiPiIgbWFwYyB2Yy1y ZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqXSAzNyBbZmlsZS10cnVlbmFtZSBmaWxlLXRydWVuYW1lIGZpbmQtZmls ZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gOSBbdW5pcXVpZnktcmF0aW9uYWxpemUgdW5pcXVp ZnktcmF0aW9uYWxpemUtZmlsZS1idWZmZXItbmFtZXMgdW5pcXVpZnktLWNyZWF0ZS1maWxlLWJ1 ZmZlci1hZHZpY2UgY3JlYXRlLWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1z ZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVd IDExIFthYmJyZXZpYXRlLWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIGRpci1sb2Nh bHMtZmluZC1maWxlIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ25d IDE4IFtjZHIgYnVmZmVyLWxpc3Qgb3JnLWluc3RhbGwtYWdlbmRhLWZpbGVzLW1lbnUgb3JnLW1v ZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZV0gOSBbc3Ry aW5nLW1hdGNoIG9yZy1mb2xkLWNvcmUtLXByb3BlcnR5LXN5bWJvbC1nZXQtY3JlYXRlIG9yZy1m b2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZv bGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxl dCpdIDIwIFtyZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91 cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdl eHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0 LWdyb3VwIHJlZ2V4cC1vcHQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAgb3JnLS1jb2xsZWN0LWtl eXdvcmRzLTEgb3JnLWNvbGxlY3Qta2V5d29yZHMgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25z IG9yZy1tb2RlXSA2IFsiIzxjb21waWxlZCAweDlkYzIwZWNiZTFhZDEyZT4iIG1hcGMgc2VxLWRv IHNlcS1maW5kIG9yZy1jaXRlLWdldC1wcm9jZXNzb3Igb3JnLWNpdGUtdHJ5LWxvYWQtcHJvY2Vz c29yIG9yZy1zZXQtZm9udC1sb2NrLWRlZmF1bHRzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBz ZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ25d IDQgW2F1dG8tY29kaW5nLWFsaXN0LWxvb2t1cCBmaW5kLWF1dG8tY29kaW5nIHNlbGVjdC1zYWZl LWNvZGluZy1zeXN0ZW0gb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIG9yZy1wZXJz aXN0LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNo ZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxp c3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duXSA0MCBbb3JnLS1jb2xsZWN0LWtleXdv cmRzLTEgb3JnLWNvbGxlY3Qta2V5d29yZHMgb3JnLW1hY3JvLS1jb2xsZWN0LW1hY3JvcyBvcmct bWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1h dXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqIGxldF0gMTkgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGluaGliaXQt bG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9kZS0xIGhhY2stbG9jYWwtdmFyaWFibGVzLXBy b3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0XSAzIFsiIzxjb21waWxlZCAtMHgxZjhiNTc3NTRk Yzg0NDBiPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBy dW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ25dIDQg W2Rpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGhhY2st ZGlyLWxvY2FsLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBv cmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1 dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCpdIDcgW3ZjLWZpbGUt Y2xlYXJwcm9wcyB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0 IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSA2IFt2Yy1maWxlLWdldHByb3AgdmMtcmVnaXN0 ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXBy b3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gMTQg W29yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBvcmctcGVyc2lzdC0tZ2V0LWNvbGxl Y3Rpb24gb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1v ZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldF0gMjIgW2luaGliaXQt bG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9kZS0xIGhhY2stbG9jYWwtdmFyaWFibGVzLXBy b3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0IHByb2duXSAxNyBbZmlsZS1yZW1v dGUtcCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gNyBbc3RyaW5nLW1hdGNoIGFzc29jLWRlZmF1bHQg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2du IHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0 LXNleHBdIDI5IFtvcmctaW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbl0gMTMgW29y Zy1mb2xkLWNvcmUtLXByb3BlcnR5LXN5bWJvbC1nZXQtY3JlYXRlICIjPHN1YnIgRjYxNmU2ZjZl Nzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMTQ+IiBtYXBjYXIgb3Jn LWZvbGQtY29yZS0tcHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQtY29yZS1hZGQt Zm9sZGluZy1zcGVjIG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXpl IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ25dIDQgWyIjPGNvbXBpbGVkIDB4MTk4MDAyNGNlYTM5 PiIgYWRkLWhvb2sgdGV4dC1tb2RlIG91dGxpbmUtbW9kZSBvcmctbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHBy b2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0XSAzIFtsb2NhdGUtZG9taW5hdGluZy1maWxlIGRp ci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAxNiBbc2V0LWZhY2UtYXR0cmlidXRlIHNldC1m YWNlLWV4dGVuZCAiIzxjb21waWxlZCAtMHgxNDE1M2FkNTI4ZmU5YjhlPiIgb3JnLS1zZXQtZmFj ZXMtZXh0ZW5kIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBs ZXRdIDQgW29yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBvcmctbW9kZSBzZXQtYXV0by1t b2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbl0gMjUgW29yZy1w ZXJzaXN0LS1maW5kLWluZGV4IG9yZy1wZXJzaXN0LS1hZGQtdG8taW5kZXggb3JnLXBlcnNpc3Qt cmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQqIGxldF0gMyBbdGhyb3cgb3JnLXBlcnNpc3QtLWZpbmQtaW5k ZXggb3JnLXBlcnNpc3QtLXJlbW92ZS1mcm9tLWluZGV4IG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9y Zy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1t b2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXBy b3RlY3QgbGV0Kl0gNCBbb3JnLWlkLXV1aWQgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIG9y Zy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXRdIDM0IFtyZWdleHAtb3B0LWdyb3Vw IHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBvcmct LWNvbGxlY3Qta2V5d29yZHMtMSBvcmctY29sbGVjdC1rZXl3b3JkcyBvcmctc2V0LXJlZ2V4cHMt YW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbl0gMTQgW29yZy1mb2xkLWNvcmUt Z2V0LWZvbGRpbmctc3BlYy1mcm9tLWFsaWFzIG9yZy1mb2xkLWNvcmUtc2V0LWZvbGRpbmctc3Bl Yy1wcm9wZXJ0eSAiIzxjb21waWxlZCAtMHg0MjZkY2JmMzYxMDgxMjE+IiBvcmctZm9sZC1jb3Jl LWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRp YWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gOCBbcmVtcSBy ZW1vdmUtaG9vayBnbG9iYWwtZWxkb2MtbW9kZS1jaGVjay1idWZmZXJzIHJ1bi1ob29rcyBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2du IHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHBdIDQgW2xvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxvY2Fs cy1maW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgaGFjay1kaXItbG9jYWwt dmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3RdIDEwIFtzZ21sLWh0bWwtbWV0YS1hdXRvLWNv ZGluZy1mdW5jdGlvbiBmaW5kLWF1dG8tY29kaW5nIHNlbGVjdC1zYWZlLWNvZGluZy1zeXN0ZW0g b3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVj dGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9k ZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IHByb2duXSAzMiBbcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0IG9yZy1z ZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1w cm90ZWN0IGxldCogbGV0IHdoaWxlXSAzIFtpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseV0gNDYgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZp bGUgdmMtZmluZC1yb290IHZjLWdpdC1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21w aWxlZCAtMHg3MTJhYjc1NGRjODQ0MGI+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2 Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0XSAyMCBbaW5oaWJp dC1sb2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0by1tb2RlLTEgaGFjay1sb2NhbC12YXJpYWJsZXMt cHJvcC1saW5lIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0Kl0gMzMgW3JlZ2V4cC1vcHQtZ3JvdXAg cmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhw LW9wdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBvcmct Y29sbGVjdC1rZXl3b3JkcyBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0 LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xXSA2IFtmaWxlLXJl bW90ZS1wIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlh YmxlcyBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCpdIDMgW3NlbGVjdC1zYWZlLWNvZGluZy1zeXN0 ZW0gb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIG9yZy1wZXJzaXN0LS1nZXQtY29s bGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8t bW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCpdIDQgW2ZpbGUtbmFtZS1k aXJlY3RvcnkgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQg dmMtc2Njcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHg3ZjA3Zjc1 NGRjODQ0MGI+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRl IHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0XSAzIFtydW4tbW9kZS1ob29rcyBvcmctbW9k ZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9n bl0gOCBbc2V0LWF1dG8tbW9kZS0xIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNr LWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXBy b3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gMyBb c2V0LWZhY2UtYXR0cmlidXRlIHNldC1mYWNlLWZvcmVncm91bmQgb3JnLW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXRdIDQgW2luaGliaXQtbG9j YWwtdmFyaWFibGVzLXAgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDYzIFtmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAxMCBbYWRkLWhvb2sgZm9udC1s b2NrLW1vZGUtaW50ZXJuYWwgZm9udC1sb2NrLWRlZmF1bHQtZnVuY3Rpb24gZm9udC1sb2NrLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAzIFtzZ21sLWh0bWwtbWV0YS1hdXRvLWNvZGluZy1m dW5jdGlvbiBmaW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNvZGluZyBpbnNlcnQtZmlsZS1jb250 ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDIyIFtvcmctbWFjcm8tLWZpbmQt a2V5d29yZC12YWx1ZSBvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFs aXplLXRlbXBsYXRlcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxl dCogbGV0IHdoaWxlXSA0NSBbb3JnLWZvbGQtY29yZS1nZXQtZm9sZGluZy1zcGVjLWZyb20tYWxp YXMgb3JnLWZvbGQtY29yZS0tcHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQtY29y ZS1hZGQtZm9sZGluZy1zcGVjIG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0 aWFsaXplIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlz dCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0Kl0gMyBb ZmlsZS1hdHRyaWJ1dGVzIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQqIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDYg W2FkZC1ob29rIHRleHQtbW9kZSBvdXRsaW5lLW1vZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZV0gNCBbZmlsZS1leGlzdHMtcCAiIzxjb21w aWxlZCAweDU2OGYwNzg4N2RlYzNhZj4iIG1hcGNhciB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVz IHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1yY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQg IiM8Y29tcGlsZWQgLTB4MTQ3Nzc1NGRjODQ0MGI+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFj a2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0XSAxNCBbcmV2ZXJzZSByZWdleHAtb3B0LWdy b3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBv cmctLWNvbGxlY3Qta2V5d29yZHMtMSBvcmctY29sbGVjdC1rZXl3b3JkcyBvcmctc2V0LXJlZ2V4 cHMtYW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0gNCBbaW5zZXJ0LWZpbGUtY29udGVu dHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1w cm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmls XSA1MSBbZmluZC1hdXRvLWNvZGluZyBzZWxlY3Qtc2FmZS1jb2Rpbmctc3lzdGVtIG9yZy1wZXJz aXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gb3Jn LXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1 dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMjggW2ZpbGUtZGlyZWN0b3J5LXAgZmluZC1maWxl LW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gNiBbZmlsZXMtLXRyYW5zZm9ybS1maWxlLW5h bWUgbWFrZS1sb2NrLWZpbGUtbmFtZSBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5j YWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA2IFtmaWxlLW5hbWUtc2Fucy12ZXJz aW9ucyBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSA2IFthYmJyZXZpYXRlLWZpbGUtbmFtZSBsb2NhdGUt ZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1oZy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFj a2VuZCAiIzxjb21waWxlZCAtMHgxOGIwNzc1NGRjODQ0MGI+IiBtYXBjIHZjLXJlZ2lzdGVyZWQg dmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0 XSAxMyBbbGV0KiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbF0gMyBbZmlsZS1uZXdlci10aGFuLWZpbGUtcCBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxd IDIwIFsiIzxjb21waWxlZCAweDE1OWUyNmVjZDdiYmZmY2U+IiBhZGQtaG9vayBmb250LWxvY2st bW9kZS1pbnRlcm5hbCBmb250LWxvY2stZGVmYXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0 dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250 LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3Jn LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlXSAzIFt2Yy1maWxlLXNldHByb3AgdmMt cmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cF0gNiBbb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0IHByb2duXSA3IFtlcSBhbGlzdC1n ZXQgIiM8Y29tcGlsZWQgMHgxNTllMjZlY2Q3YmJmZmNlPiIgYWRkLWhvb2sgaml0LWxvY2stbW9k ZSBqaXQtbG9jay1yZWdpc3RlciBmb250LWxvY2stdHVybi1vbi10aGluZy1sb2NrIGZvbnQtbG9j ay1tb2RlLWludGVybmFsIGZvbnQtbG9jay1kZWZhdWx0LWZ1bmN0aW9uIGZvbnQtbG9jay1tb2Rl IHR1cm4tb24tZm9udC1sb2NrIHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZv bnQtbG9jay1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBv cmctbW9kZV0gMyBbZnVuY3Rpb24tZ2V0IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252 LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAzIFtzZ21sLXhtbC1hdXRvLWNvZGluZy1mdW5jdGlv biBmaW5kLWF1dG8tY29kaW5nIHNlbGVjdC1zYWZlLWNvZGluZy1zeXN0ZW0gb3JnLXBlcnNpc3Qt LW5vcm1hbGl6ZS1hc3NvY2lhdGVkIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBvcmctcGVy c2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1t b2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IHByb2duXSA5IFthYmJyZXZpYXRlLWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIGRp ci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGhhY2stZGly LWxvY2FsLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8t bW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IHByb2duXSAxNCBbZmlsZS1leGlzdHMtcCAiIzxjb21waWxlZCAweDFj MjJhMGI4ODdkZWMzYWY+IiBtYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZh dWx0LXJlZ2lzdGVyZWQgdmMtc3JjLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBp bGVkIC0weGMyMzc3NTRkYzg0NDBiPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMt cmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0gNCBbYWRkLWhvb2sgb3V0bGluZS1tb2RlIG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0XSAzIFt1 bmlxdWlmeS0tY3JlYXRlLWZpbGUtYnVmZmVyLWFkdmljZSBjcmVhdGUtZmlsZS1idWZmZXIgZmlu ZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAxNCBbZ2V0aGFzaCBvcmctcGVyc2lzdC0t ZmluZC1pbmRleCBvcmctcGVyc2lzdC0tYWRkLXRvLWluZGV4IG9yZy1wZXJzaXN0LXJlZ2lzdGVy IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0Kl0gMyBbZm9udC1sb2NrLWNvbXBpbGUta2V5d29yZCBmb250LWxvY2stY29t cGlsZS1rZXl3b3JkcyBmb250LWxvY2stc2V0LWRlZmF1bHRzIGZvbnQtbG9jay1tb2RlLWludGVy bmFsIGZvbnQtbG9jay1kZWZhdWx0LWZ1bmN0aW9uIGZvbnQtbG9jay1tb2RlIHR1cm4tb24tZm9u dC1sb2NrIHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZvbnQtbG9jay1tb2Rl LWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZV0gOSBbZmlsZS1tb2RlcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDMgW2FiYnJldmlhdGUtZmlsZS1uYW1l IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLWJ6ci1yZWdpc3RlcmVkIHZj LWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxMWNhYjc3NTRkYzg0NDBiPiIgbWFwYyB2Yy1y ZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndp bmQtcHJvdGVjdF0gMTkgW29yZy1mb2xkLXJlZ2lvbiBvcmctZm9sZC1zaG93LWFsbCBvcmctY3lj bGUtc2V0LXN0YXJ0dXAtdmlzaWJpbGl0eSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlXSAzIFttYWtlLWxvY2stZmlsZS1uYW1lIGluc2VydC1m aWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFz dC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1 dGUgbmlsXSAzIFsiIzxjb21waWxlZCAweDUyMGZhZTRmNWEwODVkYz4iIG9yZy1mb2xkLWNvcmUt YWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlh bGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0XSA2 IFtmaWxlLWV4aXN0cy1wICIjPGNvbXBpbGVkIDB4NDNlNjEwMDg3ZGVjM2FmPiIgbWFwY2FyIHZj LWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNjY3MtcmVn aXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTFmODdmNzU0ZGM4NDQwYj4i IG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tz IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Rd IDEwIFt1bmlxdWlmeS1yYXRpb25hbGl6ZS1jb25mbGljdGluZy1zdWJsaXN0IHVuaXF1aWZ5LXJh dGlvbmFsaXplLWEtbGlzdCB1bmlxdWlmeS1yYXRpb25hbGl6ZSB1bmlxdWlmeS1yYXRpb25hbGl6 ZS1maWxlLWJ1ZmZlci1uYW1lcyB1bmlxdWlmeS0tY3JlYXRlLWZpbGUtYnVmZmVyLWFkdmljZSBj cmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0 IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHBdIDE3IFtmb3JtYXQgb3JnLW1hY3JvLS1maW5kLWtleXdvcmQtdmFsdWUgb3JnLW1hY3Jv LS1jb2xsZWN0LW1hY3JvcyBvcmctbWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgb3JnLW1vZGUg c2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldF0gNyBbZWFzeS1tZW51LWNv bnZlcnQtaXRlbSBlYXN5LW1lbnUtYWRkLWl0ZW0gZWFzeS1tZW51LWNoYW5nZSBvcmctaW5zdGFs bC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9k ZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90 ZWN0IGxldCogbGV0XSAzIFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0LWxvY2FsLXZh cmlhYmxlcy1wIHNldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUg aGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldF0gMTkgW2ZpbGVzLS10cmFuc2Zvcm0tZmlsZS1u YW1lIG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSBhdXRvLXNhdmUtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1w cm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSA2IFtvcmctY29sbGVjdC1rZXl3b3Jk cyBvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRl cyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxl XSAzIFtvdXRsaW5lLW1vZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ25dIDQgW21ha2UtY2xvc3VyZSB2Yy1yZWdpc3RlcmVk IHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAzIFtvcmct cGVyc2lzdC0tcmVtb3ZlLWZyb20taW5kZXggb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1l bnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQqIGxldCB3aGlsZV0gNDUgW2dldC1maWxlLWJ1ZmZlciBhbmQgbGV0KiBmaW5kLWJ1ZmZlci12 aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5j YWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA5IFtidWZmZXItbGlzdCBvcmctaW5z dGFsbC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1w cm90ZWN0IGxldCogbGV0IHdoaWxlIGxldF0gMjkgW2hhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBo YWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHBy b2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlXSA0IFtyZWdleHAtb3B0LWdyb3VwIHJl Z2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBvcmctLWNv bGxlY3Qta2V5d29yZHMtMSBvcmctY29sbGVjdC1rZXl3b3JkcyBvcmctbWFjcm8tLWNvbGxlY3Qt bWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBvcmctbW9kZSBzZXQtYXV0by1t b2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 XSA0IFthZGQtaG9vayBvcmctZm9sZC1jb3JlLS1pc2VhcmNoLXNldHVwIG9yZy1mb2xkLWNvcmUt aW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBz ZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0KiBsZXRdIDQgW21hcGNhciBlYXN5LW1lbnUtZ2V0LW1hcCBlYXN5 LW1lbnUtYWRkLWl0ZW0gZWFzeS1tZW51LWNoYW5nZSBvcmctaW5zdGFsbC1hZ2VuZGEtZmlsZXMt bWVudSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCpdIDMgW3By b3ZpZGVkLW1vZGUtZGVyaXZlZC1wIGRlcml2ZWQtbW9kZS1wIG9yZy1pbnN0YWxsLWFnZW5kYS1m aWxlcy1tZW51IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBs ZXQgd2hpbGVdIDQgW2dlbmVyYXRlLW5ldy1idWZmZXIgY3JlYXRlLWZpbGUtYnVmZmVyIGZpbmQt ZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMjQgW29yZy0tY29sbGVjdC1rZXl3b3Jkcy0x IG9yZy1jb2xsZWN0LWtleXdvcmRzIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9k ZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlXSAzNCBbb3Jn LXVwZGF0ZS1yYWRpby10YXJnZXQtcmVnZXhwIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQt YXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0IHByb2duXSA5IFtvcmctcGVyc2lzdC0tYWRk LXRvLWluZGV4IG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3Rl ciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogbGV0XSA0IFtidWZmZXItbmFtZSBvcmctZm9sZC1jb3JlLS1wcm9wZXJ0 eS1zeW1ib2wtZ2V0LWNyZWF0ZSBvcmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZv bGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSA0IFtvcmctZm9sZC1jb3JlLS1wcm9wZXJ0eS1z eW1ib2wtZ2V0LWNyZWF0ZSBvcmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQt Y29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldF0gMTcgW29yZy1iYWJlbC1oaWRlLWFsbC1oYXNo ZXMgcnVuLWhvb2tzIGFwcGx5IHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXRdIDIwIFtmb3JtYXQgdmMtcG9zc2libGUtbWFzdGVy ICIjPGNvbXBpbGVkIDB4MWY3MGE1OTA4N2RlYzNhZT4iIG1hcGNhciB2Yy1jaGVjay1tYXN0ZXIt dGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1yY3MtcmVnaXN0ZXJlZCB2Yy1jYWxs LWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTA0NTBmNzU0ZGM4NDQwYj4iIG1hcGMgdmMtcmVnaXN0 ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMV0gNCBbZmlsZS1yZW1vdGUtcCBoYWNrLWRpci1sb2NhbC0t Z2V0LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0KiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cF0gMyBbcmVtb3ZlLWZyb20taW52aXNpYmlsaXR5LXNwZWMgb3JnLWZvbGQtY29yZS1z ZXQtZm9sZGluZy1zcGVjLXByb3BlcnR5ICIjPGNvbXBpbGVkIC0weDQyNmRjYmYzNmNhMDEyMT4i IG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUg b3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9k ZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90 ZWN0XSA3IFtkZWxxIG9yZy1mb2xkLWNvcmUtLXByb3BlcnR5LXN5bWJvbC1nZXQtY3JlYXRlIG9y Zy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3Jn LWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0 IGxldCpdIDMgW29yZy1tYWNyby0tZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1tYWNyby0tZmluZC1k YXRlIG9yZy1tYWNyby0tY29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxh dGVzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXRdIDEw IFttYXBjIHNlcS1kbyBzZXEtZmluZCBvcmctY2l0ZS1nZXQtcHJvY2Vzc29yIG9yZy1jaXRlLXRy eS1sb2FkLXByb2Nlc3NvciBvcmctc2V0LWZvbnQtbG9jay1kZWZhdWx0cyBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0XSAzIFthbmQgbGV0KiBmaW5kLWJ1ZmZlci12aXNp dGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gNCBbIiM8Y29tcGlsZWQgLTB4NWNm NjQ2OTg1N2EzOWNjPiIgIiM8Y29tcGlsZWQgMHg5ZGMyMGVjYmUxYWQxMmU+IiBtYXBjIHNlcS1k byBzZXEtZmluZCBvcmctY2l0ZS1nZXQtcHJvY2Vzc29yIG9yZy1jaXRlLXRyeS1sb2FkLXByb2Nl c3NvciBvcmctc2V0LWZvbnQtbG9jay1kZWZhdWx0cyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0XSAzIFtv cmctcGVyc2lzdC0tZmluZC1pbmRleCBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBl cnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldF0gMyBbYWRkLWhvb2sgZm9udC1sb2NrLW1v ZGUtaW50ZXJuYWwgZm9udC1sb2NrLWRlZmF1bHQtZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUgdHVy bi1vbi1mb250LWxvY2sgdHVybi1vbi1mb250LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1s b2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1t b2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMV0gMyBb ZXJhc2UtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFz dC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1 dGUgbmlsIG5pbF0gMyBbcmVtb3ZlLWhvb2sgZm9udC1sb2NrLW1vZGUgZm9udC1sb2NrLWNoYW5n ZS1tb2RlIHRleHQtbW9kZSBvdXRsaW5lLW1vZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNl dC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQqXSAzIFtvcmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3Jn LWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1 dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZV0gMyBbb3JnLXNldC1mb250 LWxvY2stZGVmYXVsdHMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQqIGxldCB3aGlsZSBsZXQgcHJvZ25dIDQgW3JlZ2V4cC1vcHQgb3JnLXNldC1yZWdleHBzLWFu ZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBs ZXQgd2hpbGUgbGV0XSA0IFtpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUt MSBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMjMg W2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1 dG8tbW9kZS0xIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQqIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSA2IFtmaWxlLW5h bWUtc2Fucy12ZXJzaW9ucyBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0IHByb2du IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gNCBbaGFjay1sb2NhbC12YXJp YWJsZXMtLWZpbmQtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tz IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGVd IDE1IFtpbnRlcm5hbC1nZXQtbGlzcC1mYWNlLWF0dHJpYnV0ZSBmYWNlLWF0dHJpYnV0ZSBmYWNl LWJhY2tncm91bmQgb3JnLWZpbmQtaW52aXNpYmxlLWZvcmVncm91bmQgb3JnLW1vZGUgc2V0LWF1 dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldF0gMyBbZGVsZXRlLWR1cHMgcmVnZXhw LW9wdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBvcmct Y29sbGVjdC1rZXl3b3JkcyBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0 LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMyBbZm9ybWF0IG9yZy1mb2xkLWNvcmUtLXBy b3BlcnR5LXN5bWJvbC1nZXQtY3JlYXRlIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBv cmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCpdIDEwIFtnZXRlbnYgdmMtc2Njcy1zZWFy Y2gtcHJvamVjdC1kaXIgdmMtcG9zc2libGUtbWFzdGVyICIjPGNvbXBpbGVkIDB4MTJmY2RlMjQ4 N2RlYzNhZT4iIG1hcGNhciB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVn aXN0ZXJlZCB2Yy1zY2NzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4 NGE1YzQ4YWIyMzdiYmY1PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVz aC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlXSA3IFsiIzxjb21waWxlZCAweDE5ODAw MjRjZTI4NT4iIGFkZC1ob29rIGZvbnQtbG9jay1tb2RlLWludGVybmFsIGZvbnQtbG9jay1kZWZh dWx0LWZ1bmN0aW9uIGZvbnQtbG9jay1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0KiBsZXQgd2hpbGUgbGV0IHByb2duXSAzIFtvcmctcGVyc2lzdC1yZWdpc3RlciBvcmct ZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9k ZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90 ZWN0IGxldCogbGV0IHdoaWxlIGxldF0gMyBbbWF0Y2gtc3RyaW5nIG9yZy1zZXQtcmVnZXhwcy1h bmQtb3B0aW9ucyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCog bGV0IHdoaWxlIGxldF0gMyBbY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1m b3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQq IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gNCBbc2VhcmNo LWZvcndhcmQgZmluZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgaW5zZXJ0LWZpbGUtY29u dGVudHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAxMyBbYWRkLWhvb2sgIiM8Y29t cGlsZWQgLTB4MTA1MjkwOGRlZmY2MDA5MD4iIHJ1bi1ob29rcyBhcHBseSBydW4tbW9kZS1ob29r cyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCpdIDcgW2FkZC1o b29rIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGVdIDYgW2ZpbGUt d3JpdGFibGUtcCBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDMgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGluaGliaXQt bG9jYWwtdmFyaWFibGVzLXAgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHBdIDQgWyIjPGNvbXBpbGVkIDB4MTNkZGM2MWRmNWNiYjFmYj4iIG1h cGNhciBlYXN5LW1lbnUtZ2V0LW1hcCBlYXN5LW1lbnUtYWRkLWl0ZW0gZWFzeS1tZW51LWNoYW5n ZSBvcmctaW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IHByb2du IHVud2luZC1wcm90ZWN0XSAzIFtlbGRvYy0tc3VwcG9ydGVkLXAgdHVybi1vbi1lbGRvYy1tb2Rl IGdsb2JhbC1lbGRvYy1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHBdIDQgW29yZy1zZXR1cC1maWxsaW5nIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0IHByb2duXSA3IFttYXAta2V5bWFw IGVhc3ktbWVudS1sb29rdXAtbmFtZSAiIzxjb21waWxlZCAweDEzZGRjNjFkNDgzYzUxZmI+IiBt YXBjYXIgZWFzeS1tZW51LWdldC1tYXAgZWFzeS1tZW51LWFkZC1pdGVtIGVhc3ktbWVudS1jaGFu Z2Ugb3JnLWluc3RhbGwtYWdlbmRhLWZpbGVzLW1lbnUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0gMyBb Y2RyIHVuaXF1aWZ5LXJhdGlvbmFsaXplLWZpbGUtYnVmZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVh dGUtZmlsZS1idWZmZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxl Y3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlXSA2IFtmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IHZjLWNoZWNrLW1hc3Rlci10ZW1w bGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFj a2VuZCAiIzxjb21waWxlZCAtMHgxMDcwNTM3NTRkYzg0NDBiPiIgbWFwYyB2Yy1yZWdpc3RlcmVk IHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVj dF0gMyBbZnNldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSAzIFt2Yy1wb3NzaWJsZS1tYXN0ZXIg IiM8Y29tcGlsZWQgMHgxMzkxNDk0Yzg3ZGVjM2FlPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10 ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZjLWNhbGwt YmFja2VuZCAiIzxjb21waWxlZCAweDQyNDdjOGFiMjM3YmJmNT4iIG1hcGMgdmMtcmVnaXN0ZXJl ZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3RdIDQgW2JhY2t1cC1maWxlLW5h bWUtcCBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1h bmQtZXhlY3V0ZSBuaWxdIDMgW25vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gNCBbaW50ZXJuIG9yZy1m b2xkLWNvcmUtLXByb3BlcnR5LXN5bWJvbC1nZXQtY3JlYXRlIG9yZy1mb2xkLWNvcmUtYWRkLWZv bGRpbmctc3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBv cmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1 dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCpdIDMgW2hhY2stbG9j YWwtdmFyaWFibGVzLS1maW5kLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMTYgW2ZvbnQtbG9j ay10dXJuLW9uLXRoaW5nLWxvY2sgZm9udC1sb2NrLW1vZGUtaW50ZXJuYWwgZm9udC1sb2NrLWRl ZmF1bHQtZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVybi1vbi1m b250LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZl cnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQt YXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMV0gNyBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWlu dGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBsZXQgd2hpbGUgbGV0IHByb2duXSAzIFtm aW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNvZGluZyBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0KiBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qt c2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA3IFtlcGEtZmlsZS1m aW5kLWZpbGUtaG9vayBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDMgW3NnbWwteG1sLWF1dG8tY29kaW5nLWZ1 bmN0aW9uIGZpbmQtYXV0by1jb2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2VydC1maWxlLWNvbnRl bnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMyBbc2V0LW1hdGNoLWRhdGEgIiM8 Y29tcGlsZWQgMHhhZGY1N2Q4MzgxOWFmPiIgYWJicmV2aWF0ZS1maWxlLW5hbWUgbG9jYXRlLWRv bWluYXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZh cmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVu LW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xXSA0IFtvcmctZm9sZC1jb3JlLXNldC1mb2xkaW5nLXNwZWMtcHJvcGVydHkg IiM8Y29tcGlsZWQgLTB4NDI2ZGM1MzFkZDg4MTIxPiIgb3JnLWZvbGQtY29yZS1hZGQtZm9sZGlu Zy1zcGVjIG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1t b2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0Kl0gMyBbYmFja3RyYWNlLWZy YW1lIGNhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgZm9udC1sb2NrLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFz dC1zZXhwIGV2YWwtbGFzdC1zZXhwXSA0IFtvcmctYXNzaWduLWZhc3Qta2V5cyBvcmctc2V0LXJl Z2V4cHMtYW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIGxldCB3aGlsZSBsZXRdIDMgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXpl LWZvcm0gY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2 IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDMgW3JlcGxhY2UtcmVnZXhwLWluLXN0cmluZyBv cmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1l bnQtY2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQqIGxldF0gMyBbZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgaW5oaWJpdC1sb2NhbC12YXJpYWJs ZXMtcCBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogbGV0XSA2IFtyZWdleHAtb3B0LWdyb3VwIHJl Z2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0IG9yZy1tYWtlLW9wdGlv bnMtcmVnZXhwIG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIG9yZy1jb2xsZWN0LWtleXdvcmRzIG9y Zy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0XSAzIFtraWxsLWFs bC1sb2NhbC12YXJpYWJsZXMgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxl dCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDQgW3RleHQtbW9kZSBvdXRsaW5l LW1vZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGxldCB3 aGlsZSBsZXRdIDMgW2ppdC1sb2NrLWNvbnRleHQtZm9udGlmeSAiIzxzdWJyIEY2MTZlNmY2ZTc5 NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzk+IiBhcHBseSB0aW1lci1l dmVudC1oYW5kbGVyIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsXSAxNyBbbWVudS1iYXItdXBkYXRlLWJ1ZmZlcnMgcmVkaXNwbGF5X2ludGVybmFsXCBcKENc IGZ1bmN0aW9uXCkgY29tcGxldGluZy1yZWFkLWRlZmF1bHQgcmVhZC1leHRlbmRlZC1jb21tYW5k LTEgcmVhZC1leHRlbmRlZC1jb21tYW5kIGJ5dGUtY29kZSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDEgW3JlZGlzcGxheV9pbnRlcm5hbFwgXChD XCBmdW5jdGlvblwpIGNvbXBsZXRpbmctcmVhZC1kZWZhdWx0IHJlYWQtZXh0ZW5kZWQtY29tbWFu ZC0xIHJlYWQtZXh0ZW5kZWQtY29tbWFuZCBieXRlLWNvZGUgY29tbWFuZC1leGVjdXRlIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMjQgW2FsbC1jb21wbGV0aW9ucyBj b21wbGV0ZS13aXRoLWFjdGlvbiAiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYy NjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzU0PiIgY29tcGxldGlvbi1wY20tLWFsbC1jb21wbGV0aW9u cyBjb21wbGV0aW9uLWJhc2ljLWFsbC1jb21wbGV0aW9ucyAiIzxjb21waWxlZCAtMHgxZjk4NmUx OTVlZGQyNGZjPiIgY29tcGxldGlvbi0tc29tZSBjb21wbGV0aW9uLS1udGgtY29tcGxldGlvbiBj b21wbGV0aW9uLWFsbC1jb21wbGV0aW9ucyBtaW5pYnVmZmVyLWNvbXBsZXRpb24taGVscCBjb21w bGV0aW9uLS1kby1jb21wbGV0aW9uIGNvbXBsZXRpb24tLWluLXJlZ2lvbi0xICIjPGNvbXBpbGVk IC0weDE2YWIyMmExMjRmZDY0YTQ+IiBhcHBseSAiIzxjb21waWxlZCAtMHhmNzgwYjFkZmY0YTlh Mj4iIGNvbXBsZXRpb24tLWluLXJlZ2lvbl0gMTIgW3dpbmRvdy1pbi1kaXJlY3Rpb24gIiM8Y29t cGlsZWQgLTB4NzRkNzY1NDBmMzRmOGIwPiIgd2Fsay13aW5kb3ctdHJlZS0xIHdhbGstd2luZG93 LXRyZWUgZGlzcGxheS1idWZmZXItYXQtYm90dG9tIGRpc3BsYXktYnVmZmVyIHRlbXAtYnVmZmVy LXdpbmRvdy1zaG93IG1pbmlidWZmZXItY29tcGxldGlvbi1oZWxwIGNvbXBsZXRpb24tLWRvLWNv bXBsZXRpb24gY29tcGxldGlvbi0taW4tcmVnaW9uLTEgIiM8Y29tcGlsZWQgLTB4MTZhYjIyYTEy NGZkNjRhND4iIGFwcGx5ICIjPGNvbXBpbGVkIC0weGY3ODBiMWRmZjRhOWEyPiIgY29tcGxldGlv bi0taW4tcmVnaW9uIGNvbXBsZXRpb24taW4tcmVnaW9uIG1pbmlidWZmZXItY29tcGxldGVdIDQg WyIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1i ZGFfNTk+IiByZWFkLWV4dGVuZGVkLWNvbW1hbmQtLWFmZml4YXRpb24gIiM8Y29tcGlsZWQgLTB4 MzgxNzBiMTUyZWI2YWJlPiIgd2luZG93LS1kaXNwbGF5LWJ1ZmZlciBkaXNwbGF5LWJ1ZmZlci1h dC1ib3R0b20gZGlzcGxheS1idWZmZXIgdGVtcC1idWZmZXItd2luZG93LXNob3cgbWluaWJ1ZmZl ci1jb21wbGV0aW9uLWhlbHAgY29tcGxldGlvbi0tZG8tY29tcGxldGlvbiBjb21wbGV0aW9uLS1p bi1yZWdpb24tMSAiIzxjb21waWxlZCAtMHgxNmFiMjJhMTI0ZmQ2NGE0PiIgYXBwbHkgIiM8Y29t cGlsZWQgLTB4Zjc4MGIxZGZmNGE5YTI+IiBjb21wbGV0aW9uLS1pbi1yZWdpb24gY29tcGxldGlv bi1pbi1yZWdpb24gbWluaWJ1ZmZlci1jb21wbGV0ZV0gMyBbZ2VuZXJhdGUtbmV3LWJ1ZmZlciBz dWJzdGl0dXRlLWNvbW1hbmQta2V5cyBjb21wbGV0aW9uLXNldHVwLWZ1bmN0aW9uIGRpc3BsYXkt Y29tcGxldGlvbi1saXN0ICIjPGNvbXBpbGVkIC0weDM4MTcwYjE1MmViNmFiZT4iIHdpbmRvdy0t ZGlzcGxheS1idWZmZXIgZGlzcGxheS1idWZmZXItYXQtYm90dG9tIGRpc3BsYXktYnVmZmVyIHRl bXAtYnVmZmVyLXdpbmRvdy1zaG93IG1pbmlidWZmZXItY29tcGxldGlvbi1oZWxwIGNvbXBsZXRp b24tLWRvLWNvbXBsZXRpb24gY29tcGxldGlvbi0taW4tcmVnaW9uLTEgIiM8Y29tcGlsZWQgLTB4 MTZhYjIyYTEyNGZkNjRhND4iIGFwcGx5ICIjPGNvbXBpbGVkIC0weGY3ODBiMWRmZjRhOWEyPiIg Y29tcGxldGlvbi0taW4tcmVnaW9uXSAzIFtmaXQtd2luZG93LXRvLWJ1ZmZlciBjb21wbGV0aW9u cy0tZml0LXdpbmRvdy10by1idWZmZXIgd2luZG93LS1kaXNwbGF5LWJ1ZmZlciBkaXNwbGF5LWJ1 ZmZlci1hdC1ib3R0b20gZGlzcGxheS1idWZmZXIgdGVtcC1idWZmZXItd2luZG93LXNob3cgbWlu aWJ1ZmZlci1jb21wbGV0aW9uLWhlbHAgY29tcGxldGlvbi0tZG8tY29tcGxldGlvbiBjb21wbGV0 aW9uLS1pbi1yZWdpb24tMSAiIzxjb21waWxlZCAtMHgxNmFiMjJhMTI0ZmQ2NGE0PiIgYXBwbHkg IiM8Y29tcGlsZWQgLTB4Zjc4MGIxZGZmNGE5YTI+IiBjb21wbGV0aW9uLS1pbi1yZWdpb24gY29t cGxldGlvbi1pbi1yZWdpb24gbWluaWJ1ZmZlci1jb21wbGV0ZSBmdW5jYWxsLWludGVyYWN0aXZl bHldIDQgW2Rpc3BsYXktZ3JhcGhpYy1wIGlmIGV2YWwgcmVkaXNwbGF5X2ludGVybmFsXCBcKENc IGZ1bmN0aW9uXCkgY29tcGxldGluZy1yZWFkLWRlZmF1bHQgcmVhZC1leHRlbmRlZC1jb21tYW5k LTEgcmVhZC1leHRlbmRlZC1jb21tYW5kIGJ5dGUtY29kZSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAzIFtjb21wbGV0aW5nLXJlYWQtZGVmYXVsdCByZWFkLWV4 dGVuZGVkLWNvbW1hbmQtMSByZWFkLWV4dGVuZGVkLWNvbW1hbmQgYnl0ZS1jb2RlIGNvbW1hbmQt ZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxMCBb IiM8Y29tcGlsZWQgLTB4MWU2YzM0ZGJmMjQ5OGRhYj4iIHRyeS1jb21wbGV0aW9uIGNvbXBsZXRl LXdpdGgtYWN0aW9uICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fu b255bW91c19sYW1iZGFfNTQ+IiBjb21wbGV0aW9uLWJhc2ljLXRyeS1jb21wbGV0aW9uICIjPGNv bXBpbGVkIC0weDFmOTg2ZGJiMTAyYTE0ZmM+IiBjb21wbGV0aW9uLS1zb21lIGNvbXBsZXRpb24t LW50aC1jb21wbGV0aW9uIGNvbXBsZXRpb24tdHJ5LWNvbXBsZXRpb24gY29tcGxldGlvbi0tZG8t Y29tcGxldGlvbiBjb21wbGV0aW9uLS1pbi1yZWdpb24tMSAiIzxjb21waWxlZCAtMHgxNmFiMjJh MTI0ZmQ2NGE0PiIgYXBwbHkgIiM8Y29tcGlsZWQgLTB4Zjc4MGIxZGZmNGE5YTI+IiBjb21wbGV0 aW9uLS1pbi1yZWdpb24gY29tcGxldGlvbi1pbi1yZWdpb25dIDQgW3RyeS1jb21wbGV0aW9uIGNv bXBsZXRlLXdpdGgtYWN0aW9uICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2 NDYxX2Fub255bW91c19sYW1iZGFfNTQ+IiBjb21wbGV0aW9uLWJhc2ljLXRyeS1jb21wbGV0aW9u ICIjPGNvbXBpbGVkIC0weDFmOTg2ZGJiMTAyYTE0ZmM+IiBjb21wbGV0aW9uLS1zb21lIGNvbXBs ZXRpb24tLW50aC1jb21wbGV0aW9uIGNvbXBsZXRpb24tdHJ5LWNvbXBsZXRpb24gY29tcGxldGlv bi0tZG8tY29tcGxldGlvbiBjb21wbGV0aW9uLS1pbi1yZWdpb24tMSAiIzxjb21waWxlZCAtMHgx NmFiMjJhMTI0ZmQ2NGE0PiIgYXBwbHkgIiM8Y29tcGlsZWQgLTB4Zjc4MGIxZGZmNGE5YTI+IiBj b21wbGV0aW9uLS1pbi1yZWdpb24gY29tcGxldGlvbi1pbi1yZWdpb24gbWluaWJ1ZmZlci1jb21w bGV0ZV0gMTEgW0F1dG9tYXRpY1wgR0MgbmlsXSAxODk5IFtwcm9maWxlci1yZXBvcnQgZnVuY2Fs bC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBleGVjdXRlLWV4dGVuZGVkLWNvbW1hbmQg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWxdIDcpKSAoMjU4NzggNTQ2NzMgNTk0MTQ4IDc1MjAwMCkgbmls XQo= --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=cpu-profile-buffer-local-value Content-Transfer-Encoding: base64 Cltwcm9maWxlci1wcm9maWxlICIyOC4xIiBjcHUgI3MoaGFzaC10YWJsZSBzaXplIDMyNSB0ZXN0 IGVxdWFsIHJlaGFzaC1zaXplIDEuNSByZWhhc2gtdGhyZXNob2xkIDAuODEyNSBkYXRhIChbcmVk aXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDQwIFtkaXJlY3RvcnktZmlsZXMg bGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsXSAzIFtmaWxlcy0tdHJhbnNmb3JtLWZpbGUtbmFtZSBtYWtlLWxvY2stZmlsZS1uYW1l IGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qt c2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAy NCBbb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNl dC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVj dXRlXSAzMSBbcmVxdWlyZSBieXRlLWNvZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1h dXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUg bGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMjEgW2xvYWQg cmVxdWlyZSBieXRlLWNvZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2du IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gNCBbcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRl LWNvZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSAxMCBbbG9hZCBi eXRlLWNvZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMyBbcmVxdWlyZSBieXRlLWNvZGUgcmVxdWly ZSBieXRlLWNvZGUgb3JnLWJhYmVsLWRvLWxvYWQtbGFuZ3VhZ2VzIGN1c3RvbS1pbml0aWFsaXpl LXJlc2V0IGN1c3RvbS1kZWNsYXJlLXZhcmlhYmxlIGJ5dGUtY29kZSBvcmctbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0XSAzIFttYXRjaC1zdHJpbmcga2V5LXBhcnNlIGtleW1hcC1zZXQgZGVmaW5lLWtleW1hcCBk ZWZ2YXIgcmVxdWlyZSBieXRlLWNvZGUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRv LW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXRdIDMgW3JlcXVp cmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlXSAzIFtyZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUg b3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qt c2V4cCBldmFsLWxhc3Qtc2V4cF0gMTEgW3JlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1j b2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZV0gMjAgW2Vhc3ktbWVudS1jb252ZXJ0LWl0ZW0gZWFzeS1tZW51LWNyZWF0ZS1tZW51 IGVhc3ktbWVudS1jb252ZXJ0LWl0ZW0tMSBlYXN5LW1lbnUtY29udmVydC1pdGVtIGVhc3ktbWVu dS1jcmVhdGUtbWVudSBlYXN5LW1lbnUtZG8tZGVmaW5lIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVp cmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGVdIDMgW3Rvb2wtYmFyLWxvY2FsLWl0ZW0tZnJvbS1tZW51IGJ5dGUtY29kZSBkZWZ2YXIg cmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0XSA0IFtyZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIG9yZy1sb2FkLW1v ZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSAxMyBb cmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVx dWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQt YXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3RdIDE2IFtyZXF1 aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJl IGJ5dGUtY29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1 dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlXSAxNyBbY3VzdG9tLWRlY2xhcmUtdmFyaWFibGUgYnl0ZS1j b2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQt bW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0XSAzIFtyZXF1aXJlIGJ5dGUtY29kZSBy ZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1 aXJlIGJ5dGUtY29kZSByZXF1aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0 LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGVdIDE0 IFtyZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSBy ZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1 aXJlIG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wXSAxMyBb cmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVx dWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWly ZSBieXRlLWNvZGUgcmVxdWlyZSBvcmctbG9hZC1tb2R1bGVzLW1heWJlXSA3IFthdXRvbG9hZCBi eXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRl LWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNv ZGUgcmVxdWlyZSBieXRlLWNvZGVdIDQgW3JlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1j b2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2Rl IHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlXSAx MiBbYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUg Ynl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgb3Jn LWxvYWQtbW9kdWxlcy1tYXliZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9k ZS0tYXBwbHktYWxpc3RdIDMgW2RlZmluZS1rZXltYXAgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1j b2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgb3JnLWxvYWQtbW9kdWxlcy1tYXliZSBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8t bW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0XSA0IFtqaXQtbG9jay1yZWZvbnRpZnkgZm9udC1sb2NrLWZsdXNoIGVs aXNwLS1mb250LWxvY2stZmx1c2gtZWxpc3AtYnVmZmVycyBkby1hZnRlci1sb2FkLWV2YWx1YXRp b24gcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUg cmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGUgcmVxdWlyZSBieXRlLWNvZGVdIDMg W2J5dGUtcnVuLXN0cmlwLXN5bWJvbC1wb3NpdGlvbnMgYnl0ZS1jb21waWxlLWxhbWJkYSBieXRl LWNvbXBpbGUtZnVuY3Rpb24tZm9ybSBieXRlLWNvbXBpbGUtZm9ybSBieXRlLWNvbXBpbGUtdG9w LWxldmVsICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91 c19sYW1iZGFfNDk+IiBieXRlLWNvbXBpbGUgY2wtLWdlbmVyaWMtZ2V0LWRpc3BhdGNoZXIgY2wt LWdlbmVyaWMtbWFrZS1uZXh0LWZ1bmN0aW9uIGNsLS1nZW5lcmljLW1ha2UtZnVuY3Rpb24gY2wt Z2VuZXJpYy1kZWZpbmUtbWV0aG9kIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSByZXF1aXJl IGJ5dGUtY29kZV0gNCBbY2FsbC1wcm9jZXNzICIjPGNvbXBpbGVkIC0weDExOGIzMTk0YzkxNDg2 OWY+IiBmdW5jYWxsIGV2YWwgY3VzdG9tLWluaXRpYWxpemUtcmVzZXQgY3VzdG9tLWRlY2xhcmUt dmFyaWFibGUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJl cXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmUgYnl0ZS1jb2RlIHJlcXVpcmVdIDMgW29yZy1lbGVtZW50 LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSA0 IFtyZXF1aXJlIGJ5dGUtY29kZSBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAzIFtyZXF1 aXJlIGJ5dGUtY29kZSByZXF1aXJlIGJ5dGUtY29kZSBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBv cmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1 dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDMgW2xvY2F0ZS1kb21pbmF0aW5nLWZp bGUgdmMtZmluZC1yb290IHZjLWJ6ci1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21w aWxlZCAtMHgxNTAxMTZjMzIzZjI3YWUyPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQg dmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0XSAzMSBbbGV0KiBvciBsZXQg ZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDcgW2NyZWF0ZS1maWxlLWJ1ZmZlciBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gNiBbaW5zZXJ0LWZpbGUtY29udGVudHMgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21t YW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gNTAgW3VuaXF1aWZ5LXJhdGlvbmFsaXpl LWZpbGUtYnVmZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNlIGNy ZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDY2NCBbYnVmZmVyLWxvY2FsLXZhbHVl IGVxdWFsIGFuZCBpZiB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcg ZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1z ZXhwXSA3MTQgW2F1dG8tY29kaW5nLWFsaXN0LWxvb2t1cCBmaW5kLWF1dG8tY29kaW5nIHNldC1h dXRvLWNvZGluZyBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwg bmlsXSAzNiBbc2V0cSB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0g MTkgW2ZpbGUtdHJ1ZW5hbWUgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDM0IFtsb2NhdGUtZG9t aW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1oZy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2Vu ZCAiIzxjb21waWxlZCAweGI1MzA5ZWU1NGRkM2JmND4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1i YWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gNjggW2ZvbnQt bG9jay1zZXQtZGVmYXVsdHMgZm9udC1sb2NrLW1vZGUtaW50ZXJuYWwgZm9udC1sb2NrLWRlZmF1 bHQtZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVybi1vbi1mb250 LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMg cnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMV0gNCBbZGlyLWxvY2Fscy0tYWxsLWZpbGVzIGxvY2F0 ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdl dC12YXJpYWJsZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVz IHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1h cHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0XSA2OSBbbG9jYXRlLWRvbWlu YXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlh YmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1v ZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDExIFtvcmctbWFjcm8taW5p dGlhbGl6ZS10ZW1wbGF0ZXMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2du IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZl bHldIDEwIFtzZWFyY2gtZm9yd2FyZCBmaW5kLWF1dG8tY29kaW5nIHNlbGVjdC1zYWZlLWNvZGlu Zy1zeXN0ZW0gb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIG9yZy1wZXJzaXN0LS1n ZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNl dCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldF0gMTIgW3N0cmluZy1tYXRjaCBvcmctZm9sZC1jb3Jl LS1wcm9wZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSBvcmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNw ZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUg c2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0XSAxNiBbbG9va2luZy1hdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1s YXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA4 IFthYmJyZXZpYXRlLWZpbGUtbmFtZSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gNDMgW3ZjLWZp bGUtY2xlYXJwcm9wcyB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMTYgW2hhY2stbG9jYWwtdmFyaWFibGVzIHJ1 bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDQgW2Rpci1sb2NhbHMtLWFsbC1maWxl cyBsb2NhdGUtZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxv Y2FsLS1nZXQtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHldIDQ4IFtnZXRoYXNoIG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9yZy1wZXJzaXN0 LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1y ZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDMgW3N0cmluZy1tYXRjaCBh c3NvYy1kZWZhdWx0IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA0MCBbZmlsZS1u ZXdlci10aGFuLWZpbGUtcCBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhw IGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmls IG5pbCBuaWwgbmlsXSAxMiBbZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWxdIDcgW2xvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLXN2bi1yZWdp c3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweGI0NGRkZWU1NGRkM2JmND4iIG1h cGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0 IHdoaWxlIGxldF0gNTMgW29yZy1pZC11dWlkIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBv cmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25dIDM2IFtoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmlu ZC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAzMyBbbWFrZS1sb2Nh bC12YXJpYWJsZSBvcmctZm9sZC1jb3JlLS1wcm9wZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSBvcmct Zm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1m b2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0XSA0IFtsb2Nh dGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1naXQtcmVnaXN0ZXJlZCB2Yy1jYWxs LWJhY2tlbmQgIiM8Y29tcGlsZWQgMHhiN2VjNWVlNTRkZDNiZjQ+IiBtYXBjIHZjLXJlZ2lzdGVy ZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDU1 IFtib3VuZHAgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRv LW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMyBbb3JnLWZvbGQt Y29yZS0tcHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQtY29yZS1hZGQtZm9sZGlu Zy1zcGVjIG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1t b2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbl0gMTAgW2ZpbmQtbmV3LWJ1ZmZlci1m aWxlLWNvZGluZy1zeXN0ZW0gYWZ0ZXItaW5zZXJ0LWZpbGUtc2V0LWNvZGluZyBpbnNlcnQtZmls ZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdo aWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2Fs bC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gMyBbY2RyIGJ1ZmZl ci1saXN0IGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAzIFtyZWdleHAtb3B0 LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3Vw IHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4 cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQt Z3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhw IG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIG9yZy1jb2xsZWN0LWtleXdvcmRzXSA0IFsiIzxjb21w aWxlZCAtMHg0MjZmNGE1MGFmNjA1MjE+IiBvcmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMg b3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0 LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSAzIFtyZW1vdmUtaG9vayBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFz dC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gNyBbb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1h c3NvY2lhdGVkIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3Rl ciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ25dIDM1IFtmaWxlLXdyaXRhYmxlLXAgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbF0gNiBbYnVmZmVyLWxvY2FsLXZhbHVlIHN0cmluZz0g YW5kIGlmIHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFz dC1zZXhwXSA1NCBbb3JnLW1hY3JvLS1maW5kLWtleXdvcmQtdmFsdWUgb3JnLW1hY3JvLS1jb2xs ZWN0LW1hY3JvcyBvcmctbWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgb3JnLW1vZGUgc2V0LWF1 dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gNTUgW2FiYnJl dmlhdGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZp bGUgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMzEgW2ZpbGUtdHJ1ZW5hbWUgZmlsZS10cnVlbmFtZSBm aWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNpdGlu ZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0 ZSBuaWxdIDEzIFthZGQtaG9vayBqaXQtbG9jay1tb2RlIGppdC1sb2NrLXJlZ2lzdGVyIGZvbnQt bG9jay10dXJuLW9uLXRoaW5nLWxvY2sgZm9udC1sb2NrLW1vZGUtaW50ZXJuYWwgZm9udC1sb2Nr LWRlZmF1bHQtZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVybi1v bi1mb250LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1 ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBz ZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlXSA5IFtmb250LWxvY2stbW9k ZSBmb250LWxvY2stY2hhbmdlLW1vZGUgdGV4dC1tb2RlIG91dGxpbmUtbW9kZSBvcmctbW9kZSBz ZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBu b3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25dIDQgW3NnbWwteG1sLWF1dG8tY29kaW5nLWZ1 bmN0aW9uIGZpbmQtYXV0by1jb2Rpbmcgc2VsZWN0LXNhZmUtY29kaW5nLXN5c3RlbSBvcmctcGVy c2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIG9y Zy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0XSA2IFsiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9h bm9ueW1vdXNfbGFtYmRhXzE0PiIgbWFwY2FyIG9yZy1mb2xkLWNvcmUtLXByb3BlcnR5LXN5bWJv bC1nZXQtY3JlYXRlIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3Jl LWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZV0gMyBbZXF1YWwgYW5kIGlmIHdoaWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12 aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDU1IFthYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQg ZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSA5IFtmYWNlLWZvcmVncm91bmQg b3JnLWZpbmQtaW52aXNpYmxlLWZvcmVncm91bmQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNl dC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMyBbYXV0 by1jb2RpbmctcmVnZXhwLWFsaXN0LWxvb2t1cCBmaW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNv ZGluZyBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1s YXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAx NyBbaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9k ZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxp c3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2 YWwtbGFzdC1zZXhwXSAyNiBbZ2V0LWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5j YWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls XSAyOSBbcmVnZXhwLW9wdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBvcmctLWNvbGxlY3Qta2V5 d29yZHMtMSBvcmctY29sbGVjdC1rZXl3b3JkcyBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMg b3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0XSAzIFtub3QgYW5kIHdoaWxlIGxldCBv ciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDIzIFtvcmctaW5zdGFsbC1hZ2VuZGEtZmlsZXMt bWVudSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gNyBbYXV0by1j b2RpbmctYWxpc3QtbG9va3VwIGZpbmQtYXV0by1jb2Rpbmcgc2VsZWN0LXNhZmUtY29kaW5nLXN5 c3RlbSBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgb3JnLXBlcnNpc3QtLWdldC1j b2xsZWN0aW9uIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9y Zy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0XSAzNyBbdW5pcXVpZnktcmF0aW9uYWxpemUgdW5pcXVpZnkt cmF0aW9uYWxpemUtZmlsZS1idWZmZXItbmFtZXMgdW5pcXVpZnktLWNyZWF0ZS1maWxlLWJ1ZmZl ci1hZHZpY2UgY3JlYXRlLWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUg bGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSA5IFtpbmhpYml0LWxvY2Fs LXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2du IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZl bHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDM2IFthYmJyZXZpYXRlLWZpbGUtbmFtZSBsb2Nh dGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1oZy1yZWdpc3RlcmVkIHZjLWNhbGwt YmFja2VuZCAiIzxjb21waWxlZCAtMHgxNThjYmExMWFiMjJjNDBjPiIgbWFwYyB2Yy1yZWdpc3Rl cmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDIzIFtl YXN5LW1lbnUtZ2V0LW1hcCBlYXN5LW1lbnUtYWRkLWl0ZW0gZWFzeS1tZW51LWNoYW5nZSBvcmct aW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ25dIDMgW2ZpbGUtbmFtZS1kaXJlY3RvcnkgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRl cyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc3JjLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5k ICIjPGNvbXBpbGVkIC0weDE1OGQ0ZTExYWIyMmM0MGM+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMt YmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gNCBbYWJicmV2aWF0 ZS1maWxlLW5hbWUgbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMtc3ZuLXJl Z2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDE1ODBmMjExYWIyMmM0MGM+ IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29r cyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZV0gMzQgW2ZpbGUtZXhpc3RzLXAgIiM8Y29tcGlsZWQgMHgxYzllY2NjZTZmZGVj M2FmPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3Rl cmVkIHZjLXNyYy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxNDU3 YTYxMWFiMjJjNDBjPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1z dGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdF0gNiBbb3JnLWZvbGQtY29yZS1hZGQtZm9sZGluZy1zcGVjIG9yZy1mb2xk LWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1tb2RlIHNldC1hdXRvLW1v ZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDYgW3N0cmluZz0gYW5k IGlmIHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2Vs ZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gNDIgWyIjPGNvbXBpbGVkIDB4NTIwZmFlNGY1YTA4 NWRjPiIgb3JnLWZvbGQtY29yZS1hZGQtZm9sZGluZy1zcGVjIG9yZy1mb2xkLWNvcmUtaW5pdGlh bGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbl0gMyBbZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQgZmluZC1i dWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxp c3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBj b21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDE4IFsiIzxjb21waWxlZCAtMHgxODhjYjk2MTRk MDliNTZjPiIgbWFwLWtleW1hcCBlYXN5LW1lbnUtbG9va3VwLW5hbWUgIiM8Y29tcGlsZWQgMHgx M2RmNTNhZjY0ZDQ1MWZiPiIgbWFwY2FyIGVhc3ktbWVudS1nZXQtbWFwIGVhc3ktbWVudS1hZGQt aXRlbSBlYXN5LW1lbnUtY2hhbmdlIG9yZy1pbnN0YWxsLWFnZW5kYS1maWxlcy1tZW51IG9yZy1t b2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMV0gNiBb c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNh bGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gODkgW2luaGliaXQtbG9j YWwtdmFyaWFibGVzLXAgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAxMiBbZmlsZS1y ZW1vdGUtcCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDYgW2V4cGFuZC1m aWxlLW5hbWUgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDE1IFtmaWxlLW1vZGVzIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDMgW29yZy1iYWJl bC1oaWRlLWFsbC1oYXNoZXMgcnVuLWhvb2tzIGFwcGx5IHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbl0gMzQgW2NkciBzZXRxIHdoaWxlIGxldCBv ciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDcgW29yZy1mb2xkLWNvcmUtZ2V0LWZvbGRpbmct c3BlYy1mcm9tLWFsaWFzICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYx X2Fub255bW91c19sYW1iZGFfMTQ+IiBtYXBjYXIgb3JnLWZvbGQtY29yZS0tcHJvcGVydHktc3lt Ym9sLWdldC1jcmVhdGUgb3JnLWZvbGQtY29yZS1hZGQtZm9sZGluZy1zcGVjIG9yZy1mb2xkLWNv cmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0 XSA0IFtlYXN5LW1lbnUtY29udmVydC1pdGVtIGVhc3ktbWVudS1hZGQtaXRlbSBlYXN5LW1lbnUt Y2hhbmdlIG9yZy1pbnN0YWxsLWFnZW5kYS1maWxlcy1tZW51IG9yZy1tb2RlIHNldC1hdXRvLW1v ZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBwcm9nbl0gMyBbaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0 by1tb2RlLTEgaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIGhhY2stbG9jYWwtdmFyaWFi bGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDQwIFtm aWxlLW5hbWUtZGlyZWN0b3J5IHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1y ZWdpc3RlcmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAt MHhiOTQxNmMzMjNmMjdhZTI+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZy ZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gNiBbYXV0by1jb2RpbmctcmVnZXhwLWFsaXN0 LWxvb2t1cCBmaW5kLWF1dG8tY29kaW5nIHNlbGVjdC1zYWZlLWNvZGluZy1zeXN0ZW0gb3JnLXBl cnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBv cmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldF0gMyBbY2FyIGJ1ZmZlci1sb2NhbC12YWx1ZSBhbmQgaWYgd2hpbGUgbGV0IG9y IGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDggW2ZpbGUtbmFt ZS1zYW5zLXZlcnNpb25zIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMTIg W2ZpbGUtZXhpc3RzLXAgIiM8Y29tcGlsZWQgMHg3ZmYzNWY2NmZkZWMzYWY+IiBtYXBjYXIgdmMt Y2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc2Njcy1yZWdp c3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxNzQwOGUxMWFiMjJjNDBjPiIg bWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3Mg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0g NiBbb3JnLXVwZGF0ZS1yYWRpby10YXJnZXQtcmVnZXhwIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0 IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5XSA3IFtyZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAg cmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhw LW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdCBv cmctbWFrZS1vcHRpb25zLXJlZ2V4cCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBvcmctY29sbGVj dC1rZXl3b3JkcyBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSAzIFtmaWxlLXRydWVuYW1lIGZpbGUt dHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWxdIDE1IFtmaWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5p bF0gNiBbZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMg aGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhv b2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gMyBbYWJicmV2aWF0ZS1maWxl LW5hbWUgbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMtYnpyLXJlZ2lzdGVy ZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDE2MjRmYTExYWIyMmM0MGM+IiBtYXBj IHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZV0gNDIgW2FkZC1ob29rICIjPGNvbXBpbGVkIC0weDEyZGY0MzA4OTMxNGZjOTA+IiBydW4t aG9va3MgYXBwbHkgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1h dXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUg bGV0XSAzIFtyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0 aW9uIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbl0gOSBbZmlsZS1hdHRyaWJ1dGVzIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsXSAyMiBbb3JnLW1hY3JvLS1jb3VudGVyLWluaXRpYWxpemUgb3Jn LW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQt YXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDMgW2J1ZmZl ci1saXN0IGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMTggW2ZpbGUt bmFtZS1zYW5zLXZlcnNpb25zIGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgaGFjay1sb2NhbC12 YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxp c3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBj b21tYW5kLWV4ZWN1dGVdIDMgW29yZy1mb2xkLWNvcmUtc2V0LWZvbGRpbmctc3BlYy1wcm9wZXJ0 eSAiIzxjb21waWxlZCAtMHg0MjZmNGIwOWI5ZTg1MjE+IiBvcmctZm9sZC1jb3JlLWFkZC1mb2xk aW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3Jn LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0XSA3IFtmaWxlLWV4aXN0cy1wICIjPGNvbXBp bGVkIDB4NjdjNzkwZTZmZGVjM2FmPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMg dmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAi Izxjb21waWxlZCAtMHgxN2JiZTYxMWFiMjJjNDBjPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJh Y2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0gMTcgWyIjPHN1YnIgRjYxNmU2ZjZlNzk2 ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMTI+IiBzZWxlY3Qtc2FmZS1j b2Rpbmctc3lzdGVtIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBvcmctcGVyc2lz dC0tZ2V0LWNvbGxlY3Rpb24gb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUt cmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDMgW2ZpbGUtcmVtb3RlLXAgaGFj ay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNh bGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAyMSBbZXBhLWZpbGUtZmluZC1m aWxlLWhvb2sgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBu aWwgbmlsIG5pbF0gMyBbdW5pcXVpZnktZ2V0LXByb3Bvc2VkLW5hbWUgdW5pcXVpZnktcmF0aW9u YWxpemUgdW5pcXVpZnktcmF0aW9uYWxpemUtZmlsZS1idWZmZXItbmFtZXMgdW5pcXVpZnktLWNy ZWF0ZS1maWxlLWJ1ZmZlci1hZHZpY2UgY3JlYXRlLWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qt c2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDMgW2Fk ZC1ob29rIG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1t b2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBd IDQgW29yZy1mb2xkLWNvcmUtLXByb3BlcnR5LXN5bWJvbC1nZXQtY3JlYXRlIG9yZy1mb2xkLWNv cmUtLXByb3BlcnR5LXN5bWJvbC1nZXQtY3JlYXRlIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmct c3BlYyBvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9k ZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDQgW3JlbW92ZS1mcm9tLWludmlzaWJpbGl0eS1z cGVjIG9yZy1mb2xkLWNvcmUtc2V0LWZvbGRpbmctc3BlYy1wcm9wZXJ0eSAiIzxjb21waWxlZCAt MHg0MjZmNGE1MGFmNjA1MjE+IiBvcmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZv bGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBsZXQgd2hpbGVdIDMgW2ZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIG1ha2UtYXV0by1zYXZl LWZpbGUtbmFtZSBhdXRvLXNhdmUtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGUgbmlsIG5pbF0gNyBbb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIG9yZy1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1s YXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSA2IFtvdXRsaW5lLW1vZGUgb3JnLW1vZGUg c2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDEyIFtidWZmZXItbG9jYWwtdmFsdWUg YW5kIGlmIHdoaWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHBdIDIwIFtyZW1vdmUgb3JnLWZpbmQtaW52aXNpYmxlLWZvcmVncm91bmQgb3Jn LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cF0gMyBbcXVvdGUgYnVmZmVyLWxvY2FsLXZhbHVlIGVxdWFsIGFuZCBp ZiB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25dIDcgW3NnbWwtaHRtbC1tZXRhLWF1dG8tY29kaW5n LWZ1bmN0aW9uIGZpbmQtYXV0by1jb2Rpbmcgc2VsZWN0LXNhZmUtY29kaW5nLXN5c3RlbSBvcmct cGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9u IG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0XSAyOCBbYWRkLWhvb2sgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1h dXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUg bGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHldIDMgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGluaGliaXQtbG9jYWwtdmFy aWFibGVzLXAgc2V0LWF1dG8tbW9kZS0xIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBo YWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZV0gNiBbd2hpbGUgbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmls XSAxMCBbbm90IGFuZCB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcg ZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1z ZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMjIgW2ZpbGUtbmFtZS1z YW5zLXZlcnNpb25zIGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9kZS0xIGhh Y2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHBdIDEyIFtmaWxlLWRpcmVjdG9yeS1wIGZpbmQtZmlsZS1ub3NlbGVj dCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsXSA3IFtnZXRoYXNoIG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9yZy1wZXJzaXN0LS1h ZGQtdG8taW5kZXggb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQg b3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0XSA2IFtidWZmZXItbG9jYWwtdmFsdWUg YW5kIGlmIHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFz dC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMjQgW2NhciBidWZmZXItbG9jYWwtdmFsdWUg YW5kIGlmIHdoaWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDE1 IFtvcmctY3ljbGUtc2V0LXN0YXJ0dXAtdmlzaWJpbGl0eSBvcmctbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseV0gMyBbc2VxLWZpbmQgb3JnLWNpdGUtZ2V0LXByb2Nlc3NvciBv cmctY2l0ZS10cnktbG9hZC1wcm9jZXNzb3Igb3JnLXNldC1mb250LWxvY2stZGVmYXVsdHMgb3Jn LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSAzIFtqaXQtbG9jay1yZWZvbnRp Znkgaml0LWxvY2stbW9kZSBqaXQtbG9jay1yZWdpc3RlciBmb250LWxvY2stdHVybi1vbi10aGlu Zy1sb2NrIGZvbnQtbG9jay1tb2RlLWludGVybmFsIGZvbnQtbG9jay1kZWZhdWx0LWZ1bmN0aW9u IGZvbnQtbG9jay1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHBdIDMgW2ZpbGUtdHJ1ZW5hbWUgZmlsZS10cnVlbmFtZSBmaWxlLXRydWVuYW1l IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qt c2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRl IG5pbCBuaWwgbmlsIG5pbF0gMTEgW2dldC1maWxlLWJ1ZmZlciBsZXQgb3IgbGV0IGZpbmQtYnVm ZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbCBuaWxdIDEzIFtmaWxlLWF0dHJpYnV0ZXMgbGV0KiBvciBsZXQgZmlu ZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMTEgW25vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDMgWyIjPHN1YnIgRjYxNmU2 ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMTI+IiBtYXBjYXIg b3JnLWZvbGQtY29yZS0tcHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQtY29yZS1h ZGQtZm9sZGluZy1zcGVjIG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFs aXplIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSA0IFtvcmctcGVyc2lzdC1yZWFkIG9y Zy1wZXJzaXN0LWxvYWQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMTAgW3doaWxlIGFuZCBsZXQqIG9y IGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDI0IFthbmQgaWYgd2hpbGUgYW5kIGxldCog b3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUg bGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHldIDYgW3NnbWwtaHRtbC1tZXRhLWF1dG8tY29kaW5nLWZ1bmN0aW9uIGZpbmQt YXV0by1jb2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbCBuaWxdIDIzIFtmb3JtYXQgb3JnLWZvbGQtY29yZS0tcHJvcGVydHkt c3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQtY29yZS1hZGQtZm9sZGluZy1zcGVjIG9yZy1mb2xk LWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIG9yZy1tb2RlIHNldC1hdXRvLW1v ZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldF0gOSBbZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSB2Yy1jaGVjay1tYXN0ZXIt dGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1zY2NzLXJlZ2lzdGVyZWQgdmMtY2Fs bC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDE2MTk5MjExYWIyMmM0MGM+IiBtYXBjIHZjLXJlZ2lz dGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gNCBb dGV4dC1tb2RlLWhvb2staWRlbnRpZnkgcnVuLWhvb2tzIGFwcGx5IHJ1bi1tb2RlLWhvb2tzIG9y Zy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbl0gMyBbZ2V0aGFzaCBvcmctZm9s ZC1jb3JlLS1wcm9wZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSBvcmctZm9sZC1jb3JlLWFkZC1mb2xk aW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3Jn LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0XSA0IFt1cGNhc2Ugb3JnLWNvbGxlY3Qta2V5 d29yZHMgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0 IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDcgW29yZy0tY29sbGVjdC1r ZXl3b3Jkcy0xIG9yZy1jb2xsZWN0LWtleXdvcmRzIG9yZy1tYWNyby0tY29sbGVjdC1tYWNyb3Mg b3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBz ZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdo aWxlIGxldCBwcm9nbl0gMzEgW3F1b3RlIGJ1ZmZlci1sb2NhbC12YWx1ZSBhbmQgaWYgd2hpbGUg bGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdo aWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDYgW2J1 ZmZlci1saXN0IGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qt c2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDkgW2lm IHdoaWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMTAgW3NldC1mYWNl LWF0dHJpYnV0ZSBzZXQtZmFjZS1leHRlbmQgIiM8Y29tcGlsZWQgLTB4MTQxNTEzNDk4ZjAwMWI4 ZT4iIG9yZy0tc2V0LWZhY2VzLWV4dGVuZCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ25dIDMgW2FkZC1ob29rIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAzIFtnZW5lcmF0ZS1uZXctYnVm ZmVyIGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSAyMCBbdW5pcXVpZnkt cmF0aW9uYWxpemUtY29uZmxpY3Rpbmctc3VibGlzdCB1bmlxdWlmeS1yYXRpb25hbGl6ZS1hLWxp c3QgdW5pcXVpZnktcmF0aW9uYWxpemUgdW5pcXVpZnktcmF0aW9uYWxpemUtZmlsZS1idWZmZXIt bmFtZXMgdW5pcXVpZnktLWNyZWF0ZS1maWxlLWJ1ZmZlci1hZHZpY2UgY3JlYXRlLWZpbGUtYnVm ZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVj dXRlIG5pbF0gNyBbb3JnLW1hY3JvLS1maW5kLWtleXdvcmQtdmFsdWUgb3JnLW1hY3JvLS1maW5k LWRhdGUgb3JnLW1hY3JvLS1jb2xsZWN0LW1hY3JvcyBvcmctbWFjcm8taW5pdGlhbGl6ZS10ZW1w bGF0ZXMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSAxMCBbZWFzeS1t ZW51LWxvb2t1cC1uYW1lICIjPGNvbXBpbGVkIDB4MTNkZjUzYWY2NGQ0NTFmYj4iIG1hcGNhciBl YXN5LW1lbnUtZ2V0LW1hcCBlYXN5LW1lbnUtYWRkLWl0ZW0gZWFzeS1tZW51LWNoYW5nZSBvcmct aW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldF0gNyBbYW5k IGlmIHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2Vs ZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDIzIFthYmJyZXZpYXRl LWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1maWxlIGhh Y2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBoYWNr LWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldF0g MTggW2ZpbmQtYXV0by1jb2Rpbmcgc2VsZWN0LXNhZmUtY29kaW5nLXN5c3RlbSBvcmctcGVyc2lz dC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIG9yZy1w ZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1hdXRv LW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlXSAxOSBbIiM8Y29tcGlsZWQgMHhjMGI5NTEwMGZiYmZmY2U+IiBhZGQtaG9v ayBvcmctZWxlbWVudC0tY2FjaGUtc2V0dXAtY2hhbmdlLWZ1bmN0aW9ucyBvcmctZWxlbWVudC1j YWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25dIDMgW2xv b2t1cC1rZXkgZWFzeS1tZW51LWxvb2t1cC1uYW1lICIjPGNvbXBpbGVkIDB4MTNkZjUzYWY2NGQ0 NTFmYj4iIG1hcGNhciBlYXN5LW1lbnUtZ2V0LW1hcCBlYXN5LW1lbnUtYWRkLWl0ZW0gZWFzeS1t ZW51LWNoYW5nZSBvcmctaW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0XSA3IFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1w IGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1v ZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBwcm9nbl0gNiBbb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQt Y2FjaGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMTEgW3JlLXNlYXJjaC1mb3J3YXJkIG9y Zy1tYWNyby0tZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1tYWNyby0tZmluZC1kYXRlIG9yZy1tYWNy by0tY29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gNCBbc3hoYXNoIG9yZy1mb2xkLWNvcmUtLXByb3Bl cnR5LXN5bWJvbC1nZXQtY3JlYXRlIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmct Zm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBvcmctbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGxldCB3aGlsZSBsZXRdIDMgW2ZpbmQtYXV0by1jb2Rpbmcgc2V0LWF1dG8tY29kaW5nIGlu c2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAyMyBb b3JnLS1jb2xsZWN0LWtleXdvcmRzLTEgb3JnLWNvbGxlY3Qta2V5d29yZHMgb3JnLXNldC1yZWdl eHBzLWFuZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1h cHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHBdIDE3IFtmb3JtYXQgdmMtcG9zc2libGUtbWFzdGVyICIjPGNv bXBpbGVkIDB4MWU0MzIwMDY2ZmRlYzNhZT4iIG1hcGNhciB2Yy1jaGVjay1tYXN0ZXItdGVtcGxh dGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1zY2NzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNr ZW5kICIjPGNvbXBpbGVkIC0weDEwN2EzZTExYWIyMmM0MGM+IiBtYXBjIHZjLXJlZ2lzdGVyZWQg dmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTFdIDQgW29yZy1wZXJzaXN0LS1yZW1vdmUtZnJvbS1pbmRleCBvcmct cGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAxMCBbc2VhcmNo LWZvcndhcmQgZmluZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgaW5zZXJ0LWZpbGUtY29u dGVudHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMyBbcnVuLW1vZGUtaG9va3Mgb3Jn LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDYgW21ha2UtY2xvc3VyZSB2 Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA3IFtzZXRxIHdoaWxlIGFuZCBsZXQqIG9y IGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMjQgW3JlZ2V4cC1vcHQgb3JnLW1ha2Utb3B0aW9u cy1yZWdleHAgb3JnLS1jb2xsZWN0LWtleXdvcmRzLTEgb3JnLWNvbGxlY3Qta2V5d29yZHMgb3Jn LW1hY3JvLS1jb2xsZWN0LW1hY3JvcyBvcmctbWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgb3Jn LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDMgW2dldGhhc2ggb3JnLWZvbGQtY29yZS0tcHJv cGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQtcmVnaW9uIG9yZy1mb2xkLXNob3ctYWxs IG9yZy1jeWNsZS1zZXQtc3RhcnR1cC12aXNpYmlsaXR5IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0 IHdoaWxlIGxldF0gMTEgW2ludGVybmFsLWdldC1saXNwLWZhY2UtYXR0cmlidXRlIGZhY2UtYXR0 cmlidXRlIGZhY2UtYmFja2dyb3VuZCBvcmctZmluZC1pbnZpc2libGUtZm9yZWdyb3VuZCBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8t bW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25dIDMgW2N1cnJlbnQtYWN0aXZlLW1h cHMgZWFzeS1tZW51LWdldC1tYXAgZWFzeS1tZW51LWFkZC1pdGVtIGVhc3ktbWVudS1jaGFuZ2Ug b3JnLWluc3RhbGwtYWdlbmRhLWZpbGVzLW1lbnUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNl dC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hp bGUgbGV0XSA2IFt2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDMgW3ZjLWZpbGUtZ2V0cHJvcCB2Yy1iYWNr ZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1h bmQtZXhlY3V0ZSBuaWxdIDQgW3NldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1w cm9wLWxpbmUgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0 LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSA3IFtwcm92aWRlZC1tb2RlLWRlcml2ZWQtcCBk ZXJpdmVkLW1vZGUtcCBvcmctaW5zdGFsbC1hZ2VuZGEtZmlsZXMtbWVudSBvcmctbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSA2IFthYmJy ZXZpYXRlLWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1n aXQtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MWU1MWUyMTFhYjIy YzQwYz4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVu LWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlXSA2IFtjYXIgYnVmZmVyLWxvY2FsLXZhbHVlIGVxdWFsIGFuZCBpZiB3 aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2Vs ZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25dIDE5IFtkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRp ci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDMgW3ZjLXNyYy1yZWdpc3RlcmVkIHZj LWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxZWNkYjIxMWFiMjJjNDBjPiIgbWFwYyB2Yy1y ZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUg bGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gNCBbZm9udC1sb2NrLXR1cm4tb24tdGhp bmctbG9jayBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250LWxvY2stZGVmYXVsdC1mdW5jdGlv biBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1k ZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mg cnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xXSAzIFthdXRvLXNhdmUtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxp c3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBj b21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSA2IFtjYWxsZWQtaW50ZXJhY3RpdmVseS1w IGF1dG8tc2F2ZS1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwg bmlsIG5pbF0gMyBbYWRkLWhvb2sgb3JnLXBlcnNpc3QtcmVnaXN0ZXIgb3JnLWVsZW1lbnQtY2Fj aGUtcmVzZXQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cF0gMyBbb3JnLWNvbXB1dGUtbGF0ZXgtYW5kLXJlbGF0ZWQtcmVnZXhwIG9y Zy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAzIFtpbmhpYml0 LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUtMSBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDMwIFtpbmhpYml0 LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1w cm9wLWxpbmUgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0 LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBsZXQgd2hpbGUgbGV0XSAxMyBbYWRkLWhvb2sgZ2xvYmFsLWVsZG9jLW1vZGUtY21o aCB0ZXh0LW1vZGUgb3V0bGluZS1tb2RlIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbl0gNCBbY29weS10cmVlIGNvcHktdHJlZSBmb250LWxvY2stZGVmYXVsdC1mdW5jdGlv biBmb250LWxvY2stbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGVdIDMgW2ZpbGUtcmVtb3RlLXAgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUt aG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cF0gNyBbY2FyIGJ1ZmZlci1sb2NhbC12YWx1ZSBzdHJpbmc9IGFuZCBpZiB3aGls ZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gNiBbZm9ybWF0IG9yZy1tYWNy by0tZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1tYWNyby0tZmluZC1kYXRlIG9yZy1tYWNyby0tY29s bGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIG9yZy1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlIGxldF0gMyBbc2V0LWF1dG8tbW9kZS0xIGhhY2stbG9jYWwtdmFyaWFi bGVzLXByb3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMyBbZmluZC1maWxlLW5h bWUtaGFuZGxlciBtYWtlLWF1dG8tc2F2ZS1maWxlLW5hbWUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSA0IFtjZHIgc2V0cSB3aGlsZSBhbmQgbGV0KiBv ciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseV0gMTAgW3BsaXN0LWdldCBvcmctcGVyc2lzdC0tZmluZC1pbmRleCBvcmctcGVy c2lzdC1yZWFkIG9yZy1wZXJzaXN0LWxvYWQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1h dXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUg bGV0IHByb2duXSAzIFtiYWNrdHJhY2UtZnJhbWUgY2FsbGVkLWludGVyYWN0aXZlbHktcCBmb250 LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVk IGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mgbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gMyBbY2RyIHVu aXF1aWZ5LXJhdGlvbmFsaXplLWZpbGUtYnVmZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmls ZS1idWZmZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0 IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gMyBbYW5kIHdo aWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMjAgW3NldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWwgbmlsXSA0IFtvcmctZXh0cmFjdC1sb2ctc3RhdGUtc2V0dGluZ3Mgb3JnLXNldC1yZWdleHBz LWFuZC1vcHRpb25zIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDQgW2FkZC1ob29rIGZvbnQtbG9jay10 dXJuLW9uLXRoaW5nLWxvY2sgZm9udC1sb2NrLW1vZGUtaW50ZXJuYWwgZm9udC1sb2NrLWRlZmF1 bHQtZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVybi1vbi1mb250 LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMg cnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZV0gMyBbcXVvdGUgYnVmZmVyLWxvY2FsLXZhbHVlIHN0cmluZz0gYW5kIGlmIHdoaWxlIGxl dCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSA0IFthbmQgd2hpbGUgbGV0IG9yIGxl dCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDYgW29yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9y Zy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBvcmctcGVyc2lzdC1yZWdpc3RlciBvcmctZWxlbWVu dC1jYWNoZS1yZXNldCBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25dIDMg W29yZy1mb2xkLWNvcmUtZ2V0LWZvbGRpbmctc3BlYy1mcm9tLWFsaWFzIG9yZy1mb2xkLWNvcmUt c2V0LWZvbGRpbmctc3BlYy1wcm9wZXJ0eSAiIzxjb21waWxlZCAtMHg0MjZmNGIwOGQ5ZGM1MjE+ IiBvcmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXpl IG9yZy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1v ZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDMgW3By b3ZpZGVkLW1vZGUtZGVyaXZlZC1wIGRlcml2ZWQtbW9kZS1wIGZvbnQtbG9jay1zZXQtZGVmYXVs dHMgZm9udC1sb2NrLW1vZGUtaW50ZXJuYWwgZm9udC1sb2NrLWRlZmF1bHQtZnVuY3Rpb24gZm9u dC1sb2NrLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMyBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSBkaXItbG9j YWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMTEgW2Nv cHktdHJlZSBmb250LWxvY2stZGVmYXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSBmb250LWxv Y2stY2hhbmdlLW1vZGUgdGV4dC1tb2RlIG91dGxpbmUtbW9kZSBvcmctbW9kZSBzZXQtYXV0by1t b2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZV0gMyBbcmVtb3ZlLWhvb2sgZ2xvYmFsLWZvbnQtbG9jay1tb2RlLWNoZWNrLWJ1 ZmZlcnMgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwg bmlsXSA0IFt2Yy1tYWtlLWJhY2tlbmQtc3ltIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1yY3Mt cmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MWZiNWQ2MTFhYjIyYzQw Yz4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhv b2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldF0gNCBbYWRkLWhvb2sgdGV4dC1tb2RlIG91dGxpbmUtbW9kZSBvcmct bW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8t bW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhw XSA0IFthZGQtdG8tbGlzdCBvcmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQt Y29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IHByb2duXSAzIFtxdW90ZSBidWZmZXItbG9jYWwtdmFsdWUgYW5kIGlmIHdo aWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDQgW2hhY2stbG9j YWwtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2du IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZl bHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDMgW2Fzc29jLWRlZmF1bHQgc2V0LWF1dG8tbW9k ZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAzIFtoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxl cyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQt ZXhlY3V0ZSBuaWwgbmlsXSAzIFsiIzxjb21waWxlZCAweGI0NzhiNDU4YmEwYWY+IiBhYmJyZXZp YXRlLWZpbGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDQgW2Zv bnQtbG9jay1jb21waWxlLWtleXdvcmQgZm9udC1sb2NrLWNvbXBpbGUta2V5d29yZHMgZm9udC1s b2NrLXNldC1kZWZhdWx0cyBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250LWxvY2stZGVmYXVs dC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQt bG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBy dW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRv LW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGVdIDMgW2Zvcm1hdCBv cmctbWFjcm8tLWZpbmQta2V5d29yZC12YWx1ZSBvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9y Zy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgcHJvZ25dIDMgW2NsLW1hcGNhbiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgb3Jn LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cF0gMyBbYnVmZmVyLWxpc3Qgb3JnLWluc3RhbGwtYWdlbmRhLWZpbGVz LW1lbnUgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gNyBbZGVsZXRlLWR1cHMgcmVnZXhwLW9wdCBvcmct bWFrZS1vcHRpb25zLXJlZ2V4cCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBvcmctY29sbGVjdC1r ZXl3b3JkcyBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGVdIDQgW2ZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIG1ha2UtYXV0by1zYXZlLWZp bGUtbmFtZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFz dC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxd IDMgW3ZjLW1ha2UtYmFja2VuZC1zeW0gdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNyYy1yZWdp c3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHg4ZTJmYWMzMjNmMjdhZTI+IiBt YXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXRdIDMgW3ZjLWZpbGUtc2V0cHJvcCB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQg dmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1l eGVjdXRlXSAzIFtvcmctcGVyc2lzdC0tZmluZC1pbmRleCBvcmctcGVyc2lzdC0tYWRkLXRvLWlu ZGV4IG9yZy1wZXJzaXN0LXJlZ2lzdGVyIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbl0gMyBbbGFzdCBvcmctc2V0LXJlZ2V4cHMt YW5kLW9wdGlvbnMgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gMyBbaWYgd2hpbGUgbGV0IG9yIGxldCBm aW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9n biBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDMgW2VxIGFsaXN0LWdldCAiIzxjb21waWxlZCAweGMw Yjk1MTAwZmJiZmZjZT4iIGFkZC1ob29rIG9yZy1lbGVtZW50LS1jYWNoZS1zZXR1cC1jaGFuZ2Ut ZnVuY3Rpb25zIG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IG9yZy1tb2RlIHNldC1hdXRvLW1vZGUt MCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0 IHdoaWxlXSA0IFtvcmctcGVyc2lzdC0tZmluZC1pbmRleCBvcmctcGVyc2lzdC1yZWFkIG9yZy1w ZXJzaXN0LWxvYWQgb3JnLW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cF0gMyBbZ2xvYmFsLWZvbnQtbG9jay1tb2RlLWVuYWJsZS1pbi1idWZm ZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAzIFtmaWxlLXJlbW90ZS1wIGhhY2st ZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBoYWNrLWxv Y2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXRdIDQgW2NhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgZm9udC1sb2NrLW1vZGUgdHVybi1vbi1m b250LWxvY2sgdHVybi1vbi1mb250LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1v ZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0XSA0IFtvcmctZm9sZC1jb3JlLWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlh bGl6ZSBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAzIFtraWxsLWxvY2FsLXZhcmlhYmxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDMgW2VsZG9jLS1zdXBwb3J0ZWQtcCB0 dXJuLW9uLWVsZG9jLW1vZGUgZ2xvYmFsLWVsZG9jLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVu LWhvb2tzIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0g NCBbaml0LWxvY2stbW9kZSBqaXQtbG9jay1yZWdpc3RlciBmb250LWxvY2stdHVybi1vbi10aGlu Zy1sb2NrIGZvbnQtbG9jay1tb2RlLWludGVybmFsIGZvbnQtbG9jay1kZWZhdWx0LWZ1bmN0aW9u IGZvbnQtbG9jay1tb2RlIHR1cm4tb24tZm9udC1sb2NrIHR1cm4tb24tZm9udC1sb2NrLWlmLWRl c2lyZWQgZ2xvYmFsLWZvbnQtbG9jay1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBy dW4tbW9kZS1ob29rcyBvcmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZV0gNCBbcmVnZXhwLW9wdC1ncm91cCBy ZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAt b3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdy b3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0IG9yZy1tYWtl LW9wdGlvbnMtcmVnZXhwIG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIG9yZy1jb2xsZWN0LWtleXdv cmRzIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBvcmctbW9kZV0gMyBbaGFjay1sb2NhbC12 YXJpYWJsZXMtLWZpbmQtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhv b2tzIG9yZy1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHBdIDMgW2Zvcm1hdC1kZWNvZGUgaW5zZXJ0LWZpbGUtY29udGVudHMgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21t YW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSAzIFtkZXJpdmVkLW1vZGUtcCBvcmctZWxlbWVu dC0tY2FjaGUtc2V0dXAtY2hhbmdlLWZ1bmN0aW9ucyBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBv cmctbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1 dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1z ZXhwXSAzIFtwYXJzZS1wYXJ0aWFsLXNleHAgc3ludGF4LXBwc3Mgc2hvdy1wYXJlbi0tZGVmYXVs dCBzaG93LXBhcmVuLWZ1bmN0aW9uIGFwcGx5IHRpbWVyLWV2ZW50LWhhbmRsZXIgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxIFtqaXQtbG9jay1jb250ZXh0LWZvbnRp ZnkgIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xh bWJkYV85PiIgYXBwbHkgdGltZXItZXZlbnQtaGFuZGxlciBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTUgW2NvbXBsZXRpbmctcmVhZC1kZWZhdWx0IHJl YWQtZXh0ZW5kZWQtY29tbWFuZC0xIHJlYWQtZXh0ZW5kZWQtY29tbWFuZCBieXRlLWNvZGUgY29t bWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxd IDEwIFtyZWRpc3BsYXlfaW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKSBjb21wbGV0aW5nLXJlYWQt ZGVmYXVsdCByZWFkLWV4dGVuZGVkLWNvbW1hbmQtMSByZWFkLWV4dGVuZGVkLWNvbW1hbmQgYnl0 ZS1jb2RlIGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWxdIDE2IFt0cnktY29tcGxldGlvbiBjb21wbGV0ZS13aXRoLWFjdGlvbiAiIzxzdWJyIEY2 MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzU0PiIgY29t cGxldGlvbi1iYXNpYy10cnktY29tcGxldGlvbiAiIzxjb21waWxlZCAweDFiMTA0OGIwNTM5ZGVi MDQ+IiBjb21wbGV0aW9uLS1zb21lIGNvbXBsZXRpb24tLW50aC1jb21wbGV0aW9uIGNvbXBsZXRp b24tdHJ5LWNvbXBsZXRpb24gY29tcGxldGlvbi0tZG8tY29tcGxldGlvbiBjb21wbGV0aW9uLS1p bi1yZWdpb24tMSAiIzxjb21waWxlZCAweDJiZTU5NzhiODZhOWI0OD4iIGFwcGx5ICIjPGNvbXBp bGVkIC0weGY1MzlmZTliZjgyOWEyPiIgY29tcGxldGlvbi0taW4tcmVnaW9uIGNvbXBsZXRpb24t aW4tcmVnaW9uIG1pbmlidWZmZXItY29tcGxldGVdIDE3IFtpbnRlcmFjdGl2ZS1mb3JtIGNvbW1h bmQtZXhlY3V0ZSBjb21wbGV0aW5nLXJlYWQtZGVmYXVsdCByZWFkLWV4dGVuZGVkLWNvbW1hbmQt MSByZWFkLWV4dGVuZGVkLWNvbW1hbmQgYnl0ZS1jb2RlIGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMyBbZXhlY3V0ZS1leHRlbmRlZC1jb21tYW5k IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA0IFtBdXRvbWF0aWNcIEdDIG5pbF0g MjA2NyBbcHJvZmlsZXItcmVwb3J0IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1 dGUgZXhlY3V0ZS1leHRlbmRlZC1jb21tYW5kIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAzKSkgKDI1 ODc4IDU0NzY3IDg4OTkzIDQxNDAwMCkgbmlsXQo= --=-=-= Content-Type: text/plain -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at --=-=-=-- From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 29 Sep 2023 16:14:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169600402423062 (code B ref 66117); Fri, 29 Sep 2023 16:14:02 +0000 Received: (at 66117) by debbugs.gnu.org; 29 Sep 2023 16:13:44 +0000 Received: from localhost ([127.0.0.1]:57011 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qmG7c-0005zu-6A for submit@debbugs.gnu.org; Fri, 29 Sep 2023 12:13:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36058) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qmG7Y-0005zK-90 for 66117@debbugs.gnu.org; Fri, 29 Sep 2023 12:13:43 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qmG7B-0005Yf-U5; Fri, 29 Sep 2023 12:13:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=+j9OySZaBIS/DRcaWIYzmRH/8bZqLGtdUcdtTSBDuis=; b=B9gFxFAXaCG5 t+Hmft1sRzcTFuFaRp7LflgAwUoeWo/EaSybui0TBKk8zxzCgd8FTTz3ELKntzCT9MMmRyiaAWAxH JM3FgeGTXjqoe64NLfHPl/qcKGomASHwtGH06Dx1IvWnswFDuORhUHCCJ68CgCFkyMniF1V338kL5 VCMGMAUpWlkq3Qu89ZLVdr6sMlI3H8GsIuucd2WVUZtUl8Iz3/gujMnEH/xz3waGDbHiJdZOedm+G 9Pe6QaZl7EzlK5jvmEPQmTFuJEZtJ8YJHKz8JfnYdM81oUh3K65cAMEARkbXtM5zpoP+ttfABYD2L p8Sm1qJtvYklElUL1nNbKg==; Date: Fri, 29 Sep 2023 19:12:58 +0300 Message-Id: <83ttrdx8j9.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87lecp84mf.fsf@localhost> (message from Ihor Radchenko on Fri, 29 Sep 2023 13:56:40 +0000) References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Fri, 29 Sep 2023 13:56:40 +0000 > > Eli Zaretskii writes: > > >> 3. Open all the 1000 files one by one: > >> (dolist (file (directory-files "/tmp/test/" t "org")) > >> (unless (find-buffer-visiting file) (find-file-noselect file))) > >> > >> Step (3) takes 18.8 seconds on my machine. The CPU profile attached as > >> cpu-profile. > > > > Since find-file-noselect calls find-buffer-visiting internally, I'm > > not sure the above test case makes sense. A Lisp program should feel > > free to call find-file-noselect directly, and Emacs will find the > > visiting buffer, if it already exists, as part of the job of > > find-file-noselect. > > > > Let's please focus on test cases where the Lisp code being benchmarked > > doesn't do any unnecessary stuff, since what's at stake is a > > significant change in our internals. > > The reason I left an extra `find-buffer-visiting' call was because Org > mode does it (for a reason - we need information if a file was already > open or not). > > You may as well do > > (dolist (file (directory-files "/tmp/test/" t "org")) > (find-file-noselect file)) > > as step (3). > > The same conclusions will hold - `find-file-noselect' calls > `find-buffer-visiting' as well and it also takes most of the CPU time. > > I am attaching an updated set of the same profiles, but based on the > above `dolist' that only calls `find-file-noselect'. > > The run times are now: 12.0 seconds, 5.3 seconds, and 6.6 seconds. 12 sec is quite a far cry from 18.8, won't you agree? > >> If one uses `get-file-buffer' instead of `find-buffer-visiting', the > >> total runtime becomes 5.1 sec - almost 4x faster. > > > > This is also not very interesting, since find-file-noselect calls > > get-file-buffer as well. > > No. `find-file-noselect' calls `find-buffer-visiting'. Unless we use different Emacsen, find-file-noselect calls both get-file-buffer and find-buffer-visiting: (let* ((buf (get-file-buffer filename)) <<<<<<<<<<<<<<<<<<<<<<<<<<<< (truename (abbreviate-file-name (file-truename filename))) (attributes (file-attributes truename)) (number (file-attribute-file-identifier attributes)) ;; Find any buffer for a file that has same truename. (other (and (not buf) (find-buffer-visiting <<<<<<<<<<<<<<<<<<<<<<<<<<<< filename ;; We want to filter out buffers that we've ;; visited via symlinks and the like, where ;; the symlink no longer exists. (lambda (buffer) (let ((file (buffer-local-value 'buffer-file-name buffer))) (and file (file-exists-p file)))))))) > > If we come to the conclusion that those loops in find-buffer-visiting > > are the hot spot, the right thing is to implement them in C, where we > > don't need to use the equivalent of with-current-buffer to examine the > > truename and file-number of every buffer, we can just access them > > directly. > > I still think that my previous conclusions are true. And I agree that > rewriting these expensive loops in C makes sense. Maybe two new > subroutines to find buffer by `buffer-file-truename' and by > `buffer-file-number'? Yes, that's what I had in mind. > >> So, using `with-current-buffer' when looping over all the buffers is > >> certainly not optimal (maybe in other places as well). > > > > with-current-buffer is normally very expensive. Which is why any > > performance-critical loop should try to avoid it as much as possible. > > Aside: this reminds me about obsoletion of generalized buffer-local > variable. AFAIU, there is currently no way to set buffer-local value in > buffer without setting that buffer to current. It would be nice if such > setting were possible, especially in performance-critical code. Maybe, but is there any performance-critical code which needs that? From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 30 19:27:42 2023 Received: (at control) by debbugs.gnu.org; 30 Sep 2023 23:27:42 +0000 Received: from localhost ([127.0.0.1]:60013 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qmjN8-0000xc-Io for submit@debbugs.gnu.org; Sat, 30 Sep 2023 19:27:42 -0400 Received: from mail-lf1-x131.google.com ([2a00:1450:4864:20::131]:48132) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qmjN4-0000x4-Om for control@debbugs.gnu.org; Sat, 30 Sep 2023 19:27:39 -0400 Received: by mail-lf1-x131.google.com with SMTP id 2adb3069b0e04-5043a01ee20so21410716e87.0 for ; Sat, 30 Sep 2023 16:27:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1696116437; x=1696721237; darn=debbugs.gnu.org; h=to:subject:message-id:date:mime-version:from:from:to:cc:subject :date:message-id:reply-to; bh=XBSN3wKSS/02LDkMDbKSzgvoHodcGBvjsZkpxvV6h54=; b=CoNa5PYRKHqI3X+lQVqao8yS2fTGAWPlIEv11tlshDpLMDLLNKNPOz9xkhAF13ZMGg Yxzfv1VXtUEfx2+FGt4/LB9QS7t6J6wsqVDZcnh56zrqbECZ/bF5Q32674aZ0LAwsD9B CU8jaXsmJKojbMlc8Xtf63kekOu4m9if/7sEUTtQm0WBdofxjZmqf0zhB4oqIgFBu+46 /dbZLF42HkEQcM+d9FGPWqVHdtK8sGepc+Sgwd5eEclZR8HhOehwnzE6ipIuESrNH6/X 5EjLo2SuOshICUU/aNL6hjzNyZqFyXdIbFP2kqqvECdenWc0GbZgLDOXipq0Lhhf17M4 6OlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696116437; x=1696721237; h=to:subject:message-id:date:mime-version:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=XBSN3wKSS/02LDkMDbKSzgvoHodcGBvjsZkpxvV6h54=; b=iDWQu4W/oysc9EkXQMteDHoIkWq5Nu4KbVo/STTEo9zGnYaSPBOVatBb5VP4CQst7E L78xLV182gJ6dbhfDMYzTQP+nL6M0QykaGk4SueSodG4HVbCDM1udda7rswuAf+b7uqG 8zbE9UBt6F/7DgU8PPLp697/LrNzCYjs4UC10KVXs7cZFV/UB3F0guQODkuEBv+K5eVf c1pNiL1+XeFkI6IL3jiiTCT+jJPdR+oytW34qQejJSKwtUtO+Uq1DN+xTd88OOWLFehW UAUJC+hjOpJUvwtlFr/1o20IKDI6mT3oBd6lCdLq0re+F8B9sDjFY3uWmHOra+Swk8wP ceig== X-Gm-Message-State: AOJu0Yzh2XIXxPB6ICcGV+Ebm250JwW6PtApLYS1WJVLANCdzZTdywdY J50E5Zr3kTCicFIHa2Pgq1n3Qr8EHcCK0vcOYq9paYpx X-Google-Smtp-Source: AGHT+IHIyqU+zGhxIE/pjZcEL7XM7JnmaJE6g7PpeVkTvJ91evhhdp8l1k6d/mj80arm6RBjk4Hragn7Dw/xgfgGRBY= X-Received: by 2002:a05:6512:3ee:b0:4fe:347d:7c4b with SMTP id n14-20020a05651203ee00b004fe347d7c4bmr5613114lfq.7.1696116437150; Sat, 30 Sep 2023 16:27:17 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Sat, 30 Sep 2023 16:27:16 -0700 From: Stefan Kangas MIME-Version: 1.0 Date: Sat, 30 Sep 2023 16:27:16 -0700 Message-ID: Subject: control message for bug #66117 To: control@debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) severity 66117 minor quit From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 03 Oct 2023 03:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, Ihor Radchenko , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.1696303571810 (code B ref 66117); Tue, 03 Oct 2023 03:27:02 +0000 Received: (at 66117) by debbugs.gnu.org; 3 Oct 2023 03:26:11 +0000 Received: from localhost ([127.0.0.1]:38374 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qnW31-0000D0-30 for submit@debbugs.gnu.org; Mon, 02 Oct 2023 23:26:11 -0400 Received: from mout.web.de ([212.227.17.12]:40253) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qnW2x-0000Be-Ip for 66117@debbugs.gnu.org; Mon, 02 Oct 2023 23:26:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273; t=1696303540; x=1696908340; i=michael_heerdegen@web.de; bh=cxTabaIfsj1NEiAzLeNHkDOgUN9HfUhQAOf6eH03838=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date; b=D35T5cNm74x5lehW88r/+E6cimvYginmZ9LQJQNtTOhyhBkHpahWJnifpYMgqBkGyXYlbbYbBn9 dQHnyEqbH+5EWAskT9Zt95XI+Hoav57TN+bPG37rfBnt+k1wsPNPfBolkPXoAnpa/vMOIuFG/d8CJ PF52GHm+c/OFr4yvXs2mvR5iKQMH2eQOirtwK37zAKCzU1qRYWMBHLgs8/8onYnuHdN1StOKQ0I7D jcF/0SZd3+4K+AoGLmceZBADl+JUIrPeEAG2OzUOxAUugt6u/+2o0LoZqrYocU9DRcB29iz/MgiWX m077UXsi4IDDsz5JJDalZnHOz5mvXOtvoJdQ== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Received: from drachen.dragon ([88.66.201.191]) by smtp.web.de (mrweb105 [213.165.67.124]) with ESMTPSA (Nemesis) id 1MF2gM-1qpl5I1WRs-00FVTT; Tue, 03 Oct 2023 05:25:40 +0200 From: Michael Heerdegen In-Reply-To: <83ttrdx8j9.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 29 Sep 2023 19:12:58 +0300") References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> Date: Tue, 03 Oct 2023 05:25:39 +0200 Message-ID: <87bkdgtmj0.fsf@web.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:0Vvpmp/zGYDQV8ci++dKBkiqTrs+XeAMrbecC4/mdWeVeThSRwm 9tlul6ASUSyty09BW2uUC2lLW6BMIngDegOanKg0g13M/M8pUPgCZ95mNe8NVE30PCyYMYw kOxuenAt7VpAALFpigNy2WWO2Sp83/u7Qd6TlSs8wU9cyOtLmh3UQ47J3TudtOJCvcKG9J+ zMFAKELL0+9ERWFBAIMwQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:KZ+MkbvK92U=;0osE8Hj4QC7xBR5YDDT5FwSXV9P iDZsY0Tgjgjs9T/OrF2jBbaNSFiMM9Vpe2dZ9w6W6R2QtNOkwIbrEd5PNCKv8lPF9EC9f5KsO GBXp7O4CSuEGfqc4GFt9SJzpRUKsCsB82UyQH8/A42a3fxAFKRM1cuIQes8FFjvVdxP706QcA rHzTulik1xf7sw0fzk4SlChrvFq5peVMHVIyQKPb1M3EEHt77/6UUpQxdcC/vrxMCz33FOOxD 9fVxPlWj5QTaZ2ovDvb/pR4Ci/+75Mt3m8MFVTmnsCNZSOyyRNe0p+MQFjLB8c9omCc3S+0ba T5yW4Ht8DUbISkJSXhUGU+ErKX6VNOWNzOisX/LB1lQ21CKf7fKdp7A17lUAxYd6jafbOsUKc rbdjW98CyVUcN6G9g8iZ7Q7w6vG5J8+xKZzvtF7G/h9haVhD26sC8TV92q+338Bw0v4p/Ws8x +toudMwlMJe9xeW7pVt+dxYtjkJpd7Pc4QbfzgZmzpyLwBZ4l7oFlCe2pf7RqWf2ttgBk1zNZ LHX2En2SGJjiZ22Xy/ZTPt1+34jpMbxBeFnsM58mJGmHyJlDcqtgUB8BCtw+1m1bql+IsRgaV XWwDwtg9SG8ZjGMwC4ZuBr9v2Jova+ni1Ud98RqH2SVH/2XVTDs6FuYBNfBULjZ5ejFLYNHjv kT+w1NoWfFMWcAHz/MDFkZNceQK6Ewga2K6GcGrW+qZ0EXIgNui3b2lmTHwEuIOJLk3hr4Qrr 3+GhQxwhzbbqPArMxk27q5UWEP/hQ7MFmKXFrpUO1A4YdzJIaYhpGlnurc6gMloWhgEvxaCQI GktEEbbkH/JTbfBBuJVDwxSypOhgJjzhlbebxKPggDuLdfx2XPrcduji7X5+y1A2wfQCWGBQo s2VzlXKSpD1rDUEHARPK/azRBrZR2AKJGDNolRzVINN4hAdGuXa0+2ehXb8RRVZmrNDkUDq0x LnuQGj5LoTUNY8/tUMwABX36JDA= X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Eli Zaretskii writes: > > Aside: this reminds me about obsoletion of generalized buffer-local > > variable. AFAIU, there is currently no way to set buffer-local value in > > buffer without setting that buffer to current. It would be nice if such > > setting were possible, especially in performance-critical code. > > Maybe, but is there any performance-critical code which needs that? I don't know, but the gv-setter of `buffer-local-value' also calls `with-current-buffer', so using it was not better performance-wise. Michael. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 03 Oct 2023 06:02:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Michael Heerdegen Cc: dmitry@gutov.dev, yantar92@posteo.net, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169631286124161 (code B ref 66117); Tue, 03 Oct 2023 06:02:02 +0000 Received: (at 66117) by debbugs.gnu.org; 3 Oct 2023 06:01:01 +0000 Received: from localhost ([127.0.0.1]:38527 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qnYSr-0006HZ-FD for submit@debbugs.gnu.org; Tue, 03 Oct 2023 02:01:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58708) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qnYSp-0006HC-99 for 66117@debbugs.gnu.org; Tue, 03 Oct 2023 02:01:00 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qnYSS-0005LF-Oo; Tue, 03 Oct 2023 02:00:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=bFUiEzheXdgQ4ZH0eoopfGjpBHMUiQZ/WRHFHd0m0IQ=; b=B8HJXP0yAk7S FiVcnVJA9vLOw5iMJBAFjTvA8GcCjoLgMqL1yLWRDJU4gaWPPFuONv3ggr0HF1ppmubldJKnKvkaQ 1lsMHi/3R79IydHFe9UXhXDZC+mcygTG13rL4yWrZC+WgRC1J+qiEDsQOiU5r+XwQy+pUw6Hp/dvu n64PES/zyIFg07U9C0eKit4EP1Em7+iAk9y4m+QX/XFNfZtgs6Dyd1lzTF40USwJn7Vc7mkpABZFp IDE5C+SYc/XRJGYOM6xpqQGo/HaSMObXITxJaNAIrgAhv5v3s6jXYbmIVwo4GHq+hrqweB3k8e4aM wTpGfBZJsfHU98iE41C+ww==; Date: Tue, 03 Oct 2023 09:00:39 +0300 Message-Id: <83jzs46y9k.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87bkdgtmj0.fsf@web.de> (message from Michael Heerdegen on Tue, 03 Oct 2023 05:25:39 +0200) References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87bkdgtmj0.fsf@web.de> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Michael Heerdegen > Cc: Ihor Radchenko , dmitry@gutov.dev, > 66117@debbugs.gnu.org > Date: Tue, 03 Oct 2023 05:25:39 +0200 > > Eli Zaretskii writes: > > > > Aside: this reminds me about obsoletion of generalized buffer-local > > > variable. AFAIU, there is currently no way to set buffer-local value in > > > buffer without setting that buffer to current. It would be nice if such > > > setting were possible, especially in performance-critical code. > > > > Maybe, but is there any performance-critical code which needs that? > > I don't know, but the gv-setter of `buffer-local-value' also calls > `with-current-buffer', so using it was not better performance-wise. If we discover enough performance-critical cases with that, we could provide a special way, implemented in C, of doing that efficiently. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 04 Oct 2023 10:57:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Michael Albinus Cc: dmitry@gutov.dev, Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169641697619536 (code B ref 66117); Wed, 04 Oct 2023 10:57:02 +0000 Received: (at 66117) by debbugs.gnu.org; 4 Oct 2023 10:56:16 +0000 Received: from localhost ([127.0.0.1]:41679 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qnzY8-000550-H6 for submit@debbugs.gnu.org; Wed, 04 Oct 2023 06:56:16 -0400 Received: from mout02.posteo.de ([185.67.36.66]:57237) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qnzY6-00054j-Sw for 66117@debbugs.gnu.org; Wed, 04 Oct 2023 06:56:15 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id D1C33240107 for <66117@debbugs.gnu.org>; Wed, 4 Oct 2023 12:55:50 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1696416950; bh=P8UX54h3sYqmq/u9iZwwuebbr1wRHRGQsYaF2LVpEZE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=PLJ/idTsu2evKQ0DXc29PEQUuCvY8soVfZL+3V/1nh0A9GCeUvMFgnYG+5Va6EVSK O6oWbU5OE7Q0Ws2aOlxRb5I1Bj1DBSNuCGxSUXaDMlw1Sx6frLNyqwU+cMdCMmILN8 mPPSF6YhCqXrNNZMxXGiZK4cC9i+wbASAm8GkBxem6HbD5iSvgZcFiLJuMivXZgdPW a0Mxcc8i62BSvsQbyxpb1KbFslxXADX9xCTf6oAPYdPm0654h/gKZ1L3NEvjPew26A LjiWO/EXaRRmnjWxDAOzXO+rGbsoZkV8AbRsELwQ/sV5sAIYREq73k73qRwu3XeXhs nG9vH1vQdJyIw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4S0s6s61mtz6tvw; Wed, 4 Oct 2023 12:55:49 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <87msx9m317.fsf@gmx.de> References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <83pm273fc1.fsf@gnu.org> <87o7hp9uw1.fsf@localhost> <87msx9m317.fsf@gmx.de> Date: Wed, 04 Oct 2023 10:57:22 +0000 Message-ID: <875y3modt9.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Michael Albinus writes: >> may also need to handle the caching. And also all the third-party handlers. > > That might be hard to synchronize. Why not fill the cache after that > code snippet? The handlers have already done their job, buffer-file-name > is set. And so does bset_filename in the local case. Indeed you are right. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 04 Oct 2023 10:58:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169641706319718 (code B ref 66117); Wed, 04 Oct 2023 10:58:02 +0000 Received: (at 66117) by debbugs.gnu.org; 4 Oct 2023 10:57:43 +0000 Received: from localhost ([127.0.0.1]:41688 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qnzZX-00057v-5y for submit@debbugs.gnu.org; Wed, 04 Oct 2023 06:57:43 -0400 Received: from mout01.posteo.de ([185.67.36.65]:52483) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qnzZT-00057b-LZ for 66117@debbugs.gnu.org; Wed, 04 Oct 2023 06:57:41 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 119A9240028 for <66117@debbugs.gnu.org>; Wed, 4 Oct 2023 12:57:15 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1696417036; bh=TOO4UrA4ZT3i3ms6tfisJ/v7Ar+dJ/uqLLgM7SrKbtY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=Hv8FffX0CsraWQ8AFRoyuE0Ci6cnmE7HKx6qI8rrKCeI7O+L1njn4Ul2M4PBrRZg2 E5fkqF/X87TdG9ygYToboTiLd47BKunoX1XhriJn4lY3yP9VniqVE+Gls0mTO1VzLQ ujaqRRWxu0I8odw6aHoSIV4oC2SC+zGMnWDMoR9BTmcrsHbA6FMQCx59TTFfwx48JR D6amEvy4EWKcdJTjtPoxen6Pp0gAC3paKHCChNSFU8lUX2M2NQ1CsV6ej1yxShIaHU LG36fBMFvt6pQAqhzi1y3JqwePAIYGLvY3x24+fGsZOtVgd/DjSt2g3VLRrzqm6TW/ x/4GyNEXpH+wg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4S0s8W38ngz6tv5; Wed, 4 Oct 2023 12:57:15 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> Date: Wed, 04 Oct 2023 10:58:52 +0000 Message-ID: <8734yqodqr.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Dmitry Gutov writes: >> Would it be possible to implement some kind of caching mechanism to be >> used by `find-buffer-visiting'? > > I'm guessing you Cc'd me because of an existing comment inside xref.el? > As you can see I decided not to use this function there, but even > get-file-buffer wasn't as fast as I would've wanted, so there's a > quick-and-dirty caching solution for sequential lookups (which assumes > that the same file would be looked up multiple times in a row). It looks like my example is quite different from yours. Do you have a reproducer demonstrating `get-file-buffer' being slow? -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 04 Oct 2023 11:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169642001112917 (code B ref 66117); Wed, 04 Oct 2023 11:47:02 +0000 Received: (at 66117) by debbugs.gnu.org; 4 Oct 2023 11:46:51 +0000 Received: from localhost ([127.0.0.1]:41733 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qo0L5-0003MG-5x for submit@debbugs.gnu.org; Wed, 04 Oct 2023 07:46:51 -0400 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:42133) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qo0L2-0003Lz-U1 for 66117@debbugs.gnu.org; Wed, 04 Oct 2023 07:46:49 -0400 Received: from compute6.internal (compute6.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id CAAD85C042A; Wed, 4 Oct 2023 07:46:25 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Wed, 04 Oct 2023 07:46:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm1; t= 1696419985; x=1696506385; bh=P3YKGs4DueVoWq8pykNKR4dc9ZoInZYaSnK aEsLh5Mo=; b=mEp4dWKF5XVZSrcA66kWOara5Hny+s0QL/xaBC5eYUughsJKCH0 Q4lYfPwD59BOsxubeLMtBbQoXIvhTa8LLY/lzVJEbnlA4zkUoJDcK4/sNsHrrWbS 0D8GLS1xaVmREdBt99K8c6SStr+yRvu1m6CFVn3wTr7MWXz/s2hGYWjjGtwY42d9 1sBlViYIHvNkK79WHWpoxfeEZUWRLlXQJbKcMHRch9SJULBJ2zMxlln+oN2fMBiW Emawx61/1m35g2ZEejIm+Lho3gdDP7HhRoBSE5fy+ZK5XtpxYEc2s+ULr617Vobs UITzeVSEC7f+gzlwI3R48KYAs19nToL6kew== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1696419985; x=1696506385; bh=P3YKGs4DueVoWq8pykNKR4dc9ZoInZYaSnK aEsLh5Mo=; b=FMOIYNyeexlfArHbHKbcRarNJsXvYWUaT3hTWeU4zdI7IrlhZ3A WkQLq3m/JA9xvKpL3isboZos2Hrf6YZ2VhO6SogqDoqtdmBQeOwu0m43k+0rEMLB Lu3+Xodu5tGIYzKRNGWqxvtprrTweNQlyWVx9n98S6veYwJQu+dtHe+/JmK9sKr0 LgqNlgC6fy4X1+XzjZHYlvqmwpB6LyIKj3wYobAkcMFxuvWuhEQu6aUFr7L+5AaL PCzouFoMCdTS58VDJA3qVYuqoujYrEDn2Ulc9kAQRVgj6W2wMQtaVCmoLQUXQFLK ssqRdflsQeLI7uGB8KJ9Gcf4EtcG3UcxoCA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrgedvgdegvdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhepkfffgggfuffvvehfhfgjtgfgsehtje ertddtfeejnecuhfhrohhmpeffmhhithhrhicuifhuthhovhcuoegumhhithhrhiesghhu thhovhdruggvvheqnecuggftrfgrthhtvghrnhepiefgteevheevveffheeltdeukeeiie ekueefgedugfefgefhudelgfefveelvdevnecuvehluhhsthgvrhfuihiivgeptdenucfr rghrrghmpehmrghilhhfrhhomhepughmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 4 Oct 2023 07:46:24 -0400 (EDT) Message-ID: Date: Wed, 4 Oct 2023 14:46:23 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <8734yqodqr.fsf@localhost> From: Dmitry Gutov In-Reply-To: <8734yqodqr.fsf@localhost> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.2 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.2 (---) On 04/10/2023 13:58, Ihor Radchenko wrote: > Dmitry Gutov writes: > >>> Would it be possible to implement some kind of caching mechanism to be >>> used by `find-buffer-visiting'? >> I'm guessing you Cc'd me because of an existing comment inside xref.el? >> As you can see I decided not to use this function there, but even >> get-file-buffer wasn't as fast as I would've wanted, so there's a >> quick-and-dirty caching solution for sequential lookups (which assumes >> that the same file would be looked up multiple times in a row). > It looks like my example is quite different from yours. > Do you have a reproducer demonstrating `get-file-buffer' being slow? I retested, and it seems most people here won't be impressed by my example. Anyway: 1. Call (benchmark-run 1 (project-find-regexp "emacs") in an Emacs repo checkout. 2. Change xref--collect-matches to call get-file-buffer instead of xref--find-file-buffer (which does some caching). 'M-x byte-compile-file', (load "xref.elc"), and run the benchmark again. What I get here, is 3.60s vs 5.03. It's a 1.40s difference over ~95000 calls, though (this is how many matches are produced). Which is meaningful for my case, but probably not for yours. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 05 Oct 2023 11:27:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169650521113096 (code B ref 66117); Thu, 05 Oct 2023 11:27:01 +0000 Received: (at 66117) by debbugs.gnu.org; 5 Oct 2023 11:26:51 +0000 Received: from localhost ([127.0.0.1]:46133 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qoMVH-0003P9-5k for submit@debbugs.gnu.org; Thu, 05 Oct 2023 07:26:51 -0400 Received: from mout01.posteo.de ([185.67.36.65]:42077) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qoMVB-0003Oq-I1 for 66117@debbugs.gnu.org; Thu, 05 Oct 2023 07:26:49 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 9C0E5240027 for <66117@debbugs.gnu.org>; Thu, 5 Oct 2023 13:26:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1696505180; bh=TT2ia8sSQc7F/plVnKKklWSfyPTL4TsJkrE74JLTKc4=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=Id7nozL1onC3wuO/hiKrE7G7Iof7I+q6txltjjAG8wrxMAwaqf4QO6sM8VKolPcpU Bx2XHLahOZy1X+u1jDezxEhwRmpmCd2gzXIllS2P+k1k0kOp7ozpdS1Kra7Ns1os5x gQQX5bPmCz8JEPtDmYTGA/5TJQmgMyBVnjjwU5NyOQwlH7Dl2WodG8F/HaMtHaE8Lo o56fKPGPUk6TZ7dPkX3muubwKASXG0E8ivlvUAPBzZn6LlCnRHOwVMaMTTKwffHEgj rhCGraO56z6B0WapCA2unYx+D4MzJyH6qb+wToYX1E6Lvuw5UJMZnMBDhQ6mePXFak +Y/lwOOMZkroQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4S1Tlb6C9fz9rxF; Thu, 5 Oct 2023 13:26:19 +0200 (CEST) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <8734yqodqr.fsf@localhost> Date: Thu, 05 Oct 2023 11:27:55 +0000 Message-ID: <87zg0xia10.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Dmitry Gutov writes: > I retested, and it seems most people here won't be impressed by my > example. Anyway: > > 1. Call (benchmark-run 1 (project-find-regexp "emacs") in an Emacs repo > checkout. > 2. Change xref--collect-matches to call get-file-buffer instead of > xref--find-file-buffer (which does some caching). 'M-x > byte-compile-file', (load "xref.elc"), and run the benchmark again. > > What I get here, is 3.60s vs 5.03. > > It's a 1.40s difference over ~95000 calls, though (this is how many > matches are produced). Which is meaningful for my case, but probably not > for yours. I can reproduce: ;; original code (benchmark-run 10 (project-find-regexp "emacs")) ; => (26.459992888000002 17 7.026558985999998) ;; changed `xref--find-file-buffer' to `get-file-buffer' (benchmark-run 10 (project-find-regexp "emacs")) ; => (43.623003254000004 18 8.161839762000001) Looking into `xref--find-file-buffer', all it does is memoizing the previous call. I think that we can easily achieve the same performance improvement by maintaining approximate cache for Fget_file_buffer - something like (if (and (gethash file cache) (equal (buffer-local-value 'buffer-file-name (gethash ...)) file)) ) Or maybe even cache the last call separately to not pay `gethash' call price. 100% reliable cache is not necessary in this scenario. And not necessary in my scenario, as I have found via my benchmarks in another message. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 05 Oct 2023 14:25:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Michael Heerdegen Cc: dmitry@gutov.dev, Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169651588931572 (code B ref 66117); Thu, 05 Oct 2023 14:25:01 +0000 Received: (at 66117) by debbugs.gnu.org; 5 Oct 2023 14:24:49 +0000 Received: from localhost ([127.0.0.1]:48052 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qoPHV-0008D9-2c for submit@debbugs.gnu.org; Thu, 05 Oct 2023 10:24:49 -0400 Received: from mout02.posteo.de ([185.67.36.66]:57281) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qoPHR-0008Cv-6F for 66117@debbugs.gnu.org; Thu, 05 Oct 2023 10:24:48 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id C10C5240107 for <66117@debbugs.gnu.org>; Thu, 5 Oct 2023 16:24:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1696515860; bh=J6DksJtD8gmvosjq6x98OSrdnjts51sZM7uOnfglffQ=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=hOJ3+RxOAGNjKtkf7SeqLo2OmffswouaoaDSWWNv160eWLRxJBMLuw1sra5aBP4Aj 84pDe4zIvx842/Dd8QY6K1hS9QzRAnaSgUxexV5iL+gV2BRm4fyOyojIugs6L83e2W kGYJVefflkIXxxNyhYDlSUeXrWiu8L7hoMjI3dFkeSVgDzF4p2BG6UUmhFlkeLTs9M ZKunFlmB0Suzltj9FMir9ui1Aq8tY0Vo4gcorJg8JI4EemC0YeFJRFasWqpC9u23/V 1zPRjf4Rh4ncQdDw+2MFXAPPdilnn7vzxzqZzppzLJOUU8xuAivoplE4OogOTB1tRa bqcJC0QT5er9g== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4S1Yhz428hz6tyM; Thu, 5 Oct 2023 16:24:19 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <87zg17b3du.fsf@web.de> References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <87zg17b3du.fsf@web.de> Date: Thu, 05 Oct 2023 14:25:54 +0000 Message-ID: <87bkddi1sd.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Michael Heerdegen writes: > Ihor Radchenko writes: > >> So, using `with-current-buffer' when looping over all the buffers is >> certainly not optimal (maybe in other places as well). >> >> However, even `buffer-local-value' is still costly - it adds up over 50% >> run time. > > OTOH - I tried to reproduce your experiments here locally - > `find-buffer-visiting' only takes 12% of the total run time here when > using the `buffer-local-value' tuned definition of `find-buffer-visiting'. > When we additionally merge the two loops in `find-buffer-visiting' into > one loop and avoid the duplicated calls of `buffer-local-value', don't we > reach a region where maintaining a separate cache doesn't make sense for > the additional gain? > And I wonder which part(s) of `buffer-local-value' is/are that costly, > and why. I looked closer, and it is not `buffer-local-value' being costly, but rather the rest of the `find-buffer-visiting'. In particular, regexp matching in `abbreviate-file-name' and `file-truename'. I used the following: (defun find-buffer-visiting (filename &optional predicate) "Return the buffer visiting file FILENAME (a string). This is like `get-file-buffer', except that it checks for any buffer visiting the same file, possibly under a different name. If PREDICATE is non-nil, only buffers satisfying it are eligible, and others are ignored. PREDICATE is called with the buffer as the only argument, but not with the buffer as the current buffer. If there is no such live buffer, return nil." (let ((predicate (or predicate #'identity)) (truename (abbreviate-file-name (file-truename filename)))) (or (let ((buf (get-file-buffer filename))) (when (and buf (funcall predicate buf)) buf)) (let ((list (buffer-list)) found) (while (and (not found) list) (if (and (buffer-local-value 'buffer-file-name (car list)) (string= (buffer-local-value 'buffer-file-truename (car list)) truename) (funcall predicate (car list))) (setq found (car list))) (setq list (cdr list))) found) (let* ((attributes (file-attributes truename)) (number (file-attribute-file-identifier attributes)) (list (buffer-list)) found local-filename) (and buffer-file-numbers-unique (car-safe number) ;Make sure the inode is not just nil. (while (and (not found) list) (setq local-filename (buffer-local-value 'buffer-file-name (car list))) (if (and local-filename (equal (buffer-local-value 'buffer-file-number (car list)) number) ;; Verify this buffer's file number ;; still belongs to its file. (file-exists-p local-filename) (equal (file-attributes (buffer-local-value 'buffer-file-truename (car list))) attributes) (funcall predicate (car list))) (setq found (car list))) (setq list (cdr list)))) found)))) (native-compile #'find-buffer-visiting) Native compilation at the end is important - it reduced runtime significantly. > Storing the same information twice - once in a buffer local variable, > and then again in a cache that needs to be updated separately doesn't > sound very reasonable. But see Dmitry's reproducer where even `get-file-buffer' is demonstrated to be slow in certain scenarios. So, caching (although less rigorous) might be still necessary. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 05 Oct 2023 17:16:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169652610325104 (code B ref 66117); Thu, 05 Oct 2023 17:16:02 +0000 Received: (at 66117) by debbugs.gnu.org; 5 Oct 2023 17:15:03 +0000 Received: from localhost ([127.0.0.1]:48440 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qoRwC-0006WD-0P for submit@debbugs.gnu.org; Thu, 05 Oct 2023 13:15:03 -0400 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:59629) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qoRw6-0006Vy-Qc for 66117@debbugs.gnu.org; Thu, 05 Oct 2023 13:14:59 -0400 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 167DC5C0553; Thu, 5 Oct 2023 13:14:31 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Thu, 05 Oct 2023 13:14:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm1; t= 1696526071; x=1696612471; bh=R7VVC+mKjDOzvfLZxSvXerY0aZyPlcGV9VI McE+dMNo=; b=VDL/AMNfPB7ZquqhefZe7KSpR6tCnBWRIUWUpupzPag43YaqAAB 1G3BaMTFg6nfS4vTSnbzWnjjvpYGl8CetBu5QhyvyJGpxDoaxjoOd2d15FBX4Czd 8onZ3lHQPGRtM9dTzz90T7mAeHcDF61gqGXmb83qfOdMwnSCrxiC4Ucq5ibAoX/+ /9LRfZKqWlo+QLwZGxbLvjMmjGJKLCZ+DPLbkr1j3HRfKfnU/fJsX95j1TwKxVwS BCrhJXzHWIxj10eHjLvrw9qtGfHKF251NyRKODX7GkoHm2x0MX7WgBbLz0+r9LV0 15/+9Mu9cENgIHEoY0b4S0o6sVsbu4R3v2A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1696526071; x=1696612471; bh=R7VVC+mKjDOzvfLZxSvXerY0aZyPlcGV9VI McE+dMNo=; b=SA+jgIWhaxYk5j6NUdPPIRyIGRjHrZFLq29ZVcvaKGlmFYaLudz r6GPArP3zgQBDwfhDLyUKT/QicEE+OKExxEreh8vJfkw0DPNfFbXWXMi8lnXAOx4 zQM5iDjULIRcBEg1pj8ZoEDqiqdG5DkMQFYioUsxPIegbEH4w94/fOCUJuku3LoQ gLdeR0JqQMgkEd3AuvYozvnAV5ctgkGpCyHqZVLU3FHBa+2PqSn7CJvxjJ360xiB 29z0zwVrw2STyVR5pcTNo63sKcp8Ye1qVAd/uwRdOjC9lebPERG717IX7BNEEXOP exSuctHQumCaq83GGgBbxIdaURIQzDFMReg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrgeeggddutdeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefkffggfgfuvfevfhfhjggtgfesth ejredttdefjeenucfhrhhomhepffhmihhtrhihucfiuhhtohhvuceoughmihhtrhihsehg uhhtohhvrdguvghvqeenucggtffrrghtthgvrhhnpeeigfetveehveevffehledtueekie eikeeufeegudfgfeeghfdulefgfeevledvveenucevlhhushhtvghrufhiiigvpedtnecu rfgrrhgrmhepmhgrihhlfhhrohhmpegumhhithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 5 Oct 2023 13:14:30 -0400 (EDT) Message-ID: Date: Thu, 5 Oct 2023 20:14:28 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <8734yqodqr.fsf@localhost> <87zg0xia10.fsf@localhost> From: Dmitry Gutov In-Reply-To: <87zg0xia10.fsf@localhost> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.2 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.2 (---) On 05/10/2023 14:27, Ihor Radchenko wrote: > Looking into `xref--find-file-buffer', all it does is memoizing the > previous call. I think that we can easily achieve the same performance > improvement by maintaining approximate cache for Fget_file_buffer - > something like > (if (and (gethash file cache) > (equal (buffer-local-value 'buffer-file-name (gethash ...)) file)) > > ) > > Or maybe even cache the last call separately to not pay `gethash' call price. That works for the Xref's scenario (where, when there are many matches, they would tend to come several per file), but I'm not sure it's a good caching strategy in general. And applications that are suited for it might as well write a small wrapper like I did. > 100% reliable cache is not necessary in this scenario. And not necessary > in my scenario, as I have found via my benchmarks in another message. IIUC a cache that keys on non-abbreviated/non-expanded filenames would be able to speed all that up anyway. But a more algorithmic improvement first would be better, of course. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 07 Oct 2023 08:25:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169666705221666 (code B ref 66117); Sat, 07 Oct 2023 08:25:02 +0000 Received: (at 66117) by debbugs.gnu.org; 7 Oct 2023 08:24:12 +0000 Received: from localhost ([127.0.0.1]:53277 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp2bc-0005dO-8r for submit@debbugs.gnu.org; Sat, 07 Oct 2023 04:24:12 -0400 Received: from mout02.posteo.de ([185.67.36.66]:52075) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp2bY-0005d6-CQ for 66117@debbugs.gnu.org; Sat, 07 Oct 2023 04:24:09 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 82E66240103 for <66117@debbugs.gnu.org>; Sat, 7 Oct 2023 10:23:42 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1696667022; bh=BwFjRxXS3U388L8zY8ExlKiE0KPrWAO72oj5wd7B32g=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=iZ3NPZ0r+SYPWmicHIhsAcIE11PC6jpzTf3GWj9iRlviTUFUQD9Nsdy6MpVrn/A1p RXONlDX0V0PkO/rxF08OV2Hooaao8LYbNXm8/9ue+MbGhIlaaJrQLaH7VEQcynMm6H 6pMppXhGR9bLCFWaB9FMiFlSYNrdhmlehzxcCBKxqllC6sc+E/yVmB4O2RrC7ganU5 s29RZwmcdCkTd/VH73KqvTVl4PTQ3Fm1EOp6BRfA4MEHK07RIrhtq0S0rtOEz3/xzN YEC3tRBZq+WI/7/WSYP+vxFHC4RED1uXUqgAbZ3yXG+JtGPwB6Pm5ZPsEvwKZsjkNm v+gxyGbix9qMQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4S2dbx49VRz9rxD; Sat, 7 Oct 2023 10:23:41 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <83ttrdx8j9.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> Date: Sat, 07 Oct 2023 08:25:06 +0000 Message-ID: <87a5su261p.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> >> If one uses `get-file-buffer' instead of `find-buffer-visiting', the >> >> total runtime becomes 5.1 sec - almost 4x faster. >> > >> > This is also not very interesting, since find-file-noselect calls >> > get-file-buffer as well. >> >> No. `find-file-noselect' calls `find-buffer-visiting'. > > Unless we use different Emacsen, find-file-noselect calls both > get-file-buffer and find-buffer-visiting: > > (let* ((buf (get-file-buffer filename)) <<<<<<<<<<<<<<<<<<<<<<<<<<<< We are probably mis-communicating. My point is that `get-file-buffer' is very fast (for my purposes). So, it does not matter as much if it is called somewhere else and how many times. Although, as Dmitry demonstrated, `get-file-buffer' might be slow in certain scenarios. But let's postpone that discussion after we handle the much slower `find-buffer-visiting'. >> I still think that my previous conclusions are true. And I agree that >> rewriting these expensive loops in C makes sense. Maybe two new >> subroutines to find buffer by `buffer-file-truename' and by >> `buffer-file-number'? > > Yes, that's what I had in mind. I looked closer, and there is already `get_truename_buffer', which can simply be exposed to Lisp. `buffer-file-number' is a bit more tricky - it is not defined in C, but in files.el. However, I am wondering if this variable should be moved to C or maybe into the buffer object. `make-indirect-buffer' (defined in C) has Fset (intern ("buffer-save-without-query"), Qnil); Fset (intern ("buffer-file-number"), Qnil); WDYT? >> Aside: this reminds me about obsoletion of generalized buffer-local >> variable. AFAIU, there is currently no way to set buffer-local value in >> buffer without setting that buffer to current. It would be nice if such >> setting were possible, especially in performance-critical code. > > Maybe, but is there any performance-critical code which needs that? For example, org-element.el needs to set buffer-local values in base buffer of an indirect buffer every time buffer text is being edited. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 07 Oct 2023 08:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169666851624375 (code B ref 66117); Sat, 07 Oct 2023 08:49:02 +0000 Received: (at 66117) by debbugs.gnu.org; 7 Oct 2023 08:48:36 +0000 Received: from localhost ([127.0.0.1]:53296 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp2zD-0006L0-QM for submit@debbugs.gnu.org; Sat, 07 Oct 2023 04:48:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35304) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp2zB-0006KC-Gn for 66117@debbugs.gnu.org; Sat, 07 Oct 2023 04:48:34 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qp2ym-0000hu-NY; Sat, 07 Oct 2023 04:48:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=7f99UIdvOs6BuOuGLTcjZNqGxmIGbE2IMGMEOlgCCts=; b=qMdRClvuLcF4 MAMuIXFyLZvcL4izE3iF/KJ+pKcFqSNl1o+Kq74qjgXMKDWKTOKh+QRi8rSi4MighIGmk+ZI8vXiG M5OLxI6MSSxcIFet3z1MPjftJr7lxtnSP9IakCF89C++0Jz/Ddg4jqsTbo5fLHEk/V+Y0ju5M9K1A 2JsK6RjgMFqRSkTdOvVcwoQgaXWlmjnK2DzylstI9Z1oKnjT36/o2NvX0ImttRO2el5Ea1mi6Rear WYmXn37GtwiSaV7lRUS2x4HMUVbdMRyPTLIVpKN5fRKcpH5lGpVJbi+vo1XGm4qy/hYfN5nfGlWgs mmqPsJotx3Fl1EMc6wbi9Q==; Date: Sat, 07 Oct 2023 11:48:21 +0300 Message-Id: <838r8e24yy.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87a5su261p.fsf@localhost> (message from Ihor Radchenko on Sat, 07 Oct 2023 08:25:06 +0000) References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Sat, 07 Oct 2023 08:25:06 +0000 > > Eli Zaretskii writes: > > >> >> If one uses `get-file-buffer' instead of `find-buffer-visiting', the > >> >> total runtime becomes 5.1 sec - almost 4x faster. > >> > > >> > This is also not very interesting, since find-file-noselect calls > >> > get-file-buffer as well. > >> > >> No. `find-file-noselect' calls `find-buffer-visiting'. > > > > Unless we use different Emacsen, find-file-noselect calls both > > get-file-buffer and find-buffer-visiting: > > > > (let* ((buf (get-file-buffer filename)) <<<<<<<<<<<<<<<<<<<<<<<<<<<< > > We are probably mis-communicating. My point is that `get-file-buffer' is > very fast (for my purposes). So, it does not matter as much if it is > called somewhere else and how many times. It matters to me. Timing code must be very accurate and must not modify the code in question, certainly not by invoking the same primitives that are already called by the code being times. I must say that this discussion is very frustrating from my POV. Lots of information, a large portion of it irrelevant, and very little systematical analysis of the involved code, its actual performance, and the conclusions with numbers to back them up. On top of that, gaps for a week or more between a message and a response, something that makes it hard to follows the discussion. We should be able to do better. > >> I still think that my previous conclusions are true. And I agree that > >> rewriting these expensive loops in C makes sense. Maybe two new > >> subroutines to find buffer by `buffer-file-truename' and by > >> `buffer-file-number'? > > > > Yes, that's what I had in mind. > > I looked closer, and there is already `get_truename_buffer', which can > simply be exposed to Lisp. > > `buffer-file-number' is a bit more tricky - it is not defined in C, but > in files.el. However, I am wondering if this variable should be moved to > C or maybe into the buffer object. `make-indirect-buffer' (defined in C) > has > > Fset (intern ("buffer-save-without-query"), Qnil); > Fset (intern ("buffer-file-number"), Qnil); > > WDYT? TTTT, I don't know what to think. >From my POV, there are two alternatives here: . expose several new primitives to Lisp to make find-buffer-visiting faster without changing the way we store the file-to-buffer association information . introduce caches or change the way file-to-buffer associations are stored to speed up find-buffer-visiting What I'd like to see is that someone implements the first idea, and times find-buffer-visiting after that to see if it becomes fast enough. Then we can discuss whether anything else is needed. > >> Aside: this reminds me about obsoletion of generalized buffer-local > >> variable. AFAIU, there is currently no way to set buffer-local value in > >> buffer without setting that buffer to current. It would be nice if such > >> setting were possible, especially in performance-critical code. > > > > Maybe, but is there any performance-critical code which needs that? > > For example, org-element.el needs to set buffer-local values in base > buffer of an indirect buffer every time buffer text is being edited. And that is performance-critical? in what way and in which situations? From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 07 Oct 2023 09:29:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169667088728275 (code B ref 66117); Sat, 07 Oct 2023 09:29:01 +0000 Received: (at 66117) by debbugs.gnu.org; 7 Oct 2023 09:28:07 +0000 Received: from localhost ([127.0.0.1]:53328 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp3bS-0007Ly-Bf for submit@debbugs.gnu.org; Sat, 07 Oct 2023 05:28:06 -0400 Received: from mout01.posteo.de ([185.67.36.65]:49819) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp3bP-0007LT-Rc for 66117@debbugs.gnu.org; Sat, 07 Oct 2023 05:28:04 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 8DC7D240029 for <66117@debbugs.gnu.org>; Sat, 7 Oct 2023 11:27:38 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1696670858; bh=vOdI9EPTwPW5eFj2aPEEvMRVmsof96pZl9VMOF4wgjE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=gdSNpDcse42ktkJ4mBHJq8D/kAZBc/K6kUaKN8rak2QIOUoYLrsK+3dqrz5DZwZ2w ZZaaOYeNZvfVNw096bJ1S2v4nkq3638d3XTkNSl+ejIi+bOxkTac/f7MjWLIUXt7Yq +/ASte10eJkWwyqS5meKJP2kL9x2X1FdapP09+d2Ut12nS9KTpWeATtlVLS6LHmr4p e+jpt0vPfWXuZlZRBxPG2+ywKVoce8xx+GFBZREAomOd+W5bWiE/UMvuTlsVAnDnjD 7XKP/KU53ka1A07fszDwAnF7lWBcptc8c08WOtP0Wbke8If6nE9oiXRlMS9PRLbnro G9VULXvtW9M5w== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4S2g1j5Hhrz6tyT; Sat, 7 Oct 2023 11:27:37 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <838r8e24yy.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> Date: Sat, 07 Oct 2023 09:29:15 +0000 Message-ID: <87y1gezspg.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> We are probably mis-communicating. My point is that `get-file-buffer' is >> very fast (for my purposes). So, it does not matter as much if it is >> called somewhere else and how many times. > > It matters to me. Timing code must be very accurate and must not > modify the code in question, certainly not by invoking the same > primitives that are already called by the code being times. My point is that an extra call to `get-file-buffer' in (unless (get-file-buffer ...) ...) does not change the profiling results - `get-file-buffer' only takes 49 samples out of 5157 (<1%). Calling `get-file-buffer' multiple times literally make no difference in my benchmark. > I must say that this discussion is very frustrating from my POV. Lots > of information, a large portion of it irrelevant, and very little > systematical analysis of the involved code, its actual performance, > and the conclusions with numbers to back them up. Sorry, but I do not fully understand what you expected. I tried my best to provide all the details of my testing during the course of this branch of the discussion. In particular, see https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#59 and later https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#71 where I addressed your concern about calling `find-buffer-visiting'/`get-file-buffer' unnecessarily in the testing code. I provided the code, the timing, and the raw data from the profiler report. Please, let me know if you need more. > ... On top of that, > gaps for a week or more between a message and a response, something > that makes it hard to follows the discussion. We should be able to do > better. I can understand the frustration, but I just have as much time as I can allocate. I was mostly AFC for about a week and was not able to reply to many of the Emacs-related discussions. Also, I am used to mailing list rule that one month is allowed for a reply (https://orgmode.org/worg/org-mailing-list.html#i-didnt-receive-an-answer). I thought that emacs-devel is not different. >> I looked closer, and there is already `get_truename_buffer', which can >> simply be exposed to Lisp. >> >> `buffer-file-number' is a bit more tricky - it is not defined in C, but >> in files.el. However, I am wondering if this variable should be moved to >> C or maybe into the buffer object. `make-indirect-buffer' (defined in C) >> has >> >> Fset (intern ("buffer-save-without-query"), Qnil); >> Fset (intern ("buffer-file-number"), Qnil); >> >> WDYT? > > TTTT, I don't know what to think. > > From my POV, there are two alternatives here: > > . expose several new primitives to Lisp to make find-buffer-visiting > faster without changing the way we store the file-to-buffer > association information > . introduce caches or change the way file-to-buffer associations are > stored to speed up find-buffer-visiting > > What I'd like to see is that someone implements the first idea, and > times find-buffer-visiting after that to see if it becomes fast > enough. Then we can discuss whether anything else is needed. Agree. That's what I was trying to do. However, one of the new primitives will require searching a buffer with given value of `buffer-file-number' - the variable not defined in C. That's why my question - I can either query buffer-local variable in generic way via `Fbuffer_local_value' or faster, by adding `buffer-file-number' to buffer object. The latter also makes sense in the context of `make-indirect-buffer' implementation. >> >> Aside: this reminds me about obsoletion of generalized buffer-local >> >> variable. AFAIU, there is currently no way to set buffer-local value in >> >> buffer without setting that buffer to current. It would be nice if such >> >> setting were possible, especially in performance-critical code. >> > >> > Maybe, but is there any performance-critical code which needs that? >> >> For example, org-element.el needs to set buffer-local values in base >> buffer of an indirect buffer every time buffer text is being edited. > > And that is performance-critical? in what way and in which situations? When making a large number of edits in Org buffer. The code I am referring to runs in `after-change-functions' and therefore should be as fast as possible. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 07 Oct 2023 10:58:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.16966762516089 (code B ref 66117); Sat, 07 Oct 2023 10:58:02 +0000 Received: (at 66117) by debbugs.gnu.org; 7 Oct 2023 10:57:31 +0000 Received: from localhost ([127.0.0.1]:53460 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp4zz-0001a9-8o for submit@debbugs.gnu.org; Sat, 07 Oct 2023 06:57:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57490) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp4zw-0001Zs-At for 66117@debbugs.gnu.org; Sat, 07 Oct 2023 06:57:29 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qp4zX-0006h6-A1; Sat, 07 Oct 2023 06:57:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=pbExrTj9Acmv/k7pKZLCoELl1bqv+Olq6CpbACiAqME=; b=Nm+1uelmBM80 DaC1ldmyUlHA7d89rp4epr0zDKMATtYthLa5BVR6G7faW61AIBR4F3R6kZ6QKNxZGgLKL1yb0ucVa 8lAPZ0Lm2PowpAgNZRdLjjvliUWQKGIpan9DgAbvqivv6PmErsiZZUHQbsNZv0oVMafA4JxHft0ix M2weGGuce365JATFqbSSVncXXoe6hhwxNM40T1SjacgXiUdCbugGNAf/x24Pr7W3InzI184tgtgp+ 2xkurCZKu/Ra4xy/QrrVN+T7oyKCfxjxGGhvKIyhWBVSQPdfQYVKav52qDUqDuQHg8fryRjT+52w/ fRm6vMPAnqB7ypto1deeDQ==; Date: Sat, 07 Oct 2023 13:57:14 +0300 Message-Id: <834jj21z05.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87y1gezspg.fsf@localhost> (message from Ihor Radchenko on Sat, 07 Oct 2023 09:29:15 +0000) References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Sat, 07 Oct 2023 09:29:15 +0000 > > Eli Zaretskii writes: > > > From my POV, there are two alternatives here: > > > > . expose several new primitives to Lisp to make find-buffer-visiting > > faster without changing the way we store the file-to-buffer > > association information > > . introduce caches or change the way file-to-buffer associations are > > stored to speed up find-buffer-visiting > > > > What I'd like to see is that someone implements the first idea, and > > times find-buffer-visiting after that to see if it becomes fast > > enough. Then we can discuss whether anything else is needed. > > Agree. That's what I was trying to do. However, one of the new primitives > will require searching a buffer with given value of `buffer-file-number' > - the variable not defined in C. buffer-file-number is defined as follows: (file-attribute-file-identifier (file-attributes buffer-file-name))) whereas file-attribute-file-identifier is (defsubst file-attribute-file-identifier (attributes) "The inode and device numbers in ATTRIBUTES returned by `file-attributes'. The value is a list of the form (INODENUM DEVICE), where DEVICE could be either a single number or a cons cell of two numbers. This tuple of numbers uniquely identifies the file." (nthcdr 10 attributes)) So in C this is: list2 (INT_TO_INTEGER (s.st_ino), INT_TO_INTEGER (s.st_dev)); > >> For example, org-element.el needs to set buffer-local values in base > >> buffer of an indirect buffer every time buffer text is being edited. > > > > And that is performance-critical? in what way and in which situations? > > When making a large number of edits in Org buffer. The code I am > referring to runs in `after-change-functions' and therefore should be as > fast as possible. I'd need to see measurements for that. In any case, this is a separate issue. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 07 Oct 2023 11:08:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.16966768227401 (code B ref 66117); Sat, 07 Oct 2023 11:08:02 +0000 Received: (at 66117) by debbugs.gnu.org; 7 Oct 2023 11:07:02 +0000 Received: from localhost ([127.0.0.1]:53479 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp59B-0001vD-Oe for submit@debbugs.gnu.org; Sat, 07 Oct 2023 07:07:02 -0400 Received: from mout01.posteo.de ([185.67.36.65]:34503) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp598-0001v0-TE for 66117@debbugs.gnu.org; Sat, 07 Oct 2023 07:07:00 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id DCDAE240028 for <66117@debbugs.gnu.org>; Sat, 7 Oct 2023 13:06:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1696676793; bh=o1q5K/lMKTgfI2nPJKn8CG+26m7gFoF9pgQMZCBuzf0=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=RG6KmCLgz6Go/+dTD19Q2qq5NLn9IMwlgPP07WZUk/Se6UF4b+qK9QMGtnBHJdwS9 PNuNG+wqRcoTBv/M8yD1NdSsjVT22csfmZyqIIlspZPP5Wl/JIObmr+0WRAluiC7Tv avvA/rv2O/x7mKyO8qSMbFlyYuV05SKUgi9eixe4dtL4AQgcIz6nbT6mnh1K9/+tO1 Z9tD4pyl6ZJzZbjaLMY5eEWJSjEQkjFMRMLatNWKtEhasqvwKPdkhvKte3lBWPZ/wY iTC6JQ+/Gqxk/W8f2bK7zB3PvAiOexNE+qd1LxuDCNQjnA6Z49NNvVhe6G+UlNoAyN J3s4oM/aDT1Jg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4S2jCr6XS4z9rxG; Sat, 7 Oct 2023 13:06:32 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <834jj21z05.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> Date: Sat, 07 Oct 2023 11:08:10 +0000 Message-ID: <87il7izo4l.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> Agree. That's what I was trying to do. However, one of the new primitives >> will require searching a buffer with given value of `buffer-file-number' >> - the variable not defined in C. > > buffer-file-number is defined as follows: > > (file-attribute-file-identifier > (file-attributes buffer-file-name))) > > whereas file-attribute-file-identifier is > > (defsubst file-attribute-file-identifier (attributes) > ... > (nthcdr 10 attributes)) > > So in C this is: > > list2 (INT_TO_INTEGER (s.st_ino), INT_TO_INTEGER (s.st_dev)); But how to get `s'? Do you mean that we should re-run `sys_fstat' on every buffer? That's slow (query to FS), isn't it? > I'd need to see measurements for that. In any case, this is a > separate issue. Ok. I will look into it later and open a separate bug report if necessary. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 07 Oct 2023 11:25:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.16966778589323 (code B ref 66117); Sat, 07 Oct 2023 11:25:02 +0000 Received: (at 66117) by debbugs.gnu.org; 7 Oct 2023 11:24:18 +0000 Received: from localhost ([127.0.0.1]:53492 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp5Pu-0002QJ-7s for submit@debbugs.gnu.org; Sat, 07 Oct 2023 07:24:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55600) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp5Ps-0002Q4-3Q for 66117@debbugs.gnu.org; Sat, 07 Oct 2023 07:24:17 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qp5PT-0003yt-0C; Sat, 07 Oct 2023 07:23:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=3RHHGUli7lYaJfdOz4yptMEB8t1D1qslZuBx8KPDzpU=; b=a9NrF/klC7dJ elY00G+lWLHYKeHe5fKBf7O8e5iGkn6HdyvegxKjBY8jq5gey8IfsO/NhEWcRZBkg9+q8QMFIdUlR Z0qWLw0Rc74b59D6RonNUBf4otQkrbfYLWfZ5Or185utEp8uZNKQF5bX89ihjEzaJ+LUDKdWFPVlc bVFfb5suHlW/k4DPv1AxE70PsYcD3ptoOakkMhdBDli/vWJhNKfII1OmwIN0Lk93+gGFzSQ0TgXog 8bd4hlLF+ae1c702/+G8IIVyMHqDGLWIojhJY+HJewzwENX7S7dDdk72j82pg9w50HxqOapsNdFIq SLpnodbo3KgwLO4h/Fbp9g==; Date: Sat, 07 Oct 2023 14:24:02 +0300 Message-Id: <831qe61xrh.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87il7izo4l.fsf@localhost> (message from Ihor Radchenko on Sat, 07 Oct 2023 11:08:10 +0000) References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Sat, 07 Oct 2023 11:08:10 +0000 > > Eli Zaretskii writes: > > > So in C this is: > > > > list2 (INT_TO_INTEGER (s.st_ino), INT_TO_INTEGER (s.st_dev)); > > But how to get `s'? Do you mean that we should re-run `sys_fstat' on > every buffer? That's slow (query to FS), isn't it? No, it's very fast, at least on Posix hosts. But if we decide it isn't fast enough, we can record that in the buffer when the file is visited. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 07 Oct 2023 11:43:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169667895020909 (code B ref 66117); Sat, 07 Oct 2023 11:43:02 +0000 Received: (at 66117) by debbugs.gnu.org; 7 Oct 2023 11:42:30 +0000 Received: from localhost ([127.0.0.1]:53500 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp5hW-0005RB-8I for submit@debbugs.gnu.org; Sat, 07 Oct 2023 07:42:30 -0400 Received: from mout02.posteo.de ([185.67.36.66]:46937) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp5hT-0005Qv-Nv for 66117@debbugs.gnu.org; Sat, 07 Oct 2023 07:42:28 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 64968240104 for <66117@debbugs.gnu.org>; Sat, 7 Oct 2023 13:42:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1696678922; bh=ZIyTsmaKnB4aoNRdfcsXZOzSIloB+LKm/3xKmzCqCLI=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=WAm79onHOp1ruef+1Ml+YXMZ+vBlParC+aEQdhyTg8Pl41SKVE2DUojJ4BgEFq9jB f9cEFnSW45kUuLSISVwv2W5ii3QPsGDP9QP3DO1Bpt7DgmGbYFobqqI7X/pmKNpAFT RMet5sbO1F19VCAPduZ4+R5xrlfbMtphFcMOeg/VCn2ffVWYNP8KX34OICp+LGfSpe wmkLDEOlckIeZmlFgxqjIlk2eewfgotfmmrusZzqjJii/zUKR+V1IQVZpTTZf11Jqj ZgYrS3ZTdMGn4hxIVL6FNe7vvdGoxxEKPTsuVnZO+uNHyRq5c+uQ3aATrRW0WIRsHA cgWa/Gu+GB3XQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4S2k0n1yFGz9rxG; Sat, 7 Oct 2023 13:42:01 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <831qe61xrh.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> Date: Sat, 07 Oct 2023 11:43:38 +0000 Message-ID: <87cyxqzmhh.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> Eli Zaretskii writes: >> >> > So in C this is: >> > >> > list2 (INT_TO_INTEGER (s.st_ino), INT_TO_INTEGER (s.st_dev)); >> >> But how to get `s'? Do you mean that we should re-run `sys_fstat' on >> every buffer? That's slow (query to FS), isn't it? > > No, it's very fast, at least on Posix hosts. But if we decide it > isn't fast enough, we can record that in the buffer when the file is > visited. I am mostly concerned about network FS, where any file operation can be slow. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 07 Oct 2023 12:06:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169668035723464 (code B ref 66117); Sat, 07 Oct 2023 12:06:02 +0000 Received: (at 66117) by debbugs.gnu.org; 7 Oct 2023 12:05:57 +0000 Received: from localhost ([127.0.0.1]:53512 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp64D-00066O-96 for submit@debbugs.gnu.org; Sat, 07 Oct 2023 08:05:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43046) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qp64A-000669-6V for 66117@debbugs.gnu.org; Sat, 07 Oct 2023 08:05:55 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qp63l-0004MH-10; Sat, 07 Oct 2023 08:05:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=P8+blQreZabrDvU3i4VnI51m3Zjt4hm5zk1ESS2U+Lo=; b=Kz13A4+w/rPO jhSCUaibpEQsiiWjYnhhQUbCUgO/zDN8FTAVbl6HDv3nIFaudBq3CLZK9Wj7LDHHyGKXsDKLwUnQt uVBPrbEY+2lRH3CyFNG+LcTm9rB2GKcxTTJujNda0j0QWqLgfyLS8ZY4ZlFLTKuWDWeQTzIdb/2ZU Cm6S3zEexzHgeUArsX6ytDnvvNGppG5B+T6ZJImr/XEssNl3d6fusBY9Q0/W0ELOdWMT4RR1M+f+M 9qkIh/YWCmsp2EmMKKD8mLUgUPrW1/o/uu9g8zyYUZIwSka0gmXv3Hi22UTnB+ZsElF5qYMu+FuMS Rrkf2aP86RfV/qBwDMNSWw==; Date: Sat, 07 Oct 2023 15:05:35 +0300 Message-Id: <83zg0uzlgw.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87cyxqzmhh.fsf@localhost> (message from Ihor Radchenko on Sat, 07 Oct 2023 11:43:38 +0000) References: <878r919qfh.fsf@localhost> <72c93fb0-bf3e-3dad-69c0-2147cfa40f57@gutov.dev> <875y42xyex.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Sat, 07 Oct 2023 11:43:38 +0000 > > Eli Zaretskii writes: > > >> Eli Zaretskii writes: > >> > >> > So in C this is: > >> > > >> > list2 (INT_TO_INTEGER (s.st_ino), INT_TO_INTEGER (s.st_dev)); > >> > >> But how to get `s'? Do you mean that we should re-run `sys_fstat' on > >> every buffer? That's slow (query to FS), isn't it? > > > > No, it's very fast, at least on Posix hosts. But if we decide it > > isn't fast enough, we can record that in the buffer when the file is > > visited. > > I am mostly concerned about network FS, where any file operation can be > slow. My advice is to have a prototype working, then time it on local filesystems. Optimizing for networked filesystems is the next step, assuming it is needed. Please keep in mind that the current code does that as well, only from Lisp: the call to file-attributes calls 'stat', then conses the 11-member list that is the return value. So the C implementation cannot possibly be worse. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 08 Oct 2023 09:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169675558511971 (code B ref 66117); Sun, 08 Oct 2023 09:00:02 +0000 Received: (at 66117) by debbugs.gnu.org; 8 Oct 2023 08:59:45 +0000 Received: from localhost ([127.0.0.1]:56247 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpPdY-00036z-RR for submit@debbugs.gnu.org; Sun, 08 Oct 2023 04:59:45 -0400 Received: from mout01.posteo.de ([185.67.36.65]:34305) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpPdW-00036k-2t for 66117@debbugs.gnu.org; Sun, 08 Oct 2023 04:59:43 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 4CCB9240028 for <66117@debbugs.gnu.org>; Sun, 8 Oct 2023 10:59:16 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1696755556; bh=/PUFw5jo55G2HcWskXHUF5SOgB06QVeTUGoT0sLUYpE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=LDkdeDiIr2yZeXpwFB1LNeBd33yOzIibophBAHZM5QN7TY74p7efc1qFk6Uxzcxmz m7ncFoqH6Lm3jPo+BmP3861vm9EtG2VW/6WhiFKZP5mD75KcQZeGenrnTkCeJXm4fc AP/mcEThJK9BeIpm5yrpnMckcZhOiaHgRXyC06XVohLrfnSPHCmvAaf8/Xpf9wDIu4 6EdX2j38p6QinjyU9N1wBGui0Rzps/JCkXQjj0YV/Z50BoCiE7qS50bkzHtIVxVNt9 ocCoRrE4SoQEsXvHYKYkHjfH2K6xM9tgPXXRyGp9n/yB5bX1Hm5zLK6XSCyV2+jrB4 W7giPv7ARECtg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4S3GLV6st6z6twK; Sun, 8 Oct 2023 10:59:14 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <83zg0uzlgw.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> Date: Sun, 08 Oct 2023 09:00:49 +0000 Message-ID: <87v8bhxzcu.fsf@localhost> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain Eli Zaretskii writes: > My advice is to have a prototype working, then time it on local > filesystems. See the attached patch. I used the following simplified reproducer that does not involve loading Org (which skews the relative numbers as Org loading is relatively slow): (dotimes (i 1000) (with-temp-file (format "/tmp/test/%d.txt" i) (insert "* This is test"))) (dolist (file (directory-files "/tmp/test/" t "txt")) (find-file-noselect file)) Without the patch (cpu-profiler-without-patch): 4.3 sec With the patch (cpu-profiler-w-patch ): 2.5 sec > ... Optimizing for networked filesystems is the next step, > assuming it is needed. Please keep in mind that the current code does > that as well, only from Lisp: the call to file-attributes calls > 'stat', then conses the 11-member list that is the return value. So > the C implementation cannot possibly be worse. I left the `file-attributes' call in Elisp. Looking at the cpu-profiler-w-patch, `find-buffer-visiting' is no longer the main contributor to CPU time. I am not sure if we really need to squeeze the performance yet further from `find-buffer-visiting' - `file-attributes' is taking pretty much no time: (reverse call-tree) 924 36% Automatic GC 173 6% + inhibit-local-variables-p 172 6% + locate-dominating-file 139 5% + abbreviate-file-name 113 4% + dir-locals--all-files 109 4% + file-truename 92 3% + find-buffer-visiting ... 6 0% + file-attributes comapare with cpu-profiler-without-patch: (reverse call-tree) 1714 39% + find-buffer-visiting 1131 26% Automatic GC 202 4% + locate-dominating-file 147 3% + abbreviate-file-name 140 3% + inhibit-local-variables-p 104 2% + dir-locals--all-files 98 2% + uniquify-rationalize-file-buffer-names 91 2% + file-truename --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-Improve-performance-of-find-buffer-visiting-bug-6611.patch >From 3b6a9eec3ccc9ff69dbce10d207bddb3e7611606 Mon Sep 17 00:00:00 2001 Message-ID: <3b6a9eec3ccc9ff69dbce10d207bddb3e7611606.1696755521.git.yantar92@posteo.net> From: Ihor Radchenko Date: Sun, 8 Oct 2023 11:48:42 +0300 Subject: [PATCH] Improve performance of `find-buffer-visiting' (bug#66117) * src/buffer.c (Fget_truename_buffer): Expose `get_truename_buffer' to Elisp. (Ffind_buffer): New subr searching for a live buffer with a given value of buffer-local variable. (syms_of_buffer): Register the new added subroutines. * src/filelock.c (lock_file): Use the new `Fget_truename_buffer' name. * src/lisp.h: * test/manual/etags/c-src/emacs/src/lisp.h: Remove no-longer-necessary extern declarations for `get_truename_buffer'. * lisp/files.el (find-buffer-visiting): Refactor, using subroutines to search for buffers instead of slow manual Elisp iterations. --- lisp/files.el | 54 ++++++++++-------------- src/buffer.c | 25 ++++++++++- src/filelock.c | 2 +- src/lisp.h | 1 - test/manual/etags/c-src/emacs/src/lisp.h | 1 - 5 files changed, 47 insertions(+), 36 deletions(-) diff --git a/lisp/files.el b/lisp/files.el index 884c6b74247..dde1a2cc136 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -2183,37 +2183,29 @@ find-buffer-visiting the only argument, but not with the buffer as the current buffer. If there is no such live buffer, return nil." - (let ((predicate (or predicate #'identity)) - (truename (abbreviate-file-name (file-truename filename)))) - (or (let ((buf (get-file-buffer filename))) - (when (and buf (funcall predicate buf)) buf)) - (let ((list (buffer-list)) found) - (while (and (not found) list) - (with-current-buffer (car list) - (if (and buffer-file-name - (string= buffer-file-truename truename) - (funcall predicate (current-buffer))) - (setq found (car list)))) - (setq list (cdr list))) - found) - (let* ((attributes (file-attributes truename)) - (number (file-attribute-file-identifier attributes)) - (list (buffer-list)) found) - (and buffer-file-numbers-unique - (car-safe number) ;Make sure the inode is not just nil. - (while (and (not found) list) - (with-current-buffer (car list) - (if (and buffer-file-name - (equal buffer-file-number number) - ;; Verify this buffer's file number - ;; still belongs to its file. - (file-exists-p buffer-file-name) - (equal (file-attributes buffer-file-truename) - attributes) - (funcall predicate (current-buffer))) - (setq found (car list)))) - (setq list (cdr list)))) - found)))) + (or (let ((buf (get-file-buffer filename))) + (when (and buf (or (not predicate) (funcall predicate buf))) buf)) + (let ((truename (abbreviate-file-name (file-truename filename)))) + (or + (let ((buf (get-truename-buffer truename))) + (when (and buf (buffer-local-value 'buffer-file-name buf) + (or (not predicate) (funcall predicate buf))) + buf)) + (let* ((attributes (file-attributes truename)) + (number (file-attribute-file-identifier attributes))) + (and buffer-file-numbers-unique + (car-safe number) ;Make sure the inode is not just nil. + (let ((buf (find-buffer 'buffer-file-number number))) + (when (and buf (buffer-local-value 'buffer-file-name buf) + ;; Verify this buffer's file number + ;; still belongs to its file. + (file-exists-p buffer-file-name) + (equal (file-attributes buffer-file-truename) + attributes) + (or (not predicate) + (funcall predicate (current-buffer)))) + buf)))))))) + (defcustom find-file-wildcards t "Non-nil means file-visiting commands should handle wildcards. diff --git a/src/buffer.c b/src/buffer.c index a7299f4a49e..12f226d8249 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -519,8 +519,11 @@ DEFUN ("get-file-buffer", Fget_file_buffer, Sget_file_buffer, 1, 1, 0, return Qnil; } -Lisp_Object -get_truename_buffer (register Lisp_Object filename) +DEFUN ("get-truename-buffer", Fget_truename_buffer, Sget_truename_buffer, 1, 1, 0, + doc: /* Return the buffer with `file-truename' equal to FILENAME (a string). +If there is no such live buffer, return nil. +See also `find-buffer-visiting'. */) + (register Lisp_Object filename) { register Lisp_Object tail, buf; @@ -533,6 +536,22 @@ get_truename_buffer (register Lisp_Object filename) return Qnil; } +DEFUN ("find-buffer", Ffind_buffer, Sfind_buffer, 2, 2, 0, + doc: /* Return the buffer with buffer-local VARIABLE equal to VALUE. + If there is no such live buffer, return nil. +See also `find-buffer-visiting'. */) + (Lisp_Object variable, Lisp_Object value) +{ + register Lisp_Object tail, buf; + + FOR_EACH_LIVE_BUFFER (tail, buf) + { + if (!NILP (Fequal (value, Fbuffer_local_value(variable, buf)))) + return buf; + } + return Qnil; +} + /* Run buffer-list-update-hook if Vrun_hooks is non-nil and BUF does not have buffer hooks inhibited. */ @@ -6010,6 +6029,8 @@ Functions (implicitly) running this hook are `get-buffer-create', defsubr (&Sbuffer_list); defsubr (&Sget_buffer); defsubr (&Sget_file_buffer); + defsubr (&Sget_truename_buffer); + defsubr (&Sfind_buffer); defsubr (&Sget_buffer_create); defsubr (&Smake_indirect_buffer); defsubr (&Sgenerate_new_buffer_name); diff --git a/src/filelock.c b/src/filelock.c index c2b306ab47d..9ce51c724b1 100644 --- a/src/filelock.c +++ b/src/filelock.c @@ -563,7 +563,7 @@ lock_file (Lisp_Object fn) /* See if this file is visited and has changed on disk since it was visited. */ - Lisp_Object subject_buf = get_truename_buffer (fn); + Lisp_Object subject_buf = Fget_truename_buffer (fn); if (!NILP (subject_buf) && NILP (Fverify_visited_file_modtime (subject_buf)) && !NILP (Ffile_exists_p (fn)) diff --git a/src/lisp.h b/src/lisp.h index 39aa51531fe..544b1691556 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -4715,7 +4715,6 @@ XMODULE_FUNCTION (Lisp_Object o) Lisp_Object, Lisp_Object, Lisp_Object); extern bool overlay_touches_p (ptrdiff_t); extern Lisp_Object other_buffer_safely (Lisp_Object); -extern Lisp_Object get_truename_buffer (Lisp_Object); extern void init_buffer_once (void); extern void init_buffer (void); extern void syms_of_buffer (void); diff --git a/test/manual/etags/c-src/emacs/src/lisp.h b/test/manual/etags/c-src/emacs/src/lisp.h index aa8dc8c9a66..19463828270 100644 --- a/test/manual/etags/c-src/emacs/src/lisp.h +++ b/test/manual/etags/c-src/emacs/src/lisp.h @@ -4075,7 +4075,6 @@ intern_c_string (const char *str) Lisp_Object, Lisp_Object, Lisp_Object); extern bool overlay_touches_p (ptrdiff_t); extern Lisp_Object other_buffer_safely (Lisp_Object); -extern Lisp_Object get_truename_buffer (Lisp_Object); extern void init_buffer_once (void); extern void init_buffer (int); extern void syms_of_buffer (void); -- 2.42.0 --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=cpu-profiler-without-patch Content-Transfer-Encoding: base64 Cltwcm9maWxlci1wcm9maWxlICIyOC4xIiBjcHUgI3MoaGFzaC10YWJsZSBzaXplIDE0NSB0ZXN0 IGVxdWFsIHJlaGFzaC1zaXplIDEuNSByZWhhc2gtdGhyZXNob2xkIDAuODEyNSBkYXRhIChbcmVk aXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDcgW25pbCBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTEgW2RpcmVj dG9yeS1maWxlcyBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWxdIDMgW3VuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNl IGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9n biBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSA3IFtmaWxlLW5ld2VyLXRo YW4tZmlsZS1wIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1s YXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5p bCBuaWxdIDEwIFtsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1zdm4tcmVn aXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTBjYjJiMWM3MjUxNGU0ZD4i IG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tz IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldF0gNTUgW3VuaXF1aWZ5LXJhdGlvbmFsaXplLWZpbGUtYnVmZmVyLW5hbWVz IHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBu aWwgbmlsIG5pbCBuaWxdIDk4IFtmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbF0gMTcxNCBbZmlsZS1yZWFkYWJsZS1wIHZjLWN2cy1yZWdpc3RlcmVkIHZjLWNhbGwt YmFja2VuZCAiIzxjb21waWxlZCAweDI1NGJjZDUyYzE1ZWJkOT4iIG1hcGMgdmMtcmVnaXN0ZXJl ZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9n bl0gNCBbYXV0by1jb2RpbmctYWxpc3QtbG9va3VwIGZpbmQtYXV0by1jb2Rpbmcgc2V0LWF1dG8t Y29kaW5nIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxd IDQyIFtmaWxlcy0tdHJhbnNmb3JtLWZpbGUtbmFtZSBtYWtlLWF1dG8tc2F2ZS1maWxlLW5hbWUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAyMCBbIiM8 Y29tcGlsZWQgLTB4MTE0Y2NiMWM3MjUxNGU0ZD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNr ZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAzIFtp bmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhv b2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwXSAzMiBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmls ZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMg aGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRvLW1v ZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlXSA2IFthYmJyZXZpYXRlLWZpbGUtbmFtZSBmaW5kLWJ1ZmZlci12aXNpdGluZyBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBu aWwgbmlsIG5pbCBuaWwgbmlsXSAyMCBbaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0 by1tb2RlLTEgaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIGhhY2stbG9jYWwtdmFyaWFi bGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDIyIFt2 Yy1maWxlLXNldHByb3AgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUg cnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1s YXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMyBbaW5zZXJ0 LWZpbGUtY29udGVudHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0g MjQgW2xvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLWhnLXJlZ2lzdGVyZWQg dmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDExNWFiYjFjNzI1MTRlNGQ+IiBtYXBjIHZj LXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXRdIDI2IFtkaXItbG9jYWxzLS1hbGwtZmlsZXMgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBk aXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRp ci1sb2NhbC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4 dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0XSA0OCBbYWJicmV2aWF0ZS1maWxlLW5hbWUgZmluZC1maWxl LW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwt bGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWxdIDQyIFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBzZXQtYXV0by1tb2Rl LS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9n biBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDYgW2Rpci1sb2NhbHMtLWFsbC1maWxlcyBsb2NhdGUt ZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxvY2FsLS1nZXQt dmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHld IDU2IFtsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1naXQtcmVnaXN0ZXJl ZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTEzYjNiMWM3MjUxNGU0ZD4iIG1hcGMg dmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdo aWxlIGxldF0gNTggW2xvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLWJ6ci1y ZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxMjU3MWYxYzcyNTE0ZTRk PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9v a3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBsZXQgd2hpbGUgbGV0XSA1NCBbZmlsZS1hdHRyaWJ1dGVzIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsXSAxMCBbYWJicmV2aWF0ZS1maWxlLW5hbWUgbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1m aW5kLXJvb3QgdmMtZ2l0LXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0w eDExNzg0YjFjNzI1MTRlNGQ+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZy ZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gMTMgW2ZpbGUtZXhpc3RzLXAgIiM8Y29tcGls ZWQgLTB4YTUwMzlkOTE5ODQ3YTE5PiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMg dmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNjY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQg IiM8Y29tcGlsZWQgMHgyMzIxY2Q1MmMxNWViZDk+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFj a2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0XSAyMSBbZmlsZS1leGlzdHMtcCAiIzxjb21w aWxlZCAweDFkOWQ3MWRmNTgyNTZiNmY+IiBtYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRl cyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtcmNzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5k ICIjPGNvbXBpbGVkIC0weDExOGY2YjFjNzI1MTRlNGQ+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMt YmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0XSAyMSBbYWRkLWhvb2sgdGV4dC1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAzIFtkZWxxIHNlcS1maWx0ZXIgaGFj ay1sb2NhbC12YXJpYWJsZXMtLWZpbmQtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHNl dC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDQgW2luaGliaXQt bG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9kZS0xIGhhY2stbG9jYWwtdmFyaWFibGVzLXBy b3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0 LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBsZXQgd2hpbGUgbGV0XSAyMCBbZmlsZS10cnVlbmFtZSBmaW5kLWJ1ZmZlci12aXNp dGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhl Y3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSAyMCBbc3RyaW5nLW1hdGNoIGFzc29jLWRlZmF1bHQg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNh bGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDIxIFthYmJyZXZpYXRlLWZpbGUtbmFt ZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1ienItcmVnaXN0ZXJlZCB2 Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MWYxZjYzMWM3MjUxNGU0ZD4iIG1hcGMgdmMt cmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl XSA2IFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNl dC1hdXRvLW1vZGUtMSBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9n biBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gOSBbYWJicmV2aWF0ZS1maWxlLW5hbWUgbG9jYXRlLWRvbWlu YXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlh YmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAxNSBb aGFjay1sb2NhbC12YXJpYWJsZXMtLWZpbmQtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVz IHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAxNiBbZmlsZS1kaXJlY3RvcnktcCBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbF0gNyBbYXV0by1jb2RpbmctcmVnZXhwLWFsaXN0LWxvb2t1cCBmaW5kLWF1dG8t Y29kaW5nIHNldC1hdXRvLWNvZGluZyBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQt ZXhlY3V0ZSBuaWwgbmlsXSA2IFtpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWxdIDIyIFtpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIGhhY2stbG9jYWwtdmFyaWFibGVzIHNl dC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVj dXRlIG5pbF0gMjkgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGluaGliaXQtbG9jYWwtdmFyaWFi bGVzLXAgc2V0LWF1dG8tbW9kZS0xIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNr LWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGVdIDcgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGluaGliaXQtbG9jYWwtdmFyaWFibGVz LXAgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRv LW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBwcm9nbl0gMTQgW2NhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgZm9udC1s b2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVybi1vbi1mb250LWxvY2staWYtZGVzaXJlZCBn bG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2Rl LWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxp c3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldF0gNCBbZXBhLWZpbGUtZmluZC1maWxlLWhv b2sgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmls IG5pbF0gOSBbc2VxLWZpbHRlciBoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmluZC12YXJpYWJsZXMg aGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDQgW3NlYXJjaC1mb3J3YXJkIGZpbmQtYXV0by1j b2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1l eGVjdXRlIG5pbCBuaWxdIDkgW2ZpbGUtdHJ1ZW5hbWUgZmlsZS10cnVlbmFtZSBmaWxlLXRydWVu YW1lIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVj dXRlIG5pbCBuaWwgbmlsIG5pbF0gMTUgW2ZpbGUtZXhpc3RzLXAgIiM8Y29tcGlsZWQgMHgxOWI1 MjYyNzU4MjU2YjZlPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVs dC1yZWdpc3RlcmVkIHZjLXNyYy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxl ZCAtMHgxZWFlMjMxYzcyNTE0ZTRkPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMt cmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0gNiBbZmlsZS1yZW1vdGUtcCBoYWNrLWxvY2FsLXZhcmlh YmxlcyBydW4tbW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1v ZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gOSBbZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgaW5o aWJpdC1sb2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDYgW2FiYnJldmlhdGUtZmlsZS1uYW1l IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLWhnLXJlZ2lzdGVyZWQgdmMt Y2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDE0NjQ4ZjFjNzI1MTRlNGQ+IiBtYXBjIHZjLXJl Z2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0g MjggW2xvb2tpbmctYXQgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMyBbZmluZC1maWxlLW5hbWUtaGFuZGxlciBt YWtlLWF1dG8tc2F2ZS1maWxlLW5hbWUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVj dXRlIG5pbCBuaWwgbmlsXSA2IFtkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0t Z2V0LXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJs ZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2Rl LS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gMyBb ZmlsZS10cnVlbmFtZSBmaWxlLXRydWVuYW1lIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUg bGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDE1IFtzZXQt YXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA0OSBbaW5oaWJpdC1sb2NhbC12 YXJpYWJsZXMtcCBzZXQtYXV0by1tb2RlLTEgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNh bGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAxNSBbc2V0LWF1dG8tbW9kZS0x IGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0 ZV0gNiBbZmlsZS1tb2RlcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhw IGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmls IG5pbCBuaWwgbmlsXSAzIFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0LWxvY2FsLXZh cmlhYmxlcy1wIHNldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUg aGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAxMCBbZmlsZXMt LXRyYW5zZm9ybS1maWxlLW5hbWUgbWFrZS1sb2NrLWZpbGUtbmFtZSBpbnNlcnQtZmlsZS1jb250 ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gMTEgW2Z1bmN0aW9ucCB2Yy1w b3NzaWJsZS1tYXN0ZXIgIiM8Y29tcGlsZWQgMHgxYzc3Njc3NzU4MjU2YjZmPiIgbWFwY2FyIHZj LWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNjY3MtcmVn aXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTRjYjEzMWM3MjUxNGU0ZD4i IG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tz IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMV0gMyBbcnVuLWhvb2tzIGdlbmVy YXRlLW5ldy1idWZmZXIgY3JlYXRlLWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5j YWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbF0gNCBbZmls ZS10cnVlbmFtZSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1h bmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMjIgW2VsZG9jLS1zdXBwb3J0ZWQt cCB0dXJuLW9uLWVsZG9jLW1vZGUgZ2xvYmFsLWVsZG9jLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMg cnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXRdIDQgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxv Y2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgaGFjay1kaXItbG9j YWwtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9k ZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldF0gMyBbZ2V0LWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsXSAxMyBbaGFjay1sb2NhbC12YXJpYWJsZXMtLWZpbmQtdmFyaWFibGVzIGhhY2stbG9jYWwt dmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlIG5pbF0gOCBbZmlsZS1yZW1vdGUtcCBoYWNrLWRpci1sb2NhbC0tZ2V0 LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDYgW2ZpbGUtbmFtZS1ub25kaXJlY3RvcnkgdmMtY2hlY2st bWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc3JjLXJlZ2lzdGVyZWQg dmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDE1YWI0YjFjNzI1MTRlNGQ+IiBtYXBjIHZj LXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZV0gNCBbZmlsZS1yZW1vdGUtcCBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRp ci1sb2NhbC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4 dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gNiBbZmlsZS1uYW1lLWRpcmVjdG9yeSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9n biBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSA2IFt2Yy1maW5kLXJvb3Qg dmMtYnpyLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDE0YjM2YjFj NzI1MTRlNGQ+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRl IHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25dIDQgW2V4cGFuZC1maWxlLW5hbWUgdmMtcmVm cmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qt c2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRl IG5pbCBuaWxdIDMgW2Rpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFy aWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbF0gNiBbdmMtZmluZC1yb290IHZjLXN2bi1yZWdpc3RlcmVkIHZjLWNh bGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxNTViMjcxYzcyNTE0ZTRkPiIgbWFwYyB2Yy1yZWdp c3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0 IHByb2duXSAzIFtzZ21sLWh0bWwtbWV0YS1hdXRvLWNvZGluZy1mdW5jdGlvbiBmaW5kLWF1dG8t Y29kaW5nIHNldC1hdXRvLWNvZGluZyBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQt ZXhlY3V0ZSBuaWwgbmlsXSAyMCBbZmlsZS10cnVlbmFtZSBmaWxlLXRydWVuYW1lIGZpbmQtYnVm ZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbF0gMTUgW2ZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAzIFtsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1l eGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDQgW2dlbmVyYXRlLW5ldy1i dWZmZXIgY3JlYXRlLWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDM4IFthYmJyZXZp YXRlLWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1zdm4t cmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTk4YWJiMWM3MjUxNGU0 ZD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhv b2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlXSAyMCBbZmluZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgaW5zZXJ0 LWZpbGUtY29udGVudHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDE4IFt1bmlx dWlmeS1yYXRpb25hbGl6ZS1jb25mbGljdGluZy1zdWJsaXN0IHVuaXF1aWZ5LXJhdGlvbmFsaXpl LWEtbGlzdCB1bmlxdWlmeS1yYXRpb25hbGl6ZSB1bmlxdWlmeS1yYXRpb25hbGl6ZS1maWxlLWJ1 ZmZlci1uYW1lcyB1bmlxdWlmeS0tY3JlYXRlLWZpbGUtYnVmZmVyLWFkdmljZSBjcmVhdGUtZmls ZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGUgbmlsXSA2IFtleHBhbmQtZmlsZS1uYW1lIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5j YWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls XSA4IFtmaWxlLW5hbWUtZGlyZWN0b3J5IHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVm YXVsdC1yZWdpc3RlcmVkIHZjLXNyYy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21w aWxlZCAtMHhkZjRmMWM3MjUxNGU0ZD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZj LXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSAzIFt2Yy1maWxlLWNsZWFycHJvcHMg dmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1l eGVjdXRlIG5pbCBuaWxdIDEwIFtmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJu LW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4t YnVmZmVycyBydW4taG9va3Mgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDMgW2Fk ZC10by1saXN0IGdsb2JhbC1lbGRvYy1tb2RlLWNtaGgga2lsbC1hbGwtbG9jYWwtdmFyaWFibGVz IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDMg W2xvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9j YWwtLWdldC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDMgW2ZpbGUtbmFtZS1kaXJlY3RvcnkgdmMtY3ZzLXJl Z2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDE2ZjFmMWM3MjUxNGU0ZD4i IG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tz IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBwcm9nbl0gMyBbY2RyIGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwg bmlsIG5pbCBuaWxdIDcgW21hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gt c3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMyBb Zm9ybWF0IHZjLXBvc3NpYmxlLW1hc3RlciAiIzxjb21waWxlZCAweDEzNTg2NDMzNTgyNTZiNmU+ IiBtYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQg dmMtcmNzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDFkNTc3MWM3 MjUxNGU0ZD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUg cnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMV0gNCBbZXhwYW5k LWZpbGUtbmFtZSB2Yy1jdnMtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQg LTB4MWEzOTcxYzcyNTE0ZTRkPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVm cmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSA0IFttYWtlLWxvY2stZmls ZS1uYW1lIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwg bmlsIG5pbF0gMyBbc2V0LWF1dG8tbW9kZS0xIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5j YWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDMgW2FmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSA0IFtmaW5kLWZp bGUtbmFtZS1oYW5kbGVyIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRl IHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwt bGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDQgW2ZpbGUt dHJ1ZW5hbWUgZmlsZS10cnVlbmFtZSBmaWxlLXRydWVuYW1lIGZpbmQtYnVmZmVyLXZpc2l0aW5n IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qt c2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRl IG5pbCBuaWwgbmlsXSA0IFtmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9u LWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVm ZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgc3BlY2lhbC1tb2RlIGVsZG9jLS1mb3JtYXQt ZG9jLWJ1ZmZlciBlbGRvYy1kaXNwbGF5LWluLWJ1ZmZlciBydW4taG9vay13aXRoLWFyZ3MgIiM8 Y29tcGlsZWQgMHgzYzA5N2YzOTg4YzFhMGE+IiAiIzxjb21waWxlZCAweDU0MDM3NTJjODEwNDY1 PiIgZWxpc3AtZWxkb2MtZnVuY2FsbCAiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2 ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzE3PiIgZWxkb2MtZG9jdW1lbnRhdGlvbi1kZWZhdWx0 IGVsZG9jLS1pbnZva2Utc3RyYXRlZ3ldIDMgW2ppdC1sb2NrLWNvbnRleHQtZm9udGlmeSAiIzxz dWJyIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzk+ IiBhcHBseSB0aW1lci1ldmVudC1oYW5kbGVyIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsXSAzIFtjb21wbGV0aW5nLXJlYWQtZGVmYXVsdCByZWFkLWV4dGVu ZGVkLWNvbW1hbmQtMSByZWFkLWV4dGVuZGVkLWNvbW1hbmQgYnl0ZS1jb2RlIGNvbW1hbmQtZXhl Y3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAyOSBbcmVk aXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgY29tcGxldGluZy1yZWFkLWRlZmF1bHQg cmVhZC1leHRlbmRlZC1jb21tYW5kLTEgcmVhZC1leHRlbmRlZC1jb21tYW5kIGJ5dGUtY29kZSBj b21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA5 IFt0cnktY29tcGxldGlvbiBjb21wbGV0ZS13aXRoLWFjdGlvbiAiIzxzdWJyIEY2MTZlNmY2ZTc5 NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzU0PiIgY29tcGxldGlvbi1i YXNpYy10cnktY29tcGxldGlvbiAiIzxjb21waWxlZCAtMHgxMGI2NWQwOGY3NzhlNmZjPiIgIiM8 Y29tcGlsZWQgLTB4MTVjNmYwMjc5NzU3NzFhYT4iIG1hcGMgc2VxLWRvIHNlcS1zb21lIGNvbXBs ZXRpb24tLW50aC1jb21wbGV0aW9uIGNvbXBsZXRpb24tdHJ5LWNvbXBsZXRpb24gY29tcGxldGlv bi0tZG8tY29tcGxldGlvbiBjb21wbGV0aW9uLS1pbi1yZWdpb24tMSAiIzxjb21waWxlZCAweDdk MDMzZWQwZGJmNzhjNz4iIGFwcGx5ICIjPGNvbXBpbGVkIC0weGYwYjVlZjZhYjVhZjIyPiJdIDkg W2ppdC1sb2NrLWNvbnRleHQtZm9udGlmeSAiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZj NjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzk+IiBhcHBseSB0aW1lci1ldmVudC1oYW5kbGVy IGNvbXBsZXRpbmctcmVhZC1kZWZhdWx0IHJlYWQtZXh0ZW5kZWQtY29tbWFuZC0xIHJlYWQtZXh0 ZW5kZWQtY29tbWFuZCBieXRlLWNvZGUgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbF0gMTYgW0F1dG9tYXRpY1wgR0MgbmlsXSAxMTMxKSkgKDI1ODkwIDI3Njg1IDIx NzI2OSA1NTYwMDApIG5pbF0K --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=cpu-profiler-w-patch Content-Transfer-Encoding: base64 Cltwcm9maWxlci1wcm9maWxlICIyOC4xIiBjcHUgI3MoaGFzaC10YWJsZSBzaXplIDE0NSB0ZXN0 IGVxdWFsIHJlaGFzaC1zaXplIDEuNSByZWhhc2gtdGhyZXNob2xkIDAuODEyNSBkYXRhIChbcHJv ZmlsZXItc3RhcnQgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBleGVjdXRl LWV4dGVuZGVkLWNvbW1hbmQgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDMgW3JlZGlzcGxheV9pbnRl cm5hbFwgXChDXCBmdW5jdGlvblwpIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxNSBbdW5kby1hdXRvLS1hZGQtYm91bmRhcnkgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxd IDMgW2RpcmVjdG9yeS1maWxlcyBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwt bGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDMgW2xvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMt ZmluZC1yb290IHZjLWJ6ci1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAw eDQxYWNkZWY3NmMzZWJjMj4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJl c2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gNTEgW2Rpci1sb2NhbHMtZmluZC1maWxl IGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBo YWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0XSAxMCBbZGlyLWxvY2Fscy0tYWxsLWZpbGVzIGxvY2F0ZS1kb21pbmF0aW5n LWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gNjMgW2Rpci1s b2NhbHMtLWFsbC1maWxlcyBsb2NhdGUtZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1m aWxlIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxl cyBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBsZXRdIDUwIFtmaWxlLXJlbW90ZS1wIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhv b2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwXSAxMiBbZmlsZS10cnVlbmFtZSBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmls IG5pbCBuaWwgbmlsXSA1MCBbc2VhcmNoLWJhY2t3YXJkIGhhY2stbG9jYWwtdmFyaWFibGVzLS1m aW5kLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyB0ZXh0LW1v ZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSAzIFt1bmlxdWlmeS1yYXRpb25hbGl6 ZS1maWxlLWJ1ZmZlci1uYW1lcyB1bmlxdWlmeS0tY3JlYXRlLWZpbGUtYnVmZmVyLWFkdmljZSBj cmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSA3NCBbZmlsZS1leGlzdHMtcCAiIzxj b21waWxlZCAweDE5N2FiNjgyZjgyNTZiNmU+IiBtYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRlbXBs YXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtcmNzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNr ZW5kICIjPGNvbXBpbGVkIDB4NGNkZTZjMWNmYjhiMWMwPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZj LWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0gMjAgW2luc2VydC1maWxlLWNvbnRl bnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDUzIFtsb2NhdGUt ZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1oZy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFj a2VuZCAiIzxjb21waWxlZCAweDU1YWRhYzFjZmI4YjFjMD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2 Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gMzQgW3N0 cmluZy1tYXRjaCBhc3NvYy1kZWZhdWx0IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qt c2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRl XSAzMCBbYWJicmV2aWF0ZS1maWxlLW5hbWUgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxl LW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwt bGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBu aWwgbmlsIG5pbF0gMTAgW2F1dG8tY29kaW5nLWFsaXN0LWxvb2t1cCBmaW5kLWF1dG8tY29kaW5n IHNldC1hdXRvLWNvZGluZyBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0 ZSBuaWwgbmlsXSAzOCBbZmlsZS10cnVlbmFtZSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTAg W2ZpbGUtZXhpc3RzLXAgIiM8Y29tcGlsZWQgMHgxOWVmYzkzMmY4MjU2YjZlPiIgbWFwY2FyIHZj LWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNjY3MtcmVn aXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHg1MWIxNmMxY2ZiOGIxYzA+IiBt YXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0XSAx MCBbaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0by1tb2RlLTEgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAy NiBbZmlsZS1hdHRyaWJ1dGVzIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2du IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZl bHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA2IFtsb2NhdGUtZG9t aW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFy aWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4t bW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDcgW2ZpbGUtdHJ1ZW5h bWUgZmlsZS10cnVlbmFtZSBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDIy IFtoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmluZC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJs ZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2Rl LS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9n biBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDIxIFt1bmlxdWlmeS0tY3JlYXRlLWZpbGUtYnVmZmVy LWFkdmljZSBjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTcgW2ZpbGUt bmFtZS1kaXJlY3RvcnkgdmMtY3ZzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBp bGVkIDB4NWY0NDJjMWNmYjhiMWMwPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMt cmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSAzIFtsb2NhdGUtZG9t aW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1zdm4tcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tl bmQgIiM8Y29tcGlsZWQgMHg1ZTk2NmMxY2ZiOGIxYzA+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMt YmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDM3IFtzZXQt YXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA0MyBbZmlsZS10cnVlbmFtZSBm aWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSA2IFtmaW5kLWJ1ZmZl ci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1h bmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gOTIgW2ZpbGUtbmFtZS1zYW5zLXZl cnNpb25zIGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9kZS0xIGhhY2stbG9j YWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29r cyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNl dC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDEzIFtpbmhpYml0LWxvY2FsLXZhcmlh Ymxlcy1wIGhhY2stbG9jYWwtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5j YWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMzkgW2xvY2F0ZS1kb21pbmF0 aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLWdpdC1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAi Izxjb21waWxlZCAweGZkZGYyYzFjZmI4YjFjMD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNr ZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gNDAgW2ZpbGVzLS10 cmFuc2Zvcm0tZmlsZS1uYW1lIG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDkgW2xvY2F0ZS1kb21pbmF0aW5n LWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGVdIDMgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbF0gMTIgW2luaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9k ZS0xIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAyOSBbaGFjay1s b2NhbC12YXJpYWJsZXMtLWZpbmQtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qt c2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRl IG5pbF0gMTIgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGluaGliaXQtbG9jYWwtdmFyaWFibGVz LXAgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGUgbmlsXSA3IFtzZ21sLXhtbC1hdXRvLWNvZGluZy1mdW5jdGlvbiBmaW5kLWF1dG8t Y29kaW5nIHNldC1hdXRvLWNvZGluZyBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQt ZXhlY3V0ZSBuaWwgbmlsXSAxNiBbc2dtbC1odG1sLW1ldGEtYXV0by1jb2RpbmctZnVuY3Rpb24g ZmluZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgaW5zZXJ0LWZpbGUtY29udGVudHMgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMTcgW2V4cGFuZC1maWxlLW5hbWUgdmMtcmVmcmVz aC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWxdIDMgW2ZpbGUtbW9kZXMgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qt c2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRl IG5pbCBuaWwgbmlsIG5pbF0gMTQgW21hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJl ZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0 ZV0gMyBbdmMtZmluZC1yb290IHZjLXN2bi1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxj b21waWxlZCAweGYxMzIyYzFjZmI4YjFjMD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5k IHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbl0gMyBbaW5oaWJp dC1sb2NhbC12YXJpYWJsZXMtcCBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyB0 ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qt c2V4cF0gMjcgW2ZvbnQtbG9jay1tb2RlIGZvbnQtbG9jay1jaGFuZ2UtbW9kZSB0ZXh0LW1vZGUg c2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cF0gMyBbZmlsZS1uZXdlci10aGFuLWZpbGUtcCBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSAxNiBbZmlsZS1yZW1vdGUtcCBoYWNr LWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdo aWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2Fs bC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDEzIFtmaWxlLXRydWVuYW1lIGZp bGUtdHJ1ZW5hbWUgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21t YW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTcgW2luaGliaXQtbG9jYWwtdmFyaWFi bGVzLXAgc2V0LWF1dG8tbW9kZS0xIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNr LWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0w IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0XSAzMSBbYWJicmV2aWF0ZS1maWxlLW5hbWUgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWxdIDQwIFthYmJyZXZpYXRlLWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZp bmQtcm9vdCB2Yy1oZy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweGVi YmE2YzFjZmI4YjFjMD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gt c3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSAxNyBbZ2VuZXJhdGUtbmV3LWJ1ZmZlciBjcmVhdGUt ZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21t YW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMjcgW2FiYnJldmlhdGUtZmlsZS1uYW1l IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLWdpdC1yZWdpc3RlcmVkIHZj LWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxMDMwZWUxMDg5M2MxNDNkPiIgbWFwYyB2Yy1y ZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVd IDE2IFtleHBhbmQtZmlsZS1uYW1lIHZjLWN2cy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAi Izxjb21waWxlZCAweGU5N2YyYzFjZmI4YjFjMD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNr ZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbl0gNyBbYWJi cmV2aWF0ZS1maWxlLW5hbWUgbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMt YnpyLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4ZWZlMTZjMWNmYjhi MWMwPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4t aG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGVdIDE3IFtmaWxlLXJlbW90ZS1wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbF0gMTQgW2ZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIG1ha2UtbG9jay1m aWxlLW5hbWUgaW5zZXJ0LWZpbGUtY29udGVudHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5p bCBuaWxdIDE0IFt2Yy1wb3NzaWJsZS1tYXN0ZXIgIiM8Y29tcGlsZWQgMHgxZTg1MzFjYWY4MjU2 YjZmPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3Rl cmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweGUxMThl YzFjZmI4YjFjMD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3Rh dGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3RdIDQgW2VxIGFsaXN0LWdldCAiIzxjb21waWxlZCAweDE3ZjA0NGQ3Yjc0MThi MGU+IiBhZGQtaG9vayB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSAz IFttYWtlLWNsb3N1cmUgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lz dGVyZWQgdmMtcmNzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4MWY3 NDVhYzFjZmI4YjFjMD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gt c3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSA0IFthdXRvLXNhdmUtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSAzIFtpbmhpYml0LWxvY2Fs LXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2du IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZl bHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDIxIFt2Yy1maW5kLXJvb3QgdmMtYnpyLXJlZ2lz dGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4MWYxZmNlYzFjZmI4YjFjMD4iIG1h cGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0 IHdoaWxlIGxldCBwcm9nbl0gOCBbYWJicmV2aWF0ZS1maWxlLW5hbWUgbG9jYXRlLWRvbWluYXRp bmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxl cyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAxNyBbZXhw YW5kLWZpbGUtbmFtZSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gNiBbZmlsZS1uYW1lLXNhbnMt dmVyc2lvbnMgaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBoYWNrLWxvY2FsLXZhcmlhYmxlcyBy dW4tbW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSAx MyBbZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDEwIFtydW4t aG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qt c2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5p bF0gNCBbdmMtZ2l0LXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4MWVj Y2EyYzFjZmI4YjFjMD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gt c3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBd IDMgW3VuaXF1aWZ5LXJhdGlvbmFsaXplLWNvbmZsaWN0aW5nLXN1Ymxpc3QgdW5pcXVpZnktcmF0 aW9uYWxpemUtYS1saXN0IHVuaXF1aWZ5LXJhdGlvbmFsaXplIHVuaXF1aWZ5LXJhdGlvbmFsaXpl LWZpbGUtYnVmZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNlIGNy ZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDkgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21p bmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdldC12YXJp YWJsZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1t b2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldF0gOSBbc2VhcmNoLWZvcndhcmQgZmlu ZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgaW5zZXJ0LWZpbGUtY29udGVudHMgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxp c3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBj b21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMyBbZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgaW5oaWJp dC1sb2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0by1tb2RlLTEgaGFjay1sb2NhbC12YXJpYWJsZXMt cHJvcC1saW5lIGhhY2stbG9jYWwtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0g NCBbZmlsZS1leGlzdHMtcCAiIzxjb21waWxlZCAweDEyYjIxNGNlZjgyNTZiNmU+IiBtYXBjYXIg dmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc3JjLXJl Z2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weGVhNWNkM2UzMDQ3NGU0MD4i IG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tz IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Rd IDExIFtjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDE1IFtmaWxl LW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1v ZGUtMSBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1h bmQtZXhlY3V0ZV0gMyBbdGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1h cHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZV0gMyBbZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAzIFthYmJy ZXZpYXRlLWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1z dm4tcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4NDc2NjkzZTMwNDc0 ZTQwPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4t aG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGVdIDEzIFt2Yy1maWxlLWNsZWFycHJvcHMgdmMtcmVmcmVzaC1zdGF0ZSBy dW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDMg W2dldC1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTAgW2ZpbGVzLS10cmFu c2Zvcm0tZmlsZS1uYW1lIG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSBhdXRvLXNhdmUtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gNCBbYXV0by1jb2Rp bmctcmVnZXhwLWFsaXN0LWxvb2t1cCBmaW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNvZGluZyBp bnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAzIFtmaWxl LXdyaXRhYmxlLXAgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwg bmlsIG5pbF0gMyBbZm9ybWF0IHZjLXBvc3NpYmxlLW1hc3RlciAiIzxjb21waWxlZCAweDFhMDkx NDVhZjgyNTZiNmU+IiBtYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0 LXJlZ2lzdGVyZWQgdmMtc2Njcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxl ZCAtMHg1MGZlMTNlMzA0NzRlNDA+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1y ZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTFdIDMgW2ZpbGUtbmFtZS1ub25kaXJlY3RvcnkgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2 Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtcmNzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIj PGNvbXBpbGVkIC0weDU2YTY1M2UzMDQ3NGU0MD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNr ZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSAzIFttYWtlLWxvY2stZmls ZS1uYW1lIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwg bmlsIG5pbF0gNyBbZmluZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgaW5zZXJ0LWZpbGUt Y29udGVudHMgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDMgW2ZpbGUtbmFtZS1k aXJlY3RvcnkgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQg dmMtcmNzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDQ2MzNkM2Uz MDQ3NGU0MD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUg cnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlXSAzIFtzZWFyY2gtZm9yd2FyZCBoYWNrLWxvY2FsLXZhcmlhYmxl cy0tZmluZC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4 dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbl0gMyBbZmlsZS10cnVlbmFtZSBm aWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxl LW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwt bGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBu aWxdIDQgW3ZjLWZpbGUtZ2V0cHJvcCB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVz aC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSAz IFtzZXQtYXV0by1tb2RlLTEgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gNCBbZm9ybWF0IHZjLXBvc3NpYmxlLW1h c3RlciAiIzxjb21waWxlZCAtMHgxM2FmNTdiNTA3ZGE5NDkxPiIgbWFwY2FyIHZjLWNoZWNrLW1h c3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZj LWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHg0YmJmMTNlMzA0NzRlNDA+IiBtYXBjIHZjLXJl Z2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTFdIDMgW2NvbXBsZXRpbmctcmVhZC1kZWZhdWx0IHJl YWQtZXh0ZW5kZWQtY29tbWFuZC0xIHJlYWQtZXh0ZW5kZWQtY29tbWFuZCBieXRlLWNvZGUgY29t bWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxd IDI0IFtyZWRpc3BsYXlfaW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKSBjb21wbGV0aW5nLXJlYWQt ZGVmYXVsdCByZWFkLWV4dGVuZGVkLWNvbW1hbmQtMSByZWFkLWV4dGVuZGVkLWNvbW1hbmQgYnl0 ZS1jb2RlIGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWxdIDI0IFt0cnktY29tcGxldGlvbiBjb21wbGV0ZS13aXRoLWFjdGlvbiAiIzxzdWJyIEY2 MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzU0PiIgY29t cGxldGlvbi1iYXNpYy10cnktY29tcGxldGlvbiAiIzxjb21waWxlZCAtMHgxNmRkMzRkOTFmYzhl NmZjPiIgIiM8Y29tcGlsZWQgLTB4MTVmNzlkNDgyNDU1NzFhYT4iIG1hcGMgc2VxLWRvIHNlcS1z b21lIGNvbXBsZXRpb24tLW50aC1jb21wbGV0aW9uIGNvbXBsZXRpb24tdHJ5LWNvbXBsZXRpb24g Y29tcGxldGlvbi0tZG8tY29tcGxldGlvbiBjb21wbGV0aW9uLS1pbi1yZWdpb24tMSAiIzxjb21w aWxlZCAtMHhlNTJmZTkyZWRhMDg2YzA+IiBhcHBseSAiIzxjb21waWxlZCAtMHg1MGQ4MGQ1NmYz YWYyMj4iXSA1IFtleGVjdXRlLWV4dGVuZGVkLWNvbW1hbmQgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWxdIDMgW0F1dG9tYXRpY1wgR0MgbmlsXSA5MjQgW3Byb2ZpbGVyLXJlcG9ydCBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIGV4ZWN1dGUtZXh0ZW5kZWQtY29t bWFuZCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMykpICgyNTg5MCAyNzM1NSA2MTcwMTYgMzgxMDAw KSBuaWxdCg== --=-=-= Content-Type: text/plain -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at --=-=-=-- From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 08 Oct 2023 09:58:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169675902629218 (code B ref 66117); Sun, 08 Oct 2023 09:58:01 +0000 Received: (at 66117) by debbugs.gnu.org; 8 Oct 2023 09:57:06 +0000 Received: from localhost ([127.0.0.1]:56268 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpQX3-0007bB-FR for submit@debbugs.gnu.org; Sun, 08 Oct 2023 05:57:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58500) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpQX1-0007ac-To for 66117@debbugs.gnu.org; Sun, 08 Oct 2023 05:57:04 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qpQWc-0004RX-4o; Sun, 08 Oct 2023 05:56:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=WpgVELqGYFq0oeTSuIM/6AOC75/uLyUgfNFIDmHg1iQ=; b=qA7n26qdfzSQ YWu8NKiURJqL4lfxaHYJovIZ3LoGdlZ9ouIi+CpCjNTtw3/OABbjTDTWuqusIdRTrR6GjFzrg8o5k RD2lstPhFNBV9gSU4nzqgcfg1xMOkQBH3weqEbOaB3CM07z5EAa0J9UFSpJDL9E4bLTRd4Lczm85W rOsQPC8vJ1AKE97Yfl7LjJowrsE4qychW2zamY9yT4zoFUuzA75n0oB+u4xurUQwGDfdUEUd0nWVq WBdTbZK3MnjqOzuBpBtD0XYiXVkouh3szhdPEbKw/zPJzF9q+M1yihxBShVGAqQx8bqYW3dW6O19q NazkLm5FGj+KPoU6kNPpVg==; Date: Sun, 08 Oct 2023 12:56:23 +0300 Message-Id: <83y1gdxws8.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87v8bhxzcu.fsf@localhost> (message from Ihor Radchenko on Sun, 08 Oct 2023 09:00:49 +0000) References: <878r919qfh.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Sun, 08 Oct 2023 09:00:49 +0000 > > Eli Zaretskii writes: > > > My advice is to have a prototype working, then time it on local > > filesystems. > > See the attached patch. Thanks. This still has some unnecessary overhead (I actually thought about moving the entire find-buffer-visiting into C, not replacing it with Lisp that calls new primitives). But this already makes find-buffer-visiting take an insignificant portion of CPU time, so I think it proves that the idea is workable: > I left the `file-attributes' call in Elisp. Looking at the > cpu-profiler-w-patch, `find-buffer-visiting' is no longer the main > contributor to CPU time. I am not sure if we really need to squeeze the > performance yet further from `find-buffer-visiting' - `file-attributes' > is taking pretty much no time: > > (reverse call-tree) > 924 36% Automatic GC > 173 6% + inhibit-local-variables-p > 172 6% + locate-dominating-file > 139 5% + abbreviate-file-name > 113 4% + dir-locals--all-files > 109 4% + file-truename > 92 3% + find-buffer-visiting > ... > 6 0% + file-attributes > > comapare with cpu-profiler-without-patch: > > (reverse call-tree) > 1714 39% + find-buffer-visiting > 1131 26% Automatic GC > 202 4% + locate-dominating-file > 147 3% + abbreviate-file-name > 140 3% + inhibit-local-variables-p > 104 2% + dir-locals--all-files > 98 2% + uniquify-rationalize-file-buffer-names > 91 2% + file-truename From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 08 Oct 2023 11:18:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko , Eli Zaretskii Cc: 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169676382518004 (code B ref 66117); Sun, 08 Oct 2023 11:18:02 +0000 Received: (at 66117) by debbugs.gnu.org; 8 Oct 2023 11:17:05 +0000 Received: from localhost ([127.0.0.1]:56405 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpRmT-0004gK-2k for submit@debbugs.gnu.org; Sun, 08 Oct 2023 07:17:05 -0400 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]:40341) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpRmR-0004fn-5A for 66117@debbugs.gnu.org; Sun, 08 Oct 2023 07:17:03 -0400 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id C928932009FA; Sun, 8 Oct 2023 07:16:36 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Sun, 08 Oct 2023 07:16:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm1; t= 1696763796; x=1696850196; bh=okJb2drhHHQDav/D6u9vjSNNz7gBdkTbj+k SIZ4o9nY=; b=CxQnBOVfPSYYzXShVKwBQBFE1jQ3vSjcVh4vZBciFt7FFR53Nbe kqYwq5WI0lCjARs79fx/ie9oWWdwGeF+fCpHgcdxlizExvsFK78yTEZsB8rDXrEn olwTuyRmSOPPe3Of0tsTYRFzWmzC9S+AeI12UW8G/m2MzOwHiLeFaCvWL38k+DuK HxESxOT847F+5YsZ9DnJJd7jYUNLFXtv3J7e3PrF6N+EedNQAYbmdys6teDKTtFV RG/QkM1OczPEbbN7WQMWGGagifuuehnTE9QS6csTpiouXXNnEjUbTOPJ88afeTnf 4CuuFXpDU7L8tUSc5ae6XwOPHCOcPWC+TUw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1696763796; x=1696850196; bh=okJb2drhHHQDav/D6u9vjSNNz7gBdkTbj+k SIZ4o9nY=; b=WUNRdWwjjOps+qvqBrCtPK3hMltcYEyRs5RicunDx70BekYKp4P MJAmvDW0Zu7MA/WytSYBOEQ6KN+wVTyI3S1GpAQzODPRGucCksrrVnI24CVnjZwo z/ohsRK057Qc5G9tMfgTnVBf0+Sr3yI9EgyGaMkE7u/Qf6FzvxRkwZgnUUEDaEFI YxEeM58SxIE2kEDRe3JJREE0WTmspVanteVkf0XRBSsDiE4kHDRa1koGXSpXE6ZU vYRzxYw/jasOsAm5TEbBQ0xl++i7aL/DvmsQEpPJ/eIf5/ZYdhctZtQme0PgiOtt U4FigqUzfQAkG8OdmMmKHfJnx+Eme/ZyaFQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrhedugdefjecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefkffggfgfuvfevfhfhjggtgfesthejredttdefjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpeeigfetveehveevffehledtueekieeikeeufeegudfgfeeghfdulefgfeevledv veenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh hithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 8 Oct 2023 07:16:35 -0400 (EDT) Message-ID: Date: Sun, 8 Oct 2023 14:16:33 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> From: Dmitry Gutov In-Reply-To: <87v8bhxzcu.fsf@localhost> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.2 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.2 (---) On 08/10/2023 12:00, Ihor Radchenko wrote: > I am not sure if we really need to squeeze the > performance yet further from `find-buffer-visiting' - `file-attributes' > is taking pretty much no time: If file-attributes is the main source of consing, it could be the reason for the line 924 36% Automatic GC From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 08 Oct 2023 11:25:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169676425418663 (code B ref 66117); Sun, 08 Oct 2023 11:25:02 +0000 Received: (at 66117) by debbugs.gnu.org; 8 Oct 2023 11:24:14 +0000 Received: from localhost ([127.0.0.1]:56409 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpRtN-0004qv-VI for submit@debbugs.gnu.org; Sun, 08 Oct 2023 07:24:14 -0400 Received: from mout02.posteo.de ([185.67.36.66]:39601) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpRtK-0004qg-7x for 66117@debbugs.gnu.org; Sun, 08 Oct 2023 07:24:11 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 5441A240103 for <66117@debbugs.gnu.org>; Sun, 8 Oct 2023 13:23:44 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1696764224; bh=eJXWwne+d48oc+h/M2P3VWW9CTD6KgcI2n1BzUQH+9Y=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=L6aAbtOM6aQyKgnDJRFRWhvNNsT/IJRhMYhTjRASrx1WsUWWigc57vwR3whM0DNOd pozwe6aRkWWb/gwcbE1PXXExwoDYpkdo2sDmsajByJg+lUsLFq7hA4QVfvDOiAEB08 nOGYASMyfCpMnFaHUuTWcdxdLCLVaKjYpOIFN2kTY20byHh3WmMnYyLV15bqbbHqE+ Pm6DpFAfqaaH9Sno1UitlHeY9nKU00yAusQdh6TPXsitZ7/M0jGymUhJHngeiukKea kAM/wyqWnIlg/fiT6l53kdHZjDnIiISPPaaAEMBoetbjXzo3y2YBlg1ldlrO+3BLBn KeXwMdpeeIgJg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4S3KYB7454z9rxF; Sun, 8 Oct 2023 13:23:42 +0200 (CEST) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> Date: Sun, 08 Oct 2023 11:25:20 +0000 Message-ID: <87o7h9pd9b.fsf@localhost> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain Dmitry Gutov writes: > On 08/10/2023 12:00, Ihor Radchenko wrote: >> I am not sure if we really need to squeeze the >> performance yet further from `find-buffer-visiting' - `file-attributes' >> is taking pretty much no time: > > If file-attributes is the main source of consing, it could be the reason > for the line > > 924 36% Automatic GC No, the main source of consing, according to the memory profiler, is `inhibit-local-variables-p': 170,592,016 49% + inhibit-local-variables-p 45,619,488 13% + string-match 28,171,152 8% + insert-file-contents 26,066,069 7% + file-name-sans-versions 18,699,245 5% + file-remote-p The full memory profile is attached. --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=mem-profile-w-patch Content-Transfer-Encoding: base64 Cltwcm9maWxlci1wcm9maWxlICIyOC4xIiBtZW1vcnkgI3MoaGFzaC10YWJsZSBzaXplIDE0NSB0 ZXN0IGVxdWFsIHJlaGFzaC1zaXplIDEuNSByZWhhc2gtdGhyZXNob2xkIDAuODEyNSBkYXRhIChb cHJvZmlsZXItc3RhcnQgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBleGVj dXRlLWV4dGVuZGVkLWNvbW1hbmQgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0 ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDYzMSBbdGltZXItLXRp bWUtc2V0dGVyIHRpbWVyLXNldC10aW1lIHJ1bi1hdC10aW1lIGV4ZWN1dGUtZXh0ZW5kZWQtY29t bWFuZCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMjQgW3RpbWVyLS10aW1lLWxlc3MtcCB0aW1lci0t YWN0aXZhdGUgdGltZXItYWN0aXZhdGUgcnVuLWF0LXRpbWUgZXhlY3V0ZS1leHRlbmRlZC1jb21t YW5kIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWxdIDI0IFt0aW1lci0tdGltZS1zZXR0ZXIgdGltZXItc2V0LWlk bGUtdGltZSBydW4td2l0aC1pZGxlLXRpbWVyIGVsZG9jLXNjaGVkdWxlLXRpbWVyIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAyNCBbbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAyNDQ4 IFttZW51LWJhci11cGRhdGUtYnVmZmVycy0xIG1lbnUtYmFyLXVwZGF0ZS1idWZmZXJzIHJlZGlz cGxheV9pbnRlcm5hbFwgXChDXCBmdW5jdGlvblwpIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMzM2IFtyZWRpc3BsYXlfaW50ZXJuYWxcIFwoQ1wg ZnVuY3Rpb25cKSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsIG5pbF0gMTI0NjU4IFtzdHJpbmctbWF0Y2gga2lsbC10aGlzLWJ1ZmZlci1lbmFi bGVkLXAgcmVkaXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgbmlsIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxMDI0IFtjb21tYW5kLWV4ZWN1 dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWxdIDAgW2xvb2tpbmctYmFjayBlbGlzcC0tcHJlY2VkaW5nLXNleHAgZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxMDI0IFtlbGlz cC0tcHJlY2VkaW5nLXNleHAgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTAyNCBbZXZhbC1zZXhwLWFkZC1kZWZ2YXJzIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxd IDEwMjQgW2RpcmVjdG9yeS1maWxlcyBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDE0NTI5NiBbZXhwYW5kLWZpbGUtbmFtZSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMjcwNDggW2FiYnJldmlhdGUtZmlsZS1uYW1lIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsXSA1MjEwNCBbZmlsZS10cnVlbmFtZSBmaWxlLXRydWVuYW1lIGZp bGUtdHJ1ZW5hbWUgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21t YW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSAxNDg1MTIgW2ZpbGUtYXR0cmlidXRlcyBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbF0gMjIyNjcyIFtmaWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUg ZmlsZS10cnVlbmFtZSBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0 IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gNTg0ODggW2dl bmVyYXRlLW5ldy1idWZmZXIgY3JlYXRlLWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxd IDEzOTc5MDQgW2F1dG8tY29kaW5nLWFsaXN0LWxvb2t1cCBmaW5kLWF1dG8tY29kaW5nIHNldC1h dXRvLWNvZGluZyBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwg bmlsXSA3NDg3NTUyIFthdXRvLWNvZGluZy1yZWdleHAtYWxpc3QtbG9va3VwIGZpbmQtYXV0by1j b2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1l eGVjdXRlIG5pbCBuaWxdIDUxNTU2ODggW3NnbWwteG1sLWF1dG8tY29kaW5nLWZ1bmN0aW9uIGZp bmQtYXV0by1jb2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDEwMzQyODAgW3NnbWwtaHRtbC1tZXRhLWF1dG8tY29k aW5nLWZ1bmN0aW9uIGZpbmQtYXV0by1jb2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2VydC1maWxl LWNvbnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDE3MzYzMTIgW2luc2VydC1m aWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5j YWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDI4 MTcxMTUyIFtmb3JtYXQtZGVjb2RlIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1l eGVjdXRlIG5pbCBuaWwgbmlsIG5pbF0gMTE5NTk5MiBbbWFrZS1sb2NhbC12YXJpYWJsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSA0MCBbZmlsZXMtLXRyYW5zZm9y bS1maWxlLW5hbWUgbWFrZS1hdXRvLXNhdmUtZmlsZS1uYW1lIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gMTA1MDA1NiBbYmFja3VwLWZpbGUtbmFtZS1w IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDEw OTA1MjAgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGUgbmlsXSAxMDUzNTg0IFtpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWxdIDI4ODM0MjMyIFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0LWxvY2FsLXZhcmlh Ymxlcy1wIHNldC1hdXRvLW1vZGUtMSBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gNzE4OTc2NSBbaW5oaWJpdC1sb2NhbC12YXJp YWJsZXMtcCBzZXQtYXV0by1tb2RlLTEgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAyNzkwODAwOCBbc2V0LWF1dG8tbW9k ZS0xIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbCBuaWxdIDEwNDI4NDggW2ZpbGUtcmVtb3RlLXAgaGFjay1kaXItbG9jYWwt LWdldC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSA2NDYwNDI1IFthYmJyZXZpYXRlLWZpbGUtbmFtZSBs b2NhdGUtZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxvY2Fs LS1nZXQtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0 aXZlbHldIDEwNjkyODggW2xvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZp bGUgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDEyMzM1MjAgW2Rpci1sb2Nh bHMtLWFsbC1maWxlcyBsb2NhdGUtZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1maWxl IGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHldIDEyMDU0NDggW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIHNl dC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMjI1NzQ0OCBbaW5oaWJpdC1sb2Nh bC12YXJpYWJsZXMtcCBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDI4ODU5MDQ4IFtm aWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRv LW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgaGFjay1sb2NhbC12YXJpYWJs ZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSA2ODIwNjAzIFtpbmhpYml0LWxvY2FsLXZhcmlh Ymxlcy1wIHNldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgaGFj ay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseV0gMjgwNDUxMTIgW3NldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1w cm9wLWxpbmUgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDEwMjcyNzIgW2xvb2tpbmctYXQg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGUgbmlsIG5pbF0gMTA0NTk5MiBbZmlsZS1yZW1vdGUtcCBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZSBuaWxdIDYzNjQ5NjAgW3N0cmluZy1tYXRjaCBhc3NvYy1kZWZhdWx0IHNl dC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA0NDUyNDI4OCBbdGV4dC1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gNDAgW2ZpbGUtcmVt b3RlLXAgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDU4Njg3NDAg W2FiYnJldmlhdGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1m aW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgaGFjay1kaXItbG9jYWwtdmFy aWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldF0gMTAzNjA0MCBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSBkaXItbG9jYWxzLWZp bmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJp YWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNldC1h dXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlXSAxMTk5Mjg4IFtkaXItbG9jYWxzLS1hbGwtZmlsZXMgbG9jYXRlLWRv bWluYXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZh cmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVu LW1vZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0XSAxMzE5NjMyIFtmaWxlLW5hbWUt c2Fucy12ZXJzaW9ucyBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUtMSBo YWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1v ZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSAxOTU3NzYwIFtpbmhpYml0 LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1w cm9wLWxpbmUgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gMjgwMDg0OTYgW3NldC1hdXRvLW1vZGUtMSBoYWNrLWxv Y2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9v a3MgdGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbl0gMTAzMTcyMCBbZmls ZS1uYW1lLXNhbnMtdmVyc2lvbnMgaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBoYWNrLWxvY2Fs LXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1h dXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmlu ZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUg bGV0IHByb2duXSA2NjcxMDg1IFtpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIGhhY2stbG9jYWwt dmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAyODkzNzEyMCBbZXBhLWZpbGUtZmluZC1m aWxlLWhvb2sgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBu aWwgbmlsIG5pbF0gMTAyNzUyOCBbdmMtZmlsZS1jbGVhcnByb3BzIHZjLXJlZnJlc2gtc3RhdGUg cnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1s YXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA1 NzMyMDQ4IFthZGQtaG9vayB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gNDAgW3N0cmluZy1tYXRjaCB2Yy1yZWdp c3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSAxMDk0MTc2IFtmaWxlLW5hbWUtZGlyZWN0b3J5IHZj LWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXJjcy1yZWdp c3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweDE2NzMxZmRiMGM0MzZiZDg+IiBt YXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZV0gMTIzNzYgW2Zvcm1hdCB2Yy1wb3NzaWJsZS1tYXN0ZXIgIiM8Y29tcGlsZWQgLTB4 MWJiNDNmMTBiMTg0N2ExOT4iIG1hcGNhciB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRl ZmF1bHQtcmVnaXN0ZXJlZCB2Yy1yY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29t cGlsZWQgMHgxNjczMWZkYjBjNDM2YmQ4PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQg dmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xXSA1MTY1NzYgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZp bGUgdmMtZmluZC1yb290IHZjLXN2bi1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21w aWxlZCAweDE2NzMxZmRiMGM0MzZiZDg+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2 Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gMTA0NDA5NiBbbG9jYXRlLWRvbWlu YXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMtc3ZuLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5k ICIjPGNvbXBpbGVkIDB4MTY3MzFmZGIwYzQzNmJkOD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1i YWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gMTE2NTU3NiBb Zm9ybWF0IHZjLXBvc3NpYmxlLW1hc3RlciAiIzxjb21waWxlZCAtMHgxYmI0M2YxMGIxODQ3YTE5 PiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVk IHZjLXNjY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHgxNjczMWZk YjBjNDM2YmQ4PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0 ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xXSAzNDc0ODAg W2Zvcm1hdCB2Yy1wb3NzaWJsZS1tYXN0ZXIgIiM8Y29tcGlsZWQgLTB4MWJiNDNmMTBiMTg0N2Ex OT4iIG1hcGNhciB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJl ZCB2Yy1zcmMtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHgxNjczMWZk YjBjNDM2YmQ4PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0 ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xXSAyMTUxOTIg W2xvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLWJ6ci1yZWdpc3RlcmVkIHZj LWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweDE2NzMxZmRiMGM0MzZiZDg+IiBtYXBjIHZjLXJl Z2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXRdIDMzODE0NCBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMtZ2l0LXJl Z2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4MTY3MzFmZGIwYzQzNmJkOD4i IG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tz IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldF0gMzg0MTA0IFtsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9v dCB2Yy1oZy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweDE2NzMxZmRi MGM0MzZiZDg+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRl IHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDEyMTM2MzIgW2dldC1maWxlLWJ1ZmZlciBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmls IG5pbCBuaWwgbmlsIG5pbF0gMzYyODAgW2ZpbGUtdHJ1ZW5hbWUgZmlsZS10cnVlbmFtZSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwg bmlsIG5pbCBuaWwgbmlsXSA5NzA0NTYgW2ZpbGUtdHJ1ZW5hbWUgZmluZC1idWZmZXItdmlzaXRp bmcgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFz dC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1 dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTQ2ODE2IFtmaWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5h bWUgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSAyODA5MDQgW3VuaXF1aWZ5 LXJhdGlvbmFsaXplLWZpbGUtYnVmZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZm ZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDEwMDc0NzIgW2Zp bGUtbmFtZS1kaXJlY3RvcnkgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5p bF0gMTIzNzYgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGluaGliaXQtbG9jYWwtdmFyaWFibGVz LXAgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDExNTgyNCBbbWFrZS1zeW1ib2wgc2VxLWZp bHRlciBoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmluZC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJp YWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMjk3 OTIgW2ZpbGUtZXhpc3RzLXAgIiM8Y29tcGlsZWQgLTB4MWEzMTMyNDRiMTg0N2ExOT4iIG1hcGNh ciB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1zY2Nz LXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4MTYxNjZiZGIwYzQzNmJk OD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhv b2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3RdIDExNTI4IFtmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdo aWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2Fs bC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0g MjQxNTkyIFt1bmlxdWlmeS0tY3JlYXRlLWZpbGUtYnVmZmVyLWFkdmljZSBjcmVhdGUtZmlsZS1i dWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gOTU3MjgwIFtmaWxlcy0tdHJhbnNmb3JtLWZpbGUt bmFtZSBtYWtlLWxvY2stZmlsZS1uYW1lIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAyMjAwOCBbZmlsZS1leGlzdHMtcCAiIzxjb21waWxlZCAt MHhkY2I1NTkwYjE4NDdhMTk+IiBtYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1k ZWZhdWx0LXJlZ2lzdGVyZWQgdmMtcmNzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNv bXBpbGVkIDB4MzI1OWZkYjBjNDM2YmQ4PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQg dmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0gMjI4NTYgW3ZjLW1ha2UtYmFja2VuZC1zeW0gdmMt ZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNjY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8 Y29tcGlsZWQgMHgzMjU5ZmRiMGM0MzZiZDg+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2Vu ZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDE5MTU3NiBbdmMtZmls ZS1nZXRwcm9wIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1o b29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDYyODggW2ZpbGUtdHJ1 ZW5hbWUgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDMzMTkwNCBbYWJicmV2aWF0ZS1maWxlLW5h bWUgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQg cHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gNzgzMDQgW2ZpbGVz LS10cmFuc2Zvcm0tZmlsZS1uYW1lIG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSBhdXRvLXNhdmUt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMzUwMzIg W2ZpbGUtbmFtZS1ub25kaXJlY3RvcnkgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZh dWx0LXJlZ2lzdGVyZWQgdmMtc3JjLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBp bGVkIC0weDE1Mzc5MjhlODM2MGNlNGI+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2 Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gMTA0ODAgW2ZpbGUtd3JpdGFibGUt cCBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSA2 Mjg4IFtmaWxlLWRpcmVjdG9yeS1wIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxODA0NDggW3Nl dC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDEwNDgwIFtmaWxlLW5hbWUt ZGlyZWN0b3J5IHZjLWN2cy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAt MHgxNTMwY2E4ZTgzNjBjZTRiPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVm cmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSAxNTUyMCBbdmMtZmlsZS1z ZXRwcm9wIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29r cyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDEwNDgwIFt2Yy1tYWtlLWJh Y2tlbmQtc3ltIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1yY3MtcmVnaXN0ZXJlZCB2Yy1jYWxs LWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTVjMTUyOGU4MzYwY2U0Yj4iIG1hcGMgdmMtcmVnaXN0 ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0g OTQzMiBbdmMtZmlsZS1nZXRwcm9wIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9v a3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMTY1NjggW2ZpbGUt bmV3ZXItdGhhbi1maWxlLXAgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWwgbmlsIG5pbF0gNzMzNiBbdW5pcXVpZnktZ2V0LXByb3Bvc2VkLW5hbWUgdW5pcXVpZnkt cmF0aW9uYWxpemUgdW5pcXVpZnktcmF0aW9uYWxpemUtZmlsZS1idWZmZXItbmFtZXMgdW5pcXVp ZnktLWNyZWF0ZS1maWxlLWJ1ZmZlci1hZHZpY2UgY3JlYXRlLWZpbGUtYnVmZmVyIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxd IDQxOTIgW2V4cGFuZC1maWxlLW5hbWUgdmMtY3ZzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5k ICIjPGNvbXBpbGVkIC0weDE1NjQwMjhlODM2MGNlNGI+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMt YmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25dIDEw NTU0NCBbZmlsZS1uYW1lLWRpcmVjdG9yeSB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRl ZmF1bHQtcmVnaXN0ZXJlZCB2Yy1zY2NzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNv bXBpbGVkIC0weDE1NjQwMjhlODM2MGNlNGI+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2Vu ZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gMzE0NCBbZXhwYW5kLWZpbGUt bmFtZSB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21t YW5kLWV4ZWN1dGUgbmlsIG5pbF0gMTA0OCBbZmlsZS1uYW1lLWRpcmVjdG9yeSB2Yy1yZWdpc3Rl cmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY29tbWFuZC1leGVjdXRlXSA0MTkyIFtkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRp ci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDI3Njk2IFtmaWxlLW5hbWUtZGlyZWN0 b3J5IHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNy Yy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxNjU0NmU4ZTgzNjBj ZTRiPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4t aG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGVdIDMxNDQgW2Rpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxvY2Fs LS1nZXQtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZhcmlh YmxlcyBydW4tbW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1v ZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0XSAy NDc1MiBbZmlsZS1yZWFkYWJsZS1wIHZjLWN2cy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAi Izxjb21waWxlZCAtMHgxYzVjNWE4ZTgzNjBjZTRjPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJh Y2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSAzMTQ0 IFtjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDIyNjU2IFtmaWxl LW5hbWUtbm9uZGlyZWN0b3J5IHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1y ZWdpc3RlcmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAt MHgxYzQzOTI4ZTgzNjBjZTRjPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVm cmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDIwOTYgW2ZpbGUtZXhpc3RzLXAgIiM8Y29t cGlsZWQgMHgxZWQ2OTMwYmIwMjU2YjZmPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0 ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNyYy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2Vu ZCAiIzxjb21waWxlZCAtMHgxZDM1MWE4ZTgzNjBjZTRjPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZj LWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdF0gMTA0OCBbdmMtbWFrZS1iYWNrZW5k LXN5bSB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc3JjLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNr ZW5kICIjPGNvbXBpbGVkIC0weDFkMzU4NjhlODM2MGNlNGM+IiBtYXBjIHZjLXJlZ2lzdGVyZWQg dmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDUyNDAg W2NhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgZm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sg dHVybi1vbi1mb250LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxl LWluLWJ1ZmZlcnMgcnVuLWhvb2tzIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDMyNzkyIFtmb250LWxvY2stbW9kZSB0 dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250 LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hp bGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHldIDMyNzkyIFsiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2 ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzEzNz4iIGJhY2t0cmFjZS1mcmFtZSBjYWxsZWQtaW50 ZXJhY3RpdmVseS1wIGdldGVudiB2Yy1zY2NzLXNlYXJjaC1wcm9qZWN0LWRpciB2Yy1wb3NzaWJs ZS1tYXN0ZXIgIiM8Y29tcGlsZWQgMHg0YjI0YWRiYjAyNTZiNmY+IiBtYXBjYXIgdmMtY2hlY2st bWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc2Njcy1yZWdpc3RlcmVk IHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxMGJlMGE4ZTgzNjBjZTRjPiIgbWFwYyB2 Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmRdIDMyNzkyIFthYmJyZXZpYXRlLWZpbGUtbmFtZSBsb2Nh dGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1oZy1yZWdpc3RlcmVkIHZjLWNhbGwt YmFja2VuZCAiIzxjb21waWxlZCAtMHgxMTEzNDI4ZTgzNjBjZTRjPiIgbWFwYyB2Yy1yZWdpc3Rl cmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDIwNTYw IFtmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVm YXVsdC1yZWdpc3RlcmVkIHZjLXNjY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29t cGlsZWQgLTB4MTEwNDgyOGU4MzYwY2U0Yz4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5k IHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSA0MTkyIFthYmJyZXZpYXRlLWZp bGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1ienItcmVnaXN0 ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTM0MDllOGU4MzYwY2U0Yz4iIG1h cGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0 IHdoaWxlXSAxMDQ4IFtlbGlzcC0tZXZhbC1sYXN0LXNleHAtcHJpbnQtdmFsdWUgZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTAw MCBbdGltZXItLXRpbWUtc2V0dGVyIHRpbWVyLXNldC10aW1lIHJ1bi1hdC10aW1lIHJ1bi13aXRo LXRpbWVyIGJsaW5rLWN1cnNvci0tc3RhcnQtdGltZXIgYmxpbmstY3Vyc29yLXN0YXJ0IGFwcGx5 IHRpbWVyLWV2ZW50LWhhbmRsZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMjQg W3RpbWVyLS10aW1lLWxlc3MtcCB0aW1lci0tYWN0aXZhdGUgdGltZXItYWN0aXZhdGUgcnVuLWF0 LXRpbWUgcnVuLXdpdGgtdGltZXIgYmxpbmstY3Vyc29yLS1zdGFydC10aW1lciBibGluay1jdXJz b3Itc3RhcnQgYXBwbHkgdGltZXItZXZlbnQtaGFuZGxlciBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWxdIDI0IFtjb21wbGV0aW5nLXJlYWQtZGVmYXVsdCByZWFkLWV4dGVuZGVkLWNvbW1hbmQt MSByZWFkLWV4dGVuZGVkLWNvbW1hbmQgYnl0ZS1jb2RlIGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA2NzkxIFttaW5pYnVmZmVyLS1y ZWdleHAtc2V0dXAgY29tcGxldGluZy1yZWFkLWRlZmF1bHQgcmVhZC1leHRlbmRlZC1jb21tYW5k LTEgcmVhZC1leHRlbmRlZC1jb21tYW5kIGJ5dGUtY29kZSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxMDI0IFt4LWRldmljZS1jbGFzcyBk ZXZpY2UtY2xhc3MgbWluaWJ1ZmZlci1zZXR1cC1vbi1zY3JlZW4ta2V5Ym9hcmQgY29tcGxldGlu Zy1yZWFkLWRlZmF1bHQgcmVhZC1leHRlbmRlZC1jb21tYW5kLTEgcmVhZC1leHRlbmRlZC1jb21t YW5kIGJ5dGUtY29kZSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbF0gMTQzMzYgW21lbnUtYmFyLXVwZGF0ZS1idWZmZXJzIHJlZGlzcGxheV9pbnRlcm5hbFwg XChDXCBmdW5jdGlvblwpIGNvbXBsZXRpbmctcmVhZC1kZWZhdWx0IHJlYWQtZXh0ZW5kZWQtY29t bWFuZC0xIHJlYWQtZXh0ZW5kZWQtY29tbWFuZCBieXRlLWNvZGUgY29tbWFuZC1leGVjdXRlIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAyNDQxNiBbbWVudS1iYXItdXBkYXRl LWJ1ZmZlcnMtMSBtZW51LWJhci11cGRhdGUtYnVmZmVycyByZWRpc3BsYXlfaW50ZXJuYWxcIFwo Q1wgZnVuY3Rpb25cKSBjb21wbGV0aW5nLXJlYWQtZGVmYXVsdCByZWFkLWV4dGVuZGVkLWNvbW1h bmQtMSByZWFkLWV4dGVuZGVkLWNvbW1hbmQgYnl0ZS1jb2RlIGNvbW1hbmQtZXhlY3V0ZSBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAyNTIwIFtyZWRpc3BsYXlfaW50ZXJuYWxcIFwo Q1wgZnVuY3Rpb25cKSBjb21wbGV0aW5nLXJlYWQtZGVmYXVsdCByZWFkLWV4dGVuZGVkLWNvbW1h bmQtMSByZWFkLWV4dGVuZGVkLWNvbW1hbmQgYnl0ZS1jb2RlIGNvbW1hbmQtZXhlY3V0ZSBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDk4MzM0IFtmaWxlLXJlbW90ZS1w IHJlZGlzcGxheV9pbnRlcm5hbFwgXChDXCBmdW5jdGlvblwpIGNvbXBsZXRpbmctcmVhZC1kZWZh dWx0IHJlYWQtZXh0ZW5kZWQtY29tbWFuZC0xIHJlYWQtZXh0ZW5kZWQtY29tbWFuZCBieXRlLWNv ZGUgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA1 MTIwIFtmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIGNvbXBsZXRpbmctcmVh ZC1kZWZhdWx0IHJlYWQtZXh0ZW5kZWQtY29tbWFuZC0xIHJlYWQtZXh0ZW5kZWQtY29tbWFuZCBi eXRlLWNvZGUgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsXSAxNzYgW2ludGVyYWN0aXZlLWZvcm0gY29tbWFuZC1leGVjdXRlIGNvbXBsZXRpbmctcmVh ZC1kZWZhdWx0IHJlYWQtZXh0ZW5kZWQtY29tbWFuZC0xIHJlYWQtZXh0ZW5kZWQtY29tbWFuZCBi eXRlLWNvZGUgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsXSA4MTg0IFtleGVjdXRlLWV4dGVuZGVkLWNvbW1hbmQgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWxdIDkwMDE2IFtmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRl IGV4ZWN1dGUtZXh0ZW5kZWQtY29tbWFuZCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1l eGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDE2IFtw cm9maWxlci1yZXBvcnQgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBleGVj dXRlLWV4dGVuZGVkLWNvbW1hbmQgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0 ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDM0MTQ5OTIgW0F1dG9t YXRpY1wgR0MgbmlsXSA3NzgzMCkpICgyNTg5MCAzNzAwMSAxNDYxNjEgMTA2MDAwKSBuaWxdCg== --=-=-= Content-Type: text/plain -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at --=-=-=-- From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 08 Oct 2023 11:46:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169676552531067 (code B ref 66117); Sun, 08 Oct 2023 11:46:02 +0000 Received: (at 66117) by debbugs.gnu.org; 8 Oct 2023 11:45:25 +0000 Received: from localhost ([127.0.0.1]:56435 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpSDt-000851-4g for submit@debbugs.gnu.org; Sun, 08 Oct 2023 07:45:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36606) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpSDs-00084k-4y for 66117@debbugs.gnu.org; Sun, 08 Oct 2023 07:45:24 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qpSDR-0004Xf-M1; Sun, 08 Oct 2023 07:44:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=L0tgStRXUGRj+Z/U/+HlvuMvgRMsA0Gn65ketmjOe3w=; b=i18oUwzVl3Mi XCi/i6cUsnFARxWnEFQOU4QuixAS7J3Xm4XF3uWlq7XZO9D4gu5G5etDNnjE6y1OGRIoLu1VPL2ut dh547SllxdK2S7M8POpLxvdcTkuc334d2/2FPjgcHTcHLmWnEv+jQ5gTbMN3uCPLaOkpN47KFhvg2 5HBSPk34VpM0VVURWjdmOU89LvEx5vXijoh+wm7sFbDpmn9hwPLLT927AW+fPRvFFTPtJ5m6y4Y7t xEVkAhnCWSVZxnEDnTg+VYq7hsqCxXMc9TfgqWRNcVUllz0xgB4O0jtfnlb3ukZ+laiyOKi8njF/g Q1FWalQxsSs1hPG1qsa8Jg==; Date: Sun, 08 Oct 2023 14:44:43 +0300 Message-Id: <83jzrxxrro.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87o7h9pd9b.fsf@localhost> (message from Ihor Radchenko on Sun, 08 Oct 2023 11:25:20 +0000) References: <878r919qfh.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <87o7h9pd9b.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: Eli Zaretskii , 66117@debbugs.gnu.org > Date: Sun, 08 Oct 2023 11:25:20 +0000 > > > If file-attributes is the main source of consing, it could be the reason > > for the line > > > > 924 36% Automatic GC > > No, the main source of consing, according to the memory profiler, is > `inhibit-local-variables-p': The so-called "memory" profiler doesn't profile memory usage... From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 08 Oct 2023 12:10:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.16967669611803 (code B ref 66117); Sun, 08 Oct 2023 12:10:02 +0000 Received: (at 66117) by debbugs.gnu.org; 8 Oct 2023 12:09:21 +0000 Received: from localhost ([127.0.0.1]:56454 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpSb2-0000T0-V7 for submit@debbugs.gnu.org; Sun, 08 Oct 2023 08:09:21 -0400 Received: from mout02.posteo.de ([185.67.36.66]:40263) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpSb0-0000Sj-JW for 66117@debbugs.gnu.org; Sun, 08 Oct 2023 08:09:19 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 8C89B240103 for <66117@debbugs.gnu.org>; Sun, 8 Oct 2023 14:08:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1696766932; bh=DImO2HypK0SLQq4piZuWML4/Cf0TtkENfABFskILGJ8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=fK8YYHu+A2TB8EwDWOY8L+178dTvoYZDdI7LyvYvILZ0txnpqZIwGp7r3sNvA+V/S UuuRNotQxdWLKMkeTuabgLMQF3KUq1nY9KtRlphf8UcWl43swxI6upt1eL/HWn0UFv M52Qr7rbLiS34hTQx/+Jy11g38IH/qH5/stKTzFNM567lTdyTkVkajjJdSjrmyLk6U 64InsDFMM3WtyCcIisL8+idN/gQtMdBLVPVJg9T17B/rrwIPHp/VYc42b5BtpS6bB2 RHtR0GkrT6kGcgTPaXYeSorwlU9efSb6mMALHoQq145qzOUtg9ISmsisJesf8t5cfQ Uy9r9NjdcGhcQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4S3LYH4ykBz9rxB; Sun, 8 Oct 2023 14:08:51 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <83jzrxxrro.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <87o7h9pd9b.fsf@localhost> <83jzrxxrro.fsf@gnu.org> Date: Sun, 08 Oct 2023 12:10:14 +0000 Message-ID: <87lecdpb6h.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> > If file-attributes is the main source of consing, it could be the reason >> > for the line >> > >> > 924 36% Automatic GC >> >> No, the main source of consing, according to the memory profiler, is >> `inhibit-local-variables-p': > > The so-called "memory" profiler doesn't profile memory usage... This is annoying... Would be so nice if there were an actual profiler for consing. I tried - (let* ((attributes (file-attributes truename)) + (let* ((attributes (and nil (file-attributes truename))) which should effectively eliminate the calls to `file-attributes' from `find-file-visiting'. The GC time did not change significantly: 916 38% Automatic GC 213 8% + locate-dominating-file 157 6% + abbreviate-file-name 141 5% + inhibit-local-variables-p 120 5% + file-truename 108 4% + dir-locals--all-files 60 2% + file-name-sans-versions 54 2% + insert-file-contents -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 08 Oct 2023 12:13:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.16967671452093 (code B ref 66117); Sun, 08 Oct 2023 12:13:02 +0000 Received: (at 66117) by debbugs.gnu.org; 8 Oct 2023 12:12:25 +0000 Received: from localhost ([127.0.0.1]:56459 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpSe0-0000Xh-Iq for submit@debbugs.gnu.org; Sun, 08 Oct 2023 08:12:24 -0400 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:49661) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpSdy-0000XS-76 for 66117@debbugs.gnu.org; Sun, 08 Oct 2023 08:12:22 -0400 Received: from compute7.internal (compute7.nyi.internal [10.202.2.48]) by mailout.nyi.internal (Postfix) with ESMTP id 1769B5C0253; Sun, 8 Oct 2023 08:11:57 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Sun, 08 Oct 2023 08:11:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm1; t= 1696767117; x=1696853517; bh=vJWH5MYyvU4a2QXtTLZKNUfOYs3UNJBb1ue 4K9qDtI0=; b=Y3zqjg3y8SgMNc3pMBeb5HTWolji60GQTDHGg+rbYfTLKeNOtaB 4pH5w1rw6yCZ0g12Ca5XoTJ1xMjxkdrvWw/WfF5uNRzmX8GEpOSNuWZWrB1vuUw1 oAdli9wPRRuo2mj0uZjFV0TEEMECAupfvj+jBRcxApDCgrIU2yB2J1mJCNwBaZ/B fijqFvsm1Lwi0DjiXTggo/uSXmTqd65/p4/6mp37BMlhXJ+0t51EzWseICqgpHYs roU7r9YQ7MOu1GM1aSrWsZufKgSPUXCMv/lmX68k/tBku3XY4315Yqv2xs3IYnGi uRnbwfHvH51KCFbhZFT3Ba1HsOZUVigZCKg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1696767117; x=1696853517; bh=vJWH5MYyvU4a2QXtTLZKNUfOYs3UNJBb1ue 4K9qDtI0=; b=aJBqNBpBeyEKjjjcKqg0IUXl9yQ2BIaDWwztd8OpiNv4feDQP+5 RSgjzLwKRY8eYXwdInmPAKFEE61ZYG2QjwEHn7y4oPpVomb3hYmm2wRzdnkRPeMN MY7NtZCChXw5qS7rbwOzNUGqTl4bCbKlrdv2ElZrOZmMTmkKX8j4f/huM9c7k10M VDEo/R961g4oMjBFR/DJsVEiPZ5At2nfImRcN05GghBnUvr5t2REH9nBRGNjoHaC yewCkoE1/RkO3O3Rw23ZRoEwFKnbshJxPOEo0sQGbvd4dk095g2+9nB9CzzhYQaT caQp28KtMSYAEKo8dciMi3/e3avVak8lpbA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrhedugdegkecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefkffggfgfuvfevfhfhjggtgfesthejredttdefjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpeeigfetveehveevffehledtueekieeikeeufeegudfgfeeghfdulefgfeevledv veenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh hithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 8 Oct 2023 08:11:55 -0400 (EDT) Message-ID: <48507f04-25d4-56b0-f16f-50b2a01ac41e@gutov.dev> Date: Sun, 8 Oct 2023 15:11:53 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <87o7h9pd9b.fsf@localhost> From: Dmitry Gutov In-Reply-To: <87o7h9pd9b.fsf@localhost> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.2 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.2 (---) On 08/10/2023 14:25, Ihor Radchenko wrote: > Dmitry Gutov writes: > >> On 08/10/2023 12:00, Ihor Radchenko wrote: >>> I am not sure if we really need to squeeze the >>> performance yet further from `find-buffer-visiting' - `file-attributes' >>> is taking pretty much no time: >> >> If file-attributes is the main source of consing, it could be the reason >> for the line >> >> 924 36% Automatic GC > > No, the main source of consing, according to the memory profiler, is > `inhibit-local-variables-p': > > 170,592,016 49% + inhibit-local-variables-p > 45,619,488 13% + string-match > 28,171,152 8% + insert-file-contents > 26,066,069 7% + file-name-sans-versions > 18,699,245 5% + file-remote-p > > The full memory profile is attached. That's odd. Do many/any of your files being visited match inhibit-local-variables-suffixes or inhibit-local-variables-regexps? This might help a little bit: diff --git a/lisp/files.el b/lisp/files.el index b99ccf66d8a..8cab08bc6b6 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -3208,7 +3208,7 @@ inhibit-local-variables-p sufs) (setq name (substring name 0 (match-beginning 0)))) (while (and temp - (not (string-match (car temp) name))) + (not (string-match-p (car temp) name))) (setq temp (cdr temp))) temp)) From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 08 Oct 2023 12:20:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169676755013144 (code B ref 66117); Sun, 08 Oct 2023 12:20:02 +0000 Received: (at 66117) by debbugs.gnu.org; 8 Oct 2023 12:19:10 +0000 Received: from localhost ([127.0.0.1]:56464 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpSkY-0003Pw-Fy for submit@debbugs.gnu.org; Sun, 08 Oct 2023 08:19:10 -0400 Received: from mout01.posteo.de ([185.67.36.65]:59047) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpSkW-0003Pi-Od for 66117@debbugs.gnu.org; Sun, 08 Oct 2023 08:19:09 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id EF71B240028 for <66117@debbugs.gnu.org>; Sun, 8 Oct 2023 14:18:42 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1696767523; bh=2gS1AOBLpjjofjVaOo+yWxEhzGlWzXE1y84c8AWX+C0=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=MemGqR2sMyL4xaiXlIVHIEdsOkddK0MEntPFtzCYpMybTfb+tAgEaxD3/tazo5GBb ilPBS4sLTlAk2zlafv6/JBbwDZbEc1hn4jJshb/lOXsflAcgTmk0jSfSznzDWZmz/7 VZH8GI6Oz0I5/JxAjE+25ZFIlbQVxCVM91BJJBn/QGoR9IGCpQIqN4qTCG/oKoBJkk ztMkyXba/OfCLTEBPcTF1hvWtu0GsgC6kVqYDghK+1rSdex7mdZKkDU7uiDgLcWSFF HfcErp2MV1Q1XDXFZ/UcSKvmlBG5QxW+c40I1QaD6JOzt0kBexKTR7vp/EacDNI9dT w9n0y4e3UPSVQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4S3Lmf1R0Sz9rxD; Sun, 8 Oct 2023 14:18:42 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <48507f04-25d4-56b0-f16f-50b2a01ac41e@gutov.dev> References: <878r919qfh.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <87o7h9pd9b.fsf@localhost> <48507f04-25d4-56b0-f16f-50b2a01ac41e@gutov.dev> Date: Sun, 08 Oct 2023 12:20:20 +0000 Message-ID: <87il7hpapn.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Dmitry Gutov writes: >> The full memory profile is attached. > > That's odd. Do many/any of your files being visited match > inhibit-local-variables-suffixes or inhibit-local-variables-regexps? I used the same reproducer. You can try it on your side if you want. > This might help a little bit: > > - (not (string-match (car temp) name))) > + (not (string-match-p (car temp) name))) It is the first thing I tried. Nope. And, as Eli pointed, memory profiler is not measuring consing... So, it is useless for the purposes of reducing GC time. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 08 Oct 2023 12:29:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii , Ihor Radchenko Cc: 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169676811314044 (code B ref 66117); Sun, 08 Oct 2023 12:29:01 +0000 Received: (at 66117) by debbugs.gnu.org; 8 Oct 2023 12:28:33 +0000 Received: from localhost ([127.0.0.1]:56474 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpStc-0003eS-W9 for submit@debbugs.gnu.org; Sun, 08 Oct 2023 08:28:33 -0400 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:43331) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpStb-0003eE-5w for 66117@debbugs.gnu.org; Sun, 08 Oct 2023 08:28:31 -0400 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 00D8A5C022F; Sun, 8 Oct 2023 08:28:06 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Sun, 08 Oct 2023 08:28:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm1; t= 1696768085; x=1696854485; bh=GHHah08YC6YFAAw76y/VrcGdezmYFR+Zoo9 miq5uUbQ=; b=FyVM4OWlDiSayVp8FpXbIdhQOBaz5+1UJdYHMftWMGTL1vAFwGN cJJT4WQfa7NJAu+t+m5sCETS5t+oXLIu8ScjO+xoA3EvT98kuuO7zms2QoGa2yms Cln/nbkl4vvvqTmFama3pPvq/3EqZf3y5IT5+bQ7rw+Efp1GGsVKP/WRjVW9m+Jk /pIhQAZgbSMs10HsOiegUI/bL5vJtqkSnqlUFdC/2KsITxlN8Dtj1tXLtwLDaAvH ma2JpwhCCiYxoXIBWxG/QkUE6PutsMITPx6vJIU7vAhxN3gwb4DxaJrfuLrTMJFN bswHq7gr1uiC1T6cieHUBMnFymAutIBGmZg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1696768085; x=1696854485; bh=GHHah08YC6YFAAw76y/VrcGdezmYFR+Zoo9 miq5uUbQ=; b=qlcL4nM3koqbLdQRvrXB+z2T7Ua9pIJxHi24WlxNp3zg1KRPVkU 1btYD1n6lrC1KlLiZA230FKrFY+GCpwXhUBt5hj2Ds9iF8AkpbaPdmMyML1ylO5m 9TlkfC4BNQVc0n/pGL4/ZoxokHL7rTKCV8FHiTudAtAKE0mNl6PBNrF890W3ZsWL 1r4SHwJu78KkzUdus8cpAAMDI3FVl0oYC5QmlFCAr5VejwsqT0o7qHws5Rwj95ZK rjYsZp9gxlzcjixWDT0H4M7ne20qJIqXJbenHz9HC66h7k+pffrogIJrmElMOGsO ZiEKge4BCOLXjD7ObwTAfN+KGwZrvIOR8GQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrhedugdehvdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefkffggfgfuvfevfhfhjggtgfesthejredttdefjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpeeigfetveehveevffehledtueekieeikeeufeegudfgfeeghfdulefgfeevledv veenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh hithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 8 Oct 2023 08:28:04 -0400 (EDT) Message-ID: Date: Sun, 8 Oct 2023 15:28:02 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <87o7h9pd9b.fsf@localhost> <83jzrxxrro.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: <83jzrxxrro.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.2 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.2 (---) On 08/10/2023 14:44, Eli Zaretskii wrote: >> From: Ihor Radchenko >> Cc: Eli Zaretskii,66117@debbugs.gnu.org >> Date: Sun, 08 Oct 2023 11:25:20 +0000 >> >>> If file-attributes is the main source of consing, it could be the reason >>> for the line >>> >>> 924 36% Automatic GC >> No, the main source of consing, according to the memory profiler, is >> `inhibit-local-variables-p': > The so-called "memory" profiler doesn't profile memory usage... It does seem to be recording allocations (in push_handler_nosignal). Are you making the point that it doesn't record the consing values (i.e. the real numbers that affect the time spent in GC)? From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 09 Oct 2023 00:50:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.169681255923160 (code B ref 66117); Mon, 09 Oct 2023 00:50:01 +0000 Received: (at 66117) by debbugs.gnu.org; 9 Oct 2023 00:49:19 +0000 Received: from localhost ([127.0.0.1]:58903 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpeSU-00061U-Kx for submit@debbugs.gnu.org; Sun, 08 Oct 2023 20:49:18 -0400 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:60517) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpeSS-00061D-Rb for 66117@debbugs.gnu.org; Sun, 08 Oct 2023 20:49:17 -0400 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 4C0E95C02DD; Sun, 8 Oct 2023 20:48:51 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Sun, 08 Oct 2023 20:48:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm1; t= 1696812531; x=1696898931; bh=0Htg7UOn8Dhq1Kz4vSZRAcbPVRffcXqN+Zx poqul61w=; b=OAlOxaAlhKRed1JBMbXjwxLuDDCRq07PZnQ6zGWM8c8uweITn03 B5pVDKsZ4lSBt3VZucT0iyYOJh854xFFP6hwRVFxHg0CNs9KiT/ieA5fr8VeDdX/ KLL9pd2YkDAQ92HeYxu3qAlwO0292oLEQ84+UlzNJL6J5cWOrpBSoJg4irC1KwNw dhoc77iF/2djxGTs6X9hwy8k7o9BjHK7m0Rb2KZeC2v1NldHbHhB+gUwx6GosIze S2C7i/1Scj1ZKBma75uFw8ZH2G1hJvEKbrvuBNC/9SwwIxbfu9WyjRNY+9sXXa8D pFbI7GWqyp9ra5AFaB4P2zgnz8Gvkf1wnYg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1696812531; x=1696898931; bh=0Htg7UOn8Dhq1Kz4vSZRAcbPVRffcXqN+Zx poqul61w=; b=Em1qQMRIfY7rsbvjLkbsaQIwnctIg1/5T1mWyJijIODRKZei28v kUeD+bErTqzAd0uMT9lVDAB6PvihdLWENxS5j8mOUY2SH2dW6M4KwQPmmyFHyVxD WNTSsLbCMXA5AvWNuBm0YZ3BD6k1UzwvoasV18uJ3npLQ2+M5oM+TBSaJ+d3Jnru pgaQOX6P0ixjeWgOAfsezDznb5fK9BrTgSvG/9xB0Z7NEa/vWwYnhaul4az1Hfll IzLZepik+rWWU6c2X0FTqpxcbd30ckWzepvCIhLv+yjVsv1vakXhjQ1qY5Kwq1JJ 7W/RlmkDhbiqJbqFxq9pgLyQAhgjEihRX8A== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrhedvgdegtdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefkffggfgfuvfevfhfhjggtgfesthejredttdefjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpeeigfetveehveevffehledtueekieeikeeufeegudfgfeeghfdulefgfeevledv veenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh hithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 8 Oct 2023 20:48:49 -0400 (EDT) Message-ID: Date: Mon, 9 Oct 2023 03:48:47 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <87o7h9pd9b.fsf@localhost> <48507f04-25d4-56b0-f16f-50b2a01ac41e@gutov.dev> <87il7hpapn.fsf@localhost> From: Dmitry Gutov In-Reply-To: <87il7hpapn.fsf@localhost> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.2 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.2 (---) On 08/10/2023 15:20, Ihor Radchenko wrote: > Dmitry Gutov writes: > >>> The full memory profile is attached. >> >> That's odd. Do many/any of your files being visited match >> inhibit-local-variables-suffixes or inhibit-local-variables-regexps? > > I used the same reproducer. You can try it on your side if you want. Tried it, didn't find anything obvious (that helped) either. Thanks. >> This might help a little bit: >> >> - (not (string-match (car temp) name))) >> + (not (string-match-p (car temp) name))) > > It is the first thing I tried. Nope. > > And, as Eli pointed, memory profiler is not measuring consing... So, it > is useless for the purposes of reducing GC time. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 09 Oct 2023 10:02:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.16968457008200 (code B ref 66117); Mon, 09 Oct 2023 10:02:01 +0000 Received: (at 66117) by debbugs.gnu.org; 9 Oct 2023 10:01:40 +0000 Received: from localhost ([127.0.0.1]:59345 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpn52-00028C-2A for submit@debbugs.gnu.org; Mon, 09 Oct 2023 06:01:40 -0400 Received: from mout02.posteo.de ([185.67.36.66]:51983) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpn4z-00027p-6O for 66117@debbugs.gnu.org; Mon, 09 Oct 2023 06:01:38 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id F37C7240104 for <66117@debbugs.gnu.org>; Mon, 9 Oct 2023 12:01:10 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1696845671; bh=csvAKajwRNbv+xYhB+9FNwZLDGWvu/kSshC1PB6DamA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=XRu3VlKNzGdk3v8iLwBRe6xyfZ8ukecimWQwQqMr30pWwdbMijdJStA1C/wXnC34k Hx60vJh9fIt/bUbQ+/FMhkLTq3pIFW4pTmBbr5BLi0Is2SP33EEbGESUZvHHQLmQWA oVaL3VITOUp20DSN9LEwJk0p8Pe2yyn8dmzPAxLn33S9xw3b0mtTRTwRXM+RN70dox QEnfRzmq51P0ovBVevBe3aw7eCsSQZSE8sPL/TI09Q69rVSRoOwIDkdvHNh8wXuo/f /zcSEWMXjJ90atwgTcoCINP3ufo7sFCLK3FGBdFSeftKDfpK1p+7lUZwK0dAzaQ/8P iiNj60lCwfF4Q== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4S3vgT6wTnz9rxF; Mon, 9 Oct 2023 12:01:09 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <83y1gdxws8.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> Date: Mon, 09 Oct 2023 10:02:42 +0000 Message-ID: <87jzrwm7ul.fsf@localhost> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain Eli Zaretskii writes: >> > My advice is to have a prototype working, then time it on local >> > filesystems. >> >> See the attached patch. > > Thanks. This still has some unnecessary overhead (I actually thought > about moving the entire find-buffer-visiting into C, not replacing it > with Lisp that calls new primitives). But this already makes > find-buffer-visiting take an insignificant portion of CPU time, so I > think it proves that the idea is workable: I looked into rewriting `find-buffer-visiting' fully in C, but it appears to be rather tricky because it calls `file-truename' and `abbreviate-file-name', which are Elisp functions recursively calling other Elisp functions. And `abbreviate-file-name' is the slowest function showing up in the profiler (with my patch applied): ;; Increased the number of files to get more than ~2 sec CPU samples. (dotimes (i 3000) (with-temp-file (format "/tmp/test/%d.txt" i) (insert "* This is test"))) (dolist (file (directory-files "/tmp/test/" t "txt")) (find-file-noselect file)) (cpu-profile-w-patch-3000-files, reverse call tree) 3130 29% Automatic GC 1305 12% + abbreviate-file-name 845 7% + inhibit-local-variables-p 842 7% + uniquify-rationalize-file-buffer-names 719 6% + find-buffer-visiting 619 5% + locate-dominating-file 350 3% + dir-locals--all-files 332 3% + set-auto-mode--apply-alist 283 2% + hack-local-variables--find-variables 272 2% + file-truename I am not sure if we want to go deeper into the rabbit hole, but if we do, here is also the perf profile: 25.35% emacs emacs [.] set_default_internal 15.73% emacs emacs [.] process_mark_stack 10.18% emacs emacs [.] re_match_2_internal 8.88% emacs emacs [.] assq_no_quit 2.23% emacs emacs [.] Fstring_equal 2.01% emacs emacs [.] pdumper_marked_p_impl The main contributor is set_default_internal. I _suspect_ (because we have non-linear scaling with the number of buffers - 3x increase in the number of files lead to ~6x increase in the run time) that the main contributor here is let-binding `case-fold-search' - special per-buffer variable with no default value. In particular, `specbind' has the following comment: /* If SYMBOL is a per-buffer variable which doesn't have a buffer-local value here, make the `let' change the global value by changing the value of SYMBOL in all buffers not having their own value. This is consistent with what happens with other buffer-local variables. */ which implies that the binding will iterate over all the buffers, leading to non-linear scaling in our scenario. --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=cpu-profile-w-patch-3000-files Content-Transfer-Encoding: base64 Cltwcm9maWxlci1wcm9maWxlICIyOC4xIiBjcHUgI3MoaGFzaC10YWJsZSBzaXplIDIxNyB0ZXN0 IGVxdWFsIHJlaGFzaC1zaXplIDEuNSByZWhhc2gtdGhyZXNob2xkIDAuODEyNSBkYXRhIChbcmVk aXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDEwIFtuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDIwIFtkaXJl Y3RvcnktZmlsZXMgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsXSA5IFtkaXItbG9jYWxzLS1hbGwtZmlsZXMgbG9jYXRlLWRvbWlu YXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlh YmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAxODQg W3ZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweDFiZjQ0YWI4YjA4ZWFiZDg+IiBtYXBjIHZj LXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAxMCBbaW5o aWJpdC1sb2NhbC12YXJpYWJsZXMtcCBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDEw NSBbZmlsZS10cnVlbmFtZSBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmls XSA2NiBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMtc3ZuLXJlZ2lzdGVy ZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDU0ZTM1NDc0ZjcxNTQyOD4iIG1hcGMg dmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdo aWxlIGxldF0gMTU1IFtsb2NhdGUtZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmluZC1maWxl IGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSAyMyBbZmlsZS10cnVlbmFtZSBm aWxlLXRydWVuYW1lIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDQ2IFtzZXQtYXV0by1tb2RlLTEgaGFj ay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIGhhY2stbG9jYWwtdmFyaWFibGVzIHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA2 IFt1bmlxdWlmeS1yYXRpb25hbGl6ZS1maWxlLWJ1ZmZlci1uYW1lcyB1bmlxdWlmeS0tY3JlYXRl LWZpbGUtYnVmZmVyLWFkdmljZSBjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSA4 NDIgW2xvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLWhnLXJlZ2lzdGVyZWQg dmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDMzOTY1Yzg1NTZjZDlkMD4iIG1hcGMgdmMt cmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldF0gMTY4IFtzdHJpbmctbWF0Y2ggYXNzb2MtZGVmYXVsdCBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZV0gNjggW2FiYnJldmlhdGUtZmlsZS1uYW1lIGZpbmQtYnVmZmVyLXZpc2l0 aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVj dXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDE4MyBbZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSB2Yy1j aGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1zcmMtcmVnaXN0 ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MzJlMzljODU1NmNkOWQwPiIgbWFw YyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGVdIDcgW2Rpci1sb2NhbHMtLWFsbC1maWxlcyBsb2NhdGUtZG9taW5hdGluZy1maWxlIGRp ci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGhhY2stZGly LWxvY2FsLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyB0ZXh0 LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXRdIDE2NiBbdW5pcXVpZnktcmF0aW9uYWxpemUtYS1saXN0IHVu aXF1aWZ5LXJhdGlvbmFsaXplIHVuaXF1aWZ5LXJhdGlvbmFsaXplLWZpbGUtYnVmZmVyLW5hbWVz IHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBu aWwgbmlsXSAzIFtnZXQtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDc0IFtm b3JtYXQgdmMtcG9zc2libGUtbWFzdGVyICIjPGNvbXBpbGVkIDB4MWRiMGRlYzdmNDI1NmI2Zj4i IG1hcGNhciB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2 Yy1yY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHg1NGE5MGY0MmI4 YWYxYjU+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1 bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTFdIDYgW2F1dG8tY29k aW5nLWFsaXN0LWxvb2t1cCBmaW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNvZGluZyBpbnNlcnQt ZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0 IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAxOTQgW2xvY2F0ZS1k b21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLWJ6ci1yZWdpc3RlcmVkIHZjLWNhbGwtYmFj a2VuZCAiIzxjb21waWxlZCAweDU1MTI0ZjQyYjhhZjFiNT4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2 Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gMTI1IFtm aWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIGhhY2stbG9j YWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgcHJvZ25dIDM1IFthYmJyZXZpYXRlLWZpbGUtbmFtZSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbF0gMzAyIFt2Yy1zY2NzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVk IC0weDgyN2U5Yzg1NTZjZDlkMD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJl ZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0 LXNleHBdIDQgW2xvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFj ay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2st bG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZV0gMjcgW2ZpbmQtYXV0by1jb2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2VydC1maWxlLWNv bnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUg bGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAxMTMgW3ZjLWZpbGUtY2xl YXJwcm9wcyB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxp c3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBj b21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMjMgW2ZpbGUtdHJ1ZW5hbWUgZmlsZS10cnVlbmFtZSBm aW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9n biBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDY0IFtkaXItbG9jYWxzLWZpbmQt ZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJs ZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRv LW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldF0gMTcgW2ZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qt c2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsXSA3MTkgW3RleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24g ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGVdIDE1IFtzZXQtYXV0by1tb2RlLTEgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFz dC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMTIg W2FiYnJldmlhdGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1m aW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgaGFjay1kaXItbG9jYWwtdmFy aWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldF0gMTM4IFtpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0 ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSA5MCBbZmluZC1maWxlLW5hbWUtaGFuZGxlciBtYWtlLWF1 dG8tc2F2ZS1maWxlLW5hbWUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWwgbmlsXSAxNCBbZ2VuZXJhdGUtbmV3LWJ1ZmZlciBjcmVhdGUtZmlsZS1idWZmZXIgZmlu ZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhw IGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmls IG5pbCBuaWwgbmlsIG5pbF0gMjA3IFthc3NvYy1kZWZhdWx0IHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbF0gNyBbaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0by1t b2RlLTEgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21t YW5kLWV4ZWN1dGUgbmlsXSAxNDYgW3NlYXJjaC1mb3J3YXJkIGZpbmQtYXV0by1jb2Rpbmcgc2V0 LWF1dG8tY29kaW5nIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWxdIDggW2NhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgZm9udC1sb2NrLW1vZGUgdHVybi1vbi1m b250LWxvY2sgdHVybi1vbi1mb250LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1v ZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBz ZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBu b3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IGxldF0gNCBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMt Z2l0LXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4NmVlOThjZmFhOTMy NjMxPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4t aG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGUgbGV0XSAxMjEgW2ZpbGUtZXhpc3RzLXAgIiM8Y29tcGlsZWQgMHhkYWZj ZTY0MzNiYThiMDA+IiBtYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0 LXJlZ2lzdGVyZWQgdmMtcmNzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVk IC0weDZjYTNiMzA1NTZjZDlkMD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJl ZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3RdIDUyIFtmaWxlLW5hbWUtZGlyZWN0b3J5IHZjLWNoZWNrLW1h c3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNjY3MtcmVnaXN0ZXJlZCB2 Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MWU0NzRmMzA1NTZjZDlkMD4iIG1hcGMgdmMt cmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl XSA0IFthYmJyZXZpYXRlLWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQt cm9vdCB2Yy1ienItcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHg2ZTRi MGNmYWE5MzI2MzE+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0 YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gMTM4IFt2Yy1maWxlLWdldHByb3AgdmMtYmFja2VuZCB2 Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGUgbmlsXSAzIFthYmJyZXZpYXRlLWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxl IHZjLWZpbmQtcm9vdCB2Yy1zdm4tcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGls ZWQgLTB4OWEwMzczMDU1NmNkOWQwPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMt cmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDExNCBbZmlsZS1leGlzdHMtcCAiIzxj b21waWxlZCAweDFkZDRjODFmZjQyNTZiNmY+IiBtYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRlbXBs YXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc2Njcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFj a2VuZCAiIzxjb21waWxlZCAweDY1ZTI4ZjQyYjhhZjFiNT4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2 Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3RdIDMxIFtpbmhpYml0LWxvY2FsLXZh cmlhYmxlcy1wIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDEzNCBbY2FsbGVkLWludGVyYWN0aXZlbHktcCBhdXRv LXNhdmUtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwt bGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBu aWxdIDMgW3N0cmluZy1tYXRjaCB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1z dGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSAxMCBb YWJicmV2aWF0ZS1maWxlLW5hbWUgbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3Qg dmMtaGctcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHg2ZTU3OGNmYWE5 MzI2MzE+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1 bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZV0gMTYyIFttYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2 Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtcmNzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIj PGNvbXBpbGVkIC0weDFmN2UxYjMwNTU2Y2Q5ZDA+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFj a2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gNCBbc2VhcmNoLWJhY2t3 YXJkIGhhY2stbG9jYWwtdmFyaWFibGVzLS1maW5kLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZhcmlh YmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1h bmQtZXhlY3V0ZV0gMyBbZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgaW5oaWJpdC1sb2NhbC12YXJp YWJsZXMtcCBzZXQtYXV0by1tb2RlLTEgaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIGhh Y2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZV0gMTIgW2luaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9kZS0xIGhh Y2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAxNDEgW2V4cGFuZC1maWxl LW5hbWUgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbCBuaWxdIDcgW2ZpbGUtdHJ1ZW5hbWUgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWxdIDU5IFtmaWxlLXJlbW90ZS1wIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhv b2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwXSAxNyBbZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgaW5oaWJpdC1sb2NhbC12YXJp YWJsZXMtcCBzZXQtYXV0by1tb2RlLTEgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDI4IFtjYWxsZWQtaW50ZXJhY3RpdmVseS1w IGZvbnQtbG9jay1tb2RlIGZvbnQtbG9jay1jaGFuZ2UtbW9kZSB0ZXh0LW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gNCBbZmlsZS1uZXdl ci10aGFuLWZpbGUtcCBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5p bCBuaWwgbmlsXSAyMCBbaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0by1tb2RlLTEg aGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1t b2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDE3NiBbZmlsZS1k aXJlY3RvcnktcCBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1h bmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTggW3VuaXF1aWZ5LS1jcmVhdGUt ZmlsZS1idWZmZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmls XSAzNiBbaGFjay1sb2NhbC12YXJpYWJsZXMtLWZpbmQtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFy aWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbF0gMTYzIFtmaWxlcy0tdHJhbnNmb3JtLWZpbGUtbmFtZSBtYWtlLWxv Y2stZmlsZS1uYW1lIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWwgbmlsXSAxNSBbdW5pcXVpZnktcmF0aW9uYWxpemUgdW5pcXVpZnktcmF0aW9uYWxpemUt ZmlsZS1idWZmZXItbmFtZXMgdW5pcXVpZnktLWNyZWF0ZS1maWxlLWJ1ZmZlci1hZHZpY2UgY3Jl YXRlLWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAxMiBbYWJicmV2aWF0ZS1maWxlLW5hbWUgbG9j YXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMtZ2l0LXJlZ2lzdGVyZWQgdmMtY2Fs bC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDIyYTM3ZDg1NTZjZDlkMD4iIG1hcGMgdmMtcmVnaXN0 ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSAxNDAg W2ZpbGUtYXR0cmlidXRlcyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMjEgW2FmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSA3IFtmaWxlLW5h bWUtZGlyZWN0b3J5IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5j YWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDEy IFtnbG9iYWwtZWxkb2MtbW9kZS1jbWhoIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseV0gNCBbc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBu b3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwt bGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0g MzMyIFtzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1h bmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gNiBbYWJicmV2aWF0ZS1maWxlLW5hbWUgbG9jYXRlLWRv bWluYXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZh cmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAx MjggW2V4cGFuZC1maWxlLW5hbWUgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDEyIFtmaWxlLXdy aXRhYmxlLXAgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmls IG5pbF0gMzIgW2ZpbmQtZmlsZS1uYW1lLWhhbmRsZXIgbWFrZS1hdXRvLXNhdmUtZmlsZS1uYW1l IGF1dG8tc2F2ZS1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwg bmlsXSA2IFtleHBhbmQtZmlsZS1uYW1lIHZjLWN2cy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2Vu ZCAiIzxjb21waWxlZCAtMHg2YWZkODM0NTU2Y2Q5ZDA+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMt YmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25dIDEy IFtub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5p bCBuaWwgbmlsXSAzIFtpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIGhhY2stbG9jYWwtdmFyaWFi bGVzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9k ZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAxNDMgWyIjPGNvbXBpbGVkIC0weDc3ZjlkYjQyODQ1 NzUwMD4iIG1hcGNhciB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0 ZXJlZCB2Yy1yY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MWY3 ZTEwMzQ1NTZjZDlkMD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gt c3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0XSA0IFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBzZXQtYXV0by1t b2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDE4IFtjYWxsZWQtaW50ZXJhY3RpdmVseS1wIGdl dGVudiB2Yy1zY2NzLXNlYXJjaC1wcm9qZWN0LWRpciB2Yy1wb3NzaWJsZS1tYXN0ZXIgIiM8Y29t cGlsZWQgLTB4NzdkMWNmMmZjNDU3NTAwPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0 ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNjY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tl bmQgIiM8Y29tcGlsZWQgLTB4MWY2MTZjODA1NTZjZDlkMD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2 Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzXSA4IFtmaWxlLW5hbWUtc2Fucy12 ZXJzaW9ucyBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUtMSBoYWNrLWxv Y2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwXSAyMiBbZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSB2Yy1jaGVjay1tYXN0ZXIt dGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1yY3MtcmVnaXN0ZXJlZCB2Yy1jYWxs LWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTk5ODNjODA1NTZjZDlkMD4iIG1hcGMgdmMtcmVnaXN0 ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSA0IFtm aWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUgZmlsZS10cnVlbmFtZSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxd IDI0IFtoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmluZC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJp YWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1t b2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDEyMCBbZmlsZS10cnVlbmFtZSBmaWxlLXRydWVu YW1lIGZpbGUtdHJ1ZW5hbWUgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDEzIFtm b250LWxvY2stZGVmYXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9j ayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3Mgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cF0gNCBbc2V0LWF1dG8tbW9kZS0xIGhh Y2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9k ZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSA5IFt2Yy1m aWxlLXNldHByb3AgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVu LWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gNyBbZGlyZWN0b3J5 LWFiYnJldi1hcHBseSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0 IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSAz IFt2Yy1wb3NzaWJsZS1tYXN0ZXIgIiM8Y29tcGlsZWQgMHg5Y2E4NGZjMmZiYThiMDA+IiBtYXBj YXIgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc2Nj cy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweDZmOTBmMjNhYTkzMjYz MT4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhv b2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3RdIDcgW2ZpbGUtcmVtb3RlLXAgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgc2V0LWF1 dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1z ZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUg bmlsXSAyNiBbZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMt cCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQt ZXhlY3V0ZSBuaWxdIDE3IFtnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMg cnVuLWhvb2tzIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0 ZSBuaWwgbmlsXSAzIFtnZXRlbnYgdmMtc2Njcy1zZWFyY2gtcHJvamVjdC1kaXIgdmMtcG9zc2li bGUtbWFzdGVyICIjPGNvbXBpbGVkIC0weDc3MmRmMDAwNDQ1NzUwMD4iIG1hcGNhciB2Yy1jaGVj ay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1zY2NzLXJlZ2lzdGVy ZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDFmNmI1YWE4NTU2Y2Q5ZDA+IiBtYXBj IHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRl ci1maW5kLWZpbGVdIDMgW2ZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIG1ha2UtYXV0by1zYXZl LWZpbGUtbmFtZSBhdXRvLXNhdmUtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGUgbmlsIG5pbF0gOSBbc2dtbC1odG1sLW1ldGEtYXV0by1jb2RpbmctZnVuY3Rpb24gZmlu ZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgaW5zZXJ0LWZpbGUtY29udGVudHMgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxp c3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBj b21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gODEgW3J1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFz dC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gNyBbYXV0by1jb2RpbmctcmVnZXhwLWFsaXN0 LWxvb2t1cCBmaW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNvZGluZyBpbnNlcnQtZmlsZS1jb250 ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAxMSBbY2RyIHVuaXF1aWZ5LXJhdGlv bmFsaXplLWZpbGUtYnVmZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2 aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gMjUgW2VwYS1maWxlLWZpbmQtZmls ZS1ob29rIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhw IGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmls IG5pbCBuaWxdIDMgW2dsb2JhbC1lbGRvYy1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIGdsb2JhbC1l bGRvYy1tb2RlLWNoZWNrLWJ1ZmZlcnMgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA0IFtzdHJpbmdwIGF1dG8tc2F2ZS1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gMyBbZmlsZS1yZWFkYWJs ZS1wIHZjLWN2cy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxOTk2 MDllNDU1NmNkOWQwPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1z dGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duXSAxMCBbZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFz dC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1 dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDMgW2ZpbGUtZXhpc3RzLXAgIiM8Y29tcGlsZWQg MHg4YTZiYWFiOGQ4YThiMDA+IiBtYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1k ZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc3JjLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNv bXBpbGVkIC0weDI0ZjRkYzk0NTZjZDlkMD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5k IHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3RdIDIwIFt2Yy1maWxlLWdldHByb3AgdmMtcmVnaXN0 ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gNiBbZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgaW5oaWJp dC1sb2NhbC12YXJpYWJsZXMtcCBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1s YXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gNiBbZmlsZS1u YW1lLWRpcmVjdG9yeSB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBy dW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSAxMyBbdW5pcXVp ZnktcmF0aW9uYWxpemUtY29uZmxpY3Rpbmctc3VibGlzdCB1bmlxdWlmeS1yYXRpb25hbGl6ZS1h LWxpc3QgdW5pcXVpZnktcmF0aW9uYWxpemUgdW5pcXVpZnktcmF0aW9uYWxpemUtZmlsZS1idWZm ZXItbmFtZXMgdW5pcXVpZnktLWNyZWF0ZS1maWxlLWJ1ZmZlci1hZHZpY2UgY3JlYXRlLWZpbGUt YnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1l eGVjdXRlIG5pbF0gMzcgW2dsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBy dW4taG9va3MgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDcgW3ZjLXJlZ2lzdGVyZWQgdmMtYmFja2Vu ZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGUgbmlsXSAzIFtmb250LWxvY2staW5pdGlhbC1mb250aWZ5IGZvbnQtbG9jay1tb2Rl IHR1cm4tb24tZm9udC1sb2NrIHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZv bnQtbG9jay1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAzIFtm aWxlLW5hbWUtZGlyZWN0b3J5IHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1y ZWdpc3RlcmVkIHZjLXNyYy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAt MHgxZjZiZDMzMTQ1NmNkOWQwPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVm cmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDEwIFtmaWxlLXJlbW90ZS1wIHNldC1hdXRv LW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0 IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMTIgW2FkZC10by1saXN0IGdsb2JhbC1lbGRv Yy1tb2RlLWNtaGggdGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDMgW2NhciBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gNCBbZmls ZS1yZW1vdGUtcCBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12 YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gOCBbc2VhcmNoLWZvcndhcmQgaGFjay1sb2NhbC12YXJp YWJsZXMtLWZpbmQtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tz IHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25dIDYgW2xvZ2FuZCBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNh bGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSAzIFtmaWxl LW5hbWUtZGlyZWN0b3J5IHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdp c3RlcmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweDE4 MmJhOGY0MmI4YWYxYjU+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNo LXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gNyBbZmlsZXMtLXRyYW5zZm9ybS1maWxlLW5hbWUg bWFrZS1hdXRvLXNhdmUtZmlsZS1uYW1lIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhl Y3V0ZSBuaWwgbmlsIG5pbF0gMTIgW2Rpci1sb2NhbHMtZmluZC1maWxlIGhhY2stZGlyLWxvY2Fs LS1nZXQtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHBy b2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMyBbaGFjay1sb2NhbC12YXJpYWJsZXMtYXBwbHkg aGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRvLW1v ZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDcgW3NnbWwteG1sLWF1 dG8tY29kaW5nLWZ1bmN0aW9uIGZpbmQtYXV0by1jb2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2Vy dC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDEzIFtsb29raW5n LWF0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbCBuaWxdIDE0IFt2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDQgW2NvcHktdHJlZSBm b250LWxvY2stZGVmYXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9j ayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3Mgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cF0gNCBbYmFja3RyYWNlLWZyYW1lIGNhbGxlZC1pbnRlcmFjdGl2 ZWx5LXAgZm9udC1sb2NrLW1vZGUgZm9udC1sb2NrLWNoYW5nZS1tb2RlIHRleHQtbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ25dIDMgW2NhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgZm9u dC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVybi1vbi1mb250LWxvY2staWYtZGVzaXJl ZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIG5vcm1h bC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHBdIDQgW25vcm1hbC1iYWNrdXAtZW5hYmxlLXByZWRpY2F0ZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhl Y3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSA0IFtidWZmZXItZmlsZS1uYW1lIHJ1bi1tb2RlLWhv b2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAzIFtyZW1vdmUtaG9vayBmb250LWxvY2stbW9kZSBm b250LWxvY2stY2hhbmdlLW1vZGUgdGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1t b2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBw cm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDMgW3JlbXEgcmVtb3ZlLWhvb2sgZ2xvYmFsLWVs ZG9jLW1vZGUtY2hlY2stYnVmZmVycyBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmls ZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbF0gMyBbc2V0LW1hdGNoLWRhdGEgIiM8Y29tcGlsZWQgMHhhZDIxMTgy NjhlNmFmPiIgYWJicmV2aWF0ZS1maWxlLW5hbWUgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSA0IFttYWtlLWxv Y2FsLXZhcmlhYmxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5j YWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDMg WyIjPGNvbXBpbGVkIDB4MTk2MWQwZjQyYjhhZjFiNT4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1i YWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAz IFtraWxsLWFsbC1sb2NhbC12YXJpYWJsZXMgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2du IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZl bHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSA0IFtzZXRxIGxldCB3aGlsZSBsZXQgcHJv Z24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAzIFtmb3Jt YXQtZGVjb2RlIGluc2VydC1maWxlLWNvbnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWwgbmlsIG5pbF0gNiBbdmMtbWFrZS1iYWNrZW5kLXN5bSB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQg dmMtcmNzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4MWQ3N2UwZjQy YjhhZjFiNT4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUg cnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gNyBbY3JlYXRlLWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1u b3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsXSAzIFtzZWFyY2gtZm9yd2FyZCBoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmlu ZC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDMgW2ZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qt c2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsIG5pbF0gMyBbcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQt YXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgcHJvZ24gZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFz dC1zZXhwXSAzIFt2Yy1ienItcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQg LTB4MTkzYTY3MGJkNDc1MGU0Yj4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJl ZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0 LXNleHBdIDQgW2FkZC10by1saXN0IGdsb2JhbC1lbGRvYy1tb2RlLWNtaGgga2lsbC1hbGwtbG9j YWwtdmFyaWFibGVzIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhl Y3V0ZSBuaWxdIDQgW3VuaXF1aWZ5LWdldC1wcm9wb3NlZC1uYW1lIHVuaXF1aWZ5LXJhdGlvbmFs aXplIHVuaXF1aWZ5LXJhdGlvbmFsaXplLWZpbGUtYnVmZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVh dGUtZmlsZS1idWZmZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBwcm9nbiBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAzIFttYWtl LWF1dG8tc2F2ZS1maWxlLW5hbWUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IHByb2duIGVsaXNwLS1ldmFsLWxhc3Qt c2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRl IG5pbCBuaWwgbmlsIG5pbF0gNCBbaml0LWxvY2stY29udGV4dC1mb250aWZ5ICIjPHN1YnIgRjYx NmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfOT4iIGFwcGx5 IHRpbWVyLWV2ZW50LWhhbmRsZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWxdIDEzIFtjb21wbGV0aW5nLXJlYWQtZGVmYXVsdCByZWFkLWV4dGVuZGVkLWNv bW1hbmQtMSByZWFkLWV4dGVuZGVkLWNvbW1hbmQgYnl0ZS1jb2RlIGNvbW1hbmQtZXhlY3V0ZSBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAyMyBbbWVudS1iYXIt dXBkYXRlLWJ1ZmZlcnMgcmVkaXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgY29tcGxl dGluZy1yZWFkLWRlZmF1bHQgcmVhZC1leHRlbmRlZC1jb21tYW5kLTEgcmVhZC1leHRlbmRlZC1j b21tYW5kIGJ5dGUtY29kZSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWxdIDQgW3JlZGlzcGxheV9pbnRlcm5hbFwgXChDXCBmdW5jdGlvblwpIGNvbXBs ZXRpbmctcmVhZC1kZWZhdWx0IHJlYWQtZXh0ZW5kZWQtY29tbWFuZC0xIHJlYWQtZXh0ZW5kZWQt Y29tbWFuZCBieXRlLWNvZGUgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsIG5pbF0gMTggW3RyeS1jb21wbGV0aW9uIGNvbXBsZXRlLXdpdGgtYWN0aW9u ICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1i ZGFfNTQ+IiBjb21wbGV0aW9uLWJhc2ljLXRyeS1jb21wbGV0aW9uICIjPGNvbXBpbGVkIDB4MWVk NjhiZTIzYmMzMTkwND4iICIjPGNvbXBpbGVkIC0weDE1YzcxYmU2NjAxNjMxYWE+IiBtYXBjIHNl cS1kbyBzZXEtc29tZSBjb21wbGV0aW9uLS1udGgtY29tcGxldGlvbiBjb21wbGV0aW9uLXRyeS1j b21wbGV0aW9uIGNvbXBsZXRpb24tLWRvLWNvbXBsZXRpb24gY29tcGxldGlvbi0taW4tcmVnaW9u LTEgIiM8Y29tcGlsZWQgLTB4OTMyYTU5MTQ3ZWM4NmE1PiIgYXBwbHkgIiM8Y29tcGlsZWQgLTB4 ZjY4ODY4ZDI1YmVmMjI+Il0gMTkgW2JhY2stdG8taW5kZW50YXRpb24gc2hvdy1wYXJlbi0tbG9j YXRlLW5lYXItcGFyZW4gc2hvdy1wYXJlbi0tZGVmYXVsdCBzaG93LXBhcmVuLWZ1bmN0aW9uIGFw cGx5IHRpbWVyLWV2ZW50LWhhbmRsZXIgY29tcGxldGluZy1yZWFkLWRlZmF1bHQgcmVhZC1leHRl bmRlZC1jb21tYW5kLTEgcmVhZC1leHRlbmRlZC1jb21tYW5kIGJ5dGUtY29kZSBjb21tYW5kLWV4 ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMiBbdHJ5LWNvbXBsZXRpb24gY29tcGxldGUtd2l0 aC1hY3Rpb24gIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnlt b3VzX2xhbWJkYV81ND4iIGNvbXBsZXRpb24tYmFzaWMtdHJ5LWNvbXBsZXRpb24gIiM8Y29tcGls ZWQgMHgxZTMyYzFlMmRjMTA2ODg0PiIgIiM8Y29tcGlsZWQgLTB4MTVjNzFiZTY2MDE2MzFhYT4i IG1hcGMgc2VxLWRvIHNlcS1zb21lIGNvbXBsZXRpb24tLW50aC1jb21wbGV0aW9uIGNvbXBsZXRp b24tdHJ5LWNvbXBsZXRpb24gY29tcGxldGlvbi0tZG8tY29tcGxldGlvbiAiIzxjb21waWxlZCAt MHhhZmJkN2Q1MzgyYzY4ZWU+IiBjb21wbGV0aW9uLS1jb21wbGV0ZS1hbmQtZXhpdCBjb21wbGV0 aW9uLWNvbXBsZXRlLWFuZC1leGl0IG1pbmlidWZmZXItY29tcGxldGUtYW5kLWV4aXRdIDMgW2Nv bXBsZXRpb24tcGNtLS1hbGwtY29tcGxldGlvbnMgY29tcGxldGlvbi1wY20tLWZpbmQtYWxsLWNv bXBsZXRpb25zIGNvbXBsZXRpb24tcGNtLXRyeS1jb21wbGV0aW9uICIjPGNvbXBpbGVkIDB4MWUz MmMxZTJkYzEwNjg4ND4iICIjPGNvbXBpbGVkIC0weDE1YzcxYmU2NjAxNjMxYWE+IiBtYXBjIHNl cS1kbyBzZXEtc29tZSBjb21wbGV0aW9uLS1udGgtY29tcGxldGlvbiBjb21wbGV0aW9uLXRyeS1j b21wbGV0aW9uIGNvbXBsZXRpb24tLWRvLWNvbXBsZXRpb24gIiM8Y29tcGlsZWQgLTB4YWZiZDdk NTM4MmM2OGVlPiIgY29tcGxldGlvbi0tY29tcGxldGUtYW5kLWV4aXQgY29tcGxldGlvbi1jb21w bGV0ZS1hbmQtZXhpdCBtaW5pYnVmZmVyLWNvbXBsZXRlLWFuZC1leGl0IGZ1bmNhbGwtaW50ZXJh Y3RpdmVseV0gMyBbdHJ5LWNvbXBsZXRpb24gY29tcGxldGUtd2l0aC1hY3Rpb24gIiM8c3ViciBG NjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV81ND4iIGNv bXBsZXRpb24tZW1hY3MyMi10cnktY29tcGxldGlvbiAiIzxjb21waWxlZCAweDFlMzJjMWUyZGMx MDY4ODQ+IiAiIzxjb21waWxlZCAtMHgxNWM3MWJlNjYwMTYzMWFhPiIgbWFwYyBzZXEtZG8gc2Vx LXNvbWUgY29tcGxldGlvbi0tbnRoLWNvbXBsZXRpb24gY29tcGxldGlvbi10cnktY29tcGxldGlv biBjb21wbGV0aW9uLS1kby1jb21wbGV0aW9uICIjPGNvbXBpbGVkIC0weGFmYmQ3ZDUzODJjNjhl ZT4iIGNvbXBsZXRpb24tLWNvbXBsZXRlLWFuZC1leGl0IGNvbXBsZXRpb24tY29tcGxldGUtYW5k LWV4aXQgbWluaWJ1ZmZlci1jb21wbGV0ZS1hbmQtZXhpdF0gMyBbQXV0b21hdGljXCBHQyBuaWxd IDMxMzAgW3Byb2ZpbGVyLXJlcG9ydCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVj dXRlIGV4ZWN1dGUtZXh0ZW5kZWQtY29tbWFuZCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMykpICgy NTg5MSA1MjI2MSA1NTYzNjggNDM3MDAwKSBuaWxdCg== --=-=-= Content-Type: text/plain -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at --=-=-=-- From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 09 Oct 2023 10:16:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.16968465299980 (code B ref 66117); Mon, 09 Oct 2023 10:16:01 +0000 Received: (at 66117) by debbugs.gnu.org; 9 Oct 2023 10:15:29 +0000 Received: from localhost ([127.0.0.1]:59360 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpnIO-0002au-T4 for submit@debbugs.gnu.org; Mon, 09 Oct 2023 06:15:29 -0400 Received: from mout02.posteo.de ([185.67.36.66]:56887) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qpnIN-0002ad-As for 66117@debbugs.gnu.org; Mon, 09 Oct 2023 06:15:27 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id BABD4240101 for <66117@debbugs.gnu.org>; Mon, 9 Oct 2023 12:15:00 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1696846500; bh=uSVqRQKstc2KZ5KMAP3oAwDOR/Bsz4axTWB+XxKf3lc=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=MSbkAnauM6nLTx9lqFMR7XsI+KPz6ntPlcUnlGcJ9s0O6OoaGPBPZ03ne5pwSDpdL Z1XiNF/nJIlcemI0Gn7iXHLBclj9KmQoaoCSb8k742kBS3y6g2gFhDHS1icICfFpgZ C3QIg/y4asajQ3Qgdxd0bHeoOighi56H8GXqkf/9Q6EWn6mTQdUdSizsE0fUxtg7Z/ YkDnWAQw1Y+dFX4Oyc0uynNT4MWOO7njxaedxr63gX69XG8yAYsBcTjc8Qq7peQGaB gG5dEk1DIZWMqOlDGFXUX/QskEhRfyinJP+J4Q3zNinfYG9gQid2QFIMMNdI4dil3J RqRSu3e6BuZYw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4S3vzS0d7Yz6tvh; Mon, 9 Oct 2023 12:14:59 +0200 (CEST) From: Ihor Radchenko In-Reply-To: <87jzrwm7ul.fsf@localhost> References: <878r919qfh.fsf@localhost> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> Date: Mon, 09 Oct 2023 10:16:14 +0000 Message-ID: <87h6n0m781.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Ihor Radchenko writes: > The main contributor is set_default_internal. I _suspect_ (because we > have non-linear scaling with the number of buffers - 3x increase in the > number of files lead to ~6x increase in the run time) that the main > contributor here is let-binding `case-fold-search' - special per-buffer > variable with no default value. My suspicion appears to be correct - removing let-binding for case-fold-search from `abbreviate-file-name' and `inhibit-local-variables-p' made them disappear from the top of the reverse call tree. Then, considering the ubiquity of let-binding case-fold-search across Elisp code, speeding up let-binding of special per-buffer variables may give us performance boost across Emacs. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 14:22:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170239091223642 (code B ref 66117); Tue, 12 Dec 2023 14:22:02 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 14:21:52 +0000 Received: from localhost ([127.0.0.1]:55597 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD3dw-00069F-6f for submit@debbugs.gnu.org; Tue, 12 Dec 2023 09:21:52 -0500 Received: from mout02.posteo.de ([185.67.36.66]:44275) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD3du-000691-4K for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 09:21:50 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id B5A73240103 for <66117@debbugs.gnu.org>; Tue, 12 Dec 2023 15:21:28 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702390888; bh=UasEWVWurxMirGdwTdffw6ZqlFUe77A89pjySPPVp4A=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=Mz29ECW+DQl/dxyksusDLLXMFxomepJTooDVlnTWbrwGFlefwsINFncoXY7RU/GdE K7bLVqVQA9XXvfVv4DAiEXkYNAnwWkAj+7/3vxb9zuhn9ChB2BXAjlLOMv5f+Lf/MN lcs2LNGm/7JukSFyjg9LY08jPUibPchMG0o2NEmS8pvomghvl4w1QWhaiRqinnBMPz XX6b3QkcB8MlC2Du0GxulUvEGdg61W7lRlq09A3GoDdwu6/6hyOldwECv/XBDkZm8b 841p0aD9XE0IXPK4b0KlLWnElMMC4G3ISmq0HjAaZxVa8ROgSWCppimQTMfuCoBWVF KiqrcOY9WG8KQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4SqLQH4WXhz6tmv; Tue, 12 Dec 2023 15:21:27 +0100 (CET) From: Ihor Radchenko In-Reply-To: <87h6n0m781.fsf@localhost> References: <878r919qfh.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> Date: Tue, 12 Dec 2023 14:24:35 +0000 Message-ID: <87v8935wik.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Ihor Radchenko writes: > Ihor Radchenko writes: > >> The main contributor is set_default_internal. I _suspect_ (because we >> have non-linear scaling with the number of buffers - 3x increase in the >> number of files lead to ~6x increase in the run time) that the main >> contributor here is let-binding `case-fold-search' - special per-buffer >> variable with no default value. > > My suspicion appears to be correct - removing let-binding for > case-fold-search from `abbreviate-file-name' and > `inhibit-local-variables-p' made them disappear from the top of the > reverse call tree. > > Then, considering the ubiquity of let-binding case-fold-search across > Elisp code, speeding up let-binding of special per-buffer variables may > give us performance boost across Emacs. What do you think about introducing something like struct buffer buffer_overrides; It will be similar to buffer_defaults in buffer.c, but will hold the overriding values of buffer-local variables that are to be used instead of proper buffer-local variables. That way, we can speed up let-binding of case-fold-search. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 14:51:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko , Stefan Monnier Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170239260626566 (code B ref 66117); Tue, 12 Dec 2023 14:51:02 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 14:50:06 +0000 Received: from localhost ([127.0.0.1]:55621 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD45F-0006uP-Eo for submit@debbugs.gnu.org; Tue, 12 Dec 2023 09:50:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57004) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD45C-0006ti-ER for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 09:50:03 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rD44r-0004WP-2t; Tue, 12 Dec 2023 09:49:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=0/X2lJfloobfZ2o13iC6q70TvnfsShUuusyh4TrHHa8=; b=TKW9fqc6x0SJ mrMoYRPEtRTFP3kU4lkH37RLbDzSWzX/5MM7bwswQu5ZUTiiUasBRdusv0Yf1gE5A6VBf8Htb3kM8 5X0e5cVcqa84iAt9X5oMh4pr5GJqlxJR6WGgDrZJrxH/bV23MK1kcCtkLjBElf4/yOhGnpLhE0Z0O KAZaZoC7z0RKaV5gYdCHt3vnOZgNlwzYcVvEvmYu0dzSDIFazz6zLBqaYljmS92d+z8Ko4Q4eCBHH q9xFaBbPILnEtGmaly3gAuW/aMkhFrwTCjAoRvEy0bPQv1Ae5PJhPzd4usdQOAMQmNOiMBKM38KEO TOqQsEoHUVIDiEUqOosMCg==; Date: Tue, 12 Dec 2023 16:49:33 +0200 Message-Id: <83msuftr0i.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87v8935wik.fsf@localhost> (message from Ihor Radchenko on Tue, 12 Dec 2023 14:24:35 +0000) References: <878r919qfh.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Tue, 12 Dec 2023 14:24:35 +0000 > > Ihor Radchenko writes: > > > Ihor Radchenko writes: > > > >> The main contributor is set_default_internal. I _suspect_ (because we > >> have non-linear scaling with the number of buffers - 3x increase in the > >> number of files lead to ~6x increase in the run time) that the main > >> contributor here is let-binding `case-fold-search' - special per-buffer > >> variable with no default value. > > > > My suspicion appears to be correct - removing let-binding for > > case-fold-search from `abbreviate-file-name' and > > `inhibit-local-variables-p' made them disappear from the top of the > > reverse call tree. > > > > Then, considering the ubiquity of let-binding case-fold-search across > > Elisp code, speeding up let-binding of special per-buffer variables may > > give us performance boost across Emacs. > > What do you think about introducing something like > > struct buffer buffer_overrides; > > It will be similar to buffer_defaults in buffer.c, but will hold the > overriding values of buffer-local variables that are to be used instead > of proper buffer-local variables. That way, we can speed up let-binding > of case-fold-search. I'm sorry, I don't think I understand how this will work and avoid the problems we have with let-binding. So I added Stefan, in the hope that he might understand what I am evidently missing. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 16:31:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, Stefan Monnier Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17023986276713 (code B ref 66117); Tue, 12 Dec 2023 16:31:01 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 16:30:27 +0000 Received: from localhost ([127.0.0.1]:57314 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD5eN-0001kD-09 for submit@debbugs.gnu.org; Tue, 12 Dec 2023 11:30:27 -0500 Received: from mout01.posteo.de ([185.67.36.65]:38371) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD5eK-0001jx-GZ for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 11:30:25 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 67C7B240028 for <66117@debbugs.gnu.org>; Tue, 12 Dec 2023 17:30:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702398603; bh=9Lf++1gw/KRRPoDzqqmh9AAC+B6o+OUF87A/K04OCqE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=OayIsB1gmp8H0OqLTdCKbjfQFT6tu+TiDMt2Up8ZyfBjnN33gOcj7QcF1ieErH+0A N9QODJftaEAl+5Tn1dNMxyl/I4KiqEZesR6ug8L4P94gX2uWnL+2mJe0rkCOcMoB2Z 9JbEhbNP+RZPqXdQbbtSgVHCyyl+5e0qOBdzWYnjKfelrNSfo9ayoEPg9GIkBbfzKH xK/TqFUePTxzO+QEdJtKCowRjTLwuuTAnZ1TFVTfhN1Uv6iIFOd3UzvH4P94JaBLRv kcEX91AgGeHHkyqrBhTSkUaouxNFQcPsU7Ko0IKRQ7W/SShQ/3YLlEWySh6oCXu9xI JDpgPm2QXrGbw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4SqPGf0cxzz6tyB; Tue, 12 Dec 2023 17:30:01 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83msuftr0i.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> Date: Tue, 12 Dec 2023 16:33:05 +0000 Message-ID: <87plzbxtxa.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> What do you think about introducing something like >> >> struct buffer buffer_overrides; >> >> It will be similar to buffer_defaults in buffer.c, but will hold the >> overriding values of buffer-local variables that are to be used instead >> of proper buffer-local variables. That way, we can speed up let-binding >> of case-fold-search. > > I'm sorry, I don't think I understand how this will work and avoid the > problems we have with let-binding. So I added Stefan, in the hope > that he might understand what I am evidently missing. Let me elaborate. - In eval.c, `Flet' always uses `specbind' to bind `case-fold-search'. Because `case-fold-search' is declared special (u.s.declared_special = true). - For `case-fold-search', `specbind' does /* If SYMBOL is a per-buffer variable which doesn't have a buffer-local value here, make the `let' change the global value by changing the value of SYMBOL in all buffers not having their own value. This is consistent with what happens with other buffer-local variables. */ if (NILP (Flocal_variable_p (symbol, Qnil))) specpdl_ptr->let.kind = SPECPDL_LET_DEFAULT; - Later, `specbind' calls `do_specbind' where SPECPDL_LET_DEFAULT causes a call to `set_default_internal'. - Then, `set_default_internal', for any variable with positive buffer_local_flags loops over all the live buffers to overwrite the buffer-local value. This loop is the bottleneck, making let-binding of `case-fold-search' (and any other variable marked in buffer.c:4691 block) scale with the number of open buffers. - What I propose is to avoid this loop in `do_specbind' altogether. Instead of having to loop through all the buffers to set temporary buffer-local value, I propose to introduce special buffer object `buffer_overrides' that will hold such temporary bindings. Then, we can change BVAR to something like #define BVAR(buf, field) (buffer_overrides->field ## _ == UNSET ?\ (buf)->field ## _ :\ buffer_overrides->field ## _) and replace the loop with simply setting buffer_overrides slot. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 17:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170240201532652 (code B ref 66117); Tue, 12 Dec 2023 17:27:02 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 17:26:55 +0000 Received: from localhost ([127.0.0.1]:57432 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD6X0-0008Ua-Dp for submit@debbugs.gnu.org; Tue, 12 Dec 2023 12:26:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:35438) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD6Wq-0008UC-Fp for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 12:26:52 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rD6WU-0006M1-B8; Tue, 12 Dec 2023 12:26:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=fQma0UqCt+N7jcxKyT1wLzbPlNrR7k1bZXad9u1qHAE=; b=IH8UtZBGVaYL xkBn2T+cq4oaf5r+JYaf7B0gIm1lQ2LiQ5/1ypblJc6I7wqYrizOo2y9dZiMQtMwigGIbSi/8DH1E lXtShiPc5MMwOfWYEw5tf4v76llejx4TPGkEKcZALeeqzo3147QU6WM/h81nLhROPjCm3qWrMWoiw HKNjCbOoSlICwVp0xcnoJaa81X6Ditbay1yFK4D1vhVzes79/k/6vHCfvw9Ow4EK8+/YAidff1ML0 kkRsu5BOxDsGHKwNCdH0/TigEU0J6XZPzRPR2s1UyAG0dx1eDtle+5gbc7gEMHtsRTNccxWqkETkl 8moEC94dw1gYk5RSH5AYPg==; Date: Tue, 12 Dec 2023 19:26:13 +0200 Message-Id: <83fs07tjre.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87plzbxtxa.fsf@localhost> (message from Ihor Radchenko on Tue, 12 Dec 2023 16:33:05 +0000) References: <878r919qfh.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: Stefan Monnier , dmitry@gutov.dev, > 66117@debbugs.gnu.org > Date: Tue, 12 Dec 2023 16:33:05 +0000 > > - Then, `set_default_internal', for any variable with positive > buffer_local_flags loops over all the live buffers to overwrite the > buffer-local value. > > This loop is the bottleneck, making let-binding > of `case-fold-search' (and any other variable marked in buffer.c:4691 > block) scale with the number of open buffers. > > - What I propose is to avoid this loop in `do_specbind' altogether. > Instead of having to loop through all the buffers to set temporary > buffer-local value, I propose to introduce special buffer object > `buffer_overrides' that will hold such temporary bindings. > Then, we can change BVAR to something like > > #define BVAR(buf, field) (buffer_overrides->field ## _ == UNSET ?\ > (buf)->field ## _ :\ > buffer_overrides->field ## _) > > and replace the loop with simply setting buffer_overrides slot. So for starters, we make each BVAR more expensive, i.e. make Emacs uniformly slower (because we call BVAR all over the place). And then I'm not sure I understand how buffer_overrides will get the values of those temporary bindings without having to use the same loops when we have let-binding within another one. Also, what about threads? From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 17:42:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17024028981900 (code B ref 66117); Tue, 12 Dec 2023 17:42:01 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 17:41:38 +0000 Received: from localhost ([127.0.0.1]:57449 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD6lF-0000UX-MU for submit@debbugs.gnu.org; Tue, 12 Dec 2023 12:41:38 -0500 Received: from mout01.posteo.de ([185.67.36.65]:54427) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD6lC-0000UF-W7 for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 12:41:35 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 96DAA24002A for <66117@debbugs.gnu.org>; Tue, 12 Dec 2023 18:41:13 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702402873; bh=q/veAK+h1+kRxIg/kL36dpeFQdZFG0qhkpxqPmLMjyo=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=Yb9CEsoNpDIo77CtBXOU+7uXncUi49wgC6XNZcwX3kHckLWcplzqf5dW7RAaWxGi1 49NSfEHVa+x2pZr1Qje2dPMutenC4JhTgIaLJHa6N3oeg40j/CVoOgmQJtr0eBukp1 JIUhOFiMXSBaX2HypymGB1pSGYGJNuYRYfeVFsyN8ImMfFYegdeeC8svHnBPmEaxN5 RfYDwmhh9+V8k8BsI42tzJZQds2Fq2oP2s/dmKLfq966lJz+9cH9wGBIjCS7rHrrnS 1cT3gvdaodiQh8yqrbBLWpc0DBx6RPxfFcmWdbGBjXZfBOuzWP/Jb9sofufVKUZXDQ sPdHiaZL/Nxow== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4SqQrm2vVYz6tvq; Tue, 12 Dec 2023 18:41:12 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83fs07tjre.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <83fs07tjre.fsf@gnu.org> Date: Tue, 12 Dec 2023 17:44:15 +0000 Message-ID: <87msufxqmo.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> #define BVAR(buf, field) (buffer_overrides->field ## _ == UNSET ?\ >> (buf)->field ## _ :\ >> buffer_overrides->field ## _) >> >> and replace the loop with simply setting buffer_overrides slot. > > So for starters, we make each BVAR more expensive, i.e. make Emacs > uniformly slower (because we call BVAR all over the place). Yes, although I do not believe that it will have large impact in practice. It is just an extra == comparison. > ... And then > I'm not sure I understand how buffer_overrides will get the values of > those temporary bindings without having to use the same loops when we > have let-binding within another one. Also, what about threads? Just as any other global state variable - via `specbind'. Entering inner let will push the previous value into specpdl and recover it upon exiting. Threads work similarly, maintaining their own local specpdl queue heads that make sure that global state is recorded and rewinded as needed. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 18:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170240624018925 (code B ref 66117); Tue, 12 Dec 2023 18:38:02 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 18:37:20 +0000 Received: from localhost ([127.0.0.1]:57537 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD7dA-0004vA-C4 for submit@debbugs.gnu.org; Tue, 12 Dec 2023 13:37:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36518) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD7d7-0004uv-V9 for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 13:37:19 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rD7cm-0000YO-Bw; Tue, 12 Dec 2023 13:36:56 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=0zl0GWuXM2igWkBoPQPJx1zhmkBStDsWX6QnuBe+7fg=; b=jACCneC0ZE5z 5YJ93z4W0aZrTt3/whVxxcmhufsW8DoRDrfYMt6WIAUJiDBEKctHIphZ82EercvWQJt14yP/gyT6/ 33lYXA+QO4FLUUtw5nE8y0RvL5qr3a5rV3r8OMqeKbtsq2vjZRMV96WSt16SIp8ONXySs2kvHwLm0 LWt3v/oYYPhAusVqAmJqdy5Cvx1NlXoNslgHLMd4A5kISZf9yc9jRGysoUIDKI1d50001h4YT9G1P oQ7SS8wHxWWE5zdJtewwYSXY6cwTs1TM5kuT8I3yLfbZquF9qmJD8JZnTKzs2oCPTQr1NxWOVPw5T epG3io5bomDy9uza9CfERw==; Date: Tue, 12 Dec 2023 20:36:48 +0200 Message-Id: <83a5qftghr.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87msufxqmo.fsf@localhost> (message from Ihor Radchenko on Tue, 12 Dec 2023 17:44:15 +0000) References: <878r919qfh.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <83fs07tjre.fsf@gnu.org> <87msufxqmo.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: monnier@iro.umontreal.ca, dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Tue, 12 Dec 2023 17:44:15 +0000 > > Eli Zaretskii writes: > > >> #define BVAR(buf, field) (buffer_overrides->field ## _ == UNSET ?\ > >> (buf)->field ## _ :\ > >> buffer_overrides->field ## _) > >> > >> and replace the loop with simply setting buffer_overrides slot. > > > > So for starters, we make each BVAR more expensive, i.e. make Emacs > > uniformly slower (because we call BVAR all over the place). > > Yes, although I do not believe that it will have large impact in > practice. It is just an extra == comparison. We've seen how similar extra comparisons slow down Emacs when we introduced symbols-with-location. IMO, BVAR might be even more expensive, since it is used much more frequently and widely. > > ... And then > > I'm not sure I understand how buffer_overrides will get the values of > > those temporary bindings without having to use the same loops when we > > have let-binding within another one. Also, what about threads? > > Just as any other global state variable - via `specbind'. Entering inner > let will push the previous value into specpdl and recover it upon > exiting. And that will not require looping similar to what we have now? > Threads work similarly, maintaining their own local specpdl queue heads > that make sure that global state is recorded and rewinded as needed. I don't think I follow you here. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 19:11:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii , Ihor Radchenko Cc: 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170240824322501 (code B ref 66117); Tue, 12 Dec 2023 19:11:02 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 19:10:43 +0000 Received: from localhost ([127.0.0.1]:57567 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD89S-0005qq-K2 for submit@debbugs.gnu.org; Tue, 12 Dec 2023 14:10:42 -0500 Received: from wout4-smtp.messagingengine.com ([64.147.123.20]:51879) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD89Q-0005qc-2y for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 14:10:40 -0500 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id 492283200BB8; Tue, 12 Dec 2023 14:10:18 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Tue, 12 Dec 2023 14:10:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1702408217; x=1702494617; bh=m0LJFOiWL0P4PEXZcOhpUbot9kSDskRmgcshqPJwWJU=; b= ydQy9vq/5Y4k8v9QGUhKkrigVkYARgKA2cfYihoXjwm6Fan10teasSuLg4vC0QSr bI+zgPtBIVPwFzUV4T46sAR9PpUYM3C+IDIo5xmCl94rD+JYDfbRV9cMy4NZblE+ bdEMxHWFI9BWMyGtYF0BnN/g9cUmI0JPl5T497zpCrvCGIEoMPYsBaqV+wKeH0Wy aGwaU+A+KqdEcHCTbUstD2IjSlBX3eC3ex7se6um2Aw5h2fqDRSneZzmG8mE9wV+ pj2gZYkFTZPz3Tg/pPNpzKlJ9vgdMvDGnckMXI8auLIyqeWcAdAbKsdHEiaCOEGH DG88jY2h4HNnaC1enSh1Eg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1702408217; x= 1702494617; bh=m0LJFOiWL0P4PEXZcOhpUbot9kSDskRmgcshqPJwWJU=; b=z 4XckHIykuFV0lv/IhOWsSQxSPsAVPffq+SVdbFfDwXWY/6ZhXwkuUMGin2kmMDhV ciUyhx0JQ0S5OyGQQaGF6l1uuiixIvw0wj+eNc8Wxf75MJ4lFwmXUia3W7KaEulV OKpz1jtr+BNVdFvwQFTOR6/AsWzrOs6ztY2TEniUPyMF/mOtK8TI9B+/qpNG5E4e PSD9gjjHc+E3nYmSv11W6Pov8zv9UiIFPill3A1BYu6Q642vyBNUC5prWyvShx9p U9WUYUIuX2XMchLu1fatg1XDs2uW82oQdF4jDsqWiJYlaFlnzmOeIcG0UQvuNRfA y2Hnk2FZymhDoTstZy/og== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrudelgedguddulecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefkffggfgfuvfevfhfhjggtgfesthejredttdefjeenucfhrhhomhepffhm ihhtrhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrg htthgvrhhnpeeigfetveehveevffehledtueekieeikeeufeegudfgfeeghfdulefgfeev ledvveenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe gumhhithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 12 Dec 2023 14:10:16 -0500 (EST) Message-ID: <0bbb45af-cca9-442a-837d-a173f7156248@gutov.dev> Date: Tue, 12 Dec 2023 21:10:13 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <83fs07tjre.fsf@gnu.org> <87msufxqmo.fsf@localhost> <83a5qftghr.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: <83a5qftghr.fsf@gnu.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.9 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.9 (---) On 12/12/2023 20:36, Eli Zaretskii wrote: >> From: Ihor Radchenko >> Cc:monnier@iro.umontreal.ca,dmitry@gutov.dev,66117@debbugs.gnu.org >> Date: Tue, 12 Dec 2023 17:44:15 +0000 >> >> Eli Zaretskii writes: >> >>>> #define BVAR(buf, field) (buffer_overrides->field ## _ == UNSET ?\ >>>> (buf)->field ## _ :\ >>>> buffer_overrides->field ## _) >>>> >>>> and replace the loop with simply setting buffer_overrides slot. >>> So for starters, we make each BVAR more expensive, i.e. make Emacs >>> uniformly slower (because we call BVAR all over the place). >> Yes, although I do not believe that it will have large impact in >> practice. It is just an extra == comparison. > We've seen how similar extra comparisons slow down Emacs when we > introduced symbols-with-location. IMO, BVAR might be even more > expensive, since it is used much more frequently and widely. We also have dynamic variable bindings all over the place, so it might be worth a try (with measurements). From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 19:16:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170240853922951 (code B ref 66117); Tue, 12 Dec 2023 19:16:01 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 19:15:39 +0000 Received: from localhost ([127.0.0.1]:57572 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD8EF-0005y7-Du for submit@debbugs.gnu.org; Tue, 12 Dec 2023 14:15:39 -0500 Received: from mout01.posteo.de ([185.67.36.65]:58621) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD8EE-0005xu-01 for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 14:15:38 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id CDFA3240027 for <66117@debbugs.gnu.org>; Tue, 12 Dec 2023 20:15:16 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702408516; bh=ptUlJRv4WKefStLuu74gtrywgPK1Ya9Y9/kAMNG4Ic0=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=BNV43MkzAK6YGTxpzYXUu3tSnliwGV+iXnmeH9d9UbzXx7ZOX0orWYXYYONAOMUs+ EPY2sfvwEXmhjSoJzPSSPxeQ0zDHB7X7kBxTcWmYhm9Km8pBEv4NN3M/5Y4mSGbSfh aXKh1Ql2vMGgpnw9ZKZVu1EhbieRQXlHC836H9po1J1HKsl7GvsTAIP1KADUCziHAT OI3SV+J24ysdECeU7/zDiecgpA/q6BC2U3oRA+Gl/4Lw4RhTyOIH+2G8JxfAK0uGxC zSsNuDkqCIpAfVUxvYqVJFUPRfP41GY+4buWUzQvMme05fodZr/FbMYTDhYt3X0Dm4 5Yxc3b0Lpr8lA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4SqSxH6KXQz9rxL; Tue, 12 Dec 2023 20:15:15 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83a5qftghr.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <83fs07tjre.fsf@gnu.org> <87msufxqmo.fsf@localhost> <83a5qftghr.fsf@gnu.org> Date: Tue, 12 Dec 2023 19:18:19 +0000 Message-ID: <87jzpjxm9w.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> > So for starters, we make each BVAR more expensive, i.e. make Emacs >> > uniformly slower (because we call BVAR all over the place). >> >> Yes, although I do not believe that it will have large impact in >> practice. It is just an extra == comparison. > > We've seen how similar extra comparisons slow down Emacs when we > introduced symbols-with-location. IMO, BVAR might be even more > expensive, since it is used much more frequently and widely. It might. Do you know a good way to test such thing? Because I do not think that a mere suspicion that this change might make things slower should stop the discussion. >> > ... And then >> > I'm not sure I understand how buffer_overrides will get the values of >> > those temporary bindings without having to use the same loops when we >> > have let-binding within another one. Also, what about threads? >> >> Just as any other global state variable - via `specbind'. Entering inner >> let will push the previous value into specpdl and recover it upon >> exiting. > > And that will not require looping similar to what we have now? No. AFAIK, the way let-binding for dynamic scoping works is: 1. push existing variable value to specpdl 2. assign a new value 3. when leaving let scope, pop the record from specpdl and assign the old value What I propose is changing the way value is assigned. Now, the assignment of buffer-local variable that is recorded into buffer object slot involves doing it in all the live buffers. I propose to do it in a special buffer object instead, which is strictly faster. >> Threads work similarly, maintaining their own local specpdl queue heads >> that make sure that global state is recorded and rewinded as needed. > > I don't think I follow you here. See `rebind_for_thread_switch' and `unbind_for_thread_switch'. The workhorse is `specpdl_unrewind', which see. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 19:18:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: yantar92@posteo.net, monnier@iro.umontreal.ca, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170240865123162 (code B ref 66117); Tue, 12 Dec 2023 19:18:01 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 19:17:31 +0000 Received: from localhost ([127.0.0.1]:57582 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD8G0-00061S-9J for submit@debbugs.gnu.org; Tue, 12 Dec 2023 14:17:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52538) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD8Fv-00061D-IN for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 14:17:27 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rD8Fa-0007e9-1u; Tue, 12 Dec 2023 14:17:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=mWTdrnITBAsFx6ZhKjw786rTFS7O9Wwng0MH21Njp84=; b=dHvA9ZanZDXr bWY4/qrbHw2uDXWx/+y+qUJMikvi8l1ELU61c7JiA2kZA6ngfKKQT9rRvAYiu4JytZRxRWNwFpV5g T5K21xMZQ5tsGceKx9RLrenX/ELlHbSz67NqTbVWOcTbVxUY5xniA428NnvtNzfIZQYJQR0rDnZJg gkOHN74qpfpKnQp//MrYKk7CMHWEiv5/o0H2rKyxX+LS2immkinAA30wJKv2BlLJzemo+dWq0KOLx yREvSVtTzf03SITfaXjIqXJB/VwxvDdWINXHmYK5PNfMjbtjJ6LhAxDrzLhTUwUyTRv2dvjTkAUC0 rdWTQwCbPJEz6ZpzoK8YVQ==; Date: Tue, 12 Dec 2023 21:16:45 +0200 Message-Id: <8334w7ten6.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <0bbb45af-cca9-442a-837d-a173f7156248@gutov.dev> (message from Dmitry Gutov on Tue, 12 Dec 2023 21:10:13 +0200) References: <878r919qfh.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <83fs07tjre.fsf@gnu.org> <87msufxqmo.fsf@localhost> <83a5qftghr.fsf@gnu.org> <0bbb45af-cca9-442a-837d-a173f7156248@gutov.dev> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Tue, 12 Dec 2023 21:10:13 +0200 > Cc: monnier@iro.umontreal.ca, 66117@debbugs.gnu.org > From: Dmitry Gutov > > On 12/12/2023 20:36, Eli Zaretskii wrote: > >> From: Ihor Radchenko > >> Cc:monnier@iro.umontreal.ca,dmitry@gutov.dev,66117@debbugs.gnu.org > >> Date: Tue, 12 Dec 2023 17:44:15 +0000 > >> > >> Eli Zaretskii writes: > >> > >>>> #define BVAR(buf, field) (buffer_overrides->field ## _ == UNSET ?\ > >>>> (buf)->field ## _ :\ > >>>> buffer_overrides->field ## _) > >>>> > >>>> and replace the loop with simply setting buffer_overrides slot. > >>> So for starters, we make each BVAR more expensive, i.e. make Emacs > >>> uniformly slower (because we call BVAR all over the place). > >> Yes, although I do not believe that it will have large impact in > >> practice. It is just an extra == comparison. > > We've seen how similar extra comparisons slow down Emacs when we > > introduced symbols-with-location. IMO, BVAR might be even more > > expensive, since it is used much more frequently and widely. > > We also have dynamic variable bindings all over the place But not all of them are special like case-fold-search. > so it might be worth a try (with measurements). I didn't say it isn't worth a try. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 19:21:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170240884523444 (code B ref 66117); Tue, 12 Dec 2023 19:21:02 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 19:20:45 +0000 Received: from localhost ([127.0.0.1]:57587 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD8JA-000664-QD for submit@debbugs.gnu.org; Tue, 12 Dec 2023 14:20:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44628) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD8J8-00065s-N0 for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 14:20:43 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rD8Il-0000cX-Nw; Tue, 12 Dec 2023 14:20:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=TZHHJJTXJmumhechFaUJbJYQz0jGcfI0NCmLmlmP5GU=; b=F/smfgi09Mcq KMNlfIL2o41vJw9x9dZOZvdTlfIfc+L+/1SNlq36mYdWeF1VCn6HHiDlSm0OIbrZkXqjke14zMMhM Q5OSCFm7tCAzRijHSPc/n4VJIyZP+FZYYEzI3KAiEcbf9l2e3OkJyzCh2ASq6bAaM3pWyYI7PxMuf pTY5XPXySks0yMU4pk1b7PF0IkSxUyOTVpgz6jikyYrsj/egciWQvvABd3PV5srrFu8GzdITqC/WC C+TPAXd5B+21jo0DZzZNRmGcPX3IgRZYaBbFzt11gX+D6TbKLmcFiCD/wFxc3/sopKN91Y7xF88+3 5fpuPiMtc/6M0qZoJFQfUg==; Date: Tue, 12 Dec 2023 21:20:06 +0200 Message-Id: <831qbrtehl.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87jzpjxm9w.fsf@localhost> (message from Ihor Radchenko on Tue, 12 Dec 2023 19:18:19 +0000) References: <878r919qfh.fsf@localhost> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <83fs07tjre.fsf@gnu.org> <87msufxqmo.fsf@localhost> <83a5qftghr.fsf@gnu.org> <87jzpjxm9w.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: monnier@iro.umontreal.ca, dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Tue, 12 Dec 2023 19:18:19 +0000 > > Eli Zaretskii writes: > > >> > So for starters, we make each BVAR more expensive, i.e. make Emacs > >> > uniformly slower (because we call BVAR all over the place). > >> > >> Yes, although I do not believe that it will have large impact in > >> practice. It is just an extra == comparison. > > > > We've seen how similar extra comparisons slow down Emacs when we > > introduced symbols-with-location. IMO, BVAR might be even more > > expensive, since it is used much more frequently and widely. > > It might. Do you know a good way to test such thing? Because I do not > think that a mere suspicion that this change might make things slower > should stop the discussion. To measure such things, you need to run some benchmarks. Byte-compiling might be one such kind; "make bootstrap" could be another; scrolling one line at a time through a large file could be yet another one. Several such benchmarks were posted to the lists on several similar occasions. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 20:03:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170241136828337 (code B ref 66117); Tue, 12 Dec 2023 20:03:01 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 20:02:48 +0000 Received: from localhost ([127.0.0.1]:57627 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD8xs-0007Mz-1K for submit@debbugs.gnu.org; Tue, 12 Dec 2023 15:02:48 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:36266) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD8xq-0007Mn-Rf for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 15:02:47 -0500 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id BDFBD80157; Tue, 12 Dec 2023 15:02:25 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702411344; bh=CiCZMaaFSBNRtRLKDs8zliZLjfgCXqHTrvZbhRw2Kzo=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=ReFExQsXVLZx6lWby6tIr511tP+lqVKR4i9+abvT03j/31k6N2R3tEBdQkO03RH1k Pc0tjG2uww4ej7oVRtevXOpt6KMlU4m1uO6j4Hoj1A9vmLUPtsesFgZl2DO8OcG4QD fmz+0R7fgB6Xo+Pg+Z6+/EhJU9S0+KfbubIrk8JkI5sMMHbEWA4z6c6+1E75WMU+WT 7Ce9gI9v9jS3rDnFTELXMKsNc0Z2osU72EG2STwjmXtUBvBJ4NZcCmzjLb5Q4Fe32I ctI3igxkgFBRYp//bd55YA0BE/vhCSuwSpN0iJZImNF+DLW4LgrX8IgJQVfwcC48ar DjZPQbBPSvJNA== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id C8A5C80357; Tue, 12 Dec 2023 15:02:24 -0500 (EST) Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id B75121202BD; Tue, 12 Dec 2023 15:02:24 -0500 (EST) From: Stefan Monnier In-Reply-To: <87plzbxtxa.fsf@localhost> (Ihor Radchenko's message of "Tue, 12 Dec 2023 16:33:05 +0000") Message-ID: References: <878r919qfh.fsf@localhost> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> Date: Tue, 12 Dec 2023 15:01:56 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL 0.032 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > - What I propose is to avoid this loop in `do_specbind' altogether. > Instead of having to loop through all the buffers to set temporary > buffer-local value, I propose to introduce special buffer object > `buffer_overrides' that will hold such temporary bindings. > Then, we can change BVAR to something like > > #define BVAR(buf, field) (buffer_overrides->field ## _ == UNSET ?\ > (buf)->field ## _ :\ > buffer_overrides->field ## _) If we're willing to pay the cost of such a test, then we don't need a new `buffer_overrides`, we can just set `buf->field` to a special value (e.g. `Qunbound`, tho we'll probably need to use a new similar special value) and then do: #define BVAR(buf, field) ((buf)->field ## _ != Qunbound ?\ (buf)->field ## _ :\ buffer_defaults->field ## _) This said, in the case of `case-fold-search` I think there's a simpler solution: make it "buffer-local only", meaning that let-binding it affects only the current buffer (rather than affecting all the buffers which have not made it buffer-local yet). Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 20:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier , Ihor Radchenko Cc: Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.1702414082729 (code B ref 66117); Tue, 12 Dec 2023 20:48:02 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 20:48:02 +0000 Received: from localhost ([127.0.0.1]:57675 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD9fd-0000Bb-T8 for submit@debbugs.gnu.org; Tue, 12 Dec 2023 15:48:02 -0500 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]:53727) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rD9fc-0000BK-7u for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 15:48:00 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 6A4C23200A88; Tue, 12 Dec 2023 15:47:38 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 12 Dec 2023 15:47:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1702414057; x=1702500457; bh=Au5V9f2OguEg1j4oWgGra2CKlFGxf8k2oBWnJr6pdQg=; b= wh5r0JMgwAp3r165tvLutkWF0W1v3tOXRRPstnvwPcj4EorJduyGDo5fLzwnmIpP Wv2WdV3GvwP+p8a8TpKa80PQceTZA2S5rDF9t5z5YJEkbO7Qfa5Vme1C50fJJNtT MH2Y/obuPKbm/+PvGY0EbA+R2c29PWO2HcpBO+gxJdnffUcuh4darG4+xTnjeOpX /3XSpFVAyaX52gn8rKKIQeor12Z0TRduX6THwfUx2nFnE9eoXTscYAd3izdhRedI aG1sl5THhYrrX5RRaJ0UrqYFvofSKR5r2C3tFRKX4C4ZEJlg6woevdmuGOF9FU59 GU1o7AlzrOFfS25joRSddQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1702414057; x= 1702500457; bh=Au5V9f2OguEg1j4oWgGra2CKlFGxf8k2oBWnJr6pdQg=; b=E qCUFrwstYK4coZLAvh2o9KOcvnqtwWshbyZ6BEq+lsnBLCGeNlorRbvV2fNRjLQO fYMqQxMoKxIxSWqs01COdtWjlNFLv5FsLajhlTDxaaWac210fWMS8RJjsoJS771Z fzhCR+mSsN7rsFWOgul4pvObvOtATFTyqH0h+O8BwZzQ5Wm/xvkaIYI70s+mkwCK xj+j9Gu+nsz6iMUraFsOz+rr4r6JSTF5R9N4Iv0yZ7YhsXCIx1Q7fk5NSWXgNBqu CTbhzepfmkEflAtfxdEznU36h3qOmI9VJ0howieGPs1b953q8QTRv3/543zHhGbl ekEbg5dRcpEo6mMM11ZjA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrudelgedgudefjecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefkffggfgfuvfevfhfhjggtgfesthejredttdefjeenucfhrhhomhepffhm ihhtrhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrg htthgvrhhnpeeigfetveehveevffehledtueekieeikeeufeegudfgfeeghfdulefgfeev ledvveenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe gumhhithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 12 Dec 2023 15:47:36 -0500 (EST) Message-ID: Date: Tue, 12 Dec 2023 22:47:35 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> From: Dmitry Gutov In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.9 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.9 (---) On 12/12/2023 22:01, Stefan Monnier wrote: > This said, in the case of `case-fold-search` I think there's a simpler > solution: make it "buffer-local only", meaning that let-binding it > affects only the current buffer (rather than affecting all the buffers > which have not made it buffer-local yet). Wouldn't that be a breaking change? And a non-obvious one. E.g. company-dabbrev-code creates a dynamic binding for case-fold-search in one place and then calls a function (company-dabbrev--search) that iterates across all buffers with re-search-forward. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 22:59:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: Ihor Radchenko , Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170242189214892 (code B ref 66117); Tue, 12 Dec 2023 22:59:02 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 22:58:12 +0000 Received: from localhost ([127.0.0.1]:57870 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDBhc-0003s7-GX for submit@debbugs.gnu.org; Tue, 12 Dec 2023 17:58:12 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:12007) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDBhZ-0003rm-WD for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 17:58:10 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id E719144485C; Tue, 12 Dec 2023 17:57:48 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702421867; bh=ZSLQvONmT0azWRjuxhmZwretBOPAnEMUUFIEDC98RDg=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=k1l2a4p4w85iErAesaAI4/n4uMuMXlWNlTTNiYSH6cdVTMDpJUO+L5+4r0MUgZUJ2 A+rsxpFcBqw3I1pBt/gJZPKTzs6j6L/GzsaKA/YUXs8sN5xZ4msHkD+iByoBaKu7Sb SXNpYK2UvIMF8RUE2tVhAepNw2S8Y8vZdiNOyP11Zdn4Q83s3Evi37O9YxWM7RU4Aj a0L6/IjUNeT/WkX6AsFZ2fBBvCzuWDq0O1BLjpAb/7apTBbUIGAEij8oWzhaWuqFhc APWD8uuHIjDIU/SI/lAEg2JEHEiatudOVHTESSwDaiyuzlAoIMWycOC3DyNJBiG/v5 AHqULyqjKkWBA== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id A8CAC444800; Tue, 12 Dec 2023 17:57:47 -0500 (EST) Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 975CC120913; Tue, 12 Dec 2023 17:57:47 -0500 (EST) From: Stefan Monnier In-Reply-To: (Dmitry Gutov's message of "Tue, 12 Dec 2023 22:47:35 +0200") Message-ID: References: <878r919qfh.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> Date: Tue, 12 Dec 2023 17:57:19 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL 0.115 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) >> This said, in the case of `case-fold-search` I think there's a simpler >> solution: make it "buffer-local only", meaning that let-binding it >> affects only the current buffer (rather than affecting all the buffers >> which have not made it buffer-local yet). > Wouldn't that be a breaking change? And a non-obvious one. Yup. > E.g. company-dabbrev-code creates a dynamic binding for case-fold-search in > one place and then calls a function (company-dabbrev--search) that iterates > across all buffers with re-search-forward. I think we call this collateral damage. My suggestion was indeed not completely serious, tho I do think in the long run it's what we should do. BTW, regarding making BVAR slower, we could reduce its cost by introducing two versions of BVAR, so we only pay the price when accessing one of the problematic variables like `case-fold-search`. Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 23:11:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: Ihor Radchenko , Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170242263416530 (code B ref 66117); Tue, 12 Dec 2023 23:11:01 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 23:10:34 +0000 Received: from localhost ([127.0.0.1]:57890 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDBta-0004IY-3R for submit@debbugs.gnu.org; Tue, 12 Dec 2023 18:10:34 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:53351) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDBtX-0004IH-D7 for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 18:10:32 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 6547E100068; Tue, 12 Dec 2023 18:10:10 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702422609; bh=GXLlfhJs+iVNsWyYtu2JhTgYte/vD7n2xxom2JD6PZI=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=V67HjQUOwHZsIBgyn38aVR2nHlI7u1JiB/GJvQML52Yd0CUOTnIvHPkbFY9GA6DLS GalK4cC9RhO4aMlvpTvirSpYD+N0uvwI68f68wlEry0cczMPwpmx1TzlTr/SG+bJul jcRK0rRfy7FCJ0NOycCvBU3iLxD4B0Hg8bArlsFipaUPBaSRBDRS/JQKaoiyhQEw4H Py3naEfC3fA2mq4zkULqSjhZeYh5QmUQZesrB3sAVnlDehxToUf4oO6yhLW5wX8bzK eo/jnPIFAy/MoPv7FpOa4H/PJP8z0kqVOZexNrR5KwtgDjqAbZgxPM22uXl8NMpuEs uJockaBPjmy1w== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 83D9C100033; Tue, 12 Dec 2023 18:10:09 -0500 (EST) Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 727E212075C; Tue, 12 Dec 2023 18:10:09 -0500 (EST) From: Stefan Monnier In-Reply-To: (Dmitry Gutov's message of "Tue, 12 Dec 2023 22:47:35 +0200") Message-ID: References: <878r919qfh.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> Date: Tue, 12 Dec 2023 18:09:41 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL 0.102 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > E.g. company-dabbrev-code creates a dynamic binding for case-fold-search in > one place and then calls a function (company-dabbrev--search) that iterates > across all buffers with re-search-forward. BTW, that `company-dabbrev-code` function may not do what you expect in those buffers that have set `case-fold-search` buffer-locally. Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 23:41:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: Ihor Radchenko , Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170242443219972 (code B ref 66117); Tue, 12 Dec 2023 23:41:02 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 23:40:32 +0000 Received: from localhost ([127.0.0.1]:57926 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDCMa-0005C4-AL for submit@debbugs.gnu.org; Tue, 12 Dec 2023 18:40:32 -0500 Received: from wout1-smtp.messagingengine.com ([64.147.123.24]:50583) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDCMX-0005Bo-53 for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 18:40:31 -0500 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.west.internal (Postfix) with ESMTP id 47F803200AD4; Tue, 12 Dec 2023 18:40:07 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Tue, 12 Dec 2023 18:40:07 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1702424406; x=1702510806; bh=OG5nZXz76RkLs3ORSsRLFUyILnUDWWpnVqUx6pfovOw=; b= vFS5QrVD8bHO8dClJkO6p9wI7dHoeVKZh/V33sUBELisI0q2ravs2pwJhH1W615O ZWHmEJwiFBttWy8WV+7KyNhydCkHkX5jjX99vPdNO6S70x5+yJk9RrmPhO1tNwpE p9XEX2fiMRTCvmkQMJ5EEOkbmISYyGRxi1no/F/tmv84JGkK7pAuHP9QUvYnFMJK YosmSUFPgQpzJt7dXhxBdfA5vBCZyjWuOUc1kl0Zr2i9EmbG3M7oRVUms2NNUKHV 1wzClP8a0mtrgOPwd6xdmfiifeViN8wFGG43V1zsCzpKFYlW4VgUZ2fCK5vzJ8Xu Yb75lQH75LJagKbF7VSbfw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1702424406; x= 1702510806; bh=OG5nZXz76RkLs3ORSsRLFUyILnUDWWpnVqUx6pfovOw=; b=n 4Hp911QSYBWlbBIJNslpu8aFAxX8Tr+B+QmSrffQy3cm36bUTPEW7aQ/fXnQAhXA fQl2oLkfE9yV57c9WBWzl9yLetnKhMwenWJMjI36JNHzHBCr7algfJy/mixtYUZs erwpQAGe48rz8qvr8LzpqtXxymQStrXk2wassr4Gs972yjVfhu3MQaVRSIZOXMab ODh/XlvJIlkwAfVySEO2WPeidFX+D8dyECV3uqWRaMK5nA7U3DR7aecDtMeT9fJH Iul0AN3ojd/P9JpZK9nnIbXAIfEJsOGHxg2MkG7qCMxc4OyZfagnONTSO49NL2C8 Mt9rFFXqUAevJVBV2vSbw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrudelhedgudegucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtfeejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepiefgteevheevveffheeltdeukeeiieekueefgedugfefgefhudelgfefveel vdevnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 12 Dec 2023 18:40:05 -0500 (EST) Message-ID: <2d355bf6-7fca-a733-d656-aeee701901b2@gutov.dev> Date: Wed, 13 Dec 2023 01:40:03 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> From: Dmitry Gutov In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.9 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.9 (---) On 13/12/2023 00:57, Stefan Monnier wrote: >>> This said, in the case of `case-fold-search` I think there's a simpler >>> solution: make it "buffer-local only", meaning that let-binding it >>> affects only the current buffer (rather than affecting all the buffers >>> which have not made it buffer-local yet). >> Wouldn't that be a breaking change? And a non-obvious one. > Yup. > >> E.g. company-dabbrev-code creates a dynamic binding for case-fold-search in >> one place and then calls a function (company-dabbrev--search) that iterates >> across all buffers with re-search-forward. > I think we call this collateral damage. > > My suggestion was indeed not completely serious, tho I do think in the > long run it's what we should do. > > BTW, regarding making BVAR slower, we could reduce its cost by > introducing two versions of BVAR, so we only pay the price when > accessing one of the problematic variables like `case-fold-search`. Perhaps in the long run it might be good to do the opposite? Introduce never-buffer-local variables, and make case-fold-search one of them. I do see a few hits for (setq-local case-fold-search across the Emacs codebase, but in none of these I can clearly understand the end goal (is that for interactive isearch?). Except for ido-make-buffer-list-1, which is done purely for performance, working around a problem related to what's being discussed here (df4991093b94). From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 23:42:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: Dmitry Gutov , Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170242447320057 (code B ref 66117); Tue, 12 Dec 2023 23:42:01 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 23:41:13 +0000 Received: from localhost ([127.0.0.1]:57930 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDCNE-0005DQ-NJ for submit@debbugs.gnu.org; Tue, 12 Dec 2023 18:41:13 -0500 Received: from mout01.posteo.de ([185.67.36.65]:46533) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDCN8-0005Ce-JY for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 18:41:11 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 08B5E240027 for <66117@debbugs.gnu.org>; Wed, 13 Dec 2023 00:40:45 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702424445; bh=CBqkGCvIMQjfxOGB3raq1R63k7gsE5DZpDqHxkgDaqg=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=V9IOC0mAEQwl+3troMsFSuxkgzL6z0SQZnKz07w4PgDUGW86vAR6xDlEtG8fr67Xr YB45r8dJc2GzwOyfEU7tUEJq+MaB8SlqCkP1WOTOq9GG8Mifjw8eaRlAkP8mBAl7+q 3QIR60GySpuitrN8aaHiZTVpcgL472bn9M/samsRzBllH85CvabLAv4eKIbjgWRxKS u2Ze4dm9pHrPaF19tlgZJVvAacHWTcBMv8iF9kuI6OuIvNTVZAr+Lm+cKTnCPLC9xH EWna5LW2nr0JVjNj6D7VxSraSIdNgfPb/HrF+nnoNkUCfckE60mBIPYgyE4AB73ytK MkKItfswhuH/Q== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4SqZqb6b8dz6txR; Wed, 13 Dec 2023 00:40:43 +0100 (CET) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> Date: Tue, 12 Dec 2023 23:43:47 +0000 Message-ID: <87y1dzvvf0.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Stefan Monnier writes: >> E.g. company-dabbrev-code creates a dynamic binding for case-fold-search in >> one place and then calls a function (company-dabbrev--search) that iterates >> across all buffers with re-search-forward. > > BTW, that `company-dabbrev-code` function may not do what you expect > in those buffers that have set `case-fold-search` buffer-locally. Yup. Steps to reproduce: 1. emacs -Q 2. M-: (setq-local case-fold-search nil) 3. C-x b (to *Messages*) 4. M-: (let ((case-fold-search t)) (with-current-buffer (get-buffer "*scratch*") (search-forward "CREATE"))) 5. Observe search failing If step (2) is omitted, search succeeds. Although, I am not sure if I like that let-binding is not reliable for buffer-locals. It is simply confusing from the point of view of let usage; even if documented. I'd rather go for `let' becoming more consistent. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Dec 2023 23:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko , Stefan Monnier Cc: Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170242490620902 (code B ref 66117); Tue, 12 Dec 2023 23:49:02 +0000 Received: (at 66117) by debbugs.gnu.org; 12 Dec 2023 23:48:26 +0000 Received: from localhost ([127.0.0.1]:57936 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDCUD-0005R2-V2 for submit@debbugs.gnu.org; Tue, 12 Dec 2023 18:48:26 -0500 Received: from wout1-smtp.messagingengine.com ([64.147.123.24]:39065) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDCUC-0005QK-Cl for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 18:48:24 -0500 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id C93873200ACC; Tue, 12 Dec 2023 18:48:02 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Tue, 12 Dec 2023 18:48:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1702424882; x=1702511282; bh=h5JBG04/2vcxneN2OhPLgK3whOZBp0tQBC7sQGvZFZQ=; b= gaCXZpUFGs32HAUiLssI/SF48R7EQ2vRTXslyD3OgGuXWrcs+Q5cXdoSj9GlVyex Ug0Wtnkk51ltbTfefK01OrkRx1eZrRY1dNuH1zwwlHEbNKd38ww4MrN6uaH3cc7S 1QRVPkQBJI81G7PQrsdtdXnTLifhOEiCkuSNEz7VhJwbKon4Z840cgnou1DzlAwj XfNLC8FZSJkse5g3R8EgiRk5n6K5q/CCiowFhhvtzy+ad2p5jgaK/pwRpPh6+YVa j9WVFEAzcnV2FxmLpKbpE6BJbHY41mNbNR166DMY7cwmosI/Yr5dbUjDl3700a7x lhKyuy7IcwTZOPXTKkpUHA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1702424882; x= 1702511282; bh=h5JBG04/2vcxneN2OhPLgK3whOZBp0tQBC7sQGvZFZQ=; b=j VDNS5JCmG8xwKglBz1lwpN5g8BOTCt9jPHUSDE1wvsPtJFOyFEg7qqxmcrcPYuxR p2eY4Sqot5B6VNZhqq1xPyTm4KCE+vma/fIng7hfZeR3X9ujfKZWz7+Nup4vNqlq vjlerSJr3HtNTaLPXfqm4czUVqth3+dJncaw4yBJnmHgImP35EgG3m8zXMtIJvN7 Y9TLeEfoa/taSfOu+pW4ZwVZHNwTyw/No1I+iSnlbHqp0tZ1YDRBZM+eyh1uJHs6 RimUNspK5cXMJ4GMOjaT+xYwgr8jKF/F+vzXn35VsLFqRTj6oChJLmeSgy49r9I1 unggvIoU9Xsw2OY42T7Rw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrudelhedgudehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtfeejnecuhfhrohhmpeffmhhi thhrhicuifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrth htvghrnhepiefgteevheevveffheeltdeukeeiieekueefgedugfefgefhudelgfefveel vdevnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepug hmihhtrhihsehguhhtohhvrdguvghv X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 12 Dec 2023 18:48:00 -0500 (EST) Message-ID: Date: Wed, 13 Dec 2023 01:47:59 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> From: Dmitry Gutov In-Reply-To: <87y1dzvvf0.fsf@localhost> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.9 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.9 (---) On 13/12/2023 01:43, Ihor Radchenko wrote: > Stefan Monnier writes: > >>> E.g. company-dabbrev-code creates a dynamic binding for case-fold-search in >>> one place and then calls a function (company-dabbrev--search) that iterates >>> across all buffers with re-search-forward. >> BTW, that `company-dabbrev-code` function may not do what you expect >> in those buffers that have set `case-fold-search` buffer-locally. > Yup. > > Steps to reproduce: > > 1. emacs -Q > 2. M-: (setq-local case-fold-search nil) > 3. C-x b (to*Messages*) > 4. M-: (let ((case-fold-search t)) (with-current-buffer (get-buffer "*scratch*") (search-forward "CREATE"))) > 5. Observe search failing > > If step (2) is omitted, search succeeds. That's a good data point, but since I don't understand why anybody would make (or does make) case-fold-search buffer-local, I'm not going to hurry to fix those cases. > Although, I am not sure if I like that let-binding is not reliable for > buffer-locals. It is simply confusing from the point of view of let > usage; even if documented. I'd rather go for `let' becoming more consistent. That sounds attractive (ignoring all buffer-locals when let-bound?), but I'm guessing there are enough valid use cases for this behavior. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Dec 2023 03:52:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: Ihor Radchenko , Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170243948115797 (code B ref 66117); Wed, 13 Dec 2023 03:52:01 +0000 Received: (at 66117) by debbugs.gnu.org; 13 Dec 2023 03:51:21 +0000 Received: from localhost ([127.0.0.1]:58027 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDGHJ-00046j-86 for submit@debbugs.gnu.org; Tue, 12 Dec 2023 22:51:21 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:61562) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDGHI-00046V-0i for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 22:51:20 -0500 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id DA15980250; Tue, 12 Dec 2023 22:50:58 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702439457; bh=zleft2dsDMxq18tD55TfS3PXBvFaiTQle4TIAQH0SlU=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=m5rFdxVzglXEwFrSKMaamq78z7iPgV22hCfpQKHV7J23FjMuCGtxXqFR3+F47AC12 T0NuuOletJpbYTeAdlTFGNZxqmDjOv8OHFcKyQjgfvlC9RxJCi8/mschuldH52ZXQx bkgfo3M+HjexvtbawYYXTp63GpcJGXhcccdnaCW4g373I6rkAN6La3smN5rs4reFnA ozt9BpVNwQXVD64E/ZirLHwTm4AklGbuScmKbfqzwJhxW6meERMApX40BE26aC9WY9 e6LRFm+QJl01E9y/wFcQIfBFFzf+7OxNODzRmB+9vgIlFjxQdNs/+cohm293LOfFgO LCvnKnHmXSDvw== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id CABE980357; Tue, 12 Dec 2023 22:50:57 -0500 (EST) Received: from pastel (unknown [45.72.203.88]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 9BDA3120878; Tue, 12 Dec 2023 22:50:57 -0500 (EST) From: Stefan Monnier In-Reply-To: <2d355bf6-7fca-a733-d656-aeee701901b2@gutov.dev> (Dmitry Gutov's message of "Wed, 13 Dec 2023 01:40:03 +0200") Message-ID: References: <878r919qfh.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <2d355bf6-7fca-a733-d656-aeee701901b2@gutov.dev> Date: Tue, 12 Dec 2023 22:50:54 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.079 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Perhaps in the long run it might be good to do the opposite? Introduce > never-buffer-local variables, and make case-fold-search one of them. > > I do see a few hits for > > (setq-local case-fold-search > > across the Emacs codebase, but in none of these I can clearly understand the > end goal (is that for interactive isearch?). If it's really rare, then the simpler&better solution is to move it out of the `struct buffer` altogether (i.e. make it normal DEFVAR_LISP or DEFVAR_BOOL). > Except for > ido-make-buffer-list-1, which is done purely for performance, working > around a problem related to what's being discussed here (df4991093b94). Of course, ideally there should be no such var for `re-search-*` and friends. Such vars are good for user-configs impacting the behavior of commands but they're a bit clunky when used as implicit parameters to low-level ELisp primitives. Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Dec 2023 03:56:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: Ihor Radchenko , Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170243974216185 (code B ref 66117); Wed, 13 Dec 2023 03:56:02 +0000 Received: (at 66117) by debbugs.gnu.org; 13 Dec 2023 03:55:42 +0000 Received: from localhost ([127.0.0.1]:58032 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDGLV-0004Cz-Vx for submit@debbugs.gnu.org; Tue, 12 Dec 2023 22:55:42 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:63814) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDGLT-0004Cm-Ve for 66117@debbugs.gnu.org; Tue, 12 Dec 2023 22:55:40 -0500 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id BC690807A7; Tue, 12 Dec 2023 22:55:18 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702439717; bh=SuEPP+bGt6c0TIXozsEbd62Z0fq3poaZ29x3za19ipU=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=nqDaQ0Ho/fdz6dNIphOe52RMI8xiBArVSU8Pt5jw09Zj9xQdpuOjKQGRQ8tjS/GL7 y2XFg8xSYWgovVbh4d+t1Rz9sb1J200WyWZYx4o9TknXppK5LHP7R50p9n4Y5MV3VQ i8hZBcb/CuUsFC6L7CbFeqEVbIfKR5xU5r+emSAdfYN+iqMSSeDb3JmUsuVqeIW4jm aDntMg/4kcEjPM58NEjfB0EU9Pm6Uj/68HAhub7/p7v8aUVtZv8lS1huMSLmDWW1cD 6a+S+tDho4KYYCv1uVAZ4AAoFVGoMW24OuadhdP4QLlqXVnuKZx74VJT/D3bbEpvrk 1Q9HH8e1saclw== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id C3AE6801D4; Tue, 12 Dec 2023 22:55:17 -0500 (EST) Received: from pastel (unknown [45.72.203.88]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 8A2E4120A2D; Tue, 12 Dec 2023 22:55:17 -0500 (EST) From: Stefan Monnier In-Reply-To: (Dmitry Gutov's message of "Wed, 13 Dec 2023 01:47:59 +0200") Message-ID: References: <878r919qfh.fsf@localhost> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> Date: Tue, 12 Dec 2023 22:55:15 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.075 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > That sounds attractive (ignoring all buffer-locals when let-bound?), > but I'm guessing there are enough valid use cases for this behavior. Yup, that would break lots of existing code, indeed, and in subtle enough ways that people would go crazy. Luckily, there's no "100% ideal" way buffer-local and scoped bindings can interact. All choices suck in some circumstances, so there's really no good reason to lament the current choice: it's no worse than the alternatives, AFAIK. Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Dec 2023 12:12:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: dmitry@gutov.dev, yantar92@posteo.net, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17024694665735 (code B ref 66117); Wed, 13 Dec 2023 12:12:01 +0000 Received: (at 66117) by debbugs.gnu.org; 13 Dec 2023 12:11:06 +0000 Received: from localhost ([127.0.0.1]:58357 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDO4w-0001UR-0e for submit@debbugs.gnu.org; Wed, 13 Dec 2023 07:11:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44792) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDO4s-0001Tv-9L for 66117@debbugs.gnu.org; Wed, 13 Dec 2023 07:11:03 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rDO4W-0000aU-AF; Wed, 13 Dec 2023 07:10:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=93JmQStzBXal304+GWe+3AxhVzoaBzftuGz1jkwBTWQ=; b=ZPA+oBohoEEU ROoA3KdqMGuQciqv/YtBHA5ZnM2pQFUpcZwWCnuLbZw9wIz5l/p92QWoVxxmXV/9Z3IZbZHDvnDtq Eg59k0AVdA2+PDgVPl/89SupgtQf8EMfQmDWr6B1ggHUqVrw/bRsoyzrine5aQJlTA/LErMwxRVsN dzQgb2Lp6U1l0+mlixl9zhaMaryMlU9/pV1HpeEL8sxG/0SRy1GQNfAmvgXTr+3NiIa0tr1XVy6w4 xvWzZXRtYBiZF5YiMSXMo5Vk+zG/MvtUCUvSO/0qUP0oItuqh6vqxwmcHxsaS6oyeobvYemlMp/I0 A/TB/lqzFLwLHqQS8L1n5w==; Date: Wed, 13 Dec 2023 14:10:35 +0200 Message-Id: <83plzas3pg.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Stefan Monnier on Tue, 12 Dec 2023 22:55:15 -0500) References: <878r919qfh.fsf@localhost> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stefan Monnier > Cc: Ihor Radchenko , Eli Zaretskii , > 66117@debbugs.gnu.org > Date: Tue, 12 Dec 2023 22:55:15 -0500 > > > That sounds attractive (ignoring all buffer-locals when let-bound?), > > but I'm guessing there are enough valid use cases for this behavior. > > Yup, that would break lots of existing code, indeed, and in subtle > enough ways that people would go crazy. > > Luckily, there's no "100% ideal" way buffer-local and scoped bindings > can interact. All choices suck in some circumstances, so there's really > no good reason to lament the current choice: it's no worse than > the alternatives, AFAIK. Btw, the title of this bug is about find-buffer-visiting, and AFAIR I proposed to have a primitive written in C that replaces find-buffer-visiting without a need to actually switch to each buffer (which is what triggers the costly rebinding of buffer-local variables like case-fold-search). So why we are talking about case-fold-search instead of solving the original problem? If we want to discuss the case-fold-search issue, IMO we should discuss it in a separate bug report. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Dec 2023 13:04:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, Stefan Monnier Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170247262321109 (code B ref 66117); Wed, 13 Dec 2023 13:04:02 +0000 Received: (at 66117) by debbugs.gnu.org; 13 Dec 2023 13:03:43 +0000 Received: from localhost ([127.0.0.1]:58402 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDOtq-0005UP-MG for submit@debbugs.gnu.org; Wed, 13 Dec 2023 08:03:42 -0500 Received: from mout02.posteo.de ([185.67.36.66]:58117) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDOtm-0005U7-GI for 66117@debbugs.gnu.org; Wed, 13 Dec 2023 08:03:40 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 618C3240101 for <66117@debbugs.gnu.org>; Wed, 13 Dec 2023 14:03:16 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702472596; bh=gPFmIvcbkI2ERLNfXpjxG91zVJH3cEYFBnOvdJWqy88=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=QKGV2mHMpsBk2mKAYKZwg+roclV9URw2zjiwuIG4TIXh9POHNN0t9T3pi/8XC3/2L 9bTTjAfOzh/2BDn0muEGaI9uOOq081nNYoMJXZXH71kIYAtjolDJZYkFF80ZtD2wBg T5AOxkjtgXmxL3+9pdqmR6GlYHx1dD31I9g2VvJ+sSaNIYuCZ8Da5T+bg2RNOzABYk aV4ZSkA+/Ja+kNQAWzjvsfIQK2P1q4M6TbJgoOR9IJ8soWDOq2f8JTWSkmJwUbYflS xZYyK/6Mxtx1WVLa3Nv7+CUvowGIl/M0YMZ+yK4gPZ4xFlmcRv1uGMHO5dYryxpHIg rpX696Wgwuklg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4SqwdZ6kv4z6tvb; Wed, 13 Dec 2023 14:03:14 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83plzas3pg.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> Date: Wed, 13 Dec 2023 13:06:06 +0000 Message-ID: <87r0jqw8u9.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: > Btw, the title of this bug is about find-buffer-visiting, and AFAIR I > proposed to have a primitive written in C that replaces > find-buffer-visiting without a need to actually switch to each buffer > (which is what triggers the costly rebinding of buffer-local variables > like case-fold-search). So why we are talking about case-fold-search > instead of solving the original problem? If we want to discuss the > case-fold-search issue, IMO we should discuss it in a separate bug > report. The bottlenecks now (after applying my patch for `find-buffer-visiting') are `abbreviate-file-name' and `inhibit-local-variables-p'; not the `find-buffer-visiting' per se (both are slow because they let-bind case-fold-search). AFAIU, it is very hard to rewrite them in C, as I explained in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#157 -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Dec 2023 13:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170247397523091 (code B ref 66117); Wed, 13 Dec 2023 13:27:02 +0000 Received: (at 66117) by debbugs.gnu.org; 13 Dec 2023 13:26:15 +0000 Received: from localhost ([127.0.0.1]:58408 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDPFe-00060M-TF for submit@debbugs.gnu.org; Wed, 13 Dec 2023 08:26:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:35682) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDPFb-000608-Im for 66117@debbugs.gnu.org; Wed, 13 Dec 2023 08:26:13 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rDPFF-0006qR-Sk; Wed, 13 Dec 2023 08:25:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=fgKE2oznL4QHkWiZSzlO/npo/v19VLBHsO3g8w+fjDk=; b=X2xBFtsDOs9C N75zKW/I/I9EO5uGSp3BGiFK7elYHoy33IEmHTzNnSxXgfNH2eO8POIopLJm0uuwBMetz49P1AsFh 3zDQ+2q/BCMCGCIUdwTwAgPiuB/8CHZ0VD887jFBoP1Df1rjlJy5Ibv5KHEX3OKKFZqEJZzBy2oJ3 +SpvBW+nsp3fCrzHE1Dkyoz7i5OZPoGxqPX5D3NfsFkhMFY2y55rjbHYnTRB8p4MXWHv8e20IZVTq RAmztNBNhi7/+H0f9FiqMma6P+by99U3JJ7aTlh3yTawWAx8CCXCbu4nDb0ebFfT2LZ/JzDn6c0Vw P4MmkAsghfIQLLx2JktOtQ==; Date: Wed, 13 Dec 2023 15:25:41 +0200 Message-Id: <83jzpis08a.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87r0jqw8u9.fsf@localhost> (message from Ihor Radchenko on Wed, 13 Dec 2023 13:06:06 +0000) References: <878r919qfh.fsf@localhost> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: Stefan Monnier , dmitry@gutov.dev, > 66117@debbugs.gnu.org > Date: Wed, 13 Dec 2023 13:06:06 +0000 > > Eli Zaretskii writes: > > > Btw, the title of this bug is about find-buffer-visiting, and AFAIR I > > proposed to have a primitive written in C that replaces > > find-buffer-visiting without a need to actually switch to each buffer > > (which is what triggers the costly rebinding of buffer-local variables > > like case-fold-search). So why we are talking about case-fold-search > > instead of solving the original problem? If we want to discuss the > > case-fold-search issue, IMO we should discuss it in a separate bug > > report. > > The bottlenecks now (after applying my patch for `find-buffer-visiting') > are `abbreviate-file-name' and `inhibit-local-variables-p'; not the > `find-buffer-visiting' per se (both are slow because they let-bind > case-fold-search). Then let's see about implementing in C of these two, or their subsets needed by find-buffer-visiting, because case-insensitive operations in C don't need to bind case-fold-search. Another possibility is to rewrite the parts of these two functions that need case-insensitive matching in a way that doesn't need to bind case-fold-search. For example, case-insensitive match against "abcd" using string-match can be replaced by a case-sensitive match against "[aA][bB][cC][dD]" or by a call to compare-strings. > AFAIU, it is very hard to rewrite them in C, as I explained in > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#157 The only explanation I see there is that they "recursively call other Elisp functions". Is there any other reason? My point is that by trying to speed-up let-binding of case-fold-search and similar variables you are trying to solve a much more general problem, and a much harder one at that. IME, if an idea for a solution leads to a more general and harder-to-solve problem than the original, then the idea should be dropped, and one should look for alternative ideas. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Dec 2023 13:41:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170247484524442 (code B ref 66117); Wed, 13 Dec 2023 13:41:01 +0000 Received: (at 66117) by debbugs.gnu.org; 13 Dec 2023 13:40:45 +0000 Received: from localhost ([127.0.0.1]:58427 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDPTg-0006M9-Tu for submit@debbugs.gnu.org; Wed, 13 Dec 2023 08:40:45 -0500 Received: from mout01.posteo.de ([185.67.36.65]:43559) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDPTb-0006Lp-Ns for 66117@debbugs.gnu.org; Wed, 13 Dec 2023 08:40:43 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 6DD5D240029 for <66117@debbugs.gnu.org>; Wed, 13 Dec 2023 14:40:17 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702474817; bh=Ahwa6LSvbh0ErGtV6yBQBq9JEjnD8HSnnLmfv6M8j/I=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=SeGWecSY0d/RivOlSBK+g+FxpWbqr99bv2qEty0w7klpMgoZmN+OTyjcg8PaDqK/n ahHcBgpys40I+3Ed71VfskI9GQHuQQlkSWAkz1BTFMGTlCzR5Od90nvuqTQlcPUqeH niObAyTHJIzHJjxn3uUMQxxpop56oz4ffQasZvT+8Psxo7IBm0db27sd96+JAxEh+l 4S3fjxUT42Bybccd1FurWS6l5xXTvAdzUmmnA87G9qszIz+ZE0b/FV4Zo+eRzGib6d oiAsOUCD8CJzSyNS4stDgRRu+EdgFcCDdqEVfecWBuWZTy4ZM8Z1SgcNnUQjyV943X MMBAMDB5FEK2A== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4SqxSJ4h9bz6txX; Wed, 13 Dec 2023 14:40:16 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83jzpis08a.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> Date: Wed, 13 Dec 2023 13:43:23 +0000 Message-ID: <87il52w744.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> AFAIU, it is very hard to rewrite them in C, as I explained in >> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#157 > > The only explanation I see there is that they "recursively call > other Elisp functions". Is there any other reason? The main problem I see is that `abbreviate-file-name' uses a number of variables, including customizations, defined in ELisp. I suspect that moving all of those to Elisp will neither be easy nor practical. > My point is that by trying to speed-up let-binding of case-fold-search > and similar variables you are trying to solve a much more general > problem, and a much harder one at that. IME, if an idea for a > solution leads to a more general and harder-to-solve problem than the > original, then the idea should be dropped, and one should look for > alternative ideas. The simplest solution would be what `ido-make-buffer-list-1' does: ;; Each call to ido-ignore-item-p LET-binds case-fold-search. ;; That is slow if there's no buffer-local binding available, ;; roughly O(number of buffers). This hack avoids it. (setq-local case-fold-search nil) But it will only solve specific problem with `find-buffer-visiting' and we can always go for it if we cannot find anything better. I thought that trying to solve a more general problem would benefit more code - let-binding case-fold-search is extremely common across packages. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Dec 2023 13:53:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170247552925990 (code B ref 66117); Wed, 13 Dec 2023 13:53:02 +0000 Received: (at 66117) by debbugs.gnu.org; 13 Dec 2023 13:52:09 +0000 Received: from localhost ([127.0.0.1]:58446 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDPei-0006l7-S1 for submit@debbugs.gnu.org; Wed, 13 Dec 2023 08:52:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54590) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDPeg-0006kY-ED for 66117@debbugs.gnu.org; Wed, 13 Dec 2023 08:52:07 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rDPeJ-0003fw-VA; Wed, 13 Dec 2023 08:51:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=hHPm8IP2VzNRE1/9ZoilHbYP4ueBMwb5gf1xUMsmE7c=; b=J1WRC1dm+e8U bLJ1WdFuXc6U1UDpUM6dXcEr05HigfUvSVAtRTMK9JQhHNaKusXyBfB3imLWthVXstoDOT0C0Dn5k MlDKu4W4uNC/AGu3/46MpTLS21xk1ECJ+BToXeAmmIh7CT6h7c3LuP5VgXA68FTRVnsdbyIm/XSPM 3DXtygWcWyk6PtRLCVrxzIkIa0e5JXSDWhqTCfcN/9vmTaOWtXobNRZugEhhtJ9xBVt3s8bSRsmLI whW6nPIAjh1yy70xG1t+nMg0b/jKNW0C70U4lpUxE9lns2/eQrvIbs1AO5OnbHft/MTJvxlepoUWt b5j4ImvrOyoLQLiBFt2IGQ==; Date: Wed, 13 Dec 2023 15:51:39 +0200 Message-Id: <83fs06rz10.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87il52w744.fsf@localhost> (message from Ihor Radchenko on Wed, 13 Dec 2023 13:43:23 +0000) References: <878r919qfh.fsf@localhost> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: monnier@iro.umontreal.ca, dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Wed, 13 Dec 2023 13:43:23 +0000 > > The simplest solution would be what `ido-make-buffer-list-1' does: > > ;; Each call to ido-ignore-item-p LET-binds case-fold-search. > ;; That is slow if there's no buffer-local binding available, > ;; roughly O(number of buffers). This hack avoids it. > (setq-local case-fold-search nil) > > But it will only solve specific problem with `find-buffer-visiting' and > we can always go for it if we cannot find anything better. Which other popular functions need to loop through all the buffers in Lisp? > I thought that trying to solve a more general problem would benefit more > code - let-binding case-fold-search is extremely common across packages. IMO, the general way you are trying to solve this makes this a very hard problem with potentially Emacs-wide implications. So we might as well look for easier alternatives. We could, for example, document the above trick, for those who need it. Or we could have a separate variable, which would not be a defcustom nor automatically buffer-local, and will have the same effect as case-fold-search on low-level searching and matching functions. Btw, are you aware that many case-insensitive operations in Emacs depend also on the case table in effect, which can also be buffer-local? So case-insensitive operations in Lisp can be unexpectedly affected by stuff like the current buffer. One more reason to use them as little as possible. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Dec 2023 14:14:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, Ihor Radchenko , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170247678828632 (code B ref 66117); Wed, 13 Dec 2023 14:14:02 +0000 Received: (at 66117) by debbugs.gnu.org; 13 Dec 2023 14:13:08 +0000 Received: from localhost ([127.0.0.1]:58463 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDPz1-0007Rh-Mx for submit@debbugs.gnu.org; Wed, 13 Dec 2023 09:13:07 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:17098) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDPyx-0007R0-9L for 66117@debbugs.gnu.org; Wed, 13 Dec 2023 09:13:06 -0500 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 197E580793; Wed, 13 Dec 2023 09:12:41 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702476760; bh=fQ/rKTC9Ju+MKnXQL7E3I6Jh9XPSxOjznEfk01l6NmQ=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=hQ3qBcfsQ/hQ1FGqh3e/cMXBEAwU0KwrstKClX+vwvsRCsjsHM4CVff70FcfgHw7K uyFOD2P9a7w2vExTNCa2hnLCJzEWRgBTvdJanDtlkeifs16L1TcpteTwFZ3iScUOon a4DhIM5Ub0vITngvWfbSVHcImqk8JS4lw0r+M22G7htFgiOPskWDqD0iGBg5olaz0U 915wEEwnCD6ShwAsVG3/wME5NwAyaUjyLZZEOYDNLVBhZ2eNhKkP2WEg6BfyIQGaYq 6Gm6XtLObhvf1KB9Bh2Uwo52LO0vxLh/JV/G1h7vWJFYuOLcAz5pxQ3i8/Uh8f5Iv0 jHbZW1Fvd5rLw== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 03A46801D4; Wed, 13 Dec 2023 09:12:40 -0500 (EST) Received: from pastel (unknown [45.72.203.88]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id CADBC1201E7; Wed, 13 Dec 2023 09:12:39 -0500 (EST) From: Stefan Monnier In-Reply-To: <83fs06rz10.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 13 Dec 2023 15:51:39 +0200") Message-ID: References: <878r919qfh.fsf@localhost> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> Date: Wed, 13 Dec 2023 09:12:39 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.072 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) >> But it will only solve specific problem with `find-buffer-visiting' and >> we can always go for it if we cannot find anything better. > Which other popular functions need to loop through all the buffers in > Lisp? Not sure why that matters. The performance problem comes from repeated uses of `(let ((case-fold-search ..)) ...)` where the repetition can be due to anything (not only enumerating buffers). The "loop through buffers" happens when entering and leaving the `let`, because it has to `set/unset` the corresponding filed of the `struct buffer` of all the buffers whose `case-fold-search` is "global". Making it a DEFVAR_LISP rather than a DEFVAR_PER_BUFFER will fix this problem (at the cost of making it less efficient to `set-buffer` when that variable has been made buffer-local). DEFVAR_PER_BUFFER should be for variables which are usually buffer-local, and apparently that's not the case of `case-fold-search`, so I'm starting to think that changing it from DEFVAR_PER_BUFFER to DEFVAR_LISP might be the better option. Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Dec 2023 14:30:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= , monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170247778330616 (code B ref 66117); Wed, 13 Dec 2023 14:30:02 +0000 Received: (at 66117) by debbugs.gnu.org; 13 Dec 2023 14:29:43 +0000 Received: from localhost ([127.0.0.1]:58477 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDQF4-0007xj-Up for submit@debbugs.gnu.org; Wed, 13 Dec 2023 09:29:43 -0500 Received: from mout01.posteo.de ([185.67.36.65]:58589) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDQF0-0007xO-EW for 66117@debbugs.gnu.org; Wed, 13 Dec 2023 09:29:41 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id E8D9C240027 for <66117@debbugs.gnu.org>; Wed, 13 Dec 2023 15:29:15 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702477755; bh=Sk1A/Tcpxz/5vkpeImrWe25OT6v2F4Ev5veDGg4jbdo=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=VWN4Q2nO15CDDEQ5gpHCZDjQ0BAh6kURuQTMUis5DSMobjinLn2q+o+P06FOCd6uE wi5CYWTJw3c82fdgRqDfx2nRU6awn9EmHuXx8C4nvxtg8xzjqTDRVmoJABC7m2EoD4 FQNYnxdGRxogEj2TiM3Ox98Nh3lR325KlYDlyWdefp7EWTG5PXvXHajjZuDMm0lHAU 9yFbsduzFPQ4m4cFkwbiX/x3RjG4bbE7SBd1R0gkkhQ30aMQf2W4iMJNomfp35HSLk Dwd0pi07caJdcZSUjtMKjDWzhGSlUrc2qKbnKFwW262CCsA6gy1OaHOeZZA/wPyN19 Rad5JPakHyxVA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4SqyXp54JQz6tvs; Wed, 13 Dec 2023 15:29:14 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83fs06rz10.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> Date: Wed, 13 Dec 2023 14:32:21 +0000 Message-ID: <87fs06w4ui.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> ;; Each call to ido-ignore-item-p LET-binds case-fold-search. >> ;; That is slow if there's no buffer-local binding available, >> ;; roughly O(number of buffers). This hack avoids it. >> (setq-local case-fold-search nil) >>=20 >> But it will only solve specific problem with `find-buffer-visiting' and >> we can always go for it if we cannot find anything better. > > Which other popular functions need to loop through all the buffers in > Lisp? Org mode... When activating the major mode, Org binds case-fold-search many times - for each Org buffer being opened. The same with happen for other major modes that let-bind case-fold-search during initialization. Also, various multi-buffer search functions, like multi-occur, tag search (etags.el), fileloop.el. >> I thought that trying to solve a more general problem would benefit more >> code - let-binding case-fold-search is extremely common across packages. > > IMO, the general way you are trying to solve this makes this a very > hard problem with potentially Emacs-wide implications. So we might as > well look for easier alternatives. The solution with Emacs-wide implications is not what I proposed, if you are talking about breaking changes in let. What I proposed might slow thing down because of more complex BVAR, but that is yet to be proven. I want to try first before giving up. > We could, for example, document the above trick, for those who need > it. > > Or we could have a separate variable, which would not be a defcustom > nor automatically buffer-local, and will have the same effect as > case-fold-search on low-level searching and matching functions. That's indeed another option. Also, we may introduce something similar to `with-syntax-table' macro - `with-case-fold' and then throw a warning if case-fold-search is let-bound directly. > Btw, are you aware that many case-insensitive operations in Emacs > depend also on the case table in effect, which can also be > buffer-local? So case-insensitive operations in Lisp can be > unexpectedly affected by stuff like the current buffer. One more > reason to use them as little as possible. ... and syntax-table can be set in text properties; so not just affected by current buffer - also by position in buffer. Yet, it is sometimes necessary and there is no simple way around available. In the past, me and Mattias Engdeg=C3=A5rd even discussed a possibility to incorporate case-fold-search flag into regexps directly (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D63225#74) That way, things would be less affected by the buffer-locals. --=20 Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Dec 2023 14:59:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: dmitry@gutov.dev, yantar92@posteo.net, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17024795232366 (code B ref 66117); Wed, 13 Dec 2023 14:59:02 +0000 Received: (at 66117) by debbugs.gnu.org; 13 Dec 2023 14:58:43 +0000 Received: from localhost ([127.0.0.1]:59527 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDQh8-0000c5-HO for submit@debbugs.gnu.org; Wed, 13 Dec 2023 09:58:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55262) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDQh3-0000bo-7T for 66117@debbugs.gnu.org; Wed, 13 Dec 2023 09:58:40 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rDQgg-0005Ae-Tz; Wed, 13 Dec 2023 09:58:14 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=VIOrqM7DNbh1YHsCTEKXwk3fWcL9DcaClghWfp3Mu48=; b=M5Kf0DibfyXH rXBaMAArbQT/+N1sTDRoODUX0NR5uP1YQXVWhy3vkN3uGiYz3NTuhvdjpdIgitNy1tP0YoOnn14rK UDvIx9vc1+gWYSCcB+ZdbMsrHVcE479eWfJL1us/GkljKS2rGUL1fJEUifBE5tgoi++SKqggYXthr JKIRrEQZyE42XHAGviyWwSJzqLVLwFdplkNO7cVSoXr4kgMIIoEsFE4wBIdm1P4vveHLWO7b85lqD /jtKXs1WVFccUZsEmDXX0LKgkapSEoKU9dPIcaDwBQrNA/haVk6l/Bzutj9o9yzPfjnoIqrxvlMy2 X0CR4Vz8dZZgSuiqIBPukg==; Date: Wed, 13 Dec 2023 16:58:09 +0200 Message-Id: <83edfqrvy6.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Stefan Monnier on Wed, 13 Dec 2023 09:12:39 -0500) References: <878r919qfh.fsf@localhost> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stefan Monnier > Cc: Ihor Radchenko , dmitry@gutov.dev, > 66117@debbugs.gnu.org > Date: Wed, 13 Dec 2023 09:12:39 -0500 > > >> But it will only solve specific problem with `find-buffer-visiting' and > >> we can always go for it if we cannot find anything better. > > Which other popular functions need to loop through all the buffers in > > Lisp? > > Not sure why that matters. Because if using the setq-local trick solves this problem, we could do it in those other places as well. > The performance problem comes from repeated > uses of `(let ((case-fold-search ..)) ...)` where the repetition can be > due to anything (not only enumerating buffers). > > The "loop through buffers" happens when entering and leaving the `let`, > because it has to `set/unset` the corresponding filed of the `struct > buffer` of all the buffers whose `case-fold-search` is "global". That's not the loop through buffers I had in mind. I meant the loop in find-buffer-visiting. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Dec 2023 15:24:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17024809964646 (code B ref 66117); Wed, 13 Dec 2023 15:24:02 +0000 Received: (at 66117) by debbugs.gnu.org; 13 Dec 2023 15:23:16 +0000 Received: from localhost ([127.0.0.1]:59541 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDR4t-0001Cs-Fm for submit@debbugs.gnu.org; Wed, 13 Dec 2023 10:23:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56314) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDR4p-0001Cd-3m for 66117@debbugs.gnu.org; Wed, 13 Dec 2023 10:23:13 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rDR4S-0001cD-07; Wed, 13 Dec 2023 10:22:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=X7q0T8ox92o68ZUDBwTG0j4hrGOB2/vLNYZ3D5TpBhk=; b=U+g4j5+sJk0vtk9qKhqA 8K8MDb+LhKpmpAZne4ycF8UvJVmMLB0wmDHZ2AK8auc4PkhNjTBwlSdXDsktPAAhWiErLXB0GZmVa g+wlDn/0w5JCg0junoTVKD//wnEgQk0En7Sm1n+cXJPyctVdk0L6EQYbmaKBMjLHA2uhCn1YDRcbh o0SuGj4145TSlTyL61z4GiVUTrbk+yQQKlYJc3yMZGZMXJE1Fdwu/CF+tOVlVz5RUWsO61OGN526P DnQPJxyr9WACegMiKcPYyK0dCvuSUYzgQIbLMnHIsaFw4vW09dw4xKp1AHDqT01g43S5ogCjRu2rH v/d/2ZCFSXI9aw==; Date: Wed, 13 Dec 2023 17:22:42 +0200 Message-Id: <83bkaurut9.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87fs06w4ui.fsf@localhost> (message from Ihor Radchenko on Wed, 13 Dec 2023 14:32:21 +0000) References: <878r919qfh.fsf@localhost> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: monnier@iro.umontreal.ca, dmitry@gutov.dev, 66117@debbugs.gnu.org, > Mattias Engdegård > Date: Wed, 13 Dec 2023 14:32:21 +0000 > > > Btw, are you aware that many case-insensitive operations in Emacs > > depend also on the case table in effect, which can also be > > buffer-local? So case-insensitive operations in Lisp can be > > unexpectedly affected by stuff like the current buffer. One more > > reason to use them as little as possible. > > ... and syntax-table can be set in text properties; so not just affected > by current buffer - also by position in buffer. If you search the buffer text, then having syntax-table on that text is less surprising: after all, it only affects the text which has this property. But buffer-local case-table is much more subtle: it is in effect even if you match strings, not portions of buffer text, and only because some buffer _happens_ to be the current buffer when, say, string-match is called. > In the past, me and Mattias Engdegård even discussed a possibility to > incorporate case-fold-search flag into regexps directly > (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=63225#74) > That way, things would be less affected by the buffer-locals. Indeed. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 14:18:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170256344028789 (code B ref 66117); Thu, 14 Dec 2023 14:18:02 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 14:17:20 +0000 Received: from localhost ([127.0.0.1]:49055 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDmWd-0007UH-Rm for submit@debbugs.gnu.org; Thu, 14 Dec 2023 09:17:20 -0500 Received: from mout02.posteo.de ([185.67.36.66]:40579) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDmWc-0007U2-4c for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 09:17:18 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id C0405240101 for <66117@debbugs.gnu.org>; Thu, 14 Dec 2023 15:17:12 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702563432; bh=LeLuqsrjSwBi/LQEZdrN6HrlRUFer7SImYcE6Jj3Bgo=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=j7gOeBVQgPL7gMUHxzLOG6FXOMhbNRqVsvi8ENUFerH/yssNg1dGLcH/8KNr1o0vD cCHN7oIiIjMJQDq/bny3qe34UEWnwhWWN8P0mPK+EhVkIBEu1kBBTLPB3CB4l69YvC bqGUXmXfM8wOfl2YNxEowVy9U25N1YdbbCjLS2Pv2+zBjDVZ37utfLvU3MzePCtXgf V1CFTilBhqMljuo1hchJRO3DorZmZOSBGj41Iym0YBZRsnSWNHlIfLmevFAUynufd0 XfXYkRiZYyWk1x9WCVx4o5+rJJ+S5NQsKiCzsZvSBLjRx+rnE/ab46ZMgKNLCgux5O fw4ixHdaov2Vw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4SrZDR48GFz6txd; Thu, 14 Dec 2023 15:17:11 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83bkaurut9.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> Date: Thu, 14 Dec 2023 14:20:18 +0000 Message-ID: <87o7esq319.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> ... and syntax-table can be set in text properties; so not just affected >> by current buffer - also by position in buffer. > > If you search the buffer text, then having syntax-table on that text > is less surprising: after all, it only affects the text which has this > property. > > But buffer-local case-table is much more subtle: it is in effect even > if you match strings, not portions of buffer text, and only because > some buffer _happens_ to be the current buffer when, say, string-match > is called. Good point. I did not even think about this subtlety. Then, I think that having a global variable like `case-fold-search-override' could make things more predictable if we advertise it for let-bindings. Also, it is much easier to implement. WDYT? >> In the past, me and Mattias Engdeg=C3=A5rd even discussed a possibility = to >> incorporate case-fold-search flag into regexps directly >> (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D63225#74) >> That way, things would be less affected by the buffer-locals. > > Indeed. There are multiple ways to implement this. Though I think that this part of the discussion should continue in bug#63225 or even a separate feature request. --=20 Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 16:42:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17025720685793 (code B ref 66117); Thu, 14 Dec 2023 16:42:02 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 16:41:08 +0000 Received: from localhost ([127.0.0.1]:50815 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDolo-0001VN-53 for submit@debbugs.gnu.org; Thu, 14 Dec 2023 11:41:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50298) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDoll-0001Ub-8k for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 11:41:06 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rDolb-0001Oy-7u; Thu, 14 Dec 2023 11:40:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=alTatXoeDNGZprMj5/FrW2/bpvNE4pmV0mMLIBsfd2k=; b=PNsNHJytmLsx 0NVHrIrKppjSLueUKkbNRQdB6Gm1iVGWti0Ng44iN0sAPQMAP0AdtxJAFSyavvO7FQBcVf5NVEdAl Cb0lpglRAAYJRtnNhRUizBzSVCHVwSotLc2G3QmjLTHv3lXZk2W514YhlM+/Xi8X3IjJVAm1dfJYA bWznQgryr2+CleM76xIbuM0OPfRj3P5xfbOp+6d8804baxQLZQwa55l77JW+TnUkHqze2fKgNOPKO T4i9Hk2oKRmy64vCjU/7cxgYN1GcCtKuQRpsxK7H2WWjyvJCRm9BERg6l8mcPVMyLddrRqDdizmUp vvucBoBhuyNy2q7nCefwwA==; Date: Thu, 14 Dec 2023 18:40:52 +0200 Message-Id: <83bkasrb3f.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87o7esq319.fsf@localhost> (message from Ihor Radchenko on Thu, 14 Dec 2023 14:20:18 +0000) References: <878r919qfh.fsf@localhost> <87v8bhxzcu.fsf@localhost> <83y1gdxws8.fsf@gnu.org> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: monnier@iro.umontreal.ca, dmitry@gutov.dev, 66117@debbugs.gnu.org, > mattias.engdegard@gmail.com > Date: Thu, 14 Dec 2023 14:20:18 +0000 > > Then, I think that having a global variable like > `case-fold-search-override' could make things more predictable if we > advertise it for let-bindings. > Also, it is much easier to implement. > WDYT? I'd choose a different name (since this is supposed to affect any matching, not just search). And then we will need to decide which case-equivalence table this will use. The current default is affected by language-environment, so it might not be a good idea (it causes known problems in Turkish locales, for example). Perhaps we need a new standard kind of table for that. But for starters, a new Lisp-only global variable should be good, I think. Stefan, any comments? From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 17:08:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, Ihor Radchenko , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170257364328330 (code B ref 66117); Thu, 14 Dec 2023 17:08:02 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 17:07:23 +0000 Received: from localhost ([127.0.0.1]:50837 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDpBC-0007Ms-LR for submit@debbugs.gnu.org; Thu, 14 Dec 2023 12:07:22 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:41192) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDpBA-0007Md-H3 for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 12:07:21 -0500 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 6784B80801; Thu, 14 Dec 2023 12:07:15 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702573634; bh=C6m1Ml5kqcd58JgtU+ml9/Xje76LinQeOoT8Rlp9Nlc=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=AK1zckBCnbnFzFMUfotAzKvFy1G6g8EF+aFq0FT4Co7bXqWFH7W4BbSfw7ZX0xSgY QZSaKkGjmTsUwCHZML3TeV3sqRlo1w/JyQiWLzFmq4WD2tqXfgVpFXvstmG3Pz0VFn iGqI8oK3fUbVjtjCAI3NmVpXS41YzvFswCYe4Rk+WqM66gn0tuh/hAUE0kulP1k2Wz w37AepOWhzybPlcAGDLWigD53Abx08qeDXGyqlw0IHKsi7y3OvUC/HXa+fMmhBjKcG 2ZM0SpxA9p1f363IiDb+Id110VcEzNBavsuDT0qJMnmTsTgUSo6wihcHTnOAjoOsus nsPVn3GnO2kmA== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 4860C807A7; Thu, 14 Dec 2023 12:07:14 -0500 (EST) Received: from alfajor (unknown [23.233.149.155]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 1FB9D120D7F; Thu, 14 Dec 2023 12:07:14 -0500 (EST) From: Stefan Monnier In-Reply-To: <83bkasrb3f.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 14 Dec 2023 18:40:52 +0200") Message-ID: References: <878r919qfh.fsf@localhost> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> Date: Thu, 14 Dec 2023 12:07:13 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > But for starters, a new Lisp-only global variable should be good, I > think. Stefan, any comments? I must say I don't understand the reasoning behind this. What would it do different from `case-fold-search`? Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 17:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: dmitry@gutov.dev, yantar92@posteo.net, mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170257409929172 (code B ref 66117); Thu, 14 Dec 2023 17:15:02 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 17:14:59 +0000 Received: from localhost ([127.0.0.1]:50849 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDpIZ-0007aS-39 for submit@debbugs.gnu.org; Thu, 14 Dec 2023 12:14:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:59438) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDpIW-0007aA-Pq for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 12:14:58 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rDpIP-0007MG-Mm; Thu, 14 Dec 2023 12:14:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=EigAW3RYZrgQiwzDlLgmslleqmaToMHVIYn6AqbpvPQ=; b=H1PCuLSaJDab w315lTRAjPbigKj0Lav8gQ7hNFn/iiqfwu32RL2yvdnW59KtFgnNnI6/Y87Tfxvo142VmsVii00hR huUU5ZaK+6RoqCmtCr084OxRKtoMEM//zp6NO22Jo9URQy2EUw3k2CaSzcvK/ds8NBXPK7jiYNbFs VlznJhGZBV2isMwWexYY45vwW8K/w9cDZZcaw8wZ+ALGaQfnTNUPgD4TC2DmhMHTFxHjm1vXQdSH3 +kmGF2x97CPf2ydGiGs/g7/S5Q2MYKR7L7OAG8hntaGEpZrd99ew0uSEGYMOcI4CGUuTY1jHRwKW3 kjfL9SRPL4hXCJeCasPC1g==; Date: Thu, 14 Dec 2023 19:14:48 +0200 Message-Id: <83wmtgpuyf.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Stefan Monnier on Thu, 14 Dec 2023 12:07:13 -0500) References: <878r919qfh.fsf@localhost> <87jzrwm7ul.fsf@localhost> <87h6n0m781.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stefan Monnier > Cc: Ihor Radchenko , dmitry@gutov.dev, > 66117@debbugs.gnu.org, mattias.engdegard@gmail.com > Date: Thu, 14 Dec 2023 12:07:13 -0500 > > > But for starters, a new Lisp-only global variable should be good, I > > think. Stefan, any comments? > > I must say I don't understand the reasoning behind this. > What would it do different from `case-fold-search`? It won't be buffer-local-if-changed, so binding it will not be costly. It also won't be a defcustom, so let-binding it will not step on the user's preferences. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 18:13:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, yantar92@posteo.net, mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170257753010507 (code B ref 66117); Thu, 14 Dec 2023 18:13:01 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 18:12:10 +0000 Received: from localhost ([127.0.0.1]:50888 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDqBu-0002jP-9O for submit@debbugs.gnu.org; Thu, 14 Dec 2023 13:12:10 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:44800) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDqBp-0002ii-Vk for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 13:12:09 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 3820E100068; Thu, 14 Dec 2023 13:12:01 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702577520; bh=AqRav1SRRqV3e6NcQJPTYVkzvTfkA76nxHNfpvFgzWM=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=RFVralrsm3Zsy2PAuxO5O2LDhbFg8k5d+nIId8A64CyMFjewFP/bKxZdCMCndBM2T 2ngWTuf3v7PUsGDDBev/wBhSB+gujVx6aYu8CCxB4VG443cCwwM/MvgxodXf7TLR4u Lfnohb5o7/px0QGg0ljVktCcRePHJ8oR6k1CcqTXRKf2O4AWUIlHhruWR7TBsVwGif HRqF1G/uFwgAbVXEPS7FoKobDmp5AuQi2YNylqgMHsPojPot5PkQLnDI9HMVSSfgiw j3cJXRWiphbYt7xw+33EbjFw5ksvT1EZ900wekXm/g4rp3gRvzAb2ioYUOdReX77LZ iWgT+mW+Uw+6w== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 29C28100033; Thu, 14 Dec 2023 13:12:00 -0500 (EST) Received: from pastel (unknown [45.72.203.88]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id ED47F120838; Thu, 14 Dec 2023 13:11:59 -0500 (EST) From: Stefan Monnier In-Reply-To: <83wmtgpuyf.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 14 Dec 2023 19:14:48 +0200") Message-ID: References: <878r919qfh.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> Date: Thu, 14 Dec 2023 13:11:58 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.111 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) >> > But for starters, a new Lisp-only global variable should be good, I >> > think. Stefan, any comments? >> >> I must say I don't understand the reasoning behind this. >> What would it do different from `case-fold-search`? > > It won't be buffer-local-if-changed, so binding it will not be costly. As mentioned elsewhere in this bug-report we can make `case-fold-search` into a `DEFVAR_LISP`: it would have no visible impact to ELisp and would avoid the costly let-bindings. > It also won't be a defcustom, so let-binding it will not step on the > user's preferences. Hmm... when/where do existing let-bindings of `case-fold-search` step on user settings of that var? IME the problem is rather the opposite: most calls to search functions don't explicitly let-bind `case-fold-search` and instead rely naively on the default value and are thus susceptible to bugs if/when someone sets the custom var (globally or buffer-locally). Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 18:28:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170257842621943 (code B ref 66117); Thu, 14 Dec 2023 18:28:01 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 18:27:06 +0000 Received: from localhost ([127.0.0.1]:50898 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDqQM-0005hr-7L for submit@debbugs.gnu.org; Thu, 14 Dec 2023 13:27:06 -0500 Received: from mout02.posteo.de ([185.67.36.66]:37737) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDqQK-0005hG-3x for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 13:27:05 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 938E3240104 for <66117@debbugs.gnu.org>; Thu, 14 Dec 2023 19:26:58 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702578418; bh=MkMvN1ooXTnwrxwIXKkRIfWwTIQ+Y1uHBVYIJhN2n5U=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=adWlPpSr2Z0fPMOvoZbXz/G/PATTXlGuuFlCGs0SNOV/PzUQsJbLDywTQm4tUT3Kh GJuLP1Rz3dBo7tVJMqvvovSbUDfsGVqh/yqhKihu6iooNmWlKQlcnLqV04j1/G0CeB DyDnUdTaZ9v6eVtdF3eC0eGhq9f4MJPe2QAvxuwJ6mGo/JvcmIPlx+KSepioJJmnGj ean9a2KC6xIMA8Pc3AyVFIVV2BBmBjDXsV3xeKwWIlfBsJKCgvz89mg58tWdFcqCgb fCjKBKTDVh35U20l5BUxCjp/w9mBY84YKanyv0hilykcWJcO9aDSElz1BzX03JR+X/ CsrFHVC6w8BoA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4Srgmd39vxz9rxB; Thu, 14 Dec 2023 19:26:57 +0100 (CET) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> Date: Thu, 14 Dec 2023 18:30:00 +0000 Message-ID: <871qboprh3.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Stefan Monnier writes: >> It won't be buffer-local-if-changed, so binding it will not be costly. > > As mentioned elsewhere in this bug-report we can make `case-fold-search` > into a `DEFVAR_LISP`: it would have no visible impact to ELisp and would > avoid the costly let-bindings. Wouldn't DEFVAR_LISP break major modes that do (setq case-fold-search ...)? -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 18:43:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17025793291087 (code B ref 66117); Thu, 14 Dec 2023 18:43:01 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 18:42:09 +0000 Received: from localhost ([127.0.0.1]:50918 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDqeu-0000HT-QH for submit@debbugs.gnu.org; Thu, 14 Dec 2023 13:42:09 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:51295) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDqet-0000HE-Gl for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 13:42:07 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 3EA08441994; Thu, 14 Dec 2023 13:42:02 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702579320; bh=sSo8eFgittNCwNB9Q7uXo8NnMt2xwadBd8KYTtYBbCU=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=ZH4DYPGR/qgQA2pjdqI1ke5LFqVmR73ULyq3mvoGdo5Rlu0StKBxSMefPFzAOllOw 7wMsRbDffxg7Jnl8fAiEP8MpkKV75VkkrflZ9MScao94q4rstx0cCCx4fGCxE8kC07 tlruAbufHMUfbHbWZubKA2jL8dfboqlZbJZe+Ei/LrM4I6KxY2Z1LWJVUrye95KkF6 h22YVVgLcfPR6EkOyhhjmfBlG0eOxMJs9AggZPhHx40krQii9fa6VVP043y5M423zE YLPRGQvs+SqINCvThIYXAKamqzS2bAuHjqsQMyrxk4jVyX+7GbXLGUBh6RcWqrF1a0 I5OJwXZjEsnCA== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id E4A7F44197D; Thu, 14 Dec 2023 13:42:00 -0500 (EST) Received: from pastel (69-196-162-59.dsl.teksavvy.com [69.196.162.59]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 6A85E120B3E; Thu, 14 Dec 2023 13:42:00 -0500 (EST) From: Stefan Monnier In-Reply-To: <871qboprh3.fsf@localhost> (Ihor Radchenko's message of "Thu, 14 Dec 2023 18:30:00 +0000") Message-ID: References: <878r919qfh.fsf@localhost> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> Date: Thu, 14 Dec 2023 13:41:59 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL 0.005 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) >>> It won't be buffer-local-if-changed, so binding it will not be costly. >> As mentioned elsewhere in this bug-report we can make `case-fold-search` >> into a `DEFVAR_LISP`: it would have no visible impact to ELisp and would >> avoid the costly let-bindings. > Wouldn't DEFVAR_LISP break major modes that do (setq case-fold-search ...)? No, it makes no difference to Lisp. It only changes the implementation strategy: DEFVAR_LISP stores the value in a global C variable (which thus requires more processing when the var is buffer-local, more specifically updating the C var when we `set-buffer`), whereas DEFVAR_PER_BUFFER stores the value inside the buffer object (which thus requires more processing when the var is *not* buffer-local since the global value is duplicated in all the buffers where it's not made buffer-local). DEFVAR_PER_BUFFER are thus the better option for vars which are set buffer-locally in most buffers whereas DEFVAR_LISP is the better option for vars which are made buffer-local only in a few buffers. Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 18:50:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: dmitry@gutov.dev, yantar92@posteo.net, mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170257979912061 (code B ref 66117); Thu, 14 Dec 2023 18:50:02 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 18:49:59 +0000 Received: from localhost ([127.0.0.1]:50928 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDqmV-00038S-0O for submit@debbugs.gnu.org; Thu, 14 Dec 2023 13:49:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36806) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDqmT-00038C-My for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 13:49:58 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rDqmN-00067s-Ey; Thu, 14 Dec 2023 13:49:51 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=diE2bqzyZ0vtCgQjaCjUMa8c4yIlFCBAVoVaqjcWLkg=; b=UwhNAZ7qyQCu s6kTEdCyrdTMQVsxOHRunh5tbrG+vJjQOwGCBye5FdtiWKmBOvoxuLIGwXaiIhfX3jPm4LSoygR9c sYKr+Z02bmLI07/IA+jaCkDecs9BSKPi+tQ+2ObhBd0gce8zNhf4+1mzdurJ6Oor0n1iuetv3Bzr7 3M/C+S+NBSNdx04KAclSEH3Ktn+FWnFm8H8aQCWzrOQIYl85fatEp6NTtM+z63wMH4vxW4yd8rjIf LXzGeqHnuw5t44ktMblW8naSy/S2o2UbRQYx1zDrio4V8uRv6TVV2VoZkpMNPaPX8nTUu5tBIYCCY CJVfNbdXV5BUCKZoLhPhYA==; Date: Thu, 14 Dec 2023 20:49:50 +0200 Message-Id: <83r0jopqk1.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Stefan Monnier on Thu, 14 Dec 2023 13:11:58 -0500) References: <878r919qfh.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stefan Monnier > Cc: yantar92@posteo.net, dmitry@gutov.dev, 66117@debbugs.gnu.org, > mattias.engdegard@gmail.com > Date: Thu, 14 Dec 2023 13:11:58 -0500 > > >> > But for starters, a new Lisp-only global variable should be good, I > >> > think. Stefan, any comments? > >> > >> I must say I don't understand the reasoning behind this. > >> What would it do different from `case-fold-search`? > > > > It won't be buffer-local-if-changed, so binding it will not be costly. > > As mentioned elsewhere in this bug-report we can make `case-fold-search` > into a `DEFVAR_LISP`: it would have no visible impact to ELisp and would > avoid the costly let-bindings. Didn't we just agree that would be a breaking change? > > It also won't be a defcustom, so let-binding it will not step on the > > user's preferences. > > Hmm... when/where do existing let-bindings of `case-fold-search` step on > user settings of that var? Each time we let-bind it in code used in searching and/or matching commands. > IME the problem is rather the opposite: most calls to search functions > don't explicitly let-bind `case-fold-search` and instead rely naively on > the default value and are thus susceptible to bugs if/when someone sets > the custom var (globally or buffer-locally). I don't see that as a bug: the user said he/she wants the search to be case-insensitive, so they should get what they asked for. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 19:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170258035913037 (code B ref 66117); Thu, 14 Dec 2023 19:00:02 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 18:59:19 +0000 Received: from localhost ([127.0.0.1]:50933 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDqvX-0003OD-5U for submit@debbugs.gnu.org; Thu, 14 Dec 2023 13:59:19 -0500 Received: from mout01.posteo.de ([185.67.36.65]:48005) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDqvV-0003Nw-Rt for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 13:59:18 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 96B1B24002A for <66117@debbugs.gnu.org>; Thu, 14 Dec 2023 19:59:12 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702580352; bh=FPNjHC7w8Edpp2cEEsZftfjZ/4+1o/7wpoI7nKZe/Ng=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=F+Y0/IuawhL3EnS2iS7Q1Dbz0Np/OoLQL3y1EV3Ux5pOb0QMODG7QfSlrfvtI6KEM t3C6dpBa8BXR3y/lxCL9v8311fakFrdXE486YvSSWpDZK3aKDDS3QG3mWyQ2opHiEc VDa8V9VOGvP1BAPJrEgcOUSMUIReJSbQF7dG3EXDA5gn4Wo91WmkjsjYkbFTuzGhko 33XSm3hUV0VqK1sXrIzn1KUs+yJCRhqg3e58T5bHn7+G1Yq+Blqh1wImO30xozhjnQ ekqY7sGFlX2EECby1KHBSCHcy+osf3ZhQEZYyEcbeb1StfPzX/Mx1xzP0CsIWnKew1 aGOYvQFbfLVMg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4SrhTq0PPyz6txS; Thu, 14 Dec 2023 19:59:10 +0100 (CET) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> Date: Thu, 14 Dec 2023 19:02:13 +0000 Message-ID: <87y1dwobey.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Stefan Monnier writes: >>>> It won't be buffer-local-if-changed, so binding it will not be costly. >>> As mentioned elsewhere in this bug-report we can make `case-fold-search` >>> into a `DEFVAR_LISP`: it would have no visible impact to ELisp and would >>> avoid the costly let-bindings. >> Wouldn't DEFVAR_LISP break major modes that do (setq case-fold-search ...)? > > No, it makes no difference to Lisp. It only changes the implementation > strategy: DEFVAR_LISP stores the value in a global C variable (which > thus requires more processing when the var is buffer-local, more > specifically updating the C var when we `set-buffer`), whereas > DEFVAR_PER_BUFFER stores the value inside the buffer object (which > thus requires more processing when the var is *not* buffer-local since > the global value is duplicated in all the buffers where it's not made > buffer-local). Do I understand correctly that what is needed to implement your suggestion is 1. Remove case_fold_search_ slot from buffer objects 2. Use DEFVAR_LISP for case-fold-search 3. Declare case-fold-search buffer-local 4. Replace BVAR(...) references in C with Vcase_fold_search ? -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 19:13:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, Stefan Monnier Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170258113224220 (code B ref 66117); Thu, 14 Dec 2023 19:13:02 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 19:12:12 +0000 Received: from localhost ([127.0.0.1]:50939 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDr7z-0006IZ-KM for submit@debbugs.gnu.org; Thu, 14 Dec 2023 14:12:11 -0500 Received: from mout02.posteo.de ([185.67.36.66]:60349) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDr7x-0006IG-7E for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 14:12:10 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 47AD0240101 for <66117@debbugs.gnu.org>; Thu, 14 Dec 2023 20:12:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702581123; bh=mog88epuOh24C79v7Ytf6yHrmYEm+FoiCNWBfLw74Js=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=bh9Rb0+ZA5C1yhqo3SeM/0I73Td8VIxgaDIvcmkqBOBFy0eM8wLYllkvw+qx9Lci7 T5hnVZORvJ66bQxIlzT1OKfd8YcoCTz9XKDP8OB1qVSOe57iuaAaBp03V68VVClZml Nu63r/+CRMZwqZta7iH1+UjaOqm64O+EYkev1CCaze6fYBIFk1mzbe7Lt4sk7qI0la bEkREb6sHz/F/IB0LGF24scpjddSD851yQQwRKYo7y3+35CmtIOJnWCRUwNPSpQoZc FKDpdYglVbxB5rBWBm36Q+qexh5ggs3QAN6eu/M641iegl/m7HMsP0lmm7aokNw/Nk dxAjkt0ozzxVw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4Srhmd6b2zz9rxH; Thu, 14 Dec 2023 20:12:01 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83wmtgpuyf.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <87v8935wik.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> Date: Thu, 14 Dec 2023 19:15:08 +0000 Message-ID: <87r0jooatf.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> I must say I don't understand the reasoning behind this. >> What would it do different from `case-fold-search`? > > It won't be buffer-local-if-changed, so binding it will not be costly. > It also won't be a defcustom, so let-binding it will not step on the > user's preferences. In my mind, another benefit is that the new variable will not be affected by buffer-local values - (let (case-fold-search-override value) ...) will be guaranteed to use VALUE everywhere, even if current buffer is changed. This will make the case I described in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#208 more predictable (and, since it is a new variable, will not break any existing code). -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 19:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170258262414074 (code B ref 66117); Thu, 14 Dec 2023 19:38:02 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 19:37:04 +0000 Received: from localhost ([127.0.0.1]:50949 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDrW4-0003ew-9C for submit@debbugs.gnu.org; Thu, 14 Dec 2023 14:37:04 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:51525) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDrW2-0003eO-LK for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 14:37:03 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id AB5764419A7; Thu, 14 Dec 2023 14:36:57 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702582616; bh=+lu/xrX1KXmTukwawKMypbE/iWrgDWOW1+7rpg3PYuI=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=Cab2kwAwUv2Qt/e1O5i+BnAGwFjCa115P0239pNv03VmjGUhAW8kf4iWWAYiCGk+B oU88qSNHAvTOBC9w2yu50CgNttb/bt5Gl3Fbn0O51QxzrgwKFH28H9hnFcgmzr0vWW H3936bF2hQON0zkdg0N+bLrCeuMDTrKrsK3TfW1skuxlHQ0802ZBIGLTSiCCBNFQNW 2Ay4I0SsXXWx8ez0OfujUc2kMphsP/Ehn21JJ8UzJRHujAgTN6tW/G1pbOcdbtU9JB Fs9nrnxZlyj/iiuwWH+T/qT+qZEUUH/jHDP3NFoOj3u960HdYeKYR5Si2BErqvL9GC HhCeH2FZXthuw== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 1BA8B4418ED; Thu, 14 Dec 2023 14:36:56 -0500 (EST) Received: from pastel (65-110-221-238.cpe.pppoe.ca [65.110.221.238]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id D0594120397; Thu, 14 Dec 2023 14:36:55 -0500 (EST) From: Stefan Monnier In-Reply-To: <87y1dwobey.fsf@localhost> (Ihor Radchenko's message of "Thu, 14 Dec 2023 19:02:13 +0000") Message-ID: References: <878r919qfh.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> Date: Thu, 14 Dec 2023 14:36:55 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.833 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) >>>>> It won't be buffer-local-if-changed, so binding it will not be costly. >>>> As mentioned elsewhere in this bug-report we can make `case-fold-search` >>>> into a `DEFVAR_LISP`: it would have no visible impact to ELisp and would >>>> avoid the costly let-bindings. >>> Wouldn't DEFVAR_LISP break major modes that do (setq case-fold-search ...)? >> >> No, it makes no difference to Lisp. It only changes the implementation >> strategy: DEFVAR_LISP stores the value in a global C variable (which >> thus requires more processing when the var is buffer-local, more >> specifically updating the C var when we `set-buffer`), whereas >> DEFVAR_PER_BUFFER stores the value inside the buffer object (which >> thus requires more processing when the var is *not* buffer-local since >> the global value is duplicated in all the buffers where it's not made >> buffer-local). > > Do I understand correctly that what is needed to implement your > suggestion is > > 1. Remove case_fold_search_ slot from buffer objects > 2. Use DEFVAR_LISP for case-fold-search > 3. Declare case-fold-search buffer-local > 4. Replace BVAR(...) references in C with Vcase_fold_search Yes (assuming that 3 refers to the use of `make-variable-buffer-local`). Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 19:51:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, yantar92@posteo.net, mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170258340425628 (code B ref 66117); Thu, 14 Dec 2023 19:51:01 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 19:50:04 +0000 Received: from localhost ([127.0.0.1]:50967 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDrid-0006fG-RU for submit@debbugs.gnu.org; Thu, 14 Dec 2023 14:50:04 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:31862) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDric-0006eZ-Fs for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 14:50:03 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 72C8D4419C3; Thu, 14 Dec 2023 14:49:57 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702583395; bh=8tzD1jfkQ0/iHCv6ygpVrGpK4/Hvl6il84hJtqc1v5U=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=f/fuP/dgz3oN8a8LXBRYSyASATPzHKX0Y0VdZJGyXXvu8EvY4OwGLtg11Gnw/Pyip eVyexjKLeOKqKM+ZO2+8oW+5JezeXGWfFUIPsvtqnbuOpUsQMoZWXp9A9YrrSfdqKB mIdoiQ7EiWwAvoi2rj0MVT5TyVyxS01C6ob2BLyYMokDNRl367v/zKELh0r5c3LxgC zMjOPDXGD63Ie4c4yaMw21D5mJNQaod7RTqZx4lg8k9d1CsftnF0Eij9riu00DI6ui GGW/4zs2wFH1M4czEarcsM/YYNma4BkokdQFTTnKBUkCy5cROjRjm2SxkRBPLlzes4 E59Qjt52YhhgQ== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id CB06B4418ED; Thu, 14 Dec 2023 14:49:55 -0500 (EST) Received: from pastel (65-110-221-238.cpe.pppoe.ca [65.110.221.238]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 96B0C120C16; Thu, 14 Dec 2023 14:49:55 -0500 (EST) From: Stefan Monnier In-Reply-To: <83r0jopqk1.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 14 Dec 2023 20:49:50 +0200") Message-ID: References: <878r919qfh.fsf@localhost> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <83r0jopqk1.fsf@gnu.org> Date: Thu, 14 Dec 2023 14:49:54 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.556 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) >> >> > But for starters, a new Lisp-only global variable should be good, I >> >> > think. Stefan, any comments? >> >> >> >> I must say I don't understand the reasoning behind this. >> >> What would it do different from `case-fold-search`? >> > >> > It won't be buffer-local-if-changed, so binding it will not be costly. >> >> As mentioned elsewhere in this bug-report we can make `case-fold-search` >> into a `DEFVAR_LISP`: it would have no visible impact to ELisp and would >> avoid the costly let-bindings. > Didn't we just agree that would be a breaking change? No, when? where? You might be confusing that proposition to my proposition to make it always-buffer-local (like `mode-name` or `buffer-file-name`). >> > It also won't be a defcustom, so let-binding it will not step on the >> > user's preferences. >> Hmm... when/where do existing let-bindings of `case-fold-search` step on >> user settings of that var? > Each time we let-bind it in code used in searching and/or matching > commands. I don't think that true of all those let-binding. Obviously the mere fact that the let-binding takes precedence means that we override the user's setting, but that's just an internal technical detail. To "step on the user's preference" we additionally need a situation where the user-visible result is not what the user wanted. Which of those let-binding can really be said to "step on the user's preference"? AFAICT most/all the times we do that, it's because we do a search that's "internal" to some operation and has thus no reason to obey the custom setting ,which AFAICT is meant to affect interactive uses like Isearch (tho Isearch doesn't Isearch doesn't pay attention to `case-fold-search`, AFAICT, so really the user-visible effect of setting `case-fold-search` is quite limited). I don't think that when users set `case-fold-search` to t they mean that indentation and highlighting should treat `STrucT` as a keyword in C mode, right? >> IME the problem is rather the opposite: most calls to search functions >> don't explicitly let-bind `case-fold-search` and instead rely naively on >> the default value and are thus susceptible to bugs if/when someone sets >> the custom var (globally or buffer-locally). > > I don't see that as a bug: the user said he/she wants the search to be > case-insensitive, so they should get what they asked for. But that's only true if the user runs a search command. If the search is done within a non-search command (e.g. indentation), then the result is often not what the user wanted. Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 19:57:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170258378726326 (code B ref 66117); Thu, 14 Dec 2023 19:57:02 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 19:56:27 +0000 Received: from localhost ([127.0.0.1]:50986 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDrop-0006qY-Ec for submit@debbugs.gnu.org; Thu, 14 Dec 2023 14:56:27 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:44941) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDron-0006qG-Nw for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 14:56:26 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id A89814419F1; Thu, 14 Dec 2023 14:56:20 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702583779; bh=Qkpi6vVXIr965fHD7iDuCM8hMac0RPuOMugXKnqIXDw=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=Q4Zk8qrc4X19PpIcOelm215duUT+k4bF3iX1GVywRpSSdPZp9O6Ctn60wXFkViNFg fWkfV52rvowT/k9oXPJmOic9qmfgiSrwK+gViSEsksOYw/Jxa5pjmmixkI2mTM8OCI m6erxEZ3qLOvf+Ad//mN0zvUhqDTrkt6YJF72SDyD/Ay6OJ3WZevMEpxheRrfQwlmq cchnZ520mRYpC1KddnzeNs100ICyLYjRu++IJCGK+JZK0pqC8LcqVeGJ5Z+AWq5RPI Sq32IFFGTsm91HwjPBjN39BxH7Mjieh0AxDIAWOBI32b7fTd6qKnnOBD6I+U6o0nNr qW2kiBRZHg66g== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 3C3684419E5; Thu, 14 Dec 2023 14:56:19 -0500 (EST) Received: from pastel (65-110-221-238.cpe.pppoe.ca [65.110.221.238]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 0716F120D37; Thu, 14 Dec 2023 14:56:19 -0500 (EST) From: Stefan Monnier In-Reply-To: <87r0jooatf.fsf@localhost> (Ihor Radchenko's message of "Thu, 14 Dec 2023 19:15:08 +0000") Message-ID: References: <878r919qfh.fsf@localhost> <83msuftr0i.fsf@gnu.org> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <87r0jooatf.fsf@localhost> Date: Thu, 14 Dec 2023 14:56:18 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.417 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) >>> I must say I don't understand the reasoning behind this. >>> What would it do different from `case-fold-search`? >> It won't be buffer-local-if-changed, so binding it will not be costly. >> It also won't be a defcustom, so let-binding it will not step on the >> user's preferences. > In my mind, another benefit is that the new variable will not be > affected by buffer-local values - (let (case-fold-search-override value) ...) > will be guaranteed to use VALUE everywhere, even if current buffer is > changed. This will make the case I described in > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#208 more predictable > (and, since it is a new variable, will not break any existing code). But of course, as always it cuts both ways. E.g. if you do (let ((case-fold-search-override t)) (dolist (buf (buffer-list)) (when (string-match "foo" buffer-file-name) (do-something)))) your `case-fold-search-override` will override all the careful `case-fold-search` let-bindings used during the execution of `do-something` which will likely lead to new bugs. [ Say, if `do-something` ends up calling `syntax-ppss` which ends up running `syntax-propertize` which often needs to perform case-sensitive searches. ] Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 20:25:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: dmitry@gutov.dev, yantar92@posteo.net, mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170258548916879 (code B ref 66117); Thu, 14 Dec 2023 20:25:01 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 20:24:49 +0000 Received: from localhost ([127.0.0.1]:51010 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDsGH-0004O9-2r for submit@debbugs.gnu.org; Thu, 14 Dec 2023 15:24:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:41732) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDsGE-0004Nu-2N for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 15:24:47 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rDsG9-0002VQ-0f; Thu, 14 Dec 2023 15:24:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=w0OIgHkglPn3UFBKWmatPMAn/7pW+rDbqY0BAIk65Sg=; b=pxtJPDimrVfC V1140HGWaoJCXz1Rm9X7x36mkJ/F7j7Cj48vrYGVKyxIhSAO9dj4fv9Pkimarc/NAONT14Vsorf3O lARYKcTwK90RNAlisS1SUyRDnvDR3P896IqGtIkjKccBwX/ivgsLVIJ0QDfbZIzvad3igbD2Ryx1M BJ/IdKu2CstiFPmRZI/DxbvEmSCouVriYSyA2iDRUd1C84t5sYGfLgCg6ZkCOv4uvbj1ts5V0pZe/ 4/259Hk+nb2V4q9C/rrIDI9WaLXrngzRwC7fycNXAx6Vnii5YR1VjrBPJFFkQFy7vVACe3QdQtPzD zvjHQHJeiexsG1Stz3+1dA==; Date: Thu, 14 Dec 2023 22:24:39 +0200 Message-Id: <83le9wpm60.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Stefan Monnier on Thu, 14 Dec 2023 14:49:54 -0500) References: <878r919qfh.fsf@localhost> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <83r0jopqk1.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stefan Monnier > Cc: yantar92@posteo.net, dmitry@gutov.dev, 66117@debbugs.gnu.org, > mattias.engdegard@gmail.com > Date: Thu, 14 Dec 2023 14:49:54 -0500 > > >> As mentioned elsewhere in this bug-report we can make `case-fold-search` > >> into a `DEFVAR_LISP`: it would have no visible impact to ELisp and would > >> avoid the costly let-bindings. > > Didn't we just agree that would be a breaking change? > > No, when? where? > > You might be confusing that proposition to my proposition to make it > always-buffer-local (like `mode-name` or `buffer-file-name`). Maybe. This discussion has enough confusion to confuse everyone. > >> > It also won't be a defcustom, so let-binding it will not step on the > >> > user's preferences. > >> Hmm... when/where do existing let-bindings of `case-fold-search` step on > >> user settings of that var? > > Each time we let-bind it in code used in searching and/or matching > > commands. > > I don't think that true of all those let-binding. Not all, just some. > Obviously the mere fact that the let-binding takes precedence means that > we override the user's setting, but that's just an internal technical > detail. To "step on the user's preference" we additionally need > a situation where the user-visible result is not what the user wanted. Yes, and you are sure there aren't such cases, what with our willy-nilly binding this variable whenever we need that? > AFAICT most/all the times we do that, it's because we do a search that's > "internal" to some operation and has thus no reason to obey the custom > setting ,which AFAICT is meant to affect interactive uses like Isearch > (tho Isearch doesn't Isearch doesn't pay attention to > `case-fold-search`, AFAICT, so really the user-visible effect of setting > `case-fold-search` is quite limited). This is wishful thinking not based by any data. > >> IME the problem is rather the opposite: most calls to search functions > >> don't explicitly let-bind `case-fold-search` and instead rely naively on > >> the default value and are thus susceptible to bugs if/when someone sets > >> the custom var (globally or buffer-locally). > > > > I don't see that as a bug: the user said he/she wants the search to be > > case-insensitive, so they should get what they asked for. > > But that's only true if the user runs a search command. That's what I had in mind, and even said so. > If the search is done within a non-search command (e.g. indentation), > then the result is often not what the user wanted. My point is that we use case-fold-search for two different purposes, and so it is good to have 2 variables, one each for every purpose. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 20:58:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, yantar92@posteo.net, mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17025874377696 (code B ref 66117); Thu, 14 Dec 2023 20:58:02 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 20:57:17 +0000 Received: from localhost ([127.0.0.1]:51049 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDslh-000203-1r for submit@debbugs.gnu.org; Thu, 14 Dec 2023 15:57:17 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:22788) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDslf-0001zo-Bd for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 15:57:15 -0500 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 76D3880843; Thu, 14 Dec 2023 15:57:10 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702587429; bh=NdFV2hWZt/g5szuO8HRrL/Z7Ain7qtpmHOsGWISpZ/g=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=MRrve8VG3QJ2r6k20o4zrBBqnszbfYX/PGUj5xpx7ay3FJx5K8YlGtnFuvx7+9ZO0 clm1dJ202lbqHMd/79ZuKn33WtvStbUOBV82t4ZvHJM6NBx8p7qc1TH9d6/Dj5z1uw XGCBvNX6iTUQCCGTjr8u7Zlwwot5sRqjtzzoFZe4SUc8zQSm8FLqSuPjVvySQdBeRP HgAMrvbc3nb1yWO8q9g4kGAXwAWDOJPc9IhyU5XJ4k2/6iI3XTM2q0OStRMKoWh/DV ZGTudaiue6OUvzYiON9tfVIpp8NcI5oBL//nVqgpaiVTu1sEE8GzlosY1quQUZs0S/ zknagz3148ueQ== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 2FD9D80801; Thu, 14 Dec 2023 15:57:09 -0500 (EST) Received: from pastel (65-110-221-238.cpe.pppoe.ca [65.110.221.238]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id F1AC91203FE; Thu, 14 Dec 2023 15:57:08 -0500 (EST) From: Stefan Monnier In-Reply-To: <83le9wpm60.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 14 Dec 2023 22:24:39 +0200") Message-ID: References: <878r919qfh.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <83r0jopqk1.fsf@gnu.org> <83le9wpm60.fsf@gnu.org> Date: Thu, 14 Dec 2023 15:57:08 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Maybe. This discussion has enough confusion to confuse everyone. I've already been fooled more than once in this thread, indeed :-) >> Obviously the mere fact that the let-binding takes precedence means that >> we override the user's setting, but that's just an internal technical >> detail. To "step on the user's preference" we additionally need >> a situation where the user-visible result is not what the user wanted. > > Yes, and you are sure there aren't such cases, Oh, no, I'm definitely not sure, but since fixing this problem was cited as part of the motivation for the introduction of `case-fold-search-override`, I hope we have at least one or two concrete cases showing that it's a real problem. >> AFAICT most/all the times we do that, it's because we do a search that's >> "internal" to some operation and has thus no reason to obey the custom >> setting, which AFAICT is meant to affect interactive uses like Isearch >> (tho Isearch doesn't Isearch doesn't pay attention to >> `case-fold-search`, AFAICT, so really the user-visible effect of setting >> `case-fold-search` is quite limited). > This is wishful thinking not based by any data. Really? There are many let-bindings of `case-fold-search` in the tree, so it's hard to get a clear picture, but a random sampling of them suggests they mostly wrap searches where the regexps are not provided by the user but by the wrapped code (they're typically hard-coded). Admittedly, that doesn't mean that it would be wrong to obey the user's choice of `case-fold-search` there, but I think it clearly leans this way. >> >> IME the problem is rather the opposite: most calls to search functions >> >> don't explicitly let-bind `case-fold-search` and instead rely naively on >> >> the default value and are thus susceptible to bugs if/when someone sets >> >> the custom var (globally or buffer-locally). >> > I don't see that as a bug: the user said he/she wants the search to be >> > case-insensitive, so they should get what they asked for. >> But that's only true if the user runs a search command. > That's what I had in mind, and even said so. But I was talking about code which performs a search that's internal to the command rather than being the purpose of the command. Things like searches performed during indentation, searches performed to parse the output of processes, ... >> If the search is done within a non-search command (e.g. indentation), >> then the result is often not what the user wanted. > My point is that we use case-fold-search for two different purposes, > and so it is good to have 2 variables, one each for every purpose. We do use it for 2 different purposes, indeed. And I have seen this lead to bugs. But the bugs I recall went in the direction "user setting unexpectedly affecting internal searches" rather than "let-binding unexpected affecting user searches". I must admit that I can't point to concrete examples of the kind of bugs "I recall". But I don't know of examples of bugs caused by let-bindings overriding user settings either. So all in all, this seems like a weak justification for any change. Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 21:33:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier , Eli Zaretskii Cc: yantar92@posteo.net, mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17025895358708 (code B ref 66117); Thu, 14 Dec 2023 21:33:02 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 21:32:15 +0000 Received: from localhost ([127.0.0.1]:51071 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDtJW-0002GO-Qr for submit@debbugs.gnu.org; Thu, 14 Dec 2023 16:32:15 -0500 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:56203) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDtJU-0002G3-68 for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 16:32:12 -0500 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 1F64D5C011D; Thu, 14 Dec 2023 16:32:07 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Thu, 14 Dec 2023 16:32:07 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1702589527; x=1702675927; bh=5ML5nu7MQJ2Zukav/0+v3d/9t5dan8Z3C0My6vjEQkM=; b= rlnIG/xEmI3zZNDY6fLQp7ha3jXHLcA9dHX01XTugCEs1fGgEdW/MX24kzR/KG3r 2sZXmQiHVzZX6bdsECLtsvZ3isircYkE2dv/hEuGQ44L5arJ5Uq8jkX21Pj0mow6 rz0HBnT8RGbG+t/oMS7I8XB1SfQ3i/942KiWwsOty9tKMk7jhQ1LMay8KbE8bFfS YBhYdhRTDuqDR+7d4UiIsUHcpTSSHqK9CRFXEC2+JmQPIIH3utdccUpC+KTErIVD A3dhNmlZb+HUdRafFHGDMygOpX9qF6GD0KC9JjnNUK+TO8UdEHa6WKhA1pg6uWqq neSGgKiQtFPmiKm7C9t0qw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1702589527; x= 1702675927; bh=5ML5nu7MQJ2Zukav/0+v3d/9t5dan8Z3C0My6vjEQkM=; b=O 3qGC+IbjqAal94bKxAYMqHTFAeXR0238M85X3aXzstI8o0ADU34cX3tw/uEbpkdl eDgjcfmmvd/WOAjlpm9hiKtHocahcm8QuXkrLaKYnfNCcR7wybLCmytQWsyCZ03V EMJRhhmsMp6kpu5WWfo60Ky/uAjCi6Mn+Dy96oT5lUZp9CiyFIIUhNgJ2t3/mRL8 xJtKA1DBhZ3wjleE+jLwwJ2LbtGP3PzVziUb/Z5C2WoUsrdnc/ZAAVZ7Zp0Va4L1 GirMXxyhIQhlzp1r0UkucELzIruJH3/G0gu9FY6CXlebc6P3+9C6KN2hHuIfKRRN RO9J4TgHKTHdpIUpzjgaw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrudelledgudegkecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefkffggfgfuvfevfhfhjggtgfesthejredttdefjeenucfhrhhomhepffhm ihhtrhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrg htthgvrhhnpeeigfetveehveevffehledtueekieeikeeufeegudfgfeeghfdulefgfeev ledvveenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe gumhhithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 14 Dec 2023 16:32:04 -0500 (EST) Message-ID: Date: Thu, 14 Dec 2023 23:32:01 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US References: <878r919qfh.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <83r0jopqk1.fsf@gnu.org> <83le9wpm60.fsf@gnu.org> From: Dmitry Gutov In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -1.4 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) On 14/12/2023 22:57, Stefan Monnier wrote: > But the bugs I recall went in the direction "user setting unexpectedly > affecting internal searches" rather than "let-binding unexpected > affecting user searches". > > I must admit that I can't point to concrete examples of the kind of bugs > "I recall". You just pointed at one in company-dabbrev several messages ago. Nobody ever reported this, though, so I have to assume that "user settings" for case-fold-search are rare enough. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 14 Dec 2023 23:04:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Dmitry Gutov Cc: Eli Zaretskii , mattias.engdegard@gmail.com, yantar92@posteo.net, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170259500213077 (code B ref 66117); Thu, 14 Dec 2023 23:04:02 +0000 Received: (at 66117) by debbugs.gnu.org; 14 Dec 2023 23:03:22 +0000 Received: from localhost ([127.0.0.1]:51185 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDuji-0003Or-Ix for submit@debbugs.gnu.org; Thu, 14 Dec 2023 18:03:22 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:55844) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rDujg-0003Od-Ob for 66117@debbugs.gnu.org; Thu, 14 Dec 2023 18:03:21 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id D2C72100068; Thu, 14 Dec 2023 18:03:15 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702594994; bh=jgK8xUpSP4eacQOxqnlx8XrtVGiT+I7R2ThpQw/x8oM=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=NUXaJ+p4TGhtmZGp9KDq7bLq30ShV3YJEi4sjfJ6Q98dKVaAQeQN77mtfdkHqneU1 izgNXIhD3pYtPjJoVVrCQkUKulNMJpEvyHuV7d2VXv1W7C76UF48SJNICCjg4Oh+09 h2+DddTo4hbrqD5Y8xm/7vijWE1+0/zwQ1Rh0vSNIliKLPV0OwQvMiDOLYD+h2hdSv GxzqvTEx1rqDcKQmWh+TG2AS8pwFeYPb8tgonpXiZVLL3BY6CgalL/l6yzd3Gfzvyg vsFXQn2ea1MiPjnII6oZ0BLKx4cBiUz4UaVudJMZtZIt42VzSM62cYxzPu+XVaggx7 o5Ox/Y3tHzKZA== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id B100B100033; Thu, 14 Dec 2023 18:03:14 -0500 (EST) Received: from pastel (65-110-221-238.cpe.pppoe.ca [65.110.221.238]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 7DC61120AB6; Thu, 14 Dec 2023 18:03:14 -0500 (EST) From: Stefan Monnier In-Reply-To: (Dmitry Gutov's message of "Thu, 14 Dec 2023 23:32:01 +0200") Message-ID: References: <878r919qfh.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <83r0jopqk1.fsf@gnu.org> <83le9wpm60.fsf@gnu.org> Date: Thu, 14 Dec 2023 18:03:12 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.021 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Dmitry Gutov [2023-12-14 23:32:01] wrote: > On 14/12/2023 22:57, Stefan Monnier wrote: >> But the bugs I recall went in the direction "user setting unexpectedly >> affecting internal searches" rather than "let-binding unexpected >> affecting user searches". >> I must admit that I can't point to concrete examples of the kind of bugs >> "I recall". > > You just pointed at one in company-dabbrev several messages ago. > Nobody ever reported this, though, so I have to assume that "user settings" > for case-fold-search are rare enough. I suspect that buffer-local settings are indeed rare, and I'd expect them to come from packages rather than from users. I was instead thinking of cases where the global setting (more likely to be set by the user) incorrectly affected a package's behavior. Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 15 Dec 2023 10:17:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17026354095793 (code B ref 66117); Fri, 15 Dec 2023 10:17:02 +0000 Received: (at 66117) by debbugs.gnu.org; 15 Dec 2023 10:16:49 +0000 Received: from localhost ([127.0.0.1]:51658 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rE5FC-0001V9-2s for submit@debbugs.gnu.org; Fri, 15 Dec 2023 05:16:49 -0500 Received: from mout02.posteo.de ([185.67.36.66]:39843) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rE5F9-0001Uv-Kd for 66117@debbugs.gnu.org; Fri, 15 Dec 2023 05:16:32 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 302FC240105 for <66117@debbugs.gnu.org>; Fri, 15 Dec 2023 11:16:26 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702635386; bh=DGgVQQXJ7jKWkIrtI+dHPMyiuPV65pMGhdvYHdMbuSE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=W3s6TbDHuPWDHlFvJlFXiDiMxSdxrNVNgGEl73tGpi+dTfgUBvGe60/XvfWtlYn1C IJvjtNsRumjQ2zKtHp4CuoZxZelQeSozD86WxYqlKJr+52eyiwGPzoi4lEDfwdLR4+ dx7ggt4ICBH9BJd/ndWYHATopHsKnCMjPTN2vokoL5pjLMeQZqNZTQUn4VKxYoXzhs fsE5rn54KBw3hcISYyl2D6ABHdDVxfrPlYX7xHIH10E/3gcskWVkHNCWZM5G1/bV/f QI7AP848cDolcGyGYlal8Vt8ZE1ExvBWdYbIDr4XxfyW8Kt2TeErsq032hJs6nq8iZ V7bqvvfd9GcFg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4Ss4r909fdz6tyH; Fri, 15 Dec 2023 11:16:24 +0100 (CET) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <87plzbxtxa.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <87r0jooatf.fsf@localhost> Date: Fri, 15 Dec 2023 10:19:29 +0000 Message-ID: <87sf43ix8u.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Stefan Monnier writes: >> In my mind, another benefit is that the new variable will not be >> affected by buffer-local values - (let (case-fold-search-override value) ...) >> will be guaranteed to use VALUE everywhere, even if current buffer is >> changed. This will make the case I described in >> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#208 more predictable >> (and, since it is a new variable, will not break any existing code). > > But of course, as always it cuts both ways. E.g. if you do > > (let ((case-fold-search-override t)) > (dolist (buf (buffer-list)) > (when (string-match "foo" buffer-file-name) > (do-something)))) > > your `case-fold-search-override` will override all the careful > `case-fold-search` let-bindings used during the execution of `do-something` > which will likely lead to new bugs. Good point. I was hoping that together with this new variable we also add a compiler warning encouraging to use the case-fold-search-override _instead_ of case-fold-search everywhere. But I can indeed see how people can get even more confused in such scenario. Within the scope of this particular bug report, I am now leaning more towards your idea with DEFVAR_LISP then. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 15 Dec 2023 10:59:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170263793429407 (code B ref 66117); Fri, 15 Dec 2023 10:59:01 +0000 Received: (at 66117) by debbugs.gnu.org; 15 Dec 2023 10:58:54 +0000 Received: from localhost ([127.0.0.1]:51669 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rE5uA-0007eF-EJ for submit@debbugs.gnu.org; Fri, 15 Dec 2023 05:58:54 -0500 Received: from mout01.posteo.de ([185.67.36.65]:60297) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rE5u8-0007dz-Kq for 66117@debbugs.gnu.org; Fri, 15 Dec 2023 05:58:53 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id BEE1724002D for <66117@debbugs.gnu.org>; Fri, 15 Dec 2023 11:58:46 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702637926; bh=RQcHjmlBxku4dwmxxawpcdYHKuaZV9hdPmP3IycaB+E=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=ieFTpzbnzE11DW2jeXdTHIw3bkFOiIdgmvejfcymXzoBAwzHiCnbx4X7HEmBfafg7 o06AqZ6IN+G9HzAgUYUThXf9+JWz1iNvEgO7EDGmnfnszIjiKze8QX1FGdsURlxJ/K XQWclLey7aneFbWTVEkmSQiHAgUCORLEtLcmHADyEgcrW1NgoCcikvDHN/R7UnIjFp B0qN8JLs8k9FNzP+B+LoasW2LD2jn6HKnXSXD8zIfd9cQsUVSRZqKxvWOh7mLKe2QQ dN9+RgrHRd8S08occNPqH4tW05dO6vef5u1hMfSzlvmpNSiIf1mZCBgj24EEHcwSXm 5xMgQrrzbwcBA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4Ss5n11gMmz9rxL; Fri, 15 Dec 2023 11:58:44 +0100 (CET) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> Date: Fri, 15 Dec 2023 11:01:53 +0000 Message-ID: <878r5v20gu.fsf@localhost> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --=-=-= Content-Type: text/plain Stefan Monnier writes: >> Do I understand correctly that what is needed to implement your >> suggestion is >> >> 1. Remove case_fold_search_ slot from buffer objects >> 2. Use DEFVAR_LISP for case-fold-search >> 3. Declare case-fold-search buffer-local >> 4. Replace BVAR(...) references in C with Vcase_fold_search > > Yes (assuming that 3 refers to the use of `make-variable-buffer-local`). See the attached patch. I used my `find-buffer-visiting' benchmark (dolist (file (directory-files "/tmp/test/" t "txt")) (find-file-noselect file)) Without the patch: 10.3 sec With the patch: 7.0 sec Without the patch, the reverse profiler tree is 2728 26% Automatic GC 1187 11% + abbreviate-file-name ;; <--- 1080 10% + inhibit-local-variables-p ;; <--- 913 8% + uniquify-rationalize-file-buffer-names 816 7% + find-buffer-visiting 547 5% + locate-dominating-file With the patch, the `abbreviate-file-name' and `inhibit-local-variables-p' no longer appear on top 2559 35% Automatic GC 892 12% + uniquify-rationalize-file-buffer-names 704 9% + find-buffer-visiting 473 6% + locate-dominating-file 295 4% + dir-locals--all-files 241 3% + generate-new-buffer 219 3% + file-truename 169 2% + inhibit-local-variables-p 128 1% + abbreviate-file-name --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-Improve-performance-let-binding-case-fold-search-bug.patch >From fb7677be03e8c49d6a549f0d993b4df6f0ea404d Mon Sep 17 00:00:00 2001 Message-ID: From: Ihor Radchenko Date: Fri, 15 Dec 2023 11:47:45 +0100 Subject: [PATCH] Improve performance let-binding `case-fold-search' (bug#66117) * src/buffer.h: Remove case_fold_search_ buffer object slot. * src/buffer.c (bset_case_fold_search): Remove - no longer needed. (init_buffer_once): Remove removed buffer slot init. (syms_of_buffer): Use DEFVAR_LISP to define `case-fold-search' and declare it buffer-local. * src/minibuf.c (syms_of_minibuf): Remove DEFSYM call for `case-fold-search' symbol. It now lives in `syms_of_buffer'. * src/editfns.c (Fcompare_buffer_substrings): (Fchar_equal): * src/search.c (looking_at_1): (string_match_1): (search_command): (Fre__describe_compiled): Adjust C queries to `case-fold-search' value to use C globals instead of BVAR macro. * doc/lispref/internals.texi (Buffer Internals): Do not list `case_fold_search' slot. See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#259 When used as buffer slot, let-binding `case-fold-search' would scale with the number of live buffers and can be slow. This change makes let-binding much faster at the cost of slightly slower `set-buffer'. --- doc/lispref/internals.texi | 1 - src/buffer.c | 17 ++++++----------- src/buffer.h | 1 - src/editfns.c | 4 ++-- src/minibuf.c | 1 - src/search.c | 10 +++++----- 6 files changed, 13 insertions(+), 21 deletions(-) diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi index 1fba683223e..4b4edda6d46 100644 --- a/doc/lispref/internals.texi +++ b/doc/lispref/internals.texi @@ -2519,7 +2519,6 @@ Buffer Internals @item mode_line_format @itemx header_line_format -@itemx case_fold_search @itemx tab_width @itemx fill_column @itemx left_margin diff --git a/src/buffer.c b/src/buffer.c index 12f226d8249..919c470d9e5 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -210,11 +210,6 @@ bset_buffer_file_coding_system (struct buffer *b, Lisp_Object val) b->buffer_file_coding_system_ = val; } static void -bset_case_fold_search (struct buffer *b, Lisp_Object val) -{ - b->case_fold_search_ = val; -} -static void bset_ctl_arrow (struct buffer *b, Lisp_Object val) { b->ctl_arrow_ = val; @@ -4692,7 +4687,6 @@ init_buffer_once (void) XSETFASTINT (BVAR (&buffer_local_flags, mode_line_format), idx); ++idx; XSETFASTINT (BVAR (&buffer_local_flags, abbrev_mode), idx); ++idx; XSETFASTINT (BVAR (&buffer_local_flags, overwrite_mode), idx); ++idx; - XSETFASTINT (BVAR (&buffer_local_flags, case_fold_search), idx); ++idx; XSETFASTINT (BVAR (&buffer_local_flags, auto_fill_function), idx); ++idx; XSETFASTINT (BVAR (&buffer_local_flags, selective_display), idx); ++idx; XSETFASTINT (BVAR (&buffer_local_flags, selective_display_ellipses), idx); ++idx; @@ -4785,7 +4779,6 @@ init_buffer_once (void) bset_tab_line_format (&buffer_defaults, Qnil); bset_abbrev_mode (&buffer_defaults, Qnil); bset_overwrite_mode (&buffer_defaults, Qnil); - bset_case_fold_search (&buffer_defaults, Qt); bset_auto_fill_function (&buffer_defaults, Qnil); bset_selective_display (&buffer_defaults, Qnil); bset_selective_display_ellipses (&buffer_defaults, Qt); @@ -5215,10 +5208,6 @@ syms_of_buffer (void) doc: /* Non-nil if Abbrev mode is enabled. Use the command `abbrev-mode' to change this variable. */); - DEFVAR_PER_BUFFER ("case-fold-search", &BVAR (current_buffer, case_fold_search), - Qnil, - doc: /* Non-nil if searches and matches should ignore case. */); - DEFVAR_PER_BUFFER ("fill-column", &BVAR (current_buffer, fill_column), Qintegerp, doc: /* Column beyond which automatic line-wrapping should happen. @@ -5951,6 +5940,12 @@ Functions (implicitly) running this hook are `get-buffer-create', This is the default. If nil, auto-save file deletion is inhibited. */); delete_auto_save_files = 1; + DEFVAR_LISP ("case-fold-search", Vcase_fold_search, + doc: /* Non-nil if searches and matches should ignore case. */); + Vcase_fold_search = Qt; + DEFSYM (Qcase_fold_search, "case-fold-search"); + Fmake_variable_buffer_local (Qcase_fold_search); + DEFVAR_LISP ("clone-indirect-buffer-hook", Vclone_indirect_buffer_hook, doc: /* Normal hook to run in the new buffer at the end of `make-indirect-buffer'. diff --git a/src/buffer.h b/src/buffer.h index b2bd15657dc..399c6585158 100644 --- a/src/buffer.h +++ b/src/buffer.h @@ -379,7 +379,6 @@ #define BVAR(buf, field) ((buf)->field ## _) /* Values of several buffer-local variables. */ /* tab-width is buffer-local so that redisplay can find it in buffers that are not current. */ - Lisp_Object case_fold_search_; Lisp_Object tab_width_; Lisp_Object fill_column_; Lisp_Object left_margin_; diff --git a/src/editfns.c b/src/editfns.c index 49d552c4a75..aa410ea7091 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -1785,7 +1785,7 @@ DEFUN ("compare-buffer-substrings", Fcompare_buffer_substrings, Scompare_buffer_ register EMACS_INT begp1, endp1, begp2, endp2, temp; register struct buffer *bp1, *bp2; register Lisp_Object trt - = (!NILP (BVAR (current_buffer, case_fold_search)) + = (!NILP (Vcase_fold_search) ? BVAR (current_buffer, case_canon_table) : Qnil); ptrdiff_t chars = 0; ptrdiff_t i1, i2, i1_byte, i2_byte; @@ -4367,7 +4367,7 @@ DEFUN ("char-equal", Fchar_equal, Schar_equal, 2, 2, 0, if (XFIXNUM (c1) == XFIXNUM (c2)) return Qt; - if (NILP (BVAR (current_buffer, case_fold_search))) + if (NILP (Vcase_fold_search)) return Qnil; i1 = XFIXNAT (c1); diff --git a/src/minibuf.c b/src/minibuf.c index 58adde1bf66..0d5b375e450 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -2320,7 +2320,6 @@ syms_of_minibuf (void) DEFSYM (Qcurrent_input_method, "current-input-method"); DEFSYM (Qactivate_input_method, "activate-input-method"); - DEFSYM (Qcase_fold_search, "case-fold-search"); DEFSYM (Qmetadata, "metadata"); DEFSYM (Qcycle_sort_function, "cycle-sort-function"); diff --git a/src/search.c b/src/search.c index 2996d32fca1..75a67ff3223 100644 --- a/src/search.c +++ b/src/search.c @@ -281,7 +281,7 @@ looking_at_1 (Lisp_Object string, bool posix, bool modify_data) struct regexp_cache *cache_entry = compile_pattern ( string, modify_match_data ? &search_regs : NULL, - (!NILP (BVAR (current_buffer, case_fold_search)) + (!NILP (Vcase_fold_search) ? BVAR (current_buffer, case_canon_table) : Qnil), posix, !NILP (BVAR (current_buffer, enable_multibyte_characters))); @@ -402,7 +402,7 @@ string_match_1 (Lisp_Object regexp, Lisp_Object string, Lisp_Object start, struct regexp_cache *cache_entry = compile_pattern (regexp, modify_match_data ? &search_regs : NULL, - (!NILP (BVAR (current_buffer, case_fold_search)) + (!NILP (Vcase_fold_search) ? BVAR (current_buffer, case_canon_table) : Qnil), posix, @@ -1068,10 +1068,10 @@ search_command (Lisp_Object string, Lisp_Object bound, Lisp_Object noerror, BVAR (current_buffer, case_eqv_table)); np = search_buffer (string, PT, PT_BYTE, lim, lim_byte, n, RE, - (!NILP (BVAR (current_buffer, case_fold_search)) + (!NILP (Vcase_fold_search) ? BVAR (current_buffer, case_canon_table) : Qnil), - (!NILP (BVAR (current_buffer, case_fold_search)) + (!NILP (Vcase_fold_search) ? BVAR (current_buffer, case_eqv_table) : Qnil), posix); @@ -3402,7 +3402,7 @@ DEFUN ("re--describe-compiled", Fre__describe_compiled, Sre__describe_compiled, { struct regexp_cache *cache_entry = compile_pattern (regexp, NULL, - (!NILP (BVAR (current_buffer, case_fold_search)) + (!NILP (Vcase_fold_search) ? BVAR (current_buffer, case_canon_table) : Qnil), false, !NILP (BVAR (current_buffer, -- 2.42.0 --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=profile-w-case-fold-search-patch Content-Transfer-Encoding: base64 Cltwcm9maWxlci1wcm9maWxlICIyOC4xIiBjcHUgI3MoaGFzaC10YWJsZSBzaXplIDIxNyB0ZXN0 IGVxdWFsIHJlaGFzaC1zaXplIDEuNSByZWhhc2gtdGhyZXNob2xkIDAuODEyNSBkYXRhIChbcmVk aXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDEwIFtsaW5lLW1vdmUtdmlzdWFs IGxpbmUtbW92ZSBuZXh0LWxpbmUgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0 ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAzIFtuaWwgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxd IDYgW2VsaXNwLS1wcmVjZWRpbmctc2V4cCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA4IFtkaXJlY3RvcnktZmlsZXMgbGV0IGV2 YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxd IDMgW2ZpbGUtdHJ1ZW5hbWUgZmlsZS10cnVlbmFtZSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdo aWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDUwIFts b2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1oZy1yZWdpc3RlcmVkIHZjLWNh bGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxN2NmNjFmZWFlNzE4OGI+IiBtYXBjIHZjLXJlZ2lz dGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRd IDg3IFtsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1ienItcmVnaXN0ZXJl ZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHgxZThkNjE5MTg1YTBiMDkwPiIgbWFwYyB2 Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hp bGUgbGV0XSAxMDUgW2ZpbGUtdHJ1ZW5hbWUgZmlsZS10cnVlbmFtZSBmaW5kLWJ1ZmZlci12aXNp dGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVj dXRlIG5pbCBuaWwgbmlsIG5pbF0gMzcgW2ZpbGUtdHJ1ZW5hbWUgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbF0gNDkgW2luaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAzNyBbc3Ry aW5nLW1hdGNoIGFzc29jLWRlZmF1bHQgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1 dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNl eHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0g NTIgW3ZjLWZpbGUtZ2V0cHJvcCB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1z dGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDMgW2Fi YnJldmlhdGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZj LWJ6ci1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHg3M2E2ZTdhNWY0 ZjcwPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4t aG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGVdIDI3IFtmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsXSA3MDQgW2ZpbGUtZXhpc3RzLXAgIiM8Y29tcGlsZWQgMHhkOTM4NjU4OTgyYzBmNDA+ IiBtYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQg dmMtc3JjLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDEyYTQ2NmU3 YTVmNGY3MD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUg cnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3RdIDMyIFtzZWFyY2gtZm9yd2FyZCBmaW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNv ZGluZyBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDIy IFtzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1l eGVjdXRlIG5pbCBuaWwgbmlsXSAxMCBbZGlyLWxvY2Fscy0tYWxsLWZpbGVzIGxvY2F0ZS1kb21p bmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdldC12YXJp YWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAxNDQg W2xvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZjLXN2bi1yZWdpc3RlcmVkIHZj LWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweDEyNGYxMTkxODVhMGIwOTA+IiBtYXBjIHZjLXJl Z2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXRdIDEwNyBbZmlsZS10cnVlbmFtZSBmaWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUgZmluZC1i dWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gMzcgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGlu aGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9kZS0xIGhhY2stbG9jYWwtdmFyaWFi bGVzLXByb3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyB0ZXh0LW1v ZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDMgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwt bGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWxdIDM2IFtmaWxlLW5ld2VyLXRoYW4tZmlsZS1wIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBl dmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbF0gNTMgW2ZpbGVzLS10cmFuc2Zv cm0tZmlsZS1uYW1lIG1ha2UtbG9jay1maWxlLW5hbWUgaW5zZXJ0LWZpbGUtY29udGVudHMgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gMjggW3NlYXJjaC1mb3J3YXJkIGhhY2stbG9j YWwtdmFyaWFibGVzLS1maW5kLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSAx MCBbZmlsZS1leGlzdHMtcCAiIzxjb21waWxlZCAtMHg3MjgwMjNiNjdkM2YwYzA+IiBtYXBjYXIg dmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc2Njcy1y ZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweDE4Nzc2ZDkxODVhMGIwZjA+ IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29r cyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 XSA0MCBbYWJicmV2aWF0ZS1maWxlLW5hbWUgbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5k LXJvb3QgdmMtc3ZuLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDNl OWJlNmU3YTVmNGY3MD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gt c3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSAyMSBbaW5zZXJ0LWZpbGUtY29udGVudHMgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSA1OSBbYXV0by1jb2RpbmctYWxpc3Qt bG9va3VwIGZpbmQtYXV0by1jb2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2VydC1maWxlLWNvbnRl bnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0 IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMjUgW2ZpbGUtbmFtZS1zYW5zLXZlcnNp b25zIGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9kZS0xIGhhY2stbG9jYWwt dmFyaWFibGVzLXByb3AtbGluZSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cF0gMTcgW3VuaXF1aWZ5LXJhdGlvbmFsaXplLWZpbGUtYnVmZmVyLW5hbWVzIHVuaXF1 aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwg bmlsIG5pbF0gODkyIFtmaWxlLXJlbW90ZS1wIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVz IGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1o b29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0XSA0IFtmaWxlLXRydWVuYW1l IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2 YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMjYgWyIjPHN1YnIgRjYx NmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMTM5PiIgYmFj a3RyYWNlLWZyYW1lIGNhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgZ2V0ZW52IHZjLXNjY3Mtc2VhcmNo LXByb2plY3QtZGlyIHZjLXBvc3NpYmxlLW1hc3RlciAiIzxjb21waWxlZCAweDI2NmNkMjU1NDJj MGY0MD4iIG1hcGNhciB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0 ZXJlZCB2Yy1zY2NzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDJi YTQxZmE3YTVmNGY3MD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kXSAzIFtpbmhpYml0 LWxvY2FsLXZhcmlhYmxlcy1wIGhhY2stbG9jYWwtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFz dC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAzNSBbaW5o aWJpdC1sb2NhbC12YXJpYWJsZXMtcCBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29r cyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNl dC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFz dC1zZXhwXSAzMSBbZmluZC1maWxlLW5hbWUtaGFuZGxlciBtYWtlLWF1dG8tc2F2ZS1maWxlLW5h bWUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDcgW2Rp ci1sb2NhbHMtLWFsbC1maWxlcyBsb2NhdGUtZG9taW5hdGluZy1maWxlIGRpci1sb2NhbHMtZmlu ZC1maWxlIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlh YmxlcyBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1 dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFs LW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXRdIDE1MSBbIiM8Y29tcGlsZWQgMHgxOTgwMDMxNDNkMDk+IiBhZGQtaG9vayB0ZXh0 LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRv LW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhw IGV2YWwtbGFzdC1zZXhwXSAzIFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0LWxvY2Fs LXZhcmlhYmxlcy1wIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9k ZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbF0gMjQgW2xvY2F0ZS1kb21pbmF0aW5nLWZp bGUgdmMtZmluZC1yb290IHZjLWdpdC1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21w aWxlZCAtMHg3ZmNlOWZhN2E1ZjRmNzA+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2 Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDkzIFtpbmhpYml0LWxvY2Fs LXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxp bmUgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5XSA0MSBbdmMtbWFrZS1iYWNrZW5kLXN5bSB2Yy1kZWZhdWx0LXJlZ2lzdGVy ZWQgdmMtc3JjLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDE2YWZl MWZlYWU3MTg4Yj4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3Rh dGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gOCBbZm9udC1sb2NrLXNwZWNpZmllZC1wIGZvbnQt bG9jay1pbml0aWFsLWZvbnRpZnkgZm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVy bi1vbi1mb250LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWlu LWJ1ZmZlcnMgcnVuLWhvb2tzIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cF0gMyBbY2RyIHVuaXF1aWZ5LXJhdGlvbmFsaXplLWZpbGUtYnVmZmVyLW5h bWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZl ciBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qt c2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRl IG5pbCBuaWwgbmlsXSAzMSBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQt ZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSAzMiBbYWJicmV2aWF0ZS1m aWxlLW5hbWUgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNr LWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMgaGFjay1s b2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBz ZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0XSAx MCBbZmlsZS1yZWFkYWJsZS1wIHZjLWN2cy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxj b21waWxlZCAtMHg4ZTljYzY3YTVmNGY3MD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5k IHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsXSAyMSBbZXhwYW5k LWZpbGUtbmFtZSB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA2IFtmaWxlLXJlbW90ZS1wIGhhY2stZGlyLWxvY2Fs LS1nZXQtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2 YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAyMCBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSBkaXIt bG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRpci1s b2NhbC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1t b2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSA0OSBbZ2xvYmFsLWZvbnQtbG9jay1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8t bW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAxMCBbbWFrZS1sb2Nr LWZpbGUtbmFtZSBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWwgbmlsIG5pbF0gMyBbZmlsZS1leGlzdHMtcCAiIzxjb21waWxlZCAweGM1ZTg4NGI4MDJjMGY0 MD4iIG1hcGNhciB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJl ZCB2Yy1yY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHgxMjRiNmYz OTg1YTBiMDkwPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0 ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdF0gNDcgW2FmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWwgbmlsIG5pbCBuaWxdIDMgW3N0cmluZy1wcmVmaXgtcCBjcmVhdGUtZmlsZS1idWZmZXIgZmlu ZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwg bmlsIG5pbCBuaWwgbmlsXSAzIFt2Yy1maWxlLXNldHByb3AgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNr ZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlXSAxMyBbdmMtZmluZC1yb290IHZjLXN2bi1yZWdpc3RlcmVkIHZjLWNhbGwtYmFj a2VuZCAiIzxjb21waWxlZCAtMHg3ZjliY2M2N2E1ZjRmNzA+IiBtYXBjIHZjLXJlZ2lzdGVyZWQg dmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbF0g NyBbaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0by1tb2RlLTEgaGFjay1sb2NhbC12 YXJpYWJsZXMtcHJvcC1saW5lIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIHRl eHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1 dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDEyIFtmaWxlLXdyaXRhYmxlLXAgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNh bGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSAxMCBbZmls ZS1hdHRyaWJ1dGVzIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3At LWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21t YW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDI4IFtzZ21sLWh0bWwtbWV0YS1h dXRvLWNvZGluZy1mdW5jdGlvbiBmaW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNvZGluZyBpbnNl cnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDkgW3VuaXF1aWZ5 LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNlIGNyZWF0ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmls IG5pbCBuaWxdIDIzIFtidWZmZXItZmlsZS1uYW1lIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBz ZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBu b3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1s YXN0LXNleHBdIDQgW2dldC1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA5NyBb Zm9udC1sb2NrLW1vZGUgZm9udC1sb2NrLWNoYW5nZS1tb2RlIHRleHQtbW9kZSBzZXQtYXV0by1t b2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9k ZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHBd IDggW2dlbmVyYXRlLW5ldy1idWZmZXIgY3JlYXRlLWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3Nl bGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1z ZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmls IG5pbF0gMjM3IFtiYWNrdHJhY2UtZnJhbWUgY2FsbGVkLWludGVyYWN0aXZlbHktcCBmb250LWxv Y2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGds b2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mgbm9ybWFsLW1v ZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAzIFtzZXQtYXV0by1t b2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBl dmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDI2IFtmaWxlLW5hbWUtbm9uZGlyZWN0b3J5 IHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXJjcy1y ZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHg2MWU5MDdlN2E1ZjRmNzA+ IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29r cyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZV0gMTAgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZp bGUgdmMtZmluZC1yb290IHZjLWhnLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBp bGVkIC0weDFhYTdhMWZlYWU3MTg4Yj4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZj LXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSA2IFt2Yy1maWxlLWdldHByb3AgdmMt YmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZSBuaWxdIDYgW2ZpbGUtbmFtZS1kaXJlY3RvcnkgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhl Y3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSA2IFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhp Yml0LWxvY2FsLXZhcmlhYmxlcy1wIGhhY2stbG9jYWwtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwt bGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDEwIFtoYWNr LWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8t bW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmlu ZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAg ZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxd IDQgW2ZpbGUtcmVtb3RlLXAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDI1 IFtnZXRlbnYgdmMtc2Njcy1zZWFyY2gtcHJvamVjdC1kaXIgdmMtcG9zc2libGUtbWFzdGVyICIj PGNvbXBpbGVkIDB4ZDRhODA1NjA4MmMwZjQwPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1w bGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNjY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJh Y2tlbmQgIiM8Y29tcGlsZWQgLTB4MTJjOWM3ZTdhNWY0ZjcwPiIgbWFwYyB2Yy1yZWdpc3RlcmVk IHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlXSA0 IFtmb3JtYXQgdmMtcG9zc2libGUtbWFzdGVyICIjPGNvbXBpbGVkIC0weDczM2RlZTFmN2QzZjBj MD4iIG1hcGNhciB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJl ZCB2Yy1yY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHgxODZlNmI4 MTg1YTBiMGYwPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0 ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xXSA2IFtnbG9i YWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDQgW2ZpbGUtbmFt ZS1zYW5zLXZlcnNpb25zIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUg bm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwt bGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAyNSBb ZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0 by1tb2RlLTEgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZV0gMzIgW3ZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1y ZWdpc3RlcmVkIHZjLXNjY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQg LTB4MTVkNzIxZmVhZTcxODhiPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVm cmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0XSAzIFtmaWxlLXJlbW90ZS1wIGhhY2st bG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDkgW2ZpbGUtdHJ1ZW5hbWUgZmls ZS10cnVlbmFtZSBmaWxlLXRydWVuYW1lIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0 IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSAyMCBbYmFja3VwLWZpbGUt bmFtZS1wIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qt c2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5p bF0gOSBbbWFrZS1zeW1ib2wgc2VxLWZpbHRlciBoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmluZC12 YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5XSAzIFtzZXQtYXV0by1tb2RlLTEgc2V0LWF1dG8tbW9kZSBub3Jt YWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAxNiBb Y3JlYXRlLWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwg ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDE2IFtkaXItbG9jYWxz LWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMTEgW2Zp bGUtbmFtZS1ub25kaXJlY3RvcnkgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0 LXJlZ2lzdGVyZWQgdmMtc3JjLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVk IC0weDZkMzNmMTY3YTVmNGY3MD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJl ZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSAzIFthYmJyZXZpYXRlLWZpbGUtbmFtZSBm aW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFs IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZl bHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDI4IFtmaWxlcy0tdHJhbnNm b3JtLWZpbGUtbmFtZSBtYWtlLWF1dG8tc2F2ZS1maWxlLW5hbWUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwg ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDEzIFthZGQtaG9vayB0ZXh0LW1vZGUgc2V0 LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9y bWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFz dC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMTMgW3NlYXJjaC1iYWNrd2FyZCBoYWNrLWxv Y2FsLXZhcmlhYmxlcy0tZmluZC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1v ZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsXSA4IFtmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA3IFt2Yy1jdnMtcmVnaXN0 ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4NjMxYmIxNjdhNWY0ZjcwPiIgbWFw YyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAzIFtkaXItbG9jYWxzLWZpbmQt ZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJs ZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRv LW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldF0gOSBbZmluZC1maWxlLW5hbWUtaGFuZGxlciB2Yy1yZWdpc3RlcmVk IHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwg ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGVdIDcgW2V4cGFuZC1maWxlLW5hbWUgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbF0gOCBbcnVuLWhvb2tzIGdlbmVyYXRlLW5ldy1idWZmZXIgY3JlYXRlLWZpbGUtYnVmZmVy IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1z ZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUg bmlsIG5pbCBuaWwgbmlsXSAzIFt1bmlxdWlmeS1yYXRpb25hbGl6ZS1jb25mbGljdGluZy1zdWJs aXN0IHVuaXF1aWZ5LXJhdGlvbmFsaXplLWEtbGlzdCB1bmlxdWlmeS1yYXRpb25hbGl6ZSB1bmlx dWlmeS1yYXRpb25hbGl6ZS1maWxlLWJ1ZmZlci1uYW1lcyB1bmlxdWlmeS0tY3JlYXRlLWZpbGUt YnVmZmVyLWFkdmljZSBjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2Fs bC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDQ0IFtmaWxlcy0tdHJhbnNmb3Jt LWZpbGUtbmFtZSBtYWtlLWF1dG8tc2F2ZS1maWxlLW5hbWUgYXV0by1zYXZlLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hp bGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gNiBbc2VhcmNoLWZvcndhcmQg aGFjay1sb2NhbC12YXJpYWJsZXMtLWZpbmQtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVz IHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbF0g MyBbYWRkLWhvb2sgZ2xvYmFsLWVsZG9jLW1vZGUtY21oaCBraWxsLWFsbC1sb2NhbC12YXJpYWJs ZXMgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAz IFtydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwt bGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBu aWwgbmlsXSA3IFt2Yy1wb3NzaWJsZS1tYXN0ZXIgIiM8Y29tcGlsZWQgMHgzOTZhNTIxMjRiYzBm NDA+IiBtYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVy ZWQgdmMtcmNzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDYzMDky NzIwYTVmNGY3MD4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3Rh dGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3RdIDQgW2ZpbGUtZGlyZWN0b3J5LXAgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2Fs bC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0g MTAgWyIjPGNvbXBpbGVkIDB4YjU1YTFiZTgwOTQ2Zj4iIGZpbGVzLS10cmFuc2Zvcm0tZmlsZS1u YW1lIG1ha2UtbG9jay1maWxlLW5hbWUgaW5zZXJ0LWZpbGUtY29udGVudHMgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQt ZXhlY3V0ZSBuaWwgbmlsXSAzIFttYWtlLWNsb3N1cmUgc2VxLWZpbHRlciBoYWNrLWxvY2FsLXZh cmlhYmxlcy0tZmluZC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9k ZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1m aWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSA0IFt1bmlxdWlmeS1yYXRpb25hbGl6 ZSB1bmlxdWlmeS1yYXRpb25hbGl6ZS1maWxlLWJ1ZmZlci1uYW1lcyB1bmlxdWlmeS0tY3JlYXRl LWZpbGUtYnVmZmVyLWFkdmljZSBjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0 IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gMyBbZGly ZWN0b3J5LWFiYnJldi1hcHBseSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBmaW5kLWJ1ZmZlci12aXNp dGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVj dXRlIG5pbCBuaWwgbmlsIG5pbF0gNCBbZXhwYW5kLWZpbGUtbmFtZSB2Yy1jdnMtcmVnaXN0ZXJl ZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4M2E5Y2RhMGE1ZjRmNzA+IiBtYXBjIHZj LXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgZXZhbF0gMTAgW3J1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2Fs bC1pbnRlcmFjdGl2ZWx5XSA0IFt2Yy1maWxlLWNsZWFycHJvcHMgdmMtcmVmcmVzaC1zdGF0ZSBy dW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFz dC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMjgg W2ZpbmQtbmV3LWJ1ZmZlci1maWxlLWNvZGluZy1zeXN0ZW0gYWZ0ZXItaW5zZXJ0LWZpbGUtc2V0 LWNvZGluZyBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwg bmlsXSAzIFtzZXEtbWFwIHNlcS1maWx0ZXIgaGFjay1sb2NhbC12YXJpYWJsZXMtLWZpbmQtdmFy aWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNh bGwtaW50ZXJhY3RpdmVseV0gMyBbaGFjay1sb2NhbC12YXJpYWJsZXMtZmlsdGVyIGhhY2stbG9j YWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDMgW2NhbGxlZC1pbnRlcmFjdGl2ZWx5 LXAgZm9udC1sb2NrLW1vZGUgZm9udC1sb2NrLWNoYW5nZS1tb2RlIHRleHQtbW9kZSBzZXQtYXV0 by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDYgW2JvdW5kcCBy dW4tbW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxp c3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwXSAzIFtmaWxlLW1vZGVzIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbF0gNyBbdGV4dC1tb2Rl IHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2Rl IG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSAxMCBbZm9y bWF0LWRlY29kZSBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWwgbmlsIG5pbF0gMTAgW2VwYS1maWxlLWZpbmQtZmlsZS1ob29rIHJ1bi1ob29rcyBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gNCBbYWRkLWhvb2sgZm9u dC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVybi1vbi1mb250LWxvY2staWYtZGVzaXJl ZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1t b2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldF0gNCBbaGFjay1kaXItbG9jYWwtLWdl dC12YXJpYWJsZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVz IHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbF0g OCBbZWxkb2MtLXN1cHBvcnRlZC1wIHR1cm4tb24tZWxkb2MtbW9kZSBnbG9iYWwtZWxkb2MtbW9k ZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2 YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGVdIDMgW3NldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlh Ymxlcy1wcm9wLWxpbmUgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1t b2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1t b2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsXSA3IFtpbmhpYml0LWxvY2FsLXZhcmlh Ymxlcy1wIHNldC1hdXRvLW1vZGUtMSBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMTMgW3NnbWwteG1sLWF1dG8tY29kaW5n LWZ1bmN0aW9uIGZpbmQtYXV0by1jb2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2VydC1maWxlLWNv bnRlbnRzIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUg bGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMyBbdmMtYnpyLXJlZ2lzdGVyZWQg dmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weGNiYTRhMWZlYWU3MTg4Yj4iIG1hcGMgdmMt cmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gNCBbZmlsZS1uYW1lLWRpcmVjdG9yeSB2 Yy1jdnMtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4ZDk5NzYxZmVh ZTcxODhiPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBy dW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1u b3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWxdIDQgW2dsb2JhbC1lbGRvYy1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9k ZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUg YWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAzIFtmb3JtYXQgdmMtcG9z c2libGUtbWFzdGVyICIjPGNvbXBpbGVkIDB4MWU1Y2E0MTBhN2JjYzNhZT4iIG1hcGNhciB2Yy1j aGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1zcmMtcmVnaXN0 ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgLTB4MTg1YmRhMWZlYWU3MTg4Yj4iIG1h cGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFm dGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMV0gMyBbdmMtcmVnaXN0ZXJlZCB2Yy1i YWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbF0gNCBbZm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVy bi1vbi1mb250LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWlu LWJ1ZmZlcnMgcnVuLWhvb2tzIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDMgWyIj PGNvbXBpbGVkIC0weDEwN2QxYTFmZWFlNzE4OGI+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFj a2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0t ZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSA0IFt2 Yy1tYWtlLWJhY2tlbmQtc3ltIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1zY2NzLXJlZ2lzdGVy ZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0weDExNWRjZTFmZWFlNzE4OGI+IiBtYXBj IHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXRdIDMgW2ZpbGUtbmFtZS1kaXJlY3RvcnkgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5k IHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9z ZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFs LWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1l eGVjdXRlXSAzIFtzZXQtbWF0Y2gtZGF0YSAiIzxjb21waWxlZCAweGI1NWExYmU4MDk0NmY+IiBh YmJyZXZpYXRlLWZpbGUtbmFtZSBmaW5kLWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAzIFtm aW5kLWZpbGUtbmFtZS1oYW5kbGVyIG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSBhdXRvLXNhdmUt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAzIFt1bmlx dWlmeS1nZXQtcHJvcG9zZWQtbmFtZSB1bmlxdWlmeS1yYXRpb25hbGl6ZSB1bmlxdWlmeS1yYXRp b25hbGl6ZS1maWxlLWJ1ZmZlci1uYW1lcyB1bmlxdWlmeS0tY3JlYXRlLWZpbGUtYnVmZmVyLWFk dmljZSBjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQg ZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSAzIFthdXRvLXNhdmUtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDQgW3ZjLWdpdC1y ZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxMThkMGExZmVhZTcxODhi PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9v a3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAzIFtnZW5lcmF0ZS1u ZXctYnVmZmVyIHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzIGVsaXNwLWdldC1mbnN5bS1hcmdzLXN0 cmluZyBlbGlzcC1lbGRvYy1mdW5jYWxsICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2 MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMTc+IiBlbGRvYy1kb2N1bWVudGF0aW9uLWRlZmF1 bHQgZWxkb2MtLWludm9rZS1zdHJhdGVneSBlbGRvYy1wcmludC1jdXJyZW50LXN5bWJvbC1pbmZv ICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1i ZGFfMTI+IiBhcHBseSB0aW1lci1ldmVudC1oYW5kbGVyIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDQg W2ppdC1sb2NrLWNvbnRleHQtZm9udGlmeSAiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZj NjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzk+IiBhcHBseSB0aW1lci1ldmVudC1oYW5kbGVy IG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxMCBbY29t cGxldGluZy1yZWFkLWRlZmF1bHQgcmVhZC1leHRlbmRlZC1jb21tYW5kLTEgcmVhZC1leHRlbmRl ZC1jb21tYW5kIGJ5dGUtY29kZSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMzAgW3JlZGlzcGxheV9pbnRlcm5hbFwgXChDXCBmdW5j dGlvblwpIGNvbXBsZXRpbmctcmVhZC1kZWZhdWx0IHJlYWQtZXh0ZW5kZWQtY29tbWFuZC0xIHJl YWQtZXh0ZW5kZWQtY29tbWFuZCBieXRlLWNvZGUgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gNDkgW3RyeS1jb21wbGV0aW9uIGNvbXBsZXRl LXdpdGgtYWN0aW9uICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fu b255bW91c19sYW1iZGFfNTQ+IiBjb21wbGV0aW9uLWJhc2ljLXRyeS1jb21wbGV0aW9uICIjPGNv bXBpbGVkIC0weDEwNDgzMjJmNDA2MTY4ZmM+IiAiIzxjb21waWxlZCAtMHgxNWM0YzkyNDkyMWZi YWFhPiIgbWFwYyBzZXEtZG8gc2VxLXNvbWUgY29tcGxldGlvbi0tbnRoLWNvbXBsZXRpb24gY29t cGxldGlvbi10cnktY29tcGxldGlvbiBjb21wbGV0aW9uLS1kby1jb21wbGV0aW9uIGNvbXBsZXRp b24tLWluLXJlZ2lvbi0xICIjPGNvbXBpbGVkIC0weGI2NDUxMTI5NDUxYzZhZj4iIGFwcGx5ICIj PGNvbXBpbGVkIC0weGY0NmYyNTMyYjM5MzYyPiJdIDEwIFsiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2 Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzQ4PiIgc2VsZi1pbnNlcnQtY29t bWFuZCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIGNvbXBsZXRpbmctcmVh ZC1kZWZhdWx0IHJlYWQtZXh0ZW5kZWQtY29tbWFuZC0xIHJlYWQtZXh0ZW5kZWQtY29tbWFuZCBi eXRlLWNvZGUgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMiBb ZXhlY3V0ZS1leHRlbmRlZC1jb21tYW5kIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls XSA0IFtBdXRvbWF0aWNcIEdDIG5pbF0gMjU1OSBbcHJvZmlsZXItcmVwb3J0IGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgZXhlY3V0ZS1leHRlbmRlZC1jb21tYW5kIGZ1bmNh bGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsXSAzKSkgKDI1OTgwIDExNzgxIDM0MTMyIDQyNTAwMCkgbmlsXQo= --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=profile-without-case-fold-search-patch Content-Transfer-Encoding: base64 Cltwcm9maWxlci1wcm9maWxlICIyOC4xIiBjcHUgI3MoaGFzaC10YWJsZSBzaXplIDIxNyB0ZXN0 IGVxdWFsIHJlaGFzaC1zaXplIDEuNSByZWhhc2gtdGhyZXNob2xkIDAuODEyNSBkYXRhIChbcHJv ZmlsZXItc3RhcnQgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBleGVjdXRl LWV4dGVuZGVkLWNvbW1hbmQgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDMgW3JlZGlzcGxheV9pbnRl cm5hbFwgXChDXCBmdW5jdGlvblwpIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA3IFtuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDEwIFtkaXJlY3RvcnktZmlsZXMg bGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWxdIDQgW2ZpbGUtcmVtb3RlLXAgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0 ZSBuaWxdIDE5IFtmaWxlLXRydWVuYW1lIGZpbGUtdHJ1ZW5hbWUgZmlsZS10cnVlbmFtZSBmaW5k LWJ1ZmZlci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSA5IFthYmJyZXZpYXRlLWZpbGUtbmFtZSBsb2Nh dGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1naXQtcmVnaXN0ZXJlZCB2Yy1jYWxs LWJhY2tlbmQgIiM8Y29tcGlsZWQgMHgxZTRhOGZhNmUwMzM3NWNmPiIgbWFwYyB2Yy1yZWdpc3Rl cmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDEyNiBb bG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMtc3ZuLXJlZ2lzdGVyZWQgdmMt Y2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4MWYyY2RiYTZlMDMzNzVjMz4iIG1hcGMgdmMtcmVn aXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dF0gMTIyIFtzZXQtYXV0by1tb2RlLTEgaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIGhh Y2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXQgZXZhbF0gNiBbZmlsZS1yZW1vdGUtcCBoYWNrLWxvY2FsLXZhcmlhYmxlcyBy dW4tbW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxp c3AtLWV2YWwtbGFzdC1zZXhwXSAyMiBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1maW5kLXJv b3QgdmMtZ2l0LXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4MzhjYmRm YjM5MTAyZDM0PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0 ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmls ZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0XSA4NCBbZGlyLWxvY2Fscy0tYWxsLWZpbGVzIGxvY2F0 ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdl dC12YXJpYWJsZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVz IHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldF0gMTUxIFtsb2NhdGUtZG9t aW5hdGluZy1maWxlIHZjLWZpbmQtcm9vdCB2Yy1ienItcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tl bmQgIiM8Y29tcGlsZWQgLTB4MWU2MDA0ZjI3ODg3YTgzZj4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2 Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldF0gMTI5IFt1 bmlxdWlmeS1yYXRpb25hbGl6ZS1maWxlLWJ1ZmZlci1uYW1lcyB1bmlxdWlmeS0tY3JlYXRlLWZp bGUtYnVmZmVyLWFkdmljZSBjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDkxMyBb c3RyaW5nLW1hdGNoIGFzc29jLWRlZmF1bHQgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0 ZV0gNTQgW2xvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1k aXItbG9jYWwtLWdldC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gNTUgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25z IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2Fs bC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDEyIFtzdHJpbmctbWF0Y2ggdmMt cmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSAxMiBbZmlsZS10cnVlbmFtZSBmaW5kLWJ1ZmZl ci12aXNpdGluZyBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDQ3IFtzZ21sLWh0bWwtbWV0YS1hdXRvLWNv ZGluZy1mdW5jdGlvbiBmaW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNvZGluZyBpbnNlcnQtZmls ZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdo aWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDExNSBbbG9jYXRlLWRvbWlu YXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlh YmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1v ZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSA1NyBbbG9jYXRlLWRvbWlu YXRpbmctZmlsZSB2Yy1maW5kLXJvb3QgdmMtaGctcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQg IiM8Y29tcGlsZWQgMHg0OGFhZGZiMzkxMDJkMzI+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFj a2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxl LW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDEwMCBbaW5oaWJp dC1sb2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0by1tb2RlLTEgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDIwNCBbaW5oaWJp dC1sb2NhbC12YXJpYWJsZXMtcCBzZXQtYXV0by1tb2RlLTEgaGFjay1sb2NhbC12YXJpYWJsZXMt cHJvcC1saW5lIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBz ZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBu b3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxl LW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDE3OSBbZm9udC1sb2NrLWRlZmF1bHQtZnVuY3Rpb24g Zm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVybi1vbi1mb250LWxvY2staWYtZGVz aXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxh c3Qtc2V4cF0gMyBbZmlsZS1tb2RlcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0 ZSBuaWwgbmlsIG5pbCBuaWxdIDE1IFtmaWxlLXJlbW90ZS1wIGhhY2stZGlyLWxvY2FsLS1nZXQt dmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBoYWNrLWxvY2FsLXZhcmlhYmxlcyBy dW4tbW9kZS1ob29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQt ZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0XSA0IFtnZXRl bnYgdmMtc2Njcy1zZWFyY2gtcHJvamVjdC1kaXIgdmMtcG9zc2libGUtbWFzdGVyICIjPGNvbXBp bGVkIDB4ZGViOGY4OWUwMmMwZjQwPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMg dmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNjY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQg IiM8Y29tcGlsZWQgMHgxMzNmNWZiMzkxMDJkMzQ+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFj a2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGVdIDEzIFtmaWxl LW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1v ZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgaGFjay1sb2NhbC12YXJpYWJsZXMg c2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2Vs ZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHBdIDI3IFtkaXItbG9jYWxzLS1hbGwtZmlsZXMgbG9jYXRl LWRvbWluYXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0 LXZhcmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVs aXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHld IDEzMyBbZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gODE2IFtp bmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXIt ZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hp bGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMTc3IFtmaWxlLXRydWVuYW1l IGZpbGUtdHJ1ZW5hbWUgZmluZC1idWZmZXItdmlzaXRpbmcgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDM2IFtp bmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlh Ymxlcy1wcm9wLWxpbmUgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwt bW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2Vs ZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNl eHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAxODggW2luaGliaXQtbG9jYWwtdmFyaWFibGVzLXAg aGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRvLW1v ZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2Rl IGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gMTcxIFtmaWxlLWV4aXN0 cy1wICIjPGNvbXBpbGVkIC0weDQ3OTEwMzllM2QzZjBjMD4iIG1hcGNhciB2Yy1jaGVjay1tYXN0 ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1zcmMtcmVnaXN0ZXJlZCB2Yy1j YWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHg2OThhMjc3MzkxMDJkMzQ+IiBtYXBjIHZjLXJlZ2lz dGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0XSAxMSBbc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQg ZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFj dGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA0MjQgW2ZpbGUtZXhpc3RzLXAgIiM8Y29t cGlsZWQgLTB4NDdhNTUyNWUzZDNmMGMwPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0 ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNjY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tl bmQgIiM8Y29tcGlsZWQgMHg2ODg4ZTc3MzkxMDJkMzQ+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMt YmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0XSAzMCBbZmlsZS10cnVlbmFtZSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsXSA1MCBbYWJicmV2aWF0ZS1maWxlLW5hbWUgbG9jYXRlLWRvbWlu YXRpbmctZmlsZSBkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlh YmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1v ZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0XSAxNTkgW2V4cGFuZC1maWxlLW5hbWUg dmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwt bGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGUgbmlsIG5pbF0gMTggW2ZvbnQtbG9jay1tb2RlIGZvbnQtbG9jay1jaGFuZ2UtbW9kZSB0 ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1h dXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0x IGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1z ZXhwIGV2YWwtbGFzdC1zZXhwXSA0IFtmaWxlLWV4aXN0cy1wICIjPGNvbXBpbGVkIC0weDRjMTA0 MDllM2QzZjBjMD4iIG1hcGNhciB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQt cmVnaXN0ZXJlZCB2Yy1yY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQg LTB4MWNjOTRkODhjNmVmZDJjOT4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJl ZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3RdIDU2IFtpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUt bm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDEwNCBbYXV0by1jb2RpbmctYWxpc3QtbG9v a3VwIGZpbmQtYXV0by1jb2Rpbmcgc2V0LWF1dG8tY29kaW5nIGluc2VydC1maWxlLWNvbnRlbnRz IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2 YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMTQ0IFtzZXQtYXV0by1tb2RlLTEgaGFjay1s b2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIGhhY2stbG9jYWwtdmFyaWFibGVzIHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDExIFtm aWxlLXdyaXRhYmxlLXAgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5p bCBuaWwgbmlsXSA2IFtmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IHZjLWNoZWNrLW1hc3Rlci10ZW1w bGF0ZXMgdmMtZGVmYXVsdC1yZWdpc3RlcmVkIHZjLXNyYy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFj a2VuZCAiIzxjb21waWxlZCAweDZjMjAyNzczOTEwMmQzND4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2 Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5k LWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSAzIFtmaWxlLW5h bWUtZGlyZWN0b3J5IHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1 bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZV0gMjggW2ZvbnQtbG9j ay1tb2RlLXNldC1leHBsaWNpdGx5IGZvbnQtbG9jay1tb2RlIGZvbnQtbG9jay1jaGFuZ2UtbW9k ZSB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNl dC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFz dC1zZXhwXSAzIFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0LWxvY2FsLXZhcmlhYmxl cy1wIHNldC1hdXRvLW1vZGUtMSBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSAzMiBbZm9ybWF0LWRlY29kZSBpbnNlcnQtZmlsZS1j b250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbF0gMTQgW2dlbmVyYXRl LW5ldy1idWZmZXIgY3JlYXRlLWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hp bGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTc2IFtm aWxlLW5hbWUtZGlyZWN0b3J5IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5p bF0gMyBbZm9ybWF0IHZjLXBvc3NpYmxlLW1hc3RlciAiIzxjb21waWxlZCAtMHgxNzQzZWRjZjkw NDMzYzUyPiIgbWFwY2FyIHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdp c3RlcmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgx ZTcyMDhmMjc4ODdhODNmPiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVz aC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xXSAz IFtmaW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNvZGluZyBpbnNlcnQtZmlsZS1jb250ZW50cyBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFs IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZl bHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAxMTAgW2dldC1maWxlLWJ1ZmZlciBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsXSA4NiBbZmlsZXMtLXRyYW5zZm9ybS1maWxlLW5hbWUgbWFrZS1h dXRvLXNhdmUtZmlsZS1uYW1lIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWwgbmlsXSAyMyBbaGFjay1sb2NhbC12YXJpYWJsZXMtLWZpbmQtdmFyaWFibGVzIGhhY2st bG9jYWwtdmFyaWFibGVzIHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxl IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2 YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3Rp dmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsXSAxNjUgW3ZjLXBvc3NpYmxlLW1hc3RlciAiIzxjb21w aWxlZCAtMHg0NzFmNWVjYjdkM2YwYzA+IiBtYXBjYXIgdmMtY2hlY2stbWFzdGVyLXRlbXBsYXRl cyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc2Njcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2Vu ZCAiIzxjb21waWxlZCAweDY4ZmVhOTMzOTEwMmQzND4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1i YWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3RdIDQgW2luaGliaXQtbG9jYWwtdmFyaWFi bGVzLXAgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2Fs bC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDE2MSBbcmVtb3ZlLWhvb2sgZm9u dC1sb2NrLW1vZGUgZm9udC1sb2NrLWNoYW5nZS1tb2RlIHRleHQtbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDQgW3NldC1hdXRvLWNvZGlu ZyBpbnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qt c2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5p bF0gMyBbaGFjay1sb2NhbC12YXJpYWJsZXMtLWZpbmQtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFy aWFibGVzIHJ1bi1tb2RlLWhvb2tzIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZp bGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQg ZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDEyMyBbZmlsZS10cnVlbmFtZSBmaWxlLXRydWVu YW1lIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFz dC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1 dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMjYgW2ZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGluaGli aXQtbG9jYWwtdmFyaWFibGVzLXAgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mg dGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsXSAzMiBbZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQt ZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMTQgW2ZpbGUtYXR0cmlidXRlcyBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBl dmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsXSA0MiBbdmMtZmlsZS1nZXRwcm9wIHZjLXJlZ2lzdGVyZWQgdmMt YmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZV0gOSBbYWJicmV2aWF0ZS1maWxlLW5hbWUgZmluZC1idWZmZXItdmlzaXRp bmcgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0 ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxMjAgW2ZpbGUtbmFtZS1ub25kaXJlY3RvcnkgdmMtY2hl Y2stbWFzdGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc2Njcy1yZWdpc3Rl cmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweDZjMjA1OGYzOTEwMmQzND4iIG1hcGMg dmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdo aWxlXSAxOCBbYWJicmV2aWF0ZS1maWxlLW5hbWUgbG9jYXRlLWRvbWluYXRpbmctZmlsZSB2Yy1m aW5kLXJvb3QgdmMtc3ZuLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIC0w eDFjZjVkNjcwYzZlZmQyYzk+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZy ZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZV0gMTMwIFttYWtlLWNsb3N1cmUgc2VxLWZpbHRl ciBoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmluZC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJs ZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAzIFtzZXQt YXV0by1tb2RlLTEgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmlu ZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBl bGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA2IFthYmJyZXZpYXRlLWZpbGUtbmFtZSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsXSAyNDEgW2dsb2JhbC1lbGRvYy1tb2RlLWVuYWJsZS1pbi1idWZmZXJz IHJ1bi1ob29rcyBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0 LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0 ZSBuaWwgbmlsXSAzIFt2Yy1maWxlLXNldHByb3AgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZj LXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVj dXRlXSA2IFt0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGVdIDEwIFtkaXItbG9jYWxzLWZpbmQtZmlsZSBoYWNrLWRpci1sb2NhbC0tZ2V0LXZh cmlhYmxlcyBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZp bGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbF0gNiBbZXhwYW5kLWZpbGUtbmFtZSBmaW5kLWZpbGUtbm9zZWxlY3Qg bGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsXSAxNCBbZmlsZS1yZW1vdGUtcCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0 by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBm aW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4 cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bF0gMTMgW2ZvbnQtbG9jay1tb2RlLXNldC1leHBsaWNpdGx5IGZvbnQtbG9jay1tb2RlIHR1cm4t b24tZm9udC1sb2NrIHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZvbnQtbG9j ay1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyB0ZXh0LW1v ZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldC1hdXRvLW1v ZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXRdIDMgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0 aW5nLWZpbGUgZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJs ZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAxMjAgW2Fi YnJldmlhdGUtZmlsZS1uYW1lIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgdmMtZmluZC1yb290IHZj LWJ6ci1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweDE5MGE1YTczOTEw MmQzMj4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVu LWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlXSAxNTMgW3ZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZp bmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAzIFtzZWFyY2gtZm9yd2Fy ZCBoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmluZC12YXJpYWJsZXMgaGFjay1sb2NhbC12YXJpYWJs ZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZh bC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQt ZXhlY3V0ZV0gNCBbZmlsZS1kaXJlY3RvcnktcCBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxl IGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWlu dGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxMyBb ZmlsZXMtLXRyYW5zZm9ybS1maWxlLW5hbWUgbWFrZS1sb2NrLWZpbGUtbmFtZSBpbnNlcnQtZmls ZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdo aWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAxMCBbYXV0by1jb2Rp bmctcmVnZXhwLWFsaXN0LWxvb2t1cCBmaW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNvZGluZyBp bnNlcnQtZmlsZS1jb250ZW50cyBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4 cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDcgW2ZpbGUt dHJ1ZW5hbWUgZmlsZS10cnVlbmFtZSBmaWxlLXRydWVuYW1lIGZpbmQtZmlsZS1ub3NlbGVjdCBs ZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSAxNSBb ZGlyLWxvY2Fscy1maW5kLWZpbGUgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgaGFjay1k aXItbG9jYWwtdmFyaWFibGVzIGhhY2stbG9jYWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIHRl eHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1 dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEg ZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDEyIFtiYWNrdHJhY2UtZnJhbWUgY2Fs bGVkLWludGVyYWN0aXZlbHktcCBmb250LWxvY2stbW9kZSBmb250LWxvY2stY2hhbmdlLW1vZGUg dGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQt YXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3Qt MSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsXSA0IFtjYWxsZWQtaW50ZXJh Y3RpdmVseS1wIGdldGVudiB2Yy1zY2NzLXNlYXJjaC1wcm9qZWN0LWRpciB2Yy1wb3NzaWJsZS1t YXN0ZXIgIiM8Y29tcGlsZWQgMHhkZWI4ZDI1NzgyYzBmNDA+IiBtYXBjYXIgdmMtY2hlY2stbWFz dGVyLXRlbXBsYXRlcyB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc2Njcy1yZWdpc3RlcmVkIHZj LWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweDEzM2VkZTMzOTEwMmQzND4iIG1hcGMgdmMtcmVn aXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzXSAzIFthZGQtaG9v ayB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNl dC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVj dC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFz dC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMTYgW2NyZWF0ZS1m aWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1l dmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFu ZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA5IFt1bmlxdWlmeS1yYXRpb25hbGl6 ZS1jb25mbGljdGluZy1zdWJsaXN0IHVuaXF1aWZ5LXJhdGlvbmFsaXplLWEtbGlzdCB1bmlxdWlm eS1yYXRpb25hbGl6ZSB1bmlxdWlmeS1yYXRpb25hbGl6ZS1maWxlLWJ1ZmZlci1uYW1lcyB1bmlx dWlmeS0tY3JlYXRlLWZpbGUtYnVmZmVyLWFkdmljZSBjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1m aWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZh bC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDUy IFthYmJyZXZpYXRlLWZpbGUtbmFtZSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHZjLWZpbmQtcm9v dCB2Yy1oZy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweDEzNDg1NWIz OTEwMmQzND4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUg cnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlXSAxMzggW3dhcm4tbWF5YmUtb3V0LW9mLW1lbW9yeSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsXSAzIFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBzZXQtYXV0by1tb2Rl LS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBm aW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFs IGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZl bHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMTAgW3NldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0 ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNh bGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDEwIFtjZHIgdW5p cXVpZnktcmF0aW9uYWxpemUtZmlsZS1idWZmZXItbmFtZXMgdW5pcXVpZnktLWNyZWF0ZS1maWxl LWJ1ZmZlci1hZHZpY2UgY3JlYXRlLWZpbGUtYnVmZmVyIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQg d2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNh bGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWxdIDM4IFtmaWxlLW5h bWUtbm9uZGlyZWN0b3J5IHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1yZWdp c3RlcmVkIHZjLXJjcy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAweDRh ODhjNTczOTEwMmQzMj4iIG1hcGMgdmMtcmVnaXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gt c3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5k LWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlXSA3IFtmaWxlcy0tdHJhbnNmb3JtLWZpbGUtbmFtZSBt YWtlLWF1dG8tc2F2ZS1maWxlLW5hbWUgYXV0by1zYXZlLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwg ZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbF0gMTAgW2ZvbnQtbG9jay1tb2RlIHR1cm4tb24tZm9u dC1sb2NrIHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZvbnQtbG9jay1tb2Rl LWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZh bCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5XSA2IFt1bmlxdWlmeS0tY3JlYXRlLWZpbGUtYnVmZmVyLWFkdmljZSBjcmVhdGUtZmlsZS1i dWZmZXIgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1s YXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhl Y3V0ZSBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxNSBbYXV0by1zYXZlLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0 IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSAzIFt2Yy1maWxlLWdldHBy b3AgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUg ZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZh bCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDYgW2ZpbmQtZmlsZS1uYW1lLWhhbmRsZXIgdmMtcmVn aXN0ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQt ZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxl dCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZC1leGVjdXRlXSA0IFt2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZj LWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1yY3MtcmVnaXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8 Y29tcGlsZWQgMHgzOWFiZTlmMDkxMDJkMzQ+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2Vu ZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5v c2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDMgW2Fzc29jLWRlZmF1 bHQgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDcgW3NldC1tYXRjaC1kYXRh ICIjPGNvbXBpbGVkIDB4YTkwMjY3NDg5MTAyZj4iIGFiYnJldmlhdGUtZmlsZS1uYW1lIGZpbmQt ZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2 YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5p bCBuaWwgbmlsXSA0IFtoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgaGFjay1sb2NhbC12 YXJpYWJsZXMgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZSBuaWxdIDQgW2NhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgZm9udC1sb2NrLW1v ZGUgZm9udC1sb2NrLWNoYW5nZS1tb2RlIHRleHQtbW9kZSBzZXQtYXV0by1tb2RlLTAgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBhZnRlci1maW5k LWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBs ZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDQgW2JhY2t1cC1maWxlLW5hbWUtcCBhZnRl ci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3 aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2Fs bC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbCBuaWxdIDcgW2ZpbGUt bmV3ZXItdGhhbi1maWxlLXAgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhw IGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmls IG5pbCBuaWwgbmlsXSAyMiBbdmMtZmlsZS1jbGVhcnByb3BzIHZjLXJlZnJlc2gtc3RhdGUgcnVu LWhvb2tzIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9z ZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qt c2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDIwIFtm aWxlLW5hbWUtZGlyZWN0b3J5IHZjLWNoZWNrLW1hc3Rlci10ZW1wbGF0ZXMgdmMtZGVmYXVsdC1y ZWdpc3RlcmVkIHZjLXNyYy1yZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAw eGE2MjllZjA5MTAyZDM0PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVz aC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZp bmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGVdIDQgW2ZpbGUtcmVhZGFibGUtcCB2Yy1jdnMtcmVn aXN0ZXJlZCB2Yy1jYWxsLWJhY2tlbmQgIiM8Y29tcGlsZWQgMHg2NDBhZjczMDkxMDJkMzQ+IiBt YXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1yZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXQgZXZhbF0gMTAgW2ZpbmQtZmlsZS1uYW1lLWhhbmRsZXIgbWFrZS1hdXRvLXNh dmUtZmlsZS1uYW1lIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZp bGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFs LWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwg bmlsXSA3IFtzZWFyY2gtZm9yd2FyZCBoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmluZC12YXJpYWJs ZXMgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNldC1hdXRv LW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5vcm1hbC1t b2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxl Y3QgbGV0IHdoaWxlIGxldCBldmFsXSAzIFtjYWxsZWQtaW50ZXJhY3RpdmVseS1wIGZvbnQtbG9j ay1tb2RlIHR1cm4tb24tZm9udC1sb2NrIHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xv YmFsLWZvbnQtbG9jay1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1o b29rcyB0ZXh0LW1vZGUgc2V0LWF1dG8tbW9kZS0wIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 IHNldC1hdXRvLW1vZGUgbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXRdIDMgW3ZjLXNyYy1yZWdpc3RlcmVkIHZjLWNh bGwtYmFja2VuZCAiIzxjb21waWxlZCAweDQ2YTBmNzMwOTEwMmQzND4iIG1hcGMgdmMtcmVnaXN0 ZXJlZCB2Yy1iYWNrZW5kIHZjLXJlZnJlc2gtc3RhdGUgcnVuLWhvb2tzIGFmdGVyLWZpbmQtZmls ZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBl dmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cF0gMyBbdmMtY3ZzLXJlZ2lzdGVyZWQgdmMtY2FsbC1i YWNrZW5kICIjPGNvbXBpbGVkIDB4MTUyMjM3MzA5MTAyZDM0PiIgbWFwYyB2Yy1yZWdpc3RlcmVk IHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9va3MgYWZ0ZXItZmluZC1maWxlIGZp bmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwg ZWxpc3AtLWV2YWwtbGFzdC1zZXhwXSAzIFtmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpbmhpYml0 LWxvY2FsLXZhcmlhYmxlcy1wIHNldC1hdXRvLW1vZGUtMSBoYWNrLWxvY2FsLXZhcmlhYmxlcy1w cm9wLWxpbmUgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3MgdGV4dC1tb2RlIHNl dC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXQtYXV0by1tb2RlIG5v cm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUt bm9zZWxlY3QgbGV0IHdoaWxlXSAxMCBbc2dtbC14bWwtYXV0by1jb2RpbmctZnVuY3Rpb24gZmlu ZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgaW5zZXJ0LWZpbGUtY29udGVudHMgZmluZC1m aWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlz cC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA2IFttYWtlLWxvY2FsLXZhcmlhYmxlIGZpbmQtZmlsZS1u b3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2 YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5k LWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbF0gNCBbbm9ybWFsLW1vZGUgYWZ0ZXItZmluZC1m aWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVjdCBsZXQgd2hpbGUgbGV0 IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhwIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsXSAzIFt1bmlxdWlmeS1yYXRp b25hbGl6ZSB1bmlxdWlmeS1yYXRpb25hbGl6ZS1maWxlLWJ1ZmZlci1uYW1lcyB1bmlxdWlmeS0t Y3JlYXRlLWZpbGUtYnVmZmVyLWFkdmljZSBjcmVhdGUtZmlsZS1idWZmZXIgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0g MyBbYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBsZXQgd2hpbGUgbGV0IGV2YWwgZWxpc3AtLWV2YWwtbGFzdC1zZXhwIGV2YWwtbGFzdC1zZXhw IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5p bF0gNCBbdmMtbWFrZS1iYWNrZW5kLXN5bSB2Yy1kZWZhdWx0LXJlZ2lzdGVyZWQgdmMtc2Njcy1y ZWdpc3RlcmVkIHZjLWNhbGwtYmFja2VuZCAiIzxjb21waWxlZCAtMHgxYjNhYzhmMjc4ODdhODNm PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9v a3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBsZXQgd2hpbGUgbGV0XSA0IFt2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQt cmVnaXN0ZXJlZCB2Yy1zY2NzLXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVk IC0weDFiOGZlNGYyNzg4N2E4M2Y+IiBtYXBjIHZjLXJlZ2lzdGVyZWQgdmMtYmFja2VuZCB2Yy1y ZWZyZXNoLXN0YXRlIHJ1bi1ob29rcyBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0 LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGlsZSBsZXRdIDQgW2FkZC1ob29rIGdsb2JhbC1l bGRvYy1tb2RlLWNtaGgga2lsbC1hbGwtbG9jYWwtdmFyaWFibGVzIG5vcm1hbC1tb2RlIGFmdGVy LWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxlY3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdo aWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbF0gMyBbYWxpc3QtZ2V0ICIjPGNvbXBp bGVkIDB4MTE0ZjI4MjEyODhmZmZjZT4iIGFkZC1ob29rIHRleHQtbW9kZSBzZXQtYXV0by1tb2Rl LTAgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0LWF1dG8tbW9kZSBub3JtYWwtbW9kZSBh ZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxl dCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHBdIDQgW3VuaXF1aWZ5LWdldC1w cm9wb3NlZC1uYW1lIHVuaXF1aWZ5LXJhdGlvbmFsaXplIHVuaXF1aWZ5LXJhdGlvbmFsaXplLWZp bGUtYnVmZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNlIGNyZWF0 ZS1maWxlLWJ1ZmZlciBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNw LS1ldmFsLWxhc3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29t bWFuZC1leGVjdXRlIG5pbCBuaWxdIDMgWyIjPGNvbXBpbGVkIDB4YTkwMjY3NDg5MTAyZj4iIGZp bGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSBhdXRvLXNh dmUtbW9kZSBhZnRlci1maW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5v c2VsZWN0IGxldCB3aGlsZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0 LXNleHAgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDMgW21hcGNh ciB2Yy1jaGVjay1tYXN0ZXItdGVtcGxhdGVzIHZjLWRlZmF1bHQtcmVnaXN0ZXJlZCB2Yy1zY2Nz LXJlZ2lzdGVyZWQgdmMtY2FsbC1iYWNrZW5kICIjPGNvbXBpbGVkIDB4ZDA4ZjMwZDg3Nzg1N2Mx PiIgbWFwYyB2Yy1yZWdpc3RlcmVkIHZjLWJhY2tlbmQgdmMtcmVmcmVzaC1zdGF0ZSBydW4taG9v a3MgYWZ0ZXItZmluZC1maWxlIGZpbmQtZmlsZS1ub3NlbGVjdC0xIGZpbmQtZmlsZS1ub3NlbGVj dCBsZXQgd2hpbGVdIDMgW2VwYS1maWxlLWZpbmQtZmlsZS1ob29rIHJ1bi1ob29rcyBhZnRlci1m aW5kLWZpbGUgZmluZC1maWxlLW5vc2VsZWN0LTEgZmluZC1maWxlLW5vc2VsZWN0IGxldCB3aGls ZSBsZXQgZXZhbCBlbGlzcC0tZXZhbC1sYXN0LXNleHAgZXZhbC1sYXN0LXNleHAgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsIG5pbF0gMyBbcnVuLW1vZGUtaG9v a3MgdGV4dC1tb2RlIHNldC1hdXRvLW1vZGUtMCBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBz ZXQtYXV0by1tb2RlIG5vcm1hbC1tb2RlIGFmdGVyLWZpbmQtZmlsZSBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBmaW5kLWZpbGUtbm9zZWxlY3QgbGV0IHdoaWxlIGxldCBldmFsIGVsaXNwLS1ldmFsLWxh c3Qtc2V4cCBldmFsLWxhc3Qtc2V4cCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDQgW21lc3NhZ2Ug ZWxkb2MtbWluaWJ1ZmZlci1tZXNzYWdlIGVsZG9jLS1tZXNzYWdlIGVsZG9jLWRpc3BsYXktaW4t ZWNoby1hcmVhIHJ1bi1ob29rLXdpdGgtYXJncyAiIzxjb21waWxlZCAweDI3OTA3ZDBhMDg3YmY1 ZT4iICIjPGNvbXBpbGVkIDB4NDY4MDY3YjZlZmYwNDY1PiIgZWxpc3AtZWxkb2MtZnVuY2FsbCAi IzxzdWJyIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRh XzE3PiIgZWxkb2MtZG9jdW1lbnRhdGlvbi1kZWZhdWx0IGVsZG9jLS1pbnZva2Utc3RyYXRlZ3kg ZWxkb2MtcHJpbnQtY3VycmVudC1zeW1ib2wtaW5mbyAiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2Zjc1 NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzEyPiIgYXBwbHkgdGltZXItZXZlbnQt aGFuZGxlciBuaWxdIDcgW2ppdC1sb2NrLWNvbnRleHQtZm9udGlmeSAiIzxzdWJyIEY2MTZlNmY2 ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzk+IiBhcHBseSB0aW1l ci1ldmVudC1oYW5kbGVyIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsXSAxMCBbY29tcGxldGluZy1yZWFkLWRlZmF1bHQgcmVhZC1leHRlbmRlZC1jb21tYW5k LTEgcmVhZC1leHRlbmRlZC1jb21tYW5kIGJ5dGUtY29kZSBjb21tYW5kLWV4ZWN1dGUgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gOCBbcmVkaXNwbGF5X2ludGVy bmFsXCBcKENcIGZ1bmN0aW9uXCkgY29tcGxldGluZy1yZWFkLWRlZmF1bHQgcmVhZC1leHRlbmRl ZC1jb21tYW5kLTEgcmVhZC1leHRlbmRlZC1jb21tYW5kIGJ5dGUtY29kZSBjb21tYW5kLWV4ZWN1 dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxNSBbdHJ5LWNvbXBs ZXRpb24gY29tcGxldGUtd2l0aC1hY3Rpb24gIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2 YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV81ND4iIGNvbXBsZXRpb24tYmFzaWMtdHJ5LWNv bXBsZXRpb24gIiM8Y29tcGlsZWQgMHhjODViOGIwZWFlNjk3MDQ+IiAiIzxjb21waWxlZCAtMHgx NWY2ZjMyMDU5MmZjNGVhPiIgbWFwYyBzZXEtZG8gc2VxLXNvbWUgY29tcGxldGlvbi0tbnRoLWNv bXBsZXRpb24gY29tcGxldGlvbi10cnktY29tcGxldGlvbiBjb21wbGV0aW9uLS1kby1jb21wbGV0 aW9uIGNvbXBsZXRpb24tLWluLXJlZ2lvbi0xICIjPGNvbXBpbGVkIC0weDFjNzQ0ZjIxNTUxZWRh OTY+IiBhcHBseSAiIzxjb21waWxlZCAtMHg1NjEwNjcwNjNkMGJhMj4iXSAxOSBbbWluaWJ1ZmZl ci1oaWRlLWNvbXBsZXRpb25zIGNvbXBsZXRpb24tLWRvLWNvbXBsZXRpb24gY29tcGxldGlvbi0t aW4tcmVnaW9uLTEgIiM8Y29tcGlsZWQgLTB4MWM3NDRmMjE1NTFlZGE5Nj4iIGFwcGx5ICIjPGNv bXBpbGVkIC0weDU2MTA2NzA2M2QwYmEyPiIgY29tcGxldGlvbi0taW4tcmVnaW9uIGNvbXBsZXRp b24taW4tcmVnaW9uIG1pbmlidWZmZXItY29tcGxldGUgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bW1hbmQtZXhlY3V0ZSBjb21wbGV0aW5nLXJlYWQtZGVmYXVsdCByZWFkLWV4dGVuZGVkLWNvbW1h bmQtMSByZWFkLWV4dGVuZGVkLWNvbW1hbmQgYnl0ZS1jb2RlIGNvbW1hbmQtZXhlY3V0ZV0gMyBb aW50ZXJhY3RpdmUtZm9ybSBjb21tYW5kLWV4ZWN1dGUgY29tcGxldGluZy1yZWFkLWRlZmF1bHQg cmVhZC1leHRlbmRlZC1jb21tYW5kLTEgcmVhZC1leHRlbmRlZC1jb21tYW5kIGJ5dGUtY29kZSBj b21tYW5kLWV4ZWN1dGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDEgW2V4 ZWN1dGUtZXh0ZW5kZWQtY29tbWFuZCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVj dXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0g NiBbQXV0b21hdGljXCBHQyBuaWxdIDI3MjgpKSAoMjU5ODAgMTE5MDEgNjI5NTAwIDMyMjAwMCkg bmlsXQo= --=-=-= Content-Type: text/plain -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at --=-=-=-- From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 15 Dec 2023 13:48:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17026480673926 (code B ref 66117); Fri, 15 Dec 2023 13:48:01 +0000 Received: (at 66117) by debbugs.gnu.org; 15 Dec 2023 13:47:47 +0000 Received: from localhost ([127.0.0.1]:51768 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rE8Xa-00011E-Kj for submit@debbugs.gnu.org; Fri, 15 Dec 2023 08:47:46 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:48088) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rE8XY-00010M-Dy for 66117@debbugs.gnu.org; Fri, 15 Dec 2023 08:47:44 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id C537510009E; Fri, 15 Dec 2023 08:47:38 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702648057; bh=FHCu51+BWCStyaciMm12sv5QYWIc7cJc+VqhOGfEuMU=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=nckSuIe3+a/r2JWc4mSxP4pBW+IgD/1EbFtaizB0hE4tcQtxpx+/g5iuVlM3q3kqw eS8+/dfabIIESuTML8VEutrn+cgx6np9CHv/iRZpwLKHGRo4YLlcvdXDIsHSXMpILm G2DPG1SVoEfkxPSXCv0JovcKSwQHJIJ/AoXpnlNVsysyiNDg/NzzFlFRkvcqWL7qSI CQ2Vw2Y1C7t3S/gSijXlVHo3dDKvqjGZplgGgk2o7HwMCS4NqQHVNrJK9EVaMy9OpK EH0jXVUIX81ONJDoi+4qWD6LMNDTMXuGB8tI9FBWFzYlVv7yKkSJT38wfqlAjsJt+K zVjPNKSy8f2HQ== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id D412010001D; Fri, 15 Dec 2023 08:47:37 -0500 (EST) Received: from pastel (65-110-221-238.cpe.pppoe.ca [65.110.221.238]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id A2FB7120D8C; Fri, 15 Dec 2023 08:47:37 -0500 (EST) From: Stefan Monnier In-Reply-To: <878r5v20gu.fsf@localhost> (Ihor Radchenko's message of "Fri, 15 Dec 2023 11:01:53 +0000") Message-ID: References: <878r919qfh.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> Date: Fri, 15 Dec 2023 08:47:36 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.036 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > See the attached patch. LGTM, Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 06:06:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170279310320014 (code B ref 66117); Sun, 17 Dec 2023 06:06:01 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 06:05:03 +0000 Received: from localhost ([127.0.0.1]:56504 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEkGt-0005Cj-5S for submit@debbugs.gnu.org; Sun, 17 Dec 2023 01:05:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:60262) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEkGq-0005C6-Gw for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 01:05:01 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rEkGj-00045B-16; Sun, 17 Dec 2023 01:04:53 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=vMATvLtTpvUg/Go2CDJrSWdjS1prTY9Nj8wQu0N8NNw=; b=f+7OfmEe67UN 9Lfc7WXSxrjNXr48XRxDf+GOMi5Ocd4YMAcNR0JK6QlqxKdY0H/zkN0ZdwLj0IbBulliQLjcQlKJ3 nIqnx4gFq+gERdVgxRf5bx3QKlRWoIkuMRFFB0WRAwtyd+ozuMQVlF+YeTexxmOfPz1Glj7wdS3KI QtAdOClemcg5Lviv8pj3Apw+AO9n0xddTvp0D52HXq71EGl7G7nc+w/YxenXXqRfAwHYibGwMTNaL KrhUZVpnrQaVbWzLkm0mTjvmDpcJzZq+IeVF0FLgyk3S8rG+SF7SNfsXGjrOSeXmthfbVXKlCslui 6+gNqkwkPuAt23IdWtSoTg==; Date: Sun, 17 Dec 2023 08:04:34 +0200 Message-Id: <83bkapl5zh.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <878r5v20gu.fsf@localhost> (message from Ihor Radchenko on Fri, 15 Dec 2023 11:01:53 +0000) References: <878r919qfh.fsf@localhost> <87y1dzvvf0.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: Eli Zaretskii , dmitry@gutov.dev, 66117@debbugs.gnu.org, > mattias.engdegard@gmail.com > Date: Fri, 15 Dec 2023 11:01:53 +0000 > > Stefan Monnier writes: > > >> Do I understand correctly that what is needed to implement your > >> suggestion is > >> > >> 1. Remove case_fold_search_ slot from buffer objects > >> 2. Use DEFVAR_LISP for case-fold-search > >> 3. Declare case-fold-search buffer-local > >> 4. Replace BVAR(...) references in C with Vcase_fold_search > > > > Yes (assuming that 3 refers to the use of `make-variable-buffer-local`). > > See the attached patch. Thanks, but I wonder what, if anything, we should say about this change in NEWS? Also, do any of the manuals require any changes wrt this? From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 06:12:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, Ihor Radchenko , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170279351721236 (code B ref 66117); Sun, 17 Dec 2023 06:12:01 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 06:11:57 +0000 Received: from localhost ([127.0.0.1]:56509 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEkNZ-0005WR-5l for submit@debbugs.gnu.org; Sun, 17 Dec 2023 01:11:57 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:23889) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEkNX-0005W9-Hy for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 01:11:56 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id CEDB510009E; Sun, 17 Dec 2023 01:11:48 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702793507; bh=Rqhx431RgUxfxyUGkv4Vq3WDRZIfCk+E/4FiUPaTU+w=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=MKnsazkoVCmxev3nYyICUbQSpwhbZk5gbgsiW5cCwcsNgUqfxusBvRLFtEND7fXdM xivSkLZPRSwjFnVor1B0P1kBkv5H+q+LoHQW7+CVuNRVEIZXE2o09Cmz+rYLlVyWqm yanGvOTB2MuWRkA4N9gtoFHZhFO74i9/Uky2LI6SLFYhnVeAjtDxkb1oVzbwdjkgX8 kLwr4FisEYLDFhg3TNbvmXwdTBt8ayfoiNwQJiBVoqdtoFdIz05MV0TGqs5wmyVqDt QM5gClNwl+iepYqaCJrupBuwW/FwnCsO9U0AgyJdRSNH8PrNvAx+UtvsYHk2zeeWwl 5CVIgbpVXevjg== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id D454A100033; Sun, 17 Dec 2023 01:11:47 -0500 (EST) Received: from pastel (65-110-221-238.cpe.pppoe.ca [65.110.221.238]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id A0789120694; Sun, 17 Dec 2023 01:11:47 -0500 (EST) From: Stefan Monnier In-Reply-To: <83bkapl5zh.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 17 Dec 2023 08:04:34 +0200") Message-ID: References: <878r919qfh.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> Date: Sun, 17 Dec 2023 01:11:46 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.027 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Thanks, but I wonder what, if anything, we should say about this > change in NEWS? Also, do any of the manuals require any changes wrt > this? AFAIK this is a purely internal change with no visible effect at the ELisp level other than a slightly different performance profile when accessing `case-fold-search` (barring subtle inconsistencies in our implementation of let/setq/symbol-value, of course). So, I think it doesn't require any change in the docs or the etc/NEWS. Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 08:31:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: dmitry@gutov.dev, yantar92@posteo.net, mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17028018363531 (code B ref 66117); Sun, 17 Dec 2023 08:31:01 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 08:30:36 +0000 Received: from localhost ([127.0.0.1]:56554 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEmXk-0000ty-Bu for submit@debbugs.gnu.org; Sun, 17 Dec 2023 03:30:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42732) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEmXh-0000bD-La for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 03:30:35 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rEmXZ-00048V-O0; Sun, 17 Dec 2023 03:30:25 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=5KfoF+vIz508h75ACxJZ/XlB8WyvJxxH4gdiggtVSow=; b=Qt0Mm6HpNcPJ MK3aAU42LlbVJ0AqtEKzvDrJCh/aLIPQpYfMFsTXyykEpEA0bfAADSYFnV64cPqsrlHb3kTvd1/Iq U/QbOiUAD/v3rLl1ix4RUGuPRuqnbi6KSMlnWYtLtoUnnaMMAqXb4NRsb7EDLH56rgBk9UOyykMH2 moyWGILWjlbKnHQpqhO5JPzihxk2Hm7BL7vtnUCo8HAYAX+Ye+qZBqOLCjpLAa9XFZlG0ZmM2S76R evdbugJvIc8ivJDMXKr+WbGdNp+Oa50hw21cq0AzWtoRKzZjNBz0I7Q+DijedbMlwSD9cE8mHXQ1X gCb51+eorkVoUwZWgNkdmg==; Date: Sun, 17 Dec 2023 10:30:06 +0200 Message-Id: <83zfy9jkoh.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Stefan Monnier on Sun, 17 Dec 2023 01:11:46 -0500) References: <878r919qfh.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stefan Monnier > Cc: Ihor Radchenko , dmitry@gutov.dev, > 66117@debbugs.gnu.org, mattias.engdegard@gmail.com > Date: Sun, 17 Dec 2023 01:11:46 -0500 > > > Thanks, but I wonder what, if anything, we should say about this > > change in NEWS? Also, do any of the manuals require any changes wrt > > this? > > AFAIK this is a purely internal change with no visible effect at the > ELisp level ??? Then what were these about: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#199 https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#217 https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#283 https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#295 It sounds like there will be some effect on some Lisp programs, at least in some cases, and if so, we should mention those cases, even if we think they are rare. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 10:29:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, Stefan Monnier Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170280893825030 (code B ref 66117); Sun, 17 Dec 2023 10:29:02 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 10:28:58 +0000 Received: from localhost ([127.0.0.1]:56585 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEoOH-0006Ve-G2 for submit@debbugs.gnu.org; Sun, 17 Dec 2023 05:28:57 -0500 Received: from mout01.posteo.de ([185.67.36.65]:60445) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEoOC-0006VD-GX for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 05:28:56 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 1C0B724002A for <66117@debbugs.gnu.org>; Sun, 17 Dec 2023 11:28:44 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702808925; bh=l+A2V0lyDfa9XEFH2ATmtruUQCME+foIjs9hSiddZys=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=e4Ib/ma+287BzyLMfpDuJ8wmBxllv/7bH0ZHm0i8JYIIynRAhS/pLOh/zGEMwMb8o nddoPuoclUO5THEFZ5cOymOQ6c9BM+jJX9FdWf9MJ9PGiqFPsUDQR7V+6KnBDqPDrT DHYtuAyPFUU+aHHkSteJvNPzOLSrnVu/e6rz3kp/QEOAiYkax7uugF2TEVcIf2aAgf lDxlrxxb+toQimWe+AMLIZ87CM3YKKdtHFZ8F6qh16y6v3ES2J+xzKDFBKPkBuBg3i 1RsJkFGJBpADWWOij8MqUCWOm7m4p+MlJSL2ekjuRUoSRBcrg7ZUlDCkEz5KvjCwW8 FWD5fhOJFxRuA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4StK1R6zccz6twn; Sun, 17 Dec 2023 11:28:43 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83zfy9jkoh.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> Date: Sun, 17 Dec 2023 10:31:50 +0000 Message-ID: <878r5tglwp.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> AFAIK this is a purely internal change with no visible effect at the >> ELisp level > It sounds like there will be some effect on some Lisp programs, at > least in some cases, and if so, we should mention those cases, even if > we think they are rare. We have discussed a number of approaches to handle the let-binding performance and to handle sometimes-confusing behaviour of `case-fold-search'. Most of them had problems with breaking the existing behaviour or potentially causing unexpected side effects. Except the one I used in the patch. The messages you linked to discuss problems with _other_ proposed approaches. > ??? Then what were these about: > > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#199 This is about an idea to make let-binding the `case-fold-search' affect current buffer only, but never other buffers. What the patch does is different - it turns `case-fold-search' into an ordinary buffer-local variable, like the ones defined from Elisp. > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#217 > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#283 These two are about creating a new case-fold-search-override that ignores buffer-local bindings. Again, a different idea. > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#295 This was not about this patch, but about a more general problem of case-fold-search serving two purposes - user setting for interactive searches and internal regexp search switch. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 10:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17028094473582 (code B ref 66117); Sun, 17 Dec 2023 10:38:02 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 10:37:27 +0000 Received: from localhost ([127.0.0.1]:56591 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEoWU-0000vh-MC for submit@debbugs.gnu.org; Sun, 17 Dec 2023 05:37:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44340) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEoWR-0000vR-Fa for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 05:37:25 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rEoWK-0005fR-6S; Sun, 17 Dec 2023 05:37:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=IvBu0u5Qx6bL1lcB6sq38FhT3MG7eA5EnfQ5aTsnCtE=; b=DQJKqhWqrrGHgNqdv9ZH HXl27gVPNAEEOzpLqWWR1j3ewXgR9ia4blWb0335M+QW+1kOr8aNYFAoKGlgZf2EypAcwHdmIp7wZ YKvGRgN++hdtXmgeCKOCEnGaAAVVMr89vB7ncsAvVP9TFeaGV5DqQLfLUwkS7WZWofkg8csojxAOt BkUHEwjP8LmqwXutySv4FDBrS5D1NYObmMoGQx1/vLqF7pgDu+ebRip5zpuums/yMYJvlD9Xsmsi3 rA5B+M6CEX0pjbylXb6FKZaS08gX7KxpnXYVA8dz0s2umlLFlkaOtnWwgjLGX84Rbvx4fjtXZKFNh FTAXRM3jppE05Q==; Date: Sun, 17 Dec 2023 12:36:59 +0200 Message-Id: <83ttohjet0.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <878r5tglwp.fsf@localhost> (message from Ihor Radchenko on Sun, 17 Dec 2023 10:31:50 +0000) References: <878r919qfh.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: Stefan Monnier , dmitry@gutov.dev, > 66117@debbugs.gnu.org, mattias.engdegard@gmail.com > Date: Sun, 17 Dec 2023 10:31:50 +0000 > > Eli Zaretskii writes: > > >> AFAIK this is a purely internal change with no visible effect at the > >> ELisp level > > > It sounds like there will be some effect on some Lisp programs, at > > least in some cases, and if so, we should mention those cases, even if > > we think they are rare. > > We have discussed a number of approaches to handle the let-binding > performance and to handle sometimes-confusing behaviour of > `case-fold-search'. Most of them had problems with breaking the existing > behaviour or potentially causing unexpected side effects. Except the one > I used in the patch. > > The messages you linked to discuss problems with _other_ proposed > approaches. Maybe I'm confused, but won't this change have at least _some_ effect on Lisp programs? For example, what about this fragment from the ELisp manual, which describes the effect of make-variable-buffer-local: A peculiar wrinkle of this feature is that binding the variable (with ‘let’ or other binding constructs) does not create a buffer-local binding for it. Only setting the variable (with ‘set’ or ‘setq’), while the variable does not have a ‘let’-style binding that was made in the current buffer, does so. Will this case work the same after the change as it did before? From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 10:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: yantar92@posteo.net Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170281001414500 (code B ref 66117); Sun, 17 Dec 2023 10:47:02 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 10:46:54 +0000 Received: from localhost ([127.0.0.1]:56615 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEofd-0003ln-QL for submit@debbugs.gnu.org; Sun, 17 Dec 2023 05:46:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58668) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEofb-0003lX-Np for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 05:46:52 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rEofV-0007gy-3i; Sun, 17 Dec 2023 05:46:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=hqDyTtm5zr2Wa8EcKOCfFiOQF4hTwrZpaMKiY5N+VUU=; b=Pg8UwyMfTRBNsdOopJGk GvbKZl+i4hGTykdqDqHG4aRCndjiwDlwRqDD4Y0t6xUhi3Av15ifj5IUOwgOHm1O9e9PJ8PXKFEry 2+1FraQbt4r8HllIc4c+w4uJp5PYi1PFXcGcK/KiBoeuzoQyJWZ+L6oCI+EiFiSl0IeX//1K+IEc4 pHUFzJY3eUcWI0DQTmESs2HUqbJFGgIGo0zsBdpQiWM1cSiB3gPvxHTOgguRlVVSwS9svNBRLoygW 4rUcPFvDJpPkkzJgIVyN7S8tq5uk3BG2gpUhRNvS6xPMRrWyg54SBock3TG6WDzWWyCFY/dFrkuvy bLUh8le0FQullg==; Date: Sun, 17 Dec 2023 12:46:28 +0200 Message-Id: <83sf41jed7.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <83ttohjet0.fsf@gnu.org> (message from Eli Zaretskii on Sun, 17 Dec 2023 12:36:59 +0200) References: <878r919qfh.fsf@localhost> <83plzas3pg.fsf@gnu.org> <87r0jqw8u9.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, > monnier@iro.umontreal.ca > Date: Sun, 17 Dec 2023 12:36:59 +0200 > From: Eli Zaretskii > > Maybe I'm confused, but won't this change have at least _some_ effect > on Lisp programs? For example, what about this fragment from the > ELisp manual, which describes the effect of > make-variable-buffer-local: > > A peculiar wrinkle of this feature is that binding the variable > (with ‘let’ or other binding constructs) does not create a > buffer-local binding for it. Only setting the variable (with ‘set’ > or ‘setq’), while the variable does not have a ‘let’-style binding > that was made in the current buffer, does so. > > Will this case work the same after the change as it did before? Also, re this part of the patch: > + DEFVAR_LISP ("case-fold-search", Vcase_fold_search, > + doc: /* Non-nil if searches and matches should ignore case. */); > + Vcase_fold_search = Qt; > + DEFSYM (Qcase_fold_search, "case-fold-search"); > + Fmake_variable_buffer_local (Qcase_fold_search); Which value does this set to t -- the global default? Isn't that different from what we had before? From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 10:50:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170281018415231 (code B ref 66117); Sun, 17 Dec 2023 10:50:01 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 10:49:44 +0000 Received: from localhost ([127.0.0.1]:56620 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEoiO-0003xb-Ei for submit@debbugs.gnu.org; Sun, 17 Dec 2023 05:49:44 -0500 Received: from mout01.posteo.de ([185.67.36.65]:59657) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEoiL-0003xH-Jk for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 05:49:43 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 38D4424002A for <66117@debbugs.gnu.org>; Sun, 17 Dec 2023 11:49:34 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702810174; bh=mun0P6ADVyf/HmhJp8OB88IA0CoBE8nBUXzChTtRWKs=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=cYjmeq6mPiawfKCUSRSH3mdyYhcth5uIOgeFF5dsDZGSk91R0pn6VPl9vDVepfs0e ybs7pmPXM2WbO+uBk9+W4UYW1lklAo38CAxUZG5irigtGDUIQJgus5CZ8YzLi+Q1Kz Qa9VvTWkmYGu8UFGYLM/N/agafsMZX1wsAlHW2HI94Cwomz+JLF7BfSRb3cnfVP8Lk v6tTlRJVGZNfcP0sb7FTeRs4mLoLYPWBMmD7Nureq8wCZ8e38C3kOXCHghWV6qe0n8 Hb/CYyfidl9RFtBvO8zD88iyG238fDnMbYRgxsAC+DDb5kxJHmqITdM0TDt1c6rUOB QQex+/dYGXwVA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4StKTS6DtNz9rxB; Sun, 17 Dec 2023 11:49:32 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83ttohjet0.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> Date: Sun, 17 Dec 2023 10:52:33 +0000 Message-ID: <8734w114pa.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> The messages you linked to discuss problems with _other_ proposed >> approaches. > > Maybe I'm confused, but won't this change have at least _some_ effect > on Lisp programs? For example, what about this fragment from the > ELisp manual, which describes the effect of > make-variable-buffer-local: > > A peculiar wrinkle of this feature is that binding the variable > (with =E2=80=98let=E2=80=99 or other binding constructs) does not cr= eate a > buffer-local binding for it. Only setting the variable (with =E2=80= =98set=E2=80=99 > or =E2=80=98setq=E2=80=99), while the variable does not have a =E2= =80=98let=E2=80=99-style binding > that was made in the current buffer, does so. > > Will this case work the same after the change as it did before? I read this differently - when you have (let ((var 'val)) (make-variable-buffer-local 'var)) it will not set buffer-local value to 'val. You have to set the buffer value explicitly via set/setq outside let context. And the patch makes `case-fold-search' buffer-local internally. Nothing needs to call (make-variable-buffer-local 'case-fold-search). --=20 Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 10:54:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170281042415658 (code B ref 66117); Sun, 17 Dec 2023 10:54:02 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 10:53:44 +0000 Received: from localhost ([127.0.0.1]:56625 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEomG-00044U-5f for submit@debbugs.gnu.org; Sun, 17 Dec 2023 05:53:44 -0500 Received: from mout01.posteo.de ([185.67.36.65]:60985) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEomE-00044H-A1 for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 05:53:43 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 7F17F240028 for <66117@debbugs.gnu.org>; Sun, 17 Dec 2023 11:53:35 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702810415; bh=GjQ2gXA1rfYOZ2DZiFOO/DOdB7L9vaV3exdruL5QQl4=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=OUJzA89NlbGaK0VHUeAI4u4psVmuBw/L9at4Nsk2zI/AbHwFv5GBF0rqsVQ62xvpF Ze8ZqwKqn2UbzmLMRJ6p3uyoWq+LApv0bZZtkk6hCs+j5wO+gL6yt4pvM2Xx9ev30e OojY+EV9Yj6ASLJwK4iYCjAVj12/XVc+5Bb5S5UgUPOYyF8YLViZFfEG+awfuOoZHD Wc+NjTC+WdJjncudc+mzK3+m50+7iMQSa/CNkEfBD4I17gNNjomxASI7+lqnqEIK3J BMNa6Wl1apJrFoR0JQiEoQyGivk6UT15qNysv/k0JKnCOJEKzqmXiEbV8QOUDERvbQ lC6tjZxMmxLeA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4StKZ66sZLz9rxF; Sun, 17 Dec 2023 11:53:34 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83sf41jed7.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> Date: Sun, 17 Dec 2023 10:56:45 +0000 Message-ID: <87y1dtyu4y.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: > Also, re this part of the patch: > >> + DEFVAR_LISP ("case-fold-search", Vcase_fold_search, >> + doc: /* Non-nil if searches and matches should ignore case. */); >> + Vcase_fold_search = Qt; >> + DEFSYM (Qcase_fold_search, "case-fold-search"); >> + Fmake_variable_buffer_local (Qcase_fold_search); > > Which value does this set to t -- the global default? Isn't that > different from what we had before? AFAIU, not different. Previously, we had > @@ -4785,7 +4779,6 @@ init_buffer_once (void) > bset_tab_line_format (&buffer_defaults, Qnil); > bset_abbrev_mode (&buffer_defaults, Qnil); > bset_overwrite_mode (&buffer_defaults, Qnil); > - bset_case_fold_search (&buffer_defaults, Qt); So, the default value was Qt previously as well. The DEFVAR_LISP + V... + DEFSYM + Fmake_variable_buffer_local is taken from other buffer-local variables. For example, DEFVAR_LISP ("display-line-numbers-width", Vdisplay_line_numbers_width, doc: /* Minimum width of space reserved for line number display. A positive number means reserve that many columns for line numbers, even if the actual number needs less space. The default value of nil means compute the space dynamically. Any other value is treated as nil. */); Vdisplay_line_numbers_width = Qnil; DEFSYM (Qdisplay_line_numbers_width, "display-line-numbers-width"); Fmake_variable_buffer_local (Qdisplay_line_numbers_width); -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 11:02:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170281091626479 (code B ref 66117); Sun, 17 Dec 2023 11:02:01 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 11:01:56 +0000 Received: from localhost ([127.0.0.1]:56631 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEouC-0006t1-77 for submit@debbugs.gnu.org; Sun, 17 Dec 2023 06:01:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55820) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEouA-0006sm-FP for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 06:01:55 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rEou1-0006cT-0D; Sun, 17 Dec 2023 06:01:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=r1xaHuDqtPv2KrJeFO0gmvpRkK4Q5RO8m5uE6OQegQE=; b=cVpUr0RSxtfbUxGOYhxj 1tuv7k8pNvueAS+Eoakf24m7OM8b72M8Le+H0pmAAh7iJTkM/F4LcZT4HBO2IsrxOocqmLLLY+2YS Z07TrBF1nC1LYgrlaAJTaHu0W2615Br/EE6/HZVOxxWKE5SKqJmlSkIDMi1yLyHiOOTFEPvvDm0ay xrGWrvlt2UUZ1+WofzShUNDP6xF7iop3VnfwhIqv95IHJ+hThTRSMJa1o3tXbffZXUnINHNAy4TLv 05QdWGfO7Dr9En4WqEYGbGTm6oyvrNrHgeB0dntjCzZ3GxurJ0U3jouh1hgQi4mgLFjqZyAKDBjFh EzyAcyd6QKfoTA==; Date: Sun, 17 Dec 2023 13:01:25 +0200 Message-Id: <83r0jljdoa.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <8734w114pa.fsf@localhost> (message from Ihor Radchenko on Sun, 17 Dec 2023 10:52:33 +0000) References: <878r919qfh.fsf@localhost> <83jzpis08a.fsf@gnu.org> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <8734w114pa.fsf@localhost> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: monnier@iro.umontreal.ca, dmitry@gutov.dev, 66117@debbugs.gnu.org, > mattias.engdegard@gmail.com > Date: Sun, 17 Dec 2023 10:52:33 +0000 > > Eli Zaretskii writes: > > > Maybe I'm confused, but won't this change have at least _some_ effect > > on Lisp programs? For example, what about this fragment from the > > ELisp manual, which describes the effect of > > make-variable-buffer-local: > > > > A peculiar wrinkle of this feature is that binding the variable > > (with ‘let’ or other binding constructs) does not create a > > buffer-local binding for it. Only setting the variable (with ‘set’ > > or ‘setq’), while the variable does not have a ‘let’-style binding > > that was made in the current buffer, does so. > > > > Will this case work the same after the change as it did before? > > I read this differently Differently from what? > - when you have > > (let ((var 'val)) > (make-variable-buffer-local 'var)) > > it will not set buffer-local value to 'val. And before the patch what would have happened? > And the patch makes `case-fold-search' buffer-local internally. Nothing > needs to call (make-variable-buffer-local 'case-fold-search). The patch itself calls make-variable-buffer-local. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 11:07:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170281119426936 (code B ref 66117); Sun, 17 Dec 2023 11:07:02 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 11:06:34 +0000 Received: from localhost ([127.0.0.1]:56636 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEoyf-00070N-Vd for submit@debbugs.gnu.org; Sun, 17 Dec 2023 06:06:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58532) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEoyd-000706-Bh for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 06:06:32 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rEoyV-0007OZ-OH; Sun, 17 Dec 2023 06:06:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=A24hUUpDZhpZMT7PyU82G5fcqhFzmGUq/x7/Ego90qo=; b=mTifiKclmSyO h2ng32jDwBhSw1ihENzzg0Dn37nvFuRPw/rdlMVl4jNaVD1EBbhD9ijQF/OjgVl75KE58qdH3R2Td PgGVj0dtRXHKwxuv7P4ldRSOTmJtNKxKhj7mD+DVG0whPupB+F6QyO81puPoB80ZqzrtGiOaNIUPK J19xlk9pO9kAp4Yvhc86cn3HpcaXDkwywIvtiJkZNBmZeGcT3dFmKImnKY1DXXFqwDHepEszq/KaI tAQ3Cz6MylBLCThISBWfKqYo9Q/e5nx9J5aVkxN/kW3WyTDprCOEncAFxfhtqoRvOaFe/LEHj4MMf T5XW58aWAJafgwN+OUPV4Q==; Date: Sun, 17 Dec 2023 13:06:04 +0200 Message-Id: <83plz5jdgj.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87y1dtyu4y.fsf@localhost> (message from Ihor Radchenko on Sun, 17 Dec 2023 10:56:45 +0000) References: <878r919qfh.fsf@localhost> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, > monnier@iro.umontreal.ca > Date: Sun, 17 Dec 2023 10:56:45 +0000 > > Eli Zaretskii writes: > > > Also, re this part of the patch: > > > >> + DEFVAR_LISP ("case-fold-search", Vcase_fold_search, > >> + doc: /* Non-nil if searches and matches should ignore case. */); > >> + Vcase_fold_search = Qt; > >> + DEFSYM (Qcase_fold_search, "case-fold-search"); > >> + Fmake_variable_buffer_local (Qcase_fold_search); > > > > Which value does this set to t -- the global default? Isn't that > > different from what we had before? > > AFAIU, not different. Previously, we had > > > @@ -4785,7 +4779,6 @@ init_buffer_once (void) > > bset_tab_line_format (&buffer_defaults, Qnil); > > bset_abbrev_mode (&buffer_defaults, Qnil); > > bset_overwrite_mode (&buffer_defaults, Qnil); > > - bset_case_fold_search (&buffer_defaults, Qt); > > So, the default value was Qt previously as well. buffer_defaults is not the default value, AFAIU. > The DEFVAR_LISP + V... + DEFSYM + Fmake_variable_buffer_local is taken > from other buffer-local variables. For example, I'm talking specifically about any changes from previous behavior visible from Lisp. I think we should test all of the following: default-value default-boundp setq-default default-toplevel-value set-default-toplevel-value and make sure they all behave exactly the same, both in and out of a let-binding. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 11:17:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17028118195484 (code B ref 66117); Sun, 17 Dec 2023 11:17:01 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 11:16:59 +0000 Received: from localhost ([127.0.0.1]:56652 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEp8k-0001QM-Ss for submit@debbugs.gnu.org; Sun, 17 Dec 2023 06:16:59 -0500 Received: from mout01.posteo.de ([185.67.36.65]:46365) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEp8h-0001Q6-8C for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 06:16:57 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 17DDE240027 for <66117@debbugs.gnu.org>; Sun, 17 Dec 2023 12:16:47 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702811808; bh=CnEK4WPNzTPJt9mUaBe5sGTWZfLCaf9uQ44WlO62QRg=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=OsWLx3gGjEhAH+KxrbhApdaiuQYq4iU99QMpN5jvu2M1iQ21T66QIq4CW2VEUlT4H 0IahhElonG7ypFeM7Rt7k9pICkrjBFbo/odPPNZW59hNpXe3nWEHIH2I0LtQ5mHIKe mBBIpTED2pXlymklEjUBkOjdkhZQAmTX4H2IH2doFq6qsk1NShikcU+Vsnd/m0a+ei YPOCfSUEm4tXncs7B0YXtR+JionHIvVXowXQhVo1nf5lkf6h5xDMY19Ftk0MknCeVg 65gnUFTyI/9ALQkL/y9QtkQA9afFzE9DaUXAd6+PJLWF91mu/Sz4NE5nvk78EkVXDp mQXAWtH+faIEA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4StL4v0gm7z6twx; Sun, 17 Dec 2023 12:16:46 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83plz5jdgj.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> Date: Sun, 17 Dec 2023 11:19:57 +0000 Message-ID: <87v88xyt2a.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> AFAIU, not different. Previously, we had >> >> > @@ -4785,7 +4779,6 @@ init_buffer_once (void) >> > bset_tab_line_format (&buffer_defaults, Qnil); >> > bset_abbrev_mode (&buffer_defaults, Qnil); >> > bset_overwrite_mode (&buffer_defaults, Qnil); >> > - bset_case_fold_search (&buffer_defaults, Qt); >> >> So, the default value was Qt previously as well. > > buffer_defaults is not the default value, AFAIU. Unless I misunderstand, the comment says that buffer_defaults does hold the default values. /* This structure holds the default values of the buffer-local variables that have special slots in each buffer. The default value occupies the same slot in this structure as an individual buffer's value occupies in that buffer. Setting the default value also goes through the alist of buffers and stores into each buffer that does not say it has a local value. */ extern struct buffer buffer_defaults; >> The DEFVAR_LISP + V... + DEFSYM + Fmake_variable_buffer_local is taken >> from other buffer-local variables. For example, > > I'm talking specifically about any changes from previous behavior > visible from Lisp. I think we should test all of the following: > > default-value > default-boundp > setq-default > default-toplevel-value > set-default-toplevel-value > > and make sure they all behave exactly the same, both in and out of a > let-binding. The patch did not introduce test failures for make check on my side. Are there existing tests for buffer-locals? Or do we need to add them? -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 11:24:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17028122106154 (code B ref 66117); Sun, 17 Dec 2023 11:24:02 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 11:23:30 +0000 Received: from localhost ([127.0.0.1]:56656 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEpF3-0001bB-QB for submit@debbugs.gnu.org; Sun, 17 Dec 2023 06:23:30 -0500 Received: from mout02.posteo.de ([185.67.36.66]:48307) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEpEz-0001ar-SL for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 06:23:28 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 90A02240103 for <66117@debbugs.gnu.org>; Sun, 17 Dec 2023 12:23:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702812198; bh=ZrAlSE4gf/bMVdVvD2uC6h6RQCEFkvdAnRZSl448nmc=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=ab+HyDOnRbe1WSDEbkXDMS0bV4gD7T6T8Y2g0nghG+lFlSIMA8V0lQQODUvUDKR8z RqIV1ViaWbtRoerqz02AW66k8a1+0spmmwUwUpwfsDZ5f5DfeaiOb7g4oAcAhCcd/i +MtYLpPvMczSbweLE5p930E6+SdUZwUI/byPqTGvqJUeqxQuZgWR8sqhNhBWYcAotM UVPJ+6nEstr/gO1qiPVUsVxLcAZdLJk4ZNIJC50OJHj3LWpwUY5Uj3ya9NpRYGzBEn gTMYQqBxFuBgjSNo1Km/7TONGBuaJl7+DT9Ibt93rh7a1Wx5GsTT7xyfmK3Gbu8ISE 7bsjdNoY3GQQQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4StLDQ06Rfz6tm4; Sun, 17 Dec 2023 12:23:17 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83r0jljdoa.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <8734w114pa.fsf@localhost> <83r0jljdoa.fsf@gnu.org> Date: Sun, 17 Dec 2023 11:26:28 +0000 Message-ID: <87r0jlysrf.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> > Maybe I'm confused, but won't this change have at least _some_ effect >> > on Lisp programs? For example, what about this fragment from the >> > ELisp manual, which describes the effect of >> > make-variable-buffer-local: >> > >> > A peculiar wrinkle of this feature is that binding the variable >> > (with =E2=80=98let=E2=80=99 or other binding constructs) does not= create a >> > buffer-local binding for it. Only setting the variable (with =E2= =80=98set=E2=80=99 >> > or =E2=80=98setq=E2=80=99), while the variable does not have a = =E2=80=98let=E2=80=99-style binding >> > that was made in the current buffer, does so. >> > >> > Will this case work the same after the change as it did before? >>=20 >> I read this differently > > Differently from what? AFAIU, you are concerned that my call to Fmake_variable_buffer_local may have unexpected side effects because make-variable-buffer-local can be tricky, as stated in the quoted paragraph. But it is not how I read this. Or did you mean something else? >> - when you have >>=20 >> (let ((var 'val)) >> (make-variable-buffer-local 'var)) >>=20 >> it will not set buffer-local value to 'val. > > And before the patch what would have happened? I did not make changes to `make-variable-buffer-local' in the patch. Nothing changed there. I just wanted to make sure that we understand that paragraph the same way - that `make-variable-buffer-local' has "wrinkle" when called inside let context. >> And the patch makes `case-fold-search' buffer-local internally. Nothing >> needs to call (make-variable-buffer-local 'case-fold-search). > > The patch itself calls make-variable-buffer-local. On top level, when Emacs defines all other variables. So, my call to make-variable-buffer-local is not inside let and thus should not have any problem with the paragraph you quoted. --=20 Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 12:07:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17028147908867 (code B ref 66117); Sun, 17 Dec 2023 12:07:02 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 12:06:30 +0000 Received: from localhost ([127.0.0.1]:56664 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEpug-0002Iu-Db for submit@debbugs.gnu.org; Sun, 17 Dec 2023 07:06:30 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42874) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEpuc-0002If-7S for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 07:06:27 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rEpuV-0004tG-FQ; Sun, 17 Dec 2023 07:06:19 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=ZM+qECnGBGDpTrHucmqkAJ2qGRQ8Dv2xKlOPy/BXawQ=; b=HaoKLsrHYrx/ h6fEPgn0x8kAme9RpA0u8/rriXhVHIJt7xb/0tg6vIfpqCA4v14+DBZ1YIgcJ0f/UShIaI67G3OwO 12IuCXMXobXQCiBE1blojwTiwGqtI4OT6+oowtW3NCUsF4X5Xj2w+QZiqrPZnHH7mlrvgmguQwTLJ F7PLzZL6hG1+h4V8Rq1lFRCeeWGL+2GEr5B487kunn8p3T5Gu7g12WZDpsZlOq/aEWrQG5ntkrcYx ei0jQkJGwClpgw7Avl7Tyz2wcDUyx69Qekg4kuxKm6NwQ3cjIFUkTZAx+BQJZfH+9NFlNkDAhPKAq bKvUbBVUf6pdQa+o8rKKjw==; Date: Sun, 17 Dec 2023 14:06:00 +0200 Message-Id: <83o7epjaon.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87v88xyt2a.fsf@localhost> (message from Ihor Radchenko on Sun, 17 Dec 2023 11:19:57 +0000) References: <878r919qfh.fsf@localhost> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, > monnier@iro.umontreal.ca > Date: Sun, 17 Dec 2023 11:19:57 +0000 > > Eli Zaretskii writes: > > > I'm talking specifically about any changes from previous behavior > > visible from Lisp. I think we should test all of the following: > > > > default-value > > default-boundp > > setq-default > > default-toplevel-value > > set-default-toplevel-value > > > > and make sure they all behave exactly the same, both in and out of a > > let-binding. > > The patch did not introduce test failures for make check on my side. Are > there existing tests for buffer-locals? Or do we need to add them? I don't see any such tests. So yes, it would be good to add them. But at the very least we should consider all of the above theoretically and see if any of them are expected/supposed to change as result of this. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 12:16:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170281535017455 (code B ref 66117); Sun, 17 Dec 2023 12:16:02 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 12:15:50 +0000 Received: from localhost ([127.0.0.1]:56689 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEq3h-0004WH-JP for submit@debbugs.gnu.org; Sun, 17 Dec 2023 07:15:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37394) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEq3f-0004Hp-AJ for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 07:15:48 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rEq3X-0000hm-SB; Sun, 17 Dec 2023 07:15:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=tZ/RihUcVvDckY2vg25HqFrS1aeOSedFn1FhWfDJPfY=; b=M2A7hZuXYdH4pMSR7vD6 dBOAwWteBeISuk+UT/P/gnijnp6BY8LU3TH6dfuLa6v5jOJeX/0XZMm0YH95KSCmgDoFyz7in6NlX lI9EcyvpaPMUpsaWZS1BkSVs1SCJa22waqay2c36dx8NxmBYt2fkrsT4GWl8LXGWT/vGle6R+DA6h btTgfyF4FX4Ijs0x7uEM0IOaNCR6XrCFavAT6v22QFPlro2KusBPTMZ8c72yhXaqSrbzgZ9YwuprS 8hx0H4rXNqYXCKBBf5+fljjMMBmFy9n1w3gTL3yCxsWAqwjOuuixVVm1dydrCJKp3HEOZk6+n/tnD lpexKFa9FJPIQw==; Date: Sun, 17 Dec 2023 14:14:55 +0200 Message-Id: <83le9tja9s.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87r0jlysrf.fsf@localhost> (message from Ihor Radchenko on Sun, 17 Dec 2023 11:26:28 +0000) References: <878r919qfh.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <8734w114pa.fsf@localhost> <83r0jljdoa.fsf@gnu.org> <87r0jlysrf.fsf@localhost> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: monnier@iro.umontreal.ca, dmitry@gutov.dev, 66117@debbugs.gnu.org, > mattias.engdegard@gmail.com > Date: Sun, 17 Dec 2023 11:26:28 +0000 > > Eli Zaretskii writes: > > >> > Maybe I'm confused, but won't this change have at least _some_ effect > >> > on Lisp programs? For example, what about this fragment from the > >> > ELisp manual, which describes the effect of > >> > make-variable-buffer-local: > >> > > >> > A peculiar wrinkle of this feature is that binding the variable > >> > (with ‘let’ or other binding constructs) does not create a > >> > buffer-local binding for it. Only setting the variable (with ‘set’ > >> > or ‘setq’), while the variable does not have a ‘let’-style binding > >> > that was made in the current buffer, does so. > >> > > >> > Will this case work the same after the change as it did before? > >> > >> I read this differently > > > > Differently from what? > > AFAIU, you are concerned that my call to Fmake_variable_buffer_local may > have unexpected side effects because make-variable-buffer-local can be > tricky, as stated in the quoted paragraph. > But it is not how I read this. > > Or did you mean something else? I meant to ask whether the behavior with case-fold-search before your changes in the context of the above situation differs from its behavior after the changes. > > >> - when you have > >> > >> (let ((var 'val)) > >> (make-variable-buffer-local 'var)) > >> > >> it will not set buffer-local value to 'val. > > > > And before the patch what would have happened? > > I did not make changes to `make-variable-buffer-local' in the patch. > Nothing changed there. I just wanted to make sure that we understand > that paragraph the same way - that `make-variable-buffer-local' has > "wrinkle" when called inside let context. > > >> And the patch makes `case-fold-search' buffer-local internally. Nothing > >> needs to call (make-variable-buffer-local 'case-fold-search). > > > > The patch itself calls make-variable-buffer-local. > > On top level, when Emacs defines all other variables. So, my call to > make-variable-buffer-local is not inside let and thus should not have > any problem with the paragraph you quoted. I think this is a misunderstanding: the quote from the ELisp manual doesn't describe the situation where make-variable-buffer-local is called inside a let-binding. It is describing the behavior of 'let' when the variable was made buffer-local via make-variable-buffer-local. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 15:18:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, Ihor Radchenko , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170282627731150 (code B ref 66117); Sun, 17 Dec 2023 15:18:01 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 15:17:57 +0000 Received: from localhost ([127.0.0.1]:58877 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEstw-00086L-J6 for submit@debbugs.gnu.org; Sun, 17 Dec 2023 10:17:56 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:64626) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEstv-000864-CB for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 10:17:55 -0500 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 9D0A780C86; Sun, 17 Dec 2023 10:17:48 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702826267; bh=4VnrCZFax+iMND38x85Ddn0KrAeZF1VYIlrk0Lq/DQ0=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=fEfp15PvLJ2yKY9LiLeYiq0YAUIJqNHpHUU1T5W2qJsgre7Xpf4eEJt2Wj656DidP /sYI1vgnZmxa5gsFeAUdAK2ZLvYzPKpOqd+wwBsU/QJVtgzSg3jwuNSPRakd0TBITk KUmfYwibvNpqQHb7+kbtW+344mAmF2LDg4TpRsTernKkyZSgfRn3SD7n7QyYKzsSAs l0TNUOgzW1drSwhbS8UQGX4hlboo/9is46DO3GTrr/0S3e5/RyQOK4uEYJYXa8UdpM HUSc2O93RkEPgPXEwUFQLNdyMQi3nv3yueLbkW1kLv6sBP72R5mmLwlO4ebbQYw3wv M7zLc6cw7x9jA== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 80AD280283; Sun, 17 Dec 2023 10:17:47 -0500 (EST) Received: from pastel (65-110-221-238.cpe.pppoe.ca [65.110.221.238]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 46FF3120EA9; Sun, 17 Dec 2023 10:17:47 -0500 (EST) From: Stefan Monnier In-Reply-To: <83plz5jdgj.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 17 Dec 2023 13:06:04 +0200") Message-ID: References: <878r919qfh.fsf@localhost> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> Date: Sun, 17 Dec 2023 10:17:40 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL 0.050 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > I'm talking specifically about any changes from previous behavior > visible from Lisp. I think we should test all of the following: > > default-value > default-boundp > setq-default > default-toplevel-value > set-default-toplevel-value > > and make sure they all behave exactly the same, both in and out of a > let-binding. There should be absolutely no change visible using any combination of the above function (including with the addition of `let`). If there is, it's a bug in our C code (I don't know of such bugs, but given the complexity of the code and its past history of a long litany of bugs, I definitely won't vouch for it). Some DEFVAR_PER_BUFFER variables *do* behave differently from normal DEFVAR_LISP, but these are the "always buffer-local" ones, like `mode-name`, `buffer-file-name`, etc... Most of the DEFVAR_PER_BUFFER variables behave just like any normal variable. They just use a different implementation strategy and the C code works hard to hide that difference. Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 15:25:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170282670131921 (code B ref 66117); Sun, 17 Dec 2023 15:25:02 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 15:25:01 +0000 Received: from localhost ([127.0.0.1]:58882 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEt0m-0008In-Ih for submit@debbugs.gnu.org; Sun, 17 Dec 2023 10:25:00 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:32325) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEt0l-0008IY-6D for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 10:24:59 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 8C4B310009E; Sun, 17 Dec 2023 10:24:52 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702826691; bh=zvuui0HiazvCW0b42ssM5KEKxPC73SzUGrHttOGqIfo=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=B84nXjt5JUTTMTkqVh3Q0LDmBR1EnTD3Hwo9NeMJNHAqSA/9McGmgqkLqvHqSv9Xi DR1+a0C1aGwwKaLJhGaxTtVcHCbu/9tDxb+HF55qfBAEvFL183E/w/MLdB0O7HSObt piPSMbIV9ovPfakY3UUgdjISNH7pcWVgtSILkFhlxifmCLnmv1PsfnmrxJ6WgfPGDu 7zDkUzwXR6bSPpHT4Rq5h4AKUEhJKb1SBknnav7Dm1Jov9YATcI5861hWZWa20fO/u WAf28DZFZYJRm6HPJhuOJ9VC5HReISmKYWu88AvTOYQgNU4EdWjlz2GNpTGZ1U2iHU yjSxnmrPnBX9Q== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 708EF10001D; Sun, 17 Dec 2023 10:24:51 -0500 (EST) Received: from pastel (65-110-221-238.cpe.pppoe.ca [65.110.221.238]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 3ED94120FF3; Sun, 17 Dec 2023 10:24:51 -0500 (EST) From: Stefan Monnier In-Reply-To: <8734w114pa.fsf@localhost> (Ihor Radchenko's message of "Sun, 17 Dec 2023 10:52:33 +0000") Message-ID: References: <878r919qfh.fsf@localhost> <87il52w744.fsf@localhost> <83fs06rz10.fsf@gnu.org> <87fs06w4ui.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <8734w114pa.fsf@localhost> Date: Sun, 17 Dec 2023 10:24:49 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.027 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) >> Maybe I'm confused, but won't this change have at least _some_ effect >> on Lisp programs? For example, what about this fragment from the >> ELisp manual, which describes the effect of >> make-variable-buffer-local: >> >> A peculiar wrinkle of this feature is that binding the variable >> (with =E2=80=98let=E2=80=99 or other binding constructs) does not c= reate a >> buffer-local binding for it. Only setting the variable (with =E2= =80=98set=E2=80=99 >> or =E2=80=98setq=E2=80=99), while the variable does not have a =E2= =80=98let=E2=80=99-style binding >> that was made in the current buffer, does so. >> >> Will this case work the same after the change as it did before? > > I read this differently - when you have > > (let ((var 'val)) > (make-variable-buffer-local 'var)) > > it will not set buffer-local value to 'val. So, what the paragraph above says is that (setq var val) will make `var` buffer-local, but (let ((var val)) ...) will not and neither will (let ((var val)) ... (setq var val2) ...) IOW, `setq` makes the var buffer-local only when the assignment affects the global binding. The same holds for DEFVAR_PER_BUFFER variables like `case-fold-search`: (with-temp-buffer (let ((case-fold-search nil)) (list (local-variable-p 'case-fold-search) (setq case-fold-search t) (local-variable-p 'case-fold-search)))) =3D=3D> (nil t nil) -- Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 17 Dec 2023 16:04:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, Ihor Radchenko , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17028289881335 (code B ref 66117); Sun, 17 Dec 2023 16:04:01 +0000 Received: (at 66117) by debbugs.gnu.org; 17 Dec 2023 16:03:08 +0000 Received: from localhost ([127.0.0.1]:58949 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEtbg-0000LT-Fe for submit@debbugs.gnu.org; Sun, 17 Dec 2023 11:03:08 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:59978) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rEtbe-0000L3-NG for 66117@debbugs.gnu.org; Sun, 17 Dec 2023 11:03:07 -0500 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 02A9C10009E; Sun, 17 Dec 2023 11:03:00 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1702828979; bh=q75olqqo5M8cf47IJrNvrFRNEZkWb7ykOm4NW9LPTlA=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=XuxR5DXQBwDpiQLoaS1borD7MTma26h4PbzGyZdZT4p6ofw6Kg+Sml9u+VIqWmxuT TOKHJnpfj4M+XuW/4yXVOKLw/uBN2v1ZyvGqywE0ZnFgBowIzT8luPyvbAo0gtGQD3 KspkLKQ9AAwF2oKVGFGibIaaE3BTj6/fC0T7+p0yxz9EBQdvbWkY09xBL9PvnoYeAv CoHJeRmpkgsZi9RikS0ijsoC9CRaWX2DueSXFJdSV2PIym9H1oneABePmfUTbXki1B KTsLLLhKQXVZa7vupFWxnFBdoJteDSzZ8rYbd7WEYrLuj8gUlPDSAxJVb1/EX4Ip5a MfQvLq/NTh+nQ== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 0914310001D; Sun, 17 Dec 2023 11:02:59 -0500 (EST) Received: from pastel (65-110-221-238.cpe.pppoe.ca [65.110.221.238]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id C6470120EB6; Sun, 17 Dec 2023 11:02:58 -0500 (EST) From: Stefan Monnier In-Reply-To: (Stefan Monnier's message of "Sun, 17 Dec 2023 10:17:40 -0500") Message-ID: References: <878r919qfh.fsf@localhost> <83bkaurut9.fsf@gnu.org> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> Date: Sun, 17 Dec 2023 11:02:57 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.027 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Most of the DEFVAR_PER_BUFFER variables behave just like any > normal variable. They just use a different implementation strategy and > the C code works hard to hide that difference. BTW, one reason why the C code works hard to hide that difference is that we already have enough different kinds of variables making life complicated for the poor ELisp coders: - lexical vars - "normal" vars (`defvar`) - buffer-local vars (`make-local-variable`) - automatically buffer-local vars (`make-variable-buffer-local` or DEFVAR_PER_BUFFER) - always buffer-local vars (DEFVAR_PER_BUFFER plus a -1 value in buffer_local_flags) - integer-only vars (DEFVAR_INT) - boolean-only vars (DEFVAR_BOOL) - aliases (defvaralias) - so-called "terminal-local" vars which are actually keyboard-local, where several "terminals" can share the same keyboard (DEFVAR_KBOARD), tho nowadays this virtually never happens, but makes for extra complexity/bugs. [ And we used to also have frame-local vars, as well as simultaneously frame-local and buffer-local vars, but we got rid of those. ] Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 19 Dec 2023 13:22:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170299207612977 (code B ref 66117); Tue, 19 Dec 2023 13:22:01 +0000 Received: (at 66117) by debbugs.gnu.org; 19 Dec 2023 13:21:16 +0000 Received: from localhost ([127.0.0.1]:34613 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFa28-0003ND-2x for submit@debbugs.gnu.org; Tue, 19 Dec 2023 08:21:16 -0500 Received: from mout01.posteo.de ([185.67.36.65]:44567) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFa25-0003My-AE for 66117@debbugs.gnu.org; Tue, 19 Dec 2023 08:21:14 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 97995240029 for <66117@debbugs.gnu.org>; Tue, 19 Dec 2023 14:21:04 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1702992064; bh=nWW2i0ldyeh9RmJZlsu/3ylKZi/OwlN8g+QDzdBK9LU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=E/VGl8MWvwxxu+ysIzd/Wh1nBLjhL13ME+PuhsP3u9NFO7Vr9t0QjolMmtCA2rvd2 mOhO9DDuFtJJqBvQNlBtWPuaUIqLyYOkufOWpCKXSMxY2csME4w1MsSCnamaupN6Lh iPullP3l4EXFmAXVOmesFlZGub4OZamPcjAYsgWh0IZf4ZfjjBw9p7IoGF6qPme+LD VB8YtKKg6lx++KHUQZ6JiljqyMwDvFsujnXqxjEiY9syFsJXLOaiX+ifgH2yBvzQxC FNP//1t84Zzc64Fj+eZ+ILQzW1RVHPUAtNLzQjOZwwJlSnQQS5QFR3OruLumJ+TZxb 8d8Ups9ILBYyA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4SvclM0DSWz6tyj; Tue, 19 Dec 2023 14:21:02 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83o7epjaon.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> Date: Tue, 19 Dec 2023 13:24:12 +0000 Message-ID: <87edfipbpf.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> > I'm talking specifically about any changes from previous behavior >> > visible from Lisp. I think we should test all of the following: >> > >> > default-value >> > default-boundp >> > setq-default >> > default-toplevel-value >> > set-default-toplevel-value >> > >> > and make sure they all behave exactly the same, both in and out of a >> > let-binding. >> >> The patch did not introduce test failures for make check on my side. Are >> there existing tests for buffer-locals? Or do we need to add them? > > I don't see any such tests. So yes, it would be good to add them. > But at the very least we should consider all of the above > theoretically and see if any of them are expected/supposed to change > as result of this. Do you still think that we need to discuss special cases further, after Stefan's reply? If yes, I will need help with various edge cases, because I am not really sure about them. For example, I have no clue if below is expected (defvar test/foo 'value) (default-boundp 'test/foo) (default-value 'test/foo) ;; -> value (let ((test/foo t)) (default-value 'test/foo)) ;; -> t ??? (defvar-local test/foo2 'value) (default-boundp 'test/foo2) ;; -> t (default-value 'test/foo2) ;; -> value (let ((test/foo2 t)) (default-value 'test/foo2)) ;; -> t ??? (setq-default test/foo2 'value2) (default-boundp 'test/foo2) ;; -> t (default-value 'test/foo2) ;; -> value2 (let ((test/foo2 t)) (default-value 'test/foo2)) ;; -> t ??? -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 19 Dec 2023 13:40:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170299315824681 (code B ref 66117); Tue, 19 Dec 2023 13:40:02 +0000 Received: (at 66117) by debbugs.gnu.org; 19 Dec 2023 13:39:18 +0000 Received: from localhost ([127.0.0.1]:34640 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFaJa-0006Q1-AD for submit@debbugs.gnu.org; Tue, 19 Dec 2023 08:39:18 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36884) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rFaJY-0006Pn-4I for 66117@debbugs.gnu.org; Tue, 19 Dec 2023 08:39:17 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rFaJM-0007bo-Ku; Tue, 19 Dec 2023 08:39:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=OQTYPJ9aZIocokqZUHcn8ktROv40IpnlrxedlmL0I3M=; b=AQqjhzUB42M4 QwMxUsbVgoAqGuWAQS5kuMn9LRW09HrDLMNYn4etVQLqwAuCXRNBXrbKam1COgiyQdUSat3HvDMz7 UTQhC6GfzG81ocvMv/umTGIh5jaNpQk37vXX9BCU57XRCBkLHQuOgtIWBPNOdRS+3ha5mUWcEFeQz X2nYNu4hM8IJAXSKpsj2ahat/XpMh05rbqkqahJQaIkWwIBStYeCV3M6OjKVMEgwfsBW9UCucIpTI gclS2xdzHVC15WWJEkVD6Vc7g7BsolkgQ5/biNPwzOJiBfhMt+xwbbLFFj5J32NCvV8dTMz+BvyaU osl+h5Eo+GAjnTYxeqrNQw==; Date: Tue, 19 Dec 2023 15:38:44 +0200 Message-Id: <837claia6z.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87edfipbpf.fsf@localhost> (message from Ihor Radchenko on Tue, 19 Dec 2023 13:24:12 +0000) References: <878r919qfh.fsf@localhost> <87o7esq319.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, mattias.engdegard@gmail.com, > monnier@iro.umontreal.ca > Date: Tue, 19 Dec 2023 13:24:12 +0000 > > Eli Zaretskii writes: > > > I don't see any such tests. So yes, it would be good to add them. > > But at the very least we should consider all of the above > > theoretically and see if any of them are expected/supposed to change > > as result of this. > > Do you still think that we need to discuss special cases further, after > Stefan's reply? Stefan seems to say the problem shouldn't exist, barring bugs. So no, discussions are not needed, but tests will be welcome > For example, I have no clue if below is expected > > (defvar test/foo 'value) > (default-boundp 'test/foo) > (default-value 'test/foo) ;; -> value > (let ((test/foo t)) > (default-value 'test/foo)) ;; -> t ??? > > (defvar-local test/foo2 'value) > (default-boundp 'test/foo2) ;; -> t > (default-value 'test/foo2) ;; -> value > (let ((test/foo2 t)) > (default-value 'test/foo2)) ;; -> t ??? > (setq-default test/foo2 'value2) > (default-boundp 'test/foo2) ;; -> t > (default-value 'test/foo2) ;; -> value2 > (let ((test/foo2 t)) > (default-value 'test/foo2)) ;; -> t ??? I'll let Stefan answer that. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 20 Dec 2023 20:35:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17031044595579 (code B ref 66117); Wed, 20 Dec 2023 20:35:01 +0000 Received: (at 66117) by debbugs.gnu.org; 20 Dec 2023 20:34:19 +0000 Received: from localhost ([127.0.0.1]:41882 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rG3Gl-0001Rv-4s for submit@debbugs.gnu.org; Wed, 20 Dec 2023 15:34:19 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:54205) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rG3Gh-0001Rf-TL for 66117@debbugs.gnu.org; Wed, 20 Dec 2023 15:34:17 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id C48064450D5; Wed, 20 Dec 2023 15:34:06 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1703104445; bh=UKDC56/+6iT9zsdM54jp4yeof/DmYFWo7fNueppK3eo=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=dRazxCDpJ9n1CC+nc6+sWYX03YVTp15vPO+aehL/fyNejIewSYByv3DcAPiF0y+70 vmHru1myq+Cf6zBk523iJ7b7XycWoECSd17ZsPoj0SatA5DSOO1j0ISWxQ6Wb74SLS B0YhY5+k2LvZih5YAi2fpzi159L7CVXjZA+FXEuXCNOqViITuksndneIzblTlD+e22 7/xbNl2ThnAM+b6PaHAgGvbiXoMwPdmns1GGjxzgGqMKG143VXT4d1+DtZbqm3IgR0 qjozVMc1AAX5g7DaxKTMMAobD0nTDNyhH3NRM1txu0AFxzbSU/hQJRa6YKh4bnKiUl TQYvUV/GF315g== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 678884450A5; Wed, 20 Dec 2023 15:34:05 -0500 (EST) Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 5512C120BCE; Wed, 20 Dec 2023 15:34:05 -0500 (EST) From: Stefan Monnier In-Reply-To: <87edfipbpf.fsf@localhost> (Ihor Radchenko's message of "Tue, 19 Dec 2023 13:24:12 +0000") Message-ID: References: <878r919qfh.fsf@localhost> <83bkasrb3f.fsf@gnu.org> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> Date: Wed, 20 Dec 2023 15:33:26 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL 0.121 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > If yes, I will need help with various edge cases, because I am not > really sure about them. For example, I have no clue if below is expected > > (defvar test/foo 'value) > (default-boundp 'test/foo) > (default-value 'test/foo) ;; -> value Yup. > (let ((test/foo t)) > (default-value 'test/foo)) ;; -> t ??? Yup. > (defvar-local test/foo2 'value) > (default-boundp 'test/foo2) ;; -> t Yup. > (default-value 'test/foo2) ;; -> value Yup. > (let ((test/foo2 t)) > (default-value 'test/foo2)) ;; -> t ??? Yup. > (setq-default test/foo2 'value2) > (default-boundp 'test/foo2) ;; -> t Yup. > (default-value 'test/foo2) ;; -> value2 Yup. > (let ((test/foo2 t)) > (default-value 'test/foo2)) ;; -> t ??? Yup. Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 21 Dec 2023 05:57:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 66117@debbugs.gnu.org Cc: yantar92@posteo.net, mattias.engdegard@gmail.com, dmitry@gutov.dev, monnier@iro.umontreal.ca, eliz@gnu.org X-Debbugs-Original-To: Stefan Monnier via "Bug reports for GNU Emacs, the Swiss army knife of text editors" X-Debbugs-Original-Cc: Ihor Radchenko , mattias.engdegard@gmail.com, dmitry@gutov.dev, 66117@debbugs.gnu.org, Stefan Monnier , Eli Zaretskii Received: via spool by submit@debbugs.gnu.org id=B.170313819311939 (code B ref -1); Thu, 21 Dec 2023 05:57:02 +0000 Received: (at submit) by debbugs.gnu.org; 21 Dec 2023 05:56:33 +0000 Received: from localhost ([127.0.0.1]:42255 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGC2r-00036Q-0x for submit@debbugs.gnu.org; Thu, 21 Dec 2023 00:56:33 -0500 Received: from lists.gnu.org ([2001:470:142::17]:41358) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGC2o-000368-5A for submit@debbugs.gnu.org; Thu, 21 Dec 2023 00:56:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rGC2e-0003zQ-Ry for bug-gnu-emacs@gnu.org; Thu, 21 Dec 2023 00:56:20 -0500 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rGC2c-0003hm-Lu; Thu, 21 Dec 2023 00:56:20 -0500 Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-3367f8f8cb0so385155f8f.2; Wed, 20 Dec 2023 21:56:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703138176; x=1703742976; darn=gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=cGffZ3JQPxBOSKL26f0ZGAm8zrrmBWmt5KDrJhOW+98=; b=H6HIHe/m5iuo/Oz9HEbmPIAyDnSYZKdOe5QU3KDK7Wwis98CtNzo0TPpvLoGbnlAlL 0ahOZ/t7DmeW42TBoKhVkf60uWphn4ldk0YvX+Ro7pwbUflIersi1kbr9u3QxQdWmvHQ WwHbmRjvbsapXrXhWC8Bfwa+XMWA28ZqP7raJgOk1PkF7EPNc9YNepQKk2NNhouBxy4y 0lS/0tFYU497ufPTHvlx+1LOLPcdrMa5r51U0qKUTtoBTefktNManaaa4ZYz6n2l+X+9 aQG61Rrf3D/35afA0vKjGZpdetXCnKeXOfAg1warhWSjzz5yu/dorBQVKBx+JuZWxRaL R2WQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703138176; x=1703742976; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=cGffZ3JQPxBOSKL26f0ZGAm8zrrmBWmt5KDrJhOW+98=; b=DYjk6iecqxtRVWGFoBK/xGLFMGlHOJAeqlV0lYPCEDAImMnbGGuqcHF6DXwP2D/Zwc Glb8frBLW54OR03FqjIy31iV7yZo0CcRtK1dzAP8F4Q8CbYaPQGgNQfVbQ88sf75+2VR Qx1o2oSRarpsKmwLl8g+oYX8xRZPQWuHqR8tG2aAl+7za2xIxNfV88VfKrw4ecBCVeS9 8Dg6spMQut0dPi43NH6F8sRkVGrA/ebmkbHMUW34j/VJg9Bk9zkyMViNw11Ya04UBPCt blovvC5OF9zHpiuVJyGR/SqBPozwZkCdqCrg0jhq6fp2CyKC+OP+bhweo7QT0xMo2fFO HsQw== X-Gm-Message-State: AOJu0Yxj4yE+ZptQGVgqQdW3j/tQ7I2rv3QEpZxm87OKh6XqEU3ei0po CtYqzb2vx1V0BBNN4gKlcUY= X-Google-Smtp-Source: AGHT+IFBL/80r/cNig1J8E45TE2+RMMXlYcRduew7ScOSfzS5bK1w3LNZzeXZfvn9wzv1Uz6XOErAA== X-Received: by 2002:a05:6000:1051:b0:336:813f:700a with SMTP id c17-20020a056000105100b00336813f700amr464176wrx.64.1703138176226; Wed, 20 Dec 2023 21:56:16 -0800 (PST) Received: from Pro.fritz.box (p4fe3a123.dip0.t-ipconnect.de. [79.227.161.35]) by smtp.gmail.com with ESMTPSA id l3-20020a170907914300b00a1b7769f834sm576072ejs.81.2023.12.20.21.56.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Dec 2023 21:56:15 -0800 (PST) From: Gerd =?UTF-8?Q?M=C3=B6llmann?= In-Reply-To: (Stefan Monnier via's message of "Wed, 20 Dec 2023 15:33:26 -0500") References: <878r919qfh.fsf@localhost> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> Date: Thu, 21 Dec 2023 06:56:14 +0100 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=2a00:1450:4864:20::432; envelope-from=gerd.moellmann@gmail.com; helo=mail-wr1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) Stefan Monnier via "Bug reports for GNU Emacs, the Swiss army knife of text editors" writes: >> If yes, I will need help with various edge cases, because I am not >> really sure about them. For example, I have no clue if below is expected >> >> (defvar test/foo 'value) >> (default-boundp 'test/foo) >> (default-value 'test/foo) ;; -> value > > Yup. ... BTW, not directly related to this ticket, (set-)default-toplevel-value might also be interesting to test, with and without buffer-local stuff. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 21 Dec 2023 13:23:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17031649801399 (code B ref 66117); Thu, 21 Dec 2023 13:23:02 +0000 Received: (at 66117) by debbugs.gnu.org; 21 Dec 2023 13:23:00 +0000 Received: from localhost ([127.0.0.1]:42632 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGJ0u-0000MV-41 for submit@debbugs.gnu.org; Thu, 21 Dec 2023 08:23:00 -0500 Received: from mout01.posteo.de ([185.67.36.65]:50033) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGJ0s-0000ME-1z for 66117@debbugs.gnu.org; Thu, 21 Dec 2023 08:22:58 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 08A6A240029 for <66117@debbugs.gnu.org>; Thu, 21 Dec 2023 14:22:47 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1703164968; bh=GMHmuGW6glupuSLW6K1ojrWxvlRRhBBE8Fg2tws0Mww=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=fNCY91LvmgOasrNpNm/V5XWnISfJssS6lugWFqpA4g0yKr/KR0A+H11idudwn9SCv 5itPvSlFTUVMOAvKCD34ZRlmIqzCiYvQ29Yu9aeqL29FtnCf41pnyOG1wv3NatGcfl XCtDPqK/HyHerGK1DgKFyAmSYpIQqoewwX7ZmnAy0NPAg7MoO7Muo3xACHkTodid40 B8DM39NzPU6La9b+zJWsYHwEnVJozzeIgLx55XN1OE/xehIJeALu/R6lNdGwpnH0Lu CFS4XmiFXp7raWH2ZpfYJnAfFrVO7DDC3zovNNMXp4M6FZqWiH6Kz2BMLJ65tp60BU aTiPB0r0phubw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4SwrhQ4b00z6ty6; Thu, 21 Dec 2023 14:22:46 +0100 (CET) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> Date: Thu, 21 Dec 2023 13:25:58 +0000 Message-ID: <877cl7n0ux.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Stefan Monnier writes: >> (let ((test/foo2 t)) >> (default-value 'test/foo2)) ;; -> t ??? > > Yup. Hmm.. Then, what about (defvar-local let-tests-buffer-local-var 'value) (with-temp-buffer (setq-local let-tests-buffer-local-var 'baz) (let ((let-tests-buffer-local-var 'bar)) ;; This is failing. (should (eq 'bar (default-value 'let-tests-buffer-local-var))) (should (eq 'bar let-tests-buffer-local-var)) (with-temp-buffer (should (eq 'bar (default-value 'let-tests-buffer-local-var))) (should (eq 'bar let-tests-buffer-local-var))))) -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 21 Dec 2023 13:41:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170316600313541 (code B ref 66117); Thu, 21 Dec 2023 13:41:02 +0000 Received: (at 66117) by debbugs.gnu.org; 21 Dec 2023 13:40:03 +0000 Received: from localhost ([127.0.0.1]:42678 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGJHP-0003WK-5P for submit@debbugs.gnu.org; Thu, 21 Dec 2023 08:40:03 -0500 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]:53438) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGJHM-0003Vh-OT for 66117@debbugs.gnu.org; Thu, 21 Dec 2023 08:40:01 -0500 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-40c2db2ee28so9936605e9.2 for <66117@debbugs.gnu.org>; Thu, 21 Dec 2023 05:39:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703165990; x=1703770790; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LB3Yx8ISGOYG/hJbgkpsytk61P3ODjK+KfNmsBg30jI=; b=LfyPjupax7H9C2mGJctJMXKO6pWNWqoDkrZD/KO3xjqB6K6zImuQ3fm5Y5JpqeuxJ3 JtZfY0ewQjLlTkTENOhX8Dd7DegnZeHxdk4YPKmJsDt82eOUebWRqayD4KXshhlRgzeq xSIkc9LUQy/3RbxJ9oluGsmYNtS3rN/ElPxNZ7U4BwCIfmI6p4q1evIStI7Fgu+f6vfv yJyNWYt3COdhxTWnduzObgbaMNZQZBMueNVezJtwQ2ohcczyc7abNYU3ZGqMNcDeq316 dEo7PngIdfnL6j5aLIzu0RGq3eMSKPLYMuBYvogJdXInit3KwlFelrnQEsw8l7S8dRIQ vJrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703165990; x=1703770790; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=LB3Yx8ISGOYG/hJbgkpsytk61P3ODjK+KfNmsBg30jI=; b=OEeD9lk/+Yi+Iq/uStQEu2nE6UHbpNGm0/PVXnG+tV476fW2Bgco8FuL7K6YliI0MT EXXLFLG6o8KC3NHzAsSdki8IybziEjxlHHb1r3/Hm5xwonia4k9RD7tbaFFRJCzNMunu k35D0UqHfQLX7IZQW24yG3suer1WE0nV42WrfkXG8yCLOodEYZdhtC+PT6ASZn+Guynt 6JphjmxCRarVJlUYHLhR2cxvW0Y6Jl343FXYIm0al17f7CEN1NwN8uNNjwb+lIzMGMj+ mv7/CborUEymcDkGlXrrFIh+kaAvP+PhGW+ZR+N2J1rbdOjsZUgPwC8kR2ZSCHebshZm of9Q== X-Gm-Message-State: AOJu0YyHZ9FyRDnreOBuX8ji35Qa5fWDB5EdIRu/7lt6P1aWj+f68StF L0ioONrUfUbmgwO+b9lgNCq1tUenL98= X-Google-Smtp-Source: AGHT+IFzndkPfrTxwMy85KN0AUcBmO93p6oiFTbpQlZ9drYkzhTkujEnqk82ieYaKU/wkAgY6Z2XpQ== X-Received: by 2002:a05:600c:4da4:b0:40d:3a4b:1158 with SMTP id v36-20020a05600c4da400b0040d3a4b1158mr863499wmp.6.1703165990067; Thu, 21 Dec 2023 05:39:50 -0800 (PST) Received: from Pro.fritz.box (p4fe3a123.dip0.t-ipconnect.de. [79.227.161.35]) by smtp.gmail.com with ESMTPSA id hy25-20020a1709068a7900b00a2327e826ccsm951031ejc.201.2023.12.21.05.39.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Dec 2023 05:39:49 -0800 (PST) From: Gerd =?UTF-8?Q?M=C3=B6llmann?= In-Reply-To: <877cl7n0ux.fsf@localhost> (Ihor Radchenko's message of "Thu, 21 Dec 2023 13:25:58 +0000") References: <878r919qfh.fsf@localhost> <83wmtgpuyf.fsf@gnu.org> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> Date: Thu, 21 Dec 2023 14:39:47 +0100 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Ihor Radchenko writes: > Stefan Monnier writes: > >>> (let ((test/foo2 t)) >>> (default-value 'test/foo2)) ;; -> t ??? >> >> Yup. > > Hmm.. Then, what about > > (defvar-local let-tests-buffer-local-var 'value) > (with-temp-buffer > (setq-local let-tests-buffer-local-var 'baz) > (let ((let-tests-buffer-local-var 'bar)) > ;; This is failing. > (should (eq 'bar (default-value 'let-tests-buffer-local-var))) C-h f default-value explains this: Return SYMBOL=E2=80=99s default value. This is the value that is seen in buffers that do not have their own valu= es for this variable. > (should (eq 'bar let-tests-buffer-local-var)) > (with-temp-buffer > (should (eq 'bar (default-value 'let-tests-buffer-local-var))) > (should (eq 'bar let-tests-buffer-local-var))))) From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 23 Dec 2023 08:55:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko , Stefan Monnier Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17033216838894 (code B ref 66117); Sat, 23 Dec 2023 08:55:02 +0000 Received: (at 66117) by debbugs.gnu.org; 23 Dec 2023 08:54:43 +0000 Received: from localhost ([127.0.0.1]:48515 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGxmN-0002JO-1o for submit@debbugs.gnu.org; Sat, 23 Dec 2023 03:54:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:40820) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGxmL-0002J5-7A for 66117@debbugs.gnu.org; Sat, 23 Dec 2023 03:54:42 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rGxmA-0006Ms-N6; Sat, 23 Dec 2023 03:54:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=HQQFixxgvkgZSW7RmdsY2JCSmUC7SXAnigxnOL44sAA=; b=JnT1mxi1YGmo aBXfkA1lCjYJJETdunrZSfu+4g0SY+sUdiKtjgNNnlkIJLKOoZ4IzWlk6wy1cpCZflYw7XLAq7sCU OcvJ4oicxKCxxJOc5fTfogm8J4WBeC2S0R0z/iVBaW4UjoyDUdCdVthlz3oNsEU6txQMB14osZPTh bB2mJKsuihLWPKHvLSvPqPkfNpAuqqfVOHjncPmeyzRP6s+3J0+w0VEuq+QjM3djbf7ZWGngol1AY VXrzP3fBmBwZSqr30qN6/Ejp/SILHSG6xN+Yi3AN9ASkOImmLjVH3dUKltr+jNFREN5xTjUrAL6MK 9uCoS0ZC9pLuXmjJJRgU/g==; Date: Sat, 23 Dec 2023 10:54:21 +0200 Message-Id: <83sf3te1tu.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87v8bhxzcu.fsf@localhost> (message from Ihor Radchenko on Sun, 08 Oct 2023 09:00:49 +0000) References: <878r919qfh.fsf@localhost> <87zg1ewfc2.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Sun, 08 Oct 2023 09:00:49 +0000 > > Eli Zaretskii writes: > > > My advice is to have a prototype working, then time it on local > > filesystems. > > See the attached patch. What do we want to do with this? any reasons not to install this on master (and close this bug then)? Thanks. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 23 Dec 2023 09:39:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, Stefan Monnier Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170332433411389 (code B ref 66117); Sat, 23 Dec 2023 09:39:02 +0000 Received: (at 66117) by debbugs.gnu.org; 23 Dec 2023 09:38:54 +0000 Received: from localhost ([127.0.0.1]:48592 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGyT8-0002xd-CA for submit@debbugs.gnu.org; Sat, 23 Dec 2023 04:38:54 -0500 Received: from mout01.posteo.de ([185.67.36.65]:36899) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGyT3-0002xM-CV for 66117@debbugs.gnu.org; Sat, 23 Dec 2023 04:38:52 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 4539B240028 for <66117@debbugs.gnu.org>; Sat, 23 Dec 2023 10:38:38 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1703324318; bh=Oi55BYxrBWnVcuMzu8TQ9k428RKhnjPAOa3SL/eadw0=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=fnwa7ZaUObGqVl74+W69pV/OQFG11EKGwTtyLAZAUSbelWZrR9Q55XBnP/82yHrY2 bTSJmDkGqZdkG5FnbfyuHSES51ucsFFuzN0+WV5l/tMNBX2iHlwwXNEQaTcRUpHulj I1dzueo3E26V+FWpVQJdpSbioINd8Y2qIbqSvn5QAHARjkQQIxZRaHHDDtvJwsNnN8 zqXAmrUnS3NQWoiREm+egw4rfciYevJL/sCX7OnFtA543QSUHMZDP76fEToY9H19lK jSOzjGUYketZkg6klOhgpDP4NFxhhAxPg6qha/Xqjr/gYPl9X/iNAJs5Acl/UPJBsL eDtLmB35dIfWA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4Sxzcs1Gm6z9rxL; Sat, 23 Dec 2023 10:38:36 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83sf3te1tu.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> Date: Sat, 23 Dec 2023 09:41:44 +0000 Message-ID: <87msu1qmqv.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> > My advice is to have a prototype working, then time it on local >> > filesystems. >> >> See the attached patch. > > What do we want to do with this? any reasons not to install this on > master (and close this bug then)? I thought that it is already installed... I do not think that we should close the bug even after installing the patch for `find-buffer-visiting'. What I had in mind wrt improving `find-buffer-visiting' performance is: 1. Improve the Elisp part (this patch) 2. Improve case-fold-search binding, which will give another speedup (another patch I submitted) 3. Optionally add tests 4. Address the scenario Dmitry described in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#91 -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 23 Dec 2023 11:18:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170333022127148 (code B ref 66117); Sat, 23 Dec 2023 11:18:01 +0000 Received: (at 66117) by debbugs.gnu.org; 23 Dec 2023 11:17:01 +0000 Received: from localhost ([127.0.0.1]:48711 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rH005-00073k-3k for submit@debbugs.gnu.org; Sat, 23 Dec 2023 06:17:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:35658) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rH003-00073R-6B for 66117@debbugs.gnu.org; Sat, 23 Dec 2023 06:17:00 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rGzzq-00078N-3y; Sat, 23 Dec 2023 06:16:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=TX5v3tRhu08biZMlwVHo02KlUMn0rR9At30fqkGyxl8=; b=O3oRUE0rNbkm 9MufKcxjFCjtO5cQ14mh+FE5UHakWGlIU4749hwiIFKKzX3vWzMH4mRMP684hoZXDdGtebBYEhsZS 1AhSkEwejGHHi1pwkg8hO/HoBceLXG+tTd67ivPZyKD8kSD8aD+eQu0Wl3eoo2ukfZfXgudEPZ7/+ gQgnKevJ3kD/bFgISGfus0562k5WEGsU/G6rXhZLpXEx8i1cZ4U1jdQ1shCpr/Na/kGxRPWw0pgIZ y2WbJ2mI2rGUojB6kMh90CY8yVOgriHLTh1t3opCed+Hb9LIapK0WFDNy0LQ5Z6+iofv4Sxr+MrJr dfokSRWy7M2pWtIZvY/v2g==; Date: Sat, 23 Dec 2023 13:16:37 +0200 Message-Id: <83zfy1cgoa.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87msu1qmqv.fsf@localhost> (message from Ihor Radchenko on Sat, 23 Dec 2023 09:41:44 +0000) References: <878r919qfh.fsf@localhost> <834jjm749q.fsf@gnu.org> <87cyyawd1a.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> <87msu1qmqv.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: Stefan Monnier , dmitry@gutov.dev, > 66117@debbugs.gnu.org > Date: Sat, 23 Dec 2023 09:41:44 +0000 > > Eli Zaretskii writes: > > >> > My advice is to have a prototype working, then time it on local > >> > filesystems. > >> > >> See the attached patch. > > > > What do we want to do with this? any reasons not to install this on > > master (and close this bug then)? > > I thought that it is already installed... The find-buffer part? I don't see it, did I miss something? > I do not think that we should close the bug even after installing the > patch for `find-buffer-visiting'. > > What I had in mind wrt improving `find-buffer-visiting' performance is: > > 1. Improve the Elisp part (this patch) Let's install it. > 2. Improve case-fold-search binding, which will give another speedup > (another patch I submitted) It should be installed, after you add the tests we've been discussing. > 3. Optionally add tests I hope the tests will not be optional... > 4. Address the scenario Dmitry described in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#91 That could be a separate bug report. This one is already too long, and includes too many different issues. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 23 Dec 2023 11:26:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170333073728587 (code B ref 66117); Sat, 23 Dec 2023 11:26:01 +0000 Received: (at 66117) by debbugs.gnu.org; 23 Dec 2023 11:25:37 +0000 Received: from localhost ([127.0.0.1]:48733 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rH08P-0007R0-7N for submit@debbugs.gnu.org; Sat, 23 Dec 2023 06:25:37 -0500 Received: from mout02.posteo.de ([185.67.36.66]:33725) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rH08M-0007Ql-Bw for 66117@debbugs.gnu.org; Sat, 23 Dec 2023 06:25:35 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 1185D240104 for <66117@debbugs.gnu.org>; Sat, 23 Dec 2023 12:25:22 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1703330723; bh=iTeumy0G8HPy1nGfLp6Bz9HicARMC1ImbY+3f2ipWfM=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=EKFYxRz1KxpMtmHgtcob+6GzzX6+5CAyuTaM+A7MjyHEhTbH2kEzUCV0JxeCuq0wv /RHIIJC5BxTV3tH6dumLku8wE4YRTqoVmulY7jEoUvOxuuaTW0as+1mNLTGJYRdloC 5RBkH4nd7ycOVnLtc8VkqLvJ6Oe/FpFcaDhZMsO+TFxFF8opVuBufXm47itrrFk4E8 UbyyMWyp4kMYF+J0HFQHCKZOYgwCemI0yekBwxnzT1f97aSX1W9BFZ9npXbhhKtJba SeBP6O8Q60x+ucyJuTNHHjbPv6JbR5WlMEBsL55v0m4POfc5sWOwFwERh4npkqJxHR A+Udz8fUrrdkw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4Sy20166w1z9rxB; Sat, 23 Dec 2023 12:25:21 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83zfy1cgoa.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> <87msu1qmqv.fsf@localhost> <83zfy1cgoa.fsf@gnu.org> Date: Sat, 23 Dec 2023 11:28:33 +0000 Message-ID: <87le9lcg4e.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> I thought that it is already installed... > > The find-buffer part? I don't see it, did I miss something? No. I just had a problem with my local git repo. git reset fixed it and revealed that the patch is indeed not installed yet. >> 2. Improve case-fold-search binding, which will give another speedup >> (another patch I submitted) > > It should be installed, after you add the tests we've been discussing. > >> 3. Optionally add tests > > I hope the tests will not be optional... Didn't you say earlier that tests are not strictly necessary in ? I do not mind adding tests, but it will not be as fast - I need help with them. >> 4. Address the scenario Dmitry described in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#91 > > That could be a separate bug report. This one is already too long, > and includes too many different issues. Ok. I will create a separate bug report after the two submitted patches are handled. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 23 Dec 2023 11:52:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170333229419072 (code B ref 66117); Sat, 23 Dec 2023 11:52:01 +0000 Received: (at 66117) by debbugs.gnu.org; 23 Dec 2023 11:51:34 +0000 Received: from localhost ([127.0.0.1]:48744 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rH0XW-0004xX-45 for submit@debbugs.gnu.org; Sat, 23 Dec 2023 06:51:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47266) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rH0XU-0004xI-5l for 66117@debbugs.gnu.org; Sat, 23 Dec 2023 06:51:33 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rH0XI-0003ja-AK; Sat, 23 Dec 2023 06:51:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=8uS/Kocj7mq7rnC05vluEBhL7jTNieGApanMc0+mitk=; b=awrNb7V5M4wv IAzPfUX8qTSljGijXw3idJk9GC9ckamUWtk6/ZKaGLhmyYTEIwNyBk+4C8fW2tZ6BDUPx5fMnxBzW 0YsmyGZxQzcx75xbcS85dK/m7FMK1pGNL7NJz7yW/F24Qh47gTeB1IkCvSHYTUrnXVpPRhkqtkAtY lPlGh0SOpaGCPQYS72KhNcMbHp4qNVXN3OmQZF5SSmhBzSmESzaRozhVubdBWahb9IIWv1BuYtCuX I86C84CWwlf7bSsh/Ir2Cf8ZNXwxHmuJkNqlq8bTVFKs0wUE/Lcs7A4Z7i8Tfj+cMbBr2Ilpp+CaK h+QWDlIvzw6uvQ7AwiL6Pg==; Date: Sat, 23 Dec 2023 13:51:10 +0200 Message-Id: <83v88pcf2p.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87le9lcg4e.fsf@localhost> (message from Ihor Radchenko on Sat, 23 Dec 2023 11:28:33 +0000) References: <878r919qfh.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> <87msu1qmqv.fsf@localhost> <83zfy1cgoa.fsf@gnu.org> <87le9lcg4e.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: monnier@iro.umontreal.ca, dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Sat, 23 Dec 2023 11:28:33 +0000 > > >> 3. Optionally add tests > > > > I hope the tests will not be optional... > > Didn't you say earlier that tests are not strictly necessary in > ? > > I do not mind adding tests, but it will not be as fast - I need help > with them. We could install just a few now, and the rest afterwards. You have already presented enough non-trivial cases that can be easily converted to tests, and I think it is a good idea to do that when we change such low-level and veteran code. So yes, it is not strictly necessary, but highly desirable. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 23 Dec 2023 14:28:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17033416676060 (code B ref 66117); Sat, 23 Dec 2023 14:28:02 +0000 Received: (at 66117) by debbugs.gnu.org; 23 Dec 2023 14:27:47 +0000 Received: from localhost ([127.0.0.1]:48831 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rH2yh-0001Zf-7n for submit@debbugs.gnu.org; Sat, 23 Dec 2023 09:27:47 -0500 Received: from mout02.posteo.de ([185.67.36.66]:48751) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rH2ye-0001ZR-J6 for 66117@debbugs.gnu.org; Sat, 23 Dec 2023 09:27:45 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id D9815240103 for <66117@debbugs.gnu.org>; Sat, 23 Dec 2023 15:27:32 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1703341652; bh=kQc1yXzvt8TKqruJcI8tQwaNrs/LkhQOSsvbffAJbDM=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=pVuS93T0+PwnmrsKPfKn/bvGNwDpiIa0R86sr5FNmbbejGPiwRkOu5Oh+hL9Cnyqr T3U0MA8t4pHFVyBbyPX7v1TAH5LU+nzLU0F6s8bvhZiBgKXX70kT8dJcoUkffJNeiU SeKw6NPyQCXtsqI2Pul8691xhN0JNlN9uDojelVADDGqx/CvyTzWOSyH0qIsQer04I L8oILVQia+J10yM2iYu8F+nodqhWIkaXSXY5j/jPydKV/7zvpMOKPaZVeDkXHNRM/v M0bQ3yV9udI4StYUZijhjLs54Q0tD6aFEuflJIEf9JrrmSyJkSLY8LewXNbGhD9+4E Lt8HuVODVansg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4Sy62C118Fz6tsf; Sat, 23 Dec 2023 15:27:30 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83v88pcf2p.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> <87msu1qmqv.fsf@localhost> <83zfy1cgoa.fsf@gnu.org> <87le9lcg4e.fsf@localhost> <83v88pcf2p.fsf@gnu.org> Date: Sat, 23 Dec 2023 14:30:42 +0000 Message-ID: <87il4pc7ot.fsf@localhost> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain Eli Zaretskii writes: >> I do not mind adding tests, but it will not be as fast - I need help >> with them. > > We could install just a few now, and the rest afterwards. You have > already presented enough non-trivial cases that can be easily > converted to tests, and I think it is a good idea to do that when we > change such low-level and veteran code. See the attached. I am not sure if these few cases are enough to warrant a separate commit though. --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-Add-tests-for-let-bug-66117.patch >From 147ae00df849f04cdb00e09d8079533fa5dea98a Mon Sep 17 00:00:00 2001 Message-ID: <147ae00df849f04cdb00e09d8079533fa5dea98a.1703341788.git.yantar92@posteo.net> From: Ihor Radchenko Date: Sat, 23 Dec 2023 15:29:36 +0100 Subject: [PATCH] Add tests for `let' (bug#66117) * test/src/eval-tests.el (eval-tests/default-value): New test. --- test/src/eval-tests.el | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/test/src/eval-tests.el b/test/src/eval-tests.el index 4589763b2f5..c1219591e40 100644 --- a/test/src/eval-tests.el +++ b/test/src/eval-tests.el @@ -282,4 +282,25 @@ eval-tests-defvaralias (should-error (defvaralias 'eval-tests--my-c 'eval-tests--my-d) :type 'cyclic-variable-indirection)) +(defvar eval-tests/global-var 'value) +(defvar-local eval-tests/buffer-local-var 'value) +(ert-deftest eval-tests/default-value () + ;; `let' overrides the default value for global variables. + (should (default-boundp 'eval-tests/global-var)) + (should (eq 'value (default-value 'eval-tests/global-var))) + (should (eq 'value eval-tests/global-var)) + (let ((eval-tests/global-var 'bar)) + (should (eq 'bar (default-value 'eval-tests/global-var))) + (should (eq 'bar eval-tests/global-var))) + ;; `let' overrides the default value everywhere, but leaves + ;; buffer-local values unchanged in current buffer and in the + ;; buffers where there is no explicitly set buffer-local value. + (should (default-boundp 'eval-tests/buffer-local-var)) + (should (eq 'value (default-value 'eval-tests/buffer-local-var))) + (should (eq 'value eval-tests/buffer-local-var)) + (with-temp-buffer + (let ((eval-tests/buffer-local-var 'bar)) + (should (eq 'bar (default-value 'eval-tests/buffer-local-var))) + (should (eq 'bar eval-tests/buffer-local-var))))) + ;;; eval-tests.el ends here -- 2.42.0 --=-=-= Content-Type: text/plain -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at --=-=-=-- From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 29 Dec 2023 07:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170383605514746 (code B ref 66117); Fri, 29 Dec 2023 07:48:02 +0000 Received: (at 66117) by debbugs.gnu.org; 29 Dec 2023 07:47:35 +0000 Received: from localhost ([127.0.0.1]:40725 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJ7ah-0003pm-1e for submit@debbugs.gnu.org; Fri, 29 Dec 2023 02:47:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36268) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJ7ae-0003pR-At for 66117@debbugs.gnu.org; Fri, 29 Dec 2023 02:47:33 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rJ7aY-00046i-KF; Fri, 29 Dec 2023 02:47:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=RBZu7cROMAGfJP0Wh3XfMzK2MoZrueTRPZ4DI7qojco=; b=NJQMBf2R7XAO 2VxdQORYNgCJPXDjg9W+zzgribHMraMod6Pe8VwzxKM6m9KAzF2HRZS3p2W5KkD6CIDveoSOIIe/C ykUaAO8r6QDV5ihYi8vN/RA6PUydVIOBy2eQIS9CxwpCacemvOV/WQGFYG7e6WQBJ3CgT9BgaSzfM 0A+T4tAr8r2ZxxER4hZloWjW5LV8EQ07NjPKQkYV4K8zACVnllgmrAwzs78Ls+lGI1o0OCR6XwEPL Mh5CBpwtImz7MLvZWcBNST8rYqL8ERw0VTqyogSrpPyIvC2Aa1KbC8Cfe++IPLA2TaaBEvWY3Zp4K 9QgpC4dTuRNcBCWW3cymJw==; Date: Fri, 29 Dec 2023 09:47:13 +0200 Message-Id: <831qb578n2.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87le9lcg4e.fsf@localhost> (message from Ihor Radchenko on Sat, 23 Dec 2023 11:28:33 +0000) References: <878r919qfh.fsf@localhost> <83pm2a5k85.fsf@gnu.org> <87wmwh2tae.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> <87msu1qmqv.fsf@localhost> <83zfy1cgoa.fsf@gnu.org> <87le9lcg4e.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: monnier@iro.umontreal.ca, dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Sat, 23 Dec 2023 11:28:33 +0000 > > Eli Zaretskii writes: > > >> I thought that it is already installed... > > > > The find-buffer part? I don't see it, did I miss something? > > No. I just had a problem with my local git repo. git reset fixed it and > revealed that the patch is indeed not installed yet. Is that patch still valid, or do you need to rebase it? Would you like to repost it? From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 29 Dec 2023 13:53:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17038579671648 (code B ref 66117); Fri, 29 Dec 2023 13:53:02 +0000 Received: (at 66117) by debbugs.gnu.org; 29 Dec 2023 13:52:47 +0000 Received: from localhost ([127.0.0.1]:41046 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJDI6-0000QW-WB for submit@debbugs.gnu.org; Fri, 29 Dec 2023 08:52:47 -0500 Received: from mout02.posteo.de ([185.67.36.66]:57975) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJDI3-0000QH-TF for 66117@debbugs.gnu.org; Fri, 29 Dec 2023 08:52:45 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id B089D240104 for <66117@debbugs.gnu.org>; Fri, 29 Dec 2023 14:52:37 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1703857957; bh=h0LEzpbu+jYiDGsV+RV6NG+Z2eCU0ry1zvrGM2XA8kw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=QlxFKtEIvalewF9vcSbfkYbiBgTO5k/nq7HVwfOET6K1UJ48ebigpJm7Z2OflrKkZ yDgMJxFF0gG9mcdnbdLnJu3OcN9YwdCvAa0GQNs2iR3ZTHQz3QUtCN/fyED9QcfmrP azhdc9/jNSLGP2CkWxWqaUUuABhBsCtb8Du0u04mC9FGchNJ6GRfyisrUtaV4lUnhR Du4Ec/IestaI5SNhrgXFxuxSyG4BWiGJ/hy3OwWBxcX0diwDCGwaik5f/TUr6dkZjR 4TXjSzaAVq21ZK9dZ6dOg0HU+bmHQBFFvEWd/vzPlPPNXI6uW8w8QPKNG8WqNMNpxR Ql4/VFcTtDQNQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4T1mz81h3yz6tmv; Fri, 29 Dec 2023 14:52:35 +0100 (CET) From: Ihor Radchenko In-Reply-To: <831qb578n2.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> <87msu1qmqv.fsf@localhost> <83zfy1cgoa.fsf@gnu.org> <87le9lcg4e.fsf@localhost> <831qb578n2.fsf@gnu.org> Date: Fri, 29 Dec 2023 13:55:45 +0000 Message-ID: <87zfxt3yfy.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> No. I just had a problem with my local git repo. git reset fixed it and >> revealed that the patch is indeed not installed yet. > > Is that patch still valid, or do you need to rebase it? Would you > like to repost it? All the three patches I submitted in this thread are cleanly applying onto freshly cloned master. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 30 Dec 2023 07:40:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170392197612809 (code B ref 66117); Sat, 30 Dec 2023 07:40:02 +0000 Received: (at 66117) by debbugs.gnu.org; 30 Dec 2023 07:39:36 +0000 Received: from localhost ([127.0.0.1]:42947 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJTwV-0003KX-Lc for submit@debbugs.gnu.org; Sat, 30 Dec 2023 02:39:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:46850) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJTwT-0003KI-8A for 66117@debbugs.gnu.org; Sat, 30 Dec 2023 02:39:34 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rJTwN-0000wr-C9; Sat, 30 Dec 2023 02:39:27 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=rLvIA3U8Lvlr/356qd07W7r7ZbNbZC8BMDh0L/r3rt0=; b=pNlw1C/kC4Yw 9tD/pTv+5NZC0gcRfvRR6LQALBTBu7qcHyj7EDZN5wROcBE74IPdQ5II3jDh3Qb/cV2Une0pQBHvY m+UDmJDSr/Xz4zlsp/g2wu0UB+LdXTDDebFLEugk4QRpzSyOhUTWyYq1hu0gqqKjvCqfRq0+qrh32 5GRD1Sip6gC4lK7XFEaua9mDsAwRaWbaFI64LWorLrGDuTOvRjI2x0VV1FkR1i2DzWt+3Z3FbJJia 4tLwgHRAv1QHwVYqZmVbukRNf9N6Xk44yvHpdqlgzdFRhXnhk//0E6ULTRVh+CkygwquDhvSGw9BB /PpJrERgYce9clVZdE63IA==; Date: Sat, 30 Dec 2023 09:39:15 +0200 Message-Id: <83sf3k3zrw.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87il4pc7ot.fsf@localhost> (message from Ihor Radchenko on Sat, 23 Dec 2023 14:30:42 +0000) References: <878r919qfh.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> <87msu1qmqv.fsf@localhost> <83zfy1cgoa.fsf@gnu.org> <87le9lcg4e.fsf@localhost> <83v88pcf2p.fsf@gnu.org> <87il4pc7ot.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: monnier@iro.umontreal.ca, dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Sat, 23 Dec 2023 14:30:42 +0000 > Eli Zaretskii writes: > > >> I do not mind adding tests, but it will not be as fast - I need help > >> with them. > > > > We could install just a few now, and the rest afterwards. You have > > already presented enough non-trivial cases that can be easily > > converted to tests, and I think it is a good idea to do that when we > > change such low-level and veteran code. > > See the attached. > I am not sure if these few cases are enough to warrant a separate commit > though. I installed it, thanks. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 30 Dec 2023 08:10:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17039237423529 (code B ref 66117); Sat, 30 Dec 2023 08:10:01 +0000 Received: (at 66117) by debbugs.gnu.org; 30 Dec 2023 08:09:02 +0000 Received: from localhost ([127.0.0.1]:42983 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJUP0-0000uq-8l for submit@debbugs.gnu.org; Sat, 30 Dec 2023 03:09:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47638) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJUOp-0000uC-Ic for 66117@debbugs.gnu.org; Sat, 30 Dec 2023 03:09:01 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rJUOi-0001g7-2n; Sat, 30 Dec 2023 03:08:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=+Zj5x14uEbgLyvG+MsGEr0buscgOjfcGbht/uB8SndM=; b=d+IKFWrUzHlH 4+9wLMQkise33gWL4ghsFZFEk1uFo1DtaJoYGkoaIOyL94j9i20uBHUS5UmoktZkMhlA85yG4rSrD BXXpOKgjqGE+3UHKOAlnDlfIc6a+0i+HbdOV4Yj4m+Np9Nf2tvJgmENdIjGG4mMK3KS+vlf4Zd6fX 2+BhVBCokZTMWTEIur/aNyshX7hwgK/1PhkMd6Jm6SUEhU9HZDL09xb98ILB7HE3VVtMgkrYCGw/r QT8z3tfhQvN7dd3YOd6wKKIASy95cysYKDRpFpzb/sb4Vvd08+p+5caEUm//Sushfdl66kuEXCXi+ 8ELNOB+o7Sg4NB4Cs4/vkQ==; Date: Sat, 30 Dec 2023 10:08:34 +0200 Message-Id: <83jzow3yf1.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87zfxt3yfy.fsf@localhost> (message from Ihor Radchenko on Fri, 29 Dec 2023 13:55:45 +0000) References: <878r919qfh.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> <87msu1qmqv.fsf@localhost> <83zfy1cgoa.fsf@gnu.org> <87le9lcg4e.fsf@localhost> <831qb578n2.fsf@gnu.org> <87zfxt3yfy.fsf@localhost> X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: monnier@iro.umontreal.ca, dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Fri, 29 Dec 2023 13:55:45 +0000 > > Eli Zaretskii writes: > > >> No. I just had a problem with my local git repo. git reset fixed it and > >> revealed that the patch is indeed not installed yet. > > > > Is that patch still valid, or do you need to rebase it? Would you > > like to repost it? > > All the three patches I submitted in this thread are cleanly applying > onto freshly cloned master. Thanks, I installed them. Should we now close this bug? From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 30 Dec 2023 09:51:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: yantar92@posteo.net Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170392982319471 (code B ref 66117); Sat, 30 Dec 2023 09:51:02 +0000 Received: (at 66117) by debbugs.gnu.org; 30 Dec 2023 09:50:23 +0000 Received: from localhost ([127.0.0.1]:43057 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJVz5-00053z-51 for submit@debbugs.gnu.org; Sat, 30 Dec 2023 04:50:23 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:60590) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJVz2-00053g-Nu for 66117@debbugs.gnu.org; Sat, 30 Dec 2023 04:50:21 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rJVyu-0001MD-Nc; Sat, 30 Dec 2023 04:50:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=j5BG/tV2WduSQ3YnIqyXSRvB8C9cyA23Du99oEdQsDU=; b=n6yZqEkQ1UIo SVIT6rBreeTo0/lqIvz3I85URDkiLtSrUURjKjx64A7pUA8nOxIwM+OENG+M8OAAtACB/LgZiBRL7 1kdDqmdkQMEPv4e2fiPnOrDDfy83JnKumEFKUEG+FS5rdwx9OZVUypuIPGLCAXHhoHutK+stNzsm5 zsS5Lnx0Z5tjoAnPOih6xmISUOVGpCw6oPOpZ6hzB9khnvf4KQ2wSH5sLAjlcRsnwf7LezM/I4KZ2 jmEYLdKI3dCl8NbmQkpm8xo/C/nQ4WvQxz6sLdjdoXqUouBC7EEr2Eq7niSfm2p2YTJXg6/ulmIoy xqm56sgKuAjxLDHZIH2C6A==; Date: Sat, 30 Dec 2023 11:50:02 +0200 Message-Id: <83h6k03tpx.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <83jzow3yf1.fsf@gnu.org> (message from Eli Zaretskii on Sat, 30 Dec 2023 10:08:34 +0200) References: <878r919qfh.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> <87msu1qmqv.fsf@localhost> <83zfy1cgoa.fsf@gnu.org> <87le9lcg4e.fsf@localhost> <831qb578n2.fsf@gnu.org> <87zfxt3yfy.fsf@localhost> <83jzow3yf1.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca > Date: Sat, 30 Dec 2023 10:08:34 +0200 > From: Eli Zaretskii > > > From: Ihor Radchenko > > Cc: monnier@iro.umontreal.ca, dmitry@gutov.dev, 66117@debbugs.gnu.org > > Date: Fri, 29 Dec 2023 13:55:45 +0000 > > > > Eli Zaretskii writes: > > > > >> No. I just had a problem with my local git repo. git reset fixed it and > > >> revealed that the patch is indeed not installed yet. > > > > > > Is that patch still valid, or do you need to rebase it? Would you > > > like to repost it? > > > > All the three patches I submitted in this thread are cleanly applying > > onto freshly cloned master. > > Thanks, I installed them. > > Should we now close this bug? Ehmm... I see that test/src/buffer-tests now have 5 failures that were not there before: 5 unexpected results: FAILED test-buffer-modifications FAILED test-kill-buffer-auto-save-default FAILED test-kill-buffer-auto-save-delete-no FAILED test-kill-buffer-auto-save-delete-yes FAILED test-restore-buffer-modified-p Also, 7 of the lisp/files-test fail: 7 unexpected results: FAILED files-tests-bug-18141 FAILED files-tests-file-name-non-special-make-auto-save-file-name FAILED files-tests-file-name-non-special-set-visited-file-modtime FAILED files-tests-no-file-write-contents FAILED files-tests-revert-buffer FAILED files-tests-revert-buffer-with-fine-grain FAILED files-tests-zzdont-rewrite-precious-files Could you please look into these? (Interestingly, those 5+7 don't fail for me on MS-Windows, only on GNU/Linux...) From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 30 Dec 2023 10:11:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: yantar92@posteo.net Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170393105231324 (code B ref 66117); Sat, 30 Dec 2023 10:11:01 +0000 Received: (at 66117) by debbugs.gnu.org; 30 Dec 2023 10:10:52 +0000 Received: from localhost ([127.0.0.1]:43067 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJWIt-000899-PJ for submit@debbugs.gnu.org; Sat, 30 Dec 2023 05:10:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52518) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJWIr-00088w-LH for 66117@debbugs.gnu.org; Sat, 30 Dec 2023 05:10:50 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rJWIl-0006Us-4R; Sat, 30 Dec 2023 05:10:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=bg3znW2K6a8d8bcMBu8K56kOZYefxvB/yW5Qaiefw/M=; b=HfdAKE+StDyR tserZPap+4MKt9LsvAGXELE/WWnvbfvG+CGmox5ELm7rRvCdG43jjLzpSuX2ZbBhz6uUiYj/0iJSQ 8QdFJWFmMUzb1RmXIAzlQoGdPUHPI/3K5GVdIwBoySqm+yrMmTHCi58s2cIZElNlrjuuIJ+YN4loA Un6+oRc749CiAPg1Tey9Dbl9G1+JYqJ8fCYOPMV/B45js2gpirMVWaRMaVXNL2rkJ7+wERhrQU9YX YP4K4bZ03sWaW9ZNiabm/m2lYLG7Itwz1kbyU+3Gh9/bhdFRPikEKX+xcV7emNF91BjlEjSa5XFdR 1X9WfKiVSdxz5ltJpK/HSQ==; Date: Sat, 30 Dec 2023 12:10:33 +0200 Message-Id: <83frzk3srq.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <83h6k03tpx.fsf@gnu.org> (message from Eli Zaretskii on Sat, 30 Dec 2023 11:50:02 +0200) References: <878r919qfh.fsf@localhost> <83zg1d468w.fsf@gnu.org> <87bkdr2651.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> <87msu1qmqv.fsf@localhost> <83zfy1cgoa.fsf@gnu.org> <87le9lcg4e.fsf@localhost> <831qb578n2.fsf@gnu.org> <87zfxt3yfy.fsf@localhost> <83jzow3yf1.fsf@gnu.org> <83h6k03tpx.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca > Date: Sat, 30 Dec 2023 11:50:02 +0200 > From: Eli Zaretskii > > > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca > > Date: Sat, 30 Dec 2023 10:08:34 +0200 > > From: Eli Zaretskii > > > > > From: Ihor Radchenko > > > Cc: monnier@iro.umontreal.ca, dmitry@gutov.dev, 66117@debbugs.gnu.org > > > Date: Fri, 29 Dec 2023 13:55:45 +0000 > > > > > > Eli Zaretskii writes: > > > > > > >> No. I just had a problem with my local git repo. git reset fixed it and > > > >> revealed that the patch is indeed not installed yet. > > > > > > > > Is that patch still valid, or do you need to rebase it? Would you > > > > like to repost it? > > > > > > All the three patches I submitted in this thread are cleanly applying > > > onto freshly cloned master. > > > > Thanks, I installed them. > > > > Should we now close this bug? > > Ehmm... I see that test/src/buffer-tests now have 5 failures that > were not there before: > > 5 unexpected results: > FAILED test-buffer-modifications > FAILED test-kill-buffer-auto-save-default > FAILED test-kill-buffer-auto-save-delete-no > FAILED test-kill-buffer-auto-save-delete-yes > FAILED test-restore-buffer-modified-p > > Also, 7 of the lisp/files-test fail: > > 7 unexpected results: > FAILED files-tests-bug-18141 > FAILED files-tests-file-name-non-special-make-auto-save-file-name > FAILED files-tests-file-name-non-special-set-visited-file-modtime > FAILED files-tests-no-file-write-contents > FAILED files-tests-revert-buffer > FAILED files-tests-revert-buffer-with-fine-grain > FAILED files-tests-zzdont-rewrite-precious-files > > Could you please look into these? (Interestingly, those 5+7 don't > fail for me on MS-Windows, only on GNU/Linux...) I think at least part of the problem is in this fragment from find-file-noselect: ;; Find any buffer for a file that has same truename. (other (and (not buf) (find-buffer-visiting filename ;; We want to filter out buffers that we've ;; visited via symlinks and the like, where ;; the symlink no longer exists. (lambda (buffer) (let ((file (buffer-local-value 'buffer-file-name buffer))) (and file (file-exists-p file)))))))) This call to find-buffer-visiting fails because file-exists-p is called with a nil argument: Test test-buffer-modifications backtrace: file-exists-p(nil) find-buffer-visiting("/tmp/emacs-test-MzitxT-buffer" #f(compiled-fun find-file-noselect("/tmp/emacs-test-MzitxT-buffer" nil nil nil) find-file("/tmp/emacs-test-MzitxT-buffer") Please attend to this as soon as you can, because I think this same problem will break many other use cases. (I guess this doesn't happen on Windows because the involved files/directories are not symlinks.) From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 30 Dec 2023 10:37:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170393261121329 (code B ref 66117); Sat, 30 Dec 2023 10:37:02 +0000 Received: (at 66117) by debbugs.gnu.org; 30 Dec 2023 10:36:51 +0000 Received: from localhost ([127.0.0.1]:43086 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJWi2-0005Xx-JY for submit@debbugs.gnu.org; Sat, 30 Dec 2023 05:36:51 -0500 Received: from mout02.posteo.de ([185.67.36.66]:38231) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJWi0-0005Xj-8Q for 66117@debbugs.gnu.org; Sat, 30 Dec 2023 05:36:49 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 17AE5240101 for <66117@debbugs.gnu.org>; Sat, 30 Dec 2023 11:36:41 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1703932602; bh=KD6QDpcDFE7Bz03BU/JkgYJiKa/I4pEHX9JcDpfWuQI=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=qqFcYlWmWLertoxzknKOYMqS9QL5n88zzZdB9BP185AGqYLTX58tP+h8zh+tc3QK6 TCrrCINjBh2gUB3LCl5q8DqC5+SbsT4SJMy6zCPNsX5rOfbwz01nkr7eZYwtJM60yS pdSJhcsSMLJSpu1TIfSyGCj9ptkQ/yyqb3S4p/W4TE1L05AWXxqnUpZWra7elnjSPx RMabtzdsNC2NHsZKGMviULf0b+ZfMcV8f2edU9z6Fq3LiRZhcglWnNCu+c3hGUyrgS nBeWV16CxE0z6PVSnGpWGbhvSqET5ZWsFrw9dr7Hqag+5rM/kF+jd4ljey5xqRdcfU kpldESxG19hgw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4T2JZc34xbz6tw9; Sat, 30 Dec 2023 11:36:40 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83frzk3srq.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> <87msu1qmqv.fsf@localhost> <83zfy1cgoa.fsf@gnu.org> <87le9lcg4e.fsf@localhost> <831qb578n2.fsf@gnu.org> <87zfxt3yfy.fsf@localhost> <83jzow3yf1.fsf@gnu.org> <83h6k03tpx.fsf@gnu.org> <83frzk3srq.fsf@gnu.org> Date: Sat, 30 Dec 2023 10:39:49 +0000 Message-ID: <87frzkas96.fsf@localhost> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain Eli Zaretskii writes: >> Ehmm... I see that test/src/buffer-tests now have 5 failures that >> were not there before: >> >> 5 unexpected results: >> FAILED test-buffer-modifications >> FAILED test-kill-buffer-auto-save-default >> FAILED test-kill-buffer-auto-save-delete-no >> FAILED test-kill-buffer-auto-save-delete-yes >> FAILED test-restore-buffer-modified-p >> >> Also, 7 of the lisp/files-test fail: >> >> 7 unexpected results: >> FAILED files-tests-bug-18141 >> FAILED files-tests-file-name-non-special-make-auto-save-file-name >> FAILED files-tests-file-name-non-special-set-visited-file-modtime >> FAILED files-tests-no-file-write-contents >> FAILED files-tests-revert-buffer >> FAILED files-tests-revert-buffer-with-fine-grain >> FAILED files-tests-zzdont-rewrite-precious-files >> >> Could you please look into these? (Interestingly, those 5+7 don't >> fail for me on MS-Windows, only on GNU/Linux...) FYI, all the tests are passing on my side (GNU/Linux): cd test make src/buffer-tests Ran 406 tests, 406 results as expected, 0 unexpected (2023-12-30 11:24:04+0100, 0.464788 sec) > I think at least part of the problem is in this fragment from > find-file-noselect: > > ;; Find any buffer for a file that has same truename. > (other (and (not buf) > (find-buffer-visiting > filename > ;; We want to filter out buffers that we've > ;; visited via symlinks and the like, where > ;; the symlink no longer exists. > (lambda (buffer) > (let ((file (buffer-local-value > 'buffer-file-name buffer))) > (and file (file-exists-p file)))))))) Not this one - (and file ...) will never trigger when file is nil. > Test test-buffer-modifications backtrace: > file-exists-p(nil) > find-buffer-visiting("/tmp/emacs-test-MzitxT-buffer" #f(compiled-fun > find-file-noselect("/tmp/emacs-test-MzitxT-buffer" nil nil nil) > find-file("/tmp/emacs-test-MzitxT-buffer") > > Please attend to this as soon as you can, because I think this same > problem will break many other use cases. I think I found the problem - it is rather silly. See the attached patch. --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-find-buffer-visiting-Fix-test-breakage-introduced-in.patch >From 0edc966cd7e2b9c2ce3af44a4a72e6f467eaf713 Mon Sep 17 00:00:00 2001 Message-ID: <0edc966cd7e2b9c2ce3af44a4a72e6f467eaf713.1703932575.git.yantar92@posteo.net> From: Ihor Radchenko Date: Sat, 30 Dec 2023 11:31:51 +0100 Subject: [PATCH] find-buffer-visiting: Fix test breakage introduced in b7a737ef49 * lisp/files.el (find-buffer-visiting): Fix code branch checking for buffers referring to the same file number. We should check the found buffer with the file number, not current. Link: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#412 --- lisp/files.el | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lisp/files.el b/lisp/files.el index 315ba831e8..78e2bca3cf 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -2220,15 +2220,17 @@ find-buffer-visiting (number (file-attribute-file-identifier attributes))) (and buffer-file-numbers-unique (car-safe number) ;Make sure the inode is not just nil. - (let ((buf (find-buffer 'buffer-file-number number))) - (when (and buf (buffer-local-value 'buffer-file-name buf) + (let* ((buf (find-buffer 'buffer-file-number number)) + (buf-file-name (and buf (buffer-local-value 'buffer-file-name buf)))) + (when (and buf-file-name ;; Verify this buffer's file number ;; still belongs to its file. - (file-exists-p buffer-file-name) - (equal (file-attributes buffer-file-truename) - attributes) + (file-exists-p buf-file-name) + (equal + (file-attributes (buffer-local-value 'buffer-file-truename buf)) + attributes) (or (not predicate) - (funcall predicate (current-buffer)))) + (funcall predicate buf))) buf)))))))) -- 2.42.0 --=-=-= Content-Type: text/plain -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at --=-=-=-- From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 30 Dec 2023 11:08:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170393444912281 (code B ref 66117); Sat, 30 Dec 2023 11:08:01 +0000 Received: (at 66117) by debbugs.gnu.org; 30 Dec 2023 11:07:29 +0000 Received: from localhost ([127.0.0.1]:43185 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJXBg-0003C1-Qw for submit@debbugs.gnu.org; Sat, 30 Dec 2023 06:07:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48736) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJXBf-0003Bo-58 for 66117@debbugs.gnu.org; Sat, 30 Dec 2023 06:07:28 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rJXBZ-0000Cx-04; Sat, 30 Dec 2023 06:07:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=F2oWwH/zSHpzGfTyypK4WNnhtRCvO8N8eTNi4Cgp0Rw=; b=E/43uO/kxTvE 2HwGib224sGpLBB/JMBImBXMdjpOBhXwFITYRapugacSryfOHO6MAqmsMldEmRmpqZDa8g/JJKYgi o6KoWBxsqYEeL0KOFvo+VwVbRYhoU6umrjK/mBW2QzxbXbNpr7S6CEKTWm/annI698XrYNZOJR+Rl LlIFMCihWO7mCj4DMTzfSmVWvP/T6VNrTD7fDBecxpGOov2R+6INO5Vyk6+28fXzd/8CfDxPyz4pV 4bmTwP4D0VKqtJZsZILGsF01nVsGSMdHRG6hyCR2fGIyU1wrXC0DNe9b5Wh+qZTstZkseK/k4nBpj rKiQbeJ23OtyBiOmfdMHVw==; Date: Sat, 30 Dec 2023 13:07:10 +0200 Message-Id: <83cyuo3q5d.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87frzkas96.fsf@localhost> (message from Ihor Radchenko on Sat, 30 Dec 2023 10:39:49 +0000) References: <878r919qfh.fsf@localhost> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> <87msu1qmqv.fsf@localhost> <83zfy1cgoa.fsf@gnu.org> <87le9lcg4e.fsf@localhost> <831qb578n2.fsf@gnu.org> <87zfxt3yfy.fsf@localhost> <83jzow3yf1.fsf@gnu.org> <83h6k03tpx.fsf@gnu.org> <83frzk3srq.fsf@gnu.org> <87frzkas96.fsf@localhost> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca > Date: Sat, 30 Dec 2023 10:39:49 +0000 > > Eli Zaretskii writes: > > > I think at least part of the problem is in this fragment from > > find-file-noselect: > > > > ;; Find any buffer for a file that has same truename. > > (other (and (not buf) > > (find-buffer-visiting > > filename > > ;; We want to filter out buffers that we've > > ;; visited via symlinks and the like, where > > ;; the symlink no longer exists. > > (lambda (buffer) > > (let ((file (buffer-local-value > > 'buffer-file-name buffer))) > > (and file (file-exists-p file)))))))) > > Not this one - (and file ...) will never trigger when file is nil. Granted, that call to file-exists-p was not what I meant. > I think I found the problem - it is rather silly. > See the attached patch. Thanks, installed. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 30 Dec 2023 12:49:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: dmitry@gutov.dev, 66117@debbugs.gnu.org, monnier@iro.umontreal.ca Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170394048728473 (code B ref 66117); Sat, 30 Dec 2023 12:49:01 +0000 Received: (at 66117) by debbugs.gnu.org; 30 Dec 2023 12:48:07 +0000 Received: from localhost ([127.0.0.1]:43262 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJYl5-0007P8-8X for submit@debbugs.gnu.org; Sat, 30 Dec 2023 07:48:07 -0500 Received: from mout01.posteo.de ([185.67.36.65]:53441) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJYl2-0007Nw-4X for 66117@debbugs.gnu.org; Sat, 30 Dec 2023 07:48:06 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 894DC240028 for <66117@debbugs.gnu.org>; Sat, 30 Dec 2023 13:47:57 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1703940477; bh=6yOoot+2SarCF57OWIQt/112gdZebOFE/xG5faYPaxE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=frGMagS3b3oErhGfhaVwACu3qEuzbgv84rT3pBIj38niWAdEIyc+i+QnnqkQPY92r EwKgNhz7Nq+kvBmDE6OvirQSZogsRdy6jcoYICM0N5jzHNEZA1T2hegHi60oKfTou2 Hi7tADkQBuDThlXd0CTlu+/BCL3EONfoF5AClQqFZwUe298Gy+erNxItrQzru/PYwi Js4yTY+CplEroSjCL/aOBspHC3XS0aEXa8DqsRiNOkFHgfDwLMTyzPbc13rUeBiXuV jmJs3nbMFumBOCqkw/jrgn7zp8BYuR/duFu0tESkeHFByNyFWFQ4BV5VGp8DL8dzoO 0n/be2JLuypAA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4T2MV405MSz9rxD; Sat, 30 Dec 2023 13:47:55 +0100 (CET) From: Ihor Radchenko In-Reply-To: <83jzow3yf1.fsf@gnu.org> References: <878r919qfh.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> <87msu1qmqv.fsf@localhost> <83zfy1cgoa.fsf@gnu.org> <87le9lcg4e.fsf@localhost> <831qb578n2.fsf@gnu.org> <87zfxt3yfy.fsf@localhost> <83jzow3yf1.fsf@gnu.org> Date: Sat, 30 Dec 2023 12:51:09 +0000 Message-ID: <875y0fc0qq.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> All the three patches I submitted in this thread are cleanly applying >> onto freshly cloned master. > > Thanks, I installed them. Thanks! > Should we now close this bug? Yes, I think. I hope that closing the bug will not make question to Stefan (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#373) fall through the cracks. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Ihor Radchenko Subject: bug#66117: closed (Re: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers) Message-ID: References: <83a5pr4ydn.fsf@gnu.org> <878r919qfh.fsf@localhost> X-Gnu-PR-Message: they-closed 66117 X-Gnu-PR-Package: emacs Reply-To: 66117@debbugs.gnu.org Date: Sat, 30 Dec 2023 13:25:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1703942702-19462-1" This is a multi-part message in MIME format... ------------=_1703942702-19462-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #66117: 30.0.50; `find-buffer-visiting' is slow when opening large number o= f buffers which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 66117@debbugs.gnu.org. --=20 66117: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D66117 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1703942702-19462-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 66117-done) by debbugs.gnu.org; 30 Dec 2023 13:24:27 +0000 Received: from localhost ([127.0.0.1]:43276 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJZKF-00052y-CA for submit@debbugs.gnu.org; Sat, 30 Dec 2023 08:24:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48066) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rJZKB-00052j-3g for 66117-done@debbugs.gnu.org; Sat, 30 Dec 2023 08:24:25 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rJZK3-0004Pb-SC; Sat, 30 Dec 2023 08:24:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=M66dqWF0yrZ7T3RWXRtUcMqedi9FsSO7jpGII15IQjw=; b=pLjY0kkabGvM fXnyGTg2RWRv9IDTZAdAnCn34baI94dxjrOZqYG7aGeZyq1Mfq84CqN9neDvwF+5ujtTKqjoECeH/ PnAeDFRNGtHwOKXw9fVMcnVP/tQCLfazprwoG3H4R57kYVX45yqCm6BwwLLyuPf+FZtktazqV1H8X iHGBxaPhTJMBupQTTFv/2diB+Gex++vqeYUiSwle/ky1KEPrkL3Ev6xrk9Ccoh4ukeMKICFPi4+k2 Ze1D6KQky/Zn2WRS95zTaC68xhfnx7f1UMBY5sja2OBBdEiw/9BRrI2FCGmViskR+qgMMkD7dJkfe zO9v/5E2aJXI2YiUpzmSnQ==; Date: Sat, 30 Dec 2023 15:24:04 +0200 Message-Id: <83a5pr4ydn.fsf@gnu.org> From: Eli Zaretskii To: Ihor Radchenko In-Reply-To: <875y0fc0qq.fsf@localhost> (message from Ihor Radchenko on Sat, 30 Dec 2023 12:51:09 +0000) Subject: Re: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers References: <878r919qfh.fsf@localhost> <87pm2584oz.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> <87msu1qmqv.fsf@localhost> <83zfy1cgoa.fsf@gnu.org> <87le9lcg4e.fsf@localhost> <831qb578n2.fsf@gnu.org> <87zfxt3yfy.fsf@localhost> <83jzow3yf1.fsf@gnu.org> <875y0fc0qq.fsf@localhost> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 66117-done Cc: dmitry@gutov.dev, 66117-done@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Ihor Radchenko > Cc: monnier@iro.umontreal.ca, dmitry@gutov.dev, 66117@debbugs.gnu.org > Date: Sat, 30 Dec 2023 12:51:09 +0000 > > Eli Zaretskii writes: > > > Should we now close this bug? > > Yes, I think. I hope that closing the bug will not make question to > Stefan (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#373) fall > through the cracks. Thanks, closing. ------------=_1703942702-19462-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 20 Sep 2023 08:52:26 +0000 Received: from localhost ([127.0.0.1]:58348 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qiswc-0002CG-NS for submit@debbugs.gnu.org; Wed, 20 Sep 2023 04:52:26 -0400 Received: from lists.gnu.org ([2001:470:142::17]:33134) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qiswa-0002Bx-Ox for submit@debbugs.gnu.org; Wed, 20 Sep 2023 04:52:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qiswF-00072u-Bw for bug-gnu-emacs@gnu.org; Wed, 20 Sep 2023 04:52:03 -0400 Received: from mout01.posteo.de ([185.67.36.65]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qiswB-0003rB-11 for bug-gnu-emacs@gnu.org; Wed, 20 Sep 2023 04:52:03 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 13F63240027 for ; Wed, 20 Sep 2023 10:51:57 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1695199917; bh=VTwniVCBRl70cu31ldn8T+oqSrPa+tfra0GiejktDM0=; h=From:To:Subject:Date:Message-ID:MIME-Version:From; b=m/BgfqEHqci0jKEMULCmwtzJNm+Yjep0B26FR5Am6k0Im1w9d06lpV3PAN1yMrETc 6Wqz7+lma0B3kNRPi/gHQZDXmxAaweBnC74ZEEdEyC1lx8myVxgmfmJFfIw/Z5uKSh MrKhZhVTU79F8zTZow/7pHXORx9ShhVF5HNohyKxKEHPj5yLw6jq7QEdlwl3b8gISc UHqDdQI7yGc1ifN3Zvpyuj1PyFskOD+U26NK2CVv1eIavh+gO44LW5hXIQV4NhsVS1 C12TUHvF341fJ343CfBXVr3/WAixMfvfHtsJ7lRZwGxPjPonQ8KpU2NxXSdnc9mP7G vwCxeUNFQYYcg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4RrC2H4BtPz6v4c for ; Wed, 20 Sep 2023 10:51:51 +0200 (CEST) From: Ihor Radchenko To: bug-gnu-emacs@gnu.org Subject: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Date: Wed, 20 Sep 2023 08:53:06 +0000 Message-ID: <878r919qfh.fsf@localhost> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=185.67.36.65; envelope-from=yantar92@posteo.net; helo=mout01.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --=-=-= Content-Type: text/plain X-Debbugs-CC: Dmitry Gutov Hello, Background: Some Org users (especially org-roam users) often complain that Org agenda is very slow (sometimes, tens of seconds or minutes) when running it right after startup. The cause is often not Org agenda itself, but Emacs opening files slowly. In some cases, the main reason files are opened slowly is user-defined hooks or various packages adding advices mindlessly. However, Emacs itself is also taking a significant fraction of time when opening a large number of buffers. I have recently got data on opening a large number of Org files in Emacs that clearly demonstrates that `file-buffer-visiting' (and thus `find-file') scale poorly when the number of buffers increases. This is especially clear when Org mode needs to open several hundreds of not-yet-opened Org files in a new Emacs session. In the attached profile, ~500 Org buffers are being opened and calls to `find-buffer-visiting' take 12.4 sec out of total 30.9 sec - 1/3 of all the execution time. After replacing some of the calls to `find-buffer-visiting' with `get-file-buffer', the total execution time decreased to ~20 sec, confirming that `find-buffer-visiting' is contributing significantly to slow performance. Would it be possible to implement some kind of caching mechanism to be used by `find-buffer-visiting'? --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=org_agenda_profile_2 Content-Transfer-Encoding: base64 Cltwcm9maWxlci1wcm9maWxlICIyOC4xIiBjcHUgI3MoaGFzaC10YWJsZSBzaXplIDM2OTQgdGVz dCBlcXVhbCByZWhhc2gtc2l6ZSAxLjUgcmVoYXNoLXRocmVzaG9sZCAwLjgxMjUgZGF0YSAoW3N5 bnRheC1wcHNzICtlbWFjcy1saXNwLWhpZ2hsaWdodC12YXJzLWFuZC1mYWNlcyBmb250LWxvY2st Zm9udGlmeS1rZXl3b3Jkcy1yZWdpb24gZm9udC1sb2NrLWRlZmF1bHQtZm9udGlmeS1yZWdpb24g Zm9udC1sb2NrLWZvbnRpZnktcmVnaW9uICIjPGNvbXBpbGVkIC0weDE1NDdkNDdlYjdhNzA0ODM+ IiBqaXQtbG9jay0tcnVuLWZ1bmN0aW9ucyBqaXQtbG9jay1mb250aWZ5LW5vdyBqaXQtbG9jay1m dW5jdGlvbiByZWRpc3BsYXlfaW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKSBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbF0gNSBbbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxMTA5IFsiIzxjb21waWxlZCAweGZjMzkwZjViMzQ1ZjE1 Mz4iIGZ1bmNhbGwgaWYgc2V0cSB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBwcm9q ZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBwcm9qZWN0LWN1cnJlbnQgYnJl YWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGZ1bmNh bGwgYnJlYWRjcnVtYi0taGVhZGVyLWxpbmUgZXZhbCByZWRpc3BsYXlfaW50ZXJuYWxcIFwoQ1wg ZnVuY3Rpb25cKV0gOTEwIFtub3QgYW5kIGlmIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBpZiBk aXItbG9jYWxzLS1hbGwtZmlsZXMgbGV0IG9yIGlmIGlmIGxldCogZGlyLWxvY2Fscy1maW5kLWZp bGVdIDIgW3Nob3ctcGFyZW4tLWRlZmF1bHQgc2hvdy1wYXJlbi1mdW5jdGlvbiBhcHBseSB0aW1l ci1ldmVudC1oYW5kbGVyIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsXSAxIFtwcm9qZWN0LXByb2plY3RpbGUgcHJvamVjdC0tZmluZC1pbi1kaXJlY3Rvcnkg cHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1w cm9qZWN0LWNydW1icyBmdW5jYWxsIGJyZWFkY3J1bWItLWhlYWRlci1saW5lIGV2YWwgcmVkaXNw bGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmls XSAxIFtmaWxlLW5hbWUtZGlyZWN0b3J5IHNldHEgZXF1YWwgY29uZCB3aGlsZSBsZXQgbG9jYXRl LWRvbWluYXRpbmctZmlsZSBwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9y eSBwcm9qZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1i LXByb2plY3QtY3J1bWJzIGZ1bmNhbGwgYnJlYWRjcnVtYi0taGVhZGVyLWxpbmUgZXZhbCByZWRp c3BsYXlfaW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKV0gMiBbZm9yd2FyZC1zZXhwIGVsaXNwLS1i ZWdpbm5pbmctb2Ytc2V4cCBlbGlzcC0tZm5zeW0taW4tY3VycmVudC1zZXhwIGVsaXNwLWVsZG9j LWZ1bmNhbGwgZWxkb2MtZG9jdW1lbnRhdGlvbi1kZWZhdWx0IGVsZG9jLS1pbnZva2Utc3RyYXRl Z3kgZWxkb2MtcHJpbnQtY3VycmVudC1zeW1ib2wtaW5mbyAiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2 Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzEyPiIgYXBwbHkgdGltZXItZXZl bnQtaGFuZGxlciBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMiBbc3ludGF4LXBwc3Mgc2Nhbi1z ZXhwcyBmb3J3YXJkLXNleHAgZWxpc3AtLWJlZ2lubmluZy1vZi1zZXhwIGVsaXNwLS1mbnN5bS1p bi1jdXJyZW50LXNleHAgZWxpc3AtZWxkb2MtZnVuY2FsbCBlbGRvYy1kb2N1bWVudGF0aW9uLWRl ZmF1bHQgZWxkb2MtLWludm9rZS1zdHJhdGVneSBlbGRvYy1wcmludC1jdXJyZW50LXN5bWJvbC1p bmZvICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19s YW1iZGFfMTI+IiBhcHBseSB0aW1lci1ldmVudC1oYW5kbGVyIG5pbCBuaWwgbmlsIG5pbF0gMSBb cHJvZ24gaWYgbGV0KiBwcm9nbiBpZiBkaXItbG9jYWxzLS1hbGwtZmlsZXMgbGV0IG9yIGlmIGlm IGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1n ZXQtdmFyaWFibGVzXSAxIFtwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9y eSBwcm9qZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1i LXByb2plY3QtY3J1bWJzIGZ1bmNhbGwgYnJlYWRjcnVtYi0taGVhZGVyLWxpbmUgZXZhbCByZWRp c3BsYXlfaW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWxdIDIgW2dlbmVyYWwtdW5iaW5kLW5vbi1wcmVmaXgta2V5IGFwcGx5IGRlZmluZS1rZXkgYnJl YWRjcnVtYi0tZm9ybWF0LXByb2plY3Qtbm9kZSBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0x IGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgZnVuY2FsbCBicmVhZGNydW1iLS1oZWFkZXItbGlu ZSBldmFsIHJlZGlzcGxheV9pbnRlcm5hbFwgXChDXCBmdW5jdGlvblwpIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsXSAxIFtldmFsIHJlZGlzcGxheV9pbnRlcm5hbFwgXChDXCBmdW5jdGlvblwpIG5p bCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDEg W3NldHEgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVhZGNy dW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgZnVuY2FsbCBi cmVhZGNydW1iLS1oZWFkZXItbGluZSBldmFsIHJlZGlzcGxheV9pbnRlcm5hbFwgXChDXCBmdW5j dGlvblwpIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDIgW2ZpbGUtYXR0cmlidXRlLW1vZGlmaWNhdGlv bi10aW1lIGxldCBsZXQgd2hpbGUgbGV0IGxldCB0aW1lLWVxdWFsLXAgYW5kIGxldCBvciBpZiBp ZiBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9nbl0gMSBbYnJlYWRjcnVtYi1pbWVu dS1jcnVtYnMgZnVuY2FsbCBicmVhZGNydW1iLS1oZWFkZXItbGluZSBldmFsIHJlZGlzcGxheV9p bnRlcm5hbFwgXChDXCBmdW5jdGlvblwpIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWxdIDEgW3doaWNoLWtleS0ta2V5LWRlc2NyaXB0aW9uPCAiIzxjb21waWxlZCAw eDFmNWRhZTliMTljMWY1ZWI+IiB3aGljaC1rZXktLWdldC1iaW5kaW5ncyB3aGljaC1rZXktLWNy ZWF0ZS1idWZmZXItYW5kLXNob3cgd2hpY2gta2V5LS11cGRhdGUgYXBwbHkgdGltZXItZXZlbnQt aGFuZGxlciBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMyBbd2hpY2gta2V5 LS1leHRyYWN0LWtleSB3aGljaC1rZXktLWtleS1kZXNjcmlwdGlvbjwgIiM8Y29tcGlsZWQgMHgx ZjVkYWU5YjE5YzFmNWViPiIgd2hpY2gta2V5LS1nZXQtYmluZGluZ3Mgd2hpY2gta2V5LS1jcmVh dGUtYnVmZmVyLWFuZC1zaG93IHdoaWNoLWtleS0tdXBkYXRlIGFwcGx5IHRpbWVyLWV2ZW50LWhh bmRsZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMSBbd2hpY2gta2V5LS1mb3Jt YXQtYW5kLXJlcGxhY2Ugd2hpY2gta2V5LS1nZXQtYmluZGluZ3Mgd2hpY2gta2V5LS1jcmVhdGUt YnVmZmVyLWFuZC1zaG93IHdoaWNoLWtleS0tdXBkYXRlIGFwcGx5IHRpbWVyLWV2ZW50LWhhbmRs ZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAxIFt3aGljaC1rZXkt LXJlcGxhY2UtaW4tcmVwbC1saXN0LW9uY2Ugd2hpY2gta2V5LS1tYXliZS1yZXBsYWNlIHdoaWNo LWtleS0tZm9ybWF0LWFuZC1yZXBsYWNlIHdoaWNoLWtleS0tZ2V0LWJpbmRpbmdzIHdoaWNoLWtl eS0tY3JlYXRlLWJ1ZmZlci1hbmQtc2hvdyB3aGljaC1rZXktLXVwZGF0ZSBhcHBseSB0aW1lci1l dmVudC1oYW5kbGVyIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDI1NCBbd2hpY2gt a2V5LS1wcm9wZXJ0aXplLWRlc2NyaXB0aW9uIHdoaWNoLWtleS0tZm9ybWF0LWFuZC1yZXBsYWNl IHdoaWNoLWtleS0tZ2V0LWJpbmRpbmdzIHdoaWNoLWtleS0tY3JlYXRlLWJ1ZmZlci1hbmQtc2hv dyB3aGljaC1rZXktLXVwZGF0ZSBhcHBseSB0aW1lci1ldmVudC1oYW5kbGVyIG5pbCBuaWwgbmls IG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSA2IFt3aGljaC1rZXktLW1heWJlLWFkZC1kb2NzdHJp bmcgd2hpY2gta2V5LS1mb3JtYXQtYW5kLXJlcGxhY2Ugd2hpY2gta2V5LS1nZXQtYmluZGluZ3Mg d2hpY2gta2V5LS1jcmVhdGUtYnVmZmVyLWFuZC1zaG93IHdoaWNoLWtleS0tdXBkYXRlIGFwcGx5 IHRpbWVyLWV2ZW50LWhhbmRsZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxd IDQgWyIjPGNvbXBpbGVkIC0weDFkZGYxMTNiN2QxNDIzYmY+IiBzdWJzdGl0dXRlLWNvbW1hbmQt a2V5cyB3aGljaC1rZXktLXByb3BlcnRpemUtZGVzY3JpcHRpb24gd2hpY2gta2V5LS1mb3JtYXQt YW5kLXJlcGxhY2Ugd2hpY2gta2V5LS1nZXQtYmluZGluZ3Mgd2hpY2gta2V5LS1jcmVhdGUtYnVm ZmVyLWFuZC1zaG93IHdoaWNoLWtleS0tdXBkYXRlIGFwcGx5IHRpbWVyLWV2ZW50LWhhbmRsZXIg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsXSAyIFsiIzxjb21waWxlZCAweDExYWYyOTIxYzFh YjNiZmY+IiBjbC1yZWR1Y2Ugd2hpY2gta2V5LS1wYWQtY29sdW1uICIjPGNvbXBpbGVkIC0weDE0 MmY0NTUzNmQyMjIwOGU+IiB3aGljaC1rZXktLWxpc3QtdG8tcGFnZXMgd2hpY2gta2V5LS1jcmVh dGUtcGFnZXMtMSB3aGljaC1rZXktLWNyZWF0ZS1wYWdlcyB3aGljaC1rZXktLWNyZWF0ZS1idWZm ZXItYW5kLXNob3cgd2hpY2gta2V5LS11cGRhdGUgYXBwbHkgdGltZXItZXZlbnQtaGFuZGxlciBu aWwgbmlsIG5pbCBuaWwgbmlsXSAxIFsiIzxsYW1iZGEgMHgxZTEwYmE0YWY0MDQxY2Q+IiB3aW5k b3ctLWRpc3BsYXktYnVmZmVyIHdpbmRvdy0tbWFrZS1tYWpvci1zaWRlLXdpbmRvdyBhbmQgbGV0 KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGNvbmQgbGV0KiBsZXQqICtwb3B1cC1kaXNwbGF5 LWJ1ZmZlci1zdGFja2VkLXNpZGUtd2luZG93LWZuIGRpc3BsYXktYnVmZmVyLWluLXNpZGUtd2lu ZG93IHdoaWNoLWtleS0tc2hvdy1idWZmZXItc2lkZS13aW5kb3cgcHJvZ24gcHJvZ25dIDEgW2V2 YWwgZm9ybWF0LW1vZGUtbGluZSBkb29tLW1vZGVsaW5lLWZvcm1hdC0tbWFpbiBldmFsIHJlZGlz cGxheV9pbnRlcm5hbFwgXChDXCBmdW5jdGlvblwpIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWwgbmlsIG5pbCBuaWxdIDIgW2JyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRj cnVtYi1wcm9qZWN0LWNydW1icyBmdW5jYWxsIGJyZWFkY3J1bWItLWhlYWRlci1saW5lIGV2YWwg cmVkaXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsXSAxIFtmdW5jYWxsIGlmIHNldHEgd2hpbGUgbGV0IGxvY2F0ZS1k b21pbmF0aW5nLWZpbGUgZW52cmMtLWZpbmQtZW52LWRpciAiIzxzdWJyIGVudnJjLS11cGRhdGU+ IiBhcHBseSBlbnZyYy0tdXBkYXRlIGVudnJjLW1vZGUgZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxl LWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGFwcGx5IHJ1bi1tb2RlLWhvb2tzIGZ1bmRhbWVudGFsLW1v ZGVdIDEgW3Byb2duIHByb2duIHdoaWxlIHByb2duIHdoaWxlIHByb2duIHVud2luZC1wcm90ZWN0 IGxldCBsZXQqIGNhdGNoICIjPGxhbWJkYSAtMHgxZDJlZTA2MWYzOWVjNzhmPiIgYXBwbHkgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBwcm9nbl0gMSBbcmVhZC1jaGFyLWV4Y2x1c2l2ZSBzZXRx IHByb2duIHByb2duIHdoaWxlIHByb2duIHdoaWxlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBs ZXQqIGNhdGNoICIjPGxhbWJkYSAtMHgxZDJlZTA2MWYzOWVjNzhmPiIgYXBwbHkgcHJvZ24gdW53 aW5kLXByb3RlY3RdIDYgW3NldHEgcHJvZ24gcHJvZ24gd2hpbGUgcHJvZ24gd2hpbGUgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0IGxldCogY2F0Y2ggIiM8bGFtYmRhIC0weDFkMmVlMDYxZjM5ZWM3 OGY+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSAyMyBbdW53aW5kLXByb3RlY3Qg bGV0IGxldCogY2F0Y2ggIiM8bGFtYmRhIC0weDFkMmVlMDYxZjM5ZWM3OGY+IiBhcHBseSBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogaWYgK3BvcHVw LS1zdXBwcmVzcy1kZWxldGUtb3RoZXItd2luZG93cy1hIGFwcGx5IG9yZy1hZ2VuZGEtZ2V0LXJl c3RyaWN0aW9uLWFuZC1jb21tYW5kXSAxIFtpZiAiIzxsYW1iZGEgMHgyODA5YzM0ODA0YWMxYTY+ IiBtYXBjYXIgYXBwbHkgc2V0cSBsZXQgb3JnLWFnZW5kYS1maWxlcyBtYXBjYXIgYXBwZW5kIGVh c3ktbWVudS1jaGFuZ2Ugb3JnLWFnZW5kYS1tb2RlIGlmIGlmIGxldCBvcmctYWdlbmRhLXByZXBh cmUgY2F0Y2hdIDcgW2FuZCAiIzxsYW1iZGEgMHgxZTEwYmE4YjliZDdmZj4iIG1hcGNhciBkZWxx IHNldHEgcHJvZ24gaWYgbGV0IG9yZy1hZ2VuZGEtZmlsZXMgbWFwY2FyIGFwcGVuZCBlYXN5LW1l bnUtY2hhbmdlIG9yZy1hZ2VuZGEtbW9kZSBpZiBpZiBsZXRdIDQgW2Vhc3ktbWVudS1jcmVhdGUt bWVudSBlYXN5LW1lbnUtY2hhbmdlIG9yZy1hZ2VuZGEtbW9kZSBpZiBpZiBsZXQgb3JnLWFnZW5k YS1wcmVwYXJlIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY2Fs bC1pbnRlcmFjdGl2ZWx5IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhIGZ1bmNhbGwtaW50ZXJh Y3RpdmVseV0gMSBbaWYgIiM8bGFtYmRhIDB4MjgwOWMzNDgwNGFjMWE2PiIgbWFwY2FyIGFwcGx5 IHNldHEgbGV0IG9yZy1hZ2VuZGEtZmlsZXMgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWYg aWYgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZSBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1p bnRlcmFjdGl2ZWx5IGNhbGwtaW50ZXJhY3RpdmVseV0gNSBbYW5kICIjPGxhbWJkYSAweDFlMTBi YThiOWJkN2ZmPiIgbWFwY2FyIGRlbHEgc2V0cSBwcm9nbiBpZiBsZXQgb3JnLWFnZW5kYS1maWxl cyBvcmctYWdlbmRhLXByZXBhcmUtYnVmZmVycyBpZiBpZiBsZXQgb3JnLWFnZW5kYS1wcmVwYXJl IGNhdGNoIG9yZy1hZ2VuZGEtbGlzdF0gNCBbbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQg bGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cV0gNCBb IiM8Y29tcGlsZWQgMHgxMjQwYzJjNTc1YzEzZjVlPiIgbWFwY2FyICIjPGNvbXBpbGVkIC0weDE5 NmY5ZGM4MGI0ZTZlNDY+IiBwcm9qZWN0aWxlLWxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgcHJvamVj dGlsZS1yb290LWJvdHRvbS11cCAiIzxjb21waWxlZCAtMHgzM2E5MmM5N2MxMTE4YjA+IiBjbC1z b21lIHByb2plY3RpbGUtcHJvamVjdC1yb290IHByb2plY3QtcHJvamVjdGlsZSBwcm9qZWN0LS1m aW5kLWluLWRpcmVjdG9yeSBwcm9qZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVt YnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwt bW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1i dWZmZXJzIHJ1bi1ob29rc10gMiBbbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNl dHEgbGV0KiBjb25kaXRpb24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2 Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1h dXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2FzZSBsZXRdIDcgW2FuZCB1 bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQgb3JnLXBlcnNpc3QtLXJl YWQtZWxpc3AtZmlsZSBvciBzZXRxIGlmIHByb2duIGlmIGxldCogcHJvZ24gcHJvZ24gbGV0KiBv cmctcGVyc2lzdC1yZWFkXSAxNiBbbG9jYXRlLWZpbGUgbG9jYXRlLWxpYnJhcnkgamlueC0tbG9h ZC1tb2R1bGUgamlueC1tb2RlIGppbngtLW9uIGdsb2JhbC1qaW54LW1vZGUtZW5hYmxlLWluLWJ1 ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYg aWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmXSA0IFtqaW54LS1sb2FkLWRpY3RzIGppbngtbW9k ZSBqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBy dW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUt MCBwcm9nbiBpZiBsZXQgaWZdIDEzIFtzZXRxIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxl LXJlbGF0aXZlLW5hbWUgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXBy b2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2Yt Z2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBy dW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmXSAzIFt5YXMtLXBhcnNl LXRlbXBsYXRlIHlhcy0tbG9hZC1kaXJlY3RvcnktMiB5YXMtLWxvYWQtZGlyZWN0b3J5LTEgYXBw bHkgIiM8Y29tcGlsZWQgLTB4MWJjMzU5NDllOGZmMTE4ZT4iIHlhcy0tbG9hZC1wZW5kaW5nLWpp dHMgeWFzLW1pbm9yLW1vZGUgeWFzLW1pbm9yLW1vZGUtb24geWFzLWdsb2JhbC1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHBy b2duIGlmIGlmXSAxIFthbmQgaWYgc2V0cSB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmls ZSB5YXMtLWNhbGN1bGF0ZS1ncm91cCB5YXMtLXBhcnNlLXRlbXBsYXRlIHlhcy0tbG9hZC1kaXJl Y3RvcnktMiB5YXMtLWxvYWQtZGlyZWN0b3J5LTEgYXBwbHkgIiM8Y29tcGlsZWQgLTB4MWJjMzU5 NDllOGZmMTE4ZT4iIHlhcy0tbG9hZC1wZW5kaW5nLWppdHMgeWFzLW1pbm9yLW1vZGUgeWFzLW1p bm9yLW1vZGUtb24geWFzLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzXSA0IFtmaWxlLWV4 aXN0cy1wIGFuZCBpZiBzZXRxIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIHlhcy0t Y2FsY3VsYXRlLWdyb3VwIHlhcy0tcGFyc2UtdGVtcGxhdGUgeWFzLS1sb2FkLWRpcmVjdG9yeS0y IHlhcy0tbG9hZC1kaXJlY3RvcnktMSBhcHBseSAiIzxjb21waWxlZCAtMHgxYmMzNTk0OWU4ZmYx MThlPiIgeWFzLS1sb2FkLXBlbmRpbmctaml0cyB5YXMtbWlub3ItbW9kZSB5YXMtbWlub3ItbW9k ZS1vbl0gNiBbYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9taW5hdGluZy1maWxl IHlhcy0tY2FsY3VsYXRlLWdyb3VwIHlhcy0tcGFyc2UtdGVtcGxhdGUgeWFzLS1sb2FkLWRpcmVj dG9yeS0yIHlhcy0tbG9hZC1kaXJlY3RvcnktMSBhcHBseSAiIzxjb21waWxlZCAtMHgxYmMzNTk0 OWU4ZmYxMThlPiIgeWFzLS1sb2FkLXBlbmRpbmctaml0cyB5YXMtbWlub3ItbW9kZSB5YXMtbWlu b3ItbW9kZS1vbiB5YXMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1 bi1tb2RlLWhvb2tzIG9yZy1tb2RlXSAyIFtmaW5kLWF1dG8tY29kaW5nIHNldC1hdXRvLWNvZGlu ZyAiIzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHkgaWYgZWRpdG9yY29uZmlnLS1h ZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29udGVudHMgeWFz LS1sb2FkLWRpcmVjdG9yeS0yIHlhcy0tbG9hZC1kaXJlY3RvcnktMSBhcHBseSAiIzxjb21waWxl ZCAtMHgxYmMzNTk0OWU4ZmYxMThlPiIgeWFzLS1sb2FkLXBlbmRpbmctaml0cyB5YXMtbWlub3It bW9kZSB5YXMtbWlub3ItbW9kZS1vbiB5YXMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnNd IDIgW2FwcGx5IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFw cGx5IGluc2VydC1maWxlLWNvbnRlbnRzIHlhcy0tbG9hZC1kaXJlY3RvcnktMiB5YXMtLWxvYWQt ZGlyZWN0b3J5LTEgYXBwbHkgIiM8Y29tcGlsZWQgLTB4MWJjMzU5NDllOGZmMTE4ZT4iIHlhcy0t bG9hZC1wZW5kaW5nLWppdHMgeWFzLW1pbm9yLW1vZGUgeWFzLW1pbm9yLW1vZGUtb24geWFzLWds b2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmct bW9kZV0gMSBbIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnlt b3VzX2xhbWJkYV8yMj4iIGNsLXJlbW92ZSBjbC1yZW1vdmUtaWYgeWFzLS1zdWJkaXJzIHlhcy0t bG9hZC1kaXJlY3RvcnktMiB5YXMtLWxvYWQtZGlyZWN0b3J5LTEgYXBwbHkgIiM8Y29tcGlsZWQg LTB4MWJjMzU5NDllOGZmMTE4ZT4iIHlhcy0tbG9hZC1wZW5kaW5nLWppdHMgeWFzLW1pbm9yLW1v ZGUgeWFzLW1pbm9yLW1vZGUtb24geWFzLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsXSAxIFthcHBseSAiIzxjb21w aWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNl dC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAt MHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20t LXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseV0gMTMgW3doaWxlIGFuZCBsZXQqIG9yIGxldCBmaW5k LWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgx MzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1u b3NlbGVjdF0gODMwIFtzdWJzdHJpbmcgaWYgbGV0IGZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGlm IGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNvLWxvbmctLWNoZWNrLWhlYWRlci1tb2Rl cyBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNh c2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+Il0gMSBb Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3Qt LW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgcHJvZ24gcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1y ZWFkIHByb2duIGxldCogb3JnLXBlcnNpc3QtbG9hZCBwcm9nbiBpZiBsZXQgcHJvZ25dIDEgW2xl dCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBz ZXRxIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQg cHJvZ24gaWYgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgbGV0Kl0gMTUgW3doaWxlIGxl dCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFzZS1idWZmZXItdmlzaXRp bmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29yZy0t b3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2Vu ZGEtZmlsZS1idWZmZXIgaWYgc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVmZmVyXSA4NDQgW25v dCBzZXRxICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAw eGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIg YXBwbHkgYWZ0ZXItZmluZC1maWxlIGlmIHNhdmUtY3VycmVudC1idWZmZXJdIDE4IFthc3NvYy1k ZWZhdWx0IGxldCBvciBpZiBzZXRxIHdoaWxlIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1h bGlzdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8 Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZV0gMTYg W2Z1bmNhbGwgaWYgc2V0cSB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0t ZmluZC1lbnYtZGlyICIjPHN1YnIgZW52cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUg ZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mg YXBwbHkgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGVdIDQyIFtsZXQgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJy ZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9u LWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMg cnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWZdIDEg W2JyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUg YnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29r cyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBs ZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cV0gMTggW3lhcy1taW5vci1tb2Rl IHlhcy1taW5vci1tb2RlLW9uIHlhcy1nbG9iYWwtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4t aG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0 by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSA3IFtt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRl ZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGhhc2ggcHJvZ24gbGV0IGVkaXRvcmNvbmZpZy1jYWxsLWdl dC1wcm9wZXJ0aWVzLWZ1bmN0aW9uIHNldHEgcHJvZ24gaWYgY29uZGl0aW9uLWNhc2UgbGV0IGVk aXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9z ZWxlY3RdIDEgW2xldCBvciBpZiBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBw bHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBw bHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgy Y2Y0YmI1ZDk4OWM5OD4iIGFwcGx5IGFmdGVyLWZpbmQtZmlsZV0gOCBbYW5kIGlmIGxldCB3aGls ZSBsZXQgbGV0KiBwcm9nbiBpZiBkaXItbG9jYWxzLS1hbGwtZmlsZXMgZnVuY2FsbCBpZiBzZXRx IHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCpdIDExMiBbIiM8bGFtYmRhIDB4 MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCogb3JnLXBlcnNpc3Qt LW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJl YWQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1sb2FkIHByb2duXSAxIFtzbWFydHBhcmVucy1tb2Rl IHR1cm4tb24tc21hcnRwYXJlbnMtbW9kZSBzbWFydHBhcmVucy1nbG9iYWwtbW9kZS1lbmFibGUt aW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9n biBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0XSAxNCBbbGV0IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgcHJvamVjdC10cnktdmMg cHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXBy b2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJu LW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1l bmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2Fs bCBwcm9nbiBpZiBpZl0gMSBbZm9udC1sb2NrLWZsdXNoIHdoaXRlc3BhY2UtY29sb3Itb24gd2hp dGVzcGFjZS10dXJuLW9uIHdoaXRlc3BhY2UtbW9kZSBpZiBkb29tLWhpZ2hsaWdodC1ub24tZGVm YXVsdC1pbmRlbnRhdGlvbi1oIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5j YWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZl0gMSBbd2hpbGUgYW5kIGxl dCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIG9yZy1maW5kLWJhc2UtYnVmZmVyLXZpc2l0 aW5nIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmct LW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdl bmRhLWZpbGUtYnVmZmVyIGlmIHNldC1idWZmZXJdIDg0MyBbc2F2ZS1jdXJyZW50LWJ1ZmZlciB3 aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlmIGlmICIjPGxh bWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmln LS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0XSAxNzczIFsiIzxzdWJyIHNoZWxsLWNvbW1hbmQ+ IiBzaGVsbC1jb21tYW5kLS1zaGVsbC1jb21tYW5kLXdpdGgtZWRpdG9yLW1vZGUgYXBwbHkgc2hl bGwtY29tbWFuZCAiIzxzdWJyIHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5nPiIgZW52cmMtcHJvcGFn YXRlLWVudmlyb25tZW50IGFwcGx5IHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5nIGxldCogbGV0IGFn ZS1jb25maWctLW1ha2UtYWdlLWNvbmZpZ3VyYXRpb24gZnVuY2FsbCBsZXQgcHJvZ24gaWYgbGV0 XSAxIFtzZXRxIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxlLXJlbGF0aXZlLW5hbWUgbGV0 KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1k ZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGVd IDE0IFthbmQgb3IgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUt YXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlXSA3MyBbZnVuY2FsbCBpZiBz ZXRxIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGVudnJjLS1maW5kLWVudi1kaXIg IiM8c3ViciBlbnZyYy0tdXBkYXRlPiIgYXBwbHkgZW52cmMtLXVwZGF0ZSBlbnZyYy1tb2RlIGVu dnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9k ZSBpZl0gMTM1IFt5YXMtbWlub3ItbW9kZSB5YXMtbWlub3ItbW9kZS1vbiB5YXMtZ2xvYmFsLW1v ZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJk YSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRv b20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3 NT4iIGFwcGx5XSAxOSBbaWYgZGlyLWxvY2Fscy0tYWxsLWZpbGVzIGZ1bmNhbGwgaWYgc2V0cSB3 aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxl IGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHIgbGV0Kl0gOCBb YW5kIGlmIG9yZy1lbGVtZW50LS1jYWNoZS1wZXJzaXN0LWFmdGVyLXJlYWQgcnVuLWhvb2std2l0 aC1hcmdzIHdoaWxlIGxldCogcHJvZ24gaWYgaWYgcHJvZ24gaWYgbGV0KiBwcm9nbiBwcm9nbiBs ZXQqIG9yZy1wZXJzaXN0LXJlYWRdIDEzIFtzZXRxIGlmIGVkaXRvcmNvbmZpZy1jYWxsLWdldC1w cm9wZXJ0aWVzLWZ1bmN0aW9uIHNldHEgcHJvZ24gaWYgY29uZGl0aW9uLWNhc2UgbGV0IGVkaXRv cmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxl Y3Qgc2V0cSBpZiBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsXSA1 IFtpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBhZ2UtcmVh ZC1vdXRwdXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNv bmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZp bGUtY29udGVudHNdIDY5IFtlcXVhbCBpZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVu YW1lIGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldCBpZiBsZXQgd2hpbGVdIDI4 IFtpZiBhZ2UtcmVzZXQgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRp dGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUt Y29udGVudHMgYXBwbHkgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldF0gMTkgW3NldHEg bGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1l IGlmIHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYg bGV0KiBpZl0gMSBbc21hcnRwYXJlbnMtbW9kZSB0dXJuLW9uLXNtYXJ0cGFyZW5zLW1vZGUgc21h cnRwYXJlbnMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1h bC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxl ZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5XSAxOSBbIiM8Y29tcGlsZWQgMHgxNzZhZWViMTlh ZDJlZjZkPiIgZnVuY2FsbCBpZiBzZXRxIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxl IHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3QtY3VycmVu dCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMg YnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBi cmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmXSAxNTUgW2lmIGRv b20tcnVuLWxvY2FsLXZhci1ob29rcy1oIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxs YW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZk MzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4iXSAxIFtmaW5kLWF1 dG8tY29kaW5nIHNlbGVjdC1zYWZlLWNvZGluZy1zeXN0ZW0gc2VjdXJlLWhhc2ggc2V0cSBpZiBs ZXQgIiM8bGFtYmRhIDB4MzM3ZmM1NzUxY2I+IiBmdW5jYWxsIGNvbmQgbGV0KiBvcmctcGVyc2lz dC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24g bGV0IHByb2duIGxldCpdIDMyIFtobC1saW5lLWhpZ2hsaWdodCBobC1saW5lLW1vZGUgYW5kIGlm IGlmIGlmIHNhdmUtY3VycmVudC1idWZmZXIgcHJvZ24gaWYgbGV0IHdoaWxlIGxldCBsZXQgZ2xv YmFsLWhsLWxpbmUtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9v a3NdIDUgW2xldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZp bGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFzZS1idWZmZXItdmlz aXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29y Zy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHldIDQgW3VuaXF1 aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNlIGxldCogY3JlYXRlLWZpbGUtYnVmZmVyIHNl dHEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0 cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseSBm aW5kLWZpbGUtbm9zZWxlY3RdIDEwMDYgW29yZy1tYWNyby0tc2V0LXRlbXBsYXRlcyBvcmctbWFj cm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24g aWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXRxXSAzIFthZHZpY2UtYWRkICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJk NmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMzc+IiBldmFsLWFmdGVyLWxvYWQgY3RybGYt bG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9k ZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9n biBpZiBsZXRdIDQgW3doaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgYW5kIGxl dCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxl dCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHldIDc3NiBbYWdl LXdhaXQtZm9yLWNvbXBsZXRpb24gcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmls ZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUt aW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxl dF0gMjE2IFtzZXRxIGlmIGlmIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZXF1 YWwgYW5kIGlmIG9yZy1yb2FtLWRlc2NlbmRhbnQtb2YtcCBsZXQqIHByb2duIGlmXSAyNSBbZmlu ZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgZGVjb2RlLWNvZGluZy1pbnNlcnRlZC1yZWdp b24gc2F2ZS1yZXN0cmljdGlvbiBhZ2UtZmlsZS1kZWNvZGUtYW5kLWluc2VydCBpZiBzZXRxIGxl dCBzYXZlLWV4Y3Vyc2lvbiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2Vy dC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldF0gNzIgW25vcm1hbC1iYWNrdXAtZW5hYmxlLXBy ZWRpY2F0ZSBmdW5jYWxsIG5vdCBhbmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxl LW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIg YXBwbHkgc2V0cSBsZXQgbGV0XSAxIFtnbG9iYWwtdW5kby10cmVlLW1vZGUtZW5hYmxlLWluLWJ1 ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0 OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0 b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNv bXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIgYXBwbHldIDIzIFtzdHJpbmc9IGFuZCBpZiBlZGl0 b3Jjb25maWctLWFkdmljZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1j b250ZW50cyBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBs ZXQgb3JnLXBlcnNpc3QtLXJlYWQtZWxpc3AtZmlsZSBvciBzZXRxIGlmXSAxOCBbcHJvamVjdC10 cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1 bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1i LS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWIt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUg ZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ25dIDE1IFtmdW5jYWxsIG5v dCBhbmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0 KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0 IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdF0gMSBbb3JnLWZvbGQtY29y ZS1hZGQtZm9sZGluZy1zcGVjIG9yZy1mb2xkLWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0 aWFsaXplIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1v ZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDQgW2xldCog cHJvZ24gaWYgZGlyLWxvY2Fscy0tYWxsLWZpbGVzIGZ1bmNhbGwgaWYgc2V0cSB3aGlsZSBsZXQg bG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9n biBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlc10gMTAyIFtqaXQtbG9jay1tb2RlIGpp dC1sb2NrLXJlZ2lzdGVyIGppbngtbW9kZSBqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHBy b2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXRdIDQgW2Njb252LS1hbmFseXpl LWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJl dGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBsZXQgd2hpbGUgbGV0IGxldCBjb25kIG9yZy0tdGFn LWFkZC10by1hbGlzdCBzZXRxIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1j dXJyZW50LWJ1ZmZlcl0gMSBbZXF1YWwgaWYgaWYgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10 cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0XSAzMCBb YW5kIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNl dHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBw cm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBsZXQqIGhhY2stZGlyLWxvY2Fs LXZhcmlhYmxlc10gNCBbaWYgIiM8bGFtYmRhIC0weGNkNmQ2MzgxZDVkYzE5Mj4iIG1hcGNhciBv cmctcmVtb3ZlLWtleXdvcmQta2V5cyBpZiBsZXQqIGxldCogbGV0IHdoaWxlIGxldCBsZXQgaWYg bGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9uc10gMiBbYW5kIHdoaWxlIGxl dCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBvcmct LWNvbGxlY3Qta2V5d29yZHMtMSBsZXQqIG9yZy1jb2xsZWN0LWtleXdvcmRzIG9yZy1tYWNyby0t Y29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIGxldCBwcm9nbiBv cmctbW9kZSBmdW5jYWxsXSA2IFthbmQgbm90IGFuZCBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgbG9jYXRlLWRvbWlu YXRpbmctZmlsZSBwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeV0gMSBb c2F2ZS1jdXJyZW50LWJ1ZmZlciB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlz aXRpbmcgb3JnLWZpbmQtYmFzZS1idWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhl MDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFn ZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWZdIDE4Nzgg W2lmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxl dCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGZpbGUtbmFtZS1hcy1k aXJlY3RvcnldIDIgW2FuZCBsaW5lLWVuZC1wb3NpdGlvbiBzZWFyY2gtZm9yd2FyZCBhbmQgbGV0 IHNldC1hdXRvLW1vZGUtMSBsZXQgc2F2ZS1leGN1cnNpb24gY2F0Y2ggaGFjay1sb2NhbC12YXJp YWJsZXMtcHJvcC1saW5lIG9yIGFuZCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3 Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzXSAxIFtjY29udi1mdiBjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXpl LWNvbnRhaW5lciBsZXQqIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiB3aGlsZSBsZXQqIHByb2duIGlm IGlmXSAxIFsiIzxjb21waWxlZCAweDE3NmFlZWIxOWFkMmVmNmQ+IiBmdW5jYWxsIGlmIHNldHEg d2hpbGUgbGV0IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgcHJvamVjdC10cnktdmMgcHJvamVjdC0t ZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1 bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2Fs LW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4t YnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3NdIDEwNyBbaWYgb3IgbGV0IGlmIGxldCB3 aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBpZiBzZXRxIHNhdmUt Y3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxldCpdIDIgW2xldCBm aWxlLXJlbW90ZS1wIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxIGlmIGxl dCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgxYjkw ZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBzZXQtYXV0by1tb2Rl IGNvbmRpdGlvbi1jYXNlIGxldF0gMTYgW29yZy1tYWNyby0tZmluZC1rZXl3b3JkLXZhbHVlIG9y Zy1tYWNyby0tZmluZC1kYXRlIG9yZy1tYWNyby0tY29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWlu aXRpYWxpemUtdGVtcGxhdGVzIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlm IHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDMgW2VkaXRvcmNvbmZpZy1jb3JlLWdl dC1wcm9wZXJ0aWVzLWhhc2ggZnVuY2FsbCBzZXRxIGNvbmRpdGlvbi1jYXNlIGxldCBlZGl0b3Jj b25maWctY2FsbC1nZXQtcHJvcGVydGllcy1mdW5jdGlvbiBzZXRxIHByb2duIGlmIGNvbmRpdGlv bi1jYXNlIGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkg ZmluZC1maWxlLW5vc2VsZWN0IHNldHEgaWZdIDggW2xldCBpZiBsZXQqIHByb2duIHVud2luZC1w cm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBpZiBzZXRxIHNhdmUtY3VycmVudC1idWZm ZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxldCogaWYgaWZdIDE4IFthbmQgbGV0KiBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUt ZG9taW5hdGluZy1maWxlIGVudnJjLS1maW5kLWVudi1kaXIgIiM8c3ViciBlbnZyYy0tdXBkYXRl PiIgYXBwbHkgZW52cmMtLXVwZGF0ZSBlbnZyYy1tb2RlIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBhcHBseV0gMyBbY3RybGYtbW9kZS1lbmFibGUtaW4tYnVm ZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBp ZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFs aXN0IHNldHEgaWZdIDYgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGxldCogaWYgaWYgIiM8bGFtYmRh IC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWctLWFk dmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNldHEgaWYg bGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiJdIDEgW2lmIGlmICIjPGxhbWJkYSAt MHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20t LXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4i IGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIgYXBwbHkgYWZ0ZXItZmluZC1m aWxlIGlmIHNhdmUtY3VycmVudC1idWZmZXJdIDEgW3JlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9w dC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91 cCByZWdleHAtb3B0IGNvbmNhdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBsZXQgc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgb3JnLS1jb2xsZWN0LWtl eXdvcmRzLTEgbGV0KiBvcmctY29sbGVjdC1rZXl3b3Jkc10gMSBbcnVuLWhvb2tzIGFwcGx5IHJ1 bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0w IHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxIGlmXSA1IFtj bC11bmlvbiBzZXQgaWYgZG9vbS1oaWdobGlnaHQtbm9uLWRlZmF1bHQtaW5kZW50YXRpb24taCBy dW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQt YXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmXSAxIFtzZXRxIGlmIGlmIGxldCBpZiBsZXQgd2hp bGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYgb3IgbGV0 IGlmIGxldF0gMTE0IFtsZXQgb3JnLWNvbXB1dGUtbGF0ZXgtYW5kLXJlbGF0ZWQtcmVnZXhwIGlm IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgbGV0IHByb2duIG9yZy1t b2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duXSAxIFtpZiBsZXQq IHByb2duIGlmIGRpci1sb2NhbHMtLWFsbC1maWxlcyBmdW5jYWxsIGlmIHNldHEgd2hpbGUgbGV0 IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQgcHJv Z24gaWZdIDExIFtsZXQgaWYgbGV0IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmls ZS1yZWxhdGl2ZS1uYW1lIGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1w cm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9m LWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mg cnVuLW1vZGUtaG9va3Mgb3JnLW1vZGVdIDEgW2VkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxl cyBlZGl0b3Jjb25maWctY29yZS1nZXQtcHJvcGVydGllcy1oYXNoIGZ1bmNhbGwgc2V0cSBjb25k aXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLWNhbGwtZ2V0LXByb3BlcnRpZXMtZnVuY3Rpb24g c2V0cSBwcm9nbiBpZiBjb25kaXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmlu ZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxXSA4IFthbmQgdW53 aW5kLXByb3RlY3Qgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgcHJvZ24gaWYgYWdlLXNjcnlwdC1w IGFzZXQgbGV0KiBwcm9nbiBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5 IGlmIGxldCBwcm9nbl0gNCBbYW5kIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5k LXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0 IHByb2duXSA3IFtsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5h bWUgaWYgc2V0cSBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBp ZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseV0gNCBbbGV0 IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNl dHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyICIjPHN1YnIgZW52 cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3NdIDQgW3Byb2duIGlmIGxldCBvcmctcGVy c2lzdC1sb2FkOmVsaXNwIGZ1bmNhbGwgbGV0KiBjb25zIHNldHEgaWYgcHJvZ24gaWYgd2hpbGUg bGV0KiBwcm9nbiBpZiBpZl0gMTMgWyIjPGNvbXBpbGVkIC0weDFkZGYxMTAxMmIzMzY3YmY+IiBw cm9qZWN0LS12YWx1ZS1pbi1kaXIgcHJvamVjdC10cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJl Y3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRj cnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVo YWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4t aG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZl0gNSBbc2F2 ZS1jdXJyZW50LWJ1ZmZlciB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlzaXRp bmcgYW5kIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNl dHEgbGV0IGxldF0gMTY2NiBbY29uY2F0IHNldHEgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVu d2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBzZXRxIGxvY2F0ZS1kb21pbmF0 aW5nLWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXRdIDMgW3JlcGxhY2UtcmVnZXhw LWluLXN0cmluZyBvcmctbWFjcm8tLWZpbmQta2V5d29yZC12YWx1ZSBvcmctbWFjcm8tLWNvbGxl Y3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBsZXQgcHJvZ24gb3JnLW1v ZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmXSAx IFtsZXQgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxlLXJlbGF0aXZlLW5hbWUg YnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJy ZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJl YWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBv cmctbW9kZSBmdW5jYWxsIHByb2duXSAzIFtsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIy NWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1m aWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1i ZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGxdIDI1IFtvcmctZm9sZC1jb3JlLS1wcm9w ZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSBvcmctZm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3Jn LWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgbGV0IHByb2duIG9yZy1t b2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZl0g MTIgW2NvZGluZy1zeXN0ZW0tY2hhbmdlLXRleHQtY29udmVyc2lvbiBtZXJnZS1jb2Rpbmctc3lz dGVtcyBsZXQgZWRpdG9yY29uZmlnLW1lcmdlLWNvZGluZy1zeXN0ZW1zIHNldHEgcHJvZ24gaWYg Y29uZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVj dCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cSBpZiBsZXQgIiM8bGFtYmRhIC0weDE2OGUw NmZiNGZhZDk1NTc+Il0gMSBbc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldCBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQgYWdlLWZpbGUtaGFuZGxlciAiIzxzdWJyIGluc2VydC1maWxlLWNv bnRlbnRzPiIgYXBwbHkgaWZdIDEgW29yIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmls ZS1yZWxhdGl2ZS1uYW1lIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wIGFuZCBpZiBvcmct cm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseSBkZWxldGUtZmlsZSBpZl0gMTEg W2xldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBp ZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZl0gOCBbYW5kIG9yIGxldCBp ZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgaWYgc2V0 cSBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqXSAx NiBbb3Igbm90IHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGVudnJjLS1maW5kLWVu di1kaXIgIiM8c3ViciBlbnZyYy0tdXBkYXRlPiIgYXBwbHkgZW52cmMtLXVwZGF0ZSBlbnZyYy1t b2RlIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3Jt YWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiJdIDYgW2NhbGxlZC1pbnRl cmFjdGl2ZWx5LXAgeWFzLW1pbm9yLW1vZGUgeWFzLW1pbm9yLW1vZGUtb24geWFzLWdsb2JhbC1t b2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1i ZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBk b29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzVi NzU+Il0gMSBbaWYgc2V0cSBwcm9nbiBwcm9nbiBpZiBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxl dCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNh dGNoIG9yZy1lbGVtZW50LS1wYXJzZS10b10gNCBbYXBwbHkgaWYgZWRpdG9yY29uZmlnLS1hZHZp Y2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29udGVudHMgbGV0IGlm IHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGFnZS1yZWFkLW91 dHB1dCBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlXSA0MSBbZXF1YWwg aWYgaWYgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBlcXVhbCBhbmQgaWYgb3Jn LXJvYW0tZGVzY2VuZGFudC1vZi1wIGxldCogcHJvZ24gaWZdIDEwIFtlcXVhbCBpZiBsZXQgaWYg bGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGlmIHNldHEg c2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0Kl0gMyBb aGFjay1sb2NhbC12YXJpYWJsZXMtYXBwbHkgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzLW5vbi1m aWxlLWJ1ZmZlciBwcm9qZWN0LS12YWx1ZS1pbi1kaXIgcHJvamVjdC10cnktdmMgcHJvamVjdC0t ZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1 bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2Fs LW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4t YnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4 YzQ5MWE2ZT4iIGFwcGx5XSAxIFtlbnZyYy1nbG9iYWwtbW9kZS1jbWhoIHRleHQtbW9kZSBvdXRs aW5lLW1vZGUgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8t bW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdF0gMiBbbGV0 IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2du IGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxIGlmIGxldF0gMzggW29y IGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGJyZWFkY3J1 bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1i LS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWIt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUg ZnVuY2FsbCBwcm9nbiBpZl0gNSBbaWYgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90 IGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgx YjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBzZXQtYXV0by1t b2RlIGNvbmRpdGlvbi1jYXNlIGxldCBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1 ZDhjNDkxYTZlPiJdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBhdmwtdHJlZS1tYXBjIHByb2duIGlmIHByb2duIGlmIHNhdmUt Y3VycmVudC1idWZmZXIgcHJvZ24gaWYgb3JnLWVsZW1lbnQtLWNhY2hlLXBlcnNpc3QtYWZ0ZXIt cmVhZCBydW4taG9vay13aXRoLWFyZ3NdIDIgW3VuaXF1aWZ5LXJhdGlvbmFsaXplLWZpbGUtYnVm ZmVyLW5hbWVzIHVuaXF1aWZ5LS1jcmVhdGUtZmlsZS1idWZmZXItYWR2aWNlIGxldCogY3JlYXRl LWZpbGUtYnVmZmVyIHNldHEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgx MzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1u b3NlbGVjdCBhcHBseV0gMyBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBj Y29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYt bWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGF2bC10cmVlLW1hcGMgcHJvZ24gaWYg cHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMSBbcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2Rl IGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYx OWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIgYXBw bHkgYWZ0ZXItZmluZC1maWxlXSAyMyBbb3IgYW5kIGlmIGxldCogcHJvZ24gcHJvZ24gbGV0KiBv cmctcGVyc2lzdC1yZWFkIHByb2duIGxldCogb3JnLXBlcnNpc3QtbG9hZCBwcm9nbiBpZiBsZXQg cHJvZ24gb3JnLW1vZGVdIDIxIFtzYXZlLWV4Y3Vyc2lvbiBsZXQgaGFjay1sb2NhbC12YXJpYWJs ZXMtLWZpbmQtdmFyaWFibGVzIGFwcGVuZCBsZXQgaWYgbGV0ICIjPGxhbWJkYSAweDExMmFiZDk1 MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNrLWxvY2Fs LXZhcmlhYmxlcyBqaW54LW1vZGUgamlueC0tb24gZ2xvYmFsLWppbngtbW9kZS1lbmFibGUtaW4t YnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3NdIDIgW3NhdmUtY3VycmVudC1idWZmZXIg d2hpbGUgbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZl ci12aXNpdGluZyBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxl dCArb3JnLS1vcHRpbWl6ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBhcHBseSBvcmct Z2V0LWFnZW5kYS1maWxlLWJ1ZmZlciBpZiBzZXQtYnVmZmVyXSAyMjU4IFttYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1h a2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxp emUtY29udGFpbmVyIGxpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3Igb3JnLXBlcnNpc3Qt LWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbl0gMSBbc2V0cSBpZiBvcmctcGVyc2lzdC0tZ2V0LWNv bGxlY3Rpb24gbGV0IHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJv Z24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgd2hpbGVdIDEgW29yZy1mb2xk LWNvcmUtaW5pdGlhbGl6ZSBvcmctZm9sZC1pbml0aWFsaXplIGxldCBwcm9nbiBvcmctbW9kZSBm dW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cV0gMyBbc2VsZWN0LXNhZmUtY29kaW5nLXN5c3RlbSBz ZWN1cmUtaGFzaCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgMHgzNDM4NDhkN2RjYj4iIGZ1bmNhbGwg Y29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJz aXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3Rlcl0g MTQgW2FuZCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNv bmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb25dIDUgWyIjPGNvbXBpbGVk IDB4MTQwNmYzNTk3MjBiM2RlNT4iICIjPGNvbXBpbGVkIC0weDZhYTE2OGIyZDUxYTVlYT4iIHNv cnQtY29kaW5nLXN5c3RlbXMgZmluZC1jb2Rpbmctc3lzdGVtcy1yZWdpb24gc2VsZWN0LXNhZmUt Y29kaW5nLXN5c3RlbSBzZWN1cmUtaGFzaCBlcXVhbCBhbmQgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBpZiBwcm9nbiBpZiBvcmctZWxlbWVudC0tY2FjaGUtcGVyc2lzdC1iZWZvcmUtcmVhZCBydW4t aG9vay13aXRoLWFyZ3MtdW50aWwtc3VjY2VzcyAiIzxsYW1iZGEgMHgxYTFjOTJmZDFlYjdhNWRm PiJdIDEwIFt0dXJuLW9uLXVuZG8tdHJlZS1tb2RlIGdsb2JhbC11bmRvLXRyZWUtbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBw cm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUt LWFwcGx5LWFsaXN0IHNldHFdIDE0IFthcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1h ZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlm IGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9w dGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRh LWZpbGUtYnVmZmVyXSAxIFtub3QgYW5kIHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxl cy1wIHNvLWxvbmctLWNoZWNrLWhlYWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFw cGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxh bWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbl0gNiBbb3JnLXBlcnNpc3QtcmVn aXN0ZXIgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQg d2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IHByb2duIGlmIG9yIGFuZF0gMSBbZmlu ZC1hdXRvLWNvZGluZyBzZWxlY3Qtc2FmZS1jb2Rpbmctc3lzdGVtIHNlY3VyZS1oYXNoIGVxdWFs IGFuZCBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIHByb2duIGlmIG9yZy1lbGVtZW50LS1jYWNo ZS1wZXJzaXN0LWJlZm9yZS1yZWFkIHJ1bi1ob29rLXdpdGgtYXJncy11bnRpbC1zdWNjZXNzICIj PGxhbWJkYSAtMHhiNDNmZTE1MWIxNjRiMD4iICIjPGNvbXBpbGVkIC0weDk4MmYyOTg3NDgxNWU5 YT4iIG1hcGMgc2VxLWRvXSAxNCBbZm9udC1sb2NrLWNvbXBpbGUta2V5d29yZHMgZm9udC1sb2Nr LXNldC1kZWZhdWx0cyBmb250LWxvY2stcmVtb3ZlLWtleXdvcmRzIG9yZy1tb2Rlcm4tbW9kZSBv cmctbW9kZXJuLS1vbiBnbG9iYWwtb3JnLW1vZGVybi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1h dXRvLW1vZGUtMCBwcm9nbiBpZl0gMiBbc2V0IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMt YW5kLW9wdGlvbnMgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyIGNhdGNoIGxldCB3aGlsZSBsZXQgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZS1idWZmZXJz IGlmIGlmXSAxIFtub3QgYW5kIHdoaWxlIGxldCB3aGlsZSBsZXQgaW5oaWJpdC1sb2NhbC12YXJp YWJsZXMtcCBub3QgYW5kIGlmIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3 Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5XSAxMCBbbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGNsLW1hcGNh biBtYXBjYXIgc2V0IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgc2F2 ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAyIFttYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRl ZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0 Kl0gMSBbZXF1YWwgYW5kIGlmIGxldCBsZXQgaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIG9yZy1maW5k LWJhc2UtYnVmZmVyLXZpc2l0aW5nIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4i XSA0IFtsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBs ZXQgaWYgb3IgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZp bGUtbmFtZSBsZXQqXSAyIFtub3QgYW5kIHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxl cy1wIG5vdCBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBp bGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0 LWF1dG8tbW9kZSBjb25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1vZGVdIDUgW2lmIGRpci1sb2Nh bHMtLWFsbC1maWxlcyBmdW5jYWxsIGlmIHNldHEgd2hpbGUgbGV0IGxvY2F0ZS1kb21pbmF0aW5n LWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQgcHJvZ24gaWYgaGFjay1kaXItbG9j YWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXNdIDQzIFtlcXVh bCBhbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZp YXRlLWZpbGUtbmFtZSBpZiBzZXRxIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1u b3NlbGVjdC0xXSAxMCBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1h a2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBhdmwtdHJlZS1tYXBjXSAzIFtub3QgYW5k IHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgaWYgbGV0IGlmIGxl dCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJp YWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgamlueC1tb2RlXSAxMCBbbGV0IGlmIGxl dCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCogaWYg aWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBlZGl0 b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3RdIDQgW2Fib3J0LWlmLWZpbGUtdG9v LWxhcmdlIGVxIGlmIHByb2duIGlmIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4 MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUt bm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0XSAyIFttYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3Jn LXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbl0gNiBbbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBhdmwtdHJlZS1tYXBjIHByb2duIGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1i dWZmZXJdIDIgW25vdCBhbmQgd2hpbGUgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90 IGFuZCBsZXQgc2V0LWF1dG8tbW9kZS0xIGxldCBzYXZlLWV4Y3Vyc2lvbiBjYXRjaCBoYWNrLWxv Y2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgYXBwZW5kIGxldCBpZl0gMTYgW2FuZCBpZiBsZXQgbGV0 IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGxl dCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12aXNpdGluZyBsZXQg IiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsXSAzIFtsZXQgb3Igbm90IGxl dCBub3JtYWwtYmFja3VwLWVuYWJsZS1wcmVkaWNhdGUgZnVuY2FsbCBub3QgYW5kIHNhdmUtY3Vy cmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxldCogaWYgaWYgIiM8bGFt YmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iXSA0IFtub3QgYW5kIHdoaWxlIGxldCB3aGlsZSBsZXQg aW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgbGV0 IHNhdmUtZXhjdXJzaW9uIGNhdGNoIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBvcl0g NiBbbGV0KiBjb25zIHNldHEgaWYgcHJvZ24gaWYgd2hpbGUgbGV0KiBwcm9nbiBpZiBpZiBwcm9n biBpZiBsZXQqIHByb2duIHByb2duXSAzIFtsZXQgZmlsZS1yZW1vdGUtcCBub3Qgb3IgYW5kIGlm IGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGNkciBsZXQqIGNvbmRpdGlvbi1jYXNlIGlm IGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgx YjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZV0gOCBbbGV0KiBjcmVhdGUt ZmlsZS1idWZmZXIgc2V0cSBpZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEz MmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5v c2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxXSAxNCBbbm90IGFuZCB3aGlsZSBs ZXQgd2hpbGUgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1 dG8tbW9kZS0xIHNvLWxvbmctLWNoZWNrLWhlYWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0by1t b2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2VdIDQgW21hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFr ZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6 ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFmPiIgbWFwY2FyICIjPGxhbWJkYSAweDFl MTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCpdIDMgW3NwLS1tZXJnZS1wYWlyLWNvbmZp Z3VyYXRpb25zIHNwLXVwZGF0ZS1sb2NhbC1wYWlycyAtZWFjaCBzcC0tdXBkYXRlLWxvY2FsLXBh aXJzIHNwLS1pbml0IHNtYXJ0cGFyZW5zLW1vZGUgdHVybi1vbi1zbWFydHBhcmVucy1tb2RlIHNt YXJ0cGFyZW5zLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9k ZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMF0gNSBb Y2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWYgaWYg bGV0IG9yZy1hZ2VuZGEtcHJlcGFyZSBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNhbGwtaW50ZXJhY3RpdmVseSBjb25kIGxldCpdIDQgW3NldHEgaWYgaWYgbGV0 IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQg ZmluZC1idWZmZXItdmlzaXRpbmcgYW5kIGxldCogaWYgaWZdIDcgW2lmIHNhdmUtY3VycmVudC1i dWZmZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBsZXQgcHJvZ24gb3Jn LW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWZdIDIgW2Vk aXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jjb25maWctY29yZS0tZ2V0LWhhbmRs ZXMgZWRpdG9yY29uZmlnLWNvcmUtZ2V0LXByb3BlcnRpZXMtaGFzaCBmdW5jYWxsIHNldHEgY29u ZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy1jYWxsLWdldC1wcm9wZXJ0aWVzLWZ1bmN0aW9u IHNldHEgcHJvZ24gaWYgY29uZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZp bmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3RdIDcgW2FwcGx5IGlmIGVk aXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxl LWNvbnRlbnRzIGxldCBjb25kaXRpb24tY2FzZSBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBm aW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0 ODEzMmE+Il0gMjAgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3Jn LXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBpZl0gMSBbYnVmZmVyLXN1YnN0cmlu Zy1uby1wcm9wZXJ0aWVzIG9yZy10cmltIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1r ZXl3b3JkLXBhcnNlciBvcmctbWFjcm8tLWZpbmQta2V5d29yZC12YWx1ZSBvcmctbWFjcm8tLWNv bGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBsZXQgcHJvZ24gb3Jn LW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDEgW2dsb2JhbC11bmRv LXRyZWUtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3Jn LW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlm IHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgaWZdIDEyIFtjb25kaXRpb24tY2FzZSBs ZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmls ZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1 bmNhbGwgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFw cGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyIGlmIHNldC1idWZmZXJdIDMgW2lmIG9yIGxl dCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBs ZXQgaWYgb3IgbGV0IGlmIGxldCB3aGlsZV0gNSBbZGlzcGxheS13YXJuaW5nIGVkaXRvcmNvbmZp Zy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNvbnRlbnRz IGlmIHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGxldCBvcmct cGVyc2lzdC0tcmVhZC1lbGlzcC1maWxlIG9yIHNldHEgaWYgcHJvZ24gaWZdIDEyIFt0dXJuLW9u LXNtYXJ0cGFyZW5zLW1vZGUgc21hcnRwYXJlbnMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZl cnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFh NmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3Nh dmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBp bGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiJdIDMgW2lmIG9yZy1leHRyYWN0LWxvZy1zdGF0ZS1zZXR0 aW5ncyBsZXQgbGV0IHdoaWxlIGxldCBsZXQqIGxldCB3aGlsZSBsZXQgbGV0IGlmIGxldCBwcm9n biBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnNdIDMgW2Rpc3BsYXktd2FybmluZyBlZGl0 b3Jjb25maWctbWFqb3ItbW9kZS1ob29rIHJ1bi1ob29rcyBhcHBseSBydW4tbW9kZS1ob29rcyBv cmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQg aWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDQgW2FkZC1ob29rIGZvbnQtbG9jay1tb2Rl LWludGVybmFsIGZvbnQtbG9jay1kZWZhdWx0LWZ1bmN0aW9uIGZvbnQtbG9jay1tb2RlIHR1cm4t b24tZm9udC1sb2NrIHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZvbnQtbG9j ay1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9k ZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbl0gMSBbaWYgc3Vic3Ry aW5nIGlmIGxldCBmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpZiBsZXQgaW5oaWJpdC1sb2NhbC12 YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgc28tbG9uZy0tY2hlY2staGVh ZGVyLW1vZGVzIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZV0gNCBb amlueC1tb2RlIGppbngtLW9uIGdsb2JhbC1qaW54LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVu LWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1 dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdF0gMTEg W3NldHEgbGV0IGNvbmQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQqIGlm IGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRp dG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3Nl bGVjdF0gMSBbcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2Rl LTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgaWYgbGV0 ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+Il0gMyBbZm9udC1sb2NrLWFkZC1rZXl3b3Jk cyB3aGl0ZXNwYWNlLWNvbG9yLW9uIHdoaXRlc3BhY2UtdHVybi1vbiB3aGl0ZXNwYWNlLW1vZGUg aWYgZG9vbS1oaWdobGlnaHQtbm9uLWRlZmF1bHQtaW5kZW50YXRpb24taCBydW4taG9va3MgcnVu LW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAg cHJvZ24gaWZdIDQgW2FuZCBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIHdoaWxlIGFuZCBsZXQqIG9y IGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12aXNpdGluZyBs ZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxldCArb3JnLS1vcHRp bWl6ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBhcHBseV0gMTEyIFtvciBsZXQgaWYg bGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZiBvcmctcm9hbS1kZXNjZW5k YW50LW9mLXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kXSA3IFthcHBseSAiIzxj b21waWxlZCAtMHgxNGYxNTBkMTIwZDYwN2U+IiBhcHBseSBkZWxldGUtZmlsZSBpZiBhZ2UtZGVs ZXRlLW91dHB1dC1maWxlIGlmIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBj b25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1m aWxlLWNvbnRlbnRzIGFwcGx5XSAzMiBbb3Igbm90IHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGlu Zy1maWxlIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3Qt Y3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1j cnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwt bW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1h bC1tb2RlIGlmXSAxMCBbb3JnLWZvbGQtLWFkdmljZS1lZGl0LWNvbW1hbmRzIGxldCBwcm9nbiBv cmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQg aWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cSBpZl0gNCBbbGV0IHNhdmUtZXhjdXJz aW9uIG9yZy1lbGVtZW50LXByb3BlcnR5LWRyYXdlci1wYXJzZXIgY29uZCBzZXRxIGxldCBzYXZl LWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUg bGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gNSBbbGV0IHdoaWxlIGxl dCBmaWxlLXRydWVuYW1lIGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldCBpZiBs ZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXRdIDEz IFtjdHJsZi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBp ZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlk MWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4iIGFwcGx5 XSAyMCBbc2VxLWZpbHRlciBsZXQgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgd2hp bGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IHByb2duIGlmIG9yIGFuZCBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBpZl0gNiBbIiM8Y29tcGlsZWQg LTB4NmFhMTY4YjJkNTFhNWVhPiIgc29ydC1jb2Rpbmctc3lzdGVtcyBmaW5kLWNvZGluZy1zeXN0 ZW1zLXJlZ2lvbiBzZWxlY3Qtc2FmZS1jb2Rpbmctc3lzdGVtIHNlY3VyZS1oYXNoIGVxdWFsIGFu ZCBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIHByb2duIGlmIG9yZy1lbGVtZW50LS1jYWNoZS1w ZXJzaXN0LWJlZm9yZS1yZWFkIHJ1bi1ob29rLXdpdGgtYXJncy11bnRpbC1zdWNjZXNzICIjPGxh bWJkYSAweDExMzFkNWE3OTcwYmE3ZGE+IiAiIzxjb21waWxlZCAtMHg5ODJmMjk4NzQ4MTVlOWE+ Il0gNiBbYWR2aWNlLS1tZW1iZXItcCBhZHZpY2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRkICIj PHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFf Mzc+IiBldmFsLWFmdGVyLWxvYWQgY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2du IGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbl0gMSBbbGV0IGZpbGUtbmFtZS1zYW5zLXZlcnNp b25zIGlmIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBsZXQgIiM8bGFtYmRhIDB4 MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4i IHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2Fz ZSBsZXQgbm9ybWFsLW1vZGVdIDkgW2xldCBsZXQgb3JnLXBlcnNpc3QtLXJlYWQtZWxpc3AtZmls ZSBvciBzZXRxIGlmIHByb2duIGlmIGxldCogcHJvZ24gcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1y ZWFkIHByb2duIGxldCogb3JnLXBlcnNpc3QtbG9hZF0gNiBbZXF1YWwgYW5kIGlmIGxldCBsZXQg aWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0 cSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4t ZGlyZWN0b3J5IHByb2plY3QtY3VycmVudF0gOCBbZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMt ZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGZp bGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldF0gMiBbZm9udC1sb2NrLWRlZmF1bHQt ZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sgdHVybi1vbi1mb250LWxv Y2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVu LWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBh cHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBh cHBseV0gMiBbYXBwbHkgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVu dHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29udGVudHMgaWYgcHJvZ24gdW53aW5kLXByb3RlY3Qgc2F2 ZS1jdXJyZW50LWJ1ZmZlciBsZXQgbGV0IG9yZy1wZXJzaXN0LS1yZWFkLWVsaXNwLWZpbGUgb3Ig c2V0cSBpZiBwcm9nbl0gMTIgWz4gcHJvZ24gaWYgbGV0IGNvbmQgbGV0KiBub3Qgb3IgYW5kIGlm IGxldCogcHJvZ24gcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWFkIHByb2duXSAzIFtsZXQgZmlu ZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgx MzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1u b3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cSBpZl0gMTAgW2xldCogb3IgbGV0 IGZpbmQtYnVmZmVyLXZpc2l0aW5nIG9yZy1maW5kLWJhc2UtYnVmZmVyLXZpc2l0aW5nIGxldCAi IzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9wdGltaXpl LWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUt YnVmZmVyIGlmIHNldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaF0gMjYgW2FuZCBp ZiBzYXZlLWN1cnJlbnQtYnVmZmVyIHdoaWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12 aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBw bHkgc2V0cV0gMTA4IFthZHZpY2UtYWRkIG9yZy1mb2xkLS1hZHZpY2UtZWRpdC1jb21tYW5kcyBs ZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJv Z24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHFdIDIwIFtzYXZlLWN1 cnJlbnQtYnVmZmVyIGNhdGNoIGxldCB3aGlsZSBsZXQgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZS1i dWZmZXJzIGlmIGlmIGxldCBvcmctYWdlbmRhLXByZXBhcmUgY2F0Y2ggb3JnLWFnZW5kYS1saXN0 IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjYWxsLWludGVyYWN0aXZlbHkgY29uZF0gMiBbbGV0IG9y IGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZl OWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZp bmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3RdIDM0IFttYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1p bnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uXSA0IFthbmQgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIG9yZy1maW5kLWJhc2UtYnVm ZmVyLXZpc2l0aW5nIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwg bGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9y Zy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyXSAzMCBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1h bmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWlu dGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNv bnRhaW5lciBzZXRxIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJv Z24gaWZdIDIgW3Byb2duIHVud2luZC1wcm90ZWN0IGxldCogb3JnLXVuZm9udGlmeS1yZWdpb24g b3JnLW1vZGVybi0tdW5mb250aWZ5ICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZk NjI2NDYxX2Fub255bW91c19sYW1iZGFfMjc+IiBpbnRlcm5hbC0td2l0aG91dC1yZXN0cmljdGlv biBvcmctbW9kZXJuLW1vZGUgb3JnLW1vZGVybi0tb24gZ2xvYmFsLW9yZy1tb2Rlcm4tbW9kZS1l bmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2Fs bCBwcm9nbiBpZl0gMiBbZXF1YWwgYW5kIGlmIGxldCBsZXQgaWYgbGV0KiBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9taW5hdGluZy1m aWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0XSAyMiBbc2V0IGxldCBvcmctc2V0LWZv bnQtbG9jay1kZWZhdWx0cyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBz ZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0 XSAxIFtlZGl0b3Jjb25maWctY29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtLWdl dC1oYW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jjb25maWctY29y ZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtZ2V0LXByb3BlcnRpZXMtaGFzaCBmdW5j YWxsIHNldHEgY29uZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy1jYWxsLWdldC1wcm9wZXJ0 aWVzLWZ1bmN0aW9uIHNldHEgcHJvZ24gaWYgY29uZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZp Zy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdF0gNCBbZGVjb2RlLWNvZGluZy1pbnNlcnRlZC1y ZWdpb24gc2F2ZS1yZXN0cmljdGlvbiBhZ2UtZmlsZS1kZWNvZGUtYW5kLWluc2VydCBpZiBzZXRx IGxldCBzYXZlLWV4Y3Vyc2lvbiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWlu c2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMSBb c2V0cSBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBs ZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBs ZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5XSA5IFtub3Qg YW5kIHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgaWYgbGV0ICIj PGxhbWJkYSAweDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxl cyBhcHBseSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXRxIGFuZCBsZXRdIDYgW21hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsXSAxIFtpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVh NDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmls ZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cSBpZiBsZXQgIiM8bGFtYmRh IC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxldCArb3JnLS1vcHRpbWl6ZS1iYWNrZ3Jv dW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYV0gNSBbb3JnLWNvbXB1dGUtbGF0ZXgtYW5kLXJlbGF0ZWQt cmVnZXhwIGlmIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgbGV0IHBy b2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlm XSAyIFtsZXQgaWYgc2F2ZS1leGN1cnNpb24gbGV0IGhhY2stbG9jYWwtdmFyaWFibGVzLS1maW5k LXZhcmlhYmxlcyBhcHBlbmQgbGV0IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3 PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJs ZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbF0gMiBbbGV0IHdoaWxlIGxldCBsZXQg Y29uZCBvcmctLXRhZy1hZGQtdG8tYWxpc3Qgc2V0cSBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3JnLWFn ZW5kYS1wcmVwYXJlLWJ1ZmZlcnNdIDEgW2lmIHN1YnN0cmluZyBpZiBsZXQgZmlsZS1uYW1lLXNh bnMtdmVyc2lvbnMgaWYgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc28tbG9uZy0tY2hl Y2staGVhZGVyLW1vZGVzIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9k ZSBjb25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1vZGUgaWZdIDEgW2Z1bmN0aW9uIGxldCogb3Jn LXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbiBwcm9nbiBsZXQqIG9yZy1w ZXJzaXN0LXJlYWQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1sb2FkIHByb2duIGlmIGxldCBwcm9n biBvcmctbW9kZV0gMSBbbGV0IGZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGlmIGxldCBpbmhpYml0 LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgaWYgbGV0IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJh YmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1s b2NhbC12YXJpYWJsZXMgamlueC1tb2RlXSA5IFt3aGlsZSBhZ2Utd2FpdC1mb3ItY29tcGxldGlv biBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNh c2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50 cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3RdIDQxIFtzYXZlLXJlc3RyaWN0aW9u IGFnZS1maWxlLWRlY29kZS1hbmQtaW5zZXJ0IGlmIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIHBy b2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBw bHkgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldF0gMzggW2lmIGxldCogcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGlmIHNldHEgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEg LTB4ZDZlOWJiMjVhNDgxMzJhPiJdIDcgWy1lYWNoIHNwLS11cGRhdGUtbG9jYWwtcGFpcnMgc3At LWluaXQgc21hcnRwYXJlbnMtbW9kZSB0dXJuLW9uLXNtYXJ0cGFyZW5zLW1vZGUgc21hcnRwYXJl bnMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2Rl IGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYV0gOCBbcHJvZ24gaWYgb3JnLWVsZW1l bnQtLWNhY2hlLXNldHVwLWNoYW5nZS1mdW5jdGlvbnMgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1 ZmZlciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IGxldCBwcm9nbiBvcmct bW9kZSBmdW5jYWxsIHByb2duIGlmXSAyIFt3cy1idXRsZXItbW9kZSB3cy1idXRsZXItZ2xvYmFs LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2Rl IGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQt YXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxXSA4IFtsZXQgaWYgb3IgbGV0IGlmIGxldCB3aGls ZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQgZmluZC1idWZmZXIt dmlzaXRpbmcgb3JnLWZpbmQtYmFzZS1idWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgx NjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbF0gMSBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQq IGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZh cmlhYmxlcyBsZXQqIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJp YWJsZXMtbm9uLWZpbGUtYnVmZmVyIHByb2plY3QtLXZhbHVlLWluLWRpciBwcm9qZWN0LXRyeS12 YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBwcm9qZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0t cHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzXSAyIFtjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXpl LWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUx MmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5v cm1hbGl6ZS1jb250YWluZXIgbGlzdCBvcmctcGVyc2lzdC0tZmluZC1pbmRleCBvcl0gOCBbZG9v bS1ydW4taG9va3MgaWYgZG9vbS1ydW4tbG9jYWwtdmFyLWhvb2tzLWggcnVuLWhvb2tzIGhhY2st bG9jYWwtdmFyaWFibGVzLWFwcGx5IGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcy1ub24tZmlsZS1i dWZmZXIgcHJvamVjdC0tdmFsdWUtaW4tZGlyIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQt aW4tZGlyZWN0b3J5IHByb2plY3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0x IGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2Rl LW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZl cnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzXSAxIFtmdW5jdGlvbiBhc3NvYy1kZWZhdWx0IHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2V0cSBpZiBpZiBsZXQgIiM8bGFtYmRhIDB4 MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4i IHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2Fz ZSBsZXRdIDMgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIHNldHEg cHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZl0gMyBbbGV0 IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9j YWwtdmFyaWFibGVzIGNvbmRpdGlvbi1jYXNlIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBl YTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12 YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbF0gMSBbb3JnLS1jb2xsZWN0 LWtleXdvcmRzLTEgbGV0KiBvcmctY29sbGVjdC1rZXl3b3JkcyBsZXQgcHJvZ24gaWYgb3JnLXNl dC1yZWdleHBzLWFuZC1vcHRpb25zIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2 ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBsZXQgd2hpbGUgbGV0IGxldCBvcmctYWdlbmRhLXByZXBh cmUtYnVmZmVyc10gMSBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1h cGNhciAiIzxsYW1iZGEgMHgxZTEyYjhmYmZmYThkYT4iIGZ1bmNhbGwgY29uZCBsZXQqIGNvbmQg bGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBsaXN0IG9yZy1wZXJzaXN0LS1m aW5kLWluZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ25dIDEgW2Nv bmNhdCBpZiBsZXQgaWYgbGV0IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1y ZWxhdGl2ZS1uYW1lIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wIGFuZF0gMTAgW2xldCBj b25kIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wIGFuZCBpZiBvcmctcm9hbS1kYi1hdXRv c3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseSBkZWxldGUtZmlsZSBpZiBhZ2UtZGVsZXRlLW91dHB1 dC1maWxlIGlmIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGVdIDIgW2Rvb20tcnVuLWhv b2tzIGlmIGRvb20tcnVuLWxvY2FsLXZhci1ob29rcy1oIHJ1bi1ob29rcyBoYWNrLWxvY2FsLXZh cmlhYmxlcy1hcHBseSBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMtbm9uLWZpbGUtYnVmZmVyIHBy b2plY3QtLXZhbHVlLWluLWRpciBwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVj dG9yeSBwcm9qZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNy dW1iLXByb2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhh bGYtb2YtZ2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1o b29rcyBpZl0gMiBbbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgaWYgbGV0 ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBk ZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUg Y29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmXSA1IFtjY29udi1tYWtlLWludGVycHJl dGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5l ciBsaXN0IG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVj dGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBp Zl0gMiBbb3JnLW1vZGVybi1tb2RlIG9yZy1tb2Rlcm4tLW9uIGdsb2JhbC1vcmctbW9kZXJuLW1v ZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1 bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdF0gMTcgW2xldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJy ZXZpYXRlLWZpbGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFzZS1i dWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2Fs bCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkg b3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWZdIDIgW2lmIGxldCBtYWtlLXRlbXAtZmlsZSBs ZXQgb3IgYXNldCBsZXQqIHByb2duIHByb2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZp bGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSA3IFtsZXQg cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIGlmIGxl dCBpZiAiIzxsYW1iZGEgMHgyNGI2NzY4MDU2Zjg2YmE+IiBmdW5jYWxsIGxldCBkb29tLW1ha2Ut aGFzaGVkLWF1dG8tc2F2ZS1maWxlLW5hbWUtYSBhcHBseSBtYWtlLWF1dG8tc2F2ZS1maWxlLW5h bWUgb3IgZmlsZS1uZXdlci10aGFuLWZpbGUtcF0gOSBbdHVybi1vbi11bmRvLXRyZWUtbW9kZSBn bG9iYWwtdW5kby10cmVlLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1h bC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxl ZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4 PiJdIDQzIFttYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbiBs ZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIHNhdmUt Y3VycmVudC1idWZmZXJdIDEgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5j dGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1j bG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNl dHEgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqXSAxIFtsZXQgZmls ZS1uYW1lLXNhbnMtdmVyc2lvbnMgaWYgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90 IGFuZCBpZiBsZXQgaWYgbGV0ICIjPGxhbWJkYSAweDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25n LS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9k ZS1ob29rc10gOSBbZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uIGZpbGUtbmFtZS1iYXNlIGJyZWFk Y3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNy dW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1 bWItbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1v ZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWZdIDEgW3NldHEg bGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5 IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldF0gMjIgW3Byb2plY3RpbGUtcHJvamVjdC1y b290IHByb2plY3QtcHJvamVjdGlsZSBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBwcm9qZWN0 LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3Qt Y3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFs LW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3Jt YWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53 aW5kLXByb3RlY3RdIDEgW29yIGlmIHNldHEgd2hpbGUgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldHEgaWYgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBs eSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2Rl IGFwcGx5IHNldC1hdXRvLW1vZGVdIDEgW2xldCBvcmctc2V0LWZvbnQtbG9jay1kZWZhdWx0cyBs ZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJv Z24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHFdIDMgWyIjPGNvbXBp bGVkIDB4MTQwNmYzNTk3MjBiM2RlNT4iICIjPGNvbXBpbGVkIC0weDZhYTE2OGIyZDUxYTVlYT4i IHNvcnQtY29kaW5nLXN5c3RlbXMgZmluZC1jb2Rpbmctc3lzdGVtcy1yZWdpb24gc2VsZWN0LXNh ZmUtY29kaW5nLXN5c3RlbSBzZWN1cmUtaGFzaCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgMHgzNWQ1 MWZkNTVjYj4iIGZ1bmNhbGwgY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2Np YXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbl0gNyBbYWR2aWNlLS1hZGQtZnVu Y3Rpb24gYWR2aWNlLWFkZCBvcmctZm9sZC0tYWR2aWNlLWVkaXQtY29tbWFuZHMgbGV0IHByb2du IG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxl dCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdF0gNyBbaW5oaWJpdC1sb2NhbC12YXJpYWJs ZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgc2V0cSBhbmQgc2F2ZS1leGN1cnNpb24g bGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFi OTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1v ZGUgY29uZGl0aW9uLWNhc2VdIDIgWyIjPGxhbWJkYSAweDMzMjkyOGExYTI3ZDE+IiAiIzxjb21w aWxlZCAweDkxYWZlZGFmOTE1ZGY1Nj4iIG1hcGNhciAiIzxjb21waWxlZCAweDE4NTc2NmIwN2My Mzk1ZjQ+IiBhcHBseSBzZXEtbWFwIHNlcS1maWx0ZXIgbGV0IHByb2duIGlmIHNhdmUtY3VycmVu dC1idWZmZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBwcm9nbl0gMSBb bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5k LWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVy c2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJz aXN0LXJlYWQgcHJvZ25dIDEgW29yZy1tb2Rlcm4tLW1ha2UtZm9udC1sb2NrLWtleXdvcmRzIG9y Zy1tb2Rlcm4tbW9kZSBvcmctbW9kZXJuLS1vbiBnbG9iYWwtb3JnLW1vZGVybi1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHBy b2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDIgW29yIGxldCBpZiBs ZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYg b3IgbGV0IGlmIGxldCB3aGlsZSBsZXRdIDM3IFtmaWxlLWF0dHJpYnV0ZS1pbm9kZS1udW1iZXIg cHJvZ24gaWYgc2V0cSBpZiBsZXQgIiM8bGFtYmRhIDB4MzY1ZWVhNDk1Y2I+IiBmdW5jYWxsIGNv bmQgbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lz dC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCpdIDExIFtjY29udi1tYWtlLWludGVycHJl dGVkLWNsb3N1cmUgZnVuY3Rpb24gY2wtbWFwY2FuIGxldCBsZXQgcHJvZ24gaWYgb3JnLXNldC1y ZWdleHBzLWFuZC1vcHRpb25zIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1j dXJyZW50LWJ1ZmZlciBjYXRjaCBsZXQgd2hpbGUgbGV0IGxldF0gMiBbc2V0cSBwcm9nbiB3aGls ZSBsZXQgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxlLXJlbGF0aXZlLW5hbWUg bGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmXSA5IFtmaWxlLW5hbWUtZGlyZWN0 b3J5IHNldHEgZXF1YWwgY29uZCB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZy Yy0tZmluZC1lbnYtZGlyICIjPHN1YnIgZW52cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRh dGUgZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9v a3MgaWYgbm9ybWFsLW1vZGVdIDQgW3NldHEgZXF1YWwgY29uZCB3aGlsZSBsZXQgbG9jYXRlLWRv bWluYXRpbmctZmlsZSBwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBw cm9qZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXBy b2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2Yt Z2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBp ZiBub3JtYWwtbW9kZV0gNSBbZnVuY3Rpb24gaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMg Y2RyIGxldCogY29uZGl0aW9uLWNhc2UgaWYgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcw NmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQt YXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1t b2RlXSAyIFt0ZXh0LW1vZGUgb3V0bGluZS1tb2RlIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxs IHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9k ZS0tYXBwbHktYWxpc3Qgc2V0cV0gNCBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbiBp ZiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2du IGlmXSAxIFtzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEg aWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZl LWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2Fz ZSBpZiBzZXRxXSA1NCBbIiM8Y29tcGlsZWQgMHg4ZmRlY2JiYmE3Y2IzYzI+IiBhZHZpY2UtLWFk ZC1mdW5jdGlvbiBhZHZpY2UtYWRkIG9yZy1mb2xkLS1hZHZpY2UtZWRpdC1jb21tYW5kcyBsZXQg cHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24g aWYgbGV0IGlmXSAxIFthbmQgbm90IGlmIHByb2duIGlmIG9yZy1lbGVtZW50LS1jYWNoZS1wZXJz aXN0LWJlZm9yZS1yZWFkIHJ1bi1ob29rLXdpdGgtYXJncy11bnRpbC1zdWNjZXNzICIjPGxhbWJk YSAweGNhMDQ0ZmNjOTM5YzZkMj4iICIjPGNvbXBpbGVkIC0weDk4MmYyOTg3NDgxNWU5YT4iIG1h cGMgc2VxLWRvIHNlcS1maW5kIGlmIHByb2duIGlmIGxldCpdIDEzIFttYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSAxOSBbc3AtLW1lcmdlLXBhaXJzIHNwLS1tZXJn ZS1wYWlyLWNvbmZpZ3VyYXRpb25zIHNwLXVwZGF0ZS1sb2NhbC1wYWlycyAtZWFjaCBzcC0tdXBk YXRlLWxvY2FsLXBhaXJzIHNwLS1pbml0IHNtYXJ0cGFyZW5zLW1vZGUgdHVybi1vbi1zbWFydHBh cmVucy1tb2RlIHNtYXJ0cGFyZW5zLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1o b29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmXSA4IFt3aGl0 ZXNwYWNlLW1vZGUgaWYgZG9vbS1oaWdobGlnaHQtbm9uLWRlZmF1bHQtaW5kZW50YXRpb24taCBy dW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQt YXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSAy IFtzZXRxIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxl dCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxl dCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxl LW5vc2VsZWN0XSA1IFtwcm9nbiBpZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCB3 aGlsZSBsZXQgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNh bGwgcHJvZ24gaWYgaWZdIDIgW29yZy1tYWNyby0tZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1tYWNy by0tY29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIGxldCBwcm9n biBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBs ZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDExIFt3aGlsZSBsZXQgbGV0KiBwcm9n biBpZiBkaXItbG9jYWxzLS1hbGwtZmlsZXMgZnVuY2FsbCBpZiBzZXRxIHdoaWxlIGxldCBsb2Nh dGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duXSA1 IFtvciBlZGl0b3Jjb25maWctLWRpc2FibGVkLWZvci1tYWpvcm1vZGUgbm90IGFuZCBpZiBzYXZl LWN1cnJlbnQtYnVmZmVyIGNvbmRpdGlvbi1jYXNlIGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1m aW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNldHEgaWYgbGV0ICIj PGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbF0gMSBbd2hpbGUgbGV0IGZpbGUt dHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYgb3IgbGV0IGlmIGxldCB3aGls ZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZl0gNSBbZG9v bS1oaWdobGlnaHQtbm9uLWRlZmF1bHQtaW5kZW50YXRpb24taCBydW4taG9va3MgaWYgbm9ybWFs LW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVk IDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+ IiBhcHBseV0gMSBbY2FyIGlmIGxldCBoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmluZC12YXJpYWJs ZXMgb3IgYW5kIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0t aGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0cSBhbmQg bGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+Il0gMiBbY2NvbnYtbWFrZS1pbnRlcnBy ZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lh dGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9nbiBs ZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmXSAyIFtsZXQqIG9yIG9y Zy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVs ZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRl ciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHEgaWZdIDcgW2Njb252LWFuYWx5 emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5 emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFs eXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVy cHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29j aWF0ZWQgc2V0cSBwcm9nbiBwcm9nbl0gMSBbd3MtYnV0bGVyLWdsb2JhbC1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2du IGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0cSBpZl0gMiBbZXF1YWwgYW5kIGlmIGxldCBsZXQgaWYgbGV0KiBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9taW5h dGluZy1maWxlIGVudnJjLS1maW5kLWVudi1kaXIgIiM8c3ViciBlbnZyYy0tdXBkYXRlPiIgYXBw bHldIDEwIFtzZXQgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgd2hpbGUgbGV0IG9y Zy1lbGVtZW50LWNhY2hlLXJlc2V0IGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlm IGlmIHNldC1hdXRvLW1vZGUtMF0gMSBbbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1s b2NhbHMtZmluZC1maWxlIGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxl cyBsZXQqIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBjb25kaXRpb24tY2FzZSBpZiBsZXQgIiM8 bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVz IGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVzXSA0IFtjb25jYXQgb3JnLW1ha2Utb3B0aW9ucy1y ZWdleHAgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24g bGV0IG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3JnLWNvbGxlY3Qta2V5d29yZHMgbGV0 IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uXSAzIFtzZXRxIGlmIGlmIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1 ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJi MjVhNDgxMzJhPiIgYXBwbHkgc2V0cV0gNCBbbWFjcm9leHAtbWFjcm9leHBhbmQgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29u di1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGFwcGVuZCBvciBsZXQg aWYgbGV0IHByb2duXSAxIFtjb25jYXQgc2V0cSBsZXQgY29uZCBmaWxlLXRydWVuYW1lIGFiYnJl dmlhdGUtZmlsZS1uYW1lIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4i IGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxl Y3QgYXBwbHldIDUgW2NvbmNhdCBpZiBzZXRxIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQg ZmlsZXMtLXRyYW5zZm9ybS1maWxlLW5hbWUgaWYgbGV0IGlmICIjPGxhbWJkYSAweDI0YjY3Njgw NTZmODZiYT4iIGZ1bmNhbGwgbGV0IGRvb20tbWFrZS1oYXNoZWQtYXV0by1zYXZlLWZpbGUtbmFt ZS1hIGFwcGx5XSAyNSBbbGV0IGZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGlmIGxldCBpbmhpYml0 LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgbGV0IHNldC1hdXRvLW1vZGUtMSBzby1sb25nLS1j aGVjay1oZWFkZXItbW9kZXMgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBzZXQtYXV0by1t b2RlIGNvbmRpdGlvbi1jYXNlIGxldCBub3JtYWwtbW9kZV0gOSBbbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1t YWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFs aXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0XSAxIFtk aXNwbGF5LXdhcm5pbmcgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMg YXBwbHkgaW5zZXJ0LWZpbGUtY29udGVudHMgbGV0IGNvbmRpdGlvbi1jYXNlIGlmIHNhdmUtY3Vy cmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxldCogaWYgaWYgIiM8bGFt YmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5XSA4IFtwcm9nbiBpZiBzYXZlLWN1cnJlbnQt YnVmZmVyIGxldCB3aGlsZSBsZXQgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgcHJvZ24gaWYgb3Ig YW5kIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1wIGlmIGxl dCBzYXZlLXJlc3RyaWN0aW9uXSAxIFtzZXRxIHByb2duIHByb2duIGlmIGxldCAiIzxsYW1iZGEg MHgzNzk0MTI0ZWRjYj4iIGZ1bmNhbGwgY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUt YXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gaWYg cHJvZ25dIDEgW3NldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZiBwcm9nbiBpZiBvcmct ZWxlbWVudC0tY2FjaGUtcGVyc2lzdC1iZWZvcmUtcmVhZCBydW4taG9vay13aXRoLWFyZ3MtdW50 aWwtc3VjY2VzcyAiIzxsYW1iZGEgMHhkYjA4NjFmMDgwN2FkZDM+IiAiIzxjb21waWxlZCAtMHg5 ODJmMjk4NzQ4MTVlOWE+IiBtYXBjIHNlcS1kbyBzZXEtZmluZCBpZiBwcm9nbiBpZiBsZXQqXSA2 IFtsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxl dCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQt dmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGNvbmRpdGlvbi1jYXNlIGlm IGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiJdIDMgW2xldCBpZiBsZXQqIHByb2du IHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBzZXRxIGxvY2F0ZS1kb21p bmF0aW5nLWZpbGUgcHJvamVjdC10cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJv amVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9q ZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWds b2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4tYnVmZmVyc10gNSBbc2F2ZS1jdXJy ZW50LWJ1ZmZlciBpZiBsZXQgb3JnLXBlcnNpc3QtbG9hZDplbGlzcCBmdW5jYWxsIGxldCogY29u cyBzZXRxIGlmIHByb2duIGlmIHdoaWxlIGxldCogcHJvZ24gaWYgaWZdIDEgW25vdCBhbmQgd2hp bGUgbGV0IHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgbGV0IHNl dC1hdXRvLW1vZGUtMSBsZXQgc2F2ZS1leGN1cnNpb24gY2F0Y2ggaGFjay1sb2NhbC12YXJpYWJs ZXMtcHJvcC1saW5lIGFwcGVuZF0gNiBbZXF1YWwgYW5kIGlmIGxldCBsZXQgaWYgbGV0KiBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0KiBpZiBpZiAiIzxs YW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHldIDYgW2xldCogb3Igb3JnLWVsZW1lbnQt LWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2Fj aGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2 ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHEgaWYgaWYgd2hp bGVdIDcgW2VudnJjLS1hcHBseSAiIzxzdWJyIGVudnJjLS11cGRhdGU+IiBhcHBseSBlbnZyYy0t dXBkYXRlIGVudnJjLW1vZGUgZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVu LWhvb2tzIGFwcGx5IHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYg c2V0LWF1dG8tbW9kZS0wIHByb2duXSAxIFtqaXQtbG9jay1tb2RlIGppdC1sb2NrLXJlZ2lzdGVy IGZvbnQtbG9jay10dXJuLW9uLXRoaW5nLWxvY2sgZm9udC1sb2NrLW1vZGUtaW50ZXJuYWwgZm9u dC1sb2NrLWRlZmF1bHQtZnVuY3Rpb24gZm9udC1sb2NrLW1vZGUgdHVybi1vbi1mb250LWxvY2sg dHVybi1vbi1mb250LWxvY2staWYtZGVzaXJlZCBnbG9iYWwtZm9udC1sb2NrLW1vZGUtZW5hYmxl LWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJv Z24gaWYgaWZdIDEgW2Njb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQq IG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQt Y29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBw cm9nbiBpZiBwcm9nbiBpZl0gNSBbaWYgc3Vic3RyaW5nIGlmIGxldCBmaWxlLW5hbWUtc2Fucy12 ZXJzaW9ucyBpZiBsZXQgaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGlmIGxldCBp ZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwt dmFyaWFibGVzXSAxIFtmdW5jdGlvbiBsZXQqIGxldCB3aGlsZSBsZXQgbGV0IGNvbmQgb3JnLS10 YWctYWRkLXRvLWFsaXN0IHNldHEgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZl LWN1cnJlbnQtYnVmZmVyIGNhdGNoIGxldCB3aGlsZSBsZXRdIDYgW21hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9u IGxldCpdIDIgW2xldCBzYXZlLWV4Y3Vyc2lvbiBjYXRjaCBoYWNrLWxvY2FsLXZhcmlhYmxlcy1w cm9wLWxpbmUgYXBwZW5kIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4i IHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVz IGppbngtbW9kZSBqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rc10gMiBbYW5kIG9yIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJi cmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlmIGlm ICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+Il0gMyBbYXBwbHkgc2V0LWF1dG8tbW9kZSBj b25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5 MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRv c2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBwbHkgIiM8Y29t cGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+Il0gNCBbb3JnLXRyaW0gbGV0IHNhdmUtZXhjdXJzaW9u IG9yZy1lbGVtZW50LWtleXdvcmQtcGFyc2VyIGNvbmQgY29uZCBsZXQgY29uZCBzZXRxIGxldCBz YXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hp bGVdIDMgW3JlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3Vw IHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdCBjb25jYXQgb3JnLW1ha2Utb3B0aW9ucy1yZWdl eHAgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0 IG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3JnLWNvbGxlY3Qta2V5d29yZHMgbGV0XSAy IFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1h bGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGNsLW1hcGNhbiBsZXQg bGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBsZXQgcHJvZ24gb3JnLW1v ZGUgZnVuY2FsbCBwcm9nbl0gMSBbaWYgbGV0ICIjPGxhbWJkYSAweDExMmFiZDk1MGVhMTFmNzc+ IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNrLWxvY2FsLXZhcmlhYmxl cyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1v ZGUtMCBwcm9nbiBpZiBsZXRdIDEgW3NldCBpZiBkb29tLWhpZ2hsaWdodC1ub24tZGVmYXVsdC1p bmRlbnRhdGlvbi1oIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHBy b2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0t YXBwbHktYWxpc3RdIDIgW2lmIGxldCBjb25kIGxldCogb3IgbGV0IGlmIGlmIHdoaWxlIGxldCBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBj YXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG9dIDIgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rp b24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lz dC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duXSAyIFtsZXQgZmlsZS1yZW1vdGUtcCBub3Qgb3Ig YW5kIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwt dmFyaWFibGVzIGNvbmRpdGlvbi1jYXNlIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTEx Zjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJp YWJsZXNdIDQgW3J1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2du IGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0cSBpZiBsZXRdIDE5IFsiIzxjb21waWxlZCAweDFjZWM4YzlkODM2NjFhZjU+ IiBhZHZpY2UtLXR3ZWFrIGFkdmljZS0tcmVtb3ZlLWZ1bmN0aW9uIGFkdmljZS0tYWRkLWZ1bmN0 aW9uIGFkdmljZS1hZGQgb3JnLWZvbGQtLWFkdmljZS1lZGl0LWNvbW1hbmRzIGxldCBwcm9nbiBv cmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZl0gMSBb ZnVuY2FsbCBpZiBzZXRxIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGly LWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFi bGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGNvbmRpdGlvbi1jYXNlIGlmXSAxIFt3 aGl0ZXNwYWNlLXR1cm4tb24gd2hpdGVzcGFjZS1tb2RlIGlmIGRvb20taGlnaGxpZ2h0LW5vbi1k ZWZhdWx0LWluZGVudGF0aW9uLWggcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1 bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZl0gNCBbY29u Y2F0IHNldHEgaWYgaWYgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5h bWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWZdIDI0IFttYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw YW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmct cGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxl Y3Rpb24gbGV0IHByb2duIGxldCpdIDMgWytvcmctaW5pdC1naWZzLWggZnVuY2FsbCBjb25kaXRp b24tY2FzZSBkb29tLXJ1bi1ob29rIHJ1bi1ob29rLXdyYXBwZWQgbGV0IGNvbmRpdGlvbi1jYXNl IGxldCB3aGlsZSBsZXQgZG9vbS1ydW4taG9va3MgaWYgZG9vbS1ydW4tbG9jYWwtdmFyLWhvb2tz LWggcnVuLWhvb2tzIGhhY2stbG9jYWwtdmFyaWFibGVzLWFwcGx5IHByb2duXSAyIFtjY29udi1t YWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBsZXQgd2hpbGUgbGV0IGxldCBj b25kIG9yZy0tdGFnLWFkZC10by1hbGlzdCBzZXRxIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBsZXQgd2hpbGVdIDIgW29yIG5vdCBsZXQg bm9ybWFsLWJhY2t1cC1lbmFibGUtcHJlZGljYXRlIGZ1bmNhbGwgbm90IGFuZCBzYXZlLWN1cnJl bnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmICIjPGxhbWJk YSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseV0gMiBbZm9udC1sb2NrLWFkZC1rZXl3b3JkcyBv cmctbW9kZXJuLW1vZGUgb3JnLW1vZGVybi0tb24gZ2xvYmFsLW9yZy1tb2Rlcm4tbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBw cm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmXSAxIFt1bmlxdWlmeS1y YXRpb25hbGl6ZSB1bmlxdWlmeS1yYXRpb25hbGl6ZS1maWxlLWJ1ZmZlci1uYW1lcyB1bmlxdWlm eS0tY3JlYXRlLWZpbGUtYnVmZmVyLWFkdmljZSBsZXQqIGNyZWF0ZS1maWxlLWJ1ZmZlciBzZXRx IGlmIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEg bGV0IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3RdIDYgW25vdCBh bmQgd2hpbGUgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1 dG8tbW9kZS0xIHNvLWxvbmctLWNoZWNrLWhlYWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0by1t b2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlXSA0 IFtsZXQqIGFuZCBsZXQqIGFuZCBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVs ZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRy ZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIg b3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvcl0gMyBbbGV0IGxldCBwcm9nbiBvcmctbW9kZSBmdW5j YWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3Qgc2V0cSBpZl0gMiBbaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciB3aGls ZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlmIGlmICIjPGxhbWJk YSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXRdIDkgW2xldCBpZiBsZXQg cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVhZGNydW1iLS1w cm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVy bi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUt ZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAt MHgxYzM2NjVkOGM0OTFhNmU+Il0gMyBbY29uZCBpZiBvcmctZWxlbWVudC0tbmV4dC1tb2RlIGlm IHNldHEgcHJvZ24gcHJvZ24gaWYgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW3NldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBwcm9nbiBpZiBvcmctZWxlbWVudC0tY2FjaGUtcGVyc2lzdC1hZnRlci1yZWFkIHJ1bi1ob29r LXdpdGgtYXJncyB3aGlsZSBsZXQqIHByb2duIGlmIGlmIHByb2duIGlmIGxldCogcHJvZ24gcHJv Z25dIDEzIFtqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1o b29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRv LW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cV0g NCBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29u di1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9y bWFsaXplLWFzc29jaWF0ZWQgc2V0cV0gNSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24g bGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0t Z2V0LWNvbGxlY3Rpb24gbGV0IHByb2duXSAxIFthbmQgd2hpbGUgbGV0IGluaGliaXQtbG9jYWwt dmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1dG8tbW9kZS0xIGxldCBzYXZlLWV4Y3Vyc2lv biBjYXRjaCBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgYXBwZW5kIGxldCBpZiBsZXRd IDEgW21hY3JvZXhwLW1hY3JvZXhwYW5kIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5k LWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVy c2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIg IiM8bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCog b3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXJdIDEgW3NldHEgY29uZCB3aGlsZSBsZXQg cHJvZ24gbGV0KiBvcmctcGVyc2lzdC1sb2FkIHByb2duIGlmIGxldCBwcm9nbiBvcmctbW9kZSBm dW5jYWxsIHByb2duIGlmIGlmXSAxIFtsZXQgaWYgb3IgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmls ZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0XSAy NSBbaWYgbGV0IG9yIGFzZXQgbGV0KiBwcm9nbiBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVj cnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBh Z2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseV0gMyBbd3MtYnV0bGVyLW1vZGUgd3Mt YnV0bGVyLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwt bW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQg MHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4i XSAxOCBbbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1hdC1jb21tZW50LXAgYW5kIHdoaWxlIHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gb3IgcHJvZ24gaWYgbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LW9yZy1kYXRhLXBhcnNlciBzZXRxIGNvbmRd IDIgW2VxdWFsIGFuZCBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIHByb2duIGlmIG9yZy1lbGVt ZW50LS1jYWNoZS1wZXJzaXN0LWJlZm9yZS1yZWFkIHJ1bi1ob29rLXdpdGgtYXJncy11bnRpbC1z dWNjZXNzICIjPGxhbWJkYSAweDExNjA5MjRlOWQ5M2UzMTY+IiAiIzxjb21waWxlZCAtMHg5ODJm Mjk4NzQ4MTVlOWE+IiBtYXBjIHNlcS1kbyBzZXEtZmluZCBpZiBwcm9nbl0gNCBbaWYgc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBvciBwcm9nbiBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtb3JnLWRhdGEtcGFyc2VyIHNldHEgY29uZCBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0g MiBbbGV0KiBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVz LW5vbi1maWxlLWJ1ZmZlciBwcm9qZWN0LS12YWx1ZS1pbi1kaXIgcHJvamVjdC10cnktdmMgcHJv amVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2pl Y3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9u LWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFj MzY2NWQ4YzQ5MWE2ZT4iXSAxIFtmdW5jdGlvbiBzZXEtZmluZCBpZiBwcm9nbiBpZiBsZXQqIHBy b2duIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVhZCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LWxv YWQgcHJvZ24gaWYgbGV0XSAyIFtzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQqIGFnZS0tc3Rh cnQgbGV0IGFnZS1zdGFydC1kZWNyeXB0IHByb2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0 LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1m aWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5XSAxIFtyZXBsYWNlLWJ1ZmZlci1pbi13aW5k b3dzIGtpbGwtYnVmZmVyIGFuZCB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxl dCBhZ2UtcmVhZC1vdXRwdXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmls ZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCpdIDQgW2FuZCBj b25kIGZpbGUtdHJ1ZW5hbWUgZXF1YWwgYW5kIGlmIG9yZy1yb2FtLWRlc2NlbmRhbnQtb2YtcCBs ZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMt LWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGVdIDUgW3J1bi1hdC10aW1lIHVuZG8tYXV0 by0tYm91bmRhcnktZW5zdXJlLXRpbWVyIHVuZG8tYXV0by0tdW5kb2FibGUtY2hhbmdlIGluc2Vy dCBzYXZlLXJlc3RyaWN0aW9uIGFnZS1maWxlLWRlY29kZS1hbmQtaW5zZXJ0IGlmIHNldHEgbGV0 IHNhdmUtZXhjdXJzaW9uIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0 LWZpbGUtY29udGVudHMgYXBwbHkgaWZdIDIgW3NldHEgaWYgaWYgbGV0IGlmIGxldCB3aGlsZSBs ZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBpZiBzZXRxIHNhdmUtY3VycmVu dC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmXSAxOCBbb3JnLXBlcnNpc3QtLWZp bmQtaW5kZXggb3Igb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqIG9y Zy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIHNhdmUtY3VycmVu dC1idWZmZXIgbGV0IHdoaWxlXSAyIFtsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2Np YXRlZCBzZXRxIHByb2duIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVhZCBwcm9nbiBsZXQqIG9y Zy1wZXJzaXN0LWxvYWQgcHJvZ24gaWYgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGxdIDEgW2Nv bmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBz ZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g c2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG9dIDcgW2xldCog cHJvZ24gaWYgbGV0KiBhZ2UtY29udGV4dC1zZXQtcmVzdWx0LWZvciBhZ2Utd2FpdC1mb3ItY29t cGxldGlvbiBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0 aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1j b250ZW50cyBhcHBseV0gMiBbcHJvamVjdGlsZS1wcm9qZWN0LXAgZGVsZXRlLWZpbGUtcHJvamVj dGlsZS1yZW1vdmUtZnJvbS1jYWNoZSBhcHBseSAiIzxjb21waWxlZCAtMHgxNGYxNTBkMTIwZDYw N2U+IiBhcHBseSBkZWxldGUtZmlsZSBpZiBhZ2UtZGVsZXRlLW91dHB1dC1maWxlIGlmIHVud2lu ZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqXSA2IFtpZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1l bGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2hdIDQgW3J1bi1t b2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHBy b2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxIGlmIGxldCAiIzxs YW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiJdIDEgW2F1dG8tbWlub3ItbW9kZS1zZXQgYXBwbHkg IiM8Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBh cHBseSBzZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1jYXNlIGxldCBub3JtYWwtbW9kZSBpZiAiIzxs YW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWFdIDEgW2lmIHNhdmUtY3VycmVudC1idWZmZXIgd2hp bGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIG9yZy1maW5kLWJhc2UtYnVm ZmVyLXZpc2l0aW5nIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwg bGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9y Zy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyXSAxMiBbZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0t bm9ybWFsaXplLWNvbnRhaW5lciBsaXN0IG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9yIG9yZy1w ZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3Rl ciBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbl0gNCBbZ2VuZXJhdGUtbmV3LWJ1ZmZlciBsZXQqIGNy ZWF0ZS1maWxlLWJ1ZmZlciBzZXRxIGlmIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1 YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZp bGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0XSAxIFtyZWdleHAtb3B0IGNvbmNh dCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgb3JnLS1jb2xsZWN0LWtleXdvcmRzLTEgbGV0KiBvcmct Y29sbGVjdC1rZXl3b3JkcyBvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0 aWFsaXplLXRlbXBsYXRlcyBsZXQgcHJvZ24gb3JnLW1vZGVdIDEgW2Njb252LW1ha2UtaW50ZXJw cmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFp bmVyIHNldHEgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBp ZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldF0gNCBbcHJvZzEgbGV0IGNvbmRpdGlv bi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGxldCBv cmctcGVyc2lzdC0tcmVhZC1lbGlzcC1maWxlIG9yIHNldHEgaWYgcHJvZ24gaWYgbGV0KiBwcm9n bl0gOSBbbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxl dCBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJi MjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0XSAxIFtzZXRxIGxldCBzYXZlLWV4Y3Vyc2lv biBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCog c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNo IG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZV0gNCBbcmVnZXhwLW9wdCBjb25j YXQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3Jn LWNvbGxlY3Qta2V5d29yZHMgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9u cyBzYXZlLXJlc3RyaWN0aW9uXSAxIFtzZXRxIHByb2duIGlmIGNvbmRpdGlvbi1jYXNlIGxldCBl ZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5v c2VsZWN0IHNldHEgaWYgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2Fs bCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHld IDEgW3Byb2duIHJlY29yZCBzZXQgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgd2hp bGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxs IHByb2duIGlmXSAxIFtzZXRxIGVxdWFsIGNvbmQgd2hpbGUgbGV0IGxvY2F0ZS1kb21pbmF0aW5n LWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQgcHJvZ24gaWYgaGFjay1kaXItbG9j YWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMgY29uZGl0aW9u LWNhc2UgaWZdIDMgW2xldCBwcm9nbiBpZiBhZ2Utc2NyeXB0LXAgYXNldCBsZXQqIHByb2duIGxl dCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyXSA5IFsiIzxzdWJyIGluc2VydC1maWxlLWNv bnRlbnRzPiIgYXBwbHkgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVu dHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29udGVudHMgbGV0IGNvbmRpdGlvbi1jYXNlIGlmIHNhdmUt Y3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxldCogaWYgaWZdIDUg W2NvbmNhdCBzZXRxIGlmIGlmIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZXF1 YWwgYW5kIGlmIG9yZy1yb2FtLWRlc2NlbmRhbnQtb2YtcCBsZXQqIHByb2duXSA5IFtmaWxlLXRy dWVuYW1lIGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldCBpZiBsZXQgd2hpbGUg bGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgaWYgc2V0cSBzYXZlLWN1cnJl bnQtYnVmZmVyIGxldF0gMSBbaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4 YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1h dXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBwbHkgIiM8 Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseSBhZnRlci1maW5kLWZpbGUgaWZdIDIg W3NldC1mYWNlLWV4dGVuZCAiIzxjb21waWxlZCAtMHgxNDAyMDYzOGM3NmQzMzRlPiIgb3JnLS1z ZXQtZmFjZXMtZXh0ZW5kIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNl dC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Rd IDMgW25vdCBhbmQgd2hpbGUgbGV0IHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1w IG5vdCBhbmQgbGV0IHNldC1hdXRvLW1vZGUtMSBzZXRxIGFuZCBzYXZlLWV4Y3Vyc2lvbiBsZXQg IiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iXSA2IFtsaXN0IGxpc3QgbGV0IG9yZy1zZXQt Zm9udC1sb2NrLWRlZmF1bHRzIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlm IHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDQgW3NwLXVwZGF0ZS1sb2NhbC1wYWly cyAtZWFjaCBzcC0tdXBkYXRlLWxvY2FsLXBhaXJzIHNwLS1pbml0IHNtYXJ0cGFyZW5zLW1vZGUg dHVybi1vbi1zbWFydHBhcmVucy1tb2RlIHNtYXJ0cGFyZW5zLWdsb2JhbC1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2du IGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbl0gMiBbc2V0cSBkaXItbG9jYWxzLWZpbmQtZmls ZSBsZXQgcHJvZ24gaWYgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgY2RyIGxldCogY29u ZGl0aW9uLWNhc2UgaWYgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAi Izxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFw cGx5XSAyIFthZHZpY2UtLW1ha2UgYWR2aWNlLS1hZGQtZnVuY3Rpb24gYWR2aWNlLWFkZCBvcmct Zm9sZC0tYWR2aWNlLWVkaXQtY29tbWFuZHMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJv Z24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZl0gMSBbd2hpbGUgbGV0IGlu aGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBpZiBsZXQgaWYgbGV0ICIjPGxhbWJkYSAw eDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBo YWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsXSAxIFtp ZiBvcmctY2hlY2stYWdlbmRhLWZpbGUgaWYgc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIGxldCB3aGlsZSBsZXQgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZS1idWZmZXJzIGlmIGlm IGxldCBvcmctYWdlbmRhLXByZXBhcmUgY2F0Y2hdIDEwIFtmaWxlLW5hbWUtc2Fucy1leHRlbnNp b24gZmlsZS1uYW1lLWJhc2UgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1i LXByb2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYt b2YtZ2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29r cyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkg cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWFdIDEgW2xl dCBpZiBvcmctZWxlbWVudC0tY29sbGVjdC1hZmZpbGlhdGVkLWtleXdvcmRzIGxldCBjb25kIHNl dHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBp ZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uXSAxIFtydW4taG9vay13aXRoLWFy Z3MtdW50aWwtc3VjY2VzcyAiIzxsYW1iZGEgMHgxYjlkN2RlYTBjZWExNjE2PiIgIiM8Y29tcGls ZWQgLTB4OTgyZjI5ODc0ODE1ZTlhPiIgbWFwYyBzZXEtZG8gc2VxLWZpbmQgaWYgcHJvZ24gaWYg bGV0KiBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlYWQgcHJvZ24gbGV0Kl0gMSBbbm90 IHdoaWxlIGxldCBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUt bmFtZSBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVt YnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9k ZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1t b2RlXSAxIFtyZS1zZWFyY2gtZm9yd2FyZCBpZiBsZXQqIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVt ZW50LXNlY3Rpb24tcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1l bnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqXSAyMSBbbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxs LWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDE3IFtlZGl0b3Jjb25maWct Y29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtLWdldC1oYW5kbGVzIGVkaXRvcmNv bmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jjb25maWctY29yZS1nZXQtcHJvcGVydGllcy1o YXNoIGZ1bmNhbGwgc2V0cSBjb25kaXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLWNhbGwtZ2V0 LXByb3BlcnRpZXMtZnVuY3Rpb24gc2V0cSBwcm9nbiBpZiBjb25kaXRpb24tY2FzZSBsZXQgZWRp dG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5XSA4IFttYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1p bnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uXSAxOCBbeWFzLWdsb2JhbC1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2du IGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3Qgc2V0cSBpZl0gMSBbaWYgc2F2ZS1leGN1cnNpb24gc2V0cSBhbmQgbGV0ICIjPGxh bWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJm MWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0 aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+ Il0gMSBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGNsLW1hcGNhbiBt YXBjYXIgc2V0IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIGxldCB3 aGlsZSBsZXRdIDIgW2xldCBhZ2UtcmVhZC1vdXRwdXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3Qg YWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0 IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0IHByb2duXSA4 NyBbaWYgc2F2ZS1leGN1cnNpb24gcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1p bnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 IGFnZS1maWxlLWhhbmRsZXIgIiM8c3ViciBpbnNlcnQtZmlsZS1jb250ZW50cz4iIGFwcGx5IGlm XSA2NiBbcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1 bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1i LS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWIt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFt YmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCog ZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hXSAyIFtsZXQgZmlsZS1yZW1vdGUtcCBsZXQgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVhZGNydW1iLS1wcm9qZWN0 LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1s b2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxl LWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2 NjVkOGM0OTFhNmU+Il0gNyBbY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGlzdCBvcmct cGVyc2lzdC0tZmluZC1pbmRleCBvciBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHBy b2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJvZ25dIDIgW2FuZCBpZiBz YXZlLWN1cnJlbnQtYnVmZmVyIHdoaWxlIGxldCBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcg YW5kIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEg bGV0XSA0MSBbZmluZC1hdXRvLWNvZGluZyBzZXQtYXV0by1jb2RpbmcgIiM8c3ViciBpbnNlcnQt ZmlsZS1jb250ZW50cz4iIGFwcGx5IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxl LWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNvbnRlbnRzIGxldCBjb25kaXRpb24tY2FzZSBp ZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqXSAx MCBbZGVscSBzZXRxIHByb2duIGlmIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9w dGlvbnMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9k ZS0wXSAxIFtmdW5jdGlvbiBjbC1tYXBjYW4gbGV0IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4 cHMtYW5kLW9wdGlvbnMgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIGxldCB3aGlsZSBsZXQgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZS1idWZm ZXJzXSAyIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw YW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmct cGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBzZXRxIHByb2duIGxldCogb3JnLXBlcnNpc3Qt cmVnaXN0ZXIgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ25dIDIgW29yZy1lbGVtZW50LWJlZ2luIGxl dCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3Mt cCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUt ZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0 IG9yIHNldHEgaWYgaWZdIDEgW29yZy1lbGVtZW50LWNyZWF0ZSBsZXQgc2F2ZS1leGN1cnNpb24g b3JnLWVsZW1lbnQta2V5d29yZC1wYXJzZXIgb3JnLW1hY3JvLS1maW5kLWtleXdvcmQtdmFsdWUg b3JnLW1hY3JvLS1jb2xsZWN0LW1hY3JvcyBvcmctbWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMg bGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHBy b2duXSAxIFtpZiBzdWJzdHJpbmcgaWYgbGV0IGZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIGxldCBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uIGZpbGUtbmFt ZS1iYXNlIGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNy dW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1t b2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3NdIDMgW3Byb2du IGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1vcmct ZGF0YS1wYXJzZXIgc2V0cSBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRp b24tY2FzZSBpZl0gMSBbbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHIgbGV0KiBjb25k aXRpb24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIj PGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBw bHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2FzZV0gMSBbc2V0IGxldCBpZiBsZXQgcHJvZ24g aWYgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxs IHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbl0gMSBbd2hpdGVzcGFjZS1jb2xvci1v biB3aGl0ZXNwYWNlLXR1cm4tb24gd2hpdGVzcGFjZS1tb2RlIGlmIGRvb20taGlnaGxpZ2h0LW5v bi1kZWZhdWx0LWluZGVudGF0aW9uLWggcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2Rl IGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldF0gMSBbcmVn ZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgY29uY2F0IG9yZy1tYWtl LW9wdGlvbnMtcmVnZXhwIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUt ZXhjdXJzaW9uIGxldCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBsZXQqIG9yZy1jb2xsZWN0LWtl eXdvcmRzIGxldCBwcm9nbiBpZl0gMiBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnBy ZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lh dGVkXSAxIFtzYXZlLWN1cnJlbnQtYnVmZmVyIGNvbmRpdGlvbi1jYXNlIGxldCBlZGl0b3Jjb25m aWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNl dHEgaWYgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29y Zy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1h Z2VuZGEtZmlsZS1idWZmZXIgaWZdIDMgW2Nhci1zYWZlIHNldHEgd2hpbGUgbGV0IG9yZy1hc3Np Z24tZmFzdC1rZXlzIHNldHEgcHJvZ24gaWYgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1h bmQtb3B0aW9ucyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbF0gMSBbY2FsbGVkLWludGVyYWN0 aXZlbHktcCBlbnZyYy1tb2RlIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBhcHBseSBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlm IHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDEgWyIjPGNvbXBpbGVkIDB4M2M1ZDgw MTlkZjdlOTE+IiBhZHZpY2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRkICIjPHN1YnIgRjYxNmU2 ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMzc+IiBldmFsLWFm dGVyLWxvYWQgY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1h dXRvLW1vZGUtMCBwcm9nbl0gMSBbaWYgcHJvZ24gYW5kIHdoaWxlIGxldCogZWRpdG9yY29uZmln LS1kaXNhYmxlZC1mb3ItZmlsZW5hbWUgbm90IGFuZCBpZiBjb25kaXRpb24tY2FzZSBsZXQgZWRp dG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3Nl bGVjdCBzZXRxIGlmXSAzIFtub3QgYW5kIHdoaWxlIGxldCB3aGlsZSBsZXQgaW5oaWJpdC1sb2Nh bC12YXJpYWJsZXMtcCBub3QgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBs eSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2Rl IGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2VdIDEgW3NldHEgaWYgbGV0ICIjPGxh bWJkYSAweDM3MjcxOWRlZGNiPiIgZnVuY2FsbCBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5vcm1h bGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9n biBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmXSAxIFtwdXRoYXNoIGlmIGxldCAi IzxsYW1iZGEgMHgzNDM5NGRiZTljYj4iIGZ1bmNhbGwgY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1u b3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQg cHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZl0gMSBbYWR2aWNlLS1jb3B5 IGFkdmljZS0tbWFrZSBhZHZpY2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRkICIjPHN1YnIgRjYx NmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMzc+IiBldmFs LWFmdGVyLWxvYWQgY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJsZS1pbi1idWZmZXJz IHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNl dC1hdXRvLW1vZGUtMF0gMSBbZXEgIiM8bGFtYmRhIDB4MzMyOTI4YTFhMjdkMT4iICIjPGNvbXBp bGVkIDB4OTFhZmVkMTliMjI5ZjU2PiIgbWFwY2FyICIjPGNvbXBpbGVkIDB4MTg1NzY2YjA3YzIz OTVmND4iIGFwcGx5IHNlcS1tYXAgc2VxLWZpbHRlciBsZXQgcHJvZ24gaWYgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0XSAyNiBbIiM8Y29t cGlsZWQgLTB4MWRkZjExMWU3ZDkxNzNiZj4iIHByb2plY3QtLXZhbHVlLWluLWRpciBwcm9qZWN0 LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBwcm9qZWN0LWN1cnJlbnQgYnJlYWRj cnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJyZWFkY3J1 bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJlYWRjcnVt Yi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxs YW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ25dIDE5IFtvciBjZHIgY2FyIGxl dCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1j dXJyZW50LWJ1ZmZlciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0XSAxIFtp ZiBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAg cHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgaWZdIDIgW2xl dCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9wdGlt aXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRhLWZp bGUtYnVmZmVyIGlmIHNldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBsZXQgd2hp bGUgbGV0IGxldCBvcmctYWdlbmRhLXByZXBhcmUtYnVmZmVyc10gNiBbIiM8Y29tcGlsZWQgLTB4 NmFhMTY4YjJkNTFhNWVhPiIgc29ydC1jb2Rpbmctc3lzdGVtcyBmaW5kLWNvZGluZy1zeXN0ZW1z LXJlZ2lvbiBzZWxlY3Qtc2FmZS1jb2Rpbmctc3lzdGVtIHNlY3VyZS1oYXNoIHNldHEgaWYgbGV0 ICIjPGxhbWJkYSAweDM2NWEzZjIyMWNiPiIgZnVuY2FsbCBjb25kIGxldCogb3JnLXBlcnNpc3Qt LW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxl dF0gMyBbY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxl dCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFm PiIgbWFwY2FyICIjPGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCog Y29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxpc3Qgb3JnLXBlcnNp c3QtLWZpbmQtaW5kZXhdIDQgW3NhdmUtZXhjdXJzaW9uIGxldCBoYWNrLWxvY2FsLXZhcmlhYmxl cy0tZmluZC12YXJpYWJsZXMgb3IgYW5kIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTEx Zjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJp YWJsZXMgc2V0cSBhbmQgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseV0g MiBbaGwtbGluZS1tb2RlIGFuZCBpZiBpZiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIHByb2duIGlm IGxldCB3aGlsZSBsZXQgbGV0IGdsb2JhbC1obC1saW5lLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMg cnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlXSAyIFt3aGlsZSBsZXQgZmlsZS10cnVl bmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZp bmQtYmFzZS1idWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3 PiIgZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJz LWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWYgc2V0LWJ1ZmZlcl0gMiBbZ2V0 LWZpbGUtYnVmZmVyIHNldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBwcm9nbiBpZiBvcmct ZWxlbWVudC0tY2FjaGUtcGVyc2lzdC1hZnRlci1yZWFkIHJ1bi1ob29rLXdpdGgtYXJncyB3aGls ZSBsZXQqIHByb2duIGlmIGlmIHByb2duIGlmIGxldCogcHJvZ25dIDMgW2Z1bmN0aW9uIGNsLW1h cGNhbiBtYXBjYXIgc2V0IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNo IGxldCB3aGlsZSBsZXQgbGV0XSAxIFtydW4taG9vay13aXRoLWFyZ3Mgd2hpbGUgbGV0KiBwcm9n biBpZiBpZiBwcm9nbiBpZiBsZXQqIHByb2duIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVhZCBw cm9nbiBsZXQqIG9yZy1wZXJzaXN0LWxvYWRdIDEgW21ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSBv ciBmaWxlLW5ld2VyLXRoYW4tZmlsZS1wIGFuZCBpZiBjb25kIGxldCogaWYgIiM8bGFtYmRhIC0w eDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0t c2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiJd IDEgW2Njb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBhc3Nv Yy1kZWZhdWx0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2V0cSBpZiBpZiBsZXQg IiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRm MmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZV0g MSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0 KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0 LWNvbGxlY3Rpb24gbGV0XSAyIFtpbnRlcm5hbC0td2l0aG91dC1yZXN0cmljdGlvbiBvcmctbW9k ZXJuLW1vZGUgb3JnLW1vZGVybi0tb24gZ2xvYmFsLW9yZy1tb2Rlcm4tbW9kZS1lbmFibGUtaW4t YnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBp ZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmXSAxIFtvcmctZmluZC1iYXNlLWJ1 ZmZlci12aXNpdGluZyBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxs IGxldCArb3JnLS1vcHRpbWl6ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBhcHBseSBv cmctZ2V0LWFnZW5kYS1maWxlLWJ1ZmZlciBpZiBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZm ZXIgY2F0Y2ggbGV0IHdoaWxlIGxldCBsZXRdIDEgW21hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXpl LWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUx MmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5v cm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbl0gMSBbY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1t b2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1i ZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBk b29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzVi NzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4iXSAxIFtsZXQqIGFuZCBs ZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmct ZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwt dHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yXSA2IFtub3QgYW5kIHdoaWxlIGxldCBpbmhpYml0 LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgbGV0IHNldC1hdXRvLW1vZGUtMSBsZXQgc2F2ZS1l eGN1cnNpb24gY2F0Y2ggaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIG9yIGFuZCBpZl0g OCBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1h bGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNp c3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFmPiIgbWFwY2FyICIj PGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCogY29uZCBsZXQqIG9y Zy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyXSAxIFtvcmctY2l0ZS10cnktbG9hZC1wcm9j ZXNzb3IgaWYgcHJvZ24gbGlzdCBsZXQgb3JnLXNldC1mb250LWxvY2stZGVmYXVsdHMgbGV0IHBy b2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlm XSAxIFtsZXQgc2F2ZS1leGN1cnNpb24gY2F0Y2ggaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1s aW5lIGFwcGVuZCBsZXQgaWYgbGV0ICIjPGxhbWJkYSAweDExMmFiZDk1MGVhMTFmNzc+IiBzby1s b25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4t bW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duXSAxIFtjb25kIGVkaXRvcmNvbmZpZy1z ZXQtaW5kZW50YXRpb24gZWRpdG9yY29uZmlnLXNldC1sb2NhbC12YXJpYWJsZXMgcHJvZ24gaWYg c2F2ZS1jdXJyZW50LWJ1ZmZlciBjb25kaXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLS1hZHZp Y2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxl dCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGxdIDEgW2ZpbGUtbmFtZS1k aXJlY3Rvcnkgc2V0cSBlcXVhbCBjb25kIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxl IHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3QtY3VycmVu dCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMg YnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBi cmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmXSA1IFthdmwtdHJl ZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1w dXQgb3Igc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2hdIDEgW2FiYnJldmlhdGUtZmlsZS1uYW1l IHNldHEgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBl ZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5v c2VsZWN0IHNldHEgaWYgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2Fs bCBsZXRdIDIgW3Byb2duIGlmIHNldHEgaWYgbGV0ICIjPGxhbWJkYSAweDM3ZTYwMmY3MWNiPiIg ZnVuY2FsbCBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEg b3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJl Z2lzdGVyXSAxIFtjb25jYXQgaWYgc2V0cSBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZp bGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIGlmIGxldCBtYWtlLWxvY2stZmlsZS1uYW1lICIjPHN1 YnIgaW5zZXJ0LWZpbGUtY29udGVudHM+IiBhcHBseSBpZiBlZGl0b3Jjb25maWctLWFkdmljZS1p bnNlcnQtZmlsZS1jb250ZW50cyBhcHBseV0gMSBbYW5kIGlmIGxldCBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2lu dCBsZXQgd2hpbGUgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1 cnNpb24gbGV0XSAyIFtpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFi YnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBp ZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiJdIDEgW3NldCBwcm9nbiBpZiBzYXZlLWN1 cnJlbnQtYnVmZmVyIGxldCB3aGlsZSBsZXQgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgcHJvZ24g aWYgb3IgYW5kIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1w IGlmIGxldF0gMiBbY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxl dCogY29ucyBzZXRxIGlmIHByb2duIGlmIHdoaWxlIGxldCogcHJvZ24gaWYgaWYgcHJvZ24gaWZd IDEgW2xldCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlm IHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1j YWNoZS1yZXNldCBwcm9nbl0gMSBbZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXpl LWNvbnRhaW5lciBsZXQqIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiB3aGlsZSBsZXQqIHByb2duIGlm IGlmIHByb2duIGlmXSAyIFtpZiBzZXRxIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmls ZS1ub3NlbGVjdC0xIGlmIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4i IGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxl Y3QgYXBwbHldIDMgW2ZpbGUtbmFtZS1kaXJlY3Rvcnkgc2V0cSBlcXVhbCBjb25kIHdoaWxlIGxl dCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHBy b2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGNkciBsZXQqIGNvbmRpdGlvbi1j YXNlXSAxIFtjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24g Y2wtbWFwY2FuIGxldCBsZXQgcHJvZ24gaWYgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIGxl dCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmXSAxIFtvcmctdHJpbSBsZXQgc2F2 ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQta2V5d29yZC1wYXJzZXIgb3JnLW1hY3JvLS1maW5kLWtl eXdvcmQtdmFsdWUgb3JnLW1hY3JvLS1jb2xsZWN0LW1hY3JvcyBvcmctbWFjcm8taW5pdGlhbGl6 ZS10ZW1wbGF0ZXMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1 dG8tbW9kZS0wIHByb2duXSA0IFtpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4i IHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVz IHNldHEgYW5kIGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29t cGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBz ZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1jYXNlXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBj Y29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmct cGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxl Y3Rpb24gbGV0IHByb2duIGlmIHByb2duIGxldCpdIDIgW3Byb2duIHByb2duIGxldCogb3JnLXBl cnNpc3QtcmVhZCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LWxvYWQgcHJvZ24gaWYgbGV0IHByb2du IG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWZdIDMgW29yZy1mb2xkLWNvcmUtZ2V0LWZvbGRp bmctc3BlYy1mcm9tLWFsaWFzIG9yZy1mb2xkLWNvcmUtc2V0LWZvbGRpbmctc3BlYy1wcm9wZXJ0 eSAiIzxjb21waWxlZCAtMHg0MTk0M2M5MTQ2ZGQ2ZTE+IiBvcmctZm9sZC1jb3JlLWFkZC1mb2xk aW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1mb2xkLWluaXRpYWxpemUgbGV0 IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2du IGlmXSAzIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5j dGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJz aXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBw cm9nbiBpZl0gMiBbb3JnLW1vZGVybi0tb24gZ2xvYmFsLW9yZy1tb2Rlcm4tbW9kZS1lbmFibGUt aW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9n biBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldHFdIDQgW2JyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0t dHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1v ZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1 bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0 by1tb2RlLS1hcHBseS1hbGlzdF0gMSBbY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1j bG9zdXJlIGZ1bmN0aW9uIHNlcS1maWx0ZXIgbGV0IHByb2duIGlmIHNhdmUtY3VycmVudC1idWZm ZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBsZXQgcHJvZ24gb3JnLW1v ZGUgZnVuY2FsbF0gMSBbbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1i YXNlLWJ1ZmZlci12aXNpdGluZyBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBm dW5jYWxsIGxldCArb3JnLS1vcHRpbWl6ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBh cHBseSBvcmctZ2V0LWFnZW5kYS1maWxlLWJ1ZmZlciBpZiBzZXQtYnVmZmVyIHNhdmUtY3VycmVu dC1idWZmZXIgY2F0Y2hdIDEyIFt1bmlxdWlmeS1yYXRpb25hbGl6ZS1hLWxpc3QgdW5pcXVpZnkt cmF0aW9uYWxpemUgdW5pcXVpZnktcmF0aW9uYWxpemUtZmlsZS1idWZmZXItbmFtZXMgdW5pcXVp ZnktLWNyZWF0ZS1maWxlLWJ1ZmZlci1hZHZpY2UgbGV0KiBjcmVhdGUtZmlsZS1idWZmZXIgc2V0 cSBpZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRx IGxldCBsZXRdIDQgW3doaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIHNvLWxvbmct LWNoZWNrLWhlYWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRv LW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2 NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSAxIFttYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbF0gMzUgW3NldHEgY29uZCBsZXQg bGV0IGlmIGxldCogbGV0IHByb2duIGlmIGxldCB3aGlsZSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDEgW3Byb2duIGxldCogb3JnLXBlcnNp c3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IGxldCBwcm9nbl0gMiBbaWYg c3Vic3RyaW5nIGlmIGxldCBmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpZiBsZXQgaW5oaWJpdC1s b2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgbGV0IHNhdmUtZXhj dXJzaW9uIGNhdGNoIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZV0gNSBbbGV0IGZpbGUt cmVtb3RlLXAgYXV0by1taW5vci1tb2RlLS1wbGFpbi1maWxlbmFtZSBhdXRvLW1pbm9yLW1vZGUt LXJ1bi1hdXRvIGF1dG8tbWlub3ItbW9kZS1zZXQgYXBwbHkgIiM8Y29tcGlsZWQgMHgxYjkwZGYy YTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBzZXQtYXV0by1tb2RlIGNv bmRpdGlvbi1jYXNlIGxldCBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkx YTZlPiIgYXBwbHldIDMgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5k LWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVy c2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIg IiM8bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsXSAxIFt3aGlsZSBsZXQgbGV0KiBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2gg b3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0XSA0IFtzYXZlLWN1cnJl bnQtYnVmZmVyIGxldCBsZXQgb3JnLXBlcnNpc3QtLXJlYWQtZWxpc3AtZmlsZSBvciBzZXRxIGlm IHByb2duIGlmIGxldCogcHJvZ24gcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWFkIHByb2duIGxl dCpdIDIgW2Z1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0 cSBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2du IGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlXSAxIFtwcm9nbiBpZiBsZXQgcHJvZ24g b3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0 IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHFdIDUgW2NvbnMgZ2V0aGFzaCBhbmQg b3Igc2V0cSBsZXQgbGV0IHdoaWxlIGxldCBjYXRjaCBhbmQgbGV0KiB3aXRoLW5vLXdhcm5pbmdz IG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbl0g MyBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1h bGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIHNlcS1maW5kIGlmIHBy b2duIGlmIGxldCogcHJvZ24gcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWFkIHByb2duIGxldCpd IDEgW2xldCBmaWxlLXJlbW90ZS1wIGFuZCBpZiBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUw ZWExMWY3Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwt dmFyaWFibGVzIGppbngtbW9kZSBqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1i dWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZV0gOSBbZXF1YWwgaWYgbGV0 IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQg ZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFzZS1idWZmZXItdmlzaXRpbmcgbGV0ICIj PGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXRdIDMgW2Njb252LWZ2IGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1u b3JtYWxpemUtY29udGFpbmVyICIjPGxhbWJkYSAweDExY2Q0NTIxZj4iIG1hcGNhciAiIzxsYW1i ZGEgMHgxZTEyYjhmYmZmYThkYT4iIGZ1bmNhbGwgY29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVy c2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBzZXRxIHByb2duXSAyIFttYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBm dW5jdGlvbiBzZXEtZmlsdGVyIGxldCBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCB3 aGlsZSBsZXQgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXRdIDEgW2lmIHByb2duIGlmIGxldCBzYXZl LWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUg bGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVm ZmVyIGNhdGNoXSA0IFtmb250LWxvY2stc2V0LWRlZmF1bHRzIGZvbnQtbG9jay1yZW1vdmUta2V5 d29yZHMgb3JnLW1vZGVybi1tb2RlIG9yZy1tb2Rlcm4tLW9uIGdsb2JhbC1vcmctbW9kZXJuLW1v ZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1 bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldF0gNCBbbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBl cnNpc3QtLWdldC1jb2xsZWN0aW9uXSA1IFtmdW5jdGlvbiBsaXN0IGxldCArb3JnLS1vcHRpbWl6 ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBhcHBseSBvcmctZ2V0LWFnZW5kYS1maWxl LWJ1ZmZlciBpZiBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggbGV0IHdoaWxl IGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWZdIDIgW2NoZWNrLWZhY2UgZmFj ZS1pZCBtYWtlLWdseXBoLWNvZGUgIiM8bGFtYmRhIC0weDgwZjkzZWM3NTU1MzczYz4iIG1hcGNh ciB2Y29uY2F0IHNldC1kaXNwbGF5LXRhYmxlLXNsb3QgcHJvZ24gaWYgbGV0IHByb2duIG9yZy1t b2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWZdIDIgW2Z1bmN0aW9uIG1hcGNhciAiIzxsYW1iZGEgMHgx ZTEyYjhmYmZmYThkYT4iIGZ1bmNhbGwgY29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVyc2lzdC0t bm9ybWFsaXplLWNvbnRhaW5lciBzZXRxIHByb2duIGlmIHByb2duIGxldCogb3JnLXBlcnNpc3Qt cmVnaXN0ZXIgcHJvZ25dIDEgW2xldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZXMtLXRy YW5zZm9ybS1maWxlLW5hbWUgaWYgbGV0IG1ha2UtbG9jay1maWxlLW5hbWUgIiM8c3ViciBpbnNl cnQtZmlsZS1jb250ZW50cz4iIGFwcGx5IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1m aWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNvbnRlbnRzIGxldCBjb25kaXRpb24tY2Fz ZV0gMyBbaWYgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGlmIGRpci1sb2NhbHMtLWFsbC1maWxl cyBmdW5jYWxsIGlmIHNldHEgd2hpbGUgbGV0IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgbGV0KiBk aXItbG9jYWxzLWZpbmQtZmlsZV0gMyBbcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3Vw IHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4 cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQt Z3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgY29uY2F0 IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAxIFtidWZmZXIt bGlzdCBzZXEtZmlsdGVyIGxldCBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCB3aGls ZSBsZXQgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwg cHJvZ24gaWZdIDIgW2FuZCB3aGlsZSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWV4Y3Vyc2lvbiBsZXQgb3JnLS1jb2xsZWN0LWtleXdvcmRzLTEgbGV0KiBvcmctY29s bGVjdC1rZXl3b3JkcyBsZXQgcHJvZ24gaWYgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIGxl dCBwcm9nbl0gMyBbcHJvZ24gaWYgZGlyLWxvY2Fscy0tYWxsLWZpbGVzIGZ1bmNhbGwgaWYgc2V0 cSB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1m aWxlIGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBsZXQqXSAxIFtt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3Jn LXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xs ZWN0aW9uIGxldF0gMiBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50 ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxldCB3aGlsZSBsZXQgbGV0IGNvbmQgb3Jn LS10YWctYWRkLXRvLWFsaXN0IHNldHEgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoXSA1IFtmdW5jYWxsIHNldHEgY29uZGl0aW9uLWNhc2Ug bGV0IGVkaXRvcmNvbmZpZy1jYWxsLWdldC1wcm9wZXJ0aWVzLWZ1bmN0aW9uIHNldHEgcHJvZ24g aWYgY29uZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3Nl bGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cSBpZiBsZXRdIDIgW2FkdmljZS1hZGQg IiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJk YV8zNz4iIGV2YWwtYWZ0ZXItbG9hZCBjdHJsZi1sb2NhbC1tb2RlIGN0cmxmLW1vZGUtZW5hYmxl LWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2 NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQt dXAtYXV0b3NhdmUtYSBhcHBseV0gMyBbaWYgcHJvZ24gbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1l bGVtZW50LWtleXdvcmQtcGFyc2VyIG9yZy1tYWNyby0tZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1t YWNyby0tY29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIGxldCBw cm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMF0gMiBbcHJv Z24gaWYgb3IgYW5kIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2 ZS1wIGlmIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9u IGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBsZXQgd2hpbGVdIDEgW2VxdWFsIGFuZCBvciBh bmQgaWYgbGV0KiBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlYWQgcHJvZ24gbGV0KiBv cmctcGVyc2lzdC1sb2FkIHByb2duIGlmIGxldF0gMSBbY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIHNldHEgcHJv Z24gaWYgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbl0gMiBb b3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggbGV0KiBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0 LXJlYWQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1sb2FkIHByb2duIGlmIGxldCBwcm9nbiBvcmct bW9kZSBmdW5jYWxsIHByb2duXSAxIFtub3QgYW5kIHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZh cmlhYmxlcy1wIG5vdCBhbmQgaWYgbGV0IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTEx Zjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJp YWJsZXMgcnVuLW1vZGUtaG9va3NdIDQgW3doaXRlc3BhY2UtZGlzcGxheS1jaGFyLW9uIHdoaXRl c3BhY2UtdHVybi1vbiB3aGl0ZXNwYWNlLW1vZGUgaWYgZG9vbS1oaWdobGlnaHQtbm9uLWRlZmF1 bHQtaW5kZW50YXRpb24taCBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2Fs bCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0XSAxIFtzZXRxICIjPGxh bWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmln LS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRx IGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmct LW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hXSAxIFttYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyICIjPGxhbWJk YSAweDExY2Q0NTIxZj4iIG1hcGNhciAiIzxsYW1iZGEgMHgxZTEyYjhmYmZmYThkYT4iIGZ1bmNh bGwgY29uZCBsZXQqIGNvbmRdIDIgW29yIGFuZCBpZiBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxl dCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNh dGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZl0gMiBbbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRl ZCBzZXRxIHByb2duIHByb2duIGxldCpdIDEgW2xldCBpZiBsZXQgZmlsZS10cnVlbmFtZSBhYmJy ZXZpYXRlLWZpbGUtbmFtZSBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+ IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2Vs ZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdF0gMiBbY29uZCBsZXQqIGFuZCBsZXQqIGFuZCBs ZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNz LXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVl LWVudGVyIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1 dF0gMiBbYmFja3RyYWNlLWZyYW1lIGNhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgb3JnLW1vZGVybi1t b2RlIG9yZy1tb2Rlcm4tLW9uIGdsb2JhbC1vcmctbW9kZXJuLW1vZGUtZW5hYmxlLWluLWJ1ZmZl cnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYg c2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldF0gMSBbY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBjbC1tYXBjYW4gbGV0IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5k LW9wdGlvbnMgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVm ZmVyIGNhdGNoIGxldF0gMSBbc3RyaW5nLW1hdGNoIG5vdCBhbmQgd2hpbGUgbGV0IGluaGliaXQt bG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1dG8tbW9kZS0xIGxldCBzYXZlLWV4 Y3Vyc2lvbiBjYXRjaCBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgYXBwZW5kIGxldF0g MiBbaWYgaWYgZG9vbS1oaWdobGlnaHQtbm9uLWRlZmF1bHQtaW5kZW50YXRpb24taCBydW4taG9v a3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1t b2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSAxIFtlZGl0 b3Jjb25maWctLWFkdmljZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1j b250ZW50cyBsZXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3Qgc2F2ZS1jdXJyZW50LWJ1ZmZlciBs ZXQgYWdlLXJlYWQtb3V0cHV0IGlmIHByb2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZp bGUgc2V0cSBjb25kaXRpb24tY2FzZV0gNSBba2lsbC1idWZmZXIgaWYgYWdlLXJlc2V0IHVud2lu ZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxl dCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gOSBbYW5kIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGlmIHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQg ZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVh NDgxMzJhPiJdIDcgW3doaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQg bGV0IHNldC1hdXRvLW1vZGUtMSBzZXRxIGFuZCBzYXZlLWV4Y3Vyc2lvbiBsZXQgIiM8bGFtYmRh IDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQx OD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHldIDEgW29yZy1lbGVtZW50LS1nZXQtY2Fj aGVkLXN0cmluZyBwcm9nbiBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQta2V5d29yZC1w YXJzZXIgY29uZCBjb25kIGxldCBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVt ZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZl0gMSBbc3RyaW5nPSBhbmQgaWYgZWRpdG9y Y29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29u dGVudHMgbGV0IGluc2VydC1maWxlLWNvbnRlbnRzLWxpdGVyYWxseSBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHBy b2duXSAyIFthbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBh YmJyZXZpYXRlLWZpbGUtbmFtZSBzZXRxIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgcHJvamVjdC10 cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1 bWItLXByb2plY3QtY3J1bWJzLTFdIDIgW2lmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRp ci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlh YmxlcyBjZHIgbGV0Kl0gMyBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0 aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNs b3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAiIzxs YW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+IiBm dW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCpdIDEgWyIjPGxhbWJkYSAweDMzMjkyOGExYTI3ZDE+ IiAiIzxjb21waWxlZCAweDkxYWZlYzVmNWEyNTM1Nj4iIG1hcGNhciAiIzxjb21waWxlZCAweDE4 NTc2NmIwN2MyMzk1ZjQ+IiBhcHBseSBzZXEtbWFwIHNlcS1maWx0ZXIgbGV0IHByb2duIGlmIHNh dmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBs ZXRdIDIgW2lmIGVkaXRvcmNvbmZpZy1zZXQtaW5kZW50YXRpb24gZWRpdG9yY29uZmlnLXNldC1s b2NhbC12YXJpYWJsZXMgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBjb25kaXRpb24tY2Fz ZSBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQt ZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4i IGZ1bmNhbGxdIDEgW2Rpc3BsYXktd2FybmluZyBlZGl0b3Jjb25maWctLWFkdmljZS1pbnNlcnQt ZmlsZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1jb250ZW50cyBsZXQgaWYgcHJvZ24gdW53 aW5kLXByb3RlY3Qgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgYWdlLXJlYWQtb3V0cHV0IGlmIHBy b2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cV0gNTMgW3NldHEgZXF1YWwg Y29uZCB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGly ICIjPHN1YnIgZW52cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBl bnZyYy1nbG9iYWwtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1v ZGUgaWZdIDUgW2xldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgb3JnLXJvYW0tLWZpbGUtbmFt ZS1leHRlbnNpb24gbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9yZy1yb2Ft LWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1kZWxl dGUtb3V0cHV0LWZpbGVdIDYgW3BsaXN0LXB1dCBzZXRxIGxldCogY29ucyBzZXRxIGlmIHByb2du IGlmIHdoaWxlIGxldCogcHJvZ24gaWYgaWYgcHJvZ24gaWYgbGV0Kl0gNiBbbm90IHdoaWxlIGxl dCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHBy b2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwt dmFyaWFibGVzIGNvbmRpdGlvbi1jYXNlIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTEx Zjc3PiJdIDEgW2lmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmls ZS1uYW1lIHNldHEgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0 IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1m aWxlLW5vc2VsZWN0IHNldHFdIDExIFttYXBjIHlhcy0tbW9kZXMtdG8tYWN0aXZhdGUgeWFzLS1s b2FkLXBlbmRpbmctaml0cyB5YXMtbWlub3ItbW9kZSB5YXMtbWlub3ItbW9kZS1vbiB5YXMtZ2xv YmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIj PGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYV0gMSBbYW5kIGxldCogb3JnLWVsZW1lbnQtY29u dGVudHMtZW5kIHNldHEgcHJvZ24gcHJvZ24gaWYgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQq IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMSBb YXV0by1zYXZlLWZpbGUtbmFtZS1wIG5vdCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMtLWRl bGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWYgYWdlLWRlbGV0ZS1vdXRwdXQtZmlsZSBp ZiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJv Z24gdW53aW5kLXByb3RlY3RdIDMgW2RpcmVjdG9yeS1hYmJyZXYtYXBwbHkgc2V0cSBsZXQgaWYg bGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBs b2NhdGUtZG9taW5hdGluZy1maWxlIGVudnJjLS1maW5kLWVudi1kaXIgIiM8c3ViciBlbnZyYy0t dXBkYXRlPiIgYXBwbHkgZW52cmMtLXVwZGF0ZSBlbnZyYy1tb2RlXSAxIFt3aGlsZSBsZXQgd2hp bGUgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1dG8tbW9k ZS0xIHNvLWxvbmctLWNoZWNrLWhlYWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFw cGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlXSAxIFtjb25k IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0KiBpZiBpZiAiIzxsYW1iZGEg LTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2 aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cSBpZl0g MSBbcmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nIHN0cmluZy1wcmVmaXgtcCBpZiBvcmctcm9hbS1k ZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9yZy1y b2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1k ZWxldGUtb3V0cHV0LWZpbGUgaWZdIDI0IFtnbG9iYWwtY29tcGFueS1tb2RlLWNtaGgga2lsbC1h bGwtbG9jYWwtdmFyaWFibGVzIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0 OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0 b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNv bXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIgYXBwbHkgYWZ0ZXItZmluZC1maWxlXSAxIFtzZXQt YXV0by1tb2RlLTEgc28tbG9uZy0tY2hlY2staGVhZGVyLW1vZGVzIHNvLWxvbmctLXNldC1hdXRv LW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1vZGUg aWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90 ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5XSAxIFthbmQgd2hpbGUgbGV0 IGlmIG9yZy1lbGVtZW50LS1jb2xsZWN0LWFmZmlsaWF0ZWQta2V5d29yZHMgbGV0IGNvbmQgc2V0 cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlm IGlmIHdoaWxlIGxldF0gMiBbcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBw cm9nbiBpZiBvcmctZWxlbWVudC0tY2FjaGUtcGVyc2lzdC1hZnRlci1yZWFkIHJ1bi1ob29rLXdp dGgtYXJncyB3aGlsZSBsZXQqIHByb2duIGlmIGlmIHByb2duIGlmXSAxIFthbmQgbGV0KiBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9t aW5hdGluZy1maWxlIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHBy b2plY3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJv amVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1n bG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzXSAx IFtraWxsLWFsbC1sb2NhbC12YXJpYWJsZXMgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFj MzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1 dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBw bHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseSBhZnRlci1maW5kLWZpbGUg aWZdIDEwIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9u IGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3Qt LWdldC1jb2xsZWN0aW9uIGxldF0gMSBbYW5kIG9yIHNldHEgbGV0IGxldCB3aGlsZSBsZXQgY2F0 Y2ggYW5kIGxldCogd2l0aC1uby13YXJuaW5ncyBvcmctcGVyc2lzdC0tZmluZC1pbmRleCBvciBv cmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duXSAyIFstZWFjaCBzcC0tdXBkYXRl LWxvY2FsLXBhaXJzIHNwLS1pbml0IHNtYXJ0cGFyZW5zLW1vZGUgdHVybi1vbi1zbWFydHBhcmVu cy1tb2RlIHNtYXJ0cGFyZW5zLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29r cyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1v ZGUtMCBwcm9nbiBpZl0gMSBbYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmct ZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVt ZW50LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIg YXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0t Y2FjaGUtcHV0IG9yXSAxIFtsZXQgZmlsZS1yZW1vdGUtcCBsZXQgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBh bmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZp bGVdIDcgW2xldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZXMtLXRyYW5zZm9ybS1maWxl LW5hbWUgaWYgbGV0IGlmICIjPGxhbWJkYSAweDI0YjY3NjgwNTZmODZiYT4iIGZ1bmNhbGwgbGV0 IGRvb20tbWFrZS1oYXNoZWQtYXV0by1zYXZlLWZpbGUtbmFtZS1hIGFwcGx5IG1ha2UtYXV0by1z YXZlLWZpbGUtbmFtZSBhdXRvLXNhdmUtbW9kZSBwcm9nbl0gNSBbcHJvamVjdC0tdmFsdWUtaW4t ZGlyIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3QtY3Vy cmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVt YnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9k ZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1t b2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQt cHJvdGVjdF0gMTYgW2VxdWFsIGFuZCBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXBy b3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgIiM8bGFtYmRhIC0weGQ2ZTliYjI1 YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0XSAyIFtvdXRsaW5lLW1vZGUgbGV0IHByb2duIG9yZy1t b2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBz ZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxIGlmXSA3IFtwcm9nbiBpZiBsZXQgbGV0IHdo aWxlIGxldCBjYXRjaCBhbmQgbGV0KiB3aXRoLW5vLXdhcm5pbmdzIG9yZy1wZXJzaXN0LS1maW5k LWluZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0Kl0gMSBb c2V0cSBpZiBpZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUt ZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12 aXNpdGluZyBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsXSAyIFtp ZiBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRx IGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldF0g MSBbY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1u b3JtYWxpemUtY29udGFpbmVyICIjPGxhbWJkYSAweDExY2Q0NTIxZj4iIG1hcGNhciAiIzxsYW1i ZGEgMHgxZTEyYjhmYmZmYThkYT4iIGZ1bmNhbGwgY29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVy c2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lcl0gMyBbIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTcz MmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV80PiIgbWFwYyB5YXMtLW1vZGVzLXRvLWFj dGl2YXRlIHlhcy1taW5vci1tb2RlIHlhcy1taW5vci1tb2RlLW9uIHlhcy1nbG9iYWwtbW9kZS1l bmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0w eDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0t c2h1dC11cC1hdXRvc2F2ZS1hXSAyIFtzZXEtZmluZCBpZiBwcm9nbiBpZiBsZXQqIHByb2duIHBy b2duIGxldCogb3JnLXBlcnNpc3QtcmVhZCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LWxvYWQgcHJv Z24gaWYgbGV0IHByb2duXSAxIFtsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g b3JnLWVsZW1lbnQtb3JnLWRhdGEtcGFyc2VyIHNldHEgY29uZCBsZXQqIHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0t cGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXRdIDIgW3doaWxlIGxldCB3aGlsZSBs ZXQgaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBub3QgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhj MDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25n LS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5v cm1hbC1tb2RlXSAxIFtpZiBvcmctZWxlbWVudC0tY29sbGVjdC1hZmZpbGlhdGVkLWtleXdvcmRz IGxldCBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVs ZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uXSAxMCBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGxd IDE2IFtpZiBsZXQgd2hpbGUgbGV0IGxldCogbGV0IHdoaWxlIGxldCBsZXQgaWYgbGV0IHByb2du IGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBsZXQgcHJvZ25dIDIgW2F1dG8tbWlub3It bW9kZS0tcnVuLWF1dG8gYXV0by1taW5vci1tb2RlLXNldCBhcHBseSAiIzxjb21waWxlZCAweDFi OTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1v ZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVk OGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSAxIFticmVhZGNydW1i LS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWIt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFt YmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCog ZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1 Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+Il0gMyBbd2hpbGUgbGV0 IHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgaWYgbGV0IGlmIGxl dCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJp YWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgamlueC1tb2RlXSAxIFthcHBseSBvcmct Z2V0LWFnZW5kYS1maWxlLWJ1ZmZlciBpZiBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIg Y2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWYgaWYg bGV0IG9yZy1hZ2VuZGEtcHJlcGFyZSBjYXRjaF0gMSBbbm90IGFuZCBsZXQgc2V0LWF1dG8tbW9k ZS0xIHNvLWxvbmctLWNoZWNrLWhlYWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFw cGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxh bWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMSBb c2V0LWZhY2UtZm9yZWdyb3VuZCBwcm9nbiBpZiBsZXQgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNh bGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZl0gMSBbZmlsZS1l eGlzdHMtcCBpZiBhZ2Utc2NyeXB0LXAgYXNldCBsZXQqIHByb2duIGxldCogYWdlLWZpbGUtaW5z ZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBh Z2UtZmlsZS1oYW5kbGVyICIjPHN1YnIgaW5zZXJ0LWZpbGUtY29udGVudHM+Il0gMyBbc3RyaW5n PSBhbmQgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkg aW5zZXJ0LWZpbGUtY29udGVudHMgbGV0IGlmIHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3Vy cmVudC1idWZmZXIgbGV0IGFnZS1yZWFkLW91dHB1dCBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdF0g MTUgW2FuZCB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBhZ2UtcmVhZC1v dXRwdXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRp dGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUt Y29udGVudHMgYXBwbHldIDczIFtvciBpZiBsZXQgZG9vbS1tYWtlLWhhc2hlZC1hdXRvLXNhdmUt ZmlsZS1uYW1lLWEgYXBwbHkgbWFrZS1hdXRvLXNhdmUtZmlsZS1uYW1lIG9yIGZpbGUtbmV3ZXIt dGhhbi1maWxlLXAgYW5kIGlmIGNvbmQgbGV0KiBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkx YTZlPiIgYXBwbHkgcHJvZ25dIDQgW2FwcGx5IGRlZmluZS1rZXkgZ2xvYmFsLXNldC1rZXkgdW5k by10cmVlLW92ZXJyaWRkZW4tdW5kby1iaW5kaW5ncy1wIHR1cm4tb24tdW5kby10cmVlLW1vZGUg Z2xvYmFsLXVuZG8tdHJlZS1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3Jt YWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWFdIDEgW2lmIGxldCogaWYg bGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3Jn LWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZs LXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZm ZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dF0gMiBbbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1j b250ZW50cy1lbmQgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFy c2UtdG8gY29uZGl0aW9uLWNhc2VdIDIgW3Byb2duIGZpbGUtZXhpc3RzLXAgYW5kIGlmIGFnZS1k ZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRx IGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0 LWZpbGUtY29udGVudHMgYXBwbHkgaWZdIDIgW2FiYnJldmlhdGUtZmlsZS1uYW1lIGlmIHNldHEg c2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBp ZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRv cmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdF0gMiBbc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1vcmctZGF0YS1wYXJzZXIgc2V0cSBjb25kIGxldCog c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNo IG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJl c3RyaWN0aW9uXSAxIFtmdW5jYWxsIGNvbmQgbGV0KiBpZiBsZXQqIGxldCB3aGlsZSBsZXQgbGV0 IGNvbmQgb3JnLS10YWctYWRkLXRvLWFsaXN0IHNldHEgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoXSAxIFtjb25kIGxldCBjb25kIHNldHEg bGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBp ZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3Vy cmVudC1idWZmZXJdIDEwIFthbmQgaWYgZXhwYW5kLWZpbGUtbmFtZSBsZXQgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0IGZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIGlmIGxldCBpZiAiIzxsYW1i ZGEgMHgyNGI2NzY4MDU2Zjg2YmE+IiBmdW5jYWxsIGxldCBkb29tLW1ha2UtaGFzaGVkLWF1dG8t c2F2ZS1maWxlLW5hbWUtYSBhcHBseV0gMyBbb3Igbm90IHdoaWxlIGxldCBsb2NhdGUtZG9taW5h dGluZy1maWxlIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2pl Y3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVj dC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9i YWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1t b2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGxdIDQgW29yIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZp bGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgaWYgc2V0cSBzYXZlLWN1cnJlbnQtYnVm ZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmXSAxMSBbYW5kIGxldCogYW5k IGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxl c3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRy ZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUt cHV0IG9yIHNldHFdIDIgW2Z1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3Nv Y2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9n biBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2duXSAzIFtp ZiBsZXQgaWYgbGV0ICIjPGxhbWJkYSAweDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNr LWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29r cyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbl0gMSBb aWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0 aW5nIG9yZy1maW5kLWJhc2UtYnVmZmVyLXZpc2l0aW5nIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2 ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2Vu ZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyIGlmXSA2IFtsZXQg bWFrZS1sb2NrLWZpbGUtbmFtZSAiIzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHkg aWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0 LWZpbGUtY29udGVudHMgbGV0IGNvbmRpdGlvbi1jYXNlIGlmIHNhdmUtY3VycmVudC1idWZmZXIg bGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxldCpdIDEgW2xldCBjb25kIGxldCogYW5kIGxl dCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1l bGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10 cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVy XSAxIFtjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYg Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3Qt LW5vcm1hbGl6ZS1jb250YWluZXIgbGV0KiBjb25zIHNldHEgaWYgcHJvZ24gaWYgd2hpbGUgbGV0 KiBwcm9nbl0gMyBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9u IGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3Qt LWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyXSAxIFtw cm9nbiBpZiBsZXQgcHJvZ24gaWYgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIGxldCBwcm9n biBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZl0g MiBbZ29nZ2xlcy1tb2RlIHJ1bi1ob29rcyBhcHBseSBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBm dW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1 dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cV0gMSBbYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMt MSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9k ZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZm ZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlm IHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDggW25vdCBhbmQgaWYgbGV0IGlmIGxl dCBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVh ZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRj cnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNy dW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnNdIDEgW3NlcS1maWx0ZXIgbGV0IHByb2duIGlmIHNh dmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1jYWNoZS1yZXNldCBs ZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZl0gMTAgW2NvbnMgbGV0IGxldCBl ZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5v c2VsZWN0IHNldHEgaWYgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2Fs bCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkg b3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWZdIDIgW3NldHEgZXF1YWwgY29uZCB3aGlsZSBs ZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBw cm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHIgbGV0KiBjb25kaXRpb24t Y2FzZSBpZl0gMyBbbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1jb250ZW50cy1lbmQgc2V0cSBw cm9nbiBwcm9nbiBpZiBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbl0gMSBbc2V0cSB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZp c2l0aW5nIG9yZy1maW5kLWJhc2UtYnVmZmVyLXZpc2l0aW5nIGxldCAiIzxsYW1iZGEgLTB4MTY4 ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1h Z2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyIGlmIHNldC1i dWZmZXJdIDEgW2FwcGx5IG1ha2UtcHJvY2Vzcy0td2l0aC1lZGl0b3ItcHJvY2Vzcy1maWx0ZXIg YXBwbHkgbWFrZS1wcm9jZXNzIHNldHEgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGxldCBsZXQq IGFnZS0tc3RhcnQgbGV0IGFnZS1zdGFydC1kZWNyeXB0IHByb2duIHVud2luZC1wcm90ZWN0IGFn ZS1kZWNyeXB0LWZpbGVdIDQ3IFtsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYg b3JnLXJvYW0tZGItYXV0b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWYg YWdlLWRlbGV0ZS1vdXRwdXQtZmlsZSBpZiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxl IHNldHEgY29uZGl0aW9uLWNhc2VdIDYgW2FuZCBpZiBjb25kIGxldCogaWYgIiM8bGFtYmRhIC0w eDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0t c2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIg YXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseV0gMTkgW3JlZ2V4cC1v cHQgY29uY2F0IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBs ZXQqIG9yZy1jb2xsZWN0LWtleXdvcmRzIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5k LW9wdGlvbnMgbGV0XSA0IFtvcmctZWxlbWVudC1jcmVhdGUgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LW9yZy1kYXRhLXBhcnNlciBzZXRxIGNvbmQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0 Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHFdIDYgW3NldHEg bGV0IGxldCB3aGlsZSBsZXQgbGV0KiBsZXQgd2hpbGUgbGV0IGxldCBpZiBsZXQgcHJvZ24gaWYg b3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25zIGxldF0gMSBbY2wtcmVtb3ZlLWlmLW5vdCBlZGl0 b3Jjb25maWctY29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtLWdldC1oYW5kbGVz IGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jjb25maWctY29yZS0tZ2V0LWhh bmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtZ2V0LXByb3BlcnRpZXMtaGFzaCBmdW5jYWxsIHNldHEg Y29uZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy1jYWxsLWdldC1wcm9wZXJ0aWVzLWZ1bmN0 aW9uIHNldHEgcHJvZ24gaWYgY29uZGl0aW9uLWNhc2UgbGV0XSAxIFtjcmVhdGUtZmlsZS1idWZm ZXIgc2V0cSBpZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBs eSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFw cGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmXSAxIFtsZXQgZmlsZS1uYW1lLXNhbnMtdmVy c2lvbnMgaWYgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1 dG8tbW9kZS0xIHNldHEgYW5kIHNhdmUtZXhjdXJzaW9uIGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4 YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiJdIDcgW29y IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRp b24tY2FzZSBpZiBzZXRxIGxldF0gMiBbYW5kIGlmIGVkaXRvcmNvbmZpZy1zZXQtbGluZS1sZW5n dGggZWRpdG9yY29uZmlnLXNldC1sb2NhbC12YXJpYWJsZXMgcHJvZ24gaWYgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBjb25kaXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxl LW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEg LTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iXSAxIFtsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmls ZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYgb3IgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10 cnVlbmFtZSBlcXVhbCBhbmRdIDMgW2xldCBmaWxlLXJlbW90ZS1wIG5vdCBvciBhbmQgaWYgaGFj ay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMg aGFjay1kaXItbG9jYWwtdmFyaWFibGVzLW5vbi1maWxlLWJ1ZmZlciBwcm9qZWN0LS12YWx1ZS1p bi1kaXIgcHJvamVjdC10cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1j dXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNy dW1ic10gMyBbbWFwY2FyICIjPGNvbXBpbGVkIDB4MTg1NzY2YjA3YzIzOTVmND4iIGFwcGx5IHNl cS1tYXAgc2VxLWZpbHRlciBsZXQgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgd2hp bGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IHByb2duIGlmIG9yXSAzIFthbmQgd2hpbGUg bGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IG9y Zy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3JnLWNvbGxlY3Qta2V5d29yZHMgbGV0IHByb2du IGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uXSAxIFtsZXQgbGV0KiBhZ2UtLXN0YXJ0IGxldCBhZ2Utc3RhcnQtZGVjcnlwdCBwcm9n biB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBs eSBpZl0gOCBbbm90IG9yIGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1yZWxh dGl2ZS1uYW1lIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wIGFuZCBpZiBvcmctcm9hbS1k Yi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseV0gMyBbbGV0IGZpbGUtcmVtb3RlLXAgbGV0 IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgbGV0KiBjb25kaXRpb24tY2FzZSBp ZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4 MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8t bW9kZV0gMiBbb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hl LWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1l bnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQg b3Igc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0Kl0gNiBbc2V0cSBsZXQgaWYgbGV0KiBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9taW5h dGluZy1maWxlIGVudnJjLS1maW5kLWVudi1kaXIgIiM8c3ViciBlbnZyYy0tdXBkYXRlPiIgYXBw bHkgZW52cmMtLXVwZGF0ZSBlbnZyYy1tb2RlIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1i dWZmZXJzXSAxIFtpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZp bGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgYW5kIGxldCogaWYgaWYgIiM8bGFtYmRh IC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0XSA0IFtmaWxlLW5hbWUtYXMtZGly ZWN0b3J5IHNldHEgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBs ZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMt LWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWZdIDE0IFtnbG9iYWwtaGwtbGluZS1t b2RlLWNtaGggdGV4dC1tb2RlIG91dGxpbmUtbW9kZSBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2Fs bCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1v ZGUtLWFwcGx5LWFsaXN0XSAxIFtvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50 LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1k by1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1l bGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGlsZSBsZXRdIDcgW2NvbXBhbnktbW9k ZS1vbiBnbG9iYWwtY29tcGFueS1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBu b3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29t cGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4 OWM5OD4iXSAyIFtwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVy IGxldCB3aGlsZSBsZXQgb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgbGV0IHByb2duIG9yZy1tb2Rl IGZ1bmNhbGwgcHJvZ25dIDEgW2xldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBs ZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBs ZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmls ZS1ub3NlbGVjdF0gMjEgW2lmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlh dGUtZmlsZS1uYW1lIHNldHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYt ZGlyICIjPHN1YnIgZW52cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9k ZSBlbnZyYy1nbG9iYWwtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWZdIDE1IFts ZXQgbGV0KiBwcm9nbiBpZiBkaXItbG9jYWxzLS1hbGwtZmlsZXMgZnVuY2FsbCBpZiBzZXRxIHdo aWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUg bGV0IHByb2duIGlmXSAyIFt2Y29uY2F0IHNldC1kaXNwbGF5LXRhYmxlLXNsb3QgcHJvZ24gaWYg bGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHBy b2duIGlmIGxldCBpZl0gMiBbY29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFs aXplLWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4 MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCogb3JnLXBlcnNpc3Qt LW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbl0gMSBbaW5oaWJpdC1sb2NhbC12YXJpYWJs ZXMtcCBub3QgYW5kIGlmIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4i IHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVz IHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWZdIDYgW21hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUg ZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmct cGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0 ZXIgcHJvZ24gaWYgcHJvZ24gaWZdIDEgW2NvbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUt a2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21w YXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZl0gNCBbb2Nsb3N1 cmUtLWNvcHkgYWR2aWNlLS1jb3B5IGFkdmljZS0tbWFrZSBhZHZpY2UtLWFkZC1mdW5jdGlvbiBh ZHZpY2UtYWRkICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255 bW91c19sYW1iZGFfMzc+IiBldmFsLWFmdGVyLWxvYWQgY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1t b2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1i ZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ25dIDEgW3Vud2luZC1wcm90ZWN0IGxl dCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0 ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxl LW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmXSAxIFtjY29udi0tYW5h bHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252 LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXpl LWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUx MmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0Kl0gNCBbYW5kIG9yIHNldHEgbGV0IGxldCB3 aGlsZSBsZXQgY2F0Y2ggYW5kIGxldCogd2l0aC1uby13YXJuaW5ncyBvcmctcGVyc2lzdC0tZmlu ZC1pbmRleCBsZXQqIHByb2duIHByb2duIGxldCpdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBjbC1tYXBjYW4gbGV0IGxldCBw cm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoXSAyIFticmVhZGNydW1iLWxvY2Fs LW1vZGUgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwt bW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1h bC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxl ZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5XSAyIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zXSA0IFtsZXQqIGFnZS0tc3RhcnQgbGV0IGFnZS1zdGFydC1kZWNy eXB0IHByb2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24t Y2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRl bnRzIGFwcGx5IGlmIGxldF0gMyBbaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFs IGFuZCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1m aWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hXSAyIFtjZHIg Y2FyIGlmIGxldCBjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBv cmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1l bGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50 ZXJdIDQgWyIjPHN1YnIgaW5zZXJ0LWZpbGUtY29udGVudHM+IiBhcHBseSBpZiBlZGl0b3Jjb25m aWctLWFkdmljZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1jb250ZW50 cyBsZXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3Qgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgYWdl LXJlYWQtb3V0cHV0IGlmIHByb2duIHVud2luZC1wcm90ZWN0XSAzMiBbbGV0IG9yIGlmIHNldHEg d2hpbGUgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgbGV0KiBjb25kaXRp b24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNv bXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3Jn LXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lz dGVyXSAyIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl XSAxIFtkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2 OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4iIGFwcGx5IGFm dGVyLWZpbmQtZmlsZSBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxl Y3QtMSBpZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+Il0gMSBbYXBw bHkgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5z ZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgbGV0IGFnZS1maWxlLXJ1bi1yZWFsLWhhbmRsZXIgaWYg bGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyICIjPHN1YnIgaW5z ZXJ0LWZpbGUtY29udGVudHM+IiBhcHBseV0gOSBbc2V0cSBsZXQgaWYgbGV0IHdoaWxlIGxldCBm aWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBw cm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kXSA3IFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCog b3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGlzdCBvcmctcGVyc2lzdC0tZmluZC1p bmRleCBvciBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3JnLXBl cnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWZdIDIgW3doaWxlIGxldCBvcmctcmVtb3ZlLWZvbnQtbG9j ay1kaXNwbGF5LXByb3BlcnRpZXMgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBvcmctdW5mb250 aWZ5LXJlZ2lvbiBvcmctbW9kZXJuLS11bmZvbnRpZnkgIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3 NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV8yNz4iIGludGVybmFsLS13aXRob3V0 LXJlc3RyaWN0aW9uIG9yZy1tb2Rlcm4tbW9kZSBvcmctbW9kZXJuLS1vbiBnbG9iYWwtb3JnLW1v ZGVybi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmct bW9kZV0gMiBbbGV0KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1zZWN0aW9uLXBhcnNlciBj b25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQg c2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u XSAzIFtmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAg bGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5j LS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZp bGVdIDIgWyIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAw eGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIg YXBwbHkgYWZ0ZXItZmluZC1maWxlIGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmls ZS1ub3NlbGVjdC0xXSAyIFticmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWIt cHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1v Zi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tz IGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAi Izxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iXSAzIFtjYXIgaWYgbGV0IGNvbmQgbGV0KiBh bmQgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1j YWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1l bnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXJdIDEgWyIjPHN1YnIgaW5zZXJ0 LWZpbGUtY29udGVudHM+IiBhcHBseSBpZiBlZGl0b3Jjb25maWctLWFkdmljZS1pbnNlcnQtZmls ZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1jb250ZW50cyBpZiBwcm9nbiB1bndpbmQtcHJv dGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQgb3JnLXBlcnNpc3QtLXJlYWQtZWxpc3At ZmlsZSBvciBzZXRxIGlmXSAxIFttZW1xIGNvbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUt a2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21w YXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZl0gMiBbZXF1YWwgaWYg aWYgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFt ZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgYW5kIGxldCogaWYgaWZdIDIgW3JlZ2V4cC1vcHQt Z3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAg cmVnZXhwLW9wdCBjb25jYXQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAgc2V0cSBjb25kIGxldCBs ZXQgaWYgbGV0KiBsZXQgcHJvZ24gaWZdIDEgW2xldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBsZXQqIG9y Zy1jb2xsZWN0LWtleXdvcmRzIG9yZy1tYWNyby0tY29sbGVjdC1tYWNyb3Mgb3JnLW1hY3JvLWlu aXRpYWxpemUtdGVtcGxhdGVzIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmXSAx IFthcHBseSBtYWtlLXByb2Nlc3Mgc2V0cSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgbGV0IGxl dCogYWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3RlY3Qg YWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlXSAxIFtsZXQgaWYgbGV0IGZpbGUt dHJ1ZW5hbWUgZXF1YWwgYW5kIGlmIG9yZy1yb2FtLWRlc2NlbmRhbnQtb2YtcCBsZXQqIHByb2du IGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMtLWRlbGV0ZS1m aWxlLWEgYXBwbHldIDMgW3N0cmluZy1wcmVmaXgtcCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9m LXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9z eW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0 LWZpbGUgaWYgdW53aW5kLXByb3RlY3RdIDYgW2xldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0 IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9j YWwtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcy1ub24tZmlsZS1idWZmZXIgcHJv amVjdC0tdmFsdWUtaW4tZGlyIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0 b3J5IHByb2plY3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1 bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFs Zi1vZi1nbG9iYWwtbW9kZV0gMSBbZGVscSBsZXQgaWYgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2 aWF0ZS1maWxlLW5hbWUgaWYgc2V0cSBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUt bm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+Il0g MiBbaW50ZXJuLXNvZnQgZG9vbS1ydW4taG9va3MgaWYgZG9vbS1ydW4tbG9jYWwtdmFyLWhvb2tz LWggcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFh NmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3Nh dmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iXSAyIFttYXBjYXIgIiM8 bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCogb3Jn LXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbiBpZiBwcm9nbiBsZXQqIG9y Zy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmXSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJl dGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0 ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGlmIHByb2duXSAx IFtzZXRxIHByb2duIGlmIGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1 bmNhbGwgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFw cGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyIGlmIHNldC1idWZmZXIgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBjYXRjaCBsZXRdIDIgW3doaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxl dCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQt dmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZh cmlhYmxlcy1ub24tZmlsZS1idWZmZXIgcHJvamVjdC0tdmFsdWUtaW4tZGlyIHByb2plY3QtdHJ5 LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3QtY3VycmVudF0gMSBbY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt LWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2Ut aW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUt YXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXRdIDMgW29yZy1l bGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1l bnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBh dmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1j YWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGlsZSBsZXRdIDEgW3Byb2duIGlmIGxldCBpZiBwcm9n biBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgY29uZCBsZXQq IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRj aCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2VdIDEgW2lmIGxldCB3aGlsZSBs ZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYg bGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lXSAxIFthZnRl ci1maW5kLWZpbGUgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0 LTEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0 cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseV0g MSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw YW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmct cGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxl Y3Rpb24gbGV0IHByb2duIGlmIHByb2duXSAyIFtkb29tLXJ1bi1ob29rcyBpZiBkb29tLXJ1bi1s b2NhbC12YXItaG9va3MtaCBydW4taG9va3MgaGFjay1sb2NhbC12YXJpYWJsZXMtYXBwbHkgcHJv Z24gaWYgbGV0IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0t aGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUt aG9va3Mgb3JnLW1vZGVdIDEgW3NhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1l eGN1cnNpb24gbGV0IG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3JnLWNvbGxlY3Qta2V5 d29yZHMgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggbGV0XSAzIFth cHBseSBlbnZyYy0tdXBkYXRlIGVudnJjLW1vZGUgZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWlu LWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVk OGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAt YXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iXSAyIFtpbmhp Yml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2 Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1h dXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1v ZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duXSAzIFtsZXQq IG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAg b3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1k by1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1l bGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZl0gNCBbbGlzdCBzZXEtZmluZCBsZXQgbGV0 KiBhZ2UtLXN0YXJ0IGxldCBhZ2Utc3RhcnQtZGVjcnlwdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBh Z2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50c10gNCBbbGV0IGNvbmQgbGV0KiBhbmQg bGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIHdoaWxlIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1 ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uXSAzIFtpZiBsZXQgIiM8bGFtYmRhIDB4ZGQ3YmExZDBjN2ZlMzRjPiIgYXBw bHkgYWJvcnQtaWYtZmlsZS10b28tbGFyZ2UgZXEgaWYgcHJvZ24gaWYgbGV0KiBpZiBpZiAiIzxs YW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXRdIDEgW2FnZS1jb250ZXh0 LXJlc3VsdC1mb3IgbGV0IGFnZS0tY2hlY2stZXJyb3ItZm9yLWRlY3J5cHQgcHJvZ24gdW53aW5k LXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0 IHByb2duXSAyIFtub3Qgd2hpbGUgbGV0IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZW52cmMtLWZp bmQtZW52LWRpciAiIzxzdWJyIGVudnJjLS11cGRhdGU+IiBhcHBseSBlbnZyYy0tdXBkYXRlIGVu dnJjLW1vZGUgZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlm IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseV0gMSBb bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0 KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWRdIDUgW3VuZG8tdHJlZS1vdmVycmlk ZGVuLXVuZG8tYmluZGluZ3MtcCB0dXJuLW9uLXVuZG8tdHJlZS1tb2RlIGdsb2JhbC11bmRvLXRy ZWUtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1v ZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNl dC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSAxIFtvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBh dmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBh dmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1j YWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0Kl0gMiBbbGV0IGlmIGxldCogcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgbG9jYXRlLWRv bWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9nbiBpZiBoYWNr LWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHJdIDMgW2Njb252LW1ha2UtaW50ZXJwcmV0ZWQt Y2xvc3VyZSBmdW5jdGlvbiBjbC1tYXBjYW4gIiM8bGFtYmRhIDB4MTk5NDhkMjcwN2E5ZD4iIGNs LW1hcGNhbiBtYXBjYXIgc2V0IGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlv bnMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ25dIDEgW2xldCogb3JnLWNvbGxlY3Qt a2V5d29yZHMgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggbGV0IHdo aWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWZdIDEgW2FuZCBsZXQqIG9y IGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZl OWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZp bmQtZmlsZS1ub3NlbGVjdCBhcHBseV0gMyBbaWYgYWdlLXNjcnlwdC1wIGFzZXQgbGV0KiBwcm9n biBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldCBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQgYWdlLWZpbGUtaGFuZGxlciAiIzxzdWJyIGluc2VydC1maWxlLWNv bnRlbnRzPiIgYXBwbHldIDUgW2FuZCBpZiBzZXRxIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQgZmlsZXMtLXRyYW5zZm9ybS1maWxlLW5hbWUgaWYgbGV0IGlmICIjPGxhbWJkYSAweDI0YjY3 NjgwNTZmODZiYT4iIGZ1bmNhbGwgbGV0IGRvb20tbWFrZS1oYXNoZWQtYXV0by1zYXZlLWZpbGUt bmFtZS1hIGFwcGx5XSAxIFtpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRv IGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1leGN1cnNpb25dIDUgW2lmIGxldCBkb29tLW1ha2UtaGFzaGVkLWF1dG8tc2F2ZS1m aWxlLW5hbWUtYSBhcHBseSBtYWtlLWF1dG8tc2F2ZS1maWxlLW5hbWUgb3IgZmlsZS1uZXdlci10 aGFuLWZpbGUtcCBhbmQgaWYgY29uZCBsZXQqIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFh NmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMSBbY2NvbnYtbWFrZS1pbnRlcnByZXRl ZC1jbG9zdXJlIGZ1bmN0aW9uIGFzc29jLWRlZmF1bHQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzZXRxIGlmIGlmIGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiIgYXBw bHkgIiM8Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9k ZSBhcHBseSBzZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1jYXNlXSAyIFtwcm9nbiBwcm9nbiBsZXQq IHdoaWxlIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmlu ZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1i dWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlXSA3IFtpZiBz ZXRxIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5k LWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFj ay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcy1ub24tZmlsZS1i dWZmZXIgcHJvamVjdC0tdmFsdWUtaW4tZGlyIHByb2plY3QtdHJ5LXZjXSAxIFthbmQgbGV0KiBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQtYnVm ZmVyLXZpc2l0aW5nIG9yZy1maW5kLWJhc2UtYnVmZmVyLXZpc2l0aW5nIGxldCAiIzxsYW1iZGEg LTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91 bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyXSAy IFtpZiBpZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZiBv cmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXBdIDIg W2xldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUt ZmlsZS1uYW1lIGlmIHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2Vs ZWN0LTEgaWZdIDIgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVy cHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRh aW5lciBsaXN0IG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29s bGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZl0gMiBb Y29tcGFueS1tb2RlIGNvbXBhbnktbW9kZS1vbiBnbG9iYWwtY29tcGFueS1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2du IGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBw bHktYWxpc3RdIDUgW2FuZCB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFu ZCBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxl dCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0XSAyIFtsZXQgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVhZGNydW1iLS1wcm9q ZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1v bi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5h YmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgx YzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbl0gMSBbY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRl cnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxpc3QgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91 bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyIGlm IHNldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBsZXQgd2hpbGUgbGV0IGxldF0g MSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJw cmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFp bmVyIHNldHEgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBp ZiBwcm9nbiBpZl0gMSBbY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRl ZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0 KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbl0gMiBbc3RyaW5n PSBhbmQgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkg aW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgbGV0IGFnZS1maWxlLXJ1bi1yZWFsLWhhbmRsZXIg aWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyICIjPHN1YnIg aW5zZXJ0LWZpbGUtY29udGVudHM+Il0gMSBbYWR2aWNlLS1jb3B5IGFkdmljZS0tbWFrZSBhZHZp Y2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRkICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJk NmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMzc+IiBldmFsLWFmdGVyLWxvYWQgY3RybGYt bG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3Jt YWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53 aW5kLXByb3RlY3RdIDIgW2FjY2VwdC1wcm9jZXNzLW91dHB1dCB3aGlsZSBhZ2Utd2FpdC1mb3It Y29tcGxldGlvbiBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29u ZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmls ZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ25dIDIgW2xldCBmaWxlLXRydWVuYW1lIGZpbGUt bmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1 ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYgb3JdIDMgW2lmIGlmIHdoaWxlIGxl dCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZl ciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMiBbb3JnLXBlcnNpc3QtLW5vcm1hbGl6 ZS1jb250YWluZXIgbGV0KiBjb25zIHNldHEgaWYgcHJvZ24gaWYgd2hpbGUgbGV0KiBwcm9nbiBp ZiBpZiBwcm9nbiBpZiBsZXQqIHByb2duXSAxIFtwcm9qZWN0LS12YWx1ZS1pbi1kaXIgcHJvamVj dC10cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFk Y3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNy dW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1 bWItbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1v ZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDcgW2xvb2tpbmctYXQtcCBh bmQgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVt ZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSA0IFtidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRp ZXMgcHJvZzEgY29ucyBzZXRxIGlmIHdoaWxlIGxldCogbGV0IHByb2duIHVud2luZC1wcm90ZWN0 IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHByb2duIGlmIGFnZS1zY3J5cHQtcCBhc2V0XSAyIFth ZnRlci1pbnNlcnQtZmlsZS1zZXQtY29kaW5nICIjPHN1YnIgaW5zZXJ0LWZpbGUtY29udGVudHM+ IiBhcHBseSBpZiBlZGl0b3Jjb25maWctLWFkdmljZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBs eSBpbnNlcnQtZmlsZS1jb250ZW50cyBsZXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3Qgc2F2ZS1j dXJyZW50LWJ1ZmZlciBsZXQgYWdlLXJlYWQtb3V0cHV0IGlmIHByb2duXSA0IFsiIzxjb21waWxl ZCAweDFhNWM4Mjg3YjkzZDA5NGQ+IiBhZGQtaG9vayBzbWFydHBhcmVucy1tb2RlIHR1cm4tb24t c21hcnRwYXJlbnMtbW9kZSBzbWFydHBhcmVucy1nbG9iYWwtbW9kZS1lbmFibGUtaW4tYnVmZmVy cyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2 ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2 ZS1hIGFwcGx5XSAyIFtmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IHNldHEgcHJvZ24gdW53aW5kLXBy b3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0x IGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2Rl LW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZl cnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFh NmU+IiBhcHBseV0gMiBbZ2V0aGFzaCBhbmQgb3Igc2V0cSBsZXQgbGV0IHdoaWxlIGxldCBjYXRj aCBhbmQgbGV0KiB3aXRoLW5vLXdhcm5pbmdzIG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9yIG9y Zy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXRdIDEgW2xldCogb3JnLXVuZm9udGlmeS1yZWdp b24gb3JnLW1vZGVybi0tdW5mb250aWZ5ICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2 MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMjc+IiBpbnRlcm5hbC0td2l0aG91dC1yZXN0cmlj dGlvbiBvcmctbW9kZXJuLW1vZGUgb3JnLW1vZGVybi0tb24gZ2xvYmFsLW9yZy1tb2Rlcm4tbW9k ZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVu Y2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDEgW3NlbGVjdC1zYWZlLWNvZGluZy1z eXN0ZW0gc2VjdXJlLWhhc2ggZXF1YWwgYW5kIGlmIHNhdmUtY3VycmVudC1idWZmZXIgaWYgcHJv Z24gaWYgb3JnLWVsZW1lbnQtLWNhY2hlLXBlcnNpc3QtYmVmb3JlLXJlYWQgcnVuLWhvb2std2l0 aC1hcmdzLXVudGlsLXN1Y2Nlc3MgIiM8bGFtYmRhIDB4MWE3NTYwZjdjOGU0ZDY1MD4iICIjPGNv bXBpbGVkIC0weDk4MmYyOTg3NDgxNWU5YT4iIG1hcGMgc2VxLWRvIHNlcS1maW5kXSA0IFttYWNy b2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCog b3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGV0KiBjb25zIHNldHEgaWYgcHJvZ24g aWYgd2hpbGUgbGV0KiBwcm9nbiBpZiBpZl0gMyBbbGV0IGZpbGUtbmFtZS1zYW5zLXZlcnNpb25z IGlmIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgbGV0IHNldC1hdXRvLW1v ZGUtMSBsZXQgc2F2ZS1leGN1cnNpb24gY2F0Y2ggaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1s aW5lIG9yIGFuZCBpZl0gNyBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVu Y3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVy c2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXJd IDMgW29yZy1zZXR1cC1maWxsaW5nIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlm IGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0cSBpZl0gMiBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFs bCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lz dC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0 LXJlYWQgcHJvZ24gbGV0Kl0gMSBbYW5kIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVz IGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGNvbmRpdGlvbi1jYXNlIGlmIGxldCAiIzxs YW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMg YXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgamlueC1tb2RlIGppbngtLW9uIGdsb2JhbC1qaW54 LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzXSAxIFsiIzxjb21waWxlZCAweDFhNWM4 Mjg3YjkzZDA5NGQ+IiBhZGQtaG9vayBmb250LWxvY2stbW9kZS1pbnRlcm5hbCBmb250LWxvY2st ZGVmYXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9u LWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVm ZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBp ZiBzZXQtYXV0by1tb2RlLTBdIDEgW2lmIHNhdmUtZXhjdXJzaW9uIGxldCBoYWNrLWxvY2FsLXZh cmlhYmxlcy0tZmluZC12YXJpYWJsZXMgb3IgYW5kIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5 NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2Nh bC12YXJpYWJsZXMgc2V0cSBhbmQgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+Il0g MyBbZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGFwcGx5IHJ1 bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0w IHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxXSAyIFthbmQg aWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZp bGUtbmFtZSBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBz ZXRxXSAxIFtvciBpZiBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8 Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1 ZDk4OWM5OD4iIGFwcGx5IGFmdGVyLWZpbmQtZmlsZSBpZl0gNCBbZ2xvYmFsLXNldC1rZXkgIiM8 Y29tcGlsZWQgMHhhMDgxZTAwOTkzMjZlYTA+IiB1bmRvLXRyZWUtb3ZlcnJpZGRlbi11bmRvLWJp bmRpbmdzLXAgdHVybi1vbi11bmRvLXRyZWUtbW9kZSBnbG9iYWwtdW5kby10cmVlLW1vZGUtZW5h YmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwg cHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldF0gMSBbb3JnLW1hY3JvLS1j b2xsZWN0LW1hY3JvcyBvcmctbWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgbGV0IHByb2duIG9y Zy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBp ZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxXSAxMCBbbm9ybWFsLW1vZGUgaWYgIiM8 bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxl dCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2 ZDM1Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseSBhZnRl ci1maW5kLWZpbGUgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gNSBbaWYgbGV0KiBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9taW5hdGlu Zy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxv Y2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzXSAxNSBbd2hp bGUgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1dG8tbW9k ZS0xIGxldCBzYXZlLWV4Y3Vyc2lvbiBjYXRjaCBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxp bmUgYXBwZW5kIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4iXSAxIFty ZXBsYWNlLWJ1ZmZlci1pbi13aW5kb3dzIGtpbGwtYnVmZmVyIGFuZCB1bndpbmQtcHJvdGVjdCBz YXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQgb3JnLXBlcnNpc3QtLXJlYWQtZWxpc3AtZmlsZSBv ciBzZXRxIGlmIHByb2duIGlmIGxldCogcHJvZ24gcHJvZ25dIDEgW2lmICIjPGxhbWJkYSAtMHgx YzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNo dXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFw cGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIgYXBwbHkgYWZ0ZXItZmluZC1maWxl IGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0XSA2IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9z dXJlIGZ1bmN0aW9uXSAxIFsrb3JnLS1vcHRpbWl6ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZl cnMtYSBhcHBseSBvcmctZ2V0LWFnZW5kYS1maWxlLWJ1ZmZlciBpZiBzZXQtYnVmZmVyIHNhdmUt Y3VycmVudC1idWZmZXIgY2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJl LWJ1ZmZlcnMgaWYgaWYgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZV0gMiBbY29uZCB3aGlsZSBsZXQg bG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9n biBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBsZXQqIGhhY2stZGlyLWxvY2FsLXZh cmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMtbm9uLWZpbGUtYnVmZmVyIHByb2plY3Qt LXZhbHVlLWluLWRpciBwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeV0g MyBbY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIHNldHEgcHJvZ24g bGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBzYXZl LWN1cnJlbnQtYnVmZmVyIGxldCB3aGlsZV0gMiBbc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVm ZmVyIHdoaWxlIGFuZCBsZXQqIG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1i YXNlLWJ1ZmZlci12aXNpdGluZyBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBm dW5jYWxsIGxldCArb3JnLS1vcHRpbWl6ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBh cHBseSBvcmctZ2V0LWFnZW5kYS1maWxlLWJ1ZmZlcl0gNSBbY2NvbnYtLWFuYWx5emUtZnVuY3Rp b24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRx IG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1y ZWdpc3RlciBwcm9nbiBpZiBwcm9nbl0gMSBbc3RyaW5nLW1hdGNoIGlmIHN1YnN0cmluZyBpZiBs ZXQgZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgaWYgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVz LXAgbm90IGFuZCBsZXQgc2V0LWF1dG8tbW9kZS0xIGxldCBzYXZlLWV4Y3Vyc2lvbiBjYXRjaF0g MSBbZXEgaWYgcHJvZ24gaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJh PiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3Nl bGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cV0gMSBbYW5kIHdoaWxlIGxldCBvciBs ZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFzZS1idWZmZXItdmlzaXRpbmcgbGV0 ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1p emUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmls ZS1idWZmZXIgaWYgc2V0LWJ1ZmZlcl0gNyBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5 emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFs eXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVy cHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29j aWF0ZWQgc2V0cSBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlYWRdIDIgW2xldCBmaWxl LXJlbW90ZS1wIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1l IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBi cmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJy ZWFkY3J1bWItbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mg b3JnLW1vZGUgZnVuY2FsbCBwcm9nbl0gMyBbc2F2ZS1leGN1cnNpb24gY2F0Y2ggaGFjay1sb2Nh bC12YXJpYWJsZXMtcHJvcC1saW5lIGFwcGVuZCBsZXQgaWYgbGV0ICIjPGxhbWJkYSAweDExMmFi ZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNrLWxv Y2FsLXZhcmlhYmxlcyBqaW54LW1vZGUgamlueC0tb24gZ2xvYmFsLWppbngtbW9kZS1lbmFibGUt aW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3NdIDEgW2VkaXRvcmNvbmZpZy1zZXQt dHJhaWxpbmctbmwgZWRpdG9yY29uZmlnLXNldC1sb2NhbC12YXJpYWJsZXMgcHJvZ24gaWYgc2F2 ZS1jdXJyZW50LWJ1ZmZlciBjb25kaXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2Ut ZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAi IzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0XSAxIFtwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQgZmlsZXMtLXRyYW5zZm9ybS1maWxlLW5hbWUgaWYgbGV0IG1ha2UtbG9j ay1maWxlLW5hbWUgIiM8c3ViciBpbnNlcnQtZmlsZS1jb250ZW50cz4iIGFwcGx5IGlmIGVkaXRv cmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNv bnRlbnRzIGxldCBjb25kaXRpb24tY2FzZSBpZl0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGxdIDggW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQt Y2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBz ZXRxIHByb2duIHByb2duXSAyIFstdW5pb24gc3AtLW1lcmdlLXByb3Agc3AtLW1lcmdlLXBhaXJz IHNwLS1tZXJnZS1wYWlyLWNvbmZpZ3VyYXRpb25zIHNwLXVwZGF0ZS1sb2NhbC1wYWlycyAtZWFj aCBzcC0tdXBkYXRlLWxvY2FsLXBhaXJzIHNwLS1pbml0IHNtYXJ0cGFyZW5zLW1vZGUgdHVybi1v bi1zbWFydHBhcmVucy1tb2RlIHNtYXJ0cGFyZW5zLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZm ZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duXSAzIFtm aWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxl LXRydWVuYW1lIGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldCBpZl0gMiBbbGV0 IGZpbGUtbmFtZS1zYW5zLXZlcnNpb25zIHNldHEgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5 LWFsaXN0IHNldHEgbGV0KiBjb25kaXRpb24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQw OGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxv bmctLXNldC1hdXRvLW1vZGUgYXBwbHldIDIgW2ludGVybi1zb2Z0IGRvb20tcnVuLWhvb2tzIGlm IGRvb20tcnVuLWxvY2FsLXZhci1ob29rcy1oIHJ1bi1ob29rcyBoYWNrLWxvY2FsLXZhcmlhYmxl cy1hcHBseSBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMtbm9uLWZpbGUtYnVmZmVyIHByb2plY3Qt LXZhbHVlLWluLWRpciBwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBw cm9qZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXBy b2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2Yt Z2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rc10g MyBbaWYgbGV0ICIjPGxhbWJkYSAweDMzNjcwNWNhNWNiPiIgZnVuY2FsbCBjb25kIGxldCogb3Jn LXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xs ZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2du XSAxIFt0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2Jh bC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9v a3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYg bGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSAxIFtlcXVhbCBpZiBsZXQgaWYgbGV0 IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCogaWYgaWYg IiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0XSAxIFtvciBub3Qg d2hpbGUgbGV0IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmls ZSBsZXQgcHJvZ24gaWYgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNrLWRp ci1sb2NhbC12YXJpYWJsZXMgY29uZGl0aW9uLWNhc2UgaWYgbGV0XSAyIFtpZiBsZXQgc2F2ZS1l eGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxl dCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZl ciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2VdIDEgW21hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5j dGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJz aXN0LS1nZXQtY29sbGVjdGlvbl0gMSBbZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBp ZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRv cmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxl Y3Qgc2V0cSBpZiBsZXRdIDEgW3NvcnQtY29kaW5nLXN5c3RlbXMgZmluZC1jb2Rpbmctc3lzdGVt cy1yZWdpb24gc2VsZWN0LXNhZmUtY29kaW5nLXN5c3RlbSBzZWN1cmUtaGFzaCBzZXRxIGlmIGxl dCAiIzxsYW1iZGEgMHgzNjFmYjhiZjFjYj4iIGZ1bmNhbGwgY29uZCBsZXQqIG9yZy1wZXJzaXN0 LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBs ZXQgcHJvZ25dIDEgW2tpbGwtYnVmZmVyIGFuZCB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQt YnVmZmVyIGxldCBsZXQgb3JnLXBlcnNpc3QtLXJlYWQtZWxpc3AtZmlsZSBvciBzZXRxIGlmIHBy b2duIGlmIGxldCogcHJvZ24gcHJvZ24gbGV0Kl0gMSBbYW5kIGxpc3QgYW5kIGxldCBwcm9nbiBp ZiBvcmctZXh0cmFjdC1sb2ctc3RhdGUtc2V0dGluZ3MgbGV0IGxldCB3aGlsZSBsZXQgbGV0KiBs ZXQgd2hpbGUgbGV0IGxldF0gMSBbbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LWtleXdv cmQtcGFyc2VyIG9yZy1tYWNyby0tZmluZC1rZXl3b3JkLXZhbHVlIG9yZy1tYWNyby0tY29sbGVj dC1tYWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIGxldCBwcm9nbiBvcmctbW9k ZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZl0gMyBbaW5oaWJp dC1sb2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgc28tbG9uZy0t Y2hlY2staGVhZGVyLW1vZGVzIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8t bW9kZSBjb25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2 NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duXSA1IFtnZXRoYXNoIG9yIHNldHEgbGV0IGxldCB3aGls ZSBsZXQgY2F0Y2ggYW5kIGxldCogd2l0aC1uby13YXJuaW5ncyBvcmctcGVyc2lzdC0tZmluZC1p bmRleCBvciBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duXSAxIFtvcmctZm9s ZC1pbml0aWFsaXplIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1h dXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 cSBpZl0gMSBbZm9ybWF0LWRlY29kZSAiIzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBw bHkgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5z ZXJ0LWZpbGUtY29udGVudHMgbGV0IGNvbmRpdGlvbi1jYXNlIGlmIHNhdmUtY3VycmVudC1idWZm ZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmIGxldCogaWZdIDEgW21hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29u di1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBsZXQgd2hpbGUgbGV0IGxl dF0gMSBbaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5h bWUgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBs ZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseV0gNCBb b3JnLWZvbGQtY29yZS1zZXQtZm9sZGluZy1zcGVjLXByb3BlcnR5IGlmIGxldCBwcm9nbiBvcmct bW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYg c2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cV0gMSBbbGV0IGlmIG9yIGxldCBpZiBsZXQg d2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQtYnVm ZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlmIGlmXSAyIFtmb250LWxvY2stbW9kZS1pbnRlcm5hbCBm b250LWxvY2stZGVmYXVsdC1mdW5jdGlvbiBmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9j ayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBw cm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWZdIDMgW29yZy1jb2xsZWN0LWtleXdv cmRzIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIGxldCB3aGlsZSBs ZXQgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZS1idWZmZXJzIGlmIGlmXSAxIFtpZiBpZiAiIzxsYW1i ZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0t YWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cSBp ZiBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxldF0gMSBbbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNl cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSAxIFtzZXQgaWYgbGV0 IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBsZXQgcHJvZ24gb3JnLW1vZGUg ZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWZdIDIgW2lmIGxldCog cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgbG9jYXRl LWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyICIjPHN1YnIgZW52cmMtLXVwZGF0 ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwtbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3MgYXBwbHldIDQgW2xldCB3aGlsZSBsZXQgbGV0IGlmIGxl dCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgbGV0IHByb2duIG9yZy1tb2Rl IGZ1bmNhbGwgcHJvZ24gaWYgaWZdIDEgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1t YWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBsZXQgd2hpbGUgbGV0IGxldCBj b25kIG9yZy0tdGFnLWFkZC10by1hbGlzdF0gMiBbbm90IGFuZCB3aGlsZSBsZXQgd2hpbGUgbGV0 IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc28tbG9uZy0tY2hlY2staGVhZGVyLW1vZGVzIHNv LWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2FzZSBs ZXQgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iXSAxIFthbmQg b3IgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFt ZSBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxl dF0gNCBbZXF1YWwgaWYgaWYgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSAiIzxj b21waWxlZCAweDJmOTg5NzMyMTYwYzNiYj4iIGNsLXNvbWUgcHJvamVjdGlsZS1wcm9qZWN0LXJv b3QgcHJvamVjdC1wcm9qZWN0aWxlIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3Qt Y3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xXSAxIFtpZiBsZXQgZmlsZS10cnVl bmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZp bmQtYmFzZS1idWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3 PiIgZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJz LWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWYgc2V0LWJ1ZmZlcl0gMSBbIiM8 Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseSBhZnRlci1maW5kLWZpbGUgaWYgc2F2 ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZiAi IzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0XSAxIFtsZXQg d2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYgb3Ig bGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSAiIzxjb21waWxlZCAweDFkYTcyNDA3 M2ZjMmRkZTE+IiBjbC1zb21lXSAxIFsiIzxjb21waWxlZCAweDkxYWZlYjNkZjFiMmY1Nj4iIG1h cGNhciAiIzxjb21waWxlZCAweDE4NTc2NmIwN2MyMzk1ZjQ+IiBhcHBseSBzZXEtbWFwIHNlcS1m aWx0ZXIgbGV0IHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlIGxldCBvcmct ZWxlbWVudC1jYWNoZS1yZXNldCBsZXQgcHJvZ25dIDkgW2FiYnJldmlhdGUtZmlsZS1uYW1lIHNl dHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyICIjPHN1YnIgZW52 cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgYXBwbHkgcnVuLW1vZGUtaG9va3Mgb3Jn LW1vZGUgZnVuY2FsbCBwcm9nbiBpZl0gMiBbdW53aW5kLXByb3RlY3Qgc2F2ZS1jdXJyZW50LWJ1 ZmZlciBsZXQgbGV0IG9yZy1wZXJzaXN0LS1yZWFkLWVsaXNwLWZpbGUgb3Igc2V0cSBpZiBwcm9n biBpZiBsZXQqIHByb2duIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVhZCBwcm9nbl0gMSBbZWRp dG9yY29uZmlnLWNvcmUtLWdldC1oYW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxl cyBlZGl0b3Jjb25maWctY29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtLWdldC1o YW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jjb25maWctY29yZS0t Z2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtZ2V0LXByb3BlcnRpZXMtaGFzaCBmdW5jYWxs IHNldHEgY29uZGl0aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy1jYWxsLWdldC1wcm9wZXJ0aWVz LWZ1bmN0aW9uIHNldHEgcHJvZ24gaWYgY29uZGl0aW9uLWNhc2VdIDEgWyIjPHN1YnIgRjYxNmU2 ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfND4iICIjPHN1YnIg RjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfND4iIG1h cGMgeWFzLS1tb2Rlcy10by1hY3RpdmF0ZSB5YXMtbWlub3ItbW9kZSB5YXMtbWlub3ItbW9kZS1v biB5YXMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhv b2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duXSA0 IFsiIzxjb21waWxlZCAtMHg0NTNiZDExYWQwMDM5OGM+IiBtYXBjYXIgIiM8Y29tcGlsZWQgLTB4 MzY5MGNmMmIxNmQ0NTYyPiIgcHJvamVjdGlsZS1sb2NhdGUtZG9taW5hdGluZy1maWxlIHByb2pl Y3RpbGUtcm9vdC1ib3R0b20tdXAgcHJvamVjdGlsZS1yb290LW1hcmtlZCAiIzxjb21waWxlZCAw eDFkYTcyNDA3M2ZjMmRkZTE+IiBjbC1zb21lIHByb2plY3RpbGUtcHJvamVjdC1yb290IHByb2pl Y3QtcHJvamVjdGlsZSBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBwcm9qZWN0LWN1cnJlbnQg YnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJy ZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJl YWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzXSA0IFtpbnRlcm4tc29mdCBkb29tLXJ1bi1o b29rcyBpZiBkb29tLXJ1bi1sb2NhbC12YXItaG9va3MtaCBydW4taG9va3MgaGFjay1sb2NhbC12 YXJpYWJsZXMtYXBwbHkgcHJvZ24gaWYgbGV0IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBl YTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12 YXJpYWJsZXMgcnVuLW1vZGUtaG9va3NdIDEgWyIjPGNvbXBpbGVkIDB4MTM0MDM4MDBiOGZjOWQ0 PiIgY2wtc29tZSAiIzxjb21waWxlZCAtMHgzNjkwY2YyYjE2ZDQ1NjI+IiBwcm9qZWN0aWxlLWxv Y2F0ZS1kb21pbmF0aW5nLWZpbGUgcHJvamVjdGlsZS1yb290LWJvdHRvbS11cCBwcm9qZWN0aWxl LXJvb3QtbWFya2VkICIjPGNvbXBpbGVkIDB4MWRhNzI0MDczZmMyZGRlMT4iIGNsLXNvbWUgcHJv amVjdGlsZS1wcm9qZWN0LXJvb3QgcHJvamVjdC1wcm9qZWN0aWxlIHByb2plY3QtLWZpbmQtaW4t ZGlyZWN0b3J5IHByb2plY3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJy ZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9u LWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnNd IDMgWyIjPGNvbXBpbGVkIDB4OTFhZmVkYWNhMzViYjU2PiIgbWFwY2FyICIjPGNvbXBpbGVkIDB4 MTg1NzY2YjA3YzIzOTVmND4iIGFwcGx5IHNlcS1tYXAgc2VxLWZpbHRlciBsZXQgcHJvZ24gaWYg c2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0 IHByb2duIGlmXSAzIFtjYXIgZXEgaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVu dC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hl LWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVy IGF2bC10cmVlLWVudGVyXSAxIFtjb21wYW55LW1vZGUgY29tcGFueS1tb2RlLW9uIGdsb2JhbC1j b21wYW55LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlm ICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQx ZTY5NmQzNWI3NT4iIGFwcGx5XSAzIFtjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVu Y3Rpb24gY2wtbWFwY2FuIG1hcGNhciBzZXQgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1h bmQtb3B0aW9ucyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZl0gMSBbbWFj cm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDMgW2FuZCBvciBsZXQg aWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBm aW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12aXNpdGluZyBsZXQgIiM8 bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxldF0gMiBbb3JnLWVsZW1lbnQt LWNhY2hlLWFmdGVyLWNoYW5nZSBpbnNlcnQgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUt Y3VycmVudC1idWZmZXIgbGV0IGxldCBjb25kIG9yZy1lbGVtZW50LXBhcnNlLXNlY29uZGFyeS1z dHJpbmcgb3JnLW1hY3JvLS1maW5kLWRhdGUgb3JnLW1hY3JvLS1jb2xsZWN0LW1hY3JvcyBvcmct bWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgbGV0IHByb2duIG9yZy1tb2RlXSAxIFttYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rp b24gYXNzb2MtZGVmYXVsdCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNldHEgaWYg aWYgbGV0XSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDU2 IFtvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1u YW1lIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12aXNpdGlu ZyBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxldCArb3JnLS1v cHRpbWl6ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYV0gMSBbYWR2aWNlLS1yZW1vdmUt ZnVuY3Rpb24gIiM8Y29tcGlsZWQgLTB4MTEwM2QwYzIyNTU1MDUwYj4iIGFkdmljZS0tdHdlYWsg YWR2aWNlLS1yZW1vdmUtZnVuY3Rpb24gYWR2aWNlLS1hZGQtZnVuY3Rpb24gYWR2aWNlLWFkZCBv cmctZm9sZC0tYWR2aWNlLWVkaXQtY29tbWFuZHMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwg cHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duXSAxIFtvcmctZm9sZC1jb3JlLS1wcm9w ZXJ0eS1zeW1ib2wtZ2V0LWNyZWF0ZSBvcmctZm9sZC1jb3JlLWdldC1mb2xkaW5nLXNwZWMgb3Jn LWZvbGQtY29yZS0tZml4LWZvbGRlZC1yZWdpb24gaW5zZXJ0IGxldCBwcm9nbiB1bndpbmQtcHJv dGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQgY29uZCBvcmctZWxlbWVudC1wYXJzZS1z ZWNvbmRhcnktc3RyaW5nIG9yZy1tYWNyby0tZmluZC1kYXRlIG9yZy1tYWNyby0tY29sbGVjdC1t YWNyb3Mgb3JnLW1hY3JvLWluaXRpYWxpemUtdGVtcGxhdGVzIGxldF0gMSBbYXBwbHkgIiM8Y29t cGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4 OWM5OD4iIGFwcGx5IGFmdGVyLWZpbmQtZmlsZSBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBm aW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0 ODEzMmE+IiBhcHBseV0gMiBbbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAi IzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+ IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250 YWluZXIgc2V0cSBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duXSAxIFtvcmct Zm9sZC1jb3JlLS1maXgtZm9sZGVkLXJlZ2lvbiBpbnNlcnQgbGV0IHByb2duIHVud2luZC1wcm90 ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGxldCBjb25kIG9yZy1lbGVtZW50LXBhcnNlLXNl Y29uZGFyeS1zdHJpbmcgb3JnLW1hY3JvLS1maW5kLWRhdGUgb3JnLW1hY3JvLS1jb2xsZWN0LW1h Y3JvcyBvcmctbWFjcm8taW5pdGlhbGl6ZS10ZW1wbGF0ZXMgbGV0IHByb2duIG9yZy1tb2RlXSAx IFtpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNvbmRpdGlvbi1jYXNlIGxldCBlZGl0b3Jjb25maWct LWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNldHEg aWYgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29yZy0t b3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2Vu ZGEtZmlsZS1idWZmZXJdIDEgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUt Zm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYg Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uXSAxIFtsZXQgZmlsZS1uYW1l LXNhbnMtdmVyc2lvbnMgaWYgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGFuZCBs ZXQgc2V0LWF1dG8tbW9kZS0xIGxldCBzYXZlLWV4Y3Vyc2lvbiBjYXRjaCBoYWNrLWxvY2FsLXZh cmlhYmxlcy1wcm9wLWxpbmUgYXBwZW5kIGxldCBpZl0gNiBbb3Igc2V0cSBsZXQgbGV0IHdoaWxl IGxldCBjYXRjaCBhbmQgbGV0KiB3aXRoLW5vLXdhcm5pbmdzIG9yZy1wZXJzaXN0LS1maW5kLWlu ZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0Kl0gMyBbb3Jn LWVsZW1lbnQtY3JlYXRlIGxldCBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtcHJvcGVy dHktZHJhd2VyLXBhcnNlciBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50 LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0Kl0gMiBbZWRpdG9yY29u ZmlnLS1kaXNhYmxlZC1mb3ItZmlsZW5hbWUgbm90IGFuZCBpZiBjb25kaXRpb24tY2FzZSBsZXQg ZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1u b3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNh bGwgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hXSAxIFtz ZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lz dC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVy IGxldCB3aGlsZSBsZXRdIDEgWyIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2 NDYxX2Fub255bW91c19sYW1iZGFfMjM+IiBtYXBjYXIgb3JnLWZvbGQtY29yZS1uZXh0LWZvbGRp bmctc3RhdGUtY2hhbmdlIG9yZy1mb2xkLWNvcmUtLWZpeC1mb2xkZWQtcmVnaW9uIGluc2VydCBs ZXQgcHJvZ24gdW53aW5kLXByb3RlY3Qgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgbGV0IGNvbmQg b3JnLWVsZW1lbnQtcGFyc2Utc2Vjb25kYXJ5LXN0cmluZyBvcmctbWFjcm8tLWZpbmQtZGF0ZSBv cmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlc10g MSBbYWR2aWNlLS1hZGQtZnVuY3Rpb24gYWR2aWNlLWFkZCAiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2 Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzM3PiIgZXZhbC1hZnRlci1sb2Fk IGN0cmxmLWxvY2FsLW1vZGUgY3RybGYtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mg cnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2Rl LTAgcHJvZ24gaWZdIDEgW3NldHEgd2hpbGUgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAg bm90IGFuZCBsZXQgc2V0LWF1dG8tbW9kZS0xIHNldHEgYW5kIHNhdmUtZXhjdXJzaW9uIGxldCAi IzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgxYjkwZGYy YTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZV0gMSBbc2V0cSBwcm9nbiBwcm9nbiBp ZiBsZXQgIiM8bGFtYmRhIDB4MzNiNzE2OWUxY2I+IiBmdW5jYWxsIGNvbmQgbGV0KiBvcmctcGVy c2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rp b24gbGV0IHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXJdIDEgW3NldCBpZiBpZiBwcm9n biBjb25kaXRpb24tY2FzZSBsZXQgd2hpbGUgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUt Y3VycmVudC1idWZmZXIgbGV0IGxldCBjb25kIG9yZy1lbGVtZW50LXBhcnNlLXNlY29uZGFyeS1z dHJpbmcgb3JnLW1hY3JvLS1maW5kLWRhdGVdIDEgW2NvbmNhdCBzZXRxIGlmIGlmIGxldCBpZiBs ZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQt YnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlmXSAxIFtpZiBleHBhbmQtZmlsZS1uYW1lIGxldCog cHJvZ24gaWYgZGlyLWxvY2Fscy0tYWxsLWZpbGVzIGZ1bmNhbGwgaWYgc2V0cSB3aGlsZSBsZXQg bG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9n bl0gMSBbc2VhcmNoLWZvcndhcmQgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgc2V0cSBhbmQgc2F2 ZS1leGN1cnNpb24gbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxj b21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5 IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0XSAyIFtjb25jYXQgc2V0cSBsZXQgY29u ZCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNp dGluZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkg c2V0cSBsZXRdIDIgW3NhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LXByb3BlcnR5LWRyYXdlci1w YXJzZXIgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1l bGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxIFthbmQgbGV0KiBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgcHJvamVjdGlsZS1sb2NhdGUtZG9taW5hdGlu Zy1maWxlIHByb2plY3RpbGUtcm9vdC1ib3R0b20tdXAgcHJvamVjdGlsZS1yb290LW1hcmtlZCAi Izxjb21waWxlZCAtMHgxYjAyZTk3MjEzODgzZWVlPiIgY2wtc29tZSBwcm9qZWN0aWxlLXByb2pl Y3Qtcm9vdCBwcm9qZWN0LXByb2plY3RpbGUgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJv amVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTFdIDEgW2lmIHdoaWxlIGxl dCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgMHgx YjgwZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIg c28tbG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBzZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1jYXNl IGxldF0gMSBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRl ZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmctcGVy c2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZl0gMSBbIiM8Y29tcGlsZWQgMHgxMzQwMzgw MGI4ZmM5ZDQ+IiBjbC1zb21lICIjPGNvbXBpbGVkIC0weDE5NmY5ZGM4MGI0ZTZlNDY+IiBwcm9q ZWN0aWxlLWxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgcHJvamVjdGlsZS1yb290LWJvdHRvbS11cCAi Izxjb21waWxlZCAtMHhmZWQzZGNjNmUzZjhlNjU+IiBjbC1zb21lIHByb2plY3RpbGUtcHJvamVj dC1yb290IHByb2plY3QtcHJvamVjdGlsZSBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBwcm9q ZWN0LWN1cnJlbnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2pl Y3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xv YmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rc10gMSBb bGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lICIjPGNvbXBpbGVkIC0weGZlZDNkY2M2ZTNmOGU2 NT4iIGNsLXNvbWUgcHJvamVjdGlsZS1wcm9qZWN0LXJvb3QgcHJvamVjdC1wcm9qZWN0aWxlIHBy b2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9q ZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1v bi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5h YmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmXSAxIFtjb25kIGxldCogYW5kIGxldCogb3JnLWVs ZW1lbnQtZW5kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRp dGlvbi1jYXNlIGlmXSAyIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3Jtc10gMiBbYW5kIGxpbmUtZW5kLXBvc2l0aW9uIHNlYXJjaC1mb3J3YXJkIGFuZCBsZXQgc2V0 LWF1dG8tbW9kZS0xIGxldCBzYXZlLWV4Y3Vyc2lvbiBjYXRjaCBoYWNrLWxvY2FsLXZhcmlhYmxl cy1wcm9wLWxpbmUgYXBwZW5kIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3 Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzXSAyIFtpZiBkb29tLWhpZ2hsaWdodC1u b24tZGVmYXVsdC1pbmRlbnRhdGlvbi1oIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9k ZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cV0gMyBbIiM8Y29tcGlsZWQgLTB4ZmVkM2RjYzZl M2Y4ZTY1PiIgY2wtc29tZSBwcm9qZWN0aWxlLXByb2plY3Qtcm9vdCBwcm9qZWN0LXByb2plY3Rp bGUgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWIt LXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10 dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9k ZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRh IC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5XSAxIFtyZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1v cHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3Jv dXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgY29uY2F0IG9y Zy1tYWtlLW9wdGlvbnMtcmVnZXhwIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtZXhjdXJzaW9uIGxldCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMV0gMiBbc2V0cSBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGJyZWFkY3J1bWItLXByb2pl Y3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9u LWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFj MzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duXSAyIFtsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxp emUtY29udGFpbmVyIHNldHEgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBp ZiBwcm9nbiBpZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCB3aGlsZSBsZXRdIDEg W29yIGxldCBpZiBsZXQqIHByb2duIGlmIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0t Y3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlv bl0gMSBbZWRpdG9yY29uZmlnLWNvcmUtLWdldC1oYW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1n ZXQtaGFuZGxlcyBlZGl0b3Jjb25maWctY29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNv cmUtLWdldC1oYW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jjb25m aWctY29yZS1nZXQtcHJvcGVydGllcy1oYXNoIGZ1bmNhbGwgc2V0cSBjb25kaXRpb24tY2FzZSBs ZXQgZWRpdG9yY29uZmlnLWNhbGwtZ2V0LXByb3BlcnRpZXMtZnVuY3Rpb24gc2V0cSBwcm9nbiBp ZiBjb25kaXRpb24tY2FzZSBsZXRdIDQgW2lmIGxldCBvcmctZWxlbWVudC0tY2FjaGUtdmVyaWZ5 LWVsZW1lbnQgYW5kIGlmIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUt ZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBsZXQgd2hpbGUgbGV0IHNhdmUt cmVzdHJpY3Rpb25dIDEgW3NldHEgbGV0IGxldCB3aGlsZSBsZXQgY2F0Y2ggYW5kIGxldCogd2l0 aC1uby13YXJuaW5ncyBvcmctcGVyc2lzdC0tZmluZC1pbmRleCBvciBvcmctcGVyc2lzdC0tZ2V0 LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXJdIDEgW3NldC1i dWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciB3aGlsZSBsZXQgb3IgbGV0IGZpbmQtYnVmZmVyLXZp c2l0aW5nIGFuZCBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBs eSBzZXRxIGxldCBsZXRdIDIgW2xldCogYW5kIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMtYmVn aW4gbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29u ZGl0aW9uLWNhc2VdIDMgW2lmIGxldCogcHJvZ24gaWYgbGV0IGlmIGxldCogbGV0IHByb2duIGlm IGxldCB3aGlsZSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vy c2lvbl0gMSBbPD0gYW5kIHdoaWxlIGxldCBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10 byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uXSA1IFtpZiBzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGls ZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1i dWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlXSAzIFttYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29u di1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9y bWFsaXplLWNvbnRhaW5lciBzZXRxIHByb2duIGlmIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVn aXN0ZXIgcHJvZ24gaWYgcHJvZ25dIDEgW2xldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4g bGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVz cy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJl ZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBv cmctZWxlbWVudC0tY2FjaGUtcHV0XSAyIFtzYXZlLWV4Y3Vyc2lvbiBsZXQgaGFjay1sb2NhbC12 YXJpYWJsZXMtLWZpbmQtdmFyaWFibGVzIGFwcGVuZCBsZXQgaWYgbGV0ICIjPGxhbWJkYSAweDEx MmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNr LWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlm XSAxIFstdW5mb2xkIHNwLS11cGRhdGUtbG9jYWwtcGFpcnMgc3AtLWluaXQgc21hcnRwYXJlbnMt bW9kZSB0dXJuLW9uLXNtYXJ0cGFyZW5zLW1vZGUgc21hcnRwYXJlbnMtZ2xvYmFsLW1vZGUtZW5h YmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwg cHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmXSAxIFtzYXZlLWN1cnJlbnQtYnVm ZmVyIGFzZXQgbGV0KiBwcm9nbiBhZ2Utd2FpdC1mb3ItY29tcGxldGlvbiBwcm9nbiB1bndpbmQt cHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZl0gNCBb YW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1m aWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5 cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdl LWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHNdIDIgW2lmIHByb2duIGlmIG9yZy1lbGVtZW50LS1j YWNoZS1wZXJzaXN0LWJlZm9yZS1yZWFkIHJ1bi1ob29rLXdpdGgtYXJncy11bnRpbC1zdWNjZXNz ICIjPGxhbWJkYSAweDFkMTFhZWM5YmFiMTMwMGE+IiAiIzxjb21waWxlZCAtMHg5ODJmMjk4NzQ4 MTVlOWE+IiBtYXBjIHNlcS1kbyBzZXEtZmluZCBpZiBwcm9nbiBpZiBsZXQqIHByb2duIHByb2du XSAxIFtyZXBsYWNlLWJ1ZmZlci1pbi13aW5kb3dzIGtpbGwtYnVmZmVyIGFuZCB1bndpbmQtcHJv dGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBwcm9nbiBpZiBhZ2Utc2NyeXB0LXAgYXNldCBs ZXQqIHByb2duIGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWZdIDQg W2FwcGx5IGluc2VydC1maWxlLWNvbnRlbnRzIGxldCBjb25kaXRpb24tY2FzZSBpZiBzYXZlLWN1 cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmICIjPGxh bWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldF0gMiBbb3IgaWYgbGV0IGRv b20tbWFrZS1oYXNoZWQtYXV0by1zYXZlLWZpbGUtbmFtZS1hIGFwcGx5IG1ha2UtYXV0by1zYXZl LWZpbGUtbmFtZSBhdXRvLXNhdmUtbW9kZSBwcm9nbiBpZiBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1 ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVw LWF1dG9zYXZlLWFdIDIgW3NhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2V0cSBpZiBp ZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4 MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8t bW9kZSBjb25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1vZGUgaWZdIDEgW29yZy1wZXJzaXN0LS1y ZWFkLWVsaXNwLWZpbGUgb3Igc2V0cSBpZiBwcm9nbiBpZiBsZXQqIHByb2duIHByb2duIGxldCog b3JnLXBlcnNpc3QtcmVhZCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LWxvYWQgcHJvZ24gaWZdIDEg W21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFu ZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0IHdo aWxlIGxldCBsZXQgY29uZCBvcmctLXRhZy1hZGQtdG8tYWxpc3Qgc2V0cV0gMSBbZG9vbS1mYWxs YmFjay1idWZmZXIgZXEgbm90IGRvb20tcHJvdGVjdC1mYWxsYmFjay1idWZmZXItaCBraWxsLWJ1 ZmZlciBpZiBhZ2UtcmVzZXQgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNv bmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZp bGUtY29udGVudHMgYXBwbHldIDIgW29yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBsZXQg cHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24g aWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgaWZdIDEgW2FnZS1yZXNl dCB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBs eSBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFnZS1maWxlLWhhbmRsZXJdIDEgW29y IG5vdCB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmlu ZC1maWxlIGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHIgbGV0 KiBjb25kaXRpb24tY2FzZSBpZiBsZXRdIDIgW2FkZC1ob29rIHdoaXRlc3BhY2UtY29sb3Itb24g d2hpdGVzcGFjZS10dXJuLW9uIHdoaXRlc3BhY2UtbW9kZSBpZiBkb29tLWhpZ2hsaWdodC1ub24t ZGVmYXVsdC1pbmRlbnRhdGlvbi1oIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBm dW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZl0gMiBbbGV0IGlmICIj PGxhbWJkYSAweDI0YjY3NjgwNTZmODZiYT4iIGZ1bmNhbGwgbGV0IGRvb20tbWFrZS1oYXNoZWQt YXV0by1zYXZlLWZpbGUtbmFtZS1hIGFwcGx5IG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSBhdXRv LXNhdmUtbW9kZSBwcm9nbiBpZiBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBw bHkgcHJvZ24gdW53aW5kLXByb3RlY3RdIDQgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQt Y2xvc3VyZSBmdW5jdGlvbiBhc3NvYy1kZWZhdWx0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2V0cSBpZiBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iXSAxIFtp ZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBsZXQqIGhhY2stZGlyLWxvY2FsLXZhcmlh YmxlcyBjb25kaXRpb24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4i IHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVz IGppbngtbW9kZSBqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBydW4tbW9kZS1ob29rc10gMSBbYW5kIGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQgb3JnLXJvYW0tLWZpbGUtbmFtZS1leHRlbnNpb24gbGV0KiBwcm9nbiBpZiBvcmctcm9h bS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5 IGRlbGV0ZS1maWxlXSA0IFtpbnNlcnQgc2F2ZS1yZXN0cmljdGlvbiBhZ2UtZmlsZS1kZWNvZGUt YW5kLWluc2VydCBpZiBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldCBwcm9nbiB1 bndpbmQtcHJvdGVjdF0gOSBbaWYgbGV0IHdoaWxlIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3Jn LWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWYgaWYgbGV0XSAxIFtmaWxlLXJlbW90ZS1wIGxldCBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGxldCogcHJvZ24gaWYg b3JnLXJvYW0tZmlsZS1wIGFuZCBpZiBvcmctcm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUt YSBhcHBseSBkZWxldGUtZmlsZSBpZl0gMSBbc2V0LWF1dG8tY29kaW5nIGRlY29kZS1jb2Rpbmct aW5zZXJ0ZWQtcmVnaW9uIHNhdmUtcmVzdHJpY3Rpb24gYWdlLWZpbGUtZGVjb2RlLWFuZC1pbnNl cnQgaWYgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBh Z2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ25dIDEyIFtlcXVh bCBjb25kIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1m aW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGNkciBs ZXQqIGNvbmRpdGlvbi1jYXNlIGlmIGxldF0gMSBbcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBjb25kaXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2Vs ZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4 ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRlZC1h Z2VuZGEtYnVmZmVycy1hIGFwcGx5XSAyIFtzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlv biBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBw cm9nbiBpZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldF0gMSBbYXBwbHkgaWYgZWRp dG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUt Y29udGVudHMgbGV0IGluc2VydC1maWxlLWNvbnRlbnRzLWxpdGVyYWxseSBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0 IHByb2duIGlmXSAyIFt1bmRvLWF1dG8tLWJvdW5kYXJ5LXRpbWVyIGFwcGx5IHRpbWVyLWV2ZW50 LWhhbmRsZXIgYWNjZXB0LXByb2Nlc3Mtb3V0cHV0IHdoaWxlIGFnZS13YWl0LWZvci1jb21wbGV0 aW9uIHByb2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24t Y2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRl bnRzIGFwcGx5XSAyIFtmaWxlLW5hbWUtZGlyZWN0b3J5IHNldHEgZXF1YWwgY29uZCB3aGlsZSBs ZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBw cm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBsZXQqIGhhY2stZGlyLWxvY2Fs LXZhcmlhYmxlcyBjb25kaXRpb24tY2FzZV0gMSBbbGV0IGlmIHByb2duIHVud2luZC1wcm90ZWN0 IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGFnZS1yZWFkLW91dHB1dCBpZiBwcm9nbiB1bndpbmQt cHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0Kl0gNiBbc2V0cSBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQgcHJvZ24gaWYg aGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNrLWRpci1sb2NhbC12YXJpYWJs ZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzLW5vbi1maWxlLWJ1ZmZlciBwcm9qZWN0LS12YWx1 ZS1pbi1kaXIgcHJvamVjdC10cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnkgcHJvamVj dC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0 LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2Jh bC1tb2RlXSAyIFtpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxl LW5hbWUgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlmIGlmICIjPGxhbWJkYSAt MHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldF0gMSBbZGlzcGxheS13YXJuaW5nIGVk aXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxl LWNvbnRlbnRzIGxldCBpbnNlcnQtZmlsZS1jb250ZW50cy1saXRlcmFsbHkgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxl dCBwcm9nbiBpZiBhZ2Utc2NyeXB0LXBdIDQgW2FnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRp b24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNv bnRlbnRzIGFwcGx5IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWdlLWZpbGUtaGFu ZGxlciAiIzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHldIDEgW2VudnJjLW1vZGUg ZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1t b2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAw eGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiJd IDIgW2JyZWFkY3J1bWItLWZvcm1hdC1wcm9qZWN0LW5vZGUgYnJlYWRjcnVtYi0tcHJvamVjdC1j cnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9j YWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1 ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVw LWF1dG9zYXZlLWEgYXBwbHldIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50 ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29u dGFpbmVyIGxpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3Igb3JnLXBlcnNpc3QtLWdldC1j b2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyXSAyIFtjYWxsZWQt aW50ZXJhY3RpdmVseS1wIGdldGVudiBsaXN0IHNlcS1maW5kIGxldCBsZXQqIGFnZS0tc3RhcnQg bGV0IGFnZS1zdGFydC1kZWNyeXB0IHByb2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZp bGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMSBbZnVuY2FsbCBs ZXQgZG9vbS1tYWtlLWhhc2hlZC1hdXRvLXNhdmUtZmlsZS1uYW1lLWEgYXBwbHkgbWFrZS1hdXRv LXNhdmUtZmlsZS1uYW1lIGF1dG8tc2F2ZS1tb2RlIHByb2duIGlmIGlmICIjPGxhbWJkYSAtMHgx YzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNo dXQtdXAtYXV0b3NhdmUtYSBhcHBseV0gMiBbc2V0cSBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0IGZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIGlmIGxldCBpZiAiIzxsYW1iZGEgMHgyNGI2 NzY4MDU2Zjg2YmE+IiBmdW5jYWxsIGxldCBkb29tLW1ha2UtaGFzaGVkLWF1dG8tc2F2ZS1maWxl LW5hbWUtYSBhcHBseSBtYWtlLWF1dG8tc2F2ZS1maWxlLW5hbWUgYXV0by1zYXZlLW1vZGVdIDEg W2xldCBsZXQgd2hpbGUgbGV0IGxldCogbGV0IHdoaWxlIGxldCBsZXQgaWYgbGV0IHByb2duIGlm IG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBsZXQgcHJvZ25dIDEgW2FuZCBsZXQqIHByb2du IHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQqIGlmIGlmICIjPGxh bWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmln LS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5XSAyIFthbmQgb3IgbGV0IGlmIGxldCB3 aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBlcXVhbCBhbmQgaWYgb3JnLXJvYW0tZGVzY2VuZGFudC1v Zi1wIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wXSAxMSBbY2NvbnYtbWFrZS1pbnRlcnBy ZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciAiIzxsYW1iZGEgMHgxZTEyYjhmYmZmYThkYT4i IGZ1bmNhbGwgY29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRh aW5lciBzZXRxIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWZdIDEgW2Fu ZCBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxl dCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQt ZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4i XSAxIFtzdHJpbmc9IGFuZCBjb25kIGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUg aWYgc2V0cSBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBs ZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseV0gMSBbY2NvbnYt LWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2Ut aW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUt Y29udGFpbmVyIGxpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3Igb3JnLXBlcnNpc3QtLWdl dC1jb2xsZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqXSAxIFtpZiBsZXQgaWYgIiM8bGFt YmRhIDB4MjRiNjc2ODA1NmY4NmJhPiIgZnVuY2FsbCBsZXQgZG9vbS1tYWtlLWhhc2hlZC1hdXRv LXNhdmUtZmlsZS1uYW1lLWEgYXBwbHkgbWFrZS1hdXRvLXNhdmUtZmlsZS1uYW1lIG9yIGZpbGUt bmV3ZXItdGhhbi1maWxlLXAgYW5kIGlmIGNvbmQgbGV0KiBpZl0gMSBbc3AtdXBkYXRlLWxvY2Fs LXBhaXJzIC1lYWNoIHNwLS11cGRhdGUtbG9jYWwtcGFpcnMgc3AtLWluaXQgc21hcnRwYXJlbnMt bW9kZSB0dXJuLW9uLXNtYXJ0cGFyZW5zLW1vZGUgc21hcnRwYXJlbnMtZ2xvYmFsLW1vZGUtZW5h YmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgx YzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSA2IFthc3Nx LWRlbGV0ZS1hbGwgdW5yZWNvcmQtd2luZG93LWJ1ZmZlciByZXBsYWNlLWJ1ZmZlci1pbi13aW5k b3dzIGtpbGwtYnVmZmVyIGFuZCB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxl dCBhZ2UtcmVhZC1vdXRwdXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmls ZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duXSAzIFtjb25jYXQgc2V0cSBsZXQgY29uZCBmaWxl LXRydWVuYW1lIGVxdWFsIGFuZCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9n biBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUt ZmlsZS1hXSAxMCBbYW5kIG5vdCBhbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1w cm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBzZXRxIGxvY2F0ZS1kb21pbmF0aW5nLWZp bGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZV0gMiBbbGlzdCBhcHBlbmQgYWdlLS1zdGFydCBs ZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmls ZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUt aW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWZdIDEgW3NldHEgZXF1YWwgY29uZCB3aGlsZSBs ZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBw cm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBsZXQqIGhhY2stZGlyLWxvY2Fs LXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMtbm9uLWZpbGUtYnVmZmVyIHByb2pl Y3QtLXZhbHVlLWluLWRpcl0gMyBbY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6 ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1h bmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0 aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGlzdCBvcmctcGVyc2lz dC0tZmluZC1pbmRleCBvciBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duXSAx IFtmb250LWxvY2stcmVtb3ZlLWtleXdvcmRzIG9yZy1tb2Rlcm4tbW9kZSBvcmctbW9kZXJuLS1v biBnbG9iYWwtb3JnLW1vZGVybi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4t bW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBw cm9nbiBpZiBsZXQgaWZdIDEgW3JlbW92ZS1ob29rIGZvbnQtbG9jay10dXJuLW9uLXRoaW5nLWxv Y2sgZm9udC1sb2NrLW1vZGUtaW50ZXJuYWwgZm9udC1sb2NrLWRlZmF1bHQtZnVuY3Rpb24gZm9u dC1sb2NrLW1vZGUgcHJvZ24gaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4 YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1h dXRvc2F2ZS1hIGFwcGx5XSAzIFtlbnZyYy0tYXBwbHkgIiM8c3ViciBlbnZyYy0tdXBkYXRlPiIg YXBwbHkgZW52cmMtLXVwZGF0ZSBlbnZyYy1tb2RlIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1 ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVw LWF1dG9zYXZlLWFdIDIgW3N0cmluZy1tYXRjaC1wIG9yIHNldHEgbGV0IHdoaWxlIGxldCBsZXQg Y29uZCBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0 b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHldIDEgW3NhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3Jn LWNvbGxlY3Qta2V5d29yZHMgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9u cyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbl0gMyBbc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgb3JnLS1jb2xsZWN0LWtleXdvcmRzLTEg bGV0KiBvcmctY29sbGVjdC1rZXl3b3JkcyBvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1t YWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9n biBpZiBpZl0gMiBbZnVuY3Rpb24gc2VxLWZpbmQgbGV0IGxldCogYWdlLS1zdGFydCBsZXQgYWdl LXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRx IGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0 LWZpbGUtY29udGVudHNdIDEgW2dsb2JhbC1lbGRvYy1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIg YXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEg YXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAw eDgyY2Y0YmI1ZDk4OWM5OD4iIGFwcGx5XSAxIFsiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2Zjc1NzMy ZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzI3PiIgaW50ZXJuYWwtLXdpdGhvdXQtcmVz dHJpY3Rpb24gb3JnLW1vZGVybi1tb2RlIG9yZy1tb2Rlcm4tLW9uIGdsb2JhbC1vcmctbW9kZXJu LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2Rl IGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldF0gMiBbbGV0 IGZpbGUtcmVtb3RlLXAgYW5kIGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgY29uZGl0 aW9uLWNhc2UgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBs eSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cSBpZiBsZXQgIiM8bGFtYmRhIC0weDE2OGUwNmZiNGZh ZDk1NTc+Il0gNCBbbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZiBvcmct cm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlm IG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5XSA0IFtnbG9iYWwtdW5k by10cmVlLW1vZGUtY21oaCB0ZXh0LW1vZGUgb3V0bGluZS1tb2RlIGxldCBwcm9nbiBvcmctbW9k ZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0 LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDEgW3Byb2duIGlmIGlmICIjPGxhbWJkYSAtMHgxYzM2 NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQt dXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5 ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIgYXBwbHkgYWZ0ZXItZmluZC1maWxlIGlm XSAyIFtjZHIgYWdlLWNvbnRleHQtcmVzdWx0LWZvciBsZXQgYWdlLS1jaGVjay1lcnJvci1mb3It ZGVjcnlwdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0 aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1j b250ZW50cyBhcHBseSBpZiBsZXRdIDEgW3NwLS1tZXJnZS1wYWlyLWNvbmZpZ3VyYXRpb25zIHNw LXVwZGF0ZS1sb2NhbC1wYWlycyAtZWFjaCBzcC0tdXBkYXRlLWxvY2FsLXBhaXJzIHNwLS1pbml0 IHNtYXJ0cGFyZW5zLW1vZGUgdHVybi1vbi1zbWFydHBhcmVucy1tb2RlIHNtYXJ0cGFyZW5zLWds b2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAi IzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3Rd IDMgW3NldHEgbGV0IHdoaWxlIGxldCBsZXQqIGxldCogbGV0IHdoaWxlIGxldCBsZXQgaWYgbGV0 IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBsZXRdIDIgW2lmIHNhdmUtY3Vy cmVudC1idWZmZXIgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFu ZCBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxl dF0gOSBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBl cnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFmPiIgbWFwY2Fy ICIjPGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCogY29uZCBsZXQq IG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIHNldHEgcHJvZ24gaWZdIDIgWyIjPGNv bXBpbGVkIDB4MWE1YzgyODdiOTNkMDk0ZD4iIGFkZC1ob29rIGdvZ2dsZXMtbW9kZSBydW4taG9v a3MgYXBwbHkgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQt YXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmXSAxIFtpZiB3YXJuLW1heWJlLW91dC1vZi1tZW1v cnkgcHJvZ24gaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBw bHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBh cHBseSBmaW5kLWZpbGUtbm9zZWxlY3Qgc2V0cV0gMSBbYXBwbHkgaWYgZG9vbS0taW5oaWJpdC1z YXZlcGxhY2UtaW4tbG9uZy1maWxlcy1hIGFwcGx5IHNhdmUtcGxhY2UtdG8tYWxpc3Qga2lsbC1i dWZmZXIgaWYgYWdlLXJlc2V0IHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBj b25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1m aWxlLWNvbnRlbnRzXSAyIFtmb250LWxvY2stY29tcGlsZS1rZXl3b3JkcyBmb250LWxvY2stYWRk LWtleXdvcmRzIHdoaXRlc3BhY2UtY29sb3Itb24gd2hpdGVzcGFjZS10dXJuLW9uIHdoaXRlc3Bh Y2UtbW9kZSBpZiBkb29tLWhpZ2hsaWdodC1ub24tZGVmYXVsdC1pbmRlbnRhdGlvbi1oIHJ1bi1o b29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRv LW1vZGUtMCBwcm9nbl0gMiBbZXF1YWwgaWYgaWYgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10 cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBpZiBzZXRxIHNhdmUtY3VycmVudC1idWZmZXIg bGV0IGZpbmQtZmlsZS1ub3NlbGVjdC0xIGlmXSAzIFtpZiBzdWJzdHJpbmcgaWYgbGV0IGZpbGUt bmFtZS1zYW5zLXZlcnNpb25zIGlmIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBs ZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5 MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9k ZV0gMSBbc2VxLWRyb3Agb3JnLWVsZW1lbnQtY3JlYXRlIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmct ZWxlbWVudC1rZXl3b3JkLXBhcnNlciBvcmctbWFjcm8tLWZpbmQta2V5d29yZC12YWx1ZSBvcmct bWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXplLXRlbXBsYXRlcyBsZXQg cHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDEgW2Zp bGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYgb3IgbGV0IGlmIGxldCB3 aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQqIGlmIGlmICIj PGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+Il0gMSBbc2F2ZS1leGN1cnNpb24gcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZiBs ZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFnZS1maWxlLWhhbmRsZXIgIiM8c3ViciBpbnNl cnQtZmlsZS1jb250ZW50cz4iIGFwcGx5IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1m aWxlLWNvbnRlbnRzXSAzIFtzcC0tdXBkYXRlLXNwLXBhaXItbGlzdCBzcC11cGRhdGUtbG9jYWwt cGFpcnMgLWVhY2ggc3AtLXVwZGF0ZS1sb2NhbC1wYWlycyBzcC0taW5pdCBzbWFydHBhcmVucy1t b2RlIHR1cm4tb24tc21hcnRwYXJlbnMtbW9kZSBzbWFydHBhcmVucy1nbG9iYWwtbW9kZS1lbmFi bGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFj MzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0XSAzIFtwcm9nbiBpZiBs ZXQqIHByb2duIGlmIGRpci1sb2NhbHMtLWFsbC1maWxlcyBmdW5jYWxsIGlmIHNldHEgd2hpbGUg bGV0IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQg cHJvZ25dIDYgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1p bnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCpdIDMgW2xldCBsZXQgIiM8bGFtYmRhIDB4 MzRhNmIzZGY5Y2I+IiBmdW5jYWxsIGNvbmQgbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFz c29jaWF0ZWQgc2V0cSBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlYWQgcHJvZ24gbGV0 KiBvcmctcGVyc2lzdC1sb2FkIHByb2duXSAxIFtlcXVhbCBpZiBpZiBsZXQgaWYgbGV0IHdoaWxl IGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCogaWYgaWYgIiM8bGFt YmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHFdIDEgW2FuZCBpZiBlZGl0b3Jjb25m aWctLWFkdmljZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1jb250ZW50 cyBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQgb3Jn LXBlcnNpc3QtLXJlYWQtZWxpc3AtZmlsZSBvciBzZXRxIGlmIHByb2duXSAxIFtmdW5jdGlvbiBt YXBjYXIgYXBwZW5kIG9yIGxldCBpZiBsZXQgcHJvZ24gaWYgb3JnLXNldC1yZWdleHBzLWFuZC1v cHRpb25zIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmXSAxIFtmdW5jdGlvbiBt YXBjYXIgIiM8bGFtYmRhIDB4MWUxMDlhYWMwY2QzZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25k IGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGlzdCBvcmctcGVyc2lzdC0t ZmluZC1pbmRleCBvciBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCpd IDEgW2xldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxl dCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmls ZS1uYW1lIGxldF0gMSBbaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGlmIGxldCAi IzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJs ZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgc2V0cSBhbmQgbGV0ICIjPGxhbWJkYSAweDFi ODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBz by1sb25nLS1zZXQtYXV0by1tb2RlXSAzIFthbmQgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5z ZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29udGVudHMgbGV0IGlmIHByb2du IHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGFnZS1yZWFkLW91dHB1dCBp ZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlXSAxIFtpbmhpYml0LWxvY2Fs LXZhcmlhYmxlcy1wIHNvLWxvbmctLWNoZWNrLWhlYWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0 by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2Rl IGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseV0gNyBbbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2Nv bnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5v cm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFmPiIgbWFwY2FyICIjPGxhbWJk YSAweDFlMTJiOGZiZmZhOGRhPiJdIDIgW2xldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWdl LWZpbGUtaGFuZGxlciAiIzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHkgaWYgZWRp dG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUt Y29udGVudHMgbGV0IGluc2VydC1maWxlLWNvbnRlbnRzLWxpdGVyYWxseSBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQqXSAxIFtsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFz LWRpcmVjdG9yeSBsZXQgaWYgb3IgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBh YmJyZXZpYXRlLWZpbGUtbmFtZSBpZl0gMSBbYXV0by1zYXZlLW1vZGUgcHJvZ24gaWYgaWYgIiM8 bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxl dCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2 ZDM1Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseSBhZnRl ci1maW5kLWZpbGVdIDIgW2lmIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlv bnMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0w IHByb2duIGlmIGxldF0gMiBbY29uZCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1l IGlmIHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYg bGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXRd IDEgW2xldCBpZiBsZXQgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxlLXJlbGF0 aXZlLW5hbWUgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3Qt Y3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFs LW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3Jt YWwtbW9kZV0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSA1 OSBbbm90IHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1m aW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCog aGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcy1ub24tZmls ZS1idWZmZXIgcHJvamVjdC0tdmFsdWUtaW4tZGlyIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZp bmQtaW4tZGlyZWN0b3J5XSAxIFtyZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgY29uY2F0IG9y Zy1tYWtlLW9wdGlvbnMtcmVnZXhwIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtZXhjdXJzaW9uIGxldCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBsZXQqIG9yZy1jb2xs ZWN0LWtleXdvcmRzIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnNdIDIg W2lmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGxl dCBmaW5kLWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12aXNpdGluZyBsZXQg IiM8bGFtYmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxldCArb3JnLS1vcHRpbWl6 ZS1iYWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBhcHBseSBvcmctZ2V0LWFnZW5kYS1maWxl LWJ1ZmZlcl0gMyBbbGV0IGNvbmQgZmlsZS10cnVlbmFtZSBlcXVhbCBhbmQgaWYgb3JnLXJvYW0t ZGVzY2VuZGFudC1vZi1wIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wIGFuZCBpZiBvcmct cm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseSBkZWxldGUtZmlsZV0gMSBbaWYg c3Vic3RyaW5nIGlmIGxldCBmaWxlLW5hbWUtc2Fucy12ZXJzaW9ucyBpZiBsZXQgaW5oaWJpdC1s b2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgc2V0cSBhbmQgc2F2 ZS1leGN1cnNpb24gbGV0XSAyIFsiIzxjb21waWxlZCAweGEwODFlMDA5OTMyNmVhMD4iIHVuZG8t dHJlZS1vdmVycmlkZGVuLXVuZG8tYmluZGluZ3MtcCB0dXJuLW9uLXVuZG8tdHJlZS1tb2RlIGds b2JhbC11bmRvLXRyZWUtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUt aG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24g aWYgbGV0IGlmXSAxIFthcHBseSBkZWxldGUtZmlsZSBpZiBhZ2UtZGVsZXRlLW91dHB1dC1maWxl IGlmIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFw cGx5IGlmIGxldF0gMiBbbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5h bWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVu YW1lXSA0IFstc29ydCBzcC0tdXBkYXRlLXNwLXBhaXItbGlzdCBzcC11cGRhdGUtbG9jYWwtcGFp cnMgLWVhY2ggc3AtLXVwZGF0ZS1sb2NhbC1wYWlycyBzcC0taW5pdCBzbWFydHBhcmVucy1tb2Rl IHR1cm4tb24tc21hcnRwYXJlbnMtbW9kZSBzbWFydHBhcmVucy1nbG9iYWwtbW9kZS1lbmFibGUt aW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2 NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duXSAyIFtzZXRxIHdoaWxlIGFuZCBsZXQqIG9yIGxldCBm aW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVh NDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0XSAyIFthbmQgaWYgZWRpdG9yY29uZmlnLS1hZHZp Y2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29udGVudHMgbGV0IGNv bmRpdGlvbi1jYXNlIGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3NlbGVj dC0xIGlmIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iXSAxIFtjb25k IGZpbGUtdHJ1ZW5hbWUgZXF1YWwgYW5kIGlmIG9yZy1yb2FtLWRlc2NlbmRhbnQtb2YtcCBsZXQq IHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMtLWRl bGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWZdIDQgW3NldHEgd2hpbGUgbGV0IGluaGli aXQtbG9jYWwtdmFyaWFibGVzLXAgbm90IGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZm PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1 dG8tbW9kZSBhcHBseSBzZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1jYXNlIGxldCBub3JtYWwtbW9k ZSBpZl0gMSBbd2l0aC1uby13YXJuaW5ncyBvcmctcGVyc2lzdC0tZmluZC1pbmRleCBsZXQqIHBy b2duIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVhZCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LWxv YWQgcHJvZ24gaWYgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGxdIDEgW2lmIHN1YnN0cmluZyBp ZiBsZXQgZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgYXV0by1taW5vci1tb2RlLS1wbGFpbi1maWxl bmFtZSBhdXRvLW1pbm9yLW1vZGUtLXJ1bi1hdXRvIGF1dG8tbWlub3ItbW9kZS1zZXQgYXBwbHkg IiM8Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBh cHBseSBzZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1jYXNlIGxldCBub3JtYWwtbW9kZV0gMSBbYW5k IGlmIHdhcm4tbWF5YmUtb3V0LW9mLW1lbW9yeSBwcm9nbiBpZiBsZXQqIGlmIGlmICIjPGxhbWJk YSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1h ZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdF0gMSBbaWYg b3IgbGV0IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBlcXVhbCBhbmQgaWYgb3JnLXJv YW0tZGVzY2VuZGFudC1vZi1wIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wXSAyIFtsZXQq IGdsb2JhbC1obC1saW5lLW1vZGUtY21oaCB0ZXh0LW1vZGUgb3V0bGluZS1tb2RlIGxldCBwcm9n biBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBs ZXQgaWZdIDEgW3NldHEgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2gg bGV0IHdoaWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWYgaWZdIDIgW3Jl Z2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1v cHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3Jv dXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVn ZXhwLW9wdCBjb25jYXQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAgbGV0IHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb25dIDEgW2xldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0 LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIg bGV0IHdoaWxlIGxldF0gMSBbYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUtZG9taW5h dGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGly LWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGNvbmRp dGlvbi1jYXNlIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0t aGFjay1sb2NhbC12YXJpYWJsZXNdIDMgW3Byb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2pl Y3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVj dC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9i YWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1t b2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHBy b2duIGlmXSAxIFtvciBmaWxlLW5ld2VyLXRoYW4tZmlsZS1wIGFuZCBpZiBjb25kIGxldCogaWYg IiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0 IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFl Njk2ZDM1Yjc1PiIgYXBwbHldIDEgW29yIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5h bWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQq IGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseV0gMSBbd2hpbGUgbGV0 IGZpbGUtdHJ1ZW5hbWUgZXF1YWwgYW5kIGlmIG9yZy1yb2FtLWRlc2NlbmRhbnQtb2YtcCBsZXQq IHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMtLWRl bGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGVdIDEgW3doaWxlIGxldCBmaWxlLXRydWVuYW1l IGFiYnJldmlhdGUtZmlsZS1uYW1lIGlmIHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmlu ZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgx MzJhPiIgYXBwbHkgc2V0cV0gMSBbaWYgd2hpbGUgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxl dCBmaWxlcy0tdHJhbnNmb3JtLWZpbGUtbmFtZSBpZiBsZXQgaWYgIiM8bGFtYmRhIDB4MjRiNjc2 ODA1NmY4NmJhPiIgZnVuY2FsbCBsZXQgZG9vbS1tYWtlLWhhc2hlZC1hdXRvLXNhdmUtZmlsZS1u YW1lLWEgYXBwbHkgbWFrZS1hdXRvLXNhdmUtZmlsZS1uYW1lXSA0IFtnZW5lcmFsLXVuYmluZC1u b24tcHJlZml4LWtleSBhcHBseSBkZWZpbmUta2V5IGJyZWFkY3J1bWItLWZvcm1hdC1wcm9qZWN0 LW5vZGUgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1 bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1v ZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1o b29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMF0gMSBbb3Jn LWZvbGQtY29yZS1zZXQtZm9sZGluZy1zcGVjLXByb3BlcnR5ICIjPGNvbXBpbGVkIC0weDQxOTQz YzkxMmI3OTZlMT4iIG9yZy1mb2xkLWNvcmUtYWRkLWZvbGRpbmctc3BlYyBvcmctZm9sZC1jb3Jl LWluaXRpYWxpemUgb3JnLWZvbGQtaW5pdGlhbGl6ZSBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2Fs bCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0XSAyIFtvcmctbWFjcm8t LWZpbmQtZGF0ZSBvcmctbWFjcm8tLWNvbGxlY3QtbWFjcm9zIG9yZy1tYWNyby1pbml0aWFsaXpl LXRlbXBsYXRlcyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0 by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSA0IFsi IzxzdWJyIGVudnJjLS11cGRhdGU+IiBhcHBseSBlbnZyYy0tdXBkYXRlIGVudnJjLW1vZGUgZW52 cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2Rl IGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseV0gMyBbbGV0IHByb2duIHVu d2luZC1wcm90ZWN0IGxldCBmaWxlLXJlbGF0aXZlLW5hbWUgbGV0KiBwcm9nbiBpZiBvcmctcm9h bS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5 IGRlbGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGVdIDEgW2FuZCBpZiBsZXQgbGV0 IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGlm IHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWZdIDMg W3doaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgaWYgbGV0ICIjPGxh bWJkYSAweDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBh cHBseSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXRxIGFuZCBsZXQgIiM8bGFtYmRhIDB4MWI4MGQw OGMwMzA2NzA2Zj4iIGFwcGx5XSAxIFtpZiB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5h bWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVu YW1lIGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0XSAxIFtzZWN1cmUtaGFzaCBzZXRxIGlmIGxl dCAiIzxsYW1iZGEgMHgzM2E2YmIyNjVjYj4iIGZ1bmNhbGwgY29uZCBsZXQqIG9yZy1wZXJzaXN0 LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBs ZXQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbl0gMSBbYWR2aWNlLS10d2Vh ayBhZHZpY2UtLXJlbW92ZS1mdW5jdGlvbiBhZHZpY2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRk ICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1i ZGFfMzc+IiBldmFsLWFmdGVyLWxvYWQgY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMz NjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3RdIDEgW2Z1bmN0aW9uIGxl dCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFm PiIgbWFwY2FyICIjPGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCog Y29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxpc3Qgb3JnLXBlcnNp c3QtLWZpbmQtaW5kZXggb3Igb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uXSAyIFtzZXQtYnVm ZmVyIHNhdmUtY3VycmVudC1idWZmZXIgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVy LXZpc2l0aW5nIGFuZCBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBh cHBseSBzZXRxIGxldF0gMyBbc3AtLW1lcmdlLXBhaXJzIHNwLS1tZXJnZS1wYWlyLWNvbmZpZ3Vy YXRpb25zIHNwLXVwZGF0ZS1sb2NhbC1wYWlycyAtZWFjaCBzcC0tdXBkYXRlLWxvY2FsLXBhaXJz IHNwLS1pbml0IHNtYXJ0cGFyZW5zLW1vZGUgdHVybi1vbi1zbWFydHBhcmVucy1tb2RlIHNtYXJ0 cGFyZW5zLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwt bW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ25dIDMgW2lm IGlmIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgZmlsZS1uYW1lLWFzLWRpcmVj dG9yeSBsZXQgaWYgb3IgbGV0IGlmIGxldCB3aGlsZV0gMSBbZmlsZS1uZXdlci10aGFuLWZpbGUt cCBhbmQgaWYgY29uZCBsZXQqIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBs eSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBs eSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJj ZjRiYjVkOTg5Yzk4PiJdIDEgW2JldHRlci1qdW1wZXItbG9jYWwtbW9kZSB0dXJuLW9uLWJldHRl ci1qdW1wZXItbW9kZSBiZXR0ZXItanVtcGVyLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhv b2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBs eSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBs eSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5XSAxIFtjY29udi1hbmFseXpl LWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxl dCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFm PiIgbWFwY2FyICIjPGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCog Y29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIHNldHFdIDMgW2FwcGx5 IGluc2VydC1maWxlLWNvbnRlbnRzIGxldCBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBzYXZlLWN1 cnJlbnQtYnVmZmVyIGxldCBhZ2UtcmVhZC1vdXRwdXQgaWYgcHJvZ24gdW53aW5kLXByb3RlY3Qg YWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duXSAzIFthbmQgbGV0IHBy b2duIGlmIG9yZy1leHRyYWN0LWxvZy1zdGF0ZS1zZXR0aW5ncyBsZXQgbGV0IHdoaWxlIGxldCBs ZXQqIGxldCB3aGlsZSBsZXQgbGV0IGlmIGxldF0gMSBbd2hpbGUgbGV0IGlmIGxldCBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGxldCogcHJvZ24gaWYgb3JnLXJv YW0tZmlsZS1wIGFuZCBpZiBvcmctcm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBs eV0gMSBbLSA8IGFuZCBsZXQgb3Igbm90IGxldCBub3JtYWwtYmFja3VwLWVuYWJsZS1wcmVkaWNh dGUgZnVuY2FsbCBub3QgYW5kIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1ub3Nl bGVjdC0xIGlmIGxldCpdIDEgW2Z1bmN0aW9uIGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQq IGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQg ZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1u b3NlbGVjdCBzZXRxIGlmXSAxIFtsZXQgcHJvZ24gaWYgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRp b25zIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUt MCBwcm9nbiBpZiBsZXQgaWZdIDMgW3NldCBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9n biBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFw cGx5LWFsaXN0IHNldHEgaWZdIDQgW2NkciBhZ2UtY29udGV4dC1yZXN1bHQtZm9yIG5yZXZlcnNl IGFnZS1jb250ZXh0LXNldC1yZXN1bHQtZm9yIGFnZS13YWl0LWZvci1jb21wbGV0aW9uIHByb2du IHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5 IGlmXSAxIFtzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBs ZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBs ZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmls ZS1ub3NlbGVjdCBzZXRxXSAzIFtsZXQgZ2xvYmFsLWhsLWxpbmUtbW9kZS1lbmFibGUtaW4tYnVm ZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5 MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRv c2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBwbHkgIiM8Y29t cGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+Il0gMSBbbGV0IGZpbGUtcmVtb3RlLXAgZW52cmMtZ2xv YmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGFwcGx5IHJ1bi1tb2RlLWhvb2tz IG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxl dCBpZl0gMiBbcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFnZS1maWxlLWhhbmRsZXIgIiM8c3Vi ciBpbnNlcnQtZmlsZS1jb250ZW50cz4iIGFwcGx5IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWlu c2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNvbnRlbnRzIGxldCBpbnNlcnQt ZmlsZS1jb250ZW50cy1saXRlcmFsbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBwcm9nbl0g MSBbb2Nsb3N1cmUtLWNvcHkgYWR2aWNlLS1jb3B5IGFkdmljZS0tbWFrZSBhZHZpY2UtLWFkZC1m dW5jdGlvbiBhZHZpY2UtYWRkIG9yZy1mb2xkLS1hZHZpY2UtZWRpdC1jb21tYW5kcyBsZXQgcHJv Z24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWZd IDEgW3N1YnN0cmluZyBkZWNvZGUtY29kaW5nLWluc2VydGVkLXJlZ2lvbiBzYXZlLXJlc3RyaWN0 aW9uIGFnZS1maWxlLWRlY29kZS1hbmQtaW5zZXJ0IGlmIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9u IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMg YXBwbHkgaWYgbGV0IHByb2duXSA1IFtjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVu Y3Rpb24gc2V0IG9yZy1zZXR1cC1maWxsaW5nIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHBy b2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDEgW21hcGNhciAiIzxj b21waWxlZCAweDE4NTc2NmIwN2MyMzk1ZjQ+IiBhcHBseSBzZXEtbWFwIHNlcS1maWx0ZXIgbGV0 IHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1j YWNoZS1yZXNldCBsZXQgcHJvZ24gb3JnLW1vZGVdIDEgW2xpbmUtZW5kLXBvc2l0aW9uIHNlYXJj aC1mb3J3YXJkIGFuZCBsZXQgc2V0LWF1dG8tbW9kZS0xIGxldCBzYXZlLWV4Y3Vyc2lvbiBjYXRj aCBoYWNrLWxvY2FsLXZhcmlhYmxlcy1wcm9wLWxpbmUgYXBwZW5kIGxldCBpZiBsZXQgIiM8bGFt YmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFw cGx5XSAxIFtsZXQqIGxldCB3aGlsZSBsZXQgbGV0IGNvbmQgb3JnLS10YWctYWRkLXRvLWFsaXN0 IHNldHEgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIGxldCB3aGlsZSBsZXQgbGV0XSAxIFtjb25kIGxldCogY29uZCBsZXQqIG9yZy1wZXJz aXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3Ig b3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJl Z2lzdGVyIHByb2duIGlmIHByb2duXSAxIFtlcXVhbCBpZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBm aWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNpdGlu ZyBhbmQgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiJdIDIgW29yZy1j b2xsZWN0LWtleXdvcmRzIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMg bGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHBy b2duIGlmIGxldF0gMSBbc2V0IHByb2duIGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIg cHJvZ24gaWYgb3JnLWVsZW1lbnQtLWNhY2hlLXBlcnNpc3QtYWZ0ZXItcmVhZCBydW4taG9vay13 aXRoLWFyZ3Mgd2hpbGUgbGV0KiBwcm9nbiBpZiBpZiBwcm9nbl0gMSBbaW5oaWJpdC1sb2NhbC12 YXJpYWJsZXMtcCBub3QgYW5kIGlmIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWEx MWY3Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFy aWFibGVzIGppbngtbW9kZSBqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1idWZm ZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rc10gMSBbcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1w IGFuZCBpZiBvcmctcm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseSBkZWxldGUt ZmlsZSBpZiBhZ2UtZGVsZXRlLW91dHB1dC1maWxlIGlmIHVud2luZC1wcm90ZWN0IGFnZS1kZWNy eXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbl0gMSBbY2wtc3Vic3QgcHJvamVjdGls ZS1wcm9qZWN0LXJvb3QgcHJvamVjdC1wcm9qZWN0aWxlIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0 b3J5IHByb2plY3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1 bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFs Zi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhv b2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBs eSBwcm9nbl0gMSBbbGV0IGZpbGUtdHJ1ZW5hbWUgZXF1YWwgYW5kIGlmIG9yZy1yb2FtLWRlc2Nl bmRhbnQtb2YtcCBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0t ZGItYXV0b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWZdIDEgW3doaWxl IGxldCBvcmctYXNzaWduLWZhc3Qta2V5cyBzZXRxIHByb2duIGlmIGxldCBwcm9nbiBpZiBvcmct c2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24g aWZdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxs IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0 LS1ub3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxXSAxIFtzZXRxIGxldCBpZiBsZXQgd2hpbGUgbGV0 IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgaWYgc2V0cSBzYXZlLWN1cnJlbnQt YnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmXSAzIFt3aGlsZSBsZXQg bG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyICIjPHN1YnIgZW52cmMt LXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwtbW9k ZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRh IC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duXSAxIFthZ2UtY29udGV4dC1zZXQtcmVz dWx0LWZvciBhZ2Utd2FpdC1mb3ItY29tcGxldGlvbiBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2Ut ZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5k LXByb3RlY3RdIDIgW29yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2du IGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlIGxldCBvcmctZWxlbWVudC1jYWNoZS1y ZXNldCBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbF0gMiBbYW5kICIjPGxhbWJkYSAweDI3MDQz MGU3YWM0MmJlPiIgIiM8Y29tcGlsZWQgLTB4OTgyZjI5ODc0ODE1ZTlhPiIgbWFwYyBzZXEtZG8g c2VxLWZpbmQgbGV0IGxldCogYWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24g dW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlXSAzIFts ZXQgb3JnLXJvYW0tLWZpbGUtbmFtZS1leHRlbnNpb24gbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1m aWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRl bGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5kLXByb3RlY3QgYWdl LWRlY3J5cHQtZmlsZV0gMSBbIiM8Y29tcGlsZWQgMHhhZGJmNDZlMWE2ZDY4NWE+IiBhZHZpY2Ut LWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRkIG9yZy1mb2xkLS1hZHZpY2UtZWRpdC1jb21tYW5kcyBs ZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJv Z24gaWYgbGV0IGlmXSAxIFtmYWNlLWF0dHJpYnV0ZSBmYWNlLWZvcmVncm91bmQgbGlzdCBuY29u YyByZW1vdmUgbGV0IG9yZy1maW5kLWludmlzaWJsZS1mb3JlZ3JvdW5kIGxldCBsZXQgcHJvZ24g b3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDEgW21hcGNhciBj b25zIGxldCogb3JnLWNvbGxlY3Qta2V5d29yZHMgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhw cy1hbmQtb3B0aW9ucyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQt YXV0by1tb2RlLTBdIDEgW29yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gaWYg cHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBp ZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCB3aGlsZV0gMSBbYWZ0ZXItaW5zZXJ0LWZpbGUtc2V0 LWNvZGluZyAiIzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHkgaWYgZWRpdG9yY29u ZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaW5zZXJ0LWZpbGUtY29udGVu dHMgbGV0IGluc2VydC1maWxlLWNvbnRlbnRzLWxpdGVyYWxseSBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0XSAxIFth bmQgd2hpbGUgYW5kIGxldCogb3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlm IGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXRdIDMg W3VuZG8tYXV0by0tYm91bmRhcnktdGltZXIgYXBwbHkgdGltZXItZXZlbnQtaGFuZGxlciBzbGVl cC1mb3IgYWdlLXdhaXQtZm9yLWNvbXBsZXRpb24gcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRl Y3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCog YWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWZdIDEyIFtpZiBsZXQgaW5oaWJp dC1sb2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgc28tbG9uZy0t Y2hlY2staGVhZGVyLW1vZGVzIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8t bW9kZSBjb25kaXRpb24tY2FzZSBsZXQgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2 NWQ4YzQ5MWE2ZT4iXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZv cm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCog b3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1j b2xsZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gMSBbbGV0KiBkaXItbG9jYWxzLWZpbmQtZmls ZSBsZXQgcHJvZ24gaWYgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNrLWRp ci1sb2NhbC12YXJpYWJsZXMgY29uZGl0aW9uLWNhc2UgaWYgbGV0ICIjPGxhbWJkYSAweDExMmFi ZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNrLWxv Y2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rc10gMSBbbGV0IGlmIGxldCBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmls ZS1wIGFuZCBpZiBvcmctcm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseSBkZWxl dGUtZmlsZV0gMyBbc2V0cSBwcm9nbiBpZiB3aGlsZSBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0IGZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIGlmIGxldCBpZiAiIzxsYW1iZGEgMHgyNGI2 NzY4MDU2Zjg2YmE+IiBmdW5jYWxsIGxldCBkb29tLW1ha2UtaGFzaGVkLWF1dG8tc2F2ZS1maWxl LW5hbWUtYV0gMiBbbGV0IGlmIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlv bnMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0w IHByb2duIGlmXSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNs b3N1cmVdIDEyIFtvciBub3Qgd2hpbGUgbGV0IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wIGFuZCBp Zl0gMiBbaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxlcy0tdHJhbnNmb3JtLWZp bGUtbmFtZSBpZiBsZXQgaWYgIiM8bGFtYmRhIDB4MjRiNjc2ODA1NmY4NmJhPiIgZnVuY2FsbCBs ZXQgZG9vbS1tYWtlLWhhc2hlZC1hdXRvLXNhdmUtZmlsZS1uYW1lLWEgYXBwbHkgbWFrZS1hdXRv LXNhdmUtZmlsZS1uYW1lIG9yXSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVu Y3Rpb24gaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgY2RyIGxldCogY29uZGl0aW9uLWNh c2UgaWYgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxl ZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5XSAxIFts ZXQgaW5zZXJ0LWZpbGUtY29udGVudHMtbGl0ZXJhbGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxl dCogcHJvZ24gdW53aW5kLXByb3RlY3Qgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgcHJvZ24gaWYg YWdlLXNjcnlwdC1wIGFzZXQgbGV0KiBwcm9nbiBsZXQqXSAxIFt1bndpbmQtcHJvdGVjdCBhZ2Ut ZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0IGFnZS1maWxlLWhhbmRsZXIgIiM8c3ViciBpbnNlcnQtZmlsZS1jb250ZW50 cz4iXSAyIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFs eXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVy cHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29j aWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3Jn LXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ25dIDEgW3N1YnN0cmluZyBsZXQgaWYgbGV0IGlmIGxldCBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGJyZWFkY3J1bWItLXBy b2plY3QtY3J1bWJzLTEgYnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJu LW9uLWxvY2FsLW1vZGUtb24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1l bmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3NdIDEgW2lmIGxldCB3aGls ZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQg aWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFsXSAxIFtnZW5lcmFsLXVuYmluZC1u b24tcHJlZml4LWtleSBhcHBseSBkZWZpbmUta2V5IGxldCBsZXQgcHJvZ24gb3JnLW1vZGUgZnVu Y2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmXSAyIFtsZXQg aWYgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5hbWUgaWYgc2V0cSBzYXZlLWN1 cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmICIjPGxh bWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseV0gMSBbc2V0cSBkaXItbG9jYWxzLWZpbmQt ZmlsZSBsZXQgcHJvZ24gaWYgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNr LWRpci1sb2NhbC12YXJpYWJsZXMgY29uZGl0aW9uLWNhc2UgaWYgbGV0ICIjPGxhbWJkYSAweDEx MmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBoYWNr LWxvY2FsLXZhcmlhYmxlcyBydW4tbW9kZS1ob29rc10gMiBbY29tcGFueS1pbml0LWJhY2tlbmQg Y29tcGFueS1tb2RlIGNvbXBhbnktbW9kZS1vbiBnbG9iYWwtY29tcGFueS1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1 ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVw LWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+Il0gMiBbaWYg bGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgbGV0KiBjb25kaXRpb24tY2Fz ZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVk IDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1 dG8tbW9kZSBjb25kaXRpb24tY2FzZV0gMSBbYW5kIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0 KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXRdIDIg W2Rlcml2ZWQtbW9kZS1wICIjPHN1YnIgc2F2ZS1wbGFjZS10by1hbGlzdD4iIGFwcGx5IGlmIGRv b20tLWluaGliaXQtc2F2ZXBsYWNlLWluLWxvbmctZmlsZXMtYSBhcHBseSBzYXZlLXBsYWNlLXRv LWFsaXN0IGtpbGwtYnVmZmVyIGlmIGFnZS1yZXNldCB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlw dC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3RdIDIgW2xldCBm aWxlLXJlbW90ZS1wIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29r cyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkg cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkg IiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseV0gMSBbbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsXSAxIFtucmV2ZXJzZSBhZ2UtY29udGV4dC1z ZXQtcmVzdWx0LWZvciBhZ2Utd2FpdC1mb3ItY29tcGxldGlvbiBwcm9nbiB1bndpbmQtcHJvdGVj dCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ25d IDEgW2xldCB3aGlsZSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1 cnJlbnQtYnVmZmVyIGNhdGNoIGxldCB3aGlsZSBsZXQgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZS1i dWZmZXJzIGlmIGlmIGxldCBvcmctYWdlbmRhLXByZXBhcmVdIDEgW2Njb252LW1ha2UtaW50ZXJw cmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBoYXNoIHByb2duIGxldCBlZGl0b3Jjb25maWctY2Fs bC1nZXQtcHJvcGVydGllcy1mdW5jdGlvbiBzZXRxIHByb2duIGlmIGNvbmRpdGlvbi1jYXNlIGxl dCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxl LW5vc2VsZWN0IHNldHEgaWZdIDIgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXNdIDI0IFtqaXQtbG9jay1yZWdpc3RlciBqaW54LW1vZGUgamlueC0tb24gZ2xvYmFs LWppbngtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3Jn LW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlm XSAzIFt0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1pZi1kZXNpcmVkIGdsb2Jh bC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1v ZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1w cm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4 ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBwbHldIDIgW2xpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXgg b3Igb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9y Zy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmXSAxIFtsZXQgaW5o aWJpdC1sb2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgbGV0IHNh dmUtZXhjdXJzaW9uIGNhdGNoIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBhcHBlbmQg bGV0IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1s b2NhbC12YXJpYWJsZXNdIDEgW2FuZCBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJy ZXZpYXRlLWZpbGUtbmFtZSBzZXRxIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZW52cmMtLWZpbmQt ZW52LWRpciAiIzxzdWJyIGVudnJjLS11cGRhdGU+IiBhcHBseSBlbnZyYy0tdXBkYXRlIGVudnJj LW1vZGUgZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmXSAx IFthZHZpY2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRkICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZm NzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMzc+IiBldmFsLWFmdGVyLWxvYWQg Y3RybGYtbG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBp ZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWFdIDEgW2lmIGhh Y2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVz IGNvbmRpdGlvbi1jYXNlIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28t bG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVu LW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZl0gMSBbbm90IGRvb20tcHJvdGVj dC1mYWxsYmFjay1idWZmZXItaCBraWxsLWJ1ZmZlciBpZiBhZ2UtcmVzZXQgdW53aW5kLXByb3Rl Y3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90 ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0XSAxIFts ZXQgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyICIjPHN1YnIgZW52 cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFt YmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0XSAxIFtz ZXRxIGxldCB3aGlsZSBsZXQgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQgcHJvZ24gaWYg aGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJsZXMgbGV0KiBoYWNrLWRpci1sb2NhbC12YXJpYWJs ZXMgaGFjay1kaXItbG9jYWwtdmFyaWFibGVzLW5vbi1maWxlLWJ1ZmZlciBwcm9qZWN0LS12YWx1 ZS1pbi1kaXIgcHJvamVjdC10cnktdmMgcHJvamVjdC0tZmluZC1pbi1kaXJlY3RvcnldIDEgW3Nl dGNhciB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBp ZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGZpbGUtbmFtZS1hcy1kaXJl Y3RvcnkgbGV0XSAxIFtjdHJsZi1sb2NhbC1tb2RlIGN0cmxmLW1vZGUtZW5hYmxlLWluLWJ1ZmZl cnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYg c2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlz dCBzZXRxXSA0IFtvcmctcGVyc2lzdC0tZGlzcGxheS10aW1lIHByb2cxIGxldCBjb25kaXRpb24t Y2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQgb3Jn LXBlcnNpc3QtLXJlYWQtZWxpc3AtZmlsZSBvciBzZXRxIGlmIHByb2duIGlmIGxldCpdIDEgW2Fu ZCB3aGlsZSBhbmQgbGV0KiBvciBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFz ZS1idWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVu Y2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBw bHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWZdIDMgW3Byb2duIGlmIGxldCBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQgZmlsZXMtLXRyYW5zZm9ybS1maWxlLW5hbWUgaWYgbGV0IGlmICIj PGxhbWJkYSAweDI0YjY3NjgwNTZmODZiYT4iIGZ1bmNhbGwgbGV0IGRvb20tbWFrZS1oYXNoZWQt YXV0by1zYXZlLWZpbGUtbmFtZS1hIGFwcGx5IG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZV0gMSBb dW5kby10cmVlLW92ZXJyaWRkZW4tdW5kby1iaW5kaW5ncy1wIHR1cm4tb24tdW5kby10cmVlLW1v ZGUgZ2xvYmFsLXVuZG8tdHJlZS1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBu b3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29t cGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseV0gMiBbcHJvZ24gaWYgbGV0IGlmIGxldCAi IzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJs ZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVu Y2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDEgW2ZpbGUtcmVsYXRpdmUtbmFtZSBs ZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMt LWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWYgYWdlLWRlbGV0ZS1vdXRwdXQtZmls ZSBpZiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHFdIDEgW2Z1bmN0aW9uIGxl dCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgcHJvZ24gcHJvZ24gbGV0 KiBvcmctcGVyc2lzdC1yZWFkIHByb2duIGxldCogb3JnLXBlcnNpc3QtbG9hZCBwcm9nbiBpZiBs ZXQgcHJvZ24gb3JnLW1vZGVdIDEgW2FuZCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0 KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1k ZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGUg aWYgdW53aW5kLXByb3RlY3RdIDEgW2NkciBsZXQgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwg cHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2Rl LS1hcHBseS1hbGlzdCBzZXRxXSAzIFthbmQgaWYgaGFjay1kaXItbG9jYWwtLWdldC12YXJpYWJs ZXMgY2RyIGxldCogY29uZGl0aW9uLWNhc2UgaWYgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMw NjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1z ZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0XSAxIFth bmQgcHJvZ24gb3IgcHJvZ24ga2lsbC1idWZmZXIgaWYgYWdlLXJlc2V0IHVud2luZC1wcm90ZWN0 IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5XSAxIFtsZXQgbm9ybWFs LW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVk IDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+ IiBhcHBseSBhZnRlci1maW5kLWZpbGUgaWZdIDEgW3NldHEgcHJvZ24gaWYgbGV0IGxldCAiIzxs YW1iZGEgMHgzM2ZkYjFmYTVjYj4iIGZ1bmNhbGwgY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3Jt YWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJv Z24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3Rlcl0gMSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxs IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBoYXNoIHByb2duIGxl dCBlZGl0b3Jjb25maWctY2FsbC1nZXQtcHJvcGVydGllcy1mdW5jdGlvbiBzZXRxIHByb2duIGlm XSAxIFt3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBp ZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZl0gMSBb aWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0 cSBsb2NhdGUtZG9taW5hdGluZy1maWxlIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4t ZGlyZWN0b3J5IHByb2plY3QtY3VycmVudCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJy ZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9u LWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMg cnVuLWhvb2tzXSAzIFthbmQgaWYgaWYgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBwcm9nbiBpZiBs ZXQgd2hpbGUgbGV0IGxldCBnbG9iYWwtaGwtbGluZS1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1 bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZl0gMSBbcHJvZ24gaWYgaWYgcHJvZ24gaWYgbGV0KiBw cm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlYWQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1s b2FkIHByb2duIGlmIGxldF0gMSBbaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90 ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBzZXRxIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUg bGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQgcHJvZ24gaWZdIDEgW2ZvbnQtbG9jay1tb2Rl IHR1cm4tb24tZm9udC1sb2NrIHR1cm4tb24tZm9udC1sb2NrLWlmLWRlc2lyZWQgZ2xvYmFsLWZv bnQtbG9jay1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBv cmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQg aWZdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQt Y2xvc3VyZSBmdW5jdGlvbiBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAiIzxs YW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHldIDEgW3N0cmluZz0gYW5kIGlmIGVkaXRv cmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNv bnRlbnRzIGxldCBjb25kaXRpb24tY2FzZSBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5k LWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmXSA0IFthbmQgaWYgbGV0IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCBmaWxlLW5hbWUtc2Fucy1leHRlbnNpb24gZmlsZS1uYW1lLWJhc2UgYnJl YWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJyZWFk Y3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJlYWRj cnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZl0g MSBbc2F2ZS1leGN1cnNpb24gbGV0IG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3JnLWNv bGxlY3Qta2V5d29yZHMgbGV0IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBs ZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZl0gMSBbaWYgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IHByb2duIGlmIG9y IGFuZCBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBpZiBs ZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMSBbcHJvZ24gaWYgc2F2ZS1jdXJy ZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHEgaWYgaWYgd2hpbGUgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10b10gNCBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5j dGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxldCogY29ucyBzZXRx IGlmXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5 emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5j dGlvbiBsZXQqIGxldCB3aGlsZSBsZXQgbGV0IGNvbmQgb3JnLS10YWctYWRkLXRvLWFsaXN0XSAx IFthbmQgY29uZCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCogaWYgaWYg IiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jj b25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0 IHNldHFdIDEgW29yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNo ZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGls ZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uXSAyIFtzZXRxIGlmIGxldCogaWYgaWYgIiM8bGFt YmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWct LWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNldHEg aWYgbGV0XSAxIFt5YXMtLW1vZGVzLXRvLWFjdGl2YXRlIHlhcy1taW5vci1tb2RlIHlhcy1taW5v ci1tb2RlLW9uIHlhcy1nbG9iYWwtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYg bm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2du IHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNv bXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiJdIDEgW21hY3JvZXhwLW1hY3JvZXhwYW5kIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFu ZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBl cnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0 aW9uXSAxIFtpZiBpZiBpZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGZpbGUt bmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldCBpZiBsZXRdIDIgW2FkdmljZS0tY2FyIGFk dmljZS0tbWVtYmVyLXAgYWR2aWNlLS1hZGQtZnVuY3Rpb24gYWR2aWNlLWFkZCAiIzxzdWJyIEY2 MTZlNmY2ZTc5NmQ2Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzM3PiIgZXZh bC1hZnRlci1sb2FkIGN0cmxmLWxvY2FsLW1vZGUgY3RybGYtbW9kZS1lbmFibGUtaW4tYnVmZmVy cyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2 ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0XSAxIFthcHBseSBzZXEtZHJvcCBvcmctZWxl bWVudC1jcmVhdGUgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LWtleXdvcmQtcGFyc2Vy IGNvbmQgY29uZCBsZXQgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0t Y3VycmVudC1lbGVtZW50IHNldHEgaWZdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw YW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmct cGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBtYXBj YXIgIiM8bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxl dCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGlzdF0gMSBbaWYgbGV0IGNvbmQg bGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNo ZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNv bXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRl ciBwcm9nbl0gMSBbc2V0cSBwcm9nbiBpZiBsZXQgbGV0ICIjPGxhbWJkYSAweDNhMTI5ZTg1ZGNi PiIgZnVuY2FsbCBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNl dHEgb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gMSBbZnVu Y3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAiIzxsYW1iZGEgMHgx MWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNv bmQgbGV0KiBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBw cm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyXSAyIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIHNl cS1maW5kIGxldCBsZXQqIGFnZS0tc3RhcnQgbGV0IGFnZS1zdGFydC1kZWNyeXB0IHByb2duIHVu d2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbl0g MSBbd2hpbGUgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgaWYgbGV0ICIj PGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJh MWJmMWQ0MTg+IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29u ZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlXSAxIFtvcmctc2V0LWZvbnQtbG9jay1kZWZhdWx0 cyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTAg cHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0IHNldHEgaWZdIDEgW2Fz ZXQgbGV0KiBwcm9nbiBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlm IGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWdlLWZpbGUtaGFuZGxlciAiIzxzdWJyIGlu c2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHkgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0 LWZpbGUtY29udGVudHNdIDEgW2lmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0IGZpbmQtZmlsZS1u b3NlbGVjdC0xIGlmIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTliYjI1YTQ4MTMyYT4iIGFw cGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3Qg YXBwbHkgZmluZC1maWxlLW5vc2VsZWN0XSAzIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5h bHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29u di1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVy c2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBsaXN0IG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9y IG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0Kl0gMSBbcHJvZ24gbGV0 IGxldCogYWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3Rl Y3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90 ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHldIDEgW2lmIHByb2du IGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBw cm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cV0gMSBbY29ucyAi IzxsYW1iZGEgMHgzMzI5Mjg0NGI5MjNlPiIgbWFwY2FyIGFwcGVuZCBvciBsZXQgaWYgbGV0IHBy b2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVu Y2FsbCBwcm9nbl0gMSBbZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29j aWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3Jn LXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50 LWJ1ZmZlcl0gMiBbZnVuY3Rpb24gbWFwY2FyICIjPGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIg ZnVuY2FsbCBjb25kIGxldCogY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFp bmVyIHNldHEgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbl0g MSBbb3Igbm90IHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGVudnJjLS1maW5kLWVu di1kaXIgIiM8c3ViciBlbnZyYy0tdXBkYXRlPiIgYXBwbHkgZW52cmMtLXVwZGF0ZSBlbnZyYy1t b2RlIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBhcHBseSBy dW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsXSAyIFsiIzxzdWJyIEY2MTZlNmY2ZTc5NmQ2 Zjc1NzMyZDZjNjE2ZDYyNjQ2MV9hbm9ueW1vdXNfbGFtYmRhXzM3PiIgZXZhbC1hZnRlci1sb2Fk IGN0cmxmLWxvY2FsLW1vZGUgY3RybGYtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3Mg aWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHBy b2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIj PGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiJdIDEgW3doaWxlIGxldCogcHJvZ24gaWYgaWYg cHJvZ24gaWYgbGV0KiBwcm9nbiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlYWQgcHJvZ24gbGV0 KiBvcmctcGVyc2lzdC1sb2FkIHByb2duXSAyIFtsZXQgaWYgc2F2ZS1leGN1cnNpb24gbGV0IGhh Y2stbG9jYWwtdmFyaWFibGVzLS1maW5kLXZhcmlhYmxlcyBhcHBlbmQgbGV0IGlmIGxldCAiIzxs YW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMg YXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgamlueC1tb2RlIGppbngtLW9uIGdsb2JhbC1qaW54 LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnNdIDIgW2xvb2tpbmctYXQtcCBpZiBsZXQgaWYgb3JnLWVs ZW1lbnQtLWNvbGxlY3QtYWZmaWxpYXRlZC1rZXl3b3JkcyBsZXQgY29uZCBzZXRxIGxldCBzYXZl LWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUg bGV0XSAyIFtzZXRxIGxldCBjb25kIGZpbGUtdHJ1ZW5hbWUgZXF1YWwgYW5kIGlmIG9yZy1yb2Ft LWRlc2NlbmRhbnQtb2YtcCBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3Jn LXJvYW0tZGItYXV0b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHldIDEgW3JlZ2V4cC1vcHQtZ3Jv dXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgb3JnLW1vZGVy bi0tbWFrZS1mb250LWxvY2sta2V5d29yZHMgb3JnLW1vZGVybi1tb2RlIG9yZy1tb2Rlcm4tLW9u IGdsb2JhbC1vcmctbW9kZXJuLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1t b2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wXSAx IFt3aGlsZSBsZXQgbGV0IHdoaWxlIGxldCBsZXQgbGV0ICtjb21wYW55LS1iYWNrZW5kcyBzZXQg b3IgK2NvbXBhbnktaW5pdC1iYWNrZW5kcy1oIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmct bW9kZSBmdW5jYWxsIHByb2duXSAxIFtzdHJpbmctbWF0Y2gtcCBsZXQgcHJvZ24gaWYgbGV0IHBy b2duIHVud2luZC1wcm90ZWN0IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHByb2duIGlmIGFnZS1z Y3J5cHQtcCBhc2V0IGxldCogcHJvZ24gbGV0Kl0gMyBbd2hpbGUgbGV0IGluaGliaXQtbG9jYWwt dmFyaWFibGVzLXAgbm90IGFuZCBsZXQgc2V0LWF1dG8tbW9kZS0xIHNvLWxvbmctLWNoZWNrLWhl YWRlci1tb2RlcyBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29u ZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFh NmU+Il0gMSBbaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1t b2RlLTEgbGV0IHNhdmUtZXhjdXJzaW9uIGNhdGNoIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3At bGluZSBhcHBlbmQgbGV0IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28t bG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHldIDUgW2xvY2F0ZS1kb21pbmF0aW5nLWZp bGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQgcHJvZ24gaWYgaGFjay1kaXItbG9jYWwt LWdldC12YXJpYWJsZXMgY2RyIGxldCogY29uZGl0aW9uLWNhc2UgaWYgbGV0ICIjPGxhbWJkYSAw eDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+ IiBzby1sb25nLS1zZXQtYXV0by1tb2RlXSAyIFtsZXQgZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMg aWYgbGV0IGluaGliaXQtbG9jYWwtdmFyaWFibGVzLXAgc28tbG9uZy0tY2hlY2staGVhZGVyLW1v ZGVzIHNvLWxvbmctLXNldC1hdXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24t Y2FzZSBsZXQgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFw cGx5IHByb2duXSAxIFtzZXRxIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgZmlsZXMtLXRy YW5zZm9ybS1maWxlLW5hbWUgaWYgbGV0IGlmICIjPGxhbWJkYSAweDI0YjY3NjgwNTZmODZiYT4i IGZ1bmNhbGwgbGV0IGRvb20tbWFrZS1oYXNoZWQtYXV0by1zYXZlLWZpbGUtbmFtZS1hIGFwcGx5 IG1ha2UtYXV0by1zYXZlLWZpbGUtbmFtZSBvcl0gMSBbcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRp ci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlh YmxlcyBjZHIgbGV0KiBjb25kaXRpb24tY2FzZSBpZl0gMSBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1t YWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gY2wtbWFwY2FuIG1hcGNhciBzZXQgbGV0 IHByb2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXJdIDEgW2FiYnJldmlhdGUtZmlsZS1uYW1l IHNldHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyICIjPHN1YnIg ZW52cmMtLXVwZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBlbnZyYy1nbG9i YWwtbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8 bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duXSAyIFthbmQgaWYgbGV0IGxl dCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBz ZXRxIGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgbGV0KiBkaXItbG9jYWxzLWZpbmQtZmlsZSBsZXQg cHJvZ25dIDIgW2xldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJz aW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBsZXQgd2hpbGUgbGV0IHNhdmUtcmVzdHJp Y3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IG9yZy0tY29sbGVjdC1rZXl3 b3Jkcy0xIGxldCpdIDEgW2F2bC10cmVlLW1hcGMgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJy ZW50LWJ1ZmZlciBwcm9nbiBpZiBvcmctZWxlbWVudC0tY2FjaGUtcGVyc2lzdC1hZnRlci1yZWFk IHJ1bi1ob29rLXdpdGgtYXJncyB3aGlsZSBsZXQqIHByb2duIGlmIGlmIHByb2duXSAxIFtzYXZl LWN1cnJlbnQtYnVmZmVyIHByb2duIGlmIGxldCB3aGlsZSBsZXQgbGV0IGdsb2JhbC1obC1saW5l LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2Rl IGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wXSAxIFt1bndpbmQtcHJvdGVjdCBs ZXQgb3JnLXJvYW0tLWZpbGUtbmFtZS1leHRlbnNpb24gbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1m aWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRl bGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5kLXByb3RlY3RdIDIg W29yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAg b3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1k by1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1l bGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGlsZV0gNCBbY2hhaW4tZG9vbS1maXJz dC1maWxlLWhvb2stdG8tZmluZC1maWxlLWhvb2staCBhcHBseSBhZnRlci1maW5kLWZpbGUgaWYg c2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBp ZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0XSAxIFtk ZXJpdmVkLW1vZGUtcCBhcHBseSB3cy1idXRsZXItZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZl cnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFh NmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3Nh dmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5XSAxIFtub3Qg YW5kIHdoaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgbGV0IHNldC1h dXRvLW1vZGUtMSBzZXRxIGFuZCBzYXZlLWV4Y3Vyc2lvbiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQw OGMwMzA2NzA2Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iXSA1IFtv cmctZWxlbWVudC1jcmVhdGUgbGV0KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1zZWN0aW9u LXBhcnNlciBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50 LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uXSAyIFtl cXVhbCBhbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJy ZXZpYXRlLWZpbGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgYW5kIGxldCogaWZdIDIg W3Byb2duIGlmIGxldCogYWdlLWNvbnRleHQtc2V0LXJlc3VsdC1mb3IgYWdlLXdhaXQtZm9yLWNv bXBsZXRpb24gcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRp dGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUt Y29udGVudHMgYXBwbHkgaWZdIDEgW2JhY2t1cC1maWxlLW5hbWUtcCBub3QgYW5kIGlmIG9yZy1y b2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1k ZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRx IGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0XSAzIFtpZiBsZXQgcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0IGFnZS1maWxlLWhhbmRsZXIgIiM8c3ViciBpbnNlcnQtZmlsZS1jb250 ZW50cz4iIGFwcGx5IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRz IGFwcGx5IGluc2VydC1maWxlLWNvbnRlbnRzIGxldCBjb25kaXRpb24tY2FzZSBpZiBzYXZlLWN1 cnJlbnQtYnVmZmVyXSAxIFtiYWNrdXAtZmlsZS1uYW1lLXAgb3IgaWYgaWYgIiM8bGFtYmRhIC0w eDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0t c2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIg YXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseSBhZnRlci1maW5kLWZp bGVdIDEgW3doaWxlIGxldCBpbmhpYml0LWxvY2FsLXZhcmlhYmxlcy1wIG5vdCBhbmQgaWYgbGV0 IGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBlYTExZjc3PiIgc28tbG9uZy0taGFjay1sb2Nh bC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12YXJpYWJsZXMgamlueC1tb2RlIGppbngtLW9u IGdsb2JhbC1qaW54LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnNdIDEgW21lcmdlLWNvZGluZy1zeXN0 ZW1zIGxldCBlZGl0b3Jjb25maWctbWVyZ2UtY29kaW5nLXN5c3RlbXMgc2V0cSBwcm9nbiBpZiBj b25kaXRpb24tY2FzZSBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0 IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2 ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGxdIDEgW2NvbmNhdCBzZXRxIGlmIGxldCBsZXQgaWYgbGV0KiBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgc2V0cSBsb2NhdGUt ZG9taW5hdGluZy1maWxlIGVudnJjLS1maW5kLWVudi1kaXIgIiM8c3ViciBlbnZyYy0tdXBkYXRl PiIgYXBwbHldIDEgW3Vud2luZC1wcm90ZWN0IGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctYXQtY29t bWVudC1wIGFuZCB3aGlsZSBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIG9yIHByb2du IGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1vcmct ZGF0YS1wYXJzZXIgc2V0cV0gMiBbaWYgbGV0IGZpbGUtdHJ1ZW5hbWUgZXF1YWwgYW5kIGlmIG9y Zy1yb2FtLWRlc2NlbmRhbnQtb2YtcCBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQg aWYgb3JnLXJvYW0tZGItYXV0b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGVd IDIgW3NlY3VyZS1oYXNoIGVxdWFsIGFuZCBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIHByb2du IGlmIG9yZy1lbGVtZW50LS1jYWNoZS1wZXJzaXN0LWJlZm9yZS1yZWFkIHJ1bi1ob29rLXdpdGgt YXJncy11bnRpbC1zdWNjZXNzICIjPGxhbWJkYSAtMHg2NGVlNzY2MWFkYzRkYWQ+IiAiIzxjb21w aWxlZCAtMHg5ODJmMjk4NzQ4MTVlOWE+IiBtYXBjIHNlcS1kbyBzZXEtZmluZCBpZl0gMSBbbm90 IGFuZCBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNvbmRpdGlvbi1jYXNlIGxldCBlZGl0b3Jjb25m aWctLWFkdmljZS1maW5kLWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNl dHEgaWYgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29y Zy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWFdIDEgW3Byb2duIHByb2du IG9yZy1lbGVtZW50LS1jYWNoZS1yb290IGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxl bWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlv bi1jYXNlIGlmIHNldHFdIDQgW2Z1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1j b250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFmPiIgbWFwY2FyICIjPGxhbWJkYSAweDFlMTJi OGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCogY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3Jt YWxpemUtY29udGFpbmVyIHNldHEgcHJvZ24gcHJvZ24gbGV0Kl0gMSBbZ2xvYmFsLWNvbXBhbnkt bW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFt YmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCog ZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1 Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseV0gMSBbY29u Y2F0IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBsZXQqIG9y Zy1jb2xsZWN0LWtleXdvcmRzIGxldCBwcm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlv bnMgbGV0IHByb2duXSAxIFt1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUg aWYgc2V0cSBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBs ZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldF0g MSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1h a2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgb3JnLXJlbW92ZS1rZXl3b3Jk LWtleXMgaWYgbGV0KiBsZXQqIGxldF0gMSBbZm9udC1sb2NrLW1vZGUgcHJvZ24gaWYgbm9ybWFs LW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVk IDB4ZjE5ZDFlNjk2ZDM1Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+ IiBhcHBseV0gMSBbb3JnLWVsZW1lbnQtY2FjaGUtcmVzZXQgcHJvZ24gaWYgb3IgYW5kIHNhdmUt Y3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1wIGlmIGxldCBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVu dC1hdC1wb2ludCBsZXRdIDEgW2lmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZp YXRlLWZpbGUtbmFtZSBsZXQqIGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBh cHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0 IGFwcGx5XSAxIFtzZXEtbWFwIHNlcS1maWx0ZXIgY2FyIGlmIGxldCBoYWNrLWxvY2FsLXZhcmlh Ymxlcy0tZmluZC12YXJpYWJsZXMgb3IgYW5kIGlmIGxldCAiIzxsYW1iZGEgMHgxMTJhYmQ5NTBl YTExZjc3PiIgc28tbG9uZy0taGFjay1sb2NhbC12YXJpYWJsZXMgYXBwbHkgaGFjay1sb2NhbC12 YXJpYWJsZXMgc2V0cSBhbmRdIDEgW2lmIGxldCogaWYgbGV0KiBvcmctZWxlbWVudC1lbmQgbGV0 IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJy ZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWZd IDIgW2Njb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFs eXplLWZvcm0gY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252 LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJz aXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxldCogY29ucyBzZXRxIGlmIHByb2duIGlmXSAxIFtz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2gg bGV0IHdoaWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWYgaWYgbGV0IG9y Zy1hZ2VuZGEtcHJlcGFyZSBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5XSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24g bGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQgc2V0cSBvcmctcGVyc2lzdC0t Z2V0LWNvbGxlY3Rpb24gbGV0XSAxIFthbmQgaWYgbGV0IHdoaWxlIGxldCBsZXQqIGRpci1sb2Nh bHMtZmluZC1maWxlIGxldCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBs ZXQqIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcyBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMtbm9u LWZpbGUtYnVmZmVyIHByb2plY3QtLXZhbHVlLWluLWRpciBwcm9qZWN0LXRyeS12Y10gMSBbbWFj cm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJw cmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2Np YXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24gbGV0KiBvcmct cGVyc2lzdC1yZWdpc3RlciBwcm9nbl0gMSBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRh IDB4MTFjZDQ1MjFmPiIgbWFwY2FyICIjPGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2Fs bCBjb25kIGxldCogY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIHNl dHEgcHJvZ24gbGV0Kl0gMSBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9u IHNlcS1maW5kIGxldCBsZXQqIGFnZS0tc3RhcnQgbGV0IGFnZS1zdGFydC1kZWNyeXB0IHByb2du IHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQqXSAxIFtzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNl dC1hdXRvLW1vZGUgY29uZGl0aW9uLWNhc2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAt MHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20t LXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4i IGFwcGx5XSAyIFtsZXQgb3JnLWZpbmQtaW52aXNpYmxlLWZvcmVncm91bmQgbGV0IGxldCBwcm9n biBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBs ZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDEgW2Njb252LS1hbmFseXplLWZ1bmN0 aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNs b3N1cmUgZnVuY3Rpb24gc2VxLWZpbHRlciBsZXQgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IHByb2duIGlmXSAyIFtzZXRx IGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBpZiBkaXItbG9jYWxzLS1hbGwtZmlsZXMgZnVuY2Fs bCBpZiBzZXRxIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fs cy1maW5kLWZpbGVdIDEgW2NhciBpZiBsZXQgY29uZCBsZXQqIG9yIGxldCBpZiBwcm9nbiBpZiBz YXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgY29uZCBsZXQqIHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW2NhciBzdHJpbmctbWF0Y2ggaWYgd2hpbGUg bGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxlcy0tdHJhbnNmb3JtLWZpbGUtbmFtZSBp ZiBsZXQgaWYgIiM8bGFtYmRhIDB4MjRiNjc2ODA1NmY4NmJhPiIgZnVuY2FsbCBsZXQgZG9vbS1t YWtlLWhhc2hlZC1hdXRvLXNhdmUtZmlsZS1uYW1lLWFdIDEgW2Zvcm1hdC1kZWNvZGUgIiM8c3Vi ciBpbnNlcnQtZmlsZS1jb250ZW50cz4iIGFwcGx5IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWlu c2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNvbnRlbnRzIGxldCBpZiBwcm9n biB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBhZ2UtcmVhZC1vdXRwdXQg aWYgcHJvZ25dIDIgW2xldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1rZXl3b3JkLXBhcnNl ciBjb25kIGNvbmQgbGV0IGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQt LWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldF0gMiBbbGV0ICIjPGxhbWJkYSAw eDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBseSBo YWNrLWxvY2FsLXZhcmlhYmxlcyBqaW54LW1vZGUgamlueC0tb24gZ2xvYmFsLWppbngtbW9kZS1l bmFibGUtaW4tYnVmZmVycyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2Fs bCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBsZXQqIGxldCB3aGlsZV0gMSBbZ2xvYmFsLXNldC1rZXkgdW5kby10cmVlLW92 ZXJyaWRkZW4tdW5kby1iaW5kaW5ncy1wIHR1cm4tb24tdW5kby10cmVlLW1vZGUgZ2xvYmFsLXVu ZG8tdHJlZS1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBp ZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlk MWU2OTZkMzViNzU+Il0gMSBbYW5kIHdoaWxlIGxldCB3aGlsZSBsZXQgaW5oaWJpdC1sb2NhbC12 YXJpYWJsZXMtcCBub3QgYW5kIGxldCBzZXQtYXV0by1tb2RlLTEgbGV0IHNhdmUtZXhjdXJzaW9u IGNhdGNoIGhhY2stbG9jYWwtdmFyaWFibGVzLXByb3AtbGluZSBhcHBlbmQgbGV0XSAxIFtpZiBs ZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUt a2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21w YXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIg cHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gNCBbc2V0cSBsZXQqIGNvbnMgc2V0cSBpZiBw cm9nbiBpZiB3aGlsZSBsZXQqIHByb2duIGlmIGlmIHByb2duIGlmIGxldCogcHJvZ25dIDEgW2lm IHNhdmUtZXhjdXJzaW9uIGxldCBoYWNrLWxvY2FsLXZhcmlhYmxlcy0tZmluZC12YXJpYWJsZXMg YXBwZW5kIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4iIHNvLWxvbmct LWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVzIGppbngtbW9k ZSBqaW54LS1vbiBnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rc10g MSBbYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+IiBhcHBseSBhZnRlci1maW5k LWZpbGUgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYg bGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXRd IDEgW2Njb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBj Y29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0t bm9ybWFsaXplLWNvbnRhaW5lciBzZXRxIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIg cHJvZ24gaWYgcHJvZ24gaWYgcHJvZ25dIDEgW2xpc3QgbGV0IG9yZy1zZXQtZm9udC1sb2NrLWRl ZmF1bHRzIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1v ZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDIgW2lmIHNh dmUtY3VycmVudC1idWZmZXIgbGV0KiBhZ2UtLXN0YXJ0IGxldCBhZ2Utc3RhcnQtZGVjcnlwdCBw cm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2Ug cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBh cHBseV0gMiBbaWYgb3JnLWVsZW1lbnQtLWNhY2hlLXBlcnNpc3QtYmVmb3JlLXJlYWQgcnVuLWhv b2std2l0aC1hcmdzLXVudGlsLXN1Y2Nlc3MgIiM8bGFtYmRhIC0weDE1ZmJmZWFkZjM1ZThhNzY+ IiAiIzxjb21waWxlZCAtMHg5ODJmMjk4NzQ4MTVlOWE+IiBtYXBjIHNlcS1kbyBzZXEtZmluZCBp ZiBwcm9nbiBpZiBsZXQqIHByb2duIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVhZF0gMSBbYnVm ZmVyLWxpc3QgbGV0IG9yIGxldCBmaW5kLWJ1ZmZlci12aXNpdGluZyBhbmQgbGV0KiBpZiBpZiAi IzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRvcmNv bmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseV0gMSBbb3IgbGV0IGlmIHByb2du IGlmIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEg aWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMSBb YW5kIG9yIG9yZy1mb2xkLWluaXRpYWxpemUgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJv Z24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1h cHBseS1hbGlzdF0gMSBbeWFzLS1sb2FkLXBlbmRpbmctaml0cyB5YXMtbWlub3ItbW9kZSB5YXMt bWlub3ItbW9kZS1vbiB5YXMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tz IGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAi Izxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iXSAyIFtjY29udi1mdiBjY29udi1tYWtlLWlu dGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gc2VxLWZpbmQgaWYgcHJvZ24gaWYgbGV0KiBwcm9n biBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlYWQgcHJvZ24gbGV0KiBvcmctcGVyc2lzdC1sb2Fk IHByb2duXSAyIFtmYWNlLWF0dHJpYnV0ZSBmYWNlLWJhY2tncm91bmQgbGlzdCBuY29uYyByZW1v dmUgbGV0IG9yZy1maW5kLWludmlzaWJsZS1mb3JlZ3JvdW5kIGxldCBsZXQgcHJvZ24gb3JnLW1v ZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQtYXV0by1tb2RlLTBdIDEgW2xldCBpZiAiIzxsYW1i ZGEgMHgyNGI2NzY4MDU2Zjg2YmE+IiBmdW5jYWxsIGxldCBkb29tLW1ha2UtaGFzaGVkLWF1dG8t c2F2ZS1maWxlLW5hbWUtYSBhcHBseSBtYWtlLWF1dG8tc2F2ZS1maWxlLW5hbWUgb3IgZmlsZS1u ZXdlci10aGFuLWZpbGUtcCBhbmQgaWYgY29uZCBsZXQqIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVk OGM0OTFhNmU+Il0gMyBbcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHNhdmUtZXhjdXJzaW9uIG9y Zy1hdC1jb21tZW50LXAgYW5kIHdoaWxlIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g b3IgcHJvZ24gaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVt ZW50LW9yZy1kYXRhLXBhcnNlcl0gMyBbc21hcnRwYXJlbnMtZ2xvYmFsLW1vZGUtZW5hYmxlLWlu LWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24g aWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBs eS1hbGlzdCBzZXRxIGlmXSAxIFtjb25kaXRpb24tY2FzZSBwcm9nbiBpZiBzYXZlLWN1cnJlbnQt YnVmZmVyIGNvbmRpdGlvbi1jYXNlIGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5kLWZpbGUt bm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNldHEgaWYgbGV0ICIjPGxhbWJkYSAt MHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3Vu ZGVkLWFnZW5kYS1idWZmZXJzLWFdIDEgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29u di1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyICIjPGxhbWJkYSAweDFl MTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCogY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1u b3JtYWxpemUtY29udGFpbmVyIGxpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3Igb3JnLXBl cnNpc3QtLWdldC1jb2xsZWN0aW9uXSAxIFtjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1h bmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNj b252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUg ZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBzZXRxIHByb2du IGlmIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXJdIDEgW21hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24g bGV0Kl0gMSBbcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGVzLS10cmFuc2Zvcm0tZmlsZS1u YW1lIGlmIGxldCBpZiAiIzxsYW1iZGEgMHgyNGI2NzY4MDU2Zjg2YmE+IiBmdW5jYWxsIGxldCBk b29tLW1ha2UtaGFzaGVkLWF1dG8tc2F2ZS1maWxlLW5hbWUtYSBhcHBseSBtYWtlLWF1dG8tc2F2 ZS1maWxlLW5hbWUgb3IgZmlsZS1uZXdlci10aGFuLWZpbGUtcCBhbmRdIDIgW3VucmVjb3JkLXdp bmRvdy1idWZmZXIgcmVwbGFjZS1idWZmZXItaW4td2luZG93cyBraWxsLWJ1ZmZlciBpZiBhZ2Ut cmVzZXQgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNl IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMg YXBwbHkgaWYgbGV0XSAxIFthbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlv bi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1l eGN1cnNpb24gbGV0IGlmXSA1IFtvcmctZWxlbWVudC1jcmVhdGUgbGV0IHNhdmUtZXhjdXJzaW9u IG9yZy1lbGVtZW50LWtleXdvcmQtcGFyc2VyIGNvbmQgY29uZCBsZXQgY29uZCBzZXRxIGxldCBz YXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hp bGVdIDEgW2NkciBwcm9nbiBpZiAiIzxsYW1iZGEgLTB4ODAyMTdjN2RmN2IxZGZkPiIgbWFwY2Fy IG5jb25jIHJlbW92ZSBsZXQgb3JnLWZpbmQtaW52aXNpYmxlLWZvcmVncm91bmQgbGV0IGxldCBw cm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmXSAxIFtsaXN0IGlmIGlmIGFwcGVuZCBhZ2Ut LXN0YXJ0IGxldCBhZ2Utc3RhcnQtZGVjcnlwdCBwcm9nbiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVj cnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBh Z2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50c10gMSBbY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRl cnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250 YWluZXIgc2V0cSBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2du IGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXJdIDEgW2Njb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHIgbGV0 KiBjb25kaXRpb24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFw cGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1hdXRvLW1v ZGUgYXBwbHkgc2V0LWF1dG8tbW9kZSBjb25kaXRpb24tY2FzZSBsZXRdIDIgWyIjPGxhbWJkYSAw eDExY2Q0NTIxZj4iIG1hcGNhciAiIzxsYW1iZGEgMHgxZTEyYjhmYmZmYThkYT4iIGZ1bmNhbGwg Y29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBzZXRx IHByb2duIGlmIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ25dIDEgW2lmIGNo YWluLWRvb20tZmlyc3QtYnVmZmVyLWhvb2stdG8tZmluZC1maWxlLWhvb2staCBhcHBseSAiIzxj b21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4iIGFwcGx5IGFmdGVyLWZpbmQtZmlsZSBpZiBzYXZl LWN1cnJlbnQtYnVmZmVyIGxldCBmaW5kLWZpbGUtbm9zZWxlY3QtMSBpZiBsZXQqIGlmIGlmICIj PGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseV0gMSBbcHJvZ24gbGV0IHNhdmUtZXhj dXJzaW9uIG9yZy1lbGVtZW50LWtleXdvcmQtcGFyc2VyIGNvbmQgY29uZCBsZXQgY29uZCBzZXRx IGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYg aWYgd2hpbGVdIDMgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXNd IDIzIFtmb250LWxvY2stbW9kZSB0dXJuLW9uLWZvbnQtbG9jayB0dXJuLW9uLWZvbnQtbG9jay1p Zi1kZXNpcmVkIGdsb2JhbC1mb250LWxvY2stbW9kZS1lbmFibGUtaW4tYnVmZmVycyBydW4taG9v a3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5 IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5 ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiJdIDEgW2FiYnJldmlhdGUtZmlsZS1uYW1l IHNldHEgbG9jYXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxl dCBwcm9nbiBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHIgbGV0KiBjb25kaXRp b24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5XSAxIFtz ZXRxIGVxdWFsIGNvbmQgd2hpbGUgbGV0IGxvY2F0ZS1kb21pbmF0aW5nLWZpbGUgZW52cmMtLWZp bmQtZW52LWRpciAiIzxzdWJyIGVudnJjLS11cGRhdGU+IiBhcHBseSBlbnZyYy0tdXBkYXRlIGVu dnJjLW1vZGUgZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGFw cGx5IHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlXSAyIFtvcmctcm9hbS0tZmlsZS1uYW1lLWV4dGVu c2lvbiBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0 b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWYgYWdlLWRlbGV0ZS1vdXRw dXQtZmlsZSBpZiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHFdIDEgW2hhY2st ZGlyLWxvY2FsLXZhcmlhYmxlcy1ub24tZmlsZS1idWZmZXIgcHJvamVjdC0tdmFsdWUtaW4tZGly IHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGlyZWN0b3J5IHByb2plY3QtY3VycmVu dCBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMg YnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBi cmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2Rl IGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbl0gMiBbbGV0KiBv cmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAiIzxsYW1iZGEgMHgxMWNkNDUyMWY+IiBt YXBjYXIgIiM8bGFtYmRhIDB4MWUxMmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25k IGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbiBwcm9nbiBs ZXQqIG9yZy1wZXJzaXN0LXJlYWRdIDEgW3N0cmluZz0gYW5kIGNvbmQgZmlsZS10cnVlbmFtZSBm aWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxl LXRydWVuYW1lIGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0XSAyIFttYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5k LWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gc2VxLWZpbmQgbGV0 IGxldCogYWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3Rl Y3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxXSAxIFtobC1saW5lLW1vZGUtc2V0LWV4cGxpY2l0bHkg aGwtbGluZS1tb2RlIGFuZCBpZiBpZiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIHByb2duIGlmIGxl dCB3aGlsZSBsZXQgbGV0IGdsb2JhbC1obC1saW5lLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVu LWhvb2tzIHJ1bi1tb2RlLWhvb2tzXSAxIFthbmQgaWYgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1j dXJyZW50LWJ1ZmZlciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IGxldCBw cm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duXSAxIFthc3NxLWRlbGV0ZS1hbGwgdW5yZWNvcmQt d2luZG93LWJ1ZmZlciByZXBsYWNlLWJ1ZmZlci1pbi13aW5kb3dzIGtpbGwtYnVmZmVyIGlmIGFn ZS1yZXNldCB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNh c2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50 cyBhcHBseSBpZl0gMiBbY2FsbGVkLWludGVyYWN0aXZlbHktcCBzbWFydHBhcmVucy1tb2RlIHR1 cm4tb24tc21hcnRwYXJlbnMtbW9kZSBzbWFydHBhcmVucy1nbG9iYWwtbW9kZS1lbmFibGUtaW4t YnVmZmVycyBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYgIiM8bGFtYmRhIC0weDFjMzY2NWQ4 YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0IGxldCogZG9vbS0tc2h1dC11cC1h dXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFlNjk2ZDM1Yjc1PiJdIDEgW2xldCBh YmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQgZmluZC1idWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFz ZS1idWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVu Y2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBw bHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWYgc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQt YnVmZmVyIGNhdGNoXSAxIFt0aW1lci1pbmMtdGltZSB0aW1lci1ldmVudC1oYW5kbGVyIGFjY2Vw dC1wcm9jZXNzLW91dHB1dCB3aGlsZSBhZ2Utd2FpdC1mb3ItY29tcGxldGlvbiBwcm9nbiB1bndp bmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29uZGl0aW9uLWNhc2UgcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZl0g MSBbYW5kIGlmIGFnZS1yZXNldCB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEg Y29uZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQt ZmlsZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3RdIDEgW2dsb2Jh bC1kYXNoLWZvbnRpZnktbW9kZS1jbWhoIGtpbGwtYWxsLWxvY2FsLXZhcmlhYmxlcyBub3JtYWwt bW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQg MHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4i IGFwcGx5IGFmdGVyLWZpbmQtZmlsZV0gMSBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWNv bnRlbnRzLWVuZCBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJz ZS10b10gMSBbbGV0IGFnZS1maW5kLWNvbmZpZ3VyYXRpb24gbGV0IGxldCogYWdlLWNvbnRleHQt LW1ha2UgYWdlLW1ha2UtY29udGV4dCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRz IGFwcGx5IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWdlLWZpbGUtaGFuZGxlciAi IzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiJdIDEgW2Njb252LW1ha2UtaW50ZXJwcmV0ZWQt Y2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgZGVscSBsZXQgaWYgbGV0IHByb2duIGlmIG9yZy1zZXQt cmVnZXhwcy1hbmQtb3B0aW9ucyBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZl0g MiBbIiM8c3ViciBzYXZlLXBsYWNlLXRvLWFsaXN0PiIgYXBwbHkgaWYgZG9vbS0taW5oaWJpdC1z YXZlcGxhY2UtaW4tbG9uZy1maWxlcy1hIGFwcGx5IHNhdmUtcGxhY2UtdG8tYWxpc3Qga2lsbC1i dWZmZXIgaWYgYWdlLXJlc2V0IHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0cSBj b25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqXSAxIFtsZXQgbGV0IGlmIGxl dCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgbG9j YXRlLWRvbWluYXRpbmctZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyICIjPHN1YnIgZW52cmMtLXVw ZGF0ZT4iIGFwcGx5IGVudnJjLS11cGRhdGUgZW52cmMtbW9kZSBlbnZyYy1nbG9iYWwtbW9kZS1l bmFibGUtaW4tYnVmZmVyc10gMSBbb3Igbm90IHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1m aWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2Fs LS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGhhY2stZGlyLWxv Y2FsLXZhcmlhYmxlcy1ub24tZmlsZS1idWZmZXIgcHJvamVjdC0tdmFsdWUtaW4tZGlyIHByb2pl Y3QtdHJ5LXZjXSAxIFtzZWFyY2gtZm9yd2FyZCBhbmQgbGV0IHNldC1hdXRvLW1vZGUtMSBsZXQg c2F2ZS1leGN1cnNpb24gY2F0Y2ggaGFjay1sb2NhbC12YXJpYWJsZXMtcHJvcC1saW5lIG9yIGFu ZCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4iIHNvLWxvbmctLWhhY2stbG9j YWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVzXSAxIFtpZiBsZXQqIGlmIGxl dCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUt a2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIg YXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0t Y2FjaGUtcHV0XSAzIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBh bmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBhdmwtdHJlZS1t YXBjIHByb2duIGlmXSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBsZXQgd2hpbGUgbGV0XSAxIFtjY29u di1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGV0KiBjb25zIHNl dHEgaWYgcHJvZ24gaWYgd2hpbGUgbGV0KiBwcm9nbiBpZl0gMSBbbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBsZXQqIGxldCB3aGlsZSBsZXQgbGV0IGNvbmRdIDEgW2NsLXJlbW92ZS1pZi1u b3QgZWRpdG9yY29uZmlnLWNvcmUtLWdldC1oYW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQt aGFuZGxlcyBlZGl0b3Jjb25maWctY29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUt LWdldC1oYW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jjb25maWct Y29yZS1nZXQtcHJvcGVydGllcy1oYXNoIGZ1bmNhbGwgc2V0cSBjb25kaXRpb24tY2FzZSBsZXQg ZWRpdG9yY29uZmlnLWNhbGwtZ2V0LXByb3BlcnRpZXMtZnVuY3Rpb24gc2V0cSBwcm9nbiBpZiBj b25kaXRpb24tY2FzZV0gMiBbaWYgc2V0cSBwcm9nbiB3aGlsZSBsZXQgaWYgbGV0IHByb2duIHVu d2luZC1wcm90ZWN0IGxldCBmaWxlLXJlbGF0aXZlLW5hbWUgbGV0KiBwcm9nbiBpZiBvcmctcm9h bS1maWxlLXAgYW5kXSAyIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtYXNzb2NpYXRlZF0gMSBb b3IgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIG9yZy1maW5kLWJhc2UtYnVmZmVyLXZpc2l0aW5n IGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGwgbGV0ICtvcmctLW9w dGltaXplLWJhY2tncm91bmRlZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRh LWZpbGUtYnVmZmVyIGlmIHNldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBsZXRd IDMgW2ZpbGUtYXR0cmlidXRlLWZpbGUtaWRlbnRpZmllciBsZXQqIGlmIGlmICIjPGxhbWJkYSAt MHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmlnLS1hZHZp Y2UtZmluZC1maWxlLW5vc2VsZWN0IGFwcGx5IGZpbmQtZmlsZS1ub3NlbGVjdCBzZXRxIGlmIGxl dCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iXSAxIFtjY29udi0tYW5hbHl6ZS1mdW5j dGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1j bG9zdXJlIGZ1bmN0aW9uIGZpbmQtYnVmZmVyLXZpc2l0aW5nIGFuZCBsZXQqIGlmIGlmICIjPGxh bWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXQgZWRpdG9yY29uZmln LS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0XSAxIFthcHBlbmQgYW5kIGFwcGVuZCBzZXRxIGxl dCogbGV0KiBsZXQgd2hpbGUgbGV0IGxldCBpZiBsZXQgcHJvZ24gaWYgb3JnLXNldC1yZWdleHBz LWFuZC1vcHRpb25zIGxldF0gMSBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0 aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGV0KiBjb25zIHNldHEg aWYgcHJvZ24gaWYgd2hpbGUgbGV0KiBwcm9nbiBpZiBpZiBwcm9nbl0gMSBbYXBwbHkgZmluZC1m aWxlLW5vc2VsZWN0IHNldHEgaWYgbGV0ICIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIg ZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEg YXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWYgc2V0LWJ1ZmZlciBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIGxldF0gMSBbaWYgc3Vic3RyaW5nIGlmIGxldCBmaWxlLW5hbWUtc2Fu cy12ZXJzaW9ucyBzZXRxIGxldCBpZiBzZXQtYXV0by1tb2RlLS1hcHBseS1hbGlzdCBzZXRxIGxl dCogY29uZGl0aW9uLWNhc2UgaWYgbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcwNmY+IiBh cHBseV0gMSBbbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZp bGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVs ZXRlLWZpbGUgaWYgYWdlLWRlbGV0ZS1vdXRwdXQtZmlsZSBpZiB1bndpbmQtcHJvdGVjdCBhZ2Ut ZGVjcnlwdC1maWxlXSAxIFtzZXRxIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGVu dnJjLS1maW5kLWVudi1kaXIgIiM8c3ViciBlbnZyYy0tdXBkYXRlPiIgYXBwbHkgZW52cmMtLXVw ZGF0ZSBlbnZyYy1tb2RlIGVudnJjLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1o b29rcyBhcHBseSBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duXSAxIFtvciBz ZXRxIGxldCB3aGlsZSBsZXQgbGV0IGNvbmQgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAg YW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1m aWxlXSAxIFtlbnZyYy1nbG9iYWwtbW9kZS1jbWhoIGtpbGwtYWxsLWxvY2FsLXZhcmlhYmxlcyBu b3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29t cGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4 OWM5OD4iIGFwcGx5IGFmdGVyLWZpbmQtZmlsZV0gMSBbb3JnLWNpdGUtZ2V0LXByb2Nlc3NvciBv cmctY2l0ZS10cnktbG9hZC1wcm9jZXNzb3IgaWYgcHJvZ24gbGlzdCBsZXQgb3JnLXNldC1mb250 LWxvY2stZGVmYXVsdHMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0 LWF1dG8tbW9kZS0wIHByb2duXSAxIFtvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1h dXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0 cSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5XSAxIFtsZXQgYWdl LWZpbGUtcnVuLXJlYWwtaGFuZGxlciBjb25kaXRpb24tY2FzZSBsZXQqIGFnZS1maWxlLWluc2Vy dC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWdl LWZpbGUtaGFuZGxlciAiIzxzdWJyIGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHkgaWYgZWRp dG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29udGVudHNdIDEgW2FkdmljZS0tdHdlYWsg YWR2aWNlLS1yZW1vdmUtZnVuY3Rpb24gYWR2aWNlLS1hZGQtZnVuY3Rpb24gYWR2aWNlLWFkZCBv cmctZm9sZC0tYWR2aWNlLWVkaXQtY29tbWFuZHMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwg cHJvZ24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldF0gMSBbc2V0cSB3aGlsZSBs ZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGVzLS10cmFuc2Zvcm0tZmlsZS1uYW1lIGlm IGxldCBpZiAiIzxsYW1iZGEgMHgyNGI2NzY4MDU2Zjg2YmE+IiBmdW5jYWxsIGxldCBkb29tLW1h a2UtaGFzaGVkLWF1dG8tc2F2ZS1maWxlLW5hbWUtYSBhcHBseSBtYWtlLWF1dG8tc2F2ZS1maWxl LW5hbWVdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxldCog Y29ucyBzZXRxIGlmIHByb2duIGlmIHdoaWxlIGxldCpdIDEgW29yZy1tb2Rlcm4tLXVwZGF0ZS1s YWJlbC1mYWNlIG9yZy1tb2Rlcm4tbW9kZSBvcmctbW9kZXJuLS1vbiBnbG9iYWwtb3JnLW1vZGVy bi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9k ZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDIg W3lhcy0tbG9hZC1wZW5kaW5nLWppdHMgeWFzLW1pbm9yLW1vZGUgeWFzLW1pbm9yLW1vZGUtb24g eWFzLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29r cyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBs ZXQgaWZdIDEgW2lmIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGlmIHNl dHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBp ZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cV0gMSBbcHJvZ24g dW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2du IHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkg aWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyXSAxIFtsZXQg ZmlsZS1uYW1lLXNhbnMtdmVyc2lvbnMgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxl LW5hbWUtc2Fucy1leHRlbnNpb24gZmlsZS1uYW1lLWJhc2UgYnJlYWRjcnVtYi0tcHJvamVjdC1j cnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJzIGJyZWFkY3J1bWItLXR1cm4tb24tbG9j YWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUgYnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1p bi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZl0gMSBbbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUg ZnVuY3Rpb24gc2VxLWZpbmQgaWYgcHJvZ24gaWYgbGV0KiBwcm9nbiBwcm9nbiBsZXQqIG9yZy1w ZXJzaXN0LXJlYWRdIDEgW3NhdmUtZXhjdXJzaW9uIHNldHEgaWYgaWYgbGV0ICIjPGxhbWJkYSAw eDFiODBkMDhjMDMwNjcwNmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+ IiBzby1sb25nLS1zZXQtYXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGUgY29uZGl0aW9uLWNh c2UgbGV0IG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+Il0gMSBb YnVmZmVyLWxpc3Qgc2VxLWZpbHRlciBsZXQgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBs ZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0IHByb2duIGlmIG9yIGFuZCBzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcF0gMSBbY29uZCBvcmct LXRhZy1hZGQtdG8tYWxpc3Qgc2V0cSBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtY3VycmVudC1idWZmZXIgY2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVw YXJlLWJ1ZmZlcnMgaWYgaWYgbGV0IG9yZy1hZ2VuZGEtcHJlcGFyZV0gMSBbYXBwbHkgc2F2ZS1w bGFjZS10by1hbGlzdCBraWxsLWJ1ZmZlciBpZiBhZ2UtcmVzZXQgdW53aW5kLXByb3RlY3QgYWdl LWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxl dCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0XSAzIFtpZiBvcmct cm9hbS1maWxlLXAgYW5kIGlmIG9yZy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFw cGx5IGRlbGV0ZS1maWxlIGlmIGFnZS1kZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5kLXByb3Rl Y3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90 ZWN0XSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1 cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciAiIzxsYW1i ZGEgMHgxMWNkNDUyMWY+IiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUxMDlhYWMwY2QzZGE+IiBmdW5j YWxsIGNvbmQgbGV0KiBjb25kIGxldCpdIDEgW2VxIG5vdCBkb29tLXByb3RlY3QtZmFsbGJhY2st YnVmZmVyLWgga2lsbC1idWZmZXIgaWYgYWdlLXJlc2V0IHVud2luZC1wcm90ZWN0IGFnZS1kZWNy eXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFn ZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmXSAxIFtjb25jYXQgc2V0cSBpZiBp ZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1l IGlmIHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTFdIDMg W2FwcGx5IGRlZmluZS1rZXkgYnJlYWRjcnVtYi0tZm9ybWF0LXByb2plY3Qtbm9kZSBicmVhZGNy dW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVt Yi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1i LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxh bWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQq XSAxIFtvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3JnLXBlcnNp c3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVtZW50LWNhY2hlLXJlc2V0XSAxIFtjYWxsZWQtaW50ZXJh Y3RpdmVseS1wIGF1dG8tc2F2ZS1tb2RlIHByb2duIGlmIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVk OGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAt YXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIj PGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiIgYXBwbHldIDEgW3Byb2duIGxldCogc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1vcmctZGF0YS1wYXJzZXIgc2V0 cSBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRx XSAxIFtzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIgd2hpbGUgbGV0IG9yIGxldCBmaW5k LWJ1ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12aXNpdGluZyBsZXQgIiM8bGFt YmRhIC0weDE2OGUwNmZiNGZhZDk1NTc+IiBmdW5jYWxsIGxldCArb3JnLS1vcHRpbWl6ZS1iYWNr Z3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBhcHBseSBvcmctZ2V0LWFnZW5kYS1maWxlLWJ1ZmZl ciBpZl0gMyBbdXBjYXNlIG9yZy1lbGVtZW50LS1nZXQtY2FjaGVkLXN0cmluZyBwcm9nbiBsZXQg c2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQta2V5d29yZC1wYXJzZXIgY29uZCBjb25kIGxldCBj b25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQg c2V0cSBpZl0gMSBbbm90IG9yIGFuZCBpZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBj ZHIgbGV0KiBjb25kaXRpb24tY2FzZSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2 Zj4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iIHNvLWxvbmctLXNldC1h dXRvLW1vZGUgYXBwbHkgc2V0LWF1dG8tbW9kZV0gMSBbYW5kIGxldCBvciBub3QgbGV0IG5vcm1h bC1iYWNrdXAtZW5hYmxlLXByZWRpY2F0ZSBmdW5jYWxsIG5vdCBhbmQgc2F2ZS1jdXJyZW50LWJ1 ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZl0gMSBbd2hpbGUgbGV0 IGxldCBnbG9iYWwtaGwtbGluZS1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4t bW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBw cm9nbiBpZiBsZXQgaWZdIDEgW2xldCBpZiBwcm9nbiBpZiBsZXQgc2F2ZS1leGN1cnNpb24gb3Jn LWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMiBbbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVk LWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWFzc29jaWF0ZWQg c2V0cSBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0IHByb2duIGxldCogb3JnLXBlcnNp c3QtcmVnaXN0ZXIgcHJvZ25dIDMgW2lmIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5h bWUgZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBsZXQgaWYgb3IgbGV0IGlmIGxldCB3aGlsZSBsZXRd IDMgW2Njb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBj Y29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gc2VxLWZpbmQgbGV0IGxldCog YWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdl LWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlXSAyIFtzcC0tdXBkYXRlLWxvY2FsLXBh aXJzIHNwLS1pbml0IHNtYXJ0cGFyZW5zLW1vZGUgdHVybi1vbi1zbWFydHBhcmVucy1tb2RlIHNt YXJ0cGFyZW5zLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3Jt YWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHldIDEgW2xldCog b3IgbGV0IGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hl LXB1dCBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZV0gMSBb aWYgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHBy b2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBw bHkgaWYgbGV0IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyXSAxIFth bmQgbGluZS1lbmQtcG9zaXRpb24gc2VhcmNoLWZvcndhcmQgYW5kIGxldCBzZXQtYXV0by1tb2Rl LTEgc2V0cSBhbmQgc2F2ZS1leGN1cnNpb24gbGV0ICIjPGxhbWJkYSAweDFiODBkMDhjMDMwNjcw NmY+IiBhcHBseSAiIzxjb21waWxlZCAweDFiOTBkZjJhMWJmMWQ0MTg+IiBzby1sb25nLS1zZXQt YXV0by1tb2RlIGFwcGx5IHNldC1hdXRvLW1vZGVdIDEgW3JlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhw LW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1n cm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgY29uY2F0IG9yZy1tYWtlLW9wdGlvbnMt cmVnZXhwIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9u IGxldCBvcmctLWNvbGxlY3Qta2V5d29yZHMtMSBsZXQqXSAxIFtyZWdleHAtb3B0LWdyb3VwIHJl Z2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdCBjb25jYXQgb3JnLW1ha2Utb3B0aW9ucy1yZWdleHAg c2V0cSBjb25kIGxldCBsZXQgaWYgbGV0KiBsZXQgcHJvZ24gaWYgbGV0IHdoaWxlXSAxIFtlcXVh bCBpZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZiBvcmct cm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXBdIDIgW21h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBl cnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqXSAxIFttYWNyb2V4cGFuZC1hbGwg Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3Qt LW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFmPiIgbWFwY2FyICIjPGxh bWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCogY29uZCBsZXQqIG9yZy1w ZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXhd IDIgW2Njb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgb3JnLXJl bW92ZS1rZXl3b3JkLWtleXMgaWYgbGV0KiBsZXQqIGxldCB3aGlsZSBsZXQgbGV0IGlmIGxldCBw cm9nbiBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnNdIDEgW21hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbF0gNSBbYXNldCBsZXQqIHByb2duIGFnZS13YWl0 LWZvci1jb21wbGV0aW9uIHByb2duIHVud2luZC1wcm90ZWN0IGFnZS1kZWNyeXB0LWZpbGUgc2V0 cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQqIGFnZS1maWxlLWluc2Vy dC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldF0gMSBbbGV0IHByb2duIGlmIG9yZy1zZXQtcmVn ZXhwcy1hbmQtb3B0aW9ucyBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3Vy cmVudC1idWZmZXIgY2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3JnLWFnZW5kYS1wcmVwYXJlLWJ1 ZmZlcnMgaWYgaWYgbGV0XSAxIFtjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1 cmUgZnVuY3Rpb24gbWFwY2FyICIjPGxhbWJkYSAweDFlMTA5YWFjMGNkM2RhPiIgZnVuY2FsbCBj b25kIGxldCogY29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIGxpc3Qg b3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3Igb3JnLXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxl dF0gMSBbb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxl c3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRy ZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBz YXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZl0g MyBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1h bGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNp c3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgcHJvZ24gcHJvZ24gbGV0KiBvcmctcGVyc2lz dC1yZWFkIHByb2duIGxldCogb3JnLXBlcnNpc3QtbG9hZCBwcm9nbl0gMSBbdW5yZWNvcmQtd2lu ZG93LWJ1ZmZlciByZXBsYWNlLWJ1ZmZlci1pbi13aW5kb3dzIGtpbGwtYnVmZmVyIGFuZCB1bndp bmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBhZ2UtcmVhZC1vdXRwdXQgaWYgcHJv Z24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHBy b2duIHVud2luZC1wcm90ZWN0XSAxIFtzZXQtZGlzcGxheS10YWJsZS1zbG90IHByb2duIGlmIGxl dCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9n biBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3RdIDEgW3JlZ2V4cC1vcHQgY29u Y2F0IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIHNldHEgY29uZCBsZXQgbGV0IGlmIGxldCogbGV0 IHByb2duIGlmIGxldCB3aGlsZSBsZXQgc2F2ZS1yZXN0cmljdGlvbl0gMSBbb3JnLXBlcnNpc3Qt bG9hZCBwcm9nbiBpZiBsZXQgcHJvZ24gb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBzZXQt YXV0by1tb2RlLTAgcHJvZ24gaWYgbGV0IGlmIHNldC1hdXRvLW1vZGUtLWFwcGx5LWFsaXN0XSAx IFtwcm9nMSBjb25zIHNldHEgaWYgd2hpbGUgbGV0KiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3Qg c2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgcHJvZ24gaWYgYWdlLXNjcnlwdC1wIGFzZXQgbGV0Kl0g MSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGxdIDEgW2lmIGxldCogb3Jn LWVsZW1lbnQtZW5kIG9yIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g c2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9u LWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbl0gMSBbYWJicmV2aWF0ZS1maWxlLW5h bWUgc2V0cSBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGlyLWxvY2Fscy1maW5kLWZpbGUg bGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFibGVzIGxldCogaGFjay1kaXIt bG9jYWwtdmFyaWFibGVzIGhhY2stZGlyLWxvY2FsLXZhcmlhYmxlcy1ub24tZmlsZS1idWZmZXIg cHJvamVjdC0tdmFsdWUtaW4tZGlyIHByb2plY3QtdHJ5LXZjIHByb2plY3QtLWZpbmQtaW4tZGly ZWN0b3J5IHByb2plY3QtY3VycmVudF0gMiBbeWFzLWdsb2JhbC1tb2RlLWVuYWJsZS1pbi1idWZm ZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkx YTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9z YXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21w aWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4iIGFwcGx5XSAxIFtjY29udi1hbmFseXplLWZvcm0gY2Nv bnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlv biBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9z dXJlIGZ1bmN0aW9uIGFzc29jLWRlZmF1bHQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzZXRxIGlmIGlmIGxldCAiIzxsYW1iZGEgMHgxYjgwZDA4YzAzMDY3MDZmPiJdIDEgW2Njb252 LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3Jn LXBlcnNpc3QtLW5vcm1hbGl6ZS1hc3NvY2lhdGVkIHNldHEgb3JnLXBlcnNpc3QtLWdldC1jb2xs ZWN0aW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyXSAxIFtj b25kICtvcmctaW5pdC1naWZzLWggZnVuY2FsbCBjb25kaXRpb24tY2FzZSBkb29tLXJ1bi1ob29r IHJ1bi1ob29rLXdyYXBwZWQgbGV0IGNvbmRpdGlvbi1jYXNlIGxldCB3aGlsZSBsZXQgZG9vbS1y dW4taG9va3MgaWYgZG9vbS1ydW4tbG9jYWwtdmFyLWhvb2tzLWggcnVuLWhvb2tzIGhhY2stbG9j YWwtdmFyaWFibGVzLWFwcGx5XSAxIFthZnRlci1pbnNlcnQtZmlsZS1zZXQtY29kaW5nICIjPHN1 YnIgaW5zZXJ0LWZpbGUtY29udGVudHM+IiBhcHBseSBpZiBlZGl0b3Jjb25maWctLWFkdmljZS1p bnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1jb250ZW50cyBpZiBwcm9nbiB1 bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVyIGxldCBsZXQgb3JnLXBlcnNpc3QtLXJl YWQtZWxpc3AtZmlsZSBvciBzZXRxXSAxIFthbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVu d2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBzZXRxICIjPGxhbWJkYSAtMHhk NmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXRdIDEgW2lmIHdoaWxlIGxldCBmaWxl LXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGlmIHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZl OWJiMjVhNDgxMzJhPiIgYXBwbHldIDIgW2lmIGxldCogaWYgaWYgIiM8bGFtYmRhIC0weGQ2ZTli YjI1YTQ4MTMyYT4iIGFwcGx5IHNldHEgbGV0IGxldCBlZGl0b3Jjb25maWctLWFkdmljZS1maW5k LWZpbGUtbm9zZWxlY3QgYXBwbHkgZmluZC1maWxlLW5vc2VsZWN0IHNldHEgaWYgbGV0ICIjPGxh bWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiJdIDEgW2RlbHEgbGV0IGlmIGxldCBwcm9nbiBpZiBv cmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJv Z24gaWYgaWYgc2V0LWF1dG8tbW9kZS0wIHByb2duXSAxIFthbmQgbGV0KiBvciBsZXQgZmluZC1i dWZmZXItdmlzaXRpbmcgb3JnLWZpbmQtYmFzZS1idWZmZXItdmlzaXRpbmcgbGV0ICIjPGxhbWJk YSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dy b3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIg aWYgc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxIFtzZXRxIGxldCogYWdlLS1zdGFy dCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQt ZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZp bGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWZdIDEgW3NldCBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGlmIGxldCBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQgYWdlLWZpbGUtaGFuZGxlciAiIzxzdWJyIGluc2VydC1maWxl LWNvbnRlbnRzPiIgYXBwbHkgaWYgZWRpdG9yY29uZmlnLS1hZHZpY2UtaW5zZXJ0LWZpbGUtY29u dGVudHNdIDEgW2FkdmljZS0tcCBhZHZpY2UtLW1lbWJlci1wIGFkdmljZS0tYWRkLWZ1bmN0aW9u IGFkdmljZS1hZGQgIiM8c3ViciBGNjE2ZTZmNmU3OTZkNmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5v bnltb3VzX2xhbWJkYV8zNz4iIGV2YWwtYWZ0ZXItbG9hZCBjdHJsZi1sb2NhbC1tb2RlIGN0cmxm LW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxh bWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMSBb bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3Jn LXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgbGlzdCBvcmctcGVyc2lzdC0tZmluZC1pbmRl eCBvcl0gMSBbb3IgcHJvZ24gbGlzdCBhcHBlbmQgYWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRl Y3J5cHQgcHJvZ24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlv bi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29u dGVudHNdIDEgW2xldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0 IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyICIjPHN1YnIgaW5zZXJ0 LWZpbGUtY29udGVudHM+IiBhcHBseSBpZiBlZGl0b3Jjb25maWctLWFkdmljZS1pbnNlcnQtZmls ZS1jb250ZW50cyBhcHBseSBpbnNlcnQtZmlsZS1jb250ZW50cyBsZXRdIDEgW2Z1bmN0aW9uIGxl dCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFtYmRhIDB4MTFjZDQ1MjFm PiIgbWFwY2FyICIjPGxhbWJkYSAweDFlMTJiOGZiZmZhOGRhPiIgZnVuY2FsbCBjb25kIGxldCog Y29uZCBsZXQqIG9yZy1wZXJzaXN0LS1ub3JtYWxpemUtY29udGFpbmVyIHNldHEgcHJvZ24gaWYg cHJvZ25dIDIgW2tpbGwtYnVmZmVyIGFuZCB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVm ZmVyIGxldCBwcm9nbiBpZiBhZ2Utc2NyeXB0LXAgYXNldCBsZXQqIHByb2duIGxldCogYWdlLWZp bGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0XSAxIFtmdW5jYWxsIHByb2duIGlm IGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHkt YWxpc3Qgc2V0cSBpZiBsZXQgIiM8bGFtYmRhIDB4MWI4MGQwOGMwMzA2NzA2Zj4iIGFwcGx5ICIj PGNvbXBpbGVkIDB4MWI5MGRmMmExYmYxZDQxOD4iXSAxIFtjb25kIGlmIG9yZy1lbGVtZW50LS1u ZXh0LW1vZGUgc2V0cSBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNl LXRvIGNvbmRpdGlvbi1jYXNlIGlmXSAyIFthbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVu d2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBzZXRxIGxvY2F0ZS1kb21pbmF0 aW5nLWZpbGUgZW52cmMtLWZpbmQtZW52LWRpciAiIzxzdWJyIGVudnJjLS11cGRhdGU+IiBhcHBs eSBlbnZyYy0tdXBkYXRlXSAyIFtzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUt ZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBsZXQgd2hpbGUgbGV0IHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IG9yZy0tY29sbGVj dC1rZXl3b3Jkcy0xIGxldCogb3JnLWNvbGxlY3Qta2V5d29yZHNdIDEgW2FuZCBsZXQgc2V0LWF1 dG8tbW9kZS0xIGxldCBzYXZlLWV4Y3Vyc2lvbiBjYXRjaCBoYWNrLWxvY2FsLXZhcmlhYmxlcy1w cm9wLWxpbmUgYXBwZW5kIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJkOTUwZWExMWY3Nz4i IHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9jYWwtdmFyaWFibGVz IHJ1bi1tb2RlLWhvb2tzXSAyIFsiIzxjb21waWxlZCAtMHg0MTk0M2M5MTQ2ZGQ2ZTE+IiBvcmct Zm9sZC1jb3JlLWFkZC1mb2xkaW5nLXNwZWMgb3JnLWZvbGQtY29yZS1pbml0aWFsaXplIG9yZy1m b2xkLWluaXRpYWxpemUgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYgc2V0 LWF1dG8tbW9kZS0wIHByb2duIGlmIGxldCBpZl0gMSBbbWFjcm9leHAtbWFjcm9leHBhbmQgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFr ZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6 ZS1hc3NvY2lhdGVkXSAxIFtjYXIgaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVu dC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hl LWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVy IGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlcl0gMSBbbWFjcm9leHBhbmQtYWxsIGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIG9yZy1wZXJzaXN0LS1u b3JtYWxpemUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQg cHJvZ24gbGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbl0g MSBbYXBwbHkgYWJvcnQtaWYtZmlsZS10b28tbGFyZ2UgZXEgaWYgcHJvZ24gaWYgbGV0KiBpZiBp ZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0IGVkaXRv cmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseV0gMyBbaWYgYWdlLWRlbGV0 ZS1vdXRwdXQtZmlsZSBpZiB1bndpbmQtcHJvdGVjdCBhZ2UtZGVjcnlwdC1maWxlIHNldHEgY29u ZGl0aW9uLWNhc2UgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmls ZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3RdIDIgW29yZy1wZXJz aXN0LS1ub3JtYWxpemUtY29udGFpbmVyICIjPGxhbWJkYSAweDExY2Q0NTIxZj4iIG1hcGNhciAi IzxsYW1iZGEgMHgxZTEwOWFhYzBjZDNkYT4iIGZ1bmNhbGwgY29uZCBsZXQqIGNvbmQgbGV0KiBv cmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBsaXN0IG9yZy1wZXJzaXN0LS1maW5kLWlu ZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ25dIDEgW3NldHEgbGV0 IGxldCogYWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJvZ24gdW53aW5kLXByb3Rl Y3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90 ZWN0IGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHldIDIgW2Fzc29jLWRl bGV0ZS1hbGwgYXNzcS1kZWxldGUtYWxsIHVucmVjb3JkLXdpbmRvdy1idWZmZXIgcmVwbGFjZS1i dWZmZXItaW4td2luZG93cyBraWxsLWJ1ZmZlciBhbmQgdW53aW5kLXByb3RlY3Qgc2F2ZS1jdXJy ZW50LWJ1ZmZlciBsZXQgYWdlLXJlYWQtb3V0cHV0IGlmIHByb2duIHVud2luZC1wcm90ZWN0IGFn ZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZV0gMSBbZGVyaXZlZC1tb2RlLXAgZG9v bS1tb2RlbGluZS1hdXRvLXNldC1tb2RlbGluZSBydW4taG9va3MgaWYgbm9ybWFsLW1vZGUgaWYg IiM8bGFtYmRhIC0weDFjMzY2NWQ4YzQ5MWE2ZT4iIGFwcGx5IHByb2duIHVud2luZC1wcm90ZWN0 IGxldCogZG9vbS0tc2h1dC11cC1hdXRvc2F2ZS1hIGFwcGx5ICIjPGNvbXBpbGVkIDB4ZjE5ZDFl Njk2ZDM1Yjc1PiIgYXBwbHkgIiM8Y29tcGlsZWQgMHg4MmNmNGJiNWQ5ODljOTg+Il0gMSBbcHJv Z24gaWYgZGlyLWxvY2Fscy0tYWxsLWZpbGVzIGZ1bmNhbGwgaWYgc2V0cSB3aGlsZSBsZXQgbG9j YXRlLWRvbWluYXRpbmctZmlsZSBsZXQqIGRpci1sb2NhbHMtZmluZC1maWxlIGxldCBwcm9nbiBp ZiBoYWNrLWRpci1sb2NhbC0tZ2V0LXZhcmlhYmxlcyBjZHJdIDEgW21hcGNhciBzZXQgbGV0IHBy b2duIGlmIG9yZy1zZXQtcmVnZXhwcy1hbmQtb3B0aW9ucyBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggbGV0IHdoaWxlIGxldCBsZXQgb3Jn LWFnZW5kYS1wcmVwYXJlLWJ1ZmZlcnMgaWZdIDEgW3Byb2duIGRvb20tZGlzYWJsZS1zbWFydHBh cmVucy1uYXZpZ2F0ZS1za2lwLW1hdGNoLWggcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIj PGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21waWxlZCAweGYxOWQxZTY5 NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5Yzk4PiJdIDEgW2xldCog aWYgbGV0KiBvcmctZWxlbWVudC1jb250ZW50cy1iZWdpbiBnb3RvLWNoYXIgY29uZCBsZXQqIHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBv cmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXRdIDEgW2Fkdmlj ZS0tbWFrZSBhZHZpY2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRkICIjPHN1YnIgRjYxNmU2ZjZl Nzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1iZGFfMzc+IiBldmFsLWFmdGVy LWxvYWQgY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1o b29rcyBydW4tbW9kZS1ob29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRv LW1vZGUtMCBwcm9nbl0gMSBbdW53aW5kLXByb3RlY3QgbGV0KiBhZ2UtZmlsZS1pbnNlcnQtZmls ZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFnZS1maWxl LWhhbmRsZXIgIiM8c3ViciBpbnNlcnQtZmlsZS1jb250ZW50cz4iIGFwcGx5IGlmIGVkaXRvcmNv bmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5IGluc2VydC1maWxlLWNvbnRl bnRzXSAxIFtvciBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFt ZSBicmVhZGNydW1iLS1wcm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMg YnJlYWRjcnVtYi0tdHVybi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBi cmVhZGNydW1iLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2Rl IGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseV0gMiBbY2NvbnYtZnYgY2Nv bnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGhhY2stZGlyLWxvY2FsLS1nZXQt dmFyaWFibGVzIGNkciBsZXQqIGNvbmRpdGlvbi1jYXNlIGlmIGxldCAiIzxsYW1iZGEgMHgxYjgw ZDA4YzAzMDY3MDZmPiIgYXBwbHkgIiM8Y29tcGlsZWQgMHgxYjkwZGYyYTFiZjFkNDE4PiIgc28t bG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBzZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1jYXNlXSAx IFthZGQtaG9vayB0ZXh0LW1vZGUgb3V0bGluZS1tb2RlIGxldCBwcm9nbiBvcmctbW9kZSBmdW5j YWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWYgc2V0LWF1dG8t bW9kZS0tYXBwbHktYWxpc3RdIDEgW2FuZCBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 IGZpbGUtbmFtZS1zYW5zLWV4dGVuc2lvbiBmaWxlLW5hbWUtYmFzZSBicmVhZGNydW1iLS1wcm9q ZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVybi1v bi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUtZW5h YmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGxd IDEgW2FnZS1maWxlLXJ1bi1yZWFsLWhhbmRsZXIgY29uZGl0aW9uLWNhc2UgbGV0KiBhZ2UtZmls ZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBseSBpZiBsZXQgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0IGFnZS1maWxlLWhhbmRsZXIgIiM8c3ViciBpbnNlcnQtZmlsZS1jb250ZW50cz4iIGFwcGx5 IGlmIGVkaXRvcmNvbmZpZy0tYWR2aWNlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5XSAxIFtm aWxlLW1vZGVzIGxldCBvciBpZiBpZiAiIzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBw bHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBw bHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgy Y2Y0YmI1ZDk4OWM5OD4iIGFwcGx5XSAxIFtzZXQgbGV0IG9yZy1jb21wdXRlLWxhdGV4LWFuZC1y ZWxhdGVkLXJlZ2V4cCBpZiBsZXQgcHJvZ24gaWYgb3JnLXNldC1yZWdleHBzLWFuZC1vcHRpb25z IGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMF0g MSBbbm90IGFuZCBpZiBvcmctcm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseSBk ZWxldGUtZmlsZSBpZiBhZ2UtZGVsZXRlLW91dHB1dC1maWxlIGlmIHVud2luZC1wcm90ZWN0IGFn ZS1kZWNyeXB0LWZpbGUgc2V0cSBjb25kaXRpb24tY2FzZSBwcm9nbiB1bndpbmQtcHJvdGVjdCBs ZXQqXSAxIFtkb29tLW1ha2UtaGFzaGVkLWF1dG8tc2F2ZS1maWxlLW5hbWUtYSBhcHBseSBtYWtl LWF1dG8tc2F2ZS1maWxlLW5hbWUgb3IgZmlsZS1uZXdlci10aGFuLWZpbGUtcCBhbmQgaWYgY29u ZCBsZXQqIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYV0gMSBbcmVnZXhwLW9wdC1n cm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCBy ZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAt b3B0LWdyb3VwIHJlZ2V4cC1vcHQgY29uY2F0IG9yZy1tYWtlLW9wdGlvbnMtcmVnZXhwIHNldHEg Y29uZCBsZXQgbGV0IGlmXSAxIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9z dXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgIiM8bGFt YmRhIDB4MTFjZDQ1MjFmPiIgbWFwY2FyICIjPGxhbWJkYSAweDFlMTA5YWFjMGNkM2RhPiJdIDEg W2FkdmljZS0tcmVtb3ZlLWZ1bmN0aW9uIGFkdmljZS0tYWRkLWZ1bmN0aW9uIGFkdmljZS1hZGQg b3JnLWZvbGQtLWFkdmljZS1lZGl0LWNvbW1hbmRzIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxs IHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBpZiBsZXQgaWZdIDEgW2ZpbGUtcmVt b3RlLXAgZW52cmMtZ2xvYmFsLW1vZGUtZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5v cm1hbC1tb2RlIGlmICIjPGxhbWJkYSAtMHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseSBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQqIGRvb20tLXNodXQtdXAtYXV0b3NhdmUtYSBhcHBseSAiIzxjb21w aWxlZCAweGYxOWQxZTY5NmQzNWI3NT4iIGFwcGx5ICIjPGNvbXBpbGVkIDB4ODJjZjRiYjVkOTg5 Yzk4PiJdIDEgW2NvbmNhdCBvcmctbWFrZS1vcHRpb25zLXJlZ2V4cCBzZXRxIGNvbmQgbGV0IGxl dCBpZiBsZXQqIGxldCBwcm9nbiBpZiBsZXQgd2hpbGUgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb25dIDEgW2NsLWZpbmQtaWYgcHJvamVjdC10cnktdmMgcHJvamVjdC0tZmluZC1p bi1kaXJlY3RvcnkgcHJvamVjdC1jdXJyZW50IGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEg YnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUt b24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4tYnVmZmVy cyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbCBwcm9nbiBpZiBpZiBz ZXQtYXV0by1tb2RlLTBdIDEgW2lmIHNhdmUtZXhjdXJzaW9uIGxldCBoYWNrLWxvY2FsLXZhcmlh Ymxlcy0tZmluZC12YXJpYWJsZXMgYXBwZW5kIGxldCBpZiBsZXQgIiM8bGFtYmRhIDB4MTEyYWJk OTUwZWExMWY3Nz4iIHNvLWxvbmctLWhhY2stbG9jYWwtdmFyaWFibGVzIGFwcGx5IGhhY2stbG9j YWwtdmFyaWFibGVzIHJ1bi1tb2RlLWhvb2tzIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ25dIDEgW2Fu ZCBwcm9nbiBvciBwcm9nbiBsZXQqIGFnZS1maWxlLWluc2VydC1maWxlLWNvbnRlbnRzIGFwcGx5 IGlmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWdlLWZpbGUtaGFuZGxlciAiIzxzdWJy IGluc2VydC1maWxlLWNvbnRlbnRzPiIgYXBwbHkgaWZdIDEgW29yZy1wZXJzaXN0LS1ub3JtYWxp emUtYXNzb2NpYXRlZCBzZXRxIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlvbiBsZXQgcHJvZ24g bGV0KiBvcmctcGVyc2lzdC1yZWdpc3RlciBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBzYXZl LWN1cnJlbnQtYnVmZmVyIGxldCB3aGlsZV0gMSBbaWYgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxl bWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50 LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBp ZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cV0gMyBb Y2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252 LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgIiM8bGFtYmRhIDB4MWUx MmI4ZmJmZmE4ZGE+IiBmdW5jYWxsIGNvbmQgbGV0KiBjb25kIGxldCogb3JnLXBlcnNpc3QtLW5v cm1hbGl6ZS1jb250YWluZXIgc2V0cSBwcm9nbiBsZXQqXSAxIFthZHZpY2UtLW1lbWJlci1wIGFk dmljZS0tYWRkLWZ1bmN0aW9uIGFkdmljZS1hZGQgb3JnLWZvbGQtLWFkdmljZS1lZGl0LWNvbW1h bmRzIGxldCBwcm9nbiBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUt MCBwcm9nbiBpZiBsZXQgaWZdIDEgW3N0cmluZy1tYXRjaCBub3QgYW5kIHdoaWxlIGxldCB3aGls ZSBsZXQgaW5oaWJpdC1sb2NhbC12YXJpYWJsZXMtcCBzby1sb25nLS1jaGVjay1oZWFkZXItbW9k ZXMgc28tbG9uZy0tc2V0LWF1dG8tbW9kZSBhcHBseSBzZXQtYXV0by1tb2RlIGNvbmRpdGlvbi1j YXNlIGxldCBub3JtYWwtbW9kZSBpZl0gMSBbcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdy b3VwIHJlZ2V4cC1vcHQtZ3JvdXAgcmVnZXhwLW9wdCBjb25jYXQgb3JnLW1ha2Utb3B0aW9ucy1y ZWdleHAgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24g bGV0IG9yZy0tY29sbGVjdC1rZXl3b3Jkcy0xIGxldCogb3JnLWNvbGxlY3Qta2V5d29yZHMgbGV0 IHByb2duXSAxIFtsZXQqIGlmIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtl eSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFy ZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yXSAxIFttYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252 LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBhdmwtdHJlZS1tYXBjIHByb2duXSAx IFtnbG9iYWwtamlueC1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1o b29rcyBvcmctbW9kZSBmdW5jYWxsIHByb2duIGlmIGlmIHNldC1hdXRvLW1vZGUtMCBwcm9nbiBp ZiBsZXQgaWYgc2V0LWF1dG8tbW9kZS0tYXBwbHktYWxpc3Qgc2V0cSBpZl0gMSBbcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBzYXZlLWN1cnJlbnQtYnVmZmVy IGxldCBwcm9nbiBpZiBhZ2Utc2NyeXB0LXAgYXNldCBsZXQqIHByb2duIGxldCogYWdlLWZpbGUt aW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHldIDEgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi0t YW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1p bnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0IHdoaWxlIGxldCBsZXQgY29uZCBv cmctLXRhZy1hZGQtdG8tYWxpc3Qgc2V0cSBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u XSAxIFtmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGxldCBpZiBvciBsZXQgaWYgbGV0IHdoaWxlIGxl dCBmaWxlLXRydWVuYW1lIGVxdWFsIGFuZCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0 KiBwcm9nbl0gMSBbPSBhbmQgbm90IGFuZCBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIHNldHEgbG9jYXRlLWRvbWluYXRpbmct ZmlsZSBlbnZyYy0tZmluZC1lbnYtZGlyXSAxIFtsZXQgaWYgc2F2ZS1leGN1cnNpb24gbGV0IGhh Y2stbG9jYWwtdmFyaWFibGVzLS1maW5kLXZhcmlhYmxlcyBvciBhbmQgaWYgbGV0ICIjPGxhbWJk YSAweDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlhYmxlcyBhcHBs eSBoYWNrLWxvY2FsLXZhcmlhYmxlcyBzZXRxIGFuZCBsZXRdIDEgW3NldHEgcHJvZ24gaWYgbGV0 IHByb2duIHVud2luZC1wcm90ZWN0IGxldCBmaWxlcy0tdHJhbnNmb3JtLWZpbGUtbmFtZSBpZiBs ZXQgaWYgIiM8bGFtYmRhIDB4MjRiNjc2ODA1NmY4NmJhPiIgZnVuY2FsbCBsZXQgZG9vbS1tYWtl LWhhc2hlZC1hdXRvLXNhdmUtZmlsZS1uYW1lLWEgYXBwbHldIDEgW2Njb252LWFuYWx5emUtZm9y bSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9y bSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9y bSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9y bSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9y bSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9y bV0gMiBbaWYgYXNldCBsZXQqIHByb2duIGFnZS1jb250ZXh0LXNldC1wYXNzcGhyYXNlLWNhbGxi YWNrIGxldCogYWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0IHByb2du IHVud2luZC1wcm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyICIjPHN1YnIgaW5zZXJ0LWZpbGUt Y29udGVudHM+IiBhcHBseV0gMSBbdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFt ZSBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5 bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWYgYWdlLWRlbGV0ZS1vdXRwdXQt ZmlsZSBpZiB1bndpbmQtcHJvdGVjdF0gMSBbc2F2ZS1jdXJyZW50LWJ1ZmZlciBwcm9nbiBpZiBw cm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmIHByb2duIGlmIHByb2duIGlm IHNhdmUtY3VycmVudC1idWZmZXIgbGV0IHdoaWxlIGxldF0gMSBbZmlsZS1yZW1vdGUtcCBsZXQg cHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGZpbGUtcmVsYXRpdmUtbmFtZSBicmVhZGNydW1iLS1w cm9qZWN0LWNydW1icy0xIGJyZWFkY3J1bWItcHJvamVjdC1jcnVtYnMgYnJlYWRjcnVtYi0tdHVy bi1vbi1sb2NhbC1tb2RlLW9uLWJlaGFsZi1vZi1nbG9iYWwtbW9kZSBicmVhZGNydW1iLW1vZGUt ZW5hYmxlLWluLWJ1ZmZlcnMgcnVuLWhvb2tzIGlmIG5vcm1hbC1tb2RlIGlmICIjPGxhbWJkYSAt MHgxYzM2NjVkOGM0OTFhNmU+IiBhcHBseV0gMSBbY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnBy ZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciAiIzxsYW1iZGEgMHgxZTEyYjhmYmZmYThkYT4i IGZ1bmNhbGwgY29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRh aW5lciBzZXRxIHByb2duIGlmIHByb2duIGxldCpdIDEgW2xldCogd2l0aC1uby13YXJuaW5ncyBv cmctcGVyc2lzdC0tZmluZC1pbmRleCBvciBvcmctcGVyc2lzdC0tZ2V0LWNvbGxlY3Rpb24gbGV0 IHByb2duIGlmIHByb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJvZ24g aWYgcHJvZ25dIDEgW2NvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50 IGxldCB3aGlsZSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vy c2lvbl0gMSBbcmVnZXhwLW9wdCBzZXRxIHByb2duIGlmIGxldCBwcm9nbiBpZiBvcmctc2V0LXJl Z2V4cHMtYW5kLW9wdGlvbnMgbGV0IHByb2duIG9yZy1tb2RlIGZ1bmNhbGwgcHJvZ24gaWYgaWYg c2V0LWF1dG8tbW9kZS0wXSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVy cHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwaGFzaCBwcm9nbiBsZXQgZWRpdG9yY29uZmlnLWNh bGwtZ2V0LXByb3BlcnRpZXMtZnVuY3Rpb24gc2V0cSBwcm9nbiBpZiBjb25kaXRpb24tY2FzZSBs ZXQgZWRpdG9yY29uZmlnLS1hZHZpY2UtZmluZC1maWxlLW5vc2VsZWN0XSAxIFtpZiBvcmctcm9h bS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZiBvcmctcm9hbS1maWxlLXAgYW5kIGlmIG9y Zy1yb2FtLWRiLWF1dG9zeW5jLS1kZWxldGUtZmlsZS1hIGFwcGx5IGRlbGV0ZS1maWxlIGlmIGFn ZS1kZWxldGUtb3V0cHV0LWZpbGUgaWYgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZV0g MSBbc2V0Y2FyIHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGlm IHNldHEgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgZmluZC1maWxlLW5vc2VsZWN0LTEgaWYgbGV0 KiBpZiBpZiAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHldIDEgW2Fzc29jIGlm IG9yIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZpbGUtdHJ1ZW5hbWUgYWJicmV2aWF0ZS1maWxlLW5h bWUgbGV0IGZpbmQtYnVmZmVyLXZpc2l0aW5nIG9yZy1maW5kLWJhc2UtYnVmZmVyLXZpc2l0aW5n IGxldCAiIzxsYW1iZGEgLTB4MTY4ZTA2ZmI0ZmFkOTU1Nz4iIGZ1bmNhbGxdIDEgWyIjPGxhbWJk YSAweDExY2Q0NTIxZj4iIG1hcGNhciAiIzxsYW1iZGEgMHgxZTEyYjhmYmZmYThkYT4iIGZ1bmNh bGwgY29uZCBsZXQqIGNvbmQgbGV0KiBvcmctcGVyc2lzdC0tbm9ybWFsaXplLWNvbnRhaW5lciBs aXN0IG9yZy1wZXJzaXN0LS1maW5kLWluZGV4IG9yIG9yZy1wZXJzaXN0LS1nZXQtY29sbGVjdGlv biBsZXQgcHJvZ24gbGV0Kl0gMSBbc2V0cSB3aGlsZSBsZXQgbG9jYXRlLWRvbWluYXRpbmctZmls ZSBwcm9qZWN0LXRyeS12YyBwcm9qZWN0LS1maW5kLWluLWRpcmVjdG9yeSBwcm9qZWN0LWN1cnJl bnQgYnJlYWRjcnVtYi0tcHJvamVjdC1jcnVtYnMtMSBicmVhZGNydW1iLXByb2plY3QtY3J1bWJz IGJyZWFkY3J1bWItLXR1cm4tb24tbG9jYWwtbW9kZS1vbi1iZWhhbGYtb2YtZ2xvYmFsLW1vZGUg YnJlYWRjcnVtYi1tb2RlLWVuYWJsZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBydW4tbW9kZS1ob29r cyBvcmctbW9kZSBmdW5jYWxsIHByb2duXSAxIFs8IGlmIHdoaWxlIGxldCBmaWxlLXRydWVuYW1l IGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgbGV0IGlmIG9yIGxldCBpZiBsZXQgd2hpbGUgbGV0IGZp bGUtdHJ1ZW5hbWUgZXF1YWxdIDEgW2xpc3Qgb3JnLXBlcnNpc3QtLWZpbmQtaW5kZXggb3Igb3Jn LXBlcnNpc3QtLWdldC1jb2xsZWN0aW9uIGxldCBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lz dGVyIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0XSAx IFtsZXQgaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5h bWUgc2V0cSAiIzxsYW1iZGEgLTB4ZDZlOWJiMjVhNDgxMzJhPiIgYXBwbHkgc2V0cSBsZXQgbGV0 IGVkaXRvcmNvbmZpZy0tYWR2aWNlLWZpbmQtZmlsZS1ub3NlbGVjdCBhcHBseSBmaW5kLWZpbGUt bm9zZWxlY3RdIDEgW3Byb2duIGxldCogb3JnLXBlcnNpc3QtcmVnaXN0ZXIgcHJvZ24gaWYgcHJv Z24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQgd2hpbGUgbGV0IG9yZy1lbGVt ZW50LWNhY2hlLXJlc2V0IHByb2duIGlmXSAxIFtjb25jYXQgc2V0cSBpZiBpZiBsZXQgaWYgbGV0 IHdoaWxlIGxldCBmaWxlLXRydWVuYW1lIGFiYnJldmlhdGUtZmlsZS1uYW1lIGxldCBmaW5kLWJ1 ZmZlci12aXNpdGluZyBvcmctZmluZC1iYXNlLWJ1ZmZlci12aXNpdGluZyBsZXQgIiM8bGFtYmRh IC0weDE2OGUwNmZiNGZhZDk1NTc+Il0gMSBbaWYgbGV0IGlmIGxldCBwcm9nbiB1bndpbmQtcHJv dGVjdCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGJyZWFkY3J1bWItLXByb2plY3QtY3J1bWJzLTEg YnJlYWRjcnVtYi1wcm9qZWN0LWNydW1icyBicmVhZGNydW1iLS10dXJuLW9uLWxvY2FsLW1vZGUt b24tYmVoYWxmLW9mLWdsb2JhbC1tb2RlIGJyZWFkY3J1bWItbW9kZS1lbmFibGUtaW4tYnVmZmVy cyBydW4taG9va3MgcnVuLW1vZGUtaG9va3Mgb3JnLW1vZGUgZnVuY2FsbF0gMSBbZ2V0ZW52IGxp c3Qgc2VxLWZpbmQgbGV0IGxldCogYWdlLS1zdGFydCBsZXQgYWdlLXN0YXJ0LWRlY3J5cHQgcHJv Z24gdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmlsZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHBy b2duIHVud2luZC1wcm90ZWN0IGxldCpdIDEgW2Rvb20tcHJvdGVjdC1mYWxsYmFjay1idWZmZXIt aCBraWxsLWJ1ZmZlciBpZiBhZ2UtcmVzZXQgdW53aW5kLXByb3RlY3QgYWdlLWRlY3J5cHQtZmls ZSBzZXRxIGNvbmRpdGlvbi1jYXNlIHByb2duIHVud2luZC1wcm90ZWN0IGxldCogYWdlLWZpbGUt aW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0IHByb2duXSAxIFtjbC1yZW1vdmUgY2wt cmVtb3ZlLWlmLW5vdCBlZGl0b3Jjb25maWctY29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmln LWNvcmUtLWdldC1oYW5kbGVzIGVkaXRvcmNvbmZpZy1jb3JlLS1nZXQtaGFuZGxlcyBlZGl0b3Jj b25maWctY29yZS0tZ2V0LWhhbmRsZXMgZWRpdG9yY29uZmlnLWNvcmUtLWdldC1oYW5kbGVzIGVk aXRvcmNvbmZpZy1jb3JlLWdldC1wcm9wZXJ0aWVzLWhhc2ggZnVuY2FsbCBzZXRxIGNvbmRpdGlv bi1jYXNlIGxldCBlZGl0b3Jjb25maWctY2FsbC1nZXQtcHJvcGVydGllcy1mdW5jdGlvbiBzZXRx IHByb2duIGlmXSAxIFtpZiBpZiBpZiBsZXQgaWYgbGV0IHdoaWxlIGxldCBmaWxlLXRydWVuYW1l IGVxdWFsIGFuZCBpZiBvcmctcm9hbS1kZXNjZW5kYW50LW9mLXAgbGV0KiBwcm9nbiBpZl0gMSBb bGV0KiBpZiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1 cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBp ZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9u XSAxIFtlcXVhbCBjb25kIHdoaWxlIGxldCBsb2NhdGUtZG9taW5hdGluZy1maWxlIGxldCogZGly LWxvY2Fscy1maW5kLWZpbGUgbGV0IHByb2duIGlmIGhhY2stZGlyLWxvY2FsLS1nZXQtdmFyaWFi bGVzIGxldCogaGFjay1kaXItbG9jYWwtdmFyaWFibGVzIGNvbmRpdGlvbi1jYXNlIGlmIGxldF0g MSBbK2NvbXBhbnktaW5pdC1iYWNrZW5kcy1oIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAi IzxsYW1iZGEgLTB4MWMzNjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0KiBkb29tLS1zaHV0LXVwLWF1dG9zYXZlLWEgYXBwbHkgIiM8Y29tcGlsZWQgMHhmMTlkMWU2 OTZkMzViNzU+IiBhcHBseSAiIzxjb21waWxlZCAweDgyY2Y0YmI1ZDk4OWM5OD4iIGFwcGx5XSAx IFthdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50 LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHEgaWYgaWYgd2hpbGUgbGV0IGxl dCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAx IFtvciBmaWxlLXJlbW90ZS1wIG5vdCBvciBhbmQgaWYgaGFjay1kaXItbG9jYWwtLWdldC12YXJp YWJsZXMgbGV0KiBoYWNrLWRpci1sb2NhbC12YXJpYWJsZXMgY29uZGl0aW9uLWNhc2UgaWYgbGV0 ICIjPGxhbWJkYSAweDExMmFiZDk1MGVhMTFmNzc+IiBzby1sb25nLS1oYWNrLWxvY2FsLXZhcmlh YmxlcyBhcHBseSBoYWNrLWxvY2FsLXZhcmlhYmxlc10gMSBbbWFjcm9leHBhbmQtYWxsIGNjb252 LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBjbC1tYXBjYW4gbGV0IGxldCBwcm9n biBpZiBvcmctc2V0LXJlZ2V4cHMtYW5kLW9wdGlvbnMgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIGxldCB3aGlsZSBsZXRdIDEgW3NldHEg YWdlLWZpbGUtaW5zZXJ0LWZpbGUtY29udGVudHMgYXBwbHkgaWYgbGV0IHByb2duIHVud2luZC1w cm90ZWN0IGxldCBhZ2UtZmlsZS1oYW5kbGVyICIjPHN1YnIgaW5zZXJ0LWZpbGUtY29udGVudHM+ IiBhcHBseSBpZiBlZGl0b3Jjb25maWctLWFkdmljZS1pbnNlcnQtZmlsZS1jb250ZW50cyBhcHBs eSBpbnNlcnQtZmlsZS1jb250ZW50cyBsZXRdIDEgW2lmIGxldCBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQgZmlsZS1yZWxhdGl2ZS1uYW1lIGxldCogcHJvZ24gaWYgb3JnLXJvYW0tZmlsZS1wIGFu ZCBpZiBvcmctcm9hbS1kYi1hdXRvc3luYy0tZGVsZXRlLWZpbGUtYSBhcHBseSBkZWxldGUtZmls ZSBpZl0gMSBbYWR2aWNlLS1tZW1iZXItcCBhZHZpY2UtLWFkZC1mdW5jdGlvbiBhZHZpY2UtYWRk ICIjPHN1YnIgRjYxNmU2ZjZlNzk2ZDZmNzU3MzJkNmM2MTZkNjI2NDYxX2Fub255bW91c19sYW1i ZGFfMzc+IiBldmFsLWFmdGVyLWxvYWQgY3RybGYtbG9jYWwtbW9kZSBjdHJsZi1tb2RlLWVuYWJs ZS1pbi1idWZmZXJzIHJ1bi1ob29rcyBpZiBub3JtYWwtbW9kZSBpZiAiIzxsYW1iZGEgLTB4MWMz NjY1ZDhjNDkxYTZlPiIgYXBwbHkgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0Kl0gMSBbb3IgbGV0 IGlmIGxldCB3aGlsZSBsZXQgZmlsZS10cnVlbmFtZSBhYmJyZXZpYXRlLWZpbGUtbmFtZSBsZXQq IGlmIGlmICIjPGxhbWJkYSAtMHhkNmU5YmIyNWE0ODEzMmE+IiBhcHBseSBzZXRxIGxldCBsZXRd IDEgW3Byb2duIHVud2luZC1wcm90ZWN0IGxldCBvcmctcm9hbS0tZmlsZS1uYW1lLWV4dGVuc2lv biBsZXQqIHByb2duIGlmIG9yZy1yb2FtLWZpbGUtcCBhbmQgaWYgb3JnLXJvYW0tZGItYXV0b3N5 bmMtLWRlbGV0ZS1maWxlLWEgYXBwbHkgZGVsZXRlLWZpbGUgaWYgYWdlLWRlbGV0ZS1vdXRwdXQt ZmlsZSBpZl0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1j bG9zdXJlIGZ1bmN0aW9uIGxldCogb3JnLXBlcnNpc3QtLW5vcm1hbGl6ZS1jb250YWluZXIgc2V0 cSBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1wZXJzaXN0LXJlZ2lzdGVyIHByb2duIGlmXSAxIFtp ZiAiIzxsYW1iZGEgMHgyODA5YzM0ODA0YWMxYTY+IiBtYXBjYXIgYXBwbHkgc2V0cSBsZXQgb3Jn LWFnZW5kYS1maWxlcyBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhXSA1IFth bmQgIiM8bGFtYmRhIDB4MWUxMGJhOGI5YmQ3ZmY+IiBtYXBjYXIgZGVscSBzZXRxIHByb2duIGlm IGxldCBvcmctYWdlbmRhLWZpbGVzIGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwt aW50ZXJhY3RpdmVseSBjYWxsLWludGVyYWN0aXZlbHkgY29uZCBsZXQqXSA0IFtvcmctZGF5cy10 by1pc28td2VlayBsZXQqIGlmIGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50 ZXJhY3RpdmVseSBjYWxsLWludGVyYWN0aXZlbHkgY29uZCBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEg ZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWwgbmlsXSA5IFtkby1hZnRl ci1sb2FkLWV2YWx1YXRpb24gcmVxdWlyZSBvcmctZGF5cy10by1pc28td2VlayBsZXQqIGlmIGxl dCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjYWxsLWludGVy YWN0aXZlbHkgY29uZCBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbW1hbmQtZXhlY3V0ZV0gMTAgW21hY3JvZXhwLW1hY3JvZXhwYW5kIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGxdIDEyIFtvcmctYWdlbmRhLWdldC1zZXhwcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0 IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgaWYgbGV0Kl0gMjcgW2J5dGUtY29kZSByZXF1aXJlIG9yZy1h Z2VuZGEtZ2V0LXNleHBzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJv Z24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZl cl0gMTEgW2RvLWFmdGVyLWxvYWQtZXZhbHVhdGlvbiBsb2FkIGJ5dGUtY29kZSByZXF1aXJlIG9y Zy1hZ2VuZGEtZ2V0LXNleHBzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCog cHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb25dIDggW2Rlcml2ZWQtbW9kZS1wIGVsaXNwLS1mb250 LWxvY2stZmx1c2gtZWxpc3AtYnVmZmVycyBkby1hZnRlci1sb2FkLWV2YWx1YXRpb24gbG9hZCBi eXRlLWNvZGUgcmVxdWlyZSBvcmctYWdlbmRhLWdldC1zZXhwcyBjb25zIHNldHEgbGV0IGNvbmQg bGV0IHdoaWxlIGxldCBsZXQqIHByb2duXSAxIFtyZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQt Z3JvdXAgcmVnZXhwLW9wdC1ncm91cCByZWdleHAtb3B0LWdyb3VwIHJlZ2V4cC1vcHQgZGlhcnkt bmFtZS1wYXR0ZXJuIGRpYXJ5LWZvbnQtbG9jay1kYXRlLWZvcm1zIGRpYXJ5LWZvbnQtbG9jay1r ZXl3b3JkcyBkZWZ2YXIgcmVxdWlyZSBvcmctYWdlbmRhLWdldC1zZXhwcyBjb25zIHNldHEgbGV0 IGNvbmQgbGV0XSAxIFtkby1hZnRlci1sb2FkLWV2YWx1YXRpb24gcmVxdWlyZSBvcmctYWdlbmRh LWdldC1zZXhwcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxl dCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXJdIDgg W21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1h bGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbF0gMTAgW250aCBnb3RvLWNo YXIgcHJvZ24gbGV0KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1pdGVtLXBhcnNlciBjb25k IHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0 cSBpZiBpZiB3aGlsZSBsZXRdIDEgW29yZy1lbGVtZW50LXNlY3Rpb24tcGFyc2VyIGNvbmQgc2V0 cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlm IGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1j dXJyZW50LWJ1ZmZlciBjYXRjaF0gMSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1j bG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0 LWRlYWRsaW5lcyBzZXRxIGxldF0gNCBbY29uZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1l eGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8g Y29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWZdIDIgW3Byb2duIHByb2duIGlmIGxldCBsZXQqIHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVu dC0taGVhZGxpbmUtZGVmZXJyZWQgYXBwbHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5IG9yZy1lbGVt ZW50LS1wcm9wZXJ0eSBhbmQgaWYgIiM8bGFtYmRhIC0weDJjZWE3ZWY0ZTViNTI0MD4iIGZ1bmNh bGxdIDEgW2FuZCBsZXQqIGFuZCBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVs ZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRy ZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRy ZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUt cHV0XSAzIFtsZXQgaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1m aWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBs ZXQgY29uZCBsZXQgd2hpbGVdIDM5IFttYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnBy ZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQq IG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxXSAxIFthbmQgbGV0KiBwcm9nbiB1bndpbmQt cHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdl bmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZV0gMzUgW2xldCog c2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtcGFyYWdyYXBoLXBhcnNlciBjb25kIHNldHEgbGV0 IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3 aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSA0IFtjY29udi1h bmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0t YW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1p bnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9y Zy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0XSA3IFtlcXVhbCBh bmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRl LWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25z XSAyNCBbb3JnLWVsZW1lbnQtY29udGVudHMtZW5kIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0 Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0XSAxIFtm dW5jdGlvbiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJv Z24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdl dC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZF0gMTIgW2Njb252LWZ2IGNjb252LW1ha2UtaW50ZXJw cmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdl bmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBw cm9nbiBsZXRdIDI5IFtpZiBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVu dC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24g aWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9y IHNldHEgaWYgaWYgd2hpbGVdIDEgW2lmIGxldCogaWYgbGV0KiBvcmctZWxlbWVudC1jb250ZW50 cy1lbmQgc2V0cSBwcm9nbiBwcm9nbiBpZiBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogc2F2 ZS1yZXN0cmljdGlvbl0gMSBbb3JnLWNoZWNrLWFnZW5kYS1maWxlIGNhdGNoIHdoaWxlIHdoaWxl IGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjYWxsLWlu dGVyYWN0aXZlbHkgY29uZCBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDUgW2lmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQt dGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlXSA0OCBbaWYgbGV0IGNvbmQg bGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBnb3RvLWNoYXIgc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1oZWFkbGlu ZS1kZWZlcnJlZCBhcHBseSBvcmctZWxlbWVudC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtLXByb3Bl cnR5IGFuZF0gMSBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1h bmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1h bmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1h bmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0t YW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1p bnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uXSA2IFtvcmctZWxlbWVudC1jcmVhdGUgbGV0KiBz YXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1oZWFkbGluZS1wYXJzZXIgY29uZCBzZXRxIGxldCBz YXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hp bGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbl0gNCBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29u di1tYWtlLWludGVycHJldGVkLWNsb3N1cmVdIDkgW2xldCogYW5kIGxldCogYW5kIGxldCogb3Ig b3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmct ZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVu dGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJl bnQtYnVmZmVyXSA0IFtsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGdv dG8tY2hhciBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqXSAxIFtjY29udi0t YW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtLWFuYWx5emUtZnVuY3Rp b24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbl0gNiBbZnVuY3Rpb24gbGlzdCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dy b3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIg aWYgbGV0KiBvcmctYWdlbmRhLWdldC1kYXktZW50cmllcyBhcHBseSBzZXRxIGNvbmQgbGV0IGNh dGNoIHdoaWxlIHdoaWxlXSA5IFtzZXRxIHByb2duIGxldCBpZiBsZXQqIHNhdmUtZXhjdXJzaW9u IHByb2duIGlmIG9yZy1lbGVtZW50LXRpbWVzdGFtcC1wYXJzZXIgbGV0IHdoaWxlIGxldCBwcm9n biBpZiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tZ2V0LXRpbWUtcHJvcGVydGllc10gMSBb bGV0KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1oZWFkbGluZS1wYXJzZXIgY29uZCBzZXRx IGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYg aWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gNSBbc2F2 ZS1leGN1cnNpb24gaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBj b25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAxIFtpZiBsZXQqIG9y Zy1hZ2VuZGEtZ2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXQgY2F0Y2ggd2hpbGUg d2hpbGUgbGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNh bGwtaW50ZXJhY3RpdmVseSBjb25kXSAxMDIgW2NvbmQgbGV0KiBvciBsZXQgaWYgbGV0KiBwcm9n biBpZiBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRx IGlmIGlmIHdoaWxlIGxldF0gMyBbbm90IG9yIGFuZCBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJz aW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSA5IFtjY29udi1tYWtlLWludGVycHJl dGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5k YS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJv Z24gbGV0IHNhdmUtcmVzdHJpY3Rpb25dIDEyIFtzYXZlLWV4Y3Vyc2lvbiBsZXQgY29uZCB3aGls ZSBjYXRjaCBzYXZlLWV4Y3Vyc2lvbiBsZXQgb3JnLWVsZW1lbnQtLWxpc3Qtc3RydWN0IG9yIG9y Zy1lbGVtZW50LXBsYWluLWxpc3QtcGFyc2VyIGNvbmQgbGV0IGNvbmQgc2V0cSBsZXQgc2F2ZS1l eGN1cnNpb25dIDIgW2xldCogaWYgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUt a2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21w YXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVu dGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIg cHJvZ25dIDEgW2xvb2tpbmctYXQtcCBpZiBvcmctZWxlbWVudC10aW1lc3RhbXAtcGFyc2VyIGxl dCB3aGlsZSBsZXQgcHJvZ24gaWYgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWdldC10aW1l LXByb3BlcnRpZXMgbmNvbmMgc2V0Y2FyIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g c2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0taGVhZGxpbmUtZGVmZXJyZWRdIDEgW3Nh dmUtY3VycmVudC1idWZmZXIgZXEgYW5kIHNhdmUtY3VycmVudC1idWZmZXIgaWYgcHJvZ24gaWYg aWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBw cm9nbl0gMiBbaWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1j YWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hl LWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1l bnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQg b3JdIDMgW2lmIGxldCBjb25kIGxldCogYW5kIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQt LWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2Fj aGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVl LWVudGVyIHByb2duXSAyIFtpZiBsZXQqIGlmIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQt LWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2Fj aGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVl LS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZl0gMSBbYXZsLXRyZWUtLWRvLWVudGVy IGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBwcm9nbiBpZiBzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBpZiBpZiB3aGls ZSBsZXQgbGV0Kl0gMiBbbGV0IGNvbmQgaWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1l bGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0 aW9uLWNhc2UgaWYgc2V0cV0gNSBbc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZiBsZXQqIG9yZy1hZ2Vu ZGEtZ2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXQgY2F0Y2ggd2hpbGUgd2hpbGUg bGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNhbGwtaW50 ZXJhY3RpdmVseV0gMTAwIFtjb25kIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQq IG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kXSAyIFtsZXQqIHNhdmUtZXhj dXJzaW9uIG9yZy1lbGVtZW50LXBsYWluLWxpc3QtcGFyc2VyIGNvbmQgbGV0IGNvbmQgc2V0cSBs ZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlm IHdoaWxlIGxldCBsZXQqXSAxIFtwcm9nbiBsZXQqIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50 LWl0ZW0tcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1 cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb25d IDIgW3NhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBp ZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3Vy cmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJvZ24gaWZdIDEx IFtzZXRjYXIgbGV0IGNvbmQgbGV0KiBpZiBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVt ZW50LS1oZWFkbGluZS1wYXJzZS10aXRsZSBhcHBseSBvcmctZWxlbWVudC0tcHJvcGVydHkgb3Jn LWVsZW1lbnQtcHJvcGVydHktaW5oZXJpdGVkXSAyIFtpZiBwcm9nbiBwcm9nbiBpZiBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgb3Jn LWVsZW1lbnQtLWhlYWRsaW5lLWRlZmVycmVkIGFwcGx5IG9yZy1lbGVtZW50LS1wcm9wZXJ0eSBv cmctZWxlbWVudC0tcHJvcGVydHkgYW5kIGlmICIjPGxhbWJkYSAweGQ0NTYyNjljM2U5ZDE2ZT4i XSAxIFtpZiBsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPCBhbmQgb3IgaWYgaWYgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlmIHByb2duXSAzIFsxLSBpZiBsaXN0IG9yZy1l bGVtZW50LWNyZWF0ZSBsZXQqIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LWhlYWRsaW5lLXBh cnNlciBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVs ZW1lbnQgc2V0cSBpZiBpZiB3aGlsZV0gMSBbbGV0KiBzYXZlLWV4Y3Vyc2lvbiBwcm9nbiBpZiBv cmctZWxlbWVudC10aW1lc3RhbXAtcGFyc2VyIGxldCB3aGlsZSBsZXQgcHJvZ24gaWYgc2F2ZS1l eGN1cnNpb24gb3JnLWVsZW1lbnQtLWdldC10aW1lLXByb3BlcnRpZXMgbmNvbmMgc2V0Y2FyIHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW2xldCogb3Igb3JnLWVsZW1lbnQtLWNh Y2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBub3Qgb3IgYW5kIGlmIHdoaWxl IGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWZdIDEg W25vdCBhbmQgb3IgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcF0gMiBb bGV0IG9yZy1nZXQtd2RheXMgY29uZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0 NTYyNjljM2U5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlmXSAz IFtwcm9nbiBpZiBsZXQgaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVu dC0tY2FjaGUtcHV0IG9yIHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlv bl0gMSBbbGV0KiBjb25kIG9yZy1lbnRyeS1nZXQgbGV0KiBjYXRjaCBwcm9nbiBpZiAiIzxsYW1i ZGEgMHhkNDU2MjY5YzNlOWQxNmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiBwcm9n biBpZl0gMSBbY29uZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNjljM2U5 ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmXSA0 IFtsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1s ZXNzLXAgYW5kIG9yIGFuZCBpZiBzZXRxIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMiBbbGV0IGNvbmQgbGV0KiBpZiBsZXQgbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBzYXZlLWN1cnJlbnQt YnVmZmVyIG9yZy1lbGVtZW50LS1oZWFkbGluZS1wYXJzZS10aXRsZSBhcHBseSBvcmctZWxlbWVu dC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtcHJvcGVydHktaW5oZXJpdGVkIGlmXSAxIFtpZiBsZXQq IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LXNlY3Rpb24tcGFyc2VyIGNvbmQgc2V0cSBsZXQg c2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdo aWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb25dIDQgW2lmIGxldCogaWYgbGV0KiBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0 Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUt cmVzdHJpY3Rpb25dIDMgW2xldCogaWYgbGV0KiBhbmQgaWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVm ZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2Ut dG8gc2V0cV0gMSBbbGV0KiBhbmQgbGV0KiBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWhlYWRsaW5lLWRlZmVy cmVkIGFwcGx5IG9yZy1lbGVtZW50LS1wcm9wZXJ0eSBvcmctZWxlbWVudC0tcHJvcGVydHkgYW5k IGlmICIjPGxhbWJkYSAweGQ0NTYyNjljM2U5ZDE2ZT4iIGZ1bmNhbGxdIDEgW2VxIGlmIGxldCBj b25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0t Y2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNo ZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUt ZW50ZXJdIDIgW2NhciBpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2lu IGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxl c3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRy ZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlcl0gMSBbaWYgbGV0IGNvbmQgbGV0KiBhbmQg bGV0KiBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVu dC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIG9yZy1lbGVtZW50LXR5cGUgbWVt cSBpZl0gMSBbaWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1j YWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hl LWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHNhdmUt Y3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBzZXRxXSAxIFtzYXZlLWV4 Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBvcmctZWxlbWVudC10eXBlIG1lbXEgaWZdIDYg W29yZy10aW1lLXN0cmluZy10by10aW1lIGNvbmRpdGlvbi1jYXNlIHRpbWUtdG8tZGF5cyBjb25k IG9yZy10aW1lLXN0cmluZy10by1hYnNvbHV0ZSBhcHBseSBjb25kaXRpb24tY2FzZSBvcmctYWdl bmRhLS10aW1lc3RhbXAtdG8tYWJzb2x1dGUgY29uZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxh bWJkYSAweGQ0NTYyNjljM2U5ZDE2ZT4iIGZ1bmNhbGwgY29uc10gNyBbYW5kIGxldCogb3Igb3Jn LWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxl bWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVy IGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJv Z24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yXSAyIFtz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2gg b3JnLWVsZW1lbnQtLXBhcnNlLXRvIG9yZy1lbGVtZW50LXR5cGUgbWVtcSBpZiBpZiBpZiBpZiB3 aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW29yZy1lbGVt ZW50LS1wcm9wZXJ0eSBtZW1xIGFuZCBpZiAiIzxsYW1iZGEgMHhkNDU2MjY5YzNlOWQxNmU+IiBm dW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZl0gMSBbaWYg bGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNo ZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRl ciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRl ciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRl ciBhdmwtdHJlZS1lbnRlcl0gMSBbbG9va2luZy1hdC1wIGlmIG9yZy1lbGVtZW50LXRpbWVzdGFt cC1wYXJzZXIgbGV0IHdoaWxlIGxldCogc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtcGxhbm5p bmctcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJl bnQtZWxlbWVudCBzZXRxIGlmIGlmXSAxIFtvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1l bGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1l bnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBh dmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2du IGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvcl0gMSBbaWYg bGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEg aWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZl LWN1cnJlbnQtYnVmZmVyXSAxIFt3aGlsZSBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMg Y29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxNiBbYW5kIHdoaWxl IHNhdmUtZXhjdXJzaW9uIGxldCogY29uZCBzZXRxIGxldCBvcmctZWxlbWVudC0tb2JqZWN0LWxl eCBsZXQgd2hpbGUgY2F0Y2ggbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBjYXRjaF0gMSBbbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlh dGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtc2V4cHMgY29ucyBz ZXRxIGxldCBjb25kIGxldF0gMzkgW3RpbWUtZGF0ZS0tZGF5LWluLXllYXIgdGltZS10by1kYXlz IG9yZy10b2RheSBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxldCBj b25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbl0gMSBbbG9v a2luZy1hdC1wIGNvbmQgbGV0IGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1l bnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJp Y3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW29yZy1lbGVtZW50LWNvbnRlbnRzLWVuZCBlcSBpZiBj YXRjaCBwcm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2 ZS1yZXN0cmljdGlvbl0gMiBbbGV0KiBhbmQgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0t Y2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNo ZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUt ZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0 XSAxIFtjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGxldCog b3JnLWFnZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxl dCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uXSA2IFtjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5j dGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1j bG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqXSAxOCBbc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxldCogb3JnLWFn ZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBjb25kIGxldCBjYXRjaCB3aGlsZSB3aGls ZSBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdF0gNjEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0KiBvcmctYWdl bmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0XSA0IFtj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0 aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNs b3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQt c2NoZWR1bGVkXSAxOCBbaWYgb3IgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlm IHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMTkgW2FuZCBj b25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQg c2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2hdIDMgW2NhciBlcSBpZiBsZXQgY29uZCBsZXQqIGFu ZCBsZXQqIGFuZCBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNh Y2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVu dGVyIGF2bC10cmVlLS1kby1lbnRlcl0gMiBbYW5kIGxldCogc2V0LWJ1ZmZlciBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1oZWFkbGluZS1kZWZlcnJlZCBhcHBseSBvcmctZWxlbWVu dC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5IGFuZCBpZiAiIzxsYW1iZGEgLTB4MWFi ZTY3M2RiNjgyZjY1Mz4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duXSAxIFtsZXQqIHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVs ZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBs ZXQgY29uZCBsZXRdIDEwIFthdmwtdHJlZS0tZW50ZXItYmFsYW5jZSBhdmwtdHJlZS0tZG8tZW50 ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBw cm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0 cSBpZiBpZiB3aGlsZSBsZXQgbGV0Kl0gMSBbbGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9y IG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3Jn LWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVy IHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBz ZXRxIGlmXSA0IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSAy OCBbY2FyIGlmIGxldCBjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxl bWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb25dIDEgW2lmIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBh cnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0XSAyIFtzYXZlLWV4Y3Vyc2lvbiBvcmct ZWxlbWVudC1wbGFubmluZy1wYXJzZXIgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmct ZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAzIFtvciBpZiBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgb3JnLWFnZW5kYS1za2lwIGNhdGNoIHByb2duIGlmICIj PGxhbWJkYSAtMHgyNjRkZWRlMzAwYzNhYjU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBp Zl0gMiBbb3JnLWVsZW1lbnQtLWxpc3Qtc3RydWN0IG9yIG9yZy1lbGVtZW50LXBsYWluLWxpc3Qt cGFyc2VyIGNvbmQgbGV0IGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQt LWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqXSAzIFttYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDI1IFtjb25kIGxldCogYW5kIGxl dCogc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1oZWFkbGluZS1k ZWZlcnJlZCBhcHBseSBvcmctZWxlbWVudC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5 IGFuZCBpZiAiIzxsYW1iZGEgLTB4MWFiZTY3M2RiNjgyZjY1Mz4iIGZ1bmNhbGwgY29ucyBzZXRx XSAxIFtvciBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIgbm90IGlmIHByb2duIGlmIGxl dCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBv cmctZWxlbWVudC1hdC1wb2ludCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAxIFtt YWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZV0gMyBbbGV0 IHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ25dIDkgW2xldCBpZiBsZXQqIHByb2duIHVu d2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9y Zy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxldCBjb25kIGxldF0gMzggW2FuZCBs ZXQqIHNhdmUtZXhjdXJzaW9uIHByb2duIGlmIG9yZy1lbGVtZW50LXRpbWVzdGFtcC1wYXJzZXIg bGV0IHdoaWxlIGxldCBwcm9nbiBpZiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tZ2V0LXRp bWUtcHJvcGVydGllcyBuY29uYyBzZXRjYXIgc2F2ZS1yZXN0cmljdGlvbl0gMSBbY29uZCBsZXQq IG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAg b3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1k by1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1k by1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1j dXJyZW50LWJ1ZmZlcl0gMSBbbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCogb3Ig b3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmct ZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVu dGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1l bnQtLWNhY2hlLXB1dF0gMiBbYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWV4Y3Vyc2lvbiBsZXQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0taGVh ZGxpbmUtcGFyc2UtdGl0bGUgYXBwbHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5IG9yZy1lbGVtZW50 LXByb3BlcnR5LWluaGVyaXRlZCBpZiBvcmctaW4tYXJjaGl2ZWQtaGVhZGluZy1wIHByb2duIHVu d2luZC1wcm90ZWN0IGxldF0gNyBbYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBv cmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1l bGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50 ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHNhdmUtY3VycmVu dC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dF0gMSBbc2F2ZS1leGN1cnNpb24gcHJvZ24g aWYgb3JnLWVsZW1lbnQtdGltZXN0YW1wLXBhcnNlciBsZXQgd2hpbGUgbGV0IHByb2duIGlmIHNh dmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1nZXQtdGltZS1wcm9wZXJ0aWVzIG5jb25jIHNldGNh ciBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXJdIDEg W29yZy1lbGVtZW50LWJlZ2luIG9yIG1heCBzZXRxIGlmIGlmIGlmIHByb2duIHVud2luZC1wcm90 ZWN0IGxldCBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZl0gMiBbYW5kIGxldCogb3JnLWVsZW1lbnQt Y29udGVudHMtZW5kIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBh cnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmXSAxIFtvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9y Zy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVs ZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRl ciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50 LS1jYWNoZS1wdXQgb3Igc2V0cSBpZl0gMSBbbGV0KiBpZiBsZXQqIGFuZCBsZXQqIG9yIG9yZy1l bGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1l bnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBh dmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1j YWNoZS1wdXRdIDEgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRs aW5lcyBzZXRxXSAxNyBbaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0 ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29u cyBzZXRxIGxldCBjb25kIGxldCB3aGlsZV0gMTA1IFtvcmctZWxlbWVudC1jcmVhdGUgbGV0KiBz YXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1wbGFpbi1saXN0LXBhcnNlciBjb25kIGxldCBjb25k IHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0 cSBpZiBpZiB3aGlsZSBsZXRdIDEgW2lmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFi YnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxp bmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldF0gNDUgW2xldCogYW5kIGxldCogb3JnLWVs ZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxl bWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2VdIDIgW3NhdmUtZXhjdXJzaW9uIG9yZy1lbGVt ZW50LXNlY3Rpb24tcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1l bnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJp Y3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMyBbdGltZS10by1kYXlz IG9yZy10b2RheSBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxl dCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyXSA4IFtvcmctdG9kYXkgZXEgb3JnLWFnZW5kYS10b2RheS1w IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxl dCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSA4IFtsZXQq IGlmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5 IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJl IGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJv Z24gaWYgcHJvZ24gaWZdIDEgW2xvb2tpbmctYXQtcCBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJz aW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0 Y2hdIDEgW2Njb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0 KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBs ZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbl0gOCBbbGV0KiBhbmQgbGV0KiBvcmct ZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQt LWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRv LWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50 ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMSBbYW5kIGxldCBvcmctZWxlbWVudC0t bGlzdC1zdHJ1Y3Qgb3Igb3JnLWVsZW1lbnQtcGxhaW4tbGlzdC1wYXJzZXIgY29uZCBsZXQgY29u ZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNl dHEgaWYgaWYgd2hpbGVdIDMgW2lmIHNhdmUtY3VycmVudC1idWZmZXIgaWYgbGV0KiBvcmctYWdl bmRhLWdldC1kYXktZW50cmllcyBhcHBseSBzZXRxIGNvbmQgbGV0IGNhdGNoIHdoaWxlIHdoaWxl IGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50ZXJhY3RpdmVseV0gMyBbd2hp bGUgY2F0Y2ggcHJvZ24gc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQq IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0XSAyIFtpZiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgaWYgbGV0KiBvcmctYWdlbmRh LWdldC1kYXktZW50cmllcyBhcHBseSBzZXRxIGNvbmQgbGV0IGNhdGNoIHdoaWxlIHdoaWxlIGxl dCogY2F0Y2hdIDEgW3RpbWUtdG8tZGF5cyBvcmctdG9kYXkgbGV0KiBvcmctYWdlbmRhLWdldC1z Y2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMTEgW21hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jtc10gNSBbbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXBy b3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5k YS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXRdIDQxIFtsZXQqIGlmIGxldCog b3JnLWVsZW1lbnQtZW5kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRv IGNvbmRpdGlvbi1jYXNlIGlmIHNldHFdIDEgW2lmIG9yZy1jaGVjay1hZ2VuZGEtZmlsZSBjYXRj aCB3aGlsZSB3aGlsZSBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhIGZ1bmNh bGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDQ1IFttYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24g b3JnLWVsZW1lbnQtY2FjaGUtbWFwXSAzMiBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWNv bnRlbnRzLWJlZ2luIGdvdG8tY2hhciBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBj b25kaXRpb24tY2FzZSBpZiBzZXRxXSAxIFthbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUt a2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21w YXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIg cHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNl dHEgaWZdIDIgW3NldHEgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0t Y2FjaGUtcHV0IGNvbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUt Y3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNl IGlmIHNldHEgbGV0XSAxIFtjb25kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmct ZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwt dHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJy ZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHFdIDEgW3NldHEgaWYgaWYg d2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBz ZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAxIFtuY29uYyBzZXRjYXIgc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1oZWFkbGlu ZS1kZWZlcnJlZCBhcHBseSBvcmctZWxlbWVudC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtLXByb3Bl cnR5IGFuZCBpZiAiIzxsYW1iZGEgLTB4MmNlYTdlZjRlNWI1MjQwPiIgZnVuY2FsbCBjb25zIHNl dHEgaWZdIDIgW2FuZCBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZp bGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWJsb2NrcyBjb25zIHNldHEg bGV0IGNvbmQgbGV0IHdoaWxlXSAxOCBbc2V0cSBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3Jn LWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0XSAxIFtjY29udi1hbmFseXplLWZvcm0gY2Nv bnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2Nv bnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9y bSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVs ZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNv bmRdIDE2IFtpZiBsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPCBhbmQgb3IgaWYgaWYg d2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMyBbbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRs aW5lcyBzZXRxXSAxMCBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGxdIDE5 IFtsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBs ZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1 cnJlbnQtYnVmZmVyIGlmIGxldCpdIDE3IFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbF0gNSBbaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJi cmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC1ibG9ja3Mg Y29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZV0gOTEgW2Njb252LWFuYWx5emUtZm9ybSBjY29u di1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29u di1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29u di0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFr ZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQq IG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zXSAyNyBbb3JnLWVsZW1lbnQtaXRlbS1wYXJz ZXIgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVt ZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoXSAxIFttYXBjYXIgbGV0KiBvcmctYWdlbmRh LWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9n biBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy XSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDEwIFtt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3Jn LWVsZW1lbnQtY2FjaGUtbWFwIGxldCpdIDggW2lmIGxldCBjb25kIGxldCogYW5kIGxldCogYW5k IGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxl c3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRy ZWUtZW50ZXIgcHJvZ24gaWZdIDEgW2Njb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1k ZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUt cmVzdHJpY3Rpb25dIDI3IFtjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24g bGV0KiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHBy b2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxp bmVzIHNldHEgbGV0XSAxMSBbY2F0Y2ggd2hpbGUgd2hpbGUgbGV0KiBjYXRjaCBvcmctYWdlbmRh LWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNhbGwtaW50ZXJhY3RpdmVseSBjb25kIGxldCog Y2F0Y2ggb3JnLWFnZW5kYSBmdW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5p bCBuaWxdIDYgW2lmIHNhdmUtZXhjdXJzaW9uIGxldCogc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1l bnQtaGVhZGxpbmUtcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1l bnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqXSAxIFtmdW5jdGlv biBtYXBjYXIgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25k IGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbl0gMTggW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxs LWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsXSAx MCBbc2V0cSBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZiBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRh eS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZF0gMSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYt bWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlXSAxNSBbcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNo ZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hp bGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEg W21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUg ZnVuY3Rpb24gbWFwY2FyIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBs ZXQgY29uZF0gNiBbcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFuZCBvciBhbmQgb3IgaWYgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0IG9yZy1hZ2VuZGEtc2tpcCBjYXRjaCBwcm9nbiBpZiAiIzxs YW1iZGEgMHhkNDU2MjY5YzNlOWQxNmU+Il0gMyBbaWYgbGV0KiBpZiBsZXQqIGFuZCBsZXQqIG9y IG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3Jn LWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1l bnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxIFtzYXZl LWV4Y3Vyc2lvbiBwcm9nbiBpZiBvcmctZWxlbWVudC10aW1lc3RhbXAtcGFyc2VyIGxldCB3aGls ZSBsZXQqIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LXBsYW5uaW5nLXBhcnNlciBjb25kIHNl dHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBp Zl0gMiBbc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNl dHEgcHJvZ24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVnaW5dIDEgW2xldCogb3Igb3JnLWVsZW1l bnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0t Y2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10 cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10 cmVlLWVudGVyIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hl LXB1dCBvcl0gMSBbbmNvbmMgb3JnLWVsZW1lbnQtY3JlYXRlIGxldCogc2F2ZS1leGN1cnNpb24g cHJvZ24gaWYgb3JnLWVsZW1lbnQtdGltZXN0YW1wLXBhcnNlciBsZXQgd2hpbGUgbGV0KiBzYXZl LWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1wbGFubmluZy1wYXJzZXIgY29uZCBzZXRxIGxldCBzYXZl LWV4Y3Vyc2lvbl0gMSBbaWYgb3JnLWVsZW1lbnQtLW5leHQtbW9kZSBpZiBzZXRxIHByb2duIHBy b2duIGlmIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXJdIDEgW3NhdmUtZXhjdXJzaW9uIGxldCogY2F0 Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2OWMzZTlkMTZlPiIgZnVuY2FsbCBjb25zIHNl dHEgaWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWZdIDQgW2lmIGxldCogb3JnLWVsZW1lbnQt ZW5kIHNldHEgcHJvZ24gd2hpbGUgbGV0IGNvbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRv IG9yZy1lbGVtZW50LXR5cGUgbWVtcV0gMSBbY29uZCBsZXQqIGFuZCBsZXQqIGFuZCBsZXQqIG9y IG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3Jn LWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1l bnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1l bnRlciBhdmwtdHJlZS0tZG8tZW50ZXJdIDEgW2lmIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IHNhdmUtY3VycmVudC1idWZmZXIgb3Jn LWVsZW1lbnQtLWhlYWRsaW5lLXBhcnNlLXRpdGxlIGFwcGx5IG9yZy1lbGVtZW50LS1wcm9wZXJ0 eSBvcmctZWxlbWVudC1wcm9wZXJ0eS1pbmhlcml0ZWQgaWYgb3JnLWluLWFyY2hpdmVkLWhlYWRp bmctcCBwcm9nbiB1bndpbmQtcHJvdGVjdF0gMSBbbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJz ZS10byBvcmctZWxlbWVudC10eXBlIG1lbXEgaWYgaWYgaWYgaWYgd2hpbGUgaWYgbGV0Kl0gMSBb YW5kIGxldCogc2F2ZS1leGN1cnNpb24gcHJvZ24gaWYgb3JnLWVsZW1lbnQtdGltZXN0YW1wLXBh cnNlciBsZXQgd2hpbGUgbGV0KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1wbGFubmluZy1w YXJzZXIgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1l bGVtZW50XSA0IFtsZXQqIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LXBsYW5uaW5nLXBhcnNl ciBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1l bnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uXSAxIFtpZiBsZXQqIGFuZCBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVs ZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRy ZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBw cm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxIFtpZiBpZiBvcmctZWxlbWVudC0tY2FjaGUt a2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIg YXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9n biBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cSBp ZiBpZl0gMiBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCogb3Igb3JnLWVs ZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVu dC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24g aWYgcHJvZ24gaWZdIDEgW2NkciBjYXIgaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxl bWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNh Y2hlLWtleS1sZXNzLXAgbm90IGFuZCBvcl0gMSBbb3JnLWluLWNvbW1lbnRlZC1oZWFkaW5nLXAg YW5kIG9yIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBvcmctYWdlbmRhLXNraXAgY2F0Y2gg cHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2OWMzZTlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHEg aWZdIDIgW2xldCogYW5kIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBv cmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBub3QgYW5kIG9yIGlmIGlmIHdoaWxlIGlmIGxl dCpdIDEgW3NhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWhl YWRsaW5lLWRlZmVycmVkIGFwcGx5IG9yZy1lbGVtZW50LS1wcm9wZXJ0eSBvcmctZWxlbWVudC0t cHJvcGVydHkgYW5kIGlmICIjPGxhbWJkYSAweGQ0NTYyNjljM2U5ZDE2ZT4iIGZ1bmNhbGwgY29u cyBzZXRxIGlmIHByb2duIGlmIHByb2duXSAxIFthbmQgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxl bWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50 LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZs LXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZs LXRyZWUtZW50ZXIgcHJvZ24gaWZdIDEgW29yZy1lbGVtZW50LWNyZWF0ZSBsZXQqIHNhdmUtZXhj dXJzaW9uIG9yZy1lbGVtZW50LXBsYW5uaW5nLXBhcnNlciBjb25kIHNldHEgbGV0IHNhdmUtZXhj dXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQg bGV0KiBzYXZlLXJlc3RyaWN0aW9uXSAxIFt3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZm ZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10 byBvcmctZWxlbWVudC10eXBlIG1lbXEgaWYgaWZdIDEgW29yZy1lbGVtZW50LWJlZ2luIGxldCog b3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBv cmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRv LWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1 cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cV0gMSBbbm90IG9yIGFu ZCBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHBy b2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCpdIDEgW3Byb2duIGlm IHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVh ZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldF0gOCBbY2Nv bnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2Nv bnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2Nv bnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1h a2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0 KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXRdIDIxIFttYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbF0gMjcgW2NvbmQgbGV0KiB3aGlsZSBpZiBsZXQq IHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2 ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9y Zy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZl0gOCBbbGV0ICIjPGxhbWJkYSAt MHgxNjhlMDZmYjRmYWQ5NTU3PiIgZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3Vu ZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWYg bGV0KiBvcmctYWdlbmRhLWdldC1kYXktZW50cmllcyBhcHBseSBzZXRxIGNvbmQgbGV0IGNhdGNo IHdoaWxlXSA1OSBbcHJvZ24gc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmXSAzIFthbmQg bGV0KiBzZXRxIHByb2duIHdoaWxlIGxldCBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10 byBjb25kaXRpb24tY2FzZSBpZiBzZXRxXSAxIFtzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQg bGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGlmIGxldCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHldIDUgW2xl dCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZl ciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWZdIDQg W3Byb2duIGNvbnMgc2V0cSBsZXQgY29uZCB3aGlsZSBjYXRjaCBzYXZlLWV4Y3Vyc2lvbiBsZXQg b3JnLWVsZW1lbnQtLWxpc3Qtc3RydWN0IG9yIG9yZy1lbGVtZW50LXBsYWluLWxpc3QtcGFyc2Vy IGNvbmQgbGV0IGNvbmQgc2V0cV0gMiBbZXF1YWwgYW5kIGlmIGxldCBsZXQgaWYgbGV0KiBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0 KiBvcmctYWdlbmRhLWdldC1zZXhwcyBjb25zXSAxOCBbYW5kIGxldCogYW5kIGxldCogb3Igb3Jn LWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxl bWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJv Z24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0 XSAxIFt3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxldCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJp ZXMgYXBwbHkgc2V0cSBjb25kIGxldCBjYXRjaF0gMyBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252 LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0g Y2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQq XSA2IFtvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3Jn LWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZs LXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHByb2duIGlmIHNhdmUtY3Vy cmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBzZXRxXSAxIFtub3QgaWYgcHJv Z24gaWYgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24g bGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gbGV0IHByb2duIGlmXSAxIFtpZiBsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMt YmVnaW4gbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1oZWFkbGluZS1kZWZlcnJlZCBhcHBseSBvcmctZWxlbWVu dC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5IGFuZCBpZl0gMSBbd2hpbGUgbGV0KiBv cmctYWdlbmRhLWdldC1ibG9ja3MgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0 KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyXSA4IFtsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtc2V4cHMgY29ucyBzZXRxIGxldCBj b25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxMSBbbWVtcSBhbmQgcHJvZ24gb3IgcHJvZ24g YXJlZiBwcm9nbiBwcm9nbiBvcmctZWxlbWVudC0tY2FjaGUtcm9vdCBsZXQqIHNhdmUtY3VycmVu dC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbl0gMyBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVy cHJldGVkLWNsb3N1cmVdIDMgW2Njb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQg cHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRh LWdldC1zY2hlZHVsZWQgY29uc10gMTcgW2NhciBpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9y Zy1lbGVtZW50LWNvbnRlbnRzLWJlZ2luIHByb2duIGlmIG9yIHNldHEgaWYgcHJvZ24gc2V0cSBw cm9nbl0gMSBbaWYgb3IgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGxldCogc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVu dC1jYWNoZS1tYXAgbGV0Kl0gMTEgW2xldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmct YWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGVdIDExIFtjb25kIG5v dCB3aGlsZSBsZXQgbGV0KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1wYXJhZ3JhcGgtcGFy c2VyIGNvbmQgbGV0IGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1 cnJlbnQtZWxlbWVudCBzZXRxIGlmXSAxIFtjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1h bmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0 aW9uIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBp ZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqXSAyMCBbbGV0KiBzYXZlLWV4 Y3Vyc2lvbiBwcm9nbiBpZiBvcmctZWxlbWVudC10aW1lc3RhbXAtcGFyc2VyIGxldCB3aGlsZSBs ZXQqIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LXBsYW5uaW5nLXBhcnNlciBjb25kIHNldHEg bGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cV0gMiBb ZnVuY3Rpb24gbGV0KiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHBy b2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1n ZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXRdIDE4IFtsZXQqIGFuZCBsZXQqIG9yIG9yZy1lbGVt ZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQt LWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwt dHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yXSAyIFtjb25zIHNldHEgaWYgcHJvZ24gaWYgcHJv Z24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uXSAzIFt0aW1lLXRvLWRheXMgb3JnLXRvZGF5IGxldCogb3JnLWFnZW5kYS1nZXQt dGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxl dCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSA2IFtpZiBzYXZlLWN1cnJlbnQtYnVm ZmVyIHNldHEgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gMiBbYW5kIGxldCogcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFn ZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlXSAxNyBbbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVz ZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxs LWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSA5IFtpZiBsZXQqIHBy b2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBs ZXQqIG9yZy1hZ2VuZGEtZ2V0LXNleHBzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGVdIDU4 IFtvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUt ZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0 IG9yIHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbl0gMSBbaWYgbGV0KiBvcmctZWxlbWVudC1jb250ZW50cy1iZWdpbiBsZXQgY29uZCBsZXQg d2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZl0g MSBbY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1t YXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUg bGV0IGxldCogcHJvZ25dIDQgW2xldCogb3JnLWVsZW1lbnQtZW5kIGxldCB3aGlsZSBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0 Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUt cmVzdHJpY3Rpb25dIDEgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2Nv bnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2Nv bnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9y bSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVs ZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cV0g MjMgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gMiBb Y2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciBs ZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxl IGxldCBsZXQqIHByb2duIGxldF0gNSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zXSAyIFtsZXQgaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJi cmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC1ibG9ja3Mg Y29ucyBzZXRxIGxldCBjb25kIGxldF0gMzQgW2xldCogb3JnLWVsZW1lbnQtYmVnaW4gPSBhbmQg aWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBj YXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2VdIDEgW2xldCogb3JnLWVs ZW1lbnQtYmVnaW4gb3IgbWF4IHNldHEgaWYgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 IGxldCBpZiBwcm9nbiBpZiBpZl0gMSBbb3JnLWVsZW1lbnQtLXBhcnNlLXRvIG9yZy1lbGVtZW50 LXR5cGUgbWVtcSBpZiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duXSAxIFtpZiBsZXQqIG9yZy1lbGVtZW50LWJl Z2luIGxldCogd2hpbGUgaWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1j YWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1j dXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG9dIDYgW2FuZCBsZXQqIGFu ZCBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1s ZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10 cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10 cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ25dIDEg W21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xv c3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1z Y2hlZHVsZWQgY29uc10gMTEgW2VxIGlmIGxldCogcHJvZ24gaWYgbGV0IHNhdmUtZXhjdXJzaW9u IG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAxIFthbmQgbGV0KiBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxl bWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDEgW2FuZCBsZXQqIG9yIG9yZy1l bGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1l bnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2du IGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBzZXRxIGlm IGlmXSA0IFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcF0gMSBbc2F2ZS1leGN1cnNpb24gc2F2ZS1l eGN1cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFw IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHFdIDEgW3doaWxlIGxldCBsZXQqIHNh dmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LXBhcmFncmFwaC1wYXJzZXIgY29uZCBsZXQgY29uZCBz ZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEg aWYgaWYgd2hpbGVdIDEgW2lmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxl bWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50 LS1jYWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBp ZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXRdIDEg W2lmIHByb2duIGxldCogc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtcGxhaW4tbGlzdC1wYXJz ZXIgY29uZCBsZXQgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3Vy cmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGVdIDEgW3RpbWUtZGF0ZS0tZGF5LWluLXllYXIg dGltZS10by1kYXlzIG9yZy10b2RheSBlcSBvcmctYWdlbmRhLXRvZGF5LXAgbGV0KiBvcmctYWdl bmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24g bGV0XSAxIFtvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldF0g MSBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0KiBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1l bGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHFd IDkgW2xldCogb3JnLWVsZW1lbnQtY29udGVudHMtZW5kIGxldCBjb25kIGxldCB3aGlsZSBsZXQg bGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIg Y2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHFdIDEgW2xl dCogcHJvZ24gaWYgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1l bnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2hdIDEgW2FuZCBsZXQqIGFuZCBsZXQqIG9yIG9y Zy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVs ZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRl ciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHBy b2duIGlmIHNhdmUtY3VycmVudC1idWZmZXJdIDEgW21hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUg ZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxp bmVzXSA0IFtjb25kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0t Y2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8t ZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8t ZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxl bWVudC0tY2FjaGUtcHV0IG9yXSAxIFtjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxl dCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBjb25kXSA1IFtsZXQgbGV0 KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1wYXJhZ3JhcGgtcGFyc2VyIGNvbmQgc2V0cSBs ZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlm IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb25dIDEgW2Zvcm1hdC10aW1lLXN0cmluZyBz dWJzdHJpbmcgcmVnZXhwLXF1b3RlIGNvbmNhdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFt cHMgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXRdIDI1IFtm dW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVs ZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMTAgW2Zvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5k YS1nZXQtYmxvY2tzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24g bGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW2VxIGlmIGxldCBjb25kIGxl dCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUt a2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21w YXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbl0gMSBbb3Igb3JnLWVs ZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVu dC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24g aWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9y IHNldHEgaWYgaWZdIDMgW2FuZCBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1n ZXQtYmxvY2tzIGNvbnMgc2V0cV0gNCBbZXF1YWwgYW5kIGlmIGxldCBsZXQgaWYgbGV0KiBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0 KiBvcmctYWdlbmRhLWdldC1ibG9ja3MgY29uc10gMjIgW2xldCogc2F2ZS1leGN1cnNpb24gb3Jn LWVsZW1lbnQtaXRlbS1wYXJzZXIgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxl bWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gNiBbbGV0KiBvciBsZXQgaWYgcHJvZ24gaWYgc2F2ZS1j dXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHEgaWYgaWYgd2hpbGUg bGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMSBbb3JnLXRvZGF5IGxldCogb3JnLWFnZW5kYS1n ZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24g bGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0g NiBbbGV0KiBhbmQgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1l bGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJlIGF2bC10 cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBwcm9nbiBpZiBzYXZlLWN1cnJl bnQtYnVmZmVyXSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbl0gNCBb cHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZl0gNyBbcHJvZ24gbGV0KiBzYXZlLWV4 Y3Vyc2lvbiBvcmctZWxlbWVudC1wbGFpbi1saXN0LXBhcnNlciBjb25kIGxldCBjb25kIHNldHEg bGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBp ZiB3aGlsZSBsZXRdIDIgW29yIHNldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxl bWVudC0tY2FjaGUtcHV0IG9yIHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50 LS1wYXJzZS10b10gMSBbaWYgcHJvZ24gaWYgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBv cmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwg Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciBsZXQqIG9yZy1h Z2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmRdIDIgW2xvb2tpbmctYXQtcCBj b25kIHdoaWxlIGNhdGNoIHNhdmUtZXhjdXJzaW9uIGxldCBvcmctZWxlbWVudC0tbGlzdC1zdHJ1 Y3Qgb3Igb3JnLWVsZW1lbnQtcGxhaW4tbGlzdC1wYXJzZXIgY29uZCBsZXQgY29uZCBzZXRxIGxl dCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50XSAxIFtmdW5jdGlv biBtYXBjYXIgbGV0KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXQgY29u ZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb25dIDI0IFtzZXRxIGlmIGlmIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBsZXQqIHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3Jn LWVsZW1lbnQtY2FjaGUtbWFwXSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXNdIDIzIFttYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbF0gMiBbcHJvZ24gaWYgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1jdXJy ZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNl LXRvXSAxIFtvcmctaGVhZGxpbmUtcmUgcmUtc2VhcmNoLWZvcndhcmQgYW5kIGlmIGlmIHByb2du IGlmIGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaF0gMSBbZXEgY29uZCBsZXQqIGFuZCBsZXQqIGFu ZCBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1s ZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10 cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZl0gMSBbYW5kIGxldCogb3JnLWVs ZW1lbnQtYmVnaW4gPSBvciBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmXSAzIFthbmQgbGV0KiBvciBvcmctZWxlbWVudC0t Y2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNo ZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBwcm9n biBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQgb3Igc2V0cV0g MSBbY2FyIGVxIGlmIGxldCBjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0 KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZp bmQgYW5kXSA0IFthbmQgbGV0KiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duXSAyIFtsZXQqIG9y IGxldCBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlv bi1jYXNlIGlmIHNldHFdIDEgW3doaWxlIGxldCogb3JnLWFnZW5kYS1nZXQtc2V4cHMgY29ucyBz ZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSA2IFtsZXQqIHNhdmUtY3VycmVu dC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1w YXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uXSA3IFtzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBp ZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNj aGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlXSAyNCBbY2NvbnYtLWFuYWx5emUt ZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBz IGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCpdIDMgW21hY3JvZXhwLS1hbGwt Y2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJl dGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5k YS1nZXQtc2NoZWR1bGVkXSAyIFttYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRl ZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMg Y29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXRdIDEgW29yZy1l bGVtZW50LS1jYWNoZS1wdXQgY29uZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0 aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZl LWV4Y3Vyc2lvbiBsZXRdIDEgW2Njb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQg cHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRh LWdldC1kZWFkbGluZXMgc2V0cV0gOSBbaWYgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0t Y2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNo ZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbiBpZiBwcm9n biBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXRdIDEgW21hY3Jv ZXhwLW1hY3JvZXhwYW5kIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2Ut aW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBv cmctYWdlbmRhLWdldC1kZWFkbGluZXNdIDIgW2lmIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1l bnQtY2FjaGUtbWFwIGxldCpdIDIgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZv cm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1m dW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRl ZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIGxldCBwcm9nbiBpZl0gMiBbY2FyIGVxIGlmIGxldCBjb25kIGxldCogYW5kIGxldCogbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZV0gMiBbZm9ybWF0IGxp c3QgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3 aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0g MiBbb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNvbXBh cmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBw cm9nbiBpZiBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1w dXQgb3Igc2V0cSBpZiBpZiB3aGlsZV0gMSBbYW5kIG5vdCBjb25kIG5vdCB3aGlsZSBsZXQgbGV0 KiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC1wYXJhZ3JhcGgtcGFyc2VyIGNvbmQgc2V0cSBs ZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmXSA0 IFtpZiBsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0t Y2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNo ZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUt LWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbl0gMiBbYW5k IGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1h dCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdo aWxlIGxldF0gMTAgW3NhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlm IHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVh ZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldF0gMTUgW29yIGxldCogc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVu dC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBj b25kXSAyIFtsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3Vy cmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWhlYWRsaW5lLWRlZmVycmVkIGFwcGx5IG9yZy1lbGVt ZW50LS1wcm9wZXJ0eSBvcmctZWxlbWVudC0tcHJvcGVydHkgYW5kIGlmICIjPGxhbWJkYSAtMHgy Y2VhN2VmNGU1YjUyNDA+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZl0gMSBbbGV0IGxldCogc2F2ZS1l eGN1cnNpb24gb3JnLWVsZW1lbnQtaXRlbS1wYXJzZXIgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vy c2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxl dCogc2F2ZS1yZXN0cmljdGlvbl0gMSBbbGV0IGNvbmQgd2hpbGUgY2F0Y2ggc2F2ZS1leGN1cnNp b24gbGV0IG9yZy1lbGVtZW50LS1saXN0LXN0cnVjdCBvciBvcmctZWxlbWVudC1wbGFpbi1saXN0 LXBhcnNlciBjb25kIGxldCBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50 LS1jdXJyZW50LWVsZW1lbnRdIDEgW2xldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBh cnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1l eGN1cnNpb24gc2F2ZS1leGN1cnNpb25dIDYgW29yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRx IGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxldCogb3JnLWFnZW5kYS1nZXQt ZGF5LWVudHJpZXNdIDggW2xldCBpZiBsZXQqIHNhdmUtZXhjdXJzaW9uIHByb2duIGlmIG9yZy1l bGVtZW50LXRpbWVzdGFtcC1wYXJzZXIgbGV0IHdoaWxlIGxldCogc2F2ZS1leGN1cnNpb24gb3Jn LWVsZW1lbnQtcGxhbm5pbmctcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb25dIDEg W2VxIGlmIGxldCogaWYgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9y Zy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJlIGF2 bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24g aWZdIDEgW3Byb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0Kl0gNyBbbGV0KiBpZiBs ZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmct ZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwt dHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwt dHJlZS1lbnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxIFtzYXZlLWN1cnJlbnQt YnVmZmVyIHNldHEgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqXSA2IFtpZiBsZXQgY29uZCBs ZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWNvbnRlbnRzLWVuZCBzZXRxIHByb2duIHByb2duIGlm IGxldCBjb25kIGxldCB3aGlsZSBsZXRdIDEgW2Njb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFs eXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252 LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVu Y3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVz IHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlXSA3IFtjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmct ZWxlbWVudC1hdC1wb2ludCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9n biBpZiBwcm9nbl0gNCBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zXSA4IFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbF0gMTkgW29y Zy1pdGVtLXJlIGxvb2tpbmctYXQtcCBjb25kIGxldCBjb25kIHNldHEgbGV0IHNhdmUtZXhjdXJz aW9uIG9yZy1lbGVtZW50LS1jdXJyZW50LWVsZW1lbnQgc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uXSAxIFtpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVs ZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRp b24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAxMiBbY2NvbnYtYW5hbHl6ZS1m b3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1m b3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1m b3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1m b3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1m b3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFs eXplLWZvcm1dIDIgW29yZy1pbi1hcmNoaXZlZC1oZWFkaW5nLXAgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IGFuZCBvciBhbmQgb3IgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IG9yZy1hZ2Vu ZGEtc2tpcCBjYXRjaCBwcm9nbiBpZl0gNSBbbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1l bGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gc2V0cSBw cm9nbiBpZiBwcm9nbiBvcmctZWxlbWVudC1iZWdpbiBvcl0gMiBbc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJz ZS10byBzZXRxIHByb2duIGlmIHByb2duIG9yZy1lbGVtZW50LWJlZ2luIG9yIG1heCBzZXRxIGlm IGlmIGlmXSAxIFtvcmctZWxlbWVudC10eXBlIG1lbXEgaWYgaWYgaWYgaWYgd2hpbGUgaWYgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQq XSAxIFtlcSBpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWNvbnRlbnRzLWVu ZCBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbl0gMSBbbGV0IG9yZy1pbi1zcmMtYmxvY2stcCBvciBpZiBwcm9nbiB1bndpbmQtcHJvdGVj dCBsZXQgb3JnLWFnZW5kYS1za2lwIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAtMHgyNjRkZWRl MzAwYzNhYjU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZl0gMyBbY29ucyBzZXRxIGxldCBjb25kIGxl dCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxldCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXNd IDMgW29yZy1lbGVtZW50LS1wcm9wZXJ0eSBvcmctZWxlbWVudC1wcm9wZXJ0eS1pbmhlcml0ZWQg aWYgb3JnLWluLWFyY2hpdmVkLWhlYWRpbmctcCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYW5k IG9yIGFuZCBvciBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgb3JnLWFnZW5kYS1za2lwXSAz IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxs IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbl0gMjMgW2xldCBjb25kIGxl dCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUt a2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21w YXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXIg cHJvZ24gaWZdIDEgW2xldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0t Y2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8t ZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8t ZW50ZXIgYXZsLXRyZWUtZW50ZXIgcHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxl bWVudC0tY2FjaGUtcHV0IG9yIHNldHFdIDEgW3NhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0 aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZl LWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgb3JnLWVsZW1lbnQtbGluZWFn ZV0gNCBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rp b24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCpdIDEyIFtpZiBpZiBpZiB3aGlsZSBpZiBsZXQq IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCog b3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzXSAyIFts ZXQqIHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LXBhcmFncmFwaC1wYXJzZXIgY29uZCBsZXQg Y29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50 IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCpdIDEgW3Vud2luZC1wcm90ZWN0IGxldCBhYmJyZXZp YXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMg Y29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbl0gMyBbaWYgaWYgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmct YWdlbmRhLWdldC1zY2hlZHVsZWRdIDEgWyIjPGxhbWJkYSAtMHgxNjhlMDZmYjRmYWQ5NTU3PiIg ZnVuY2FsbCBsZXQgK29yZy0tb3B0aW1pemUtYmFja2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEg YXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZmZXIgaWYgbGV0KiBvcmctYWdlbmRhLWdldC1k YXktZW50cmllcyBhcHBseSBzZXRxIGNvbmQgbGV0IGNhdGNoIHdoaWxlIHdoaWxlXSAxIFtpZiBl cSBvcmctYWdlbmRhLXRvZGF5LXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBz ZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlv bl0gNiBbb3JnLWVsZW1lbnQtLXByb3BlcnR5IGxldCogb3JnLS1wcm9wZXJ0eS1sb2NhbC12YWx1 ZXMgbGV0KiBjb25kIG9yZy1lbnRyeS1nZXQgbGV0KiBjYXRjaCBwcm9nbiBpZiAiIzxsYW1iZGEg MHhkNDU2MjY5YzNlOWQxNmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbl0gNSBbY2FyIGVx IGlmIGxldCBjb25kIGxldCogYW5kIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hl LWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29t cGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50ZXJdIDEgW3doaWxlIGxldCogc2F2 ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtcGxhbm5pbmctcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2 ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudCBzZXRxIGlmIGlmIHdoaWxl IGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb25dIDEgW2lmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1t YXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kXSAzIFtt ZW1xIGlmIG9yIHNldHEgaWYgcHJvZ24gc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGls ZSBpZiBsZXQqXSAyIFtpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgbGV0IGlmIHByb2duIGlm IGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRd IDEgW29yIGNkciBjYXIgbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRh LWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9n bl0gMiBbb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNhY2hlLWNv bXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHByb2duIGlm IHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBzZXRxIGlmIGlm IHdoaWxlIGxldF0gMSBbbWFjcm9leHAtbWFjcm9leHBhbmQgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXNdIDExIFtpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCog b3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBv cmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtZW50 ZXIgcHJvZ24gaWZdIDIgW2lmIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBvcmctZWxlbWVudC1saW5l YWdlIHNldHEgb3JnLS1wcm9wZXJ0eS1sb2NhbC12YWx1ZXMgbGV0KiBjb25kIG9yZy1lbnRyeS1n ZXQgbGV0KiBjYXRjaF0gMSBbbGV0IGlmIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3Jn LWVsZW1lbnQtLWNhY2hlLXB1dCBvciBzZXRxIGlmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMSBbY2NvbnYtYW5h bHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5h bHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5h bHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29u di1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5l c10gMTEgW2lmIGxldCogaWYgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5 IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1jYWNoZS1jb21wYXJl IGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVy IGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1lbnRlciBwcm9nbl0gMSBbcHJvZ24gaWYgcHJv Z24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNldHEg aWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZl LWN1cnJlbnQtYnVmZmVyXSAyIFtmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNleHBz IGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDIgW3Byb2duIGxldCogc2F2ZS1leGN1cnNpb24gcHJv Z24gaWYgb3JnLWVsZW1lbnQtdGltZXN0YW1wLXBhcnNlciBsZXQgd2hpbGUgbGV0IHByb2duIGlm IHNhdmUtZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1nZXQtdGltZS1wcm9wZXJ0aWVzIG5jb25jIHNl dGNhciBzYXZlLXJlc3RyaWN0aW9uXSAxIFtwcm9nbiBsZXQqIHNhdmUtZXhjdXJzaW9uIHByb2du IGlmIG9yZy1lbGVtZW50LXRpbWVzdGFtcC1wYXJzZXIgbGV0IHdoaWxlIGxldCogc2F2ZS1leGN1 cnNpb24gb3JnLWVsZW1lbnQtcGxhbm5pbmctcGFyc2VyIGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1 cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVudF0gMiBbc2F2ZS1leGN1cnNpb24gb3Jn LWVsZW1lbnQtcGxhaW4tbGlzdC1wYXJzZXIgY29uZCBsZXQgY29uZCBzZXRxIGxldCBzYXZlLWV4 Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMSBbY29uZCBvciBsZXQqIHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUt bWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmRdIDEgW3NldHEg cHJvZ24gaWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtcHV0IG9yIHNl dHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoXSAxIFtsZXQqIGlmIGxldCogYW5kIGxldCogb3Igb3Jn LWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBub3Qgb3Ig YW5kIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMSBbbGV0KiB3aGlsZSBpZiBs ZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCog c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNo IG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxXSA5IFt1bndpbmQt cHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdl bmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24g bGV0XSAzIFtvcmctZWxlbWVudC1lbmQgbGV0IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0t cGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbl0gMiBbcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNh Y2hlLW1hcCBsZXQqXSA3IFthbmQgbGV0KiBvcmctZWxlbWVudC1lbmQgbGV0IHdoaWxlIGxldCBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBj YXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXRdIDEg W2VxIGlmIGxldCogaWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50 LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3JnLWVsZW1lbnQtLWNh Y2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJl ZS1lbnRlciBwcm9nbiBpZl0gMSBbb3JnLWVsZW1lbnQtYmVnaW4gZ290by1jaGFyIHByb2duIGlm IHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBsZXQgcHJvZ24gaWZdIDIgW29yZy1lbGVtZW50LXBhcmFncmFwaC1wYXJzZXIgY29uZCBs ZXQgY29uZCBzZXRxIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVt ZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbl0gMSBbbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFn ZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQq IHByb2duIGxldF0gNCBbY29uZCB3aGlsZSBjYXRjaCBzYXZlLWV4Y3Vyc2lvbiBsZXQgb3JnLWVs ZW1lbnQtLWxpc3Qtc3RydWN0IG9yIG9yZy1lbGVtZW50LXBsYWluLWxpc3QtcGFyc2VyIGNvbmQg bGV0IGNvbmQgc2V0cSBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxl bWVudCBzZXRxXSAxIFtsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0 IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgaWZdIDE0IFttYWNyb2V4cC1tYWNyb2V4cGFu ZCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwg Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlXSAxIFtsaXN0IGxldCogb3JnLWFnZW5kYS1n ZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24g bGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0g NCBbaWYgbGV0KiBpZiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24t Y2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAyIFtwcm9n biBpZiBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tZ2V0LXRpbWUtcHJvcGVydGllcyBuY29u YyBzZXRjYXIgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVm ZmVyIG9yZy1lbGVtZW50LS1oZWFkbGluZS1kZWZlcnJlZCBhcHBseSBvcmctZWxlbWVudC0tcHJv cGVydHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5IGFuZCBpZiAiIzxsYW1iZGEgLTB4MmNlYTdlZjRl NWI1MjQwPiJdIDEgW2FuZCBpZiBzZXRxIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1j YWNoZS1tYXBdIDEgW29yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG9yZy1lbGVtZW50LS1j YWNoZS1jb21wYXJlIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRy ZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIg b3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBzZXRxIGlmIGlmIHdoaWxlIGxldF0gMSBbd2hpbGUg bGV0IHByb2duIGlmIGxldCBzYXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tZ2V0LW5vZGUtcHJv cGVydGllcyBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyIG9yZy1lbGVtZW50LS1nZXQtZ2xvYmFsLW5vZGUtcHJvcGVydGllcyBhcHBseSBvcmct ZWxlbWVudC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5IG9yZy1lbGVtZW50LXByb3Bl cnR5LWluaGVyaXRlZF0gMSBbb3JnLWVsZW1lbnQtYXQtcG9pbnQgcHJvZ24gaWYgaWYgaWYgaWYg d2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBp ZiBwcm9nbiBsZXQqXSAxIFtsZXQqIG9yIGxldCBpZiBsZXQqIHByb2duIGlmIGxldCBzYXZlLWV4 Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hpbGUgbGV0 IGxldCpdIDEgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYt bWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqXSAyIFthdmwtdHJlZS0t ZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBhdmwtdHJlZS1l bnRlciBwcm9nbiBpZiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1wdXQg b3Igc2V0cSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uXSAxIFtjY29udi1h bmFseXplLWZvcm0gY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0 KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUg bGV0XSAzIFtvcmctLXByb3BlcnR5LWxvY2FsLXZhbHVlcyBsZXQqIGNvbmQgb3JnLWVudHJ5LWdl dCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNjljM2U5ZDE2ZT4iIGZ1bmNh bGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duXSA0IFtpZiBsZXQqIHByb2duIGlmIGxldCBz YXZlLWV4Y3Vyc2lvbiBvcmctZWxlbWVudC0tY3VycmVudC1lbGVtZW50IHNldHEgaWYgaWYgd2hp bGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyXSAxIFtjb25kIGxldCogYW5kIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNh Y2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUt Y29tcGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVu dGVyIHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXJdIDEgW2xldCogYW5kIGxldCogbGV0KiBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2gg b3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJvZ24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVn aW4gb3IgbWF4XSAxIFtlcSBpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWNv bnRlbnRzLWJlZ2luIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uXSAxIFtsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4 IHNldHEgaWYgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlmIHByb2duXSAx IFtpZiBpZiBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJvZ24gaWYgcHJvZ24gaWYgcHJv Z24gaWYgaWYgaWYgd2hpbGUgaWZdIDQgW2xldCogb3JnLWFnZW5kYS1nZXQtdGltZXN0YW1wcyBj b25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgaWZdIDEzIFthbmQgbGV0 KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxp c3QgbGV0KiBvcmctYWdlbmRhLWdldC1zZXhwcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxl XSAyMCBbb3Igc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNo ZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJy ZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYg c2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbl0gMiBbbGV0IGNvbmQgbGV0KiBvciBsZXQgaWYgbGV0 KiBwcm9nbiBpZiBsZXQgc2F2ZS1leGN1cnNpb24gb3JnLWVsZW1lbnQtLWN1cnJlbnQtZWxlbWVu dCBzZXRxIGlmIGlmIHdoaWxlXSAxIFtsZXQgb3JnLWFnZW5kYS1za2lwIGNhdGNoIHByb2duIGlm ICIjPGxhbWJkYSAweGQ0NTYyNjljM2U5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2du IGlmIHByb2duIGlmIHByb2duIGlmXSAzIFtpZiBsZXQgY29uZCBsZXQqIHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0t cGFyc2UtdG8gc2V0cSBwcm9nbiBpZiBwcm9nbiBvcmctZWxlbWVudC1iZWdpbiBvciBtYXhdIDEg W3NldHEgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBw cm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEt Z2V0LWRlYWRsaW5lcyBzZXRxIGxldF0gMSBbYW5kIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMt YmVnaW4gbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1oZWFkbGluZS1kZWZlcnJlZCBhcHBseSBvcmctZWxlbWVu dC0tcHJvcGVydHkgb3JnLWVsZW1lbnQtLXByb3BlcnR5IGFuZCBpZiAiIzxsYW1iZGEgMHhkNDU2 MjY5YzNlOWQxNmU+IiBmdW5jYWxsXSAxIFtjb25kIGxldCogb3IgbGV0IGlmIHByb2duIGlmIHNh dmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBzZXRxIGlmIGlmIHdo aWxlIGxldCBsZXQqXSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1j bGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbF0gMzUgW3VwY2FzZSBjb25jYXQgbGV0KiB3aGlsZSBsZXQgcHJvZ24gaWYgbGV0IHNhdmUt ZXhjdXJzaW9uIG9yZy1lbGVtZW50LS1nZXQtbm9kZS1wcm9wZXJ0aWVzIGxldCBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWdl dC1nbG9iYWwtbm9kZS1wcm9wZXJ0aWVzIGFwcGx5XSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDQgW2lmIGlmIHdoaWxlIGxldCBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxl bWVudC0tcGFyc2UtdG8gc2V0cSBwcm9nbiBpZiBwcm9nbiBvcmctZWxlbWVudC1iZWdpbiBvcl0g MiBbdW53aW5kLXByb3RlY3QgbGV0IGFuZCBvciBhbmQgb3IgaWYgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IG9yZy1hZ2VuZGEtc2tpcCBjYXRjaCBwcm9nbiBpZiAiIzxsYW1iZGEgMHhkNDU2MjY5 YzNlOWQxNmU+IiBmdW5jYWxsXSAzIFtlcSBpZiBpZiB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1l bnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb25d IDEgW3Vud2luZC1wcm90ZWN0IGxldCBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmXSAxIFtvciBp ZiBpZiBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNjljM2U5ZDE2ZT4iIGZ1 bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlmXSAxIFtpZiBsZXQqIGlmIGxldCog b3JnLWVsZW1lbnQtZW5kIDw9IGFuZCB3aGlsZSBsZXQgY29uZCBsZXQqIHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0t cGFyc2UtdG9dIDIgW2lmIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBv cmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29tcGFyZSBh dmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLS1kby1lbnRlciBh dmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVyIHByb2du IGlmXSAxIFtsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hl LWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBvcmctZWxlbWVudC0tY2FjaGUtY29t cGFyZSBhdmwtdHJlZS0tZG8tZW50ZXIgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVy IHByb2duIGlmIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLXB1dCBvciBz ZXRxXSAxIFtvciBvciBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQt LWNhY2hlLWFjdGl2ZS1wIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g c2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9u LWNhc2UgaWYgc2V0cSBsZXRdIDIgW2FuZCBpZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgaWYgcHJv Z24gaWYgaWYgaWYgd2hpbGUgaWZdIDEgW2lmIGxldCogaWYgbGV0KiBvcmctZWxlbWVudC1jb250 ZW50cy1iZWdpbiBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJz ZS10b10gMSBbc3RyaW5nLW1hdGNoLXAgYW5kIGNvbmQgbGV0KiBjYXRjaCBwcm9nbiBpZiAiIzxs YW1iZGEgMHhkNDU2MjY5YzNlOWQxNmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiBw cm9nbiBpZl0gMSBbY2RyIGNhciBpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIGFuZCBsZXQqIG9y IG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgb3Jn LWVsZW1lbnQtLWNhY2hlLWNvbXBhcmUgYXZsLXRyZWUtLWRvLWVudGVyIGF2bC10cmVlLWVudGVy XSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYt bWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbl0gNSBbaWYgaWYgcHJvZ24gaWYgY29uZCBsZXQg d2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZl0g MSBbaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDQgW29yIGlmIGlmIHByb2duIHVu d2luZC1wcm90ZWN0IGxldCBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBp Zl0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t YWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxs IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxldCogc2F2ZS1y ZXN0cmljdGlvbl0gMSBbbGV0KiBwcm9nbiBsZXQgIiM8bGFtYmRhIDB4OWMzMmExOWQyYzNiMzM4 PiIgc29ydCBtYXBjYXIgc2V0cSBwcm9nbiBsZXQgb3JnLWFnZW5kYS1maW5hbGl6ZS1lbnRyaWVz IGluc2VydCBwcm9nbiBpZiBwcm9nbiBpZiB3aGlsZV0gMSBbaWYgaWYgcHJvZ24gaWYgbGV0IHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9yZy1l bGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2du IGlmXSAyIFtsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMtYmVnaW4gcHJvZ24gaWYg b3Igc2V0cSBpZiBwcm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlmIGlmXSAxIFthbmQgb3IgaWYg bGV0IG9yZy10aW1lLXN0YW1wLWZvcm1hdCBmb3JtYXQtdGltZS1zdHJpbmcgc3Vic3RyaW5nIHJl Z2V4cC1xdW90ZSBjb25jYXQgbGV0KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0 cSBsZXQgY29uZCBsZXRdIDEgW2NhciBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9y Zy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBs ZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAyIFtub3QgY29uZCBsZXQgd2hpbGUgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBz YXZlLXJlc3RyaWN0aW9uXSAyIFthbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1w cm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2Vu ZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxXSAzIFtlcSBzYXZlLWN1cnJlbnQtYnVmZmVyIGFu ZCBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gbGV0XSA1IFtjZHIgY2FyIGlmIGxldCBjb25kIGxldCogYW5kIGxl dCogb3JnLWVsZW1lbnQtZW5kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXJdIDIgW2xldCogYW5kIGxldCogb3Igb3Jn LWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBub3QgYW5k IG9yIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0g MSBbdW53aW5kLXByb3RlY3QgbGV0IG9yZy1pbi1zcmMtYmxvY2stcCBvciBpZiBwcm9nbiB1bndp bmQtcHJvdGVjdCBsZXQgb3JnLWFnZW5kYS1za2lwIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAw eGQ0NTYyNmY3MWU5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxXSAxIFtwcm9nbiBsZXQqIHdoaWxl IGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQg bGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIg Y2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJvZ25dIDIgW2FuZCBjb25kIGxldCog Y2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2ZjcxZTlkMTZlPiIgZnVuY2FsbCBjb25z IHNldHEgaWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ25dIDEgW29yZy1wYXJzZS10aW1lLXN0cmlu ZyBlbmNvZGUtdGltZSBvcmctdGltZS1zdHJpbmctdG8tdGltZSBjb25kaXRpb24tY2FzZSB0aW1l LXRvLWRheXMgY29uZCBvcmctdGltZS1zdHJpbmctdG8tYWJzb2x1dGUgYXBwbHkgY29uZGl0aW9u LWNhc2Ugb3JnLWFnZW5kYS0tdGltZXN0YW1wLXRvLWFic29sdXRlIGNvbmQgbGV0KiBjYXRjaCBw cm9nbiBpZiAiIzxsYW1iZGEgMHhkNDU2MjZmNzFlOWQxNmU+Il0gMSBbc2F2ZS1jdXJyZW50LWJ1 ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBs ZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYg b3JnLWVsZW1lbnQtYXQtcG9pbnQgbGV0IG9yIG9yZy1hdC1wbGFubmluZy1wXSAyIFtsZXQqIHBy b2duIGlmIHByb2duIGNvbmRpdGlvbi1jYXNlIGVxIGFuZCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIG9yIG9yZy1hdC1wbGFubmluZy1wIG9yIGFuZCBvciBjb25kIHByb2duXSAyIFts ZXQgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gNCBbY2NvbnYtYW5hbHl6ZS1mb3Jt IGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3Jt IGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXpl LWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG9y Zy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNl dHEgbGV0XSAxNCBbaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNh Y2hlLW1hcF0gOSBbbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBj b25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmXSAxMyBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxldCog c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBv cmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWRdIDUgW2lm IHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24g aWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1z Y2hlZHVsZWQgY29ucyBzZXRxXSAyIFtzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1j YXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1 cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb25dIDEyIFtj Y29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGxl dCogb3JnLWFnZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxl IGxldCBsZXQqIHByb2duIGxldF0gNyBbY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5l cyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMTQgW29yIHNldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2du IGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVz IHNldHEgbGV0XSAxIFtjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPSBvciBp ZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0 XSAyIFthbmQgaWYgIiM8bGFtYmRhIC0weDJjZWE3ZWY4ODViNTI0MD4iIGZ1bmNhbGwgY29ucyBz ZXRxIGlmIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlXSAzIFtzYXZlLWN1 cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBpZiBsZXQgc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQt YXQtcG9pbnQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJv Z25dIDIgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBh bmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0 KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUg bGV0IGxldCpdIDMgW2lmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2 ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ25dIDEwIFthbmQg aWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBj YXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXRdIDIg W2VxIGlmIGxldCBjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPCBhbmQgb3Ig aWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0XSAyIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDEzIFtlcSBvciBhbmQgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBvcmctZWxlbWVudC0tY2FjaGUtYWN0aXZlLXAgYW5kIGlmIGxldCBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2lu dCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAyIFtzdWJzdHJpbmcgcmVnZXhwLXF1 b3RlIGNvbmNhdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxldCBj b25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbl0gMTEgW29y Zy1lbGVtZW50LS1wcm9wZXJ0eSBhbmQgaWYgIiM8bGFtYmRhIC0weDJjZWE3ZWY4ODViNTI0MD4i IGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmXSA2 IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSAyIFtsaXN0 IGxldCogb3JnLWFnZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdo aWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtY3VycmVudC1idWZmZXJdIDQgW29yIGFuZCBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duXSA0 IFtpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5k IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHByb2duIG9yZy1lbGVt ZW50LWJlZ2luXSAxIFthbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiA9IGFuZCBpZiBsZXQqIHNh dmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1l bGVtZW50LS1wYXJzZS10b10gMiBbd2hpbGUgaWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9y Zy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gc2V0 cSBwcm9nbiBpZiBwcm9nbl0gMSBbaWYgbGV0KiBvcmctZWxlbWVudC1lbmQgPD0gYW5kIHdoaWxl IGxldCBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZl0g MiBbcHJvZ24gY29uZCBsZXQqIHdoaWxlIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmct ZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRp dGlvbi1jYXNlXSA0IFt3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1l bnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24t Y2FzZSBpZiBzZXRxIGxldF0gOSBbY29uZCBsZXQgb3JnLXRpbWUtc3RhbXAtZm9ybWF0IGZvcm1h dC10aW1lLXN0cmluZyBzdWJzdHJpbmcgcmVnZXhwLXF1b3RlIGNvbmNhdCBsZXQqIG9yZy1hZ2Vu ZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXRdIDIgW21h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbF0gNCBbb3JnLWVsZW1l bnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQg Y29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1l eGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gNCBbZGlyZWN0b3J5LWFiYnJldi1hcHBseSBz ZXRxIGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUt bmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEg bGV0XSAyIFtjZHIgY2FyIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5k YS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxl dCBzYXZlLXJlc3RyaWN0aW9uXSA2IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zXSA1IFtsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxl dCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2Vu ZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmRdIDUgW29yIG9yZy1lbGVtZW50LS1j YWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgbm90IGFuZCBvciBpZiBpZiB3 aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlm XSA0IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1t YXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXNdIDEwIFtsZXQgbGV0KiBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50 LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxl dF0gMyBbaWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBlcSBvciBhbmQgaWYgcHJvZ24gaWYgaWYg aWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAxIFttYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzXSAzIFtpZiBsZXQqIGlmIGxl dCogYW5kIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmlu ZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1i dWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvXSAzIFtmdW5jdGlvbiBvcmctZWxlbWVu dC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBs ZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMTggW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1j bG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0 LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxldCB3aGlsZV0gMiBbZXF1YWwgYW5kIGlmIGxldCBs ZXQgaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUg Zm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cV0gMjYgW2xldCog YW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVu dC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoXSA3IFtvcmctZWxlbWVu dC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWZdIDEgW2FuZCBzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBhbmQgbGV0KiBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3Jn LWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJp Y3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW3NldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBv cmctZWxlbWVudC0tY2FjaGUtYWN0aXZlLXAgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10 byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5 emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5j dGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMg c2V0cSBsZXQgY29uZCBsZXRdIDcgW2xldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRp b24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUt ZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludF0gMTAgW2FuZCBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBpZiBwcm9nbiBsZXQqIG9yZy1l bGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBj b25kIGxldCB3aGlsZSBsZXQgbGV0Kl0gNyBbbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zXSA0IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGxdIDYgW3NldHEgbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFi YnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxp bmVzIHNldHEgbGV0IGNvbmQgbGV0XSAyIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG9y Zy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxl dCBjb25kXSA1IFt3aXRoLW5vLXdhcm5pbmdzIG9yZy1hZ2VuZGEtZ2V0LWJsb2NrcyBjb25zIHNl dHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgaWZdIDEgW2Njb252LWFuYWx5emUt Zm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUt Zm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYg Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hl LW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmRdIDEy IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1h a2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0KiBvcmctYWdlbmRhLWdl dC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXRdIDIgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw YW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1l bnQtY2FjaGUtbWFwXSA5IFtwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJvZ24gaWYgcHJvZ24g aWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uXSAxIFtpZiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRp dGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2 ZS1leGN1cnNpb24gbGV0IGlmXSAzIFtpZiBsZXQqIG9yZy1lbGVtZW50LWNvbnRlbnRzLWJlZ2lu IHByb2duIGlmIG9yIHNldHEgaWYgcHJvZ24gc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZl0g MiBbaWYgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNo ZS1tYXAgbGV0Kl0gNyBbbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiA8IGFuZCBpZiBw cm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b25dIDEgW2Rlcml2ZWQtbW9kZS1wIGlmIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g c2F2ZS1leGN1cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2Fj aGUtbWFwXSAyIFtsZXQqIGFuZCBsZXQqIGFuZCBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1r ZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgYW5kIG9yIGFuZCBpZiBzZXRxIGlmIGlm IHdoaWxlXSAxIFttb2QgaWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1j YWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1j dXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2Ug aWYgc2V0cSBsZXRdIDcgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3Jtc10gMiBbbWFjcm9leHAtbWFjcm9leHBhbmQgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWlu dGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwXSAxIFttYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGxdIDQgW2NvbmQgb3JnLWVudHJ5LWdl dCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNmY3MWU5ZDE2ZT4iIGZ1bmNh bGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlmIHByb2duXSA1IFtsZXQgbGV0KiBwcm9n biBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGlmIGxldCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBjb25kIGxldCBj YXRjaCB3aGlsZV0gMyBbY29uZCBvcmctdGltZS1zdHJpbmctdG8tYWJzb2x1dGUgYXBwbHkgY29u ZGl0aW9uLWNhc2Ugb3JnLWFnZW5kYS0tdGltZXN0YW1wLXRvLWFic29sdXRlIGNvbmQgbGV0KiBj YXRjaCBwcm9nbiBpZiAiIzxsYW1iZGEgMHhkNDU2MjZmNzFlOWQxNmU+IiBmdW5jYWxsIGNvbnMg c2V0cSBpZiBwcm9nbl0gNSBbb3JnLWVsZW1lbnQtLXByb3BlcnR5IGVxIGxldCogY2F0Y2ggcHJv Z24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2ZjcxZTlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHEgaWYg cHJvZ24gaWYgcHJvZ24gaWYgcHJvZ25dIDMgW2lmIGxldCBjb25kIGxldCogYW5kIGxldCogb3Jn LWVsZW1lbnQtYmVnaW4gbGV0KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3Jn LWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbl0gNyBbY29uZCBs ZXQgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1 cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHBy b2duIG9yZy1lbGVtZW50LWJlZ2luIG9yXSAxIFtpZiBvcmctZWxlbWVudC1hdC1wb2ludCBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1l bGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBj b25kIGxldF0gMiBbb3JnLXRvZGF5IGVxIG9yZy1hZ2VuZGEtdG9kYXktcCBsZXQqIG9yZy1hZ2Vu ZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHBy b2duIGxldCBzYXZlLXJlc3RyaWN0aW9uXSA5IFt0aW1lLXRvLWRheXMgb3JnLXRvZGF5IGVxIG9y Zy1hZ2VuZGEtdG9kYXktcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEg bGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldF0gNCBbbGV0IGFiYnJldmlhdGUt ZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEg bGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAx IFtzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBv cmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbl0gNCBbaWYgbGV0KiBpZiBsZXQq IG9yZy1lbGVtZW50LWVuZCBvciBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRp dGlvbi1jYXNlIGlmIHNldHFdIDIgW21hY3JvZXhwLW1hY3JvZXhwYW5kIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zXSA1IFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRl cnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1h Z2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQq IHByb2duXSAxIFttYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwXSAxIFtp ZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIDwgYW5kIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlm IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDEgW3N1YnN0cmluZyBs ZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNmY3MWU5ZDE2ZT4iIGZ1bmNhbGwg Y29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmXSAxIFtvcmctYWdlbmRhLS10 aW1lc3RhbXAtdG8tYWJzb2x1dGUgY29uZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAw eGQ0NTYyNmY3MWU5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlm IHByb2duXSAxIFtsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxl bWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIGFuZCBvciBhbmQg aWYgc2V0cSBpZiBpZiB3aGlsZV0gMSBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2lu IG9yIG1heCBzZXRxIGlmIGlmIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBwcm9nbiBpZl0g MSBbbGV0KiBvcmctYWdlbmRhLWdldC1ibG9ja3MgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGls ZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZl LWN1cnJlbnQtYnVmZmVyIGlmXSA3IFtsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIDwg YW5kIG9yIGlmIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBwcm9nbiBpZiBwcm9nbiBpZl0g MSBbaWYgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQg aWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgb3JnLWVsZW1lbnQtbGluZWFnZSBzZXRxIG9yZy0tcHJv cGVydHktbG9jYWwtdmFsdWVzIGxldCogY29uZCBvcmctZW50cnktZ2V0IGxldCogY2F0Y2ggcHJv Z25dIDEgW29yZy10b2RheSBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRx IGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxMCBbb3JnLWFnZW5kYS1nZXQtdGlt ZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgaWYgbGV0 Kl0gOCBbYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPCBhbmQgaWYgcHJvZ24gaWYgaWYgaWYg d2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMSBbY29u Y2F0IHNldHEgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJy ZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWJsb2NrcyBj b25zXSAyIFtsZXQgb3JnLWVsZW1lbnQtLWNhY2hlLXZlcmlmeS1lbGVtZW50IGFuZCBpZiBsZXQg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3Jn LWVsZW1lbnQtYXQtcG9pbnQgb3JnLWVsZW1lbnQtbGluZWFnZSBzZXRxIG9yZy0tcHJvcGVydHkt bG9jYWwtdmFsdWVzIGxldCogY29uZF0gMiBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWNv bnRlbnRzLWVuZCBlcSBpZiBjYXRjaCBwcm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlmIGlmIGlm XSAxIFtvcmctdGltZS1zdHJpbmctdG8tYWJzb2x1dGUgYXBwbHkgY29uZGl0aW9uLWNhc2Ugb3Jn LWFnZW5kYS0tdGltZXN0YW1wLXRvLWFic29sdXRlIGNvbmQgbGV0KiBjYXRjaCBwcm9nbiBpZiAi IzxsYW1iZGEgMHhkNDU2MjZmNzFlOWQxNmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBp Zl0gMiBbb3JnLWZvbGQtY29yZS0tcHJvcGVydHktc3ltYm9sLWdldC1jcmVhdGUgb3JnLWZvbGQt Y29yZS1nZXQtcmVnaW9uLWF0LXBvaW50IG9yZy1mb2xkLWNvcmUtLWZpeC1mb2xkZWQtcmVnaW9u IGluc2VydCBwcm9nbiBpZiB3aGlsZSBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxs LWludGVyYWN0aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdl bmRhXSAxIFtvcmctdG9kYXkgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQg Y29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1l eGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZl0gNyBbYWJicmV2aWF0ZS1maWxlLW5hbWUg Zm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXQg Y29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb25dIDEgW29y Zy1hZ2VuZGEtZ2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXQgY2F0Y2ggd2hpbGUg d2hpbGUgbGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNh bGwtaW50ZXJhY3RpdmVseSBjb25kIGxldCogY2F0Y2hdIDUgW21hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUg ZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1 bGVkIGNvbnMgc2V0cSBsZXRdIDMgW2VxIHNhdmUtY3VycmVudC1idWZmZXIgbm90IGFuZCBpZiBw cm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb25dIDcgW29yZy1lbGVtZW50LS1wcm9wZXJ0eSBvcmctZWxlbWVudC1saW5lYWdl IHNldHEgb3JnLS1wcm9wZXJ0eS1sb2NhbC12YWx1ZXMgbGV0KiBjb25kIG9yZy1lbnRyeS1nZXQg bGV0KiBjYXRjaCBwcm9nbiBpZiAiIzxsYW1iZGEgMHhkNDU2MjZmNmFlOWQxNmU+IiBmdW5jYWxs IGNvbnMgc2V0cSBpZl0gMSBbaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlmIHBy b2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMyBb Y29uZCBsZXQgb3JnLWdldC13ZGF5cyBjb25kIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRh IC0weDFjNTA4MTE5YjdmZmJhMTg+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiBwcm9n bl0gMyBbbGV0KiBpZiBsZXQqIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gc2V0cSBw cm9nbiBpZiBwcm9nbiBvcmctZWxlbWVudC1iZWdpbiBvcl0gMSBbY2RyIGNhciBpZiBsZXQgY29u ZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCogd2hpbGUgaWYgbGV0KiBzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZF0gMiBbYW5kIGxldCog b3JnLWVsZW1lbnQtYmVnaW4gbGV0KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIg b3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10b10g MyBbaWYgbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50 LS1jYWNoZS1rZXktbGVzcy1wIGFuZCBvciBhbmQgaWYgc2V0cSBpZiBpZiB3aGlsZSBpZl0gMSBb YW5kIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMtYmVnaW4gZ290by1jaGFyIHByb2duIGlmICIj PGxhbWJkYSAtMHgxYzUwODExOWI3ZmZiYTE4PiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ24g aWYgcHJvZ24gaWYgcHJvZ25dIDEgW2FuZCBpZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgbGV0IG9y IG9yZy1hdC1wbGFubmluZy1wIG9yIGlmIHByb2duIHVud2luZC1wcm90ZWN0XSAxIFtvcmctZWxl bWVudC1iZWdpbiA8IGFuZCBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmXSAyIFtvciBzZXQtYnVmZmVyIHNh dmUtY3VycmVudC1idWZmZXIgZXEgYW5kIHNhdmUtY3VycmVudC1idWZmZXIgaWYgcHJvZ24gaWYg aWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAxIFtz YXZlLWV4Y3Vyc2lvbiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVu dC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNl dHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0 IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50XSA1IFttYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1h cGNhciBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0 IHdoaWxlXSAxIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlc10g MSBbY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIDwgYW5kIGlmIHByb2duIGlm IGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMyBbY2NvbnYtYW5hbHl6ZS1m b3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBj YXIgbGV0KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQg d2hpbGUgbGV0IGxldCogcHJvZ25dIDMgW2VxIG9yZy1hZ2VuZGEtdG9kYXktcCBsZXQqIG9yZy1h Z2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQq IHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAyIFttYWNyb2V4cC1t YWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFs bC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jtc10gMSBbYW5kIHNhdmUtY3VycmVudC1i dWZmZXIgaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gMiBbcHJvZ24gcHJvZ24gYW5kIGlmIHdo aWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYg cHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0Kl0gMiBbbWFjcm9leHAtbWFjcm9l eHBhbmQgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXNdIDYgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVu Y3Rpb24gbWFwY2FyIGxldCogb3JnLWFnZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0 XSAyIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252 LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0KiBvcmctYWdlbmRh LWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldF0gNCBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252 LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252 LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252 LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252 LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwXSAxMSBb Y2FyLXNhZmUgaWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMiBbbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxl bWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29u ZCBsZXRdIDMgW2lmIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJvZ24g aWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4IHNldHFdIDEgW2lmIGxldCogbGV0IGxl dCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNh dGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uXSAyIFtpZiBsZXQgY29u ZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWNvbnRlbnRzLWJlZ2luIGdvdG8tY2hhciBzYXZl LWV4Y3Vyc2lvbiBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNmY2YWU5ZDE2 ZT4iIGZ1bmNhbGwgY29uc10gMSBbaWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiA8IGFuZCBvciBp ZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHBy b2duIGlmXSAxIFtlcXVhbCBhbmQgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90 ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEt Z2V0LXRpbWVzdGFtcHMgY29uc10gMTggW2xldCogYW5kIGxldCogb3JnLWVsZW1lbnQtY29udGVu dHMtYmVnaW4gcHJvZ24gaWYgb3Igc2V0cSBpZiBwcm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlm IGlmXSAyIFtjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYt YW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBj Y29udi1mdiBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1l bnQtY2FjaGUtbWFwIGxldCpdIDQgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIG1hcGNhciBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRx IGxldCBjb25kIGxldF0gNiBbbWFjcm9leHAtbWFjcm9leHBhbmQgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXNdIDEgW2xldCogaWYgbGV0KiBvcmctZWxlbWVudC1jb250ZW50cy1iZWdpbiBsZXQg Y29uZCBsZXQgd2hpbGUgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24t Y2FzZV0gMSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciBs ZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxl IGxldCBsZXQqXSAyIFtvcmctZWxlbWVudC0tY2FjaGUtaW50ZXJydXB0LXAgaWYgd2hpbGUgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAxIFtzZXRxIGlmIGxldCBsZXQgaWYgbGV0 KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxp c3QgbGV0KiBvcmctYWdlbmRhLWdldC1ibG9ja3MgY29ucyBzZXRxXSAyIFttYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSA2IFtsZXQgYWJicmV2aWF0ZS1maWxlLW5h bWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC1zZXhwcyBjb25zIHNldHEgbGV0IGNv bmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldF0gNCBbbWFjcm9leHAtLWFsbC1jbGF1c2Vz IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1j bGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbl0gNCBbYW5kIG9yIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxl dCBvcmctYWdlbmRhLXNraXAgY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2ZjZhZTlk MTZlPiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ25dIDMgW2xldCBsZXQgaWYgbGV0KiBwcm9n biB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0 KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0cSBsZXQgY29uZF0gMiBbbGV0KiBp ZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCogd2hpbGUgaWYgbGV0KiBzYXZlLWN1cnJlbnQt YnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaF0gNSBbbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQq IG9yZy1lbGVtZW50LWNhY2hlLW1hcF0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBh bmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxldCog c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBv cmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXNdIDEgW3Jl Z2V4cC1xdW90ZSBjb25jYXQgbGV0KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBzIGNvbnMgc2V0 cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb25dIDEgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3Vy ZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hl ZHVsZWQgY29ucyBzZXRxXSA0IFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4 cGFuZC1hbGxdIDMgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9u IG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25z IHNldHEgbGV0IGNvbmQgbGV0XSAyIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwt Y2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFu ZC1hbGxdIDE2IFthbmQgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQq IG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxXSAxIFtsaXN0IGxldCogb3JnLWFnZW5kYS1n ZXQtYmxvY2tzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0 IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlcl0gMTAg W29yZy1lbGVtZW50LS1oZWFkbGluZS1jYWNoZS1yb290IGlmIHNhdmUtY3VycmVudC1idWZmZXIg bGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBs ZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBj b25zIHNldHFdIDEgW2xldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hl LW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0XSAxIFtvciBz ZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1w IGlmIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxl dCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IGxldCBwcm9nbl0gMiBbY29uY2F0IHNldHEgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1h Z2VuZGEtZ2V0LXNleHBzIGNvbnNdIDMgW3NhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZm ZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0 IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9y Zy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDQgW2Nj b252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNj b252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1mdiBjY29udi1t YWtlLWludGVycHJldGVkLWNsb3N1cmVdIDUgW2FuZCBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCog b3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cV0gNCBbY29uZCB3aGlsZSBsZXQgcHJv Z24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGlu ZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ25dIDIgW29yIHNldC1idWZm ZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3Jn LWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cV0gMiBbc2F2ZS1jdXJyZW50LWJ1ZmZlciBh bmQgaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbl0gMiBbZXEgaWYgbGV0IGNvbmQgbGV0KiBhbmQg bGV0KiBvcmctZWxlbWVudC1jb250ZW50cy1lbmQgZXEgaWYgY2F0Y2ggcHJvZ24gc2V0cSBwcm9n biBpZiBwcm9nbl0gMSBbaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlmIHByb2du IGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBs ZXRdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWlu dGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGxldCogb3JnLWFnZW5kYS1nZXQtdGlt ZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duXSAxIFtt YWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1m b3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxl dCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDIgW29yZy1hZ2VuZGEtZ2V0 LWJsb2NrcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgaWYgbGV0 Kl0gMTAgW2xldCogYW5kIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0t Y2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUt Y3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJvZ24gaWZd IDEgW2VxIG9yIGFuZCBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3Rp dmUtcCBpZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lv biBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgb3JnLWVsZW1lbnQtbGluZWFnZSBzZXRxIG9y Zy0tcHJvcGVydHktbG9jYWwtdmFsdWVzXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtLWFu YWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1ha2UtaW50 ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXBd IDEgW3Byb2duIHByb2duIHNldHEgcHJvZ24gY29uZCBsZXQqIHdoaWxlIGlmIGxldCogc2F2ZS1j dXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXJdIDEgW2lmIGlmIHdoaWxl IGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJv Z24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGlu ZXMgc2V0cV0gMiBbb3JnLWVudHJ5LWdldCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAw eGQ0NTYyNmY2YWU5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlm IHByb2duIGlmXSAzIFthbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBlcSBvciBhbmQgaWYgcHJv Z24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u XSA0IFtwcm9nbiBpZiBwcm9nbiBvcmctZWxlbWVudC1iZWdpbiBvciBtYXggc2V0cSBpZiBpZiBp ZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJvZ24gaWYgcHJvZ25dIDEgW3NldHEgb3JnLS1w cm9wZXJ0eS1sb2NhbC12YWx1ZXMgbGV0KiBjb25kIG9yZy1lbnRyeS1nZXQgbGV0KiBjYXRjaCBw cm9nbiBpZiAiIzxsYW1iZGEgMHhkNDU2MjZmNmFlOWQxNmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBp ZiBwcm9nbiBpZl0gMSBbYXBwbHkgY29uZGl0aW9uLWNhc2Ugb3JnLWFnZW5kYS0tdGltZXN0YW1w LXRvLWFic29sdXRlIGNvbmQgbGV0KiBjYXRjaCBwcm9nbiBpZiAiIzxsYW1iZGEgMHhkNDU2MjZm NmFlOWQxNmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiBwcm9nbl0gMyBbY2FyIGlm IGxldCBjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPSBhbmQgaWYgbGV0KiBz YXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqXSAyIFtz ZXRxIGFuZCBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJl dmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVk IGNvbnNdIDEgW2xldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4IHNldHEgaWYg aWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlmIHByb2duXSAyIFtsZXQqIGNh dGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNmY2YWU5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBz ZXRxIGlmIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIGlmXSA1IFtnb3RvLWNoYXIgbGV0KiBv cmctYWdlbmRhLWdldC1ibG9ja3MgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0 KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyXSAxIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0KiBvcmctYWdlbmRhLWdldC10aW1lc3RhbXBz IGNvbnMgc2V0cSBsZXQgY29uZF0gMSBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2lu IGxldCogd2hpbGUgaWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNo ZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJy ZW50LWJ1ZmZlcl0gMyBbb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiB3aGlsZSBpZiBsZXQqIHNhdmUt Y3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVt ZW50LS1wYXJzZS10byBzZXRxIHByb2duXSAzIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsXSAzIFtvcmctZWxlbWVudC0tcHJvcGVydHkgb3JnLWVsZW1lbnQt cGFyZW50IHNldHEgd2hpbGUgcHJvZ24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4 IHNldHEgaWYgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3RdIDIgW21hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw YW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGV0KiBsZXQq IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmXSA5IFthbmQgaWYg bGV0IGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUt bmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldF0g MSBbb3JnLWVsZW1lbnQtYmVnaW4gPSBvciBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCpdIDIgW2FuZCBv ciBsZXQgb3JnLWVsZW1lbnQtLWNhY2hlLXZlcmlmeS1lbGVtZW50IGFuZCBpZiBsZXQgc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1l bnQtYXQtcG9pbnQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDEgW2NvbmQg c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxl dCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBjb25kIGxldCBjYXRjaCB3 aGlsZSB3aGlsZSBsZXQqIGNhdGNoXSAyIFsrb3JnLS1vcHRpbWl6ZS1iYWNrZ3JvdW5kZWQtYWdl bmRhLWJ1ZmZlcnMtYSBhcHBseSBvcmctZ2V0LWFnZW5kYS1maWxlLWJ1ZmZlciBpZiBsZXQqIG9y Zy1hZ2VuZGEtZ2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXQgY2F0Y2ggd2hpbGUg d2hpbGUgbGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3RdIDEgW2lmIHByb2duIHNldHEgcHJvZ24g aWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIGxldCBwcm9nbl0gMSBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1 bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6 ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6 ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6 ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBjY29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1h bmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlXSAyIFtj YXIgaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1jb250ZW50cy1lbmQgZXEg aWYgY2F0Y2ggcHJvZ24gc2V0cSBwcm9nbiBpZiBwcm9nbl0gMSBbb3JnLWVsZW1lbnQtY2FjaGUt bWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxl IGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUt Y3VycmVudC1idWZmZXIgaWZdIDIgW2ludGVybiBvcmctZWxlbWVudC0tcHJvcGVydHkgbGV0KiBv cmctLXByb3BlcnR5LWxvY2FsLXZhbHVlcyBsZXQqIGNvbmQgb3JnLWVudHJ5LWdldCBsZXQqIGNh dGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0YzkzZjljODQ5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBz ZXRxIGlmXSAxIFtpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGVx IG9yIGFuZCBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZV0gMiBbbGV0KiBvcmctZWxlbWVudC1lbmQg bGV0IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1j dXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gc2V0cSBwcm9nbiBpZiBw cm9nbiBvcmctZWxlbWVudC1iZWdpbl0gMSBbb3Igc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVm ZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBpZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQg b3JnLWVsZW1lbnQtbGluZWFnZSBzZXRxIG9yZy0tcHJvcGVydHktbG9jYWwtdmFsdWVzIGxldCpd IDEgW3NldC1idWZmZXIgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtYWN0 aXZlLXAgaWYgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNp b24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IGxldCBvciBvcmctYXQtcGxhbm5pbmctcCBv ciBpZl0gMSBbaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9n biBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0 LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxldF0gMSBbb3JnLXVuaXF1aWZ5IHNldHEgc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxldCogb3Jn LWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBjb25kIGxldCBjYXRjaCB3aGlsZSB3 aGlsZSBsZXQqXSAyIFtsZXQgY29uZCBsZXQgb3JnLXRpbWUtc3RhbXAtZm9ybWF0IGZvcm1hdC10 aW1lLXN0cmluZyBzdWJzdHJpbmcgcmVnZXhwLXF1b3RlIGNvbmNhdCBsZXQqIG9yZy1hZ2VuZGEt Z2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZV0gMSBbY29uZCBsZXQq IHdoaWxlIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmlu ZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1i dWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJvZ25dIDIgW2lmIGxldCBj b25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVm ZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxl dCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uXSAzIFtpZiBs ZXQqIGFuZCBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZp bmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZl0gMiBb bGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQg Y29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMyBbc2V0cSBwcm9nMSBjYXItc2FmZSBzZXRxIHdoaWxl IHdoaWxlIGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBj YWxsLWludGVyYWN0aXZlbHkgY29uZCBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5XSAxIFtsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZiBsZXQqIG9yZy1hZ2VuZGEt Z2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXRdIDUgW2lmIGNhdGNoIHByb2duIHNl dHEgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIGxldF0gMSBbbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJw cmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdl bmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBw cm9nbiBsZXRdIDIgW2lmIGxldCogaWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiA9IG9yIGlmIGlm IGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDEg W29yIGNvbmQgbGV0KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1l bnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24t Y2FzZV0gMSBbc2V0cSBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVu dC1idWZmZXIgaWYgbGV0KiBvcmctYWdlbmRhLWdldC1kYXktZW50cmllcyBhcHBseSBzZXRxIGNv bmQgbGV0IGNhdGNoIHdoaWxlIHdoaWxlIGxldCogY2F0Y2hdIDMgW2lmIGxldCBjb25kIGxldCog YW5kIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMtZW5kIGVxIGlmIHdoaWxlIGNhdGNoIHByb2du IHNldHEgcHJvZ24gaWYgcHJvZ25dIDEgW2VxIGlmIGxldCogaWYgbGV0KiBvcmctZWxlbWVudC1l bmQgbGV0IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2 ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNh c2VdIDEgW2FuZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0YzkzZjljODQ5ZDE2 ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2duIGlmIHByb2duIGlmXSAxIFtp ZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWVuZCA8PSBhbmQgd2hpbGUgbGV0 IGNvbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1i dWZmZXJdIDEgW29yZy1nZXQtd2RheXMgY29uZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJk YSAweGQ0YzkzZjljODQ5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duIGlmIHByb2du IGlmIHByb2duXSAyIFs8IGFuZCBvciBpZiBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJv Z24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWZdIDIgW21lbXEgaWYgc2F2ZS1jdXJyZW50LWJ1 ZmZlciBzZXRxIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWZdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xh dXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3Jtc10gMyBbY29uZCBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1t YXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldF0gMiBbbGlzdCBv ciBjZHIgY2FyIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQt c2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCpdIDEgW2lmIGxl dCBjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMtZW5kIGVxIGlmIGNhdGNo IHByb2duIHNldHEgcHJvZ24gaWYgcHJvZ24gaWZdIDEgWz0gYW5kIGlmIGxldCogc2F2ZS1jdXJy ZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQt LXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHFdIDEgW2xldCogb3JnLWVsZW1lbnQtY2Fj aGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdo aWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtY3VycmVudC1idWZmZXJdIDUgW2xldCogYW5kIGxldCogaWYgcHJvZ24gaWYgaWYgaWYgd2hp bGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZl0g NiBbY2NvbnYtLWFuYWx5emUtZnVuY3Rpb24gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNj b252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVudC1jYWNoZS1t YXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3 aGlsZSBsZXQgbGV0Kl0gMiBbbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxl dCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUg bGV0IGxldCogcHJvZ24gbGV0XSAzIFtzZXRxIHByb2duIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1 ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNl LXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHFdIDEgW3NldHEgbGV0IGlmIGxldCogcHJvZ24gdW53 aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3Jn LWFnZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmRdIDEgW2VxIGNvbmQgbGV0 KiBhbmQgbGV0KiBvcmctZWxlbWVudC1lbmQgb3IgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBz YXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJz ZS10byBzZXRxIHByb2duXSAxIFtvciBhbmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVu dC0tY2FjaGUtYWN0aXZlLXAgYW5kIGlmIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBvcmctZWxlbWVu dC1saW5lYWdlIHNldHEgb3JnLS1wcm9wZXJ0eS1sb2NhbC12YWx1ZXNdIDEgW21hY3JvZXhwYW5k LWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQt Y2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0 IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAzIFtjY29udi1tYWtl LWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbGlzdCBsZXQgK29yZy0tb3B0aW1pemUtYmFj a2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZm ZXIgaWYgbGV0KiBvcmctYWdlbmRhLWdldC1kYXktZW50cmllcyBhcHBseSBzZXRxIGNvbmQgbGV0 IGNhdGNoIHdoaWxlXSA1IFs+IG9yIGlmIGlmIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRh IDB4ZDRjOTNmOWM4NDlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ24gaWYgcHJvZ25d IDEgW29yZy1lbGVtZW50LXBhcmVudCBzZXRxIHdoaWxlIHByb2duIGlmIHByb2duIG9yZy1lbGVt ZW50LWJlZ2luIG9yIG1heCBzZXRxIGlmIGlmIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldF0g NCBbYW5kIG9yIGlmIGlmIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDRjOTNmOWM4 NDlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ24gaWYgcHJvZ25dIDEgW2lmIGxldCBj YXRjaCB3aGlsZSB3aGlsZSBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDIgW2FuZCBsZXQqIG9yZy1lbGVt ZW50LWVuZCA8PSBhbmQgd2hpbGUgbGV0IGNvbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRv IGNvbmRpdGlvbi1jYXNlIGlmXSAzIFtvcmctZWxlbWVudC1jb250ZW50cy1lbmQgZXEgaWYgd2hp bGUgY2F0Y2ggcHJvZ24gc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQq XSAxIFthbmQgaWYgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1 cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IG9yZy1lbGVtZW50LWxpbmVhZ2Ugc2V0 cSBvcmctLXByb3BlcnR5LWxvY2FsLXZhbHVlcyBsZXQqIGNvbmQgb3JnLWVudHJ5LWdldCBsZXQq XSAxIFtsZXQqIGFuZCBsZXQqIGFuZCBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVs ZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRp b24tY2FzZV0gMyBbcHJvZ24gc2V0cSB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFw IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHFdIDEgW2xldCogYW5kIGxldCogYW5k IGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQg bGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIg Y2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHFdIDMgW29yIGxldCBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxl bWVudC0tcGFyc2UtdG8gc2V0cSBwcm9nbiBpZiBwcm9nbiBvcmctZWxlbWVudC1iZWdpbiBvciBt YXggc2V0cV0gMSBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWNvbnRlbnRzLWJlZ2luIGdv dG8tY2hhciBwcm9nbiBpZiAiIzxsYW1iZGEgMHhkNGM5M2Y5Yzg0OWQxNmU+IiBmdW5jYWxsIGNv bnMgc2V0cSBpZiBwcm9nbiBpZiBwcm9nbl0gMSBbb3JnLWVsZW1lbnQtLXByb3BlcnR5IG9yZy1l bGVtZW50LXByb3BlcnR5LWluaGVyaXRlZCBpZiBvcmctaW4tY29tbWVudGVkLWhlYWRpbmctcCBh bmQgb3IgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IG9yZy1hZ2VuZGEtc2tpcCBjYXRjaCBw cm9nbiBpZiAiIzxsYW1iZGEgMHhkNGM5M2Y5Yzg0OWQxNmU+IiBmdW5jYWxsXSAyIFthbmQgb3Ig YW5kIG9yIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBvcmctYWdlbmRhLXNraXAgY2F0Y2gg cHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDRjOTNmOWM4NDlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHFd IDIgW2lmIG9yZy1lbGVtZW50LS1jYWNoZS1zeW5jIGlmIGlmIHByb2duIGlmIGxldCBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVu dC1hdC1wb2ludCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMiBbd2hpbGUg d2hpbGUgbGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5IGNh bGwtaW50ZXJhY3RpdmVseSBjb25kIGxldCogY2F0Y2ggb3JnLWFnZW5kYSBmdW5jYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsXSAxIFtwcm9nbiBhbmQgaWYgd2hp bGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBw cm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVk dWxlZF0gMSBbZW5jb2RlLXRpbWUgb3JnLXRpbWUtc3RyaW5nLXRvLXRpbWUgY29uZGl0aW9uLWNh c2UgdGltZS10by1kYXlzIGNvbmQgb3JnLXRpbWUtc3RyaW5nLXRvLWFic29sdXRlIGFwcGx5IGNv bmRpdGlvbi1jYXNlIG9yZy1hZ2VuZGEtLXRpbWVzdGFtcC10by1hYnNvbHV0ZSBjb25kIGxldCog Y2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDRjOTNmOWM4NDlkMTZlPiIgZnVuY2FsbF0gNSBb b3JnLWVsZW1lbnQtcHJvcGVydHktaW5oZXJpdGVkIGlmIG9yZy1pbi1jb21tZW50ZWQtaGVhZGlu Zy1wIGFuZCBvciBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgb3JnLWFnZW5kYS1za2lwIGNh dGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0YzkzZjljODQ5ZDE2ZT4iIGZ1bmNhbGwgY29uc10g MSBbc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBvcmctYWdlbmRhLWZpeC1kaXNwbGF5ZWQtdGFncyBz ZXRxIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBsZXQqIG9yZy1hZ2VuZGEtZm9ybWF0LWl0ZW0g bGV0KiBzYXZlLWV4Y3Vyc2lvbiBsZXQqIGNhdGNoXSAxIFtjYXRjaCBwcm9nbiBpZiAiIzxsYW1i ZGEgMHhkNGM5M2Y5Yzg0OWQxNmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiBwcm9n biBpZiBwcm9nbiBpZiBpZiBpZl0gNiBbc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0t Y2FjaGUtYWN0aXZlLXAgaWYgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1t YXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUg bGV0XSAxIFtjb25jYXQgc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBsZXQgaWYgbGV0IG9yZy1hZ2Vu ZGEtaGlnaGxpZ2h0LXRvZG8gbWFwY2FyIHNldHEgcHJvZ24gbGV0IG9yZy1hZ2VuZGEtZmluYWxp emUtZW50cmllcyBpbnNlcnRdIDEgW2xldCogYW5kIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBh cnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1l eGN1cnNpb24gc2F2ZS1leGN1cnNpb25dIDEgW3NldHEgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYg bGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBs ZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcF0gMiBbaWYgb3IgaWYgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmXSA3IFthcHBs eSBvcmctZ2V0LWFnZW5kYS1maWxlLWJ1ZmZlciBpZiBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRheS1l bnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXQgY2F0Y2ggd2hpbGUgd2hpbGUgbGV0KiBjYXRjaCBv cmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2ZWx5XSAyIFttYWNyb2V4cGFuZC1hbGwg Y2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVt ZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zXSAxIFtvciBh bmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtYWN0aXZlLXAgaWYgcHJv Z24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGlu ZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0XSAyIFtwcm9nbiBwcm9nbiBzZXRxIHByb2du IGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJv Z24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXBdIDEgW21hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRl ZC1jbG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEt Z2V0LXNjaGVkdWxlZF0gOCBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVz ZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1 bmN0aW9uIG1hcGNhciBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxl dCBjb25kIGxldF0gMSBbbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1lbmQgPD0gYW5kIHdoaWxl IGxldCBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZV0gMSBb bGV0IGNhdGNoIHNhdmUtZXhjdXJzaW9uIG9yZy1hdC1kYXRlLXJhbmdlLXAgb3IgaWYgcHJvZ24g dW53aW5kLXByb3RlY3QgbGV0IGNhdGNoIHdoaWxlIGxldCogb3JnLWFnZW5kYS1nZXQtdGltZXN0 YW1wcyBjb25zIHNldHEgbGV0XSAxIFtjb25kIGxldCogY29uZCBzZXRxIGxldCB3aGlsZSBzYXZl LWV4Y3Vyc2lvbiBsZXQqIGNvbmQgc2V0cSBsZXQgb3JnLWVsZW1lbnQtLW9iamVjdC1sZXggbGV0 IHdoaWxlIGNhdGNoIGxldF0gMSBbY2RyIGNhciBpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9y Zy1lbGVtZW50LWJlZ2luIDwgYW5kIGlmIHByb2duIGlmIGlmIGlmXSAxIFtjZHIgY2FyIGxldCog b3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMg c2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0XSAyIFt0aW1lLWRhdGUt LWRheS1pbi15ZWFyIHRpbWUtdG8tZGF5cyBjb25kIG9yZy10aW1lLXN0cmluZy10by1hYnNvbHV0 ZSBhcHBseSBjb25kaXRpb24tY2FzZSBvcmctYWdlbmRhLS10aW1lc3RhbXAtdG8tYWJzb2x1dGUg Y29uZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAtMHgyNjRkZWRlNmYwYzNhYjU+IiBm dW5jYWxsIGNvbnMgc2V0cV0gMSBbb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1wIGlmIHByb2du IGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVk IGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ25dIDIgW3NldHEgcHJv Z24gY29uZCBsZXQqIHdoaWxlIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVu dC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvXSAyIFtvciBzZXQt YnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1wIGlm IHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVh ZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldF0gMSBbc2V0cSBjb25kIGxldCBjYXRj aCB3aGlsZSB3aGlsZSBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVyYWN0 aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhIGZ1bmNh bGwtaW50ZXJhY3RpdmVseV0gMyBbZ290by1jaGFyIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdo aWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYg cHJvZ25dIDEgW2lmIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBwcm9nbiBpZiBwcm9nbiBp ZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqXSAxIFthYmJyZXZpYXRlLWZpbGUtbmFtZSBm b3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNv bmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uXSAxIFs8IGFu ZCBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1l eGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duXSAxIFtsZXQqIGFuZCBsZXQqIGxldCBsZXQqIHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBv cmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cSBsZXQgc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMiBbb3IgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24g bGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWRd IDEgW2lmIG9yZy1jbG9zZXN0LWRhdGUgY29uZCBvcmctdGltZS1zdHJpbmctdG8tYWJzb2x1dGUg YXBwbHkgY29uZGl0aW9uLWNhc2Ugb3JnLWFnZW5kYS0tdGltZXN0YW1wLXRvLWFic29sdXRlIGxl dCBjb25kIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2ZmI4ZTlkMTZlPiIg ZnVuY2FsbCBjb25zXSAyIFtvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVs ZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0XSAxIFt1bndpbmQtcHJvdGVjdCBs ZXQgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMiBbb3IgaWYgcHJvZ24gdW53aW5kLXByb3Rl Y3QgbGV0IHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCpdIDEg W2xpc3Qgb3IgY2RyIGNhciBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2Vu ZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbl0g MyBbaWYgb3JnLWluLWFyY2hpdmVkLWhlYWRpbmctcCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQg YW5kIG9yIGFuZCBvciBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgb3JnLWFnZW5kYS1za2lw IGNhdGNoIHByb2duXSAzIFtsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWNvbnRl bnRzLWVuZCBlcSBpZiB3aGlsZSBjYXRjaCBwcm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlmXSAx IFtzZXRxIHdoaWxlIGNhdGNoIHByb2duIHNldHEgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hp bGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSA0IFtjY29udi0tYW5h bHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRl cnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVk dWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqXSAyIFtjYXItc2FmZSBz ZXRxIHdoaWxlIHdoaWxlIGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50ZXJh Y3RpdmVseSBjYWxsLWludGVyYWN0aXZlbHkgY29uZCBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEgZnVu Y2FsbC1pbnRlcmFjdGl2ZWx5IGNvbW1hbmQtZXhlY3V0ZSBuaWxdIDEgW3NhdmUtY3VycmVudC1i dWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEg bGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlm IG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0 XSAyIFttZW1xIGFuZCBwcm9nbiBvciBwcm9nbiBhcmVmIHByb2duIHByb2duIG9yZy1lbGVtZW50 LS1oZWFkbGluZS1jYWNoZS1yb290IGlmIHNhdmUtY3VycmVudC1idWZmZXIgbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbl0gOSBbdGltZS10by1kYXlzIG9yZy10 b2RheSBlcSBvcmctYWdlbmRhLXRvZGF5LXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMg c2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rp b25dIDMgW2xldCogaWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiA8IGFuZCBvciBpZiBpZiB3aGls ZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duXSAzIFtz YXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNo ZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxXSAyIFtjb25kIGxl dCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gZXEgb3IgYW5kIGlmIHByb2duIGlmIGlmIGlm IHdoaWxlIGlmIGxldCpdIDIgW2NvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1lbmQgPD0g YW5kIHdoaWxlIGxldCBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10b10gMSBbaWYgbGV0 IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9y Zy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHBy b2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwXSA1IFtpZiBjb25zIGxldCBj b25kIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBp ZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNj aGVkdWxlZF0gMSBbc2V0cSBpZiBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGls ZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0XSAyIFtlcSBvciBh bmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtYWN0aXZlLXAgaWYgcHJv Z24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGlu ZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGVdIDEgW2NvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxl bWVudC1jb250ZW50cy1lbmQgZXEgaWYgd2hpbGUgY2F0Y2ggcHJvZ24gc2V0cSBwcm9nbiBpZiBw cm9nbiBpZiBpZl0gMSBbdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZv cm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtYmxvY2tzIGNvbnMgc2V0cSBsZXQgY29uZCBs ZXQgd2hpbGUgbGV0IGxldCogcHJvZ25dIDEgW29yIGlmIGlmIHByb2duIHVud2luZC1wcm90ZWN0 IGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHBy b2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCpdIDEgW2lmIG9yIHNldHEgaWYgcHJv Z24gc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJp Y3Rpb25dIDEgW2xldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxldCogb3JnLWFn ZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cV0gMiBbaWYgbGV0KiBpZiBsZXQqIG9yZy1l bGVtZW50LWJlZ2luIGVxIG9yIGFuZCBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqXSAx IFtzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGlmIGxldCogb3JnLWFnZW5kYS1n ZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBjb25kIGxldCBjYXRjaCB3aGlsZSB3aGlsZSBsZXQq IGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVyYWN0aXZlbHldIDMgW2lmIGxldCBj b25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtZW5kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3Jn LWVsZW1lbnQtLXBhcnNlLXRvXSAxIFtpZiBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQq IG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lc10gMSBb b3JnLWVsZW1lbnQtLXByb3BlcnR5IG9yZy1lbGVtZW50LXBhcmVudCBzZXRxIHdoaWxlIGNhdGNo IHByb2duIHNldHEgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0Kl0gMiBbaWYg bGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWNvbnRlbnRzLWVuZCBlcSBpZiB3aGlsZSBjYXRjaCBw cm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlmIGlmXSAxIFtwcm9nbiBjb25kIGxldCogd2hpbGUg aWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBj YXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gc2V0cV0gMSBbb3IgcHJvZ24gYXJlZiBwcm9nbiBw cm9nbiBvcmctZWxlbWVudC0tY2FjaGUtcm9vdCBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3Jn LWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10b10gMSBb c2F2ZS1jdXJyZW50LWJ1ZmZlciBub3QgYW5kIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdo aWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDIgW3NldHEg bGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1l IGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtYmxvY2tzIGNvbnMgc2V0cSBsZXQgY29u ZF0gMSBbd2hpbGUgcHJvZ24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4IHNldHEg aWYgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlmXSAxIFtjYXRjaCBwcm9n biBzZXRxIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ25dIDEgW3doaWxlIGlmIGxldCogc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVu dC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldF0g MiBbbGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIHdoaWxlIGlmIGxldCogc2F2ZS1jdXJyZW50 LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9u IHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBh cnNlLXRvIGNvbmRpdGlvbi1jYXNlXSAyIFtpZiBwcm9nbiBpZiBsZXQgc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9p bnQgb3JnLWVsZW1lbnQtbGluZWFnZSBzZXRxIG9yZy0tcHJvcGVydHktbG9jYWwtdmFsdWVzIGxl dCogY29uZCBvcmctZW50cnktZ2V0XSAxIFtjZHIgY2FyIGlmIGxldCBjb25kIGxldCogYW5kIGxl dCogb3JnLWVsZW1lbnQtYmVnaW4gPCBhbmQgb3IgaWYgaWYgd2hpbGUgaWZdIDEgW29yIGlmIHBy b2duIHVud2luZC1wcm90ZWN0IGxldCBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW2xldCBjb25kIGxldCogYW5k IGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1i dWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEg bGV0IHNhdmUtcmVzdHJpY3Rpb25dIDEgW2FuZCBpZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZl LWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgc2F2 ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0Kl0gMyBb b3IgY29uZCBsZXQgb3JnLWdldC13ZGF5cyBjb25kIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFt YmRhIDB4ZDQ1NjI2ZmI4ZTlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ24gaWZdIDEg W3NldHEgcHJvZzEgY2FyLXNhZmUgaWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYg d2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uXSA0IFthbmQgbm90IGFuZCBpZiBsZXQgbGV0 IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZv cm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkXSAxIFtvcmctZWxlbWVudC1i ZWdpbiA8IGFuZCBvciBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1l eGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCpdIDIgW21heCBzZXRxIGlmIGlmIGlmIHBy b2duIHVud2luZC1wcm90ZWN0IGxldCBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZl0g MSBbY29uY2F0IGludGVybiBvcmctZWxlbWVudC0tcHJvcGVydHkgbGV0KiBvcmctLXByb3BlcnR5 LWxvY2FsLXZhbHVlcyBsZXQqIGNvbmQgb3JnLWVudHJ5LWdldCBsZXQqIGNhdGNoIHByb2duIGlm ICIjPGxhbWJkYSAweGQ0NTYyNmZiOGU5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxXSAzIFtvciBh bmQgY29uZCBvcmctZW50cnktZ2V0IGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1 NjI2ZmI4ZTlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ24gaWYgcHJvZ25dIDEgW21h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnBy ZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFt cHMgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZV0gMSBbbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rp b24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNv bnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGVdIDEgW2xldCogaWYgbGV0KiBvcmctZWxlbWVudC1l bmQgb3IgbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHByb2du XSAxIFtvcmctZ2V0LXRpbWUtb2YtZGF5IGFuZCBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxl dCBsZXQqIG9yZy1hZ2VuZGEtZm9ybWF0LWl0ZW0gbGV0KiBzYXZlLWV4Y3Vyc2lvbiBsZXQqIGNh dGNoIHByb2duIGlmICIjPGxhbWJkYSAtMHgxZmVhYzI0ZDZiOGQyYTc0PiIgZnVuY2FsbF0gMiBb bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5k LWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGxldCog b3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXRdIDEgW2xldCBh YmJyZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWJsb2Nr cyBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldF0gMSBbaWYg bGV0KiBvcmctZWxlbWVudC1iZWdpbiA9IGFuZCBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIg b3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10b10g MiBbb3JnLWVsZW1lbnQtLXByb3BlcnR5IGFuZCBpZiAiIzxsYW1iZGEgMHhkNDU2MjY5ODhlOWQx NmU+IiBmdW5jYWxsIGNvbnMgc2V0cSBpZiBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZiBp Zl0gNCBbbGV0KiBhbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50 LS1jYWNoZS1rZXktbGVzcy1wIGFuZCBvciBhbmQgaWYgc2V0cSBpZiBpZiB3aGlsZSBpZiBsZXQq XSAxIFtsZXQqIGlmIGxldCBpZiBvcmctY2xvc2VzdC1kYXRlIGNvbmQgb3JnLXRpbWUtc3RyaW5n LXRvLWFic29sdXRlIGFwcGx5IGNvbmRpdGlvbi1jYXNlIG9yZy1hZ2VuZGEtLXRpbWVzdGFtcC10 by1hYnNvbHV0ZSBsZXQgY29uZCBsZXQqIGNhdGNoIHByb2duIGlmXSAxIFtjb25kIGxldCogYW5k IGxldCogb3JnLWVsZW1lbnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9y Zy1lbGVtZW50LS1jYWNoZS1rZXktbGVzcy1wIG5vdCBvciBhbmQgaWYgd2hpbGUgaWYgbGV0Kl0g MSBbc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZiBsZXQgb3JnLWFnZW5kYS1uZXctbWFya2VyIG9yZy1h ZGQtcHJvcHMgbGV0KiBzYXZlLWV4Y3Vyc2lvbiBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJk YSAweDUwNTlmZTU5OTQ0MmMwND4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmXSAxIFsiIzxsYW1iZGEg LTB4MTNiOTcyMDlhNzBiOWZkNj4iIG9yZy1lbGVtZW50LWxpbmVhZ2UtbWFwIGxldCBvcmctZW50 cnktZ2V0LXdpdGgtaW5oZXJpdGFuY2Ugb3Igb3JnLWdldC1jYXRlZ29yeSBsZXQqIHNhdmUtZXhj dXJzaW9uIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4NTA1OWZlNTk5NDQyYzA0PiIg ZnVuY2FsbCBjb25zIHNldHFdIDEgW3NldHEgcHJvZ24gaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVt ZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZF0gMSBbaWYgc2F2ZS1j dXJyZW50LWJ1ZmZlciBwcm9nbiBpZiBvcmctZWxlbWVudC0tY2FjaGUtc3luYyBpZiBpZiBwcm9n biBpZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBs ZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnRdIDEgW2xldCBjb25kIGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50 LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHByb2duIG9yZy1lbGVtZW50LWJlZ2luIG9yIG1heCBz ZXRxXSAxIFt3aGlsZSBsZXQgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBv cmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCog cHJvZ24gbGV0XSAxIFthbmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUt YWN0aXZlLXAgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1 cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHBy b2duIG9yZy1lbGVtZW50LWJlZ2luIG9yXSAxIFtpZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2luID0g b3IgaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IGxldCBwcm9nbiBpZl0gMSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVz ZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhw YW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1h a2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlv biBzYXZlLWV4Y3Vyc2lvbl0gMyBbY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWZ2IGNjb252LW1h a2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsaXN0IGxldCArb3JnLS1vcHRpbWl6ZS1i YWNrZ3JvdW5kZWQtYWdlbmRhLWJ1ZmZlcnMtYSBhcHBseSBvcmctZ2V0LWFnZW5kYS1maWxlLWJ1 ZmZlciBpZiBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBs ZXRdIDIgW21hY3JvZXhwLW1hY3JvZXhwYW5kIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBh bmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbl0gMiBbY29uZCBp ZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxl dCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNh dGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldF0gMSBb bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsXSA0IFtwcm9nbiBz ZXRxIHByb2duIGNvbmQgbGV0KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3Jn LWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoXSAxIFtvcmctcGFyc2UtdGltZS1zdHJpbmcg ZW5jb2RlLXRpbWUgb3JnLXRpbWUtc3RyaW5nLXRvLXRpbWUgdGltZS10by1kYXlzIGlmIG9yZy1j bG9zZXN0LWRhdGUgY29uZCBvcmctdGltZS1zdHJpbmctdG8tYWJzb2x1dGUgYXBwbHkgY29uZGl0 aW9uLWNhc2Ugb3JnLWFnZW5kYS0tdGltZXN0YW1wLXRvLWFic29sdXRlIGxldCBjb25kIGxldCog Y2F0Y2ggcHJvZ25dIDIgW29yZy1lbGVtZW50LWJlZ2luIGxldCogd2hpbGUgaWYgbGV0KiBzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxl bWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWZdIDIgW2VuY29kZS10aW1lIG9yZy10aW1l LXN0cmluZy10by10aW1lIHRpbWUtdG8tZGF5cyBpZiBvcmctY2xvc2VzdC1kYXRlIGNvbmQgb3Jn LXRpbWUtc3RyaW5nLXRvLWFic29sdXRlIGFwcGx5IGNvbmRpdGlvbi1jYXNlIG9yZy1hZ2VuZGEt LXRpbWVzdGFtcC10by1hYnNvbHV0ZSBsZXQgY29uZCBsZXQqIGNhdGNoIHByb2duIGlmXSAxIFth bmQgb3IgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqXSAxIFtj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6ZS1mb3JtIGNjb252LWFuYWx5emUtZm9ybSBj Y29udi0tYW5hbHl6ZS1mdW5jdGlvbiBjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYt bWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gNCBbbGV0IHByb2duIGlmIHBy b2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1 bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCpdIDEgW21hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1h bGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxs LWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jtc10gMSBbaWYgcHJvZ24gb3JnLWVsZW1lbnQt YmVnaW4gb3IgbWF4IHNldHEgaWYgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2du IGlmIHByb2duIGlmXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1p bnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9y Zy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBw cm9nbiBsZXRdIDIgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBsZXQq IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24g bGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0Kl0gMSBbbGV0IG9yZy1lbGVtZW50LS1jYWNo ZS12ZXJpZnktZWxlbWVudCBhbmQgaWYgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJp Y3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmXSAyIFtjYXIgZXEgaWYgbGV0IGNvbmQg bGV0KiBhbmQgbGV0KiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqXSAxIFtjb25kIGxl dCogYW5kIGxldCogb3JnLWVsZW1lbnQtZW5kIG9yIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24g c2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFy c2UtdG8gY29uZGl0aW9uLWNhc2UgaWYgc2V0cV0gMiBbaWYgZXEgb3JnLWFnZW5kYS10b2RheS1w IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxl dCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAxIFttYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3Jv ZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDEgW2FuZCBub3QgYW5k IGlmIGxldCBsZXQgaWYgbGV0KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1m aWxlLW5hbWUgZm9ybWF0IGxpc3QgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXNdIDEgW2xl dCogb3JnLWVsZW1lbnQtY29udGVudHMtZW5kIGVxIGlmIGNhdGNoIHByb2duIHNldHEgcHJvZ24g aWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0Kl0gMSBbZXEgaWYgd2hpbGUgY2F0Y2ggcHJv Z24gc2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJp Y3Rpb25dIDIgW29yZy1lbGVtZW50LWJlZ2luIGVxIG9yIGFuZCBpZiBwcm9nbiBpZiBpZiBpZiB3 aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duXSAx IFtsZXQqIGFuZCBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hl LWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBz ZXRxXSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsXSAzIFtj Y29udi1hbmFseXplLWZvcm0gY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJl IGZ1bmN0aW9uIGxldCogbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBw cm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEt Z2V0LWRlYWRsaW5lc10gNiBbaWYgbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCog b3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBu b3QgYW5kIG9yIGlmIGlmIHdoaWxlIGlmXSAxIFtvciBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1i dWZmZXIgYW5kIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMiBbY2NvbnYtZnYgY2NvbnYtbWFrZS1pbnRlcnBy ZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxpc3QgbGV0ICtvcmctLW9wdGltaXplLWJhY2tncm91bmRl ZC1hZ2VuZGEtYnVmZmVycy1hIGFwcGx5IG9yZy1nZXQtYWdlbmRhLWZpbGUtYnVmZmVyIGlmIGxl dCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBjb25kIGxldCBjYXRjaF0g MiBbbGV0KiBvcmctLXByb3BlcnR5LWxvY2FsLXZhbHVlcyBsZXQqIGNvbmQgb3JnLWVudHJ5LWdl dCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNjk4OGU5ZDE2ZT4iIGZ1bmNh bGwgY29ucyBzZXRxIGlmIHByb2duIGlmXSAxIFtpZiBsZXQqIGlmIGxldCogbGV0IGxldCogc2F2 ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9y Zy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHByb2duIG9yZy1lbGVtZW50LWJlZ2lu XSAxIFtzZXRxIGxldCBpZiBsZXQqIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRl LWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNleHBzIGNvbnMgc2V0 cSBsZXQgY29uZF0gMiBbb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29u ZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1 cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZiBsZXQqXSAyIFtsZXQqIGFuZCBsZXQqIGFuZCBs ZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkgb3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNz LXAgbm90IG9yIGFuZCBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb25dIDIgW2xpc3Qg ZW5jb2RlLXRpbWUgZm9ybWF0LXRpbWUtc3RyaW5nIHN1YnN0cmluZyByZWdleHAtcXVvdGUgY29u Y2F0IGxldCogb3JnLWFnZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNldHEgbGV0IGNvbmQgbGV0 IHdoaWxlIGxldCBsZXQqXSA0IFtjb25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4g bGV0KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hl LWZpbmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyXSAyIFtpZiBsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMtYmVnaW4g Z290by1jaGFyIHNhdmUtZXhjdXJzaW9uIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4 ZmQ4NjUwMGNmNzVjYzAyPiIgZnVuY2FsbCBjb25zIHNldHEgaWZdIDEgW2NvbmQgb3JnLWRhdGUt dG8tZ3JlZ29yaWFuIGxldCogaWYgbGV0IGlmIG9yZy1jbG9zZXN0LWRhdGUgY29uZCBvcmctdGlt ZS1zdHJpbmctdG8tYWJzb2x1dGUgYXBwbHkgY29uZGl0aW9uLWNhc2Ugb3JnLWFnZW5kYS0tdGlt ZXN0YW1wLXRvLWFic29sdXRlIGxldCBjb25kIGxldCogY2F0Y2hdIDEgW2NhciBlcSBpZiBsZXQg Y29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIG9yIG1heCBzZXRxIGlmIGlmIGlm IHByb2duXSAxIFtzYXZlLWV4Y3Vyc2lvbiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJv Z24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4IHNldHEgaWYgaWZdIDEgW2xldCBj b25kIGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtZW5kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3Jn LWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlXSAxIFtjb25kIHNldHEgbGV0IHdoaWxl IHNhdmUtZXhjdXJzaW9uIGxldCogY29uZCBzZXRxIGxldCBvcmctZWxlbWVudC0tb2JqZWN0LWxl eCBsZXQgd2hpbGUgY2F0Y2ggbGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMSBbbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsXSAzIFtwcm9nbiBpZiBsZXQgc2F2 ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVs ZW1lbnQtYXQtcG9pbnQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24g aWYgcHJvZ24gbGV0Kl0gMSBbb3JnLWVsZW1lbnQtY29udGVudHMtYmVnaW4gcHJvZ24gaWYgb3Ig c2V0cSBpZiBwcm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmXSAxIFtl cSBpZiBsZXQqIGlmIGxldCogb3JnLWVsZW1lbnQtZW5kIDw9IGFuZCB3aGlsZSBsZXQgY29uZCBs ZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBj YXRjaF0gMSBbb3JnLXRpbWUtc3RhbXAtZm9ybWF0IGZvcm1hdC10aW1lLXN0cmluZyBzdWJzdHJp bmcgcmVnZXhwLXF1b3RlIGNvbmNhdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29u cyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbl0gMSBbc2V0cSBjb25kIHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBpZiBsZXQq IG9yZy1hZ2VuZGEtZ2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXQgY2F0Y2ggd2hp bGUgd2hpbGUgbGV0Kl0gMSBbdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1l IGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtc2V4cHMgY29ucyBzZXRxIGxldCBjb25k IGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbl0gMSBbbWFjcm9leHAtbWFjcm9leHBhbmQgbWFjcm9l eHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwYW5kLWFsbF0gNCBbPCBvciBpZiBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgbGV0 KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQq IG9yZy1lbGVtZW50LWNhY2hlLW1hcF0gMSBbdGltZS1kYXRlLS1kYXktaW4teWVhciB0aW1lLXRv LWRheXMgb3JnLXRvZGF5IGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0IGNv bmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uXSAxIFtzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9u IGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBvcmctZWxlbWVudC1saW5lYWdlIHNldHEgb3Jn LS1wcm9wZXJ0eS1sb2NhbC12YWx1ZXMgbGV0KiBjb25kIG9yZy1lbnRyeS1nZXQgbGV0KiBjYXRj aCBwcm9nbiBpZl0gMiBbYW5kIGxldCogYW5kIGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBv cmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhj dXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNl dHEgcHJvZ25dIDEgW29yZy1lbGVtZW50LWJlZ2luIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hl LWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBub3QgYW5kIG9yIGlmIGlmIHdoaWxl IGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDEgW2NvbmQgbGV0 IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJy ZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2UgaWYg c2V0cSBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMyBbc2V0cSBzYXZlLWN1 cnJlbnQtYnVmZmVyIGlmIGxldCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0 cSBjb25kIGxldCBjYXRjaCB3aGlsZSB3aGlsZSBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBm dW5jYWxsLWludGVyYWN0aXZlbHldIDEgW21hY3JvZXhwLW1hY3JvZXhwYW5kIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zXSAxIFthbmQgaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2OTg3ZTlkMTZlPiIg ZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hp bGVdIDIgW2xldCBjb25kIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2OTg3 ZTlkMTZlPiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ25dIDEg W2NkciBjYXIgaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1lbmQgPD0gYW5k IHdoaWxlIGxldCBjb25kIGxldCogc2F2ZS1yZXN0cmljdGlvbl0gMSBbbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5j dGlvbiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMg c2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCogcHJvZ24gbGV0XSAxIFttZW1xIGNvbmQg d2hpbGUgbGV0IHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5k YS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0XSAxIFtjYXIg ZXEgaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBlcSBvciBhbmQg aWYgcHJvZ24gaWYgaWZdIDEgW21hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBj Y29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGxldCogb3JnLWFn ZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCog cHJvZ25dIDIgW3Byb2duIGFyZWYgcHJvZ24gcHJvZ24gb3JnLWVsZW1lbnQtLWNhY2hlLXJvb3Qg bGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQq IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRj aCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9uLWNhc2VdIDIgW2VxIG9yZy1hZ2VuZGEt dG9kYXktcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxldCB3 aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBz YXZlLWN1cnJlbnQtYnVmZmVyXSAxIFtvciBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIg aWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJl c3RyaWN0aW9uXSAxIFtsZXQqIG9yZy1lbGVtZW50LWNvbnRlbnRzLWJlZ2luIGdvdG8tY2hhciBw cm9nbiBpZiAiIzxsYW1iZGEgLTB4ZDhkOWE0ZGI1NzExZDc5PiIgZnVuY2FsbCBjb25zIHNldHEg aWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ24gaWZdIDEgW3Byb2duIGlmIGlmIGxldCogY2F0Y2gg cHJvZ24gaWYgIiM8bGFtYmRhIC0weDI2NGRlMWNjNDBjM2FiNT4iIGZ1bmNhbGwgY29ucyBzZXRx IGlmIHByb2duIGlmIHByb2duIGlmXSAxIFtjY29udi1hbmFseXplLWZvcm0gY2NvbnYtYW5hbHl6 ZS1mb3JtIGNjb252LS1hbmFseXplLWZ1bmN0aW9uIGNjb252LWFuYWx5emUtZm9ybSBjY29udi1m diBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGxldCogb3Jn LWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGVdIDEgW2Nv bmNhdCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxldCBjb25kIGxl dCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBzYXZlLWN1cnJlbnQtYnVmZmVyXSAxIFttZW1xIGlmIG5vdCBhbmQgd2hpbGUgcHJvZ24gaWYg cHJvZ24gb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4IHNldHEgaWYgaWYgaWYgcHJvZ25dIDEgW2xl dCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3Mt cCBub3QgYW5kIG9yIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBsZXQgcHJvZ25dIDMgW3NldHEgaWYgbGV0IGxldCBpZiBsZXQqIHByb2duIHVud2lu ZC1wcm90ZWN0IGxldCBhYmJyZXZpYXRlLWZpbGUtbmFtZSBmb3JtYXQgbGlzdCBsZXQqIG9yZy1h Z2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxXSAyIFtsZXQgb3JnLXRpbWUtc3RhbXAtZm9y bWF0IGZvcm1hdC10aW1lLXN0cmluZyBzdWJzdHJpbmcgcmVnZXhwLXF1b3RlIGNvbmNhdCBsZXQq IG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBs ZXQgbGV0Kl0gMSBbcHJvZ24gcHJvZ24gb3JnLWVsZW1lbnQtLWhlYWRsaW5lLWNhY2hlLXJvb3Qg aWYgc2F2ZS1jdXJyZW50LWJ1ZmZlciBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3Jn LWFnZW5kYS1nZXQtZGVhZGxpbmVzXSAxIFthbmQgaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYg d2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBp Zl0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t ZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zXSA0IFtt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFs bC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXNdIDEgW3NhdmUtZXhj dXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBs ZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldF0gMSBbb3IgYW5kIHNhdmUtY3Vy cmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1wIGlmIHByb2duIGlmIHByb2du IGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVz IHNldHEgbGV0IGNvbmQgbGV0XSAyIFtvciBhbmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxl bWVudC0tY2FjaGUtYWN0aXZlLXAgaWYgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBvaW50IG9yZy1lbGVtZW50 LWxpbmVhZ2Ugc2V0cSBvcmctLXByb3BlcnR5LWxvY2FsLXZhbHVlcyBsZXQqXSAxIFtmdW5jYWxs IGxldCBvcmctdGltZS1zdGFtcC1mb3JtYXQgZm9ybWF0LXRpbWUtc3RyaW5nIHN1YnN0cmluZyBy ZWdleHAtcXVvdGUgY29uY2F0IGxldCogb3JnLWFnZW5kYS1nZXQtdGltZXN0YW1wcyBjb25zIHNl dHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldF0gMSBbYW5kIHNhdmUtY3VycmVudC1idWZmZXIgb3Jn LWVsZW1lbnQtLWNhY2hlLWFjdGl2ZS1wIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUt bWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQg d2hpbGUgbGV0XSAxIFtvciBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIGNvbmRpdGlv bi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1l eGN1cnNpb24gbGV0XSAxIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0t YWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNy b2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsXSAzIFthbmQgc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtYWN0 aXZlLXAgYW5kIGlmIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhj dXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBvcmctZWxlbWVudC1saW5lYWdlIHNl dHEgb3JnLS1wcm9wZXJ0eS1sb2NhbC12YWx1ZXMgbGV0Kl0gMSBbaWYgc2F2ZS1jdXJyZW50LWJ1 ZmZlciBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHBy b2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1 bGVkIGNvbnMgc2V0cSBsZXRdIDEgW2xldCBjYXRjaCB3aGlsZSB3aGlsZSBsZXQqIGNhdGNoIG9y Zy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5IGNv bmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhIGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4 ZWN1dGUgbmlsXSAzIFtvcmctZWxlbWVudC0tY2FjaGUtYWN0aXZlLXAgYW5kIGxldCogc2F2ZS1y ZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1l bGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMiBbb3IgY2RyIGNhciBsZXQq IG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRx IGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXRdIDIgW2VxIGlmIGxldCBjb25k IGxldCogYW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPSBhbmQgaWYgbGV0KiBzYXZlLWN1cnJl bnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqXSAxIFtjb25kIGxldCog YW5kIGxldCogb3JnLWVsZW1lbnQtYmVnaW4gPiBub3Qgb3IgYW5kIGlmIHdoaWxlIGlmIGxldCog c2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXRdIDEgW3RpbWUtc2luY2UgdGltZS10 by1kYXlzIG9yZy10b2RheSBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBj b25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbl0gMSBbb3JnLWluLXNyYy1ibG9jay1wIG9yIGlmIHByb2duIHVud2luZC1wcm90ZWN0 IGxldCBvcmctYWdlbmRhLXNraXAgY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIC0weGQ4ZDlhNGRh NDcxMWQ3OT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2duXSAyIFtpZiBsZXQgY29uZCBsZXQq IGFuZCBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHByb2du XSAxIFs8IGFuZCBvciBpZiBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJvZ24gaWYgcHJv Z24gaWYgcHJvZ24gaWYgaWYgaWZdIDIgW2VxIG9yIGFuZCBzYXZlLWN1cnJlbnQtYnVmZmVyIG9y Zy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hl LW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0 XSAxIFtwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGlmIGxldCogb3JnLWFnZW5kYS1nZXQtZGF5LWVudHJpZXMgYXBwbHkgc2V0cSBj b25kIGxldCBjYXRjaCB3aGlsZSB3aGlsZSBsZXQqXSAxIFtzdHJpbmc9IGFuZCBpZiBsZXQqIHNh dmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duIGlmIHByb2duIGxldCogb3Jn LWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVhZGxpbmVzIHNldHEgbGV0 XSAxIFtwcm9nbiBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1h Z2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQq IHByb2duXSAzIFttZW1iZXItaWdub3JlLWNhc2UgY29uZCBvcmctZW50cnktZ2V0IGxldCogY2F0 Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2OWZhZTlkMTZlPiIgZnVuY2FsbCBjb25zIHNl dHEgaWYgcHJvZ24gaWYgcHJvZ24gaWZdIDEgW29yZy10aW1lLXN0cmluZy10by10aW1lIHRpbWUt dG8tZGF5cyBpZiBvcmctY2xvc2VzdC1kYXRlIGNvbmQgb3JnLXRpbWUtc3RyaW5nLXRvLWFic29s dXRlIGFwcGx5IGNvbmRpdGlvbi1jYXNlIG9yZy1hZ2VuZGEtLXRpbWVzdGFtcC10by1hYnNvbHV0 ZSBsZXQgY29uZCBsZXQqIGNhdGNoIHByb2duIGlmICIjPGxhbWJkYSAweGQ0NTYyNjlmYWU5ZDE2 ZT4iXSAyIFtlcSBpZiBjYXRjaCBwcm9nbiBzZXRxIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdo aWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMSBbbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFs bCBjY29udi1tYWtlLWludGVycHJldGVkLWNsb3N1cmUgZnVuY3Rpb24gbWFwY2FyIGxldCogb3Jn LWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cV0gMSBbbWFjcm9leHAtLWV4cGFuZC1hbGwg bWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tYWxsLWNsYXVzZXMgbWFj cm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFs bCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwt Zm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGxdIDIgW2lmIGxldCBjb25kIGxldCogYW5kIGxldCog b3JnLWVsZW1lbnQtZW5kIG9yIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNp b24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0 aW9uLWNhc2VdIDEgW3NhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWFjdGl2 ZS1wIGlmIHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3Jn LWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGVdIDEgW21h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jt cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwt Y2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXNdIDIgW21hY3JvZXhw LS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1h Y3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9l eHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1h Y3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXNdIDEgW2lmIGxldCogaWYgbGV0 KiBvcmctZWxlbWVudC1iZWdpbiA+IG5vdCBvciBhbmQgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMSBbY2RyIHNldHEgY29uZCB3aGlsZSBsZXQg cHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hl ZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZV0gMSBbc2V0cSBpZiBsZXQgbGV0IGlm IGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1h dCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtc2V4cHMgY29ucyBzZXRxXSAxIFtwbGlzdC1tZW1i ZXIgY2RyIGNhciBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0 LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duXSAx IFtpZiBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUt cmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duXSAyIFttYWNyb2V4cC1tYWNyb2V4 cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1l eHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2Vz IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0t YWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsXSAxIFtsZXQgK29yZy0tb3B0aW1pemUtYmFj a2dyb3VuZGVkLWFnZW5kYS1idWZmZXJzLWEgYXBwbHkgb3JnLWdldC1hZ2VuZGEtZmlsZS1idWZm ZXIgaWYgbGV0KiBvcmctYWdlbmRhLWdldC1kYXktZW50cmllcyBhcHBseSBzZXRxIGNvbmQgbGV0 IGNhdGNoIHdoaWxlIHdoaWxlIGxldCogY2F0Y2hdIDEgW2xldCogbGV0KiBzYXZlLXJlc3RyaWN0 aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQt LXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0IHNhdmUtcmVzdHJpY3Rpb24gc2F2 ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlmXSAxIFtsZXQqIGxldCogc2F2ZS1yZXN0 cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0KiBvcmctZWxlbWVu dC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBs ZXRdIDEgW2NvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiA8IGFuZCBvciBpZiBp ZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJvZ24gaWYgcHJvZ25dIDEgW29yZy1lbGVtZW50 LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBv cmctZWxlbWVudC1saW5lYWdlIHNldHEgb3JnLS1wcm9wZXJ0eS1sb2NhbC12YWx1ZXMgbGV0KiBj b25kXSAxIFthbmQgbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1j YWNoZS1rZXktbGVzcy1wIGFuZCBvciBhbmQgaWYgc2V0cSBpZiBpZiB3aGlsZSBpZiBsZXQqIHNh dmUtcmVzdHJpY3Rpb25dIDEgW2RpcmVjdG9yeS1hYmJyZXYtYXBwbHkgc2V0cSBsZXQgaWYgbGV0 KiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYWJicmV2aWF0ZS1maWxlLW5hbWUgZm9ybWF0IGxp c3QgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZF0gMSBbbm90IGFu ZCBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duXSAyIFtpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQq IGFuZCBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQg YW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVm ZmVyXSAyIFtsZXQqIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0Kl0gMiBbYW5kIGxldCog bGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVm ZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxl dCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uXSAxIFs9IGFu ZCBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZpbmQgYW5k IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmXSAyIFthbmQgbGV0KiBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2gg b3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEgcHJvZ24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVn aW4gb3IgbWF4IHNldHEgaWZdIDIgW2NvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1iZWdp biBnb3RvLWNoYXIgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJl c3RyaWN0aW9uXSAxIFtjb25jYXQgc2V0cSBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFn ZW5kYS1nZXQtZGVhZGxpbmVzIHNldHFdIDEgW29yZy1nZXQtcHJpb3JpdHkgKyBpZiBvcmctYWRk LXByb3BzIGxldCogc2F2ZS1leGN1cnNpb24gbGV0KiBjYXRjaCBwcm9nbiBpZiAiIzxsYW1iZGEg LTB4ZWZhMzk1OTBkMDZiNWI0PiIgZnVuY2FsbCBjb25zIHNldHEgaWYgcHJvZ25dIDEgW2xldCog aWYgbGV0KiBvcmctZWxlbWVudC1jb250ZW50cy1lbmQgZXEgaWYgd2hpbGUgY2F0Y2ggcHJvZ24g c2V0cSBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZl0gMSBbPCBhbmQgb3IgaWYgaWYgd2hpbGUgaWYg bGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBs ZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcF0gMSBbbGV0KiBpZiBsZXQqIG9yZy1lbGVtZW50LWNv bnRlbnRzLWJlZ2luIGdvdG8tY2hhciBzYXZlLWV4Y3Vyc2lvbiBsZXQqIGNhdGNoIHByb2duIGlm ICIjPGxhbWJkYSAweGQ0NTYyNjlmYWU5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmIHByb2du XSAxIFtwcm9nMSBjYXItc2FmZSBpZiBwcm9nbiBpZiBwcm9nbiBpZiBwcm9nbiBpZiBpZiBpZiB3 aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb25dIDEgW2lmIGxldCog aWYgbGV0KiBvcmctZWxlbWVudC1iZWdpbiBsZXQqIG9yIG9yZy1lbGVtZW50LS1jYWNoZS1rZXkg b3JnLWVsZW1lbnQtLWNhY2hlLWtleS1sZXNzLXAgbm90IG9yIGFuZCBpZiB3aGlsZSBpZiBsZXQq XSAxIFtsZXQgb3JnLWVsZW1lbnQtLWNhY2hlLXZlcmlmeS1lbGVtZW50IGFuZCBpZiBsZXQgc2F2 ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgaWYgb3JnLWVs ZW1lbnQtYXQtcG9pbnQgbGV0IG9yIG9yZy1hdC1wbGFubmluZy1wIG9yIGlmXSAxIFt3aXRoLW5v LXdhcm5pbmdzIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0 IHdoaWxlIGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IHNhdmUtY3VycmVudC1idWZmZXIgaWZdIDEgW21hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAt LWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNy b2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMg bWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0 ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBjYXIgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQg Y29ucyBzZXRxXSAxIFtvciBzZXQtYnVmZmVyIHNhdmUtY3VycmVudC1idWZmZXIgc2V0cSBwcm9n biBpZiBpZiBpZiB3aGlsZSBpZiBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g bGV0IHByb2duIGlmXSAxIFtpZiBsZXQqIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vy c2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBjb25k aXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNh dmUtZXhjdXJzaW9uIGxldF0gMSBbcHJvZ24gaWYgb3Igc2V0cSBpZiBwcm9nbiBzZXRxIHByb2du IGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCpdIDEgW2Z1bmNhbGwgY29ucyBzZXRxIGlm IHByb2duIGlmIHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0 cmljdGlvbl0gMyBbbGV0KiBvcmctZWxlbWVudC1lbmQgb3IgbGV0IGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50 LS1wYXJzZS10byBjb25kaXRpb24tY2FzZSBpZiBzZXRxIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uXSAxIFthbmQgb3IgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHBy b2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxldCpdIDEgW2lmIGxldCogb3JnLWVsZW1l bnQtYmVnaW4gbGV0KiBvciBvcmctZWxlbWVudC0tY2FjaGUta2V5IG9yZy1lbGVtZW50LS1jYWNo ZS1rZXktbGVzcy1wIG5vdCBhbmQgb3IgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0 aW9uXSAxIFtpZiBsZXQgY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luIGxldCog b3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBu b3QgYW5kIG9yIGlmIGlmXSAxIFthbmQgaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBz YXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbiBsZXQqXSAx IFtzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1w YXJzZS10byBzZXRxIHByb2duIGlmIHByb2duIG9yZy1lbGVtZW50LWJlZ2luIG9yIG1heCBzZXRx IGlmIGlmIGlmIHByb2duXSAxIFtwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJvZ24gaWYgcHJv Z24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9u IGxldCBwcm9nbl0gMSBbbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tYWxsLWNsYXVzZXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsXSAxIFttYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFuZC1hbGwgY2Nv bnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIG1hcGNhciBsZXQqIG9yZy1hZ2Vu ZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0XSAxIFthbmQgbGV0KiBvcmctZWxlbWVudC1i ZWdpbiBnb3RvLWNoYXIgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIGxldF0gMSBbcHJvZ24gdW53aW5kLXByb3RlY3Qg bGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQt YmxvY2tzIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCpdIDEgW2lmIGxldCog b3JnLWVsZW1lbnQtZW5kIGxldCB3aGlsZSBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRv IHNldHEgcHJvZ24gaWYgcHJvZ25dIDEgW3NhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQt LWNhY2hlLWFjdGl2ZS1wIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCog b3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0 IGxldCpdIDEgW2lmIGlmIHByb2duIGlmIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxlbWVudC1hdC1wb2ludCBvcmctZWxlbWVu dC1saW5lYWdlIHNldHEgb3JnLS1wcm9wZXJ0eS1sb2NhbC12YWx1ZXMgbGV0KiBjb25kXSAxIFtt YWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZv cm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4 cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4 cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBt YWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9y bXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3Jtc10gMiBbbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cGFu ZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9uIGxldCogbGV0Kl0g MSBbc2V0cSBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGFiYnJl dmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFnZW5kYS1nZXQtc2NoZWR1bGVk IGNvbnMgc2V0cV0gMSBbY29uZCBsZXQqIGFuZCBsZXQqIG9yZy1lbGVtZW50LWJlZ2luID0gYW5k IGlmIGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUtZmluZCBhbmQg bGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXJd IDEgW3RpbWUtc2luY2UgdGltZS10by1kYXlzIG9yZy10b2RheSBsZXQqIG9yZy1hZ2VuZGEtZ2V0 LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxl dCBzYXZlLXJlc3RyaWN0aW9uXSAyIFtpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1h cCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQgbGV0IHdo aWxlIGxldCBsZXQqIHByb2duIGxldF0gMSBbc2V0LWJ1ZmZlciBzYXZlLWN1cnJlbnQtYnVmZmVy IG5vdCBhbmQgaWYgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJl c3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uXSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHBhbmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBtYXBj YXIgbGV0KiBvcmctYWdlbmRhLWdldC1zY2hlZHVsZWQgY29ucyBzZXRxIGxldCBjb25kIGxldCB3 aGlsZV0gMSBbbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1iZWdpbiA9IG9yIGlmIGlmIGlmIHdo aWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ25dIDEg W29yZy1lbGVtZW50LS1jYWNoZS1hY3RpdmUtcCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNh dmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNl LXRvIHNldHEgcHJvZ24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4IHNldHFdIDEg W2xldCBhbmQgb3IgYW5kIG9yIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBvcmctYWdlbmRh LXNraXAgY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIC0weDI2NGRlMWM1MjBjM2FiNT4iIGZ1bmNh bGwgY29uc10gMSBbaWYgbGV0IGNvbmQgbGV0KiBhbmQgbGV0KiBsZXQgbGV0KiBzYXZlLXJlc3Ry aWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1l bnQtLXBhcnNlLXRvIGNvbmRpdGlvbi1jYXNlIGlmIHNldHFdIDIgW2xldCogb3JnLWVsZW1lbnQt YmVnaW4gb3IgbWF4IHNldHEgaWYgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2du IGlmIHByb2duIGlmIGlmXSAxIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNyb2V4cC0tZXhwYW5k LWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1h bGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4 cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNlcyBt YWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBhbmQt YWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1l eHBhbmQtYWxsXSAxIFthbmQgbm90IGFuZCBpZiBsZXQgbGV0IGlmIGxldCogcHJvZ24gdW53aW5k LXByb3RlY3QgbGV0IGFiYnJldmlhdGUtZmlsZS1uYW1lIGZvcm1hdCBsaXN0IGxldCogb3JnLWFn ZW5kYS1nZXQtdGltZXN0YW1wc10gMSBbYW5kIGxldCogb3JnLWVsZW1lbnQtZW5kIDw9IGFuZCB3 aGlsZSBsZXQgY29uZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1j dXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gc2V0cSBwcm9nbl0gMSBb YW5kIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQtLWNhY2hlLWtleSBvcmctZWxlbWVudC0t Y2FjaGUta2V5LWxlc3MtcCBhbmQgb3IgYW5kIGlmIHNldHEgaWYgaWYgd2hpbGUgaWZdIDEgW3Nl dHEgY29uZCB3aGlsZSBsZXQgcHJvZ24gbGV0KiBvcmctZWxlbWVudC1jYWNoZS1tYXAgbGV0KiBv cmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCpd IDEgW2FwcGx5IGxldCBsZXQqIHByb2duIGxldCBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtY3VycmVudC1idWZmZXIgaWYgbGV0KiBvcmctYWdlbmRhLWdldC1kYXktZW50cmll cyBhcHBseSBzZXRxIGNvbmQgbGV0IGNhdGNoXSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwYW5kLWFsbCBjY29udi1tYWtlLWludGVycHJldGVkLWNs b3N1cmUgZnVuY3Rpb24gb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQt c2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZCBsZXQgd2hpbGUgbGV0IGxldCpdIDEgW29yZy1l bGVtZW50LS1jYWNoZS1hY3RpdmUtcCBpZiBwcm9nbiBsZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1h cCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBs ZXQgbGV0KiBwcm9nbiBsZXRdIDEgW2lmIG9yZy1pbi1zcmMtYmxvY2stcCBvciBpZiBwcm9nbiB1 bndpbmQtcHJvdGVjdCBsZXQgb3JnLWFnZW5kYS1za2lwIGNhdGNoIHByb2duIGlmICIjPGxhbWJk YSAweGQ0NTYyNjllMWU5ZDE2ZT4iIGZ1bmNhbGwgY29ucyBzZXRxIGlmXSAxIFtvciBjb25kIGxl dCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2OWUxZTlkMTZlPiIgZnVuY2FsbCBj b25zIHNldHEgaWYgcHJvZ24gaWYgcHJvZ24gaWYgcHJvZ25dIDEgW3Byb2duIGlmIGxldCBzYXZl LXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctZWxl bWVudC1hdC1wb2ludCBvcmctZWxlbWVudC1saW5lYWdlIHNldHEgb3JnLS1wcm9wZXJ0eS1sb2Nh bC12YWx1ZXMgbGV0KiBjb25kIG9yZy1lbnRyeS1nZXQgbGV0Kl0gMSBbYW5kIGxldCogb3JnLWVs ZW1lbnQtYmVnaW4gPCBhbmQgb3IgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2du IGlmIHByb2duIGlmIGlmXSAxIFtvcmctZWxlbWVudC1wcm9wZXJ0eS1pbmhlcml0ZWQgaWYgb3Jn LWluLWFyY2hpdmVkLWhlYWRpbmctcCBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgYW5kIG9yIGFu ZCBvciBpZiBwcm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgb3JnLWFnZW5kYS1za2lwIGNhdGNoXSAx IFttYWNyb2V4cGFuZC1hbGwgY2NvbnYtbWFrZS1pbnRlcnByZXRlZC1jbG9zdXJlIGZ1bmN0aW9u IG1hcGNhciBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25zIHNldHEgbGV0IGNvbmQg bGV0IHdoaWxlIGxldCBsZXQqIHByb2duIGxldF0gMSBbb3JnLWVsZW1lbnQtbGluZWFnZSBzZXRx IG9yZy0tcHJvcGVydHktbG9jYWwtdmFsdWVzIGxldCogY29uZCBvcmctZW50cnktZ2V0IGxldCog Y2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2ZGQzZTlkMTZlPiIgZnVuY2FsbCBjb25z IHNldHEgaWYgcHJvZ25dIDEgW2NvbmQgbGV0KiBhbmQgbGV0KiBvcmctZWxlbWVudC1lbmQgbGV0 IHdoaWxlIGxldCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJy ZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gc2V0cSBwcm9nbl0gMSBbbGV0 KiB3aGlsZSBpZiBsZXQqIHNhdmUtY3VycmVudC1idWZmZXIgb3JnLWVsZW1lbnQtLWNhY2hlLWZp bmQgYW5kIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQt YnVmZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmXSAxIFtzYXZl LWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVtZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVz dHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gc2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxl bWVudC0tcGFyc2UtdG8gc2V0cSBwcm9nbiBpZiBwcm9nbiBvcmctZWxlbWVudC1iZWdpbiBvciBt YXhdIDIgW2xldCBjYXRjaCB3aGlsZSBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXRpbWVzdGFtcHMgY29u cyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmlj dGlvbl0gMSBbYXBwbHkgc2V0cSBjb25kIGxldCBjYXRjaCB3aGlsZSB3aGlsZSBsZXQqIGNhdGNo IG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVyYWN0aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5 IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhXSAxIFtjb25kIHdoaWxlIGxldCBwcm9nbiBsZXQq IG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LXNjaGVkdWxlZCBjb25z IHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqXSAxIFttZW1xIGNvbmQgd2hpbGUgbGV0 IHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFnZW5kYS1nZXQtZGVh ZGxpbmVzIHNldHEgbGV0IGNvbmQgbGV0IHdoaWxlIGxldCBsZXQqXSAxIFtub3Qgb3IgaWYgcHJv Z24gdW53aW5kLXByb3RlY3QgbGV0IHByb2duIGlmIHByb2duIGlmIGlmIGlmIHdoaWxlIGlmIGxl dCogc2F2ZS1yZXN0cmljdGlvbl0gMSBbbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJz aW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRvIHNldHEg cHJvZ24gaWYgcHJvZ24gb3JnLWVsZW1lbnQtYmVnaW4gb3IgbWF4IHNldHEgaWYgaWZdIDEgW2xl dCogYW5kIGxldCogb3JnLWVsZW1lbnQtY29udGVudHMtZW5kIGVxIGlmIHdoaWxlIGNhdGNoIHBy b2duIHNldHEgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWZdIDMgW2xldCBwcm9nbiBpZiBwcm9nbiBs ZXQqIG9yZy1lbGVtZW50LWNhY2hlLW1hcCBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRlYWRsaW5lcyBz ZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQgbGV0KiBwcm9nbl0gMiBbYW5kIGxldCogb3JnLWVs ZW1lbnQtYmVnaW4gPCBhbmQgb3IgaWYgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IHByb2du IGlmIHByb2duIGlmIHByb2duXSAxIFttYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHBh bmQtYWxsIGNjb252LW1ha2UtaW50ZXJwcmV0ZWQtY2xvc3VyZSBmdW5jdGlvbiBvcmctZWxlbWVu dC1jYWNoZS1tYXAgbGV0KiBvcmctYWdlbmRhLWdldC1kZWFkbGluZXMgc2V0cSBsZXQgY29uZCBs ZXQgd2hpbGUgbGV0XSAxIFtjYXItc2FmZSBvciByZS1zZWFyY2gtZm9yd2FyZCBpZiBvciBpZiBw cm9nbiB1bndpbmQtcHJvdGVjdCBsZXQgcHJvZ24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGVdIDEg W2lmIG9yZy1lbGVtZW50LWF0LXBvaW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g bGV0IHByb2duIGlmIHByb2duIGxldCogb3JnLWVsZW1lbnQtY2FjaGUtbWFwIGxldCogb3JnLWFn ZW5kYS1nZXQtc2NoZWR1bGVkIGNvbnMgc2V0cSBsZXQgY29uZF0gMSBbb3IgcmUtc2VhcmNoLWZv cndhcmQgaWYgb3IgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IGxldCogc2F2ZS1yZXN0cmlj dGlvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQgcHJvZ24gaWYgcHJvZ24gbGV0Kl0gMSBbaWYgbGV0IG9y Zy1lbGVtZW50LS1jYWNoZS12ZXJpZnktZWxlbWVudCBhbmQgaWYgbGV0IHNhdmUtcmVzdHJpY3Rp b24gc2F2ZS1leGN1cnNpb24gc2F2ZS1leGN1cnNpb24gbGV0IGlmIG9yZy1lbGVtZW50LWF0LXBv aW50IHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24gbGV0IHByb2duXSAxIFtsZXQqIGFu ZCBsZXQqIG9yZy1lbGVtZW50LWVuZCBvciBsZXQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIHNhdmUtY3VycmVudC1idWZmZXIgY2F0Y2ggb3JnLWVsZW1lbnQtLXBhcnNlLXRv IGNvbmRpdGlvbi1jYXNlIGlmIHNldHEgbGV0XSAxIFttYWNyb2V4cC1tYWNyb2V4cGFuZCBtYWNy b2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwtY2xhdXNl cyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhwLS1hbGwt Y2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3JvZXhw LS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFj cm9leHAtLWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsXSAxIFtzYXZlLWN1cnJlbnQtYnVmZmVyIG5vdCBpZiBwcm9n biBpZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBs ZXQgaWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lv biBsZXQgcHJvZ25dIDEgW21hY3JvZXhwLW1hY3JvZXhwYW5kIG1hY3JvZXhwLS1leHBhbmQtYWxs IG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWFsbC1jbGF1c2VzIG1hY3JvZXhwLS1leHBh bmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFuZC1hbGwgbWFjcm9leHAt LWFsbC1mb3JtcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1zIG1hY3Jv ZXhwLS1hbGwtY2xhdXNlcyBtYWNyb2V4cC0tZXhwYW5kLWFsbCBtYWNyb2V4cC0tYWxsLWZvcm1z IG1hY3JvZXhwLS1leHBhbmQtYWxsIG1hY3JvZXhwLS1hbGwtZm9ybXMgbWFjcm9leHAtLWV4cGFu ZC1hbGxdIDEgW2FuZCBwcm9nbiBvciBwcm9nbiBhcmVmIHByb2duIHByb2duIG9yZy1lbGVtZW50 LS1jYWNoZS1yb290IGxldCogc2F2ZS1jdXJyZW50LWJ1ZmZlciBvcmctZWxlbWVudC0tY2FjaGUt ZmluZCBhbmQgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUtZXhjdXJzaW9uIHNhdmUtY3VycmVu dC1idWZmZXJdIDEgW25vdCBhbmQgaWYgbGV0KiBzYXZlLWN1cnJlbnQtYnVmZmVyIG9yZy1lbGVt ZW50LS1jYWNoZS1maW5kIGFuZCBsZXQqIHNhdmUtcmVzdHJpY3Rpb24gc2F2ZS1leGN1cnNpb24g c2F2ZS1jdXJyZW50LWJ1ZmZlciBjYXRjaCBvcmctZWxlbWVudC0tcGFyc2UtdG8gY29uZGl0aW9u LWNhc2UgaWYgc2V0cV0gMSBbb3JnLWVsZW1lbnQtLWNhY2hlLXZlcmlmeS1lbGVtZW50IGFuZCBp ZiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWV4Y3Vyc2lvbiBsZXQg aWYgb3JnLWVsZW1lbnQtYXQtcG9pbnQgb3JnLWVsZW1lbnQtbGluZWFnZSBzZXRxIG9yZy0tcHJv cGVydHktbG9jYWwtdmFsdWVzIGxldCogY29uZCBvcmctZW50cnktZ2V0XSAxIFtjb25kIGxldCBj YXRjaCB3aGlsZSB3aGlsZSBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEtbGlzdCBmdW5jYWxsLWludGVy YWN0aXZlbHkgY2FsbC1pbnRlcmFjdGl2ZWx5IGNvbmQgbGV0KiBjYXRjaCBvcmctYWdlbmRhIGZ1 bmNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kLWV4ZWN1dGVdIDEgW3Byb2duIG9yZy1lbGVtZW50 LWJlZ2luIG9yIG1heCBzZXRxIGlmIGlmIGlmIHByb2duIHVud2luZC1wcm90ZWN0IGxldCBwcm9n biBpZiBwcm9nbiBpZiBpZl0gMSBbZGVyaXZlZC1tb2RlLXAgaWYgc2F2ZS1jdXJyZW50LWJ1ZmZl ciBpZiBsZXQqIG9yZy1hZ2VuZGEtZ2V0LWRheS1lbnRyaWVzIGFwcGx5IHNldHEgY29uZCBsZXQg Y2F0Y2ggd2hpbGUgd2hpbGUgbGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3RdIDEgW3NldHEgcHJv Z24gaWYgcHJvZ24gaWYgaWYgaWYgd2hpbGUgaWYgbGV0KiBzYXZlLXJlc3RyaWN0aW9uIHNhdmUt ZXhjdXJzaW9uIGxldCBwcm9nbiBpZiBwcm9nbl0gMSBbYW5kIGxldCogb3JnLWVsZW1lbnQtYmVn aW4gPiBub3Qgb3IgYW5kIGlmIHdoaWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4 Y3Vyc2lvbiBsZXQgcHJvZ24gaWZdIDEgW2lmIGxldCogYW5kIGxldCogb3Igb3JnLWVsZW1lbnQt LWNhY2hlLWtleSBvcmctZWxlbWVudC0tY2FjaGUta2V5LWxlc3MtcCBub3Qgb3IgYW5kIGlmIHdo aWxlIGlmIGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbl0gMSBbd2hpbGUgbGV0 IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVmZmVy IGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHByb2duIG9yZy1lbGVt ZW50LWJlZ2luIG9yIG1heCBzZXRxXSAxIFthbmQgb3IgY29uZCBsZXQgb3JnLWdldC13ZGF5cyBj b25kIGxldCogY2F0Y2ggcHJvZ24gaWYgIiM8bGFtYmRhIDB4ZDQ1NjI2ZGQzZTlkMTZlPiIgZnVu Y2FsbCBjb25zIHNldHEgaWYgcHJvZ25dIDEgW2xldCBvcmctYWdlbmRhLXNraXAtZXZhbCBvciBs ZXQgb3IgaWYgcHJvZ24gdW53aW5kLXByb3RlY3QgbGV0IG9yZy1hZ2VuZGEtc2tpcCBjYXRjaCBw cm9nbiBpZiAiIzxsYW1iZGEgMHhkNDU2MjZkZDNlOWQxNmU+IiBmdW5jYWxsIGNvbnNdIDEgW2xl dCogb3JnLWFnZW5kYS1nZXQtc2V4cHMgY29ucyBzZXRxIGxldCBjb25kIGxldCB3aGlsZSBsZXQg bGV0KiBwcm9nbiBsZXQgc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJl bnQtYnVmZmVyIGlmXSAxIFtvcmctZWxlbWVudC0tY2FjaGUtaW50ZXJydXB0LXAgaWYgd2hpbGUg bGV0IGxldCogc2F2ZS1yZXN0cmljdGlvbiBzYXZlLWV4Y3Vyc2lvbiBzYXZlLWN1cnJlbnQtYnVm ZmVyIGNhdGNoIG9yZy1lbGVtZW50LS1wYXJzZS10byBzZXRxIHByb2duIGlmIHByb2duIG9yZy1l bGVtZW50LWJlZ2luIG9yXSAxIFtvcmctZm9sZC1jb3JlLW5leHQtZm9sZGluZy1zdGF0ZS1jaGFu Z2Ugb3JnLWZvbGQtY29yZS0tZml4LWZvbGRlZC1yZWdpb24gaW5zZXJ0IHByb2duIGlmIHdoaWxl IGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjYWxsLWlu dGVyYWN0aXZlbHkgY29uZCBsZXQqIGNhdGNoIG9yZy1hZ2VuZGEgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5XSAxIFthbmQgb3IgaWYgbGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRl cmFjdGl2ZWx5IGNhbGwtaW50ZXJhY3RpdmVseSBjb25kIGxldCogY2F0Y2ggb3JnLWFnZW5kYSBm dW5jYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZC1leGVjdXRlIG5pbCBuaWxdIDEgW2FkLUFkdmlj ZS1kZWxldGUtcmVnaW9uIGFwcGx5ICIjPGNvbXBpbGVkIDB4MWUwYzFiNDAyMTIzNDI3Yj4iIGdv Z2dsZXMtLWFkdmljZSBhcHBseSBkZWxldGUtcmVnaW9uIHdoaWxlIHNhdmUtZXhjdXJzaW9uIHBy b2duIHVud2luZC1wcm90ZWN0IGxldCBsZXQgb3JnLWFnZW5kYS1hbGlnbi10YWdzIGlmIHNhdmUt ZXhjdXJzaW9uIGxldF0gMSBbd2hpbGUgbGV0IHNhdmUtZXhjdXJzaW9uIG9yZy1hZ2VuZGEtZm9u dGlmeS1wcmlvcml0aWVzIHByb2duIGlmIHNhdmUtZXhjdXJzaW9uIGxldCBpZiBvcmctYWdlbmRh LWZpbmFsaXplIGxldCogY2F0Y2ggb3JnLWFnZW5kYS1saXN0IGZ1bmNhbGwtaW50ZXJhY3RpdmVs eSBjYWxsLWludGVyYWN0aXZlbHkgY29uZF0gMSBbcHJvZ24gaWYgbGV0IHdoaWxlIGxldCArb3Jn LWRlZmVyLW1vZGUtaW4tYWdlbmRhLWJ1ZmZlcnMtaCBydW4taG9va3MgbGV0IGlmIG9yZy1hZ2Vu ZGEtZmluYWxpemUgbGV0KiBjYXRjaCBvcmctYWdlbmRhLWxpc3QgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5IGNhbGwtaW50ZXJhY3RpdmVseSBjb25kXSAxIFtzYXZlLWN1cnJlbnQtYnVmZmVyIHByb2du IGlmIGxldCB3aGlsZSBsZXQgK29yZy1kZWZlci1tb2RlLWluLWFnZW5kYS1idWZmZXJzLWggcnVu LWhvb2tzIGxldCBpZiBvcmctYWdlbmRhLWZpbmFsaXplIGxldCogY2F0Y2ggb3JnLWFnZW5kYS1s aXN0IGZ1bmNhbGwtaW50ZXJhY3RpdmVseSBjYWxsLWludGVyYWN0aXZlbHldIDEwIFtyZWRpc3Bs YXlfaW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMiBbbmF2LWZsYXNoLXNob3cgaWYgK25h di1mbGFzaC1ibGluay1jdXJzb3IgaWYgK25hdi1mbGFzaC1ibGluay1jdXJzb3ItbWF5YmUtaCBy dW4taG9va3MgaWYgbGV0IGRvb20tcnVuLXN3aXRjaC13aW5kb3ctb3ItZnJhbWUtaG9va3MtaCBy ZWRpc3BsYXlfaW50ZXJuYWxcIFwoQ1wgZnVuY3Rpb25cKSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bF0gMyBbY2hhci1kaXNwbGF5YWJsZS1wIGRvb20tbW9kZWxpbmUtaWNvbiBkb29tLW1vZGVsaW5l LXNlZ21lbnQtLW11NGUgZXZhbCBmb3JtYXQtbW9kZS1saW5lIGRvb20tbW9kZWxpbmUtZm9ybWF0 LS1tYWluIGV2YWwgcmVkaXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9uXCkgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gOCBbYXBwbHkgdG9vbHRpcC1zaG93LWhlbHAtbm9uLW1v ZGUgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bF0gNiBbZG9vbS1tb2RlbGluZS1mb3JtYXQtLW1haW4gZXZhbCByZWRpc3BsYXlfaW50ZXJuYWxc IFwoQ1wgZnVuY3Rpb25cKSBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWxdIDEgW2Rvb20tbW9kZWxpbmUtc3RyaW5nLXBpeGVsLXdpZHRoIGRvb20tbW9k ZWxpbmUtZm9ybWF0LS1tYWluIGV2YWwgcmVkaXNwbGF5X2ludGVybmFsXCBcKENcIGZ1bmN0aW9u XCkgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDMgW3Rp bWVyLWluYy10aW1lIHRpbWVyLWV2ZW50LWhhbmRsZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMSBbIiM8c3ViciBGNjE2ZTZmNmU3OTZk NmY3NTczMmQ2YzYxNmQ2MjY0NjFfYW5vbnltb3VzX2xhbWJkYV85PiIgYXBwbHkgdGltZXItZXZl bnQtaGFuZGxlciBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bCBuaWxdIDE3IFtzeW50YXgtcHBzcyBzaG93LXBhcmVuLS1kZWZhdWx0IHNob3ctcGFyZW4tZnVu Y3Rpb24gYXBwbHkgdGltZXItZXZlbnQtaGFuZGxlciBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsIG5pbCBuaWwgbmlsXSAxIFsiIzxjb21waWxlZCAtMHg3YTEyNDMyYjEwNmVhND4iIHdo aWNoLWtleS0tZ2V0LWtleW1hcC1iaW5kaW5ncy0xIHdoaWNoLWtleS0tZ2V0LWtleW1hcC1iaW5k aW5ncyB3aGljaC1rZXktLWdldC1jdXJyZW50LWJpbmRpbmdzIHdoaWNoLWtleS0tZ2V0LWJpbmRp bmdzIHdoaWNoLWtleS0tY3JlYXRlLWJ1ZmZlci1hbmQtc2hvdyB3aGljaC1rZXktLXVwZGF0ZSBh cHBseSB0aW1lci1ldmVudC1oYW5kbGVyIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMSBb IiM8Y29tcGlsZWQgMHgxZjVkYWU5YjE5YzFmNWViPiIgd2hpY2gta2V5LS1nZXQtYmluZGluZ3Mg d2hpY2gta2V5LS1jcmVhdGUtYnVmZmVyLWFuZC1zaG93IHdoaWNoLWtleS0tdXBkYXRlIGFwcGx5 IHRpbWVyLWV2ZW50LWhhbmRsZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwg bmlsXSAyIFtzdWJzdGl0dXRlLWNvbW1hbmQta2V5cyB3aGljaC1rZXktLXByb3BlcnRpemUtZGVz Y3JpcHRpb24gd2hpY2gta2V5LS1mb3JtYXQtYW5kLXJlcGxhY2Ugd2hpY2gta2V5LS1nZXQtYmlu ZGluZ3Mgd2hpY2gta2V5LS1jcmVhdGUtYnVmZmVyLWFuZC1zaG93IHdoaWNoLWtleS0tdXBkYXRl IGFwcGx5IHRpbWVyLWV2ZW50LWhhbmRsZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5p bF0gNCBbIiM8Y29tcGlsZWQgLTB4MWRkZjExZGUyNzgzZDNiZj4iIHN1YnN0aXR1dGUtY29tbWFu ZC1rZXlzIHdoaWNoLWtleS0tbWF5YmUtYWRkLWRvY3N0cmluZyB3aGljaC1rZXktLWZvcm1hdC1h bmQtcmVwbGFjZSB3aGljaC1rZXktLWdldC1iaW5kaW5ncyB3aGljaC1rZXktLWNyZWF0ZS1idWZm ZXItYW5kLXNob3cgd2hpY2gta2V5LS11cGRhdGUgYXBwbHkgdGltZXItZXZlbnQtaGFuZGxlciBu aWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxdIDMgW2tiZCB3aGljaC1rZXktLWZvcm1hdC1hbmQt cmVwbGFjZSB3aGljaC1rZXktLWdldC1iaW5kaW5ncyB3aGljaC1rZXktLWNyZWF0ZS1idWZmZXIt YW5kLXNob3cgd2hpY2gta2V5LS11cGRhdGUgYXBwbHkgdGltZXItZXZlbnQtaGFuZGxlciBuaWwg bmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gMSBbd2hpY2gta2V5LS1yZXBsYWNlLWlu LXJlcGwtbGlzdC1vbmNlIHdoaWNoLWtleS0tbWF5YmUtcmVwbGFjZSB3aGljaC1rZXktLW1heWJl LWdldC1wcmVmaXgtdGl0bGUgd2hpY2gta2V5LS1jcmVhdGUtcGFnZXMgd2hpY2gta2V5LS1jcmVh dGUtYnVmZmVyLWFuZC1zaG93IHdoaWNoLWtleS0tdXBkYXRlIGFwcGx5IHRpbWVyLWV2ZW50LWhh bmRsZXIgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbF0gNCBbYXBwbHkgd2hpY2gta2V5 LS1lY2hvICIjPGNvbXBpbGVkIC0weDlmNWE2OGNiOTk1MTg5Mz4iIHdoaWNoLWtleS0tc2hvdy1w YWdlIHdoaWNoLWtleS0tY3JlYXRlLWJ1ZmZlci1hbmQtc2hvdyB3aGljaC1rZXktLXVwZGF0ZSBh cHBseSB0aW1lci1ldmVudC1oYW5kbGVyIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWxd IDEgW3dpbmRvdy0tc2l6ZS1maXhlZC0xIHdpbmRvdy1zaXplLWZpeGVkLXAgd2luZG93LS1taW4t ZGVsdGEtMSB3aW5kb3ctbWluLWRlbHRhIHdpbmRvdy0tcmVzaXphYmxlIHdpbmRvdy0tcmVzaXph YmxlLXAgd2luZG93LXJlc2l6ZSB3aW5kb3ctcmVzaXplLW5vLWVycm9yIGZpdC13aW5kb3ctdG8t YnVmZmVyICIjPGxhbWJkYSAweDFlMTBiYTRhZjQwNDFjZD4iIHdpbmRvdy0tZGlzcGxheS1idWZm ZXIgd2luZG93LS1tYWtlLW1ham9yLXNpZGUtd2luZG93IGFuZCBsZXQqIHByb2duIHVud2luZC1w cm90ZWN0XSAxIFtpZiBkb29tL3RvZ2dsZS1wcm9maWxlciBmdW5jYWxsLWludGVyYWN0aXZlbHkg Y29tbWFuZC1leGVjdXRlIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBuaWwgbmlsIG5pbCBu aWwgbmlsXSAyIFtBdXRvbWF0aWNcIEdDXSA2NTUwKSkgKDI1ODY1IDU2MDA4IDI1MzU3NCA0ODAw MDApIG5pbF0K --=-=-= Content-Type: text/plain In GNU Emacs 30.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.17.8) of 2023-09-19 built on localhost Repository revision: 6721c616653279913f51f211b80614bff82c24c3 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101008 System Description: Gentoo Linux -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at --=-=-=-- ------------=_1703942702-19462-1-- From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 01 Jan 2024 17:12:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170412910316758 (code B ref 66117); Mon, 01 Jan 2024 17:12:01 +0000 Received: (at 66117) by debbugs.gnu.org; 1 Jan 2024 17:11:43 +0000 Received: from localhost ([127.0.0.1]:48679 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKLpH-0004MC-7G for submit@debbugs.gnu.org; Mon, 01 Jan 2024 12:11:43 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:64833) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKLpD-0004Lw-4C for 66117@debbugs.gnu.org; Mon, 01 Jan 2024 12:11:42 -0500 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 99DEC84553; Mon, 1 Jan 2024 12:11:31 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1704129090; bh=msCQUsBvjsuIRj+eXtJZvYovY+F43lcL3QMBeTNh6Fw=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=I+Gf5IhUsly+EUuf2bf3t4TsenfD8e2BubPerG7X6X4cxLB/wUH6MlDq9H2ibKMkR KD8URNaB4AwsYyNdxarjcO3YcrKOvRFoJp2U7m4zuMH55trDbOwjxW5T+wG8IbZKr7 Jabj0ca2+NRClib3K7nZi/s77Sp+TojxP8Ji9kw6OgCXde8kdidRws/GM4F5Tjz3TU OYx5wqwBjZlIgxA9BMImsan7M6vlxvL7EyDj7NO9efNTgnI5j+LB8r9NauIQjloagf QKBuB/iSEfbynOihSvEin7nEaqkMdFWz/XInZYbpZRdJFDT6ckNKwedtj8trZ1xBGk GdLjTy8tWPLug== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 42EAE80BDD; Mon, 1 Jan 2024 12:11:30 -0500 (EST) Received: from alfajor (unknown [207.96.224.130]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 2349E1211F2; Mon, 1 Jan 2024 12:11:30 -0500 (EST) From: Stefan Monnier In-Reply-To: <875y0fc0qq.fsf@localhost> (Ihor Radchenko's message of "Sat, 30 Dec 2023 12:51:09 +0000") Message-ID: References: <878r919qfh.fsf@localhost> <83cyy11ln1.fsf@gnu.org> <87lecp84mf.fsf@localhost> <83ttrdx8j9.fsf@gnu.org> <87a5su261p.fsf@localhost> <838r8e24yy.fsf@gnu.org> <87y1gezspg.fsf@localhost> <834jj21z05.fsf@gnu.org> <87il7izo4l.fsf@localhost> <831qe61xrh.fsf@gnu.org> <87cyxqzmhh.fsf@localhost> <83zg0uzlgw.fsf@gnu.org> <87v8bhxzcu.fsf@localhost> <83sf3te1tu.fsf@gnu.org> <87msu1qmqv.fsf@localhost> <83zfy1cgoa.fsf@gnu.org> <87le9lcg4e.fsf@localhost> <831qb578n2.fsf@gnu.org> <87zfxt3yfy.fsf@localhost> <83jzow3yf1.fsf@gnu.org> <875y0fc0qq.fsf@localhost> Date: Mon, 01 Jan 2024 12:11:29 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Yes, I think. I hope that closing the bug will not make question to > Stefan (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#373) fall > through the cracks. I thought Gerd replied to that one. If there's still something unclear, let me know. Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 01 Jan 2024 18:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Gerd =?UTF-8?Q?M=C3=B6llmann?= Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170413197419628 (code B ref 66117); Mon, 01 Jan 2024 18:00:02 +0000 Received: (at 66117) by debbugs.gnu.org; 1 Jan 2024 17:59:34 +0000 Received: from localhost ([127.0.0.1]:48715 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKMZa-00056V-Ao for submit@debbugs.gnu.org; Mon, 01 Jan 2024 12:59:34 -0500 Received: from mout01.posteo.de ([185.67.36.65]:38401) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKMZX-00056H-Sz for 66117@debbugs.gnu.org; Mon, 01 Jan 2024 12:59:32 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 59A06240029 for <66117@debbugs.gnu.org>; Mon, 1 Jan 2024 18:59:24 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1704131964; bh=Uh7wWR9KMo1YuewvGhzQB4ZfuUEyeur/LhZ1lj0vJC4=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=R2K0hV1IcDqny94ND6PJz8iY4KUFBXgIi30UPsUzE3idhSiLPRl1bnr8xxjiyMyf1 //1gGHKBI6PoCPUhmIfUMmIoPhoSPxN0jRpYaxaCzJ+FcmU/C3ja2dSpDwzKjqrV6/ qwJzoyrqK3P+0aMxN0lfnVB+YV7QKynVxHGbo6ASHXNhCZ/MxQ6iZyzAT/JT/h4GZc QfW7KLd0u3jUAMjlNrqq9aOunRReeru1p4ATTpVUTDp796YbMxV6C2izyQ6ddZYMLq UAStrP2NIUzNGV3DCDIaHkJy37GOnl2B/nEf/2ZJpXRh9jt6HI9GRtUWY0GkSeliDY mBTM1wbhVt2HQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4T3kJV3Mp0z6tmv; Mon, 1 Jan 2024 18:59:22 +0100 (CET) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> Date: Mon, 01 Jan 2024 18:02:30 +0000 Message-ID: <878r5953ux.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Gerd M=C3=B6llmann writes: >> (defvar-local let-tests-buffer-local-var 'value) >> (with-temp-buffer >> (setq-local let-tests-buffer-local-var 'baz) >> (let ((let-tests-buffer-local-var 'bar)) >> ;; This is failing. >> (should (eq 'bar (default-value 'let-tests-buffer-local-var))) > > C-h f default-value explains this: > > Return SYMBOL=E2=80=99s default value. > This is the value that is seen in buffers that do not have their own va= lues > for this variable. Are you saying that `let' never changes `default-value' output? Unfortunately, no. I first expected (by reading the C sources) that the default value is changed by `let', but it actually looks like `let' sometimes does change the default value and sometimes does not. See the following two almost identical snippets that yield completely different results depending on the present of `setq-default': (defvar-local let-tests-buffer-local-var 'value) ;; default value is 'value (with-temp-buffer (let ((existing-buffer (current-buffer))) (with-temp-buffer (setq-local let-tests-buffer-local-var 'baz) (let ((let-tests-buffer-local-var 'bar)) ;; Let does not change the default value for variable. (should (eq 'value (default-value 'let-tests-buffer-local-var))) (should (eq 'bar let-tests-buffer-local-var)) (with-temp-buffer ;; We are in a new buffer - `let-tests-buffer-local-var' has its global = default value. (should (eq 'value (default-value 'let-tests-buffer-local-var))) (should (eq 'value let-tests-buffer-local-var))) (with-current-buffer existing-buffer ;; The above let DOES NOT change the current value in all the buf= fer ;; _existing_ when `let' is invoked. (should (eq 'value let-tests-buffer-local-var)) ;; Global default value is still unchanged. (should (eq 'value (default-value 'let-tests-buffer-local-var))))= )))) (with-temp-buffer (let ((existing-buffer (current-buffer))) (with-temp-buffer ;; !!! After commenting out this line, the behaviour changes. ;; (setq-local let-tests-buffer-local-var 'baz) (let ((let-tests-buffer-local-var 'bar)) ;; Now, let DOES change the default value for variable. (should (eq 'bar (default-value 'let-tests-buffer-local-var))) (should (eq 'bar let-tests-buffer-local-var)) (with-temp-buffer ;; We are in a new buffer - `let-tests-buffer-local-var' still has ;; let-bound global and local values. (should (eq 'bar (default-value 'let-tests-buffer-local-var))) (should (eq 'bar let-tests-buffer-local-var))) (with-current-buffer existing-buffer ;; The above let DOES change the current value in all the buffer ;; _existing_ when `let' is invoked. (should (eq 'bar let-tests-buffer-local-var)) ;; Global default value is still let-bound. (should (eq 'bar (default-value 'let-tests-buffer-local-var))))))= )) --=20 Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 01 Jan 2024 19:40:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17041379662669 (code B ref 66117); Mon, 01 Jan 2024 19:40:02 +0000 Received: (at 66117) by debbugs.gnu.org; 1 Jan 2024 19:39:26 +0000 Received: from localhost ([127.0.0.1]:48815 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKO8D-0000gy-RN for submit@debbugs.gnu.org; Mon, 01 Jan 2024 14:39:26 -0500 Received: from mail-ej1-x62a.google.com ([2a00:1450:4864:20::62a]:52333) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKO8B-0000gl-QK for 66117@debbugs.gnu.org; Mon, 01 Jan 2024 14:39:24 -0500 Received: by mail-ej1-x62a.google.com with SMTP id a640c23a62f3a-a2819e25069so39354066b.0 for <66117@debbugs.gnu.org>; Mon, 01 Jan 2024 11:39:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704137956; x=1704742756; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HQMpZ3kBuouEWnMWmi6dXIntFCdSyLJ2gtMXiFUmP6M=; b=m21W+JqAO6kqiib8rZoi2/+aXYaiRAsTfV+7s3Iw8Hu6Q1OfEZoHwQx3v9a8rxF3hW dKxD3x5osjHQyCtNH9tn3CGkizdsYXpCaNHQND31CRYYF+hI5bWbbWDVHr3VVqofrhnW +K9fPqEayd9ekN+JmxFM5KtE4CIv4hUkbYOMyAfvisrc5FHUbRMP8dGfHFu9UanSME1b l8b2xACG+ZSjF6jnZt50S7k0Hpvm9a6QECjuL1zDKkzB0PaS2XxHBZqmQYdCgpLKcRrR E80PKinrBOS2DxRYzKjcY0e7tctV9OPQgOWW/4xiKEuLLC8E/3vMUww9YDdnkxqtAXdT kC6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704137956; x=1704742756; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=HQMpZ3kBuouEWnMWmi6dXIntFCdSyLJ2gtMXiFUmP6M=; b=es86mGt46Qx4QZCP4KK6yQFev7wycL2FVgT5bs/WGGaC2eAqsPr242VcoUC5ZkvZkj 0APVEo9wwedFpqavYOQOFKAFIN6+9plOPT+8lxUY+vTRr9q21dME6P0kkKWlitI5ycP5 683i1s+5KvNZp1L0AMlF6MoiDpEzxnWmZq5VjA4P3YBpZr4S03fnMP/Yax5uzB0ZsKWN fv9dJyc4yLYXJBnRky0I4Bg67wagD+HPVWYEy/yKhcxfDH4fFuHEMQ+pBc7cisVn2nYB 72TeqL8x5Fjyrlh/G8AhjRcFQTD/0c+/ueM5roLzeIiPzVDovrR2uS/LJm5hN11x/G6x d3rA== X-Gm-Message-State: AOJu0Yzx6nL5rM7UkH8YxdGHM85OgRlYxLxvR5ZRaWqZz4sS11LaftMw vqglB/HJiaSsaEkCbi5ane7jBVpAOvk= X-Google-Smtp-Source: AGHT+IEEVLrOgN4uKGRXDHWpb/y4nuCBI63/HTkD45Ad0PjbSDXrYtDBnQPKu/3q560dU3VyjFhblw== X-Received: by 2002:a17:907:968d:b0:a23:357f:f583 with SMTP id hd13-20020a170907968d00b00a23357ff583mr11123563ejc.30.1704137955552; Mon, 01 Jan 2024 11:39:15 -0800 (PST) Received: from Pro.fritz.box (p4fe3ac5e.dip0.t-ipconnect.de. [79.227.172.94]) by smtp.gmail.com with ESMTPSA id vp23-20020a17090712d700b00a27e4d34455sm1699179ejb.183.2024.01.01.11.39.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jan 2024 11:39:15 -0800 (PST) From: Gerd =?UTF-8?Q?M=C3=B6llmann?= In-Reply-To: <878r5953ux.fsf@localhost> (Ihor Radchenko's message of "Mon, 01 Jan 2024 18:02:30 +0000") References: <878r919qfh.fsf@localhost> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> Date: Mon, 01 Jan 2024 20:39:13 +0100 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Ihor Radchenko writes: > Gerd M=C3=B6llmann writes: > >>> (defvar-local let-tests-buffer-local-var 'value) >>> (with-temp-buffer >>> (setq-local let-tests-buffer-local-var 'baz) >>> (let ((let-tests-buffer-local-var 'bar)) >>> ;; This is failing. >>> (should (eq 'bar (default-value 'let-tests-buffer-local-var))) >> >> C-h f default-value explains this: >> >> Return SYMBOL=E2=80=99s default value. >> This is the value that is seen in buffers that do not have their own v= alues >> for this variable. > > Are you saying that `let' never changes `default-value' output? Not really. I tried to explain why default-value, in this case, returns what it returns. > Unfortunately, no. Maybe you are seeing something like bug#65209? Or the fix done by Stefan Monnier in the course of that bug? (See the mails under the bug.) From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 01 Jan 2024 20:37:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Gerd =?UTF-8?Q?M=C3=B6llmann?= Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170414138215762 (code B ref 66117); Mon, 01 Jan 2024 20:37:01 +0000 Received: (at 66117) by debbugs.gnu.org; 1 Jan 2024 20:36:22 +0000 Received: from localhost ([127.0.0.1]:48836 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKP1K-000469-Cq for submit@debbugs.gnu.org; Mon, 01 Jan 2024 15:36:22 -0500 Received: from mout02.posteo.de ([185.67.36.66]:41009) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKP1I-00045s-H6 for 66117@debbugs.gnu.org; Mon, 01 Jan 2024 15:36:21 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id EEA91240105 for <66117@debbugs.gnu.org>; Mon, 1 Jan 2024 21:36:11 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1704141372; bh=/FkUwjzUMKsBON1af2S5BGOHNa5E906SBNQGisAkMt0=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=iTKJ4JX67zO4joImpgh5C0JfApJCegcZigcIAmmuDR1O3UeRALTiaNbUG5+hmodtZ xRtR+nchpKlXd5MchpGdlSqfvZulTvoLK85cPsJHyAFrlwEGnFshQbDGMMgCUonWGq iYLCLFBqS5Vc2m+Xeoz7GzsrIOJeF9pIJvqP2GUuQF66iGb0XINNmQqD2Z+5KNGjmj 45lNwVo9v6P181OiVQ2cvTubUzUsI3GvWjDO8RBw6qoB14k3/G/rliSRUWhP9bYdpf hgb2cB+fUma8yYKBLtimiBJPNtTAFCotp2LYQJOs+awf5CecdSv9nLZkneeFkfGAm7 iyc7SO2PZeU0w== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4T3nnQ1mwKz6tvk; Mon, 1 Jan 2024 21:36:10 +0100 (CET) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> Date: Mon, 01 Jan 2024 20:39:17 +0000 Message-ID: <8734vg6b62.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Gerd M=C3=B6llmann writes: >>>> (defvar-local let-tests-buffer-local-var 'value) >>>> (with-temp-buffer >>>> (setq-local let-tests-buffer-local-var 'baz) >>>> (let ((let-tests-buffer-local-var 'bar)) >>>> ;; This is failing. >>>> (should (eq 'bar (default-value 'let-tests-buffer-local-var))) >>> >>> C-h f default-value explains this: >>> >>> Return SYMBOL=E2=80=99s default value. >>> This is the value that is seen in buffers that do not have their own = values >>> for this variable. >> >> Are you saying that `let' never changes `default-value' output? > > Not really. I tried to explain why default-value, in this case, returns > what it returns. I am sorry, but I do not see how the docstring explains what is happening there. Because it is not clear what `let' does with the default value. >> Unfortunately, no. > > Maybe you are seeing something like bug#65209? Or the fix done by Stefan > Monnier in the course of that bug? (See the mails under the bug.) I am on the latest master. And I do not think that it is bug#65209. Let me simplify my example to avoid `setq-local' inside `let'. AFAIU, what `let' does to the default value depends on whether current buffer has its own local value of the variable or not. (defvar-local let-tests-buffer-local-var2 'value) ;; default value is 'value (with-temp-buffer (setq-local let-tests-buffer-local-var2 'baz) (let ((let-tests-buffer-local-var2 'bar)) ;; Let does not change the default value for variable. (should (eq 'value (default-value 'let-tests-buffer-local-var2))) (should (eq 'bar let-tests-buffer-local-var2)) (with-temp-buffer ;; We are in a new buffer - `let-tests-buffer-local-var2' has its glo= bal default value. (should (eq 'value (default-value 'let-tests-buffer-local-var2))) (should (eq 'value let-tests-buffer-local-var2))))) (with-temp-buffer ;; !!! After commenting out this line, the behaviour changes. ;; (setq-local let-tests-buffer-local-var2 'baz) (let ((let-tests-buffer-local-var2 'bar)) ;; Now, let DOES change the default value for variable. (should (eq 'bar (default-value 'let-tests-buffer-local-var2))) (should (eq 'bar let-tests-buffer-local-var2)) (with-temp-buffer ;; We are in a new buffer - `let-tests-buffer-local-var2' still has ;; let-bound global and local values. (should (eq 'bar (default-value 'let-tests-buffer-local-var2))) (should (eq 'bar let-tests-buffer-local-var2)))))=20=20=20=20=20=20= =20=20=20=20 --=20 Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 01:31:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: Gerd =?UTF-8?Q?M=C3=B6llmann?= , dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170415906016912 (code B ref 66117); Tue, 02 Jan 2024 01:31:01 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 01:31:00 +0000 Received: from localhost ([127.0.0.1]:49041 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKTcR-0004OL-Gt for submit@debbugs.gnu.org; Mon, 01 Jan 2024 20:30:59 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:7755) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKTcQ-0004Df-Ku for 66117@debbugs.gnu.org; Mon, 01 Jan 2024 20:30:59 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 0037F44177E; Mon, 1 Jan 2024 20:30:51 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1704159049; bh=QXEGk3XsSkkwcm76GopUwLhy06FPH4fyW8nuMS1RPNs=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=Xl0nHUm1WiAimaP7WDRU+Oz0s0vkyJRscqge28wdh9+7aX68ffp7eTA2xUtIKFTOD O/WuRE0k4Vzf4+oEXh0e3ViyN3O0Tj+5Na1/J/yEq1m+MvX4YyKfc3kh1yE7dRB+mK ZWoTc4uyQ5gPWjMNRc8SB+kXOahTiWlq3BLKDPg0FsrEvfAdA4B0SotvG/a5pgcaR3 82DOca5h9COZ3nEB17G72VRsUr/pxdzPNYmmCYOLuEsGIMEVMLgQBn3dsBb1TivIkh WK2awzDP9mdxPl3Lx45l1UxhbUth5LHBpqwm67XjcuWt67ZOaMn+yVymzldYG98vhO dOjX0LXbKMgOQ== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id A29BC4416BD; Mon, 1 Jan 2024 20:30:49 -0500 (EST) Received: from alfajor (unknown [207.96.224.130]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 776F81211B6; Mon, 1 Jan 2024 20:30:49 -0500 (EST) From: Stefan Monnier In-Reply-To: <878r5953ux.fsf@localhost> (Ihor Radchenko's message of "Mon, 01 Jan 2024 18:02:30 +0000") Message-ID: References: <878r919qfh.fsf@localhost> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> User-Agent: Gnus/5.13 (Gnus v5.13) Date: Mon, 01 Jan 2024 20:30:48 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Ihor Radchenko [2024-01-01 18:02:30] wrote: > Gerd M=C3=B6llmann writes: > >>> (defvar-local let-tests-buffer-local-var 'value) >>> (with-temp-buffer >>> (setq-local let-tests-buffer-local-var 'baz) >>> (let ((let-tests-buffer-local-var 'bar)) >>> ;; This is failing. >>> (should (eq 'bar (default-value 'let-tests-buffer-local-var))) >> >> C-h f default-value explains this: >> >> Return SYMBOL=E2=80=99s default value. >> This is the value that is seen in buffers that do not have their own v= alues >> for this variable. > > Are you saying that `let' never changes `default-value' output? > Unfortunately, no. Indeed, see the doc that Eli quoted 10 posts "ago": [...] ELisp manual, which describes the effect of make-variable-buffer-local: A peculiar wrinkle of this feature is that binding the variable (with =E2=80=98let=E2=80=99 or other binding constructs) does not c= reate a buffer-local binding for it. Only setting the variable (with =E2=80=98set=E2=80=99 or =E2=80=98setq=E2=80=99), while the variabl= e does not have a =E2=80=98let=E2=80=99-style binding that was made in the current buffer, does so. IOW, `let` changes the binding that is "current": if the variable is buffer-local in the current buffer it changes that buffer-local value and otherwise it changes the global value. [ This for "automatically buffer-local variables". ] Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 04:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170417062328297 (code B ref 66117); Tue, 02 Jan 2024 04:44:02 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 04:43:43 +0000 Received: from localhost ([127.0.0.1]:49178 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKWcw-0007ML-Sy for submit@debbugs.gnu.org; Mon, 01 Jan 2024 23:43:43 -0500 Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]:54738) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKWcu-0007M7-FX for 66117@debbugs.gnu.org; Mon, 01 Jan 2024 23:43:41 -0500 Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-a2830574764so47809566b.1 for <66117@debbugs.gnu.org>; Mon, 01 Jan 2024 20:43:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704170612; x=1704775412; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zKQieu9vhvdZ0MLAIngwmfoBXu9qiwR40mE8ux/eC3w=; b=HlaEc0/kFWTE0yAvDvl2W91ZAqionAsCo95oOHPzVk9fXh4u8YicO5LY6hbCsLQ65R n3T9Aieu3dH2Cogja8zGBMwI9oDng2vfz3TU6RpTE0ZoAGJEN6FlUtdtnBvaLYhE+qQQ Rj3aH/tpKAPnPgKJ1CsNRBK7EwuIpV2DFI6Dj19N6l/RR3dh2OcRAq7ZXPSOHxdLuJhf 247sGZHP8dsIAVCC8glb+DXCMM4K89BdAWodER104yOEDbqjpfxw9ums153QPi1un4LH 1vyNLotoc+3qIGgW9MdZ6aO2r6EM9NbNHmU4PzpS2IPafSIn5Qz49lFuN12Ya62/mAG1 07Rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704170612; x=1704775412; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=zKQieu9vhvdZ0MLAIngwmfoBXu9qiwR40mE8ux/eC3w=; b=T+VjrU7ALlN+i80Ld7PIyYuDZTeWphkUibX3W/fB9s3ZApv2U3Oz5Mc+ibOFbWDY3B TGG28+qX6vClZ4MGub6m0mgvoqgAboP3a9mzKOHIBf8/xZ3o5Or+XNwLMdX20z/8lxdd y/y/OHIZ3zzV6C/7PEu4Rmwt4Qap8Itkn8zxXprXVX977opjd6oxApoeTcPuC9SCoEtm CvuK5IYJCM5sZVaumUs9ubeYEhmPO7rElKQoYhujQsU7wFtowQJGFsmMAGJQQaaBhzrO Mon/eVcggQXaZ7Qexg9noPZEhBZBznigcWFantSoV3mxWBz5kmhvZn8Dv2Z2Ry794HZE 9isg== X-Gm-Message-State: AOJu0YycVsKEkuwg20D1OYH9oMUpVohQLJhQR+VC+SDY3FF9oDhjR7Yg /fz3ldDowx0ikhbbTwQDTfenl+rG2jU= X-Google-Smtp-Source: AGHT+IGKPTLcVSJhhLCfPs+WVlzoMqQGXXVtYrsf8r3O3Q4alCVboCitRu+wITQs7R/0ChKqYffk6w== X-Received: by 2002:a17:906:1f46:b0:a27:5a9b:5ad8 with SMTP id d6-20020a1709061f4600b00a275a9b5ad8mr3839880ejk.18.1704170611768; Mon, 01 Jan 2024 20:43:31 -0800 (PST) Received: from Pro.fritz.box (pd9e36b7e.dip0.t-ipconnect.de. [217.227.107.126]) by smtp.gmail.com with ESMTPSA id au16-20020a170907093000b00a27a25afaf2sm3430327ejc.98.2024.01.01.20.43.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jan 2024 20:43:31 -0800 (PST) From: Gerd =?UTF-8?Q?M=C3=B6llmann?= In-Reply-To: <8734vg6b62.fsf@localhost> (Ihor Radchenko's message of "Mon, 01 Jan 2024 20:39:17 +0000") References: <878r919qfh.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <8734vg6b62.fsf@localhost> Date: Tue, 02 Jan 2024 05:43:30 +0100 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Ihor Radchenko writes: > Gerd M=C3=B6llmann writes: > >>>>> (defvar-local let-tests-buffer-local-var 'value) >>>>> (with-temp-buffer >>>>> (setq-local let-tests-buffer-local-var 'baz) >>>>> (let ((let-tests-buffer-local-var 'bar)) >>>>> ;; This is failing. >>>>> (should (eq 'bar (default-value 'let-tests-buffer-local-var))) >>>> >>>> C-h f default-value explains this: >>>> >>>> Return SYMBOL=E2=80=99s default value. >>>> This is the value that is seen in buffers that do not have their own= values >>>> for this variable. >>> >>> Are you saying that `let' never changes `default-value' output? >> >> Not really. I tried to explain why default-value, in this case, returns >> what it returns. > > I am sorry, but I do not see how the docstring explains what is > happening there. Because it is not clear what `let' does with the > default value. Sorry for not being clear. What I wanted to hint at is the part of the doc string that reads "that do not have their own values...", which means that what default-value returns depends whether or not SYMBOL got its own value in the buffer, and that depends on the presence of lets, and so on. It's (too) complicated, but it is what it is :-/. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 10:50:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Gerd =?UTF-8?Q?M=C3=B6llmann?= Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170419259423093 (code B ref 66117); Tue, 02 Jan 2024 10:50:01 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 10:49:54 +0000 Received: from localhost ([127.0.0.1]:49478 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKcLJ-00060O-T4 for submit@debbugs.gnu.org; Tue, 02 Jan 2024 05:49:54 -0500 Received: from mout02.posteo.de ([185.67.36.66]:35363) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKcLH-00060A-Nb for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 05:49:52 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id F213C24010A for <66117@debbugs.gnu.org>; Tue, 2 Jan 2024 11:49:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1704192583; bh=LuTpsYpnYyyzgT1q7XnMgbyCgSEs0XoAf4v9QHt08wU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=MhJPzzwDcHEJ8DMJ6LpOhCQjJ9bAGN/Op1Yqp9NdpRGt6sZCqHNefNYJ9j6yQcXhD 5AUzFqgflDozctDb+vzEr4IiLhX1lQEfkUh1e0RagJpM70gGBaePbcPXxUnhvVKI3D BEqo7heIH9ONXaslaePVu8LntwPAVjOMT6p3fZymhKf6zhhKb9FSnBN98T1OZ9hTOu /uLg+DjU2tMzi9r1mb2ZmJlyK7YxARelPLfxsVDh1Rj6uuWTUr3AM7Or4+ch5+G0G3 Q8zUqaQiipB6SrHUn6VgGSLOdtqoqScIxFOk0adqqFO0Ys8ygxI8qO2sdLV3oJhf08 ljlnwn+b8tc6Q== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4T48kD72Qgz6tm8; Tue, 2 Jan 2024 11:49:40 +0100 (CET) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <8734vg6b62.fsf@localhost> Date: Tue, 02 Jan 2024 10:52:50 +0000 Message-ID: <87wmss3t31.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Gerd M=C3=B6llmann writes: >>>>> C-h f default-value explains this: >>>>> >>>>> Return SYMBOL=E2=80=99s default value. >>>>> This is the value that is seen in buffers that do not have their ow= n values >>>>> for this variable. >>>> >> ... >> I am sorry, but I do not see how the docstring explains what is >> happening there. Because it is not clear what `let' does with the >> default value. > > Sorry for not being clear. What I wanted to hint at is the part of the > doc string that reads "that do not have their own values...", which > means that what default-value returns depends whether or not SYMBOL got > its own value in the buffer, and that depends on the presence of lets, > and so on. It is not how I read this. AFAIU, `default-value' returns the value that is used for buffers where the value is not explicitly set. Calling `default-value' from inside the buffer where the value is set does not change that global default value and should not change what `default-value' returns. And indeed (defvar-local yant/test 'default-value) (with-temp-buffer (setq yant/test 'local-value) (default-value 'yant/test)) ; =3D> 'default-value --=20 Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 10:58:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: Gerd =?UTF-8?Q?M=C3=B6llmann?= , dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170419303023771 (code B ref 66117); Tue, 02 Jan 2024 10:58:02 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 10:57:10 +0000 Received: from localhost ([127.0.0.1]:49485 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKcSL-0006BK-U4 for submit@debbugs.gnu.org; Tue, 02 Jan 2024 05:57:10 -0500 Received: from mout01.posteo.de ([185.67.36.65]:34917) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKcSG-0006Ak-77 for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 05:57:07 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 3C943240028 for <66117@debbugs.gnu.org>; Tue, 2 Jan 2024 11:56:56 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1704193016; bh=rn1hMGRnmvmjreo5n+7Xf4ou47oCneVOnDp+JYUwd50=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=Pm/UWo2A63saHapfN7KRWmtD7V3SZ2H0S6iHoH7dziaWB9SLaIN6uyMHcfmnmPVPi VDfyYbwgEpdx95zi8b2ZpasKlbSifcD0+B74QcaxL+0dCgtXobQ1ZUGSP98Tzv2IjH s0STODf/cphtKI03Swn7CsHk8BoigcpBQfv1us2rzoLBH9qrnJLkrJr3g5ld08vBDP oiKxiU7heZuwvzypFsi7PeYL6eGyIaOaQ7Ogell4l2UR3FUVDCvzToTy43WqWdQfx3 FXp3EwJ83MTTDKYtIKmWl/eTiFv9O2lG8w4El3ifpE0mNW9kzvEewX8R6NTFR9pFmr 3L7qyXkrz6NBQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4T48tb1nw3z6twq; Tue, 2 Jan 2024 11:56:55 +0100 (CET) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> Date: Tue, 02 Jan 2024 11:00:06 +0000 Message-ID: <87ttnw3sqx.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Stefan Monnier writes: >>>> (defvar-local let-tests-buffer-local-var 'value) >>>> (with-temp-buffer >>>> (setq-local let-tests-buffer-local-var 'baz) >>>> (let ((let-tests-buffer-local-var 'bar)) >>>> ;; This is failing. >>>> (should (eq 'bar (default-value 'let-tests-buffer-local-var))) >> ... >> Are you saying that `let' never changes `default-value' output? >> Unfortunately, no. > > Indeed, see the doc that Eli quoted 10 posts "ago": > > [...] ELisp manual, which describes the effect of > make-variable-buffer-local: > > A peculiar wrinkle of this feature is that binding the variable > (with =E2=80=98let=E2=80=99 or other binding constructs) does not= create > a buffer-local binding for it. Only setting the variable (with > =E2=80=98set=E2=80=99 or =E2=80=98setq=E2=80=99), while the varia= ble does not have a =E2=80=98let=E2=80=99-style > binding that was made in the current buffer, does so. > > IOW, `let` changes the binding that is "current": if the variable is > buffer-local in the current buffer it changes that buffer-local value > and otherwise it changes the global value. > [ This for "automatically buffer-local variables". ] What you say is indeed what I observe, but I do not see how it follows from the quoted manual text. When I read the above part of the manual, I see a warning about using `set'/`setq' inside `let' that binds the same variable. I think that the caveat about binding buffer-local variables should be documented. --=20 Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 11:06:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Gerd =?UTF-8?Q?M=C3=B6llmann?= Cc: 66117@debbugs.gnu.org, dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17041935222176 (code B ref 66117); Tue, 02 Jan 2024 11:06:02 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 11:05:22 +0000 Received: from localhost ([127.0.0.1]:49492 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKcaH-0000Z2-WD for submit@debbugs.gnu.org; Tue, 02 Jan 2024 06:05:22 -0500 Received: from mout01.posteo.de ([185.67.36.65]:47453) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKcaG-0000Yn-Ls for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 06:05:21 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id A9E9D240027 for <66117@debbugs.gnu.org>; Tue, 2 Jan 2024 12:05:12 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1704193512; bh=znWKfkZvdSI22F/DlFmUPPDPCSdtFdnC93ArbE3dAs0=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=MhQpHUbdgggUJ+8x+QJKy7EmvwzPtE+oKWJFD62O4FZHMCVQda6lQmS9YaIWj9LLB XDYz7EShOVprOCSAbmVWZN4jr5BxhSCp4maz16ktI5bCFMwqCQrymkD82XD+Z+34h2 c1sNtkvjHDyz6cJ2IW+Gh4S3E4XNUZ094VdrzLOUx9jlqqekU+nBBOXqScJeJh/lGm z3ab8Kfa4knlD7u1HhSm4K7YB22bbxTw60vnqUYNGWSGNkHBijEfpLuOX0krVqctNt BpGzP/+VTyroEzUYVo7P2h9PT6s8XAbkzjv896xrgKsQ8F3fJILS+c34wGUbFECkth 4UcjiG1mNnpMA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4T49475cklz6txd; Tue, 2 Jan 2024 12:05:11 +0100 (CET) From: Ihor Radchenko In-Reply-To: <878r5953ux.fsf@localhost> References: <878r919qfh.fsf@localhost> <871qboprh3.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> Date: Tue, 02 Jan 2024 11:08:22 +0000 Message-ID: <87r0j03sd5.fsf@localhost> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain Ihor Radchenko writes: > See the following two almost identical snippets that yield completely > different results depending on the present of `setq-default': > ... I believe that I now understand enough to add a new meaningful test. See the attached. Please check the comments in the test to make sure that they make sense. --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-test-src-eval-tests.el-eval-tests-default-value-Add-.patch >From dfc6dbcd844fbd8b8634b056fb441848b86311ca Mon Sep 17 00:00:00 2001 Message-ID: From: Ihor Radchenko Date: Tue, 2 Jan 2024 12:06:16 +0100 Subject: [PATCH] test/src/eval-tests.el (eval-tests/default-value): Add new test case --- test/src/eval-tests.el | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/test/src/eval-tests.el b/test/src/eval-tests.el index c1219591e40..5cf9d4e2188 100644 --- a/test/src/eval-tests.el +++ b/test/src/eval-tests.el @@ -282,25 +282,38 @@ eval-tests-defvaralias (should-error (defvaralias 'eval-tests--my-c 'eval-tests--my-d) :type 'cyclic-variable-indirection)) -(defvar eval-tests/global-var 'value) -(defvar-local eval-tests/buffer-local-var 'value) +(defvar eval-tests/global-var 'global-value) +(defvar-local eval-tests/buffer-local-var 'default-value) (ert-deftest eval-tests/default-value () ;; `let' overrides the default value for global variables. (should (default-boundp 'eval-tests/global-var)) - (should (eq 'value (default-value 'eval-tests/global-var))) - (should (eq 'value eval-tests/global-var)) - (let ((eval-tests/global-var 'bar)) - (should (eq 'bar (default-value 'eval-tests/global-var))) - (should (eq 'bar eval-tests/global-var))) + (should (eq 'global-value (default-value 'eval-tests/global-var))) + (should (eq 'global-value eval-tests/global-var)) + (let ((eval-tests/global-var 'let-value)) + (should (eq 'let-value (default-value 'eval-tests/global-var))) + (should (eq 'let-value eval-tests/global-var))) ;; `let' overrides the default value everywhere, but leaves ;; buffer-local values unchanged in current buffer and in the ;; buffers where there is no explicitly set buffer-local value. (should (default-boundp 'eval-tests/buffer-local-var)) - (should (eq 'value (default-value 'eval-tests/buffer-local-var))) - (should (eq 'value eval-tests/buffer-local-var)) + (should (eq 'default-value (default-value 'eval-tests/buffer-local-var))) + (should (eq 'default-value eval-tests/buffer-local-var)) (with-temp-buffer - (let ((eval-tests/buffer-local-var 'bar)) - (should (eq 'bar (default-value 'eval-tests/buffer-local-var))) - (should (eq 'bar eval-tests/buffer-local-var))))) + (let ((eval-tests/buffer-local-var 'let-value)) + (should (eq 'let-value (default-value 'eval-tests/buffer-local-var))) + (should (eq 'let-value eval-tests/buffer-local-var)))) + ;; When current buffer has explicit buffer-local binding, `let' does + ;; not alter the default binding. + (with-temp-buffer + (setq-local eval-tests/buffer-local-var 'local-value) + (let ((eval-tests/buffer-local-var 'let-value)) + ;; Let in a buffer with local binding does not change the + ;; default value for variable. + (should (eq 'default-value (default-value 'eval-tests/buffer-local-var))) + (should (eq 'let-value eval-tests/buffer-local-var)) + (with-temp-buffer + ;; We are in a new buffer - `eval-tests/buffer-local-var' has its global default value. + (should (eq 'default-value (default-value 'eval-tests/buffer-local-var))) + (should (eq 'default-value eval-tests/buffer-local-var)))))) ;;; eval-tests.el ends here -- 2.42.0 --=-=-= Content-Type: text/plain -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at --=-=-=-- From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 11:09:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17041937012467 (code B ref 66117); Tue, 02 Jan 2024 11:09:01 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 11:08:21 +0000 Received: from localhost ([127.0.0.1]:49496 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKcdA-0000dj-RL for submit@debbugs.gnu.org; Tue, 02 Jan 2024 06:08:21 -0500 Received: from mail-lj1-x22d.google.com ([2a00:1450:4864:20::22d]:57850) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKcd8-0000dV-Pi for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 06:08:19 -0500 Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-2cceb90b398so35534311fa.3 for <66117@debbugs.gnu.org>; Tue, 02 Jan 2024 03:08:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704193690; x=1704798490; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GqPDaHjaCXbPJPlN5tyxc/WS9gj74LyYCMtJOoM0F6I=; b=ecQtDNpgOdruvbU72IGaB1FBHd95LrwXQmvKAvGVmnxHDt4wN0NRPMpL2rk4x7BK5F /HPmGehirRFmX8gOLIAC7YocXzGPwWtMkYDS/DjJ8p6Ujr5CYHJ7BlEwNH56Q1/Mg7gD 59HuirYONfunHdVS99qHXFzJzV+bX1RNpxIqw1oe9ZTyJwTxfLHt/Aaqzu6N75xtq5Oe d6EYWdp+sBRkpBcX0RVuQrNzGt/gi1Br2mXwRQ9GgfxAPQ3z6+qk2qQqo/RPyMuXnLvP dBBo8FLk7b3AkhNFdIWAE+81e96RirdamQQl48H4BeIVDXZSj/T1FJS9LDQ6woaTNDat o9Rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704193690; x=1704798490; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=GqPDaHjaCXbPJPlN5tyxc/WS9gj74LyYCMtJOoM0F6I=; b=ogorvNBhcfVM05KDGNBoBwSBFeEoreKPYB5Cefp+H7S3GZhy7XATUhQObg6dgkFfxZ kboelQIBMua3jBdQZwUxUNvwiGXZtjuCGrnr39EHBwKlGPeWbdASRB00tzCHHXX8zIEw XvWUxlrJYiU2T2qm3twJ1HhIrNiR6+1+YgdjQrUGpd5HKFJ5b4c/2n+7EzoDVu82XQqB qUjLbNe27KkC2ciKLmMLgEW6n0/C/3s8NjSmCTfW0QHLVkBkdaTd2WSFdvqSH0vYau+c 6TmVqgx0gm3lDLC3EhfEb5QLDuN/m6kNzrArjvVjqXXxPTZyHYlXR1BxwZF1DfVMj5Yq ZFgA== X-Gm-Message-State: AOJu0Yzzmaw12So1emMk2UloCRyxXYrIFKX7MTrmOd17fO+2ydTjF0Hp oN4sjL92eWlOD1Ht6Z1xQ9qhSUyA7Yg= X-Google-Smtp-Source: AGHT+IF0ce24y0S9Dhv51gWqHVWoInyaQ4JVPQmPsBpgs77ZyAbTYM85fXVqzlzp+0NMleSQKhrVfg== X-Received: by 2002:a2e:6e0d:0:b0:2cc:9435:a5f9 with SMTP id j13-20020a2e6e0d000000b002cc9435a5f9mr6925752ljc.36.1704193689744; Tue, 02 Jan 2024 03:08:09 -0800 (PST) Received: from Pro.fritz.box (pd9e36b7e.dip0.t-ipconnect.de. [217.227.107.126]) by smtp.gmail.com with ESMTPSA id h16-20020aa7c950000000b0055534d5e75csm8941487edt.6.2024.01.02.03.08.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jan 2024 03:08:09 -0800 (PST) From: Gerd =?UTF-8?Q?M=C3=B6llmann?= In-Reply-To: <87wmss3t31.fsf@localhost> (Ihor Radchenko's message of "Tue, 02 Jan 2024 10:52:50 +0000") References: <878r919qfh.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <8734vg6b62.fsf@localhost> <87wmss3t31.fsf@localhost> Date: Tue, 02 Jan 2024 12:08:09 +0100 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Ihor Radchenko writes: > Gerd M=C3=B6llmann writes: > >>>>>> C-h f default-value explains this: >>>>>> >>>>>> Return SYMBOL=E2=80=99s default value. >>>>>> This is the value that is seen in buffers that do not have their o= wn values >>>>>> for this variable. >>>>> >>> ... >>> I am sorry, but I do not see how the docstring explains what is >>> happening there. Because it is not clear what `let' does with the >>> default value. >> >> Sorry for not being clear. What I wanted to hint at is the part of the >> doc string that reads "that do not have their own values...", which >> means that what default-value returns depends whether or not SYMBOL got >> its own value in the buffer, and that depends on the presence of lets, >> and so on. > > It is not how I read this. AFAIU, `default-value' returns the value that > is used for buffers where the value is not explicitly set. Calling > `default-value' from inside the buffer where the value is set does not > change that global default value and should not change what > `default-value' returns. > > And indeed > > (defvar-local yant/test 'default-value) > (with-temp-buffer > (setq yant/test 'local-value) > (default-value 'yant/test)) ; =3D> 'default-value Maybe the documentation could be changed to be clearer, but I'm afraid I don't know how, because I think it describes 100% what is happening: the setq creates a buffer-local binding in the temp buffer, and default-value returns the value that is used in the case that a buffer does _not_ have its own value, which is the value set in the defvar-local... From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 11:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Gerd =?UTF-8?Q?M=C3=B6llmann?= Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17041940573070 (code B ref 66117); Tue, 02 Jan 2024 11:15:02 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 11:14:17 +0000 Received: from localhost ([127.0.0.1]:49503 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKciu-0000nR-OG for submit@debbugs.gnu.org; Tue, 02 Jan 2024 06:14:17 -0500 Received: from mout02.posteo.de ([185.67.36.66]:53237) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKcis-0000n7-PB for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 06:14:15 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id C44EE240106 for <66117@debbugs.gnu.org>; Tue, 2 Jan 2024 12:14:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1704194046; bh=MDjuJF90Hr+ttHTT6Dm0wxLE5QaLIHCdyhmdIxKX1eM=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=W7Z+fEq2da7Wx5sIlab2S7Mj6ln0UrPRM4jB4V7aepfQ+afFnL0yHSX5XIHa2KydD UGqzGU2+RVhpADBFsfE5izo3XJ27hml/2H1fL/dQeYaO9HOFuyH/NXa6dJKITPkqx6 S1rYBjYys5BnYym1OWDRtJKhWv6QCVjjHrSk8NjVznpz1CVYFXwQuusPqrWRFZzaVS 55JV0sVUR60RvA8Q3XU1MZmmnXhbb6on14p6hSlIU+F/ed1uXXSA/jQO+p227kCghp ov+/r0zO+kmA9EGYbLrF5hwwKHvCVKnUAVwSPkjzezQB6vT82apNZ7meTYQC989rhZ by058qLjA7B2Q== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4T49GP6TKwz6tw1; Tue, 2 Jan 2024 12:14:05 +0100 (CET) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <8734vg6b62.fsf@localhost> <87wmss3t31.fsf@localhost> Date: Tue, 02 Jan 2024 11:17:17 +0000 Message-ID: <87le983rya.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Gerd M=C3=B6llmann writes: >> (defvar-local yant/test 'default-value) >> (with-temp-buffer >> (setq yant/test 'local-value) >> (default-value 'yant/test)) ; =3D> 'default-value > > Maybe the documentation could be changed to be clearer, but I'm afraid I > don't know how, because I think it describes 100% what is happening: the > setq creates a buffer-local binding in the temp buffer, and > default-value returns the value that is used in the case that a buffer > does _not_ have its own value, which is the value set in the > defvar-local... We clearly have some misunderstanding. Doesn't your statement contradict the earlier one: >>>> doc string that reads "that do not have their own values...", which >>>> means that what default-value returns depends whether or not SYMBOL= got >>>> its own value in the buffer In my example, SYMBOL does get its own value in the buffer, but `default-value' still returns 'default-value. --=20 Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 11:50:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17041961534933 (code B ref 66117); Tue, 02 Jan 2024 11:50:02 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 11:49:13 +0000 Received: from localhost ([127.0.0.1]:49524 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKdGi-0001HU-Md for submit@debbugs.gnu.org; Tue, 02 Jan 2024 06:49:13 -0500 Received: from mail-lf1-x12f.google.com ([2a00:1450:4864:20::12f]:49556) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKdGZ-0001Gs-ID for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 06:49:11 -0500 Received: by mail-lf1-x12f.google.com with SMTP id 2adb3069b0e04-50e7b9cca2fso6451545e87.3 for <66117@debbugs.gnu.org>; Tue, 02 Jan 2024 03:49:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704196135; x=1704800935; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ob7ZsgKp97q74GBCkBD40aypl+9N9U/uogulNJk1VaM=; b=TAo9HNP7UyoUXofVPv7mx1QodnpYwFl/tq236i6Ecb4jRXW9ZuM/mdI3TcCkw5P/+l K9eLax5S5OGF2/aRJLaXJm2MHbwmaaqv8D/wGnbC0LkkqijrTO5y/jJJnF6nqOmcKag9 DbfLW/nFUHH34D2BrUOGK54cR77ZprpwFa0NO7xdJRlblxm3apAaI0uMPf10a6smwG2y PmwM+1M0nopbPJpNbNBMLEyPZ8tVc+92GZHYVUukgihvylCBzYU7UjxSlEofu4n8sa8/ qnsmk/NmHF2rQ5LpAdY8jdpJ1qvyT0ykB1svuL3Fbld+p/qDTKh1JR5caHCpiy4BA8Gj WNbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704196135; x=1704800935; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ob7ZsgKp97q74GBCkBD40aypl+9N9U/uogulNJk1VaM=; b=BNP7HknzzTgDXyGJCAKSekg56/6fChMG4Okm2VytyQfQzMESpYc32isNWZAYgd3g0B RqgNAOnAvICIVJz4dfZ5luvCEns1b075MMRCmbvH16lomqvlQPKcbhYhV9Kys+9GBFnb 6uIi8ES3x5to3g46+NvSsUjbG+r4le6wUusRPmpUMWb6LI+1MwZgGimenxjLdOu6VpfX at4Pn1NYdOX/4apu8GCVFz3W/glgbnrxk7yT4+WqIACcYLvfiwfNsDGeOxjDhkN04o5f 3zNloPQZTa8RUQpolBLAjCk2RpRU2z9S7Pf4v0Dbh4YWWEEstzdGyiDNIUjYuATkJlrH HgUA== X-Gm-Message-State: AOJu0Yz3kpX2BNqQWz84troQyDr3H8zjeA7csyRekyTef6Xfad91C39B C7J5xpA7Ws5d9AfJja7m0KVS3q4ncMM= X-Google-Smtp-Source: AGHT+IGIDsUiSKbqsvZk+fDjCgMDn5T9994XEYmMfp6u6AE1LE/Jj6cMJlLQ0Q/Q1nXWQbrWDyi2Tg== X-Received: by 2002:a05:6512:b0d:b0:50e:87d2:e2c9 with SMTP id w13-20020a0565120b0d00b0050e87d2e2c9mr6380637lfu.92.1704196134795; Tue, 02 Jan 2024 03:48:54 -0800 (PST) Received: from Pro.fritz.box (pd9e36b7e.dip0.t-ipconnect.de. [217.227.107.126]) by smtp.gmail.com with ESMTPSA id fe1-20020a056402390100b0055515b40464sm5100300edb.81.2024.01.02.03.48.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jan 2024 03:48:54 -0800 (PST) From: Gerd =?UTF-8?Q?M=C3=B6llmann?= In-Reply-To: <87le983rya.fsf@localhost> (Ihor Radchenko's message of "Tue, 02 Jan 2024 11:17:17 +0000") References: <878r919qfh.fsf@localhost> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <8734vg6b62.fsf@localhost> <87wmss3t31.fsf@localhost> <87le983rya.fsf@localhost> Date: Tue, 02 Jan 2024 12:48:52 +0100 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Ihor Radchenko writes: > Gerd M=C3=B6llmann writes: > >>> (defvar-local yant/test 'default-value) >>> (with-temp-buffer >>> (setq yant/test 'local-value) >>> (default-value 'yant/test)) ; =3D> 'default-value >> >> Maybe the documentation could be changed to be clearer, but I'm afraid I >> don't know how, because I think it describes 100% what is happening: the >> setq creates a buffer-local binding in the temp buffer, and >> default-value returns the value that is used in the case that a buffer >> does _not_ have its own value, which is the value set in the >> defvar-local... > > We clearly have some misunderstanding. I tend to agree :-). > Doesn't your statement contradict the earlier one: > > >>>> doc string that reads "that do not have their own values...", whi= ch > >>>> means that what default-value returns depends whether or not SYMB= OL got > >>>> its own value in the buffer > > In my example, SYMBOL does get its own value in the buffer, but > `default-value' still returns 'default-value. I assume you mean the example from above? This one: >>> (defvar-local yant/test 'default-value) >>> (with-temp-buffer >>> (setq yant/test 'local-value) >>> (default-value 'yant/test)) ; =3D> 'default-value If so, the "gets its own ... _but_ default-value still returns..." hints at the misunderstanding, maybe. It should be something like "because it gets its own..., default-value returns...". Maybe one could reformulate the doc string of default-value like this? Return SYMBOL=E2=80=99s default value. This is the value that is seen in buffers that do not have their own valu= es for this variable. =3D> Return SYMBOL=E2=80=99s default value. This is the value that would be seen in the buffer if it didn't have its own value. Although I find the original clearer... From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 11:58:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.17041966625692 (code B ref 66117); Tue, 02 Jan 2024 11:58:01 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 11:57:42 +0000 Received: from localhost ([127.0.0.1]:49529 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKdOw-0001Ti-2M for submit@debbugs.gnu.org; Tue, 02 Jan 2024 06:57:42 -0500 Received: from mail-ej1-x633.google.com ([2a00:1450:4864:20::633]:43245) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKdOt-0001TS-3I for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 06:57:40 -0500 Received: by mail-ej1-x633.google.com with SMTP id a640c23a62f3a-a2768b78a9eso641894666b.0 for <66117@debbugs.gnu.org>; Tue, 02 Jan 2024 03:57:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704196650; x=1704801450; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NbulWKOdStaG+B0Z8/3Sde6MiOD/FDfR8y5EYIrgJZ4=; b=Ie+e0IiSPIcVTahVD2S4A0P9LcIyd/DaRUunVw5vTOZCEMsDoGRbIbueJ/AsLCG0T2 qjIRJuu5JvjCTusFWBZ1Zajkv7YJSdqQd+LNHIy6JCdcn7aWfgTwXDcOkK4errchqdxd BaHFz1jjG93dnPBRTb8FgcLb1I/3vL1cTssORtnsPvtFG7xBjmYlIpxvhjG+2wwgYAzy dz61vMmj6mXlhoZRQKPOqocTZ1+ggTpX5zGMfgDoNf25sNfxYQDOlym810ymJWSStdSR H54BnkD2wQmDDo78VXuEg86mlyqhY+i8GRqDU+mIzWV3HVpufhfKRs+u/Skv2ySBCiWr R2ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704196650; x=1704801450; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=NbulWKOdStaG+B0Z8/3Sde6MiOD/FDfR8y5EYIrgJZ4=; b=BZF+j1qlG+357ERL5u2X+y8DKbWI7/SUb6pEBOot4VlE0G3Ngbl5nw+cmL2lP0/+LD U67kWlIIoy6BqhSr7irv/bcmvDrMvKOs5ieZH/BUVtShOLc3mBwjG9PensiD0oy7zVwY D8f5EPT/G+/Ur8XlFXEPCZbPagCvR/Fe4Jtxp2oLDD2IjZvAtBSvne5tkhQdokI/u4QK OMfGelb/+WoS5OXx7vvtTXXkSHxr2wf8UtIGprn4cUXfy4sgawj77R08L1UvzDHBzPGM UY0pxiIMBYZTec6pfPpsj2wNLU9Caq1w2c9BTAt/IBK9FatN1Z2AZyPgJwCtjwyTXjm5 UZ9w== X-Gm-Message-State: AOJu0YzylmD3DpNTK45Fzwulyz00Uu6Qya9u3PEOXQ5j8FSgchEfoySw myJzg34GpiB1sGNtiTa4Sa5g952Bonk= X-Google-Smtp-Source: AGHT+IG/E18Oj6Pc23MqTZ9dceMkvWWo3Q4s3Rv3l11CUZEy117HYU5Uy/V/8hGfYJT74cctBuExyg== X-Received: by 2002:a17:906:90d:b0:a24:1e0e:ccb2 with SMTP id i13-20020a170906090d00b00a241e0eccb2mr16220426ejd.61.1704196650346; Tue, 02 Jan 2024 03:57:30 -0800 (PST) Received: from Pro.fritz.box (pd9e36b7e.dip0.t-ipconnect.de. [217.227.107.126]) by smtp.gmail.com with ESMTPSA id jt6-20020a170906dfc600b00a234085cfa2sm11740475ejc.190.2024.01.02.03.57.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jan 2024 03:57:30 -0800 (PST) From: Gerd =?UTF-8?Q?M=C3=B6llmann?= In-Reply-To: <87ttnw3sqx.fsf@localhost> (Ihor Radchenko's message of "Tue, 02 Jan 2024 11:00:06 +0000") References: <878r919qfh.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <87ttnw3sqx.fsf@localhost> Date: Tue, 02 Jan 2024 12:57:28 +0100 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Ihor Radchenko writes: > Stefan Monnier writes: > >>>>> (defvar-local let-tests-buffer-local-var 'value) >>>>> (with-temp-buffer >>>>> (setq-local let-tests-buffer-local-var 'baz) >>>>> (let ((let-tests-buffer-local-var 'bar)) >>>>> ;; This is failing. >>>>> (should (eq 'bar (default-value 'let-tests-buffer-local-var))) >>> ... >>> Are you saying that `let' never changes `default-value' output? >>> Unfortunately, no. >> >> Indeed, see the doc that Eli quoted 10 posts "ago": >> >> [...] ELisp manual, which describes the effect of >> make-variable-buffer-local: >> >> A peculiar wrinkle of this feature is that binding the variable >> (with =E2=80=98let=E2=80=99 or other binding constructs) does no= t create >> a buffer-local binding for it. Only setting the variable (with >> =E2=80=98set=E2=80=99 or =E2=80=98setq=E2=80=99), while the vari= able does not have a =E2=80=98let=E2=80=99-style >> binding that was made in the current buffer, does so. >> >> IOW, `let` changes the binding that is "current": if the variable is >> buffer-local in the current buffer it changes that buffer-local value >> and otherwise it changes the global value. >> [ This for "automatically buffer-local variables". ] > > What you say is indeed what I observe, but I do not see how it follows > from the quoted manual text. When I read the above part of the manual, I > see a warning about using `set'/`setq' inside `let' that binds the same > variable. But it is talking about make-variable-buffer-local, so "the variable" is a local variable, IMHO. > I think that the caveat about binding buffer-local variables should be > documented. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 12:06:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Gerd =?UTF-8?Q?M=C3=B6llmann?= Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170419710716756 (code B ref 66117); Tue, 02 Jan 2024 12:06:02 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 12:05:07 +0000 Received: from localhost ([127.0.0.1]:49537 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKdW7-0004MC-2i for submit@debbugs.gnu.org; Tue, 02 Jan 2024 07:05:07 -0500 Received: from mout01.posteo.de ([185.67.36.65]:37495) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKdW3-0004LY-CD for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 07:05:06 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 57A2A24002B for <66117@debbugs.gnu.org>; Tue, 2 Jan 2024 13:04:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1704197095; bh=/wds4c0qzb/MmJPUlJa/tYrYHXtjqSQlISKojGp/uDM=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=E7RmJQHdEH9GV25tKbYzxvqwGT6jVULuTtJ2Ixh+/k7/5+C1yX4j/trvNSWJowv3i hxrf2PvFnQRENCVgIGcmVG8lWF3EkBh2y+ihw0P//e+wWeli2zeO/+grKGAYwchn2w 7xYzo1FZrylaNO0hYKNS84XmP4GKLz1/XNJORFCbNKXGzGErUmtjIw5wQh2PySD5Gp eWR9F29v2sECBqKxSwx4VK8tL6LbrMM9TxH8tEQoRSYBpl6Qb4dCuTF/Q/+yI4tO6E JIHK8dZUaTejNhwcj88MY/Db6H/H9a+LEv5z19lF5ZWBprs0tbEahUp7Dy4CUgdbhS AtAtHLfekp1Rw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4T4BP11g4Pz6tyQ; Tue, 2 Jan 2024 13:04:53 +0100 (CET) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <8734vg6b62.fsf@localhost> <87wmss3t31.fsf@localhost> <87le983rya.fsf@localhost> Date: Tue, 02 Jan 2024 12:07:59 +0000 Message-ID: <875y0caqg0.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Gerd M=C3=B6llmann writes: >> In my example, SYMBOL does get its own value in the buffer, but >> `default-value' still returns 'default-value. > > I assume you mean the example from above? This one: Yes. >>>> (defvar-local yant/test 'default-value) >>>> (with-temp-buffer >>>> (setq yant/test 'local-value) >>>> (default-value 'yant/test)) ; =3D> 'default-value > > If so, the "gets its own ... _but_ default-value still returns..." hints > at the misunderstanding, maybe. It should be something like "because it > gets its own..., default-value returns...". > > Maybe one could reformulate the doc string of default-value like this? > > Return SYMBOL=E2=80=99s default value. > This is the value that is seen in buffers that do not have their own va= lues > for this variable. > > =3D> > > Return SYMBOL=E2=80=99s default value. > This is the value that would be seen in the buffer if it didn't have > its own value. > > Although I find the original clearer... Both versions are actually clear for me. What was not clear for me is how the docstring explains my `let' example. --=20 Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 12:09:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170419728317046 (code B ref 66117); Tue, 02 Jan 2024 12:09:02 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 12:08:03 +0000 Received: from localhost ([127.0.0.1]:49541 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKdYw-0004Qs-Mp for submit@debbugs.gnu.org; Tue, 02 Jan 2024 07:08:03 -0500 Received: from mail-lf1-x131.google.com ([2a00:1450:4864:20::131]:52286) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKdYr-0004QJ-W1 for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 07:08:01 -0500 Received: by mail-lf1-x131.google.com with SMTP id 2adb3069b0e04-50e7aed09adso7186978e87.0 for <66117@debbugs.gnu.org>; Tue, 02 Jan 2024 04:07:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704197269; x=1704802069; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QsBapjYcxJ3sI4X4qgMygt9lFfMm0lvFBpRhI79pyI8=; b=acFv80hrjem8ozT/zwgG1cL1l+5sFlPGJKQAnNVnLF9xB9MZ2uvqVPhJ45mCpNSACE 6ZLWPPfgVfu5mHn6Gf410t3QP0MBEEf8fpndkKF5XE1FznKiUrsC+tpnBErlvSJ9jNC+ wJkbsxnvWnUvd0pPebbaOY143cbF9HbMw7meE9epMaayYejQZC5NqGSV4C/e7GRscQ2w Q5UI4IjtW6AsTIV6Oq0r+NkgaE9TbmadGvBK0JBySqnwBtdnWfYIM3e9zQSuC3JBtFmb hXXkSWuBKpYiv2Fhp7FrWD3kIaxZMR2GLhOVIhc+S7ptm7bf6ajXE5OvUopXtAkYRSK5 ZjOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704197269; x=1704802069; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=QsBapjYcxJ3sI4X4qgMygt9lFfMm0lvFBpRhI79pyI8=; b=p17k8CJ1ano+t0ZPH3Q8ZWz9GT81zYpRGPPoQjZgp1bd10KceLiMo6jOtUMCbEC9Nm Ha6swv1HZ53o5xK6IbmjaU+BjxunGC27TOi4x8AbM1tO/QjFBg7N2c9QgLYL2C6pzESr QL4VN1J7KI6L/IiXPDvgOGSTWQRpkfGWDAYJThmxcmE9KXMKc5QGH4uaDilF6tzI7zly bpgY0HcwwJj242RNGgreHKxavNwZ/MtnXmn9kKAQUSNb+kpFgZKHHydTbAEPalAtdMrz Sg461EavKwiwMd+kMNooDtj0qFvhvbpm2i4OHjxsl5luZ4zlhhTcTDJpZWLnhl1v54DO ZPMg== X-Gm-Message-State: AOJu0Yy5sRgI2eJojA0pQ7J2PIZAxLYl0pPrmMddBFoLLQti6E9+6ZXQ kXmTKragdzaxMmHp3QkHLBn0HQI1Mh8= X-Google-Smtp-Source: AGHT+IGCrFfszhsUdUJzhFaAAJG/QldVaCiFqhSduow+GuY0r9oone1dcUsHjrODSBcv738udytk5Q== X-Received: by 2002:a05:6512:3a91:b0:50e:8106:9e86 with SMTP id q17-20020a0565123a9100b0050e81069e86mr6270887lfu.43.1704197269353; Tue, 02 Jan 2024 04:07:49 -0800 (PST) Received: from Pro.fritz.box (pd9e36b7e.dip0.t-ipconnect.de. [217.227.107.126]) by smtp.gmail.com with ESMTPSA id jj17-20020a170907985100b00a269ca865afsm11669944ejc.224.2024.01.02.04.07.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jan 2024 04:07:48 -0800 (PST) From: Gerd =?UTF-8?Q?M=C3=B6llmann?= In-Reply-To: <875y0caqg0.fsf@localhost> (Ihor Radchenko's message of "Tue, 02 Jan 2024 12:07:59 +0000") References: <878r919qfh.fsf@localhost> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <8734vg6b62.fsf@localhost> <87wmss3t31.fsf@localhost> <87le983rya.fsf@localhost> <875y0caqg0.fsf@localhost> Date: Tue, 02 Jan 2024 13:07:47 +0100 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Ihor Radchenko writes: > Gerd M=C3=B6llmann writes: > >>> In my example, SYMBOL does get its own value in the buffer, but >>> `default-value' still returns 'default-value. >> >> I assume you mean the example from above? This one: > > Yes. > >>>>> (defvar-local yant/test 'default-value) >>>>> (with-temp-buffer >>>>> (setq yant/test 'local-value) >>>>> (default-value 'yant/test)) ; =3D> 'default-value >> >> If so, the "gets its own ... _but_ default-value still returns..." hints >> at the misunderstanding, maybe. It should be something like "because it >> gets its own..., default-value returns...". >> >> Maybe one could reformulate the doc string of default-value like this? >> >> Return SYMBOL=E2=80=99s default value. >> This is the value that is seen in buffers that do not have their own v= alues >> for this variable. >> >> =3D> >> >> Return SYMBOL=E2=80=99s default value. >> This is the value that would be seen in the buffer if it didn't have >> its own value. >> >> Although I find the original clearer... > > Both versions are actually clear for me. What was not clear for me is > how the docstring explains my `let' example. Sorry, I've lost track what the let example is.=20 From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 12:09:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Gerd =?UTF-8?Q?M=C3=B6llmann?= Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170419730317091 (code B ref 66117); Tue, 02 Jan 2024 12:09:02 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 12:08:23 +0000 Received: from localhost ([127.0.0.1]:49544 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKdZH-0004Rb-41 for submit@debbugs.gnu.org; Tue, 02 Jan 2024 07:08:23 -0500 Received: from mout02.posteo.de ([185.67.36.66]:41333) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKdZF-0004RK-6x for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 07:08:21 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id D04D3240103 for <66117@debbugs.gnu.org>; Tue, 2 Jan 2024 13:08:12 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1704197292; bh=SowL5xTPrQ4+8eOvV2fqGZFIJnscf3n24joQrpeEHiI=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=q3IPXHf4wmsvP3iany7tV7A1EGwecSB7t3F+MOzm5kJ+aljamsUH3/G7ByjM1l1Yv 4aArs4RJ9Icl0TnougT7ittjumoUjcdcVgGTtQSRVbe6qvZcCkOiizNbhTHyHwMMY9 fpaGkqytfcbIy/Yf5WOfPcYW7VFWQmUWa+768qfQ5uOV0bTtQdl1YJXvSu/dqxd98Q e9734RU5wfqmgUawkNXcXrp1WKq1QENnDnnSIX1eVLv09Z1LjUK637XU6JQdvE9wyW gHbuEMKjEmHL9p4k0DqZIej6sJeFpcbNvmCagtcOeKh+/W1CnglIPV8bhgrDUdqzJ+ QKHkUj1Huh+ng== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4T4BSq6Cr5z6tyY; Tue, 2 Jan 2024 13:08:11 +0100 (CET) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <87ttnw3sqx.fsf@localhost> Date: Tue, 02 Jan 2024 12:11:23 +0000 Message-ID: <8734vgaqac.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Gerd M=C3=B6llmann writes: >> What you say is indeed what I observe, but I do not see how it follows >> from the quoted manual text. When I read the above part of the manual, I >> see a warning about using `set'/`setq' inside `let' that binds the same >> variable. > > But it is talking about make-variable-buffer-local, so "the variable" is > a local variable, IMHO. Of course. But my question was about what `let' does to the default value of buffer-local variables. While the manual only explains about setq/set. --=20 Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 12:13:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Gerd =?UTF-8?Q?M=C3=B6llmann?= Cc: dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier , 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170419754917521 (code B ref 66117); Tue, 02 Jan 2024 12:13:01 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 12:12:29 +0000 Received: from localhost ([127.0.0.1]:49554 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKddF-0004YX-3P for submit@debbugs.gnu.org; Tue, 02 Jan 2024 07:12:29 -0500 Received: from mout01.posteo.de ([185.67.36.65]:48575) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKddD-0004YJ-7t for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 07:12:28 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id EB1EC240027 for <66117@debbugs.gnu.org>; Tue, 2 Jan 2024 13:12:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1704197539; bh=vZRCDJRTDzzvNIiXSyGal+Rt+Cfom4kMXZIyNVRZMmY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=b/E2e+tvPn8526VS9VrUdA5YrHMJJ5n1RpKfTQukIXvOI2O43flI2i62aSsZtrRFR Ctk8h3gSurQXvjJK0iUP6EUAad4x1770uUknbvaF/yQdTE09Gci2XTEkaMgTmESVDA Bkua8frQS5Ry9CIdYq/Oi7bV8oKjExRFofGUrzLBDvBR2eGqX5muhPKf7caNm6GVnN Idozg7rJb2wP2Ot7miXZI8vUxc5sn7E/WkYAlfI0lw93foUOc1QE5o4FFQXavNsRhy Y6imSvUemYmOU9PyraHm8lybeIF4luNtvUj8rZyMSzwtrRyqzdqGyzcR1Z9N6yDZiM SLx4ew/guodKw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4T4BYY6CS0z6tsg; Tue, 2 Jan 2024 13:12:17 +0100 (CET) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <8734vg6b62.fsf@localhost> <87wmss3t31.fsf@localhost> <87le983rya.fsf@localhost> <875y0caqg0.fsf@localhost> Date: Tue, 02 Jan 2024 12:15:28 +0000 Message-ID: <87zfxo9bj3.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Gerd M=C3=B6llmann writes: >> Both versions are actually clear for me. What was not clear for me is >> how the docstring explains my `let' example. > > Sorry, I've lost track what the let example is.=20 (defvar-local eval-tests/buffer-local-var 'default-value) (with-temp-buffer (setq-local eval-tests/buffer-local-var 'local-value) (let ((eval-tests/buffer-local-var 'let-value)) ;; Let in a buffer with local binding does not change the ;; default value for variable. (should (eq 'default-value (default-value 'eval-tests/buffer-local-va= r))))) (with-temp-buffer ;; (setq-local eval-tests/buffer-local-var 'local-value) (let ((eval-tests/buffer-local-var 'let-value)) ;; Let in a buffer with local binding does not change the ;; default value for variable. (should (eq 'let-value (default-value 'eval-tests/buffer-local-var)))= )) =20=20=20=20=20=20=20=20 --=20 Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 12:58:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: 66117@debbugs.gnu.org, dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170420027719798 (code B ref 66117); Tue, 02 Jan 2024 12:58:02 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 12:57:57 +0000 Received: from localhost ([127.0.0.1]:49577 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKeLF-00059F-8H for submit@debbugs.gnu.org; Tue, 02 Jan 2024 07:57:57 -0500 Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]:55546) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKeLC-000591-Q0 for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 07:57:56 -0500 Received: by mail-ej1-x62d.google.com with SMTP id a640c23a62f3a-a27cc66d67eso215206966b.2 for <66117@debbugs.gnu.org>; Tue, 02 Jan 2024 04:57:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704200266; x=1704805066; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Dc4ZuDjlKdgRp9MoKTnZ3wSICUTDb1mco6mrPCdOwC4=; b=LW12OBKaklIOHxxvMbLyWWjsKoVjIVeGqaV4ORUmMV0OBG1t1O2Ea0OTA260/0teaP Nm4NaAqeyeRSnrUE2E9bK8384urU/WoPyYwP+82NbyatG+Zvlae4PbBXDHmGz+6URmow oHV2XpA1Kid1MdNJN9JJnQLa+dUVfg+cyhoRxqgK4g6v21Vlg+qZq6qH90/TUbJM+AfT covcVe5I3/7dmLTkCEPdWu05IvLgPZedsUTG7uo45CH5VU1x/XanqPPEx4bhD3EQ6oQ5 nZ3E+GZ2m/l7VyU/128SGVwTASZSfmk1NtebyJ5b3DCPsb963/m7l6eOTJNrM+2uVGoR MwJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704200266; x=1704805066; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Dc4ZuDjlKdgRp9MoKTnZ3wSICUTDb1mco6mrPCdOwC4=; b=b+Z6hHnpGITkhrN8kCTU7kO8kVRIoSFTJQBzKHFrllUan8nLirotnx0cRLF1Gx3QkZ 8a8Pv/6kqbHI1PvNjLZUE6JVm8ntDcd0pvR3SCfzBvRhHLQEsQYtrxHEJDbNIXtJ0nu/ c0g3Xqg/4gIGmw2R9/wNxjlAtSKU320RUFNgEzkmlVY67PVCtVvXc+PvSzuOe168xwIR tVI7w7l4f+bjXknXsS1uS21SzGF8dcjRV6QUpEEgyGHHU/gjBjSqEdkLOX6iN1DrCyNB auNmPQM0wQFpuVrmAcnASBkNwad/3VeSOFQF9yimFICarDH+IEKf2EybdmceFr9pKeYH mP3g== X-Gm-Message-State: AOJu0Yz+4xZVPmtGH3jDyD2bYLq8wXAU59OwhTgeciUCOevy9rplyy2U KXCJSRDOcFKEcrUEwTSWgTjoSctaxD4= X-Google-Smtp-Source: AGHT+IG1EZRI91NgpAmVrdkKjCMMbmb5KNK42tyZw8AKnCMRzpEGznUv19NX+FDA6IL3HMWJ1g31Mg== X-Received: by 2002:a17:906:958:b0:a1d:3b3b:8d76 with SMTP id j24-20020a170906095800b00a1d3b3b8d76mr8645800ejd.27.1704200266250; Tue, 02 Jan 2024 04:57:46 -0800 (PST) Received: from Pro.fritz.box (pd9e36b7e.dip0.t-ipconnect.de. [217.227.107.126]) by smtp.gmail.com with ESMTPSA id g1-20020a17090604c100b00a2714f1ba8asm6520391eja.160.2024.01.02.04.57.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jan 2024 04:57:45 -0800 (PST) From: Gerd =?UTF-8?Q?M=C3=B6llmann?= In-Reply-To: <87zfxo9bj3.fsf@localhost> (Ihor Radchenko's message of "Tue, 02 Jan 2024 12:15:28 +0000") References: <878r919qfh.fsf@localhost> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <8734vg6b62.fsf@localhost> <87wmss3t31.fsf@localhost> <87le983rya.fsf@localhost> <875y0caqg0.fsf@localhost> <87zfxo9bj3.fsf@localhost> Date: Tue, 02 Jan 2024 13:57:44 +0100 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Ihor Radchenko writes: > Gerd M=C3=B6llmann writes: > >>> Both versions are actually clear for me. What was not clear for me is >>> how the docstring explains my `let' example. >> >> Sorry, I've lost track what the let example is.=20 > > (defvar-local eval-tests/buffer-local-var 'default-value) > Thanks.=20 > (with-temp-buffer > (setq-local eval-tests/buffer-local-var 'local-value) > (let ((eval-tests/buffer-local-var 'let-value)) > ;; Let in a buffer with local binding does not change the > ;; default value for variable. > (should (eq 'default-value (default-value > 'eval-tests/buffer-local-var))))) I assume this is clear. Temp buffer has local value, the let changes the local (current) value, default-value determines the value as if the local values weren't there, and so on. > > (with-temp-buffer > ;; (setq-local eval-tests/buffer-local-var 'local-value) > (let ((eval-tests/buffer-local-var 'let-value)) > ;; Let in a buffer with local binding does not change the > ;; default value for variable. > (should (eq 'let-value (default-value 'eval-tests/buffer-local-var)= )))) Here, temp has no local value, so the current value is the global one. Let changes the global (current) value, and default-value picks that up. In both cases, I don't know if that's mentioned explicitly in some doc string. It's the normal behavior of let with special variables (dynamic variables). The current value that is set changes depending on circumstances. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Ihor Radchenko Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 13:07:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Gerd =?UTF-8?Q?M=C3=B6llmann?= Cc: 66117@debbugs.gnu.org, dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170420080030669 (code B ref 66117); Tue, 02 Jan 2024 13:07:02 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 13:06:40 +0000 Received: from localhost ([127.0.0.1]:49589 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKeTf-0007yb-Sh for submit@debbugs.gnu.org; Tue, 02 Jan 2024 08:06:40 -0500 Received: from mout02.posteo.de ([185.67.36.66]:60547) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKeTd-0007yM-AP for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 08:06:38 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 48BB0240105 for <66117@debbugs.gnu.org>; Tue, 2 Jan 2024 14:06:29 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1704200789; bh=z0kMNfrNMnKl51uEdSJ74KEFgdnkBqzanwl3J9kyDf4=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version: Content-Transfer-Encoding:From; b=BeuFPk/TCVvKd9nmXMz2ROYVgdX3g/jKYoI7QEYefYAMPdEbWYs/nGZHS0NpW4WQc mqEOI6kzgcBJliOJh7lNs+OQQ/CEyiriGW8DA1vKzhQTGPWPHxZ/LQ31z3AMVyHSW0 2tdWZCBhmIOzHHDghOzXrYkgR3Ml1L6okk2ulPhJkyViN08IG682rC/ZMwZcNr+5O+ V/xKKTe1JOBSreFwy8xSJngYWzju8ZRl97P0NgulhXwwerjysuUqwGlag0RBHLma+q clSqvoDFnJljLlDdY+fM78+8g2xZJ3uHgDN/3o85y/czDAAtCQ3+vAKda4J1CdsXJQ lMBZB25mFKcxA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4T4Cm332y5z6v0b; Tue, 2 Jan 2024 14:06:27 +0100 (CET) From: Ihor Radchenko In-Reply-To: References: <878r919qfh.fsf@localhost> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <8734vg6b62.fsf@localhost> <87wmss3t31.fsf@localhost> <87le983rya.fsf@localhost> <875y0caqg0.fsf@localhost> <87zfxo9bj3.fsf@localhost> Date: Tue, 02 Jan 2024 13:09:38 +0000 Message-ID: <87wmsranl9.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Gerd M=C3=B6llmann writes: >> (with-temp-buffer >> ;; (setq-local eval-tests/buffer-local-var 'local-value) >> (let ((eval-tests/buffer-local-var 'let-value)) >> ;; Let in a buffer with local binding does not change the >> ;; default value for variable. >> (should (eq 'let-value (default-value 'eval-tests/buffer-local-var= ))))) > > Here, temp has no local value, so the current value is the global one. > Let changes the global (current) value, and default-value picks that up. > > In both cases, I don't know if that's mentioned explicitly in some doc > string. It's the normal behavior of let with special variables (dynamic > variables). The current value that is set changes depending on > circumstances. AFAIK, this detail is not documented anywhere. --=20 Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 13:30:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: 66117@debbugs.gnu.org, dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170420214610313 (code B ref 66117); Tue, 02 Jan 2024 13:30:01 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 13:29:06 +0000 Received: from localhost ([127.0.0.1]:49615 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKepO-0002gH-6z for submit@debbugs.gnu.org; Tue, 02 Jan 2024 08:29:06 -0500 Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]:47307) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKepK-0002fl-Id for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 08:29:05 -0500 Received: by mail-ed1-x52e.google.com with SMTP id 4fb4d7f45d1cf-556aac11e01so230543a12.2 for <66117@debbugs.gnu.org>; Tue, 02 Jan 2024 05:29:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704202134; x=1704806934; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vryeEXM0ecN4FaoHjwHJRuAz8DdPG9cgysAorcqrwxk=; b=iq2JWrC2ZA/7zrxI4qtBeJ5LLgbqxrUwqqj5ytQVr9L5xXK4rynMrwHN0jLBZoXQaj uLi0NvAXDmWiXqkFPVbh6PC7bBI8utiIFGWL4yDatcJI9f0D3TcuBEhS28fk31E7Gf4e 6R/6o8gMOTHcDLMTPNjX41fNh5xxVY6vTKSqsdTA6uyskXqxADCMIANAblph7T4S3YxV fvYOfowJeFVRw11dTSmlJfbRP1Yx/ZiYNspoNWPOPXSuBsi2Vvxlbqug+bFMm83JFXIp Fp3npPJnIo5Ef5Ayhu9koVsI90+k7aAIYGyiWZqV00DV5e+alZVkh4+27r07Dke2ZdGS D/Tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704202134; x=1704806934; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=vryeEXM0ecN4FaoHjwHJRuAz8DdPG9cgysAorcqrwxk=; b=b49dONjWwGMmkPNRAZ/1qd02hq19CUX3VG1Pg7xZaMi6ZblM1bY2SJ6LqMb5OawHXx pK2qT3ME73DAGVuooqOA6Tzop4VTblCpjoO2m3zrEcs/ZqYFkDPuoJaEKD45ou5g37yL 1wz8HVp0X8axOknGPx7Si2h1ivJsw8n2B1pEwmGw4hH6cj49uZZhHb2OwvsC6gonYzQC fpbCRcaY31bqhJyL8vZXSECa5Lsb//rh7y+8e8RTQdvqxzp/7vr9sh6PUmp9Y2OC0l4G oawghgYUVz7hgZlBUoS4/tlqpV+tq/QvZ1E/1D82n7xsdbEdXwfQMGcjgRHC+hTvkamx kx4g== X-Gm-Message-State: AOJu0Yx6xgWegfavA/BkkkCeH0ND6VEAgGFiiwbnoRkB3E7CUd2BaC01 7Mz+KuRWtMeoQwjBYQeS+3+sS136MGA= X-Google-Smtp-Source: AGHT+IEMtdy6TkiUykoMRrLDOvOid7vWRyB1UYhAn5X1K/4I9KjbZgdPv0rQ4fU3OlTy9+Dqq7JTig== X-Received: by 2002:a50:d549:0:b0:54c:e719:64ae with SMTP id f9-20020a50d549000000b0054ce71964aemr6716927edj.94.1704202133757; Tue, 02 Jan 2024 05:28:53 -0800 (PST) Received: from Pro.fritz.box (pd9e36b7e.dip0.t-ipconnect.de. [217.227.107.126]) by smtp.gmail.com with ESMTPSA id fe1-20020a056402390100b0055515b40464sm5203564edb.81.2024.01.02.05.28.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jan 2024 05:28:53 -0800 (PST) From: Gerd =?UTF-8?Q?M=C3=B6llmann?= In-Reply-To: <87wmsranl9.fsf@localhost> (Ihor Radchenko's message of "Tue, 02 Jan 2024 13:09:38 +0000") References: <878r919qfh.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <8734vg6b62.fsf@localhost> <87wmss3t31.fsf@localhost> <87le983rya.fsf@localhost> <875y0caqg0.fsf@localhost> <87zfxo9bj3.fsf@localhost> <87wmsranl9.fsf@localhost> Date: Tue, 02 Jan 2024 14:28:51 +0100 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Ihor Radchenko writes: > Gerd M=C3=B6llmann writes: > >>> (with-temp-buffer >>> ;; (setq-local eval-tests/buffer-local-var 'local-value) >>> (let ((eval-tests/buffer-local-var 'let-value)) >>> ;; Let in a buffer with local binding does not change the >>> ;; default value for variable. >>> (should (eq 'let-value (default-value 'eval-tests/buffer-local-va= r))))) >> >> Here, temp has no local value, so the current value is the global one. >> Let changes the global (current) value, and default-value picks that up. >> >> In both cases, I don't know if that's mentioned explicitly in some doc >> string. It's the normal behavior of let with special variables (dynamic >> variables). The current value that is set changes depending on >> circumstances. > > AFAIK, this detail is not documented anywhere. elisp.info, 12.10.2 Dynamic Binding has a bit. (And, BTW, the doc string of let says it's a generalized variable? Is that right?) From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 02 Jan 2024 14:09:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: 66117@debbugs.gnu.org, dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170420451811755 (code B ref 66117); Tue, 02 Jan 2024 14:09:01 +0000 Received: (at 66117) by debbugs.gnu.org; 2 Jan 2024 14:08:38 +0000 Received: from localhost ([127.0.0.1]:49632 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKfRd-00033W-LR for submit@debbugs.gnu.org; Tue, 02 Jan 2024 09:08:37 -0500 Received: from mail-ed1-x52b.google.com ([2a00:1450:4864:20::52b]:48522) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKfRZ-00033G-91 for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 09:08:36 -0500 Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-554e902064aso6847573a12.1 for <66117@debbugs.gnu.org>; Tue, 02 Jan 2024 06:08:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704204504; x=1704809304; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=kri+hHCD+CMbtwog0+pooooMYdRG9gUhwEnbu/GX0NM=; b=VWuIDmE43tYLz/LD7LojXh2WdtPfurgZYUAuo20He9/LqflFhN99y5E3Ykrxuf2/lu +guI2tlcfkFyFt0KgAK372U/kz0vrd37AGaKnG6fUqjWJqjg8/PoXj2tpx/r3T42GSMe yREfL/dRw0mLcl4Gmq94iuI/RdrPnZon3u+AEo/uUQblI6C3tyGNmcedBEcVe5kkxGqP nz7RJeWKe/Q1GceFnfIpKeRvUfnyz8Fv7Zulohc58xWNoxIE8HEx78dkX4a/27ol0qrM WOvA3YJGjQazkk1ntAM2lxKgGkyGs11j3yWK5qut7XM5Ko1fU74wKzYhjqSUf4G1F07e LreA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704204504; x=1704809304; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=kri+hHCD+CMbtwog0+pooooMYdRG9gUhwEnbu/GX0NM=; b=KyhdbrlvaUrQBE3t5Q6GardMxRiTx0B6uW5N/kR7mG/q7d4KhAzQ8TrEsymCLmWGUd kyucLR9ReqrPXoSWTNAU0Xw6UqKYnPsxLPldwArZ9xs5JS3qKqWzV6BOqukfUJwlY1jE 2UQeoGaNnElgJnz10BjiMRV8uY5rkwfucL4IVQKKYwk7j2J4uYmHlNgT/AFCq0iAB0om sHRo/K8GgNMfeReAFWTKACjEJr9SIIA1uy4DwtfMvkjIr3TZP7qeR4G8I/9Fo1UC2DFE lPsNar0iBdE4knep7XvpAW3o8zJ+Xlj679TGYg8/Zg+z70MUddYOy5tgq++v1666MU94 ZWeA== X-Gm-Message-State: AOJu0Yzi7vsoDe5HF0Rl22P/dKC1oHyK0ebJwVtPxqUBV/ADtE8VafIk Y3u1syKbXMgJU7IczdUWRwwB5G6JKL4= X-Google-Smtp-Source: AGHT+IEWHFAdM5xMtnKBu8DMjGzLF/k+RZ17NtFG4MiqixJLc4b3VQWjumq9BOY7oir0xqIVZOvsoA== X-Received: by 2002:a17:907:9304:b0:a27:df6e:b3bc with SMTP id bu4-20020a170907930400b00a27df6eb3bcmr2054469ejc.81.1704204504147; Tue, 02 Jan 2024 06:08:24 -0800 (PST) Received: from Pro.fritz.box (pd9e36b7e.dip0.t-ipconnect.de. [217.227.107.126]) by smtp.gmail.com with ESMTPSA id kk25-20020a170907767900b00a278953ea71sm4233753ejc.91.2024.01.02.06.08.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jan 2024 06:08:23 -0800 (PST) From: Gerd =?UTF-8?Q?M=C3=B6llmann?= In-Reply-To: <87r0j03sd5.fsf@localhost> (Ihor Radchenko's message of "Tue, 02 Jan 2024 11:08:22 +0000") References: <878r919qfh.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <87r0j03sd5.fsf@localhost> Date: Tue, 02 Jan 2024 15:08:22 +0100 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Ihor Radchenko writes: > Ihor Radchenko writes: > >> See the following two almost identical snippets that yield completely >> different results depending on the present of `setq-default': >> ... > > I believe that I now understand enough to add a new meaningful test. > See the attached. Please check the comments in the test to make sure > that they make sense. Looks good to me. From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 03 Jan 2024 02:14:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: Gerd =?UTF-8?Q?M=C3=B6llmann?= , dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, 66117@debbugs.gnu.org Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170424801916583 (code B ref 66117); Wed, 03 Jan 2024 02:14:02 +0000 Received: (at 66117) by debbugs.gnu.org; 3 Jan 2024 02:13:39 +0000 Received: from localhost ([127.0.0.1]:51677 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKqlG-0004JP-Ja for submit@debbugs.gnu.org; Tue, 02 Jan 2024 21:13:38 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:59778) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKqlC-0004J7-F1 for 66117@debbugs.gnu.org; Tue, 02 Jan 2024 21:13:37 -0500 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id F16FD84553; Tue, 2 Jan 2024 21:13:25 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1704248004; bh=iWn8qfih5ioTTXDWGHK0V+P1UGTSZgQHbg+bD/KwkGU=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=mWPCgEIGe9bUAgY8cLqbhMwBbXPLWt2TxKdLOateCnCg+z0nNSIQ6TB+dfUul0GX8 4tTuk8O0NQ6PQsfmHCoX1acJrMIRM1aZK+JV/1nYDZuODpEwkXYCXGueDONBNUwLqN PBo1y3QMaKHw9J5nq4kPtyFy74uBZfmH0d4ZOV2sV3wH5nDNJmWK2DRiEXpvcTk64a aT2yGjn9LFoK37YPvpiKCg3OuMfSNPv3jrK0pc4UmhHN5QSBAMfg3hgjLdtrdc0Za4 ugKz/s2eHp2SKMJrjHh2fFryQ4K42OOqHMr0aDuk6EIGwhtdifwaRBckcwDkBSdj1O VWRWZ3jiyF3ug== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id C2E0580409; Tue, 2 Jan 2024 21:13:24 -0500 (EST) Received: from pastel (65-110-221-238.cpe.pppoe.ca [65.110.221.238]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 884DC12118A; Tue, 2 Jan 2024 21:13:24 -0500 (EST) From: Stefan Monnier In-Reply-To: <87ttnw3sqx.fsf@localhost> (Ihor Radchenko's message of "Tue, 02 Jan 2024 11:00:06 +0000") Message-ID: References: <878r919qfh.fsf@localhost> <87y1dwobey.fsf@localhost> <878r5v20gu.fsf@localhost> <83bkapl5zh.fsf@gnu.org> <83zfy9jkoh.fsf@gnu.org> <878r5tglwp.fsf@localhost> <83ttohjet0.fsf@gnu.org> <83sf41jed7.fsf@gnu.org> <87y1dtyu4y.fsf@localhost> <83plz5jdgj.fsf@gnu.org> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <87ttnw3sqx.fsf@localhost> Date: Tue, 02 Jan 2024 21:13:23 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL 0.046 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) >> Indeed, see the doc that Eli quoted 10 posts "ago": >> >> [...] ELisp manual, which describes the effect of >> make-variable-buffer-local: >> >> A peculiar wrinkle of this feature is that binding the variable >> (with =E2=80=98let=E2=80=99 or other binding constructs) does no= t create >> a buffer-local binding for it. Only setting the variable (with >> =E2=80=98set=E2=80=99 or =E2=80=98setq=E2=80=99), while the vari= able does not have a =E2=80=98let=E2=80=99-style >> binding that was made in the current buffer, does so. >> >> IOW, `let` changes the binding that is "current": if the variable is >> buffer-local in the current buffer it changes that buffer-local value >> and otherwise it changes the global value. >> [ This for "automatically buffer-local variables". ] > > What you say is indeed what I observe, but I do not see how it follows > from the quoted manual text. It follows from the first sentence: A peculiar wrinkle of this feature is that binding the variable (with =E2=80=98let=E2=80=99 or other binding constructs) does not create a buffer-local binding for it. > When I read the above part of the manual, I see a warning about using > `set'/`setq' inside `let' that binds the same variable. That's in the second sentence. > I think that the caveat about binding buffer-local variables should be > documented. Actually, let-binding works the same for all vars: it affects only the binding that's currently active. Stefan From unknown Tue Jun 17 01:47:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#66117: 30.0.50; `find-buffer-visiting' is slow when opening large number of buffers Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 03 Jan 2024 14:29:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66117 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Ihor Radchenko Cc: 66117@debbugs.gnu.org, dmitry@gutov.dev, Eli Zaretskii , mattias.engdegard@gmail.com, Stefan Monnier Received: via spool by 66117-submit@debbugs.gnu.org id=B66117.170429209528903 (code B ref 66117); Wed, 03 Jan 2024 14:29:01 +0000 Received: (at 66117) by debbugs.gnu.org; 3 Jan 2024 14:28:15 +0000 Received: from localhost ([127.0.0.1]:52031 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rL2EB-0007W7-DG for submit@debbugs.gnu.org; Wed, 03 Jan 2024 09:28:15 -0500 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]:49419) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rL2E8-0007Vt-BZ for 66117@debbugs.gnu.org; Wed, 03 Jan 2024 09:28:14 -0500 Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-555f95cc2e4so3812796a12.3 for <66117@debbugs.gnu.org>; Wed, 03 Jan 2024 06:28:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704292083; x=1704896883; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OL4+1ef2zR5LYwiQdxZtISpMgbvB2DD5vkxx1HfzakY=; b=Enx7FnYnVepWVywXlkr0s1pxtcw4I8q3p+cAZO1AFQ3DI6t+8DqxPjttgHl4J9iZ17 5nNmc+kuMxfw3cQX8hxw+0euP9iyiA7Anr0YJO60qrGlhMOKqRoO2w03EKnnNpdChNHp j0XAO1bf8R3X+fty1C8WUkU3um+iCPCe0E5+mHwXaB/1Q7Qfr/xr59csEelFK1indHcN mvFayv6DzOnw+3q9yw+AlOg0hREIraU0J02qfXg36m4Vf3OsDCChLJoDBX+GBI0hE2sD k5SzBwxLNsix4Mu7ZWNGAtuNMtaTn1y02ZkIg6JBNW1WuYqrGLPsrn4QC7DSke/1Mrfu Xgsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704292083; x=1704896883; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=OL4+1ef2zR5LYwiQdxZtISpMgbvB2DD5vkxx1HfzakY=; b=peb+g59rzKnUEAsSiAI2jTWSmOumg7D8kXKNX+NdQukHNHpVHIDZUwruiH5G5j7EtX 4ZfZyx3baAkg+sjIzURHUHpbi9oe8pQqIdNq9KRudreKzEVwJEugKkvH5uuBKMzz1LuM dHE2FgX1nO/uZMqLsiYFzzM0xmlPyFylCPDYckEk4kgqlDc/iOpmN/ILWd262IViKeln IaHFoN+DqSD58Ez4IiHYDkxLmigOt29pBv/oweiA6HKm9LFJcCTtWl/Cltbyk2IjBxEt P2NmZZQc/2/+msMCu8aoJk7rEssYFW9/IEtrx0a9XHkO8Tbze22ND3VS59bY79MKgC3o aaBQ== X-Gm-Message-State: AOJu0Yy6scbmHINUvQgsqPKj5fbnWCH6OVvv+A7Aqsvh8MIhaEEDtEZz Tt5SgDSWNs4MKReP0RnxPdLn0iOkycM= X-Google-Smtp-Source: AGHT+IFfZTHGiA9+Zbb5MRY5lCZsxoNacyL1SMy1s9Y/13oSc1CcLfYKm0pPMsqfd6T1lw5pZU/pYw== X-Received: by 2002:a17:907:9304:b0:a27:df6e:b3bc with SMTP id bu4-20020a170907930400b00a27df6eb3bcmr3088154ejc.81.1704292082927; Wed, 03 Jan 2024 06:28:02 -0800 (PST) Received: from Pro.fritz.box (p4fe3a93b.dip0.t-ipconnect.de. [79.227.169.59]) by smtp.gmail.com with ESMTPSA id l1-20020a170907914100b00a26ac037ff3sm12212404ejs.132.2024.01.03.06.28.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jan 2024 06:28:02 -0800 (PST) From: Gerd =?UTF-8?Q?M=C3=B6llmann?= In-Reply-To: ("Gerd =?UTF-8?Q?M=C3=B6llmann?="'s message of "Tue, 02 Jan 2024 14:28:51 +0100") References: <878r919qfh.fsf@localhost> <87v88xyt2a.fsf@localhost> <83o7epjaon.fsf@gnu.org> <87edfipbpf.fsf@localhost> <877cl7n0ux.fsf@localhost> <878r5953ux.fsf@localhost> <8734vg6b62.fsf@localhost> <87wmss3t31.fsf@localhost> <87le983rya.fsf@localhost> <875y0caqg0.fsf@localhost> <87zfxo9bj3.fsf@localhost> <87wmsranl9.fsf@localhost> Date: Wed, 03 Jan 2024 15:28:00 +0100 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Gerd M=C3=B6llmann writes: > (And, BTW, the doc string of let says it's a generalized variable? > Is that right?) To answer my own question: it is indeed (defvar x '(1 . 2)) (setf (let ((a x)) (cdr a)) 4) x =3D> (1 . 4)