From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1MIk50-0008A2-P9 for garchives@archives.gentoo.org; Mon, 22 Jun 2009 14:01:33 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 08974E0539; Mon, 22 Jun 2009 14:01:01 +0000 (UTC) Received: from vms173011pub.verizon.net (vms173011pub.verizon.net [206.46.173.11]) by pigeon.gentoo.org (Postfix) with ESMTP id 52F53E0539 for ; Mon, 22 Jun 2009 14:01:00 +0000 (UTC) Received: from [192.168.1.20] ([96.233.148.239]) by vms173011.mailsrvcs.net (Sun Java(tm) System Messaging Server 6.3-7.04 (built Sep 26 2008; 32bit)) with ESMTPA id <0KLN00EER89L0TS5@vms173011.mailsrvcs.net> for gentoo-amd64@lists.gentoo.org; Mon, 22 Jun 2009 09:01:00 -0500 (CDT) Message-id: <4A3F8E99.7090209@uri.edu> Date: Mon, 22 Jun 2009 10:00:57 -0400 From: "John P. Burkett" User-Agent: Thunderbird 2.0.0.21 (X11/20090608) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-amd64@lists.gentoo.org Reply-to: gentoo-amd64@lists.gentoo.org MIME-version: 1.0 To: gentoo-amd64@lists.gentoo.org Subject: Re: [gentoo-amd64] emerge -eav system failed with ati-drivers References: <4A3E721D.5090707@uri.edu> <1245606910.31323.4.camel@oddman.donahues.us.> <20090621141712.4a279357@osage.osagesoftware.com> <4A3E81EC.8080404@uri.edu> <20090621151038.062e0d70@osage.osagesoftware.com> <4A3E87D9.4000703@uri.edu> <1245617325.32641.7.camel@oddman.donahues.us.> <4A3EAC43.30004@uri.edu> <200906212305.n5LN5SMc006356@mailserv.unb.ca> In-reply-to: <200906212305.n5LN5SMc006356@mailserv.unb.ca> X-Enigmail-Version: 0.95.7 Content-type: multipart/mixed; boundary=------------020707080803010203000503 X-Archives-Salt: ba4ab641-8b76-4054-b22d-6de2048955b2 X-Archives-Hash: c19db281946ab00047e521e977a557db This is a multi-part message in MIME format. --------------020707080803010203000503 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit David Fellows wrote: > On Sun, 21 Jun 2009 17:55:15 -0400 > "John P. Burkett" wrote - >> Drake Donahue wrote: >>> Burkett asked: >>> >>> Should I back up any particular files before doing "emerge >>> =sys-kernel/gentoo-sources-2.6.22-r2"? You will simply be restoring the >>> bits that depclean removed. >>> >>> No files should need to backed up. >> Thank you David. Doing >> emerge =sys-kernel/gentoo-sources-2.6.22-r2 >> produced the following response >> emerge: there are no ebuilds to satisfy >> "=sys-kernel/gentoo-sources-2.6.22-r2" > > That is true. 2.6.22 has been removed from the portage tree. Your choices are: > 1) to find some one who still has the 2.6.22-r2 ebuild and the corrresponding > sources and patches and create an overlay from them, then use that to > emerge from. > > 2) find someone who still has the top level Makefile from 2.6.22-r2 who will > send it to you. And hope that that is all you are missing. Thank you David. On an x86 machine running kernel 2.6.17-gentoo-r4 I found /usr/src/linux-2.6.22-gentoo-r2/Makefile. I downloaded that Makefile to the /usr/src/linux-2.6.22-gentoo-r2 directory of my amd64 machine running 2.6.22-gentoo-r2. Doing "eix-sync" and "emerge ati-drivers" then produced the following response: * Found kernel source directory: * /usr/src/linux * Could not detect kernel version. * Please ensure that /usr/src/linux points to a complete set of Linux sources. * * ERROR: x11-drivers/ati-drivers-8.552-r2 failed. * Call stack: * ebuild.sh, line 49: Called pkg_setup * ati-drivers-8.552-r2.ebuild, line 70: Called linux-mod_pkg_setup * linux-mod.eclass, line 578: Called linux-info_pkg_setup * linux-info.eclass, line 696: Called die * The specific snippet of code: * get_version || die "Unable to calculate Linux Kernel version" * The die message: * Unable to calculate Linux Kernel version * * If you need support, post the topmost build error, and the call stack if relevant. * A complete build log is located at '/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/die.env'. * >>> Failed to emerge x11-drivers/ati-drivers-8.552-r2, Log file: >>> '/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/build.log' * Messages for package x11-drivers/ati-drivers-8.552-r2: * Could not detect kernel version. * Please ensure that /usr/src/linux points to a complete set of Linux sources. * * ERROR: x11-drivers/ati-drivers-8.552-r2 failed. * Call stack: * ebuild.sh, line 49: Called pkg_setup * ati-drivers-8.552-r2.ebuild, line 70: Called linux-mod_pkg_setup * linux-mod.eclass, line 578: Called linux-info_pkg_setup * linux-info.eclass, line 696: Called die * The specific snippet of code: * get_version || die "Unable to calculate Linux Kernel version" * The die message: * Unable to calculate Linux Kernel version The build log and ebuild environment files are attached. Doing "ls -l" in my /usr/src/linux directory produces a list including the following line: -rw-r--r-- 1 john john 50411 Jun 22 09:09 Makefile I'd be grateful for ideas about how to help emerge detect the kernel version. Best regards, John > > 3) Upgrade to a newer kernel. Presumably the latest stable that is compatible > with your desired driver version. > > Realistically 3 is your only reasonable option. The downside is you will have > to do a kernel configuration that is consistent with your existing > configuration. > > You will want to read the kernel upgrade guide first. > http://www.gentoo.org/doc/en/kernel-upgrade.xml > > Remember that emerging a kernel source only installs the source files. > Compiling the kernel is another step. You may already have a suitable kernel > source emerged. eselect kernel list will show which are emerged as will > ls -l /usr/src > >> I also tried >> emerge -s gentoo-sources-2.6.22-r2-osmp >> and a few other variations without finding any ebuilds. > > The osmp is a local identifying tag specified by the person that built > your kernel. The smp probably means symetric multiprocessor. No idea > what the o stands for. > >> Ideas about how to emerge the sources would be very welcome. >> > > > Dave F > > -- John P. Burkett Department of Economics University of Rhode Island Kingston, RI 02881-0808 USA phone (401) 874-9195 --------------020707080803010203000503 Content-Type: text/plain; name="build.log" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="build.log" * Determining the location of the kernel source code * Found kernel source directory: * /usr/src/linux * Could not detect kernel version. * Please ensure that /usr/src/linux points to a complete set of Linux sources. * * ERROR: x11-drivers/ati-drivers-8.552-r2 failed. * Call stack: * ebuild.sh, line 49: Called pkg_setup * ati-drivers-8.552-r2.ebuild, line 70: Called linux-mod_pkg_setup * linux-mod.eclass, line 578: Called linux-info_pkg_setup * linux-info.eclass, line 696: Called die * The specific snippet of code: * get_version || die "Unable to calculate Linux Kernel version" * The die message: * Unable to calculate Linux Kernel version * * If you need support, post the topmost build error, and the call stack if relevant. * A complete build log is located at '/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/x11-drivers/ati-drivers-8.552-r2/temp/die.env'. * --------------020707080803010203000503 Content-Type: text/plain; name="die.env" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="die.env" QUJJPWFtZDY0CkFMU0FfQ0FSRFM9CkFMU0FfUENNX1BMVUdJTlM9J2FkcGNtIGFsYXcgYXN5 bSBjb3B5IGRtaXggZHNoYXJlIGRzbm9vcCBlbXB0eSBleHRwbHVnIGZpbGUgaG9va3MgaWVj OTU4IGlvcGx1ZyBsYWRzcGEgbGZsb2F0IGxpbmVhciBtZXRlciBtbWFwX2VtdWwgbXVsYXcg bXVsdGkgbnVsbCBwbHVnIHJhdGUgcm91dGUgc2hhcmUgc2htIHNvZnR2b2wnCkFOVF9IT01F PS91c3Ivc2hhcmUvYW50CkFQQUNIRTJfTU9EVUxFUz0nYWN0aW9ucyBhbGlhcyBhdXRoX2Jh c2ljIGF1dGhfZGlnZXN0IGF1dGhuX2Fub24gYXV0aG5fZGJkIGF1dGhuX2RibSBhdXRobl9k ZWZhdWx0IGF1dGhuX2ZpbGUgYXV0aHpfZGJtIGF1dGh6X2RlZmF1bHQgYXV0aHpfZ3JvdXBm aWxlIGF1dGh6X2hvc3QgYXV0aHpfb3duZXIgYXV0aHpfdXNlciBhdXRvaW5kZXggY2FjaGUg ZGF2IGRhdl9mcyBkYXZfbG9jayBkYmQgZGVmbGF0ZSBkaXIgZGlza19jYWNoZSBlbnYgZXhw aXJlcyBleHRfZmlsdGVyIGZpbGVfY2FjaGUgZmlsdGVyIGhlYWRlcnMgaWRlbnQgaW1hZ2Vt YXAgaW5jbHVkZSBpbmZvIGxvZ19jb25maWcgbG9naW8gbWVtX2NhY2hlIG1pbWUgbWltZV9t YWdpYyBuZWdvdGlhdGlvbiBwcm94eSBwcm94eV9hanAgcHJveHlfYmFsYW5jZXIgcHJveHlf Y29ubmVjdCBwcm94eV9odHRwIHJld3JpdGUgc2V0ZW52aWYgc28gc3BlbGluZyBzdGF0dXMg dW5pcXVlX2lkIHVzZXJkaXIgdXNlcnRyYWNrIHZob3N0X2FsaWFzJwpBUkNIPWFtZDY0CkFT RkxBR1NfeDg2PS0tMzIKQVRJX1VSTD1odHRwczovL2EyNDguZS5ha2FtYWkubmV0L2YvNjc0 LzkyMDYvMC93d3cyLmF0aS5jb20vZHJpdmVycy9saW51eC8KQkFEPSQnXEVbMzE7MDFtJwpC QVNIPS9iaW4vYmFzaApCQVNIX0FSR0M9KFswXT0iMSIgWzFdPSIwIiBbMl09IjAiIFszXT0i MCIgWzRdPSIxIiBbNV09IjEiIFs2XT0iMSIgWzddPSIwIiBbOF09IjAiIFs5XT0iMSIpCkJB U0hfQVJHVj0oWzBdPSJVbmFibGUgdG8gY2FsY3VsYXRlIExpbnV4IEtlcm5lbCB2ZXJzaW9u IiBbMV09InBrZ19zZXR1cCIgWzJdPSJwa2dfc2V0dXAiIFszXT0icGtnX3NldHVwIiBbNF09 InNldHVwIikKQkFTSF9MSU5FTk89KFswXT0iNjk2IiBbMV09IjU3OCIgWzJdPSI3MCIgWzNd PSI0OSIgWzRdPSI2MzkiIFs1XT0iNjQ2IiBbNl09IjY1MSIgWzddPSIyMDQ4IiBbOF09IjIx MTIiIFs5XT0iMCIpCkJBU0hfU09VUkNFPShbMF09Ii91c3IvbGliNjQvcG9ydGFnZS9iaW4v aXNvbGF0ZWQtZnVuY3Rpb25zLnNoIiBbMV09Ii91c3IvcG9ydGFnZS9lY2xhc3MvbGludXgt aW5mby5lY2xhc3MiIFsyXT0iL3Vzci9wb3J0YWdlL2VjbGFzcy9saW51eC1tb2QuZWNsYXNz IiBbM109Ii91c3IvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy9hdGktZHJpdmVy cy04LjU1Mi1yMi5lYnVpbGQiIFs0XT0iL3Vzci9saWI2NC9wb3J0YWdlL2Jpbi9lYnVpbGQu c2giIFs1XT0iL3Vzci9saWI2NC9wb3J0YWdlL2Jpbi9lYnVpbGQuc2giIFs2XT0iL3Vzci9s aWI2NC9wb3J0YWdlL2Jpbi9lYnVpbGQuc2giIFs3XT0iL3Vzci9saWI2NC9wb3J0YWdlL2Jp bi9lYnVpbGQuc2giIFs4XT0iL3Vzci9saWI2NC9wb3J0YWdlL2Jpbi9lYnVpbGQuc2giIFs5 XT0iL3Vzci9saWI2NC9wb3J0YWdlL2Jpbi9lYnVpbGQuc2giKQpCQVNIX1ZFUlNJTkZPPShb MF09IjMiIFsxXT0iMiIgWzJdPSIzOSIgWzNdPSIxIiBbNF09InJlbGVhc2UiIFs1XT0ieDg2 XzY0LXBjLWxpbnV4LWdudSIpCkJBU0hfVkVSU0lPTj0nMy4yLjM5KDEpLXJlbGVhc2UnCkJS QUNLRVQ9JCdcRVszNDswMW0nCkJVSUxEX1BSRUZJWD0vdmFyL3RtcC9wb3J0YWdlCkJVSUxE X1RBUkdFVFM9a21vZF9idWlsZApDQVRFR09SWT14MTEtZHJpdmVycwpDQlVJTEQ9eDg2XzY0 LXBjLWxpbnV4LWdudQpDQ0FDSEVfRElSPS92YXIvdG1wL2NjYWNoZQpDREVGSU5FX2FtZDY0 PV9feDg2XzY0X18KQ0RFRklORV9kZWZhdWx0PV9fdW5peF9fCkNERUZJTkVfeDg2PV9faTM4 Nl9fCkNGTEFHUz0nLU9zIC1tYXJjaD1vcHRlcm9uIC1tdHVuZT1vcHRlcm9uIC1mb21pdC1m cmFtZS1wb2ludGVyIC1nZ2RiJwpDRkxBR1NfeDg2PS1tMzIKQ0hPU1Q9eDg2XzY0LXBjLWxp bnV4LWdudQpDSE9TVF9hbWQ2ND14ODZfNjQtcGMtbGludXgtZ251CkNIT1NUX2RlZmF1bHQ9 eDg2XzY0LXBjLWxpbnV4LWdudQpDSE9TVF94ODY9aTY4Ni1wYy1saW51eC1nbnUKQ09MUz03 MApDUk9TU0NPTVBJTEVfT1BUUz0KQ1RBUkdFVF9kZWZhdWx0PXg4Nl82NC1wYy1saW51eC1n bnUKQ1ZTX1JTSD1zc2gKQ1hYRkxBR1M9Jy1PcyAtbWFyY2g9b3B0ZXJvbiAtbXR1bmU9b3B0 ZXJvbiAtZm9taXQtZnJhbWUtcG9pbnRlciAtZ2dkYicKRD0vdmFyL3RtcC9wb3J0YWdlL3gx MS1kcml2ZXJzL2F0aS1kcml2ZXJzLTguNTUyLXIyL2ltYWdlLwpEQ0NDX1BBVEg9L3Vzci9s aWI2NC9kaXN0Y2MvYmluCkRFRkFVTFRfQUJJPWFtZDY0CkRFRklORURfUEhBU0VTPScgY29t cGlsZSBpbnN0YWxsIHBvc3RpbnN0IHBvc3RybSBwcmVpbnN0IHNldHVwIHVucGFjaycKREVQ RU5EPSQnPj14MTEtYmFzZS94b3JnLXNlcnZlci0xLjVcblx0IXgxMS1hcHBzL2F0aS1kcml2 ZXJzLWV4dHJhXG5cdD49YXBwLWFkbWluL2VzZWxlY3QtMS4wLjlcblx0YXBwLWFkbWluL2Vz ZWxlY3Qtb3BlbmdsXG5cdGFtZDY0PyAoIGFwcC1lbXVsYXRpb24vZW11bC1saW51eC14ODYt eGxpYnMgKVxuXHRhY3BpPyAoXG5cdFx0eDExLWFwcHMveGF1dGhcblx0XHRzeXMtcG93ZXIv YWNwaWRcblx0KVxuXHR4MTEtbGlicy9saWJYcmFuZHJcblx0Pj1zeXMtYXBwcy9wb3J0YWdl LTIuMS4xLXIxXG5cdHgxMS1wcm90by94Zjg2bWlzY3Byb3RvXG5cdHgxMS1wcm90by94Zjg2 dmlkbW9kZXByb3RvXG5cdHgxMS1wcm90by9pbnB1dHByb3RvXG5cdCE8eDExLWRyaXZlcnMv YXRpLWRyaXZlcnMtOC41NTItcjEgIGtlcm5lbF9saW51eD8gKCB2aXJ0dWFsL2xpbnV4LXNv dXJjZXMgKSBrZXJuZWxfbGludXg/ICggdmlydHVhbC9tb2R1dGlscyApXG5cdHN5cy1hcHBz L3NlZCcKREVTQ1JJUFRJT049J0F0aSBwcmVjb21waWxlZCBkcml2ZXJzIGZvciByZWNlbnQg Y2hpcHNldHMnCkRFU1RUUkVFPS91c3IKRElST1BUSU9OUz0tbTA3NTUKRElSU1RBQ0s9KCkK RElTUExBWT06MC4wCkRJU1RDQ19MT0c9CkRJU1RDQ19WRVJCT1NFPTAKRElTVERJUj0vdXNy L3BvcnRhZ2UvZGlzdGZpbGVzCkVBUEk9MApFQlVJTEQ9L3Vzci9wb3J0YWdlL3gxMS1kcml2 ZXJzL2F0aS1kcml2ZXJzL2F0aS1kcml2ZXJzLTguNTUyLXIyLmVidWlsZApFQlVJTERfRVhJ VF9TVEFUVVNfRklMRT0vdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJz LTguNTUyLXIyLy5leGl0X3N0YXR1cwpFQlVJTERfTUFTVEVSX1BJRD0xNDI0NwpFQlVJTERf UEhBU0U9c2V0dXAKRUJVSUxEX1NIX0FSR1M9c2V0dXAKRUNMQVNTRElSPS91c3IvcG9ydGFn ZS9lY2xhc3MKRUNMQVNTX0RFUFRIPTAKRURJVE9SPS9iaW4vbmFubwpFTElCQz1nbGliYwpF TUVSR0VfRlJPTT1lYnVpbGQKRU1VTFRJTElCX1BLRz10cnVlCkVORENPTD0kJ1xFW0FcRVs3 MEMnCkVQQVRDSF9FWENMVURFPQpFUEFUQ0hfRk9SQ0U9bm8KRVBBVENIX01VTFRJX01TRz0n QXBwbHlpbmcgdmFyaW91cyBwYXRjaGVzIChidWdmaXhlcy91cGRhdGVzKSAuLi4nCkVQQVRD SF9PUFRTPSctZzAgLUUgLS1uby1iYWNrdXAtaWYtbWlzbWF0Y2gnCkVQQVRDSF9TSU5HTEVf TVNHPQpFUEFUQ0hfU09VUkNFPS92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRy aXZlcnMtOC41NTItcjIvd29yay9wYXRjaApFUEFUQ0hfU1VGRklYPXBhdGNoLmJ6MgpFVUlE PTAKRVhFT1BUSU9OUz0tbTA3NTUKRkVBVFVSRVM9J2NjYWNoZSBkaXN0bG9ja3MgZml4cGFj a2FnZXMgcGFyYWxsZWwtZmV0Y2ggcHJvdGVjdC1vd25lZCBzYW5kYm94IHNmcGVybXMgc3Ry aWN0IHVubWVyZ2Utb3JwaGFucyB1c2VyZmV0Y2gnCkZJTEVTRElSPS91c3IvcG9ydGFnZS94 MTEtZHJpdmVycy9hdGktZHJpdmVycy9maWxlcwpGVU5DTkFNRT0oWzBdPSJkaWUiIFsxXT0i bGludXgtaW5mb19wa2dfc2V0dXAiIFsyXT0ibGludXgtbW9kX3BrZ19zZXR1cCIgWzNdPSJw a2dfc2V0dXAiIFs0XT0icWFfY2FsbCIgWzVdPSJlYnVpbGRfcGhhc2UiIFs2XT0iZWJ1aWxk X3BoYXNlX3dpdGhfaG9va3MiIFs3XT0iZHluX3NldHVwIiBbOF09ImVidWlsZF9tYWluIiBb OV09Im1haW4iKQpHQ0NfU1BFQ1M9CkdES19VU0VfWEZUPTEKR09PRD0kJ1xFWzMyOzAxbScK R1JPVVBTPSgpCkdVSUxFX0xPQURfUEFUSD0vdXNyL3NoYXJlL2d1aWxlLzEuOApHX0ZJTEVO QU1FX0VOQ09ESU5HPUBsb2NhbGUKSElMSVRFPSQnXEVbMzZtJwpIT01FPS92YXIvdG1wL3Bv cnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtOC41NTItcjIvaG9tZWRpcgpIT01FUEFH RT1odHRwOi8vd3d3LmF0aS5jb20KSE9TVE5BTUU9bWljcm93YXkKSE9TVFRZUEU9eDg2XzY0 CklGUz0kJyBcdFxuJwpJTkhFUklURUQ9J3Rvb2xjaGFpbi1mdW5jcyBwb3J0YWJpbGl0eSB2 ZXJzaW9uYXRvciBtdWx0aWxpYiBsaW51eC1pbmZvIGxpbnV4LW1vZCBldXRpbHMnCklOUFVU X0RFVklDRVM9J2tleWJvYXJkIG1vdXNlJwpJTlNERVNUVFJFRT0KSU5TT1BUSU9OUz0tbTA2 NDQKSVVTRT0nYWNwaSBkZWJ1ZyAga2VybmVsX2xpbnV4JwpKQVZBQz0vZXRjL2phdmEtY29u ZmlnLTIvY3VycmVudC1zeXN0ZW0tdm0vYmluL2phdmFjCkpBVkFDQ19IT01FPS91c3Ivc2hh cmUvamF2YWNjLwpKQVZBX0hPTUU9L2V0Yy9qYXZhLWNvbmZpZy0yL2N1cnJlbnQtc3lzdGVt LXZtCkpES19IT01FPS9ldGMvamF2YS1jb25maWctMi9jdXJyZW50LXN5c3RlbS12bQpLREVE SVJTPS91c3IKS0VSTkVMPWxpbnV4CktFUk5FTF9BQkk9YW1kNjQKS0VSTkVMX0RJUj0vdXNy L3NyYy9saW51eApLRVlXT1JEUz0nYW1kNjQgeDg2JwpLVj0yLjYuMjItZ2VudG9vLXIyLW9z bXAKS1ZfRElSPS91c3Ivc3JjL2xpbnV4CktWX0VYVFJBPQpLVl9NQUpPUj0KS1ZfTUlOT1I9 CktWX1BBVENIPQpMQU5HPWVuX1VTLnV0Zi04CkxBU1RfRV9DTUQ9ZWVycm9yCkxDRF9ERVZJ Q0VTPQpMQ19BTEw9QwpMREZMQUdTPS1XbCwtTzEKTERGTEFHU194ODY9Jy1tIGVsZl9pMzg2 JwpMRVNTPSctUiAtTSAtLXNoaWZ0IDUnCkxFU1NPUEVOPSd8bGVzc3BpcGUuc2ggJXMnCkxJ QkRJUl9hbWQ2ND1saWI2NApMSUJESVJfYW1kNjRfZmJzZD1saWI2NApMSUJESVJfZGVmYXVs dD1saWIKTElCRElSX3BwYz1saWIzMgpMSUJESVJfcHBjNjQ9bGliNjQKTElCRElSX3NwYXJj MzI9bGliMzIKTElCRElSX3NwYXJjNjQ9bGliNjQKTElCRElSX3g4Nj1saWIzMgpMSUJESVJf eDg2X2Zic2Q9bGliMzIKTElCR0xfRFJJVkVSU19QQVRIPS91c3IvbGliNjQvZHJpOi91c3Iv bGliMzIvZHJpCkxJQk9QVElPTlM9LW0wNjQ0CkxJQ0VOU0U9J0FNRCBHUEwtMiBRUEwtMS4w IGFzLWlzJwpMT0dOQU1FPXJvb3QKTFNfQ09MT1JTPSdycz0wOmRpPTAxOzM0OmxuPTAxOzM2 OmhsPTQ0OzM3OnBpPTQwOzMzOnNvPTAxOzM1OmRvPTAxOzM1OmJkPTQwOzMzOzAxOmNkPTQw OzMzOzAxOm9yPTAxOzA1OzM3OzQxOm1pPTAxOzA1OzM3OzQxOnN1PTM3OzQxOnNnPTMwOzQz OmNhPTMwOzQxOnR3PTMwOzQyOm93PTM0OzQyOnN0PTM3OzQ0OmV4PTAxOzMyOioudGFyPTAx OzMxOioudGd6PTAxOzMxOiouYXJqPTAxOzMxOioudGF6PTAxOzMxOioubHpoPTAxOzMxOiou bHptYT0wMTszMToqLnppcD0wMTszMToqLno9MDE7MzE6Ki5aPTAxOzMxOiouZHo9MDE7MzE6 Ki5nej0wMTszMToqLmJ6Mj0wMTszMToqLmJ6PTAxOzMxOioudGJ6Mj0wMTszMToqLnR6PTAx OzMxOiouZGViPTAxOzMxOioucnBtPTAxOzMxOiouamFyPTAxOzMxOioucmFyPTAxOzMxOiou YWNlPTAxOzMxOiouem9vPTAxOzMxOiouY3Bpbz0wMTszMToqLjd6PTAxOzMxOioucno9MDE7 MzE6Ki5qcGc9MDE7MzU6Ki5qcGVnPTAxOzM1OiouZ2lmPTAxOzM1OiouYm1wPTAxOzM1Oiou cGJtPTAxOzM1OioucGdtPTAxOzM1OioucHBtPTAxOzM1OioudGdhPTAxOzM1OioueGJtPTAx OzM1OioueHBtPTAxOzM1OioudGlmPTAxOzM1OioudGlmZj0wMTszNToqLnBuZz0wMTszNToq LnN2Zz0wMTszNToqLnN2Z3o9MDE7MzU6Ki5tbmc9MDE7MzU6Ki5wY3g9MDE7MzU6Ki5tb3Y9 MDE7MzU6Ki5tcGc9MDE7MzU6Ki5tcGVnPTAxOzM1OioubTJ2PTAxOzM1OioubWt2PTAxOzM1 Oioub2dtPTAxOzM1OioubXA0PTAxOzM1OioubTR2PTAxOzM1OioubXA0dj0wMTszNToqLnZv Yj0wMTszNToqLnF0PTAxOzM1OioubnV2PTAxOzM1Oioud212PTAxOzM1OiouYXNmPTAxOzM1 Oioucm09MDE7MzU6Ki5ybXZiPTAxOzM1OiouZmxjPTAxOzM1OiouYXZpPTAxOzM1OiouZmxp PTAxOzM1OiouZmx2PTAxOzM1OiouZ2w9MDE7MzU6Ki5kbD0wMTszNToqLnhjZj0wMTszNToq Lnh3ZD0wMTszNToqLnl1dj0wMTszNToqLmF4dj0wMTszNToqLmFueD0wMTszNToqLm9ndj0w MTszNToqLm9neD0wMTszNToqLnBkZj0wMDszMjoqLnBzPTAwOzMyOioudHh0PTAwOzMyOiou cGF0Y2g9MDA7MzI6Ki5kaWZmPTAwOzMyOioubG9nPTAwOzMyOioudGV4PTAwOzMyOiouZG9j PTAwOzMyOiouYWFjPTAwOzM2OiouYXU9MDA7MzY6Ki5mbGFjPTAwOzM2OioubWlkPTAwOzM2 OioubWlkaT0wMDszNjoqLm1rYT0wMDszNjoqLm1wMz0wMDszNjoqLm1wYz0wMDszNjoqLm9n Zz0wMDszNjoqLnJhPTAwOzM2Oioud2F2PTAwOzM2OiouYXhhPTAwOzM2Oioub2dhPTAwOzM2 Oiouc3B4PTAwOzM2OioueHNwZj0wMDszNjonCk1BQ0hUWVBFPXg4Nl82NC1wYy1saW51eC1n bnUKTUFLRU9QVFM9LWo1Ck1PRFVMRV9ESVI9L3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVy cy9hdGktZHJpdmVycy04LjU1Mi1yMi93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9i dWlsZF9tb2QKTU9EVUxFX05BTUVTPSdmZ2xyeCh2aWRlbzovdmFyL3RtcC9wb3J0YWdlL3gx MS1kcml2ZXJzL2F0aS1kcml2ZXJzLTguNTUyLXIyL3dvcmsvY29tbW9uL2xpYi9tb2R1bGVz L2ZnbHJ4L2J1aWxkX21vZC8yLjYueCknCk1PUFJFRklYPWF0aS1kcml2ZXJzCk1VTFRJTElC X0FCSVM9J2FtZDY0IHg4NicKTVVMVElMSUJfU1RSSUNUX0RFTlk9JzY0LWJpdC4qc2hhcmVk IG9iamVjdCcKTVVMVElMSUJfU1RSSUNUX0RJUlM9Jy9saWIzMiAvbGliIC91c3IvbGliMzIg L3Vzci9saWIgL3Vzci9rZGUvKi9saWIzMiAvdXNyL2tkZS8qL2xpYiAvdXNyL3F0LyovbGli MzIgL3Vzci9xdC8qL2xpYiAvdXNyL1gxMVI2L2xpYjMyIC91c3IvWDExUjYvbGliJwpNVUxU SUxJQl9TVFJJQ1RfRVhFTVBUPScocGVybDV8Z2NjfGdjYy1saWJ8YmludXRpbHN8ZWNsaXBz ZS0zfGRlYnVnfHBvcnRhZ2UpJwpORVRCRUFOUz0nYXBpc3VwcG9ydCBjbmQgZ3Jvb3Z5IGdz ZiBoYXJuZXNzIGlkZSBpZGVudGl0eSBqMmVlIGphdmEgbW9iaWxpdHkgbmIgcGhwIHByb2Zp bGVyIHNvYSB2aXN1YWx3ZWIgd2ViY29tbW9uIHdlYnN2Y2NvbW1vbiB4bWwnCk5PUk1BTD0k J1xFWzBtJwpPTERJRlM9JCcgXHRcbicKT0xEUFdEPS91c3Ivc3JjL2xpbnV4LTIuNi4yMi1n ZW50b28tcjIKT1BFTkdMX1BST0ZJTEU9eG9yZy14MTEKT1BURVJSPTEKT1BUSU5EPTEKT1NU WVBFPWxpbnV4LWdudQpPVVRQVVRfRElSPQpQPWF0aS1kcml2ZXJzLTguNTUyClBBR0VSPS91 c3IvYmluL2xlc3MKUEFUSD0vdXNyL2xpYi9jY2FjaGUvYmluOi91c3IvbGliNjQvcG9ydGFn ZS9iaW4vZWJ1aWxkLWhlbHBlcnM6L3Vzci9sb2NhbC9zYmluOi9zYmluOi91c3Ivc2Jpbjov dXNyL2xvY2FsL2JpbjovYmluOi91c3IvYmluOi9vcHQvYmluOi91c3IveDg2XzY0LXBjLWxp bnV4LWdudS9nY2MtYmluLzQuMy4yOi91c3Iva2RlLzMuNS9zYmluOi91c3Iva2RlLzMuNS9i aW46L3Vzci9xdC8zL2JpbgpQREVQRU5EPScgJwpQRj1hdGktZHJpdmVycy04LjU1Mi1yMgpQ SVBFU1RBVFVTPShbMF09IjAiKQpQS0dESVI9L3Vzci9wb3J0YWdlL3BhY2thZ2VzClBLR1VT RT0KUEtHX0NPTkZJR19QQVRIPS91c3IvcXQvMy9saWI2NC9wa2djb25maWcKUEtHX0xPR0RJ Uj0vdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTguNTUyLXIyL3Rl bXAvbG9nZ2luZwpQS0dfVE1QRElSPS92YXIvdG1wL2JpbnBrZ3MKUE49YXRpLWRyaXZlcnMK UE9SVEFHRV9BUkNITElTVD0ncHBjIHg4Ni1vcGVuYnNkIHBwYy1vcGVuYnNkIHBwYzY0IHg4 Ni13aW5udCB4ODYtZmJzZCBwcGMtYWl4IGFscGhhIGFybSB4ODYtZnJlZWJzZCBzMzkwIGFt ZDY0IHg4Ni1tYWNvcyB4NjQtb3BlbmJzZCBpYTY0LWhwdXggaHBwYSB4ODYtbmV0YnNkIGFt ZDY0LWxpbnV4IGlhNjQtbGludXggeDg2IHNwYXJjLXNvbGFyaXMgeDY0LWZyZWVic2Qgc3Bh cmM2NC1zb2xhcmlzIHg4Ni1saW51eCB4NjQtbWFjb3Mgc3BhcmMgbTY4ay1taW50IGlhNjQg bWlwcyBwcGMtbWFjb3MgeDg2LWludGVyaXggeDY0LXNvbGFyaXMgYW1kNjQtZmJzZCBtaXBz LWlyaXggbTY4ayBzaCB4ODYtc29sYXJpcyBzcGFyYy1mYnNkJwpQT1JUQUdFX0JBU0hSQz0v ZXRjL3BvcnRhZ2UvYmFzaHJjClBPUlRBR0VfQkFTSFJDU19TT1VSQ0VEPTEKUE9SVEFHRV9C SU5QS0dfRklMRT0KUE9SVEFHRV9CSU5fUEFUSD0vdXNyL2xpYjY0L3BvcnRhZ2UvYmluClBP UlRBR0VfQlVJTERESVI9L3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVy cy04LjU1Mi1yMgpQT1JUQUdFX0NPTE9STUFQPSQnR09PRD0kXCdcRVszMjswMW1cJ1xuV0FS Tj0kXCdcRVszMzswMW1cJ1xuQkFEPSRcJ1xFWzMxOzAxbVwnXG5ISUxJVEU9JFwnXEVbMzZt XCdcbkJSQUNLRVQ9JFwnXEVbMzQ7MDFtXCcnClBPUlRBR0VfQ09NUFJFU1NfRVhDTFVERV9T VUZGSVhFUz0nY3NzIGdpZiBodG1bbF0/IGpwW2VdP2cganMgcGRmIHBuZycKUE9SVEFHRV9D T05GSUdST09UPS8KUE9SVEFHRV9ERUJVRz0wClBPUlRBR0VfREVQQ0FDSEVESVI9L3Zhci9j YWNoZS9lZGIvZGVwClBPUlRBR0VfR0lEPTI1MApQT1JUQUdFX0lOU1RfR0lEPTAKUE9SVEFH RV9JTlNUX1VJRD0wClBPUlRBR0VfSVVTRT0nXigzZGZ4fGFjcGl8YWRhYmFzfGFscGhhfGFs c2FcX2NhcmRzXF9hb2F8YWxzYVxfY2FyZHNcX2FvYVwtZmFicmljXC1sYXlvdXR8YWxzYVxf Y2FyZHNcX2FvYVwtb255eHxhbHNhXF9jYXJkc1xfYW9hXC1zb3VuZGJ1c3xhbHNhXF9jYXJk c1xfYW9hXC1zb3VuZGJ1c1wtaTJzfGFsc2FcX2NhcmRzXF9hb2FcLXRhc3xhbHNhXF9jYXJk c1xfYW9hXC10b29uaWV8YWxzYVxfY2FyZHNcX2FybWFhY2l8YWxzYVxfY2FyZHNcX2F0OTFc LXNvY3xhbHNhXF9jYXJkc1xfYXQ5MVwtc29jXC1ldGlcLWIxXC13bTg3MzF8YWxzYVxfY2Fy ZHNcX2F1MXgwMHxhbHNhXF9jYXJkc1xfY3M1NTM1YXVkaW98YWxzYVxfY2FyZHNcX2hhcm1v bnl8YWxzYVxfY2FyZHNcX3Bvd2VybWFjfGFsc2FcX2NhcmRzXF9weGEyeHhcLWkyc291bmR8 YWxzYVxfY2FyZHNcX3B4YTJ4eFwtc29jfGFsc2FcX2NhcmRzXF9weGEyeHhcLXNvY1wtY29y Z2l8YWxzYVxfY2FyZHNcX3B4YTJ4eFwtc29jXC1wb29kbGV8YWxzYVxfY2FyZHNcX3B4YTJ4 eFwtc29jXC1zcGl0enxhbHNhXF9jYXJkc1xfcHhhMnh4XC1zb2NcLXRvc2F8YWxzYVxfY2Fy ZHNcX3NhMTF4eFwtdWRhMTM0MXRzfGFsc2FcX2NhcmRzXF9zdW5cLWFtZDc5MzB8YWxzYVxf Y2FyZHNcX3N1blwtY3M0MjMxfGFsc2FcX2NhcmRzXF9zdW5cLWRicml8YWx0aXZlY3xhbWQ2 NHxhbWQ2NFwtZmJzZHxhbWQ2NFwtbGludXh8YXF1YXxhcm18YXNtfGJpcmRzdGVwfGJtcHxi bXB4fGJvb3RzdHJhcHxidWlsZHxjYXBzbGlifGNsdm18Y21hbnxjbXVjbHxjb3JlYXVkaW98 Y3Jvc3Njb21waWxlXF9vcHRzXF8uKnxkYm1ha2VyfGRlYnVnfGRvb21zZGF5fGRyYWN8ZWxp YmNcX0FJWHxlbGliY1xfRGFyd2lufGVsaWJjXF9EcmFnb25GbHl8ZWxpYmNcX0ZyZWVCU0R8 ZWxpYmNcX0hQVVh8ZWxpYmNcX0lSSVh8ZWxpYmNcX0ludGVyaXh8ZWxpYmNcX05ldEJTRHxl bGliY1xfT3BlbkJTRHxlbGliY1xfU3VuT1N8ZWxpYmNcXy4qfGVsaWJjXF9nbGliY3xlbGli Y1xfbWludGxpYnxlbGliY1xfdWNsaWJjfGVtZnxlbXByZXNzfGVtcHJlc3NcLWJjc3xlc29v YnxmZGZ0a3xmaWxlcHJvfGZpcmViaXJkfGZpeGVkXC1wb2ludHxmcm9udGJhc2V8Z2FtZXNz fGdjYzY0fGd1bG18aHBwYXxpYTY0fGlhNjRcLWhwdXh8aWE2NFwtbGludXh8aWJtfGluZm9w aXBlfGluZm9ybWl4fGluZ3Jlc3xrZGVwcmVmaXh8a2VybmVsXF9BSVh8a2VybmVsXF9EYXJ3 aW58a2VybmVsXF9GcmVlQlNEfGtlcm5lbFxfSFBVWHxrZXJuZWxcX0lSSVh8a2VybmVsXF9J bnRlcml4fGtlcm5lbFxfTmV0QlNEfGtlcm5lbFxfT3BlbkJTRHxrZXJuZWxcX1N1bk9TfGtl cm5lbFxfLip8a2VybmVsXF9mcmVlbWludHxrZXJuZWxcX2xpbnV4fGxjZFxfZGV2aWNlc1xf c3ZnYXxtNjhrfG02OGtcLW1pbnR8bWFjYm9va3xtaXBzfG1pcHNcLWlyaXh8bXVsdGlsaWJ8 bjMyfG42NHxvc3B8cGFtXF9jb25zb2xlfHBiYnV0dG9uc2R8cGZwcm98cGx1Z2lufHBwY3xw cGM2NHxwcGNcLWFpeHxwcGNcLW1hY29zfHBwY1wtb3BlbmJzZHxwcGNzaGExfHByZWZpeHxw c3ljb3xwdm18cmVhbHxyZWFsY29kZWNzfHMzOTB8c2VsaW51eHxzaHxzb2xpZHxzcGFyY3xz cGFyYzY0XC1zb2xhcmlzfHNwYXJjXC1mYnNkfHNwYXJjXC1zb2xhcmlzfHN2Z2F8c3liYXNl fHN5YmFzZVwtY3R8dGNjfHVjbGliY3x1bHRyYTF8dXNlcmxhbmRcX0JTRHx1c2VybGFuZFxf R05VfHVzZXJsYW5kXF8uKnx2aWRlb1xfY2FyZHNcX2dlb2RlfHZpZGVvXF9jYXJkc1xfaTc0 MHx2aWRlb1xfY2FyZHNcX2ltcGFjdHx2aWRlb1xfY2FyZHNcX2ltc3R0fHZpZGVvXF9jYXJk c1xfbmV3cG9ydHx2aWRlb1xfY2FyZHNcX25zY3x2aWRlb1xfY2FyZHNcX3N1bmJ3Mnx2aWRl b1xfY2FyZHNcX3N1bmNnMTR8dmlkZW9cX2NhcmRzXF9zdW5jZzN8dmlkZW9cX2NhcmRzXF9z dW5jZzZ8dmlkZW9cX2NhcmRzXF9zdW5mZmJ8dmlkZW9cX2NhcmRzXF9zdW5sZW98dmlkZW9c X2NhcmRzXF9zdW50Y3h8dmlkZW9cX2NhcmRzXF92ZXJtaWxpb258dmlkZW9cX2NhcmRzXF94 Z2l8dmlkaXh8dmlzfHdpbjMyY29kZWNzfHg2NFwtZnJlZWJzZHx4NjRcLW1hY29zfHg2NFwt b3BlbmJzZHx4NjRcLXNvbGFyaXN8eDg2fHg4NlwtZmJzZHx4ODZcLWZyZWVic2R8eDg2XC1p bnRlcml4fHg4NlwtbGludXh8eDg2XC1tYWNvc3x4ODZcLW5ldGJzZHx4ODZcLW9wZW5ic2R8 eDg2XC1zb2xhcmlzfHg4Nlwtd2lubnR8eG1tc3x5ZWxsb3duZXQpJCcKUE9SVEFHRV9MT0df RklMRT0vdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTguNTUyLXIy L3RlbXAvYnVpbGQubG9nClBPUlRBR0VfTUFTVEVSX1BJRD0xNDIwOQpQT1JUQUdFX01VVEFC TEVfRklMVEVSRURfVkFSUz0nQUEgSE9TVE5BTUUnClBPUlRBR0VfUFlNX1BBVEg9L3Vzci9s aWI2NC9wb3J0YWdlL3B5bQpQT1JUQUdFX1JFUE9fTkFNRT1nZW50b28KUE9SVEFHRV9SRVNU UklDVD0KUE9SVEFHRV9TQVZFRF9SRUFET05MWV9WQVJTPSdBIENBVEVHT1JZIFAgUEYgUE4g UFIgUFYgUFZSJwpQT1JUQUdFX1RNUERJUj0vdmFyL3RtcApQT1JUQUdFX1dPUktESVJfTU9E RT0wNzAwClBPUlRESVI9L3Vzci9wb3J0YWdlClBPUlRESVJfT1ZFUkxBWT0KUFBJRD0xNDIw OQpQUj1yMgpQUkVST09UUEFUSD0KUFJPRklMRV9PTkxZX1ZBUklBQkxFUz0nQVJDSCBFTElC QyBLRVJORUwgVVNFUkxBTkQnClBST0ZJTEVfUEFUSFM9JCcvdXNyL3BvcnRhZ2UvcHJvZmls ZXMvYmFzZVxuL3Vzci9wb3J0YWdlL3Byb2ZpbGVzL2RlZmF1bHQvbGludXhcbi91c3IvcG9y dGFnZS9wcm9maWxlcy9hcmNoL2Jhc2Vcbi91c3IvcG9ydGFnZS9wcm9maWxlcy9mZWF0dXJl cy9tdWx0aWxpYlxuL3Vzci9wb3J0YWdlL3Byb2ZpbGVzL2FyY2gvYW1kNjRcbi91c3IvcG9y dGFnZS9wcm9maWxlcy9kZWZhdWx0L2xpbnV4L2FtZDY0XG4vdXNyL3BvcnRhZ2UvcHJvZmls ZXMvcmVsZWFzZXNcbi91c3IvcG9ydGFnZS9wcm9maWxlcy9yZWxlYXNlcy8yMDA4LjBcbi91 c3IvcG9ydGFnZS9wcm9maWxlcy9kZWZhdWx0L2xpbnV4L2FtZDY0LzIwMDguMFxuL2V0Yy9w b3J0YWdlL3Byb2ZpbGUnClBST1BFUlRJRVM9ClBST1ZJREU9ClBTND0nKyAnClBWPTguNTUy ClBWUj04LjU1Mi1yMgpQV0Q9L3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJp dmVycy04LjU1Mi1yMgpRQV9FWEVDU1RBQ0tfYW1kNjQ9JCd1c3IvbGliNjQvZHJpL2ZnbHJ4 X2RyaS5zb1xuXHR1c3IvbGliMzIvZHJpL2ZnbHJ4X2RyaS5zb1xuXHR1c3IvbGliNjQvb3Bl bmdsL2F0aS9saWIvbGliR0wuc28uMS4yXG5cdHVzci9saWIzMi9vcGVuZ2wvYXRpL2xpYi9s aWJHTC5zby4xLjJcblx0b3B0L2Jpbi9hbWRjY2NsZScKUUFfRVhFQ1NUQUNLX3g4Nj0kJ3Vz ci9saWIvZHJpL2ZnbHJ4X2RyaS5zb1xuXHR1c3IvbGliL29wZW5nbC9hdGkvbGliL2xpYkdM LnNvLjEuMlxuXHRvcHQvYmluL2FtZGNjY2xlJwpRQV9URVhUUkVMU19hbWQ2ND0kJ1xuXHR1 c3IvbGliNjQvb3BlbmdsL2F0aS9saWIvbGliR0wuc28uMS4yXG5cdHVzci9saWIzMi9vcGVu Z2wvYXRpL2xpYi9saWJHTC5zby4xLjJcblx0dXNyL2xpYjY0L2RyaS9mZ2xyeF9kcmkuc29c blx0dXNyL2xpYjMyL2RyaS9mZ2xyeF9kcmkuc29cblx0dXNyL2xpYjMyL3hvcmcvbW9kdWxl cy9nbGVzeC5zb1xuXHR1c3IvbGliNjQveG9yZy9tb2R1bGVzL2dsZXN4LnNvJwpRQV9URVhU UkVMU194ODY9JCd1c3IvbGliL2RyaS9mZ2xyeF9kcmkuc29cblx0dXNyL2xpYi94b3JnL21v ZHVsZXMvZHJpdmVycy9mZ2xyeF9kcnYuc29cblx0dXNyL2xpYi9vcGVuZ2wvYXRpL2xpYi9s aWJHTC5zby4xLjJcblx0dXNyL2xpYi94b3JnL21vZHVsZXMvZ2xlc3guc29cblx0dXNyL2xp Yi94b3JnL21vZHVsZXMvYW1keG1tLnNvJwpRTUFLRVNQRUM9bGludXgtZysrClFURElSPS91 c3IvcXQvMwpSQ19ERUZBVUxUX0lOREVOVD0yClJDX0RPVF9QQVRURVJOPQpSQ19FTkRDT0w9 eWVzClJDX0lOREVOVEFUSU9OPQpSREVQRU5EPSQnPj14MTEtYmFzZS94b3JnLXNlcnZlci0x LjVcblx0IXgxMS1hcHBzL2F0aS1kcml2ZXJzLWV4dHJhXG5cdD49YXBwLWFkbWluL2VzZWxl Y3QtMS4wLjlcblx0YXBwLWFkbWluL2VzZWxlY3Qtb3BlbmdsXG5cdGFtZDY0PyAoIGFwcC1l bXVsYXRpb24vZW11bC1saW51eC14ODYteGxpYnMgKVxuXHRhY3BpPyAoXG5cdFx0eDExLWFw cHMveGF1dGhcblx0XHRzeXMtcG93ZXIvYWNwaWRcblx0KVxuXHR4MTEtbGlicy9saWJYcmFu ZHJcblx0Pj1zeXMtYXBwcy9wb3J0YWdlLTIuMS4xLXIxICAga2VybmVsX2xpbnV4PyAoIHZp cnR1YWwvbW9kdXRpbHMgKScKUkVBRE9OTFlfRUJVSUxEX01FVEFEQVRBPSQnREVGSU5FRF9Q SEFTRVMgREVQRU5EIERFU0NSSVBUSU9OXG5cdEVBUEkgSE9NRVBBR0UgSU5IRVJJVEVEIElV U0UgS0VZV09SRFMgTElDRU5TRVxuXHRQREVQRU5EIFBST1ZJREUgUkRFUEVORCBSRVNUUklD VCBTTE9UIFNSQ19VUkknClJFQURPTkxZX1BPUlRBR0VfVkFSUz0kJ0QgRUJVSUxEIEVCVUlM RF9QSEFTRSBcdEVCVUlMRF9TSF9BUkdTIEVNRVJHRV9GUk9NIEZJTEVTRElSIFBPUlRBR0Vf QklOUEtHX0ZJTEUgXHRQT1JUQUdFX0JJTl9QQVRIIFBPUlRBR0VfSVVTRSBcdFBPUlRBR0Vf UFlNX1BBVEggUE9SVEFHRV9NVVRBQkxFX0ZJTFRFUkVEX1ZBUlMgXHRQT1JUQUdFX1NBVkVE X1JFQURPTkxZX1ZBUlMgUE9SVEFHRV9UTVBESVIgVCBXT1JLRElSJwpSRVNUUklDVD0KUk9P VD0vClJPT1RQQVRIPS9vcHQvYmluOi91c3IveDg2XzY0LXBjLWxpbnV4LWdudS9nY2MtYmlu LzQuMy4yOi91c3Iva2RlLzMuNS9zYmluOi91c3Iva2RlLzMuNS9iaW46L3Vzci9xdC8zL2Jp bgpSUE1ESVI9L3Vzci9wb3J0YWdlL3JwbQpSU1lOQ19FWENMVURFRlJPTT0vZXRjL3BvcnRh Z2UvcnN5bmNfZXhjbHVkZXMKUl9IT01FPS91c3IvbGliNjQvUgpTPS92YXIvdG1wL3BvcnRh Z2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtOC41NTItcjIvd29yawpTQUdFX1JPT1Q9L3Vz ci9sb2NhbC9zYWdlLTIuOC4yLWRlYmlhbjMyLWk2ODYtTGludXgKU0FOREJPWF9MT0c9eDEx LWRyaXZlcnNfLV9hdGktZHJpdmVycy04LjU1Mi1yMgpTQU5EQk9YX09OPTAKU0FOREJPWF9Q UkVESUNUPS9wcm9jL3NlbGYvbWFwczovZGV2L2NvbnNvbGU6L2Rldi9yYW5kb20KU0FOREJP WF9SRUFEPS86L2Rldi9zaG06L2Rldi9zdGRpbjovdmFyL3RtcDovdmFyL3RtcC9jY2FjaGUK U0FOREJPWF9XUklURT0vZGV2L3NobTovZGV2L3N0ZG91dDovZGV2L3N0ZGVycjovdmFyL3Rt cDovdmFyL3RtcC9jY2FjaGUKU0NIRU1FX0xJQlJBUllfUEFUSD0vdXNyL3NoYXJlL3NsaWIv ClNHTUxfQ0FUQUxPR19GSUxFUz0vZXRjL3NnbWwvc2dtbC1kb2Nib29rLmNhdDovZXRjL3Nn bWwvb3BlbmphZGUtMS4zLjIuY2F0Oi9ldGMvc2dtbC94bWwtZG9jYm9vay00LjQuY2F0Oi9l dGMvc2dtbC94bWwtZG9jYm9vay00LjEuMi5jYXQ6L2V0Yy9zZ21sL3NnbWwtZG9jYm9vay0z LjEuY2F0Oi9ldGMvc2dtbC9zZ21sLWxpdGUuY2F0Oi9ldGMvc2dtbC9kc3NzbC1kb2Nib29r LXN0eWxlc2hlZXRzLmNhdApTSEVMTD0vYmluL2Jhc2gKU0hFTExPUFRTPWJyYWNlZXhwYW5k Omhhc2hhbGw6aW50ZXJhY3RpdmUtY29tbWVudHMKU0hMVkw9MwpTTE9UPTAKU1JDX1VSST1o dHRwczovL2EyNDguZS5ha2FtYWkubmV0L2YvNjc0LzkyMDYvMC93d3cyLmF0aS5jb20vZHJp dmVycy9saW51eC8vYXRpLWRyaXZlci1pbnN0YWxsZXItOC0xMS14ODYueDg2XzY0LnJ1bgpT VEFHRTFfVVNFPSdtdWx0aWxpYiBucHRsIG5wdGxvbmx5IHVuaWNvZGUnClNUQVJURElSPS91 c3Ivc3JjL2xpbnV4LTIuNi4yMi1nZW50b28tcjIKU1lNTElOS19MSUI9eWVzClQ9L3Zhci90 bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy04LjU1Mi1yMi90ZW1wClRFUk09 eHRlcm0KVE1QPS92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtOC41 NTItcjIvdGVtcApUTVBESVI9L3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJp dmVycy04LjU1Mi1yMi90ZW1wClVJRD0wClVTRT0nYWNwaSBhbWQ2NCBlbGliY19nbGliYyBr ZXJuZWxfbGludXggbXVsdGlsaWIgdXNlcmxhbmRfR05VJwpVU0VSPXJvb3QKVVNFUkxBTkQ9 R05VClVTRV9FWFBBTkQ9J0FMU0FfQ0FSRFMgQUxTQV9QQ01fUExVR0lOUyBBUEFDSEUyX01P RFVMRVMgQVBBQ0hFMl9NUE1TIENBTUVSQVMgQ1JPU1NDT01QSUxFX09QVFMgRFZCX0NBUkRT IEVMSUJDIEZDRFNMX0NBUkRTIEZPTzJaSlNfREVWSUNFUyBGUklUWkNBUElfQ0FSRFMgSU5Q VVRfREVWSUNFUyBLRVJORUwgTENEX0RFVklDRVMgTElOR1VBUyBMSVJDX0RFVklDRVMgTUlT RE5fQ0FSRFMgTkVUQkVBTlNfTU9EVUxFUyBRRU1VX1NPRlRNTVVfVEFSR0VUUyBRRU1VX1VT RVJfVEFSR0VUUyBVU0VSTEFORCBWSURFT19DQVJEUycKVklERU9fQ0FSRFM9CldBUk49JCdc RVszMzswMW0nCldPUktESVI9L3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJp dmVycy04LjU1Mi1yMi93b3JrClhBUkdTPSd4YXJncyAtcicKWEFVVEhPUklUWT0vcm9vdC8u eGF1dGhncE5HVlcKWERHX0NPTkZJR19ESVJTPS9ldGMveGRnClhER19EQVRBX0RJUlM9L3Vz ci9sb2NhbC9zaGFyZTovdXNyL2tkZS8zLjUvc2hhcmU6L3Vzci9zaGFyZQpfPSddJwpfRV9E T0NERVNUVFJFRV89Cl9FX0VYRURFU1RUUkVFXz0KX1JDX0dFVF9LVl9DQUNIRT0KX19fRUNM QVNTX1JFQ1VSX01VTFRJTElCPXllcwpfX19FQ0xBU1NfUkVDVVJfVE9PTENIQUlOX0ZVTkNT PXllcwphcmdzPQpjb25mPWF0aS1kcml2ZXJzLTguNTUyLXIyCmY9CmZpbGVzcGFjaW5nPTI3 Cmo9MQpsaW5lbm89Njk2CmxpbmVzcGFjaW5nPTQKbj0tMQpwaGFzZV9uYW1lPXBrZ19zZXR1 cApyZXR2YWw9CnNob3B0cz0kJ2NkYWJsZV92YXJzICAgIFx0b2ZmXG5jZHNwZWxsICAgICAg ICBcdG9mZlxuY2hlY2toYXNoICAgICAgXHRvZmZcbmNoZWNrd2luc2l6ZSAgIFx0b2ZmXG5j bWRoaXN0ICAgICAgICBcdG9uXG5jb21wYXQzMSAgICAgICBcdG9mZlxuZG90Z2xvYiAgICAg ICAgXHRvZmZcbmV4ZWNmYWlsICAgICAgIFx0b2ZmXG5leHBhbmRfYWxpYXNlcyBcdG9uXG5l eHRkZWJ1ZyAgICAgICBcdG9uXG5leHRnbG9iICAgICAgICBcdG9mZlxuZXh0cXVvdGUgICAg ICAgXHRvblxuZmFpbGdsb2IgICAgICAgXHRvZmZcbmZvcmNlX2ZpZ25vcmUgIFx0b25cbmdu dV9lcnJmbXQgICAgIFx0b2ZmXG5oaXN0YXBwZW5kICAgICBcdG9mZlxuaGlzdHJlZWRpdCAg ICAgXHRvZmZcbmhpc3R2ZXJpZnkgICAgIFx0b2ZmXG5ob3N0Y29tcGxldGUgICBcdG9uXG5o dXBvbmV4aXQgICAgICBcdG9mZlxuaW50ZXJhY3RpdmVfY29tbWVudHNcdG9uXG5saXRoaXN0 ICAgICAgICBcdG9mZlxubG9naW5fc2hlbGwgICAgXHRvZmZcbm1haWx3YXJuICAgICAgIFx0 b2ZmXG5ub19lbXB0eV9jbWRfY29tcGxldGlvblx0b2ZmXG5ub2Nhc2VnbG9iICAgICBcdG9m Zlxubm9jYXNlbWF0Y2ggICAgXHRvZmZcbm51bGxnbG9iICAgICAgIFx0b2ZmXG5wcm9nY29t cCAgICAgICBcdG9uXG5wcm9tcHR2YXJzICAgICBcdG9uXG5yZXN0cmljdGVkX3NoZWxsXHRv ZmZcbnNoaWZ0X3ZlcmJvc2UgIFx0b2ZmXG5zb3VyY2VwYXRoICAgICBcdG9uXG54cGdfZWNo byAgICAgICBcdG9mZicKc291cmNlZmlsZT1pc29sYXRlZC1mdW5jdGlvbnMuc2gKc3RyPSds aW51eC1tb2RfcGtnX3NldHVwOiBlbnRlcmluZyBmdW5jdGlvbicKeD1wa2dfc2V0dXAKRVhQ T1JUX0ZVTkNUSU9OUyAoKSAKeyAKICAgIGlmIFsgLXogIiRFQ0xBU1MiIF07IHRoZW4KICAg ICAgICBkaWUgIkVYUE9SVF9GVU5DVElPTlMgd2l0aG91dCBhIGRlZmluZWQgRUNMQVNTIjsK ICAgIGZpOwogICAgZXZhbCAkX19leHBvcnRfZnVuY3NfdmFyKz1cIiAkKlwiCn0KS1ZfbWFq b3IgKCkgCnsgCiAgICBbWyAteiAkMSBdXSAmJiByZXR1cm4gMTsKICAgIGxvY2FsIEtWPSRA OwogICAgZWNobyAiJHtLViUlLip9Igp9CktWX21pY3JvICgpIAp7IAogICAgW1sgLXogJDEg XV0gJiYgcmV0dXJuIDE7CiAgICBsb2NhbCBLVj0kQDsKICAgIEtWPSR7S1YjKi4qLn07CiAg ICBlY2hvICIke0tWJSVbXls6ZGlnaXQ6XV0qfSIKfQpLVl9taW5vciAoKSAKeyAKICAgIFtb IC16ICQxIF1dICYmIHJldHVybiAxOwogICAgbG9jYWwgS1Y9JEA7CiAgICBLVj0ke0tWIyou fTsKICAgIGVjaG8gIiR7S1YlJS4qfSIKfQpLVl90b19pbnQgKCkgCnsgCiAgICBbWyAteiAk MSBdXSAmJiByZXR1cm4gMTsKICAgIGxvY2FsIEtWX01BSk9SPSQoS1ZfbWFqb3IgIiQxIik7 CiAgICBsb2NhbCBLVl9NSU5PUj0kKEtWX21pbm9yICIkMSIpOwogICAgbG9jYWwgS1ZfTUlD Uk89JChLVl9taWNybyAiJDEiKTsKICAgIGxvY2FsIEtWX2ludD0kKCggS1ZfTUFKT1IgKiA2 NTUzNiArIEtWX01JTk9SICogMjU2ICsgS1ZfTUlDUk8gKSk7CiAgICBpZiBbWyAke0tWX2lu dH0gLWdlIDEzMTU4NCBdXTsgdGhlbgogICAgICAgIGVjaG8gIiR7S1ZfaW50fSI7CiAgICAg ICAgcmV0dXJuIDA7CiAgICBmaTsKICAgIHJldHVybiAxCn0KX192ZXJzaW9uYXRvcl9fdGVz dF92ZXJzaW9uX2NvbXBhcmUgKCkgCnsgCiAgICBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2ds ZSBvbjsKICAgIGxvY2FsIGx0PTEgZXE9MiBndD0zIHAgcTsKICAgIGZ1bmN0aW9uIF9fdmVy c2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgKCkgCiAgICB7IAogICAgICAgIHZl cnNpb25fY29tcGFyZSAiJHsxfSIgIiR7M30iOwogICAgICAgIGxvY2FsIHI9JD87CiAgICAg ICAgW1sgJHtyfSAtZXEgJHsyfSBdXSB8fCBlY2hvICJGQUlMOiAke0B9IChnb3QgJHtyfSBl eHAgJHsyfSkiCiAgICB9OwogICAgZWNobyAiCgkJMCAgICAgICAgICAgICAkbHQgMQoJCTEg ICAgICAgICAgICAgJGx0IDIKCQkyICAgICAgICAgICAgICRndCAxCgkJMiAgICAgICAgICAg ICAkZXEgMgoJCTAgICAgICAgICAgICAgJGVxIDAKCQkxMCAgICAgICAgICAgICRsdCAyMAoJ CTY4ICAgICAgICAgICAgJGVxIDA2OAoJCTA2OCAgICAgICAgICAgJGd0IDY3CgkJMDY4ICAg ICAgICAgICAkbHQgNjkKCgkJMS4wICAgICAgICAgICAkbHQgMi4wCgkJMi4wICAgICAgICAg ICAkZXEgMi4wCgkJMi4wICAgICAgICAgICAkZ3QgMS4wCgoJCTEuMCAgICAgICAgICAgJGd0 IDAuMAoJCTAuMCAgICAgICAgICAgJGVxIDAuMAoJCTAuMCAgICAgICAgICAgJGx0IDEuMAoK CQkwLjEgICAgICAgICAgICRsdCAwLjIKCQkwLjIgICAgICAgICAgICRlcSAwLjIKCQkwLjMg ICAgICAgICAgICRndCAwLjIKCgkJMS4yICAgICAgICAgICAkbHQgMi4xCgkJMi4xICAgICAg ICAgICAkZ3QgMS4yCgoJCTEuMi4zICAgICAgICAgJGx0IDEuMi40CgkJMS4yLjQgICAgICAg ICAkZ3QgMS4yLjMKCgkJMS4yLjAgICAgICAgICAkZXEgMS4yCgkJMS4yLjEgICAgICAgICAk Z3QgMS4yCgkJMS4yICAgICAgICAgICAkbHQgMS4yLjEKCgkJMS4yYiAgICAgICAgICAkZXEg MS4yYgoJCTEuMmIgICAgICAgICAgJGx0IDEuMmMKCQkxLjJiICAgICAgICAgICRndCAxLjJh CgkJMS4yYiAgICAgICAgICAkZ3QgMS4yCgkJMS4yICAgICAgICAgICAkbHQgMS4yYQoKCQkx LjMgICAgICAgICAgICRndCAxLjJhCgkJMS4zICAgICAgICAgICAkbHQgMS4zYQoKCQkxLjBf YWxwaGE3ICAgICRsdCAxLjBfYmV0YTcKCQkxLjBfYmV0YSAgICAgICRsdCAxLjBfcHJlCgkJ MS4wX3ByZTUgICAgICAkbHQgMS4wX3JjMgoJCTEuMF9yYzIgICAgICAgJGx0IDEuMAoKCQkx LjBfcDEgICAgICAgICRndCAxLjAKCQkxLjBfcDEtcjEgICAgICRndCAxLjBfcDEKCgkJMS4w X2FscGhhNi1yMSAkZ3QgMS4wX2FscGhhNgoJCTEuMF9iZXRhNi1yMSAgJGd0IDEuMF9hbHBo YTYtcjIKCgkJMS4wX3ByZTEgICAgICAkbHQgMS4wLXAxCgoJCTEuMHAgICAgICAgICAgJGd0 IDEuMF9wMQoJCTEuMHIgICAgICAgICAgJGd0IDEuMC1yMQoJCTEuNi4xNSAgICAgICAgJGd0 IDEuNi4xMC1yMgoJCTEuNi4xMC1yMiAgICAgJGx0IDEuNi4xNQoKCSIgfCB3aGlsZSByZWFk IGEgYiBjOyBkbwogICAgICAgIFtbIC16ICIke2F9JHtifSR7Y30iIF1dICYmIGNvbnRpbnVl OwogICAgICAgIF9fdmVyc2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgIiR7YX0i ICIke2J9IiAiJHtjfSI7CiAgICBkb25lOwogICAgZm9yIHEgaW4gImFscGhhIGJldGEgcHJl IHJjPSR7bHR9OyR7Z3R9IiAicCByPSR7Z3R9OyR7bHR9IjsKICAgIGRvCiAgICAgICAgZm9y IHAgaW4gJHtxJSU9Kn07CiAgICAgICAgZG8KICAgICAgICAgICAgbG9jYWwgYz0ke3EjIyo9 fTsKICAgICAgICAgICAgbG9jYWwgYWx0PSR7YyUlOyp9IGFndD0ke2MjIyo7fTsKICAgICAg ICAgICAgX192ZXJzaW9uYXRvcl9fdGVzdF92ZXJzaW9uX2NvbXBhcmVfdCAiMS4wIiAkYWd0 ICIxLjBfJHtwfSI7CiAgICAgICAgICAgIF9fdmVyc2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9j b21wYXJlX3QgIjEuMCIgJGFndCAiMS4wXyR7cH0xIjsKICAgICAgICAgICAgX192ZXJzaW9u YXRvcl9fdGVzdF92ZXJzaW9uX2NvbXBhcmVfdCAiMS4wIiAkYWd0ICIxLjBfJHtwfTA2OCI7 CiAgICAgICAgICAgIF9fdmVyc2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgIjIu MF8ke3B9IiAkYWx0ICIyLjAiOwogICAgICAgICAgICBfX3ZlcnNpb25hdG9yX190ZXN0X3Zl cnNpb25fY29tcGFyZV90ICIyLjBfJHtwfTEiICRhbHQgIjIuMCI7CiAgICAgICAgICAgIF9f dmVyc2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgIjIuMF8ke3B9MDY4IiAkYWx0 ICIyLjAiOwogICAgICAgICAgICBfX3ZlcnNpb25hdG9yX190ZXN0X3ZlcnNpb25fY29tcGFy ZV90ICIxLjBfJHtwfSIgJGVxICIxLjBfJHtwfSI7CiAgICAgICAgICAgIF9fdmVyc2lvbmF0 b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgIjAuMF8ke3B9IiAkbHQgIjAuMF8ke3B9MSI7 CiAgICAgICAgICAgIF9fdmVyc2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgIjY2 Nl8ke3B9MyIgJGd0ICI2NjZfJHtwfSI7CiAgICAgICAgICAgIF9fdmVyc2lvbmF0b3JfX3Rl c3RfdmVyc2lvbl9jb21wYXJlX3QgIjFfJHtwfTciICRsdCAiMV8ke3B9OCI7CiAgICAgICAg ICAgIF9fdmVyc2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgIjFfJHtwfTciICRl cSAiMV8ke3B9NyI7CiAgICAgICAgICAgIF9fdmVyc2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9j b21wYXJlX3QgIjFfJHtwfTciICRndCAiMV8ke3B9NiI7CiAgICAgICAgICAgIF9fdmVyc2lv bmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgIjFfJHtwfTA5IiAkZXEgIjFfJHtwfTki OwogICAgICAgIGRvbmU7CiAgICBkb25lOwogICAgZm9yIHAgaW4gIi1yIiAiX3AiOwogICAg ZG8KICAgICAgICBfX3ZlcnNpb25hdG9yX190ZXN0X3ZlcnNpb25fY29tcGFyZV90ICI3LjIk e3B9MSIgJGx0ICI3LjIke3B9MiI7CiAgICAgICAgX192ZXJzaW9uYXRvcl9fdGVzdF92ZXJz aW9uX2NvbXBhcmVfdCAiNy4yJHtwfTIiICRndCAiNy4yJHtwfTEiOwogICAgICAgIF9fdmVy c2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgIjcuMiR7cH0zIiAkZ3QgIjcuMiR7 cH0yIjsKICAgICAgICBfX3ZlcnNpb25hdG9yX190ZXN0X3ZlcnNpb25fY29tcGFyZV90ICI3 LjIke3B9MiIgJGx0ICI3LjIke3B9MyI7CiAgICBkb25lOwogICAgX192ZXJzaW9uYXRvcl9z aG9wdF90b2dnbGUgb2ZmCn0KX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgKCkgCnsgCiAg ICBWRVJTSU9OQVRPUl9SRUNVUlNJT049JHtWRVJTSU9OQVRPUl9SRUNVUlNJT046LTB9Owog ICAgY2FzZSAiJDEiIGluIAogICAgICAgICJvbiIpCiAgICAgICAgICAgIGlmIFtbICRWRVJT SU9OQVRPUl9SRUNVUlNJT04gLWx0IDEgXV07IHRoZW4KICAgICAgICAgICAgICAgIFZFUlNJ T05BVE9SX09MRF9FWFRHTE9CPSQoc2hvcHQgLXAgZXh0Z2xvYik7CiAgICAgICAgICAgICAg ICBzaG9wdCAtcyBleHRnbG9iOwogICAgICAgICAgICBmaTsKICAgICAgICAgICAgVkVSU0lP TkFUT1JfUkVDVVJTSU9OPSQoKCAkVkVSU0lPTkFUT1JfUkVDVVJTSU9OICsgMSApKQogICAg ICAgIDs7CiAgICAgICAgIm9mZiIpCiAgICAgICAgICAgIFZFUlNJT05BVE9SX1JFQ1VSU0lP Tj0kKCggJFZFUlNJT05BVE9SX1JFQ1VSU0lPTiAtIDEgKSk7CiAgICAgICAgICAgIGlmIFtb ICRWRVJTSU9OQVRPUl9SRUNVUlNJT04gLWx0IDEgXV07IHRoZW4KICAgICAgICAgICAgICAg IGV2YWwgJFZFUlNJT05BVE9SX09MRF9FWFRHTE9COwogICAgICAgICAgICBmaQogICAgICAg IDs7CiAgICBlc2FjOwogICAgcmV0dXJuIDAKfQpfY2Ryb21fbG9jYXRlX2ZpbGVfb25fY2Qg KCkgCnsgCiAgICBsb2NhbCBtbGluZT0iIjsKICAgIGxvY2FsIHNob3dlZG1zZz0wIHNob3dq b2xpZXRtc2c9MDsKICAgIHdoaWxlIFtbIC16ICR7Q0RST01fUk9PVH0gXV07IGRvCiAgICAg ICAgbG9jYWwgaT0wOwogICAgICAgIGxvY2FsIC1hIGNkc2V0PSgkeyovLzovIH0pOwogICAg ICAgIGlmIFtbIC1uICR7Q0RST01fU0VUfSBdXTsgdGhlbgogICAgICAgICAgICBjZHNldD0o JHtjZHNldFske0NEUk9NX1NFVH1dfSk7CiAgICAgICAgZmk7CiAgICAgICAgd2hpbGUgW1sg LW4gJHtjZHNldFske2l9XX0gXV07IGRvCiAgICAgICAgICAgIGxvY2FsIGRpcj0kKGRpcm5h bWUgJHtjZHNldFske2l9XX0pOwogICAgICAgICAgICBsb2NhbCBmaWxlPSQoYmFzZW5hbWUg JHtjZHNldFske2l9XX0pOwogICAgICAgICAgICBsb2NhbCBwb2ludD0gbm9kZT0gZnM9IGZv bz07CiAgICAgICAgICAgIHdoaWxlIHJlYWQgcG9pbnQgbm9kZSBmcyBmb287IGRvCiAgICAg ICAgICAgICAgICBbWyAiIGNkOTY2MCBpc285NjYwIHVkZiAiICE9ICoiICR7ZnN9ICIqIF1d ICYmICEgW1sgJHtmc30gPT0gInN1YmZzIiAmJiAiLCR7b3B0c30sIiA9PSAqIixmcz1jZGZz cywiKiBdXSAmJiBjb250aW51ZTsKICAgICAgICAgICAgICAgIHBvaW50PSR7cG9pbnQvL1ww NDAvIH07CiAgICAgICAgICAgICAgICBbWyAhIC1kICR7cG9pbnR9LyR7ZGlyfSBdXSAmJiBj b250aW51ZTsKICAgICAgICAgICAgICAgIFtbIC16ICQoZmluZCAiJHtwb2ludH0vJHtkaXJ9 IiAtbWF4ZGVwdGggMSAtaW5hbWUgIiR7ZmlsZX0iKSBdXSAmJiBjb250aW51ZTsKICAgICAg ICAgICAgICAgIGV4cG9ydCBDRFJPTV9ST09UPSR7cG9pbnR9OwogICAgICAgICAgICAgICAg ZXhwb3J0IENEUk9NX1NFVD0ke2l9OwogICAgICAgICAgICAgICAgZXhwb3J0IENEUk9NX01B VENIPSR7Y2RzZXRbJHtpfV19OwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg ICBkb25lIDw8PCAiJChnZXRfbW91bnRzKSI7CiAgICAgICAgICAgICgoKytpKSk7CiAgICAg ICAgZG9uZTsKICAgICAgICBlY2hvOwogICAgICAgIGlmIFtbICR7c2hvd2VkbXNnfSAtZXEg MCBdXTsgdGhlbgogICAgICAgICAgICBpZiBbWyAke0NEUk9NX1RPVEFMX0NEU30gLWVxIDEg XV07IHRoZW4KICAgICAgICAgICAgICAgIGlmIFtbIC16ICR7Q0RST01fTkFNRX0gXV07IHRo ZW4KICAgICAgICAgICAgICAgICAgICBlaW5mbyAiUGxlYXNlIGluc2VydCttb3VudCB0aGUg Y2Ryb20gZm9yICR7UE59IG5vdyAhIjsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg ICAgICAgICAgICBlaW5mbyAiUGxlYXNlIGluc2VydCttb3VudCB0aGUgJHtDRFJPTV9OQU1F fSBjZHJvbSBub3cgISI7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZWxzZQog ICAgICAgICAgICAgICAgaWYgW1sgLXogJHtDRFJPTV9OQU1FXzF9IF1dOyB0aGVuCiAgICAg ICAgICAgICAgICAgICAgZWluZm8gIlBsZWFzZSBpbnNlcnQrbW91bnQgY2QgIyR7Q0RST01f Q1VSUkVOVF9DRH0gZm9yICR7UE59IG5vdyAhIjsKICAgICAgICAgICAgICAgIGVsc2UKICAg ICAgICAgICAgICAgICAgICBsb2NhbCB2YXI9IkNEUk9NX05BTUVfJHtDRFJPTV9DVVJSRU5U X0NEfSI7CiAgICAgICAgICAgICAgICAgICAgZWluZm8gIlBsZWFzZSBpbnNlcnQrbW91bnQg dGhlICR7IXZhcn0gY2Ryb20gbm93ICEiOwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAg ICAgIGZpOwogICAgICAgICAgICBzaG93ZWRtc2c9MTsKICAgICAgICBmaTsKICAgICAgICBl aW5mbyAiUHJlc3MgcmV0dXJuIHRvIHNjYW4gZm9yIHRoZSBjZCBhZ2FpbiI7CiAgICAgICAg ZWluZm8gIm9yIGhpdCBDVFJMK0MgdG8gYWJvcnQgdGhlIGVtZXJnZS4iOwogICAgICAgIGVj aG87CiAgICAgICAgaWYgW1sgJHtzaG93am9saWV0bXNnfSAtZXEgMCBdXTsgdGhlbgogICAg ICAgICAgICBzaG93am9saWV0bXNnPTE7CiAgICAgICAgZWxzZQogICAgICAgICAgICBld2Fy biAiSWYgeW91IGFyZSBoYXZpbmcgdHJvdWJsZSB3aXRoIHRoZSBkZXRlY3Rpb24iOwogICAg ICAgICAgICBld2FybiAib2YgeW91ciBDRCwgaXQgaXMgcG9zc2libGUgdGhhdCB5b3UgZG8g bm90IGhhdmUiOwogICAgICAgICAgICBld2FybiAiSm9saWV0IHN1cHBvcnQgZW5hYmxlZCBp biB5b3VyIGtlcm5lbC4gIFBsZWFzZSI7CiAgICAgICAgICAgIGV3YXJuICJjaGVjayB0aGF0 IENPTkZJR19KT0xJRVQgaXMgZW5hYmxlZCBpbiB5b3VyIGtlcm5lbC4iOwogICAgICAgICAg ICBlYmVlcCA1OwogICAgICAgIGZpOwogICAgICAgIHJlYWQgfHwgZGllICJzb21ldGhpbmcg aXMgc2NyZXdlZCB3aXRoIHlvdXIgc3lzdGVtIjsKICAgIGRvbmUKfQpfZWFwaTBfcGtnX25v ZmV0Y2ggKCkgCnsgCiAgICBbIC16ICIke1NSQ19VUkl9IiBdICYmIHJldHVybjsKICAgIGVj aG8gIiEhISBUaGUgZm9sbG93aW5nIGFyZSBsaXN0ZWQgaW4gU1JDX1VSSSBmb3IgJHtQTn06 IjsKICAgIGxvY2FsIHg7CiAgICBmb3IgeCBpbiAkKGVjaG8gJHtTUkNfVVJJfSk7CiAgICBk bwogICAgICAgIGVjaG8gIiEhISAgICR7eH0iOwogICAgZG9uZQp9Cl9lYXBpMF9zcmNfY29t cGlsZSAoKSAKeyAKICAgIGlmIFsgLXggLi9jb25maWd1cmUgXTsgdGhlbgogICAgICAgIGVj b25mOwogICAgZmk7CiAgICBfZWFwaTJfc3JjX2NvbXBpbGUKfQpfZWFwaTBfc3JjX3Rlc3Qg KCkgCnsgCiAgICBpZiBlbWFrZSAtajEgY2hlY2sgLW4gPiYvZGV2L251bGw7IHRoZW4KICAg ICAgICB2ZWNobyAiPj4+IFRlc3QgcGhhc2UgW2NoZWNrXTogJHtDQVRFR09SWX0vJHtQRn0i OwogICAgICAgIGlmICEgZW1ha2UgLWoxIGNoZWNrOyB0aGVuCiAgICAgICAgICAgIGhhc3Eg dGVzdCAkRkVBVFVSRVMgJiYgZGllICJNYWtlIGNoZWNrIGZhaWxlZC4gU2VlIGFib3ZlIGZv ciBkZXRhaWxzLiI7CiAgICAgICAgICAgIGhhc3EgdGVzdCAkRkVBVFVSRVMgfHwgZWVycm9y ICJNYWtlIGNoZWNrIGZhaWxlZC4gU2VlIGFib3ZlIGZvciBkZXRhaWxzLiI7CiAgICAgICAg Zmk7CiAgICBlbHNlCiAgICAgICAgaWYgZW1ha2UgLWoxIHRlc3QgLW4gPiYvZGV2L251bGw7 IHRoZW4KICAgICAgICAgICAgdmVjaG8gIj4+PiBUZXN0IHBoYXNlIFt0ZXN0XTogJHtDQVRF R09SWX0vJHtQRn0iOwogICAgICAgICAgICBpZiAhIGVtYWtlIC1qMSB0ZXN0OyB0aGVuCiAg ICAgICAgICAgICAgICBoYXNxIHRlc3QgJEZFQVRVUkVTICYmIGRpZSAiTWFrZSB0ZXN0IGZh aWxlZC4gU2VlIGFib3ZlIGZvciBkZXRhaWxzLiI7CiAgICAgICAgICAgICAgICBoYXNxIHRl c3QgJEZFQVRVUkVTIHx8IGVlcnJvciAiTWFrZSB0ZXN0IGZhaWxlZC4gU2VlIGFib3ZlIGZv ciBkZXRhaWxzLiI7CiAgICAgICAgICAgIGZpOwogICAgICAgIGVsc2UKICAgICAgICAgICAg dmVjaG8gIj4+PiBUZXN0IHBoYXNlIFtub25lXTogJHtDQVRFR09SWX0vJHtQRn0iOwogICAg ICAgIGZpOwogICAgZmkKfQpfZWFwaTBfc3JjX3VucGFjayAoKSAKeyAKICAgIFtbIC1uICR7 QX0gXV0gJiYgdW5wYWNrICR7QX0KfQpfZWFwaTFfc3JjX2NvbXBpbGUgKCkgCnsgCiAgICBf ZWFwaTJfc3JjX2NvbmZpZ3VyZTsKICAgIF9lYXBpMl9zcmNfY29tcGlsZQp9Cl9lYXBpMl9z cmNfY29tcGlsZSAoKSAKeyAKICAgIGlmIFsgLWYgTWFrZWZpbGUgXSB8fCBbIC1mIEdOVW1h a2VmaWxlIF0gfHwgWyAtZiBtYWtlZmlsZSBdOyB0aGVuCiAgICAgICAgZW1ha2UgfHwgZGll ICJlbWFrZSBmYWlsZWQiOwogICAgZmkKfQpfZWFwaTJfc3JjX2NvbmZpZ3VyZSAoKSAKeyAK ICAgIGlmIFtbIC14ICR7RUNPTkZfU09VUkNFOi0ufS9jb25maWd1cmUgXV07IHRoZW4KICAg ICAgICBlY29uZjsKICAgIGZpCn0KX2VidWlsZF9hcmdfdG9fcGhhc2UgKCkgCnsgCiAgICBb ICQjIC1uZSAyIF0gJiYgZGllICJleHBlY3RlZCBleGFjdGx5IDIgYXJncywgZ290ICQjOiAk KiI7CiAgICBsb2NhbCBlYXBpPSQxOwogICAgbG9jYWwgYXJnPSQyOwogICAgbG9jYWwgcGhh c2VfZnVuYz0iIjsKICAgIGNhc2UgIiRhcmciIGluIAogICAgICAgIHNldHVwKQogICAgICAg ICAgICBwaGFzZV9mdW5jPXBrZ19zZXR1cAogICAgICAgIDs7CiAgICAgICAgbm9mZXRjaCkK ICAgICAgICAgICAgcGhhc2VfZnVuYz1wa2dfbm9mZXRjaAogICAgICAgIDs7CiAgICAgICAg dW5wYWNrKQogICAgICAgICAgICBwaGFzZV9mdW5jPXNyY191bnBhY2sKICAgICAgICA7Owog ICAgICAgIHByZXBhcmUpCiAgICAgICAgICAgICEgaGFzcSAkZWFwaSAwIDEgJiYgcGhhc2Vf ZnVuYz1zcmNfcHJlcGFyZQogICAgICAgIDs7CiAgICAgICAgY29uZmlndXJlKQogICAgICAg ICAgICAhIGhhc3EgJGVhcGkgMCAxICYmIHBoYXNlX2Z1bmM9c3JjX2NvbmZpZ3VyZQogICAg ICAgIDs7CiAgICAgICAgY29tcGlsZSkKICAgICAgICAgICAgcGhhc2VfZnVuYz1zcmNfY29t cGlsZQogICAgICAgIDs7CiAgICAgICAgdGVzdCkKICAgICAgICAgICAgcGhhc2VfZnVuYz1z cmNfdGVzdAogICAgICAgIDs7CiAgICAgICAgaW5zdGFsbCkKICAgICAgICAgICAgcGhhc2Vf ZnVuYz1zcmNfaW5zdGFsbAogICAgICAgIDs7CiAgICAgICAgcHJlaW5zdCkKICAgICAgICAg ICAgcGhhc2VfZnVuYz1wa2dfcHJlaW5zdAogICAgICAgIDs7CiAgICAgICAgcG9zdGluc3Qp CiAgICAgICAgICAgIHBoYXNlX2Z1bmM9cGtnX3Bvc3RpbnN0CiAgICAgICAgOzsKICAgICAg ICBwcmVybSkKICAgICAgICAgICAgcGhhc2VfZnVuYz1wa2dfcHJlcm0KICAgICAgICA7Owog ICAgICAgIHBvc3RybSkKICAgICAgICAgICAgcGhhc2VfZnVuYz1wa2dfcG9zdHJtCiAgICAg ICAgOzsKICAgIGVzYWM7CiAgICBbWyAteiAkcGhhc2VfZnVuYyBdXSAmJiByZXR1cm4gMTsK ICAgIGVjaG8gIiRwaGFzZV9mdW5jIjsKICAgIHJldHVybiAwCn0KX2VidWlsZF9waGFzZV9m dW5jcyAoKSAKeyAKICAgIFsgJCMgLW5lIDIgXSAmJiBkaWUgImV4cGVjdGVkIGV4YWN0bHkg MiBhcmdzLCBnb3QgJCM6ICQqIjsKICAgIGxvY2FsIGVhcGk9JDE7CiAgICBsb2NhbCBwaGFz ZV9mdW5jPSQyOwogICAgbG9jYWwgZGVmYXVsdF9waGFzZXM9InBrZ19ub2ZldGNoIHNyY191 bnBhY2sgc3JjX3ByZXBhcmUgc3JjX2NvbmZpZ3VyZQoJCXNyY19jb21waWxlIHNyY19pbnN0 YWxsIHNyY190ZXN0IjsKICAgIGxvY2FsIHggeSBkZWZhdWx0X2Z1bmM9IiI7CiAgICBmb3Ig eCBpbiBwa2dfbm9mZXRjaCBzcmNfdW5wYWNrIHNyY190ZXN0OwogICAgZG8KICAgICAgICBk ZWNsYXJlIC1GICR4ID4gL2Rldi9udWxsIHx8IGV2YWwgIiR4KCkgeyBfZWFwaTBfJHggXCJc JEBcIiA7IH0iOwogICAgZG9uZTsKICAgIGNhc2UgJGVhcGkgaW4gCiAgICAgICAgMCB8IDEp CiAgICAgICAgICAgIGlmICEgZGVjbGFyZSAtRiBzcmNfY29tcGlsZSA+IC9kZXYvbnVsbDsg dGhlbgogICAgICAgICAgICAgICAgY2FzZSAkZWFwaSBpbiAKICAgICAgICAgICAgICAgICAg ICAwKQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzcmNfY29tcGlsZSAoKSAK ICAgICAgICAgICAgICAgICAgICAgICAgeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9lYXBpMF9zcmNfY29tcGlsZSAiJEAiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgICopCiAgICAgICAgICAg ICAgICAgICAgICAgIGZ1bmN0aW9uIHNyY19jb21waWxlICgpIAogICAgICAgICAgICAgICAg ICAgICAgICB7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2VhcGkxX3NyY19jb21w aWxlICIkQCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg IDs7CiAgICAgICAgICAgICAgICBlc2FjOwogICAgICAgICAgICBmaTsKICAgICAgICAgICAg Zm9yIHggaW4gJGRlZmF1bHRfcGhhc2VzOwogICAgICAgICAgICBkbwogICAgICAgICAgICAg ICAgZXZhbCAiZGVmYXVsdF8keCgpIHsKCQkJCQlkaWUgXCJkZWZhdWx0XyR4KCkgaXMgbm90 IHN1cHBvcnRlZCB3aXRoIEVBUEk9JyRlYXBpJyBkdXJpbmcgcGhhc2UgJHBoYXNlX2Z1bmNc IgoJCQkJfSI7CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgIGV2YWwgImRlZmF1bHQo KSB7CgkJCQlkaWUgXCJkZWZhdWx0KCkgaXMgbm90IHN1cHBvcnRlZCB3aXRoIEVBUEk9JyRl YXBpJyBkdXJpbmcgcGhhc2UgJHBoYXNlX2Z1bmNcIgoJCQl9IgogICAgICAgIDs7CiAgICAg ICAgKikKICAgICAgICAgICAgZGVjbGFyZSAtRiBzcmNfY29uZmlndXJlID4gL2Rldi9udWxs IHx8IGZ1bmN0aW9uIHNyY19jb25maWd1cmUgKCkgCiAgICAgICAgICAgIHsgCiAgICAgICAg ICAgICAgICBfZWFwaTJfc3JjX2NvbmZpZ3VyZSAiJEAiCiAgICAgICAgICAgIH07CiAgICAg ICAgICAgIGRlY2xhcmUgLUYgc3JjX2NvbXBpbGUgPiAvZGV2L251bGwgfHwgZnVuY3Rpb24g c3JjX2NvbXBpbGUgKCkgCiAgICAgICAgICAgIHsgCiAgICAgICAgICAgICAgICBfZWFwaTJf c3JjX2NvbXBpbGUgIiRAIgogICAgICAgICAgICB9OwogICAgICAgICAgICBpZiBoYXNxICRw aGFzZV9mdW5jICRkZWZhdWx0X3BoYXNlczsgdGhlbgogICAgICAgICAgICAgICAgZnVuY3Rp b24gX2VhcGkyX3BrZ19ub2ZldGNoICgpIAogICAgICAgICAgICAgICAgeyAKICAgICAgICAg ICAgICAgICAgICBfZWFwaTBfcGtnX25vZmV0Y2ggIiRAIgogICAgICAgICAgICAgICAgfTsK ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF9lYXBpMl9zcmNfdW5wYWNrICgpIAogICAgICAg ICAgICAgICAgeyAKICAgICAgICAgICAgICAgICAgICBfZWFwaTBfc3JjX3VucGFjayAiJEAi CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgZnVuY3Rpb24gX2VhcGkyX3Ny Y19wcmVwYXJlICgpIAogICAgICAgICAgICAgICAgeyAKICAgICAgICAgICAgICAgICAgICB0 cnVlCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgZnVuY3Rpb24gX2VhcGky X3NyY190ZXN0ICgpIAogICAgICAgICAgICAgICAgeyAKICAgICAgICAgICAgICAgICAgICBf ZWFwaTBfc3JjX3Rlc3QgIiRAIgogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAg IGZ1bmN0aW9uIF9lYXBpMl9zcmNfaW5zdGFsbCAoKSAKICAgICAgICAgICAgICAgIHsgCiAg ICAgICAgICAgICAgICAgICAgZGllICIkRlVOQ05BTUUgaXMgbm90IHN1cHBvcnRlZCIKICAg ICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBmb3IgeCBpbiAkZGVmYXVsdF9waGFz ZXM7CiAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgIGV2YWwgImRlZmF1 bHRfJHgoKSB7IF9lYXBpMl8keCBcIlwkQFwiIDsgfSI7CiAgICAgICAgICAgICAgICBkb25l OwogICAgICAgICAgICAgICAgZXZhbCAiZGVmYXVsdCgpIHsgX2VhcGkyXyRwaGFzZV9mdW5j IFwiXCRAXCIgOyB9IjsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZm9yIHgg aW4gJGRlZmF1bHRfcGhhc2VzOwogICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAg ICAgICBldmFsICJkZWZhdWx0XyR4KCkgewoJCQkJCQlkaWUgXCJkZWZhdWx0XyR4KCkgaXMg bm90IHN1cHBvcnRlZCBpbiBwaGFzZSAkZGVmYXVsdF9mdW5jXCIKCQkJCQl9IjsKICAgICAg ICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgICAgICBldmFsICJkZWZhdWx0KCkgewoJCQkJ CWRpZSBcImRlZmF1bHQoKSBpcyBub3Qgc3VwcG9ydGVkIHdpdGggRUFQST0nJGVhcGknIGR1 cmluZyBwaGFzZSAkcGhhc2VfZnVuY1wiCgkJCQl9IjsKICAgICAgICAgICAgZmkKICAgICAg ICA7OwogICAgZXNhYwp9Cl9lZW5kICgpIAp7IAogICAgbG9jYWwgcmV0dmFsPSR7MTotMH0g ZWZ1bmM9JHsyOi1lZXJyb3J9IG1zZzsKICAgIHNoaWZ0IDI7CiAgICBpZiBbWyAke3JldHZh bH0gPT0gIjAiIF1dOyB0aGVuCiAgICAgICAgbXNnPSIke0JSQUNLRVR9WyAke0dPT0R9b2sk e0JSQUNLRVR9IF0ke05PUk1BTH0iOwogICAgZWxzZQogICAgICAgIGlmIFtbIC1uICQqIF1d OyB0aGVuCiAgICAgICAgICAgICR7ZWZ1bmN9ICIkKiI7CiAgICAgICAgZmk7CiAgICAgICAg bXNnPSIke0JSQUNLRVR9WyAke0JBRH0hISR7QlJBQ0tFVH0gXSR7Tk9STUFMfSI7CiAgICBm aTsKICAgIGlmIFtbICR7UkNfRU5EQ09MfSA9PSAieWVzIiBdXTsgdGhlbgogICAgICAgIGVj aG8gLWUgIiR7RU5EQ09MfSAgJHttc2d9IjsKICAgIGVsc2UKICAgICAgICBbWyAke0xBU1Rf RV9DTUR9ID09IGViZWdpbiBdXSB8fCBMQVNUX0VfTEVOPTA7CiAgICAgICAgcHJpbnRmICIl JCgoIENPTFMgLSBMQVNUX0VfTEVOIC0gNiApKXMlYlxuIiAnJyAiJHttc2d9IjsKICAgIGZp OwogICAgcmV0dXJuICR7cmV0dmFsfQp9Cl9nY2MtaW5zdGFsbC1kaXIgKCkgCnsgCiAgICBl Y2hvICIkKExDX0FMTD1DICQodGMtZ2V0Q0MpIC1wcmludC1zZWFyY2gtZGlycyAyPiAvZGV2 L251bGwgfAkJYXdrICckMT09Imluc3RhbGw6IiB7cHJpbnQgJDJ9JykiCn0KX2djYy1zcGVj cy1kaXJlY3RpdmVfcmF3ICgpIAp7IAogICAgbG9jYWwgY2M9JCh0Yy1nZXRDQyk7CiAgICBs b2NhbCBzcGVjZmlsZXM9JChMQ19BTEw9QyAke2NjfSAtdiAyPiYxIHwgYXdrICckMT09IlJl YWRpbmciIHtwcmludCAkTkZ9Jyk7CiAgICAke2NjfSAtZHVtcHNwZWNzIDI+IC9kZXYvbnVs bCB8IGNhdCAtICR7c3BlY2ZpbGVzfSB8IGF3ayAtdiBkaXJlY3RpdmU9JDEgJ0JFR0lOCXsg cHNwZWM9IiI7IHNwZWM9IiI7IG91dHNpZGU9MSB9CiQxPT0iKiJkaXJlY3RpdmUiOiIgIHsg cHNwZWM9c3BlYzsgc3BlYz0iIjsgb3V0c2lkZT0wOyBuZXh0IH0KCW91dHNpZGUgfHwgTkY9 PTAgfHwgKCBzdWJzdHIoJDEsMSwxKT09IioiICYmIHN1YnN0cigkMSxsZW5ndGgoJDEpLDEp PT0iOiIgKSB7IG91dHNpZGU9MTsgbmV4dCB9CglzcGVjPT0iIiAmJiBzdWJzdHIoJDAsMSwx KT09IisiIHsgc3BlYz1wc3BlYyAiICIgc3Vic3RyKCQwLDIpOyBuZXh0IH0KCXsgc3BlYz1z cGVjICQwIH0KRU5ECXsgcHJpbnQgc3BlYyB9JzsKICAgIHJldHVybiAwCn0KX2djYy1zcGVj cy1leGlzdHMgKCkgCnsgCiAgICBbWyAtZiAkKF9nY2MtaW5zdGFsbC1kaXIpLyQxIF1dCn0K X3NiX2FwcGVuZF92YXIgKCkgCnsgCiAgICBsb2NhbCBfdj0kMTsKICAgIHNoaWZ0OwogICAg bG9jYWwgdmFyPSJTQU5EQk9YXyR7X3Z9IjsKICAgIFtbIC16ICQxIHx8IC1uICQyIF1dICYm IGRpZSAiVXNhZ2U6IGFkZCQoZWNobyAke192fSB8IAkJTENfQUxMPUMgdHIgWzp1cHBlcjpd IFs6bG93ZXI6XSkgPGNvbG9uLWRlbGltaXRlZCBsaXN0IG9mIHBhdGhzPiI7CiAgICBleHBv cnQgJHt2YXJ9PSIkeyF2YXI6KyR7IXZhcn06fSQxIgp9Cl9zb3VyY2VfZWJ1aWxkICgpIAp7 IAogICAgc291cmNlX2FsbF9iYXNocmNzOwogICAgdW5zZXQgREVQRU5EIFJERVBFTkQgUERF UEVORCBJVVNFOwogICAgc291cmNlICIke0VCVUlMRH0iIHx8IGRpZSAiZXJyb3Igc291cmNp bmcgZWJ1aWxkIjsKICAgIGlmIFsgIiR7RUJVSUxEX1BIQVNFfSIgIT0gImRlcGVuZCIgXTsg dGhlbgogICAgICAgIFJFU1RSSUNUPSR7UE9SVEFHRV9SRVNUUklDVH07CiAgICAgICAgW1sg LWUgJFBPUlRBR0VfQlVJTERESVIvLmVidWlsZF9jaGFuZ2VkIF1dICYmIHJtICIkUE9SVEFH RV9CVUlMRERJUi8uZWJ1aWxkX2NoYW5nZWQiOwogICAgZmk7CiAgICBzZXQgLWY7CiAgICBp ZiBbICIke1JERVBFTkQtdW5zZXR9IiA9PSAidW5zZXQiIF07IHRoZW4KICAgICAgICBleHBv cnQgUkRFUEVORD0ke0RFUEVORH07CiAgICAgICAgZGVidWctcHJpbnQgIlJERVBFTkQ6IG5v dCBzZXQuLi4gU2V0dGluZyB0bzogJHtERVBFTkR9IjsKICAgIGZpOwogICAgSVVTRT0iJHtJ VVNFfSAke0VfSVVTRX0iOwogICAgREVQRU5EPSIke0RFUEVORH0gJHtFX0RFUEVORH0iOwog ICAgUkRFUEVORD0iJHtSREVQRU5EfSAke0VfUkRFUEVORH0iOwogICAgUERFUEVORD0iJHtQ REVQRU5EfSAke0VfUERFUEVORH0iOwogICAgdW5zZXQgRUNMQVNTIEVfSVVTRSBFX0RFUEVO RCBFX1JERVBFTkQgRV9QREVQRU5EOwogICAgc2V0ICtmOwogICAgW1sgLW4gJEVBUEkgXV0g fHwgRUFQST0wOwogICAgbG9jYWwgZiB2YWxpZF9waGFzZXM7CiAgICBjYXNlICIkRUFQSSIg aW4gCiAgICAgICAgMCB8IDEpCiAgICAgICAgICAgIHZhbGlkX3BoYXNlcz0ic3JjX2NvbXBp bGUgcGtnX2NvbmZpZyBwa2dfaW5mbyBzcmNfaW5zdGFsbAoJCQkJcGtnX25vZmV0Y2ggcGtn X3Bvc3RpbnN0IHBrZ19wb3N0cm0gcGtnX3ByZWluc3QgcGtnX3ByZXJtCgkJCQlwa2dfc2V0 dXAgc3JjX3Rlc3Qgc3JjX3VucGFjayIKICAgICAgICA7OwogICAgICAgICopCiAgICAgICAg ICAgIHZhbGlkX3BoYXNlcz0ic3JjX2NvbXBpbGUgcGtnX2NvbmZpZyBzcmNfY29uZmlndXJl IHBrZ19pbmZvCgkJCQlzcmNfaW5zdGFsbCBwa2dfbm9mZXRjaCBwa2dfcG9zdGluc3QgcGtn X3Bvc3RybSBwa2dfcHJlaW5zdAoJCQkJc3JjX3ByZXBhcmUgcGtnX3ByZXJtIHBrZ19zZXR1 cCBzcmNfdGVzdCBzcmNfdW5wYWNrIgogICAgICAgIDs7CiAgICBlc2FjOwogICAgREVGSU5F RF9QSEFTRVM9OwogICAgZm9yIGYgaW4gJHZhbGlkX3BoYXNlczsKICAgIGRvCiAgICAgICAg aWYgZGVjbGFyZSAtRiAkZiA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgICBmPSR7ZiNw a2dffTsKICAgICAgICAgICAgREVGSU5FRF9QSEFTRVMrPSIgJHtmI3NyY199IjsKICAgICAg ICBmaTsKICAgIGRvbmU7CiAgICBbWyAtbiAkREVGSU5FRF9QSEFTRVMgXV0gfHwgREVGSU5F RF9QSEFTRVM9LTsKICAgIFtbIC1uICRRQV9QUkVTVFJJUFBFRCBdXSAmJiBleHBvcnQgUUFf UFJFU1RSSVBQRUQKfQphYm9ydF9jb21waWxlICgpIAp7IAogICAgYWJvcnRfaGFuZGxlciAi c3JjX2NvbXBpbGUiICQxOwogICAgcm0gLWYgIiR7UE9SVEFHRV9CVUlMRERJUn0vLmNvbXBp bGVkIjsKICAgIGV4aXQgMQp9CmFib3J0X2NvbmZpZ3VyZSAoKSAKeyAKICAgIGFib3J0X2hh bmRsZXIgc3JjX2NvbmZpZ3VyZSAkMTsKICAgIHJtIC1mICIkUE9SVEFHRV9CVUlMRERJUi8u Y29uZmlndXJlZCI7CiAgICBleGl0IDEKfQphYm9ydF9oYW5kbGVyICgpIAp7IAogICAgbG9j YWwgbXNnOwogICAgaWYgWyAiJDIiICE9ICJmYWlsIiBdOyB0aGVuCiAgICAgICAgbXNnPSIk e0VCVUlMRH06ICR7MX0gYWJvcnRlZDsgZXhpdGluZy4iOwogICAgZWxzZQogICAgICAgIG1z Zz0iJHtFQlVJTER9OiAkezF9IGZhaWxlZDsgZXhpdGluZy4iOwogICAgZmk7CiAgICBlY2hv OwogICAgZWNobyAiJG1zZyI7CiAgICBlY2hvOwogICAgZXZhbCAkezN9OwogICAgdHJhcCAt IFNJR0lOVCBTSUdRVUlUCn0KYWJvcnRfaW5zdGFsbCAoKSAKeyAKICAgIGFib3J0X2hhbmRs ZXIgInNyY19pbnN0YWxsIiAkMTsKICAgIHJtIC1yZiAiJHtQT1JUQUdFX0JVSUxERElSfS9p bWFnZSI7CiAgICBleGl0IDEKfQphYm9ydF9wcmVwYXJlICgpIAp7IAogICAgYWJvcnRfaGFu ZGxlciBzcmNfcHJlcGFyZSAkMTsKICAgIHJtIC1mICIkUE9SVEFHRV9CVUlMRERJUi8ucHJl cGFyZWQiOwogICAgZXhpdCAxCn0KYWJvcnRfdGVzdCAoKSAKeyAKICAgIGFib3J0X2hhbmRs ZXIgImR5bl90ZXN0IiAkMTsKICAgIHJtIC1mICIke1BPUlRBR0VfQlVJTERESVJ9Ly50ZXN0 ZWQiOwogICAgZXhpdCAxCn0KYWRkZGVueSAoKSAKeyAKICAgIF9zYl9hcHBlbmRfdmFyIERF TlkgIiRAIgp9CmFkZHByZWRpY3QgKCkgCnsgCiAgICBfc2JfYXBwZW5kX3ZhciBQUkVESUNU ICIkQCIKfQphZGRyZWFkICgpIAp7IAogICAgX3NiX2FwcGVuZF92YXIgUkVBRCAiJEAiCn0K YWRkd3JpdGUgKCkgCnsgCiAgICBfc2JfYXBwZW5kX3ZhciBXUklURSAiJEAiCn0KYmFzaHJj X2hhcyAoKSAKeyAKICAgIFtbICIgJHsqOjJ9ICIgPT0gKiIgJDEgIiogXV0KfQpiZXN0X3Zl cnNpb24gKCkgCnsgCiAgICBpZiBbICIke0VCVUlMRF9QSEFTRX0iID09ICJkZXBlbmQiIF07 IHRoZW4KICAgICAgICBkaWUgInBvcnRhZ2VxIGNhbGxzIChiZXN0X3ZlcnNpb24gY2FsbHMg cG9ydGFnZXEpIGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgZ2xvYmFsIHNjb3BlIjsKICAgIGZp OwogICAgUFlUSE9OUEFUSD0ke1BPUlRBR0VfUFlNX1BBVEh9JHtQWVRIT05QQVRIOis6fSR7 UFlUSE9OUEFUSH0gIiR7UE9SVEFHRV9CSU5fUEFUSH0vcG9ydGFnZXEiICdiZXN0X3ZlcnNp b24nICIke1JPT1R9IiAiJDEiOwogICAgbG9jYWwgcmV0dmFsPSQ/OwogICAgY2FzZSAiJHty ZXR2YWx9IiBpbiAKICAgICAgICAwKQogICAgICAgICAgICByZXR1cm4gMAogICAgICAgIDs7 CiAgICAgICAgMSkKICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICA7OwogICAgICAgICop CiAgICAgICAgICAgIGRpZSAidW5leHBlY3RlZCBwb3J0YWdlcSBleGl0IGNvZGU6ICR7cmV0 dmFsfSIKICAgICAgICA7OwogICAgZXNhYwp9CmJ1aWx0X3dpdGhfdXNlICgpIAp7IAogICAg bG9jYWwgaGlkZGVuPSJubyI7CiAgICBpZiBbWyAkMSA9PSAiLS1oaWRkZW4iIF1dOyB0aGVu CiAgICAgICAgaGlkZGVuPSJ5ZXMiOwogICAgICAgIHNoaWZ0OwogICAgZmk7CiAgICBsb2Nh bCBtaXNzaW5nX2FjdGlvbj0iZGllIjsKICAgIGlmIFtbICQxID09ICItLW1pc3NpbmciIF1d OyB0aGVuCiAgICAgICAgbWlzc2luZ19hY3Rpb249JDI7CiAgICAgICAgc2hpZnQ7CiAgICAg ICAgc2hpZnQ7CiAgICAgICAgY2FzZSAke21pc3NpbmdfYWN0aW9ufSBpbiAKICAgICAgICAg ICAgdHJ1ZSB8IGZhbHNlIHwgZGllKQoKICAgICAgICAgICAgOzsKICAgICAgICAgICAgKikK ICAgICAgICAgICAgICAgIGRpZSAidW5rbm93biBhY3Rpb24gJyR7bWlzc2luZ19hY3Rpb259 JyIKICAgICAgICAgICAgOzsKICAgICAgICBlc2FjOwogICAgZmk7CiAgICBsb2NhbCBvcHQ9 JDE7CiAgICBbWyAke29wdDowOjF9ID0gIi0iIF1dICYmIHNoaWZ0IHx8IG9wdD0iLWEiOwog ICAgbG9jYWwgUEtHPSQoYmVzdF92ZXJzaW9uICQxKTsKICAgIFtbIC16ICR7UEtHfSBdXSAm JiBkaWUgIlVuYWJsZSB0byByZXNvbHZlICQxIHRvIGFuIGluc3RhbGxlZCBwYWNrYWdlIjsK ICAgIHNoaWZ0OwogICAgbG9jYWwgVVNFRklMRT0ke1JPT1R9L3Zhci9kYi9wa2cvJHtQS0d9 L1VTRTsKICAgIGxvY2FsIElVU0VGSUxFPSR7Uk9PVH0vdmFyL2RiL3BrZy8ke1BLR30vSVVT RTsKICAgIGlmIFtbICEgLWUgJHtVU0VGSUxFfSBdXSB8fCBbWyAhIC1lICR7SVVTRUZJTEV9 ICYmICR7aGlkZGVufSA9PSAibm8iIF1dOyB0aGVuCiAgICAgICAgY2FzZSAke21pc3Npbmdf YWN0aW9ufSBpbiAKICAgICAgICAgICAgdHJ1ZSkKICAgICAgICAgICAgICAgIHJldHVybiAw CiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGZhbHNlKQogICAgICAgICAgICAgICAgcmV0 dXJuIDEKICAgICAgICAgICAgOzsKICAgICAgICAgICAgZGllKQogICAgICAgICAgICAgICAg ZGllICJVbmFibGUgdG8gZGV0ZXJtaW5lIHdoYXQgVVNFIGZsYWdzICRQS0cgd2FzIGJ1aWx0 IHdpdGgiCiAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYzsKICAgIGZpOwogICAgaWYgW1sg JHtoaWRkZW59ID09ICJubyIgXV07IHRoZW4KICAgICAgICBsb2NhbCBJVVNFX0JVSUxUPSgk KDwiJHtJVVNFRklMRX0iKSk7CiAgICAgICAgbG9jYWwgZXhwYW5kOwogICAgICAgIGZvciBl eHBhbmQgaW4gJChlY2hvICR7VVNFX0VYUEFORH0gfCB0ciAnWzp1cHBlcjpdJyAnWzpsb3dl cjpdJyk7CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgW1sgJDEgPT0gJHtleHBhbmR9Xyog XV07IHRoZW4KICAgICAgICAgICAgICAgIGV4cGFuZD0iIjsKICAgICAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICAgICBmaTsKICAgICAgICBkb25lOwogICAgICAgIGlmIFtbIC1uICR7 ZXhwYW5kfSBdXTsgdGhlbgogICAgICAgICAgICBpZiAhIGhhcyAkMSAke0lVU0VfQlVJTFRb QF0jWy0rXX07IHRoZW4KICAgICAgICAgICAgICAgIGNhc2UgJHttaXNzaW5nX2FjdGlvbn0g aW4gCiAgICAgICAgICAgICAgICAgICAgdHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIDAKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGZh bHNlKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMQogICAgICAgICAgICAgICAg ICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZGllKQogICAgICAgICAgICAgICAgICAgICAg ICBkaWUgIiRQS0cgZG9lcyBub3QgYWN0dWFsbHkgc3VwcG9ydCB0aGUgJDEgVVNFIGZsYWch IgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICBlc2FjOwogICAgICAg ICAgICBmaTsKICAgICAgICBmaTsKICAgIGZpOwogICAgbG9jYWwgVVNFX0JVSUxUPSQoPCR7 VVNFRklMRX0pOwogICAgd2hpbGUgW1sgJCMgLWd0IDAgXV07IGRvCiAgICAgICAgaWYgW1sg JHtvcHR9ID0gIi1vIiBdXTsgdGhlbgogICAgICAgICAgICBoYXMgJDEgJHtVU0VfQlVJTFR9 ICYmIHJldHVybiAwOwogICAgICAgIGVsc2UKICAgICAgICAgICAgaGFzICQxICR7VVNFX0JV SUxUfSB8fCByZXR1cm4gMTsKICAgICAgICBmaTsKICAgICAgICBzaGlmdDsKICAgIGRvbmU7 CiAgICBbWyAke29wdH0gPSAiLWEiIF1dCn0KY2Ryb21fZ2V0X2NkcyAoKSAKeyAKICAgIGxv Y2FsIGNkY250PTA7CiAgICBsb2NhbCBmPTsKICAgIGZvciBmIGluICIkQCI7CiAgICBkbwog ICAgICAgICgoKytjZGNudCkpOwogICAgICAgIGV4cG9ydCBDRFJPTV9DSEVDS18ke2NkY250 fT0iJGYiOwogICAgZG9uZTsKICAgIGV4cG9ydCBDRFJPTV9UT1RBTF9DRFM9JHtjZGNudH07 CiAgICBleHBvcnQgQ0RST01fQ1VSUkVOVF9DRD0xOwogICAgaWYgW1sgLW4gJHtDRF9ST09U fSR7Q0RfUk9PVF8xfSBdXTsgdGhlbgogICAgICAgIGxvY2FsIHZhcj07CiAgICAgICAgY2Rj bnQ9MDsKICAgICAgICB3aGlsZSBbWyAke2NkY250fSAtbHQgJHtDRFJPTV9UT1RBTF9DRFN9 IF1dOyBkbwogICAgICAgICAgICAoKCsrY2RjbnQpKTsKICAgICAgICAgICAgdmFyPSJDRF9S T09UXyR7Y2RjbnR9IjsKICAgICAgICAgICAgW1sgLXogJHshdmFyfSBdXSAmJiB2YXI9IkNE X1JPT1QiOwogICAgICAgICAgICBpZiBbWyAteiAkeyF2YXJ9IF1dOyB0aGVuCiAgICAgICAg ICAgICAgICBlZXJyb3IgIllvdSBtdXN0IGVpdGhlciB1c2UganVzdCB0aGUgQ0RfUk9PVCI7 CiAgICAgICAgICAgICAgICBlZXJyb3IgIm9yIHNwZWNpZnkgQUxMIHRoZSBDRF9ST09UX1gg dmFyaWFibGVzLiI7CiAgICAgICAgICAgICAgICBlZXJyb3IgIkluIHRoaXMgY2FzZSwgeW91 IHdpbGwgbmVlZCAke0NEUk9NX1RPVEFMX0NEU30gQ0RfUk9PVF9YIHZhcmlhYmxlcy4iOwog ICAgICAgICAgICAgICAgZGllICJjb3VsZCBub3QgbG9jYXRlIENEX1JPT1RfJHtjZGNudH0i OwogICAgICAgICAgICBmaTsKICAgICAgICBkb25lOwogICAgICAgIGV4cG9ydCBDRFJPTV9S T09UPSR7Q0RfUk9PVF8xOi0ke0NEX1JPT1R9fTsKICAgICAgICBlaW5mbyAiRm91bmQgQ0Qg IyR7Q0RST01fQ1VSUkVOVF9DRH0gcm9vdCBhdCAke0NEUk9NX1JPT1R9IjsKICAgICAgICBl eHBvcnQgQ0RST01fU0VUPS0xOwogICAgICAgIGZvciBmIGluICR7Q0RST01fQ0hFQ0tfMS8v Oi8gfTsKICAgICAgICBkbwogICAgICAgICAgICAoKCsrQ0RST01fU0VUKSk7CiAgICAgICAg ICAgIFtbIC1lICR7Q0RfUk9PVH0vJHtmfSBdXSAmJiBicmVhazsKICAgICAgICBkb25lOwog ICAgICAgIGV4cG9ydCBDRFJPTV9NQVRDSD0ke2Z9OwogICAgICAgIHJldHVybjsKICAgIGZp OwogICAgaWYgW1sgJHtDRFJPTV9UT1RBTF9DRFN9IC1lcSAxIF1dOyB0aGVuCiAgICAgICAg ZWluZm8gIlRoaXMgZWJ1aWxkIHdpbGwgbmVlZCB0aGUgJHtDRFJPTV9OQU1FOi1jZHJvbSBm b3IgJHtQTn19IjsKICAgICAgICBlY2hvOwogICAgICAgIGVpbmZvICJJZiB5b3UgZG8gbm90 IGhhdmUgdGhlIENELCBidXQgaGF2ZSB0aGUgZGF0YSBmaWxlcyI7CiAgICAgICAgZWluZm8g Im1vdW50ZWQgc29tZXdoZXJlIG9uIHlvdXIgZmlsZXN5c3RlbSwganVzdCBleHBvcnQiOwog ICAgICAgIGVpbmZvICJ0aGUgdmFyaWFibGUgQ0RfUk9PVCBzbyB0aGF0IGl0IHBvaW50cyB0 byB0aGUiOwogICAgICAgIGVpbmZvICJkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZmlsZXMu IjsKICAgICAgICBlY2hvOwogICAgICAgIGVpbmZvICJGb3IgZXhhbXBsZToiOwogICAgICAg IGVpbmZvICJleHBvcnQgQ0RfUk9PVD0vbW50L2Nkcm9tIjsKICAgICAgICBlY2hvOwogICAg ZWxzZQogICAgICAgIGlmIFtbIC1uICR7Q0RST01fTkFNRV9TRVR9IF1dOyB0aGVuCiAgICAg ICAgICAgIGNkY250PTA7CiAgICAgICAgICAgIHdoaWxlIFtbICR7Y2RjbnR9IC1sdCAke0NE Uk9NX1RPVEFMX0NEU30gXV07IGRvCiAgICAgICAgICAgICAgICAoKCsrY2RjbnQpKTsKICAg ICAgICAgICAgICAgIGV4cG9ydCBDRFJPTV9OQU1FXyR7Y2RjbnR9PSIke0NEUk9NX05BTUVf U0VUWyQoKCR7Y2RjbnR9LTEpKV19IjsKICAgICAgICAgICAgZG9uZTsKICAgICAgICBmaTsK ICAgICAgICBlaW5mbyAiVGhpcyBwYWNrYWdlIHdpbGwgbmVlZCBhY2Nlc3MgdG8gJHtDRFJP TV9UT1RBTF9DRFN9IGNkcy4iOwogICAgICAgIGNkY250PTA7CiAgICAgICAgd2hpbGUgW1sg JHtjZGNudH0gLWx0ICR7Q0RST01fVE9UQUxfQ0RTfSBdXTsgZG8KICAgICAgICAgICAgKCgr K2NkY250KSk7CiAgICAgICAgICAgIHZhcj0iQ0RST01fTkFNRV8ke2NkY250fSI7CiAgICAg ICAgICAgIFtbICEgLXogJHshdmFyfSBdXSAmJiBlaW5mbyAiIENEICR7Y2RjbnR9OiAkeyF2 YXJ9IjsKICAgICAgICBkb25lOwogICAgICAgIGVjaG87CiAgICAgICAgZWluZm8gIklmIHlv dSBkbyBub3QgaGF2ZSB0aGUgQ0RzLCBidXQgaGF2ZSB0aGUgZGF0YSBmaWxlcyI7CiAgICAg ICAgZWluZm8gIm1vdW50ZWQgc29tZXdoZXJlIG9uIHlvdXIgZmlsZXN5c3RlbSwganVzdCBl eHBvcnQiOwogICAgICAgIGVpbmZvICJ0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyBzbyB0aGV5 IHBvaW50IHRvIHRoZSByaWdodCBwbGFjZToiOwogICAgICAgIGVpbmZvbiAiIjsKICAgICAg ICBjZGNudD0wOwogICAgICAgIHdoaWxlIFtbICR7Y2RjbnR9IC1sdCAke0NEUk9NX1RPVEFM X0NEU30gXV07IGRvCiAgICAgICAgICAgICgoKytjZGNudCkpOwogICAgICAgICAgICBlY2hv IC1uICIgQ0RfUk9PVF8ke2NkY250fSI7CiAgICAgICAgZG9uZTsKICAgICAgICBlY2hvOwog ICAgICAgIGVpbmZvICJPciwgaWYgeW91IGhhdmUgYWxsIHRoZSBmaWxlcyBpbiB0aGUgc2Ft ZSBwbGFjZSwgb3IiOwogICAgICAgIGVpbmZvICJ5b3Ugb25seSBoYXZlIG9uZSBjZHJvbSwg eW91IGNhbiBleHBvcnQgQ0RfUk9PVCI7CiAgICAgICAgZWluZm8gImFuZCB0aGF0IHBsYWNl IHdpbGwgYmUgdXNlZCBhcyB0aGUgc2FtZSBkYXRhIHNvdXJjZSI7CiAgICAgICAgZWluZm8g ImZvciBhbGwgdGhlIENEcy4iOwogICAgICAgIGVjaG87CiAgICAgICAgZWluZm8gIkZvciBl eGFtcGxlOiI7CiAgICAgICAgZWluZm8gImV4cG9ydCBDRF9ST09UXzE9L21udC9jZHJvbSI7 CiAgICAgICAgZWNobzsKICAgIGZpOwogICAgZXhwb3J0IENEUk9NX1NFVD0iIjsKICAgIGV4 cG9ydCBDRFJPTV9DVVJSRU5UX0NEPTA7CiAgICBjZHJvbV9sb2FkX25leHRfY2QKfQpjZHJv bV9sb2FkX25leHRfY2QgKCkgCnsgCiAgICBsb2NhbCB2YXI7CiAgICAoKCsrQ0RST01fQ1VS UkVOVF9DRCkpOwogICAgdW5zZXQgQ0RST01fUk9PVDsKICAgIHZhcj1DRF9ST09UXyR7Q0RS T01fQ1VSUkVOVF9DRH07CiAgICBbWyAteiAkeyF2YXJ9IF1dICYmIHZhcj0iQ0RfUk9PVCI7 CiAgICBpZiBbWyAteiAkeyF2YXJ9IF1dOyB0aGVuCiAgICAgICAgdmFyPSJDRFJPTV9DSEVD S18ke0NEUk9NX0NVUlJFTlRfQ0R9IjsKICAgICAgICBfY2Ryb21fbG9jYXRlX2ZpbGVfb25f Y2QgJHshdmFyfTsKICAgIGVsc2UKICAgICAgICBleHBvcnQgQ0RST01fUk9PVD0keyF2YXJ9 OwogICAgZmk7CiAgICBlaW5mbyAiRm91bmQgQ0QgIyR7Q0RST01fQ1VSUkVOVF9DRH0gcm9v dCBhdCAke0NEUk9NX1JPT1R9Igp9CmNoZWNrX0tWICgpIAp7IAogICAgaWYgWyAteiAiJHtL Vn0iIF07IHRoZW4KICAgICAgICBlZXJyb3IgIiI7CiAgICAgICAgZWVycm9yICJDb3VsZCBu b3QgZGV0ZXJtaW5lIHlvdXIga2VybmVsIHZlcnNpb24uIjsKICAgICAgICBlZXJyb3IgIk1h a2Ugc3VyZSB0aGF0IHlvdSBoYXZlIGEgL3Vzci9zcmMvbGludXggc3ltbGluaywiOwogICAg ICAgIGVlcnJvciAiYW5kIHRoYXQgdGhlIGluZGljYXRlZCBrZXJuZWwgaGFzIGJlZW4gY29u ZmlndXJlZC4iOwogICAgICAgIGVlcnJvciAiWW91IGNhbiBhbHNvIHNpbXBseSBydW4gdGhl IGZvbGxvd2luZyBjb21tYW5kIjsKICAgICAgICBlZXJyb3IgImluIHRoZSBkaXJlY3Rvcnkg cmVmZXJlbmNlZCBieSAvdXNyL3NyYy9saW51eDoiOwogICAgICAgIGVlcnJvciAiIG1ha2Ug aW5jbHVkZS9saW51eC92ZXJzaW9uLmgiOwogICAgICAgIGVlcnJvciAiIjsKICAgICAgICBk aWU7CiAgICBmaQp9CmNoZWNrX2V4dHJhX2NvbmZpZyAoKSAKeyAKICAgIGxvY2FsIGNvbmZp ZyBuZWdhdGUgZGllIGVycm9yIHJld29ya21vZHVsZW5hbWVzOwogICAgbG9jYWwgc29mdF9l cnJvcnNfY291bnQ9MCBoYXJkX2Vycm9yc19jb3VudD0wIGNvbmZpZ19yZXF1aXJlZD0wOwog ICAgZ2V0X3ZlcnNpb247CiAgICBmb3IgY29uZmlnIGluICR7Q09ORklHX0NIRUNLfTsKICAg IGRvCiAgICAgICAgaWYgW1sgIiR7Y29uZmlnOjA6MX0iICE9ICJ+IiBdXTsgdGhlbgogICAg ICAgICAgICBjb25maWdfcmVxdWlyZWQ9MTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg Zmk7CiAgICBkb25lOwogICAgaWYgW1sgJHtjb25maWdfcmVxdWlyZWR9ID09IDAgXV07IHRo ZW4KICAgICAgICBpZiAhIGxpbnV4X2NvbmZpZ19leGlzdHM7IHRoZW4KICAgICAgICAgICAg cmV0dXJuIDA7CiAgICAgICAgZmk7CiAgICBlbHNlCiAgICAgICAgcmVxdWlyZV9jb25maWd1 cmVkX2tlcm5lbDsKICAgIGZpOwogICAgZWluZm8gIkNoZWNraW5nIGZvciBzdWl0YWJsZSBr ZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLi4uIjsKICAgIGZvciBjb25maWcgaW4gJHtD T05GSUdfQ0hFQ0t9OwogICAgZG8KICAgICAgICBkaWU9MTsKICAgICAgICBlcnJvcj0wOwog ICAgICAgIG5lZ2F0ZT0wOwogICAgICAgIHJld29ya21vZHVsZW5hbWVzPTA7CiAgICAgICAg aWYgW1sgJHtjb25maWc6MDoxfSA9PSAifiIgXV07IHRoZW4KICAgICAgICAgICAgZGllPTA7 CiAgICAgICAgICAgIGNvbmZpZz0ke2NvbmZpZzoxfTsKICAgICAgICBlbHNlCiAgICAgICAg ICAgIGlmIFtbICR7Y29uZmlnOjA6MX0gPT0gIkAiIF1dOyB0aGVuCiAgICAgICAgICAgICAg ICBkaWU9MDsKICAgICAgICAgICAgICAgIHJld29ya21vZHVsZW5hbWVzPTE7CiAgICAgICAg ICAgICAgICBjb25maWc9JHtjb25maWc6MX07CiAgICAgICAgICAgIGZpOwogICAgICAgIGZp OwogICAgICAgIGlmIFtbICR7Y29uZmlnOjA6MX0gPT0gIiEiIF1dOyB0aGVuCiAgICAgICAg ICAgIG5lZ2F0ZT0xOwogICAgICAgICAgICBjb25maWc9JHtjb25maWc6MX07CiAgICAgICAg Zmk7CiAgICAgICAgaWYgW1sgJHtuZWdhdGV9ID09IDEgXV07IHRoZW4KICAgICAgICAgICAg bGludXhfY2hrY29uZmlnX3ByZXNlbnQgJHtjb25maWd9ICYmIGVycm9yPTI7CiAgICAgICAg ZWxzZQogICAgICAgICAgICBpZiBbWyAke3Jld29ya21vZHVsZW5hbWVzfSA9PSAxIF1dOyB0 aGVuCiAgICAgICAgICAgICAgICBsb2NhbCB0ZW1wX2NvbmZpZz0iJHtjb25maWcvLyo6fSIg aSBuOwogICAgICAgICAgICAgICAgY29uZmlnPSIke2NvbmZpZy8vOip9IjsKICAgICAgICAg ICAgICAgIGlmIGxpbnV4X2Noa2NvbmZpZ19wcmVzZW50ICR7Y29uZmlnfTsgdGhlbgogICAg ICAgICAgICAgICAgICAgIGZvciBpIGluICR7TU9EVUxFX05BTUVTfTsKICAgICAgICAgICAg ICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICBuPSIke2kvLyR7dGVtcF9jb25m aWd9fSI7CiAgICAgICAgICAgICAgICAgICAgICAgIFtbIC16ICR7bi8vXCgqfSBdXSAmJiBN T0RVTEVfSUdOT1JFPSIke01PRFVMRV9JR05PUkV9ICR7dGVtcF9jb25maWd9IjsKICAgICAg ICAgICAgICAgICAgICBkb25lOwogICAgICAgICAgICAgICAgICAgIGVycm9yPTI7CiAgICAg ICAgICAgICAgICBmaTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgbGludXhf Y2hrY29uZmlnX3ByZXNlbnQgJHtjb25maWd9IHx8IGVycm9yPTE7CiAgICAgICAgICAgIGZp OwogICAgICAgIGZpOwogICAgICAgIGlmIFtbICR7ZXJyb3J9ID4gMCBdXTsgdGhlbgogICAg ICAgICAgICBsb2NhbCByZXBvcnRfZnVuYz0iZWVycm9yIiBsb2NhbF9lcnJvcjsKICAgICAg ICAgICAgbG9jYWxfZXJyb3I9IkVSUk9SXyR7Y29uZmlnfSI7CiAgICAgICAgICAgIGxvY2Fs X2Vycm9yPSIkeyFsb2NhbF9lcnJvcn0iOwogICAgICAgICAgICBpZiBbWyAteiAiJHtsb2Nh bF9lcnJvcn0iIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBsb2NhbF9lcnJvcj0iJHtjb25m aWd9X0VSUk9SIjsKICAgICAgICAgICAgICAgIGxvY2FsX2Vycm9yPSIkeyFsb2NhbF9lcnJv cn0iOwogICAgICAgICAgICBmaTsKICAgICAgICAgICAgaWYgW1sgJHtkaWV9ID09IDAgJiYg LXogIiR7bG9jYWxfZXJyb3J9IiBdXTsgdGhlbgogICAgICAgICAgICAgICAgbG9jYWxfZXJy b3I9IldBUk5JTkdfJHtjb25maWd9IjsKICAgICAgICAgICAgICAgIGxvY2FsX2Vycm9yPSIk eyFsb2NhbF9lcnJvcn0iOwogICAgICAgICAgICAgICAgaWYgW1sgLW4gIiR7bG9jYWxfZXJy b3J9IiBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIHJlcG9ydF9mdW5jPSJld2FybiI7 CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGlmIFtb IC16ICIke2xvY2FsX2Vycm9yfSIgXV07IHRoZW4KICAgICAgICAgICAgICAgIFtbICR7ZXJy b3J9ID09IDEgXV0gJiYgbG9jYWxfZXJyb3I9ImlzIG5vdCBzZXQgd2hlbiBpdCBzaG91bGQg YmUuIiB8fCBsb2NhbF9lcnJvcj0ic2hvdWxkIG5vdCBiZSBzZXQuIEJ1dCBpdCBpcy4iOwog ICAgICAgICAgICAgICAgbG9jYWxfZXJyb3I9IkNPTkZJR18ke2NvbmZpZ306XHQgJHtsb2Nh bF9lcnJvcn0iOwogICAgICAgICAgICBmaTsKICAgICAgICAgICAgaWYgW1sgJHtkaWV9ID09 IDAgXV07IHRoZW4KICAgICAgICAgICAgICAgICR7cmVwb3J0X2Z1bmN9ICIgICR7bG9jYWxf ZXJyb3J9IjsKICAgICAgICAgICAgICAgIHNvZnRfZXJyb3JzX2NvdW50PSRbc29mdF9lcnJv cnNfY291bnQgKyAxXTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgJHtyZXBv cnRfZnVuY30gIiAgJHtsb2NhbF9lcnJvcn0iOwogICAgICAgICAgICAgICAgaGFyZF9lcnJv cnNfY291bnQ9JFtoYXJkX2Vycm9yc19jb3VudCArIDFdOwogICAgICAgICAgICBmaTsKICAg ICAgICBmaTsKICAgIGRvbmU7CiAgICBpZiBbWyAke2hhcmRfZXJyb3JzX2NvdW50fSA+IDAg XV07IHRoZW4KICAgICAgICBlZXJyb3IgIlBsZWFzZSBjaGVjayB0byBtYWtlIHN1cmUgdGhl c2Ugb3B0aW9ucyBhcmUgc2V0IGNvcnJlY3RseS4iOwogICAgICAgIGVlcnJvciAiRmFpbHVy ZSB0byBkbyBzbyBtYXkgY2F1c2UgdW5leHBlY3RlZCBwcm9ibGVtcy4iOwogICAgICAgIGVl cnJvciAiT25jZSB5b3UgaGF2ZSBzYXRpc2ZpZWQgdGhlc2Ugb3B0aW9ucywgcGxlYXNlIHRy eSBtZXJnaW5nIjsKICAgICAgICBlZXJyb3IgInRoaXMgcGFja2FnZSBhZ2Fpbi4iOwogICAg ICAgIGRpZSAiSW5jb3JyZWN0IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMiOwogICAg ZWxzZQogICAgICAgIGlmIFtbICR7c29mdF9lcnJvcnNfY291bnR9ID4gMCBdXTsgdGhlbgog ICAgICAgICAgICBld2FybiAiUGxlYXNlIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGVzZSBvcHRp b25zIGFyZSBzZXQgY29ycmVjdGx5LiI7CiAgICAgICAgICAgIGV3YXJuICJGYWlsdXJlIHRv IGRvIHNvIG1heSBjYXVzZSB1bmV4cGVjdGVkIHByb2JsZW1zLiI7CiAgICAgICAgZWxzZQog ICAgICAgICAgICBlZW5kIDA7CiAgICAgICAgZmk7CiAgICBmaQp9CmNoZWNrX2tlcm5lbF9i dWlsdCAoKSAKeyAKICAgIHJlcXVpcmVfY29uZmlndXJlZF9rZXJuZWw7CiAgICBnZXRfdmVy c2lvbjsKICAgIGlmIFsgISAtZiAiJHtLVl9PVVRfRElSfS9pbmNsdWRlL2xpbnV4L3ZlcnNp b24uaCIgXTsgdGhlbgogICAgICAgIGVlcnJvciAiVGhlc2Ugc291cmNlcyBoYXZlIG5vdCB5 ZXQgYmVlbiBwcmVwYXJlZC4iOwogICAgICAgIGVlcnJvciAiV2UgY2Fubm90IGJ1aWxkIGFn YWluc3QgYW4gdW5wcmVwYXJlZCB0cmVlLiI7CiAgICAgICAgZWVycm9yICJUbyByZXNvbHZl IHRoaXMsIHBsZWFzZSB0eXBlIHRoZSBmb2xsb3dpbmc6IjsKICAgICAgICBlZXJyb3I7CiAg ICAgICAgZWVycm9yICIjIGNkICR7S1ZfRElSfSI7CiAgICAgICAgZWVycm9yICIjIG1ha2Ug b2xkY29uZmlnIjsKICAgICAgICBlZXJyb3IgIiMgbWFrZSBtb2R1bGVzX3ByZXBhcmUiOwog ICAgICAgIGVlcnJvcjsKICAgICAgICBlZXJyb3IgIlRoZW4gcGxlYXNlIHRyeSBtZXJnaW5n IHRoaXMgbW9kdWxlIGFnYWluLiI7CiAgICAgICAgZGllICJLZXJuZWwgc291cmNlcyBuZWVk IGNvbXBpbGluZyBmaXJzdCI7CiAgICBmaQp9CmNoZWNrX2xpY2Vuc2UgKCkgCnsgCiAgICBs b2NhbCBsaWM9JDE7CiAgICBpZiBbIC16ICIke2xpY30iIF07IHRoZW4KICAgICAgICBsaWM9 IiR7UE9SVERJUn0vbGljZW5zZXMvJHtMSUNFTlNFfSI7CiAgICBlbHNlCiAgICAgICAgaWYg WyAtZSAiJHtQT1JURElSfS9saWNlbnNlcy8ke2xpY30iIF07IHRoZW4KICAgICAgICAgICAg bGljPSIke1BPUlRESVJ9L2xpY2Vuc2VzLyR7bGljfSI7CiAgICAgICAgZWxzZQogICAgICAg ICAgICBpZiBbIC1lICIke1BXRH0vJHtsaWN9IiBdOyB0aGVuCiAgICAgICAgICAgICAgICBs aWM9IiR7UFdEfS8ke2xpY30iOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBp ZiBbIC1lICIke2xpY30iIF07IHRoZW4KICAgICAgICAgICAgICAgICAgICBsaWM9IiR7bGlj fSI7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZmk7CiAgICAgICAgZmk7CiAg ICBmaTsKICAgIFsgISAtZiAiJHtsaWN9IiBdICYmIGRpZSAiQ291bGQgbm90IGZpbmQgcmVx dWVzdGVkIGxpY2Vuc2UgJHtsaWN9IjsKICAgIGxvY2FsIGw9ImBiYXNlbmFtZSAke2xpY31g IjsKICAgIGxvY2FsIHNob3B0cz0kLTsKICAgIGxvY2FsIGFsaWM7CiAgICBzZXQgLW8gbm9n bG9iOwogICAgZm9yIGFsaWMgaW4gJHtBQ0NFUFRfTElDRU5TRX07CiAgICBkbwogICAgICAg IGlmIFtbICR7YWxpY30gPT0gJHtsfSBdXTsgdGhlbgogICAgICAgICAgICBzZXQgK28gbm9n bG9iOwogICAgICAgICAgICBzZXQgLSR7c2hvcHRzfTsKICAgICAgICAgICAgcmV0dXJuIDA7 CiAgICAgICAgZmk7CiAgICBkb25lOwogICAgc2V0ICtvIG5vZ2xvYjsKICAgIHNldCAtJHNo b3B0czsKICAgIGxvY2FsIGxpY21zZz0kKGVta3RlbXApOwogICAgY2F0ICA+ICR7bGljbXNn fSA8PC1FT0YKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgpUaGUgZm9sbG93aW5nIGxpY2Vuc2Ugb3V0bGluZXMgdGhlIHRlcm1z IG9mIHVzZSBvZiB0aGlzCnBhY2thZ2UuICBZb3UgTVVTVCBhY2NlcHQgdGhpcyBsaWNlbnNl IGZvciBpbnN0YWxsYXRpb24gdG8KY29udGludWUuICBXaGVuIHlvdSBhcmUgZG9uZSB2aWV3 aW5nLCBoaXQgJ3EnLglJZiB5b3UKQ1RSTCtDIG91dCBvZiB0aGlzLCB0aGUgaW5zdGFsbCB3 aWxsIG5vdCBydW4hCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKCkVPRgoKICAgIGNhdCAke2xpY30gPj4gJHtsaWNtc2d9Owog ICAgJHtQQUdFUjotbGVzc30gJHtsaWNtc2d9IHx8IGRpZSAiQ291bGQgbm90IGV4ZWN1dGUg cGFnZXIgKCR7UEFHRVJ9KSB0byBhY2NlcHQgJHtsaWN9IjsKICAgIGVpbmZvbiAiRG8geW91 IGFjY2VwdCB0aGUgdGVybXMgb2YgdGhpcyBsaWNlbnNlICgke2x9KT8gW3llcy9ub10gIjsK ICAgIHJlYWQgYWxpYzsKICAgIGNhc2UgJHthbGljfSBpbiAKICAgICAgICB5ZXMgfCBZZXMg fCB5IHwgWSkKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICA7OwogICAgICAgICopCiAg ICAgICAgICAgIGVjaG87CiAgICAgICAgICAgIGVjaG87CiAgICAgICAgICAgIGVjaG87CiAg ICAgICAgICAgIGVlcnJvciAiWW91IE1VU1QgYWNjZXB0IHRoZSBsaWNlbnNlIHRvIGNvbnRp bnVlISAgRXhpdGluZyEiOwogICAgICAgICAgICBkaWUgIkZhaWxlZCB0byBhY2NlcHQgbGlj ZW5zZSIKICAgICAgICA7OwogICAgZXNhYwp9CmNoZWNrX21vZHVsZXNfc3VwcG9ydGVkICgp IAp7IAogICAgcmVxdWlyZV9jb25maWd1cmVkX2tlcm5lbDsKICAgIGdldF92ZXJzaW9uOwog ICAgaWYgISBsaW51eF9jaGtjb25maWdfYnVpbHRpbiAiTU9EVUxFUyI7IHRoZW4KICAgICAg ICBlZXJyb3IgIlRoZXNlIHNvdXJjZXMgZG8gbm90IHN1cHBvcnQgbG9hZGluZyBleHRlcm5h bCBtb2R1bGVzLiI7CiAgICAgICAgZWVycm9yICJ0byBiZSBhYmxlIHRvIHVzZSB0aGlzIG1v ZHVsZSBwbGVhc2UgZW5hYmxlIFwiTG9hZGFibGUgbW9kdWxlcyBzdXBwb3J0XCIiOwogICAg ICAgIGVlcnJvciAiaW4geW91ciBrZXJuZWwsIHJlY29tcGlsZSBhbmQgdGhlbiB0cnkgbWVy Z2luZyB0aGlzIG1vZHVsZSBhZ2Fpbi4iOwogICAgICAgIGRpZSAiTm8gc3VwcG9ydCBmb3Ig ZXh0ZXJuYWwgbW9kdWxlcyBpbiAke0tWX0ZVTEx9IGNvbmZpZyI7CiAgICBmaQp9CmNoZWNr X3Zlcm1hZ2ljICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0g JCo7CiAgICBsb2NhbCBjdXJyX2djY192ZXI9JChnY2MgLWR1bXB2ZXJzaW9uKTsKICAgIGxv Y2FsIHRtcGZpbGUgb2xkX2Nob3N0IG9sZF9nY2NfdmVyIHJlc3VsdD0wOwogICAgdG1wZmls ZT1gZmluZCAke0tWX0RJUn0vIC1pbmFtZSAiKi5vLmNtZCIgLWV4ZWMgZ3JlcCB1c3IvbGli L2djYyB7fSBcOyAtcXVpdGA7CiAgICB0bXBmaWxlPSR7dG1wZmlsZS8vKnVzci9saWJ9Owog ICAgdG1wZmlsZT0ke3RtcGZpbGUvL1wvaW5jbHVkZSp9OwogICAgb2xkX2Nob3N0PSR7dG1w ZmlsZS8vKmdjY1wvfTsKICAgIG9sZF9jaG9zdD0ke29sZF9jaG9zdC8vXC8qfTsKICAgIG9s ZF9nY2NfdmVyPSR7dG1wZmlsZS8vKlwvfTsKICAgIGlmIFtbIC16ICR7b2xkX2djY192ZXJ9 IHx8IC16ICR7b2xkX2Nob3N0fSBdXTsgdGhlbgogICAgICAgIGV3YXJuICIiOwogICAgICAg IGV3YXJuICJVbmFibGUgdG8gZGV0ZWN0IHdoYXQgdmVyc2lvbiBvZiBHQ0Mgd2FzIHVzZWQg dG8gY29tcGlsZSI7CiAgICAgICAgZXdhcm4gInRoZSBrZXJuZWwuIEJ1aWxkIHdpbGwgY29u dGludWUsIGJ1dCB5b3UgbWF5IGV4cGVyaWVuY2UgcHJvYmxlbXMuIjsKICAgIGVsc2UKICAg ICAgICBpZiBbWyAke2N1cnJfZ2NjX3Zlcn0gIT0gJHtvbGRfZ2NjX3Zlcn0gXV07IHRoZW4K ICAgICAgICAgICAgZXdhcm4gIiI7CiAgICAgICAgICAgIGV3YXJuICJUaGUgdmVyc2lvbiBv ZiBHQ0MgeW91IGFyZSB1c2luZyAoJHtjdXJyX2djY192ZXJ9KSBkb2VzIjsKICAgICAgICAg ICAgZXdhcm4gIm5vdCBtYXRjaCB0aGUgdmVyc2lvbiBvZiBHQ0MgdXNlZCB0byBjb21waWxl IHRoZSI7CiAgICAgICAgICAgIGV3YXJuICJrZXJuZWwgKCR7b2xkX2djY192ZXJ9KS4iOwog ICAgICAgICAgICByZXN1bHQ9MTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGlmIFtbICR7 Q0hPU1R9ICE9ICR7b2xkX2Nob3N0fSBdXTsgdGhlbgogICAgICAgICAgICAgICAgZXdhcm4g IiI7CiAgICAgICAgICAgICAgICBld2FybiAiVGhlIGN1cnJlbnQgQ0hPU1QgKCR7Q0hPU1R9 KSBkb2VzIG5vdCBtYXRjaCB0aGUgY2hvc3QiOwogICAgICAgICAgICAgICAgZXdhcm4gInVz ZWQgd2hlbiBjb21waWxpbmcgdGhlIGtlcm5lbCAoJHtvbGRfY2hvc3R9KS4iOwogICAgICAg ICAgICAgICAgcmVzdWx0PTE7CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgZmk7 CiAgICBpZiBbWyAke3Jlc3VsdH0gLWd0IDAgXV07IHRoZW4KICAgICAgICBld2FybiAiIjsK ICAgICAgICBld2FybiAiQnVpbGQgd2lsbCBub3QgY29udGludWUsIGJlY2F1c2UgeW91IHdp bGwgZXhwZXJpZW5jZSBwcm9ibGVtcy4iOwogICAgICAgIGV3YXJuICJUbyBmaXggdGhpcyBl aXRoZXIgY2hhbmdlIHRoZSB2ZXJzaW9uIG9mIEdDQyB5b3Ugd2lzaCB0byB1c2UiOwogICAg ICAgIGV3YXJuICJ0byBtYXRjaCB0aGUga2VybmVsLCBvciByZWNvbXBpbGUgdGhlIGtlcm5l bCBmaXJzdC4iOwogICAgICAgIGRpZSAiR0NDIFZlcnNpb24gTWlzbWF0Y2guIjsKICAgIGZp Cn0KY2hlY2tfemxpYmluZmxhdGUgKCkgCnsgCiAgICByZXF1aXJlX2NvbmZpZ3VyZWRfa2Vy bmVsOwogICAgZ2V0X3ZlcnNpb247CiAgICBsb2NhbCBJTkZMQVRFOwogICAgbG9jYWwgREVG TEFURTsKICAgIGVpbmZvICJEZXRlcm1pbmluZyB0aGUgdXNhYmlsaXR5IG9mIFpMSUJfSU5G TEFURSBzdXBwb3J0IGluIHlvdXIga2VybmVsIjsKICAgIGViZWdpbiAiY2hlY2tpbmcgWkxJ Ql9JTkZMQVRFIjsKICAgIGdldGZpbGV2YXJfaXNidWlsdGluIENPTkZJR19aTElCX0lORkxB VEUgJHtLVl9ESVJ9Ly5jb25maWc7CiAgICBlZW5kICQ/OwogICAgWyAiJD8iICE9IDAgXSAm JiBkaWU7CiAgICBlYmVnaW4gImNoZWNraW5nIFpMSUJfREVGTEFURSI7CiAgICBnZXRmaWxl dmFyX2lzYnVpbHRpbiBDT05GSUdfWkxJQl9ERUZMQVRFICR7S1ZfRElSfS8uY29uZmlnOwog ICAgZWVuZCAkPzsKICAgIFsgIiQ/IiAhPSAwIF0gJiYgZGllOwogICAgbG9jYWwgTElORU5P X1NUQVJUOwogICAgbG9jYWwgTElORU5PX0VORDsKICAgIGxvY2FsIFNZTUJPTFM7CiAgICBs b2NhbCB4OwogICAgTElORU5PX0VORD0iJChncmVwIC1uICdDT05GSUdfWkxJQl9JTkZMQVRF IHknICR7S1ZfRElSfS9saWIvQ29uZmlnLmluIHwgY3V0IC1kIDogLWYgMSkiOwogICAgTElO RU5PX1NUQVJUPSIkKGhlYWQgLW4gJExJTkVOT19FTkQgJHtLVl9ESVJ9L2xpYi9Db25maWcu aW4gfCBncmVwIC1uICdpZiBcWycgfCB0YWlsIC1uIDEgfCBjdXQgLWQgOiAtZiAxKSI7CiAg ICAoKCBMSU5FTk9fQU1PVU5UID0gJExJTkVOT19FTkQgLSAkTElORU5PX1NUQVJUICkpOwog ICAgKCggTElORU5PX0VORCA9ICRMSU5FTk9fRU5EIC0gMSApKTsKICAgIFNZTUJPTFM9IiQo aGVhZCAtbiAkTElORU5PX0VORCAke0tWX0RJUn0vbGliL0NvbmZpZy5pbiB8IHRhaWwgLW4g JExJTkVOT19BTU9VTlQgfCBzZWQgLWUgJ3MvXi4qXChDT05GSUdfW15cIiBdKlwpLiovXDEv ZzsnKSI7CiAgICBmb3IgeCBpbiAkU1lNQk9MUzsKICAgIGRvCiAgICAgICAgaWYgWyAiJHsh eH0iID0gInkiIF07IHRoZW4KICAgICAgICAgICAgZWluZm8gIiR7eH0gZW5zdXJlcyB6bGli IGlzIGxpbmtlZCBpbnRvIHlvdXIga2VybmVsIC0gZXhjZWxsZW50IjsKICAgICAgICAgICAg cmV0dXJuIDA7CiAgICAgICAgZmk7CiAgICBkb25lOwogICAgZWVycm9yOwogICAgZWVycm9y ICJUaGlzIGtlcm5lbCBtb2R1bGUgcmVxdWlyZXMgWkxJQiBsaWJyYXJ5IHN1cHBvcnQuIjsK ICAgIGVlcnJvciAiWW91IGhhdmUgZW5hYmxlZCB6bGliIHN1cHBvcnQgaW4geW91ciBrZXJu ZWwsIGJ1dCBoYXZlbid0IGVuYWJsZWQiOwogICAgZWVycm9yICJlbmFibGVkIGFueSBvcHRp b24gdGhhdCB3aWxsIGVuc3VyZSB0aGF0IHpsaWIgaXMgbGlua2VkIGludG8geW91ciI7CiAg ICBlZXJyb3IgImtlcm5lbC4iOwogICAgZWVycm9yOwogICAgZWVycm9yICJQbGVhc2UgZW5z dXJlIHRoYXQgeW91IGVuYWJsZSBhdCBsZWFzdCBvbmUgb2YgdGhlc2Ugb3B0aW9uczoiOwog ICAgZWVycm9yOwogICAgZm9yIHggaW4gJFNZTUJPTFM7CiAgICBkbwogICAgICAgIGVlcnJv ciAiICAqICR4IjsKICAgIGRvbmU7CiAgICBlZXJyb3I7CiAgICBlZXJyb3IgIlBsZWFzZSBy ZW1lbWJlciB0byByZWNvbXBpbGUgYW5kIGluc3RhbGwgeW91ciBrZXJuZWwsIGFuZCByZWJv b3QiOwogICAgZWVycm9yICJpbnRvIHlvdXIgbmV3IGtlcm5lbCBiZWZvcmUgYXR0ZW1wdGlu ZyB0byBsb2FkIHRoaXMga2VybmVsIG1vZHVsZS4iOwogICAgZGllICJLZXJuZWwgZG9lc24n dCBpbmNsdWRlIHpsaWIgc3VwcG9ydCIKfQpjb252ZXJ0X3RvX20gKCkgCnsgCiAgICBkZWJ1 Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgIGlmIHVzZV9tOyB0aGVuCiAg ICAgICAgWyAhIC1mICIkezF9IiBdICYmIGRpZSAiY29udmVydF90b19tKCkgcmVxdWlyZXMg YSBmaWxlbmFtZSBhcyBhbiBhcmd1bWVudCI7CiAgICAgICAgZWJlZ2luICJDb252ZXJ0aW5n ICR7MS8ke1dPUktESVJ9XC8vfSB0byB1c2UgTT0gaW5zdGVhZCBvZiBTVUJESVJTPSI7CiAg ICAgICAgc2VkIC1pICdzOlNVQkRJUlM9Ok09OmcnICR7MX07CiAgICAgICAgZWVuZCAkPzsK ICAgIGZpCn0KY3JlYXRlX21sX2luY2x1ZGVzICgpIAp7IAogICAgbG9jYWwgZGVzdD0kMTsK ICAgIHNoaWZ0OwogICAgbG9jYWwgYmFzZWRpcnM9JChjcmVhdGVfbWxfaW5jbHVkZXMtbGlz dGRpcnMgIiRAIik7CiAgICBjcmVhdGVfbWxfaW5jbHVkZXMtbWFrZWRlc3RkaXJzICR7ZGVz dH0gJHtiYXNlZGlyc307CiAgICBsb2NhbCBmaWxlOwogICAgZm9yIGZpbGUgaW4gJChjcmVh dGVfbWxfaW5jbHVkZXMtYWxsZmlsZXMgJHtiYXNlZGlyc30pOwogICAgZG8KICAgICAgICAo IGVjaG8gIi8qIEF1dG9nZW5lcmF0ZWQgYnkgY3JlYXRlX21sX2luY2x1ZGVzKCkgaW4gbXVs dGlsaWIuZWNsYXNzICovIjsKICAgICAgICBsb2NhbCBkaXI7CiAgICAgICAgZm9yIGRpciBp biAke2Jhc2VkaXJzfTsKICAgICAgICBkbwogICAgICAgICAgICBpZiBbWyAtZiAke0R9LyR7 ZGlyfS8ke2ZpbGV9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvICIiOwogICAgICAg ICAgICAgICAgbG9jYWwgc3ltPSQoY3JlYXRlX21sX2luY2x1ZGVzLXN5bV9mb3JfZGlyICR7 ZGlyfSAiJEAiKTsKICAgICAgICAgICAgICAgIGlmIFtbICR7c3ltLz19ICE9ICIke3N5bX0i IF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgZWNobyAiI2lmICR7c3ltfSI7CiAgICAg ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgaWYgW1sgJHtzeW06OjF9ID09 ICIhIiBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIjaWZuZGVmICR7 c3ltOjF9IjsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg ICAgIGVjaG8gIiNpZmRlZiAke3N5bX0iOwogICAgICAgICAgICAgICAgICAgIGZpOwogICAg ICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICBlY2hvICIjIGluY2x1ZGUgPCQoY3Jl YXRlX21sX2luY2x1ZGVzLWFic29sdXRlICR7ZGlyfS8ke2ZpbGV9KT4iOwogICAgICAgICAg ICAgICAgZWNobyAiI2VuZGlmIC8qICR7c3ltfSAqLyI7CiAgICAgICAgICAgIGZpOwogICAg ICAgIGRvbmUgKSA+ICIke0R9LyR7ZGVzdH0vJHtmaWxlfSI7CiAgICBkb25lCn0KY3JlYXRl X21sX2luY2x1ZGVzLWFic29sdXRlICgpIAp7IAogICAgbG9jYWwgZHN0PSIkKGNyZWF0ZV9t bF9pbmNsdWRlcy10aWR5X3BhdGggJDEpIjsKICAgIGRzdD0oJHtkc3QvL1wvLyB9KTsKICAg IGxvY2FsIGk7CiAgICBmb3IgKChpPTA7IGk8JHsjZHN0WypdfTsgaSsrKSkKICAgIGRvCiAg ICAgICAgWyAiJHtkc3RbaV19IiA9PSAiaW5jbHVkZSIgXSAmJiBicmVhazsKICAgIGRvbmU7 CiAgICBsb2NhbCBzdHJpcF91cHRvPSRpOwogICAgZm9yICgoaT1zdHJpcF91cHRvKzE7IGk8 JHsjZHN0WypdfS0xOyBpKyspKQogICAgZG8KICAgICAgICBlY2hvIC1uICR7ZHN0W2ldfS87 CiAgICBkb25lOwogICAgZWNobyAtbiAke2RzdFtpXX0KfQpjcmVhdGVfbWxfaW5jbHVkZXMt YWxsZmlsZXMgKCkgCnsgCiAgICBsb2NhbCBiYXNlZGlyIGZpbGU7CiAgICBmb3IgYmFzZWRp ciBpbiAiJEAiOwogICAgZG8KICAgICAgICBmb3IgZmlsZSBpbiAkKGZpbmQgIiR7RH0iLyR7 YmFzZWRpcn0gLXR5cGUgZik7CiAgICAgICAgZG8KICAgICAgICAgICAgZWNobyAke2ZpbGUv JHtEfVwvJHtiYXNlZGlyfVwvL307CiAgICAgICAgZG9uZTsKICAgIGRvbmUgfCBzb3J0IHwg dW5pcQp9CmNyZWF0ZV9tbF9pbmNsdWRlcy1saXN0ZGlycyAoKSAKeyAKICAgIGxvY2FsIGRp cnM7CiAgICBsb2NhbCBkYXRhOwogICAgZm9yIGRhdGEgaW4gIiRAIjsKICAgIGRvCiAgICAg ICAgZGlycz0iJHtkaXJzfSAke2RhdGEvKjovfSI7CiAgICBkb25lOwogICAgZWNobyAke2Rp cnM6MX0KfQpjcmVhdGVfbWxfaW5jbHVkZXMtbWFrZWRlc3RkaXJzICgpIAp7IAogICAgbG9j YWwgZGVzdD0kMTsKICAgIHNoaWZ0OwogICAgbG9jYWwgYmFzZWRpcnM9JEA7CiAgICBkb2Rp ciAke2Rlc3R9OwogICAgbG9jYWwgYmFzZWRpcjsKICAgIGZvciBiYXNlZGlyIGluICR7YmFz ZWRpcnN9OwogICAgZG8KICAgICAgICBsb2NhbCBkaXI7CiAgICAgICAgZm9yIGRpciBpbiAk KGZpbmQgIiR7RH0iLyR7YmFzZWRpcn0gLXR5cGUgZCk7CiAgICAgICAgZG8KICAgICAgICAg ICAgZG9kaXIgJHtkZXN0fS8ke2Rpci8ke0R9XC8ke2Jhc2VkaXJ9L307CiAgICAgICAgZG9u ZTsKICAgIGRvbmUKfQpjcmVhdGVfbWxfaW5jbHVkZXMtc3ltX2Zvcl9kaXIgKCkgCnsgCiAg ICBsb2NhbCBkaXI9JDE7CiAgICBzaGlmdDsKICAgIGxvY2FsIGRhdGE7CiAgICBmb3IgZGF0 YSBpbiAiJEAiOwogICAgZG8KICAgICAgICBpZiBbWyAke2RhdGF9ID09ICo6JHtkaXJ9IF1d OyB0aGVuCiAgICAgICAgICAgIGVjaG8gJHtkYXRhLzoqL307CiAgICAgICAgICAgIHJldHVy biAwOwogICAgICAgIGZpOwogICAgZG9uZTsKICAgIGVjaG8gIlNob3VsZG4ndCBiZSBoZXJl IC0tIGNyZWF0ZV9tbF9pbmNsdWRlcy1zeW1fZm9yX2RpciAkMSAkQCI7CiAgICBleGl0IDEK fQpjcmVhdGVfbWxfaW5jbHVkZXMtdGlkeV9wYXRoICgpIAp7IAogICAgbG9jYWwgcmVtb3Zl ZD0kMTsKICAgIGlmIFsgLW4gIiR7cmVtb3ZlZH0iIF07IHRoZW4KICAgICAgICB3aGlsZSBb ICIke3JlbW92ZWR9IiAhPSAiJHtyZW1vdmVkL1wvXC8vXC99IiBdOyBkbwogICAgICAgICAg ICByZW1vdmVkPSR7cmVtb3ZlZC9cL1wvL1wvfTsKICAgICAgICBkb25lOwogICAgICAgIHdo aWxlIFsgIiR7cmVtb3ZlZH0iICE9ICIke3JlbW92ZWQvL1wvLlwvL1wvfSIgXTsgZG8KICAg ICAgICAgICAgcmVtb3ZlZD0ke3JlbW92ZWQvL1wvLlwvL1wvfTsKICAgICAgICBkb25lOwog ICAgICAgIFsgIiR7cmVtb3ZlZCMjKi99IiA9ICIuIiBdICYmIHJlbW92ZWQ9JHtyZW1vdmVk JS8qfTsKICAgICAgICB3aGlsZSBbICIke3JlbW92ZWR9IiAhPSAiJHtyZW1vdmVkLy9cLy4u XC99IiBdOyBkbwogICAgICAgICAgICBsb2NhbCBwMT0iJHtyZW1vdmVkJSVcLy4uXC8qfSI7 CiAgICAgICAgICAgIGxvY2FsIHAyPSIke3JlbW92ZWQjKlwvLi5cL30iOwogICAgICAgICAg ICByZW1vdmVkPSIke3AxJVwvKn0vJHtwMn0iOwogICAgICAgIGRvbmU7CiAgICAgICAgWyAi JHtyZW1vdmVkIyMqL30iID0gIi4uIiBdICYmIHJlbW92ZWQ9JHtyZW1vdmVkJS8qLyp9Owog ICAgICAgIFsgIiR7cmVtb3ZlZCMjKi99IiA9ICIiIF0gJiYgcmVtb3ZlZD0ke3JlbW92ZWQl Lyp9OwogICAgICAgIGVjaG8gJHtyZW1vdmVkfTsKICAgIGZpCn0KZGVidWctcHJpbnQgKCkg CnsgCiAgICBbICEgLWQgIiRUIiBdICYmIHJldHVybiAwOwogICAgd2hpbGUgWyAiJDEiIF07 IGRvCiAgICAgICAgaWYgWyAiJEVDTEFTU19ERUJVR19PVVRQVVQiID09ICJvbiIgXTsgdGhl bgogICAgICAgICAgICBlY2hvICJkZWJ1ZzogJDEiIDE+JjI7CiAgICAgICAgZWxzZQogICAg ICAgICAgICBpZiBbIC1uICIkRUNMQVNTX0RFQlVHX09VVFBVVCIgXTsgdGhlbgogICAgICAg ICAgICAgICAgZWNobyAiZGVidWc6ICQxIiA+PiAkRUNMQVNTX0RFQlVHX09VVFBVVDsKICAg ICAgICAgICAgZmk7CiAgICAgICAgZmk7CiAgICAgICAgZWNobyAiJDEiIDI+IC9kZXYvbnVs bCA+PiAiJHtUfS9lY2xhc3MtZGVidWcubG9nIjsKICAgICAgICBjaG1vZCBnK3cgIiR7VH0v ZWNsYXNzLWRlYnVnLmxvZyIgPiYvZGV2L251bGw7CiAgICAgICAgc2hpZnQ7CiAgICBkb25l Cn0KZGVidWctcHJpbnQtZnVuY3Rpb24gKCkgCnsgCiAgICBzdHI9IiQxOiBlbnRlcmluZyBm dW5jdGlvbiI7CiAgICBzaGlmdDsKICAgIGRlYnVnLXByaW50ICIkc3RyLCBwYXJhbWV0ZXJz OiAkKiIKfQpkZWJ1Zy1wcmludC1zZWN0aW9uICgpIAp7IAogICAgZGVidWctcHJpbnQgIm5v dyBpbiBzZWN0aW9uICQqIgp9CmRlZmF1bHQgKCkgCnsgCiAgICBkaWUgImRlZmF1bHQoKSBp cyBub3Qgc3VwcG9ydGVkIHdpdGggRUFQST0nMCcgZHVyaW5nIHBoYXNlIHBrZ19zZXR1cCIK fQpkZWZhdWx0X3BrZ19ub2ZldGNoICgpIAp7IAogICAgZGllICJkZWZhdWx0X3BrZ19ub2Zl dGNoKCkgaXMgbm90IHN1cHBvcnRlZCB3aXRoIEVBUEk9JzAnIGR1cmluZyBwaGFzZSBwa2df c2V0dXAiCn0KZGVmYXVsdF9zcmNfY29tcGlsZSAoKSAKeyAKICAgIGRpZSAiZGVmYXVsdF9z cmNfY29tcGlsZSgpIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBFQVBJPScwJyBkdXJpbmcgcGhh c2UgcGtnX3NldHVwIgp9CmRlZmF1bHRfc3JjX2NvbmZpZ3VyZSAoKSAKeyAKICAgIGRpZSAi ZGVmYXVsdF9zcmNfY29uZmlndXJlKCkgaXMgbm90IHN1cHBvcnRlZCB3aXRoIEVBUEk9JzAn IGR1cmluZyBwaGFzZSBwa2dfc2V0dXAiCn0KZGVmYXVsdF9zcmNfaW5zdGFsbCAoKSAKeyAK ICAgIGRpZSAiZGVmYXVsdF9zcmNfaW5zdGFsbCgpIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBF QVBJPScwJyBkdXJpbmcgcGhhc2UgcGtnX3NldHVwIgp9CmRlZmF1bHRfc3JjX3ByZXBhcmUg KCkgCnsgCiAgICBkaWUgImRlZmF1bHRfc3JjX3ByZXBhcmUoKSBpcyBub3Qgc3VwcG9ydGVk IHdpdGggRUFQST0nMCcgZHVyaW5nIHBoYXNlIHBrZ19zZXR1cCIKfQpkZWZhdWx0X3NyY190 ZXN0ICgpIAp7IAogICAgZGllICJkZWZhdWx0X3NyY190ZXN0KCkgaXMgbm90IHN1cHBvcnRl ZCB3aXRoIEVBUEk9JzAnIGR1cmluZyBwaGFzZSBwa2dfc2V0dXAiCn0KZGVmYXVsdF9zcmNf dW5wYWNrICgpIAp7IAogICAgZGllICJkZWZhdWx0X3NyY191bnBhY2soKSBpcyBub3Qgc3Vw cG9ydGVkIHdpdGggRUFQST0nMCcgZHVyaW5nIHBoYXNlIHBrZ19zZXR1cCIKfQpkZWxldGVf YWxsX3ZlcnNpb25fc2VwYXJhdG9ycyAoKSAKeyAKICAgIF9fdmVyc2lvbmF0b3Jfc2hvcHRf dG9nZ2xlIG9uOwogICAgcmVwbGFjZV9hbGxfdmVyc2lvbl9zZXBhcmF0b3JzICIiICIkezF9 IjsKICAgIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9mZgp9CmRlbGV0ZV92ZXJzaW9u X3NlcGFyYXRvciAoKSAKeyAKICAgIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9uOwog ICAgcmVwbGFjZV92ZXJzaW9uX3NlcGFyYXRvciAiJHsxfSIgIiIgIiR7Mn0iOwogICAgX192 ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb2ZmCn0KZGllICgpIAp7IAogICAgc2V0ICtlOwog ICAgaWYgWyAtbiAiJHtRQV9JTlRFUkNFUFRPUlN9IiBdOyB0aGVuCiAgICAgICAgdW5zZXQg LWYgJHtRQV9JTlRFUkNFUFRPUlN9OwogICAgICAgIHVuc2V0IFFBX0lOVEVSQ0VQVE9SUzsK ICAgIGZpOwogICAgbG9jYWwgbiBmaWxlc3BhY2luZz0wIGxpbmVzcGFjaW5nPTA7CiAgICBm b3IgKChuID0gJHsjRlVOQ05BTUVbQF19IC0gMTsgbiA+PSAwOyAtLW4pKQogICAgZG8KICAg ICAgICBzb3VyY2VmaWxlPSR7QkFTSF9TT1VSQ0VbJHtufV19IHNvdXJjZWZpbGU9JHtzb3Vy Y2VmaWxlIyMqL307CiAgICAgICAgbGluZW5vPSR7QkFTSF9MSU5FTk9bJHtufV19OwogICAg ICAgICgoZmlsZXNwYWNpbmcgPCAkeyNzb3VyY2VmaWxlfSkpICYmIGZpbGVzcGFjaW5nPSR7 I3NvdXJjZWZpbGV9OwogICAgICAgICgobGluZXNwYWNpbmcgPCAkeyNsaW5lbm99KSkgJiYg bGluZXNwYWNpbmc9JHsjbGluZW5vfTsKICAgIGRvbmU7CiAgICBlZXJyb3I7CiAgICBlZXJy b3IgIkVSUk9SOiAkQ0FURUdPUlkvJFBGIGZhaWxlZC4iOwogICAgZHVtcF90cmFjZSAyICR7 ZmlsZXNwYWNpbmd9ICR7bGluZXNwYWNpbmd9OwogICAgZWVycm9yICIgICQocHJpbnRmICIl JHtmaWxlc3BhY2luZ31zIiAiJHtCQVNIX1NPVVJDRVsxXSMjKi99IiksIGxpbmUgJChwcmlu dGYgIiUke2xpbmVzcGFjaW5nfXMiICIke0JBU0hfTElORU5PWzBdfSIpOiAgQ2FsbGVkIGRp ZSI7CiAgICBlZXJyb3IgIlRoZSBzcGVjaWZpYyBzbmlwcGV0IG9mIGNvZGU6IjsKICAgIHNl ZCAtbiAtZSAiIyBXaGVuIHdlIGdldCB0byB0aGUgbGluZSB0aGF0IGZhaWxlZCwgYXBwZW5k IGl0IHRvIHRoZQoJCSAgICAjIGhvbGQgc3BhY2UsIG1vdmUgdGhlIGhvbGQgc3BhY2UgdG8g dGhlIHBhdHRlcm4gc3BhY2UsCgkJICAgICMgdGhlbiBwcmludCBvdXQgdGhlIHBhdHRlcm4g c3BhY2UgYW5kIHF1aXQgaW1tZWRpYXRlbHkKCQkgICAgJHtCQVNIX0xJTkVOT1swXX17SDtn O3A7cX0iIC1lICcjIElmIHRoaXMgbGluZSBlbmRzIHdpdGggYSBsaW5lIGNvbnRpbnVhdGlv biwgYXBwZW5kIGl0CgkJICAgICMgdG8gdGhlIGhvbGQgc3BhY2UKCQkgICAgL1xcJC9IJyAt ZSAnIyBJZiB0aGlzIGxpbmUgZG9lcyBub3QgZW5kIHdpdGggYSBsaW5lIGNvbnRpbnVhdGlv biwKCQkgICAgIyBlcmFzZSB0aGUgbGluZSBhbmQgc2V0IHRoZSBob2xkIGJ1ZmZlciB0byBp dCAodGh1cwoJCSAgICAjIGVyYXNpbmcgdGhlIGhvbGQgYnVmZmVyIGluIHRoZSBwcm9jZXNz KQoJCSAgICAvW15cXSQve3M6Xi4qJDo6O2h9JyAke0JBU0hfU09VUkNFWzFdfSB8IHNlZCAt ZSAnMWQnIC1lICdzOl46UkVUQUlOLUxFQURJTkctU1BBQ0U6JyB8IHdoaWxlIHJlYWQgLXIg bjsgZG8KICAgICAgICBlZXJyb3IgIiAgJHtuI1JFVEFJTi1MRUFESU5HLVNQQUNFfSI7CiAg ICBkb25lOwogICAgZWVycm9yICIgVGhlIGRpZSBtZXNzYWdlOiI7CiAgICBlZXJyb3IgIiAg JHsqOi0obm8gZXJyb3IgbWVzc2FnZSl9IjsKICAgIGVlcnJvcjsKICAgIGVlcnJvciAiSWYg eW91IG5lZWQgc3VwcG9ydCwgcG9zdCB0aGUgdG9wbW9zdCBidWlsZCBlcnJvciwgYW5kIHRo ZSBjYWxsIHN0YWNrIGlmIHJlbGV2YW50LiI7CiAgICBbWyAtbiAke1BPUlRBR0VfTE9HX0ZJ TEV9IF1dICYmIGVlcnJvciAiQSBjb21wbGV0ZSBidWlsZCBsb2cgaXMgbG9jYXRlZCBhdCAn JHtQT1JUQUdFX0xPR19GSUxFfScuIjsKICAgIGlmIFsgLWYgIiR7VH0vZW52aXJvbm1lbnQi IF07IHRoZW4KICAgICAgICBlZXJyb3IgIlRoZSBlYnVpbGQgZW52aXJvbm1lbnQgZmlsZSBp cyBsb2NhdGVkIGF0ICcke1R9L2Vudmlyb25tZW50Jy4iOwogICAgZWxzZQogICAgICAgIGlm IFsgLWQgIiR7VH0iIF07IHRoZW4KICAgICAgICAgICAgeyAKICAgICAgICAgICAgICAgIHNl dDsKICAgICAgICAgICAgICAgIGV4cG9ydAogICAgICAgICAgICB9ID4gIiR7VH0vZGllLmVu diI7CiAgICAgICAgICAgIGVlcnJvciAiVGhlIGVidWlsZCBlbnZpcm9ubWVudCBmaWxlIGlz IGxvY2F0ZWQgYXQgJyR7VH0vZGllLmVudicuIjsKICAgICAgICBmaTsKICAgIGZpOwogICAg aWYgW1sgLW4gJHtFQlVJTERfT1ZFUkxBWV9FQ0xBU1NFU30gXV07IHRoZW4KICAgICAgICBl ZXJyb3IgIlRoaXMgZWJ1aWxkIHVzZWQgdGhlIGZvbGxvd2luZyBlY2xhc3NlcyBmcm9tIG92 ZXJsYXlzOiI7CiAgICAgICAgbG9jYWwgeDsKICAgICAgICBmb3IgeCBpbiAke0VCVUlMRF9P VkVSTEFZX0VDTEFTU0VTfTsKICAgICAgICBkbwogICAgICAgICAgICBlZXJyb3IgIiAgJHt4 fSI7CiAgICAgICAgZG9uZTsKICAgIGZpOwogICAgaWYgWyAiJHtFTUVSR0VfRlJPTX0iICE9 ICJiaW5hcnkiIF0gJiYgISBoYXNxICR7RUJVSUxEX1BIQVNFfSBwcmVybSBwb3N0cm0gJiYg WyAiJHtFQlVJTEQjJHtQT1JURElSfS99IiA9PSAiJHtFQlVJTER9IiBdOyB0aGVuCiAgICAg ICAgbG9jYWwgb3ZlcmxheT0ke0VCVUlMRCUvKn07CiAgICAgICAgb3ZlcmxheT0ke292ZXJs YXklLyp9OwogICAgICAgIG92ZXJsYXk9JHtvdmVybGF5JS8qfTsKICAgICAgICBpZiBbWyAt biAkUE9SVEFHRV9SRVBPX05BTUUgXV07IHRoZW4KICAgICAgICAgICAgZWVycm9yICJUaGlz IGVidWlsZCBpcyBmcm9tIGFuIG92ZXJsYXkgbmFtZWQiICInJFBPUlRBR0VfUkVQT19OQU1F JzogJyR7b3ZlcmxheX0vJyI7CiAgICAgICAgZWxzZQogICAgICAgICAgICBlZXJyb3IgIlRo aXMgZWJ1aWxkIGlzIGZyb20gYW4gb3ZlcmxheTogJyR7b3ZlcmxheX0vJyI7CiAgICAgICAg Zmk7CiAgICBlbHNlCiAgICAgICAgaWYgW1sgLW4gJFBPUlRBR0VfUkVQT19OQU1FICYmIC1m ICIkUE9SVERJUiIvcHJvZmlsZXMvcmVwb19uYW1lIF1dOyB0aGVuCiAgICAgICAgICAgIGxv Y2FsIHBvcnRkaXJfcmVwb19uYW1lPSQoPCIkUE9SVERJUiIvcHJvZmlsZXMvcmVwb19uYW1l KTsKICAgICAgICAgICAgaWYgW1sgLW4gJHBvcnRkaXJfcmVwb19uYW1lICYmICRwb3J0ZGly X3JlcG9fbmFtZSAhPSAkUE9SVEFHRV9SRVBPX05BTUUgXV07IHRoZW4KICAgICAgICAgICAg ICAgIGVlcnJvciAiVGhpcyBlYnVpbGQgaXMgZnJvbSBhIHJlcG9zaXRvcnkiICJuYW1lZCAn JFBPUlRBR0VfUkVQT19OQU1FJyI7CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAg Zmk7CiAgICBlZXJyb3I7CiAgICBpZiBbWyAiJHtFQlVJTERfUEhBU0UvZGVwZW5kfSIgPT0g IiR7RUJVSUxEX1BIQVNFfSIgXV07IHRoZW4KICAgICAgICBsb2NhbCB4OwogICAgICAgIGZv ciB4IGluICRFQlVJTERfREVBVEhfSE9PS1M7CiAgICAgICAgZG8KICAgICAgICAgICAgJHt4 fSAiJEAiIDE+JjIgMT4mMjsKICAgICAgICBkb25lOwogICAgZmk7CiAgICBbIC1uICIkRUJV SUxEX0VYSVRfU1RBVFVTX0ZJTEUiIF0gJiYgID4gIiRFQlVJTERfRVhJVF9TVEFUVVNfRklM RSI7CiAgICBraWxsIC1zIFNJR1RFUk0gJHtFQlVJTERfTUFTVEVSX1BJRH07CiAgICBleGl0 IDEKfQpkaWVmdW5jICgpIAp7IAogICAgZGllICIke0B9Igp9CmRpcm9wdHMgKCkgCnsgCiAg ICBleHBvcnQgRElST1BUSU9OUz0iJEAiCn0KZGxvcGVuX2xpYiAoKSAKeyAKICAgIGlmIFtb ICR7Q0hPU1R9ID09ICotbGludXgtZ251IHx8ICR7Q0hPU1R9ID09ICotbGludXgtdWNsaWJj IF1dOyB0aGVuCiAgICAgICAgZWNobyAiLWxkbCI7CiAgICBmaQp9CmRvX25ld2RlcGVuZCAo KSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uIGRvX25ld2RlcGVuZCAkKjsKICAgIFsg LXogIiQxIiBdICYmIGRpZSAiZG9fbmV3ZGVwZW5kIHdpdGhvdXQgYXJndW1lbnRzIjsKICAg IFtbICR7RUNMQVNTX0RFUFRIfSA+IDAgXV0gJiYgVEFSR0VUPSJFXyQxIjsKICAgIFtbICR7 RUNMQVNTX0RFUFRIfSA+IDAgXV0gfHwgVEFSR0VUPSIkMSI7CiAgICBzaGlmdDsKICAgIHdo aWxlIFsgLW4gIiQxIiBdOyBkbwogICAgICAgIGV2YWwgZXhwb3J0ICR7VEFSR0VUfT1cIlwk eyR7VEFSR0VUfX0gXCQxXCI7CiAgICAgICAgc2hpZnQ7CiAgICBkb25lCn0KZG9jaW50byAo KSAKeyAKICAgIGlmIFsgIiQxIiA9PSAiLyIgXTsgdGhlbgogICAgICAgIGV4cG9ydCBfRV9E T0NERVNUVFJFRV89IiI7CiAgICBlbHNlCiAgICAgICAgZXhwb3J0IF9FX0RPQ0RFU1RUUkVF Xz0iJDEiOwogICAgICAgIGlmIFsgISAtZCAiJHtEfXVzci9zaGFyZS9kb2MvJHtQRn0vJHtf RV9ET0NERVNUVFJFRV99IiBdOyB0aGVuCiAgICAgICAgICAgIGluc3RhbGwgLWQgIiR7RH11 c3Ivc2hhcmUvZG9jLyR7UEZ9LyR7X0VfRE9DREVTVFRSRUVffSI7CiAgICAgICAgZmk7CiAg ICBmaQp9CmRvaWNvbiAoKSAKeyAKICAgICggbG9jYWwgaSBqIHJldDsKICAgIGluc2ludG8g L3Vzci9zaGFyZS9waXhtYXBzOwogICAgZm9yIGkgaW4gIiRAIjsKICAgIGRvCiAgICAgICAg aWYgW1sgLWYgJHtpfSBdXTsgdGhlbgogICAgICAgICAgICBkb2lucyAiJHtpfSI7CiAgICAg ICAgICAgICgocmV0Kz0kPykpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgW1sgLWQg JHtpfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgZm9yIGogaW4gIiR7aX0iLyoucG5nOwog ICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICBkb2lucyAiJHtqfSI7CiAg ICAgICAgICAgICAgICAgICAgKChyZXQrPSQ/KSk7CiAgICAgICAgICAgICAgICBkb25lOwog ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAoKCsrcmV0KSk7CiAgICAgICAgICAg IGZpOwogICAgICAgIGZpOwogICAgZG9uZTsKICAgIGV4aXQgJHtyZXR9ICkKfQpkb21lbnUg KCkgCnsgCiAgICAoIGxvY2FsIGkgaiByZXQ9MDsKICAgIGluc2ludG8gL3Vzci9zaGFyZS9h cHBsaWNhdGlvbnM7CiAgICBmb3IgaSBpbiAiJEAiOwogICAgZG8KICAgICAgICBpZiBbWyAt ZiAke2l9IF1dOyB0aGVuCiAgICAgICAgICAgIGRvaW5zICIke2l9IjsKICAgICAgICAgICAg KChyZXQrPSQ/KSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBpZiBbWyAtZCAke2l9IF1d OyB0aGVuCiAgICAgICAgICAgICAgICBmb3IgaiBpbiAiJHtpfSIvKi5kZXNrdG9wOwogICAg ICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICBkb2lucyAiJHtqfSI7CiAgICAg ICAgICAgICAgICAgICAgKChyZXQrPSQ/KSk7CiAgICAgICAgICAgICAgICBkb25lOwogICAg ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAoKCsrcmV0KSk7CiAgICAgICAgICAgIGZp OwogICAgICAgIGZpOwogICAgZG9uZTsKICAgIGV4aXQgJHtyZXR9ICkKfQpkdW1wX3RyYWNl ICgpIAp7IAogICAgbG9jYWwgZnVuY25hbWU9IiIgc291cmNlZmlsZT0iIiBsaW5lbm89IiIg cz0ieWVzIiBuIHA7CiAgICBkZWNsYXJlIC1pIHN0cmlwPSR7MTotMX07CiAgICBsb2NhbCBm aWxlc3BhY2luZz0kMiBsaW5lc3BhY2luZz0kMzsKICAgICgoIG4gPSAkeyNGVU5DTkFNRVtA XX0gLSAxICkpOwogICAgKCggcCA9ICR7I0JBU0hfQVJHVltAXX0gKSk7CiAgICB3aGlsZSAo KCBuID4gMCApKTsgZG8KICAgICAgICBbICIke0ZVTkNOQU1FWyR7bn1dfSIgPT0gInFhX2Nh bGwiIF0gJiYgYnJlYWs7CiAgICAgICAgKCggcCAtPSAke0JBU0hfQVJHQ1ske259XX0gKSk7 CiAgICAgICAgKCggbi0tICkpOwogICAgZG9uZTsKICAgIGlmICgoIG4gPT0gMCApKTsgdGhl bgogICAgICAgICgoIG4gPSAkeyNGVU5DTkFNRVtAXX0gLSAxICkpOwogICAgICAgICgoIHAg PSAkeyNCQVNIX0FSR1ZbQF19ICkpOwogICAgZmk7CiAgICBlZXJyb3IgIkNhbGwgc3RhY2s6 IjsKICAgIHdoaWxlICgoIG4gPiAke3N0cmlwfSApKTsgZG8KICAgICAgICBmdW5jbmFtZT0k e0ZVTkNOQU1FWyR7bn0gLSAxXX07CiAgICAgICAgc291cmNlZmlsZT0kKGJhc2VuYW1lICR7 QkFTSF9TT1VSQ0VbJHtufV19KTsKICAgICAgICBsaW5lbm89JHtCQVNIX0xJTkVOT1ske259 IC0gMV19OwogICAgICAgIGFyZ3M9OwogICAgICAgIGlmIFtbIC1uICIke0JBU0hfQVJHVltA XX0iIF1dOyB0aGVuCiAgICAgICAgICAgIGZvciAoKGogPSAxIDsgaiA8PSAke0JBU0hfQVJH Q1ske259IC0gMV19IDsgKytqICkpCiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBu ZXdhcmc9JHtCQVNIX0FSR1ZbJCgoIHAgLSBqIC0gMSApKV19OwogICAgICAgICAgICAgICAg YXJncz0iJHthcmdzOiske2FyZ3N9IH0nJHtuZXdhcmd9JyI7CiAgICAgICAgICAgIGRvbmU7 CiAgICAgICAgICAgICgoIHAgLT0gJHtCQVNIX0FSR0NbJHtufSAtIDFdfSApKTsKICAgICAg ICBmaTsKICAgICAgICBlZXJyb3IgIiAgJChwcmludGYgIiUke2ZpbGVzcGFjaW5nfXMiICIk e3NvdXJjZWZpbGV9IiksIGxpbmUgJChwcmludGYgIiUke2xpbmVzcGFjaW5nfXMiICIke2xp bmVub30iKTogIENhbGxlZCAke2Z1bmNuYW1lfSR7YXJnczorICR7YXJnc319IjsKICAgICAg ICAoKCBuLS0gKSk7CiAgICBkb25lCn0KZHluX2NsZWFuICgpIAp7IAogICAgaWYgWyAteiAi JHtQT1JUQUdFX0JVSUxERElSfSIgXTsgdGhlbgogICAgICAgIGVjaG8gIkFib3J0aW5nIGNs ZWFuIHBoYXNlIGJlY2F1c2UgUE9SVEFHRV9CVUlMRERJUiBpcyB1bnNldCEiOwogICAgICAg IHJldHVybiAxOwogICAgZWxzZQogICAgICAgIGlmIFsgISAtZCAiJHtQT1JUQUdFX0JVSUxE RElSfSIgXTsgdGhlbgogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBmaTsKICAgIGZp OwogICAgaWYgaGFzcSBjaGZsYWdzICRGRUFUVVJFUzsgdGhlbgogICAgICAgIGNoZmxhZ3Mg LVIgbm9zY2hnLG5vdWNoZyxub3NhcHBuZCxub3VhcHBuZCAiJHtQT1JUQUdFX0JVSUxERElS fSI7CiAgICAgICAgY2hmbGFncyAtUiBub3N1bmxuayxub3V1bmxuayAiJHtQT1JUQUdFX0JV SUxERElSfSIgMj4gL2Rldi9udWxsOwogICAgZmk7CiAgICBybSAtcmYgIiR7UE9SVEFHRV9C VUlMRERJUn0vaW1hZ2UiICIke1BPUlRBR0VfQlVJTERESVJ9L2hvbWVkaXIiOwogICAgcm0g LWYgIiR7UE9SVEFHRV9CVUlMRERJUn0vLmluc3RhbGxlZCI7CiAgICBpZiBbWyAkRU1FUkdF X0ZST00gPSBiaW5hcnkgXV0gfHwgISBoYXNxIGtlZXB0ZW1wICRGRUFUVVJFUyAmJiAhIGhh c3Ega2VlcHdvcmsgJEZFQVRVUkVTOyB0aGVuCiAgICAgICAgcm0gLXJmICIke1R9IjsKICAg IGZpOwogICAgaWYgW1sgJEVNRVJHRV9GUk9NID0gYmluYXJ5IF1dIHx8ICEgaGFzcSBrZWVw d29yayAkRkVBVFVSRVM7IHRoZW4KICAgICAgICBybSAtZiAiJFBPUlRBR0VfQlVJTERESVIi Ly57ZWJ1aWxkX2NoYW5nZWQsZXhpdF9zdGF0dXMsbG9naWQsdW5wYWNrZWQscHJlcGFyZWR9 ICIkUE9SVEFHRV9CVUlMRERJUiIvLntjb25maWd1cmVkLGNvbXBpbGVkLHRlc3RlZCxwYWNr YWdlZH07CiAgICAgICAgcm0gLXJmICIke1BPUlRBR0VfQlVJTERESVJ9L2J1aWxkLWluZm8i OwogICAgICAgIHJtIC1yZiAiJHtXT1JLRElSfSI7CiAgICBmaTsKICAgIGlmIFsgLWYgIiR7 UE9SVEFHRV9CVUlMRERJUn0vLnVucGFja2VkIiBdOyB0aGVuCiAgICAgICAgZmluZCAiJHtQ T1JUQUdFX0JVSUxERElSfSIgLXR5cGUgZCAhIC1yZWdleCAiXiR7V09SS0RJUn0iIHwgc29y dCAtciB8IHRyICJcbiIgIlwwIiB8ICRYQVJHUyAtMCBybWRpciA+Ji9kZXYvbnVsbDsKICAg IGZpOwogICAgcm0gLXJmICIke1BPUlRBR0VfQlVJTERESVJ9L2Rpc3RkaXIiOwogICAgY2Qg IiRQT1JUQUdFX0JVSUxERElSIi8uLi8uLjsKICAgIHJtZGlyICIkUE9SVEFHRV9CVUlMRERJ UiIgIiR7UE9SVEFHRV9CVUlMRERJUiUvKn0iIDI+IC9kZXYvbnVsbDsKICAgIHRydWUKfQpk eW5fY29tcGlsZSAoKSAKeyAKICAgIGlmIFtbIC1lICRQT1JUQUdFX0JVSUxERElSLy5jb21w aWxlZCBdXTsgdGhlbgogICAgICAgIHZlY2hvICI+Pj4gSXQgYXBwZWFycyB0aGF0ICcke1BG fScgaXMgYWxyZWFkeSBjb21waWxlZDsgc2tpcHBpbmcuIjsKICAgICAgICB2ZWNobyAiPj4+ IFJlbW92ZSAnJFBPUlRBR0VfQlVJTERESVIvLmNvbXBpbGVkJyB0byBmb3JjZSBjb21waWxh dGlvbi4iOwogICAgICAgIHJldHVybiAwOwogICAgZmk7CiAgICB0cmFwIGFib3J0X2NvbXBp bGUgU0lHSU5UIFNJR1FVSVQ7CiAgICBbIC1uICIkRUJVSUxEX1BIQVNFIiBdICYmIHJtIC1m ICIkVC9sb2dnaW5nLyRFQlVJTERfUEhBU0UiOwogICAgZWJ1aWxkX3BoYXNlIHByZV9zcmNf Y29tcGlsZTsKICAgIHZlY2hvICI+Pj4gQ29tcGlsaW5nIHNvdXJjZSBpbiAke3NyY2Rpcn0g Li4uIjsKICAgIGVidWlsZF9waGFzZSBzcmNfY29tcGlsZTsKICAgIHRvdWNoICIkUE9SVEFH RV9CVUlMRERJUiIvLmNvbXBpbGVkOwogICAgdmVjaG8gIj4+PiBTb3VyY2UgY29tcGlsZWQu IjsKICAgIGVidWlsZF9waGFzZSBwb3N0X3NyY19jb21waWxlOwogICAgdHJhcCAtIFNJR0lO VCBTSUdRVUlUCn0KZHluX2NvbmZpZ3VyZSAoKSAKeyAKICAgIGlmIFtbIC1lICRQT1JUQUdF X0JVSUxERElSLy5jb25maWd1cmVkIF1dOyB0aGVuCiAgICAgICAgdmVjaG8gIj4+PiBJdCBh cHBlYXJzIHRoYXQgJyRQRicgaXMgYWxyZWFkeSBjb25maWd1cmVkOyBza2lwcGluZy4iOwog ICAgICAgIHZlY2hvICI+Pj4gUmVtb3ZlICckUE9SVEFHRV9CVUlMRERJUi8uY29uZmlndXJl ZCcgdG8gZm9yY2UgY29uZmlndXJhdGlvbi4iOwogICAgICAgIHJldHVybiAwOwogICAgZmk7 CiAgICB0cmFwIGFib3J0X2NvbmZpZ3VyZSBTSUdJTlQgU0lHUVVJVDsKICAgIFsgLW4gIiRF QlVJTERfUEhBU0UiIF0gJiYgcm0gLWYgIiRUL2xvZ2dpbmcvJEVCVUlMRF9QSEFTRSI7CiAg ICBlYnVpbGRfcGhhc2UgcHJlX3NyY19jb25maWd1cmU7CiAgICB2ZWNobyAiPj4+IENvbmZp Z3VyaW5nIHNvdXJjZSBpbiAkc3JjZGlyIC4uLiI7CiAgICBlYnVpbGRfcGhhc2Ugc3JjX2Nv bmZpZ3VyZTsKICAgIHRvdWNoICIkUE9SVEFHRV9CVUlMRERJUiIvLmNvbmZpZ3VyZWQ7CiAg ICB2ZWNobyAiPj4+IFNvdXJjZSBjb25maWd1cmVkLiI7CiAgICBlYnVpbGRfcGhhc2UgcG9z dF9zcmNfY29uZmlndXJlOwogICAgdHJhcCAtIFNJR0lOVCBTSUdRVUlUCn0KZHluX2hlbHAg KCkgCnsgCiAgICBlY2hvOwogICAgZWNobyAiUG9ydGFnZSI7CiAgICBlY2hvICJDb3B5cmln aHQgMTk5OS0yMDA4IEdlbnRvbyBGb3VuZGF0aW9uIjsKICAgIGVjaG87CiAgICBlY2hvICJI b3cgdG8gdXNlIHRoZSBlYnVpbGQgY29tbWFuZDoiOwogICAgZWNobzsKICAgIGVjaG8gIlRo ZSBmaXJzdCBhcmd1bWVudCB0byBlYnVpbGQgc2hvdWxkIGJlIGFuIGV4aXN0aW5nIC5lYnVp bGQgZmlsZS4iOwogICAgZWNobzsKICAgIGVjaG8gIk9uZSBvciBtb3JlIG9mIHRoZSBmb2xs b3dpbmcgb3B0aW9ucyBjYW4gdGhlbiBiZSBzcGVjaWZpZWQuICBJZiBtb3JlIjsKICAgIGVj aG8gInRoYW4gb25lIG9wdGlvbiBpcyBzcGVjaWZpZWQsIGVhY2ggd2lsbCBiZSBleGVjdXRl ZCBpbiBvcmRlci4iOwogICAgZWNobzsKICAgIGVjaG8gIiAgaGVscCAgICAgICAgOiBzaG93 IHRoaXMgaGVscCBzY3JlZW4iOwogICAgZWNobyAiICBzZXR1cCAgICAgICA6IGV4ZWN1dGUg cGFja2FnZSBzcGVjaWZpYyBzZXR1cCBhY3Rpb25zIjsKICAgIGVjaG8gIiAgZmV0Y2ggICAg ICAgOiBkb3dubG9hZCBzb3VyY2UgYXJjaGl2ZShzKSBhbmQgcGF0Y2hlcyI7CiAgICBlY2hv ICIgIGRpZ2VzdCAgICAgIDogY3JlYXRlIGEgbWFuaWZlc3QgZmlsZSBmb3IgdGhlIHBhY2th Z2UiOwogICAgZWNobyAiICBtYW5pZmVzdCAgICA6IGNyZWF0ZSBhIG1hbmlmZXN0IGZpbGUg Zm9yIHRoZSBwYWNrYWdlIjsKICAgIGVjaG8gIiAgdW5wYWNrICAgICAgOiB1bnBhY2sgc291 cmNlcyAoYXV0by1kZXBlbmRlbmNpZXMgaWYgbmVlZGVkKSI7CiAgICBlY2hvICIgIHByZXBh cmUgICAgIDogcHJlcGFyZSBzb3VyY2VzIChhdXRvLWRlcGVuZGVuY2llcyBpZiBuZWVkZWQp IjsKICAgIGVjaG8gIiAgY29uZmlndXJlICAgOiBjb25maWd1cmUgc291cmNlcyAoYXV0by1m ZXRjaC91bnBhY2sgaWYgbmVlZGVkKSI7CiAgICBlY2hvICIgIGNvbXBpbGUgICAgIDogY29t cGlsZSBzb3VyY2VzIChhdXRvLWZldGNoL3VucGFjay9jb25maWd1cmUgaWYgbmVlZGVkKSI7 CiAgICBlY2hvICIgIHRlc3QgICAgICAgIDogdGVzdCBwYWNrYWdlIChhdXRvLWZldGNoL3Vu cGFjay9jb25maWd1cmUvY29tcGlsZSBpZiBuZWVkZWQpIjsKICAgIGVjaG8gIiAgcHJlaW5z dCAgICAgOiBleGVjdXRlIHByZS1pbnN0YWxsIGluc3RydWN0aW9ucyI7CiAgICBlY2hvICIg IHBvc3RpbnN0ICAgIDogZXhlY3V0ZSBwb3N0LWluc3RhbGwgaW5zdHJ1Y3Rpb25zIjsKICAg IGVjaG8gIiAgaW5zdGFsbCAgICAgOiBpbnN0YWxsIHRoZSBwYWNrYWdlIHRvIHRoZSB0ZW1w b3JhcnkgaW5zdGFsbCBkaXJlY3RvcnkiOwogICAgZWNobyAiICBxbWVyZ2UgICAgICA6IG1l cmdlIGltYWdlIGludG8gbGl2ZSBmaWxlc3lzdGVtLCByZWNvcmRpbmcgZmlsZXMgaW4gZGIi OwogICAgZWNobyAiICBtZXJnZSAgICAgICA6IGRvIGZldGNoLCB1bnBhY2ssIGNvbXBpbGUs IGluc3RhbGwgYW5kIHFtZXJnZSI7CiAgICBlY2hvICIgIHByZXJtICAgICAgIDogZXhlY3V0 ZSBwcmUtcmVtb3ZhbCBpbnN0cnVjdGlvbnMiOwogICAgZWNobyAiICBwb3N0cm0gICAgICA6 IGV4ZWN1dGUgcG9zdC1yZW1vdmFsIGluc3RydWN0aW9ucyI7CiAgICBlY2hvICIgIHVubWVy Z2UgICAgIDogcmVtb3ZlIHBhY2thZ2UgZnJvbSBsaXZlIGZpbGVzeXN0ZW0iOwogICAgZWNo byAiICBjb25maWcgICAgICA6IGV4ZWN1dGUgcGFja2FnZSBzcGVjaWZpYyBjb25maWd1cmF0 aW9uIGFjdGlvbnMiOwogICAgZWNobyAiICBwYWNrYWdlICAgICA6IGNyZWF0ZSBhIHRhcmJh bGwgcGFja2FnZSBpbiAke1BLR0RJUn0vQWxsIjsKICAgIGVjaG8gIiAgcnBtICAgICAgICAg OiBidWlsZCBhIFJlZEhhdCBSUE0gcGFja2FnZSI7CiAgICBlY2hvICIgIGNsZWFuICAgICAg IDogY2xlYW4gdXAgYWxsIHNvdXJjZSBhbmQgdGVtcG9yYXJ5IGZpbGVzIjsKICAgIGVjaG87 CiAgICBlY2hvICJUaGUgZm9sbG93aW5nIHNldHRpbmdzIHdpbGwgYmUgdXNlZCBmb3IgdGhl IGVidWlsZCBwcm9jZXNzOiI7CiAgICBlY2hvOwogICAgZWNobyAiICBwYWNrYWdlICAgICA6 ICR7UEZ9IjsKICAgIGVjaG8gIiAgc2xvdCAgICAgICAgOiAke1NMT1R9IjsKICAgIGVjaG8g IiAgY2F0ZWdvcnkgICAgOiAke0NBVEVHT1JZfSI7CiAgICBlY2hvICIgIGRlc2NyaXB0aW9u IDogJHtERVNDUklQVElPTn0iOwogICAgZWNobyAiICBzeXN0ZW0gICAgICA6ICR7Q0hPU1R9 IjsKICAgIGVjaG8gIiAgYyBmbGFncyAgICAgOiAke0NGTEFHU30iOwogICAgZWNobyAiICBj KysgZmxhZ3MgICA6ICR7Q1hYRkxBR1N9IjsKICAgIGVjaG8gIiAgbWFrZSBmbGFncyAgOiAk e01BS0VPUFRTfSI7CiAgICBlY2hvIC1uICIgIGJ1aWxkIG1vZGUgIDogIjsKICAgIGlmIGhh c3Egbm9zdHJpcCAke0ZFQVRVUkVTfSAke1JFU1RSSUNUfSB8fCBoYXNxIHN0cmlwICR7UkVT VFJJQ1R9OyB0aGVuCiAgICAgICAgZWNobyAiZGVidWcgKGxhcmdlKSI7CiAgICBlbHNlCiAg ICAgICAgZWNobyAicHJvZHVjdGlvbiAoc3RyaXBwZWQpIjsKICAgIGZpOwogICAgZWNobyAi ICBtZXJnZSB0byAgICA6ICR7Uk9PVH0iOwogICAgZWNobzsKICAgIGlmIFsgLW4gIiRVU0Ui IF07IHRoZW4KICAgICAgICBlY2hvICJBZGRpdGlvbmFsbHksIHN1cHBvcnQgZm9yIHRoZSBm b2xsb3dpbmcgb3B0aW9uYWwgZmVhdHVyZXMgd2lsbCBiZSBlbmFibGVkOiI7CiAgICAgICAg ZWNobzsKICAgICAgICBlY2hvICIgICR7VVNFfSI7CiAgICBmaTsKICAgIGVjaG8KfQpkeW5f aW5zdGFsbCAoKSAKeyAKICAgIFsgLXogIiRQT1JUQUdFX0JVSUxERElSIiBdICYmIGRpZSAi JHtGVU5DTkFNRX06IFBPUlRBR0VfQlVJTERESVIgaXMgdW5zZXQiOwogICAgaWYgaGFzcSBu b2F1dG8gJEZFQVRVUkVTOyB0aGVuCiAgICAgICAgcm0gLWYgIiR7UE9SVEFHRV9CVUlMRERJ Un0vLmluc3RhbGxlZCI7CiAgICBlbHNlCiAgICAgICAgaWYgW1sgLWUgJFBPUlRBR0VfQlVJ TERESVIvLmluc3RhbGxlZCBdXTsgdGhlbgogICAgICAgICAgICB2ZWNobyAiPj4+IEl0IGFw cGVhcnMgdGhhdCAnJHtQRn0nIGlzIGFscmVhZHkgaW5zdGFsbGVkOyBza2lwcGluZy4iOwog ICAgICAgICAgICB2ZWNobyAiPj4+IFJlbW92ZSAnJHtQT1JUQUdFX0JVSUxERElSfS8uaW5z dGFsbGVkJyB0byBmb3JjZSBpbnN0YWxsLiI7CiAgICAgICAgICAgIHJldHVybiAwOwogICAg ICAgIGZpOwogICAgZmk7CiAgICB0cmFwICJhYm9ydF9pbnN0YWxsIiBTSUdJTlQgU0lHUVVJ VDsKICAgIFsgLW4gIiRFQlVJTERfUEhBU0UiIF0gJiYgcm0gLWYgIiRUL2xvZ2dpbmcvJEVC VUlMRF9QSEFTRSI7CiAgICBlYnVpbGRfcGhhc2UgcHJlX3NyY19pbnN0YWxsOwogICAgcm0g LXJmICIke1BPUlRBR0VfQlVJTERESVJ9L2ltYWdlIjsKICAgIG1rZGlyICIke1BPUlRBR0Vf QlVJTERESVJ9L2ltYWdlIjsKICAgIGlmIFsgLWQgIiR7U30iIF07IHRoZW4KICAgICAgICBj ZCAiJHtTfSI7CiAgICBlbHNlCiAgICAgICAgY2QgIiR7V09SS0RJUn0iOwogICAgZmk7CiAg ICB2ZWNobzsKICAgIHZlY2hvICI+Pj4gSW5zdGFsbCAke1BGfSBpbnRvICR7RH0gY2F0ZWdv cnkgJHtDQVRFR09SWX0iOwogICAgZXhwb3J0IFMgRDsKICAgIGV4cG9ydCBQV09SS0RJUj0i JFdPUktESVIiOwogICAgZXhwb3J0IERFU1RUUkVFPS91c3I7CiAgICBleHBvcnQgSU5TREVT VFRSRUU9IiI7CiAgICBleHBvcnQgX0VfRVhFREVTVFRSRUVfPSIiOwogICAgZXhwb3J0IF9F X0RPQ0RFU1RUUkVFXz0iIjsKICAgIGVidWlsZF9waGFzZSBzcmNfaW5zdGFsbDsKICAgIHRv dWNoICIke1BPUlRBR0VfQlVJTERESVJ9Ly5pbnN0YWxsZWQiOwogICAgdmVjaG8gIj4+PiBD b21wbGV0ZWQgaW5zdGFsbGluZyAke1BGfSBpbnRvICR7RH0iOwogICAgdmVjaG87CiAgICBl YnVpbGRfcGhhc2UgcG9zdF9zcmNfaW5zdGFsbDsKICAgIGNkICIke1BPUlRBR0VfQlVJTERE SVJ9Ii9idWlsZC1pbmZvOwogICAgc2V0IC1mOwogICAgbG9jYWwgZiB4OwogICAgSUZTPScg CQoNJzsKICAgIGZvciBmIGluIEFTRkxBR1MgQ0FURUdPUlkgQ0JVSUxEIENDIENGTEFHUyBD SE9TVCBDVEFSR0VUIENYWCBDWFhGTEFHUyBERUZJTkVEX1BIQVNFUyBERVBFTkQgRVhUUkFf RUNPTkYgRVhUUkFfRUlOU1RBTEwgRVhUUkFfTUFLRSBGRUFUVVJFUyBJTkhFUklURUQgSVVT RSBMREZMQUdTIExJQkNGTEFHUyBMSUJDWFhGTEFHUyBMSUNFTlNFIFBERVBFTkQgUEYgUEtH VVNFIFBST1BFUlRJRVMgUFJPVklERSBSREVQRU5EIFJFU1RSSUNUIFNMT1QgS0VZV09SRFMg SE9NRVBBR0UgU1JDX1VSSSBERVNDUklQVElPTjsKICAgIGRvCiAgICAgICAgeD0kKGVjaG8g LW4gJHshZn0pOwogICAgICAgIFtbIC1uICR4IF1dICYmIGVjaG8gIiR4IiA+ICRmOwogICAg ZG9uZTsKICAgIGVjaG8gIiR7VVNFfSIgPiBVU0U7CiAgICBlY2hvICIke0VBUEk6LTB9IiA+ IEVBUEk7CiAgICBzZXQgK2Y7CiAgICB1bnNldCBmOwogICAgc2F2ZV9lYnVpbGRfZW52IC0t ZXhjbHVkZS1pbml0LXBoYXNlcyB8IGZpbHRlcl9yZWFkb25seV92YXJpYWJsZXMgLS1maWx0 ZXItc2FuZGJveCAtLWFsbG93LWV4dHJhLXZhcnMgPiBlbnZpcm9ubWVudDsKICAgIGJ6aXAy IC1mOSBlbnZpcm9ubWVudDsKICAgIGNwICIke0VCVUlMRH0iICIke1BGfS5lYnVpbGQiOwog ICAgWyAtbiAiJHtQT1JUQUdFX1JFUE9fTkFNRX0iIF0gJiYgZWNobyAiJHtQT1JUQUdFX1JF UE9fTkFNRX0iID4gcmVwb3NpdG9yeTsKICAgIGlmIGhhc3Egbm9zdHJpcCAke0ZFQVRVUkVT fSAke1JFU1RSSUNUfSB8fCBoYXNxIHN0cmlwICR7UkVTVFJJQ1R9OyB0aGVuCiAgICAgICAg dG91Y2ggREVCVUdCVUlMRDsKICAgIGZpOwogICAgdHJhcCAtIFNJR0lOVCBTSUdRVUlUCn0K ZHluX3ByZWluc3QgKCkgCnsgCiAgICBpZiBbIC16ICIke0R9IiBdOyB0aGVuCiAgICAgICAg ZWVycm9yICIke0ZVTkNOQU1FfTogRCBpcyB1bnNldCI7CiAgICAgICAgcmV0dXJuIDE7CiAg ICBmaTsKICAgIGVidWlsZF9waGFzZV93aXRoX2hvb2tzIHBrZ19wcmVpbnN0Cn0KZHluX3By ZXBhcmUgKCkgCnsgCiAgICBpZiBbWyAtZSAkUE9SVEFHRV9CVUlMRERJUi8ucHJlcGFyZWQg XV07IHRoZW4KICAgICAgICB2ZWNobyAiPj4+IEl0IGFwcGVhcnMgdGhhdCAnJFBGJyBpcyBh bHJlYWR5IHByZXBhcmVkOyBza2lwcGluZy4iOwogICAgICAgIHZlY2hvICI+Pj4gUmVtb3Zl ICckUE9SVEFHRV9CVUlMRERJUi8ucHJlcGFyZWQnIHRvIGZvcmNlIHByZXBhcmUuIjsKICAg ICAgICByZXR1cm4gMDsKICAgIGZpOwogICAgbG9jYWwgc3JjZGlyOwogICAgaWYgW1sgLWQg JFMgXV07IHRoZW4KICAgICAgICBzcmNkaXI9JFM7CiAgICBlbHNlCiAgICAgICAgc3JjZGly PSRXT1JLRElSOwogICAgZmk7CiAgICBjZCAiJHNyY2RpciI7CiAgICB0cmFwIGFib3J0X3By ZXBhcmUgU0lHSU5UIFNJR1FVSVQ7CiAgICBbIC1uICIkRUJVSUxEX1BIQVNFIiBdICYmIHJt IC1mICIkVC9sb2dnaW5nLyRFQlVJTERfUEhBU0UiOwogICAgZWJ1aWxkX3BoYXNlIHByZV9z cmNfcHJlcGFyZTsKICAgIHZlY2hvICI+Pj4gUHJlcGFyaW5nIHNvdXJjZSBpbiAkc3JjZGly IC4uLiI7CiAgICBlYnVpbGRfcGhhc2Ugc3JjX3ByZXBhcmU7CiAgICB0b3VjaCAiJFBPUlRB R0VfQlVJTERESVIiLy5wcmVwYXJlZDsKICAgIHZlY2hvICI+Pj4gU291cmNlIHByZXBhcmVk LiI7CiAgICBlYnVpbGRfcGhhc2UgcG9zdF9zcmNfcHJlcGFyZTsKICAgIHRyYXAgLSBTSUdJ TlQgU0lHUVVJVAp9CmR5bl9zZXR1cCAoKSAKeyAKICAgIGVidWlsZF9waGFzZV93aXRoX2hv b2tzIHBrZ19zZXR1cAp9CmR5bl90ZXN0ICgpIAp7IAogICAgaWYgWyAiJHtFQlVJTERfRk9S Q0VfVEVTVH0iID09ICIxIiBdOyB0aGVuCiAgICAgICAgcm0gLWYgIiR7UE9SVEFHRV9CVUlM RERJUn0vLnRlc3RlZCI7CiAgICAgICAgISBoYXNxIHRlc3QgJHtVU0V9ICYmIGV4cG9ydCBV U0U9IiR7VVNFfSB0ZXN0IjsKICAgIGZpOwogICAgaWYgW1sgLWUgJFBPUlRBR0VfQlVJTERE SVIvLnRlc3RlZCBdXTsgdGhlbgogICAgICAgIHZlY2hvICI+Pj4gSXQgYXBwZWFycyB0aGF0 ICR7UE59IGhhcyBhbHJlYWR5IGJlZW4gdGVzdGVkOyBza2lwcGluZy4iOwogICAgICAgIHJl dHVybjsKICAgIGZpOwogICAgdHJhcCAiYWJvcnRfdGVzdCIgU0lHSU5UIFNJR1FVSVQ7CiAg ICBpZiBbIC1kICIke1N9IiBdOyB0aGVuCiAgICAgICAgY2QgIiR7U30iOwogICAgZWxzZQog ICAgICAgIGNkICIke1dPUktESVJ9IjsKICAgIGZpOwogICAgaWYgISBoYXNxIHRlc3QgJEZF QVRVUkVTICYmIFsgIiR7RUJVSUxEX0ZPUkNFX1RFU1R9IiAhPSAiMSIgXTsgdGhlbgogICAg ICAgIHZlY2hvICI+Pj4gVGVzdCBwaGFzZSBbbm90IGVuYWJsZWRdOiAke0NBVEVHT1JZfS8k e1BGfSI7CiAgICBlbHNlCiAgICAgICAgaWYgaGFzcSB0ZXN0ICRSRVNUUklDVDsgdGhlbgog ICAgICAgICAgICBld2FybiAiU2tpcHBpbmcgbWFrZSB0ZXN0L2NoZWNrIGR1ZSB0byBlYnVp bGQgcmVzdHJpY3Rpb24uIjsKICAgICAgICAgICAgdmVjaG8gIj4+PiBUZXN0IHBoYXNlIFtl eHBsaWNpdGx5IGRpc2FibGVkXTogJHtDQVRFR09SWX0vJHtQRn0iOwogICAgICAgIGVsc2UK ICAgICAgICAgICAgbG9jYWwgc2F2ZV9zcD0ke1NBTkRCT1hfUFJFRElDVH07CiAgICAgICAg ICAgIGFkZHByZWRpY3QgLzsKICAgICAgICAgICAgWyAtbiAiJEVCVUlMRF9QSEFTRSIgXSAm JiBybSAtZiAiJFQvbG9nZ2luZy8kRUJVSUxEX1BIQVNFIjsKICAgICAgICAgICAgZWJ1aWxk X3BoYXNlIHByZV9zcmNfdGVzdDsKICAgICAgICAgICAgZWJ1aWxkX3BoYXNlIHNyY190ZXN0 OwogICAgICAgICAgICB0b3VjaCAiJFBPUlRBR0VfQlVJTERESVIvLnRlc3RlZCIgfHwgZGll ICJGYWlsZWQgdG8gJ3RvdWNoIC50ZXN0ZWQnIGluICRQT1JUQUdFX0JVSUxERElSIjsKICAg ICAgICAgICAgZWJ1aWxkX3BoYXNlIHBvc3Rfc3JjX3Rlc3Q7CiAgICAgICAgICAgIFNBTkRC T1hfUFJFRElDVD0ke3NhdmVfc3B9OwogICAgICAgIGZpOwogICAgZmk7CiAgICB0cmFwIC0g U0lHSU5UIFNJR1FVSVQKfQpkeW5fdW5wYWNrICgpIAp7IAogICAgbG9jYWwgbmV3c3R1ZmY9 Im5vIjsKICAgIGlmIFsgLWUgIiR7V09SS0RJUn0iIF07IHRoZW4KICAgICAgICBsb2NhbCB4 OwogICAgICAgIGxvY2FsIGNoZWNrbWU7CiAgICAgICAgZm9yIHggaW4gJHtBQX07CiAgICAg ICAgZG8KICAgICAgICAgICAgdmVjaG8gIj4+PiBDaGVja2luZyAke3h9J3MgbXRpbWUuLi4i OwogICAgICAgICAgICBpZiBbICIke1BPUlRBR0VfQUNUVUFMX0RJU1RESVI6LSR7RElTVERJ Un19LyR7eH0iIC1udCAiJHtXT1JLRElSfSIgXTsgdGhlbgogICAgICAgICAgICAgICAgdmVj aG8gIj4+PiAke3h9IGhhcyBiZWVuIHVwZGF0ZWQ7IHJlY3JlYXRpbmcgV09SS0RJUi4uLiI7 CiAgICAgICAgICAgICAgICBuZXdzdHVmZj0ieWVzIjsKICAgICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICAgICBmaTsKICAgICAgICBkb25lOwogICAgICAgIGlmIFsgISAtZiAiJHtQ T1JUQUdFX0JVSUxERElSfS8udW5wYWNrZWQiIF07IHRoZW4KICAgICAgICAgICAgdmVjaG8g Ij4+PiBOb3QgbWFya2VkIGFzIHVucGFja2VkOyByZWNyZWF0aW5nIFdPUktESVIuLi4iOwog ICAgICAgICAgICBuZXdzdHVmZj0ieWVzIjsKICAgICAgICBmaTsKICAgIGZpOwogICAgaWYg WyAiJHtuZXdzdHVmZn0iID09ICJ5ZXMiIF07IHRoZW4KICAgICAgICBybSAtcmYgIiR7UE9S VEFHRV9CVUlMRERJUn0iL3sudW5wYWNrZWQsLnByZXBhcmVkLC5jb25maWd1cmVkLC5jb21w aWxlZCwudGVzdGVkLC5pbnN0YWxsZWQsLnBhY2thZ2VkLGJ1aWxkLWluZm99OwogICAgICAg IHJtIC1yZiAiJHtXT1JLRElSfSI7CiAgICAgICAgaWYgWyAtZCAiJHtUfSIgXSAmJiAhIGhh c3Ega2VlcHRlbXAgJEZFQVRVUkVTICYmICEgaGFzcSBrZWVwd29yayAkRkVBVFVSRVM7IHRo ZW4KICAgICAgICAgICAgcm0gLXJmICIke1R9IiAmJiBta2RpciAiJHtUfSI7CiAgICAgICAg Zmk7CiAgICBmaTsKICAgIGlmIFsgLWUgIiR7V09SS0RJUn0iIF07IHRoZW4KICAgICAgICBp ZiBbICIkbmV3c3R1ZmYiID09ICJubyIgXTsgdGhlbgogICAgICAgICAgICB2ZWNobyAiPj4+ IFdPUktESVIgaXMgdXAtdG8tZGF0ZSwga2VlcGluZy4uLiI7CiAgICAgICAgICAgIHJldHVy biAwOwogICAgICAgIGZpOwogICAgZmk7CiAgICBpZiBbICEgLWQgIiR7V09SS0RJUn0iIF07 IHRoZW4KICAgICAgICBpbnN0YWxsIC1tJHtQT1JUQUdFX1dPUktESVJfTU9ERTotMDcwMH0g LWQgIiR7V09SS0RJUn0iIHx8IGRpZSAiRmFpbGVkIHRvIGNyZWF0ZSBkaXIgJyR7V09SS0RJ Un0nIjsKICAgIGZpOwogICAgWyAtbiAiJEVCVUlMRF9QSEFTRSIgXSAmJiBybSAtZiAiJFQv bG9nZ2luZy8kRUJVSUxEX1BIQVNFIjsKICAgIGNkICIke1dPUktESVJ9IiB8fCBkaWUgIkRp cmVjdG9yeSBjaGFuZ2UgZmFpbGVkOiBcYGNkICcke1dPUktESVJ9J1xgIjsKICAgIGVidWls ZF9waGFzZSBwcmVfc3JjX3VucGFjazsKICAgIHZlY2hvICI+Pj4gVW5wYWNraW5nIHNvdXJj ZS4uLiI7CiAgICBlYnVpbGRfcGhhc2Ugc3JjX3VucGFjazsKICAgIHRvdWNoICIke1BPUlRB R0VfQlVJTERESVJ9Ly51bnBhY2tlZCIgfHwgZGllICJJTyBGYWlsdXJlIC0tIEZhaWxlZCAn dG91Y2ggLnVucGFja2VkJyBpbiAke1BPUlRBR0VfQlVJTERESVJ9IjsKICAgIHZlY2hvICI+ Pj4gU291cmNlIHVucGFja2VkIGluICR7V09SS0RJUn0iOwogICAgZWJ1aWxkX3BoYXNlIHBv c3Rfc3JjX3VucGFjawp9CmViZWVwICgpIAp7IAogICAgbG9jYWwgbjsKICAgIGlmIFtbIC16 ICR7RUJFRVBfSUdOT1JFfSBdXTsgdGhlbgogICAgICAgIGZvciAoKG49MSA7IG4gPD0gJHsx Oi01fSA7IG4rKykpCiAgICAgICAgZG8KICAgICAgICAgICAgZWNobyAtbmUgIlxhIjsKICAg ICAgICAgICAgc2xlZXAgMC4xID4mL2Rldi9udWxsOwogICAgICAgICAgICBzbGVlcCAwLDEg PiYvZGV2L251bGw7CiAgICAgICAgICAgIGVjaG8gLW5lICJcYSI7CiAgICAgICAgICAgIHNs ZWVwIDE7CiAgICAgICAgZG9uZTsKICAgIGZpCn0KZWJlZ2luICgpIAp7IAogICAgbG9jYWwg bXNnPSIkKiIgZG90cyBzcGFjZXM9JHtSQ19ET1RfUEFUVEVSTi8vPy8gfTsKICAgIGlmIFtb IC1uICR7UkNfRE9UX1BBVFRFUk59IF1dOyB0aGVuCiAgICAgICAgZG90cz0kKHByaW50ZiAi JSQoKCBDT0xTIC0gMyAtICR7I1JDX0lOREVOVEFUSU9OfSAtICR7I21zZ30gLSA3ICkpcyIg JycpOwogICAgICAgIGRvdHM9JHtkb3RzLy8ke3NwYWNlc30vJHtSQ19ET1RfUEFUVEVSTn19 OwogICAgICAgIG1zZz0iJHttc2d9JHtkb3RzfSI7CiAgICBlbHNlCiAgICAgICAgbXNnPSIk e21zZ30gLi4uIjsKICAgIGZpOwogICAgZWluZm9uICIke21zZ30iOwogICAgW1sgJHtSQ19F TkRDT0x9ID09ICJ5ZXMiIF1dICYmIGVjaG87CiAgICBMQVNUX0VfTEVOPSQoKCAzICsgJHsj UkNfSU5ERU5UQVRJT059ICsgJHsjbXNnfSApKTsKICAgIExBU1RfRV9DTUQ9ImViZWdpbiI7 CiAgICByZXR1cm4gMAp9CmVidWlsZF9tYWluICgpIAp7IAogICAgbG9jYWwgZiB4OwogICAg aWYgISBoYXNxICRFQlVJTERfU0hfQVJHUyBjbGVhbiBkZXBlbmQgaGVscCBpbmZvIG5vZmV0 Y2g7IHRoZW4KICAgICAgICBpZiBoYXNxIGRpc3RjYyAkRkVBVFVSRVM7IHRoZW4KICAgICAg ICAgICAgZXhwb3J0IFBBVEg9Ii91c3IvbGliL2Rpc3RjYy9iaW46JFBBVEgiOwogICAgICAg ICAgICBbWyAtbiAkRElTVENDX0xPRyBdXSAmJiBhZGR3cml0ZSAiJHtESVNUQ0NfTE9HJS8q fSI7CiAgICAgICAgZmk7CiAgICAgICAgaWYgaGFzcSBjY2FjaGUgJEZFQVRVUkVTOyB0aGVu CiAgICAgICAgICAgIGV4cG9ydCBQQVRIPSIvdXNyL2xpYi9jY2FjaGUvYmluOiRQQVRIIjsK ICAgICAgICAgICAgYWRkcmVhZCAiJENDQUNIRV9ESVIiOwogICAgICAgICAgICBhZGR3cml0 ZSAiJENDQUNIRV9ESVIiOwogICAgICAgICAgICBbWyAtbiAkQ0NBQ0hFX1NJWkUgXV0gJiYg Y2NhY2hlIC1NICRDQ0FDSEVfU0laRSA+Ji9kZXYvbnVsbDsKICAgICAgICBlbHNlCiAgICAg ICAgICAgIGV4cG9ydCBDQ0FDSEVfRElTQUJMRT0xOwogICAgICAgIGZpOwogICAgZmk7CiAg ICBpZiBbWyAkRUJVSUxEX1BIQVNFICE9IGRlcGVuZCBdXTsgdGhlbgogICAgICAgIGxvY2Fs IHBoYXNlX2Z1bmM9JChfZWJ1aWxkX2FyZ190b19waGFzZSAiJEVBUEkiICIkRUJVSUxEX1BI QVNFIik7CiAgICAgICAgW1sgLW4gJHBoYXNlX2Z1bmMgXV0gJiYgX2VidWlsZF9waGFzZV9m dW5jcyAiJEVBUEkiICIkcGhhc2VfZnVuYyI7CiAgICAgICAgdW5zZXQgcGhhc2VfZnVuYzsK ICAgIGZpOwogICAgc291cmNlX2FsbF9iYXNocmNzOwogICAgY2FzZSAke0VCVUlMRF9TSF9B UkdTfSBpbiAKICAgICAgICBub2ZldGNoKQogICAgICAgICAgICBlYnVpbGRfcGhhc2Vfd2l0 aF9ob29rcyBwa2dfbm9mZXRjaDsKICAgICAgICAgICAgZXhpdCAxCiAgICAgICAgOzsKICAg ICAgICBwcmVybSB8IHBvc3RybSB8IHBvc3RpbnN0IHwgY29uZmlnIHwgaW5mbykKICAgICAg ICAgICAgaWYgaGFzcSAiJEVCVUlMRF9TSF9BUkdTIiBjb25maWcgaW5mbyAmJiAhIGRlY2xh cmUgLUYgInBrZ18kRUJVSUxEX1NIX0FSR1MiID4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAg ICAgICAgICBld2FybiAicGtnXyR7RUJVSUxEX1NIX0FSR1N9KCkgaXMgbm90IGRlZmluZWQ6 ICcke0VCVUlMRCMjKi99JyI7CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBleHBvcnQg U0FOREJPWF9PTj0iMCI7CiAgICAgICAgICAgIGlmIFsgIiR7UE9SVEFHRV9ERUJVR30iICE9 ICIxIiBdIHx8IFsgIiR7LS94L30iICE9ICIkLSIgXTsgdGhlbgogICAgICAgICAgICAgICAg ZWJ1aWxkX3BoYXNlX3dpdGhfaG9va3MgcGtnXyR7RUJVSUxEX1NIX0FSR1N9OwogICAgICAg ICAgICBlbHNlCiAgICAgICAgICAgICAgICBzZXQgLXg7CiAgICAgICAgICAgICAgICBlYnVp bGRfcGhhc2Vfd2l0aF9ob29rcyBwa2dfJHtFQlVJTERfU0hfQVJHU307CiAgICAgICAgICAg ICAgICBzZXQgK3g7CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBpZiBbWyAkRUJVSUxE X1BIQVNFID09IHBvc3RpbnN0IF1dICYmIFtbIC1uICRQT1JUQUdFX1VQREFURV9FTlYgXV07 IHRoZW4KICAgICAgICAgICAgICAgIHNhdmVfZWJ1aWxkX2VudiAtLWV4Y2x1ZGUtaW5pdC1w aGFzZXMgfCBmaWx0ZXJfcmVhZG9ubHlfdmFyaWFibGVzIC0tZmlsdGVyLXNhbmRib3ggLS1h bGxvdy1leHRyYS12YXJzIHwgYnppcDIgLWMgLWY5ID4gIiRQT1JUQUdFX1VQREFURV9FTlYi OwogICAgICAgICAgICBmaQogICAgICAgIDs7CiAgICAgICAgdW5wYWNrIHwgcHJlcGFyZSB8 IGNvbmZpZ3VyZSB8IGNvbXBpbGUgfCB0ZXN0IHwgY2xlYW4gfCBpbnN0YWxsKQogICAgICAg ICAgICBpZiBbWyAke1NBTkRCT1hfRElTQUJMRUQ6LTB9ID0gMCBdXTsgdGhlbgogICAgICAg ICAgICAgICAgZXhwb3J0IFNBTkRCT1hfT049IjEiOwogICAgICAgICAgICBlbHNlCiAgICAg ICAgICAgICAgICBleHBvcnQgU0FOREJPWF9PTj0iMCI7CiAgICAgICAgICAgIGZpOwogICAg ICAgICAgICBjYXNlICIkRUJVSUxEX1NIX0FSR1MiIGluIAogICAgICAgICAgICAgICAgY29u ZmlndXJlIHwgY29tcGlsZSkKICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBBU0ZMQUdT IENDQUNIRV9ESVIgQ0NBQ0hFX1NJWkUgQ0ZMQUdTIENYWEZMQUdTIExERkxBR1MgTElCQ0ZM QUdTIExJQkNYWEZMQUdTOwogICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAg ICAgICAgICAgIFtbICR7IXgtdW5zZXR9ICE9IHVuc2V0IF1dICYmIGV4cG9ydCAkeDsKICAg ICAgICAgICAgICAgICAgICBkb25lOwogICAgICAgICAgICAgICAgICAgIGhhc3EgZGlzdGNj ICRGRUFUVVJFUyAmJiBbWyAtbiAkRElTVENDX0RJUiBdXSAmJiBbWyAke1NBTkRCT1hfV1JJ VEUvJERJU1RDQ19ESVJ9ID0gJFNBTkRCT1hfV1JJVEUgXV0gJiYgYWRkd3JpdGUgIiRESVNU Q0NfRElSIjsKICAgICAgICAgICAgICAgICAgICB4PUxJQkRJUl8kQUJJOwogICAgICAgICAg ICAgICAgICAgIFsgLXogIiRQS0dfQ09ORklHX1BBVEgiIC1hIC1uICIkQUJJIiAtYSAtbiAi JHsheH0iIF0gJiYgZXhwb3J0IFBLR19DT05GSUdfUEFUSD0vdXNyLyR7IXh9L3BrZ2NvbmZp ZzsKICAgICAgICAgICAgICAgICAgICBpZiBoYXNxIG5vYXV0byAkRkVBVFVSRVMgJiYgW1sg ISAtZiAkUE9SVEFHRV9CVUlMRERJUi8udW5wYWNrZWQgXV07IHRoZW4KICAgICAgICAgICAg ICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiISEhIFdl IGFwcGFyZW50bHkgaGF2ZW4ndCB1bnBhY2tlZC4uLiIgIlRoaXMgaXMgcHJvYmFibHkgbm90 IHdoYXQgeW91IjsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiISEhIHdhbnQgdG8g YmUgZG9pbmcuLi4gWW91IGFyZSB1c2luZyIgIkZFQVRVUkVTPW5vYXV0byBzbyBJJ2xsIGFz c3VtZSI7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiEhISB0aGF0IHlvdSBrbm93 IHdoYXQgeW91IGFyZSBkb2luZy4uLiIgIllvdSBoYXZlIDUgc2Vjb25kcyB0byBhYm9ydC4u LiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG87CiAgICAgICAgICAgICAgICAgICAg ICAgIGxvY2FsIHg7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIDEgMiAzIDQg NSA2IDcgODsKICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVjaG8gLW5lICJcYSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBM Q19BTEw9QyBzbGVlcCAwLjI1OwogICAgICAgICAgICAgICAgICAgICAgICBkb25lOwogICAg ICAgICAgICAgICAgICAgICAgICBzbGVlcCAzOwogICAgICAgICAgICAgICAgICAgIGZpOwog ICAgICAgICAgICAgICAgICAgIGNkICIkUE9SVEFHRV9CVUlMRERJUiI7CiAgICAgICAgICAg ICAgICAgICAgaWYgWyAhIC1kIGJ1aWxkLWluZm8gXTsgdGhlbgogICAgICAgICAgICAgICAg ICAgICAgICBta2RpciBidWlsZC1pbmZvOwogICAgICAgICAgICAgICAgICAgICAgICBjcCAi JEVCVUlMRCIgImJ1aWxkLWluZm8vJFBGLmVidWlsZCI7CiAgICAgICAgICAgICAgICAgICAg Zmk7CiAgICAgICAgICAgICAgICAgICAgbG9jYWwgc3JjZGlyOwogICAgICAgICAgICAgICAg ICAgIGlmIFtbIC1kICRTIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIHNyY2Rp cj0kUzsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAg IHNyY2Rpcj0kV09SS0RJUjsKICAgICAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAg ICAgICAgICBjZCAiJHNyY2RpciI7CiAgICAgICAgICAgICAgICAgICAgZXhwb3J0IFMgRDsK ICAgICAgICAgICAgICAgICAgICBleHBvcnQgUFdPUktESVI9JFdPUktESVIKICAgICAgICAg ICAgICAgIDs7CiAgICAgICAgICAgIGVzYWM7CiAgICAgICAgICAgIGlmIFsgIiR7UE9SVEFH RV9ERUJVR30iICE9ICIxIiBdIHx8IFsgIiR7LS94L30iICE9ICIkLSIgXTsgdGhlbgogICAg ICAgICAgICAgICAgZHluXyR7RUJVSUxEX1NIX0FSR1N9OwogICAgICAgICAgICBlbHNlCiAg ICAgICAgICAgICAgICBzZXQgLXg7CiAgICAgICAgICAgICAgICBkeW5fJHtFQlVJTERfU0hf QVJHU307CiAgICAgICAgICAgICAgICBzZXQgK3g7CiAgICAgICAgICAgIGZpOwogICAgICAg ICAgICBleHBvcnQgU0FOREJPWF9PTj0iMCIKICAgICAgICA7OwogICAgICAgIGhlbHAgfCBz ZXR1cCB8IHByZWluc3QpCiAgICAgICAgICAgIGV4cG9ydCBTQU5EQk9YX09OPSIwIjsKICAg ICAgICAgICAgaWYgWyAiJHtQT1JUQUdFX0RFQlVHfSIgIT0gIjEiIF0gfHwgWyAiJHstL3gv fSIgIT0gIiQtIiBdOyB0aGVuCiAgICAgICAgICAgICAgICBkeW5fJHtFQlVJTERfU0hfQVJH U307CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHNldCAteDsKICAgICAgICAg ICAgICAgIGR5bl8ke0VCVUlMRF9TSF9BUkdTfTsKICAgICAgICAgICAgICAgIHNldCAreDsK ICAgICAgICAgICAgZmkKICAgICAgICA7OwogICAgICAgIGRlcGVuZCkKICAgICAgICAgICAg ZXhwb3J0IFNBTkRCT1hfT049IjAiOwogICAgICAgICAgICBzZXQgLWY7CiAgICAgICAgICAg IGlmIFsgLW4gIiR7ZGJrZXl9IiBdOyB0aGVuCiAgICAgICAgICAgICAgICBpZiBbICEgLWQg IiR7ZGJrZXklLyp9IiBdOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAt ZyAke1BPUlRBR0VfR0lEfSAtbTI3NzUgIiR7ZGJrZXklLyp9IjsKICAgICAgICAgICAgICAg IGZpOwogICAgICAgICAgICAgICAgdW1hc2sgMDAyOwogICAgICAgICAgICBmaTsKICAgICAg ICAgICAgYXV4ZGJrZXlzPSJERVBFTkQgUkRFUEVORCBTTE9UIFNSQ19VUkkgUkVTVFJJQ1Qg SE9NRVBBR0UgTElDRU5TRQoJCQlERVNDUklQVElPTiBLRVlXT1JEUyBJTkhFUklURUQgSVVT RSBDREVQRU5EIFBERVBFTkQgUFJPVklERSBFQVBJCgkJCVBST1BFUlRJRVMgREVGSU5FRF9Q SEFTRVMgVU5VU0VEXzA1IFVOVVNFRF8wNAoJCQlVTlVTRURfMDMgVU5VU0VEXzAyIFVOVVNF RF8wMSI7CiAgICAgICAgICAgIHVuc2V0IENERVBFTkQ7CiAgICAgICAgICAgIFsgLW4gIiR7 RUFQSX0iIF0gfHwgRUFQST0wOwogICAgICAgICAgICBsb2NhbCBlYXBpPSRFQVBJOwogICAg ICAgICAgICBpZiBbIC1uICIke2Ria2V5fSIgXTsgdGhlbgogICAgICAgICAgICAgICAgID4g IiR7ZGJrZXl9IjsKICAgICAgICAgICAgICAgIGZvciBmIGluICR7YXV4ZGJrZXlzfTsKICAg ICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgZWNobyAkKGVjaG8gJHshZn0p ID4+ICIke2Ria2V5fSIgfHwgZXhpdCAkPzsKICAgICAgICAgICAgICAgIGRvbmU7CiAgICAg ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGZvciBmIGluICR7YXV4ZGJrZXlzfTsKICAg ICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgZWNobyAkKGVjaG8gJHshZn0p IDE+JjkgfHwgZXhpdCAkPzsKICAgICAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgICAg ICBleGVjIDk+Ji07CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBzZXQgK2YKICAgICAg ICA7OwogICAgICAgICopCiAgICAgICAgICAgIGV4cG9ydCBTQU5EQk9YX09OPSIxIjsKICAg ICAgICAgICAgZWNobyAiVW5yZWNvZ25pemVkIEVCVUlMRF9TSF9BUkdTOiAnJHtFQlVJTERf U0hfQVJHU30nIjsKICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAgZHluX2hlbHA7CiAg ICAgICAgICAgIGV4aXQgMQogICAgICAgIDs7CiAgICBlc2FjOwogICAgaWYgWyAtbiAiJEVC VUlMRF9FWElUX1NUQVRVU19GSUxFIiBdOyB0aGVuCiAgICAgICAgID4gIiRFQlVJTERfRVhJ VF9TVEFUVVNfRklMRSIgfHwgZGllICJmYWlsZWQgdG8gY3JlYXRlICckRUJVSUxEX0VYSVRf U1RBVFVTX0ZJTEUnIjsKICAgIGZpCn0KZWJ1aWxkX3BoYXNlICgpIAp7IAogICAgZGVjbGFy ZSAtRiAiJDEiID4gL2Rldi9udWxsICYmIHFhX2NhbGwgJDEKfQplYnVpbGRfcGhhc2Vfd2l0 aF9ob29rcyAoKSAKeyAKICAgIGxvY2FsIHggcGhhc2VfbmFtZT0kezF9OwogICAgWyAtbiAi JEVCVUlMRF9QSEFTRSIgXSAmJiBybSAtZiAiJFQvbG9nZ2luZy8kRUJVSUxEX1BIQVNFIjsK ICAgIGZvciB4IGluIHtwcmVfLCxwb3N0X30ke3BoYXNlX25hbWV9OwogICAgZG8KICAgICAg ICBlYnVpbGRfcGhhc2UgJHt4fTsKICAgIGRvbmUKfQplY29uZiAoKSAKeyAKICAgIGxvY2Fs IHg7CiAgICBsb2NhbCBwaGFzZV9mdW5jPSQoX2VidWlsZF9hcmdfdG9fcGhhc2UgIiRFQVBJ IiAiJEVCVUlMRF9QSEFTRSIpOwogICAgaWYgW1sgLW4gJHBoYXNlX2Z1bmMgXV07IHRoZW4K ICAgICAgICBpZiBoYXNxICIkRUFQSSIgMCAxOyB0aGVuCiAgICAgICAgICAgIFtbICRwaGFz ZV9mdW5jICE9IHNyY19jb21waWxlIF1dICYmIGVxYXdhcm4gIlFBIE5vdGljZTogZWNvbmYg Y2FsbGVkIGluIiAiJHBoYXNlX2Z1bmMgaW5zdGVhZCBvZiBzcmNfY29tcGlsZSI7CiAgICAg ICAgZWxzZQogICAgICAgICAgICBbWyAkcGhhc2VfZnVuYyAhPSBzcmNfY29uZmlndXJlIF1d ICYmIGVxYXdhcm4gIlFBIE5vdGljZTogZWNvbmYgY2FsbGVkIGluIiAiJHBoYXNlX2Z1bmMg aW5zdGVhZCBvZiBzcmNfY29uZmlndXJlIjsKICAgICAgICBmaTsKICAgIGZpOwogICAgOiAk e0VDT05GX1NPVVJDRTo9Ln07CiAgICBpZiBbIC14ICIke0VDT05GX1NPVVJDRX0vY29uZmln dXJlIiBdOyB0aGVuCiAgICAgICAgaWYgWyAtZSAvdXNyL3NoYXJlL2dudWNvbmZpZy8gXTsg dGhlbgogICAgICAgICAgICBmaW5kICIke1dPUktESVJ9IiAtdHlwZSBmICcoJyAtbmFtZSBj b25maWcuZ3Vlc3MgLW8gLW5hbWUgY29uZmlnLnN1YiAnKScgLXByaW50MCB8IHdoaWxlIHJl YWQgLWQgJycgeDsgZG8KICAgICAgICAgICAgICAgIHZlY2hvICIgKiBlY29uZjogdXBkYXRp bmcgJHt4LyR7V09SS0RJUn1cL30gd2l0aCAvdXNyL3NoYXJlL2dudWNvbmZpZy8ke3gjIyov fSI7CiAgICAgICAgICAgICAgICBjcCAtZiAvdXNyL3NoYXJlL2dudWNvbmZpZy8iJHt4IyMq L30iICIke3h9IjsKICAgICAgICAgICAgZG9uZTsKICAgICAgICBmaTsKICAgICAgICBsb2Nh bCBDT05GX0xJQkRJUiBMSUJESVJfVkFSPSJMSUJESVJfJHtBQkl9IjsKICAgICAgICBpZiBb WyAtbiAke0FCSX0gJiYgLW4gJHshTElCRElSX1ZBUn0gXV07IHRoZW4KICAgICAgICAgICAg Q09ORl9MSUJESVI9JHshTElCRElSX1ZBUn07CiAgICAgICAgZmk7CiAgICAgICAgaWYgW1sg LW4gJHtDT05GX0xJQkRJUn0gXV0gJiYgISBoYXNncSAtLWxpYmRpcj1cKiAiJEAiOyB0aGVu CiAgICAgICAgICAgIGV4cG9ydCBDT05GX1BSRUZJWD0kKGhhc2cgLS1leGVjLXByZWZpeD1c KiAiJEAiKTsKICAgICAgICAgICAgW1sgLXogJHtDT05GX1BSRUZJWH0gXV0gJiYgQ09ORl9Q UkVGSVg9JChoYXNnIC0tcHJlZml4PVwqICIkQCIpOwogICAgICAgICAgICA6ICR7Q09ORl9Q UkVGSVg6PS91c3J9OwogICAgICAgICAgICBDT05GX1BSRUZJWD0ke0NPTkZfUFJFRklYIyo9 fTsKICAgICAgICAgICAgW1sgJHtDT05GX1BSRUZJWH0gIT0gLyogXV0gJiYgQ09ORl9QUkVG SVg9Ii8ke0NPTkZfUFJFRklYfSI7CiAgICAgICAgICAgIFtbICR7Q09ORl9MSUJESVJ9ICE9 IC8qIF1dICYmIENPTkZfTElCRElSPSIvJHtDT05GX0xJQkRJUn0iOwogICAgICAgICAgICBz ZXQgLS0gLS1saWJkaXI9IiQoc3RyaXBfZHVwbGljYXRlX3NsYXNoZXMgJHtDT05GX1BSRUZJ WH0ke0NPTkZfTElCRElSfSkiICIkQCI7CiAgICAgICAgZmk7CiAgICAgICAgc2V0IC0tIC0t cHJlZml4PS91c3IgJHtDQlVJTEQ6Ky0tYnVpbGQ9JHtDQlVJTER9fSAtLWhvc3Q9JHtDSE9T VH0gJHtDVEFSR0VUOistLXRhcmdldD0ke0NUQVJHRVR9fSAtLW1hbmRpcj0vdXNyL3NoYXJl L21hbiAtLWluZm9kaXI9L3Vzci9zaGFyZS9pbmZvIC0tZGF0YWRpcj0vdXNyL3NoYXJlIC0t c3lzY29uZmRpcj0vZXRjIC0tbG9jYWxzdGF0ZWRpcj0vdmFyL2xpYiAiJEAiICR7RVhUUkFf RUNPTkZ9OwogICAgICAgIHZlY2hvICIke0VDT05GX1NPVVJDRX0vY29uZmlndXJlIiAiJEAi OwogICAgICAgIGlmICEgIiR7RUNPTkZfU09VUkNFfS9jb25maWd1cmUiICIkQCI7IHRoZW4K ICAgICAgICAgICAgaWYgWyAtcyBjb25maWcubG9nIF07IHRoZW4KICAgICAgICAgICAgICAg IGVjaG87CiAgICAgICAgICAgICAgICBlY2hvICIhISEgUGxlYXNlIGF0dGFjaCB0aGUgZm9s bG93aW5nIGZpbGUgd2hlbiBzZWVraW5nIHN1cHBvcnQ6IjsKICAgICAgICAgICAgICAgIGVj aG8gIiEhISAke1BXRH0vY29uZmlnLmxvZyI7CiAgICAgICAgICAgIGZpOwogICAgICAgICAg ICBkaWUgImVjb25mIGZhaWxlZCI7CiAgICAgICAgZmk7CiAgICBlbHNlCiAgICAgICAgaWYg WyAtZiAiJHtFQ09ORl9TT1VSQ0V9L2NvbmZpZ3VyZSIgXTsgdGhlbgogICAgICAgICAgICBk aWUgImNvbmZpZ3VyZSBpcyBub3QgZXhlY3V0YWJsZSI7CiAgICAgICAgZWxzZQogICAgICAg ICAgICBkaWUgIm5vIGNvbmZpZ3VyZSBzY3JpcHQgZm91bmQiOwogICAgICAgIGZpOwogICAg ZmkKfQplY3ZzX2NsZWFuICgpIAp7IAogICAgW1sgLXogJCogXV0gJiYgc2V0IC0tIC47CiAg ICBmaW5kICIkQCIgLXR5cGUgZCAtbmFtZSAnQ1ZTJyAtcHJ1bmUgLXByaW50MCB8IHhhcmdz IC0wIHJtIC1yZjsKICAgIGZpbmQgIiRAIiAtdHlwZSBmIC1uYW1lICcuY3ZzKicgLXByaW50 MCB8IHhhcmdzIC0wIHJtIC1yZgp9CmVkb3MydW5peCAoKSAKeyAKICAgIGVjaG8gIiRAIiB8 IHhhcmdzIHNlZCAtaSAncy9cciQvLycKfQplZW5kICgpIAp7IAogICAgbG9jYWwgcmV0dmFs PSR7MTotMH07CiAgICBzaGlmdDsKICAgIF9lZW5kICR7cmV0dmFsfSBlZXJyb3IgIiQqIjsK ICAgIExBU1RfRV9DTUQ9ImVlbmQiOwogICAgcmV0dXJuICR7cmV0dmFsfQp9CmVlcnJvciAo KSAKeyAKICAgIGVsb2dfYmFzZSBFUlJPUiAiJCoiOwogICAgW1sgJHtSQ19FTkRDT0x9ICE9 ICJ5ZXMiICYmICR7TEFTVF9FX0NNRH0gPT0gImViZWdpbiIgXV0gJiYgZWNobzsKICAgIGVj aG8gLWUgIiRAIiB8IHdoaWxlIHJlYWQgLXI7IGRvCiAgICAgICAgZWNobyAiICRCQUQqJE5P Uk1BTCAkUkNfSU5ERU5UQVRJT04kUkVQTFkiIDE+JjI7CiAgICBkb25lOwogICAgTEFTVF9F X0NNRD0iZWVycm9yIjsKICAgIHJldHVybiAwCn0KZWdldGVudCAoKSAKeyAKICAgIGNhc2Ug JHtDSE9TVH0gaW4gCiAgICAgICAgKi1kYXJ3aW45KQogICAgICAgICAgICBsb2NhbCBteXR5 cGU9JDE7CiAgICAgICAgICAgIFtbICJwYXNzd2QiID09ICRteXR5cGUgXV0gJiYgbXl0eXBl PSJVc2VycyI7CiAgICAgICAgICAgIFtbICJncm91cCIgPT0gJG15dHlwZSBdXSAmJiBteXR5 cGU9Ikdyb3VwcyI7CiAgICAgICAgICAgIGNhc2UgIiQyIiBpbiAKICAgICAgICAgICAgICAg ICpbITAtOV0qKQogICAgICAgICAgICAgICAgICAgIGRzY2wgLiAtcmVhZCAvJG15dHlwZS8k MiAyPiAvZGV2L251bGwgfCBncmVwIFJlY29yZE5hbWUKICAgICAgICAgICAgICAgIDs7CiAg ICAgICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgICAgIGxvY2FsIG15a2V5PSJVbmlx dWVJRCI7CiAgICAgICAgICAgICAgICAgICAgW1sgJG15dHlwZSA9PSAiR3JvdXBzIiBdXSAm JiBteWtleT0iUHJpbWFyeUdyb3VwSUQiOwogICAgICAgICAgICAgICAgICAgIGRzY2wgLiAt c2VhcmNoIC8kbXl0eXBlICRteWtleSAkMiAyPiAvZGV2L251bGwKICAgICAgICAgICAgICAg IDs7CiAgICAgICAgICAgIGVzYWMKICAgICAgICA7OwogICAgICAgICotZGFyd2luKikKICAg ICAgICAgICAgY2FzZSAiJDIiIGluIAogICAgICAgICAgICAgICAgKlshMC05XSopCiAgICAg ICAgICAgICAgICAgICAgbmlkdW1wICQxIC4gfCBhd2sgLUYiOiIgInsgaWYgKFwkMSB+IC9e JDIkLykge3ByaW50IFwkMDtleGl0O30gfSIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAg ICAgICAgICAqKQogICAgICAgICAgICAgICAgICAgIG5pZHVtcCAkMSAuIHwgYXdrIC1GIjoi ICJ7IGlmIChcJDMgPT0gJDIpIHtwcmludCBcJDA7ZXhpdDt9IH0iCiAgICAgICAgICAgICAg ICA7OwogICAgICAgICAgICBlc2FjCiAgICAgICAgOzsKICAgICAgICAqLWZyZWVic2QqIHwg Ki1kcmFnb25mbHkqKQogICAgICAgICAgICBsb2NhbCBvcHRzIGFjdGlvbj0idXNlciI7CiAg ICAgICAgICAgIFtbICQxID09ICJwYXNzd2QiIF1dIHx8IGFjdGlvbj0iZ3JvdXAiOwogICAg ICAgICAgICBpZiBbWyAkMiA9PSBbWzpkaWdpdDpdXSogXV07IHRoZW4KICAgICAgICAgICAg ICAgIFtbICR7YWN0aW9ufSA9PSAidXNlciIgXV0gJiYgb3B0cz0iLXUiIHx8IG9wdHM9Ii1n IjsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIHB3IHNob3cgJHthY3Rpb259ICR7b3B0 c30gIiQyIiAtcQogICAgICAgIDs7CiAgICAgICAgKi1uZXRic2QqIHwgKi1vcGVuYnNkKikK ICAgICAgICAgICAgZ3JlcCAiJDI6XCo6IiAvZXRjLyQxCiAgICAgICAgOzsKICAgICAgICAq KQogICAgICAgICAgICB0eXBlIC1wIG5zY2QgPiYvZGV2L251bGwgJiYgbnNjZCAtaSAiJDEi OwogICAgICAgICAgICBnZXRlbnQgIiQxIiAiJDIiCiAgICAgICAgOzsKICAgIGVzYWMKfQpl Z2V0aG9tZSAoKSAKeyAKICAgIGVudD0kKGVnZXRlbnQgcGFzc3dkICQxKTsKICAgIGNhc2Ug JHtDSE9TVH0gaW4gCiAgICAgICAgKi1kYXJ3aW4qIHwgKi1mcmVlYnNkKiB8ICotZHJhZ29u Zmx5KikKICAgICAgICAgICAgZWNobyAke2VudH0gfCBjdXQgLWQ6IC1mOQogICAgICAgIDs7 CiAgICAgICAgKikKICAgICAgICAgICAgZWNobyAke2VudH0gfCBjdXQgLWQ6IC1mNgogICAg ICAgIDs7CiAgICBlc2FjCn0KZWdldHNoZWxsICgpIAp7IAogICAgZW50PSQoZWdldGVudCBw YXNzd2QgIiQxIik7CiAgICBjYXNlICR7Q0hPU1R9IGluIAogICAgICAgICotZGFyd2luKiB8 ICotZnJlZWJzZCogfCAqLWRyYWdvbmZseSopCiAgICAgICAgICAgIGVjaG8gJHtlbnR9IHwg Y3V0IC1kOiAtZjEwCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBlY2hvICR7 ZW50fSBjdXQgLWQ6IC1mNwogICAgICAgIDs7CiAgICBlc2FjCn0KZWluZm8gKCkgCnsgCiAg ICBlbG9nX2Jhc2UgSU5GTyAiJCoiOwogICAgW1sgJHtSQ19FTkRDT0x9ICE9ICJ5ZXMiICYm ICR7TEFTVF9FX0NNRH0gPT0gImViZWdpbiIgXV0gJiYgZWNobzsKICAgIGVjaG8gLWUgIiRA IiB8IHdoaWxlIHJlYWQgLXI7IGRvCiAgICAgICAgZWNobyAiICRHT09EKiROT1JNQUwgJFJF UExZIjsKICAgIGRvbmU7CiAgICBMQVNUX0VfQ01EPSJlaW5mbyI7CiAgICByZXR1cm4gMAp9 CmVpbmZvbiAoKSAKeyAKICAgIGVsb2dfYmFzZSBJTkZPICIkKiI7CiAgICBbWyAke1JDX0VO RENPTH0gIT0gInllcyIgJiYgJHtMQVNUX0VfQ01EfSA9PSAiZWJlZ2luIiBdXSAmJiBlY2hv OwogICAgZWNobyAtbmUgIiAke0dPT0R9KiR7Tk9STUFMfSAkKiI7CiAgICBMQVNUX0VfQ01E PSJlaW5mb24iOwogICAgcmV0dXJuIDAKfQplaW5zdGFsbCAoKSAKeyAKICAgIGxvY2FsIExP Q0FMX0VYVFJBX0VJTlNUQUxMPSIke0VYVFJBX0VJTlNUQUxMfSI7CiAgICBMSUJESVJfVkFS PSJMSUJESVJfJHtBQkl9IjsKICAgIGlmIFsgLW4gIiR7QUJJfSIgLWEgLW4gIiR7IUxJQkRJ Ul9WQVJ9IiBdOyB0aGVuCiAgICAgICAgQ09ORl9MSUJESVI9IiR7IUxJQkRJUl9WQVJ9IjsK ICAgIGZpOwogICAgdW5zZXQgTElCRElSX1ZBUjsKICAgIGlmIFsgLW4gIiR7Q09ORl9MSUJE SVJ9IiBdICYmIFsgIiR7Q09ORl9QUkVGSVg6LXVuc2V0fSIgIT0gInVuc2V0IiBdOyB0aGVu CiAgICAgICAgRUlfREVTVExJQkRJUj0iJHtEfS8ke0NPTkZfUFJFRklYfS8ke0NPTkZfTElC RElSfSI7CiAgICAgICAgRUlfREVTVExJQkRJUj0iJChzdHJpcF9kdXBsaWNhdGVfc2xhc2hl cyAke0VJX0RFU1RMSUJESVJ9KSI7CiAgICAgICAgTE9DQUxfRVhUUkFfRUlOU1RBTEw9Imxp YmRpcj0ke0VJX0RFU1RMSUJESVJ9ICR7TE9DQUxfRVhUUkFfRUlOU1RBTEx9IjsKICAgICAg ICB1bnNldCBFSV9ERVNUTElCRElSOwogICAgZmk7CiAgICBpZiBbIC1mIC4vW21NXWFrZWZp bGUgLW8gLWYgLi9HTlVtYWtlZmlsZSBdOyB0aGVuCiAgICAgICAgaWYgWyAiJHtQT1JUQUdF X0RFQlVHfSIgPT0gIjEiIF07IHRoZW4KICAgICAgICAgICAgJHtNQUtFOi1tYWtlfSAtbiBw cmVmaXg9IiR7RH11c3IiIGRhdGFkaXI9IiR7RH11c3Ivc2hhcmUiIGluZm9kaXI9IiR7RH11 c3Ivc2hhcmUvaW5mbyIgbG9jYWxzdGF0ZWRpcj0iJHtEfXZhci9saWIiIG1hbmRpcj0iJHtE fXVzci9zaGFyZS9tYW4iIHN5c2NvbmZkaXI9IiR7RH1ldGMiICR7TE9DQUxfRVhUUkFfRUlO U1RBTEx9ICIkQCIgaW5zdGFsbDsKICAgICAgICBmaTsKICAgICAgICAke01BS0U6LW1ha2V9 IHByZWZpeD0iJHtEfXVzciIgZGF0YWRpcj0iJHtEfXVzci9zaGFyZSIgaW5mb2Rpcj0iJHtE fXVzci9zaGFyZS9pbmZvIiBsb2NhbHN0YXRlZGlyPSIke0R9dmFyL2xpYiIgbWFuZGlyPSIk e0R9dXNyL3NoYXJlL21hbiIgc3lzY29uZmRpcj0iJHtEfWV0YyIgJHtMT0NBTF9FWFRSQV9F SU5TVEFMTH0gIiRAIiBpbnN0YWxsIHx8IGRpZSAiZWluc3RhbGwgZmFpbGVkIjsKICAgIGVs c2UKICAgICAgICBkaWUgIm5vIE1ha2VmaWxlIGZvdW5kIjsKICAgIGZpCn0KZWxvZyAoKSAK eyAKICAgIGVsb2dfYmFzZSBMT0cgIiQqIjsKICAgIFtbICR7UkNfRU5EQ09MfSAhPSAieWVz IiAmJiAke0xBU1RfRV9DTUR9ID09ICJlYmVnaW4iIF1dICYmIGVjaG87CiAgICBlY2hvIC1l ICIkQCIgfCB3aGlsZSByZWFkIC1yOyBkbwogICAgICAgIGVjaG8gIiAkR09PRCokTk9STUFM ICRSRVBMWSI7CiAgICBkb25lOwogICAgTEFTVF9FX0NNRD0iZWxvZyI7CiAgICByZXR1cm4g MAp9CmVsb2dfYmFzZSAoKSAKeyAKICAgIGxvY2FsIG1lc3NhZ2V0eXBlOwogICAgWyAteiAi JHsxfSIgLW8gLXogIiR7VH0iIC1vICEgLWQgIiR7VH0vbG9nZ2luZyIgXSAmJiByZXR1cm4g MTsKICAgIGNhc2UgIiR7MX0iIGluIAogICAgICAgIElORk8gfCBXQVJOIHwgRVJST1IgfCBM T0cgfCBRQSkKICAgICAgICAgICAgbWVzc2FnZXR5cGU9IiR7MX0iOwogICAgICAgICAgICBz aGlmdAogICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAgdmVjaG8gLWUgIiAke0JB RH0qJHtOT1JNQUx9IEludmFsaWQgdXNlIG9mIGludGVybmFsIGZ1bmN0aW9uIGVsb2dfYmFz ZSgpLCBuZXh0IG1lc3NhZ2Ugd2lsbCBub3QgYmUgbG9nZ2VkIjsKICAgICAgICAgICAgcmV0 dXJuIDEKICAgICAgICA7OwogICAgZXNhYzsKICAgIGVjaG8gLWUgIiRAIiB8IHdoaWxlIHJl YWQgLXI7IGRvCiAgICAgICAgZWNobyAiJG1lc3NhZ2V0eXBlICRSRVBMWSIgPj4gIiR7VH0v bG9nZ2luZy8ke0VCVUlMRF9QSEFTRTotb3RoZXJ9IjsKICAgIGRvbmU7CiAgICByZXR1cm4g MAp9CmVta3RlbXAgKCkgCnsgCiAgICBsb2NhbCBleGU9InRvdWNoIjsKICAgIFtbICQxID09 IC1kIF1dICYmIGV4ZT0ibWtkaXIiICYmIHNoaWZ0OwogICAgbG9jYWwgdG9wZGlyPSQxOwog ICAgaWYgW1sgLXogJHt0b3BkaXJ9IF1dOyB0aGVuCiAgICAgICAgW1sgLXogJHtUfSBdXSAm JiB0b3BkaXI9Ii90bXAiIHx8IHRvcGRpcj0ke1R9OwogICAgZmk7CiAgICBpZiAhIHR5cGUg LVAgbWt0ZW1wID4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAgbG9jYWwgdG1wPS87CiAgICAg ICAgd2hpbGUgW1sgLWUgJHt0bXB9IF1dOyBkbwogICAgICAgICAgICB0bXA9JHt0b3BkaXJ9 L3RtcC4ke1JBTkRPTX0uJHtSQU5ET019LiR7UkFORE9NfTsKICAgICAgICBkb25lOwogICAg ICAgICR7ZXhlfSAiJHt0bXB9IiB8fCAke2V4ZX0gLXAgIiR7dG1wfSI7CiAgICAgICAgZWNo byAiJHt0bXB9IjsKICAgIGVsc2UKICAgICAgICBpZiBbWyAke2V4ZX0gPT0gInRvdWNoIiBd XTsgdGhlbgogICAgICAgICAgICBUTVBESVI9IiR7dG9wZGlyfSIgbWt0ZW1wIC10IHRtcC5Y WFhYWFhYWFhYOwogICAgICAgIGVsc2UKICAgICAgICAgICAgVE1QRElSPSIke3RvcGRpcn0i IG1rdGVtcCAtZHQgdG1wLlhYWFhYWFhYWFg7CiAgICAgICAgZmk7CiAgICBmaQp9CmVuZXdn cm91cCAoKSAKeyAKICAgIGNhc2UgJHtFQlVJTERfUEhBU0V9IGluIAogICAgICAgIHVucGFj ayB8IGNvbXBpbGUgfCB0ZXN0IHwgaW5zdGFsbCkKICAgICAgICAgICAgZWVycm9yICInZW5l d2dyb3VwKCknIGNhbGxlZCBmcm9tICcke0VCVUlMRF9QSEFTRX0oKScgd2hpY2ggaXMgbm90 IGEgcGtnXyogZnVuY3Rpb24uIjsKICAgICAgICAgICAgZWVycm9yICJQYWNrYWdlIGZhaWxz IGF0IFFBIGFuZCBhdCBsaWZlLiAgUGxlYXNlIGZpbGUgYSBidWcuIjsKICAgICAgICAgICAg ZGllICJCYWQgcGFja2FnZSEgIGVuZXdncm91cCBpcyBvbmx5IGZvciB1c2UgaW4gcGtnXyog ZnVuY3Rpb25zISIKICAgICAgICA7OwogICAgZXNhYzsKICAgIGxvY2FsIGVncm91cD0iJDEi OwogICAgc2hpZnQ7CiAgICBpZiBbIC16ICIke2Vncm91cH0iIF07IHRoZW4KICAgICAgICBl ZXJyb3IgIk5vIGdyb3VwIHNwZWNpZmllZCAhIjsKICAgICAgICBkaWUgIkNhbm5vdCBjYWxs IGVuZXdncm91cCB3aXRob3V0IGEgZ3JvdXAiOwogICAgZmk7CiAgICBpZiBbWyAtbiAkKGVn ZXRlbnQgZ3JvdXAgIiR7ZWdyb3VwfSIpIF1dOyB0aGVuCiAgICAgICAgcmV0dXJuIDA7CiAg ICBmaTsKICAgIGVpbmZvICJBZGRpbmcgZ3JvdXAgJyR7ZWdyb3VwfScgdG8geW91ciBzeXN0 ZW0gLi4uIjsKICAgIGxvY2FsIG9wdHM9OwogICAgbG9jYWwgZWdpZD0iJDEiOwogICAgc2hp ZnQ7CiAgICBpZiBbICEgLXogIiR7ZWdpZH0iIF07IHRoZW4KICAgICAgICBpZiBbICIke2Vn aWR9IiAtZ3QgMCBdOyB0aGVuCiAgICAgICAgICAgIGlmIFsgLXogImBlZ2V0ZW50IGdyb3Vw ICR7ZWdpZH1gIiBdOyB0aGVuCiAgICAgICAgICAgICAgICBpZiBbWyAiJHtDSE9TVH0iID09 ICotZGFyd2luKiBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIG9wdHM9IiR7b3B0c30g JHtlZ2lkfSI7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgb3B0 cz0iJHtvcHRzfSAtZyAke2VnaWR9IjsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAg ICBlbHNlCiAgICAgICAgICAgICAgICBlZ2lkPSJuZXh0IGF2YWlsYWJsZTsgcmVxdWVzdGVk IGdpZCB0YWtlbiI7CiAgICAgICAgICAgIGZpOwogICAgICAgIGVsc2UKICAgICAgICAgICAg ZWVycm9yICJHcm91cGlkIGdpdmVuIGJ1dCBpcyBub3QgZ3JlYXRlciB0aGFuIDAgISI7CiAg ICAgICAgICAgIGRpZSAiJHtlZ2lkfSBpcyBub3QgYSB2YWxpZCBHSUQiOwogICAgICAgIGZp OwogICAgZWxzZQogICAgICAgIGVnaWQ9Im5leHQgYXZhaWxhYmxlIjsKICAgIGZpOwogICAg ZWluZm8gIiAtIEdyb3VwaWQ6ICR7ZWdpZH0iOwogICAgbG9jYWwgZWV4dHJhPSIkQCI7CiAg ICBvcHRzPSIke29wdHN9ICR7ZWV4dHJhfSI7CiAgICBsb2NhbCBvbGRzYW5kYm94PSIke1NB TkRCT1hfT059IjsKICAgIGV4cG9ydCBTQU5EQk9YX09OPSIwIjsKICAgIGNhc2UgJHtDSE9T VH0gaW4gCiAgICAgICAgKi1kYXJ3aW4qKQogICAgICAgICAgICBpZiBbICEgLXogIiR7ZWV4 dHJhfSIgXTsgdGhlbgogICAgICAgICAgICAgICAgZWluZm8gIkV4dHJhIG9wdGlvbnMgYXJl IG5vdCBzdXBwb3J0ZWQgb24gRGFyd2luL09TIFggeWV0IjsKICAgICAgICAgICAgICAgIGVp bmZvICJQbGVhc2UgcmVwb3J0IHRoZSBlYnVpbGQgYWxvbmcgd2l0aCB0aGUgaW5mbyBiZWxv dyI7CiAgICAgICAgICAgICAgICBlaW5mbyAiZWV4dHJhOiAke2VleHRyYX0iOwogICAgICAg ICAgICAgICAgZGllICJSZXF1aXJlZCBmdW5jdGlvbiBtaXNzaW5nIjsKICAgICAgICAgICAg Zmk7CiAgICAgICAgICAgIGNhc2UgJHtlZ2lkfSBpbiAKICAgICAgICAgICAgICAgICpbITAt OV0qKQogICAgICAgICAgICAgICAgICAgIGZvciAoKGVnaWQgPSAxMDE7IGVnaWQgPD0gOTk5 OyBlZ2lkKyspKQogICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAg ICAgIFtbIC16ICQoZWdldGVudCBncm91cCAke2VnaWR9KSBdXSAmJiBicmVhazsKICAgICAg ICAgICAgICAgICAgICBkb25lCiAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICBlc2Fj OwogICAgICAgICAgICBkc2NsIC4gY3JlYXRlIC9ncm91cHMvJHtlZ3JvdXB9IGdpZCAke2Vn aWR9OwogICAgICAgICAgICBkc2NsIC4gY3JlYXRlIC9ncm91cHMvJHtlZ3JvdXB9IHBhc3N3 ZCAnKicKICAgICAgICA7OwogICAgICAgICotZnJlZWJzZCogfCAqLWRyYWdvbmZseSopCiAg ICAgICAgICAgIGNhc2UgJHtlZ2lkfSBpbiAKICAgICAgICAgICAgICAgICpbITAtOV0qKQog ICAgICAgICAgICAgICAgICAgIGZvciAoKGVnaWQgPSAxMDE7IGVnaWQgPD0gOTk5OyBlZ2lk KyspKQogICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgIFtb IC16ICQoZWdldGVudCBncm91cCAke2VnaWR9KSBdXSAmJiBicmVhazsKICAgICAgICAgICAg ICAgICAgICBkb25lCiAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICBlc2FjOwogICAg ICAgICAgICBwdyBncm91cGFkZCAke2Vncm91cH0gLWcgJHtlZ2lkfSB8fCBkaWUgImVuZXdn cm91cCBmYWlsZWQiCiAgICAgICAgOzsKICAgICAgICAqLW5ldGJzZCopCiAgICAgICAgICAg IGNhc2UgJHtlZ2lkfSBpbiAKICAgICAgICAgICAgICAgICpbITAtOV0qKQogICAgICAgICAg ICAgICAgICAgIGZvciAoKGVnaWQgPSAxMDE7IGVnaWQgPD0gOTk5OyBlZ2lkKyspKQogICAg ICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgIFtbIC16ICQoZWdl dGVudCBncm91cCAke2VnaWR9KSBdXSAmJiBicmVhazsKICAgICAgICAgICAgICAgICAgICBk b25lCiAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICBlc2FjOwogICAgICAgICAgICBn cm91cGFkZCAtZyAke2VnaWR9ICR7ZWdyb3VwfSB8fCBkaWUgImVuZXdncm91cCBmYWlsZWQi CiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBncm91cGFkZCAke29wdHN9ICR7 ZWdyb3VwfSB8fCBkaWUgImVuZXdncm91cCBmYWlsZWQiCiAgICAgICAgOzsKICAgIGVzYWM7 CiAgICBleHBvcnQgU0FOREJPWF9PTj0iJHtvbGRzYW5kYm94fSIKfQplbmV3dXNlciAoKSAK eyAKICAgIGNhc2UgJHtFQlVJTERfUEhBU0V9IGluIAogICAgICAgIHVucGFjayB8IGNvbXBp bGUgfCB0ZXN0IHwgaW5zdGFsbCkKICAgICAgICAgICAgZWVycm9yICInZW5ld3VzZXIoKScg Y2FsbGVkIGZyb20gJyR7RUJVSUxEX1BIQVNFfSgpJyB3aGljaCBpcyBub3QgYSBwa2dfKiBm dW5jdGlvbi4iOwogICAgICAgICAgICBlZXJyb3IgIlBhY2thZ2UgZmFpbHMgYXQgUUEgYW5k IGF0IGxpZmUuICBQbGVhc2UgZmlsZSBhIGJ1Zy4iOwogICAgICAgICAgICBkaWUgIkJhZCBw YWNrYWdlISAgZW5ld3VzZXIgaXMgb25seSBmb3IgdXNlIGluIHBrZ18qIGZ1bmN0aW9ucyEi CiAgICAgICAgOzsKICAgIGVzYWM7CiAgICBsb2NhbCBldXNlcj0kMTsKICAgIHNoaWZ0Owog ICAgaWYgW1sgLXogJHtldXNlcn0gXV07IHRoZW4KICAgICAgICBlZXJyb3IgIk5vIHVzZXJu YW1lIHNwZWNpZmllZCAhIjsKICAgICAgICBkaWUgIkNhbm5vdCBjYWxsIGVuZXd1c2VyIHdp dGhvdXQgYSB1c2VybmFtZSI7CiAgICBmaTsKICAgIGlmIFtbIC1uICQoZWdldGVudCBwYXNz d2QgIiR7ZXVzZXJ9IikgXV07IHRoZW4KICAgICAgICByZXR1cm4gMDsKICAgIGZpOwogICAg ZWluZm8gIkFkZGluZyB1c2VyICcke2V1c2VyfScgdG8geW91ciBzeXN0ZW0gLi4uIjsKICAg IGxvY2FsIG9wdHM9OwogICAgbG9jYWwgZXVpZD0kMTsKICAgIHNoaWZ0OwogICAgaWYgW1sg LW4gJHtldWlkfSAmJiAke2V1aWR9ICE9IC0xIF1dOyB0aGVuCiAgICAgICAgaWYgW1sgJHtl dWlkfSAtZ3QgMCBdXTsgdGhlbgogICAgICAgICAgICBpZiBbWyAtbiAkKGVnZXRlbnQgcGFz c3dkICR7ZXVpZH0pIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBldWlkPSJuZXh0IjsKICAg ICAgICAgICAgZmk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBlZXJyb3IgIlVzZXJpZCBn aXZlbiBidXQgaXMgbm90IGdyZWF0ZXIgdGhhbiAwICEiOwogICAgICAgICAgICBkaWUgIiR7 ZXVpZH0gaXMgbm90IGEgdmFsaWQgVUlEIjsKICAgICAgICBmaTsKICAgIGVsc2UKICAgICAg ICBldWlkPSJuZXh0IjsKICAgIGZpOwogICAgaWYgW1sgJHtldWlkfSA9PSAibmV4dCIgXV07 IHRoZW4KICAgICAgICBmb3IgKChldWlkID0gMTAxOyBldWlkIDw9IDk5OTsgZXVpZCsrKSkK ICAgICAgICBkbwogICAgICAgICAgICBbWyAteiAkKGVnZXRlbnQgcGFzc3dkICR7ZXVpZH0p IF1dICYmIGJyZWFrOwogICAgICAgIGRvbmU7CiAgICBmaTsKICAgIG9wdHM9IiR7b3B0c30g LXUgJHtldWlkfSI7CiAgICBlaW5mbyAiIC0gVXNlcmlkOiAke2V1aWR9IjsKICAgIGxvY2Fs IGVzaGVsbD0kMTsKICAgIHNoaWZ0OwogICAgaWYgW1sgISAteiAke2VzaGVsbH0gXV0gJiYg W1sgJHtlc2hlbGx9ICE9ICItMSIgXV07IHRoZW4KICAgICAgICBpZiBbWyAhIC1lICR7Uk9P VH0ke2VzaGVsbH0gXV07IHRoZW4KICAgICAgICAgICAgZWVycm9yICJBIHNoZWxsIHdhcyBz cGVjaWZpZWQgYnV0IGl0IGRvZXMgbm90IGV4aXN0ICEiOwogICAgICAgICAgICBkaWUgIiR7 ZXNoZWxsfSBkb2VzIG5vdCBleGlzdCBpbiAke1JPT1R9IjsKICAgICAgICBmaTsKICAgICAg ICBpZiBbWyAke2VzaGVsbH0gPT0gKi9mYWxzZSB8fCAke2VzaGVsbH0gPT0gKi9ub2xvZ2lu IF1dOyB0aGVuCiAgICAgICAgICAgIGVlcnJvciAiRG8gbm90IHNwZWNpZnkgJHtlc2hlbGx9 IHlvdXJzZWxmLCB1c2UgLTEiOwogICAgICAgICAgICBkaWUgIlBhc3MgJy0xJyBhcyB0aGUg c2hlbGwgcGFyYW1ldGVyIjsKICAgICAgICBmaTsKICAgIGVsc2UKICAgICAgICBmb3Igc2hl bGwgaW4gL3NiaW4vbm9sb2dpbiAvdXNyL3NiaW4vbm9sb2dpbiAvYmluL2ZhbHNlIC91c3Iv YmluL2ZhbHNlIC9kZXYvbnVsbDsKICAgICAgICBkbwogICAgICAgICAgICBbWyAteCAke1JP T1R9JHtzaGVsbH0gXV0gJiYgYnJlYWs7CiAgICAgICAgZG9uZTsKICAgICAgICBpZiBbWyAk e3NoZWxsfSA9PSAiL2Rldi9udWxsIiBdXTsgdGhlbgogICAgICAgICAgICBlZXJyb3IgIlVu YWJsZSB0byBpZGVudGlmeSB0aGUgc2hlbGwgdG8gdXNlLCBwcm9jZWVkaW5nIHdpdGggdXNl cmxhbmQgZGVmYXVsdC4iOwogICAgICAgICAgICBjYXNlICR7VVNFUkxBTkR9IGluIAogICAg ICAgICAgICAgICAgR05VKQogICAgICAgICAgICAgICAgICAgIHNoZWxsPSIvYmluL2ZhbHNl IgogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIEJTRCkKICAgICAgICAgICAg ICAgICAgICBzaGVsbD0iL3NiaW4vbm9sb2dpbiIKICAgICAgICAgICAgICAgIDs7CiAgICAg ICAgICAgICAgICBEYXJ3aW4pCiAgICAgICAgICAgICAgICAgICAgc2hlbGw9Ii91c3Ivc2Jp bi9ub2xvZ2luIgogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICopCiAgICAg ICAgICAgICAgICAgICAgZGllICJVbmFibGUgdG8gaWRlbnRpZnkgdGhlIGRlZmF1bHQgc2hl bGwgZm9yIHVzZXJsYW5kICR7VVNFUkxBTkR9IgogICAgICAgICAgICAgICAgOzsKICAgICAg ICAgICAgZXNhYzsKICAgICAgICBmaTsKICAgICAgICBlc2hlbGw9JHtzaGVsbH07CiAgICBm aTsKICAgIGVpbmZvICIgLSBTaGVsbDogJHtlc2hlbGx9IjsKICAgIG9wdHM9IiR7b3B0c30g LXMgJHtlc2hlbGx9IjsKICAgIGxvY2FsIGVob21lPSQxOwogICAgc2hpZnQ7CiAgICBpZiBb WyAteiAke2Vob21lfSBdXSB8fCBbWyAke2Vob21lfSA9PSAiLTEiIF1dOyB0aGVuCiAgICAg ICAgZWhvbWU9Ii9kZXYvbnVsbCI7CiAgICBmaTsKICAgIGVpbmZvICIgLSBIb21lOiAke2Vo b21lfSI7CiAgICBvcHRzPSIke29wdHN9IC1kICR7ZWhvbWV9IjsKICAgIGxvY2FsIGVncm91 cHM9JDE7CiAgICBzaGlmdDsKICAgIGlmIFtbICEgLXogJHtlZ3JvdXBzfSBdXTsgdGhlbgog ICAgICAgIGxvY2FsIG9sZGlmcz0ke0lGU307CiAgICAgICAgbG9jYWwgZGVmZ3JvdXA9IiIg ZXhncm91cHM9IiI7CiAgICAgICAgZXhwb3J0IElGUz0iLCI7CiAgICAgICAgZm9yIGcgaW4g JHtlZ3JvdXBzfTsKICAgICAgICBkbwogICAgICAgICAgICBleHBvcnQgSUZTPSR7b2xkaWZz fTsKICAgICAgICAgICAgaWYgW1sgLXogJChlZ2V0ZW50IGdyb3VwICIke2d9IikgXV07IHRo ZW4KICAgICAgICAgICAgICAgIGVlcnJvciAiWW91IG11c3QgYWRkIGdyb3VwICR7Z30gdG8g dGhlIHN5c3RlbSBmaXJzdCI7CiAgICAgICAgICAgICAgICBkaWUgIiR7Z30gaXMgbm90IGEg dmFsaWQgR0lEIjsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGlmIFtbIC16ICR7ZGVm Z3JvdXB9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBkZWZncm91cD0ke2d9OwogICAgICAg ICAgICBlbHNlCiAgICAgICAgICAgICAgICBleGdyb3Vwcz0iJHtleGdyb3Vwc30sJHtnfSI7 CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBleHBvcnQgSUZTPSIsIjsKICAgICAgICBk b25lOwogICAgICAgIGV4cG9ydCBJRlM9JHtvbGRpZnN9OwogICAgICAgIG9wdHM9IiR7b3B0 c30gLWcgJHtkZWZncm91cH0iOwogICAgICAgIGlmIFtbICEgLXogJHtleGdyb3Vwc30gXV07 IHRoZW4KICAgICAgICAgICAgb3B0cz0iJHtvcHRzfSAtRyAke2V4Z3JvdXBzOjF9IjsKICAg ICAgICBmaTsKICAgIGVsc2UKICAgICAgICBlZ3JvdXBzPSIobm9uZSkiOwogICAgZmk7CiAg ICBlaW5mbyAiIC0gR3JvdXBzOiAke2Vncm91cHN9IjsKICAgIGxvY2FsIG9sZHNhbmRib3g9 JHtTQU5EQk9YX09OfTsKICAgIGV4cG9ydCBTQU5EQk9YX09OPSIwIjsKICAgIGNhc2UgJHtD SE9TVH0gaW4gCiAgICAgICAgKi1kYXJ3aW4qKQogICAgICAgICAgICBpZiBbWyAteiAkQCBd XTsgdGhlbgogICAgICAgICAgICAgICAgZHNjbCAuIGNyZWF0ZSAvdXNlcnMvJHtldXNlcn0g dWlkICR7ZXVpZH07CiAgICAgICAgICAgICAgICBkc2NsIC4gY3JlYXRlIC91c2Vycy8ke2V1 c2VyfSBzaGVsbCAke2VzaGVsbH07CiAgICAgICAgICAgICAgICBkc2NsIC4gY3JlYXRlIC91 c2Vycy8ke2V1c2VyfSBob21lICR7ZWhvbWV9OwogICAgICAgICAgICAgICAgZHNjbCAuIGNy ZWF0ZSAvdXNlcnMvJHtldXNlcn0gcmVhbG5hbWUgImFkZGVkIGJ5IHBvcnRhZ2UgZm9yICR7 UE59IjsKICAgICAgICAgICAgICAgIGxvY2FsIG9sZGlmcz0ke0lGU307CiAgICAgICAgICAg ICAgICBleHBvcnQgSUZTPSIsIjsKICAgICAgICAgICAgICAgIGZvciBnIGluICR7ZWdyb3Vw c307CiAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgIGRzY2wgLiBtZXJn ZSAvZ3JvdXBzLyR7Z30gdXNlcnMgJHtldXNlcn07CiAgICAgICAgICAgICAgICBkb25lOwog ICAgICAgICAgICAgICAgZXhwb3J0IElGUz0ke29sZGlmc307CiAgICAgICAgICAgIGVsc2UK ICAgICAgICAgICAgICAgIGVpbmZvICJFeHRyYSBvcHRpb25zIGFyZSBub3Qgc3VwcG9ydGVk IG9uIERhcndpbiB5ZXQiOwogICAgICAgICAgICAgICAgZWluZm8gIlBsZWFzZSByZXBvcnQg dGhlIGVidWlsZCBhbG9uZyB3aXRoIHRoZSBpbmZvIGJlbG93IjsKICAgICAgICAgICAgICAg IGVpbmZvICJlZXh0cmE6ICRAIjsKICAgICAgICAgICAgICAgIGRpZSAiUmVxdWlyZWQgZnVu Y3Rpb24gbWlzc2luZyI7CiAgICAgICAgICAgIGZpCiAgICAgICAgOzsKICAgICAgICAqLWZy ZWVic2QqIHwgKi1kcmFnb25mbHkqKQogICAgICAgICAgICBpZiBbWyAteiAkQCBdXTsgdGhl bgogICAgICAgICAgICAgICAgcHcgdXNlcmFkZCAke2V1c2VyfSAke29wdHN9IC1jICJhZGRl ZCBieSBwb3J0YWdlIGZvciAke1BOfSIgZGllICJlbmV3dXNlciBmYWlsZWQiOwogICAgICAg ICAgICBlbHNlCiAgICAgICAgICAgICAgICBlaW5mbyAiIC0gRXh0cmE6ICRAIjsKICAgICAg ICAgICAgICAgIHB3IHVzZXJhZGQgJHtldXNlcn0gJHtvcHRzfSAiJEAiIHx8IGRpZSAiZW5l d3VzZXIgZmFpbGVkIjsKICAgICAgICAgICAgZmkKICAgICAgICA7OwogICAgICAgICotbmV0 YnNkKikKICAgICAgICAgICAgaWYgW1sgLXogJEAgXV07IHRoZW4KICAgICAgICAgICAgICAg IHVzZXJhZGQgJHtvcHRzfSAke2V1c2VyfSB8fCBkaWUgImVuZXd1c2VyIGZhaWxlZCI7CiAg ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGVpbmZvICIgLSBFeHRyYTogJEAiOwog ICAgICAgICAgICAgICAgdXNlcmFkZCAke29wdHN9ICR7ZXVzZXJ9ICIkQCIgfHwgZGllICJl bmV3dXNlciBmYWlsZWQiOwogICAgICAgICAgICBmaQogICAgICAgIDs7CiAgICAgICAgKi1v cGVuYnNkKikKICAgICAgICAgICAgaWYgW1sgLXogJEAgXV07IHRoZW4KICAgICAgICAgICAg ICAgIHVzZXJhZGQgLXUgJHtldWlkfSAtcyAke2VzaGVsbH0gLWQgJHtlaG9tZX0gLWMgIkFk ZGVkIGJ5IHBvcnRhZ2UgZm9yICR7UE59IiAtZyAke2Vncm91cHN9ICR7ZXVzZXJ9IHx8IGRp ZSAiZW5ld3VzZXIgZmFpbGVkIjsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg ZWluZm8gIiAtIEV4dHJhOiAkQCI7CiAgICAgICAgICAgICAgICB1c2VyYWRkIC11ICR7ZXVp ZH0gLXMgJHtlc2hlbGx9IC1kICR7ZWhvbWV9IC1jICJBZGRlZCBieSBwb3J0YWdlIGZvciAk e1BOfSIgLWcgJHtlZ3JvdXBzfSAke2V1c2VyfSAiJEAiIHx8IGRpZSAiZW5ld3VzZXIgZmFp bGVkIjsKICAgICAgICAgICAgZmkKICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAg IGlmIFtbIC16ICRAIF1dOyB0aGVuCiAgICAgICAgICAgICAgICB1c2VyYWRkICR7b3B0c30g JHtldXNlcn0gLWMgImFkZGVkIGJ5IHBvcnRhZ2UgZm9yICR7UE59IiB8fCBkaWUgImVuZXd1 c2VyIGZhaWxlZCI7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGVpbmZvICIg LSBFeHRyYTogJEAiOwogICAgICAgICAgICAgICAgdXNlcmFkZCAke29wdHN9ICR7ZXVzZXJ9 ICIkQCIgfHwgZGllICJlbmV3dXNlciBmYWlsZWQiOwogICAgICAgICAgICBmaQogICAgICAg IDs7CiAgICBlc2FjOwogICAgaWYgW1sgISAtZSAke1JPT1R9LyR7ZWhvbWV9IF1dOyB0aGVu CiAgICAgICAgZWluZm8gIiAtIENyZWF0aW5nICR7ZWhvbWV9IGluICR7Uk9PVH0iOwogICAg ICAgIG1rZGlyIC1wICIke1JPT1R9LyR7ZWhvbWV9IjsKICAgICAgICBjaG93biAke2V1c2Vy fSAiJHtST09UfS8ke2Vob21lfSI7CiAgICAgICAgY2htb2QgNzU1ICIke1JPT1R9LyR7ZWhv bWV9IjsKICAgIGZpOwogICAgZXhwb3J0IFNBTkRCT1hfT049JHtvbGRzYW5kYm94fQp9CmVw YXRjaCAoKSAKeyAKICAgIGZ1bmN0aW9uIF9lcGF0Y2hfZHJhd19saW5lICgpIAogICAgeyAK ICAgICAgICBbWyAteiAkMSBdXSAmJiBzZXQgIiQocHJpbnRmICIlNjVzIiAnJykiOwogICAg ICAgIGVjaG8gIiR7MS8vPy89fSIKICAgIH07CiAgICBmdW5jdGlvbiBfZXBhdGNoX2Fzc2Vy dCAoKSAKICAgIHsgCiAgICAgICAgbG9jYWwgX3BpcGVzdGF0dXM9JHtQSVBFU1RBVFVTWypd fTsKICAgICAgICBbWyAke19waXBlc3RhdHVzLy8gL30gLWVxIDAgXV0KICAgIH07CiAgICBs b2NhbCBQSVBFX0NNRD0iIjsKICAgIGxvY2FsIFNUREVSUl9UQVJHRVQ9IiR7VH0vJCQub3V0 IjsKICAgIGxvY2FsIFBBVENIX1RBUkdFVD0iJHtUfS8kJC5wYXRjaCI7CiAgICBsb2NhbCBQ QVRDSF9TVUZGSVg9IiI7CiAgICBsb2NhbCBTSU5HTEVfUEFUQ0g9Im5vIjsKICAgIGxvY2Fs IHg9IiI7CiAgICB1bnNldCBQNENPTkZJRyBQNFBPUlQgUDRVU0VSOwogICAgaWYgWyAiJCMi IC1ndCAxIF07IHRoZW4KICAgICAgICBsb2NhbCBtPSIiOwogICAgICAgIGZvciBtIGluICIk QCI7CiAgICAgICAgZG8KICAgICAgICAgICAgZXBhdGNoICIke219IjsKICAgICAgICBkb25l OwogICAgICAgIHJldHVybiAwOwogICAgZmk7CiAgICBpZiBbIC1uICIkMSIgLWEgLWYgIiQx IiBdOyB0aGVuCiAgICAgICAgU0lOR0xFX1BBVENIPSJ5ZXMiOwogICAgICAgIGxvY2FsIEVQ QVRDSF9TT1VSQ0U9IiQxIjsKICAgICAgICBsb2NhbCBFUEFUQ0hfU1VGRklYPSIkezEjIypc Ln0iOwogICAgZWxzZQogICAgICAgIGlmIFsgLW4gIiQxIiAtYSAtZCAiJDEiIF07IHRoZW4K ICAgICAgICAgICAgaWYgWyAiJHtFUEFUQ0hfRk9SQ0V9IiA9ICJ5ZXMiIF0gJiYgWyAteiAi JHtFUEFUQ0hfU1VGRklYfSIgXTsgdGhlbgogICAgICAgICAgICAgICAgbG9jYWwgRVBBVENI X1NPVVJDRT0iJDEvKiI7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGxvY2Fs IEVQQVRDSF9TT1VSQ0U9IiQxLyouJHtFUEFUQ0hfU1VGRklYfSI7CiAgICAgICAgICAgIGZp OwogICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgW1sgISAtZCAke0VQQVRDSF9TT1VSQ0V9 IF1dIHx8IFtbIC1uICQxIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBpZiBbIC1uICIkMSIg LWEgIiR7RVBBVENIX1NPVVJDRX0iID0gIiR7V09SS0RJUn0vcGF0Y2giIF07IHRoZW4KICAg ICAgICAgICAgICAgICAgICBFUEFUQ0hfU09VUkNFPSIkMSI7CiAgICAgICAgICAgICAgICBm aTsKICAgICAgICAgICAgICAgIGVjaG87CiAgICAgICAgICAgICAgICBlZXJyb3IgIkNhbm5v dCBmaW5kIFwkRVBBVENIX1NPVVJDRSEgIFZhbHVlIGZvciBcJEVQQVRDSF9TT1VSQ0UgaXM6 IjsKICAgICAgICAgICAgICAgIGVlcnJvcjsKICAgICAgICAgICAgICAgIGVlcnJvciAiICAk e0VQQVRDSF9TT1VSQ0V9IjsKICAgICAgICAgICAgICAgIGVlcnJvciAiICAoICR7RVBBVENI X1NPVVJDRSMjKi99ICkiOwogICAgICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAgICAg IGRpZSAiQ2Fubm90IGZpbmQgXCRFUEFUQ0hfU09VUkNFISI7CiAgICAgICAgICAgIGZpOwog ICAgICAgICAgICBsb2NhbCBFUEFUQ0hfU09VUkNFPSIke0VQQVRDSF9TT1VSQ0V9LyouJHtF UEFUQ0hfU1VGRklYfSI7CiAgICAgICAgZmk7CiAgICBmaTsKICAgIGNhc2UgJHtFUEFUQ0hf U1VGRklYIyMqXC59IGluIAogICAgICAgIHh6KQogICAgICAgICAgICBQSVBFX0NNRD0ieHog LWRjIjsKICAgICAgICAgICAgUEFUQ0hfU1VGRklYPSJ4eiIKICAgICAgICA7OwogICAgICAg IGx6bWEpCiAgICAgICAgICAgIFBJUEVfQ01EPSJsem1hIC1kYyI7CiAgICAgICAgICAgIFBB VENIX1NVRkZJWD0ibHptYSIKICAgICAgICA7OwogICAgICAgIGJ6MikKICAgICAgICAgICAg UElQRV9DTUQ9ImJ6aXAyIC1kYyI7CiAgICAgICAgICAgIFBBVENIX1NVRkZJWD0iYnoyIgog ICAgICAgIDs7CiAgICAgICAgZ3ogfCBaIHwgeikKICAgICAgICAgICAgUElQRV9DTUQ9Imd6 aXAgLWRjIjsKICAgICAgICAgICAgUEFUQ0hfU1VGRklYPSJneiIKICAgICAgICA7OwogICAg ICAgIFpJUCB8IHppcCkKICAgICAgICAgICAgUElQRV9DTUQ9InVuemlwIC1wIjsKICAgICAg ICAgICAgUEFUQ0hfU1VGRklYPSJ6aXAiCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAg ICAgICBQSVBFX0NNRD0iY2F0IjsKICAgICAgICAgICAgUEFUQ0hfU1VGRklYPSJwYXRjaCIK ICAgICAgICA7OwogICAgZXNhYzsKICAgIGlmIFsgIiR7U0lOR0xFX1BBVENIfSIgPSAibm8i IF07IHRoZW4KICAgICAgICBlaW5mbyAiJHtFUEFUQ0hfTVVMVElfTVNHfSI7CiAgICBmaTsK ICAgIGZvciB4IGluICR7RVBBVENIX1NPVVJDRX07CiAgICBkbwogICAgICAgIGlmIFsgLWYg JHt4fSBdICYmICggWyAiJHtTSU5HTEVfUEFUQ0h9IiA9ICJ5ZXMiIC1vICIke3gvX2FsbF99 IiAhPSAiJHt4fSIgLW8gIiR7eC9fJHtBUkNIfV99IiAhPSAiJHt4fSIgXSB8fCBbICIke0VQ QVRDSF9GT1JDRX0iID0gInllcyIgXSApOyB0aGVuCiAgICAgICAgICAgIGxvY2FsIGNvdW50 PTA7CiAgICAgICAgICAgIGxvY2FsIHBvcHRzPSIke0VQQVRDSF9PUFRTfSI7CiAgICAgICAg ICAgIGxvY2FsIHBhdGNobmFtZT0ke3gjIyovfTsKICAgICAgICAgICAgaWYgWyAtbiAiJHtF UEFUQ0hfRVhDTFVERX0iIF07IHRoZW4KICAgICAgICAgICAgICAgIGlmIFsgIiR7RVBBVENI X0VYQ0xVREUvJHtwYXRjaG5hbWV9fSIgIT0gIiR7RVBBVENIX0VYQ0xVREV9IiBdOyB0aGVu CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICBmaTsKICAg ICAgICAgICAgZmk7CiAgICAgICAgICAgIGlmIFsgIiR7U0lOR0xFX1BBVENIfSIgPSAieWVz IiBdOyB0aGVuCiAgICAgICAgICAgICAgICBpZiBbIC1uICIke0VQQVRDSF9TSU5HTEVfTVNH fSIgXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIGVpbmZvICIke0VQQVRDSF9TSU5HTEVf TVNHfSI7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgZWluZm8g IkFwcGx5aW5nICR7cGF0Y2huYW1lfSAuLi4iOwogICAgICAgICAgICAgICAgZmk7CiAgICAg ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGVpbmZvICIgICR7cGF0Y2huYW1lfSAuLi4i OwogICAgICAgICAgICBmaTsKICAgICAgICAgICAgZWNobyAiKioqKiogJHtwYXRjaG5hbWV9 ICoqKioqIiA+ICR7U1RERVJSX1RBUkdFVCUvKn0vJHtwYXRjaG5hbWV9LSR7U1RERVJSX1RB UkdFVCMjKi99OwogICAgICAgICAgICBlY2hvID4+ICR7U1RERVJSX1RBUkdFVCUvKn0vJHtw YXRjaG5hbWV9LSR7U1RERVJSX1RBUkdFVCMjKi99OwogICAgICAgICAgICBpZiBbWyAke1BB VENIX1NVRkZJWH0gIT0gInBhdGNoIiBdXTsgdGhlbgogICAgICAgICAgICAgICAgZWNobyAt biAiUElQRV9DT01NQU5EOgkiID4+ICR7U1RERVJSX1RBUkdFVCUvKn0vJHtwYXRjaG5hbWV9 LSR7U1RERVJSX1RBUkdFVCMjKi99OwogICAgICAgICAgICAgICAgZWNobyAiJHtQSVBFX0NN RH0gJHt4fSA+ICR7UEFUQ0hfVEFSR0VUfSIgPj4gJHtTVERFUlJfVEFSR0VUJS8qfS8ke3Bh dGNobmFtZX0tJHtTVERFUlJfVEFSR0VUIyMqL307CiAgICAgICAgICAgICAgICBpZiAhICgg JHtQSVBFX0NNRH0gJHt4fSA+ICR7UEFUQ0hfVEFSR0VUfSApID4+ICR7U1RERVJSX1RBUkdF VCUvKn0vJHtwYXRjaG5hbWV9LSR7U1RERVJSX1RBUkdFVCMjKi99IDI+JjE7IHRoZW4KICAg ICAgICAgICAgICAgICAgICBlY2hvOwogICAgICAgICAgICAgICAgICAgIGVlcnJvciAiQ291 bGQgbm90IGV4dHJhY3QgcGF0Y2ghIjsKICAgICAgICAgICAgICAgICAgICBjb3VudD01Owog ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAg ICAgIGVsc2UKICAgICAgICAgICAgICAgIFBBVENIX1RBUkdFVD0iJHt4fSI7CiAgICAgICAg ICAgIGZpOwogICAgICAgICAgICBsb2NhbCBhYnNfcGF0aHM9JChlZ3JlcCAtbiAnXlstK117 M30gLycgIiR7UEFUQ0hfVEFSR0VUfSIgfCBhd2sgJyQyICE9ICIvZGV2L251bGwiIHsgcHJp bnQgfScpOwogICAgICAgICAgICBpZiBbWyAtbiAke2Fic19wYXRoc30gXV07IHRoZW4KICAg ICAgICAgICAgICAgIGNvdW50PTE7CiAgICAgICAgICAgICAgICBlY2hvICJOT1RFOiBza2lw cGluZyAtcDAgZHVlIHRvIGFic29sdXRlIHBhdGhzIGluIHBhdGNoOiIgPj4gJHtTVERFUlJf VEFSR0VUJS8qfS8ke3BhdGNobmFtZX0tJHtTVERFUlJfVEFSR0VUIyMqL307CiAgICAgICAg ICAgICAgICBlY2hvICIke2Fic19wYXRoc30iID4+ICR7U1RERVJSX1RBUkdFVCUvKn0vJHtw YXRjaG5hbWV9LSR7U1RERVJSX1RBUkdFVCMjKi99OwogICAgICAgICAgICBmaTsKICAgICAg ICAgICAgd2hpbGUgWyAiJHtjb3VudH0iIC1sdCA1IF07IGRvCiAgICAgICAgICAgICAgICBf ZXBhdGNoX2RyYXdfbGluZSAiKioqKiogJHtwYXRjaG5hbWV9ICoqKioqIiA+PiAke1NUREVS Ul9UQVJHRVQlLyp9LyR7cGF0Y2huYW1lfS0ke1NUREVSUl9UQVJHRVQjIyovfTsKICAgICAg ICAgICAgICAgIGVjaG8gPj4gJHtTVERFUlJfVEFSR0VUJS8qfS8ke3BhdGNobmFtZX0tJHtT VERFUlJfVEFSR0VUIyMqL307CiAgICAgICAgICAgICAgICBlY2hvIC1uICJQQVRDSCBDT01N QU5EOgkgIiA+PiAke1NUREVSUl9UQVJHRVQlLyp9LyR7cGF0Y2huYW1lfS0ke1NUREVSUl9U QVJHRVQjIyovfTsKICAgICAgICAgICAgICAgIGVjaG8gInBhdGNoIC1wJHtjb3VudH0gJHtw b3B0c30gPCAke1BBVENIX1RBUkdFVH0iID4+ICR7U1RERVJSX1RBUkdFVCUvKn0vJHtwYXRj aG5hbWV9LSR7U1RERVJSX1RBUkdFVCMjKi99OwogICAgICAgICAgICAgICAgZWNobyA+PiAk e1NUREVSUl9UQVJHRVQlLyp9LyR7cGF0Y2huYW1lfS0ke1NUREVSUl9UQVJHRVQjIyovfTsK ICAgICAgICAgICAgICAgIF9lcGF0Y2hfZHJhd19saW5lICIqKioqKiAke3BhdGNobmFtZX0g KioqKioiID4+ICR7U1RERVJSX1RBUkdFVCUvKn0vJHtwYXRjaG5hbWV9LSR7U1RERVJSX1RB UkdFVCMjKi99OwogICAgICAgICAgICAgICAgaWYgKCBjYXQgJHtQQVRDSF9UQVJHRVR9IHwg cGF0Y2ggLXAke2NvdW50fSAke3BvcHRzfSAtLWRyeS1ydW4gLWY7CiAgICAgICAgICAgICAg ICBfZXBhdGNoX2Fzc2VydCApID4+ICR7U1RERVJSX1RBUkdFVCUvKn0vJHtwYXRjaG5hbWV9 LSR7U1RERVJSX1RBUkdFVCMjKi99IDI+JjE7IHRoZW4KICAgICAgICAgICAgICAgICAgICBf ZXBhdGNoX2RyYXdfbGluZSAiKioqKiogJHtwYXRjaG5hbWV9ICoqKioqIiA+ICR7U1RERVJS X1RBUkdFVCUvKn0vJHtwYXRjaG5hbWV9LSR7U1RERVJSX1RBUkdFVCMjKi99LnJlYWw7CiAg ICAgICAgICAgICAgICAgICAgZWNobyA+PiAke1NUREVSUl9UQVJHRVQlLyp9LyR7cGF0Y2hu YW1lfS0ke1NUREVSUl9UQVJHRVQjIyovfS5yZWFsOwogICAgICAgICAgICAgICAgICAgIGVj aG8gIkFDVFVBTExZIEFQUExZSU5HICR7cGF0Y2huYW1lfSAuLi4iID4+ICR7U1RERVJSX1RB UkdFVCUvKn0vJHtwYXRjaG5hbWV9LSR7U1RERVJSX1RBUkdFVCMjKi99LnJlYWw7CiAgICAg ICAgICAgICAgICAgICAgZWNobyA+PiAke1NUREVSUl9UQVJHRVQlLyp9LyR7cGF0Y2huYW1l fS0ke1NUREVSUl9UQVJHRVQjIyovfS5yZWFsOwogICAgICAgICAgICAgICAgICAgIF9lcGF0 Y2hfZHJhd19saW5lICIqKioqKiAke3BhdGNobmFtZX0gKioqKioiID4+ICR7U1RERVJSX1RB UkdFVCUvKn0vJHtwYXRjaG5hbWV9LSR7U1RERVJSX1RBUkdFVCMjKi99LnJlYWw7CiAgICAg ICAgICAgICAgICAgICAgY2F0ICR7UEFUQ0hfVEFSR0VUfSB8IHBhdGNoIC1wJHtjb3VudH0g JHtwb3B0c30gPj4gJHtTVERFUlJfVEFSR0VUJS8qfS8ke3BhdGNobmFtZX0tJHtTVERFUlJf VEFSR0VUIyMqL30ucmVhbCAyPiYxOwogICAgICAgICAgICAgICAgICAgIF9lcGF0Y2hfYXNz ZXJ0OwogICAgICAgICAgICAgICAgICAgIGlmIFsgIiQ/IiAtbmUgMCBdOyB0aGVuCiAgICAg ICAgICAgICAgICAgICAgICAgIGNhdCAke1NUREVSUl9UQVJHRVQlLyp9LyR7cGF0Y2huYW1l fS0ke1NUREVSUl9UQVJHRVQjIyovfS5yZWFsID4+ICR7U1RERVJSX1RBUkdFVCUvKn0vJHtw YXRjaG5hbWV9LSR7U1RERVJSX1RBUkdFVCMjKi99OwogICAgICAgICAgICAgICAgICAgICAg ICBlY2hvOwogICAgICAgICAgICAgICAgICAgICAgICBlZXJyb3IgIkEgZHJ5LXJ1biBvZiBw YXRjaCBjb21tYW5kIHN1Y2NlZWRlZCwgYnV0IGFjdHVhbGx5IjsKICAgICAgICAgICAgICAg ICAgICAgICAgZWVycm9yICJhcHBseWluZyB0aGUgcGF0Y2ggZmFpbGVkISI7CiAgICAgICAg ICAgICAgICAgICAgICAgIGNvdW50PTU7CiAgICAgICAgICAgICAgICAgICAgZmk7CiAgICAg ICAgICAgICAgICAgICAgcm0gLWYgJHtTVERFUlJfVEFSR0VUJS8qfS8ke3BhdGNobmFtZX0t JHtTVERFUlJfVEFSR0VUIyMqL30ucmVhbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgY291bnQ9JCgoY291bnQgKyAx KSk7CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgIGlmIFsgIiR7UEFUQ0hfU1VGRklY fSIgIT0gInBhdGNoIiBdOyB0aGVuCiAgICAgICAgICAgICAgICBybSAtZiAke1BBVENIX1RB UkdFVH07CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBpZiBbICIke2NvdW50fSIgLWVx IDUgXTsgdGhlbgogICAgICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAgICAgIGVlcnJv ciAiRmFpbGVkIFBhdGNoOiAke3BhdGNobmFtZX0gISI7CiAgICAgICAgICAgICAgICBlZXJy b3IgIiAoICR7UEFUQ0hfVEFSR0VUfSApIjsKICAgICAgICAgICAgICAgIGVlcnJvcjsKICAg ICAgICAgICAgICAgIGVlcnJvciAiSW5jbHVkZSBpbiB5b3VyIGJ1Z3JlcG9ydCB0aGUgY29u dGVudHMgb2Y6IjsKICAgICAgICAgICAgICAgIGVlcnJvcjsKICAgICAgICAgICAgICAgIGVl cnJvciAiICAke1NUREVSUl9UQVJHRVQlLyp9LyR7cGF0Y2huYW1lfS0ke1NUREVSUl9UQVJH RVQjIyovfSI7CiAgICAgICAgICAgICAgICBlY2hvOwogICAgICAgICAgICAgICAgZGllICJG YWlsZWQgUGF0Y2g6ICR7cGF0Y2huYW1lfSEiOwogICAgICAgICAgICBmaTsKICAgICAgICAg ICAgcm0gLWYgJHtTVERFUlJfVEFSR0VUJS8qfS8ke3BhdGNobmFtZX0tJHtTVERFUlJfVEFS R0VUIyMqL307CiAgICAgICAgICAgIGVlbmQgMDsKICAgICAgICBmaTsKICAgIGRvbmU7CiAg ICBpZiBbICIke1NJTkdMRV9QQVRDSH0iID0gIm5vIiBdOyB0aGVuCiAgICAgICAgZWluZm8g IkRvbmUgd2l0aCBwYXRjaGluZyI7CiAgICBmaQp9CmVwYXVzZSAoKSAKeyAKICAgIFtbIC16 ICR7RVBBVVNFX0lHTk9SRX0gXV0gJiYgc2xlZXAgJHsxOi01fQp9CmVwdW50X2N4eCAoKSAK eyAKICAgIGxvY2FsIGRpcj0kMTsKICAgIFtbIC16ICR7ZGlyfSBdXSAmJiBkaXI9JHtTfTsK ICAgIGViZWdpbiAiUmVtb3ZpbmcgdXNlbGVzcyBDKysgY2hlY2tzIjsKICAgIGxvY2FsIGY7 CiAgICBmaW5kICIke2Rpcn0iIC1uYW1lIGNvbmZpZ3VyZSB8IHdoaWxlIHJlYWQgZjsgZG8K ICAgICAgICBwYXRjaCAtLW5vLWJhY2t1cC1pZi1taXNtYXRjaCAtcDAgIiR7Zn0iICIke1BP UlRESVJ9L2VjbGFzcy9FTFQtcGF0Y2hlcy9ub2N4eC9ub2N4eC5wYXRjaCIgPiAvZGV2L251 bGw7CiAgICBkb25lOwogICAgZWVuZCAwCn0KZXFhd2FybiAoKSAKeyAKICAgIGVsb2dfYmFz ZSBRQSAiJCoiOwogICAgW1sgJHtSQ19FTkRDT0x9ICE9ICJ5ZXMiICYmICR7TEFTVF9FX0NN RH0gPT0gImViZWdpbiIgXV0gJiYgZWNobzsKICAgIGVjaG8gLWUgIiRAIiB8IHdoaWxlIHJl YWQgLXI7IGRvCiAgICAgICAgdmVjaG8gIiAkV0FSTiokTk9STUFMICRSRVBMWSIgMT4mMjsK ICAgIGRvbmU7CiAgICBMQVNUX0VfQ01EPSJlcWF3YXJuIjsKICAgIHJldHVybiAwCn0KZXN2 bl9jbGVhbiAoKSAKeyAKICAgIFtbIC16ICQqIF1dICYmIHNldCAtLSAuOwogICAgZmluZCAi JEAiIC10eXBlIGQgLW5hbWUgJy5zdm4nIC1wcnVuZSAtcHJpbnQwIHwgeGFyZ3MgLTAgcm0g LXJmCn0KZXN5c2xvZyAoKSAKeyAKICAgIHJldHVybiAwCn0KZXdhcm4gKCkgCnsgCiAgICBl bG9nX2Jhc2UgV0FSTiAiJCoiOwogICAgW1sgJHtSQ19FTkRDT0x9ICE9ICJ5ZXMiICYmICR7 TEFTVF9FX0NNRH0gPT0gImViZWdpbiIgXV0gJiYgZWNobzsKICAgIGVjaG8gLWUgIiRAIiB8 IHdoaWxlIHJlYWQgLXI7IGRvCiAgICAgICAgZWNobyAiICRXQVJOKiROT1JNQUwgJFJDX0lO REVOVEFUSU9OJFJFUExZIiAxPiYyOwogICAgZG9uZTsKICAgIExBU1RfRV9DTUQ9ImV3YXJu IjsKICAgIHJldHVybiAwCn0KZXhlaW50byAoKSAKeyAKICAgIGlmIFsgIiQxIiA9PSAiLyIg XTsgdGhlbgogICAgICAgIGV4cG9ydCBfRV9FWEVERVNUVFJFRV89IiI7CiAgICBlbHNlCiAg ICAgICAgZXhwb3J0IF9FX0VYRURFU1RUUkVFXz0iJDEiOwogICAgICAgIGlmIFsgISAtZCAi JHtEfSR7X0VfRVhFREVTVFRSRUVffSIgXTsgdGhlbgogICAgICAgICAgICBpbnN0YWxsIC1k ICIke0R9JHtfRV9FWEVERVNUVFJFRV99IjsKICAgICAgICBmaTsKICAgIGZpCn0KZXhlb3B0 cyAoKSAKeyAKICAgIGV4cG9ydCBFWEVPUFRJT05TPSIkQCI7CiAgICBoYXNxIC1zICR7RVhF T1BUSU9OU30gJiYgZGllICJOZXZlciBjYWxsIGV4ZW9wdHMoKSB3aXRoIC1zIgp9CmZpbHRl cl9pbnZhbGlkX2ZsYWdzICgpIAp7IAogICAgbG9jYWwgZmxhZyBicm9rZW5fZmxhZ3M7CiAg ICBldmFsIGJyb2tlbl9mbGFncz0oJChnZXRfYnJva2VuX2ZsYWdzICQoZ2V0UFJPRyBDQyBn Y2MpIGMgJHtDRkxBR1N9KSk7CiAgICBmb3IgZmxhZyBpbiAiJHticm9rZW5fZmxhZ3NbQF19 IjsKICAgIGRvCiAgICAgICAgZXdhcm4gIkZpbHRlcmluZyBvdXQgaW52YWxpZCBDRkxBRyBc IiR7ZmxhZ31cIiI7CiAgICAgICAgQ0ZMQUdTPSIkKHJlbW92ZV9mbGFnICIke2ZsYWd9IiAk e0NGTEFHU30pIjsKICAgIGRvbmU7CiAgICBldmFsIGJyb2tlbl9mbGFncz0oJChnZXRfYnJv a2VuX2ZsYWdzICQoZ2V0UFJPRyBDWFggZysrKSBjKysgJHtDWFhGTEFHU30pKTsKICAgIGZv ciBmbGFnIGluICIke2Jyb2tlbl9mbGFnc1tAXX0iOwogICAgZG8KICAgICAgICBld2FybiAi RmlsdGVyaW5nIG91dCBpbnZhbGlkIENYWEZMQUcgXCIke2ZsYWd9XCIiOwogICAgICAgIENY WEZMQUdTPSIkKHJlbW92ZV9mbGFnICIke2ZsYWd9IiAke0NYWEZMQUdTfSkiOwogICAgZG9u ZQp9CmZpbHRlcl9yZWFkb25seV92YXJpYWJsZXMgKCkgCnsgCiAgICBsb2NhbCB4IGZpbHRl cmVkX3ZhcnM7CiAgICBsb2NhbCByZWFkb25seV9iYXNoX3ZhcnM9IkRJUlNUQUNLIEVVSUQg RlVOQ05BTUUgR1JPVVBTCgkJUElQRVNUQVRVUyBQUElEIFNIRUxMT1BUUyBVSUQiOwogICAg bG9jYWwgZmlsdGVyZWRfc2FuZGJveF92YXJzPSJTQU5EQk9YX0FDVElWRSBTQU5EQk9YX0JB U0hSQwoJCVNBTkRCT1hfREVCVUdfTE9HIFNBTkRCT1hfRElTQUJMRUQgU0FOREJPWF9MSUIK CQlTQU5EQk9YX0xPRyBTQU5EQk9YX09OIjsKICAgIGZpbHRlcmVkX3ZhcnM9IiR7cmVhZG9u bHlfYmFzaF92YXJzfSAke1JFQURPTkxZX1BPUlRBR0VfVkFSU30KCQlCQVNIXy4qIEhJU1RG SUxFIFBBVEggUE9TSVhMWV9DT1JSRUNUIjsKICAgIGlmIGhhc3EgLS1maWx0ZXItc2FuZGJv eCAkKjsgdGhlbgogICAgICAgIGZpbHRlcmVkX3ZhcnM9IiR7ZmlsdGVyZWRfdmFyc30gU0FO REJPWF8uKiI7CiAgICBlbHNlCiAgICAgICAgZmlsdGVyZWRfdmFycz0iJHtmaWx0ZXJlZF92 YXJzfSAke2ZpbHRlcmVkX3NhbmRib3hfdmFyc30iOwogICAgZmk7CiAgICBpZiBoYXNxIC0t ZmlsdGVyLWZlYXR1cmVzICQqOyB0aGVuCiAgICAgICAgZmlsdGVyZWRfdmFycz0iJHtmaWx0 ZXJlZF92YXJzfSBGRUFUVVJFUyI7CiAgICBmaTsKICAgIGlmICEgaGFzcSAtLWFsbG93LWV4 dHJhLXZhcnMgJCo7IHRoZW4KICAgICAgICBmaWx0ZXJlZF92YXJzPSIKCQkJJHtmaWx0ZXJl ZF92YXJzfQoJCQkke1BPUlRBR0VfU0FWRURfUkVBRE9OTFlfVkFSU30KCQkJJHtQT1JUQUdF X01VVEFCTEVfRklMVEVSRURfVkFSU30KCQkiOwogICAgZmk7CiAgICAiJHtQT1JUQUdFX0JJ Tl9QQVRIfSIvZmlsdGVyLWJhc2gtZW52aXJvbm1lbnQucHkgIiR7ZmlsdGVyZWRfdmFyc30i Cn0KZmluZF9tb2R1bGVfcGFyYW1zICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24g JHtGVU5DTkFNRX0gJCo7CiAgICBsb2NhbCBtYXRjaGVkX29mZnNldD0wIG1hdGNoZWRfb3B0 cz0wIHRlc3Q9IiR7QH0iIHRlbXBfdmFyIHJlc3VsdDsKICAgIGxvY2FsIGk9MCB5PTAgej0w OwogICAgZm9yICgoaT0wOyBpPD0keyN0ZXN0fTsgaSsrKSkKICAgIGRvCiAgICAgICAgY2Fz ZSAke3Rlc3Q6JHtpfToxfSBpbiAKICAgICAgICAgICAgXCgpCiAgICAgICAgICAgICAgICBt YXRjaGVkX29mZnNldFswXT0ke2l9CiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIFw6KQog ICAgICAgICAgICAgICAgbWF0Y2hlZF9vcHRzPSQoKCR7bWF0Y2hlZF9vcHRzfSArIDEpKTsK ICAgICAgICAgICAgICAgIG1hdGNoZWRfb2Zmc2V0WyR7bWF0Y2hlZF9vcHRzfV09IiR7aX0i CiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIFwpKQogICAgICAgICAgICAgICAgbWF0Y2hl ZF9vcHRzPSQoKCR7bWF0Y2hlZF9vcHRzfSArIDEpKTsKICAgICAgICAgICAgICAgIG1hdGNo ZWRfb2Zmc2V0WyR7bWF0Y2hlZF9vcHRzfV09IiR7aX0iCiAgICAgICAgICAgIDs7CiAgICAg ICAgZXNhYzsKICAgIGRvbmU7CiAgICBmb3IgKChpPTA7IGk8PSR7bWF0Y2hlZF9vcHRzfTsg aSsrKSkKICAgIGRvCiAgICAgICAgY2FzZSAke2l9IGluIAogICAgICAgICAgICAwKQogICAg ICAgICAgICAgICAgdGVtcHZhcj0ke3Rlc3Q6MDoke21hdGNoZWRfb2Zmc2V0WzBdfX0KICAg ICAgICAgICAgOzsKICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgIHk9JCgoJHttYXRj aGVkX29mZnNldFskKCgke2l9IC0gMSkpXX0gKyAxKSk7CiAgICAgICAgICAgICAgICB6PSQo KCR7bWF0Y2hlZF9vZmZzZXRbJHtpfV19IC0gJHttYXRjaGVkX29mZnNldFskKCgke2l9IC0g MSkpXX0pKTsKICAgICAgICAgICAgICAgIHo9JCgoJHt6fSAtIDEpKTsKICAgICAgICAgICAg ICAgIHRlbXB2YXI9JHt0ZXN0OiR7eX06JHt6fX0KICAgICAgICAgICAgOzsKICAgICAgICBl c2FjOwogICAgICAgIGNhc2UgJHtpfSBpbiAKICAgICAgICAgICAgMCkKICAgICAgICAgICAg ICAgIHJlc3VsdD0iJHtyZXN1bHR9IG1vZHVsZW5hbWU6JHt0ZW1wdmFyfSIKICAgICAgICAg ICAgOzsKICAgICAgICAgICAgMSkKICAgICAgICAgICAgICAgIHJlc3VsdD0iJHtyZXN1bHR9 IGxpYmRpcjoke3RlbXB2YXJ9IgogICAgICAgICAgICA7OwogICAgICAgICAgICAyKQogICAg ICAgICAgICAgICAgcmVzdWx0PSIke3Jlc3VsdH0gc3JjZGlyOiR7dGVtcHZhcn0iCiAgICAg ICAgICAgIDs7CiAgICAgICAgICAgIDMpCiAgICAgICAgICAgICAgICByZXN1bHQ9IiR7cmVz dWx0fSBvYmpkaXI6JHt0ZW1wdmFyfSIKICAgICAgICAgICAgOzsKICAgICAgICBlc2FjOwog ICAgZG9uZTsKICAgIGVjaG8gJHtyZXN1bHR9Cn0KZmluZF91bnBhY2thYmxlX2ZpbGUgKCkg CnsgCiAgICBsb2NhbCBzcmM9JDE7CiAgICBpZiBbWyAteiAke3NyY30gXV07IHRoZW4KICAg ICAgICBzcmM9JHtESVNURElSfS8ke0F9OwogICAgZWxzZQogICAgICAgIGlmIFtbIC1lICR7 RElTVERJUn0vJHtzcmN9IF1dOyB0aGVuCiAgICAgICAgICAgIHNyYz0ke0RJU1RESVJ9LyR7 c3JjfTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGlmIFtbIC1lICR7UFdEfS8ke3NyY30g XV07IHRoZW4KICAgICAgICAgICAgICAgIHNyYz0ke1BXRH0vJHtzcmN9OwogICAgICAgICAg ICBlbHNlCiAgICAgICAgICAgICAgICBpZiBbWyAtZSAke3NyY30gXV07IHRoZW4KICAgICAg ICAgICAgICAgICAgICBzcmM9JHtzcmN9OwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAg ICAgIGZpOwogICAgICAgIGZpOwogICAgZmk7CiAgICBbWyAhIC1lICR7c3JjfSBdXSAmJiBy ZXR1cm4gMTsKICAgIGVjaG8gIiR7c3JjfSIKfQpnY2MtZnVsbHZlcnNpb24gKCkgCnsgCiAg ICAkKHRjLWdldENDICIkQCIpIC1kdW1wdmVyc2lvbgp9CmdjYy1tYWpvci12ZXJzaW9uICgp IAp7IAogICAgZ2NjLXZlcnNpb24gIiRAIiB8IGN1dCAtZjEgLWQuCn0KZ2NjLW1pY3JvLXZl cnNpb24gKCkgCnsgCiAgICBnY2MtZnVsbHZlcnNpb24gIiRAIiB8IGN1dCAtZjMgLWQuIHwg Y3V0IC1mMSAtZC0KfQpnY2MtbWlub3ItdmVyc2lvbiAoKSAKeyAKICAgIGdjYy12ZXJzaW9u ICIkQCIgfCBjdXQgLWYyIC1kLgp9CmdjYy1zcGVjcy1kaXJlY3RpdmUgKCkgCnsgCiAgICBs b2NhbCBkaXJlY3RpdmUgc3ViZG5hbWUgc3ViZGlyZWN0aXZlOwogICAgZGlyZWN0aXZlPSIk KF9nY2Mtc3BlY3MtZGlyZWN0aXZlX3JhdyAkMSkiOwogICAgd2hpbGUgW1sgJHtkaXJlY3Rp dmV9ID09IColXCgqXCkqIF1dOyBkbwogICAgICAgIHN1YmRuYW1lPSR7ZGlyZWN0aXZlLyol XCh9OwogICAgICAgIHN1YmRuYW1lPSR7c3ViZG5hbWUvXCkqfTsKICAgICAgICBzdWJkaXJl Y3RpdmU9IiQoX2djYy1zcGVjcy1kaXJlY3RpdmVfcmF3ICR7c3ViZG5hbWV9KSI7CiAgICAg ICAgZGlyZWN0aXZlPSIke2RpcmVjdGl2ZS8vXCUoJHtzdWJkbmFtZX0pLyR7c3ViZGlyZWN0 aXZlfX0iOwogICAgZG9uZTsKICAgIGVjaG8gIiR7ZGlyZWN0aXZlfSI7CiAgICByZXR1cm4g MAp9CmdjYy1zcGVjcy1ub3N0cmljdCAoKSAKeyAKICAgIGxvY2FsIGRpcmVjdGl2ZTsKICAg IGRpcmVjdGl2ZT0kKGdjYy1zcGVjcy1kaXJlY3RpdmUgY2MxKTsKICAgIHJldHVybiAkKFtb ICIke2RpcmVjdGl2ZS9ceyFmc3RyaWN0LW92ZXJmbG93On0iICE9ICIke2RpcmVjdGl2ZX0i IF1dKQp9CmdjYy1zcGVjcy1ub3cgKCkgCnsgCiAgICBsb2NhbCBkaXJlY3RpdmU7CiAgICBk aXJlY3RpdmU9JChnY2Mtc3BlY3MtZGlyZWN0aXZlIGxpbmtfY29tbWFuZCk7CiAgICByZXR1 cm4gJChbWyAiJHtkaXJlY3RpdmUvXHshbm9ub3c6fSIgIT0gIiR7ZGlyZWN0aXZlfSIgXV0p Cn0KZ2NjLXNwZWNzLXBpZSAoKSAKeyAKICAgIGxvY2FsIGRpcmVjdGl2ZTsKICAgIGRpcmVj dGl2ZT0kKGdjYy1zcGVjcy1kaXJlY3RpdmUgY2MxKTsKICAgIHJldHVybiAkKFtbICIke2Rp cmVjdGl2ZS9ceyFub3BpZTp9IiAhPSAiJHtkaXJlY3RpdmV9IiBdXSkKfQpnY2Mtc3BlY3Mt cmVscm8gKCkgCnsgCiAgICBsb2NhbCBkaXJlY3RpdmU7CiAgICBkaXJlY3RpdmU9JChnY2Mt c3BlY3MtZGlyZWN0aXZlIGxpbmtfY29tbWFuZCk7CiAgICByZXR1cm4gJChbWyAiJHtkaXJl Y3RpdmUvXHshbm9yZWxybzp9IiAhPSAiJHtkaXJlY3RpdmV9IiBdXSkKfQpnY2Mtc3BlY3Mt c3NwICgpIAp7IAogICAgbG9jYWwgZGlyZWN0aXZlOwogICAgZGlyZWN0aXZlPSQoZ2NjLXNw ZWNzLWRpcmVjdGl2ZSBjYzEpOwogICAgcmV0dXJuICQoW1sgIiR7ZGlyZWN0aXZlL1x7IWZu by1zdGFjay1wcm90ZWN0b3I6fSIgIT0gIiR7ZGlyZWN0aXZlfSIgXV0pCn0KZ2NjLXNwZWNz LXNzcC10by1hbGwgKCkgCnsgCiAgICBsb2NhbCBkaXJlY3RpdmU7CiAgICBkaXJlY3RpdmU9 JChnY2Mtc3BlY3MtZGlyZWN0aXZlIGNjMSk7CiAgICByZXR1cm4gJChbWyAiJHtkaXJlY3Rp dmUvXHshZm5vLXN0YWNrLXByb3RlY3Rvci1hbGw6fSIgIT0gIiR7ZGlyZWN0aXZlfSIgXV0p Cn0KZ2NjLXZlcnNpb24gKCkgCnsgCiAgICBnY2MtZnVsbHZlcnNpb24gIiRAIiB8IGN1dCAt ZjEsMiAtZC4KfQpnZW5fdXNyX2xkc2NyaXB0ICgpIAp7IAogICAgbG9jYWwgbGliIGxpYmRp cj0kKGdldF9saWJkaXIpIG91dHB1dF9mb3JtYXQ9IiIgYXV0bz1mYWxzZSBzdWZmaXg9JChn ZXRfbGlibmFtZSk7CiAgICBbWyAteiAke0VEK3NldH0gXV0gJiYgbG9jYWwgRUQ9JHtEJS99 JHtFUFJFRklYfS87CiAgICB0Yy1pcy1zdGF0aWMtb25seSAmJiByZXR1cm47CiAgICBkb2Rp ciAvdXNyLyR7bGliZGlyfTsKICAgIGlmIFtbICQxID09ICItYSIgXV07IHRoZW4KICAgICAg ICBhdXRvPXRydWU7CiAgICAgICAgc2hpZnQ7CiAgICAgICAgZG9kaXIgLyR7bGliZGlyfTsK ICAgIGZpOwogICAgb3V0cHV0X2Zvcm1hdD0kKCQodGMtZ2V0Q0MpICR7Q0ZMQUdTfSAke0xE RkxBR1N9IC1XbCwtLXZlcmJvc2UgMj4mMSB8IHNlZCAtbiAncy9eT1VUUFVUX0ZPUk1BVCgi XChbXiJdKlwpIiwuKi9cMS9wJyk7CiAgICBbWyAtbiAke291dHB1dF9mb3JtYXR9IF1dICYm IG91dHB1dF9mb3JtYXQ9Ik9VVFBVVF9GT1JNQVQgKCAke291dHB1dF9mb3JtYXR9ICkiOwog ICAgZm9yIGxpYiBpbiAiJEAiOwogICAgZG8KICAgICAgICBsb2NhbCB0bGliOwogICAgICAg IGlmICR7YXV0b307IHRoZW4KICAgICAgICAgICAgbGliPSJsaWIke2xpYn0ke3N1ZmZpeH0i OwogICAgICAgIGVsc2UKICAgICAgICAgICAgW1sgLXIgJHtFRH0vJHtsaWJkaXJ9LyR7bGli fSBdXSB8fCBjb250aW51ZTsKICAgICAgICBmaTsKICAgICAgICBjYXNlICR7Q1RBUkdFVDot JHtDSE9TVH19IGluIAogICAgICAgICAgICAqLWRhcndpbiopCiAgICAgICAgICAgICAgICBp ZiAke2F1dG99OyB0aGVuCiAgICAgICAgICAgICAgICAgICAgdGxpYj0kKHNjYW5tYWNobyAt cUYnJVMjRicgIiR7RUR9Ii91c3IvJHtsaWJkaXJ9LyR7bGlifSk7CiAgICAgICAgICAgICAg ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgdGxpYj0kKHNjYW5tYWNobyAtcUYnJVMjRicg IiR7RUR9Ii8ke2xpYmRpcn0vJHtsaWJ9KTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAg ICAgICAgICAgW1sgLXogJHt0bGlifSBdXSAmJiBkaWUgInVuYWJsZSB0byByZWFkIGluc3Rh bGxfbmFtZSBmcm9tICR7bGlifSI7CiAgICAgICAgICAgICAgICB0bGliPSR7dGxpYiMjKi99 OwogICAgICAgICAgICAgICAgaWYgJHthdXRvfTsgdGhlbgogICAgICAgICAgICAgICAgICAg IG12ICIke0VEfSIvdXNyLyR7bGliZGlyfS8ke2xpYiUke3N1ZmZpeH19Lioke3N1ZmZpeCMu fSAiJHtFRH0iLyR7bGliZGlyfS8gfHwgZGllOwogICAgICAgICAgICAgICAgICAgIHJtIC1m ICIke0VEfSIvJHtsaWJkaXJ9LyR7bGlifTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAg ICAgICAgICAgaW5zdGFsbF9uYW1lX3Rvb2wgLWlkICIke0VQUkVGSVh9Ii8ke2xpYmRpcn0v JHt0bGlifSAiJHtFRH0iLyR7bGliZGlyfS8ke3RsaWJ9OwogICAgICAgICAgICAgICAgcHVz aGQgIiR7RUR9L3Vzci8ke2xpYmRpcn0iID4gL2Rldi9udWxsOwogICAgICAgICAgICAgICAg bG4gLXNuZiAiLi4vLi4vJHtsaWJkaXJ9LyR7dGxpYn0iICIke2xpYn0iOwogICAgICAgICAg ICAgICAgcG9wZCA+IC9kZXYvbnVsbAogICAgICAgICAgICA7OwogICAgICAgICAgICAqLWFp eCogfCAqLWlyaXgqIHwgKi1ocHV4KiB8ICotaW50ZXJpeCogfCAqLXdpbm50KikKICAgICAg ICAgICAgICAgIGlmICR7YXV0b307IHRoZW4KICAgICAgICAgICAgICAgICAgICBtdiAiJHtF RH0iL3Vzci8ke2xpYmRpcn0vJHtsaWJ9KiAiJHtFRH0iLyR7bGliZGlyfS8gfHwgZGllOwog ICAgICAgICAgICAgICAgICAgIHRsaWI9JChyZWFkbGluayAiJHtFRH0iLyR7bGliZGlyfS8k e2xpYn0pOwogICAgICAgICAgICAgICAgICAgIHRsaWI9JHt0bGliIyMqL307CiAgICAgICAg ICAgICAgICAgICAgaWYgW1sgLXogJHt0bGlifSBdXTsgdGhlbgogICAgICAgICAgICAgICAg ICAgICAgICB0bGliPSR7bGlifTsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg ICAgICAgICAgICAgICAgIHJtIC1mICIke0VEfSIvJHtsaWJkaXJ9LyR7bGlifTsKICAgICAg ICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg ICAgICB0bGliPSR7bGlifTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAg cHVzaGQgIiR7RUR9L3Vzci8ke2xpYmRpcn0iID4gL2Rldi9udWxsOwogICAgICAgICAgICAg ICAgbG4gLXNuZiAiLi4vLi4vJHtsaWJkaXJ9LyR7dGxpYn0iICIke2xpYn0iOwogICAgICAg ICAgICAgICAgcG9wZCA+IC9kZXYvbnVsbAogICAgICAgICAgICA7OwogICAgICAgICAgICAq KQogICAgICAgICAgICAgICAgaWYgJHthdXRvfTsgdGhlbgogICAgICAgICAgICAgICAgICAg IHRsaWI9JChzY2FuZWxmIC1xRiclUyNGJyAiJHtFRH0iL3Vzci8ke2xpYmRpcn0vJHtsaWJ9 KTsKICAgICAgICAgICAgICAgICAgICBbWyAteiAke3RsaWJ9IF1dICYmIGRpZSAidW5hYmxl IHRvIHJlYWQgU09OQU1FIGZyb20gJHtsaWJ9IjsKICAgICAgICAgICAgICAgICAgICBtdiAi JHtFRH0iL3Vzci8ke2xpYmRpcn0vJHtsaWJ9KiAiJHtFRH0iLyR7bGliZGlyfS8gfHwgZGll OwogICAgICAgICAgICAgICAgICAgIGlmIFtbICR7dGxpYn0gIT0gJHtsaWJ9KiBdXTsgdGhl bgogICAgICAgICAgICAgICAgICAgICAgICBtdiAiJHtFRH0iL3Vzci8ke2xpYmRpcn0vJHt0 bGlifSogIiR7RUR9Ii8ke2xpYmRpcn0vIHx8IGRpZTsKICAgICAgICAgICAgICAgICAgICBm aTsKICAgICAgICAgICAgICAgICAgICBybSAtZiAiJHtFRH0iLyR7bGliZGlyfS8ke2xpYn07 CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgdGxpYj0ke2xpYn07 CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgICAgIGNhdCA+ICIke0VEfS91c3Iv JHtsaWJkaXJ9LyR7bGlifSIgIDw8LUVORF9MRFNDUklQVAovKiBHTlUgbGQgc2NyaXB0CiAg IFNpbmNlIEdlbnRvbyBoYXMgY3JpdGljYWwgZHluYW1pYyBsaWJyYXJpZXMgaW4gL2xpYiwg YW5kIHRoZSBzdGF0aWMgdmVyc2lvbnMKICAgaW4gL3Vzci9saWIsIHdlIG5lZWQgdG8gaGF2 ZSBhICJmYWtlIiBkeW5hbWljIGxpYiBpbiAvdXNyL2xpYiwgb3RoZXJ3aXNlIHdlCiAgIHJ1 biBpbnRvIGxpbmtpbmcgcHJvYmxlbXMuICBUaGlzICJmYWtlIiBkeW5hbWljIGxpYiBpcyBh IGxpbmtlciBzY3JpcHQgdGhhdAogICByZWRpcmVjdHMgdGhlIGxpbmtlciB0byB0aGUgcmVh bCBsaWIuICBBbmQgeWVzLCB0aGlzIHdvcmtzIGluIHRoZSBjcm9zcy0KICAgY29tcGlsaW5n IHNjZW5hcmlvIGFzIHRoZSBzeXNyb290LWVkIGxpbmtlciB3aWxsIHByZXBlbmQgdGhlIHJl YWwgcGF0aC4KCiAgIFNlZSBidWcgaHR0cDovL2J1Z3MuZ2VudG9vLm9yZy80NDExIGZvciBt b3JlIGluZm8uCiAqLwoke291dHB1dF9mb3JtYXR9CkdST1VQICggJHtFUFJFRklYfS8ke2xp YmRpcn0vJHt0bGlifSApCkVORF9MRFNDUklQVAoKICAgICAgICAgICAgOzsKICAgICAgICBl c2FjCiAgICAgICAgZnBlcm1zIGEreCAiL3Vzci8ke2xpYmRpcn0vJHtsaWJ9IiB8fCBkaWUg ImNvdWxkIG5vdCBjaGFuZ2UgcGVybXMgb24gJHtsaWJ9IjsKICAgIGRvbmUKfQpnZW5lcmF0 ZV9tb2R1bGVzZCAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9 ICQqOwogICAgbG9jYWwgY3Vycm1fcGF0aCBjdXJybSBjdXJybV90IHQgbXlJRlMgbXlWQVI7 CiAgICBsb2NhbCBtb2R1bGVfZG9jcyBtb2R1bGVfZW5hYmxlZCBtb2R1bGVfYWxpYXNlcyBt b2R1bGVfYWRkaXRpb25zIG1vZHVsZV9leGFtcGxlcyBtb2R1bGVfbW9kaW5mbyBtb2R1bGVf b3B0czsKICAgIGZvciBjdXJybV9wYXRoIGluICR7QH07CiAgICBkbwogICAgICAgIGN1cnJt PSR7Y3Vycm1fcGF0aC8vKlwvfTsKICAgICAgICBjdXJybT0kKGVjaG8gJHtjdXJybX0gfCB0 ciAnWzpsb3dlcjpdJyAnWzp1cHBlcjpdJyk7CiAgICAgICAgY3Vycm1fdD0ke2N1cnJtfTsK ICAgICAgICB3aGlsZSBbWyAteiAke2N1cnJtX3QvLyotKn0gXV07IGRvCiAgICAgICAgICAg IGN1cnJtX3Q9JHtjdXJybV90Ly0vX307CiAgICAgICAgZG9uZTsKICAgICAgICBtb2R1bGVf ZG9jcz0iJChldmFsIGVjaG8gXCR7TU9EVUxFU0RfJHtjdXJybV90fV9ET0NTfSkiOwogICAg ICAgIG1vZHVsZV9lbmFibGVkPSIkKGV2YWwgZWNobyBcJHtNT0RVTEVTRF8ke2N1cnJtX3R9 X0VOQUJMRUR9KSI7CiAgICAgICAgbW9kdWxlX2FsaWFzZXM9IiQoZXZhbCBlY2hvIFwkeyNN T0RVTEVTRF8ke2N1cnJtX3R9X0FMSUFTRVNbKl19KSI7CiAgICAgICAgbW9kdWxlX2FkZGl0 aW9ucz0iJChldmFsIGVjaG8gXCR7I01PRFVMRVNEXyR7Y3Vycm1fdH1fQURESVRJT05TWypd fSkiOwogICAgICAgIG1vZHVsZV9leGFtcGxlcz0iJChldmFsIGVjaG8gXCR7I01PRFVMRVNE XyR7Y3Vycm1fdH1fRVhBTVBMRVNbKl19KSI7CiAgICAgICAgW1sgJHttb2R1bGVfYWxpYXNl c30gLWVxIDAgXV0gJiYgdW5zZXQgbW9kdWxlX2FsaWFzZXM7CiAgICAgICAgW1sgJHttb2R1 bGVfYWRkaXRpb25zfSAtZXEgMCBdXSAmJiB1bnNldCBtb2R1bGVfYWRkaXRpb25zOwogICAg ICAgIFtbICR7bW9kdWxlX2V4YW1wbGVzfSAtZXEgMCBdXSAmJiB1bnNldCBtb2R1bGVfZXhh bXBsZXM7CiAgICAgICAgW1sgJHttb2R1bGVfZW5hYmxlZH0gPT0gbm8gXV0gJiYgcmV0dXJu IDA7CiAgICAgICAgZm9yIHQgaW4gJHshbW9kdWxlXyp9OwogICAgICAgIGRvCiAgICAgICAg ICAgIFtbIC16ICR7IXR9IF1dICYmIHVuc2V0ICR7dH07CiAgICAgICAgZG9uZTsKICAgICAg ICBbWyAteiAkeyFtb2R1bGVfKn0gXV0gJiYgcmV0dXJuIDA7CiAgICAgICAgbW9kdWxlX21v ZGluZm89IiQobW9kaW5mbyAtcCAke2N1cnJtX3BhdGh9LiR7S1ZfT0JKfSkiOwogICAgICAg IG1vZHVsZV9jb25maWc9IiR7VH0vbW9kdWxlc2QtJHtjdXJybX0iOwogICAgICAgIGViZWdp biAiUHJlcGFyaW5nIGZpbGUgZm9yIG1vZHVsZXMuZCI7CiAgICAgICAgZWNobyAiIyBtb2R1 bGVzLmQgY29uZmlndXJhdGlvbiBmaWxlIGZvciAke2N1cnJtfSIgPj4gJHttb2R1bGVfY29u ZmlnfTsKICAgICAgICBbWyAtbiAke21vZHVsZV9kb2NzfSBdXSAmJiBlY2hvICIjIEZvciBt b3JlIGluZm9ybWF0aW9uIHBsZWFzZSByZWFkOiIgPj4gJHttb2R1bGVfY29uZmlnfTsKICAg ICAgICBmb3IgdCBpbiAke21vZHVsZV9kb2NzfTsKICAgICAgICBkbwogICAgICAgICAgICBl Y2hvICIjICAgICR7dC8vKlwvfSIgPj4gJHttb2R1bGVfY29uZmlnfTsKICAgICAgICBkb25l OwogICAgICAgIGVjaG8gPj4gJHttb2R1bGVfY29uZmlnfTsKICAgICAgICBpZiBbWyAke21v ZHVsZV9hbGlhc2VzfSAtZ3QgMCBdXTsgdGhlbgogICAgICAgICAgICBlY2hvICIjIEludGVy bmFsIEFsaWFzZXMgLSBEbyBub3QgZWRpdCIgPj4gJHttb2R1bGVfY29uZmlnfTsKICAgICAg ICAgICAgZWNobyAiIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iID4+ICR7bW9k dWxlX2NvbmZpZ307CiAgICAgICAgICAgIGZvciAoKHQ9MDsgdDwke21vZHVsZV9hbGlhc2Vz fTsgdCsrKSkKICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgIGVjaG8gImFsaWFzICQo ZXZhbCBlY2hvIFwke01PRFVMRVNEXyR7Y3Vycm19X0FMSUFTRVNbJHRdfSkiID4+ICR7bW9k dWxlX2NvbmZpZ307CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgIGVjaG8gJycgPj4g JHttb2R1bGVfY29uZmlnfTsKICAgICAgICBmaTsKICAgICAgICBpZiBbWyAtbiAke21vZHVs ZV9tb2RpbmZvfSBdXTsgdGhlbgogICAgICAgICAgICBlY2hvID4+ICR7bW9kdWxlX2NvbmZp Z307CiAgICAgICAgICAgIGVjaG8gIiMgQ29uZmlndXJhYmxlIG1vZHVsZSBwYXJhbWV0ZXJz IiA+PiAke21vZHVsZV9jb25maWd9OwogICAgICAgICAgICBlY2hvICIjIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSIgPj4gJHttb2R1bGVfY29uZmlnfTsKICAgICAgICAgICAg bXlJRlM9IiR7SUZTfSI7CiAgICAgICAgICAgIElGUz0iJChlY2hvIC1lbiAiXG5cYiIpIjsK ICAgICAgICAgICAgZm9yIHQgaW4gJHttb2R1bGVfbW9kaW5mb307CiAgICAgICAgICAgIGRv CiAgICAgICAgICAgICAgICBteVZBUj0iJChlY2hvICR7dCMqOn0gfCBncmVwIC1lICIgWzAt OV1bID1dIiB8IHNlZCAiczouKlwoWzAxXVs9IF1cKS4qOlwxOiIpIjsKICAgICAgICAgICAg ICAgIGlmIFtbIC1uICR7bXlWQVJ9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgbW9k dWxlX29wdHM9IiR7bW9kdWxlX29wdHN9ICR7dCUlOip9OiR7bXlWQVJ9IjsKICAgICAgICAg ICAgICAgIGZpOwogICAgICAgICAgICAgICAgZWNobyAtZSAiIyAke3QlJToqfTpcdCR7dCMq On0iID4+ICR7bW9kdWxlX2NvbmZpZ307CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAg IElGUz0iJHtteUlGU30iOwogICAgICAgICAgICBlY2hvICcnID4+ICR7bW9kdWxlX2NvbmZp Z307CiAgICAgICAgZmk7CiAgICAgICAgaWYgW1sgJChldmFsIGVjaG8gXCR7TU9EVUxFU0Rf JHtjdXJybX1fQUxJQVNFU1swXX0pID09IGd1ZXNzIF1dOyB0aGVuCiAgICAgICAgICAgIGlm IFtbIC1uICR7bW9kdWxlX29wdHN9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvICIj IEZvciBFeGFtcGxlLi4uIiA+PiAke21vZHVsZV9jb25maWd9OwogICAgICAgICAgICAgICAg ZWNobyAiIyAtLS0tLS0tLS0tLS0tLSIgPj4gJHttb2R1bGVfY29uZmlnfTsKICAgICAgICAg ICAgICAgIGZvciB0IGluICR7bW9kdWxlX29wdHN9OwogICAgICAgICAgICAgICAgZG8KICAg ICAgICAgICAgICAgICAgICBlY2hvICIjIG9wdGlvbnMgJHtjdXJybX0gJHt0Ly86Kn09JHt0 Ly8qOn0iID4+ICR7bW9kdWxlX2NvbmZpZ307CiAgICAgICAgICAgICAgICBkb25lOwogICAg ICAgICAgICAgICAgZWNobyAnJyA+PiAke21vZHVsZV9jb25maWd9OwogICAgICAgICAgICBm aTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGlmIFtbICR7bW9kdWxlX2V4YW1wbGVzfSAt Z3QgMCBdXTsgdGhlbgogICAgICAgICAgICAgICAgZWNobyAiIyBGb3IgRXhhbXBsZS4uLiIg Pj4gJHttb2R1bGVfY29uZmlnfTsKICAgICAgICAgICAgICAgIGVjaG8gIiMgLS0tLS0tLS0t LS0tLS0iID4+ICR7bW9kdWxlX2NvbmZpZ307CiAgICAgICAgICAgICAgICBmb3IgKCh0PTA7 IHQ8JHttb2R1bGVfZXhhbXBsZXN9OyB0KyspKQogICAgICAgICAgICAgICAgZG8KICAgICAg ICAgICAgICAgICAgICBlY2hvICJvcHRpb25zICQoZXZhbCBlY2hvIFwke01PRFVMRVNEXyR7 Y3Vycm19X0VYQU1QTEVTWyR0XX0pIiA+PiAke21vZHVsZV9jb25maWd9OwogICAgICAgICAg ICAgICAgZG9uZTsKICAgICAgICAgICAgICAgIGVjaG8gJycgPj4gJHttb2R1bGVfY29uZmln fTsKICAgICAgICAgICAgZmk7CiAgICAgICAgZmk7CiAgICAgICAgaWYgW1sgJHttb2R1bGVf YWRkaXRpb25zfSAtZ3QgMCBdXTsgdGhlbgogICAgICAgICAgICBmb3IgKCh0PTA7IHQ8JHtt b2R1bGVfYWRkaXRpb25zfTsgdCsrKSkKICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAg IGVjaG8gIiQoZXZhbCBlY2hvIFwke01PRFVMRVNEXyR7Y3Vycm19X0FERElUSU9OU1skdF19 KSIgPj4gJHttb2R1bGVfY29uZmlnfTsKICAgICAgICAgICAgZG9uZTsKICAgICAgICAgICAg ZWNobyAnJyA+PiAke21vZHVsZV9jb25maWd9OwogICAgICAgIGZpOwogICAgICAgIGlmIGtl cm5lbF9pcyBnZSAyIDY7IHRoZW4KICAgICAgICAgICAgaW5zaW50byAvZXRjL21vZHByb2Jl LmQ7CiAgICAgICAgZWxzZQogICAgICAgICAgICBpbnNpbnRvIC9ldGMvbW9kdWxlcy5kOwog ICAgICAgIGZpOwogICAgICAgIG5ld2lucyAke21vZHVsZV9jb25maWd9ICR7Y3Vycm1fcGF0 aC8vKlwvfTsKICAgICAgICBbWyAtbiAke21vZHVsZV9kb2NzfSBdXSAmJiBkb2RvYyAke21v ZHVsZV9kb2NzfTsKICAgIGRvbmU7CiAgICBlZW5kIDA7CiAgICByZXR1cm4gMAp9CmdldC1L RVJORUxfQ0MgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAk KjsKICAgIGlmIFtbIC1uICR7S0VSTkVMX0NDfSBdXTsgdGhlbgogICAgICAgIGVjaG8gIiR7 S0VSTkVMX0NDfSI7CiAgICAgICAgcmV0dXJuOwogICAgZmk7CiAgICBsb2NhbCBrZXJuZWxf Y2M7CiAgICBpZiBbIC1uICIke0tFUk5FTF9BQkl9IiBdOyB0aGVuCiAgICAgICAga2VybmVs X2NjPSIkKHRjLWdldENDICQoQUJJPSR7S0VSTkVMX0FCSX0gZ2V0X2FiaV9DSE9TVCkpIjsK ICAgIGVsc2UKICAgICAgICBrZXJuZWxfY2M9JCh0Yy1nZXRDQyk7CiAgICBmaTsKICAgIGVj aG8gIiR7a2VybmVsX2NjfSIKfQpnZXRQUk9HICgpIAp7IAogICAgbG9jYWwgdmFyPSQxIHBy b2c9JDI7CiAgICBpZiBbWyAtbiAkeyF2YXJ9IF1dOyB0aGVuCiAgICAgICAgZWNobyAiJHsh dmFyfSI7CiAgICAgICAgcmV0dXJuIDA7CiAgICBmaTsKICAgIGxvY2FsIHNlYXJjaD07CiAg ICBbWyAtbiAkMyBdXSAmJiBzZWFyY2g9JCh0eXBlIC1wICIkMy0ke3Byb2d9Iik7CiAgICBb WyAteiAke3NlYXJjaH0gJiYgLW4gJHtDSE9TVH0gXV0gJiYgc2VhcmNoPSQodHlwZSAtcCAi JHtDSE9TVH0tJHtwcm9nfSIpOwogICAgW1sgLW4gJHtzZWFyY2h9IF1dICYmIHByb2c9JHtz ZWFyY2gjIyovfTsKICAgIGV4cG9ydCAke3Zhcn09JHtwcm9nfTsKICAgIGVjaG8gIiR7IXZh cn0iCn0KZ2V0X0tWICgpIAp7IAogICAgW1sgLXogJHtfUkNfR0VUX0tWX0NBQ0hFfSBdXSAm JiBfUkNfR0VUX0tWX0NBQ0hFPSQodW5hbWUgLXIpOwogICAgZWNobyAkKEtWX3RvX2ludCAi JHtfUkNfR0VUX0tWX0NBQ0hFfSIpOwogICAgcmV0dXJuICQ/Cn0KZ2V0X2FiaV9BU0ZMQUdT ICgpIAp7IAogICAgZ2V0X2FiaV92YXIgQVNGTEFHUyAiJEAiCn0KZ2V0X2FiaV9DREVGSU5F ICgpIAp7IAogICAgZ2V0X2FiaV92YXIgQ0RFRklORSAiJEAiCn0KZ2V0X2FiaV9DRkxBR1Mg KCkgCnsgCiAgICBnZXRfYWJpX3ZhciBDRkxBR1MgIiRAIgp9CmdldF9hYmlfQ0hPU1QgKCkg CnsgCiAgICBnZXRfYWJpX3ZhciBDSE9TVCAiJEAiCn0KZ2V0X2FiaV9DVEFSR0VUICgpIAp7 IAogICAgZ2V0X2FiaV92YXIgQ1RBUkdFVCAiJEAiCn0KZ2V0X2FiaV9GQUtFX1RBUkdFVFMg KCkgCnsgCiAgICBnZXRfYWJpX3ZhciBGQUtFX1RBUkdFVFMgIiRAIgp9CmdldF9hYmlfTERG TEFHUyAoKSAKeyAKICAgIGdldF9hYmlfdmFyIExERkxBR1MgIiRAIgp9CmdldF9hYmlfTElC RElSICgpIAp7IAogICAgZ2V0X2FiaV92YXIgTElCRElSICIkQCIKfQpnZXRfYWJpX3ZhciAo KSAKeyAKICAgIGxvY2FsIGZsYWc9JDE7CiAgICBsb2NhbCBhYmk7CiAgICBpZiBbICQjIC1n dCAxIF07IHRoZW4KICAgICAgICBhYmk9JHsyfTsKICAgIGVsc2UKICAgICAgICBpZiBbIC1u ICIke0FCSX0iIF07IHRoZW4KICAgICAgICAgICAgYWJpPSR7QUJJfTsKICAgICAgICBlbHNl CiAgICAgICAgICAgIGlmIFsgLW4gIiR7REVGQVVMVF9BQkl9IiBdOyB0aGVuCiAgICAgICAg ICAgICAgICBhYmk9JHtERUZBVUxUX0FCSX07CiAgICAgICAgICAgIGVsc2UKICAgICAgICAg ICAgICAgIGFiaT0iZGVmYXVsdCI7CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAg Zmk7CiAgICBsb2NhbCB2YXI9IiR7ZmxhZ31fJHthYml9IjsKICAgIGVjaG8gJHshdmFyfQp9 CmdldF9hZnRlcl9tYWpvcl92ZXJzaW9uICgpIAp7IAogICAgX192ZXJzaW9uYXRvcl9zaG9w dF90b2dnbGUgb247CiAgICBlY2hvICQoZ2V0X3ZlcnNpb25fY29tcG9uZW50X3JhbmdlIDIt ICIkezE6LSR7UFZ9fSIgKTsKICAgIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9mZgp9 CmdldF9hbGxfYWJpcyAoKSAKeyAKICAgIGxvY2FsIG9yZGVyPSIiOwogICAgaWYgW1sgLXog JHtNVUxUSUxJQl9BQklTfSBdXTsgdGhlbgogICAgICAgIGVjaG8gImRlZmF1bHQiOwogICAg ICAgIHJldHVybiAwOwogICAgZmk7CiAgICBmb3IgeCBpbiAke01VTFRJTElCX0FCSVN9Owog ICAgZG8KICAgICAgICBpZiBbWyAke3h9ICE9ICR7REVGQVVMVF9BQkl9IF1dOyB0aGVuCiAg ICAgICAgICAgIG9yZGVyPSIke29yZGVyOiske29yZGVyfSB9JHt4fSI7CiAgICAgICAgZmk7 CiAgICBkb25lOwogICAgb3JkZXI9IiR7b3JkZXI6KyR7b3JkZXJ9IH0ke0RFRkFVTFRfQUJJ fSI7CiAgICBlY2hvICR7b3JkZXJ9OwogICAgcmV0dXJuIDAKfQpnZXRfYWxsX2xpYmRpcnMg KCkgCnsgCiAgICBsb2NhbCBsaWJkaXJzPSJsaWIiOwogICAgbG9jYWwgYWJpOwogICAgbG9j YWwgZGlyOwogICAgZm9yIGFiaSBpbiAke01VTFRJTElCX0FCSVN9OwogICAgZG8KICAgICAg ICBbICIkKGdldF9hYmlfTElCRElSICR7YWJpfSkiICE9ICJsaWIiIF0gJiYgbGliZGlycz0i JHtsaWJkaXJzfSAkKGdldF9hYmlfTElCRElSICR7YWJpfSkiOwogICAgZG9uZTsKICAgIGVj aG8gIiR7bGliZGlyc30iCn0KZ2V0X2FsbF92ZXJzaW9uX2NvbXBvbmVudHMgKCkgCnsgCiAg ICBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2dsZSBvbjsKICAgIGxvY2FsIHZlcl9zdHI9JHsx Oi0ke1BWfX0gcmVzdWx0IHJlc3VsdF9pZHg9MDsKICAgIHJlc3VsdD0oKTsKICAgIGlmIFtb ICIke1ZFUlNJT05BVE9SX0NBQ0hFX1ZFUl9TVFJ9IiA9PSAiJHt2ZXJfc3RyfSIgXV07IHRo ZW4KICAgICAgICBlY2hvICR7VkVSU0lPTkFUT1JfQ0FDSEVfUkVTVUxUfTsKICAgICAgICBf X3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2dsZSBvZmY7CiAgICAgICAgcmV0dXJuOwogICAgZmk7 CiAgICBleHBvcnQgVkVSU0lPTkFUT1JfQ0FDSEVfVkVSX1NUUj0iJHt2ZXJfc3RyfSI7CiAg ICB3aGlsZSBbWyAtbiAiJHZlcl9zdHIiIF1dOyBkbwogICAgICAgIGNhc2UgIiR7dmVyX3N0 cjowOjF9IiBpbiAKICAgICAgICAgICAgW1s6ZGlnaXQ6XV0pCiAgICAgICAgICAgICAgICBy ZXN1bHRbJHJlc3VsdF9pZHhdPSIke3Zlcl9zdHIlJVteWzpkaWdpdDpdXSp9IjsKICAgICAg ICAgICAgICAgIHZlcl9zdHI9IiR7dmVyX3N0ciMjKyhbWzpkaWdpdDpdXSl9IjsKICAgICAg ICAgICAgICAgIHJlc3VsdF9pZHg9JCgoJHJlc3VsdF9pZHggKyAxKSkKICAgICAgICAgICAg OzsKICAgICAgICAgICAgWy1fLl0pCiAgICAgICAgICAgICAgICByZXN1bHRbJHJlc3VsdF9p ZHhdPSIke3Zlcl9zdHI6MDoxfSI7CiAgICAgICAgICAgICAgICB2ZXJfc3RyPSIke3Zlcl9z dHI6MX0iOwogICAgICAgICAgICAgICAgcmVzdWx0X2lkeD0kKCgkcmVzdWx0X2lkeCArIDEp KQogICAgICAgICAgICA7OwogICAgICAgICAgICBbWzphbHBoYTpdXSkKICAgICAgICAgICAg ICAgIGxvY2FsIG5vdF9tYXRjaD0iJHt2ZXJfc3RyIyMrKFtbOmFscGhhOl1dKSooW1s6ZGln aXQ6XV0pfSI7CiAgICAgICAgICAgICAgICByZXN1bHRbJHJlc3VsdF9pZHhdPSR7dmVyX3N0 cjowOiQoKCR7I3Zlcl9zdHJ9IC0gJHsjbm90X21hdGNofSkpfTsKICAgICAgICAgICAgICAg IHZlcl9zdHI9IiR7bm90X21hdGNofSI7CiAgICAgICAgICAgICAgICByZXN1bHRfaWR4PSQo KCRyZXN1bHRfaWR4ICsgMSkpCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgICopCiAgICAg ICAgICAgICAgICByZXN1bHRbJHJlc3VsdF9pZHhdPSIke3Zlcl9zdHI6MDoxfSI7CiAgICAg ICAgICAgICAgICB2ZXJfc3RyPSIke3Zlcl9zdHI6MX0iOwogICAgICAgICAgICAgICAgcmVz dWx0X2lkeD0kKCgkcmVzdWx0X2lkeCArIDEpKQogICAgICAgICAgICA7OwogICAgICAgIGVz YWM7CiAgICBkb25lOwogICAgZXhwb3J0IFZFUlNJT05BVE9SX0NBQ0hFX1JFU1VMVD0iJHty ZXN1bHRbQF19IjsKICAgIGVjaG8gJHtyZXN1bHRbQF19OwogICAgX192ZXJzaW9uYXRvcl9z aG9wdF90b2dnbGUgb2ZmCn0KZ2V0X2JtYWtlICgpIAp7IAogICAgaWYgW1sgJHtVU0VSTEFO RH0gPT0gKkJTRCBdXTsgdGhlbgogICAgICAgIGVjaG8gbWFrZTsKICAgIGVsc2UKICAgICAg ICBpZiBbWyAke1VTRVJMQU5EfSA9PSAiRGFyd2luIiBdXTsgdGhlbgogICAgICAgICAgICBl Y2hvIGJzZG1ha2U7CiAgICAgICAgZWxzZQogICAgICAgICAgICBlY2hvIHBtYWtlOwogICAg ICAgIGZpOwogICAgZmkKfQpnZXRfYnJva2VuX2ZsYWdzICgpIAp7IAogICAgbG9jYWwgbXlw cm9nPSIkezF9IiBsYW5nPSIkezJ9IjsKICAgIHNoaWZ0IDI7CiAgICBlY2hvICdtYWluKCl7 fScgfCBMQ19BTEw9QyAke215cHJvZ30gJHtAfSAteCAke2xhbmd9IC1vIC9kZXYvbnVsbCAt IDI+JjEgfCBlZ3JlcCAidW5yZWNvZ25pemVkIC4qb3B0aW9uIiB8IGVncmVwIC1vIC0tICco J1wnJ3xcInxgKS0uKicgfCBzZWQgLXIgJ3MvKCdcJyd8YHwiKS8vZzsgcy9eLyIvOyBzLyQv Ii8nOwogICAgZWNobyAnbWFpbigpe30nIHwgTENfQUxMPUMgJHtteXByb2d9ICR7QH0gLXgg JHtsYW5nfSAtbyAvZGV2L251bGwgLSAyPiYxIHwgZWdyZXAgInVucmVjb2duaXNlZCBkZWJ1 ZyBvdXRwdXQiIHwgZWdyZXAgLW8gLS0gJygnXCcnfFwifGApLionIHwgc2VkIC1yICdzLygn XCcnfGB8IikvL2c7IHMvXi8iLWcvOyBzLyQvIi8nCn0KZ2V0X2luc3RhbGxfYWJpcyAoKSAK eyAKICAgIGxvY2FsIG9yZGVyPSIiOwogICAgaWYgW1sgLXogJHtNVUxUSUxJQl9BQklTfSBd XTsgdGhlbgogICAgICAgIGVjaG8gImRlZmF1bHQiOwogICAgICAgIHJldHVybiAwOwogICAg Zmk7CiAgICBpZiBbWyAke0VNVUxUSUxJQl9QS0d9ID09ICJ0cnVlIiBdXTsgdGhlbgogICAg ICAgIGZvciB4IGluICR7TVVMVElMSUJfQUJJU307CiAgICAgICAgZG8KICAgICAgICAgICAg aWYgW1sgJHt4fSAhPSAiJHtERUZBVUxUX0FCSX0iIF1dOyB0aGVuCiAgICAgICAgICAgICAg ICBoYXNxICR7eH0gJHtBQklfREVOWX0gfHwgb3JkZXJhPSIke29yZGVyYX0gJHt4fSI7CiAg ICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAgICAgICAgaGFzcSAke0RFRkFVTFRfQUJJ fSAke0FCSV9ERU5ZfSB8fCBvcmRlcj0iJHtvcmRlcmF9ICR7REVGQVVMVF9BQkl9IjsKICAg ICAgICBpZiBbWyAtbiAke0FCSV9BTExPV30gXV07IHRoZW4KICAgICAgICAgICAgbG9jYWwg b3JkZXJhPSIiOwogICAgICAgICAgICBmb3IgeCBpbiAke29yZGVyfTsKICAgICAgICAgICAg ZG8KICAgICAgICAgICAgICAgIGlmIGhhc3EgJHt4fSAke0FCSV9BTExPV307IHRoZW4KICAg ICAgICAgICAgICAgICAgICBvcmRlcmE9IiR7b3JkZXJhfSAke3h9IjsKICAgICAgICAgICAg ICAgIGZpOwogICAgICAgICAgICBkb25lOwogICAgICAgICAgICBvcmRlcj0ke29yZGVyYX07 CiAgICAgICAgZmk7CiAgICBlbHNlCiAgICAgICAgb3JkZXI9JHtERUZBVUxUX0FCSX07CiAg ICBmaTsKICAgIGlmIFtbIC16ICR7b3JkZXJ9IF1dOyB0aGVuCiAgICAgICAgZGllICJUaGUg QUJJIGxpc3QgaXMgZW1wdHkuICBBcmUgeW91IHVzaW5nIGEgcHJvcGVyIG11bHRpbGliIHBy b2ZpbGU/ICBQZXJoYXBzIHlvdXIgVVNFIGZsYWdzIG9yIE1VTFRJTElCX0FCSVMgYXJlIHRv byByZXN0cmljdGl2ZSBmb3IgdGhpcyBwYWNrYWdlLiI7CiAgICBmaTsKICAgIGVjaG8gJHtv cmRlcn07CiAgICByZXR1cm4gMAp9CmdldF9sYXN0X3ZlcnNpb25fY29tcG9uZW50X2luZGV4 ICgpIAp7IAogICAgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb247CiAgICBlY2hvICQo KCAkKGdldF92ZXJzaW9uX2NvbXBvbmVudF9jb3VudCAiJHsxOi0ke1BWfX0iICkgLSAxICkp OwogICAgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb2ZmCn0KZ2V0X2xpYmRpciAoKSAK eyAKICAgIGxvY2FsIENPTkZfTElCRElSOwogICAgaWYgWyAtbiAiJHtDT05GX0xJQkRJUl9P VkVSUklERX0iIF07IHRoZW4KICAgICAgICBlY2hvICR7Q09ORl9MSUJESVJfT1ZFUlJJREV9 OwogICAgZWxzZQogICAgICAgIGdldF9hYmlfTElCRElSOwogICAgZmkKfQpnZXRfbGliZGly X292ZXJyaWRlICgpIAp7IAogICAgaWYgaGFzX211bHRpbGliX3Byb2ZpbGU7IHRoZW4KICAg ICAgICBlZXJyb3IgImdldF9saWJkaXJfb3ZlcnJpZGUgY2FsbGVkLCBidXQgaXQgc2hvdWxk bid0IGJlIG5lZWRlZCB3aXRoIHRoZSBuZXcgbXVsdGlsaWIgYXBwcm9hY2guICBQbGVhc2Ug ZmlsZSBhIGJ1ZyBhdCBodHRwOi8vYnVncy5nZW50b28ub3JnIGFuZCBhc3NpZ24gaXQgdG8g ZXJhZGljYXRvckBnZW50b28ub3JnIjsKICAgICAgICBleGl0IDE7CiAgICBmaTsKICAgIENP TkZfTElCRElSPSIkMSI7CiAgICBDT05GX0xJQkRJUl9PVkVSUklERT0iJDEiOwogICAgTElC RElSX2RlZmF1bHQ9IiQxIgp9CmdldF9saWJuYW1lICgpIAp7IAogICAgbG9jYWwgbGlibmFt ZTsKICAgIGxvY2FsIHZlcj0kMTsKICAgIGNhc2UgJHtDSE9TVH0gaW4gCiAgICAgICAgKi1j eWd3aW4gfCBtaW5ndyogfCAqLW1pbmd3KikKICAgICAgICAgICAgbGlibmFtZT0iZGxsIgog ICAgICAgIDs7CiAgICAgICAgKi1kYXJ3aW4qKQogICAgICAgICAgICBsaWJuYW1lPSJkeWxp YiIKICAgICAgICA7OwogICAgICAgICotYWl4KikKICAgICAgICAgICAgbGlibmFtZT0iYSIK ICAgICAgICA7OwogICAgICAgICotbWludCopCiAgICAgICAgICAgIGxpYm5hbWU9ImlycmVs ZXZhbnQiCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBsaWJuYW1lPSJzbyIK ICAgICAgICA7OwogICAgZXNhYzsKICAgIGlmIFtbIC16ICQqIF1dOyB0aGVuCiAgICAgICAg ZWNobyAiLiR7bGlibmFtZX0iOwogICAgZWxzZQogICAgICAgIGZvciB2ZXIgaW4gIiRAIjsK ICAgICAgICBkbwogICAgICAgICAgICBjYXNlICR7Q0hPU1R9IGluIAogICAgICAgICAgICAg ICAgKi1kYXJ3aW4qKQogICAgICAgICAgICAgICAgICAgIGVjaG8gIi4ke3Zlcn0uJHtsaWJu YW1lfSIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAqLWFpeCopCiAgICAg ICAgICAgICAgICAgICAgZWNobyAiLiR7bGlibmFtZX0iCiAgICAgICAgICAgICAgICA7Owog ICAgICAgICAgICAgICAgKi1taW50KikKICAgICAgICAgICAgICAgICAgICBlY2hvICIuJHts aWJuYW1lfSIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAqKQogICAgICAg ICAgICAgICAgICAgIGVjaG8gIi4ke2xpYm5hbWV9LiR7dmVyfSIKICAgICAgICAgICAgICAg IDs7CiAgICAgICAgICAgIGVzYWM7CiAgICAgICAgZG9uZTsKICAgIGZpCn0KZ2V0X2xvY2Fs dmVyc2lvbiAoKSAKeyAKICAgIGxvY2FsIGx2X2xpc3QgaSB4OwogICAgZm9yIGkgaW4gJChs cyAkezF9L2xvY2FsdmVyc2lvbiogMj4vZGV2L251bGwpOwogICAgZG8KICAgICAgICBbWyAt biAke2kvLyp+Kn0gXV0gJiYgbHZfbGlzdD0iJHtsdl9saXN0fSAke2l9IjsKICAgIGRvbmU7 CiAgICBmb3IgaSBpbiAke2x2X2xpc3R9OwogICAgZG8KICAgICAgICB4PSIke3h9JCg8JHtp fSkiOwogICAgZG9uZTsKICAgIHg9JHt4LyAvfTsKICAgIGVjaG8gJHt4fQp9CmdldF9tYWpv cl92ZXJzaW9uICgpIAp7IAogICAgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb247CiAg ICBsb2NhbCBjOwogICAgYz0oJChnZXRfYWxsX3ZlcnNpb25fY29tcG9uZW50cyAiJHsxOi0k e1BWfX0iICkpOwogICAgZWNobyAke2NbMF19OwogICAgX192ZXJzaW9uYXRvcl9zaG9wdF90 b2dnbGUgb2ZmCn0KZ2V0X21sX2luY2RpciAoKSAKeyAKICAgIGxvY2FsIGRpcj0vdXNyL2lu Y2x1ZGU7CiAgICBpZiBbWyAkIyAtZ3QgMCBdXTsgdGhlbgogICAgICAgIGluY2Rpcj0kMTsK ICAgICAgICBzaGlmdDsKICAgIGZpOwogICAgaWYgW1sgLXogIiR7TVVMVElMSUJfQUJJU30i IF1dOyB0aGVuCiAgICAgICAgZWNobyAke2luY2Rpcn07CiAgICAgICAgcmV0dXJuIDA7CiAg ICBmaTsKICAgIGxvY2FsIGFiaT0ke0FCSS0ke0RFRkFVTFRfQUJJfX07CiAgICBpZiBbWyAk IyAtZ3QgMCBdXTsgdGhlbgogICAgICAgIGFiaT0kMTsKICAgICAgICBzaGlmdDsKICAgIGZp OwogICAgaWYgW1sgLWQgIiR7ZGlyfS9nZW50b28tbXVsdGlsaWIvJHthYml9IiBdXTsgdGhl bgogICAgICAgIGVjaG8gJHtkaXJ9L2dlbnRvby1tdWx0aWxpYi8ke2FiaX07CiAgICBlbHNl CiAgICAgICAgZWNobyAke2Rpcn07CiAgICBmaQp9CmdldF9tb3VudHMgKCkgCnsgCiAgICBs b2NhbCBwb2ludD0gbm9kZT0gZnM9IG9wdHM9IGZvbz07CiAgICBpZiBbWyAkKHVuYW1lIC1z KSA9PSAiTGludXgiIF1dOyB0aGVuCiAgICAgICAgd2hpbGUgcmVhZCBub2RlIHBvaW50IGZz IG9wdHMgZm9vOyBkbwogICAgICAgICAgICBlY2hvICIke3BvaW50fSAke25vZGV9ICR7ZnN9 ICR7b3B0c30iOwogICAgICAgIGRvbmUgPCAvcHJvYy9tb3VudHM7CiAgICAgICAgcmV0dXJu OwogICAgZmk7CiAgICBsb2NhbCBJRlM9JwknOwogICAgTENfQUxMPUMgbW91bnQgLXAgfCB3 aGlsZSByZWFkIG5vZGUgcG9pbnQgZnMgZm9vOyBkbwogICAgICAgIG9wdHM9JHtmcyMqIH07 CiAgICAgICAgZnM9JHtmcyUlICp9OwogICAgICAgIGVjaG8gIiR7cG9pbnQvLyAvXDA0MH0g JHtub2RlLy8gL1wwNDB9ICR7ZnMlJSAqfSAke29wdHMvLyAvXDA0MH0iOwogICAgZG9uZQp9 CmdldF9tdWx0aWxpYmRpciAoKSAKeyAKICAgIGlmIGhhc19tdWx0aWxpYl9wcm9maWxlOyB0 aGVuCiAgICAgICAgZWVycm9yICJnZXRfbXVsdGlsaWJkaXIgY2FsbGVkLCBidXQgaXQgc2hv dWxkbid0IGJlIG5lZWRlZCB3aXRoIHRoZSBuZXcgbXVsdGlsaWIgYXBwcm9hY2guICBQbGVh c2UgZmlsZSBhIGJ1ZyBhdCBodHRwOi8vYnVncy5nZW50b28ub3JnIGFuZCBhc3NpZ24gaXQg dG8gZXJhZGljYXRvckBnZW50b28ub3JnIjsKICAgICAgICBleGl0IDE7CiAgICBmaTsKICAg IGVjaG8gJHtDT05GX01VTFRJTElCRElSOj1saWIzMn0KfQpnZXRfcnVubmluZ192ZXJzaW9u ICgpIAp7IAogICAgS1ZfRlVMTD0kKHVuYW1lIC1yKTsKICAgIGlmIFtbIC1mICR7Uk9PVH0v bGliL21vZHVsZXMvJHtLVl9GVUxMfS9zb3VyY2UvTWFrZWZpbGUgXV07IHRoZW4KICAgICAg ICBLRVJORUxfRElSPSQocmVhZGxpbmsgLWYgJHtST09UfS9saWIvbW9kdWxlcy8ke0tWX0ZV TEx9L3NvdXJjZSk7CiAgICAgICAgdW5zZXQgS1ZfRlVMTDsKICAgICAgICBnZXRfdmVyc2lv bjsKICAgICAgICByZXR1cm4gJD87CiAgICBlbHNlCiAgICAgICAgaWYgW1sgLWYgJHtST09U fS9saWIvbW9kdWxlcy8ke0tWX0ZVTEx9L2J1aWxkL01ha2VmaWxlIF1dOyB0aGVuCiAgICAg ICAgICAgIEtFUk5FTF9ESVI9JChyZWFkbGluayAtZiAke1JPT1R9L2xpYi9tb2R1bGVzLyR7 S1ZfRlVMTH0vYnVpbGQpOwogICAgICAgICAgICB1bnNldCBLVl9GVUxMOwogICAgICAgICAg ICBnZXRfdmVyc2lvbjsKICAgICAgICAgICAgcmV0dXJuICQ/OwogICAgICAgIGVsc2UKICAg ICAgICAgICAgS1ZfTUFKT1I9JChnZXRfdmVyc2lvbl9jb21wb25lbnRfcmFuZ2UgMSAke0tW X0ZVTEx9KTsKICAgICAgICAgICAgS1ZfTUlOT1I9JChnZXRfdmVyc2lvbl9jb21wb25lbnRf cmFuZ2UgMiAke0tWX0ZVTEx9KTsKICAgICAgICAgICAgS1ZfUEFUQ0g9JChnZXRfdmVyc2lv bl9jb21wb25lbnRfcmFuZ2UgMy0gJHtLVl9GVUxMfSk7CiAgICAgICAgICAgIEtWX1BBVENI PSR7S1ZfUEFUQ0gvLy0qfTsKICAgICAgICAgICAgW1sgLW4gJHtLVl9GVUxMIyotfSBdXSAm JiBbWyAtbiAke0tWX0ZVTEwvLyR7S1ZfRlVMTCMqLX19IF1dICYmIEtWX0VYVFJBPSItJHtL Vl9GVUxMIyotfSI7CiAgICAgICAgZmk7CiAgICBmaTsKICAgIHJldHVybiAwCn0KZ2V0X3Zl cnNpb24gKCkgCnsgCiAgICBsb2NhbCBrYnVpbGRfb3V0cHV0OwogICAgWyAtbiAiJHtLVl9G VUxMfSIgXSAmJiByZXR1cm4gMDsKICAgIHVuc2V0IEtWX0RJUjsKICAgIHFlaW5mbyAiRGV0 ZXJtaW5pbmcgdGhlIGxvY2F0aW9uIG9mIHRoZSBrZXJuZWwgc291cmNlIGNvZGUiOwogICAg WyAtaCAiJHtLRVJORUxfRElSfSIgXSAmJiBLVl9ESVI9IiQocmVhZGxpbmsgLWYgJHtLRVJO RUxfRElSfSkiOwogICAgWyAtZCAiJHtLRVJORUxfRElSfSIgXSAmJiBLVl9ESVI9IiR7S0VS TkVMX0RJUn0iOwogICAgaWYgWyAteiAiJHtLVl9ESVJ9IiBdOyB0aGVuCiAgICAgICAgcWVl cnJvciAiVW5hYmxlIHRvIGZpbmQga2VybmVsIHNvdXJjZXMgYXQgJHtLRVJORUxfRElSfSI7 CiAgICAgICAgcWVpbmZvICJUaGlzIHBhY2thZ2UgcmVxdWlyZXMgTGludXggc291cmNlcy4i OwogICAgICAgIGlmIFsgIiR7S0VSTkVMX0RJUn0iID09ICIvdXNyL3NyYy9saW51eCIgXTsg dGhlbgogICAgICAgICAgICBxZWluZm8gIlBsZWFzZSBtYWtlIHN1cmUgdGhhdCAke0tFUk5F TF9ESVJ9IHBvaW50cyBhdCB5b3VyIHJ1bm5pbmcga2VybmVsLCAiOwogICAgICAgICAgICBx ZWluZm8gIihvciB0aGUga2VybmVsIHlvdSB3aXNoIHRvIGJ1aWxkIGFnYWluc3QpLiI7CiAg ICAgICAgICAgIHFlaW5mbyAiQWx0ZXJuYXRpdmVseSwgc2V0IHRoZSBLRVJORUxfRElSIGVu dmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSBrZXJuZWwgc291cmNlcyBsb2NhdGlvbiI7CiAg ICAgICAgZWxzZQogICAgICAgICAgICBxZWluZm8gIlBsZWFzZSBlbnN1cmUgdGhhdCB0aGUg S0VSTkVMX0RJUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBwb2ludHMgYXQgZnVsbCBMaW51eCBz b3VyY2VzIG9mIHRoZSBrZXJuZWwgeW91IHdpc2ggdG8gY29tcGlsZSBhZ2FpbnN0LiI7CiAg ICAgICAgZmk7CiAgICAgICAgcmV0dXJuIDE7CiAgICBmaTsKICAgIHFlaW5mbyAiRm91bmQg a2VybmVsIHNvdXJjZSBkaXJlY3Rvcnk6IjsKICAgIHFlaW5mbyAiICAgICR7S1ZfRElSfSI7 CiAgICBpZiBbICEgLXMgIiR7S1ZfRElSfS9NYWtlZmlsZSIgXTsgdGhlbgogICAgICAgIHFl ZXJyb3IgIkNvdWxkIG5vdCBmaW5kIGEgTWFrZWZpbGUgaW4gdGhlIGtlcm5lbCBzb3VyY2Ug ZGlyZWN0b3J5LiI7CiAgICAgICAgcWVlcnJvciAiUGxlYXNlIGVuc3VyZSB0aGF0ICR7S0VS TkVMX0RJUn0gcG9pbnRzIHRvIGEgY29tcGxldGUgc2V0IG9mIExpbnV4IHNvdXJjZXMiOwog ICAgICAgIHJldHVybiAxOwogICAgZmk7CiAgICBPVVRQVVRfRElSPSIke09VVFBVVF9ESVI6 LSR7S0JVSUxEX09VVFBVVH19IjsKICAgIGtidWlsZF9vdXRwdXQ9IiQoZ2V0ZmlsZXZhciBL QlVJTERfT1VUUFVUICR7S1ZfRElSfS9NYWtlZmlsZSkiOwogICAgT1VUUFVUX0RJUj0iJHtP VVRQVVRfRElSOi0ke2tidWlsZF9vdXRwdXR9fSI7CiAgICBLVl9NQUpPUj0iJChnZXRmaWxl dmFyIFZFUlNJT04gJHtLVl9ESVJ9L01ha2VmaWxlKSI7CiAgICBLVl9NSU5PUj0iJChnZXRm aWxldmFyIFBBVENITEVWRUwgJHtLVl9ESVJ9L01ha2VmaWxlKSI7CiAgICBLVl9QQVRDSD0i JChnZXRmaWxldmFyIFNVQkxFVkVMICR7S1ZfRElSfS9NYWtlZmlsZSkiOwogICAgS1ZfRVhU UkE9IiQoZ2V0ZmlsZXZhciBFWFRSQVZFUlNJT04gJHtLVl9ESVJ9L01ha2VmaWxlKSI7CiAg ICBpZiBbIC16ICIke0tWX01BSk9SfSIgLW8gLXogIiR7S1ZfTUlOT1J9IiAtbyAteiAiJHtL Vl9QQVRDSH0iIF07IHRoZW4KICAgICAgICBxZWVycm9yICJDb3VsZCBub3QgZGV0ZWN0IGtl cm5lbCB2ZXJzaW9uLiI7CiAgICAgICAgcWVlcnJvciAiUGxlYXNlIGVuc3VyZSB0aGF0ICR7 S0VSTkVMX0RJUn0gcG9pbnRzIHRvIGEgY29tcGxldGUgc2V0IG9mIExpbnV4IHNvdXJjZXMu IjsKICAgICAgICByZXR1cm4gMTsKICAgIGZpOwogICAgWyAiJHtLVl9NQUpPUn0uJHtLVl9N SU5PUn0uJHtLVl9QQVRDSH0ke0tWX0VYVFJBfSIgPT0gIiQodW5hbWUgLXIpIiBdICYmIE9V VFBVVF9ESVI9IiR7T1VUUFVUX0RJUjotL2xpYi9tb2R1bGVzLyR7S1ZfTUFKT1J9LiR7S1Zf TUlOT1J9LiR7S1ZfUEFUQ0h9JHtLVl9FWFRSQX0vYnVpbGR9IjsKICAgIFsgLWggIiR7T1VU UFVUX0RJUn0iIF0gJiYgS1ZfT1VUX0RJUj0iJChyZWFkbGluayAtZiAke09VVFBVVF9ESVJ9 KSI7CiAgICBbIC1kICIke09VVFBVVF9ESVJ9IiBdICYmIEtWX09VVF9ESVI9IiR7T1VUUFVU X0RJUn0iOwogICAgaWYgWyAtbiAiJHtLVl9PVVRfRElSfSIgXTsgdGhlbgogICAgICAgIHFl aW5mbyAiRm91bmQga2VybmVsIG9iamVjdCBkaXJlY3Rvcnk6IjsKICAgICAgICBxZWluZm8g IiAgICAke0tWX09VVF9ESVJ9IjsKICAgICAgICBLVl9MT0NBTD0iJChnZXRfbG9jYWx2ZXJz aW9uICR7S1ZfT1VUX0RJUn0pIjsKICAgIGZpOwogICAgS1ZfT1VUX0RJUj0iJHtLVl9PVVRf RElSOi0ke0tWX0RJUn19IjsKICAgIEtWX0xPQ0FMPSIke0tWX0xPQ0FMfSQoZ2V0X2xvY2Fs dmVyc2lvbiAke0tWX0RJUn0pIjsKICAgIGlmIGxpbnV4X2NvbmZpZ19leGlzdHM7IHRoZW4K ICAgICAgICBLVl9MT0NBTD0iJHtLVl9MT0NBTH0kKGxpbnV4X2Noa2NvbmZpZ19zdHJpbmcg TE9DQUxWRVJTSU9OKSI7CiAgICAgICAgS1ZfTE9DQUw9IiR7S1ZfTE9DQUwvL1wiL30iOwog ICAgICAgIFsgLWUgJHtLVl9ESVJ9L3NjcmlwdHMvc2V0bG9jYWx2ZXJzaW9uIF0gJiYgbGlu dXhfY2hrY29uZmlnX2J1aWx0aW4gTE9DQUxWRVJTSU9OX0FVVE8gJiYgS1ZfTE9DQUw9IiR7 S1ZfTE9DQUx9JChzaCAke0tWX0RJUn0vc2NyaXB0cy9zZXRsb2NhbHZlcnNpb24gJHtLVl9E SVJ9KSI7CiAgICBmaTsKICAgIEtWX0ZVTEw9IiR7S1ZfTUFKT1J9LiR7S1ZfTUlOT1J9LiR7 S1ZfUEFUQ0h9JHtLVl9FWFRSQX0ke0tWX0xPQ0FMfSI7CiAgICBxZWluZm8gIkZvdW5kIHNv dXJjZXMgZm9yIGtlcm5lbCB2ZXJzaW9uOiI7CiAgICBxZWluZm8gIiAgICAke0tWX0ZVTEx9 IjsKICAgIHJldHVybiAwCn0KZ2V0X3ZlcnNpb25fY29tcG9uZW50X2NvdW50ICgpIAp7IAog ICAgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb247CiAgICBsb2NhbCBhOwogICAgYT0o JChnZXRfdmVyc2lvbl9jb21wb25lbnRzICIkezE6LSR7UFZ9fSIgKSk7CiAgICBlY2hvICR7 I2FbQF19OwogICAgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb2ZmCn0KZ2V0X3ZlcnNp b25fY29tcG9uZW50X3JhbmdlICgpIAp7IAogICAgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dn bGUgb247CiAgICBsb2NhbCBjIHY9IiR7MjotJHtQVn19IiByYW5nZT0iJHsxfSIgcmFuZ2Vf c3RhcnQgcmFuZ2VfZW5kIGk9LTEgaj0wOwogICAgYz0oJChnZXRfYWxsX3ZlcnNpb25fY29t cG9uZW50cyAke3Z9ICkpOwogICAgcmFuZ2Vfc3RhcnQ9IiR7cmFuZ2UlLSp9IjsKICAgIHJh bmdlX3N0YXJ0PSIke3JhbmdlX3N0YXJ0Oi0xfSI7CiAgICByYW5nZV9lbmQ9IiR7cmFuZ2Uj Ki19IjsKICAgIHJhbmdlX2VuZD0iJHtyYW5nZV9lbmQ6LSR7I2NbQF19fSI7CiAgICB3aGls ZSAoKCBqIDwgJHtyYW5nZV9zdGFydH0gKSk7IGRvCiAgICAgICAgaT0kKCgkaSArIDEpKTsK ICAgICAgICBbWyAkaSAtZ3QgJHsjY1tAXX0gXV0gJiYgX192ZXJzaW9uYXRvcl9zaG9wdF90 b2dnbGUgb2ZmICYmIHJldHVybjsKICAgICAgICBbWyAtbiAiJHtjWyR7aX1dLy9bLS5fXX0i IF1dICYmIGo9JCgoJGogKyAxKSk7CiAgICBkb25lOwogICAgd2hpbGUgKCggaiA8PSAke3Jh bmdlX2VuZH0gKSk7IGRvCiAgICAgICAgZWNobyAtbiAke2NbJGldfTsKICAgICAgICBbWyAk aSAtZ3QgJHsjY1tAXX0gXV0gJiYgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb2ZmICYm IHJldHVybjsKICAgICAgICBbWyAtbiAiJHtjWyR7aX1dLy9bLS5fXX0iIF1dICYmIGo9JCgo JGogKyAxKSk7CiAgICAgICAgaT0kKCgkaSArIDEpKTsKICAgIGRvbmU7CiAgICBfX3ZlcnNp b25hdG9yX3Nob3B0X3RvZ2dsZSBvZmYKfQpnZXRfdmVyc2lvbl9jb21wb25lbnRzICgpIAp7 IAogICAgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb247CiAgICBsb2NhbCBjPSIkKGdl dF9hbGxfdmVyc2lvbl9jb21wb25lbnRzICIkezE6LSR7UFZ9fSIpIjsKICAgIGM9KCR7Y1tA XS8vWy0uX10vIH0pOwogICAgZWNobyAke2NbQF19OwogICAgX192ZXJzaW9uYXRvcl9zaG9w dF90b2dnbGUgb2ZmCn0KZ2V0ZmlsZXZhciAoKSAKeyAKICAgIGxvY2FsIEVSUk9SIGJhc2Vm bmFtZSBiYXNlZG5hbWUgbXlBUkNIPSIke0FSQ0h9IjsKICAgIEVSUk9SPTA7CiAgICBbIC16 ICIkezF9IiBdICYmIEVSUk9SPTE7CiAgICBbICEgLWYgIiR7Mn0iIF0gJiYgRVJST1I9MTsK ICAgIGlmIFsgIiR7RVJST1J9IiA9IDEgXTsgdGhlbgogICAgICAgIGVjaG8gLWUgIlxuIjsK ICAgICAgICBlZXJyb3IgImdldGZpbGV2YXIgcmVxdWlyZXMgMiB2YXJpYWJsZXMsIHdpdGgg dGhlIHNlY29uZCBhIHZhbGlkIGZpbGUuIjsKICAgICAgICBlZXJyb3IgIiAgIGdldGZpbGV2 YXIgPFZBUklBQkxFPiA8Q09ORklHRklMRT4iOwogICAgZWxzZQogICAgICAgIGJhc2VmbmFt ZT0iJChiYXNlbmFtZSAkezJ9KSI7CiAgICAgICAgYmFzZWRuYW1lPSIkKGRpcm5hbWUgJHsy fSkiOwogICAgICAgIHVuc2V0IEFSQ0g7CiAgICAgICAgZWNobyAtZSAiZTpcXG5cXHRAZWNo byBcJCgkezF9KVxcbmluY2x1ZGUgJHtiYXNlZm5hbWV9IiB8IG1ha2UgLUMgIiR7YmFzZWRu YW1lfSIgTT0iJHtTfSIgJHtCVUlMRF9GSVhFU30gLXMgLWYgLSAyPiAvZGV2L251bGw7CiAg ICAgICAgQVJDSD0ke215QVJDSH07CiAgICBmaQp9CmhhcyAoKSAKeyAKICAgIGhhc3EgIiRA Igp9Cmhhc19tdWx0aWxpYl9wcm9maWxlICgpIAp7IAogICAgWyAtbiAiJHtNVUxUSUxJQl9B QklTfSIgLWEgIiR7TVVMVElMSUJfQUJJU30iICE9ICIke01VTFRJTElCX0FCSVMvIC99IiBd Cn0KaGFzX3ZlcnNpb24gKCkgCnsgCiAgICBpZiBbICIke0VCVUlMRF9QSEFTRX0iID09ICJk ZXBlbmQiIF07IHRoZW4KICAgICAgICBkaWUgInBvcnRhZ2VxIGNhbGxzIChoYXNfdmVyc2lv biBjYWxscyBwb3J0YWdlcSkgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSBnbG9iYWwgc2NvcGUi OwogICAgZmk7CiAgICBQWVRIT05QQVRIPSR7UE9SVEFHRV9QWU1fUEFUSH0ke1BZVEhPTlBB VEg6Kzp9JHtQWVRIT05QQVRIfSAiJHtQT1JUQUdFX0JJTl9QQVRIfSIvcG9ydGFnZXEgaGFz X3ZlcnNpb24gIiR7Uk9PVH0iICIkMSI7CiAgICBsb2NhbCByZXR2YWw9JD87CiAgICBjYXNl ICIke3JldHZhbH0iIGluIAogICAgICAgIDApCiAgICAgICAgICAgIHJldHVybiAwCiAgICAg ICAgOzsKICAgICAgICAxKQogICAgICAgICAgICByZXR1cm4gMQogICAgICAgIDs7CiAgICAg ICAgKikKICAgICAgICAgICAgZGllICJ1bmV4cGVjdGVkIHBvcnRhZ2VxIGV4aXQgY29kZTog JHtyZXR2YWx9IgogICAgICAgIDs7CiAgICBlc2FjCn0KaGFzZyAoKSAKeyAKICAgIGxvY2Fs IHggcz0kMTsKICAgIHNoaWZ0OwogICAgZm9yIHggaW4gIiRAIjsKICAgIGRvCiAgICAgICAg W1sgJHt4fSA9PSAke3N9IF1dICYmIGVjaG8gIiR7eH0iICYmIHJldHVybiAwOwogICAgZG9u ZTsKICAgIHJldHVybiAxCn0KaGFzZ3EgKCkgCnsgCiAgICBoYXNnICIkQCIgPiAvZGV2L251 bGwKfQpoYXNxICgpIAp7IAogICAgW1sgIiAkeyo6Mn0gIiA9PSAqIiAkMSAiKiBdXQp9Cmhh c3YgKCkgCnsgCiAgICBpZiBoYXNxICIkQCI7IHRoZW4KICAgICAgICBlY2hvICIkMSI7CiAg ICAgICAgcmV0dXJuIDA7CiAgICBmaTsKICAgIHJldHVybiAxCn0KaW5oZXJpdCAoKSAKeyAK ICAgIEVDTEFTU19ERVBUSD0kKCgkRUNMQVNTX0RFUFRIICsgMSkpOwogICAgaWYgW1sgJHtF Q0xBU1NfREVQVEh9ID4gMSBdXTsgdGhlbgogICAgICAgIGRlYnVnLXByaW50ICIqKiogTXVs dGlwbGUgSW5oZXJpdGVuY2UgKExldmVsOiAke0VDTEFTU19ERVBUSH0pIjsKICAgIGZpOwog ICAgaWYgW1sgLW4gJEVDTEFTUyAmJiAtbiAkeyFfX2V4cG9ydF9mdW5jc192YXJ9IF1dOyB0 aGVuCiAgICAgICAgZWNobyAiUUEgTm90aWNlOiBFWFBPUlRfRlVOQ1RJT05TIGlzIGNhbGxl ZCBiZWZvcmUgaW5oZXJpdCBpbiIgIiRFQ0xBU1MuZWNsYXNzLiBGb3IgY29tcGF0aWJpbGl0 eSB3aXRoIDw9cG9ydGFnZS0yLjEuNi43LCIgIm9ubHkgY2FsbCBFWFBPUlRfRlVOQ1RJT05T IGFmdGVyIGluaGVyaXQocykuIiB8IGZtdCAtdyA3NSB8IHdoaWxlIHJlYWQ7IGRvCiAgICAg ICAgICAgIGVxYXdhcm4gIiRSRVBMWSI7CiAgICAgICAgZG9uZTsKICAgIGZpOwogICAgbG9j YWwgbG9jYXRpb247CiAgICBsb2NhbCBvbG9jYXRpb247CiAgICBsb2NhbCB4OwogICAgbG9j YWwgUEVDTEFTUz0kRUNMQVNTOwogICAgbG9jYWwgcHJldl9leHBvcnRfZnVuY3NfdmFyPSRf X2V4cG9ydF9mdW5jc192YXI7CiAgICBsb2NhbCBCX0lVU0U7CiAgICBsb2NhbCBCX0RFUEVO RDsKICAgIGxvY2FsIEJfUkRFUEVORDsKICAgIGxvY2FsIEJfUERFUEVORDsKICAgIHdoaWxl IFsgIiQxIiBdOyBkbwogICAgICAgIGxvY2F0aW9uPSIke0VDTEFTU0RJUn0vJHsxfS5lY2xh c3MiOwogICAgICAgIG9sb2NhdGlvbj0iIjsKICAgICAgICBleHBvcnQgRUNMQVNTPSIkMSI7 CiAgICAgICAgX19leHBvcnRfZnVuY3NfdmFyPV9fZXhwb3J0X2Z1bmN0aW9uc18kRUNMQVNT X0RFUFRIOwogICAgICAgIHVuc2V0ICRfX2V4cG9ydF9mdW5jc192YXI7CiAgICAgICAgaWYg WyAiJHtFQlVJTERfUEhBU0V9IiAhPSAiZGVwZW5kIiBdICYmIFtbICR7RUJVSUxEX1BIQVNF fSAhPSAqcm0gXV0gJiYgW1sgJHtFTUVSR0VfRlJPTX0gIT0gImJpbmFyeSIgXV07IHRoZW4K ICAgICAgICAgICAgaWYgISBoYXNxICRFQ0xBU1MgJElOSEVSSVRFRDsgdGhlbgogICAgICAg ICAgICAgICAgZXFhd2FybiAiUUEgTm90aWNlOiBFQ0xBU1MgJyRFQ0xBU1MnIGluaGVyaXRl ZCBpbGxlZ2FsbHkgaW4gJENBVEVHT1JZLyRQRiAkRUJVSUxEX1BIQVNFIjsKICAgICAgICAg ICAgZmk7CiAgICAgICAgZmk7CiAgICAgICAgaWYgWyAtbiAiJFBPUlRESVJfT1ZFUkxBWSIg XTsgdGhlbgogICAgICAgICAgICBsb2NhbCBvdmVybGF5OwogICAgICAgICAgICBmb3Igb3Zl cmxheSBpbiAke1BPUlRESVJfT1ZFUkxBWX07CiAgICAgICAgICAgIGRvCiAgICAgICAgICAg ICAgICBvbG9jYXRpb249IiR7b3ZlcmxheX0vZWNsYXNzLyR7MX0uZWNsYXNzIjsKICAgICAg ICAgICAgICAgIGlmIFsgLWUgIiRvbG9jYXRpb24iIF07IHRoZW4KICAgICAgICAgICAgICAg ICAgICBsb2NhdGlvbj0iJHtvbG9jYXRpb259IjsKICAgICAgICAgICAgICAgICAgICBkZWJ1 Zy1wcmludCAiICBlY2xhc3MgZXhpc3RzOiAke2xvY2F0aW9ufSI7CiAgICAgICAgICAgICAg ICBmaTsKICAgICAgICAgICAgZG9uZTsKICAgICAgICBmaTsKICAgICAgICBkZWJ1Zy1wcmlu dCAiaW5oZXJpdDogJDEgLT4gJGxvY2F0aW9uIjsKICAgICAgICBbICEgLWUgIiRsb2NhdGlv biIgXSAmJiBkaWUgIiR7MX0uZWNsYXNzIGNvdWxkIG5vdCBiZSBmb3VuZCBieSBpbmhlcml0 KCkiOwogICAgICAgIGlmIFsgIiR7bG9jYXRpb259IiA9PSAiJHtvbG9jYXRpb259IiBdICYm ICEgaGFzcSAiJHtsb2NhdGlvbn0iICR7RUJVSUxEX09WRVJMQVlfRUNMQVNTRVN9OyB0aGVu CiAgICAgICAgICAgIEVCVUlMRF9PVkVSTEFZX0VDTEFTU0VTPSIke0VCVUlMRF9PVkVSTEFZ X0VDTEFTU0VTfSAke2xvY2F0aW9ufSI7CiAgICAgICAgZmk7CiAgICAgICAgc2V0IC1mOwog ICAgICAgIHVuc2V0IEJfSVVTRSBCX0RFUEVORCBCX1JERVBFTkQgQl9QREVQRU5EOwogICAg ICAgIFsgIiR7SVVTRS11bnNldH0iICE9ICJ1bnNldCIgXSAmJiBCX0lVU0U9IiR7SVVTRX0i OwogICAgICAgIFsgIiR7REVQRU5ELXVuc2V0fSIgIT0gInVuc2V0IiBdICYmIEJfREVQRU5E PSIke0RFUEVORH0iOwogICAgICAgIFsgIiR7UkRFUEVORC11bnNldH0iICE9ICJ1bnNldCIg XSAmJiBCX1JERVBFTkQ9IiR7UkRFUEVORH0iOwogICAgICAgIFsgIiR7UERFUEVORC11bnNl dH0iICE9ICJ1bnNldCIgXSAmJiBCX1BERVBFTkQ9IiR7UERFUEVORH0iOwogICAgICAgIHVu c2V0IElVU0UgREVQRU5EIFJERVBFTkQgUERFUEVORDsKICAgICAgICBzZXQgK2Y7CiAgICAg ICAgcWFfc291cmNlICIkbG9jYXRpb24iIHx8IGRpZSAiZGllZCBzb3VyY2luZyAkbG9jYXRp b24gaW4gaW5oZXJpdCgpIjsKICAgICAgICBzZXQgLWY7CiAgICAgICAgWyAiJHtJVVNFLXVu c2V0fSIgIT0gInVuc2V0IiBdICYmIGV4cG9ydCBFX0lVU0U9IiR7RV9JVVNFfSAke0lVU0V9 IjsKICAgICAgICBbICIke0RFUEVORC11bnNldH0iICE9ICJ1bnNldCIgXSAmJiBleHBvcnQg RV9ERVBFTkQ9IiR7RV9ERVBFTkR9ICR7REVQRU5EfSI7CiAgICAgICAgWyAiJHtSREVQRU5E LXVuc2V0fSIgIT0gInVuc2V0IiBdICYmIGV4cG9ydCBFX1JERVBFTkQ9IiR7RV9SREVQRU5E fSAke1JERVBFTkR9IjsKICAgICAgICBbICIke1BERVBFTkQtdW5zZXR9IiAhPSAidW5zZXQi IF0gJiYgZXhwb3J0IEVfUERFUEVORD0iJHtFX1BERVBFTkR9ICR7UERFUEVORH0iOwogICAg ICAgIFsgIiR7Ql9JVVNFLXVuc2V0fSIgIT0gInVuc2V0IiBdICYmIElVU0U9IiR7Ql9JVVNF fSI7CiAgICAgICAgWyAiJHtCX0lVU0UtdW5zZXR9IiAhPSAidW5zZXQiIF0gfHwgdW5zZXQg SVVTRTsKICAgICAgICBbICIke0JfREVQRU5ELXVuc2V0fSIgIT0gInVuc2V0IiBdICYmIERF UEVORD0iJHtCX0RFUEVORH0iOwogICAgICAgIFsgIiR7Ql9ERVBFTkQtdW5zZXR9IiAhPSAi dW5zZXQiIF0gfHwgdW5zZXQgREVQRU5EOwogICAgICAgIFsgIiR7Ql9SREVQRU5ELXVuc2V0 fSIgIT0gInVuc2V0IiBdICYmIFJERVBFTkQ9IiR7Ql9SREVQRU5EfSI7CiAgICAgICAgWyAi JHtCX1JERVBFTkQtdW5zZXR9IiAhPSAidW5zZXQiIF0gfHwgdW5zZXQgUkRFUEVORDsKICAg ICAgICBbICIke0JfUERFUEVORC11bnNldH0iICE9ICJ1bnNldCIgXSAmJiBQREVQRU5EPSIk e0JfUERFUEVORH0iOwogICAgICAgIFsgIiR7Ql9QREVQRU5ELXVuc2V0fSIgIT0gInVuc2V0 IiBdIHx8IHVuc2V0IFBERVBFTkQ7CiAgICAgICAgc2V0ICtmOwogICAgICAgIGlmIFtbIC1u ICR7IV9fZXhwb3J0X2Z1bmNzX3Zhcn0gXV07IHRoZW4KICAgICAgICAgICAgZm9yIHggaW4g JHshX19leHBvcnRfZnVuY3NfdmFyfTsKICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAg IGRlYnVnLXByaW50ICJFWFBPUlRfRlVOQ1RJT05TOiAkeCAtPiAke0VDTEFTU31fJHgiOwog ICAgICAgICAgICAgICAgZGVjbGFyZSAtRiAiJHtFQ0xBU1N9XyR4IiA+IC9kZXYvbnVsbCB8 fCBkaWUgIkVYUE9SVF9GVU5DVElPTlM6ICR7RUNMQVNTfV8keCBpcyBub3QgZGVmaW5lZCI7 CiAgICAgICAgICAgICAgICBldmFsICIkeCgpIHsgJHtFQ0xBU1N9XyR4IFwiXCRAXCIgOyB9 IiA+IC9kZXYvbnVsbDsKICAgICAgICAgICAgZG9uZTsKICAgICAgICBmaTsKICAgICAgICB1 bnNldCAkX19leHBvcnRfZnVuY3NfdmFyOwogICAgICAgIGhhc3EgJDEgJElOSEVSSVRFRCB8 fCBleHBvcnQgSU5IRVJJVEVEPSIkSU5IRVJJVEVEICQxIjsKICAgICAgICBzaGlmdDsKICAg IGRvbmU7CiAgICAoKC0tRUNMQVNTX0RFUFRIKSk7CiAgICBpZiAoKCBFQ0xBU1NfREVQVEgg PiAwICkpOyB0aGVuCiAgICAgICAgZXhwb3J0IEVDTEFTUz0kUEVDTEFTUzsKICAgICAgICBf X2V4cG9ydF9mdW5jc192YXI9JHByZXZfZXhwb3J0X2Z1bmNzX3ZhcjsKICAgIGVsc2UKICAg ICAgICB1bnNldCBFQ0xBU1MgX19leHBvcnRfZnVuY3NfdmFyOwogICAgZmk7CiAgICByZXR1 cm4gMAp9Cmluc2ludG8gKCkgCnsgCiAgICBpZiBbICIkMSIgPT0gIi8iIF07IHRoZW4KICAg ICAgICBleHBvcnQgSU5TREVTVFRSRUU9IiI7CiAgICBlbHNlCiAgICAgICAgZXhwb3J0IElO U0RFU1RUUkVFPSQxOwogICAgICAgIGlmIFsgISAtZCAiJHtEfSR7SU5TREVTVFRSRUV9IiBd OyB0aGVuCiAgICAgICAgICAgIGluc3RhbGwgLWQgIiR7RH0ke0lOU0RFU1RUUkVFfSI7CiAg ICAgICAgZmk7CiAgICBmaQp9Cmluc29wdHMgKCkgCnsgCiAgICBleHBvcnQgSU5TT1BUSU9O Uz0iJEAiOwogICAgaGFzcSAtcyAke0lOU09QVElPTlN9ICYmIGRpZSAiTmV2ZXIgY2FsbCBp bnNvcHRzKCkgd2l0aCAtcyIKfQppbnRvICgpIAp7IAogICAgaWYgWyAiJDEiID09ICIvIiBd OyB0aGVuCiAgICAgICAgZXhwb3J0IERFU1RUUkVFPSIiOwogICAgZWxzZQogICAgICAgIGV4 cG9ydCBERVNUVFJFRT0kMTsKICAgICAgICBpZiBbICEgLWQgIiR7RH0ke0RFU1RUUkVFfSIg XTsgdGhlbgogICAgICAgICAgICBpbnN0YWxsIC1kICIke0R9JHtERVNUVFJFRX0iOwogICAg ICAgIGZpOwogICAgZmkKfQppcy1sb2dpbi1kaXNhYmxlZCAoKSAKeyAKICAgIHNoZWxsPSQo ZWdldHNoZWxsICIkMSIpOwogICAgY2FzZSAke3NoZWxsfSBpbiAKICAgICAgICAvYmluL2Zh bHNlIHwgL3Vzci9iaW4vZmFsc2UgfCAvc2Jpbi9ub2xvZ2luIHwgL3Vzci9zYmluL25vbG9n aW4pCiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAg ICAgICByZXR1cm4gMQogICAgICAgIDs7CiAgICBlc2FjCn0KaXNfZmluYWxfYWJpICgpIAp7 IAogICAgaGFzX211bHRpbGliX3Byb2ZpbGUgfHwgcmV0dXJuIDA7CiAgICBsb2NhbCBBTExf QUJJUz0kKGdldF9pbnN0YWxsX2FiaXMpOwogICAgbG9jYWwgTEFTVF9BQkk9JHtBTExfQUJJ Uy8qIC99OwogICAgW1sgJHtMQVNUX0FCSX0gPT0gJHtBQkl9IF1dCn0Ka2VlcGRpciAoKSAK eyAKICAgIGRvZGlyICIkQCI7CiAgICBsb2NhbCB4OwogICAgaWYgWyAiJDEiID09ICItUiIg XSB8fCBbICIkMSIgPT0gIi1yIiBdOyB0aGVuCiAgICAgICAgc2hpZnQ7CiAgICAgICAgZmlu ZCAiJEAiIC10eXBlIGQgLXByaW50ZiAiJHtEfSVwLy5rZWVwXyR7Q0FURUdPUll9XyR7UE59 LSR7U0xPVH1cbiIgfCB0ciAiXG4iICJcMCIgfCAke1hBUkdTfSAtMCAtbjEwMCB0b3VjaCB8 fCBkaWUgIkZhaWxlZCB0byByZWN1cnNpdmVseSBjcmVhdGUgLmtlZXAgZmlsZXMiOwogICAg ZWxzZQogICAgICAgIGZvciB4IGluICIkQCI7CiAgICAgICAgZG8KICAgICAgICAgICAgdG91 Y2ggIiR7RH0ke3h9Ly5rZWVwXyR7Q0FURUdPUll9XyR7UE59LSR7U0xPVH0iIHx8IGRpZSAi RmFpbGVkIHRvIGNyZWF0ZSAua2VlcCBpbiAke0R9JHt4fSI7CiAgICAgICAgZG9uZTsKICAg IGZpCn0Ka2VybmVsX2lzICgpIAp7IAogICAgZ2V0X3ZlcnNpb247CiAgICBsb2NhbCBvcGVy YXRvciB0ZXN0IHZhbHVlIHg9MCB5PTAgej0wOwogICAgY2FzZSAkezF9IGluIAogICAgICAg IGx0KQogICAgICAgICAgICBvcGVyYXRvcj0iLWx0IjsKICAgICAgICAgICAgc2hpZnQKICAg ICAgICA7OwogICAgICAgIGd0KQogICAgICAgICAgICBvcGVyYXRvcj0iLWd0IjsKICAgICAg ICAgICAgc2hpZnQKICAgICAgICA7OwogICAgICAgIGxlKQogICAgICAgICAgICBvcGVyYXRv cj0iLWxlIjsKICAgICAgICAgICAgc2hpZnQKICAgICAgICA7OwogICAgICAgIGdlKQogICAg ICAgICAgICBvcGVyYXRvcj0iLWdlIjsKICAgICAgICAgICAgc2hpZnQKICAgICAgICA7Owog ICAgICAgIGVxKQogICAgICAgICAgICBvcGVyYXRvcj0iLWVxIjsKICAgICAgICAgICAgc2hp ZnQKICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIG9wZXJhdG9yPSItZXEiCiAg ICAgICAgOzsKICAgIGVzYWM7CiAgICBmb3IgeCBpbiAke0B9OwogICAgZG8KICAgICAgICBm b3IgKCh5PTA7IHk8JCgoMyAtICR7I3h9KSk7IHkrKykpCiAgICAgICAgZG8KICAgICAgICAg ICAgdmFsdWU9IiR7dmFsdWV9MCI7CiAgICAgICAgZG9uZTsKICAgICAgICB2YWx1ZT0iJHt2 YWx1ZX0ke3h9IjsKICAgICAgICB6PSQoKCR7en0gKyAxKSk7CiAgICAgICAgY2FzZSAke3p9 IGluIAogICAgICAgICAgICAxKQogICAgICAgICAgICAgICAgZm9yICgoeT0wOyB5PCQoKDMg LSAkeyNLVl9NQUpPUn0pKTsgeSsrKSkKICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAg ICAgICAgICAgdGVzdD0iJHt0ZXN0fTAiOwogICAgICAgICAgICAgICAgZG9uZTsKICAgICAg ICAgICAgICAgIHRlc3Q9IiR7dGVzdH0ke0tWX01BSk9SfSIKICAgICAgICAgICAgOzsKICAg ICAgICAgICAgMikKICAgICAgICAgICAgICAgIGZvciAoKHk9MDsgeTwkKCgzIC0gJHsjS1Zf TUlOT1J9KSk7IHkrKykpCiAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAg IHRlc3Q9IiR7dGVzdH0wIjsKICAgICAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgICAg ICB0ZXN0PSIke3Rlc3R9JHtLVl9NSU5PUn0iCiAgICAgICAgICAgIDs7CiAgICAgICAgICAg IDMpCiAgICAgICAgICAgICAgICBmb3IgKCh5PTA7IHk8JCgoMyAtICR7I0tWX1BBVENIfSkp OyB5KyspKQogICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICB0ZXN0PSIk e3Rlc3R9MCI7CiAgICAgICAgICAgICAgICBkb25lOwogICAgICAgICAgICAgICAgdGVzdD0i JHt0ZXN0fSR7S1ZfUEFUQ0h9IgogICAgICAgICAgICA7OwogICAgICAgICAgICAqKQogICAg ICAgICAgICAgICAgZGllICJFcnJvciBpbiBrZXJuZWwtMl9rZXJuZWxfaXMoKTogVG9vIG1h bnkgcGFyYW1ldGVycy4iCiAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYzsKICAgIGRvbmU7 CiAgICBbICR7dGVzdH0gJHtvcGVyYXRvcn0gJHt2YWx1ZX0gXSAmJiByZXR1cm4gMCB8fCBy ZXR1cm4gMQp9CmxjaGdycCAoKSAKeyAKICAgIGNoZ3JwIC1oICIkQCIKfQpsY2hvd24gKCkg CnsgCiAgICBjaG93biAtaCAiJEAiCn0KbGlib3B0cyAoKSAKeyAKICAgIGV4cG9ydCBMSUJP UFRJT05TPSIkQCI7CiAgICBoYXNxIC1zICR7TElCT1BUSU9OU30gJiYgZGllICJOZXZlciBj YWxsIGxpYm9wdHMoKSB3aXRoIC1zIgp9CmxpbnV4LWluZm9fcGtnX3NldHVwICgpIAp7IAog ICAgZ2V0X3ZlcnNpb24gfHwgZGllICJVbmFibGUgdG8gY2FsY3VsYXRlIExpbnV4IEtlcm5l bCB2ZXJzaW9uIjsKICAgIGlmIGtlcm5lbF9pcyAyIDQ7IHRoZW4KICAgICAgICBpZiBbICIk KCBnY2MtbWFqb3ItdmVyc2lvbiApIiAtZXEgIjQiIF07IHRoZW4KICAgICAgICAgICAgZWNo bzsKICAgICAgICAgICAgZXdhcm4gIkJlIHdhcm5lZCAhISA+PXN5cy1kZXZlbC9nY2MtNC4w LjAgaXNuJ3Qgc3VwcG9ydGVkIHdpdGgiOwogICAgICAgICAgICBld2FybiAibGludXgtMi40 IChvciBtb2R1bGVzIGJ1aWxkaW5nIGFnYWluc3QgYSBsaW51eC0yLjQga2VybmVsKSEiOwog ICAgICAgICAgICBlY2hvOwogICAgICAgICAgICBld2FybiAiRWl0aGVyIHN3aXRjaCB0byBh bm90aGVyIGdjYy12ZXJzaW9uICh2aWEgZ2NjLWNvbmZpZykgb3IgdXNlIGEiOwogICAgICAg ICAgICBld2FybiAibmV3ZXIga2VybmVsIHRoYXQgc3VwcG9ydHMgZ2NjLTQuIjsKICAgICAg ICAgICAgZWNobzsKICAgICAgICAgICAgZXdhcm4gIkFsc28gYmUgYXdhcmUgdGhhdCBidWdy ZXBvcnRzIGFib3V0IGdjYy00IG5vdCB3b3JraW5nIjsKICAgICAgICAgICAgZXdhcm4gIndp dGggbGludXgtMi40IGJhc2VkIGVidWlsZHMgd2lsbCBiZSBjbG9zZWQgYXMgSU5WQUxJRCEi OwogICAgICAgICAgICBlY2hvOwogICAgICAgICAgICBlcGF1c2UgMTA7CiAgICAgICAgZmk7 CiAgICBmaTsKICAgIFsgLW4gIiR7Q09ORklHX0NIRUNLfSIgXSAmJiBjaGVja19leHRyYV9j b25maWcKfQpsaW51eC1tb2RfcGtnX3Bvc3RpbnN0ICgpIAp7IAogICAgZGVidWctcHJpbnQt ZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICAke1VQREFURV9ERVBNT0R9ICYmIHVwZGF0 ZV9kZXBtb2Q7CiAgICAke1VQREFURV9NT0RVTEVTfSAmJiB1cGRhdGVfbW9kdWxlczsKICAg ICR7VVBEQVRFX01PRFVMRURCfSAmJiB1cGRhdGVfbW9kdWxlZGIKfQpsaW51eC1tb2RfcGtn X3Bvc3RybSAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICQq OwogICAgcmVtb3ZlX21vZHVsZWRiCn0KbGludXgtbW9kX3BrZ19wcmVpbnN0ICgpIAp7IAog ICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBbIC1kICIke0R9 bGliL21vZHVsZXMiIF0gJiYgVVBEQVRFX0RFUE1PRD10cnVlIHx8IFVQREFURV9ERVBNT0Q9 ZmFsc2U7CiAgICBbIC1kICIke0R9ZXRjL21vZHVsZXMuZCIgXSAmJiBVUERBVEVfTU9EVUxF Uz10cnVlIHx8IFVQREFURV9NT0RVTEVTPWZhbHNlOwogICAgWyAtZCAiJHtEfWxpYi9tb2R1 bGVzIiBdICYmIFVQREFURV9NT0RVTEVEQj10cnVlIHx8IFVQREFURV9NT0RVTEVEQj1mYWxz ZQp9CmxpbnV4LW1vZF9wa2dfc2V0dXAgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlv biAke0ZVTkNOQU1FfSAkKjsKICAgIGxpbnV4LWluZm9fcGtnX3NldHVwOwogICAgcmVxdWly ZV9jb25maWd1cmVkX2tlcm5lbDsKICAgIGNoZWNrX2tlcm5lbF9idWlsdDsKICAgIHN0cmlw X21vZHVsZW5hbWVzOwogICAgW1sgLW4gJHtNT0RVTEVfTkFNRVN9IF1dICYmIGNoZWNrX21v ZHVsZXNfc3VwcG9ydGVkOwogICAgc2V0X2t2b2JqCn0KbGludXgtbW9kX3NyY19jb21waWxl ICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBs b2NhbCBtb2R1bGVuYW1lIGxpYmRpciBzcmNkaXIgb2JqZGlyIGkgbiBteUFCST0iJHtBQkl9 IjsKICAgIHNldF9hcmNoX3RvX2tlcm5lbDsKICAgIEFCST0iJHtLRVJORUxfQUJJfSI7CiAg ICBCVUlMRF9UQVJHRVRTPSR7QlVJTERfVEFSR0VUUzotY2xlYW4gbW9kdWxlfTsKICAgIHN0 cmlwX21vZHVsZW5hbWVzOwogICAgY2QgIiR7U30iOwogICAgdG91Y2ggTW9kdWxlLnN5bXZl cnM7CiAgICBmb3IgaSBpbiAke01PRFVMRV9OQU1FU307CiAgICBkbwogICAgICAgIHVuc2V0 IGxpYmRpciBzcmNkaXIgb2JqZGlyOwogICAgICAgIGZvciBuIGluICQoZmluZF9tb2R1bGVf cGFyYW1zICR7aX0pOwogICAgICAgIGRvCiAgICAgICAgICAgIGV2YWwgJHtuLzoqfT0ke24v KjovfTsKICAgICAgICBkb25lOwogICAgICAgIGxpYmRpcj0ke2xpYmRpcjotbWlzY307CiAg ICAgICAgc3JjZGlyPSR7c3JjZGlyOi0ke1N9fTsKICAgICAgICBvYmpkaXI9JHtvYmpkaXI6 LSR7c3JjZGlyfX07CiAgICAgICAgaWYgWyAhIC1mICIke3NyY2Rpcn0vLmJ1aWx0IiBdOyB0 aGVuCiAgICAgICAgICAgIGNkICR7c3JjZGlyfTsKICAgICAgICAgICAgbG4gLXMgIiR7U30i L01vZHVsZS5zeW12ZXJzIE1vZHVsZS5zeW12ZXJzOwogICAgICAgICAgICBlaW5mbyAiUHJl cGFyaW5nICR7bW9kdWxlbmFtZX0gbW9kdWxlIjsKICAgICAgICAgICAgaWYgW1sgLW4gJHtF Q09ORl9QQVJBTVN9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBlY29uZiAke0VDT05GX1BB UkFNU30gfHwgZGllICJVbmFibGUgdG8gcnVuIGVjb25mICR7RUNPTkZfUEFSQU1TfSI7CiAg ICAgICAgICAgIGZpOwogICAgICAgICAgICBldmFsICJlbWFrZSBIT1NUQ0M9XCIkKHRjLWdl dEJVSUxEX0NDKVwiIAkJCQkJCUNST1NTX0NPTVBJTEU9JHtDSE9TVH0tIAkJCQkJCUxERkxB R1M9XCIkKGdldF9hYmlfTERGTEFHUylcIiAJCQkJCQkke0JVSUxEX0ZJWEVTfSAJCQkJCQkk e0JVSUxEX1BBUkFNU30gCQkJCQkJJHtCVUlMRF9UQVJHRVRTfSAiIHx8IGRpZSAiVW5hYmxl IHRvIGVtYWtlIEhPU1RDQz0iJCh0Yy1nZXRCVUlMRF9DQykiIENST1NTX0NPTVBJTEU9JHtD SE9TVH0tIExERkxBR1M9IiQoZ2V0X2FiaV9MREZMQUdTKSIgJHtCVUlMRF9GSVhFU30gJHtC VUlMRF9QQVJBTVN9ICR7QlVJTERfVEFSR0VUU30iOwogICAgICAgICAgICBjZCAke09MRFBX RH07CiAgICAgICAgICAgIHRvdWNoICR7c3JjZGlyfS8uYnVpbHQ7CiAgICAgICAgZmk7CiAg ICBkb25lOwogICAgc2V0X2FyY2hfdG9fcG9ydGFnZTsKICAgIEFCST0iJHtteUFCSX0iCn0K bGludXgtbW9kX3NyY19pbnN0YWxsICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24g JHtGVU5DTkFNRX0gJCo7CiAgICBsb2NhbCBtb2R1bGVuYW1lIGxpYmRpciBzcmNkaXIgb2Jq ZGlyIGkgbjsKICAgIHN0cmlwX21vZHVsZW5hbWVzOwogICAgZm9yIGkgaW4gJHtNT0RVTEVf TkFNRVN9OwogICAgZG8KICAgICAgICB1bnNldCBsaWJkaXIgc3JjZGlyIG9iamRpcjsKICAg ICAgICBmb3IgbiBpbiAkKGZpbmRfbW9kdWxlX3BhcmFtcyAke2l9KTsKICAgICAgICBkbwog ICAgICAgICAgICBldmFsICR7bi86Kn09JHtuLyo6L307CiAgICAgICAgZG9uZTsKICAgICAg ICBsaWJkaXI9JHtsaWJkaXI6LW1pc2N9OwogICAgICAgIHNyY2Rpcj0ke3NyY2RpcjotJHtT fX07CiAgICAgICAgb2JqZGlyPSR7b2JqZGlyOi0ke3NyY2Rpcn19OwogICAgICAgIGVpbmZv ICJJbnN0YWxsaW5nICR7bW9kdWxlbmFtZX0gbW9kdWxlIjsKICAgICAgICBjZCAke29iamRp cn0gfHwgZGllICIke29iamRpcn0gZG9lcyBub3QgZXhpc3QiOwogICAgICAgIGluc2ludG8g L2xpYi9tb2R1bGVzLyR7S1ZfRlVMTH0vJHtsaWJkaXJ9OwogICAgICAgIGRvaW5zICR7bW9k dWxlbmFtZX0uJHtLVl9PQkp9IHx8IGRpZSAiZG9pbnMgJHttb2R1bGVuYW1lfS4ke0tWX09C Sn0gZmFpbGVkIjsKICAgICAgICBjZCAke09MRFBXRH07CiAgICAgICAgZ2VuZXJhdGVfbW9k dWxlc2QgJHtvYmpkaXJ9LyR7bW9kdWxlbmFtZX07CiAgICBkb25lCn0KbGludXhfY2hrY29u ZmlnX2J1aWx0aW4gKCkgCnsgCiAgICBsb2NhbCBSRVNVTFQ7CiAgICByZXF1aXJlX2NvbmZp Z3VyZWRfa2VybmVsOwogICAgUkVTVUxUPSIkKGdldGZpbGV2YXIgQ09ORklHXyR7MX0gJHtL Vl9PVVRfRElSfS8uY29uZmlnKSI7CiAgICBbICIke1JFU1VMVH0iID0gInkiIF0gJiYgcmV0 dXJuIDAgfHwgcmV0dXJuIDEKfQpsaW51eF9jaGtjb25maWdfbW9kdWxlICgpIAp7IAogICAg bG9jYWwgUkVTVUxUOwogICAgcmVxdWlyZV9jb25maWd1cmVkX2tlcm5lbDsKICAgIFJFU1VM VD0iJChnZXRmaWxldmFyIENPTkZJR18kezF9ICR7S1ZfT1VUX0RJUn0vLmNvbmZpZykiOwog ICAgWyAiJHtSRVNVTFR9IiA9ICJtIiBdICYmIHJldHVybiAwIHx8IHJldHVybiAxCn0KbGlu dXhfY2hrY29uZmlnX3ByZXNlbnQgKCkgCnsgCiAgICBsb2NhbCBSRVNVTFQ7CiAgICByZXF1 aXJlX2NvbmZpZ3VyZWRfa2VybmVsOwogICAgUkVTVUxUPSIkKGdldGZpbGV2YXIgQ09ORklH XyR7MX0gJHtLVl9PVVRfRElSfS8uY29uZmlnKSI7CiAgICBbICIke1JFU1VMVH0iID0gIm0i IC1vICIke1JFU1VMVH0iID0gInkiIF0gJiYgcmV0dXJuIDAgfHwgcmV0dXJuIDEKfQpsaW51 eF9jaGtjb25maWdfc3RyaW5nICgpIAp7IAogICAgcmVxdWlyZV9jb25maWd1cmVkX2tlcm5l bDsKICAgIGdldGZpbGV2YXIgIkNPTkZJR18kezF9IiAiJHtLVl9PVVRfRElSfS8uY29uZmln Igp9CmxpbnV4X2NvbmZpZ19leGlzdHMgKCkgCnsgCiAgICBbIC1zICIke0tWX09VVF9ESVJ9 Ly5jb25maWciIF0KfQptYWtlX2Rlc2t0b3BfZW50cnkgKCkgCnsgCiAgICBbWyAteiAkMSBd XSAmJiBlZXJyb3IgIm1ha2VfZGVza3RvcF9lbnRyeTogWW91IG11c3Qgc3BlY2lmeSB0aGUg ZXhlY3V0YWJsZSIgJiYgcmV0dXJuIDE7CiAgICBsb2NhbCBleGVjPSR7MX07CiAgICBsb2Nh bCBuYW1lPSR7MjotJHtQTn19OwogICAgbG9jYWwgaWNvbj0kezM6LSR7UE59fTsKICAgIGxv Y2FsIHR5cGU9JHs0fTsKICAgIGxvY2FsIHBhdGg9JHs1fTsKICAgIGlmIFtbIC16ICR7dHlw ZX0gXV07IHRoZW4KICAgICAgICBsb2NhbCBjYXRtYWo9JHtDQVRFR09SWSUlLSp9OwogICAg ICAgIGxvY2FsIGNhdG1pbj0ke0NBVEVHT1JZIyMqLX07CiAgICAgICAgY2FzZSAke2NhdG1h an0gaW4gCiAgICAgICAgICAgIGFwcCkKICAgICAgICAgICAgICAgIGNhc2UgJHtjYXRtaW59 IGluIAogICAgICAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHkpCiAgICAgICAgICAgICAg ICAgICAgICAgIHR5cGU9QWNjZXNzaWJpbGl0eQogICAgICAgICAgICAgICAgICAgIDs7CiAg ICAgICAgICAgICAgICAgICAgYWRtaW4pCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9 U3lzdGVtCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBhbnRp dmlydXMpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9U3lzdGVtCiAgICAgICAgICAg ICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBhcmNoKQogICAgICAgICAgICAgICAg ICAgICAgICB0eXBlPUFyY2hpdmluZwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAg ICAgICAgICAgICAgYmFja3VwKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUFyY2hp dmluZwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgY2RyKQog ICAgICAgICAgICAgICAgICAgICAgICB0eXBlPURpc2NCdXJuaW5nCiAgICAgICAgICAgICAg ICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBkaWN0cykKICAgICAgICAgICAgICAgICAg ICAgICAgdHlwZT1EaWN0aW9uYXJ5CiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAg ICAgICAgICAgICBkb2MpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9RG9jdW1lbnRh dGlvbgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZWRpdG9y cykKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1UZXh0RWRpdG9yCiAgICAgICAgICAg ICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBlbWFjcykKICAgICAgICAgICAgICAg ICAgICAgICAgdHlwZT1UZXh0RWRpdG9yCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAg ICAgICAgICAgICAgICBlbXVsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9 RW11bGF0b3IKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGxh cHRvcCkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1IYXJkd2FyZVNldHRpbmdzCiAg ICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBvZmZpY2UpCiAgICAg ICAgICAgICAgICAgICAgICAgIHR5cGU9T2ZmaWNlCiAgICAgICAgICAgICAgICAgICAgOzsK ICAgICAgICAgICAgICAgICAgICBwZGEpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9 UERBCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICB2aW0pCiAg ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9VGV4dEVkaXRvcgogICAgICAgICAgICAgICAg ICAgIDs7CiAgICAgICAgICAgICAgICAgICAgeGVtYWNzKQogICAgICAgICAgICAgICAgICAg ICAgICB0eXBlPVRleHRFZGl0b3IKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAg ICAgICAgICAgICopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9CiAgICAgICAgICAg ICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAgOzsKICAgICAg ICAgICAgZGV2KQogICAgICAgICAgICAgICAgdHlwZT0iRGV2ZWxvcG1lbnQiCiAgICAgICAg ICAgIDs7CiAgICAgICAgICAgIGdhbWVzKQogICAgICAgICAgICAgICAgY2FzZSAke2NhdG1p bn0gaW4gCiAgICAgICAgICAgICAgICAgICAgYWN0aW9uIHwgZnBzKQogICAgICAgICAgICAg ICAgICAgICAgICB0eXBlPUFjdGlvbkdhbWUKICAgICAgICAgICAgICAgICAgICA7OwogICAg ICAgICAgICAgICAgICAgIGFyY2FkZSkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1B cmNhZGVHYW1lCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBi b2FyZCkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1Cb2FyZEdhbWUKICAgICAgICAg ICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGVtdWxhdGlvbikKICAgICAgICAg ICAgICAgICAgICAgICAgdHlwZT1FbXVsYXRvcgogICAgICAgICAgICAgICAgICAgIDs7CiAg ICAgICAgICAgICAgICAgICAga2lkcykKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1L aWRzR2FtZQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgcHV6 emxlKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUxvZ2ljR2FtZQogICAgICAgICAg ICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgcm9ndWVsaWtlKQogICAgICAgICAg ICAgICAgICAgICAgICB0eXBlPVJvbGVQbGF5aW5nCiAgICAgICAgICAgICAgICAgICAgOzsK ICAgICAgICAgICAgICAgICAgICBycGcpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9 Um9sZVBsYXlpbmcKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAg IHNpbXVsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9U2ltdWxhdGlvbgog ICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgc3BvcnRzKQogICAg ICAgICAgICAgICAgICAgICAgICB0eXBlPVNwb3J0c0dhbWUKICAgICAgICAgICAgICAgICAg ICA7OwogICAgICAgICAgICAgICAgICAgIHN0cmF0ZWd5KQogICAgICAgICAgICAgICAgICAg ICAgICB0eXBlPVN0cmF0ZWd5R2FtZQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAg ICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0KICAgICAgICAg ICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgZXNhYzsKICAgICAgICAgICAgICAgIHR5 cGU9IkdhbWU7JHt0eXBlfSIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgZ25vbWUpCiAg ICAgICAgICAgICAgICB0eXBlPSJHbm9tZTtHVEsiCiAgICAgICAgICAgIDs7CiAgICAgICAg ICAgIGtkZSkKICAgICAgICAgICAgICAgIHR5cGU9IktERTtRdCIKICAgICAgICAgICAgOzsK ICAgICAgICAgICAgbWFpbCkKICAgICAgICAgICAgICAgIHR5cGU9Ik5ldHdvcms7RW1haWwi CiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIG1lZGlhKQogICAgICAgICAgICAgICAgY2Fz ZSAke2NhdG1pbn0gaW4gCiAgICAgICAgICAgICAgICAgICAgZ2Z4KQogICAgICAgICAgICAg ICAgICAgICAgICB0eXBlPUdyYXBoaWNzCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAg ICAgICAgICAgICAgICByYWRpbykKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1UdW5l cgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgc291bmQpCiAg ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9QXVkaW8KICAgICAgICAgICAgICAgICAgICA7 OwogICAgICAgICAgICAgICAgICAgIHR2KQogICAgICAgICAgICAgICAgICAgICAgICB0eXBl PVRWCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICB2aWRlbykK ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1WaWRlbwogICAgICAgICAgICAgICAgICAg IDs7CiAgICAgICAgICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgICAgICAgICAgdHlw ZT0KICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgZXNhYzsKICAgICAg ICAgICAgICAgIHR5cGU9IkF1ZGlvVmlkZW87JHt0eXBlfSIKICAgICAgICAgICAgOzsKICAg ICAgICAgICAgbmV0KQogICAgICAgICAgICAgICAgY2FzZSAke2NhdG1pbn0gaW4gCiAgICAg ICAgICAgICAgICAgICAgZGlhbHVwKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPURp YWx1cAogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZnRwKQog ICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUZpbGVUcmFuc2ZlcgogICAgICAgICAgICAg ICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgaW0pCiAgICAgICAgICAgICAgICAgICAg ICAgIHR5cGU9SW5zdGFudE1lc3NhZ2luZwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAg ICAgICAgICAgICAgICAgaXJjKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUlSQ0Ns aWVudAogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgbWFpbCkK ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1FbWFpbAogICAgICAgICAgICAgICAgICAg IDs7CiAgICAgICAgICAgICAgICAgICAgbmV3cykKICAgICAgICAgICAgICAgICAgICAgICAg dHlwZT1OZXdzCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBu bnRwKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPU5ld3MKICAgICAgICAgICAgICAg ICAgICA7OwogICAgICAgICAgICAgICAgICAgIHAycCkKICAgICAgICAgICAgICAgICAgICAg ICAgdHlwZT1GaWxlVHJhbnNmZXIKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAg ICAgICAgICAgICopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9CiAgICAgICAgICAg ICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWM7CiAgICAgICAgICAgICAgICB0eXBl PSJOZXR3b3JrOyR7dHlwZX0iCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIHNjaSkKICAg ICAgICAgICAgICAgIGNhc2UgJHtjYXRtaW59IGluIAogICAgICAgICAgICAgICAgICAgIGFz dHJvKikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1Bc3Ryb25vbXkKICAgICAgICAg ICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGJpbyopCiAgICAgICAgICAgICAg ICAgICAgICAgIHR5cGU9QmlvbG9neQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAg ICAgICAgICAgICAgY2FsYyopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9Q2FsY3Vs YXRvcgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgY2hlbSop CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9Q2hlbWlzdHJ5CiAgICAgICAgICAgICAg ICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBlbGVjKikKICAgICAgICAgICAgICAgICAg ICAgICAgdHlwZT1FbGVjdHJvbmljcwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAg ICAgICAgICAgICAgZ2VvKikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1HZW9sb2d5 CiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBtYXRoKikKICAg ICAgICAgICAgICAgICAgICAgICAgdHlwZT1NYXRoCiAgICAgICAgICAgICAgICAgICAgOzsK ICAgICAgICAgICAgICAgICAgICBwaHlzaWNzKQogICAgICAgICAgICAgICAgICAgICAgICB0 eXBlPVBoeXNpY3MKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAg IHZpc3VhbCopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9RGF0YVZpc3VhbGl6YXRp b24KICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgICopCiAgICAg ICAgICAgICAgICAgICAgICAgIHR5cGU9CiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAg ICAgICAgICAgIGVzYWM7CiAgICAgICAgICAgICAgICB0eXBlPSJTY2llbmNlOyR7dHlwZX0i CiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIHN5cykKICAgICAgICAgICAgICAgIHR5cGU9 IlN5c3RlbSIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgd3d3KQogICAgICAgICAgICAg ICAgY2FzZSAke2NhdG1pbn0gaW4gCiAgICAgICAgICAgICAgICAgICAgY2xpZW50KQogICAg ICAgICAgICAgICAgICAgICAgICB0eXBlPVdlYkJyb3dzZXIKICAgICAgICAgICAgICAgICAg ICA7OwogICAgICAgICAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5 cGU9CiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWM7CiAgICAg ICAgICAgICAgICB0eXBlPSJOZXR3b3JrIgogICAgICAgICAgICA7OwogICAgICAgICAgICAq KQogICAgICAgICAgICAgICAgdHlwZT0KICAgICAgICAgICAgOzsKICAgICAgICBlc2FjOwog ICAgZmk7CiAgICBpZiBbICIke1NMT1R9IiA9PSAiMCIgXTsgdGhlbgogICAgICAgIGxvY2Fs IGRlc2t0b3BfbmFtZT0iJHtQTn0iOwogICAgZWxzZQogICAgICAgIGxvY2FsIGRlc2t0b3Bf bmFtZT0iJHtQTn0tJHtTTE9UfSI7CiAgICBmaTsKICAgIGxvY2FsIGRlc2t0b3A9IiR7VH0v JChlY2hvICR7ZXhlY30gfCBzZWQgJ3M6W1s6c3BhY2U6XS86XTpfOmcnKS0ke2Rlc2t0b3Bf bmFtZX0uZGVza3RvcCI7CiAgICBjYXQgID4gIiR7ZGVza3RvcH0iIDw8LUVPRgpbRGVza3Rv cCBFbnRyeV0KVmVyc2lvbj0xLjAKTmFtZT0ke25hbWV9ClR5cGU9QXBwbGljYXRpb24KQ29t bWVudD0ke0RFU0NSSVBUSU9OfQpFeGVjPSR7ZXhlY30KVHJ5RXhlYz0ke2V4ZWMlJSAqfQpJ Y29uPSR7aWNvbn0KQ2F0ZWdvcmllcz0ke3R5cGV9OwpFT0YKCiAgICBbWyAtbiAke3BhdGh9 IF1dICYmIGVjaG8gIlBhdGg9JHtwYXRofSIgPj4gIiR7ZGVza3RvcH0iOwogICAgKCBpbnNp bnRvIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zOwogICAgZG9pbnMgIiR7ZGVza3RvcH0iICkK fQptYWtlX3Nlc3Npb25fZGVza3RvcCAoKSAKeyAKICAgIFtbIC16ICQxIF1dICYmIGVlcnJv ciAiJDA6IFlvdSBtdXN0IHNwZWNpZnkgdGhlIHRpdGxlIiAmJiByZXR1cm4gMTsKICAgIFtb IC16ICQyIF1dICYmIGVlcnJvciAiJDA6IFlvdSBtdXN0IHNwZWNpZnkgdGhlIGNvbW1hbmQi ICYmIHJldHVybiAxOwogICAgbG9jYWwgdGl0bGU9JDE7CiAgICBsb2NhbCBjb21tYW5kPSQy OwogICAgbG9jYWwgZGVza3RvcD0ke1R9LyR7d206LSR7UE59fS5kZXNrdG9wOwogICAgc2hp ZnQgMjsKICAgIGNhdCAgPiAiJHtkZXNrdG9wfSIgPDwtRU9GCltEZXNrdG9wIEVudHJ5XQpO YW1lPSR7dGl0bGV9CkNvbW1lbnQ9VGhpcyBzZXNzaW9uIGxvZ3MgeW91IGludG8gJHt0aXRs ZX0KRXhlYz0ke2NvbW1hbmR9ICQqClRyeUV4ZWM9JHtjb21tYW5kfQpUeXBlPVhTZXNzaW9u CkVPRgoKICAgICggaW5zaW50byAvdXNyL3NoYXJlL3hzZXNzaW9uczsKICAgIGRvaW5zICIk e2Rlc2t0b3B9IiApCn0KbWFrZV93cmFwcGVyICgpIAp7IAogICAgbG9jYWwgd3JhcHBlcj0k MSBiaW49JDIgY2hkaXI9JDMgbGliZGlyPSQ0IHBhdGg9JDU7CiAgICBsb2NhbCB0bXB3cmFw cGVyPSQoZW1rdGVtcCk7CiAgICBjYXQgID4gIiR7dG1wd3JhcHBlcn0iIDw8RU9GCiMhL2Jp bi9zaApjZCAiJHtjaGRpcjotLn0iCmlmIFsgLW4gIiR7bGliZGlyfSIgXSA7IHRoZW4KCWlm IFsgIlwke0xEX0xJQlJBUllfUEFUSCtzZXR9IiA9ICJzZXQiIF0gOyB0aGVuCgkJZXhwb3J0 IExEX0xJQlJBUllfUEFUSD0iXCR7TERfTElCUkFSWV9QQVRIfToke2xpYmRpcn0iCgllbHNl CgkJZXhwb3J0IExEX0xJQlJBUllfUEFUSD0iJHtsaWJkaXJ9IgoJZmkKZmkKZXhlYyAke2Jp bn0gIlwkQCIKRU9GCgogICAgY2htb2QgZ28rcnggIiR7dG1wd3JhcHBlcn0iOwogICAgaWYg W1sgLW4gJHtwYXRofSBdXTsgdGhlbgogICAgICAgICggZXhlaW50byAiJHtwYXRofSI7CiAg ICAgICAgbmV3ZXhlICIke3RtcHdyYXBwZXJ9IiAiJHt3cmFwcGVyfSIgKSB8fCBkaWU7CiAg ICBlbHNlCiAgICAgICAgbmV3YmluICIke3RtcHdyYXBwZXJ9IiAiJHt3cmFwcGVyfSIgfHwg ZGllOwogICAgZmkKfQptb3ZlX29sZF9tb2R1bGVkYiAoKSAKeyAKICAgIGRlYnVnLXByaW50 LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICQqOwogICAgbG9jYWwgT0xERElSPSR7Uk9PVH0vdXNy L3NoYXJlL21vZHVsZS1yZWJ1aWxkLzsKICAgIGxvY2FsIE5FV0RJUj0ke1JPT1R9L3Zhci9s aWIvbW9kdWxlLXJlYnVpbGQvOwogICAgaWYgW1sgLWYgJHtPTERESVJ9L21vZHVsZWRiIF1d OyB0aGVuCiAgICAgICAgW1sgISAtZCAke05FV0RJUn0gXV0gJiYgbWtkaXIgLXAgJHtORVdE SVJ9OwogICAgICAgIFtbICEgLWYgJHtORVdESVJ9L21vZHVsZWRiIF1dICYmIG12ICR7T0xE RElSfS9tb2R1bGVkYiAke05FV0RJUn0vbW9kdWxlZGI7CiAgICAgICAgcm0gLWYgJHtPTERE SVJ9Lyo7CiAgICAgICAgcm1kaXIgJHtPTERESVJ9OwogICAgZmkKfQptdWx0aWxpYl9lbnYg KCkgCnsgCiAgICBsb2NhbCBDVEFSR0VUPSR7MTotJHtDVEFSR0VUfX07CiAgICBjYXNlICR7 Q1RBUkdFVH0gaW4gCiAgICAgICAgeDg2XzY0KikKICAgICAgICAgICAgZXhwb3J0IENGTEFH U194ODY9JHtDRkxBR1NfeDg2LS1tMzJ9OwogICAgICAgICAgICBleHBvcnQgQ0hPU1RfeDg2 PSR7Q1RBUkdFVC94ODZfNjQvaTY4Nn07CiAgICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX3g4 Nj0ke0NIT1NUX3g4Nn07CiAgICAgICAgICAgIGV4cG9ydCBDREVGSU5FX3g4Nj0iX19pMzg2 X18iOwogICAgICAgICAgICBleHBvcnQgTElCRElSX3g4Nj0ibGliIjsKICAgICAgICAgICAg ZXhwb3J0IENGTEFHU19hbWQ2ND0ke0NGTEFHU19hbWQ2NC0tbTY0fTsKICAgICAgICAgICAg ZXhwb3J0IENIT1NUX2FtZDY0PSR7Q1RBUkdFVH07CiAgICAgICAgICAgIGV4cG9ydCBDVEFS R0VUX2FtZDY0PSR7Q0hPU1RfYW1kNjR9OwogICAgICAgICAgICBleHBvcnQgQ0RFRklORV9h bWQ2ND0iX194ODZfNjRfXyI7CiAgICAgICAgICAgIGV4cG9ydCBMSUJESVJfYW1kNjQ9Imxp YjY0IjsKICAgICAgICAgICAgZXhwb3J0IE1VTFRJTElCX0FCSVM9ImFtZDY0IHg4NiI7CiAg ICAgICAgICAgIGV4cG9ydCBERUZBVUxUX0FCST0iYW1kNjQiCiAgICAgICAgOzsKICAgICAg ICBtaXBzNjQqKQogICAgICAgICAgICBleHBvcnQgQ0ZMQUdTX28zMj0ke0NGTEFHU19vMzIt LW1hYmk9MzJ9OwogICAgICAgICAgICBleHBvcnQgQ0hPU1RfbzMyPSR7Q1RBUkdFVC9taXBz NjQvbWlwc307CiAgICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX28zMj0ke0NIT1NUX28zMn07 CiAgICAgICAgICAgIGV4cG9ydCBDREVGSU5FX28zMj0iX01JUFNfU0lNID09IF9BQklPMzIi OwogICAgICAgICAgICBleHBvcnQgTElCRElSX28zMj0ibGliIjsKICAgICAgICAgICAgZXhw b3J0IENGTEFHU19uMzI9JHtDRkxBR1NfbjMyLS1tYWJpPW4zMn07CiAgICAgICAgICAgIGV4 cG9ydCBDSE9TVF9uMzI9JHtDVEFSR0VUfTsKICAgICAgICAgICAgZXhwb3J0IENUQVJHRVRf bjMyPSR7Q0hPU1RfbjMyfTsKICAgICAgICAgICAgZXhwb3J0IENERUZJTkVfbjMyPSJfTUlQ U19TSU0gPT0gX0FCSU4zMiI7CiAgICAgICAgICAgIGV4cG9ydCBMSUJESVJfbjMyPSJsaWIz MiI7CiAgICAgICAgICAgIGV4cG9ydCBDRkxBR1NfbjY0PSR7Q0ZMQUdTX242NC0tbWFiaT02 NH07CiAgICAgICAgICAgIGV4cG9ydCBDSE9TVF9uNjQ9JHtDVEFSR0VUfTsKICAgICAgICAg ICAgZXhwb3J0IENUQVJHRVRfbjY0PSR7Q0hPU1RfbjY0fTsKICAgICAgICAgICAgZXhwb3J0 IENERUZJTkVfbjY0PSJfTUlQU19TSU0gPT0gX0FCSTY0IjsKICAgICAgICAgICAgZXhwb3J0 IExJQkRJUl9uNjQ9ImxpYjY0IjsKICAgICAgICAgICAgZXhwb3J0IE1VTFRJTElCX0FCSVM9 Im42NCBuMzIgbzMyIjsKICAgICAgICAgICAgZXhwb3J0IERFRkFVTFRfQUJJPSJuMzIiCiAg ICAgICAgOzsKICAgICAgICBwb3dlcnBjNjQqKQogICAgICAgICAgICBleHBvcnQgQ0ZMQUdT X3BwYz0ke0NGTEFHU19wcGMtLW0zMn07CiAgICAgICAgICAgIGV4cG9ydCBDSE9TVF9wcGM9 JHtDVEFSR0VUL3Bvd2VycGM2NC9wb3dlcnBjfTsKICAgICAgICAgICAgZXhwb3J0IENUQVJH RVRfcHBjPSR7Q0hPU1RfcHBjfTsKICAgICAgICAgICAgZXhwb3J0IENERUZJTkVfcHBjPSIh X19wb3dlcnBjNjRfXyI7CiAgICAgICAgICAgIGV4cG9ydCBMSUJESVJfcHBjPSJsaWIiOwog ICAgICAgICAgICBleHBvcnQgQ0ZMQUdTX3BwYzY0PSR7Q0ZMQUdTX3BwYzY0LS1tNjR9Owog ICAgICAgICAgICBleHBvcnQgQ0hPU1RfcHBjNjQ9JHtDVEFSR0VUfTsKICAgICAgICAgICAg ZXhwb3J0IENUQVJHRVRfcHBjNjQ9JHtDSE9TVF9wcGM2NH07CiAgICAgICAgICAgIGV4cG9y dCBDREVGSU5FX3BwYzY0PSJfX3Bvd2VycGM2NF9fIjsKICAgICAgICAgICAgZXhwb3J0IExJ QkRJUl9wcGM2ND0ibGliNjQiOwogICAgICAgICAgICBleHBvcnQgTVVMVElMSUJfQUJJUz0i cHBjNjQgcHBjIjsKICAgICAgICAgICAgZXhwb3J0IERFRkFVTFRfQUJJPSJwcGM2NCIKICAg ICAgICA7OwogICAgICAgIHMzOTB4KikKICAgICAgICAgICAgZXhwb3J0IENGTEFHU19zMzkw PSR7Q0ZMQUdTX3MzOTAtLW0zMX07CiAgICAgICAgICAgIGV4cG9ydCBDSE9TVF9zMzkwPSR7 Q1RBUkdFVC9zMzkweC9zMzkwfTsKICAgICAgICAgICAgZXhwb3J0IENUQVJHRVRfczM5MD0k e0NIT1NUX3MzOTB9OwogICAgICAgICAgICBleHBvcnQgQ0RFRklORV9zMzkwPSIhX19zMzkw eF9fIjsKICAgICAgICAgICAgZXhwb3J0IExJQkRJUl9zMzkwPSJsaWIiOwogICAgICAgICAg ICBleHBvcnQgQ0ZMQUdTX3MzOTB4PSR7Q0ZMQUdTX3MzOTB4LS1tNjR9OwogICAgICAgICAg ICBleHBvcnQgQ0hPU1RfczM5MHg9JHtDVEFSR0VUfTsKICAgICAgICAgICAgZXhwb3J0IENU QVJHRVRfczM5MHg9JHtDSE9TVF9zMzkweH07CiAgICAgICAgICAgIGV4cG9ydCBDREVGSU5F X3MzOTB4PSJfX3MzOTB4X18iOwogICAgICAgICAgICBleHBvcnQgTElCRElSX3MzOTB4PSJs aWI2NCI7CiAgICAgICAgICAgIGV4cG9ydCBNVUxUSUxJQl9BQklTPSJzMzkweCBzMzkwIjsK ICAgICAgICAgICAgZXhwb3J0IERFRkFVTFRfQUJJPSJzMzkweCIKICAgICAgICA7OwogICAg ICAgIHNwYXJjKikKICAgICAgICAgICAgZXhwb3J0IENGTEFHU19zcGFyYzMyPSR7Q0ZMQUdT X3NwYXJjMzJ9OwogICAgICAgICAgICBleHBvcnQgQ0hPU1Rfc3BhcmMzMj0ke0NUQVJHRVQv c3BhcmM2NC9zcGFyY307CiAgICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX3NwYXJjMzI9JHtD SE9TVF9zcGFyYzMyfTsKICAgICAgICAgICAgZXhwb3J0IENERUZJTkVfc3BhcmMzMj0iIV9f YXJjaDY0X18iOwogICAgICAgICAgICBleHBvcnQgTElCRElSX3NwYXJjMzI9ImxpYiI7CiAg ICAgICAgICAgIGV4cG9ydCBDRkxBR1Nfc3BhcmM2ND0ke0NGTEFHU19zcGFyYzY0LS1tNjR9 OwogICAgICAgICAgICBleHBvcnQgQ0hPU1Rfc3BhcmM2ND0ke0NUQVJHRVR9OwogICAgICAg ICAgICBleHBvcnQgQ1RBUkdFVF9zcGFyYzY0PSR7Q0hPU1Rfc3BhcmM2NH07CiAgICAgICAg ICAgIGV4cG9ydCBDREVGSU5FX3NwYXJjNjQ9Il9fYXJjaDY0X18iOwogICAgICAgICAgICBl eHBvcnQgTElCRElSX3NwYXJjNjQ9ImxpYjY0IjsKICAgICAgICAgICAgZXhwb3J0IE1VTFRJ TElCX0FCSVM9IiR7TVVMVElMSUJfQUJJUy1zcGFyYzY0IHNwYXJjMzJ9IjsKICAgICAgICAg ICAgZXhwb3J0IERFRkFVTFRfQUJJPSIke0RFRkFVTFRfQUJJLXNwYXJjNjR9IgogICAgICAg IDs7CiAgICAgICAgKikKICAgICAgICAgICAgZXhwb3J0IE1VTFRJTElCX0FCSVM9ImRlZmF1 bHQiOwogICAgICAgICAgICBleHBvcnQgREVGQVVMVF9BQkk9ImRlZmF1bHQiCiAgICAgICAg OzsKICAgIGVzYWMKfQptdWx0aWxpYl90b29sY2hhaW5fc2V0dXAgKCkgCnsgCiAgICBsb2Nh bCB2IHZ2OwogICAgZXhwb3J0IEFCST0kMTsKICAgIGlmIFtbICR7QUJJfSAhPSAke0RFRkFV TFRfQUJJfSBdXTsgdGhlbgogICAgICAgIGlmIFtbICR7REVGQVVMVF9BQklfU0FWRUR9ICE9 ICJ0cnVlIiBdXTsgdGhlbgogICAgICAgICAgICBmb3IgdiBpbiBDSE9TVCBDQlVJTEQgQVMg Q0MgQ1hYIExEOwogICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgZXhwb3J0IF9fYWJp X3NhdmVkXyR7dn09IiR7IXZ9IjsKICAgICAgICAgICAgZG9uZTsKICAgICAgICAgICAgZXhw b3J0IERFRkFVTFRfQUJJX1NBVkVEPSJ0cnVlIjsKICAgICAgICBmaTsKICAgICAgICBleHBv cnQgQ0hPU1Q9JChnZXRfYWJpX0NIT1NUICR7REVGQVVMVF9BQkl9KTsKICAgICAgICBleHBv cnQgQVM9IiQodGMtZ2V0QVMpICQoZ2V0X2FiaV9BU0ZMQUdTKSI7CiAgICAgICAgZXhwb3J0 IENDPSIkKHRjLWdldENDKSAkKGdldF9hYmlfQ0ZMQUdTKSI7CiAgICAgICAgZXhwb3J0IENY WD0iJCh0Yy1nZXRDWFgpICQoZ2V0X2FiaV9DRkxBR1MpIjsKICAgICAgICBleHBvcnQgTEQ9 IiQodGMtZ2V0TEQpICQoZ2V0X2FiaV9MREZMQUdTKSI7CiAgICAgICAgZXhwb3J0IENIT1NU PSQoZ2V0X2FiaV9DSE9TVCAkMSk7CiAgICAgICAgZXhwb3J0IENCVUlMRD0kKGdldF9hYmlf Q0hPU1QgJDEpOwogICAgZWxzZQogICAgICAgIGlmIFtbICR7REVGQVVMVF9BQklfU0FWRUR9 ID09ICJ0cnVlIiBdXTsgdGhlbgogICAgICAgICAgICBmb3IgdiBpbiBDSE9TVCBDQlVJTEQg QVMgQ0MgQ1hYIExEOwogICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgdnY9Il9fYWJp X3NhdmVkXyR7dn0iOwogICAgICAgICAgICAgICAgZXhwb3J0ICR7dn09JHshdnZ9OwogICAg ICAgICAgICBkb25lOwogICAgICAgIGZpOwogICAgZmkKfQpuZXdkZXBlbmQgKCkgCnsgCiAg ICBkZWJ1Zy1wcmludC1mdW5jdGlvbiBuZXdkZXBlbmQgJCo7CiAgICBkZWJ1Zy1wcmludCAi bmV3ZGVwZW5kOiBFX0RFUEVORD0kRV9ERVBFTkQgRV9SREVQRU5EPSRFX1JERVBFTkQiOwog ICAgd2hpbGUgWyAtbiAiJDEiIF07IGRvCiAgICAgICAgY2FzZSAkMSBpbiAKICAgICAgICAg ICAgIi9hdXRvdG9vbHMiKQogICAgICAgICAgICAgICAgZG9fbmV3ZGVwZW5kIERFUEVORCBz eXMtZGV2ZWwvYXV0b2NvbmYgc3lzLWRldmVsL2F1dG9tYWtlIHN5cy1kZXZlbC9tYWtlCiAg ICAgICAgICAgIDs7CiAgICAgICAgICAgICIvYyIpCiAgICAgICAgICAgICAgICBkb19uZXdk ZXBlbmQgREVQRU5EIHN5cy1kZXZlbC9nY2MgdmlydHVhbC9saWJjOwogICAgICAgICAgICAg ICAgZG9fbmV3ZGVwZW5kIFJERVBFTkQgdmlydHVhbC9saWJjCiAgICAgICAgICAgIDs7CiAg ICAgICAgICAgICopCiAgICAgICAgICAgICAgICBkb19uZXdkZXBlbmQgREVQRU5EICQxCiAg ICAgICAgICAgIDs7CiAgICAgICAgZXNhYzsKICAgICAgICBzaGlmdDsKICAgIGRvbmUKfQpu ZXdpY29uICgpIAp7IAogICAgKCBpbnNpbnRvIC91c3Ivc2hhcmUvcGl4bWFwczsKICAgIG5l d2lucyAiJEAiICkKfQpuZXdtZW51ICgpIAp7IAogICAgKCBpbnNpbnRvIC91c3Ivc2hhcmUv YXBwbGljYXRpb25zOwogICAgbmV3aW5zICIkQCIgKQp9Cm5ld3BkZXBlbmQgKCkgCnsgCiAg ICBkZWJ1Zy1wcmludC1mdW5jdGlvbiBuZXdwZGVwZW5kICQqOwogICAgZG9fbmV3ZGVwZW5k IFBERVBFTkQgJDEKfQpuZXdyZGVwZW5kICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rp b24gbmV3cmRlcGVuZCAkKjsKICAgIGRvX25ld2RlcGVuZCBSREVQRU5EICQxCn0KbnVtYmVy X2FiaXMgKCkgCnsgCiAgICBnZXRfaW5zdGFsbF9hYmlzIHwgd2MgLXcKfQpwa2dfbm9mZXRj aCAoKSAKeyAKICAgIF9lYXBpMF9wa2dfbm9mZXRjaCAiJEAiCn0KcGtnX3Bvc3RpbnN0ICgp IAp7IAogICAgL3Vzci9iaW4vZXNlbGVjdCBvcGVuZ2wgc2V0IC0tdXNlLW9sZCBhdGk7CiAg ICBlbG9nICJUbyBzd2l0Y2ggdG8gQVRJIE9wZW5HTCwgcnVuIFwiZXNlbGVjdCBvcGVuZ2wg c2V0IGF0aVwiIjsKICAgIGVsb2cgIlRvIGNoYW5nZSB5b3VyIHhvcmcuY29uZiB5b3UgY2Fu IHVzZSB0aGUgYnVuZGxlZCBcImF0aWNvbmZpZ1wiIjsKICAgIGVsb2c7CiAgICBlbG9nICJJ ZiB5b3UgZXhwZXJpZW5jZSB1bmV4cGxhaW5lZCBzZWdtZW50YXRpb24gZmF1bHRzIGFuZCBr ZXJuZWwgY3Jhc2hlcyI7CiAgICBlbG9nICJ3aXRoIHRoaXMgZHJpdmVyIGFuZCBtdWx0aS10 aHJlYWRlZCBhcHBsaWNhdGlvbnMgc3VjaCBhcyB3aW5lLCI7CiAgICBlbG9nICJzZXQgVXNl RmFzdFRMUyBpbiB4b3JnLmNvbmYgdG8gZWl0aGVyIDAgb3IgMSwgYnV0IG5vdCAyLiI7CiAg ICBlbG9nOwogICAgZWxvZyAiWW91IHdpbGwgaGF2ZSB0byBzb3VyY2UgL2V0Yy9wcm9maWxl IChvciBsb2dvdXQgYW5kIGJhY2sgaW4pIGZvciBkcmkiOwogICAgZWxvZyAidG8gd29yaywg dW5sZXNzIHlvdSBwcmV2aW91c2x5IGhhZCBhdGktZHJpdmVycyBpbnN0YWxsZWQuIjsKICAg IGV3YXJuICJJZiB5b3UgZXhwZXJpZW5jZSBzY3JlZW4gY29ycnVwdGlvbiB3aXRoIHRoaXMg ZHJpdmVyLCB0cnkgcHV0dGluZyI7CiAgICBld2FybiAnICAgICAgICAgT3B0aW9uICJYQUFO b09mZnNjcmVlblBpeG1hcHMiICJ0cnVlIic7CiAgICBld2FybiAiaW4gdGhlIERldmljZSBT ZWN0aW9uIG9mIC9ldGMvWDExL3hvcmcuY29uZi4iOwogICAgbGludXgtbW9kX3BrZ19wb3N0 aW5zdAp9CnBrZ19wb3N0cm0gKCkgCnsgCiAgICBsaW51eC1tb2RfcGtnX3Bvc3RybTsKICAg IC91c3IvYmluL2VzZWxlY3Qgb3BlbmdsIHNldCAtLXVzZS1vbGQgeG9yZy14MTEKfQpwa2df cHJlaW5zdCAoKSAKeyAKICAgIGxpbnV4LW1vZF9wa2dfcHJlaW5zdCAiJEAiCn0KcGtnX3Nl dHVwICgpIAp7IAogICAgTU9EVUxFX0RJUj0iJHtTfS9jb21tb24vbGliL21vZHVsZXMvZmds cngvYnVpbGRfbW9kIjsKICAgIE1PRFVMRV9OQU1FUz0iZmdscngodmlkZW86JHtTfS9jb21t b24vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54KSI7CiAgICBCVUlMRF9UQVJH RVRTPSJrbW9kX2J1aWxkIjsKICAgIGxpbnV4LW1vZF9wa2dfc2V0dXA7CiAgICBCVUlMRF9Q QVJBTVM9IkdDQ19WRVJfTUFKPSQoZ2NjLW1ham9yLXZlcnNpb24pIEtWRVI9JHtLVl9GVUxM fSBLRElSPSR7S1ZfRElSfSI7CiAgICBpZiAhIGtlcm5lbF9pcyAyIDY7IHRoZW4KICAgICAg ICBlZXJyb3IgIk5lZWQgYSAyLjYga2VybmVsIHRvIGNvbXBpbGUgYWdhaW5zdCEiOwogICAg ICAgIGRpZSAiTmVlZCBhIDIuNiBrZXJuZWwgdG8gY29tcGlsZSBhZ2FpbnN0ISI7CiAgICBm aTsKICAgIGlmIGtlcm5lbF9pcyBnZSAyIDYgMjUgJiYgbGludXhfY2hrY29uZmlnX3ByZXNl bnQgUFJFRU1QVF9SQ1U7IHRoZW4KICAgICAgICBkaWUgIiR7UH0gaXMgbm90IGNvbXBhdGli bGUgd2l0aCBSQ1UgUHJlZW1wdGlvbiAoYnVnICMyMjMyODEpLCBwbGVhc2UgZGlzYWJsZSBp dCI7CiAgICBmaTsKICAgIGlmIGtlcm5lbF9pcyBnZSAyIDYgMjYgJiYgISBsaW51eF9jaGtj b25maWdfcHJlc2VudCBVTlVTRURfU1lNQk9MUzsgdGhlbgogICAgICAgIGV3YXJuICJZb3Ug aGF2ZSB0byBFbmFibGUgdW51c2VkL29ic29sZXRlIGV4cG9ydGVkIHN5bWJvbHMgaW4gS2Vy bmVsIGhhY2tpbmcgc2VjdGlvbiBvZiBrZXJuZWwgY29uZmlnIGZvciBmZ2xyeCB0byBsb2Fk IjsKICAgIGZpOwogICAgaWYga2VybmVsX2lzIGdlIDIgNiAyNCAmJiAhIGxpbnV4X2Noa2Nv bmZpZ19wcmVzZW50IFBDSV9MRUdBQ1k7IHRoZW4KICAgICAgICBlZXJyb3IgIiR7UH0gcmVx dWlyZXMgc3VwcG9ydCBmb3IgcGNpX2ZpbmRfc2xvdC4iOwogICAgICAgIGRpZSAiJHtQfSBy ZXF1aXJlcyBzdXBwb3J0IGZvciBwY2lfZmluZF9zbG90LiI7CiAgICBmaTsKICAgIGlmICEg bGludXhfY2hrY29uZmlnX3ByZXNlbnQgTVRSUjsgdGhlbgogICAgICAgIGV3YXJuICJZb3Ug ZG9uJ3QgaGF2ZSBNVFJSIHN1cHBvcnQgZW5hYmxlZCwgdGhlIGRpcmVjdCByZW5kZXJpbmcg d2lsbCBub3Qgd29yay4iOwogICAgZmk7CiAgICBpZiBsaW51eF9jaGtjb25maWdfYnVpbHRp biBEUk07IHRoZW4KICAgICAgICBld2FybiAiWW91IGhhdmUgRFJNIHN1cHBvcnQgZW5hYmxl ZCBidWlsdGluLCB0aGUgZGlyZWN0IHJlbmRlcmluZyB3aWxsIG5vdCB3b3JrLiI7CiAgICBm aTsKICAgIGlmICEgbGludXhfY2hrY29uZmlnX3ByZXNlbnQgQUdQICYmICEgbGludXhfY2hr Y29uZmlnX3ByZXNlbnQgUENJRVBPUlRCVVM7IHRoZW4KICAgICAgICBld2FybiAiWW91IG5l ZWQgQUdQIGFuZC9vciBQQ0kgRXhwcmVzcyBzdXBwb3J0IGZvciBkaXJlY3QgcmVuZGVyaW5n IHRvIHdvcmsuIjsKICAgIGZpOwogICAgaWYgbGludXhfY2hrY29uZmlnX3ByZXNlbnQgUEFS QVZJUlQ7IHRoZW4KICAgICAgICBlZXJyb3IgIlRoZSBjdXJyZW50IGF0aS1kcml2ZXJzIGRv bid0IGNvbXBpbGUgd2hlbiBoYXZpbmciOwogICAgICAgIGVlcnJvciAicGFyYXZpcnR1YWxp emF0aW9uIGFjdGl2ZSBkdWUgdG8gR1BMIHN5bWJvbCBleHBvcnQiOwogICAgICAgIGVlcnJv ciAicmVzdHJpY3Rpb25zLiI7CiAgICAgICAgZWVycm9yICJQbGVhc2UgZGlzYWJsZSBpdDoi OwogICAgICAgIGVlcnJvciAiCUNPTkZJR19QQVJBVklSVD1uIjsKICAgICAgICBlZXJyb3Ig ImluIC91c3Ivc3JjL2xpbnV4Ly5jb25maWcgb3IiOwogICAgICAgIGVlcnJvciAiCVByb2Nl c3NvciB0eXBlIGFuZCBmZWF0dXJlcyAtLT4iOwogICAgICAgIGVlcnJvciAiCQlbIF0gUGFy YXZpcnR1YWxpemF0aW9uIHN1cHBvcnQgKEVYUEVSSU1FTlRBTCkiOwogICAgICAgIGVlcnJv ciAiaW4gJ21lbnVjb25maWcnIjsKICAgICAgICBkaWUgIkNPTkZJR19QQVJBVklSVCBlbmFi bGVkIjsKICAgIGZpOwogICAgaWYgISBsaW51eF9jaGtjb25maWdfcHJlc2VudCBNQUdJQ19T WVNSUTsgdGhlbgogICAgICAgIGVlcnJvciAiWW91IG5lZWQgTUFHSUNfU1lTUlEgZW5hYmxl ZCBpbiBvcmRlciB0byBidWlsZCBhdGktZHJpdmVycyI7CiAgICAgICAgZGllICJDT05GSUdf TUFHSUNfU1lTUlEgZGlzYWJsZWQiOwogICAgZmk7CiAgICBCQVNFX0RJUj0iJHtTfS94NzQw IjsKICAgIGlmIHVzZSBhbWQ2NDsgdGhlbgogICAgICAgIE1ZX0JBU0VfRElSPSIke0JBU0Vf RElSfV82NGEiOwogICAgICAgIFBLR19MSUJESVI9bGliNjQ7CiAgICAgICAgQVJDSF9ESVI9 IiR7U30vYXJjaC94ODZfNjQiOwogICAgZWxzZQogICAgICAgIE1ZX0JBU0VfRElSPSIke0JB U0VfRElSfSI7CiAgICAgICAgUEtHX0xJQkRJUj1saWI7CiAgICAgICAgQVJDSF9ESVI9IiR7 U30vYXJjaC94ODYiOwogICAgZmkKfQpwb3J0YWdlcSAoKSAKeyAKICAgIGlmIFsgIiR7RUJV SUxEX1BIQVNFfSIgPT0gImRlcGVuZCIgXTsgdGhlbgogICAgICAgIGRpZSAicG9ydGFnZXEg Y2FsbHMgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSBnbG9iYWwgc2NvcGUiOwogICAgZmk7CiAg ICBQWVRIT05QQVRIPSR7UE9SVEFHRV9QWU1fUEFUSH0ke1BZVEhPTlBBVEg6Kzp9JHtQWVRI T05QQVRIfSAiJHtQT1JUQUdFX0JJTl9QQVRIfS9wb3J0YWdlcSIgIiRAIgp9CnByZXBfbWxf aW5jbHVkZXMgKCkgCnsgCiAgICBpZiBbWyAkKG51bWJlcl9hYmlzKSAtZ3QgMSBdXTsgdGhl bgogICAgICAgIGxvY2FsIGRpcjsKICAgICAgICBsb2NhbCBkaXJzOwogICAgICAgIGxvY2Fs IGJhc2U7CiAgICAgICAgaWYgW1sgJCMgLWVxIDAgXV07IHRoZW4KICAgICAgICAgICAgZGly cz0vdXNyL2luY2x1ZGU7CiAgICAgICAgZWxzZQogICAgICAgICAgICBkaXJzPSIkQCI7CiAg ICAgICAgZmk7CiAgICAgICAgZm9yIGRpciBpbiAke2RpcnN9OwogICAgICAgIGRvCiAgICAg ICAgICAgIGJhc2U9JHtUfS9nZW50b28tbXVsdGlsaWIvJHtkaXJ9L2dlbnRvby1tdWx0aWxp YjsKICAgICAgICAgICAgbWtkaXIgLXAgIiR7YmFzZX0iOwogICAgICAgICAgICBbWyAtZCAk e2Jhc2V9LyR7QUJJfSBdXSAmJiBybSAtcmYgIiR7YmFzZX0vJHtBQkl9IjsKICAgICAgICAg ICAgbXYgIiR7RH0vJHtkaXJ9IiAiJHtiYXNlfS8ke0FCSX0iOwogICAgICAgIGRvbmU7CiAg ICAgICAgaWYgaXNfZmluYWxfYWJpOyB0aGVuCiAgICAgICAgICAgIGJhc2U9JHtUfS9nZW50 b28tbXVsdGlsaWI7CiAgICAgICAgICAgIHB1c2hkICIke2Jhc2V9IjsKICAgICAgICAgICAg ZmluZCAuIHwgdGFyIC1jIC1UIC0gLWYgLSB8IHRhciAteCAtLW5vLXNhbWUtb3duZXIgLWYg LSAtQyAiJHtEfSI7CiAgICAgICAgICAgIHBvcGQ7CiAgICAgICAgICAgIHNldCAtLTsKICAg ICAgICAgICAgZm9yIGRpciBpbiAke2RpcnN9OwogICAgICAgICAgICBkbwogICAgICAgICAg ICAgICAgc2V0IC0tICIkQCIgIiR7ZGlyfSI7CiAgICAgICAgICAgICAgICBsb2NhbCBhYmk7 CiAgICAgICAgICAgICAgICBmb3IgYWJpIGluICQoZ2V0X2luc3RhbGxfYWJpcyk7CiAgICAg ICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgIHNldCAtLSAiJEAiICIkKGdldF9h YmlfQ0RFRklORSAke2FiaX0pOiR7ZGlyfS9nZW50b28tbXVsdGlsaWIvJHthYml9IjsKICAg ICAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgICAgICBjcmVhdGVfbWxfaW5jbHVkZXMg IiRAIjsKICAgICAgICAgICAgZG9uZTsKICAgICAgICBmaTsKICAgIGZpCn0KcHJlcHJvY2Vz c19lYnVpbGRfZW52ICgpIAp7IAogICAgbG9jYWwgZmlsdGVyX29wdHM9IiI7CiAgICBpZiBb IC1mICIke1R9L2Vudmlyb25tZW50LnJhdyIgXTsgdGhlbgogICAgICAgIGZpbHRlcl9vcHRz PSItLWZpbHRlci1zYW5kYm94IC0tZmlsdGVyLWZlYXR1cmVzICR7ZmlsdGVyX29wdHN9IjsK ICAgIGZpOwogICAgZmlsdGVyX3JlYWRvbmx5X3ZhcmlhYmxlcyAke2ZpbHRlcl9vcHRzfSA8 ICIke1R9Ii9lbnZpcm9ubWVudCA+ICIke1R9Ii9lbnZpcm9ubWVudC5maWx0ZXJlZCB8fCBy ZXR1cm4gJD87CiAgICB1bnNldCBmaWx0ZXJfb3B0czsKICAgIG12ICIke1R9Ii9lbnZpcm9u bWVudC5maWx0ZXJlZCAiJHtUfSIvZW52aXJvbm1lbnQgfHwgcmV0dXJuICQ/OwogICAgcm0g LWYgIiR7VH0vZW52aXJvbm1lbnQuc3VjY2VzcyIgfHwgcmV0dXJuICQ/OwogICAgKCBleHBv cnQgU0FOREJPWF9PTj0xOwogICAgc291cmNlICIke1R9L2Vudmlyb25tZW50IiB8fCBleGl0 ICQ/OwogICAgZXhwb3J0IFNBTkRCT1hfT049MDsKICAgIHNvdXJjZSAiJHtQT1JUQUdFX0JJ Tl9QQVRIfS9pc29sYXRlZC1mdW5jdGlvbnMuc2giIHx8IGV4aXQgJD87CiAgICBzYXZlX2Vi dWlsZF9lbnYgfHwgZXhpdCAkPzsKICAgIHRvdWNoICIke1R9L2Vudmlyb25tZW50LnN1Y2Nl c3MiIHx8IGV4aXQgJD8gKSA+ICIke1R9L2Vudmlyb25tZW50LmZpbHRlcmVkIjsKICAgIGxv Y2FsIHJldHZhbDsKICAgIGlmIFsgLWUgIiR7VH0vZW52aXJvbm1lbnQuc3VjY2VzcyIgXTsg dGhlbgogICAgICAgIGZpbHRlcl9yZWFkb25seV92YXJpYWJsZXMgPCAiJHtUfS9lbnZpcm9u bWVudC5maWx0ZXJlZCIgPiAiJHtUfS9lbnZpcm9ubWVudCI7CiAgICAgICAgcmV0dmFsPSQ/ OwogICAgZWxzZQogICAgICAgIHJldHZhbD0xOwogICAgZmk7CiAgICBybSAtZiAiJHtUfSIv ZW52aXJvbm1lbnQue2ZpbHRlcmVkLHJhdyxzdWNjZXNzfTsKICAgIHJldHVybiAke3JldHZh bH0KfQpwcmVzZXJ2ZV9vbGRfbGliICgpIAp7IAogICAgaWYgW1sgJHtFQlVJTERfUEhBU0V9 ICE9ICJwcmVpbnN0IiBdXTsgdGhlbgogICAgICAgIGVlcnJvciAicHJlc2VydmVfb2xkX2xp YigpIG11c3QgYmUgY2FsbGVkIGZyb20gcGtnX3ByZWluc3QoKSBvbmx5IjsKICAgICAgICBk aWUgIkludmFsaWQgcHJlc2VydmVfb2xkX2xpYigpIHVzYWdlIjsKICAgIGZpOwogICAgW1sg LXogJDEgXV0gJiYgZGllICJVc2FnZTogcHJlc2VydmVfb2xkX2xpYiA8bGlicmFyeSB0byBw cmVzZXJ2ZT4gW21vcmUgbGlicmFyaWVzIHRvIHByZXNlcnZlXSI7CiAgICBoYXMgcHJlc2Vy dmUtbGlicyAke0ZFQVRVUkVTfSAmJiByZXR1cm4gMDsKICAgIGxvY2FsIGxpYiBkaXI7CiAg ICBmb3IgbGliIGluICIkQCI7CiAgICBkbwogICAgICAgIFtbIC1lICR7Uk9PVH0vJHtsaWJ9 IF1dIHx8IGNvbnRpbnVlOwogICAgICAgIGRpcj0ke2xpYiUvKn07CiAgICAgICAgZG9kaXIg JHtkaXJ9IHx8IGRpZSAiZG9kaXIgJHtkaXJ9IGZhaWxlZCI7CiAgICAgICAgY3AgIiR7Uk9P VH0iLyR7bGlifSAiJHtEfSIvJHtsaWJ9IHx8IGRpZSAiY3AgJHtsaWJ9IGZhaWxlZCI7CiAg ICAgICAgdG91Y2ggIiR7RH0iLyR7bGlifTsKICAgIGRvbmUKfQpwcmVzZXJ2ZV9vbGRfbGli X25vdGlmeSAoKSAKeyAKICAgIGlmIFtbICR7RUJVSUxEX1BIQVNFfSAhPSAicG9zdGluc3Qi IF1dOyB0aGVuCiAgICAgICAgZWVycm9yICJwcmVzZXJ2ZV9vbGRfbGliX25vdGlmeSgpIG11 c3QgYmUgY2FsbGVkIGZyb20gcGtnX3Bvc3RpbnN0KCkgb25seSI7CiAgICAgICAgZGllICJJ bnZhbGlkIHByZXNlcnZlX29sZF9saWJfbm90aWZ5KCkgdXNhZ2UiOwogICAgZmk7CiAgICBo YXMgcHJlc2VydmUtbGlicyAke0ZFQVRVUkVTfSAmJiByZXR1cm4gMDsKICAgIGxvY2FsIGxp YiBub3RpY2U9MDsKICAgIGZvciBsaWIgaW4gIiRAIjsKICAgIGRvCiAgICAgICAgW1sgLWUg JHtST09UfS8ke2xpYn0gXV0gfHwgY29udGludWU7CiAgICAgICAgaWYgW1sgJHtub3RpY2V9 IC1lcSAwIF1dOyB0aGVuCiAgICAgICAgICAgIG5vdGljZT0xOwogICAgICAgICAgICBld2Fy biAiT2xkIHZlcnNpb25zIG9mIGluc3RhbGxlZCBsaWJyYXJpZXMgd2VyZSBkZXRlY3RlZCBv biB5b3VyIHN5c3RlbS4iOwogICAgICAgICAgICBld2FybiAiSW4gb3JkZXIgdG8gYXZvaWQg YnJlYWtpbmcgcGFja2FnZXMgdGhhdCBkZXBlbmQgb24gdGhlc2Ugb2xkIGxpYnMsIjsKICAg ICAgICAgICAgZXdhcm4gInRoZSBsaWJyYXJpZXMgYXJlIG5vdCBiZWluZyByZW1vdmVkLiAg WW91IG5lZWQgdG8gcnVuIHJldmRlcC1yZWJ1aWxkIjsKICAgICAgICAgICAgZXdhcm4gImlu IG9yZGVyIHRvIHJlbW92ZSB0aGVzZSBvbGQgZGVwZW5kZW5jaWVzLiAgSWYgeW91IGRvIG5v dCBoYXZlIHRoaXMiOwogICAgICAgICAgICBld2FybiAiaGVscGVyIHByb2dyYW0sIHNpbXBs eSBlbWVyZ2UgdGhlICdnZW50b29sa2l0JyBwYWNrYWdlLiI7CiAgICAgICAgICAgIGV3YXJu OwogICAgICAgIGZpOwogICAgICAgIGV3YXJuICIgICMgcmV2ZGVwLXJlYnVpbGQgLS1saWJy YXJ5ICR7bGliIyMqL30iOwogICAgZG9uZTsKICAgIGlmIFtbICR7bm90aWNlfSAtZXEgMSBd XTsgdGhlbgogICAgICAgIGV3YXJuOwogICAgICAgIGV3YXJuICJPbmNlIHlvdSd2ZSBmaW5p c2hlZCBydW5uaW5nIHJldmRlcC1yZWJ1aWxkLCBpdCBzaG91bGQgYmUgc2FmZSB0byI7CiAg ICAgICAgZXdhcm4gImRlbGV0ZSB0aGUgb2xkIGxpYnJhcmllcy4gIEhlcmUgaXMgYSBjb3B5 ICYgcGFzdGUgZm9yIHRoZSBsYXp5OiI7CiAgICAgICAgZm9yIGxpYiBpbiAiJEAiOwogICAg ICAgIGRvCiAgICAgICAgICAgIGV3YXJuICIgICMgcm0gJyR7bGlifSciOwogICAgICAgIGRv bmU7CiAgICBmaQp9CnFhX2NhbGwgKCkgCnsgCiAgICBsb2NhbCBzaG9wdHM9JChzaG9wdCkg T0xESUZTPSIkSUZTIjsKICAgIGxvY2FsIHJldHZhbDsKICAgICIkQCI7CiAgICByZXR2YWw9 JD87CiAgICBzZXQgK2U7CiAgICBbWyAkc2hvcHRzICE9ICQoc2hvcHQpIF1dICYmIGVxYXdh cm4gIlFBIE5vdGljZTogR2xvYmFsIHNoZWxsIG9wdGlvbnMgY2hhbmdlZCBhbmQgd2VyZSBu b3QgcmVzdG9yZWQgd2hpbGUgY2FsbGluZyAnJConIjsKICAgIFtbICIkSUZTIiAhPSAiJE9M RElGUyIgXV0gJiYgZXFhd2FybiAiUUEgTm90aWNlOiBHbG9iYWwgSUZTIGNoYW5nZWQgYW5k IHdhcyBub3QgcmVzdG9yZWQgd2hpbGUgY2FsbGluZyAnJConIjsKICAgIHJldHVybiAkcmV0 dmFsCn0KcWFfc291cmNlICgpIAp7IAogICAgbG9jYWwgc2hvcHRzPSQoc2hvcHQpIE9MRElG Uz0iJElGUyI7CiAgICBsb2NhbCByZXR2YWw7CiAgICBzb3VyY2UgIiRAIjsKICAgIHJldHZh bD0kPzsKICAgIHNldCArZTsKICAgIFtbICRzaG9wdHMgIT0gJChzaG9wdCkgXV0gJiYgZXFh d2FybiAiUUEgTm90aWNlOiBHbG9iYWwgc2hlbGwgb3B0aW9ucyBjaGFuZ2VkIGFuZCB3ZXJl IG5vdCByZXN0b3JlZCB3aGlsZSBzb3VyY2luZyAnJConIjsKICAgIFtbICIkSUZTIiAhPSAi JE9MRElGUyIgXV0gJiYgZXFhd2FybiAiUUEgTm90aWNlOiBHbG9iYWwgSUZTIGNoYW5nZWQg YW5kIHdhcyBub3QgcmVzdG9yZWQgd2hpbGUgc291cmNpbmcgJyQqJyI7CiAgICByZXR1cm4g JHJldHZhbAp9CnFlZXJyb3IgKCkgCnsgCiAgICBxb3V0IGVlcnJvciAiJHtAfSIKfQpxZWlu Zm8gKCkgCnsgCiAgICBxb3V0IGVpbmZvICIke0B9Igp9CnFvdXQgKCkgCnsgCiAgICBsb2Nh bCBvdXRwdXRtc2cgdHlwZTsKICAgIHR5cGU9JHsxfTsKICAgIHNoaWZ0OwogICAgb3V0cHV0 bXNnPSIke0B9IjsKICAgIGNhc2UgIiR7RUJVSUxEX1BIQVNFfSIgaW4gCiAgICAgICAgZGVw ZW5kKQogICAgICAgICAgICB1bnNldCBvdXRwdXRtc2cKICAgICAgICA7OwogICAgICAgIGNs ZWFuKQogICAgICAgICAgICB1bnNldCBvdXRwdXRtc2cKICAgICAgICA7OwogICAgICAgIHBy ZWluc3QpCiAgICAgICAgICAgIHVuc2V0IG91dHB1dG1zZwogICAgICAgIDs7CiAgICBlc2Fj OwogICAgWyAtbiAiJHtvdXRwdXRtc2d9IiBdICYmICR7dHlwZX0gIiR7b3V0cHV0bXNnfSIK fQpxdWlldF9tb2RlICgpIAp7IAogICAgW1sgJHtQT1JUQUdFX1FVSUVUfSAtZXEgMSBdXQp9 CnJlZ2lzdGVyX2RpZV9ob29rICgpIAp7IAogICAgZXhwb3J0IEVCVUlMRF9ERUFUSF9IT09L Uz0iJHtFQlVJTERfREVBVEhfSE9PS1N9ICQqIgp9CnJlbW92ZV9mbGFnICgpIAp7IAogICAg bG9jYWwgcmVtb3ZlPSIkezF9IjsKICAgIHNoaWZ0OwogICAgd2hpbGUgW1sgLW4gIiR7MX0i IF1dOyBkbwogICAgICAgIFtbICIkezF9IiAhPSAiJHtyZW1vdmV9IiBdXSAmJiBlY2hvIC1u ICIkezF9ICI7CiAgICAgICAgc2hpZnQ7CiAgICBkb25lCn0KcmVtb3ZlX21vZHVsZWRiICgp IAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBsb2Nh bCBNT0RVTEVEQl9ESVI9JHtST09UfS92YXIvbGliL21vZHVsZS1yZWJ1aWxkLzsKICAgIG1v dmVfb2xkX21vZHVsZWRiOwogICAgaWYgZ3JlcCAtcXMgJHtDQVRFR09SWX0vJHtQTn0tJHtQ VlJ9ICR7TU9EVUxFREJfRElSfS9tb2R1bGVkYjsgdGhlbgogICAgICAgIGVpbmZvICJSZW1v dmluZyAke0NBVEVHT1JZfS8ke1BOfS0ke1BWUn0gZnJvbSBtb2R1bGVkYi4iOwogICAgICAg IHNlZCAtaSAtZSAiLy4qJHtDQVRFR09SWX1cLyR7UE59LSR7UFZSfS4qL2QiICR7TU9EVUxF REJfRElSfS9tb2R1bGVkYjsKICAgIGZpCn0KcmVtb3ZlX3BhdGhfZW50cnkgKCkgCnsgCiAg ICBbICIke0lGUzotdW5zZXR9IiAhPSAidW5zZXQiIF0gJiYgb2xkX0lGUz0iJHtJRlN9IjsK ICAgIElGUz0iOiI7CiAgICBzdHJpcHBlZF9wYXRoPSIke1BBVEh9IjsKICAgIHdoaWxlIFsg LW4gIiQxIiBdOyBkbwogICAgICAgIGN1cl9wYXRoPSIiOwogICAgICAgIGZvciBwIGluICR7 c3RyaXBwZWRfcGF0aH07CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgWyAiJHtwLyR7MX19 IiA9PSAiJHtwfSIgXTsgdGhlbgogICAgICAgICAgICAgICAgY3VyX3BhdGg9IiR7Y3VyX3Bh dGh9OiR7cH0iOwogICAgICAgICAgICBmaTsKICAgICAgICBkb25lOwogICAgICAgIHN0cmlw cGVkX3BhdGg9IiR7Y3VyX3BhdGgjOip9IjsKICAgICAgICBzaGlmdDsKICAgIGRvbmU7CiAg ICBpZiBbICIke29sZF9JRlM6LXVuc2V0fSIgIT0gInVuc2V0IiBdOyB0aGVuCiAgICAgICAg SUZTPSIke29sZF9JRlN9IjsKICAgICAgICB1bnNldCBvbGRfSUZTOwogICAgZWxzZQogICAg ICAgIHVuc2V0IElGUzsKICAgIGZpOwogICAgUEFUSD0iJHtzdHJpcHBlZF9wYXRofSIKfQpy ZXBsYWNlX2FsbF92ZXJzaW9uX3NlcGFyYXRvcnMgKCkgCnsgCiAgICBfX3ZlcnNpb25hdG9y X3Nob3B0X3RvZ2dsZSBvbjsKICAgIGxvY2FsIGM7CiAgICBjPSgkKGdldF9hbGxfdmVyc2lv bl9jb21wb25lbnRzICIkezI6LSR7UFZ9fSIgKSk7CiAgICBjPSIke2NbQF0vL1stLl9dLyQx fSI7CiAgICBlY2hvICR7Yy8vIH07CiAgICBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2dsZSBv ZmYKfQpyZXBsYWNlX3ZlcnNpb25fc2VwYXJhdG9yICgpIAp7IAogICAgX192ZXJzaW9uYXRv cl9zaG9wdF90b2dnbGUgb247CiAgICBsb2NhbCB3IGkgYyBmb3VuZD0wIHY9IiR7MzotJHtQ Vn19IjsKICAgIHc9JHsxOi0xfTsKICAgIGM9KCQoZ2V0X2FsbF92ZXJzaW9uX2NvbXBvbmVu dHMgJHt2fSApKTsKICAgIGlmIFtbICIke3cvL1tbOmRpZ2l0Ol1dL30iID09ICIke3d9IiBd XTsgdGhlbgogICAgICAgIGZvciAoKGkgPSAwIDsgaSA8ICR7I2NbQF19IDsgaSA9ICRpICsg MSApKQogICAgICAgIGRvCiAgICAgICAgICAgIGlmIFtbICIke2NbJHtpfV19IiA9PSAiJHt3 fSIgXV07IHRoZW4KICAgICAgICAgICAgICAgIGNbJHtpfV09IiR7Mn0iOwogICAgICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAgICBlbHNlCiAg ICAgICAgZm9yICgoaSA9IDAgOyBpIDwgJHsjY1tAXX0gOyBpID0gJGkgKyAxICkpCiAgICAg ICAgZG8KICAgICAgICAgICAgaWYgW1sgLW4gIiR7Y1ske2l9XS8vW14tLl9dfSIgXV07IHRo ZW4KICAgICAgICAgICAgICAgIGZvdW5kPSQoKCRmb3VuZCArIDEpKTsKICAgICAgICAgICAg ICAgIGlmIFtbICIkZm91bmQiID09ICIke3d9IiBdXTsgdGhlbgogICAgICAgICAgICAgICAg ICAgIGNbJHtpfV09IiR7Mn0iOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICAgICAgICAgZmk7CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAgICBmaTsKICAg IGM9JHtjW0BdfTsKICAgIGVjaG8gJHtjLy8gfTsKICAgIF9fdmVyc2lvbmF0b3Jfc2hvcHRf dG9nZ2xlIG9mZgp9CnJlcXVpcmVfY29uZmlndXJlZF9rZXJuZWwgKCkgCnsgCiAgICBpZiAh IGxpbnV4X2NvbmZpZ19leGlzdHM7IHRoZW4KICAgICAgICBxZWVycm9yICJDb3VsZCBub3Qg ZmluZCBhIHVzYWJsZSAuY29uZmlnIGluIHRoZSBrZXJuZWwgc291cmNlIGRpcmVjdG9yeS4i OwogICAgICAgIHFlZXJyb3IgIlBsZWFzZSBlbnN1cmUgdGhhdCAke0tFUk5FTF9ESVJ9IHBv aW50cyB0byBhIGNvbmZpZ3VyZWQgc2V0IG9mIExpbnV4IHNvdXJjZXMuIjsKICAgICAgICBx ZWVycm9yICJJZiB5b3UgYXJlIHVzaW5nIEtCVUlMRF9PVVRQVVQsIHBsZWFzZSBzZXQgdGhl IGVudmlyb25tZW50IHZhciBzbyB0aGF0IjsKICAgICAgICBxZWVycm9yICJpdCBwb2ludHMg dG8gdGhlIG5lY2Vzc2FyeSBvYmplY3QgZGlyZWN0b3J5IHNvIHRoYXQgaXQgbWlnaHQgZmlu ZCAuY29uZmlnLiI7CiAgICAgICAgZGllICJLZXJuZWwgbm90IGNvbmZpZ3VyZWQ7IG5vIC5j b25maWcgZm91bmQgaW4gJHtLVl9PVVRfRElSfSI7CiAgICBmaQp9CnNhdmVfZWJ1aWxkX2Vu diAoKSAKeyAKICAgICggaWYgaGFzcSAtLWV4Y2x1ZGUtaW5pdC1waGFzZXMgJCo7IHRoZW4K ICAgICAgICB1bnNldCBTIF9FX0RPQ0RFU1RUUkVFXyBfRV9FWEVERVNUVFJFRV87CiAgICAg ICAgdW5zZXQgLWYgcGtnX25vZmV0Y2ggc3JjX3VucGFjayBzcmNfcHJlcGFyZSBzcmNfY29u ZmlndXJlIHNyY19jb21waWxlIHNyY190ZXN0IHNyY19pbnN0YWxsOwogICAgICAgIGlmIFtb IC1uICRQWVRIT05QQVRIIF1dOyB0aGVuCiAgICAgICAgICAgIGV4cG9ydCBQWVRIT05QQVRI PSR7UFlUSE9OUEFUSC8ke1BPUlRBR0VfUFlNX1BBVEh9On07CiAgICAgICAgICAgIFtbIC16 ICRQWVRIT05QQVRIIF1dICYmIHVuc2V0IFBZVEhPTlBBVEg7CiAgICAgICAgZmk7CiAgICBm aTsKICAgIHVuc2V0IEJBU0ggSE9TVFRZUEUgSUZTIE1BQ0hUWVBFIE9MRFBXRCBPUFRFUlIg T1BUSU5EIE9TVFlQRSBQUzQgUFdEIFNIRUxMIFNITFZMOwogICAgdW5zZXQgQ09MT1JURVJN IERJU1BMQVkgRURJVE9SIExFU1MgTEVTU09QRU4gTE9HTkFNRSBMU19DT0xPUlMgUEFHRVIg VEVSTSBURVJNQ0FQIFVTRVI7CiAgICB1bnNldCBFQ0hBTkdFTE9HX1VTRVIgR1BHX0FHRU5U X0lORk8gU1NIX0FHRU5UX1BJRCBTU0hfQVVUSF9TT0NLIFNUWSBXSU5ET1cgWEFVVEhPUklU WTsKICAgIHVuc2V0ICR7IUNDQUNIRV8qfSAkeyFESVNUQ0NfKn07CiAgICBmb3IgeCBpbiBw a2dfc2V0dXAgcGtnX25vZmV0Y2ggc3JjX3VucGFjayBzcmNfcHJlcGFyZSBzcmNfY29uZmln dXJlIHNyY19jb21waWxlIHNyY190ZXN0IHNyY19pbnN0YWxsIHBrZ19wcmVpbnN0IHBrZ19w b3N0aW5zdCBwa2dfcHJlcm0gcGtnX3Bvc3RybTsKICAgIGRvCiAgICAgICAgdW5zZXQgLWYg ZGVmYXVsdF8keCBfZWFwaXswLDEsMn1fJHg7CiAgICBkb25lOwogICAgdW5zZXQgeDsKICAg IHVuc2V0IC1mIGR1bXBfdHJhY2UgZGllIGRpZWZ1bmMgcXVpZXRfbW9kZSB2ZWNobyBlbG9n X2Jhc2UgZXFhd2FybiBlbG9nIGVzeXNsb2cgZWluZm8gZWluZm9uIGV3YXJuIGVlcnJvciBl YmVnaW4gX2VlbmQgZWVuZCBLVl9tYWpvciBLVl9taW5vciBLVl9taWNybyBLVl90b19pbnQg Z2V0X0tWIHVuc2V0X2NvbG9ycyBzZXRfY29sb3JzIGhhcyBoYXNnIGhhc2dxIGhhc3YgaGFz cSBxYV9zb3VyY2UgcWFfY2FsbCBhZGRyZWFkIGFkZHdyaXRlIGFkZGRlbnkgYWRkcHJlZGlj dCBfc2JfYXBwZW5kX3ZhciBsY2hvd24gbGNoZ3JwIGVzeXNsb2cgdXNlIHVzZXYgdXNlcSBo YXNfdmVyc2lvbiBwb3J0YWdlcSBiZXN0X3ZlcnNpb24gdXNlX3dpdGggdXNlX2VuYWJsZSBy ZWdpc3Rlcl9kaWVfaG9vayBjaGVja19LViBrZWVwZGlyIHVucGFjayBzdHJpcF9kdXBsaWNh dGVfc2xhc2hlcyBlY29uZiBlaW5zdGFsbCBkeW5fc2V0dXAgZHluX3VucGFjayBkeW5fY2xl YW4gaW50byBpbnNpbnRvIGV4ZWludG8gZG9jaW50byBpbnNvcHRzIGRpcm9wdHMgZXhlb3B0 cyBsaWJvcHRzIGFib3J0X2hhbmRsZXIgYWJvcnRfcHJlcGFyZSBhYm9ydF9jb25maWd1cmUg YWJvcnRfY29tcGlsZSBhYm9ydF90ZXN0IGFib3J0X2luc3RhbGwgZHluX3ByZXBhcmUgZHlu X2NvbmZpZ3VyZSBkeW5fY29tcGlsZSBkeW5fdGVzdCBkeW5faW5zdGFsbCBkeW5fcHJlaW5z dCBkeW5faGVscCBkZWJ1Zy1wcmludCBkZWJ1Zy1wcmludC1mdW5jdGlvbiBkZWJ1Zy1wcmlu dC1zZWN0aW9uIGluaGVyaXQgRVhQT1JUX0ZVTkNUSU9OUyBuZXdkZXBlbmQgbmV3cmRlcGVu ZCBuZXdwZGVwZW5kIGRvX25ld2RlcGVuZCByZW1vdmVfcGF0aF9lbnRyeSBzYXZlX2VidWls ZF9lbnYgZmlsdGVyX3JlYWRvbmx5X3ZhcmlhYmxlcyBwcmVwcm9jZXNzX2VidWlsZF9lbnYg c291cmNlX2FsbF9iYXNocmNzIGVidWlsZF9tYWluIGVidWlsZF9waGFzZSBlYnVpbGRfcGhh c2Vfd2l0aF9ob29rcyBfZWJ1aWxkX2FyZ190b19waGFzZSBfZWJ1aWxkX3BoYXNlX2Z1bmNz IGRlZmF1bHQgX3NvdXJjZV9lYnVpbGQgJHtRQV9JTlRFUkNFUFRPUlN9OwogICAgdW5zZXQg QUNDRVBUX0xJQ0VOU0UgQkFEIEJSQUNLRVQgQlVJTERfUFJFRklYIENPTFMgRElTVENDX0RJ UiBESVNURElSIERPQ19TWU1MSU5LU19ESVIgRUJVSUxEX0VYSVRfU1RBVFVTX0ZJTEUgRUJV SUxEX0ZPUkNFX1RFU1QgRUJVSUxEX01BU1RFUl9QSUQgRUNMQVNTRElSIEVDTEFTU19ERVBU SCBFTkRDT0wgRkFLRVJPT1RLRVkgR09PRCBISUxJVEUgSE9NRSBJTUFHRSBMQVNUX0VfQ01E IExBU1RfRV9MRU4gTERfUFJFTE9BRCBNSVNDX0ZVTkNUSU9OU19BUkdTIE1PUFJFRklYIE5P Q09MT1IgTk9STUFMIFBLR0RJUiBQS0dVU0UgUEtHX0xPR0RJUiBQS0dfVE1QRElSIFBPUlRB R0VfQUNUVUFMX0RJU1RESVIgUE9SVEFHRV9BUkNITElTVCBQT1JUQUdFX0JBU0hSQyBQT1JU QUdFX0JBU0hSQ1NfU09VUkNFRCBQT1JUQUdFX0JJTlBLR19UQVJfT1BUUyBQT1JUQUdFX0JJ TlBLR19UTVBGSUxFIFBPUlRBR0VfQlVJTERESVIgUE9SVEFHRV9DT0xPUk1BUCBQT1JUQUdF X0NPTkZJR1JPT1QgUE9SVEFHRV9ERUJVRyBQT1JUQUdFX0RFUENBQ0hFRElSIFBPUlRBR0Vf R0lEIFBPUlRBR0VfSU5TVF9HSUQgUE9SVEFHRV9JTlNUX1VJRCBQT1JUQUdFX0xPR19GSUxF IFBPUlRBR0VfTUFTVEVSX1BJRCBQT1JUQUdFX1FVSUVUIFBPUlRBR0VfUkVQT19OQU1FIFBP UlRBR0VfUkVTVFJJQ1QgUE9SVEFHRV9VUERBVEVfRU5WIFBPUlRBR0VfVkVSQk9TRSBQT1JU QUdFX1dPUktESVJfTU9ERSBQT1JURElSIFBPUlRESVJfT1ZFUkxBWSAkeyFQT1JUQUdFX1NB TkRCT1hfKn0gUFJFUk9PVFBBVEggUFJPRklMRV9QQVRIUyBQV09SS0RJUiBRQV9JTlRFUkNF UFRPUlMgUkNfREVGQVVMVF9JTkRFTlQgUkNfRE9UX1BBVFRFUk4gUkNfRU5EQ09MIFJDX0lO REVOVEFUSU9OIFJFQURPTkxZX0VCVUlMRF9NRVRBREFUQSBSRUFET05MWV9QT1JUQUdFX1ZB UlMgUk9PVCBST09UUEFUSCBSUE1ESVIgU1RBUlRESVIgVE1QIFRNUERJUiBVU0VfRVhQQU5E IFdBUk4gWEFSR1MgX1JDX0dFVF9LVl9DQUNIRTsKICAgIHVuc2V0IERPQ19TWU1MSU5LU19E SVIgSU5TVEFMTF9NQVNLIFBLR19JTlNUQUxMX01BU0s7CiAgICBzZXQ7CiAgICBleHBvcnQg KQp9CnNlcSAoKSAKeyAKICAgIGxvY2FsIHA9JCh0eXBlIC1QIHNlcSk7CiAgICBjYXNlICQj IGluIAogICAgICAgIDEpCiAgICAgICAgICAgIG1pbj0xIG1heD0kMSBzdGVwPTEKICAgICAg ICA7OwogICAgICAgIDIpCiAgICAgICAgICAgIG1pbj0kMSBtYXg9JDIgc3RlcD0xCiAgICAg ICAgOzsKICAgICAgICAzKQogICAgICAgICAgICBtaW49JDEgbWF4PSQzIHN0ZXA9JDIKICAg ICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIGRpZSAic2VxIGNhbGxlZCB3aXRoIHdy b25nIG51bWJlciBvZiBhcmd1bWVudHMiCiAgICAgICAgOzsKICAgIGVzYWM7CiAgICBpZiBb WyAteiAke3B9IF1dOyB0aGVuCiAgICAgICAgbG9jYWwgcmVwczsKICAgICAgICBpZiBbWyAk e3N0ZXB9ICE9IDAgXV07IHRoZW4KICAgICAgICAgICAgcmVwcz0kKCggKCRtYXgtJG1pbikg LyAkc3RlcCArMSApKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJlcHM9MDsKICAgICAg ICBmaTsKICAgICAgICBqb3QgJHJlcHMgJG1pbiAkbWF4ICRzdGVwOwogICAgZWxzZQogICAg ICAgICIke3B9IiAkbWluICRzdGVwICRtYXg7CiAgICBmaQp9CnNldF9hcmNoX3RvX2tlcm5l bCAoKSAKeyAKICAgIGV4cG9ydCBBUkNIPSQodGMtYXJjaC1rZXJuZWwpCn0Kc2V0X2FyY2hf dG9fcG9ydGFnZSAoKSAKeyAKICAgIGV4cG9ydCBBUkNIPSQodGMtYXJjaCkKfQpzZXRfY29s b3JzICgpIAp7IAogICAgQ09MUz0ke0NPTFVNTlM6LTB9OwogICAgKCggQ09MUyA9PSAwICkp ICYmIENPTFM9JChzZXQgLS0gJChzdHR5IHNpemUgMj4vZGV2L251bGwpIDsgZWNobyAkMik7 CiAgICAoKCBDT0xTID4gMCApKSB8fCAoKCBDT0xTID0gODAgKSk7CiAgICBDT0xTPSQoKCR7 Q09MU30gLSA4KSk7CiAgICBbWyAkVEVSTSA9IGNvbnMyNSB8fCAkVEVSTSA9IGR1bWIgXV0g JiYgKChDT0xTLS0pKTsKICAgIEVORENPTD0nG1tBG1snJHtDT0xTfSdDJzsKICAgIGlmIFsg LW4gIiR7UE9SVEFHRV9DT0xPUk1BUH0iIF07IHRoZW4KICAgICAgICBldmFsICR7UE9SVEFH RV9DT0xPUk1BUH07CiAgICBlbHNlCiAgICAgICAgR09PRD0nG1szMjswMW0nOwogICAgICAg IFdBUk49JxtbMzM7MDFtJzsKICAgICAgICBCQUQ9JxtbMzE7MDFtJzsKICAgICAgICBISUxJ VEU9JxtbMzY7MDFtJzsKICAgICAgICBCUkFDS0VUPScbWzM0OzAxbSc7CiAgICBmaTsKICAg IE5PUk1BTD0nG1swbScKfQpzZXRfa3ZvYmogKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5j dGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgIGlmIGtlcm5lbF9pcyAyIDY7IHRoZW4KICAgICAg ICBLVl9PQko9ImtvIjsKICAgIGVsc2UKICAgICAgICBLVl9PQko9Im8iOwogICAgZmkKfQpz b3VyY2VfYWxsX2Jhc2hyY3MgKCkgCnsgCiAgICBbWyAkUE9SVEFHRV9CQVNIUkNTX1NPVVJD RUQgPSAxIF1dICYmIHJldHVybiAwOwogICAgUE9SVEFHRV9CQVNIUkNTX1NPVVJDRUQ9MTsK ICAgIGxvY2FsIHg7CiAgICBsb2NhbCBPQ0M9IiR7Q0N9IiBPQ1hYPSIke0NYWH0iOwogICAg aWYgW1sgJEVCVUlMRF9QSEFTRSAhPSBkZXBlbmQgXV07IHRoZW4KICAgICAgICBbICIke0lG UzotdW5zZXR9IiAhPSAidW5zZXQiIF0gJiYgb2xkX0lGUz0iJHtJRlN9IjsKICAgICAgICBJ RlM9JwonOwogICAgICAgIGxvY2FsIHBhdGhfYXJyYXk9KCRQUk9GSUxFX1BBVEhTKTsKICAg ICAgICBpZiBbICIke29sZF9JRlM6LXVuc2V0fSIgIT0gInVuc2V0IiBdOyB0aGVuCiAgICAg ICAgICAgIElGUz0iJHtvbGRfSUZTfSI7CiAgICAgICAgICAgIHVuc2V0IG9sZF9JRlM7CiAg ICAgICAgZWxzZQogICAgICAgICAgICB1bnNldCBJRlM7CiAgICAgICAgZmk7CiAgICAgICAg Zm9yIHggaW4gIiR7cGF0aF9hcnJheVtAXX0iOwogICAgICAgIGRvCiAgICAgICAgICAgIFsg LWYgIiR4L3Byb2ZpbGUuYmFzaHJjIiBdICYmIHFhX3NvdXJjZSAiJHgvcHJvZmlsZS5iYXNo cmMiOwogICAgICAgIGRvbmU7CiAgICBmaTsKICAgIGlmIFsgLWYgIiR7UE9SVEFHRV9CQVNI UkN9IiBdOyB0aGVuCiAgICAgICAgaWYgWyAiJFBPUlRBR0VfREVCVUciICE9ICIxIiBdIHx8 IFsgIiR7LS94L30iICE9ICIkLSIgXTsgdGhlbgogICAgICAgICAgICBzb3VyY2UgIiR7UE9S VEFHRV9CQVNIUkN9IjsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHNldCAteDsKICAgICAg ICAgICAgc291cmNlICIke1BPUlRBR0VfQkFTSFJDfSI7CiAgICAgICAgICAgIHNldCAreDsK ICAgICAgICBmaTsKICAgIGZpOwogICAgWyAhIC16ICIke09DQ30iIF0gJiYgZXhwb3J0IEND PSIke09DQ30iOwogICAgWyAhIC16ICIke09DWFh9IiBdICYmIGV4cG9ydCBDWFg9IiR7T0NY WH0iCn0Kc3JjX2NvbXBpbGUgKCkgCnsgCiAgICBsaW51eC1tb2Rfc3JjX2NvbXBpbGU7CiAg ICBlaW5mbyAiQnVpbGRpbmcgZmdsX2dseGdlYXJzIjsKICAgIGNkICIke1N9Ii9leHRyYS9m Z2xfZ2x4Z2VhcnM7CiAgICAiJCh0Yy1nZXRDQykiIC1vIGZnbF9nbHhnZWFycyAke0NGTEFH U30gJHtMREZMQUdTfSAtRFVTRV9HTFUgLUkiJHtTfSIvY29tbW9uL3Vzci9pbmNsdWRlIGZn bF9nbHhnZWFycy5jIC1sR0wgLWxHTFUgLWxYMTEgLWxtIHx8IGRpZSAiZmdsX2dseGdlYXJz IGJ1aWxkIGZhaWxlZCI7CiAgICBlaW5mbyAiQnVpbGRpbmcgZmdscnhfZ2FtbWEgbGliIjsK ICAgIGNkICIke1N9Ii9leHRyYS9saWIvZmdscnhfZ2FtbWE7CiAgICAiJCh0Yy1nZXRDQyki IC1zaGFyZWQgLWZwaWMgLW8gbGliZmdscnhfZ2FtbWEuc28uMS4wICR7Q0ZMQUdTfSAke0xE RkxBR1N9IC1EWEY4Nk1JU0MgLVdsLC1zb25hbWUsbGliZmdscnhfZ2FtbWEuc28uMS4wIGZn bHJ4X2dhbW1hLmMgLWxYZXh0IHx8IGRpZSAiZmdscnhfZ2FtbWEgbGliIGJ1aWxkIGZhaWxl ZCI7CiAgICBsbiAtcyBsaWJmZ2xyeF9nYW1tYS5zby4xLjAgbGliZmdscnhfZ2FtbWEuc28g fHwgZGllICJsbiBmYWlsZWQiOwogICAgbG4gLXMgbGliZmdscnhfZ2FtbWEuc28uMS4wIGxp YmZnbHJ4X2dhbW1hLnNvLjEgfHwgZGllICJsbiBmYWlsZWQiOwogICAgZWluZm8gIkJ1aWxk aW5nIGZnbHJ4X2dhbW1hIHV0aWwiOwogICAgY2QgIiR7U30iL2V4dHJhL3Byb2dyYW1zL2Zn bHJ4X2dhbW1hOwogICAgIiQodGMtZ2V0Q0MpIiAtbyBmZ2xyeF94Z2FtbWEgJHtDRkxBR1N9 ICR7TERGTEFHU30gLUkuLi8uLi8uLi9jb21tb24vdXNyL1gxMVI2L2luY2x1ZGUgLUwuLi8u Li9saWIvZmdscnhfZ2FtbWEgZmdscnhfeGdhbW1hLmMgLWxtIC1sZmdscnhfZ2FtbWEgLWxY MTEgfHwgZGllICJmZ2xyeF9nYW1tYSB1dGlsIGJ1aWxkIGZhaWxlZCIKfQpzcmNfaW5zdGFs bCAoKSAKeyAKICAgIGxpbnV4LW1vZF9zcmNfaW5zdGFsbDsKICAgIGVjaG8gIkNPTE9OX1NF UEFSQVRFRD1MSUJHTF9EUklWRVJTX1BBVEgiID4gIiR7VH0vMDNhdGktY29sb24tc2VwIjsK ICAgIGRvZW52ZCAiJHtUfS8wM2F0aS1jb2xvbi1zZXAiOwogICAgaWYgaGFzX211bHRpbGli X3Byb2ZpbGU7IHRoZW4KICAgICAgICBsb2NhbCBPQUJJPSR7QUJJfTsKICAgICAgICBmb3Ig QUJJIGluICQoZ2V0X2luc3RhbGxfYWJpcyk7CiAgICAgICAgZG8KICAgICAgICAgICAgc3Jj X2luc3RhbGwtbGliczsKICAgICAgICBkb25lOwogICAgICAgIEFCST0ke09BQkl9OwogICAg ICAgIHVuc2V0IE9BQkk7CiAgICBlbHNlCiAgICAgICAgc3JjX2luc3RhbGwtbGliczsKICAg IGZpOwogICAgZXhlaW50byAvdXNyLyQoZ2V0X2xpYmRpcikveG9yZy9tb2R1bGVzL2RyaXZl cnM7CiAgICBkb2V4ZSAiJHtNWV9CQVNFX0RJUn0iL3Vzci9YMTFSNi8ke1BLR19MSUJESVJ9 L21vZHVsZXMvZHJpdmVycy9mZ2xyeF9kcnYuc287CiAgICBleGVpbnRvIC91c3IvJChnZXRf bGliZGlyKS94b3JnL21vZHVsZXMvbGludXg7CiAgICBkb2V4ZSAiJHtNWV9CQVNFX0RJUn0i L3Vzci9YMTFSNi8ke1BLR19MSUJESVJ9L21vZHVsZXMvbGludXgvbGliZmdscnhkcm0uc287 CiAgICBleGVpbnRvIC91c3IvJChnZXRfbGliZGlyKS94b3JnL21vZHVsZXM7CiAgICBkb2V4 ZSAiJHtNWV9CQVNFX0RJUn0iL3Vzci9YMTFSNi8ke1BLR19MSUJESVJ9L21vZHVsZXMve2Vz dXQuYSxnbGVzeC5zbyxhbWR4bW0uc299OwogICAgaW50byAvb3B0OwogICAgaWYgdXNlIGFj cGk7IHRoZW4KICAgICAgICBkb3NiaW4gIiR7QVJDSF9ESVJ9Ii91c3Ivc2Jpbi9hdGlldmVu dHNkOwogICAgZmk7CiAgICBkb2JpbiAiJHtBUkNIX0RJUn0iL3Vzci9YMTFSNi9iaW4vKjsK ICAgIGV4ZWludG8gL3Vzci8kKGdldF9saWJkaXIpOwogICAgZG9leGUgJChmaW5kICIke0FS Q0hfRElSfSIvdXNyL1gxMVI2LyR7UEtHX0xJQkRJUn0gCQktbWF4ZGVwdGggMSAtdHlwZSBm IC1uYW1lICcqLnNvKicgLW5vdCAtbmFtZSAnbGliR0wuc28qJyk7CiAgICBpbnNpbnRvIC91 c3IvJChnZXRfbGliZGlyKTsKICAgIGRvaW5zICQoZmluZCAiJHtBUkNIX0RJUn0iL3Vzci9Y MTFSNi8ke1BLR19MSUJESVJ9IAkJLW1heGRlcHRoIDEgLXR5cGUgZiAtbm90IC1uYW1lICcq LnNvKicpOwogICAgaW5zaW50byAvZXRjL2F0aTsKICAgIGRvaW5zIGNvbW1vbi9ldGMvYXRp L3tsb2dvKixjb250cm9sLGF0aW9nbC54bWwsc2lnbmF0dXJlLGFtZHBjc2RiLmRlZmF1bHR9 OwogICAgaWYgdXNlIGFjcGk7IHRoZW4KICAgICAgICBkb2lucyBjb21tb24vZXRjL2F0aS9h dXRoYXRpZXZlbnRzZC5zaDsKICAgIGZpOwogICAgaW5zaW50byAvdXNyOwogICAgZG9pbnMg LXIgY29tbW9uL3Vzci9pbmNsdWRlOwogICAgaW5zaW50byAvdXNyL2luY2x1ZGUvWDExL2V4 dGVuc2lvbnM7CiAgICBkb2lucyBjb21tb24vdXNyL1gxMVI2L2luY2x1ZGUvWDExL2V4dGVu c2lvbnMvZmdscnhfZ2FtbWEuaDsKICAgIGludG8gL3VzcjsKICAgIGRvc2JpbiBjb21tb24v dXNyL3NiaW4vKjsKICAgIGluc2ludG8gL3Vzci9zaGFyZTsKICAgIGRvaW5zIC1yIGNvbW1v bi91c3Ivc2hhcmUvYXRpOwogICAgaW5zaW50byAvdXNyL3NoYXJlL3BpeG1hcHM7CiAgICBk b2lucyBjb21tb24vdXNyL3NoYXJlL2ljb25zL2NjY197bGFyZ2Usc21hbGx9LnhwbTsKICAg IG1ha2VfZGVza3RvcF9lbnRyeSBhbWRjY2NsZSAnQVRJIENhdGFseXN0IENvbnRyb2wgQ2Vu dGVyJyBjY2NfbGFyZ2UgU3lzdGVtOwogICAgZG9odG1sIC1yIGNvbW1vbi91c3Ivc2hhcmUv ZG9jL2ZnbHJ4OwogICAgaWYgdXNlIGFjcGk7IHRoZW4KICAgICAgICBkb21hbiBjb21tb24v dXNyL3NoYXJlL21hbi9tYW44L2F0aWV2ZW50c2QuODsKICAgICAgICBwdXNoZCBjb21tb24v dXNyL3NoYXJlL2RvYy9mZ2xyeC9leGFtcGxlcy9ldGMvYWNwaSA+IC9kZXYvbnVsbDsKICAg ICAgICBleGVpbnRvIC9ldGMvYWNwaTsKICAgICAgICBkb2V4ZSBhdGktcG93ZXJtb2RlLnNo OwogICAgICAgIGluc2ludG8gL2V0Yy9hY3BpL2V2ZW50czsKICAgICAgICBkb2lucyBldmVu dHMvKjsKICAgICAgICBwb3BkID4gL2Rldi9udWxsOwogICAgZmk7CiAgICBkb2JpbiBleHRy YS9mZ2xfZ2x4Z2VhcnMvZmdsX2dseGdlYXJzOwogICAgbmV3ZG9jIGV4dHJhL2ZnbF9nbHhn ZWFycy9SRUFETUUgUkVBRE1FLmZnbF9nbHhnZWFyczsKICAgIGRvbGliIGV4dHJhL2xpYi9m Z2xyeF9nYW1tYS8qc28qOwogICAgbmV3ZG9jIGV4dHJhL2xpYi9mZ2xyeF9nYW1tYS9SRUFE TUUgUkVBRE1FLmxpYmZnbHJ4X2dhbW1hOwogICAgZG9iaW4gZXh0cmEvcHJvZ3JhbXMvZmds cnhfZ2FtbWEvZmdscnhfeGdhbW1hOwogICAgZG9tYW4gZXh0cmEvcHJvZ3JhbXMvZmdscnhf Z2FtbWEvZmdscnhfeGdhbW1hLjE7CiAgICBuZXdkb2MgZXh0cmEvcHJvZ3JhbXMvZmdscnhf Z2FtbWEvUkVBRE1FIFJFQURNRS5mZ2xyeF9nYW1tYTsKICAgIGlmIHVzZSBhY3BpOyB0aGVu CiAgICAgICAgbmV3aW5pdGQgIiR7RklMRVNESVJ9Ii9hdGlldmVudHNkLmluaXQgYXRpZXZl bnRzZCB8fCBkaWUgIkZhaWxlZCB0byBpbnN0YWxsIGF0aWV2ZW50c2QuaW5pdC5kIjsKICAg ICAgICBlY2hvICdBVElFVkVOVFNET1BUUz0iIicgPiAiJHtUfSIvYXRpZXZlbnRzZC5jb25m OwogICAgICAgIG5ld2NvbmZkICIke1R9Ii9hdGlldmVudHNkLmNvbmYgYXRpZXZlbnRzZDsK ICAgIGZpCn0Kc3JjX2luc3RhbGwtbGlicyAoKSAKeyAKICAgIGlmIFtbICIke0FCSX0iID09 ICJhbWQ2NCIgXV07IHRoZW4KICAgICAgICBsb2NhbCBFWF9CQVNFX0RJUj0iJHtCQVNFX0RJ Un1fNjRhIjsKICAgICAgICBsb2NhbCBwa2dsaWJkaXI9bGliNjQ7CiAgICAgICAgbG9jYWwg TVlfQVJDSF9ESVI9IiR7U30vYXJjaC94ODZfNjQiOwogICAgZWxzZQogICAgICAgIGxvY2Fs IEVYX0JBU0VfRElSPSIke0JBU0VfRElSfSI7CiAgICAgICAgbG9jYWwgcGtnbGliZGlyPWxp YjsKICAgICAgICBsb2NhbCBNWV9BUkNIX0RJUj0iJHtTfS9hcmNoL3g4NiI7CiAgICBmaTsK ICAgIGVpbmZvICJhdGkgdHJlZSAnJHtwa2dsaWJkaXJ9JyAtPiAnJChnZXRfbGliZGlyKScg b24gc3lzdGVtIjsKICAgIGxvY2FsIEFUSV9ST09UPS91c3IvJChnZXRfbGliZGlyKS9vcGVu Z2wvYXRpOwogICAgbG9jYWwgbGlibWFqb3I9MSBsaWJtaW5vcj0yOwogICAgbG9jYWwgbGli dmVyPSR7bGlibWFqb3J9LiR7bGlibWlub3J9OwogICAgZXhlaW50byAke0FUSV9ST09UfS9s aWI7CiAgICBkb2V4ZSAiJHtNWV9BUkNIX0RJUn0iL3Vzci9YMTFSNi8ke3BrZ2xpYmRpcn0v bGliR0wuc28uJHtsaWJ2ZXJ9OwogICAgZG9zeW0gbGliR0wuc28uJHtsaWJ2ZXJ9ICR7QVRJ X1JPT1R9L2xpYi9saWJHTC5zby4ke2xpYm1ham9yfTsKICAgIGRvc3ltIGxpYkdMLnNvLiR7 bGlidmVyfSAke0FUSV9ST09UfS9saWIvbGliR0wuc287CiAgICBleGVpbnRvICR7QVRJX1JP T1R9L2V4dGVuc2lvbnM7CiAgICBkb2V4ZSAiJHtFWF9CQVNFX0RJUn0iL3Vzci9YMTFSNi8k e3BrZ2xpYmRpcn0vbW9kdWxlcy9leHRlbnNpb25zLyo7CiAgICBleGVpbnRvIC91c3IvJChn ZXRfbGliZGlyKS9kcmk7CiAgICBkb2V4ZSAiJHtNWV9BUkNIX0RJUn0iL3Vzci9YMTFSNi8k e3BrZ2xpYmRpcn0vbW9kdWxlcy9kcmkvZmdscnhfZHJpLnNvOwogICAgbG9jYWwgcmV2aXNp b249JChwcmludGYgJyVkJTAyZCUwMmQnICQoZ2V0X3ZlcnNpb25fY29tcG9uZW50cykpOwog ICAgc2VkIC1lICJzOlwke2xpYm1ham9yfToke2xpYm1ham9yfTpnIiAtZSAiczpcJHtsaWJt aW5vcn06JHtsaWJtaW5vcn06ZyIgLWUgInM6XCR7bGliZGlyfTokKGdldF9saWJkaXIpOmci IC1lICJzOlwke3JldmlzaW9ufToke3JldmlzaW9ufTpnIiAiJHtGSUxFU0RJUn0iL2xpYkdM LmxhLmluID4gIiR7RH0iLyR7QVRJX1JPT1R9L2xpYi9saWJHTC5sYSB8fCBkaWUgInNlZCBm YWlsZWQgdG8gbWFrZSBsaWJHTC5sYSI7CiAgICBsb2NhbCBlbnZuYW1lPSIke1R9Ii8wNGF0 aS1kcmktcGF0aDsKICAgIGlmIFtbIC1uICR7QUJJfSBdXTsgdGhlbgogICAgICAgIGVudm5h bWU9IiR7ZW52bmFtZX0tJHtBQkl9IjsKICAgIGZpOwogICAgZWNobyAiTElCR0xfRFJJVkVS U19QQVRIPS91c3IvJChnZXRfbGliZGlyKS9kcmkiID4gIiR7ZW52bmFtZX0iOwogICAgZG9l bnZkICIke2Vudm5hbWV9Igp9CnNyY190ZXN0ICgpIAp7IAogICAgX2VhcGkwX3NyY190ZXN0 ICIkQCIKfQpzcmNfdW5wYWNrICgpIAp7IAogICAgbG9jYWwgc3JjPSIke0RJU1RESVJ9LyR7 QX0iOwogICAgc2ggIiR7c3JjfSIgLS1leHRyYWN0ICIke1N9IiAyIC9kZXYvbnVsbCA+JjE7 CiAgICBybSAiJHtBUkNIX0RJUn0iL3Vzci9YMTFSNi9iaW4ve2ZnbF9nbHhnZWFycyxmZ2xy eF94Z2FtbWF9ICIke0FSQ0hfRElSfSIvdXNyL1gxMVI2LyR7UEtHX0xJQkRJUn0vbGliZmds cnhfZ2FtbWEqIHx8IGRpZSAiYmluIHJtIGZhaWxlZCI7CiAgICBpZiB1c2UgZGVidWc7IHRo ZW4KICAgICAgICBzZWQgLWkgJy9eI2RlZmluZSBEUk1fREVCVUdfQ09ERS9zLzAvMS8nICIk e01PRFVMRV9ESVJ9L2ZpcmVnbF9wdWJsaWMuYyIgfHwgZGllICJGYWlsZWQgdG8gZW5hYmxl IGRlYnVnIG91dHB1dC4iOwogICAgZmk7CiAgICBpZiB1c2UgYWNwaTsgdGhlbgogICAgICAg IHNlZCAtaSAtZSAiczovdmFyL2xpYi94ZG0vYXV0aGRpci9hdXRoZmlsZXMvOi92YXIvcnVu L3hhdXRoLzoiIC1lICJzOi92YXIvbGliL2dkbS86L3Zhci9nZG0vOiIgIiR7U30vY29tbW9u L2V0Yy9hdGkvYXV0aGF0aWV2ZW50c2Quc2giIHx8IGRpZSAic2VkIGZhaWxlZC4iOwogICAg ICAgIHNlZCAtaSAtZSAnczpmaW5nZXI6d2hvOicgIiR7U30vY29tbW9uL3Vzci9zaGFyZS9k b2MvZmdscngvZXhhbXBsZXMvZXRjL2FjcGkvYXRpLXBvd2VybW9kZS5zaCIgfHwgZGllICJS ZXBsYWNpbmcgJ2Zpbmdlcicgd2l0aCAnd2hvJyBmYWlsZWQuIjsKICAgICAgICBlcGF0Y2gg IiR7RklMRVNESVJ9Ii8ke1BWfS9hdGktcG93ZXJtb2RlLW9wdC1wYXRoLTIucGF0Y2g7CiAg ICBmaTsKICAgIHB1c2hkICR7TU9EVUxFX0RJUn0gPiAvZGV2L251bGw7CiAgICBsbiAtcyAi JHtBUkNIX0RJUn0iL2xpYi9tb2R1bGVzL2ZnbHJ4L2J1aWxkX21vZC9saWJmZ2xyeF9pcC5h LkdDQyQoZ2NjLW1ham9yLXZlcnNpb24pIHx8IGRpZSAic3ltbGlua2luZyBwcmVjb21waWxl ZCBjb3JlIGZhaWxlZCI7CiAgICBjb252ZXJ0X3RvX20gMi42LngvTWFrZWZpbGUgfHwgZGll ICJjb252ZXJ0X3RvX20gZmFpbGVkIjsKICAgIHNlZCAtaSAtZSAncy9fX1NNUF9fL0NPTkZJ R19TTVAvJyAqLmMgKmggfHwgZGllICJTTVAgc2VkIGZhaWxlZCI7CiAgICBzZWQgLWkgLWUg J3MvaWZkZWYgTU9EVkVSU0lPTlMvaWZkZWYgQ09ORklHX01PRFZFUlNJT05TLycgKi5jICou aCB8fCBkaWUgIk1PRFZFUlNJT05TIHNlZCBmYWlsZWQiOwogICAgcG9wZCA+IC9kZXYvbnVs bDsKICAgIG1rZGlyIGV4dHJhIHx8IGRpZSAibWtkaXIgZmFpbGVkIjsKICAgIGNkIGV4dHJh OwogICAgdW5wYWNrIC4vLi4vY29tbW9uL3Vzci9zcmMvYXRpL2ZnbHJ4X3NhbXBsZV9zb3Vy Y2UudGd6OwogICAgc2VkIC1pIC1lICdzOmluY2x1ZGUvZXh0ZW5zaW9ucy9leHR1dGlsLmg6 WDExL2V4dGVuc2lvbnMvZXh0dXRpbC5oOicgbGliL2ZnbHJ4X2dhbW1hL2ZnbHJ4X2dhbW1h LmMgfHwgZGllICJpbmNsdWRlIGZpeHVwIGZhaWxlZCI7CiAgICBtdiBwcm9ncmFtcy9mZ2xy eF9nYW1tYS9mZ2xyeF94Z2FtbWEue21hbiwxfSB8fCBkaWUgIm1hbiBtdiBmYWlsZWQiOwog ICAgY2QgLi4KfQpzdHJpcC1saW5ndWFzICgpIAp7IAogICAgbG9jYWwgbHMgbmV3bHMgbm9s czsKICAgIGlmIFtbICQxID09ICItaSIgXV0gfHwgW1sgJDEgPT0gIi11IiBdXTsgdGhlbgog ICAgICAgIGxvY2FsIG9wPSQxOwogICAgICAgIHNoaWZ0OwogICAgICAgIGxzPSQoZmluZCAi JDEiIC1uYW1lICcqLnBvJyAtZXhlYyBiYXNlbmFtZSB7fSAucG8gJzsnKTsKICAgICAgICBz aGlmdDsKICAgICAgICBsb2NhbCBkIGY7CiAgICAgICAgZm9yIGQgaW4gIiRAIjsKICAgICAg ICBkbwogICAgICAgICAgICBpZiBbWyAke29wfSA9PSAiLXUiIF1dOyB0aGVuCiAgICAgICAg ICAgICAgICBuZXdscz0ke2xzfTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg bmV3bHM9IiI7CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBmb3IgZiBpbiAkKGZpbmQg IiRkIiAtbmFtZSAnKi5wbycgLWV4ZWMgYmFzZW5hbWUge30gLnBvICc7Jyk7CiAgICAgICAg ICAgIGRvCiAgICAgICAgICAgICAgICBpZiBbWyAke29wfSA9PSAiLWkiIF1dOyB0aGVuCiAg ICAgICAgICAgICAgICAgICAgaGFzcSAke2Z9ICR7bHN9ICYmIG5ld2xzPSIke25ld2xzfSAk e2Z9IjsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBoYXNxICR7 Zn0gJHtsc30gfHwgbmV3bHM9IiR7bmV3bHN9ICR7Zn0iOwogICAgICAgICAgICAgICAgZmk7 CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgIGxzPSR7bmV3bHN9OwogICAgICAgIGRv bmU7CiAgICBlbHNlCiAgICAgICAgbHM9IiRAIjsKICAgIGZpOwogICAgbm9scz0iIjsKICAg IG5ld2xzPSIiOwogICAgZm9yIGYgaW4gJHtMSU5HVUFTfTsKICAgIGRvCiAgICAgICAgaWYg aGFzcSAke2Z9ICR7bHN9OyB0aGVuCiAgICAgICAgICAgIG5ld2xzPSIke25ld2xzfSAke2Z9 IjsKICAgICAgICBlbHNlCiAgICAgICAgICAgIG5vbHM9IiR7bm9sc30gJHtmfSI7CiAgICAg ICAgZmk7CiAgICBkb25lOwogICAgW1sgLW4gJHtub2xzfSBdXSAmJiBld2FybiAiU29ycnks IGJ1dCAke1BOfSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBMSU5HVUFTOiIgJHtub2xzfTsKICAg IGV4cG9ydCBMSU5HVUFTPSR7bmV3bHM6MX0KfQpzdHJpcF9kdXBsaWNhdGVfc2xhc2hlcyAo KSAKeyAKICAgIGlmIFtbIC1uICQxIF1dOyB0aGVuCiAgICAgICAgbG9jYWwgcmVtb3ZlZD0k MTsKICAgICAgICB3aGlsZSBbWyAke3JlbW92ZWR9ID09ICovLyogXV07IGRvCiAgICAgICAg ICAgIHJlbW92ZWQ9JHtyZW1vdmVkLy9cL1wvLy99OwogICAgICAgIGRvbmU7CiAgICAgICAg ZWNobyAke3JlbW92ZWR9OwogICAgZmkKfQpzdHJpcF9tb2R1bGVuYW1lcyAoKSAKeyAKICAg IGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICQqOwogICAgbG9jYWwgaTsKICAg IGZvciBpIGluICR7TU9EVUxFX0lHTk9SRX07CiAgICBkbwogICAgICAgIE1PRFVMRV9OQU1F Uz0ke01PRFVMRV9OQU1FUy8vJHtpfSgqfTsKICAgIGRvbmUKfQp0Yy1hcmNoICgpIAp7IAog ICAgdGMtbmluamFfbWFnaWNfdG9fYXJjaCBwb3J0YWdlICIkQCIKfQp0Yy1hcmNoLWtlcm5l bCAoKSAKeyAKICAgIHRjLW5pbmphX21hZ2ljX3RvX2FyY2gga2VybiAiJEAiCn0KdGMtZW5k aWFuICgpIAp7IAogICAgbG9jYWwgaG9zdD0kMTsKICAgIFtbIC16ICR7aG9zdH0gXV0gJiYg aG9zdD0ke0NUQVJHRVQ6LSR7Q0hPU1R9fTsKICAgIGhvc3Q9JHtob3N0JSUtKn07CiAgICBj YXNlICR7aG9zdH0gaW4gCiAgICAgICAgYWxwaGEqKQogICAgICAgICAgICBlY2hvIGJpZwog ICAgICAgIDs7CiAgICAgICAgYXJtKmIqKQogICAgICAgICAgICBlY2hvIGJpZwogICAgICAg IDs7CiAgICAgICAgYXJtKikKICAgICAgICAgICAgZWNobyBsaXR0bGUKICAgICAgICA7Owog ICAgICAgIGNyaXMqKQogICAgICAgICAgICBlY2hvIGxpdHRsZQogICAgICAgIDs7CiAgICAg ICAgaHBwYSopCiAgICAgICAgICAgIGVjaG8gYmlnCiAgICAgICAgOzsKICAgICAgICBpPzg2 KikKICAgICAgICAgICAgZWNobyBsaXR0bGUKICAgICAgICA7OwogICAgICAgIGlhNjQqKQog ICAgICAgICAgICBlY2hvIGxpdHRsZQogICAgICAgIDs7CiAgICAgICAgbTY4KikKICAgICAg ICAgICAgZWNobyBiaWcKICAgICAgICA7OwogICAgICAgIG1pcHMqbCopCiAgICAgICAgICAg IGVjaG8gbGl0dGxlCiAgICAgICAgOzsKICAgICAgICBtaXBzKikKICAgICAgICAgICAgZWNo byBiaWcKICAgICAgICA7OwogICAgICAgIHBvd2VycGMqKQogICAgICAgICAgICBlY2hvIGJp ZwogICAgICAgIDs7CiAgICAgICAgczM5MCopCiAgICAgICAgICAgIGVjaG8gYmlnCiAgICAg ICAgOzsKICAgICAgICBzaCpiKikKICAgICAgICAgICAgZWNobyBiaWcKICAgICAgICA7Owog ICAgICAgIHNoKikKICAgICAgICAgICAgZWNobyBsaXR0bGUKICAgICAgICA7OwogICAgICAg IHNwYXJjKikKICAgICAgICAgICAgZWNobyBiaWcKICAgICAgICA7OwogICAgICAgIHg4Nl82 NCopCiAgICAgICAgICAgIGVjaG8gbGl0dGxlCiAgICAgICAgOzsKICAgICAgICAqKQogICAg ICAgICAgICBlY2hvIHd0ZgogICAgICAgIDs7CiAgICBlc2FjCn0KdGMtZXhwb3J0ICgpIAp7 IAogICAgbG9jYWwgdmFyOwogICAgZm9yIHZhciBpbiAiJEAiOwogICAgZG8KICAgICAgICBb WyAkKHR5cGUgLXQgdGMtZ2V0JHt2YXJ9KSAhPSAiZnVuY3Rpb24iIF1dICYmIGRpZSAidGMt ZXhwb3J0OiBpbnZhbGlkIGV4cG9ydCB2YXJpYWJsZSAnJHt2YXJ9JyI7CiAgICAgICAgZXZh bCB0Yy1nZXQke3Zhcn0gPiAvZGV2L251bGw7CiAgICBkb25lCn0KdGMtZ2V0QVIgKCkgCnsg CiAgICB0Yy1nZXRQUk9HIEFSIGFyICIkQCIKfQp0Yy1nZXRBUyAoKSAKeyAKICAgIHRjLWdl dFBST0cgQVMgYXMgIiRAIgp9CnRjLWdldEJVSUxEX0NDICgpIAp7IAogICAgbG9jYWwgdjsK ICAgIGZvciB2IGluIENDX0ZPUl9CVUlMRCBCVUlMRF9DQyBIT1NUQ0M7CiAgICBkbwogICAg ICAgIGlmIFtbIC1uICR7IXZ9IF1dOyB0aGVuCiAgICAgICAgICAgIGV4cG9ydCBCVUlMRF9D Qz0keyF2fTsKICAgICAgICAgICAgZWNobyAiJHshdn0iOwogICAgICAgICAgICByZXR1cm4g MDsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBsb2NhbCBzZWFyY2g9OwogICAgaWYgW1sg LW4gJHtDQlVJTER9IF1dOyB0aGVuCiAgICAgICAgc2VhcmNoPSQodHlwZSAtcCAke0NCVUlM RH0tZ2NjKTsKICAgICAgICBzZWFyY2g9JHtzZWFyY2gjIyovfTsKICAgIGZpOwogICAgc2Vh cmNoPSR7c2VhcmNoOi1nY2N9OwogICAgZXhwb3J0IEJVSUxEX0NDPSR7c2VhcmNofTsKICAg IGVjaG8gIiR7c2VhcmNofSIKfQp0Yy1nZXRDQyAoKSAKeyAKICAgIHRjLWdldFBST0cgQ0Mg Z2NjICIkQCIKfQp0Yy1nZXRDUFAgKCkgCnsgCiAgICB0Yy1nZXRQUk9HIENQUCBjcHAgIiRA Igp9CnRjLWdldENYWCAoKSAKeyAKICAgIHRjLWdldFBST0cgQ1hYIGcrKyAiJEAiCn0KdGMt Z2V0Rjc3ICgpIAp7IAogICAgdGMtZ2V0UFJPRyBGNzcgZjc3ICIkQCIKfQp0Yy1nZXRGQyAo KSAKeyAKICAgIHRjLWdldFBST0cgRkMgZ2ZvcnRyYW4gIiRAIgp9CnRjLWdldEdDSiAoKSAK eyAKICAgIHRjLWdldFBST0cgR0NKIGdjaiAiJEAiCn0KdGMtZ2V0TEQgKCkgCnsgCiAgICB0 Yy1nZXRQUk9HIExEIGxkICIkQCIKfQp0Yy1nZXROTSAoKSAKeyAKICAgIHRjLWdldFBST0cg Tk0gbm0gIiRAIgp9CnRjLWdldE9CSkNPUFkgKCkgCnsgCiAgICB0Yy1nZXRQUk9HIE9CSkNP UFkgb2JqY29weSAiJEAiCn0KdGMtZ2V0UFJPRyAoKSAKeyAKICAgIGxvY2FsIHZhcj0kMTsK ICAgIGxvY2FsIHByb2c9JDI7CiAgICBpZiBbWyAtbiAkeyF2YXJ9IF1dOyB0aGVuCiAgICAg ICAgZWNobyAiJHshdmFyfSI7CiAgICAgICAgcmV0dXJuIDA7CiAgICBmaTsKICAgIGxvY2Fs IHNlYXJjaD07CiAgICBbWyAtbiAkMyBdXSAmJiBzZWFyY2g9JCh0eXBlIC1wICIkMy0ke3By b2d9Iik7CiAgICBbWyAteiAke3NlYXJjaH0gJiYgLW4gJHtDSE9TVH0gXV0gJiYgc2VhcmNo PSQodHlwZSAtcCAiJHtDSE9TVH0tJHtwcm9nfSIpOwogICAgW1sgLW4gJHtzZWFyY2h9IF1d ICYmIHByb2c9JHtzZWFyY2gjIyovfTsKICAgIGV4cG9ydCAke3Zhcn09JHtwcm9nfTsKICAg IGVjaG8gIiR7IXZhcn0iCn0KdGMtZ2V0UkFOTElCICgpIAp7IAogICAgdGMtZ2V0UFJPRyBS QU5MSUIgcmFubGliICIkQCIKfQp0Yy1nZXRTVFJJUCAoKSAKeyAKICAgIHRjLWdldFBST0cg U1RSSVAgc3RyaXAgIiRAIgp9CnRjLWlzLWNyb3NzLWNvbXBpbGVyICgpIAp7IAogICAgcmV0 dXJuICQoW1sgJHtDQlVJTEQ6LSR7Q0hPU1R9fSAhPSAke0NIT1NUfSBdXSkKfQp0Yy1pcy1z b2Z0ZmxvYXQgKCkgCnsgCiAgICBjYXNlICR7Q1RBUkdFVH0gaW4gCiAgICAgICAgYmZpbiog fCBoODMwMCopCiAgICAgICAgICAgIGVjaG8gIm9ubHkiCiAgICAgICAgOzsKICAgICAgICAq KQogICAgICAgICAgICBbWyAke0NUQVJHRVQvL18vLX0gPT0gKi1zb2Z0ZmxvYXQtKiBdXSAm JiBlY2hvICJ5ZXMiIHx8IGVjaG8gIm5vIgogICAgICAgIDs7CiAgICBlc2FjCn0KdGMtaXMt c3RhdGljLW9ubHkgKCkgCnsgCiAgICBsb2NhbCBob3N0PSR7Q1RBUkdFVDotJHtDSE9TVH19 OwogICAgcmV0dXJuICQoW1sgJHtob3N0fSA9PSAqLW1pbnQqIF1dKQp9CnRjLW5pbmphX21h Z2ljX3RvX2FyY2ggKCkgCnsgCiAgICBmdW5jdGlvbiBuaW5qICgpIAogICAgeyAKICAgICAg ICBbWyAke3R5cGV9ID09ICJrZXJuIiBdXSAmJiBlY2hvICQxIHx8IGVjaG8gJDIKICAgIH07 CiAgICBsb2NhbCB0eXBlPSQxOwogICAgbG9jYWwgaG9zdD0kMjsKICAgIFtbIC16ICR7aG9z dH0gXV0gJiYgaG9zdD0ke0NUQVJHRVQ6LSR7Q0hPU1R9fTsKICAgIGNhc2UgJHtob3N0fSBp biAKICAgICAgICBhbHBoYSopCiAgICAgICAgICAgIGVjaG8gYWxwaGEKICAgICAgICA7Owog ICAgICAgIGFybSopCiAgICAgICAgICAgIGVjaG8gYXJtCiAgICAgICAgOzsKICAgICAgICBh dnIqKQogICAgICAgICAgICBuaW5qIGF2cjMyIGF2cgogICAgICAgIDs7CiAgICAgICAgYmZp biopCiAgICAgICAgICAgIG5pbmogYmxhY2tmaW4gYmZpbgogICAgICAgIDs7CiAgICAgICAg Y3JpcyopCiAgICAgICAgICAgIGVjaG8gY3JpcwogICAgICAgIDs7CiAgICAgICAgaHBwYSop CiAgICAgICAgICAgIG5pbmogcGFyaXNjIGhwcGEKICAgICAgICA7OwogICAgICAgIGk/ODYq KQogICAgICAgICAgICBpZiBbWyAke3R5cGV9ID09ICJrZXJuIiBdXSAmJiBbWyAkKEtWX3Rv X2ludCAke0tWfSkgLWx0ICQoS1ZfdG9faW50IDIuNi4yNCkgfHwgJHtob3N0fSA9PSAqZnJl ZWJzZCogXV07IHRoZW4KICAgICAgICAgICAgICAgIGVjaG8gaTM4NjsKICAgICAgICAgICAg ZWxzZQogICAgICAgICAgICAgICAgZWNobyB4ODY7CiAgICAgICAgICAgIGZpCiAgICAgICAg OzsKICAgICAgICBpYTY0KikKICAgICAgICAgICAgZWNobyBpYTY0CiAgICAgICAgOzsKICAg ICAgICBtNjgqKQogICAgICAgICAgICBlY2hvIG02OGsKICAgICAgICA7OwogICAgICAgIG1p cHMqKQogICAgICAgICAgICBlY2hvIG1pcHMKICAgICAgICA7OwogICAgICAgIG5pb3MyKikK ICAgICAgICAgICAgZWNobyBuaW9zMgogICAgICAgIDs7CiAgICAgICAgbmlvcyopCiAgICAg ICAgICAgIGVjaG8gbmlvcwogICAgICAgIDs7CiAgICAgICAgcG93ZXJwYyopCiAgICAgICAg ICAgIGlmIFtbICQoS1ZfdG9faW50ICR7S1Z9KSAtZ2UgJChLVl90b19pbnQgMi42LjE2KSBd XSAmJiBbWyAke3R5cGV9ID09ICJrZXJuIiBdXTsgdGhlbgogICAgICAgICAgICAgICAgZWNo byBwb3dlcnBjOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBpZiBbWyAkKEtW X3RvX2ludCAke0tWfSkgLWVxICQoS1ZfdG9faW50IDIuNi4xNSkgXV0gJiYgW1sgJHt0eXBl fSA9PSAia2VybiIgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBpZiBbWyAke2hvc3R9 ID09IHBvd2VycGM2NCogXV0gfHwgW1sgJHtQUk9GSUxFX0FSQ0h9ID09ICJwcGM2NCIgXV07 IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBwb3dlcnBjOwogICAgICAgICAg ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBwcGM7CiAgICAg ICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg ICAgICAgaWYgW1sgJHtob3N0fSA9PSBwb3dlcnBjNjQqIF1dOyB0aGVuCiAgICAgICAgICAg ICAgICAgICAgICAgIGVjaG8gcHBjNjQ7CiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAg ICAgICAgICAgICAgICAgICAgICBpZiBbWyAke1BST0ZJTEVfQVJDSH0gPT0gInBwYzY0IiBd XTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmluaiBwcGM2NCBwcGM7CiAg ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVjaG8gcHBjOwogICAgICAgICAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgICAg ICAgICBmaTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICBmaQogICAgICAgIDs7 CiAgICAgICAgczM5MCopCiAgICAgICAgICAgIGVjaG8gczM5MAogICAgICAgIDs7CiAgICAg ICAgc2g2NCopCiAgICAgICAgICAgIG5pbmogc2g2NCBzaAogICAgICAgIDs7CiAgICAgICAg c2gqKQogICAgICAgICAgICBlY2hvIHNoCiAgICAgICAgOzsKICAgICAgICBzcGFyYzY0KikK ICAgICAgICAgICAgbmluaiBzcGFyYzY0IHNwYXJjCiAgICAgICAgOzsKICAgICAgICBzcGFy YyopCiAgICAgICAgICAgIFtbICR7UFJPRklMRV9BUkNIfSA9PSAic3BhcmM2NCIgXV0gJiYg bmluaiBzcGFyYzY0IHNwYXJjIHx8IGVjaG8gc3BhcmMKICAgICAgICA7OwogICAgICAgIHZh eCopCiAgICAgICAgICAgIGVjaG8gdmF4CiAgICAgICAgOzsKICAgICAgICB4ODZfNjQqKQog ICAgICAgICAgICBpZiBbWyAke3R5cGV9ID09ICJrZXJuIiBdXSAmJiBbWyAkKEtWX3RvX2lu dCAke0tWfSkgLWdlICQoS1ZfdG9faW50IDIuNi4yNCkgXV07IHRoZW4KICAgICAgICAgICAg ICAgIGVjaG8geDg2OwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBuaW5qIHg4 Nl82NCBhbWQ2NDsKICAgICAgICAgICAgZmkKICAgICAgICA7OwogICAgICAgICopCiAgICAg ICAgICAgIGVjaG8gdW5rbm93bgogICAgICAgIDs7CiAgICBlc2FjCn0KdHJlZWNvcHkgKCkg CnsgCiAgICBkZXN0PSR7ISN9OwogICAgZmlsZXNfY291bnQ9JCM7CiAgICB3aGlsZSAoKCAk IyA+IDEgKSk7IGRvCiAgICAgICAgZGlyc3RydWN0PSQoZGlybmFtZSAiJDEiKTsKICAgICAg ICBta2RpciAtcCAiJHtkZXN0fS8ke2RpcnN0cnVjdH0iOwogICAgICAgIGNwIC1wUFIgIiQx IiAiJHtkZXN0fS8ke2RpcnN0cnVjdH0iOwogICAgICAgIHNoaWZ0OwogICAgZG9uZQp9CnVu cGFjayAoKSAKeyAKICAgIGxvY2FsIHNyY2RpcjsKICAgIGxvY2FsIHg7CiAgICBsb2NhbCB5 OwogICAgbG9jYWwgbXlmYWlsOwogICAgbG9jYWwgZWFwaT0ke0VBUEk6LTB9OwogICAgWyAt eiAiJCoiIF0gJiYgZGllICJOb3RoaW5nIHBhc3NlZCB0byB0aGUgJ3VucGFjaycgY29tbWFu ZCI7CiAgICBmb3IgeCBpbiAiJEAiOwogICAgZG8KICAgICAgICB2ZWNobyAiPj4+IFVucGFj a2luZyAke3h9IHRvICR7UFdEfSI7CiAgICAgICAgeT0ke3glLip9OwogICAgICAgIHk9JHt5 IyMqLn07CiAgICAgICAgaWYgW1sgJHt4fSA9PSAiLi8iKiBdXTsgdGhlbgogICAgICAgICAg ICBzcmNkaXI9IiI7CiAgICAgICAgZWxzZQogICAgICAgICAgICBpZiBbWyAke3h9ID09ICR7 RElTVERJUiUvfS8qIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBkaWUgIkFyZ3VtZW50cyB0 byB1bnBhY2soKSBjYW5ub3QgYmVnaW4gd2l0aCBcJHtESVNURElSfS4iOwogICAgICAgICAg ICBlbHNlCiAgICAgICAgICAgICAgICBpZiBbWyAke3h9ID09ICIvIiogXV07IHRoZW4KICAg ICAgICAgICAgICAgICAgICBkaWUgIkFyZ3VtZW50cyB0byB1bnBhY2soKSBjYW5ub3QgYmUg YWJzb2x1dGUiOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHNy Y2Rpcj0iJHtESVNURElSfS8iOwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGZp OwogICAgICAgIGZpOwogICAgICAgIFtbICEgLXMgJHtzcmNkaXJ9JHt4fSBdXSAmJiBkaWUg IiR7eH0gZG9lcyBub3QgZXhpc3QiOwogICAgICAgIGZ1bmN0aW9uIF91bnBhY2tfdGFyICgp IAogICAgICAgIHsgCiAgICAgICAgICAgIGlmIFsgIiR7eX0iID09ICJ0YXIiIF07IHRoZW4K ICAgICAgICAgICAgICAgICQxIC1kYyAiJHNyY2RpciR4IiB8IHRhciB4b2YgLTsKICAgICAg ICAgICAgICAgIF9waXBlc3RhdHVzPSIke1BJUEVTVEFUVVNbKl19IjsKICAgICAgICAgICAg ICAgIFtbICIke19waXBlc3RhdHVzLy8gL30iIC1lcSAwIF1dIHx8IGRpZSAiJG15ZmFpbCI7 CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICQxIC1kYyAiJHtzcmNkaXJ9JHt4 fSIgPiAke3glLip9IHx8IGRpZSAiJG15ZmFpbCI7CiAgICAgICAgICAgIGZpCiAgICAgICAg fTsKICAgICAgICBteWZhaWw9ImZhaWx1cmUgdW5wYWNraW5nICR7eH0iOwogICAgICAgIGNh c2UgIiR7eCMjKi59IiBpbiAKICAgICAgICAgICAgdGFyKQogICAgICAgICAgICAgICAgdGFy IHhvZiAiJHNyY2RpciR4IiB8fCBkaWUgIiRteWZhaWwiCiAgICAgICAgICAgIDs7CiAgICAg ICAgICAgIHRneikKICAgICAgICAgICAgICAgIHRhciB4b3pmICIkc3JjZGlyJHgiIHx8IGRp ZSAiJG15ZmFpbCIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgdGJ6IHwgdGJ6MikKICAg ICAgICAgICAgICAgIGJ6aXAyIC1kYyAiJHNyY2RpciR4IiB8IHRhciB4b2YgLTsKICAgICAg ICAgICAgICAgIF9waXBlc3RhdHVzPSIke1BJUEVTVEFUVVNbKl19IjsKICAgICAgICAgICAg ICAgIFtbICIke19waXBlc3RhdHVzLy8gL30iIC1lcSAwIF1dIHx8IGRpZSAiJG15ZmFpbCIK ICAgICAgICAgICAgOzsKICAgICAgICAgICAgWklQIHwgemlwIHwgamFyKQogICAgICAgICAg ICAgICAgdW56aXAgLXFvICIke3NyY2Rpcn0ke3h9IiB8fCBkaWUgIiRteWZhaWwiCiAgICAg ICAgICAgIDs7CiAgICAgICAgICAgIGd6IHwgWiB8IHopCiAgICAgICAgICAgICAgICBfdW5w YWNrX3RhciBnemlwCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGJ6MiB8IGJ6KQogICAg ICAgICAgICAgICAgX3VucGFja190YXIgYnppcDIKICAgICAgICAgICAgOzsKICAgICAgICAg ICAgN1ogfCA3eikKICAgICAgICAgICAgICAgIGxvY2FsIG15X291dHB1dDsKICAgICAgICAg ICAgICAgIG15X291dHB1dD0iJCg3eiB4IC15ICIke3NyY2Rpcn0ke3h9IikiOwogICAgICAg ICAgICAgICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgZWNo byAiJHtteV9vdXRwdXR9IiAxPiYyOwogICAgICAgICAgICAgICAgICAgIGRpZSAiJG15ZmFp bCI7CiAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICA7OwogICAgICAgICAgICBSQVIg fCByYXIpCiAgICAgICAgICAgICAgICB1bnJhciB4IC1pZHEgLW8rICIke3NyY2Rpcn0ke3h9 IiB8fCBkaWUgIiRteWZhaWwiCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIExIYSB8IExI QSB8IGxoYSB8IGx6aCkKICAgICAgICAgICAgICAgIGxoYSB4ZnEgIiR7c3JjZGlyfSR7eH0i IHx8IGRpZSAiJG15ZmFpbCIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgYSkKICAgICAg ICAgICAgICAgIGFyIHggIiR7c3JjZGlyfSR7eH0iIHx8IGRpZSAiJG15ZmFpbCIKICAgICAg ICAgICAgOzsKICAgICAgICAgICAgZGViKQogICAgICAgICAgICAgICAgaWYgdHlwZSAtUCBk ZWIydGFyZ3ogPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgICAgICAgICAgICB5PSR7eCMj Ki99OwogICAgICAgICAgICAgICAgICAgIGxvY2FsIGNyZWF0ZWRfc3ltbGluaz0wOwogICAg ICAgICAgICAgICAgICAgIGlmIFsgISAiJHNyY2RpciR4IiAtZWYgIiR5IiBdOyB0aGVuCiAg ICAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAiJHNyY2RpciR4IiAiJHkiIHx8IGRpZSAi JG15ZmFpbCI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRfc3ltbGluaz0xOwog ICAgICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgICAgIGRlYjJ0YXJneiAi JHkiIHx8IGRpZSAiJG15ZmFpbCI7CiAgICAgICAgICAgICAgICAgICAgaWYgWyAkY3JlYXRl ZF9zeW1saW5rID0gMSBdOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIHJtIC1mICIk eSI7CiAgICAgICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICAgICAgbXYgLWYg IiR7eSUuZGVifSIudGFyLmd6IGRhdGEudGFyLmd6IHx8IGRpZSAiJG15ZmFpbCI7CiAgICAg ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgYXIgeCAiJHNyY2RpciR4IiB8 fCBkaWUgIiRteWZhaWwiOwogICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgOzsKICAg ICAgICAgICAgbHptYSkKICAgICAgICAgICAgICAgIF91bnBhY2tfdGFyIGx6bWEKICAgICAg ICAgICAgOzsKICAgICAgICAgICAgeHopCiAgICAgICAgICAgICAgICBpZiBoYXNxICRlYXBp IDAgMSAyOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgdmVjaG8gInVucGFjayAke3h9OiBm aWxlIGZvcm1hdCBub3QgcmVjb2duaXplZC4gSWdub3JpbmcuIjsKICAgICAgICAgICAgICAg IGVsc2UKICAgICAgICAgICAgICAgICAgICBfdW5wYWNrX3RhciB4ejsKICAgICAgICAgICAg ICAgIGZpCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICB2 ZWNobyAidW5wYWNrICR7eH06IGZpbGUgZm9ybWF0IG5vdCByZWNvZ25pemVkLiBJZ25vcmlu Zy4iCiAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYzsKICAgIGRvbmU7CiAgICBmaW5kIC4g LW1pbmRlcHRoIDEgLW1heGRlcHRoIDEgISAtdHlwZSBsIC1wcmludDAgfCAke1hBUkdTfSAt MCBjaG1vZCAtZlIgYStyWCx1K3csZy13LG8tdwp9CnVucGFja19tYWtlc2VsZiAoKSAKeyAK ICAgIGxvY2FsIHNyY19pbnB1dD0kezE6LSR7QX19OwogICAgbG9jYWwgc3JjPSQoZmluZF91 bnBhY2thYmxlX2ZpbGUgIiR7c3JjX2lucHV0fSIpOwogICAgbG9jYWwgc2tpcD0kMjsKICAg IGxvY2FsIGV4ZT0kMzsKICAgIFtbIC16ICR7c3JjfSBdXSAmJiBkaWUgIkNvdWxkIG5vdCBs b2NhdGUgc291cmNlIGZvciAnJHtzcmNfaW5wdXR9JyI7CiAgICBsb2NhbCBzaHJ0c3JjPSQo YmFzZW5hbWUgIiR7c3JjfSIpOwogICAgZWNobyAiPj4+IFVucGFja2luZyAke3NocnRzcmN9 IHRvICR7UFdEfSI7CiAgICBpZiBbWyAteiAke3NraXB9IF1dOyB0aGVuCiAgICAgICAgbG9j YWwgdmVyPSQoZ3JlcCAtYSAnIy4qTWFrZXNlbGYnICIke3NyY30iIHwgYXdrICd7cHJpbnQg JE5GfScpOwogICAgICAgIGxvY2FsIHNraXA9MDsKICAgICAgICBleGU9dGFpbDsKICAgICAg ICBjYXNlICR7dmVyfSBpbiAKICAgICAgICAgICAgMS41LiogfCAxLjYuMC1udikKICAgICAg ICAgICAgICAgIHNraXA9JChncmVwIC1hIF5za2lwPSAiJHtzcmN9IiB8IGN1dCAtZD0gLWYy KQogICAgICAgICAgICA7OwogICAgICAgICAgICAyLjAgfCAyLjAuMSkKICAgICAgICAgICAg ICAgIHNraXA9JChncmVwIC1hIF4nCSd0YWlsICIke3NyY30iIHwgYXdrICd7cHJpbnQgJDJ9 JyB8IGN1dCAtYjItKQogICAgICAgICAgICA7OwogICAgICAgICAgICAyLjEuMSkKICAgICAg ICAgICAgICAgIHNraXA9JChncmVwIC1hIF5vZmZzZXQ9ICIke3NyY30iIHwgYXdrICd7cHJp bnQgJDJ9JyB8IGN1dCAtYjItKTsKICAgICAgICAgICAgICAgIGxldCBza2lwPSJza2lwICsg MSIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgMi4xLjIpCiAgICAgICAgICAgICAgICBz a2lwPSQoZ3JlcCAtYSBeb2Zmc2V0PSAiJHtzcmN9IiB8IGF3ayAne3ByaW50ICQzfScgfCBo ZWFkIC1uIDEpOwogICAgICAgICAgICAgICAgbGV0IHNraXA9InNraXAgKyAxIgogICAgICAg ICAgICA7OwogICAgICAgICAgICAyLjEuMykKICAgICAgICAgICAgICAgIHNraXA9YGdyZXAg LWEgXm9mZnNldD0gIiR7c3JjfSIgfCBhd2sgJ3twcmludCAkM30nYDsKICAgICAgICAgICAg ICAgIGxldCBza2lwPSJza2lwICsgMSIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgMi4x LjQgfCAyLjEuNSkKICAgICAgICAgICAgICAgIHNraXA9JChncmVwIC1hIG9mZnNldD0uKmhl YWQuKndjICIke3NyY30iIHwgYXdrICd7cHJpbnQgJDN9JyB8IGhlYWQgLW4gMSk7CiAgICAg ICAgICAgICAgICBza2lwPSQoaGVhZCAtbiAke3NraXB9ICIke3NyY30iIHwgd2MgLWMpOwog ICAgICAgICAgICAgICAgZXhlPSJkZCIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgKikK ICAgICAgICAgICAgICAgIGVlcnJvciAiSSdtIHNvcnJ5LCBidXQgSSB3YXMgdW5hYmxlIHRv IHN1cHBvcnQgdGhlIE1ha2VzZWxmIGZpbGUuIjsKICAgICAgICAgICAgICAgIGVlcnJvciAi VGhlIHZlcnNpb24gSSBkZXRlY3RlZCB3YXMgJyR7dmVyfScuIjsKICAgICAgICAgICAgICAg IGVlcnJvciAiUGxlYXNlIGZpbGUgYSBidWcgYWJvdXQgdGhlIGZpbGUgJHtzaHJ0c3JjfSBh dCI7CiAgICAgICAgICAgICAgICBlZXJyb3IgImh0dHA6Ly9idWdzLmdlbnRvby5vcmcvIHNv IHRoYXQgc3VwcG9ydCBjYW4gYmUgYWRkZWQuIjsKICAgICAgICAgICAgICAgIGRpZSAibWFr ZXNlbGYgdmVyc2lvbiAnJHt2ZXJ9JyBub3Qgc3VwcG9ydGVkIgogICAgICAgICAgICA7Owog ICAgICAgIGVzYWM7CiAgICAgICAgZGVidWctcHJpbnQgIkRldGVjdGVkIE1ha2VzZWxmIHZl cnNpb24gJHt2ZXJ9IC4uLiB1c2luZyAke3NraXB9IGFzIG9mZnNldCI7CiAgICBmaTsKICAg IGNhc2UgJHtleGV9IGluIAogICAgICAgIHRhaWwpCiAgICAgICAgICAgIGV4ZT0idGFpbCAt biArJHtza2lwfSAnJHtzcmN9JyIKICAgICAgICA7OwogICAgICAgIGRkKQogICAgICAgICAg ICBleGU9ImRkIGlicz0ke3NraXB9IHNraXA9MSBvYnM9MTAyNCBjb252PXN5bmMgaWY9JyR7 c3JjfSciCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBkaWUgIm1ha2VzZWxm IGNhbnQgaGFuZGxlIGV4ZSAnJHtleGV9JyIKICAgICAgICA7OwogICAgZXNhYzsKICAgIGxv Y2FsIHRtcGZpbGU9JChlbWt0ZW1wKTsKICAgIGV2YWwgJHtleGV9IDI+IC9kZXYvbnVsbCB8 IGhlYWQgLWMgNTEyID4gIiR7dG1wZmlsZX0iOwogICAgbG9jYWwgZmlsZXR5cGU9JChmaWxl IC1iICIke3RtcGZpbGV9Iik7CiAgICBjYXNlICR7ZmlsZXR5cGV9IGluIAogICAgICAgICp0 YXJcIGFyY2hpdmUqKQogICAgICAgICAgICBldmFsICR7ZXhlfSB8IHRhciAtLW5vLXNhbWUt b3duZXIgLXhmIC0KICAgICAgICA7OwogICAgICAgIGJ6aXAyKikKICAgICAgICAgICAgZXZh bCAke2V4ZX0gfCBiemlwMiAtZGMgfCB0YXIgLS1uby1zYW1lLW93bmVyIC14ZiAtCiAgICAg ICAgOzsKICAgICAgICBnemlwKikKICAgICAgICAgICAgZXZhbCAke2V4ZX0gfCB0YXIgLS1u by1zYW1lLW93bmVyIC14emYgLQogICAgICAgIDs7CiAgICAgICAgY29tcHJlc3MqKQogICAg ICAgICAgICBldmFsICR7ZXhlfSB8IGd1bnppcCB8IHRhciAtLW5vLXNhbWUtb3duZXIgLXhm IC0KICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIGVlcnJvciAiVW5rbm93biBm aWxldHlwZSBcIiR7ZmlsZXR5cGV9XCIgPyI7CiAgICAgICAgICAgIGZhbHNlCiAgICAgICAg OzsKICAgIGVzYWM7CiAgICBfcGlwZXN0YXR1cz0iJHtQSVBFU1RBVFVTWypdfSI7CiAgICBb WyAiJHtfcGlwZXN0YXR1cy8vIC99IiAtZXEgMCBdXSB8fCBkaWUgImZhaWx1cmUgdW5wYWNr aW5nICgke2ZpbGV0eXBlfSkgbWFrZXNlbGYgJHtzaHJ0c3JjfSAoJyR7dmVyfScgKyR7c2tp cH0pIgp9CnVucGFja19wZHYgKCkgCnsgCiAgICBsb2NhbCBzcmM9JChmaW5kX3VucGFja2Fi bGVfZmlsZSAiJDEiKTsKICAgIGxvY2FsIHNpemVvZmZfdD0kMjsKICAgIFtbIC16ICR7c3Jj fSBdXSAmJiBkaWUgIkNvdWxkIG5vdCBsb2NhdGUgc291cmNlIGZvciAnJDEnIjsKICAgIFtb IC16ICR7c2l6ZW9mZl90fSBdXSAmJiBkaWUgIk5vIGlkZWEgd2hhdCBvZmZfdCBzaXplIHdh cyB1c2VkIGZvciB0aGlzIHBkdiA6KCI7CiAgICBsb2NhbCBzaHJ0c3JjPSQoYmFzZW5hbWUg IiR7c3JjfSIpOwogICAgZWNobyAiPj4+IFVucGFja2luZyAke3NocnRzcmN9IHRvICR7UFdE fSI7CiAgICBsb2NhbCBtZXRhc2tpcD0kKHRhaWwgLWMgJHtzaXplb2ZmX3R9ICIke3NyY30i IHwgaGV4ZHVtcCAtZSBcIiVpXCIpOwogICAgbG9jYWwgdGFpbHNraXA9JCh0YWlsIC1jICQo KCR7c2l6ZW9mZl90fSoyKSkgIiR7c3JjfSIgfCBoZWFkIC1jICR7c2l6ZW9mZl90fSB8IGhl eGR1bXAgLWUgXCIlaVwiKTsKICAgIGxvY2FsIG1ldGFmaWxlPSQoZW1rdGVtcCk7CiAgICB0 YWlsIC1jICskKCgke21ldGFza2lwfSsxKSkgIiR7c3JjfSIgPiAiJHttZXRhZmlsZX0iOwog ICAgbG9jYWwgZGF0YWZpbGU9JCh0YWlsIC1jICskKCgke21ldGFza2lwfSsxKSkgIiR7c3Jj fSIgfCBzdHJpbmdzIHwgaGVhZCAtbiAxKTsKICAgIGRhdGFmaWxlPSQoYmFzZW5hbWUgIiR7 ZGF0YWZpbGV9Iik7CiAgICBsb2NhbCB0bXBmaWxlPSQoZW1rdGVtcCk7CiAgICB0YWlsIC1j ICskKCgke3RhaWxza2lwfSsxKSkgJHtzcmN9IDI+IC9kZXYvbnVsbCB8IGhlYWQgLWMgNTEy ID4gJHt0bXBmaWxlfTsKICAgIGxvY2FsIGlzY29tcHJlc3NlZD0kKGZpbGUgLWIgIiR7dG1w ZmlsZX0iKTsKICAgIGlmIFtbICR7aXNjb21wcmVzc2VkOjA6OH0gPT0gImNvbXByZXNzIiBd XTsgdGhlbgogICAgICAgIGlzY29tcHJlc3NlZD0xOwogICAgICAgIG12ICR7dG1wZmlsZX17 LC5afTsKICAgICAgICBndW56aXAgJHt0bXBmaWxlfTsKICAgIGVsc2UKICAgICAgICBpc2Nv bXByZXNzZWQ9MDsKICAgIGZpOwogICAgbG9jYWwgaXN0YXI9JChmaWxlIC1iICIke3RtcGZp bGV9Iik7CiAgICBpZiBbWyAke2lzdGFyOjA6OX0gPT0gIlBPU0lYIHRhciIgXV07IHRoZW4K ICAgICAgICBpc3Rhcj0xOwogICAgZWxzZQogICAgICAgIGlzdGFyPTA7CiAgICBmaTsKICAg IGlmIFsgJHtpc2NvbXByZXNzZWR9IC1lcSAxIF07IHRoZW4KICAgICAgICBpZiBbICR7aXN0 YXJ9IC1lcSAxIF07IHRoZW4KICAgICAgICAgICAgdGFpbCAtYyArJCgoJHt0YWlsc2tpcH0r MSkpICR7c3JjfSAyPiAvZGV2L251bGwgfCBoZWFkIC1jICQoKCR7bWV0YXNraXB9LSR7dGFp bHNraXB9KSkgfCB0YXIgLXh6ZiAtOwogICAgICAgIGVsc2UKICAgICAgICAgICAgdGFpbCAt YyArJCgoJHt0YWlsc2tpcH0rMSkpICR7c3JjfSAyPiAvZGV2L251bGwgfCBoZWFkIC1jICQo KCR7bWV0YXNraXB9LSR7dGFpbHNraXB9KSkgfCBnemlwIC1kYyA+ICR7ZGF0YWZpbGV9Owog ICAgICAgIGZpOwogICAgZWxzZQogICAgICAgIGlmIFsgJHtpc3Rhcn0gLWVxIDEgXTsgdGhl bgogICAgICAgICAgICB0YWlsIC1jICskKCgke3RhaWxza2lwfSsxKSkgJHtzcmN9IDI+IC9k ZXYvbnVsbCB8IGhlYWQgLWMgJCgoJHttZXRhc2tpcH0tJHt0YWlsc2tpcH0pKSB8IHRhciAt LW5vLXNhbWUtb3duZXIgLXhmIC07CiAgICAgICAgZWxzZQogICAgICAgICAgICB0YWlsIC1j ICskKCgke3RhaWxza2lwfSsxKSkgJHtzcmN9IDI+IC9kZXYvbnVsbCB8IGhlYWQgLWMgJCgo JHttZXRhc2tpcH0tJHt0YWlsc2tpcH0pKSA+ICR7ZGF0YWZpbGV9OwogICAgICAgIGZpOwog ICAgZmk7CiAgICB0cnVlCn0KdW5zZXRfY29sb3JzICgpIAp7IAogICAgQ09MUz0iMjUgODAi OwogICAgRU5EQ09MPTsKICAgIEdPT0Q9OwogICAgV0FSTj07CiAgICBCQUQ9OwogICAgTk9S TUFMPTsKICAgIEhJTElURT07CiAgICBCUkFDS0VUPQp9CnVwZGF0ZV9kZXBtb2QgKCkgCnsg CiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgIGdldF92ZXJz aW9uOwogICAgZWJlZ2luICJVcGRhdGluZyBtb2R1bGUgZGVwZW5kZW5jaWVzIGZvciAke0tW X0ZVTEx9IjsKICAgIGlmIFsgLXIgJHtLVl9PVVRfRElSfS9TeXN0ZW0ubWFwIF07IHRoZW4K ICAgICAgICBkZXBtb2QgLWFlIC1GICR7S1ZfT1VUX0RJUn0vU3lzdGVtLm1hcCAtYiAke1JP T1R9IC1yICR7S1ZfRlVMTH07CiAgICAgICAgZWVuZCAkPzsKICAgIGVsc2UKICAgICAgICBl d2FybjsKICAgICAgICBld2FybiAiJHtLVl9PVVRfRElSfS9TeXN0ZW0ubWFwIG5vdCBmb3Vu ZC4iOwogICAgICAgIGV3YXJuICJZb3UgbXVzdCBtYW51YWxseSB1cGRhdGUgdGhlIGtlcm5l bCBtb2R1bGUgZGVwZW5kZW5jaWVzIHVzaW5nIGRlcG1vZC4iOwogICAgICAgIGVlbmQgMTsK ICAgICAgICBld2FybjsKICAgIGZpCn0KdXBkYXRlX21vZHVsZWRiICgpIAp7IAogICAgZGVi dWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBsb2NhbCBNT0RVTEVEQl9E SVI9JHtST09UfS92YXIvbGliL21vZHVsZS1yZWJ1aWxkLzsKICAgIG1vdmVfb2xkX21vZHVs ZWRiOwogICAgaWYgW1sgISAtZiAke01PRFVMRURCX0RJUn0vbW9kdWxlZGIgXV07IHRoZW4K ICAgICAgICBbWyAhIC1kICR7TU9EVUxFREJfRElSfSBdXSAmJiBta2RpciAtcCAke01PRFVM RURCX0RJUn07CiAgICAgICAgdG91Y2ggJHtNT0RVTEVEQl9ESVJ9L21vZHVsZWRiOwogICAg Zmk7CiAgICBpZiAhIGdyZXAgLXFzICR7Q0FURUdPUll9LyR7UE59LSR7UFZSfSAke01PRFVM RURCX0RJUn0vbW9kdWxlZGI7IHRoZW4KICAgICAgICBlaW5mbyAiQWRkaW5nIG1vZHVsZSB0 byBtb2R1bGVkYi4iOwogICAgICAgIGVjaG8gImE6MToke0NBVEVHT1JZfS8ke1BOfS0ke1BW Un0iID4+ICR7TU9EVUxFREJfRElSfS9tb2R1bGVkYjsKICAgIGZpCn0KdXBkYXRlX21vZHVs ZXMgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAg IGlmIFsgLXggL3NiaW4vdXBkYXRlLW1vZHVsZXMgXSAmJiBncmVwIC12IC1lICJeIyIgLWUg Il4kIiAke0R9L2V0Yy9tb2R1bGVzLmQvKiA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAg ICAgZWJlZ2luICJVcGRhdGluZyBtb2R1bGVzLmNvbmYiOwogICAgICAgIC9zYmluL3VwZGF0 ZS1tb2R1bGVzOwogICAgICAgIGVlbmQgJD87CiAgICBlbHNlCiAgICAgICAgaWYgWyAteCAv c2Jpbi91cGRhdGUtbW9kdWxlcyBdICYmIGdyZXAgLXYgLWUgIl4jIiAtZSAiXiQiICR7RH0v ZXRjL21vZHVsZXMuZC8qID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAgICAgICAgZWJl Z2luICJVcGRhdGluZyBtb2R1bGVzLmNvbmYiOwogICAgICAgICAgICAvc2Jpbi91cGRhdGUt bW9kdWxlczsKICAgICAgICAgICAgZWVuZCAkPzsKICAgICAgICBmaTsKICAgIGZpCn0KdXNl ICgpIAp7IAogICAgdXNlcSAkezF9Cn0KdXNlX2VuYWJsZSAoKSAKeyAKICAgIGlmIFsgLXog IiQxIiBdOyB0aGVuCiAgICAgICAgZWNobyAiISEhIHVzZV9lbmFibGUoKSBjYWxsZWQgd2l0 aG91dCBhIHBhcmFtZXRlci4iIDE+JjI7CiAgICAgICAgZWNobyAiISEhIHVzZV9lbmFibGUg PFVTRUZMQUc+IFs8ZmxhZ25hbWU+IFt2YWx1ZV1dIiAxPiYyOwogICAgICAgIHJldHVybiAx OwogICAgZmk7CiAgICBsb2NhbCBVRV9TVUZGSVg9IiI7CiAgICBpZiBbICEgLXogIiR7M30i IF07IHRoZW4KICAgICAgICBVRV9TVUZGSVg9Ij0kezN9IjsKICAgIGZpOwogICAgbG9jYWwg VVdPUkQ9IiQyIjsKICAgIGlmIFsgLXogIiR7VVdPUkR9IiBdOyB0aGVuCiAgICAgICAgVVdP UkQ9IiQxIjsKICAgIGZpOwogICAgaWYgdXNlcSAkMTsgdGhlbgogICAgICAgIGVjaG8gIi0t ZW5hYmxlLSR7VVdPUkR9JHtVRV9TVUZGSVh9IjsKICAgIGVsc2UKICAgICAgICBlY2hvICIt LWRpc2FibGUtJHtVV09SRH0iOwogICAgZmk7CiAgICByZXR1cm4gMAp9CnVzZV9tICgpIAp7 IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBnZXRfdmVy c2lvbjsKICAgIFsgJHtLVl9NQUpPUn0gLWVxIDIgLWEgJHtLVl9NSU5PUn0gLWd0IDUgLWEg JHtLVl9QQVRDSH0gLWd0IDUgXSAmJiByZXR1cm4gMCB8fCByZXR1cm4gMQp9CnVzZV93aXRo ICgpIAp7IAogICAgaWYgWyAteiAiJDEiIF07IHRoZW4KICAgICAgICBlY2hvICIhISEgdXNl X3dpdGgoKSBjYWxsZWQgd2l0aG91dCBhIHBhcmFtZXRlci4iIDE+JjI7CiAgICAgICAgZWNo byAiISEhIHVzZV93aXRoIDxVU0VGTEFHPiBbPGZsYWduYW1lPiBbdmFsdWVdXSIgMT4mMjsK ICAgICAgICByZXR1cm4gMTsKICAgIGZpOwogICAgbG9jYWwgVVdfU1VGRklYPSIiOwogICAg aWYgWyAhIC16ICIkezN9IiBdOyB0aGVuCiAgICAgICAgVVdfU1VGRklYPSI9JHszfSI7CiAg ICBmaTsKICAgIGxvY2FsIFVXT1JEPSIkMiI7CiAgICBpZiBbIC16ICIke1VXT1JEfSIgXTsg dGhlbgogICAgICAgIFVXT1JEPSIkMSI7CiAgICBmaTsKICAgIGlmIHVzZXEgJDE7IHRoZW4K ICAgICAgICBlY2hvICItLXdpdGgtJHtVV09SRH0ke1VXX1NVRkZJWH0iOwogICAgZWxzZQog ICAgICAgIGVjaG8gIi0td2l0aG91dC0ke1VXT1JEfSI7CiAgICBmaTsKICAgIHJldHVybiAw Cn0KdXNlcSAoKSAKeyAKICAgIGxvY2FsIHU9JDE7CiAgICBsb2NhbCBmb3VuZD0wOwogICAg aWYgW1sgJHt1OjA6MX0gPT0gIiEiIF1dOyB0aGVuCiAgICAgICAgdT0ke3U6MX07CiAgICAg ICAgZm91bmQ9MTsKICAgIGZpOwogICAgaWYgW1sgJEVCVUlMRF9QSEFTRSA9IGRlcGVuZCBd XTsgdGhlbgogICAgICAgIGlmIFtbIC1uICRFQVBJIF1dICYmICEgaGFzcSAiJEVBUEkiIDAg MSAyOyB0aGVuCiAgICAgICAgICAgIGRpZSAidXNlKCkgY2FsbGVkIGR1cmluZyBpbnZhbGlk IHBoYXNlOiAkRUJVSUxEX1BIQVNFIjsKICAgICAgICBmaTsKICAgIGVsc2UKICAgICAgICBp ZiBbWyAtbiAkUE9SVEFHRV9JVVNFICYmIC1uICRFQlVJTERfUEhBU0UgXV07IHRoZW4KICAg ICAgICAgICAgW1sgJHUgPX4gJFBPUlRBR0VfSVVTRSBdXSB8fCBlcWF3YXJuICJRQSBOb3Rp Y2U6IFVTRSBGbGFnICcke3V9JyBub3QiICJpbiBJVVNFIGZvciAke0NBVEVHT1JZfS8ke1BG fSI7CiAgICAgICAgZmk7CiAgICBmaTsKICAgIGlmIGhhc3EgJHt1fSAke1VTRX07IHRoZW4K ICAgICAgICByZXR1cm4gJHtmb3VuZH07CiAgICBlbHNlCiAgICAgICAgcmV0dXJuICQoKCFm b3VuZCkpOwogICAgZmkKfQp1c2V2ICgpIAp7IAogICAgaWYgdXNlcSAkezF9OyB0aGVuCiAg ICAgICAgZWNobyAiJHsxfSI7CiAgICAgICAgcmV0dXJuIDA7CiAgICBmaTsKICAgIHJldHVy biAxCn0KdmFsaWRhdGVfZGVza3RvcF9lbnRyaWVzICgpIAp7IAogICAgaWYgW1sgLXggL3Vz ci9iaW4vZGVza3RvcC1maWxlLXZhbGlkYXRlIF1dOyB0aGVuCiAgICAgICAgZWluZm8gIkNo ZWNraW5nIGRlc2t0b3AgZW50cnkgdmFsaWRpdHkiOwogICAgICAgIGxvY2FsIGRpcmVjdG9y aWVzPSIiOwogICAgICAgIGZvciBkIGluIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zICRAOwog ICAgICAgIGRvCiAgICAgICAgICAgIFtbIC1kICR7RH0ke2R9IF1dICYmIGRpcmVjdG9yaWVz PSIke2RpcmVjdG9yaWVzfSAke0R9JHtkfSI7CiAgICAgICAgZG9uZTsKICAgICAgICBpZiBb WyAtbiAke2RpcmVjdG9yaWVzfSBdXTsgdGhlbgogICAgICAgICAgICBmb3IgRklMRSBpbiAk KGZpbmQgJHtkaXJlY3Rvcmllc30gLW5hbWUgIipcLmRlc2t0b3AiIAkJCQkJCQktbm90IC1w YXRoICcqLmhpZGRlbionIHwgc29ydCAtdSAyPi9kZXYvbnVsbCk7CiAgICAgICAgICAgIGRv CiAgICAgICAgICAgICAgICBsb2NhbCB0ZW1wPSQoZGVza3RvcC1maWxlLXZhbGlkYXRlICR7 RklMRX0gfCBncmVwIC12ICJ3YXJuaW5nOiIgfCAJCQkJCQkJCXNlZCAtZSAic3xlcnJvcjog fHwiIC1lICJzfCR7RklMRX06fC0tfGciICk7CiAgICAgICAgICAgICAgICBbWyAtbiAkdGVt cCBdXSAmJiBlbG9nICR7dGVtcC8tLS8ke0ZJTEUvJHtEfS99On07CiAgICAgICAgICAgIGRv bmU7CiAgICAgICAgZmk7CiAgICAgICAgZWNobyAiIjsKICAgIGVsc2UKICAgICAgICBlaW5m byAiUGFzc2luZyBkZXNrdG9wIGVudHJ5IHZhbGlkaXR5IGNoZWNrLiBJbnN0YWxsIGRldi11 dGlsL2Rlc2t0b3AtZmlsZS11dGlscywgaWYgeW91IHdhbnQgdG8gaGVscCB0byBpbXByb3Zl IEdlbnRvby4iOwogICAgZmkKfQp2ZWNobyAoKSAKeyAKICAgIHF1aWV0X21vZGUgfHwgZWNo byAiJEAiCn0KdmVyc2lvbl9jb21wYXJlICgpIAp7IAogICAgX192ZXJzaW9uYXRvcl9zaG9w dF90b2dnbGUgb247CiAgICBsb2NhbCB2ZXJfYT0kezF9IHZlcl9iPSR7Mn0gcGFydHNfYSBw YXJ0c19iIGN1cl9pZHhfYT0wIGN1cl9pZHhfYj0wOwogICAgcGFydHNfYT0oJChnZXRfYWxs X3ZlcnNpb25fY29tcG9uZW50cyAiJHt2ZXJfYX0iICkpOwogICAgcGFydHNfYj0oJChnZXRf YWxsX3ZlcnNpb25fY29tcG9uZW50cyAiJHt2ZXJfYn0iICkpOwogICAgbG9jYWwgaW5mX2xv b3A9MDsKICAgIHdoaWxlIHRydWU7IGRvCiAgICAgICAgaW5mX2xvb3A9JCgoICR7aW5mX2xv b3B9ICsgMSApKTsKICAgICAgICBbWyAke2luZl9sb29wfSAtZ3QgMjAgXV0gJiYgZGllICJ2 ZXJzaW9uYXRvciBjb21wYXJlIGJ1ZyBbbnVtYmVycywgJHt2ZXJfYX0sICR7dmVyX2J9XSI7 CiAgICAgICAgbG9jYWwgY3VyX3Rva19hPSR7cGFydHNfYVske2N1cl9pZHhfYX1dfTsKICAg ICAgICBsb2NhbCBjdXJfdG9rX2I9JHtwYXJ0c19iWyR7Y3VyX2lkeF9ifV19OwogICAgICAg IGlmIFtbIC1uICR7Y3VyX3Rva19hfSBdXSAmJiBbWyAteiAke2N1cl90b2tfYS8vW1s6ZGln aXQ6XV19IF1dOyB0aGVuCiAgICAgICAgICAgIGN1cl9pZHhfYT0kKCggJHtjdXJfaWR4X2F9 ICsgMSApKTsKICAgICAgICAgICAgW1sgJHtwYXJ0c19hWyR7Y3VyX2lkeF9hfV19ID09ICIu IiBdXSAmJiBjdXJfaWR4X2E9JCgoICR7Y3VyX2lkeF9hfSArIDEgKSk7CiAgICAgICAgZWxz ZQogICAgICAgICAgICBjdXJfdG9rX2E9IiI7CiAgICAgICAgZmk7CiAgICAgICAgaWYgW1sg LW4gJHtjdXJfdG9rX2J9IF1dICYmIFtbIC16ICR7Y3VyX3Rva19iLy9bWzpkaWdpdDpdXX0g XV07IHRoZW4KICAgICAgICAgICAgY3VyX2lkeF9iPSQoKCAke2N1cl9pZHhfYn0gKyAxICkp OwogICAgICAgICAgICBbWyAke3BhcnRzX2JbJHtjdXJfaWR4X2J9XX0gPT0gIi4iIF1dICYm IGN1cl9pZHhfYj0kKCggJHtjdXJfaWR4X2J9ICsgMSApKTsKICAgICAgICBlbHNlCiAgICAg ICAgICAgIGN1cl90b2tfYj0iIjsKICAgICAgICBmaTsKICAgICAgICBbWyAteiAke2N1cl90 b2tfYX0gXV0gJiYgW1sgLXogJHtjdXJfdG9rX2J9IF1dICYmIGJyZWFrOwogICAgICAgIGN1 cl90b2tfYT0ke2N1cl90b2tfYSMjKygwKX07CiAgICAgICAgY3VyX3Rva19iPSR7Y3VyX3Rv a19iIyMrKDApfTsKICAgICAgICBbWyAteiAke2N1cl90b2tfYX0gXV0gJiYgY3VyX3Rva19h PTA7CiAgICAgICAgW1sgLXogJHtjdXJfdG9rX2J9IF1dICYmIGN1cl90b2tfYj0wOwogICAg ICAgIFtbICR7Y3VyX3Rva19hfSAtbHQgJHtjdXJfdG9rX2J9IF1dICYmIF9fdmVyc2lvbmF0 b3Jfc2hvcHRfdG9nZ2xlIG9mZiAmJiByZXR1cm4gMTsKICAgICAgICBbWyAke2N1cl90b2tf YX0gLWd0ICR7Y3VyX3Rva19ifSBdXSAmJiBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2dsZSBv ZmYgJiYgcmV0dXJuIDM7CiAgICBkb25lOwogICAgbG9jYWwgbGV0dGVyX2E9OwogICAgbGV0 dGVyX2E9JHtwYXJ0c19hWyR7Y3VyX2lkeF9hfV19OwogICAgaWYgW1sgJHsjbGV0dGVyX2F9 IC1lcSAxIF1dICYmIFtbIC16ICR7bGV0dGVyX2EvW2Etel19IF1dOyB0aGVuCiAgICAgICAg Y3VyX2lkeF9hPSQoKCAke2N1cl9pZHhfYX0gKyAxICkpOwogICAgZWxzZQogICAgICAgIGxl dHRlcl9hPSJAIjsKICAgIGZpOwogICAgbG9jYWwgbGV0dGVyX2I9OwogICAgbGV0dGVyX2I9 JHtwYXJ0c19iWyR7Y3VyX2lkeF9ifV19OwogICAgaWYgW1sgJHsjbGV0dGVyX2J9IC1lcSAx IF1dICYmIFtbIC16ICR7bGV0dGVyX2IvW2Etel19IF1dOyB0aGVuCiAgICAgICAgY3VyX2lk eF9iPSQoKCAke2N1cl9pZHhfYn0gKyAxICkpOwogICAgZWxzZQogICAgICAgIGxldHRlcl9i PSJAIjsKICAgIGZpOwogICAgW1sgJHtsZXR0ZXJfYX0gPCAke2xldHRlcl9ifSBdXSAmJiBf X3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2dsZSBvZmYgJiYgcmV0dXJuIDE7CiAgICBbWyAke2xl dHRlcl9hfSA+ICR7bGV0dGVyX2J9IF1dICYmIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xl IG9mZiAmJiByZXR1cm4gMzsKICAgIGxvY2FsIHN1ZmZpeCBydWxlIHBhcnQgcl9sdCByX2d0 OwogICAgZm9yIHJ1bGUgaW4gImFscGhhPTEiICJiZXRhPTEiICJwcmU9MSIgInJjPTEiICJw PTMiICJyPTMiOwogICAgZG8KICAgICAgICBzdWZmaXg9JHtydWxlJSU9Kn07CiAgICAgICAg cl9sdD0ke3J1bGUjIyo9fTsKICAgICAgICBbWyAke3JfbHR9IC1lcSAxIF1dICYmIHJfZ3Q9 MyB8fCByX2d0PTE7CiAgICAgICAgbG9jYWwgc3VmZml4X2E9OwogICAgICAgIGZvciBwYXJ0 IGluICR7cGFydHNfYVtAXX07CiAgICAgICAgZG8KICAgICAgICAgICAgW1sgJHtwYXJ0IyR7 c3VmZml4fX0gIT0gJHtwYXJ0fSBdXSAmJiBbWyAteiAke3BhcnQjIyR7c3VmZml4fSooW1s6 ZGlnaXQ6XV0pfSBdXSAmJiBzdWZmaXhfYT0ke3BhcnQjJHtzdWZmaXh9fTA7CiAgICAgICAg ZG9uZTsKICAgICAgICBsb2NhbCBzdWZmaXhfYj07CiAgICAgICAgZm9yIHBhcnQgaW4gJHtw YXJ0c19iW0BdfTsKICAgICAgICBkbwogICAgICAgICAgICBbWyAke3BhcnQjJHtzdWZmaXh9 fSAhPSAke3BhcnR9IF1dICYmIFtbIC16ICR7cGFydCMjJHtzdWZmaXh9KihbWzpkaWdpdDpd XSl9IF1dICYmIHN1ZmZpeF9iPSR7cGFydCMke3N1ZmZpeH19MDsKICAgICAgICBkb25lOwog ICAgICAgIFtbIC16ICR7c3VmZml4X2F9IF1dICYmIFtbIC16ICR7c3VmZml4X2J9IF1dICYm IGNvbnRpbnVlOwogICAgICAgIFtbIC16ICR7c3VmZml4X2F9IF1dICYmIF9fdmVyc2lvbmF0 b3Jfc2hvcHRfdG9nZ2xlIG9mZiAmJiByZXR1cm4gJHtyX2d0fTsKICAgICAgICBbWyAteiAk e3N1ZmZpeF9ifSBdXSAmJiBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2dsZSBvZmYgJiYgcmV0 dXJuICR7cl9sdH07CiAgICAgICAgc3VmZml4X2E9JHtzdWZmaXhfYSMjKygwKX07CiAgICAg ICAgc3VmZml4X2E9JHtzdWZmaXhfYTotMH07CiAgICAgICAgc3VmZml4X2I9JHtzdWZmaXhf YiMjKygwKX07CiAgICAgICAgc3VmZml4X2I9JHtzdWZmaXhfYjotMH07CiAgICAgICAgW1sg JHtzdWZmaXhfYX0gLWx0ICR7c3VmZml4X2J9IF1dICYmIF9fdmVyc2lvbmF0b3Jfc2hvcHRf dG9nZ2xlIG9mZiAmJiByZXR1cm4gMTsKICAgICAgICBbWyAke3N1ZmZpeF9hfSAtZ3QgJHtz dWZmaXhfYn0gXV0gJiYgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb2ZmICYmIHJldHVy biAzOwogICAgZG9uZTsKICAgIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9mZjsKICAg IHJldHVybiAyCn0KdmVyc2lvbl9pc19hdF9sZWFzdCAoKSAKeyAKICAgIF9fdmVyc2lvbmF0 b3Jfc2hvcHRfdG9nZ2xlIG9uOwogICAgbG9jYWwgd2FudF9zPSIkMSIgaGF2ZV9zPSIkezI6 LSR7UFZSfX0iIHI7CiAgICB2ZXJzaW9uX2NvbXBhcmUgIiR7d2FudF9zfSIgIiR7aGF2ZV9z fSI7CiAgICByPSQ/OwogICAgY2FzZSAkciBpbiAKICAgICAgICAxIHwgMikKICAgICAgICAg ICAgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb2ZmOwogICAgICAgICAgICByZXR1cm4g MAogICAgICAgIDs7CiAgICAgICAgMykKICAgICAgICAgICAgX192ZXJzaW9uYXRvcl9zaG9w dF90b2dnbGUgb2ZmOwogICAgICAgICAgICByZXR1cm4gMQogICAgICAgIDs7CiAgICAgICAg KikKICAgICAgICAgICAgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb2ZmOwogICAgICAg ICAgICBkaWUgInZlcnNpb25hdG9yIGNvbXBhcmUgYnVnIFthdGxlYXN0LCAke3dhbnRfc30s ICR7aGF2ZV9zfSwgJHtyfV0iCiAgICAgICAgOzsKICAgIGVzYWM7CiAgICBfX3ZlcnNpb25h dG9yX3Nob3B0X3RvZ2dsZSBvZmYKfQp2ZXJzaW9uX3NvcnQgKCkgCnsgCiAgICBfX3ZlcnNp b25hdG9yX3Nob3B0X3RvZ2dsZSBvbjsKICAgIGxvY2FsIGl0ZW1zPSBsZWZ0PTA7CiAgICBp dGVtcz0oJEApOwogICAgd2hpbGUgW1sgJHtsZWZ0fSAtbHQgJHsjaXRlbXNbQF19IF1dOyBk bwogICAgICAgIGxvY2FsIGxvd2VzdF9pZHg9JHtsZWZ0fTsKICAgICAgICBsb2NhbCBpZHg9 JCgoICR7bG93ZXN0X2lkeH0gKyAxICkpOwogICAgICAgIHdoaWxlIFtbICR7aWR4fSAtbHQg JHsjaXRlbXNbQF19IF1dOyBkbwogICAgICAgICAgICB2ZXJzaW9uX2NvbXBhcmUgIiR7aXRl bXNbJHtsb3dlc3RfaWR4fV19IiAiJHtpdGVtc1ske2lkeH1dfSI7CiAgICAgICAgICAgIFtb ICQ/IC1lcSAzIF1dICYmIGxvd2VzdF9pZHg9JHtpZHh9OwogICAgICAgICAgICBpZHg9JCgo ICR7aWR4fSArIDEgKSk7CiAgICAgICAgZG9uZTsKICAgICAgICBsb2NhbCB0bXA9JHtpdGVt c1ske2xvd2VzdF9pZHh9XX07CiAgICAgICAgaXRlbXNbJHtsb3dlc3RfaWR4fV09JHtpdGVt c1ske2xlZnR9XX07CiAgICAgICAgaXRlbXNbJHtsZWZ0fV09JHt0bXB9OwogICAgICAgIGxl ZnQ9JCgoICR7bGVmdH0gKyAxICkpOwogICAgZG9uZTsKICAgIGVjaG8gJHtpdGVtc1tAXX07 CiAgICBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2dsZSBvZmYKfQpkZWNsYXJlIC14IEFCST0i YW1kNjQiCmRlY2xhcmUgLXggQUxTQV9DQVJEUz0iIgpkZWNsYXJlIC14IEFMU0FfUENNX1BM VUdJTlM9ImFkcGNtIGFsYXcgYXN5bSBjb3B5IGRtaXggZHNoYXJlIGRzbm9vcCBlbXB0eSBl eHRwbHVnIGZpbGUgaG9va3MgaWVjOTU4IGlvcGx1ZyBsYWRzcGEgbGZsb2F0IGxpbmVhciBt ZXRlciBtbWFwX2VtdWwgbXVsYXcgbXVsdGkgbnVsbCBwbHVnIHJhdGUgcm91dGUgc2hhcmUg c2htIHNvZnR2b2wiCmRlY2xhcmUgLXggQU5UX0hPTUU9Ii91c3Ivc2hhcmUvYW50IgpkZWNs YXJlIC14IEFQQUNIRTJfTU9EVUxFUz0iYWN0aW9ucyBhbGlhcyBhdXRoX2Jhc2ljIGF1dGhf ZGlnZXN0IGF1dGhuX2Fub24gYXV0aG5fZGJkIGF1dGhuX2RibSBhdXRobl9kZWZhdWx0IGF1 dGhuX2ZpbGUgYXV0aHpfZGJtIGF1dGh6X2RlZmF1bHQgYXV0aHpfZ3JvdXBmaWxlIGF1dGh6 X2hvc3QgYXV0aHpfb3duZXIgYXV0aHpfdXNlciBhdXRvaW5kZXggY2FjaGUgZGF2IGRhdl9m cyBkYXZfbG9jayBkYmQgZGVmbGF0ZSBkaXIgZGlza19jYWNoZSBlbnYgZXhwaXJlcyBleHRf ZmlsdGVyIGZpbGVfY2FjaGUgZmlsdGVyIGhlYWRlcnMgaWRlbnQgaW1hZ2VtYXAgaW5jbHVk ZSBpbmZvIGxvZ19jb25maWcgbG9naW8gbWVtX2NhY2hlIG1pbWUgbWltZV9tYWdpYyBuZWdv dGlhdGlvbiBwcm94eSBwcm94eV9hanAgcHJveHlfYmFsYW5jZXIgcHJveHlfY29ubmVjdCBw cm94eV9odHRwIHJld3JpdGUgc2V0ZW52aWYgc28gc3BlbGluZyBzdGF0dXMgdW5pcXVlX2lk IHVzZXJkaXIgdXNlcnRyYWNrIHZob3N0X2FsaWFzIgpkZWNsYXJlIC14IEFSQ0g9ImFtZDY0 IgpkZWNsYXJlIC14IEFTRkxBR1NfeDg2PSItLTMyIgpkZWNsYXJlIC14IEJVSUxEX1BSRUZJ WD0iL3Zhci90bXAvcG9ydGFnZSIKZGVjbGFyZSAteCBDQVRFR09SWT0ieDExLWRyaXZlcnMi CmRlY2xhcmUgLXggQ0JVSUxEPSJ4ODZfNjQtcGMtbGludXgtZ251IgpkZWNsYXJlIC14IEND QUNIRV9ESVI9Ii92YXIvdG1wL2NjYWNoZSIKZGVjbGFyZSAteCBDREVGSU5FX2FtZDY0PSJf X3g4Nl82NF9fIgpkZWNsYXJlIC14IENERUZJTkVfZGVmYXVsdD0iX191bml4X18iCmRlY2xh cmUgLXggQ0RFRklORV94ODY9Il9faTM4Nl9fIgpkZWNsYXJlIC14IENGTEFHUz0iLU9zIC1t YXJjaD1vcHRlcm9uIC1tdHVuZT1vcHRlcm9uIC1mb21pdC1mcmFtZS1wb2ludGVyIC1nZ2Ri IgpkZWNsYXJlIC14IENGTEFHU19kZWZhdWx0CmRlY2xhcmUgLXggQ0ZMQUdTX3g4Nj0iLW0z MiIKZGVjbGFyZSAteCBDSE9TVD0ieDg2XzY0LXBjLWxpbnV4LWdudSIKZGVjbGFyZSAteCBD SE9TVF9hbWQ2ND0ieDg2XzY0LXBjLWxpbnV4LWdudSIKZGVjbGFyZSAteCBDSE9TVF9kZWZh dWx0PSJ4ODZfNjQtcGMtbGludXgtZ251IgpkZWNsYXJlIC14IENIT1NUX3g4Nj0iaTY4Ni1w Yy1saW51eC1nbnUiCmRlY2xhcmUgLXggQ1JPU1NDT01QSUxFX09QVFM9IiIKZGVjbGFyZSAt eCBDVEFSR0VUX2RlZmF1bHQ9Ing4Nl82NC1wYy1saW51eC1nbnUiCmRlY2xhcmUgLXggQ1ZT X1JTSD0ic3NoIgpkZWNsYXJlIC14IENYWEZMQUdTPSItT3MgLW1hcmNoPW9wdGVyb24gLW10 dW5lPW9wdGVyb24gLWZvbWl0LWZyYW1lLXBvaW50ZXIgLWdnZGIiCmRlY2xhcmUgLXJ4IEQ9 Ii92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtOC41NTItcjIvaW1h Z2UvIgpkZWNsYXJlIC14IERDQ0NfUEFUSD0iL3Vzci9saWI2NC9kaXN0Y2MvYmluIgpkZWNs YXJlIC14IERFRkFVTFRfQUJJPSJhbWQ2NCIKZGVjbGFyZSAteCBERVNUVFJFRT0iL3VzciIK ZGVjbGFyZSAteCBESVJPUFRJT05TPSItbTA3NTUiCmRlY2xhcmUgLXggRElTUExBWT0iOjAu MCIKZGVjbGFyZSAteCBESVNUQ0NfTE9HPSIiCmRlY2xhcmUgLXggRElTVENDX1ZFUkJPU0U9 IjAiCmRlY2xhcmUgLXggRElTVERJUj0iL3Vzci9wb3J0YWdlL2Rpc3RmaWxlcyIKZGVjbGFy ZSAtcnggRUFQST0iMCIKZGVjbGFyZSAtcnggRUJVSUxEPSIvdXNyL3BvcnRhZ2UveDExLWRy aXZlcnMvYXRpLWRyaXZlcnMvYXRpLWRyaXZlcnMtOC41NTItcjIuZWJ1aWxkIgpkZWNsYXJl IC14IEVCVUlMRF9FWElUX1NUQVRVU19GSUxFPSIvdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2 ZXJzL2F0aS1kcml2ZXJzLTguNTUyLXIyLy5leGl0X3N0YXR1cyIKZGVjbGFyZSAteCBFQlVJ TERfTUFTVEVSX1BJRD0iMTQyNDciCmRlY2xhcmUgLXJ4IEVCVUlMRF9QSEFTRT0ic2V0dXAi CmRlY2xhcmUgLXggRUNMQVNTRElSPSIvdXNyL3BvcnRhZ2UvZWNsYXNzIgpkZWNsYXJlIC1p eCBFQ0xBU1NfREVQVEg9IjAiCmRlY2xhcmUgLXggRURJVE9SPSIvYmluL25hbm8iCmRlY2xh cmUgLXggRUxJQkM9ImdsaWJjIgpkZWNsYXJlIC1yeCBFTUVSR0VfRlJPTT0iZWJ1aWxkIgpk ZWNsYXJlIC14IEVYRU9QVElPTlM9Ii1tMDc1NSIKZGVjbGFyZSAteCBGRUFUVVJFUz0iY2Nh Y2hlIGRpc3Rsb2NrcyBmaXhwYWNrYWdlcyBwYXJhbGxlbC1mZXRjaCBwcm90ZWN0LW93bmVk IHNhbmRib3ggc2ZwZXJtcyBzdHJpY3QgdW5tZXJnZS1vcnBoYW5zIHVzZXJmZXRjaCIKZGVj bGFyZSAtcnggRklMRVNESVI9Ii91c3IvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVy cy9maWxlcyIKZGVjbGFyZSAteCBHQ0NfU1BFQ1M9IiIKZGVjbGFyZSAteCBHREtfVVNFX1hG VD0iMSIKZGVjbGFyZSAteCBHVUlMRV9MT0FEX1BBVEg9Ii91c3Ivc2hhcmUvZ3VpbGUvMS44 IgpkZWNsYXJlIC14IEdfRklMRU5BTUVfRU5DT0RJTkc9IkBsb2NhbGUiCmRlY2xhcmUgLXgg SE9NRT0iL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy04LjU1Mi1y Mi9ob21lZGlyIgpkZWNsYXJlIC1yeCBJTkhFUklURUQ9InRvb2xjaGFpbi1mdW5jcyBwb3J0 YWJpbGl0eSB2ZXJzaW9uYXRvciBtdWx0aWxpYiBsaW51eC1pbmZvIGxpbnV4LW1vZCBldXRp bHMiCmRlY2xhcmUgLXggSU5QVVRfREVWSUNFUz0ia2V5Ym9hcmQgbW91c2UiCmRlY2xhcmUg LXggSU5TREVTVFRSRUU9IiIKZGVjbGFyZSAteCBJTlNPUFRJT05TPSItbTA2NDQiCmRlY2xh cmUgLXggSkFWQUM9Ii9ldGMvamF2YS1jb25maWctMi9jdXJyZW50LXN5c3RlbS12bS9iaW4v amF2YWMiCmRlY2xhcmUgLXggSkFWQUNDX0hPTUU9Ii91c3Ivc2hhcmUvamF2YWNjLyIKZGVj bGFyZSAteCBKQVZBX0hPTUU9Ii9ldGMvamF2YS1jb25maWctMi9jdXJyZW50LXN5c3RlbS12 bSIKZGVjbGFyZSAteCBKREtfSE9NRT0iL2V0Yy9qYXZhLWNvbmZpZy0yL2N1cnJlbnQtc3lz dGVtLXZtIgpkZWNsYXJlIC14IEtERURJUlM9Ii91c3IiCmRlY2xhcmUgLXggS0VSTkVMPSJs aW51eCIKZGVjbGFyZSAteCBLRVJORUxfQUJJPSJhbWQ2NCIKZGVjbGFyZSAtcnggS0VZV09S RFM9ImFtZDY0IHg4NiIKZGVjbGFyZSAteCBLVj0iMi42LjIyLWdlbnRvby1yMi1vc21wIgpk ZWNsYXJlIC14IExBTkc9ImVuX1VTLnV0Zi04IgpkZWNsYXJlIC14IExDRF9ERVZJQ0VTPSIi CmRlY2xhcmUgLXggTENfQUxMPSJDIgpkZWNsYXJlIC14IExERkxBR1M9Ii1XbCwtTzEiCmRl Y2xhcmUgLXggTERGTEFHU19kZWZhdWx0CmRlY2xhcmUgLXggTERGTEFHU194ODY9Ii1tIGVs Zl9pMzg2IgpkZWNsYXJlIC14IExFU1M9Ii1SIC1NIC0tc2hpZnQgNSIKZGVjbGFyZSAteCBM RVNTT1BFTj0ifGxlc3NwaXBlLnNoICVzIgpkZWNsYXJlIC14IExJQkRJUl9hbWQ2ND0ibGli NjQiCmRlY2xhcmUgLXggTElCRElSX2FtZDY0X2Zic2Q9ImxpYjY0IgpkZWNsYXJlIC14IExJ QkRJUl9kZWZhdWx0PSJsaWIiCmRlY2xhcmUgLXggTElCRElSX3BwYz0ibGliMzIiCmRlY2xh cmUgLXggTElCRElSX3BwYzY0PSJsaWI2NCIKZGVjbGFyZSAteCBMSUJESVJfc3BhcmMzMj0i bGliMzIiCmRlY2xhcmUgLXggTElCRElSX3NwYXJjNjQ9ImxpYjY0IgpkZWNsYXJlIC14IExJ QkRJUl94ODY9ImxpYjMyIgpkZWNsYXJlIC14IExJQkRJUl94ODZfZmJzZD0ibGliMzIiCmRl Y2xhcmUgLXggTElCR0xfRFJJVkVSU19QQVRIPSIvdXNyL2xpYjY0L2RyaTovdXNyL2xpYjMy L2RyaSIKZGVjbGFyZSAteCBMSUJPUFRJT05TPSItbTA2NDQiCmRlY2xhcmUgLXJ4IExJQ0VO U0U9IkFNRCBHUEwtMiBRUEwtMS4wIGFzLWlzIgpkZWNsYXJlIC14IExPR05BTUU9InJvb3Qi CmRlY2xhcmUgLXggTFNfQ09MT1JTPSJycz0wOmRpPTAxOzM0OmxuPTAxOzM2OmhsPTQ0OzM3 OnBpPTQwOzMzOnNvPTAxOzM1OmRvPTAxOzM1OmJkPTQwOzMzOzAxOmNkPTQwOzMzOzAxOm9y PTAxOzA1OzM3OzQxOm1pPTAxOzA1OzM3OzQxOnN1PTM3OzQxOnNnPTMwOzQzOmNhPTMwOzQx OnR3PTMwOzQyOm93PTM0OzQyOnN0PTM3OzQ0OmV4PTAxOzMyOioudGFyPTAxOzMxOioudGd6 PTAxOzMxOiouYXJqPTAxOzMxOioudGF6PTAxOzMxOioubHpoPTAxOzMxOioubHptYT0wMTsz MToqLnppcD0wMTszMToqLno9MDE7MzE6Ki5aPTAxOzMxOiouZHo9MDE7MzE6Ki5nej0wMTsz MToqLmJ6Mj0wMTszMToqLmJ6PTAxOzMxOioudGJ6Mj0wMTszMToqLnR6PTAxOzMxOiouZGVi PTAxOzMxOioucnBtPTAxOzMxOiouamFyPTAxOzMxOioucmFyPTAxOzMxOiouYWNlPTAxOzMx Oiouem9vPTAxOzMxOiouY3Bpbz0wMTszMToqLjd6PTAxOzMxOioucno9MDE7MzE6Ki5qcGc9 MDE7MzU6Ki5qcGVnPTAxOzM1OiouZ2lmPTAxOzM1OiouYm1wPTAxOzM1OioucGJtPTAxOzM1 OioucGdtPTAxOzM1OioucHBtPTAxOzM1OioudGdhPTAxOzM1OioueGJtPTAxOzM1OioueHBt PTAxOzM1OioudGlmPTAxOzM1OioudGlmZj0wMTszNToqLnBuZz0wMTszNToqLnN2Zz0wMTsz NToqLnN2Z3o9MDE7MzU6Ki5tbmc9MDE7MzU6Ki5wY3g9MDE7MzU6Ki5tb3Y9MDE7MzU6Ki5t cGc9MDE7MzU6Ki5tcGVnPTAxOzM1OioubTJ2PTAxOzM1OioubWt2PTAxOzM1Oioub2dtPTAx OzM1OioubXA0PTAxOzM1OioubTR2PTAxOzM1OioubXA0dj0wMTszNToqLnZvYj0wMTszNToq LnF0PTAxOzM1OioubnV2PTAxOzM1Oioud212PTAxOzM1OiouYXNmPTAxOzM1Oioucm09MDE7 MzU6Ki5ybXZiPTAxOzM1OiouZmxjPTAxOzM1OiouYXZpPTAxOzM1OiouZmxpPTAxOzM1Oiou Zmx2PTAxOzM1OiouZ2w9MDE7MzU6Ki5kbD0wMTszNToqLnhjZj0wMTszNToqLnh3ZD0wMTsz NToqLnl1dj0wMTszNToqLmF4dj0wMTszNToqLmFueD0wMTszNToqLm9ndj0wMTszNToqLm9n eD0wMTszNToqLnBkZj0wMDszMjoqLnBzPTAwOzMyOioudHh0PTAwOzMyOioucGF0Y2g9MDA7 MzI6Ki5kaWZmPTAwOzMyOioubG9nPTAwOzMyOioudGV4PTAwOzMyOiouZG9jPTAwOzMyOiou YWFjPTAwOzM2OiouYXU9MDA7MzY6Ki5mbGFjPTAwOzM2OioubWlkPTAwOzM2OioubWlkaT0w MDszNjoqLm1rYT0wMDszNjoqLm1wMz0wMDszNjoqLm1wYz0wMDszNjoqLm9nZz0wMDszNjoq LnJhPTAwOzM2Oioud2F2PTAwOzM2OiouYXhhPTAwOzM2Oioub2dhPTAwOzM2Oiouc3B4PTAw OzM2OioueHNwZj0wMDszNjoiCmRlY2xhcmUgLXggTUFLRU9QVFM9Ii1qNSIKZGVjbGFyZSAt eCBNT1BSRUZJWD0iYXRpLWRyaXZlcnMiCmRlY2xhcmUgLXggTVVMVElMSUJfQUJJUz0iYW1k NjQgeDg2IgpkZWNsYXJlIC14IE1VTFRJTElCX1NUUklDVF9ERU5ZPSI2NC1iaXQuKnNoYXJl ZCBvYmplY3QiCmRlY2xhcmUgLXggTVVMVElMSUJfU1RSSUNUX0RJUlM9Ii9saWIzMiAvbGli IC91c3IvbGliMzIgL3Vzci9saWIgL3Vzci9rZGUvKi9saWIzMiAvdXNyL2tkZS8qL2xpYiAv dXNyL3F0LyovbGliMzIgL3Vzci9xdC8qL2xpYiAvdXNyL1gxMVI2L2xpYjMyIC91c3IvWDEx UjYvbGliIgpkZWNsYXJlIC14IE1VTFRJTElCX1NUUklDVF9FWEVNUFQ9IihwZXJsNXxnY2N8 Z2NjLWxpYnxiaW51dGlsc3xlY2xpcHNlLTN8ZGVidWd8cG9ydGFnZSkiCmRlY2xhcmUgLXgg TkVUQkVBTlM9ImFwaXN1cHBvcnQgY25kIGdyb292eSBnc2YgaGFybmVzcyBpZGUgaWRlbnRp dHkgajJlZSBqYXZhIG1vYmlsaXR5IG5iIHBocCBwcm9maWxlciBzb2EgdmlzdWFsd2ViIHdl YmNvbW1vbiB3ZWJzdmNjb21tb24geG1sIgpkZWNsYXJlIC14IE9MRFBXRD0iL3Vzci9zcmMv bGludXgtMi42LjIyLWdlbnRvby1yMiIKZGVjbGFyZSAteCBPUEVOR0xfUFJPRklMRT0ieG9y Zy14MTEiCmRlY2xhcmUgLXggUD0iYXRpLWRyaXZlcnMtOC41NTIiCmRlY2xhcmUgLXggUEFH RVI9Ii91c3IvYmluL2xlc3MiCmRlY2xhcmUgLXggUEFUSD0iL3Vzci9saWIvY2NhY2hlL2Jp bjovdXNyL2xpYjY0L3BvcnRhZ2UvYmluL2VidWlsZC1oZWxwZXJzOi91c3IvbG9jYWwvc2Jp bjovc2JpbjovdXNyL3NiaW46L3Vzci9sb2NhbC9iaW46L2JpbjovdXNyL2Jpbjovb3B0L2Jp bjovdXNyL3g4Nl82NC1wYy1saW51eC1nbnUvZ2NjLWJpbi80LjMuMjovdXNyL2tkZS8zLjUv c2JpbjovdXNyL2tkZS8zLjUvYmluOi91c3IvcXQvMy9iaW4iCmRlY2xhcmUgLXggUEY9ImF0 aS1kcml2ZXJzLTguNTUyLXIyIgpkZWNsYXJlIC14IFBLR0RJUj0iL3Vzci9wb3J0YWdlL3Bh Y2thZ2VzIgpkZWNsYXJlIC14IFBLR1VTRT0iIgpkZWNsYXJlIC14IFBLR19DT05GSUdfUEFU SD0iL3Vzci9xdC8zL2xpYjY0L3BrZ2NvbmZpZyIKZGVjbGFyZSAteCBQS0dfTE9HRElSPSIv dmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTguNTUyLXIyL3RlbXAv bG9nZ2luZyIKZGVjbGFyZSAteCBQS0dfVE1QRElSPSIvdmFyL3RtcC9iaW5wa2dzIgpkZWNs YXJlIC14IFBOPSJhdGktZHJpdmVycyIKZGVjbGFyZSAteCBQT1JUQUdFX0FSQ0hMSVNUPSJw cGMgeDg2LW9wZW5ic2QgcHBjLW9wZW5ic2QgcHBjNjQgeDg2LXdpbm50IHg4Ni1mYnNkIHBw Yy1haXggYWxwaGEgYXJtIHg4Ni1mcmVlYnNkIHMzOTAgYW1kNjQgeDg2LW1hY29zIHg2NC1v cGVuYnNkIGlhNjQtaHB1eCBocHBhIHg4Ni1uZXRic2QgYW1kNjQtbGludXggaWE2NC1saW51 eCB4ODYgc3BhcmMtc29sYXJpcyB4NjQtZnJlZWJzZCBzcGFyYzY0LXNvbGFyaXMgeDg2LWxp bnV4IHg2NC1tYWNvcyBzcGFyYyBtNjhrLW1pbnQgaWE2NCBtaXBzIHBwYy1tYWNvcyB4ODYt aW50ZXJpeCB4NjQtc29sYXJpcyBhbWQ2NC1mYnNkIG1pcHMtaXJpeCBtNjhrIHNoIHg4Ni1z b2xhcmlzIHNwYXJjLWZic2QiCmRlY2xhcmUgLXggUE9SVEFHRV9CQVNIUkM9Ii9ldGMvcG9y dGFnZS9iYXNocmMiCmRlY2xhcmUgLXJ4IFBPUlRBR0VfQklOX1BBVEg9Ii91c3IvbGliNjQv cG9ydGFnZS9iaW4iCmRlY2xhcmUgLXggUE9SVEFHRV9CVUlMRERJUj0iL3Zhci90bXAvcG9y dGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy04LjU1Mi1yMiIKZGVjbGFyZSAteCBQT1JU QUdFX0NPTE9STUFQPSJHT09EPVwkJxtbMzI7MDFtJwpXQVJOPVwkJxtbMzM7MDFtJwpCQUQ9 XCQnG1szMTswMW0nCkhJTElURT1cJCcbWzM2bScKQlJBQ0tFVD1cJCcbWzM0OzAxbSciCmRl Y2xhcmUgLXggUE9SVEFHRV9DT01QUkVTU19FWENMVURFX1NVRkZJWEVTPSJjc3MgZ2lmIGh0 bVtsXT8ganBbZV0/ZyBqcyBwZGYgcG5nIgpkZWNsYXJlIC14IFBPUlRBR0VfQ09ORklHUk9P VD0iLyIKZGVjbGFyZSAteCBQT1JUQUdFX0RFQlVHPSIwIgpkZWNsYXJlIC14IFBPUlRBR0Vf REVQQ0FDSEVESVI9Ii92YXIvY2FjaGUvZWRiL2RlcCIKZGVjbGFyZSAteCBQT1JUQUdFX0dJ RD0iMjUwIgpkZWNsYXJlIC14IFBPUlRBR0VfSU5TVF9HSUQ9IjAiCmRlY2xhcmUgLXggUE9S VEFHRV9JTlNUX1VJRD0iMCIKZGVjbGFyZSAtcnggUE9SVEFHRV9JVVNFPSJeKDNkZnh8YWNw aXxhZGFiYXN8YWxwaGF8YWxzYVxcX2NhcmRzXFxfYW9hfGFsc2FcXF9jYXJkc1xcX2FvYVxc LWZhYnJpY1xcLWxheW91dHxhbHNhXFxfY2FyZHNcXF9hb2FcXC1vbnl4fGFsc2FcXF9jYXJk c1xcX2FvYVxcLXNvdW5kYnVzfGFsc2FcXF9jYXJkc1xcX2FvYVxcLXNvdW5kYnVzXFwtaTJz fGFsc2FcXF9jYXJkc1xcX2FvYVxcLXRhc3xhbHNhXFxfY2FyZHNcXF9hb2FcXC10b29uaWV8 YWxzYVxcX2NhcmRzXFxfYXJtYWFjaXxhbHNhXFxfY2FyZHNcXF9hdDkxXFwtc29jfGFsc2Fc XF9jYXJkc1xcX2F0OTFcXC1zb2NcXC1ldGlcXC1iMVxcLXdtODczMXxhbHNhXFxfY2FyZHNc XF9hdTF4MDB8YWxzYVxcX2NhcmRzXFxfY3M1NTM1YXVkaW98YWxzYVxcX2NhcmRzXFxfaGFy bW9ueXxhbHNhXFxfY2FyZHNcXF9wb3dlcm1hY3xhbHNhXFxfY2FyZHNcXF9weGEyeHhcXC1p MnNvdW5kfGFsc2FcXF9jYXJkc1xcX3B4YTJ4eFxcLXNvY3xhbHNhXFxfY2FyZHNcXF9weGEy eHhcXC1zb2NcXC1jb3JnaXxhbHNhXFxfY2FyZHNcXF9weGEyeHhcXC1zb2NcXC1wb29kbGV8 YWxzYVxcX2NhcmRzXFxfcHhhMnh4XFwtc29jXFwtc3BpdHp8YWxzYVxcX2NhcmRzXFxfcHhh Mnh4XFwtc29jXFwtdG9zYXxhbHNhXFxfY2FyZHNcXF9zYTExeHhcXC11ZGExMzQxdHN8YWxz YVxcX2NhcmRzXFxfc3VuXFwtYW1kNzkzMHxhbHNhXFxfY2FyZHNcXF9zdW5cXC1jczQyMzF8 YWxzYVxcX2NhcmRzXFxfc3VuXFwtZGJyaXxhbHRpdmVjfGFtZDY0fGFtZDY0XFwtZmJzZHxh bWQ2NFxcLWxpbnV4fGFxdWF8YXJtfGFzbXxiaXJkc3RlcHxibXB8Ym1weHxib290c3RyYXB8 YnVpbGR8Y2Fwc2xpYnxjbHZtfGNtYW58Y211Y2x8Y29yZWF1ZGlvfGNyb3NzY29tcGlsZVxc X29wdHNcXF8uKnxkYm1ha2VyfGRlYnVnfGRvb21zZGF5fGRyYWN8ZWxpYmNcXF9BSVh8ZWxp YmNcXF9EYXJ3aW58ZWxpYmNcXF9EcmFnb25GbHl8ZWxpYmNcXF9GcmVlQlNEfGVsaWJjXFxf SFBVWHxlbGliY1xcX0lSSVh8ZWxpYmNcXF9JbnRlcml4fGVsaWJjXFxfTmV0QlNEfGVsaWJj XFxfT3BlbkJTRHxlbGliY1xcX1N1bk9TfGVsaWJjXFxfLip8ZWxpYmNcXF9nbGliY3xlbGli Y1xcX21pbnRsaWJ8ZWxpYmNcXF91Y2xpYmN8ZW1mfGVtcHJlc3N8ZW1wcmVzc1xcLWJjc3xl c29vYnxmZGZ0a3xmaWxlcHJvfGZpcmViaXJkfGZpeGVkXFwtcG9pbnR8ZnJvbnRiYXNlfGdh bWVzc3xnY2M2NHxndWxtfGhwcGF8aWE2NHxpYTY0XFwtaHB1eHxpYTY0XFwtbGludXh8aWJt fGluZm9waXBlfGluZm9ybWl4fGluZ3Jlc3xrZGVwcmVmaXh8a2VybmVsXFxfQUlYfGtlcm5l bFxcX0RhcndpbnxrZXJuZWxcXF9GcmVlQlNEfGtlcm5lbFxcX0hQVVh8a2VybmVsXFxfSVJJ WHxrZXJuZWxcXF9JbnRlcml4fGtlcm5lbFxcX05ldEJTRHxrZXJuZWxcXF9PcGVuQlNEfGtl cm5lbFxcX1N1bk9TfGtlcm5lbFxcXy4qfGtlcm5lbFxcX2ZyZWVtaW50fGtlcm5lbFxcX2xp bnV4fGxjZFxcX2RldmljZXNcXF9zdmdhfG02OGt8bTY4a1xcLW1pbnR8bWFjYm9va3xtaXBz fG1pcHNcXC1pcml4fG11bHRpbGlifG4zMnxuNjR8b3NwfHBhbVxcX2NvbnNvbGV8cGJidXR0 b25zZHxwZnByb3xwbHVnaW58cHBjfHBwYzY0fHBwY1xcLWFpeHxwcGNcXC1tYWNvc3xwcGNc XC1vcGVuYnNkfHBwY3NoYTF8cHJlZml4fHBzeWNvfHB2bXxyZWFsfHJlYWxjb2RlY3N8czM5 MHxzZWxpbnV4fHNofHNvbGlkfHNwYXJjfHNwYXJjNjRcXC1zb2xhcmlzfHNwYXJjXFwtZmJz ZHxzcGFyY1xcLXNvbGFyaXN8c3ZnYXxzeWJhc2V8c3liYXNlXFwtY3R8dGNjfHVjbGliY3x1 bHRyYTF8dXNlcmxhbmRcXF9CU0R8dXNlcmxhbmRcXF9HTlV8dXNlcmxhbmRcXF8uKnx2aWRl b1xcX2NhcmRzXFxfZ2VvZGV8dmlkZW9cXF9jYXJkc1xcX2k3NDB8dmlkZW9cXF9jYXJkc1xc X2ltcGFjdHx2aWRlb1xcX2NhcmRzXFxfaW1zdHR8dmlkZW9cXF9jYXJkc1xcX25ld3BvcnR8 dmlkZW9cXF9jYXJkc1xcX25zY3x2aWRlb1xcX2NhcmRzXFxfc3VuYncyfHZpZGVvXFxfY2Fy ZHNcXF9zdW5jZzE0fHZpZGVvXFxfY2FyZHNcXF9zdW5jZzN8dmlkZW9cXF9jYXJkc1xcX3N1 bmNnNnx2aWRlb1xcX2NhcmRzXFxfc3VuZmZifHZpZGVvXFxfY2FyZHNcXF9zdW5sZW98dmlk ZW9cXF9jYXJkc1xcX3N1bnRjeHx2aWRlb1xcX2NhcmRzXFxfdmVybWlsaW9ufHZpZGVvXFxf Y2FyZHNcXF94Z2l8dmlkaXh8dmlzfHdpbjMyY29kZWNzfHg2NFxcLWZyZWVic2R8eDY0XFwt bWFjb3N8eDY0XFwtb3BlbmJzZHx4NjRcXC1zb2xhcmlzfHg4Nnx4ODZcXC1mYnNkfHg4Nlxc LWZyZWVic2R8eDg2XFwtaW50ZXJpeHx4ODZcXC1saW51eHx4ODZcXC1tYWNvc3x4ODZcXC1u ZXRic2R8eDg2XFwtb3BlbmJzZHx4ODZcXC1zb2xhcmlzfHg4NlxcLXdpbm50fHhtbXN8eWVs bG93bmV0KVwkIgpkZWNsYXJlIC14IFBPUlRBR0VfTE9HX0ZJTEU9Ii92YXIvdG1wL3BvcnRh Z2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtOC41NTItcjIvdGVtcC9idWlsZC5sb2ciCmRl Y2xhcmUgLXggUE9SVEFHRV9NQVNURVJfUElEPSIxNDIwOSIKZGVjbGFyZSAtcnggUE9SVEFH RV9QWU1fUEFUSD0iL3Vzci9saWI2NC9wb3J0YWdlL3B5bSIKZGVjbGFyZSAteCBQT1JUQUdF X1JFUE9fTkFNRT0iZ2VudG9vIgpkZWNsYXJlIC14IFBPUlRBR0VfUkVTVFJJQ1Q9IiIKZGVj bGFyZSAtcnggUE9SVEFHRV9UTVBESVI9Ii92YXIvdG1wIgpkZWNsYXJlIC14IFBPUlRBR0Vf V09SS0RJUl9NT0RFPSIwNzAwIgpkZWNsYXJlIC14IFBPUlRESVI9Ii91c3IvcG9ydGFnZSIK ZGVjbGFyZSAteCBQT1JURElSX09WRVJMQVk9IiIKZGVjbGFyZSAteCBQUj0icjIiCmRlY2xh cmUgLXggUFJPRklMRV9PTkxZX1ZBUklBQkxFUz0iQVJDSCBFTElCQyBLRVJORUwgVVNFUkxB TkQiCmRlY2xhcmUgLXggUFJPRklMRV9QQVRIUz0iL3Vzci9wb3J0YWdlL3Byb2ZpbGVzL2Jh c2UKL3Vzci9wb3J0YWdlL3Byb2ZpbGVzL2RlZmF1bHQvbGludXgKL3Vzci9wb3J0YWdlL3By b2ZpbGVzL2FyY2gvYmFzZQovdXNyL3BvcnRhZ2UvcHJvZmlsZXMvZmVhdHVyZXMvbXVsdGls aWIKL3Vzci9wb3J0YWdlL3Byb2ZpbGVzL2FyY2gvYW1kNjQKL3Vzci9wb3J0YWdlL3Byb2Zp bGVzL2RlZmF1bHQvbGludXgvYW1kNjQKL3Vzci9wb3J0YWdlL3Byb2ZpbGVzL3JlbGVhc2Vz Ci91c3IvcG9ydGFnZS9wcm9maWxlcy9yZWxlYXNlcy8yMDA4LjAKL3Vzci9wb3J0YWdlL3By b2ZpbGVzL2RlZmF1bHQvbGludXgvYW1kNjQvMjAwOC4wCi9ldGMvcG9ydGFnZS9wcm9maWxl IgpkZWNsYXJlIC14IFBST1BFUlRJRVM9IiIKZGVjbGFyZSAtcnggUFJPVklERT0iIgpkZWNs YXJlIC14IFBWPSI4LjU1MiIKZGVjbGFyZSAteCBQVlI9IjguNTUyLXIyIgpkZWNsYXJlIC14 IFBXRD0iL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy04LjU1Mi1y MiIKZGVjbGFyZSAteCBRTUFLRVNQRUM9ImxpbnV4LWcrKyIKZGVjbGFyZSAteCBRVERJUj0i L3Vzci9xdC8zIgpkZWNsYXJlIC1yeCBSRVNUUklDVD0iIgpkZWNsYXJlIC14IFJPT1Q9Ii8i CmRlY2xhcmUgLXggUk9PVFBBVEg9Ii9vcHQvYmluOi91c3IveDg2XzY0LXBjLWxpbnV4LWdu dS9nY2MtYmluLzQuMy4yOi91c3Iva2RlLzMuNS9zYmluOi91c3Iva2RlLzMuNS9iaW46L3Vz ci9xdC8zL2JpbiIKZGVjbGFyZSAteCBSUE1ESVI9Ii91c3IvcG9ydGFnZS9ycG0iCmRlY2xh cmUgLXggUlNZTkNfRVhDTFVERUZST009Ii9ldGMvcG9ydGFnZS9yc3luY19leGNsdWRlcyIK ZGVjbGFyZSAteCBSX0hPTUU9Ii91c3IvbGliNjQvUiIKZGVjbGFyZSAteCBTPSIvdmFyL3Rt cC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTguNTUyLXIyL3dvcmsiCmRlY2xh cmUgLXggU0FHRV9ST09UPSIvdXNyL2xvY2FsL3NhZ2UtMi44LjItZGViaWFuMzItaTY4Ni1M aW51eCIKZGVjbGFyZSAteCBTQU5EQk9YX0xPRz0ieDExLWRyaXZlcnNfLV9hdGktZHJpdmVy cy04LjU1Mi1yMiIKZGVjbGFyZSAteCBTQU5EQk9YX09OPSIwIgpkZWNsYXJlIC14IFNBTkRC T1hfUFJFRElDVD0iL3Byb2Mvc2VsZi9tYXBzOi9kZXYvY29uc29sZTovZGV2L3JhbmRvbSIK ZGVjbGFyZSAteCBTQU5EQk9YX1JFQUQ9Ii86L2Rldi9zaG06L2Rldi9zdGRpbjovdmFyL3Rt cDovdmFyL3RtcC9jY2FjaGUiCmRlY2xhcmUgLXggU0FOREJPWF9XUklURT0iL2Rldi9zaG06 L2Rldi9zdGRvdXQ6L2Rldi9zdGRlcnI6L3Zhci90bXA6L3Zhci90bXAvY2NhY2hlIgpkZWNs YXJlIC14IFNDSEVNRV9MSUJSQVJZX1BBVEg9Ii91c3Ivc2hhcmUvc2xpYi8iCmRlY2xhcmUg LXggU0dNTF9DQVRBTE9HX0ZJTEVTPSIvZXRjL3NnbWwvc2dtbC1kb2Nib29rLmNhdDovZXRj L3NnbWwvb3BlbmphZGUtMS4zLjIuY2F0Oi9ldGMvc2dtbC94bWwtZG9jYm9vay00LjQuY2F0 Oi9ldGMvc2dtbC94bWwtZG9jYm9vay00LjEuMi5jYXQ6L2V0Yy9zZ21sL3NnbWwtZG9jYm9v ay0zLjEuY2F0Oi9ldGMvc2dtbC9zZ21sLWxpdGUuY2F0Oi9ldGMvc2dtbC9kc3NzbC1kb2Ni b29rLXN0eWxlc2hlZXRzLmNhdCIKZGVjbGFyZSAteCBTSEVMTD0iL2Jpbi9iYXNoIgpkZWNs YXJlIC14IFNITFZMPSIzIgpkZWNsYXJlIC1yeCBTTE9UPSIwIgpkZWNsYXJlIC14IFNUQUdF MV9VU0U9Im11bHRpbGliIG5wdGwgbnB0bG9ubHkgdW5pY29kZSIKZGVjbGFyZSAteCBTVEFS VERJUj0iL3Vzci9zcmMvbGludXgtMi42LjIyLWdlbnRvby1yMiIKZGVjbGFyZSAteCBTWU1M SU5LX0xJQj0ieWVzIgpkZWNsYXJlIC1yeCBUPSIvdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2 ZXJzL2F0aS1kcml2ZXJzLTguNTUyLXIyL3RlbXAiCmRlY2xhcmUgLXggVEVSTT0ieHRlcm0i CmRlY2xhcmUgLXggVE1QPSIvdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2 ZXJzLTguNTUyLXIyL3RlbXAiCmRlY2xhcmUgLXggVE1QRElSPSIvdmFyL3RtcC9wb3J0YWdl L3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTguNTUyLXIyL3RlbXAiCmRlY2xhcmUgLXggVVNF PSJhY3BpIGFtZDY0IGVsaWJjX2dsaWJjIGtlcm5lbF9saW51eCBtdWx0aWxpYiB1c2VybGFu ZF9HTlUiCmRlY2xhcmUgLXggVVNFUj0icm9vdCIKZGVjbGFyZSAteCBVU0VSTEFORD0iR05V IgpkZWNsYXJlIC14IFVTRV9FWFBBTkQ9IkFMU0FfQ0FSRFMgQUxTQV9QQ01fUExVR0lOUyBB UEFDSEUyX01PRFVMRVMgQVBBQ0hFMl9NUE1TIENBTUVSQVMgQ1JPU1NDT01QSUxFX09QVFMg RFZCX0NBUkRTIEVMSUJDIEZDRFNMX0NBUkRTIEZPTzJaSlNfREVWSUNFUyBGUklUWkNBUElf Q0FSRFMgSU5QVVRfREVWSUNFUyBLRVJORUwgTENEX0RFVklDRVMgTElOR1VBUyBMSVJDX0RF VklDRVMgTUlTRE5fQ0FSRFMgTkVUQkVBTlNfTU9EVUxFUyBRRU1VX1NPRlRNTVVfVEFSR0VU UyBRRU1VX1VTRVJfVEFSR0VUUyBVU0VSTEFORCBWSURFT19DQVJEUyIKZGVjbGFyZSAteCBW SURFT19DQVJEUz0iIgpkZWNsYXJlIC1yeCBXT1JLRElSPSIvdmFyL3RtcC9wb3J0YWdlL3gx MS1kcml2ZXJzL2F0aS1kcml2ZXJzLTguNTUyLXIyL3dvcmsiCmRlY2xhcmUgLXggWEFSR1M9 InhhcmdzIC1yIgpkZWNsYXJlIC14IFhBVVRIT1JJVFk9Ii9yb290Ly54YXV0aGdwTkdWVyIK ZGVjbGFyZSAteCBYREdfQ09ORklHX0RJUlM9Ii9ldGMveGRnIgpkZWNsYXJlIC14IFhER19E QVRBX0RJUlM9Ii91c3IvbG9jYWwvc2hhcmU6L3Vzci9rZGUvMy41L3NoYXJlOi91c3Ivc2hh cmUiCmRlY2xhcmUgLXggX0VfRE9DREVTVFRSRUVfPSIiCmRlY2xhcmUgLXggX0VfRVhFREVT VFRSRUVfPSIiCg== --------------020707080803010203000503--