tx · 61gh27mQT2zutRACfeSxkB9zqWvsEFM8CGL9wn7zxVda

3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ:  -0.13136200 Waves

2019.12.03 19:45 [792756] data 3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ > SELF 0.00000000 Waves

3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ: qwe?styles.css?5?5: "base64:aCBleGNlZWRlZCIpO2ZvcihmPXUoZyxyKSxoPTA7aDxyO2grKykodj1iK2gpaW4gZyYmcyhmLGgsZ1t2XSk7aWYoZi5sZW5ndGg9cixuPHIpe2ZvcihoPWI7aDx5LXI7aCsrKWQ9aCtuLCh2PWgrcilpbiBnP2dbZF09Z1t2XTpkZWxldGUgZ1tkXTtmb3IoaD15O2g+eS1yK247aC0tKWRlbGV0ZSBnW2gtMV19ZWxzZSBpZihuPnIpZm9yKGg9eS1yO2g+YjtoLS0pZD1oK24tMSwodj1oK3ItMSlpbiBnP2dbZF09Z1t2XTpkZWxldGUgZ1tkXTtmb3IoaD0wO2g8bjtoKyspZ1toK2JdPWFyZ3VtZW50c1toKzJdO3JldHVybiBnLmxlbmd0aD15LXIrbixmfX0pfSxwTk1POmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMm9SbyIpLGk9bigieERCUiIpLGE9bigiZzZ2LyIpLGM9bigiU1RBRSIpLHU9bigiMERreSIpLHM9bigiVVRWUyIpLGY9bigiNkxXQSIpLGw9bigiaGgxdiIpLHA9bigiZ2xyayIpLGg9bigiZXd2VyIpLHY9bigiL0dxVSIpLGQ9bigid0U2diIpLGc9bigiWEd3QyIpLHk9bigiZkhNWSIpLGI9bigiMzNXaCIpLG09bigiSkJ5OCIpLGs9bigiQlgvYiIpLF89bigiZEJnKyIpLHc9bigiQnM4ViIpLHg9bigibS9MOCIpLFM9bigiMGVlZiIpLEU9bigiWDJVKyIpLE89bigiYnVzRSIpLFQ9bigiVnBJVCIpLEk9bigiOTNJMCIpLGo9bigiMEJLMiIpLE09bigia09PbCIpLFA9bigidGlLcCIpLEQ9bigid0RMbyIpLFI9bigiZEcvbiIpLE49bigiMUU1eiIpLEE9bigiYWZPOCIpLEw9bigidHljUiIpLmZvckVhY2gsRj1JKCJoaWRkZW4iKSx6PVAoInRvUHJpbWl0aXZlIiksWj1BLnNldCxDPUEuZ2V0dGVyRm9yKCJTeW1ib2wiKSxXPU9iamVjdC5wcm90b3R5cGUsRz1vLlN5bWJvbCxVPW8uSlNPTixIPVUmJlUuc3RyaW5naWZ5LEI9dy5mLEs9eC5mLFY9ay5mLFg9Uy5mLFk9VCgic3ltYm9scyIpLHE9VCgib3Atc3ltYm9scyIpLFE9VCgic3RyaW5nLXRvLXN5bWJvbC1yZWdpc3RyeSIpLEo9VCgic3ltYm9sLXRvLXN0cmluZy1yZWdpc3RyeSIpLCQ9VCgid2tzIiksdHQ9by5RT2JqZWN0LGV0PSF0dHx8IXR0LnByb3RvdHlwZXx8IXR0LnByb3RvdHlwZS5maW5kQ2hpbGQsbnQ9YSYmdSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9eShLKHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEsodGhpcywiYSIse3ZhbHVlOjd9KS5hfX0pKS5hfSkpP2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj1CKFcsZSk7ciYmZGVsZXRlIFdbZV0sSyh0LGUsbiksciYmdCE9PVcmJksoVyxlLHIpfTpLLHJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49WVt0XT15KEcucHJvdG90eXBlKTtyZXR1cm4gWihuLHt0eXBlOiJTeW1ib2wiLHRhZzp0LGRlc2NyaXB0aW9uOmV9KSxhfHwobi5kZXNjcmlwdGlvbj1lKSxufSxvdD1jJiYic3ltYm9sIj09dHlwZW9mIEcuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KHQpaW5zdGFuY2VvZiBHfSxpdD1mdW5jdGlvbih0LGUsbil7dD09PVcmJml0KHEsZSxuKSxwKHQpO3ZhciByPWQoZSwhMCk7cmV0dXJuIHAobikscyhZLHIpPyhuLmVudW1lcmFibGU/KHModCxGKSYmdFtGXVtyXSYmKHRbRl1bcl09ITEpLG49eShuLHtlbnVtZXJhYmxlOmcoMCwhMSl9KSk6KHModCxGKXx8Syh0LEYsZygxLHt9KSksdFtGXVtyXT0hMCksbnQodCxyLG4pKTpLKHQscixuKX0sYXQ9ZnVuY3Rpb24odCxlKXtwKHQpO3ZhciBuPXYoZSkscj1iKG4pLmNvbmNhdChmdChuKSk7cmV0dXJuIEwociwoZnVuY3Rpb24oZSl7YSYmIWN0LmNhbGwobixlKXx8aXQodCxlLG5bZV0pfSkpLHR9LGN0PWZ1bmN0aW9uKHQpe3ZhciBlPWQodCwhMCksbj1YLmNhbGwodGhpcyxlKTtyZXR1cm4hKHRoaXM9PT1XJiZzKFksZSkmJiFzKHEsZSkpJiYoIShufHwhcyh0aGlzLGUpfHwhcyhZLGUpfHxzKHRoaXMsRikmJnRoaXNbRl1bZV0pfHxuKX0sdXQ9ZnVuY3Rpb24odCxlKXt2YXIgbj12KHQpLHI9ZChlLCEwKTtpZihuIT09V3x8IXMoWSxyKXx8cyhxLHIpKXt2YXIgbz1CKG4scik7cmV0dXJuIW98fCFzKFkscil8fHMobixGKSYmbltGXVtyXXx8KG8uZW51bWVyYWJsZT0hMCksb319LHN0PWZ1bmN0aW9uKHQpe3ZhciBlPVYodih0KSksbj1bXTtyZXR1cm4gTChlLChmdW5jdGlvbih0KXtzKFksdCl8fHMoaix0KXx8bi5wdXNoKHQpfSkpLG59LGZ0PWZ1bmN0aW9uKHQpe3ZhciBlPXQ9PT1XLG49VihlP3E6dih0KSkscj1bXTtyZXR1cm4gTChuLChmdW5jdGlvbih0KXshcyhZLHQpfHxlJiYhcyhXLHQpfHxyLnB1c2goWVt0XSl9KSkscn07Y3x8KE8oKEc9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgRyl0aHJvdyBUeXBlRXJyb3IoIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciIpO3ZhciB0PWFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9TdHJpbmcoYXJndW1lbnRzWzBdKTp2b2lkIDAsZT1NKHQpLG49ZnVuY3Rpb24odCl7dGhpcz09PVcmJm4uY2FsbChxLHQpLHModGhpcyxGKSYmcyh0aGlzW0ZdLGUpJiYodGhpc1tGXVtlXT0hMSksbnQodGhpcyxlLGcoMSx0KSl9O3JldHVybiBhJiZldCYmbnQoVyxlLHtjb25maWd1cmFibGU6ITAsc2V0Om59KSxydChlLHQpfSkucHJvdG90eXBlLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIEModGhpcykudGFnfSkpLFMuZj1jdCx4LmY9aXQsdy5mPXV0LG0uZj1rLmY9c3QsXy5mPWZ0LGEmJihLKEcucHJvdG90eXBlLCJkZXNjcmlwdGlvbiIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQyh0aGlzKS5kZXNjcmlwdGlvbn19KSxpfHxPKFcsInByb3BlcnR5SXNFbnVtZXJhYmxlIixjdCx7dW5zYWZlOiEwfSkpLEQuZj1mdW5jdGlvbih0KXtyZXR1cm4gcnQoUCh0KSx0KX0pLHIoe2dsb2JhbDohMCx3cmFwOiEwLGZvcmNlZDohYyxzaGFtOiFjfSx7U3ltYm9sOkd9KSxMKGIoJCksKGZ1bmN0aW9uKHQpe1IodCl9KSkscih7dGFyZ2V0OiJTeW1ib2wiLHN0YXQ6ITAsZm9yY2VkOiFjfSx7Zm9yOmZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyh0KTtpZihzKFEsZSkpcmV0dXJuIFFbZV07dmFyIG49RyhlKTtyZXR1cm4gUVtlXT1uLEpbbl09ZSxufSxrZXlGb3I6ZnVuY3Rpb24odCl7aWYoIW90KHQpKXRocm93IFR5cGVFcnJvcih0KyIgaXMgbm90IGEgc3ltYm9sIik7aWYocyhKLHQpKXJldHVybiBKW3RdfSx1c2VTZXR0ZXI6ZnVuY3Rpb24oKXtldD0hMH0sdXNlU2ltcGxlOmZ1bmN0aW9uKCl7ZXQ9ITF9fSkscih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFjLHNoYW06IWF9LHtjcmVhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZT95KHQpOmF0KHkodCksZSl9LGRlZmluZVByb3BlcnR5Oml0LGRlZmluZVByb3BlcnRpZXM6YXQsZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOnV0fSkscih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFjfSx7Z2V0T3duUHJvcGVydHlOYW1lczpzdCxnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ZnR9KSxyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6dSgoZnVuY3Rpb24oKXtfLmYoMSl9KSl9LHtnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ZnVuY3Rpb24odCl7cmV0dXJuIF8uZihoKHQpKX19KSxVJiZyKHt0YXJnZXQ6IkpTT04iLHN0YXQ6ITAsZm9yY2VkOiFjfHx1KChmdW5jdGlvbigpe3ZhciB0PUcoKTtyZXR1cm4iW251bGxdIiE9SChbdF0pfHwie30iIT1IKHthOnR9KXx8Int9IiE9SChPYmplY3QodCkpfSkpfSx7c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuLHI9W3RdLG89MTthcmd1bWVudHMubGVuZ3RoPm87KXIucHVzaChhcmd1bWVudHNbbysrXSk7aWYobj1lPXJbMV0sKGwoZSl8fHZvaWQgMCE9PXQpJiYhb3QodCkpcmV0dXJuIGYoZSl8fChlPWZ1bmN0aW9uKHQsZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4mJihlPW4uY2FsbCh0aGlzLHQsZSkpLCFvdChlKSlyZXR1cm4gZX0pLHJbMV09ZSxILmFwcGx5KFUscil9fSksRy5wcm90b3R5cGVbel18fEUoRy5wcm90b3R5cGUseixHLnByb3RvdHlwZS52YWx1ZU9mKSxOKEcsIlN5bWJvbCIpLGpbRl09ITB9LHBpTWI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJ0eWNSIikuZXZlcnk7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOm4oInN3RkwiKSgiZXZlcnkiKX0se2V2ZXJ5OmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSl9LHBqRHY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIlRmVGkiKTtyKHt0YXJnZXQ6IkFycmF5IixzdGF0OiEwLGZvcmNlZDohbigiSEg0byIpKChmdW5jdGlvbih0KXtBcnJheS5mcm9tKHQpfSkpfSx7ZnJvbTpvfSl9LHBwR0I6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLmNlaWwscj1NYXRoLmZsb29yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaXNOYU4odD0rdCk/MDoodD4wP3I6bikodCl9fSwicUhUKyI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIkZGNmwiKSxpPW4oIlJOSXMiKTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMH0se2NvcHlXaXRoaW46b30pLGkoImNvcHlXaXRoaW4iKX0scWVQVjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImc2di8iKSxvPW4oIjJvUm8iKSxpPW4oImxNcTUiKSxhPW4oImJ1c0UiKSxjPW4oIlVUVlMiKSx1PW4oInhyWUsiKSxzPW4oImNWWUgiKSxmPW4oIndFNnYiKSxsPW4oIjBEa3kiKSxwPW4oImZITVkiKSxoPW4oIkpCeTgiKS5mLHY9bigiQnM4ViIpLmYsZD1uKCJtL0w4IikuZixnPW4oIldLaUgiKS50cmltLHk9by5OdW1iZXIsYj15LnByb3RvdHlwZSxtPSJOdW1iZXIiPT11KHAoYikpLGs9ZnVuY3Rpb24odCl7dmFyIGUsbixyLG8saSxhLGMsdSxzPWYodCwhMSk7aWYoInN0cmluZyI9PXR5cGVvZiBzJiZzLmxlbmd0aD4yKWlmKDQzPT09KGU9KHM9ZyhzKSkuY2hhckNvZGVBdCgwKSl8fDQ1PT09ZSl7aWYoODg9PT0obj1zLmNoYXJDb2RlQXQoMikpfHwxMjA9PT1uKXJldHVybiBOYU59ZWxzZSBpZig0OD09PWUpe3N3aXRjaChzLmNoYXJDb2RlQXQoMSkpe2Nhc2UgNjY6Y2FzZSA5ODpyPTIsbz00OTticmVhaztjYXNlIDc5OmNhc2UgMTExOnI9OCxvPTU1O2JyZWFrO2RlZmF1bHQ6cmV0dXJuK3N9Zm9yKGE9KGk9cy5zbGljZSgyKSkubGVuZ3RoLGM9MDtjPGE7YysrKWlmKCh1PWkuY2hhckNvZGVBdChjKSk8NDh8fHU+bylyZXR1cm4gTmFOO3JldHVybiBwYXJzZUludChpLHIpfXJldHVybitzfTtpZihpKCJOdW1iZXIiLCF5KCIgMG8xIil8fCF5KCIwYjEiKXx8eSgiKzB4MSIpKSl7Zm9yKHZhciBfLHc9ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDwxPzA6dCxuPXRoaXM7cmV0dXJuIG4gaW5zdGFuY2VvZiB3JiYobT9sKChmdW5jdGlvbigpe2IudmFsdWVPZi5jYWxsKG4pfSkpOiJOdW1iZXIiIT11KG4pKT9zKG5ldyB5KGsoZSkpLG4sdyk6ayhlKX0seD1yP2goeSk6Ik1BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLEVQU0lMT04saXNGaW5pdGUsaXNJbnRlZ2VyLGlzTmFOLGlzU2FmZUludGVnZXIsTUFYX1NBRkVfSU5URUdFUixNSU5fU0FGRV9JTlRFR0VSLHBhcnNlRmxvYXQscGFyc2VJbnQsaXNJbnRlZ2VyIi5zcGxpdCgiLCIpLFM9MDt4Lmxlbmd0aD5TO1MrKyljKHksXz14W1NdKSYmIWModyxfKSYmZCh3LF8sdih5LF8pKTt3LnByb3RvdHlwZT1iLGIuY29uc3RydWN0b3I9dyxhKG8sIk51bWJlciIsdyl9fSxxeFBaOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ0aUtwIikoIm1hdGNoIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPS8uLzt0cnl7Ii8uLyJbdF0oZSl9Y2F0Y2gobil7dHJ5e3JldHVybiBlW3JdPSExLCIvLi8iW3RdKGUpfWNhdGNoKG8pe319cmV0dXJuITF9fSwici9WcSI6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJOdW1iZXIiLHN0YXQ6ITB9LHtNQVhfU0FGRV9JTlRFR0VSOjkwMDcxOTkyNTQ3NDA5OTF9KX0scjVPZzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiaGgxdiIpLGk9bigiOFlPYSIpLm9uRnJlZXplLGE9bigidXk4MyIpLGM9bigiMERreSIpLHU9T2JqZWN0LnNlYWw7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOmMoKGZ1bmN0aW9uKCl7dSgxKX0pKSxzaGFtOiFhfSx7c2VhbDpmdW5jdGlvbih0KXtyZXR1cm4gdSYmbyh0KT91KGkodCkpOnR9fSl9LHJCOWo6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJrbU1WIik7cih7dGFyZ2V0OiJSZWdFeHAiLHByb3RvOiEwLGZvcmNlZDovLi8uZXhlYyE9PW99LHtleGVjOm99KX0sckt6YjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjRzeXciKSxvPW4oIjhZT2EiKS5nZXRXZWFrRGF0YSxpPW4oImdscmsiKSxhPW4oImhoMXYiKSxjPW4oIkdhclUiKSx1PW4oIkltWk4iKSxzPW4oInR5Y1IiKSxmPW4oIlVUVlMiKSxsPW4oImFmTzgiKSxwPWwuc2V0LGg9bC5nZXR0ZXJGb3Isdj1zLmZpbmQsZD1zLmZpbmRJbmRleCxnPTAseT1mdW5jdGlvbih0KXtyZXR1cm4gdC5mcm96ZW58fCh0LmZyb3plbj1uZXcgYil9LGI9ZnVuY3Rpb24oKXt0aGlzLmVudHJpZXM9W119LG09ZnVuY3Rpb24odCxlKXtyZXR1cm4gdih0LmVudHJpZXMsKGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdPT09ZX0pKX07Yi5wcm90b3R5cGU9e2dldDpmdW5jdGlvbih0KXt2YXIgZT1tKHRoaXMsdCk7aWYoZSlyZXR1cm4gZVsxXX0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiEhbSh0aGlzLHQpfSxzZXQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1tKHRoaXMsdCk7bj9uWzFdPWU6dGhpcy5lbnRyaWVzLnB1c2goW3QsZV0pfSxkZWxldGU6ZnVuY3Rpb24odCl7dmFyIGU9ZCh0aGlzLmVudHJpZXMsKGZ1bmN0aW9uKGUpe3JldHVybiBlWzBdPT09dH0pKTtyZXR1cm5+ZSYmdGhpcy5lbnRyaWVzLnNwbGljZShlLDEpLCEhfmV9fSx0LmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsZSxuLHMpe3ZhciBsPXQoKGZ1bmN0aW9uKHQscil7Yyh0LGwsZSkscCh0LHt0eXBlOmUsaWQ6ZysrLGZyb3plbjp2b2lkIDB9KSxudWxsIT1yJiZ1KHIsdFtzXSx0LG4pfSkpLHY9aChlKSxkPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj12KHQpLGE9byhpKGUpLCEwKTtyZXR1cm4hMD09PWE/eShyKS5zZXQoZSxuKTphW3IuaWRdPW4sdH07cmV0dXJuIHIobC5wcm90b3R5cGUse2RlbGV0ZTpmdW5jdGlvbih0KXt2YXIgZT12KHRoaXMpO2lmKCFhKHQpKXJldHVybiExO3ZhciBuPW8odCk7cmV0dXJuITA9PT1uP3koZSkuZGVsZXRlKHQpOm4mJmYobixlLmlkKSYmZGVsZXRlIG5bZS5pZF19LGhhczpmdW5jdGlvbih0KXt2YXIgZT12KHRoaXMpO2lmKCFhKHQpKXJldHVybiExO3ZhciBuPW8odCk7cmV0dXJuITA9PT1uP3koZSkuaGFzKHQpOm4mJmYobixlLmlkKX19KSxyKGwucHJvdG90eXBlLG4/e2dldDpmdW5jdGlvbih0KXt2YXIgZT12KHRoaXMpO2lmKGEodCkpe3ZhciBuPW8odCk7cmV0dXJuITA9PT1uP3koZSkuZ2V0KHQpOm4/bltlLmlkXTp2b2lkIDB9fSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZCh0aGlzLHQsZSl9fTp7YWRkOmZ1bmN0aW9uKHQpe3JldHVybiBkKHRoaXMsdCwhMCl9fSksbH19fSxyTXo3OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJaT1hiIik7cih7dGFyZ2V0OiJEYXRlIixwcm90bzohMCxmb3JjZWQ6RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmchPT1vfSx7dG9JU09TdHJpbmc6b30pfSxyTmhsOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJiK1ZUIik7cih7Z2xvYmFsOiEwLGZvcmNlZDpwYXJzZUZsb2F0IT1vfSx7cGFyc2VGbG9hdDpvfSl9LHJXMHQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJnbHJrIik7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQ9cih0aGlzKSxlPSIiO3JldHVybiB0Lmdsb2JhbCYmKGUrPSJnIiksdC5pZ25vcmVDYXNlJiYoZSs9ImkiKSx0Lm11bHRpbGluZSYmKGUrPSJtIiksdC5kb3RBbGwmJihlKz0icyIpLHQudW5pY29kZSYmKGUrPSJ1IiksdC5zdGlja3kmJihlKz0ieSIpLGV9fSxycE5rOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbyxpLGE9bigiNFdPRCIpLGM9bigiWDJVKyIpLHU9bigiVVRWUyIpLHM9bigidGlLcCIpLGY9bigieERCUiIpLGw9cygiaXRlcmF0b3IiKSxwPSExO1tdLmtleXMmJigibmV4dCJpbihpPVtdLmtleXMoKSk/KG89YShhKGkpKSkhPT1PYmplY3QucHJvdG90eXBlJiYocj1vKTpwPSEwKSxudWxsPT1yJiYocj17fSksZnx8dShyLGwpfHxjKHIsbCwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSx0LmV4cG9ydHM9e0l0ZXJhdG9yUHJvdG90eXBlOnIsQlVHR1lfU0FGQVJJX0lURVJBVE9SUzpwfX0sczVwRTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMEdiWSIpO3QuZXhwb3J0cz1yKCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiKXx8IiJ9LHNFRlg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI5ZC90Iiksbz17fTtvW24oInRpS3AiKSgidG9TdHJpbmdUYWciKV09InoiLHQuZXhwb3J0cz0iW29iamVjdCB6XSIhPT1TdHJpbmcobyk/ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCAiK3IodGhpcykrIl0ifTpvLnRvU3RyaW5nfSxzTUJPOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnNnYvIiksbz1uKCJtL0w4IikuZixpPUZ1bmN0aW9uLnByb3RvdHlwZSxhPWkudG9TdHJpbmcsYz0vXlxzKmZ1bmN0aW9uIChbXiAoXSopLzshcnx8Im5hbWUiaW4gaXx8byhpLCJuYW1lIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3RyeXtyZXR1cm4gYS5jYWxsKHRoaXMpLm1hdGNoKGMpWzFdfWNhdGNoKHQpe3JldHVybiIifX19KX0sc3dGTDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjBEa3kiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbj1bXVt0XTtyZXR1cm4hbnx8IXIoKGZ1bmN0aW9uKCl7bi5jYWxsKG51bGwsZXx8ZnVuY3Rpb24oKXt0aHJvdyAxfSwxKX0pKX19LHRXNXk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJoaDF2Iiksbz1uKCJtL0w4IiksaT1uKCI0V09EIiksYT1uKCJ0aUtwIikoImhhc0luc3RhbmNlIiksYz1GdW5jdGlvbi5wcm90b3R5cGU7YSBpbiBjfHxvLmYoYyxhLHt2YWx1ZTpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdGhpc3x8IXIodCkpcmV0dXJuITE7aWYoIXIodGhpcy5wcm90b3R5cGUpKXJldHVybiB0IGluc3RhbmNlb2YgdGhpcztmb3IoO3Q9aSh0KTspaWYodGhpcy5wcm90b3R5cGU9PT10KXJldHVybiEwO3JldHVybiExfX0pfSx0WFVnOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcixvLGksYSxjLHUscyxmLGw9bigiMm9SbyIpLHA9bigiQnM4ViIpLmYsaD1uKCJ4cllLIiksdj1uKCJMUFNTIikuc2V0LGQ9bigiczVwRSIpLGc9bC5NdXRhdGlvbk9ic2VydmVyfHxsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXIseT1sLnByb2Nlc3MsYj1sLlByb21pc2UsbT0icHJvY2VzcyI9PWgoeSksaz1wKGwsInF1ZXVlTWljcm90YXNrIiksXz1rJiZrLnZhbHVlO198fChyPWZ1bmN0aW9uKCl7dmFyIHQsZTtmb3IobSYmKHQ9eS5kb21haW4pJiZ0LmV4aXQoKTtvOyl7ZT1vLmZuLG89by5uZXh0O3RyeXtlKCl9Y2F0Y2gobil7dGhyb3cgbz9hKCk6aT12b2lkIDAsbn19aT12b2lkIDAsdCYmdC5lbnRlcigpfSxtP2E9ZnVuY3Rpb24oKXt5Lm5leHRUaWNrKHIpfTpnJiYhLyhpcGhvbmV8aXBvZHxpcGFkKS4qYXBwbGV3ZWJraXQvaS50ZXN0KGQpPyhjPSEwLHU9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpLG5ldyBnKHIpLm9ic2VydmUodSx7Y2hhcmFjdGVyRGF0YTohMH0pLGE9ZnVuY3Rpb24oKXt1LmRhdGE9Yz0hY30pOmImJmIucmVzb2x2ZT8ocz1iLnJlc29sdmUodm9pZCAwKSxmPXMudGhlbixhPWZ1bmN0aW9uKCl7Zi5jYWxsKHMscil9KTphPWZ1bmN0aW9uKCl7di5jYWxsKGwscil9KSx0LmV4cG9ydHM9X3x8ZnVuY3Rpb24odCl7dmFyIGU9e2ZuOnQsbmV4dDp2b2lkIDB9O2kmJihpLm5leHQ9ZSksb3x8KG89ZSxhKCkpLGk9ZX19LHRpS3A6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIlZwSVQiKSxpPW4oImtPT2wiKSxhPW4oIlNUQUUiKSxjPXIuU3ltYm9sLHU9bygid2tzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB1W3RdfHwodVt0XT1hJiZjW3RdfHwoYT9jOmkpKCJTeW1ib2wuIit0KSl9fSx0alpNOmZ1bmN0aW9uKHQsZSxuKXtuKCJkRy9uIikoImFzeW5jSXRlcmF0b3IiKX0sdGt0bzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiZXd2VyIpLGk9bigiMzNXaCIpO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpuKCIwRGt5IikoKGZ1bmN0aW9uKCl7aSgxKX0pKX0se2tleXM6ZnVuY3Rpb24odCl7cmV0dXJuIGkobyh0KSl9fSl9LCJ0bC91IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89TWF0aC5jZWlsLGk9TWF0aC5mbG9vcjtyKHt0YXJnZXQ6Ik1hdGgiLHN0YXQ6ITB9LHt0cnVuYzpmdW5jdGlvbih0KXtyZXR1cm4odD4wP2k6bykodCl9fSl9LHRvQWo6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJwcEdCIiksaT1uKCJRSXBkIiksYT1uKCJFVWphIiksYz1uKCIwRGt5IiksdT0xLi50b0ZpeGVkLHM9TWF0aC5mbG9vcixmPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gMD09PWU/bjplJTI9PTE/Zih0LGUtMSxuKnQpOmYodCp0LGUvMixuKX07cih7dGFyZ2V0OiJOdW1iZXIiLHByb3RvOiEwLGZvcmNlZDp1JiYoIjAuMDAwIiE9PThlLTUudG9GaXhlZCgzKXx8IjEiIT09LjkudG9GaXhlZCgwKXx8IjEuMjUiIT09MS4yNTUudG9GaXhlZCgyKXx8IjEwMDAwMDAwMDAwMDAwMDAxMjgiIT09KDB4ZGUwYjZiM2E3NjQwMDgwKS50b0ZpeGVkKDApKXx8IWMoKGZ1bmN0aW9uKCl7dS5jYWxsKHt9KX0pKX0se3RvRml4ZWQ6ZnVuY3Rpb24odCl7dmFyIGUsbixyLGMsdT1pKHRoaXMpLGw9byh0KSxwPVswLDAsMCwwLDAsMF0saD0iIix2PSIwIixkPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPS0xLHI9ZTsrK248NjspcFtuXT0ocis9dCpwW25dKSUxZTcscj1zKHIvMWU3KX0sZz1mdW5jdGlvbih0KXtmb3IodmFyIGU9NixuPTA7LS1lPj0wOylwW2VdPXMoKG4rPXBbZV0pL3QpLG49biV0KjFlN30seT1mdW5jdGlvbigpe2Zvcih2YXIgdD02LGU9IiI7LS10Pj0wOylpZigiIiE9PWV8fDA9PT10fHwwIT09cFt0XSl7dmFyIG49U3RyaW5nKHBbdF0pO2U9IiI9PT1lP246ZSthLmNhbGwoIjAiLDctbi5sZW5ndGgpK259cmV0dXJuIGV9O2lmKGw8MHx8bD4yMCl0aHJvdyBSYW5nZUVycm9yKCJJbmNvcnJlY3QgZnJhY3Rpb24gZGlnaXRzIik7aWYodSE9dSlyZXR1cm4iTmFOIjtpZih1PD0tMWUyMXx8dT49MWUyMSlyZXR1cm4gU3RyaW5nKHUpO2lmKHU8MCYmKGg9Ii0iLHU9LXUpLHU+MWUtMjEpaWYobj0oZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPXQ7bj49NDA5NjspZSs9MTIsbi89NDA5Njtmb3IoO24+PTI7KWUrPTEsbi89MjtyZXR1cm4gZX0odSpmKDIsNjksMSkpLTY5KTwwP3UqZigyLC1lLDEpOnUvZigyLGUsMSksbio9NDUwMzU5OTYyNzM3MDQ5NiwoZT01Mi1lKT4wKXtmb3IoZCgwLG4pLHI9bDtyPj03OylkKDFlNywwKSxyLT03O2ZvcihkKGYoMTAsciwxKSwwKSxyPWUtMTtyPj0yMzspZygxPDwyMyksci09MjM7ZygxPDxyKSxkKDEsMSksZygyKSx2PXkoKX1lbHNlIGQoMCxuKSxkKDE8PC1lLDApLHY9eSgpK2EuY2FsbCgiMCIsbCk7cmV0dXJuIGw+MD9oKygoYz12Lmxlbmd0aCk8PWw/IjAuIithLmNhbGwoIjAiLGwtYykrdjp2LnNsaWNlKDAsYy1sKSsiLiIrdi5zbGljZShjLWwpKTpoK3Z9fSl9LHR5Y1I6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIitNTHgiKSxvPW4oIlJLM3QiKSxpPW4oImV3dlciKSxhPW4oIlVNU1EiKSxjPW4oIlpmRHYiKSx1PVtdLnB1c2gscz1mdW5jdGlvbih0KXt2YXIgZT0xPT10LG49Mj09dCxzPTM9PXQsZj00PT10LGw9Nj09dCxwPTU9PXR8fGw7cmV0dXJuIGZ1bmN0aW9uKGgsdixkLGcpe2Zvcih2YXIgeSxiLG09aShoKSxrPW8obSksXz1yKHYsZCwzKSx3PWEoay5sZW5ndGgpLHg9MCxTPWd8fGMsRT1lP1MoaCx3KTpuP1MoaCwwKTp2b2lkIDA7dz54O3grKylpZigocHx8eCBpbiBrKSYmKGI9Xyh5PWtbeF0seCxtKSx0KSlpZihlKUVbeF09YjtlbHNlIGlmKGIpc3dpdGNoKHQpe2Nhc2UgMzpyZXR1cm4hMDtjYXNlIDU6cmV0dXJuIHk7Y2FzZSA2OnJldHVybiB4O2Nhc2UgMjp1LmNhbGwoRSx5KX1lbHNlIGlmKGYpcmV0dXJuITE7cmV0dXJuIGw/LTE6c3x8Zj9mOkV9fTt0LmV4cG9ydHM9e2ZvckVhY2g6cygwKSxtYXA6cygxKSxmaWx0ZXI6cygyKSxzb21lOnMoMyksZXZlcnk6cyg0KSxmaW5kOnMoNSksZmluZEluZGV4OnMoNil9fSx1TDhXOmZ1bmN0aW9uKHQsZSxuKXtuKCJJK2ViIikoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLHNoYW06IW4oImc2di8iKX0se2NyZWF0ZTpuKCJmSE1ZIil9KX0sdXFYYzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiNVl6KyIpO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpvIT09W10ubGFzdEluZGV4T2Z9LHtsYXN0SW5kZXhPZjpvfSl9LHV5ODM6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjBEa3kiKTt0LmV4cG9ydHM9IXIoKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5pc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSl9KSl9LHZBRnM6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPU1hdGguaW11bDtyKHt0YXJnZXQ6Ik1hdGgiLHN0YXQ6ITAsZm9yY2VkOm8oKGZ1bmN0aW9uKCl7cmV0dXJuLTUhPWkoNDI5NDk2NzI5NSw1KXx8MiE9aS5sZW5ndGh9KSl9LHtpbXVsOmZ1bmN0aW9uKHQsZSl7dmFyIG49K3Qscj0rZSxvPTY1NTM1Jm4saT02NTUzNSZyO3JldHVybiAwfG8qaSsoKDY1NTM1Jm4+Pj4xNikqaStvKig2NTUzNSZyPj4+MTYpPDwxNj4+PjApfX0pfSx2bzRWOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCI5MGhXIiksbz1NYXRoLmFicyxpPU1hdGgucG93LGE9aSgyLC01MiksYz1pKDIsLTIzKSx1PWkoMiwxMjcpKigyLWMpLHM9aSgyLC0xMjYpO3QuZXhwb3J0cz1NYXRoLmZyb3VuZHx8ZnVuY3Rpb24odCl7dmFyIGUsbixpPW8odCksZj1yKHQpO3JldHVybiBpPHM/ZiooaS9zL2MrMS9hLTEvYSkqcypjOihuPShlPSgxK2MvYSkqaSktKGUtaSkpPnV8fG4hPW4/ZiooMS8wKTpmKm59fSx3MXJaOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJiK1ZUIik7cih7dGFyZ2V0OiJOdW1iZXIiLHN0YXQ6ITAsZm9yY2VkOk51bWJlci5wYXJzZUZsb2F0IT1vfSx7cGFyc2VGbG9hdDpvfSl9LHdETG86ZnVuY3Rpb24odCxlLG4pe2UuZj1uKCJ0aUtwIil9LHdFNnY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImhoMXYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighcih0KSlyZXR1cm4gdDt2YXIgbixvO2lmKGUmJiJmdW5jdGlvbiI9PXR5cGVvZihuPXQudG9TdHJpbmcpJiYhcihvPW4uY2FsbCh0KSkpcmV0dXJuIG87aWYoImZ1bmN0aW9uIj09dHlwZW9mKG49dC52YWx1ZU9mKSYmIXIobz1uLmNhbGwodCkpKXJldHVybiBvO2lmKCFlJiYiZnVuY3Rpb24iPT10eXBlb2Yobj10LnRvU3RyaW5nKSYmIXIobz1uLmNhbGwodCkpKXJldHVybiBvO3Rocm93IFR5cGVFcnJvcigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSx3TFluOmZ1bmN0aW9uKHQsZSxuKXtuKCJJK2ViIikoe3RhcmdldDoiRnVuY3Rpb24iLHByb3RvOiEwfSx7YmluZDpuKCJCVGhvIil9KX0seDBBRzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oInR5Y1IiKS5maW5kSW5kZXgsaT1uKCJSTklzIiksYT0hMDsiZmluZEluZGV4ImluW10mJkFycmF5KDEpLmZpbmRJbmRleCgoZnVuY3Rpb24oKXthPSExfSkpLHIoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDphfSx7ZmluZEluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksaSgiZmluZEluZGV4Iil9LHg4M3c6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoImZpeGVkIil9LHtmaXhlZDpmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsInR0IiwiIiwiIil9fSl9LHhEQlI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ITF9LHhkQlo6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoIml0YWxpY3MiKX0se2l0YWxpY3M6ZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzLCJpIiwiIiwiIil9fSl9LHhyWUs6ZnVuY3Rpb24odCxlKXt2YXIgbj17fS50b1N0cmluZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG4uY2FsbCh0KS5zbGljZSg4LC0xKX19LHlRWW46ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oImhoMXYiKSxhPU9iamVjdC5pc0V4dGVuc2libGU7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOm8oKGZ1bmN0aW9uKCl7YSgxKX0pKX0se2lzRXh0ZW5zaWJsZTpmdW5jdGlvbih0KXtyZXR1cm4hIWkodCkmJighYXx8YSh0KSl9fSl9LHlXbzI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoInNtYWxsIil9LHtzbWFsbDpmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsInNtYWxsIiwiIiwiIil9fSl9LHlYVjM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJUV1FiIikuaW5kZXhPZixpPW4oInN3RkwiKSxhPVtdLmluZGV4T2YsYz0hIWEmJjEvWzFdLmluZGV4T2YoMSwtMCk8MCx1PWkoImluZGV4T2YiKTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6Y3x8dX0se2luZGV4T2Y6ZnVuY3Rpb24odCl7cmV0dXJuIGM/YS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA6byh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSx5aUczOmZ1bmN0aW9uKHQsZSxuKXtuKCJJK2ViIikoe3RhcmdldDoiTWF0aCIsc3RhdDohMH0se2xvZzFwOm4oIkhzSEEiKX0pfSx5b1JnOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJVVFZTIiksbz1uKCIvR3FVIiksaT1uKCJUV1FiIikuaW5kZXhPZixhPW4oIjBCSzIiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbixjPW8odCksdT0wLHM9W107Zm9yKG4gaW4gYykhcihhLG4pJiZyKGMsbikmJnMucHVzaChuKTtmb3IoO2UubGVuZ3RoPnU7KXIoYyxuPWVbdSsrXSkmJih+aShzLG4pfHxzLnB1c2gobikpO3JldHVybiBzfX0seXltZTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiZ2RWbCIpLGk9bigiUk5JcyIpO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwfSx7ZmlsbDpvfSksaSgiZmlsbCIpfSx6Qko0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIiksbz1uKCJoaDF2IiksaT1yLmRvY3VtZW50LGE9byhpKSYmbyhpLmNyZWF0ZUVsZW1lbnQpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gYT9pLmNyZWF0ZUVsZW1lbnQodCk6e319fSx6SEZ1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiaFhwTyIpO3Ioe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6bigiNnVuSyIpKCJib2xkIil9LHtib2xkOmZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcywiYiIsIiIsIiIpfX0pfSx6S1plOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJZTnJWIik7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOk9iamVjdC5hc3NpZ24hPT1vfSx7YXNzaWduOm99KX0semZuZDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZ2xyayIpLG89bigiaGgxdiIpLGk9bigiOEdsTCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKHIodCksbyhlKSYmZS5jb25zdHJ1Y3Rvcj09PXQpcmV0dXJuIGU7dmFyIG49aS5mKHQpO3JldHVybigwLG4ucmVzb2x2ZSkoZSksbi5wcm9taXNlfX0sems2MDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMm9SbyIpLG89bigiWDJVKyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3RyeXtvKHIsdCxlKX1jYXRjaChuKXtyW3RdPWV9cmV0dXJuIGV9fSx6dWhXOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJoaDF2IiksaT1uKCI4WU9hIikub25GcmVlemUsYT1uKCJ1eTgzIiksYz1uKCIwRGt5IiksdT1PYmplY3QucHJldmVudEV4dGVuc2lvbnM7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOmMoKGZ1bmN0aW9uKCl7dSgxKX0pKSxzaGFtOiFhfSx7cHJldmVudEV4dGVuc2lvbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHUmJm8odCk/dShpKHQpKTp0fX0pfX0sW1sxLDBdXV0pOw=="
3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ: qwe?styles.css?5?4: "base64:Iil8fGkobiwibmFtZSIsZSksbChuKS5zb3VyY2U9cC5qb2luKCJzdHJpbmciPT10eXBlb2YgZT9lOiIiKSksdCE9PXI/KHU/IWYmJnRbZV0mJihzPSEwKTpkZWxldGUgdFtlXSxzP3RbZV09bjppKHQsZSxuKSk6cz90W2VdPW46YyhlLG4pfSkoRnVuY3Rpb24ucHJvdG90eXBlLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJmYodGhpcykuc291cmNlfHx1LmNhbGwodGhpcyl9KSl9LGNEa2U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oIkJYL2IiKS5mO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpvKChmdW5jdGlvbigpe3JldHVybiFPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcygxKX0pKX0se2dldE93blByb3BlcnR5TmFtZXM6aX0pfSxjVllIOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJoaDF2Iiksbz1uKCIwcnZyIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxhO3JldHVybiBvJiYiZnVuY3Rpb24iPT10eXBlb2YoaT1lLmNvbnN0cnVjdG9yKSYmaSE9PW4mJnIoYT1pLnByb3RvdHlwZSkmJmEhPT1uLnByb3RvdHlwZSYmbyh0LGEpLHR9fSwiZEJnKyI6ZnVuY3Rpb24odCxlKXtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30sImRHL24iOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJRbzlsIiksbz1uKCJVVFZTIiksaT1uKCJ3RExvIiksYT1uKCJtL0w4IikuZjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9ci5TeW1ib2x8fChyLlN5bWJvbD17fSk7byhlLHQpfHxhKGUsdCx7dmFsdWU6aS5mKHQpfSl9fSwiZURsKyI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sZUppUjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigianJVdiIpLGk9TWF0aC5leHA7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7dGFuaDpmdW5jdGlvbih0KXt2YXIgZT1vKHQ9K3QpLG49bygtdCk7cmV0dXJuIGU9PTEvMD8xOm49PTEvMD8tMTooZS1uKS8oaSh0KStpKC10KSl9fSl9LGVhanY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPU1hdGguYXNpbmgsaT1NYXRoLmxvZyxhPU1hdGguc3FydDtyKHt0YXJnZXQ6Ik1hdGgiLHN0YXQ6ITAsZm9yY2VkOiEobyYmMS9vKDApPjApfSx7YXNpbmg6ZnVuY3Rpb24gdChlKXtyZXR1cm4gaXNGaW5pdGUoZT0rZSkmJjAhPWU/ZTwwPy10KC1lKTppKGUrYShlKmUrMSkpOmV9fSl9LGVvTDg6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oImc2di8iKTtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6IW8sc2hhbTohb30se2RlZmluZVByb3BlcnR5Om4oIm0vTDgiKS5mfSl9LGV3dlc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkhZQUYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChyKHQpKX19LGY1cDE6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIm5vR28iKSxpPXIuV2Vha01hcDt0LmV4cG9ydHM9ImZ1bmN0aW9uIj09dHlwZW9mIGkmJi9uYXRpdmUgY29kZS8udGVzdChvLmNhbGwoaSkpfSxmSE1ZOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnbHJrIiksbz1uKCJOK2cwIiksaT1uKCJlRGwrIiksYT1uKCIwQksyIiksYz1uKCJHK1J4IiksdT1uKCJ6Qko0Iikscz1uKCI5M0kwIikoIklFX1BST1RPIiksZj1mdW5jdGlvbigpe30sbD1mdW5jdGlvbigpe3ZhciB0LGU9dSgiaWZyYW1lIiksbj1pLmxlbmd0aDtmb3IoZS5zdHlsZS5kaXNwbGF5PSJub25lIixjLmFwcGVuZENoaWxkKGUpLGUuc3JjPVN0cmluZygiamF2YXNjcmlwdDoiKSwodD1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSx0LndyaXRlKCI8c2NyaXB0PmRvY3VtZW50LkY9T2JqZWN0PFwvc2NyaXB0PiIpLHQuY2xvc2UoKSxsPXQuRjtuLS07KWRlbGV0ZSBsLnByb3RvdHlwZVtpW25dXTtyZXR1cm4gbCgpfTt0LmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gbnVsbCE9PXQ/KGYucHJvdG90eXBlPXIodCksbj1uZXcgZixmLnByb3RvdHlwZT1udWxsLG5bc109dCk6bj1sKCksdm9pZCAwPT09ZT9uOm8obixlKX0sYVtzXT0hMH0sZmJDVzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oInR5Y1IiKS5maW5kLGk9bigiUk5JcyIpLGE9ITA7ImZpbmQiaW5bXSYmQXJyYXkoMSkuZmluZCgoZnVuY3Rpb24oKXthPSExfSkpLHIoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDphfSx7ZmluZDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLGkoImZpbmQiKX0sZmRBeTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIm50T1UiKSxpPW4oIjRXT0QiKSxhPW4oIjBydnIiKSxjPW4oIjFFNXoiKSx1PW4oIlgyVSsiKSxzPW4oImJ1c0UiKSxmPW4oInRpS3AiKSxsPW4oInhEQlIiKSxwPW4oIlA0eTEiKSxoPW4oInJwTmsiKSx2PWguSXRlcmF0b3JQcm90b3R5cGUsZD1oLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMsZz1mKCJpdGVyYXRvciIpLHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGYsaCxiLG0pe28obixlLGYpO3ZhciBrLF8sdyx4PWZ1bmN0aW9uKHQpe2lmKHQ9PT1oJiZJKXJldHVybiBJO2lmKCFkJiZ0IGluIE8pcmV0dXJuIE9bdF07c3dpdGNoKHQpe2Nhc2Uia2V5cyI6Y2FzZSJ2YWx1ZXMiOmNhc2UiZW50cmllcyI6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMsdCl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzKX19LFM9ZSsiIEl0ZXJhdG9yIixFPSExLE89dC5wcm90b3R5cGUsVD1PW2ddfHxPWyJAQGl0ZXJhdG9yIl18fGgmJk9baF0sST0hZCYmVHx8eChoKSxqPSJBcnJheSI9PWUmJk8uZW50cmllc3x8VDtpZihqJiYoaz1pKGouY2FsbChuZXcgdCkpLHYhPT1PYmplY3QucHJvdG90eXBlJiZrLm5leHQmJihsfHxpKGspPT09dnx8KGE/YShrLHYpOiJmdW5jdGlvbiIhPXR5cGVvZiBrW2ddJiZ1KGssZyx5KSksYyhrLFMsITAsITApLGwmJihwW1NdPXkpKSksInZhbHVlcyI9PWgmJlQmJiJ2YWx1ZXMiIT09VC5uYW1lJiYoRT0hMCxJPWZ1bmN0aW9uKCl7cmV0dXJuIFQuY2FsbCh0aGlzKX0pLGwmJiFtfHxPW2ddPT09SXx8dShPLGcsSSkscFtlXT1JLGgpaWYoXz17dmFsdWVzOngoInZhbHVlcyIpLGtleXM6Yj9JOngoImtleXMiKSxlbnRyaWVzOngoImVudHJpZXMiKX0sbSlmb3IodyBpbiBfKSFkJiYhRSYmdyBpbiBPfHxzKE8sdyxfW3ddKTtlbHNlIHIoe3RhcmdldDplLHByb3RvOiEwLGZvcmNlZDpkfHxFfSxfKTtyZXR1cm4gX319LGZ0S2c6ZnVuY3Rpb24odCxlLG4pe24oImJycDIiKSxuKCI5TFBqIiksbigick16NyIpLG4oIkRRTmEiKSxuKCI3K3pzIik7dmFyIHI9bigiUW85bCIpO3QuZXhwb3J0cz1yLkRhdGV9LCJnNnYvIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpO3QuZXhwb3J0cz0hcigoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sZ09DYjpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJyZXBsYWNlIil9LGdYSUs6ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgidG9QcmltaXRpdmUiKX0sZ2JpVDpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJ1bnNjb3BhYmxlcyIpfSxnZFZsOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZXd2VyIpLG89bigiSTh2aCIpLGk9bigiVU1TUSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9cih0aGlzKSxuPWkoZS5sZW5ndGgpLGE9YXJndW1lbnRzLmxlbmd0aCxjPW8oYT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsbiksdT1hPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxzPXZvaWQgMD09PXU/bjpvKHUsbik7cz5jOyllW2MrK109dDtyZXR1cm4gZX19LGdscms6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImhoMXYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIXIodCkpdGhyb3cgVHlwZUVycm9yKFN0cmluZyh0KSsiIGlzIG5vdCBhbiBvYmplY3QiKTtyZXR1cm4gdH19LGhCak46ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJ3RTZ2Iiksbz1uKCJtL0w4IiksaT1uKCJYR3dDIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1yKGUpO2EgaW4gdD9vLmYodCxhLGkoMCxuKSk6dFthXT1ufX0saEJ5UTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjE0U2wiKSxvPW4oImdscmsiKSxpPW4oIkhZQUYiKSxhPW4oIkVwOUkiKSxjPW4oIkZNTk0iKTtyKCJzZWFyY2giLDEsKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bZnVuY3Rpb24oZSl7dmFyIG49aSh0aGlzKSxyPW51bGw9PWU/dm9pZCAwOmVbdF07cmV0dXJuIHZvaWQgMCE9PXI/ci5jYWxsKGUsbik6bmV3IFJlZ0V4cChlKVt0XShTdHJpbmcobikpfSxmdW5jdGlvbih0KXt2YXIgcj1uKGUsdCx0aGlzKTtpZihyLmRvbmUpcmV0dXJuIHIudmFsdWU7dmFyIGk9byh0KSx1PVN0cmluZyh0aGlzKSxzPWkubGFzdEluZGV4O2EocywwKXx8KGkubGFzdEluZGV4PTApO3ZhciBmPWMoaSx1KTtyZXR1cm4gYShpLmxhc3RJbmRleCxzKXx8KGkubGFzdEluZGV4PXMpLG51bGw9PT1mPy0xOmYuaW5kZXh9XX0pKX0sImhOL2ciOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4oIjBUV3AiKX0saFhwTzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSFlBRiIpLG89LyIvZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4saSl7dmFyIGE9U3RyaW5nKHIodCkpLGM9IjwiK2U7cmV0dXJuIiIhPT1uJiYoYys9IiAiK24rJz0iJytTdHJpbmcoaSkucmVwbGFjZShvLCImcXVvdDsiKSsnIicpLGMrIj4iK2ErIjwvIitlKyI+In19LGhoMXY6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0P251bGwhPT10OiJmdW5jdGlvbiI9PXR5cGVvZiB0fX0saTZRRjpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik51bWJlciIsc3RhdDohMH0se2lzSW50ZWdlcjpuKCJYb2w4Iil9KX0saW5sQTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIlVNU1EiKSxpPW4oIldqUmIiKSxhPW4oIkhZQUYiKSxjPW4oInF4UFoiKSx1PSIiLmVuZHNXaXRoLHM9TWF0aC5taW47cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDohYygiZW5kc1dpdGgiKX0se2VuZHNXaXRoOmZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyhhKHRoaXMpKTtpKHQpO3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLHI9byhlLmxlbmd0aCksYz12b2lkIDA9PT1uP3I6cyhvKG4pLHIpLGY9U3RyaW5nKHQpO3JldHVybiB1P3UuY2FsbChlLGYsYyk6ZS5zbGljZShjLWYubGVuZ3RoLGMpPT09Zn19KX0saXFXVzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlpVZDgiKS5jaGFyQXQ7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZSsobj9yKHQsZSkubGVuZ3RoOjEpfX0sanJVdjpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguZXhwbTEscj1NYXRoLmV4cDt0LmV4cG9ydHM9IW58fG4oMTApPjIyMDI1LjQ2NTc5NDgwNjcxOHx8bigxMCk8MjIwMjUuNDY1Nzk0ODA2NzE4fHwtMmUtMTchPW4oLTJlLTE3KT9mdW5jdGlvbih0KXtyZXR1cm4gMD09KHQ9K3QpP3Q6dD4tMWUtNiYmdDwxZS02P3QrdCp0LzI6cih0KS0xfTpufSxqdDJGOmZ1bmN0aW9uKHQsZSxuKXtuKCJkRy9uIikoIm1hdGNoQWxsIil9LGtOY1U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPU1hdGgubG9nLGk9TWF0aC5MTjI7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7bG9nMjpmdW5jdGlvbih0KXtyZXR1cm4gbyh0KS9pfX0pfSxrT09sOmZ1bmN0aW9uKHQsZSl7dmFyIG49MCxyPU1hdGgucmFuZG9tKCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJTeW1ib2woIitTdHJpbmcodm9pZCAwPT09dD8iIjp0KSsiKV8iKygrK24rcikudG9TdHJpbmcoMzYpfX0sa1NrbzpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik51bWJlciIsc3RhdDohMH0se2lzTmFOOmZ1bmN0aW9uKHQpe3JldHVybiB0IT10fX0pfSxrbU1WOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbyxpPW4oInJXMHQiKSxhPVJlZ0V4cC5wcm90b3R5cGUuZXhlYyxjPVN0cmluZy5wcm90b3R5cGUucmVwbGFjZSx1PWEscz0obz0vYiovZyxhLmNhbGwocj0vYS8sImEiKSxhLmNhbGwobywiYSIpLDAhPT1yLmxhc3RJbmRleHx8MCE9PW8ubGFzdEluZGV4KSxmPXZvaWQgMCE9PS8oKT8/Ly5leGVjKCIiKVsxXTsoc3x8ZikmJih1PWZ1bmN0aW9uKHQpe3ZhciBlLG4scixvLHU9dGhpcztyZXR1cm4gZiYmKG49bmV3IFJlZ0V4cCgiXiIrdS5zb3VyY2UrIiQoPyFcXHMpIixpLmNhbGwodSkpKSxzJiYoZT11Lmxhc3RJbmRleCkscj1hLmNhbGwodSx0KSxzJiZyJiYodS5sYXN0SW5kZXg9dS5nbG9iYWw/ci5pbmRleCtyWzBdLmxlbmd0aDplKSxmJiZyJiZyLmxlbmd0aD4xJiZjLmNhbGwoclswXSxuLChmdW5jdGlvbigpe2ZvcihvPTE7bzxhcmd1bWVudHMubGVuZ3RoLTI7bysrKXZvaWQgMD09PWFyZ3VtZW50c1tvXSYmKHJbb109dm9pZCAwKX0pKSxyfSksdC5leHBvcnRzPXV9LGwyZEs6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoImZvbnRjb2xvciIpfSx7Zm9udGNvbG9yOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsImZvbnQiLCJjb2xvciIsdCl9fSl9LGxFb3U6ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgidG9TdHJpbmdUYWciKX0sbE1xNTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpLG89LyN8XC5wcm90b3R5cGVcLi8saT1mdW5jdGlvbih0LGUpe3ZhciBuPWNbYSh0KV07cmV0dXJuIG49PXN8fG4hPXUmJigiZnVuY3Rpb24iPT10eXBlb2YgZT9yKGUpOiEhZSl9LGE9aS5ub3JtYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0KS5yZXBsYWNlKG8sIi4iKS50b0xvd2VyQ2FzZSgpfSxjPWkuZGF0YT17fSx1PWkuTkFUSVZFPSJOIixzPWkuUE9MWUZJTEw9IlAiO3QuZXhwb3J0cz1pfSxsczgyOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1mdW5jdGlvbih0KXsidXNlIHN0cmljdCI7dmFyIGUsbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGk9by5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLGE9by5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixjPW8udG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiB1KHQsZSxuLHIpe3ZhciBvPU9iamVjdC5jcmVhdGUoKGUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgZD9lOmQpLnByb3RvdHlwZSksaT1uZXcgVChyfHxbXSk7cmV0dXJuIG8uX2ludm9rZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9ZjtyZXR1cm4gZnVuY3Rpb24obyxpKXtpZihyPT09cCl0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihyPT09aCl7aWYoInRocm93Ij09PW8pdGhyb3cgaTtyZXR1cm4gaigpfWZvcihuLm1ldGhvZD1vLG4uYXJnPWk7Oyl7dmFyIGE9bi5kZWxlZ2F0ZTtpZihhKXt2YXIgYz1TKGEsbik7aWYoYyl7aWYoYz09PXYpY29udGludWU7cmV0dXJuIGN9fWlmKCJuZXh0Ij09PW4ubWV0aG9kKW4uc2VudD1uLl9zZW50PW4uYXJnO2Vsc2UgaWYoInRocm93Ij09PW4ubWV0aG9kKXtpZihyPT09Zil0aHJvdyByPWgsbi5hcmc7bi5kaXNwYXRjaEV4Y2VwdGlvbihuLmFyZyl9ZWxzZSJyZXR1cm4iPT09bi5tZXRob2QmJm4uYWJydXB0KCJyZXR1cm4iLG4uYXJnKTtyPXA7dmFyIHU9cyh0LGUsbik7aWYoIm5vcm1hbCI9PT11LnR5cGUpe2lmKHI9bi5kb25lP2g6bCx1LmFyZz09PXYpY29udGludWU7cmV0dXJue3ZhbHVlOnUuYXJnLGRvbmU6bi5kb25lfX0idGhyb3ciPT09dS50eXBlJiYocj1oLG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9dS5hcmcpfX19KHQsbixpKSxvfWZ1bmN0aW9uIHModCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHIpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnJ9fX10LndyYXA9dTt2YXIgZj0ic3VzcGVuZGVkU3RhcnQiLGw9InN1c3BlbmRlZFlpZWxkIixwPSJleGVjdXRpbmciLGg9ImNvbXBsZXRlZCIsdj17fTtmdW5jdGlvbiBkKCl7fWZ1bmN0aW9uIGcoKXt9ZnVuY3Rpb24geSgpe312YXIgYj17fTtiW2ldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3ZhciBtPU9iamVjdC5nZXRQcm90b3R5cGVPZixrPW0mJm0obShJKFtdKSkpO2smJmshPT1uJiZyLmNhbGwoayxpKSYmKGI9ayk7dmFyIF89eS5wcm90b3R5cGU9ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShiKTtmdW5jdGlvbiB3KHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9fSkpfWZ1bmN0aW9uIHgodCl7dmFyIGU7dGhpcy5faW52b2tlPWZ1bmN0aW9uKG4sbyl7ZnVuY3Rpb24gaSgpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxpKXshZnVuY3Rpb24gZShuLG8saSxhKXt2YXIgYz1zKHRbbl0sdCxvKTtpZigidGhyb3ciIT09Yy50eXBlKXt2YXIgdT1jLmFyZyxmPXUudmFsdWU7cmV0dXJuIGYmJiJvYmplY3QiPT10eXBlb2YgZiYmci5jYWxsKGYsIl9fYXdhaXQiKT9Qcm9taXNlLnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtlKCJuZXh0Iix0LGksYSl9KSwoZnVuY3Rpb24odCl7ZSgidGhyb3ciLHQsaSxhKX0pKTpQcm9taXNlLnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24odCl7dS52YWx1ZT10LGkodSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGUoInRocm93Iix0LGksYSl9KSl9YShjLmFyZyl9KG4sbyxlLGkpfSkpfXJldHVybiBlPWU/ZS50aGVuKGksaSk6aSgpfX1mdW5jdGlvbiBTKHQsbil7dmFyIHI9dC5pdGVyYXRvcltuLm1ldGhvZF07aWYocj09PWUpe2lmKG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09bi5tZXRob2Qpe2lmKHQuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9ZSxTKHQsbiksInRocm93Ij09PW4ubWV0aG9kKSlyZXR1cm4gdjtuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2QiKX1yZXR1cm4gdn12YXIgbz1zKHIsdC5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PW8udHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1vLmFyZyxuLmRlbGVnYXRlPW51bGwsdjt2YXIgaT1vLmFyZztyZXR1cm4gaT9pLmRvbmU/KG5bdC5yZXN1bHROYW1lXT1pLnZhbHVlLG4ubmV4dD10Lm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz1lKSxuLmRlbGVnYXRlPW51bGwsdik6aToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCx2KX1mdW5jdGlvbiBFKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIE8odCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIFQodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChFLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIEkodCl7aWYodCl7dmFyIG49dFtpXTtpZihuKXJldHVybiBuLmNhbGwodCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQubmV4dClyZXR1cm4gdDtpZighaXNOYU4odC5sZW5ndGgpKXt2YXIgbz0tMSxhPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzx0Lmxlbmd0aDspaWYoci5jYWxsKHQsbykpcmV0dXJuIG4udmFsdWU9dFtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT1lLG4uZG9uZT0hMCxufTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0Omp9fWZ1bmN0aW9uIGooKXtyZXR1cm57dmFsdWU6ZSxkb25lOiEwfX1yZXR1cm4gZy5wcm90b3R5cGU9Xy5jb25zdHJ1Y3Rvcj15LHkuY29uc3RydWN0b3I9Zyx5W2NdPWcuZGlzcGxheU5hbWU9IkdlbmVyYXRvckZ1bmN0aW9uIix0LmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PWd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LHQubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHkpOih0Ll9fcHJvdG9fXz15LGMgaW4gdHx8KHRbY109IkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoXyksdH0sdC5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sdyh4LnByb3RvdHlwZSkseC5wcm90b3R5cGVbYV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdC5Bc3luY0l0ZXJhdG9yPXgsdC5hc3luYz1mdW5jdGlvbihlLG4scixvKXt2YXIgaT1uZXcgeCh1KGUsbixyLG8pKTtyZXR1cm4gdC5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2k6aS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmkubmV4dCgpfSkpfSx3KF8pLF9bY109IkdlbmVyYXRvciIsX1tpXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxfLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9LHQua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdCllLnB1c2gobik7cmV0dXJuIGUucmV2ZXJzZSgpLGZ1bmN0aW9uIG4oKXtmb3IoO2UubGVuZ3RoOyl7dmFyIHI9ZS5wb3AoKTtpZihyIGluIHQpcmV0dXJuIG4udmFsdWU9cixuLmRvbmU9ITEsbn1yZXR1cm4gbi5kb25lPSEwLG59fSx0LnZhbHVlcz1JLFQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpULHJlc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PWUsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9ZSx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChPKSwhdClmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPWUpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24odCl7aWYodGhpcy5kb25lKXRocm93IHQ7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIGMudHlwZT0idGhyb3ciLGMuYXJnPXQsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz1lKSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLGM9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgdT1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxzPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYodSYmcyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYodSl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighcyl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLHYpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksdn0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxPKG4pLHZ9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7TyhuKX1yZXR1cm4gb319dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbih0LG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOkkodCkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz1lKSx2fX0sdH0odC5leHBvcnRzKTt0cnl7cmVnZW5lcmF0b3JSdW50aW1lPXJ9Y2F0Y2gobyl7RnVuY3Rpb24oInIiLCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByIikocil9fSwibS9MOCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImc2di8iKSxvPW4oIkRQc3giKSxpPW4oImdscmsiKSxhPW4oIndFNnYiKSxjPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtlLmY9cj9jOmZ1bmN0aW9uKHQsZSxuKXtpZihpKHQpLGU9YShlLCEwKSxpKG4pLG8pdHJ5e3JldHVybiBjKHQsZSxuKX1jYXRjaChyKXt9aWYoImdldCJpbiBufHwic2V0ImluIG4pdGhyb3cgVHlwZUVycm9yKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCIpO3JldHVybiJ2YWx1ZSJpbiBuJiYodFtlXT1uLnZhbHVlKSx0fX0sbTkybjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZ2xyayIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixvKXt0cnl7cmV0dXJuIG8/ZShyKG4pWzBdLG5bMV0pOmUobil9Y2F0Y2goYSl7dmFyIGk9dC5yZXR1cm47dGhyb3cgdm9pZCAwIT09aSYmcihpLmNhbGwodCkpLGF9fX0sbVJINjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgibGluayIpfSx7bGluazpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLCJhIiwiaHJlZiIsdCl9fSl9LG1SSXE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbigiSDBwYiIpLG4oIndMWW4iKSxuKCJzTUJPIiksbigidFc1eSIpLG4oInVMOFciKSxuKCJlb0w4IiksbigiSFJ4VSIpLG4oIjVEbVciKSxuKCJOQkFTIiksbigidGt0byIpLG4oImNEa2UiKSxuKCIzS2dWIiksbigicjVPZyIpLG4oInp1aFciKSxuKCI0aDBZIiksbigiNUQ1byIpLG4oInlRWW4iKSxuKCJ6S1plIiksbigiS3hsZCIpLG4oIkV4b0MiKSxuKCIwN2Q3IiksbigibWE5SSIpLG4oIkozMFgiKSxuKCJwakR2IiksbigiWGUzTCIpLG4oIm9WdVgiKSxuKCIrMm9QIiksbigicERRcSIpLG4oIlRvSnkiKSxuKCJRV0JsIiksbigiMkIxUiIpLG4oIlRlUUYiKSxuKCJSZnh6IiksbigicGlNYiIpLG4oIkU5WEQiKSxuKCI5TjI5IiksbigieVhWMyIpLG4oInVxWGMiKSxuKCJxSFQrIiksbigieXltZSIpLG4oImZiQ1ciKSxuKCJ4MEFHIiksbigiNG1EbSIpLG4oIjl0Yi8iKSxuKCIyQStkIiksbigiU1lvciIpLG4oIlBLUGsiKSxuKCI5Yko3IiksbigiaW5sQSIpLG4oIkpUSmciKSxuKCJPTTlaIiksbigiTEtCeCIpLG4oIkdLVlUiKSxuKCJFNU5NIiksbigiQk5NdCIpLG4oInpIRnUiKSxuKCJ4ODN3IiksbigibDJkSyIpLG4oIkdSUEYiKSxuKCJ4ZEJaIiksbigibVJINiIpLG4oInlXbzIiKSxuKCJJeFhSIiksbigiVEZQVCIpLG4oIlprOFgiKSxuKCJSbTFTIiksbigiVXhsQyIpLG4oImhCeVEiKSxuKCJFblp5IiksbigiNGw2MyIpLG4oInJOaGwiKSxuKCI3c2JEIiksbigiNmhwbiIpLG4oImZ0S2ciKSxuKCJLdjlsIiksbigiVHNrcSIpLG4oIkVORjkiKSxuKCJZR0s0IiksbigiRlp0UCIpLG4oIjNiQloiKSxuKCI1cytuIiksbigiREVmdSIpLG4oImxzODIiKX0sbWE5STpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oIjZMV0EiKSxhPW4oImhoMXYiKSxjPW4oImV3dlciKSx1PW4oIlVNU1EiKSxzPW4oImhCak4iKSxmPW4oIlpmRHYiKSxsPW4oIkhkNWYiKSxwPW4oInRpS3AiKSgiaXNDb25jYXRTcHJlYWRhYmxlIiksaD0hbygoZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdFtwXT0hMSx0LmNvbmNhdCgpWzBdIT09dH0pKSx2PWwoImNvbmNhdCIpLGQ9ZnVuY3Rpb24odCl7aWYoIWEodCkpcmV0dXJuITE7dmFyIGU9dFtwXTtyZXR1cm4gdm9pZCAwIT09ZT8hIWU6aSh0KX07cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFofHwhdn0se2NvbmNhdDpmdW5jdGlvbih0KXt2YXIgZSxuLHIsbyxpLGE9Yyh0aGlzKSxsPWYoYSwwKSxwPTA7Zm9yKGU9LTEscj1hcmd1bWVudHMubGVuZ3RoO2U8cjtlKyspaWYoZChpPS0xPT09ZT9hOmFyZ3VtZW50c1tlXSkpe2lmKHArKG89dShpLmxlbmd0aCkpPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgVHlwZUVycm9yKCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtmb3Iobj0wO248bztuKysscCsrKW4gaW4gaSYmcyhsLHAsaVtuXSl9ZWxzZXtpZihwPj05MDA3MTk5MjU0NzQwOTkxKXRocm93IFR5cGVFcnJvcigiTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkIik7cyhsLHArKyxpKX1yZXR1cm4gbC5sZW5ndGg9cCxsfX0pfSxtclNHOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJfX2V4dGVuZHMiLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG4uZChlLCJfX2Fzc2lnbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSksbi5kKGUsIl9fcmVzdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSksbi5kKGUsIl9fZGVjb3JhdGUiLChmdW5jdGlvbigpe3JldHVybiBjfSkpLG4uZChlLCJfX3BhcmFtIiwoZnVuY3Rpb24oKXtyZXR1cm4gdX0pKSxuLmQoZSwiX19tZXRhZGF0YSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSksbi5kKGUsIl9fYXdhaXRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSksbi5kKGUsIl9fZ2VuZXJhdG9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gbH0pKSxuLmQoZSwiX19leHBvcnRTdGFyIiwoZnVuY3Rpb24oKXtyZXR1cm4gcH0pKSxuLmQoZSwiX192YWx1ZXMiLChmdW5jdGlvbigpe3JldHVybiBofSkpLG4uZChlLCJfX3JlYWQiLChmdW5jdGlvbigpe3JldHVybiB2fSkpLG4uZChlLCJfX3NwcmVhZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSksbi5kKGUsIl9fc3ByZWFkQXJyYXlzIiwoZnVuY3Rpb24oKXtyZXR1cm4gZ30pKSxuLmQoZSwiX19hd2FpdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHl9KSksbi5kKGUsIl9fYXN5bmNHZW5lcmF0b3IiLChmdW5jdGlvbigpe3JldHVybiBifSkpLG4uZChlLCJfX2FzeW5jRGVsZWdhdG9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gbX0pKSxuLmQoZSwiX19hc3luY1ZhbHVlcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGt9KSksbi5kKGUsIl9fbWFrZVRlbXBsYXRlT2JqZWN0IiwoZnVuY3Rpb24oKXtyZXR1cm4gX30pKSxuLmQoZSwiX19pbXBvcnRTdGFyIiwoZnVuY3Rpb24oKXtyZXR1cm4gd30pKSxuLmQoZSwiX19pbXBvcnREZWZhdWx0IiwoZnVuY3Rpb24oKXtyZXR1cm4geH0pKTt2YXIgcj1mdW5jdGlvbih0LGUpe3JldHVybihyPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pfSkodCxlKX07ZnVuY3Rpb24gbyh0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9cih0LGUpLHQucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX12YXIgaT1mdW5jdGlvbigpe3JldHVybihpPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPTEscj1hcmd1bWVudHMubGVuZ3RoO248cjtuKyspZm9yKHZhciBvIGluIGU9YXJndW1lbnRzW25dKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG8pJiYodFtvXT1lW29dKTtyZXR1cm4gdH0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gYSh0LGUpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiZlLmluZGV4T2Yocik8MCYmKG5bcl09dFtyXSk7aWYobnVsbCE9dCYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtvPHIubGVuZ3RoO28rKyllLmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHQscltvXSkmJihuW3Jbb11dPXRbcltvXV0pfXJldHVybiBufWZ1bmN0aW9uIGModCxlLG4scil7dmFyIG8saT1hcmd1bWVudHMubGVuZ3RoLGE9aTwzP2U6bnVsbD09PXI/cj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbik6cjtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKWE9UmVmbGVjdC5kZWNvcmF0ZSh0LGUsbixyKTtlbHNlIGZvcih2YXIgYz10Lmxlbmd0aC0xO2M+PTA7Yy0tKShvPXRbY10pJiYoYT0oaTwzP28oYSk6aT4zP28oZSxuLGEpOm8oZSxuKSl8fGEpO3JldHVybiBpPjMmJmEmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sYSksYX1mdW5jdGlvbiB1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4scil7ZShuLHIsdCl9fWZ1bmN0aW9uIHModCxlKXtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhKXJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKHQsZSl9ZnVuY3Rpb24gZih0LGUsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24obyxpKXtmdW5jdGlvbiBhKHQpe3RyeXt1KHIubmV4dCh0KSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gYyh0KXt0cnl7dShyLnRocm93KHQpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiB1KHQpe3QuZG9uZT9vKHQudmFsdWUpOm5ldyBuKChmdW5jdGlvbihlKXtlKHQudmFsdWUpfSkpLnRoZW4oYSxjKX11KChyPXIuYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KSl9ZnVuY3Rpb24gbCh0LGUpe3ZhciBuLHIsbyxpLGE9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb1swXSl0aHJvdyBvWzFdO3JldHVybiBvWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGk9e25leHQ6YygwKSx0aHJvdzpjKDEpLHJldHVybjpjKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoaVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxpO2Z1bmN0aW9uIGMoaSl7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBmdW5jdGlvbihpKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2E7KXRyeXtpZihuPTEsciYmKG89MiZpWzBdP3IucmV0dXJuOmlbMF0/ci50aHJvd3x8KChvPXIucmV0dXJuKSYmby5jYWxsKHIpLDApOnIubmV4dCkmJiEobz1vLmNhbGwocixpWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gocj0wLG8mJihpPVsyJmlbMF0sby52YWx1ZV0pLGlbMF0pe2Nhc2UgMDpjYXNlIDE6bz1pO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTppWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKysscj1pWzFdLGk9WzBdO2NvbnRpbnVlO2Nhc2UgNzppPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEobz0obz1hLnRyeXMpLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdKSYmKDY9PT1pWzBdfHwyPT09aVswXSkpe2E9MDtjb250aW51ZX1pZigzPT09aVswXSYmKCFvfHxpWzFdPm9bMF0mJmlbMV08b1szXSkpe2EubGFiZWw9aVsxXTticmVha31pZig2PT09aVswXSYmYS5sYWJlbDxvWzFdKXthLmxhYmVsPW9bMV0sbz1pO2JyZWFrfWlmKG8mJmEubGFiZWw8b1syXSl7YS5sYWJlbD1vWzJdLGEub3BzLnB1c2goaSk7YnJlYWt9b1syXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfWk9ZS5jYWxsKHQsYSl9Y2F0Y2goYyl7aT1bNixjXSxyPTB9ZmluYWxseXtuPW89MH1pZig1JmlbMF0pdGhyb3cgaVsxXTtyZXR1cm57dmFsdWU6aVswXT9pWzFdOnZvaWQgMCxkb25lOiEwfX0oW2ksY10pfX19ZnVuY3Rpb24gcCh0LGUpe2Zvcih2YXIgbiBpbiB0KWUuaGFzT3duUHJvcGVydHkobil8fChlW25dPXRbbl0pfWZ1bmN0aW9uIGgodCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdLG49MDtyZXR1cm4gZT9lLmNhbGwodCk6e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmbj49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbbisrXSxkb25lOiF0fX19fWZ1bmN0aW9uIHYodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIHQ7dmFyIHIsbyxpPW4uY2FsbCh0KSxhPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1lfHxlLS0gPjApJiYhKHI9aS5uZXh0KCkpLmRvbmU7KWEucHVzaChyLnZhbHVlKX1jYXRjaChjKXtvPXtlcnJvcjpjfX1maW5hbGx5e3RyeXtyJiYhci5kb25lJiYobj1pLnJldHVybikmJm4uY2FsbChpKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIGF9ZnVuY3Rpb24gZCgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0PXQuY29uY2F0KHYoYXJndW1lbnRzW2VdKSk7cmV0dXJuIHR9ZnVuY3Rpb24gZygpe2Zvcih2YXIgdD0wLGU9MCxuPWFyZ3VtZW50cy5sZW5ndGg7ZTxuO2UrKyl0Kz1hcmd1bWVudHNbZV0ubGVuZ3RoO3ZhciByPUFycmF5KHQpLG89MDtmb3IoZT0wO2U8bjtlKyspZm9yKHZhciBpPWFyZ3VtZW50c1tlXSxhPTAsYz1pLmxlbmd0aDthPGM7YSsrLG8rKylyW29dPWlbYV07cmV0dXJuIHJ9ZnVuY3Rpb24geSh0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHk/KHRoaXMudj10LHRoaXMpOm5ldyB5KHQpfWZ1bmN0aW9uIGIodCxlLG4pe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgcixvPW4uYXBwbHkodCxlfHxbXSksaT1bXTtyZXR1cm4gcj17fSxhKCJuZXh0IiksYSgidGhyb3ciKSxhKCJyZXR1cm4iKSxyW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxyO2Z1bmN0aW9uIGEodCl7b1t0XSYmKHJbdF09ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLHIpe2kucHVzaChbdCxlLG4scl0pPjF8fGModCxlKX0pKX0pfWZ1bmN0aW9uIGModCxlKXt0cnl7KG49b1t0XShlKSkudmFsdWUgaW5zdGFuY2VvZiB5P1Byb21pc2UucmVzb2x2ZShuLnZhbHVlLnYpLnRoZW4odSxzKTpmKGlbMF1bMl0sbil9Y2F0Y2gocil7ZihpWzBdWzNdLHIpfXZhciBufWZ1bmN0aW9uIHUodCl7YygibmV4dCIsdCl9ZnVuY3Rpb24gcyh0KXtjKCJ0aHJvdyIsdCl9ZnVuY3Rpb24gZih0LGUpe3QoZSksaS5zaGlmdCgpLGkubGVuZ3RoJiZjKGlbMF1bMF0saVswXVsxXSl9fWZ1bmN0aW9uIG0odCl7dmFyIGUsbjtyZXR1cm4gZT17fSxyKCJuZXh0IikscigidGhyb3ciLChmdW5jdGlvbih0KXt0aHJvdyB0fSkpLHIoInJldHVybiIpLGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlO2Z1bmN0aW9uIHIocixvKXtlW3JdPXRbcl0/ZnVuY3Rpb24oZSl7cmV0dXJuKG49IW4pP3t2YWx1ZTp5KHRbcl0oZSkpLGRvbmU6InJldHVybiI9PT1yfTpvP28oZSk6ZX06b319ZnVuY3Rpb24gayh0KXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIGUsbj10W1N5bWJvbC5hc3luY0l0ZXJhdG9yXTtyZXR1cm4gbj9uLmNhbGwodCk6KHQ9aCh0KSxlPXt9LHIoIm5leHQiKSxyKCJ0aHJvdyIpLHIoInJldHVybiIpLGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUpO2Z1bmN0aW9uIHIobil7ZVtuXT10W25dJiZmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7IWZ1bmN0aW9uKHQsZSxuLHIpe1Byb21pc2UucmVzb2x2ZShyKS50aGVuKChmdW5jdGlvbihlKXt0KHt2YWx1ZTplLGRvbmU6bn0pfSksZSl9KHIsbywoZT10W25dKGUpKS5kb25lLGUudmFsdWUpfSkpfX19ZnVuY3Rpb24gXyh0LGUpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHk/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInJhdyIse3ZhbHVlOmV9KTp0LnJhdz1lLHR9ZnVuY3Rpb24gdyh0KXtpZih0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIGU9e307aWYobnVsbCE9dClmb3IodmFyIG4gaW4gdClPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKTtyZXR1cm4gZS5kZWZhdWx0PXQsZX1mdW5jdGlvbiB4KHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX19LCJuL21VIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89TWF0aC5hdGFuaCxpPU1hdGgubG9nO3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMCxmb3JjZWQ6IShvJiYxL28oLTApPDApfSx7YXRhbmg6ZnVuY3Rpb24odCl7cmV0dXJuIDA9PSh0PSt0KT90OmkoKDErdCkvKDEtdCkpLzJ9fSl9LG5vR286ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlZwSVQiKTt0LmV4cG9ydHM9cigibmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZyIsRnVuY3Rpb24udG9TdHJpbmcpfSxudE9VOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigicnBOayIpLkl0ZXJhdG9yUHJvdG90eXBlLG89bigiZkhNWSIpLGk9bigiWEd3QyIpLGE9bigiMUU1eiIpLGM9bigiUDR5MSIpLHU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcz1lKyIgSXRlcmF0b3IiO3JldHVybiB0LnByb3RvdHlwZT1vKHIse25leHQ6aSgxLG4pfSksYSh0LHMsITEsITApLGNbc109dSx0fX0sb1Z1WDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIlJLM3QiKSxpPW4oIi9HcVUiKSxhPW4oInN3RkwiKSxjPVtdLmpvaW4sdT1vIT1PYmplY3Qscz1hKCJqb2luIiwiLCIpO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDp1fHxzfSx7am9pbjpmdW5jdGlvbih0KXtyZXR1cm4gYy5jYWxsKGkodGhpcyksdm9pZCAwPT09dD8iLCI6dCl9fSl9LHBEUXE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJJOHZoIiksaT1uKCJwcEdCIiksYT1uKCJVTVNRIiksYz1uKCJld3ZXIiksdT1uKCJaZkR2Iikscz1uKCJoQmpOIiksZj1uKCJIZDVmIiksbD1NYXRoLm1heCxwPU1hdGgubWluO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohZigic3BsaWNlIil9LHtzcGxpY2U6ZnVuY3Rpb24odCxlKXt2YXIgbixyLGYsaCx2LGQsZz1jKHRoaXMpLHk9YShnLmxlbmd0aCksYj1vKHQseSksbT1hcmd1bWVudHMubGVuZ3RoO2lmKDA9PT1tP249cj0wOjE9PT1tPyhuPTAscj15LWIpOihuPW0tMixyPXAobChpKGUpLDApLHktYikpLHkrbi1yPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgVHlwZUVycm9yKCJNYXhpbXVtIGFsbG93ZWQgbGVuZ3Q="
3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ: qwe?styles.css?5?3: "base64:dGlvbiIpO3JldHVybiB0fX0sSDBwYjpmdW5jdGlvbih0LGUsbil7bigibWE5SSIpLG4oIjA3ZDciKSxuKCJwTk1PIiksbigidGpaTSIpLG4oIjRCcmYiKSxuKCIzSTFSIiksbigiNytrZCIpLG4oIjBvdWciKSxuKCJLaHNTIiksbigianQyRiIpLG4oImdPQ2IiKSxuKCJhNTduIiksbigiR1h2ZCIpLG4oIkkxR3ciKSxuKCJnWElLIiksbigibEVvdSIpLG4oImdiaVQiKSxuKCJJOXhqIiksbigiREVmdSIpO3ZhciByPW4oIlFvOWwiKTt0LmV4cG9ydHM9ci5TeW1ib2x9LEhBdU06ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgVHlwZUVycm9yKFN0cmluZyh0KSsiIGlzIG5vdCBhIGZ1bmN0aW9uIik7cmV0dXJuIHR9fSxISDRvOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ0aUtwIikoIml0ZXJhdG9yIiksbz0hMTt0cnl7dmFyIGk9MCxhPXtuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ISFpKyt9fSxyZXR1cm46ZnVuY3Rpb24oKXtvPSEwfX07YVtyXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxBcnJheS5mcm9tKGEsKGZ1bmN0aW9uKCl7dGhyb3cgMn0pKX1jYXRjaChjKXt9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoIWUmJiFvKXJldHVybiExO3ZhciBuPSExO3RyeXt2YXIgaT17fTtpW3JdPWZ1bmN0aW9uKCl7cmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTpuPSEwfX19fSx0KGkpfWNhdGNoKGMpe31yZXR1cm4gbn19LEhSeFU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oImc2di8iKTtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6IW8sc2hhbTohb30se2RlZmluZVByb3BlcnRpZXM6bigiTitnMCIpfSl9LEhZQUY6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYobnVsbD09dCl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNhbGwgbWV0aG9kIG9uICIrdCk7cmV0dXJuIHR9fSxIZDVmOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIwRGt5Iiksbz1uKCJ0aUtwIikoInNwZWNpZXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIXIoKGZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJuKGUuY29uc3RydWN0b3I9e30pW29dPWZ1bmN0aW9uKCl7cmV0dXJue2ZvbzoxfX0sMSE9PWVbdF0oQm9vbGVhbikuZm9vfSkpfX0sSHNIQTpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGgubG9nO3QuZXhwb3J0cz1NYXRoLmxvZzFwfHxmdW5jdGlvbih0KXtyZXR1cm4odD0rdCk+LTFlLTgmJnQ8MWUtOD90LXQqdC8yOm4oMSt0KX19LCJJK2ViIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMm9SbyIpLG89bigiQnM4ViIpLmYsaT1uKCJYMlUrIiksYT1uKCJidXNFIiksYz1uKCJ6azYwIiksdT1uKCI2Sk5xIikscz1uKCJsTXE1Iik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG4sZixsLHAsaCx2PXQudGFyZ2V0LGQ9dC5nbG9iYWwsZz10LnN0YXQ7aWYobj1kP3I6Zz9yW3ZdfHxjKHYse30pOihyW3ZdfHx7fSkucHJvdG90eXBlKWZvcihmIGluIGUpe2lmKHA9ZVtmXSxsPXQubm9UYXJnZXRHZXQ/KGg9byhuLGYpKSYmaC52YWx1ZTpuW2ZdLCFzKGQ/Zjp2KyhnPyIuIjoiIyIpK2YsdC5mb3JjZWQpJiZ2b2lkIDAhPT1sKXtpZih0eXBlb2YgcD09dHlwZW9mIGwpY29udGludWU7dShwLGwpfSh0LnNoYW18fGwmJmwuc2hhbSkmJmkocCwic2hhbSIsITApLGEobixmLHAsdCl9fX0sSTFHdzpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJzcGxpdCIpfSxJOHZoOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJwcEdCIiksbz1NYXRoLm1heCxpPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPXIodCk7cmV0dXJuIG48MD9vKG4rZSwwKTppKG4sZSl9fSxJOXhqOmZ1bmN0aW9uKHQsZSxuKXtuKCIxRTV6IikoTWF0aCwiTWF0aCIsITApfSxJbVpOOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnbHJrIiksbz1uKCI2Vm9FIiksaT1uKCJVTVNRIiksYT1uKCIrTUx4IiksYz1uKCJOYUZXIiksdT1uKCJtOTJuIikscz1mdW5jdGlvbih0LGUpe3RoaXMuc3RvcHBlZD10LHRoaXMucmVzdWx0PWV9Oyh0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sZixsKXt2YXIgcCxoLHYsZCxnLHksYj1hKGUsbixmPzI6MSk7aWYobClwPXQ7ZWxzZXtpZigiZnVuY3Rpb24iIT10eXBlb2YoaD1jKHQpKSl0aHJvdyBUeXBlRXJyb3IoIlRhcmdldCBpcyBub3QgaXRlcmFibGUiKTtpZihvKGgpKXtmb3Iodj0wLGQ9aSh0Lmxlbmd0aCk7ZD52O3YrKylpZigoZz1mP2Iocih5PXRbdl0pWzBdLHlbMV0pOmIodFt2XSkpJiZnIGluc3RhbmNlb2YgcylyZXR1cm4gZztyZXR1cm4gbmV3IHMoITEpfXA9aC5jYWxsKHQpfWZvcig7ISh5PXAubmV4dCgpKS5kb25lOylpZigoZz11KHAsYix5LnZhbHVlLGYpKSYmZyBpbnN0YW5jZW9mIHMpcmV0dXJuIGc7cmV0dXJuIG5ldyBzKCExKX0pLnN0b3A9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBzKCEwLHQpfX0sSXhYUjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgic3RyaWtlIil9LHtzdHJpa2U6ZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzLCJzdHJpa2UiLCIiLCIiKX19KX0sSjMwWDpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6IkFycmF5IixzdGF0OiEwfSx7aXNBcnJheTpuKCI2TFdBIil9KX0sSkJ5ODpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieW9SZyIpLG89bigiZURsKyIpLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7ZS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbih0KXtyZXR1cm4gcih0LG8pfX0sSlRKZzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIldqUmIiKSxpPW4oIkhZQUYiKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOiFuKCJxeFBaIikoImluY2x1ZGVzIil9LHtpbmNsdWRlczpmdW5jdGlvbih0KXtyZXR1cm4hIX5TdHJpbmcoaSh0aGlzKSkuaW5kZXhPZihvKHQpLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0sSmV2QTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiNVlPUSIpO3Ioe3RhcmdldDoiTnVtYmVyIixzdGF0OiEwLGZvcmNlZDpOdW1iZXIucGFyc2VJbnQhPW99LHtwYXJzZUludDpvfSl9LEpmQUE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJidXNFIiksbz1uKCJnbHJrIiksaT1uKCIwRGt5IiksYT1uKCJyVzB0IiksYz1SZWdFeHAucHJvdG90eXBlLHU9Yy50b1N0cmluZzsoaSgoZnVuY3Rpb24oKXtyZXR1cm4iL2EvYiIhPXUuY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9KX0pKXx8InRvU3RyaW5nIiE9dS5uYW1lKSYmcihSZWdFeHAucHJvdG90eXBlLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7dmFyIHQ9byh0aGlzKSxlPVN0cmluZyh0LnNvdXJjZSksbj10LmZsYWdzO3JldHVybiIvIitlKyIvIitTdHJpbmcodm9pZCAwPT09biYmdCBpbnN0YW5jZW9mIFJlZ0V4cCYmISgiZmxhZ3MiaW4gYyk/YS5jYWxsKHQpOm4pfSkse3Vuc2FmZTohMH0pfSxKaVpiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMEdiWSIpLG89bigibS9MOCIpLGk9bigidGlLcCIpLGE9bigiZzZ2LyIpLGM9aSgic3BlY2llcyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1yKHQpO2EmJmUmJiFlW2NdJiYoMCxvLmYpKGUsYyx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pfX0sS2hzUzpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJtYXRjaCIpfSxLdjlsOmZ1bmN0aW9uKHQsZSxuKXtuKCJUV05zIiksbigiSmZBQSIpLG4oInJCOWoiKSxuKCJVM2Y0IiksbigiUm0xUyIpLG4oIlV4bEMiKSxuKCJoQnlRIiksbigiRW5aeSIpfSxLdkdpOmZ1bmN0aW9uKHQsZSxuKXtuKCJJK2ViIikoe3RhcmdldDoiTWF0aCIsc3RhdDohMH0se3NpZ246bigiOTBoVyIpfSl9LEt4bGQ6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITB9LHtpczpuKCJFcDlJIil9KX0sTEtCeDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIlVNU1EiKSxpPW4oIldqUmIiKSxhPW4oIkhZQUYiKSxjPW4oInF4UFoiKSx1PSIiLnN0YXJ0c1dpdGgscz1NYXRoLm1pbjtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOiFjKCJzdGFydHNXaXRoIil9LHtzdGFydHNXaXRoOmZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyhhKHRoaXMpKTtpKHQpO3ZhciBuPW8ocyhhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxlLmxlbmd0aCkpLHI9U3RyaW5nKHQpO3JldHVybiB1P3UuY2FsbChlLHIsbik6ZS5zbGljZShuLG4rci5sZW5ndGgpPT09cn19KX0sTFBTUzpmdW5jdGlvbih0LGUsbil7dmFyIHIsbyxpLGE9bigiMm9SbyIpLGM9bigiMERreSIpLHU9bigieHJZSyIpLHM9bigiK01MeCIpLGY9bigiRytSeCIpLGw9bigiekJKNCIpLHA9YS5sb2NhdGlvbixoPWEuc2V0SW1tZWRpYXRlLHY9YS5jbGVhckltbWVkaWF0ZSxkPWEucHJvY2VzcyxnPWEuTWVzc2FnZUNoYW5uZWwseT1hLkRpc3BhdGNoLGI9MCxtPXt9LGs9ZnVuY3Rpb24odCl7aWYobS5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIGU9bVt0XTtkZWxldGUgbVt0XSxlKCl9fSxfPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe2sodCl9fSx3PWZ1bmN0aW9uKHQpe2sodC5kYXRhKX0seD1mdW5jdGlvbih0KXthLnBvc3RNZXNzYWdlKHQrIiIscC5wcm90b2NvbCsiLy8iK3AuaG9zdCl9O2gmJnZ8fChoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPTE7YXJndW1lbnRzLmxlbmd0aD5uOyllLnB1c2goYXJndW1lbnRzW24rK10pO3JldHVybiBtWysrYl09ZnVuY3Rpb24oKXsoImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpGdW5jdGlvbih0KSkuYXBwbHkodm9pZCAwLGUpfSxyKGIpLGJ9LHY9ZnVuY3Rpb24odCl7ZGVsZXRlIG1bdF19LCJwcm9jZXNzIj09dShkKT9yPWZ1bmN0aW9uKHQpe2QubmV4dFRpY2soXyh0KSl9OnkmJnkubm93P3I9ZnVuY3Rpb24odCl7eS5ub3coXyh0KSl9Omc/KGk9KG89bmV3IGcpLnBvcnQyLG8ucG9ydDEub25tZXNzYWdlPXcscj1zKGkucG9zdE1lc3NhZ2UsaSwxKSk6IWEuYWRkRXZlbnRMaXN0ZW5lcnx8ImZ1bmN0aW9uIiE9dHlwZW9mIHBvc3RNZXNzYWdlfHxhLmltcG9ydFNjcmlwdHN8fGMoeCk/cj0ib25yZWFkeXN0YXRlY2hhbmdlImluIGwoInNjcmlwdCIpP2Z1bmN0aW9uKHQpe2YuYXBwZW5kQ2hpbGQobCgic2NyaXB0IikpLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2YucmVtb3ZlQ2hpbGQodGhpcyksayh0KX19OmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQoXyh0KSwwKX06KHI9eCxhLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHcsITEpKSksdC5leHBvcnRzPXtzZXQ6aCxjbGVhcjp2fX0sIk4rZzAiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnNnYvIiksbz1uKCJtL0w4IiksaT1uKCJnbHJrIiksYT1uKCIzM1doIik7dC5leHBvcnRzPXI/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24odCxlKXtpKHQpO2Zvcih2YXIgbixyPWEoZSksYz1yLmxlbmd0aCx1PTA7Yz51OylvLmYodCxuPXJbdSsrXSxlW25dKTtyZXR1cm4gdH19LE5CQVM6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oImV3dlciKSxhPW4oIjRXT0QiKSxjPW4oIjRYZXQiKTtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6bygoZnVuY3Rpb24oKXthKDEpfSkpLHNoYW06IWN9LHtnZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXtyZXR1cm4gYShpKHQpKX19KX0sTmFGVzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiOWQvdCIpLG89bigiUDR5MSIpLGk9bigidGlLcCIpKCJpdGVyYXRvciIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihudWxsIT10KXJldHVybiB0W2ldfHx0WyJAQGl0ZXJhdG9yIl18fG9bcih0KV19fSwiTmJOKyI6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJOdW1iZXIiLHN0YXQ6ITB9LHtFUFNJTE9OOk1hdGgucG93KDIsLTUyKX0pfSxPNzQxOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJoaDF2Iik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFyKHQpJiZudWxsIT09dCl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IHNldCAiK1N0cmluZyh0KSsiIGFzIGEgcHJvdG90eXBlIik7cmV0dXJuIHR9fSxPTTlaOmZ1bmN0aW9uKHQsZSxuKXtuKCJJK2ViIikoe3RhcmdldDoiU3RyaW5nIixwcm90bzohMH0se3JlcGVhdDpuKCJFVWphIil9KX0sUDR5MTpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz17fX0sUEtQazpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlpVZDgiKS5jaGFyQXQsbz1uKCJhZk84IiksaT1uKCJmZEF5IiksYT1vLnNldCxjPW8uZ2V0dGVyRm9yKCJTdHJpbmcgSXRlcmF0b3IiKTtpKFN0cmluZywiU3RyaW5nIiwoZnVuY3Rpb24odCl7YSh0aGlzLHt0eXBlOiJTdHJpbmcgSXRlcmF0b3IiLHN0cmluZzpTdHJpbmcodCksaW5kZXg6MH0pfSksKGZ1bmN0aW9uKCl7dmFyIHQsZT1jKHRoaXMpLG49ZS5zdHJpbmcsbz1lLmluZGV4O3JldHVybiBvPj1uLmxlbmd0aD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Oih0PXIobixvKSxlLmluZGV4Kz10Lmxlbmd0aCx7dmFsdWU6dCxkb25lOiExfSl9KSl9LFBxT0k6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjkwaFciKSxpPU1hdGguYWJzLGE9TWF0aC5wb3c7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7Y2JydDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0PSt0KSphKGkodCksMS8zKX19KX0sUUZjVDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89TWF0aC5oeXBvdCxpPU1hdGguYWJzLGE9TWF0aC5zcXJ0O3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMCxmb3JjZWQ6ISFvJiZvKDEvMCxOYU4pIT09MS8wfSx7aHlwb3Q6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4scixvPTAsYz0wLHU9YXJndW1lbnRzLmxlbmd0aCxzPTA7Yzx1OylzPChuPWkoYXJndW1lbnRzW2MrK10pKT8obz1vKihyPXMvbikqcisxLHM9bik6bys9bj4wPyhyPW4vcykqcjpuO3JldHVybiBzPT09MS8wPzEvMDpzKmEobyl9fSl9LFFJcGQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInhyWUsiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIm51bWJlciIhPXR5cGVvZiB0JiYiTnVtYmVyIiE9cih0KSl0aHJvdyBUeXBlRXJyb3IoIkluY29ycmVjdCBpbnZvY2F0aW9uIik7cmV0dXJuK3R9fSxRTm5wOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1NYXRoLmZsb29yLGk9TWF0aC5sb2csYT1NYXRoLkxPRzJFO3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMH0se2NsejMyOmZ1bmN0aW9uKHQpe3JldHVybih0Pj4+PTApPzMxLW8oaSh0Ky41KSphKTozMn19KX0sUVdCbDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIkY4SlIiKTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6W10uZm9yRWFjaCE9b30se2ZvckVhY2g6b30pfSxRbzlsOmZ1bmN0aW9uKHQsZSxuKXt0LmV4cG9ydHM9bigiMm9SbyIpfSxSSzN0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIwRGt5Iiksbz1uKCJ4cllLIiksaT0iIi5zcGxpdDt0LmV4cG9ydHM9cigoZnVuY3Rpb24oKXtyZXR1cm4hT2JqZWN0KCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCl9KSk/ZnVuY3Rpb24odCl7cmV0dXJuIlN0cmluZyI9PW8odCk/aS5jYWxsKHQsIiIpOk9iamVjdCh0KX06T2JqZWN0fSxSTjZjOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49ci5jb25zb2xlO24mJm4uZXJyb3ImJigxPT09YXJndW1lbnRzLmxlbmd0aD9uLmVycm9yKHQpOm4uZXJyb3IodCxlKSl9fSxSTklzOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ0aUtwIiksbz1uKCJmSE1ZIiksaT1uKCJYMlUrIiksYT1yKCJ1bnNjb3BhYmxlcyIpLGM9QXJyYXkucHJvdG90eXBlO251bGw9PWNbYV0mJmkoYyxhLG8obnVsbCkpLHQuZXhwb3J0cz1mdW5jdGlvbih0KXtjW2FdW3RdPSEwfX0sUk9kUDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiaGgxdiIpLG89bigieHJZSyIpLGk9bigidGlLcCIpKCJtYXRjaCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gcih0KSYmKHZvaWQgMCE9PShlPXRbaV0pPyEhZToiUmVnRXhwIj09byh0KSl9fSxSZnh6OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigidHljUiIpLnNvbWU7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOm4oInN3RkwiKSgic29tZSIpfSx7c29tZTpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSxSbTFTOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMTRTbCIpLG89bigiZ2xyayIpLGk9bigiVU1TUSIpLGE9bigiSFlBRiIpLGM9bigiaXFXVyIpLHU9bigiRk1OTSIpO3IoIm1hdGNoIiwxLChmdW5jdGlvbih0LGUsbil7cmV0dXJuW2Z1bmN0aW9uKGUpe3ZhciBuPWEodGhpcykscj1udWxsPT1lP3ZvaWQgMDplW3RdO3JldHVybiB2b2lkIDAhPT1yP3IuY2FsbChlLG4pOm5ldyBSZWdFeHAoZSlbdF0oU3RyaW5nKG4pKX0sZnVuY3Rpb24odCl7dmFyIHI9bihlLHQsdGhpcyk7aWYoci5kb25lKXJldHVybiByLnZhbHVlO3ZhciBhPW8odCkscz1TdHJpbmcodGhpcyk7aWYoIWEuZ2xvYmFsKXJldHVybiB1KGEscyk7dmFyIGY9YS51bmljb2RlO2EubGFzdEluZGV4PTA7Zm9yKHZhciBsLHA9W10saD0wO251bGwhPT0obD11KGEscykpOyl7dmFyIHY9U3RyaW5nKGxbMF0pO3BbaF09diwiIj09PXYmJihhLmxhc3RJbmRleD1jKHMsaShhLmxhc3RJbmRleCksZikpLGgrK31yZXR1cm4gMD09PWg/bnVsbDpwfV19KSl9LFNFQmg6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImdscmsiKSxvPW4oIkhBdU0iKSxpPW4oInRpS3AiKSgic3BlY2llcyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLGE9cih0KS5jb25zdHJ1Y3RvcjtyZXR1cm4gdm9pZCAwPT09YXx8bnVsbD09KG49cihhKVtpXSk/ZTpvKG4pfX0sU1RBRTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpO3QuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFyKChmdW5jdGlvbigpe3JldHVybiFTdHJpbmcoU3ltYm9sKCkpfSkpfSxTWW9yOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiV0tpSCIpLnRyaW07cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI0SENpIikoInRyaW0iKX0se3RyaW06ZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzKX19KX0sVEZQVDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgic3ViIil9LHtzdWI6ZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzLCJzdWIiLCIiLCIiKX19KX0sVFdOczpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZzZ2LyIpLG89bigiMm9SbyIpLGk9bigibE1xNSIpLGE9bigiY1ZZSCIpLGM9bigibS9MOCIpLmYsdT1uKCJKQnk4IikuZixzPW4oIlJPZFAiKSxmPW4oInJXMHQiKSxsPW4oImJ1c0UiKSxwPW4oIjBEa3kiKSxoPW4oIkppWmIiKSx2PW4oInRpS3AiKSgibWF0Y2giKSxkPW8uUmVnRXhwLGc9ZC5wcm90b3R5cGUseT0vYS9nLGI9L2EvZyxtPW5ldyBkKHkpIT09eTtpZihyJiZpKCJSZWdFeHAiLCFtfHxwKChmdW5jdGlvbigpe3JldHVybiBiW3ZdPSExLGQoeSkhPXl8fGQoYik9PWJ8fCIvYS9pIiE9ZCh5LCJpIil9KSkpKXtmb3IodmFyIGs9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzIGluc3RhbmNlb2YgayxyPXModCksbz12b2lkIDA9PT1lO3JldHVybiFuJiZyJiZ0LmNvbnN0cnVjdG9yPT09ayYmbz90OmEobT9uZXcgZChyJiYhbz90LnNvdXJjZTp0LGUpOmQoKHI9dCBpbnN0YW5jZW9mIGspP3Quc291cmNlOnQsciYmbz9mLmNhbGwodCk6ZSksbj90aGlzOmcsayl9LF89ZnVuY3Rpb24odCl7dCBpbiBrfHxjKGssdCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBkW3RdfSxzZXQ6ZnVuY3Rpb24oZSl7ZFt0XT1lfX0pfSx3PXUoZCkseD0wO3cubGVuZ3RoPng7KV8od1t4KytdKTtnLmNvbnN0cnVjdG9yPWssay5wcm90b3R5cGU9ZyxsKG8sIlJlZ0V4cCIsayl9aCgiUmVnRXhwIil9LFRXUWI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIi9HcVUiKSxvPW4oIlVNU1EiKSxpPW4oIkk4dmgiKSxhPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4sYSl7dmFyIGMsdT1yKGUpLHM9byh1Lmxlbmd0aCksZj1pKGEscyk7aWYodCYmbiE9bil7Zm9yKDtzPmY7KWlmKChjPXVbZisrXSkhPWMpcmV0dXJuITB9ZWxzZSBmb3IoO3M+ZjtmKyspaWYoKHR8fGYgaW4gdSkmJnVbZl09PT1uKXJldHVybiB0fHxmfHwwO3JldHVybiF0JiYtMX19O3QuZXhwb3J0cz17aW5jbHVkZXM6YSghMCksaW5kZXhPZjphKCExKX19LFRlUUY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJ0eWNSIikuZmlsdGVyO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohbigiSGQ1ZiIpKCJmaWx0ZXIiKX0se2ZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSxUZlRpOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiK01MeCIpLG89bigiZXd2VyIpLGk9bigibTkybiIpLGE9bigiNlZvRSIpLGM9bigiVU1TUSIpLHU9bigiaEJqTiIpLHM9bigiTmFGVyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxuLGYsbCxwPW8odCksaD0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOkFycmF5LHY9YXJndW1lbnRzLmxlbmd0aCxkPXY+MT9hcmd1bWVudHNbMV06dm9pZCAwLGc9dm9pZCAwIT09ZCx5PTAsYj1zKHApO2lmKGcmJihkPXIoZCx2PjI/YXJndW1lbnRzWzJdOnZvaWQgMCwyKSksbnVsbD09Ynx8aD09QXJyYXkmJmEoYikpZm9yKG49bmV3IGgoZT1jKHAubGVuZ3RoKSk7ZT55O3krKyl1KG4seSxnP2QocFt5XSx5KTpwW3ldKTtlbHNlIGZvcihsPWIuY2FsbChwKSxuPW5ldyBoOyEoZj1sLm5leHQoKSkuZG9uZTt5KyspdShuLHksZz9pKGwsZCxbZi52YWx1ZSx5XSwhMCk6Zi52YWx1ZSk7cmV0dXJuIG4ubGVuZ3RoPXksbn19LFRvSnk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJIQXVNIiksaT1uKCJld3ZXIiksYT1uKCIwRGt5IiksYz1uKCJzd0ZMIiksdT1bXS5zb3J0LHM9WzEsMiwzXSxmPWEoKGZ1bmN0aW9uKCl7cy5zb3J0KHZvaWQgMCl9KSksbD1hKChmdW5jdGlvbigpe3Muc29ydChudWxsKX0pKSxwPWMoInNvcnQiKTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6Znx8IWx8fHB9LHtzb3J0OmZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3UuY2FsbChpKHRoaXMpKTp1LmNhbGwoaSh0aGlzKSxvKHQpKX19KX0sVHNrcTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImJXRmgiKSxvPW4oIlpXYVEiKTt0LmV4cG9ydHM9cigiTWFwIiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDApfX0pLG8sITApfSxVM2Y0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnNnYvIiksbz1uKCJtL0w4IiksaT1uKCJyVzB0Iik7ciYmImciIT0vLi9nLmZsYWdzJiZvLmYoUmVnRXhwLnByb3RvdHlwZSwiZmxhZ3MiLHtjb25maWd1cmFibGU6ITAsZ2V0Oml9KX0sVU1TUTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigicHBHQiIpLG89TWF0aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/byhyKHQpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSxVVFZTOmZ1bmN0aW9uKHQsZSl7dmFyIG49e30uaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uY2FsbCh0LGUpfX0sVWVzTDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImdscmsiKSxvPW4oIndFNnYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoInN0cmluZyIhPT10JiYibnVtYmVyIiE9PXQmJiJkZWZhdWx0IiE9PXQpdGhyb3cgVHlwZUVycm9yKCJJbmNvcnJlY3QgaGludCIpO3JldHVybiBvKHIodGhpcyksIm51bWJlciIhPT10KX19LFV4bEM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIxNFNsIiksbz1uKCJnbHJrIiksaT1uKCJld3ZXIiksYT1uKCJVTVNRIiksYz1uKCJwcEdCIiksdT1uKCJIWUFGIikscz1uKCJpcVdXIiksZj1uKCJGTU5NIiksbD1NYXRoLm1heCxwPU1hdGgubWluLGg9TWF0aC5mbG9vcix2PS9cJChbJCYnYF18XGRcZD98PFtePl0qPikvZyxkPS9cJChbJCYnYF18XGRcZD8pL2c7cigicmVwbGFjZSIsMiwoZnVuY3Rpb24odCxlLG4pe3JldHVybltmdW5jdGlvbihuLHIpe3ZhciBvPXUodGhpcyksaT1udWxsPT1uP3ZvaWQgMDpuW3RdO3JldHVybiB2b2lkIDAhPT1pP2kuY2FsbChuLG8scik6ZS5jYWxsKFN0cmluZyhvKSxuLHIpfSxmdW5jdGlvbih0LGkpe3ZhciB1PW4oZSx0LHRoaXMsaSk7aWYodS5kb25lKXJldHVybiB1LnZhbHVlO3ZhciBoPW8odCksdj1TdHJpbmcodGhpcyksZD0iZnVuY3Rpb24iPT10eXBlb2YgaTtkfHwoaT1TdHJpbmcoaSkpO3ZhciBnPWguZ2xvYmFsO2lmKGcpe3ZhciB5PWgudW5pY29kZTtoLmxhc3RJbmRleD0wfWZvcih2YXIgYj1bXTs7KXt2YXIgbT1mKGgsdik7aWYobnVsbD09PW0pYnJlYWs7aWYoYi5wdXNoKG0pLCFnKWJyZWFrOyIiPT09U3RyaW5nKG1bMF0pJiYoaC5sYXN0SW5kZXg9cyh2LGEoaC5sYXN0SW5kZXgpLHkpKX1mb3IodmFyIGssXz0iIix3PTAseD0wO3g8Yi5sZW5ndGg7eCsrKXttPWJbeF07Zm9yKHZhciBTPVN0cmluZyhtWzBdKSxFPWwocChjKG0uaW5kZXgpLHYubGVuZ3RoKSwwKSxPPVtdLFQ9MTtUPG0ubGVuZ3RoO1QrKylPLnB1c2godm9pZCAwPT09KGs9bVtUXSk/azpTdHJpbmcoaykpO3ZhciBJPW0uZ3JvdXBzO2lmKGQpe3ZhciBqPVtTXS5jb25jYXQoTyxFLHYpO3ZvaWQgMCE9PUkmJmoucHVzaChJKTt2YXIgTT1TdHJpbmcoaS5hcHBseSh2b2lkIDAsaikpfWVsc2UgTT1yKFMsdixFLE8sSSxpKTtFPj13JiYoXys9di5zbGljZSh3LEUpK00sdz1FK1MubGVuZ3RoKX1yZXR1cm4gXyt2LnNsaWNlKHcpfV07ZnVuY3Rpb24gcih0LG4scixvLGEsYyl7dmFyIHU9cit0Lmxlbmd0aCxzPW8ubGVuZ3RoLGY9ZDtyZXR1cm4gdm9pZCAwIT09YSYmKGE9aShhKSxmPXYpLGUuY2FsbChjLGYsKGZ1bmN0aW9uKGUsaSl7dmFyIGM7c3dpdGNoKGkuY2hhckF0KDApKXtjYXNlIiQiOnJldHVybiIkIjtjYXNlIiYiOnJldHVybiB0O2Nhc2UiYCI6cmV0dXJuIG4uc2xpY2UoMCxyKTtjYXNlIiciOnJldHVybiBuLnNsaWNlKHUpO2Nhc2UiPCI6Yz1hW2kuc2xpY2UoMSwtMSldO2JyZWFrO2RlZmF1bHQ6dmFyIGY9K2k7aWYoMD09PWYpcmV0dXJuIGU7aWYoZj5zKXt2YXIgbD1oKGYvMTApO3JldHVybiAwPT09bD9lOmw8PXM/dm9pZCAwPT09b1tsLTFdP2kuY2hhckF0KDEpOm9bbC0xXStpLmNoYXJBdCgxKTplfWM9b1tmLTFdfXJldHVybiB2b2lkIDA9PT1jPyIiOmN9KSl9fSkpfSxVeWR5OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJIc0hBIiksaT1NYXRoLmFjb3NoLGE9TWF0aC5sb2csYz1NYXRoLnNxcnQsdT1NYXRoLkxOMjtyKHt0YXJnZXQ6Ik1hdGgiLHN0YXQ6ITAsZm9yY2VkOiFpfHw3MTAhPU1hdGguZmxvb3IoaShOdW1iZXIuTUFYX1ZBTFVFKSl8fGkoMS8wKSE9MS8wfSx7YWNvc2g6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9K3QpPDE/TmFOOnQ+OTQ5MDYyNjUuNjI0MjUxNTY/YSh0KSt1Om8odC0xK2ModC0xKSpjKHQrMSkpfX0pfSxWQzNMOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9bigiUUlwZCIpLGE9MS4udG9QcmVjaXNpb247cih7dGFyZ2V0OiJOdW1iZXIiLHByb3RvOiEwLGZvcmNlZDpvKChmdW5jdGlvbigpe3JldHVybiIxIiE9PWEuY2FsbCgxLHZvaWQgMCl9KSl8fCFvKChmdW5jdGlvbigpe2EuY2FsbCh7fSl9KSl9LHt0b1ByZWNpc2lvbjpmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD9hLmNhbGwoaSh0aGlzKSk6YS5jYWxsKGkodGhpcyksdCl9fSl9LFZwSVQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oInprNjAiKSxpPW4oInhEQlIiKSxhPXJbIl9fY29yZS1qc19zaGFyZWRfXyJdfHxvKCJfX2NvcmUtanNfc2hhcmVkX18iLHt9KTsodC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFbdF18fChhW3RdPXZvaWQgMCE9PWU/ZTp7fSl9KSgidmVyc2lvbnMiLFtdKS5wdXNoKHt2ZXJzaW9uOiIzLjIuMSIsbW9kZTppPyJwdXJlIjoiZ2xvYmFsIixjb3B5cmlnaHQ6IsKpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkifSl9LFZ1ODE6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjBHYlkiKSxvPW4oIkpCeTgiKSxpPW4oImRCZysiKSxhPW4oImdscmsiKTt0LmV4cG9ydHM9cigiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24odCl7dmFyIGU9by5mKGEodCkpLG49aS5mO3JldHVybiBuP2UuY29uY2F0KG4odCkpOmV9fSxXRHNSOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJYb2w4IiksaT1NYXRoLmFicztyKHt0YXJnZXQ6Ik51bWJlciIsc3RhdDohMH0se2lzU2FmZUludGVnZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG8odCkmJmkodCk8PTkwMDcxOTkyNTQ3NDA5OTF9fSl9LFdKa0o6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9Ilx0XG5cdlxmXHIgwqDhmoDigIDigIHigILigIPigITigIXigIbigIfigIjigInigIrigK/igZ/jgIBcdTIwMjhcdTIwMjlcdWZlZmYifSxXS2lIOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJIWUFGIiksbz0iWyIrbigiV0prSiIpKyJdIixpPVJlZ0V4cCgiXiIrbytvKyIqIiksYT1SZWdFeHAobytvKyIqJCIpLGM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPVN0cmluZyhyKGUpKTtyZXR1cm4gMSZ0JiYobj1uLnJlcGxhY2UoaSwiIikpLDImdCYmKG49bi5yZXBsYWNlKGEsIiIpKSxufX07dC5leHBvcnRzPXtzdGFydDpjKDEpLGVuZDpjKDIpLHRyaW06YygzKX19LFdqUmI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlJPZFAiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYocih0KSl0aHJvdyBUeXBlRXJyb3IoIlRoZSBtZXRob2QgZG9lc24ndCBhY2NlcHQgcmVndWxhciBleHByZXNzaW9ucyIpO3JldHVybiB0fX0sIlgyVSsiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnNnYvIiksbz1uKCJtL0w4IiksaT1uKCJYR3dDIik7dC5leHBvcnRzPXI/ZnVuY3Rpb24odCxlLG4pe3JldHVybiBvLmYodCxlLGkoMSxuKSl9OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1uLHR9fSxYR3dDOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOmV9fX0sWGUzTDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oImhCak4iKTtyKHt0YXJnZXQ6IkFycmF5IixzdGF0OiEwLGZvcmNlZDpvKChmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIShBcnJheS5vZi5jYWxsKHQpaW5zdGFuY2VvZiB0KX0pKX0se29mOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3KCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzP3RoaXM6QXJyYXkpKGUpO2U+dDspaShuLHQsYXJndW1lbnRzW3QrK10pO3JldHVybiBuLmxlbmd0aD1lLG59fSl9LFhvbDg6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImhoMXYiKSxvPU1hdGguZmxvb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiFyKHQpJiZpc0Zpbml0ZSh0KSYmbyh0KT09PXR9fSxZR0s0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYldGaCIpLG89bigiWldhUSIpO3QuZXhwb3J0cz1yKCJTZXQiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSksbyl9LFlOclY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJnNnYvIiksbz1uKCIwRGt5IiksaT1uKCIzM1doIiksYT1uKCJkQmcrIiksYz1uKCIwZWVmIiksdT1uKCJld3ZXIikscz1uKCJSSzN0IiksZj1PYmplY3QuYXNzaWduO3QuZXhwb3J0cz0hZnx8bygoZnVuY3Rpb24oKXt2YXIgdD17fSxlPXt9LG49U3ltYm9sKCk7cmV0dXJuIHRbbl09NywiYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JFYWNoKChmdW5jdGlvbih0KXtlW3RdPXR9KSksNyE9Zih7fSx0KVtuXXx8ImFiY2RlZmdoaWprbG1ub3BxcnN0IiE9aShmKHt9LGUpKS5qb2luKCIiKX0pKT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj11KHQpLG89YXJndW1lbnRzLmxlbmd0aCxmPTEsbD1hLmYscD1jLmY7bz5mOylmb3IodmFyIGgsdj1zKGFyZ3VtZW50c1tmKytdKSxkPWw/aSh2KS5jb25jYXQobCh2KSk6aSh2KSxnPWQubGVuZ3RoLHk9MDtnPnk7KWg9ZFt5KytdLHImJiFwLmNhbGwodixoKXx8KG5baF09dltoXSk7cmV0dXJuIG59OmZ9LFpPWGI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIwRGt5Iiksbz1uKCJETXQyIikuc3RhcnQsaT1NYXRoLmFicyxhPURhdGUucHJvdG90eXBlLGM9YS5nZXRUaW1lLHU9YS50b0lTT1N0cmluZzt0LmV4cG9ydHM9cigoZnVuY3Rpb24oKXtyZXR1cm4iMDM4NS0wNy0yNVQwNzowNjozOS45OTlaIiE9dS5jYWxsKG5ldyBEYXRlKC01ZTEzLTEpKX0pKXx8IXIoKGZ1bmN0aW9uKCl7dS5jYWxsKG5ldyBEYXRlKE5hTikpfSkpP2Z1bmN0aW9uKCl7aWYoIWlzRmluaXRlKGMuY2FsbCh0aGlzKSkpdGhyb3cgUmFuZ2VFcnJvcigiSW52YWxpZCB0aW1lIHZhbHVlIik7dmFyIHQ9dGhpcy5nZXRVVENGdWxsWWVhcigpLGU9dGhpcy5nZXRVVENNaWxsaXNlY29uZHMoKSxuPXQ8MD8iLSI6dD45OTk5PyIrIjoiIjtyZXR1cm4gbitvKGkodCksbj82OjQsMCkrIi0iK28odGhpcy5nZXRVVENNb250aCgpKzEsMiwwKSsiLSIrbyh0aGlzLmdldFVUQ0RhdGUoKSwyLDApKyJUIitvKHRoaXMuZ2V0VVRDSG91cnMoKSwyLDApKyI6IitvKHRoaXMuZ2V0VVRDTWludXRlcygpLDIsMCkrIjoiK28odGhpcy5nZXRVVENTZWNvbmRzKCksMiwwKSsiLiIrbyhlLDMsMCkrIloifTp1fSxaVWQ4OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJwcEdCIiksbz1uKCJIWUFGIiksaT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgaSxhLGM9U3RyaW5nKG8oZSkpLHU9cihuKSxzPWMubGVuZ3RoO3JldHVybiB1PDB8fHU+PXM/dD8iIjp2b2lkIDA6KGk9Yy5jaGFyQ29kZUF0KHUpKTw1NTI5Nnx8aT41NjMxOXx8dSsxPT09c3x8KGE9Yy5jaGFyQ29kZUF0KHUrMSkpPDU2MzIwfHxhPjU3MzQzP3Q/Yy5jaGFyQXQodSk6aTp0P2Muc2xpY2UodSx1KzIpOmEtNTYzMjArKGktNTUyOTY8PDEwKSs2NTUzNn19O3QuZXhwb3J0cz17Y29kZUF0OmkoITEpLGNoYXJBdDppKCEwKX19LFpXYVE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJtL0w4IikuZixvPW4oImZITVkiKSxpPW4oIjRzeXciKSxhPW4oIitNTHgiKSxjPW4oIkdhclUiKSx1PW4oIkltWk4iKSxzPW4oImZkQXkiKSxmPW4oIkppWmIiKSxsPW4oImc2di8iKSxwPW4oIjhZT2EiKS5mYXN0S2V5LGg9bigiYWZPOCIpLHY9aC5zZXQsZD1oLmdldHRlckZvcjt0LmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsZSxuLHMpe3ZhciBmPXQoKGZ1bmN0aW9uKHQscil7Yyh0LGYsZSksdih0LHt0eXBlOmUsaW5kZXg6byhudWxsKSxmaXJzdDp2b2lkIDAsbGFzdDp2b2lkIDAsc2l6ZTowfSksbHx8KHQuc2l6ZT0wKSxudWxsIT1yJiZ1KHIsdFtzXSx0LG4pfSkpLGg9ZChlKSxnPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixvLGk9aCh0KSxhPXkodCxlKTtyZXR1cm4gYT9hLnZhbHVlPW46KGkubGFzdD1hPXtpbmRleDpvPXAoZSwhMCksa2V5OmUsdmFsdWU6bixwcmV2aW91czpyPWkubGFzdCxuZXh0OnZvaWQgMCxyZW1vdmVkOiExfSxpLmZpcnN0fHwoaS5maXJzdD1hKSxyJiYoci5uZXh0PWEpLGw/aS5zaXplKys6dC5zaXplKyssIkYiIT09byYmKGkuaW5kZXhbb109YSkpLHR9LHk9ZnVuY3Rpb24odCxlKXt2YXIgbixyPWgodCksbz1wKGUpO2lmKCJGIiE9PW8pcmV0dXJuIHIuaW5kZXhbb107Zm9yKG49ci5maXJzdDtuO249bi5uZXh0KWlmKG4ua2V5PT1lKXJldHVybiBufTtyZXR1cm4gaShmLnByb3RvdHlwZSx7Y2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9aCh0aGlzKSxlPXQuaW5kZXgsbj10LmZpcnN0O247KW4ucmVtb3ZlZD0hMCxuLnByZXZpb3VzJiYobi5wcmV2aW91cz1uLnByZXZpb3VzLm5leHQ9dm9pZCAwKSxkZWxldGUgZVtuLmluZGV4XSxuPW4ubmV4dDt0LmZpcnN0PXQubGFzdD12b2lkIDAsbD90LnNpemU9MDp0aGlzLnNpemU9MH0sZGVsZXRlOmZ1bmN0aW9uKHQpe3ZhciBlPWgodGhpcyksbj15KHRoaXMsdCk7aWYobil7dmFyIHI9bi5uZXh0LG89bi5wcmV2aW91cztkZWxldGUgZS5pbmRleFtuLmluZGV4XSxuLnJlbW92ZWQ9ITAsbyYmKG8ubmV4dD1yKSxyJiYoci5wcmV2aW91cz1vKSxlLmZpcnN0PT1uJiYoZS5maXJzdD1yKSxlLmxhc3Q9PW4mJihlLmxhc3Q9byksbD9lLnNpemUtLTp0aGlzLnNpemUtLX1yZXR1cm4hIW59LGZvckVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49aCh0aGlzKSxyPWEodCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwzKTtlPWU/ZS5uZXh0Om4uZmlyc3Q7KWZvcihyKGUudmFsdWUsZS5rZXksdGhpcyk7ZSYmZS5yZW1vdmVkOyllPWUucHJldmlvdXN9LGhhczpmdW5jdGlvbih0KXtyZXR1cm4hIXkodGhpcyx0KX19KSxpKGYucHJvdG90eXBlLG4/e2dldDpmdW5jdGlvbih0KXt2YXIgZT15KHRoaXMsdCk7cmV0dXJuIGUmJmUudmFsdWV9LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiBnKHRoaXMsMD09PXQ/MDp0LGUpfX06e2FkZDpmdW5jdGlvbih0KXtyZXR1cm4gZyh0aGlzLHQ9MD09PXQ/MDp0LHQpfX0pLGwmJnIoZi5wcm90b3R5cGUsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaCh0aGlzKS5zaXplfX0pLGZ9LHNldFN0cm9uZzpmdW5jdGlvbih0LGUsbil7dmFyIHI9ZSsiIEl0ZXJhdG9yIixvPWQoZSksaT1kKHIpO3ModCxlLChmdW5jdGlvbih0LGUpe3YodGhpcyx7dHlwZTpyLHRhcmdldDp0LHN0YXRlOm8odCksa2luZDplLGxhc3Q6dm9pZCAwfSl9KSwoZnVuY3Rpb24oKXtmb3IodmFyIHQ9aSh0aGlzKSxlPXQua2luZCxuPXQubGFzdDtuJiZuLnJlbW92ZWQ7KW49bi5wcmV2aW91cztyZXR1cm4gdC50YXJnZXQmJih0Lmxhc3Q9bj1uP24ubmV4dDp0LnN0YXRlLmZpcnN0KT8ia2V5cyI9PWU/e3ZhbHVlOm4ua2V5LGRvbmU6ITF9OiJ2YWx1ZXMiPT1lP3t2YWx1ZTpuLnZhbHVlLGRvbmU6ITF9Ont2YWx1ZTpbbi5rZXksbi52YWx1ZV0sZG9uZTohMX06KHQudGFyZ2V0PXZvaWQgMCx7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KX0pLG4/ImVudHJpZXMiOiJ2YWx1ZXMiLCFuLCEwKSxmKGUpfX19LFpmRHY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImhoMXYiKSxvPW4oIjZMV0EiKSxpPW4oInRpS3AiKSgic3BlY2llcyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuO3JldHVybiBvKHQpJiYoImZ1bmN0aW9uIiE9dHlwZW9mKG49dC5jb25zdHJ1Y3Rvcil8fG4hPT1BcnJheSYmIW8obi5wcm90b3R5cGUpP3IobikmJm51bGw9PT0obj1uW2ldKSYmKG49dm9pZCAwKTpuPXZvaWQgMCksbmV3KHZvaWQgMD09PW4/QXJyYXk6bikoMD09PWU/MDplKX19LFprOFg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoInN1cCIpfSx7c3VwOmZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcywic3VwIiwiIiwiIil9fSl9LGE1N246ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgic2VhcmNoIil9LGE1Tks6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPU1hdGgubG9nLGk9TWF0aC5MT0cxMEU7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7bG9nMTA6ZnVuY3Rpb24odCl7cmV0dXJuIG8odCkqaX19KX0sYWZPODpmdW5jdGlvbih0LGUsbil7dmFyIHIsbyxpLGE9bigiZjVwMSIpLGM9bigiMm9SbyIpLHU9bigiaGgxdiIpLHM9bigiWDJVKyIpLGY9bigiVVRWUyIpLGw9bigiOTNJMCIpLHA9bigiMEJLMiIpO2lmKGEpe3ZhciBoPW5ldygwLGMuV2Vha01hcCksdj1oLmdldCxkPWguaGFzLGc9aC5zZXQ7cj1mdW5jdGlvbih0LGUpe3JldHVybiBnLmNhbGwoaCx0LGUpLGV9LG89ZnVuY3Rpb24odCl7cmV0dXJuIHYuY2FsbChoLHQpfHx7fX0saT1mdW5jdGlvbih0KXtyZXR1cm4gZC5jYWxsKGgsdCl9fWVsc2V7dmFyIHk9bCgic3RhdGUiKTtwW3ldPSEwLHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcyh0LHksZSksZX0sbz1mdW5jdGlvbih0KXtyZXR1cm4gZih0LHkpP3RbeV06e319LGk9ZnVuY3Rpb24odCl7cmV0dXJuIGYodCx5KX19dC5leHBvcnRzPXtzZXQ6cixnZXQ6byxoYXM6aSxlbmZvcmNlOmZ1bmN0aW9uKHQpe3JldHVybiBpKHQpP28odCk6cih0LHt9KX0sZ2V0dGVyRm9yOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbjtpZighdShlKXx8KG49byhlKSkudHlwZSE9PXQpdGhyb3cgVHlwZUVycm9yKCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrdCsiIHJlcXVpcmVkIik7cmV0dXJuIG59fX19LCJiK1ZUIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMm9SbyIpLG89bigiV0tpSCIpLnRyaW0saT1uKCJXSmtKIiksYT1yLnBhcnNlRmxvYXQsYz0xL2EoaSsiLTAiKSE9LTEvMDt0LmV4cG9ydHM9Yz9mdW5jdGlvbih0KXt2YXIgZT1vKFN0cmluZyh0KSksbj1hKGUpO3JldHVybiAwPT09biYmIi0iPT1lLmNoYXJBdCgwKT8tMDpufTphfSxiV0ZoOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMm9SbyIpLGk9bigibE1xNSIpLGE9bigiYnVzRSIpLGM9bigiOFlPYSIpLHU9bigiSW1aTiIpLHM9bigiR2FyVSIpLGY9bigiaGgxdiIpLGw9bigiMERreSIpLHA9bigiSEg0byIpLGg9bigiMUU1eiIpLHY9bigiY1ZZSCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixkLGcpe3ZhciB5PW9bdF0sYj15JiZ5LnByb3RvdHlwZSxtPXksaz1kPyJzZXQiOiJhZGQiLF89e30sdz1mdW5jdGlvbih0KXt2YXIgZT1iW3RdO2EoYix0LCJhZGQiPT10P2Z1bmN0aW9uKHQpe3JldHVybiBlLmNhbGwodGhpcywwPT09dD8wOnQpLHRoaXN9OiJkZWxldGUiPT10P2Z1bmN0aW9uKHQpe3JldHVybiEoZyYmIWYodCkpJiZlLmNhbGwodGhpcywwPT09dD8wOnQpfToiZ2V0Ij09dD9mdW5jdGlvbih0KXtyZXR1cm4gZyYmIWYodCk/dm9pZCAwOmUuY2FsbCh0aGlzLDA9PT10PzA6dCl9OiJoYXMiPT10P2Z1bmN0aW9uKHQpe3JldHVybiEoZyYmIWYodCkpJiZlLmNhbGwodGhpcywwPT09dD8wOnQpfTpmdW5jdGlvbih0LG4pe3JldHVybiBlLmNhbGwodGhpcywwPT09dD8wOnQsbiksdGhpc30pfTtpZihpKHQsImZ1bmN0aW9uIiE9dHlwZW9mIHl8fCEoZ3x8Yi5mb3JFYWNoJiYhbCgoZnVuY3Rpb24oKXsobmV3IHkpLmVudHJpZXMoKS5uZXh0KCl9KSkpKSltPW4uZ2V0Q29uc3RydWN0b3IoZSx0LGQsayksYy5SRVFVSVJFRD0hMDtlbHNlIGlmKGkodCwhMCkpe3ZhciB4PW5ldyBtLFM9eFtrXShnP3t9Oi0wLDEpIT14LEU9bCgoZnVuY3Rpb24oKXt4LmhhcygxKX0pKSxPPXAoKGZ1bmN0aW9uKHQpe25ldyB5KHQpfSkpLFQ9IWcmJmwoKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PW5ldyB5LGU9NTtlLS07KXRba10oZSxlKTtyZXR1cm4hdC5oYXMoLTApfSkpO098fCgobT1lKChmdW5jdGlvbihlLG4pe3MoZSxtLHQpO3ZhciByPXYobmV3IHksZSxtKTtyZXR1cm4gbnVsbCE9biYmdShuLHJba10scixkKSxyfSkpKS5wcm90b3R5cGU9YixiLmNvbnN0cnVjdG9yPW0pLChFfHxUKSYmKHcoImRlbGV0ZSIpLHcoImhhcyIpLGQmJncoImdldCIpKSwoVHx8UykmJncoayksZyYmYi5jbGVhciYmZGVsZXRlIGIuY2xlYXJ9cmV0dXJuIF9bdF09bSxyKHtnbG9iYWw6ITAsZm9yY2VkOm0hPXl9LF8pLGgobSx0KSxnfHxuLnNldFN0cm9uZyhtLHQsZCksbX19LGJycDI6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJEYXRlIixzdGF0OiEwfSx7bm93OmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9fSl9LGJ1c0U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIlZwSVQiKSxpPW4oIlgyVSsiKSxhPW4oIlVUVlMiKSxjPW4oInprNjAiKSx1PW4oIm5vR28iKSxzPW4oImFmTzgiKSxmPXMuZ2V0LGw9cy5lbmZvcmNlLHA9U3RyaW5nKHUpLnNwbGl0KCJ0b1N0cmluZyIpO28oImluc3BlY3RTb3VyY2UiLChmdW5jdGlvbih0KXtyZXR1cm4gdS5jYWxsKHQpfSkpLCh0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sbyl7dmFyIHU9ISFvJiYhIW8udW5zYWZlLHM9ISFvJiYhIW8uZW51bWVyYWJsZSxmPSEhbyYmISFvLm5vVGFyZ2V0R2V0OyJmdW5jdGlvbiI9PXR5cGVvZiBuJiYoInN0cmluZyIhPXR5cGVvZiBlfHxhKG4sIm5hbWU="
3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ: qwe?styles.css?5?2: "base64:cHJvbWlzZTpuLnByb21pc2UscmVhc29uOm4ucmVqZWN0aW9ufSk7ci5pbnZva2UoaSl9fSkpfX10LlByb21pc2VSZWplY3Rpb25FdmVudCYmKGVbZCgidW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXIiKV09bigidW5oYW5kbGVkcmVqZWN0aW9uIiksZVtkKCJyZWplY3Rpb25IYW5kbGVkSGFuZGxlciIpXT1uKCJyZWplY3Rpb25oYW5kbGVkIikpfSkpfSgpfSwiMGVlZiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsaT1vJiYhci5jYWxsKHsxOjJ9LDEpO2UuZj1pP2Z1bmN0aW9uKHQpe3ZhciBlPW8odGhpcyx0KTtyZXR1cm4hIWUmJmUuZW51bWVyYWJsZX06cn0sIjBvdWciOmZ1bmN0aW9uKHQsZSxuKXtuKCJkRy9uIikoIml0ZXJhdG9yIil9LCIwcnZyIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZ2xyayIpLG89bigiTzc0MSIpO3QuZXhwb3J0cz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30/ZnVuY3Rpb24oKXt2YXIgdCxlPSExLG49e307dHJ5eyh0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSwiX19wcm90b19fIikuc2V0KS5jYWxsKG4sW10pLGU9biBpbnN0YW5jZW9mIEFycmF5fWNhdGNoKGkpe31yZXR1cm4gZnVuY3Rpb24obixpKXtyZXR1cm4gcihuKSxvKGkpLGU/dC5jYWxsKG4saSk6bi5fX3Byb3RvX189aSxufX0oKTp2b2lkIDApfSwxOmZ1bmN0aW9uKHQsZSxuKXtuKCJtUklxIiksdC5leHBvcnRzPW4oImhOL2ciKX0sIjE0U2wiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiWDJVKyIpLG89bigiYnVzRSIpLGk9bigiMERreSIpLGE9bigidGlLcCIpLGM9bigia21NViIpLHU9YSgic3BlY2llcyIpLHM9IWkoKGZ1bmN0aW9uKCl7dmFyIHQ9Ly4vO3JldHVybiB0LmV4ZWM9ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdC5ncm91cHM9e2E6IjcifSx0fSwiNyIhPT0iIi5yZXBsYWNlKHQsIiQ8YT4iKX0pKSxmPSFpKChmdW5jdGlvbigpe3ZhciB0PS8oPzopLyxlPXQuZXhlYzt0LmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBuPSJhYiIuc3BsaXQodCk7cmV0dXJuIDIhPT1uLmxlbmd0aHx8ImEiIT09blswXXx8ImIiIT09blsxXX0pKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sbCl7dmFyIHA9YSh0KSxoPSFpKChmdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiBlW3BdPWZ1bmN0aW9uKCl7cmV0dXJuIDd9LDchPSIiW3RdKGUpfSkpLHY9aCYmIWkoKGZ1bmN0aW9uKCl7dmFyIGU9ITEsbj0vYS87cmV0dXJuIG4uZXhlYz1mdW5jdGlvbigpe3JldHVybiBlPSEwLG51bGx9LCJzcGxpdCI9PT10JiYobi5jb25zdHJ1Y3Rvcj17fSxuLmNvbnN0cnVjdG9yW3VdPWZ1bmN0aW9uKCl7cmV0dXJuIG59KSxuW3BdKCIiKSwhZX0pKTtpZighaHx8IXZ8fCJyZXBsYWNlIj09PXQmJiFzfHwic3BsaXQiPT09dCYmIWYpe3ZhciBkPS8uL1twXSxnPW4ocCwiIlt0XSwoZnVuY3Rpb24odCxlLG4scixvKXtyZXR1cm4gZS5leGVjPT09Yz9oJiYhbz97ZG9uZTohMCx2YWx1ZTpkLmNhbGwoZSxuLHIpfTp7ZG9uZTohMCx2YWx1ZTp0LmNhbGwobixlLHIpfTp7ZG9uZTohMX19KSkseT1nWzFdO28oU3RyaW5nLnByb3RvdHlwZSx0LGdbMF0pLG8oUmVnRXhwLnByb3RvdHlwZSxwLDI9PWU/ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5jYWxsKHQsdGhpcyxlKX06ZnVuY3Rpb24odCl7cmV0dXJuIHkuY2FsbCh0LHRoaXMpfSksbCYmcihSZWdFeHAucHJvdG90eXBlW3BdLCJzaGFtIiwhMCl9fX0sIjFFNXoiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJtL0w4IikuZixvPW4oIlVUVlMiKSxpPW4oInRpS3AiKSgidG9TdHJpbmdUYWciKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3QmJiFvKHQ9bj90OnQucHJvdG90eXBlLGkpJiZyKHQsaSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOmV9KX19LCIxWS9uIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSEF1TSIpLG89bigiZXd2VyIpLGk9bigiUkszdCIpLGE9bigiVU1TUSIpLGM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixjLHUpe3Iobik7dmFyIHM9byhlKSxmPWkocyksbD1hKHMubGVuZ3RoKSxwPXQ/bC0xOjAsaD10Py0xOjE7aWYoYzwyKWZvcig7Oyl7aWYocCBpbiBmKXt1PWZbcF0scCs9aDticmVha31pZihwKz1oLHQ/cDwwOmw8PXApdGhyb3cgVHlwZUVycm9yKCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9Zm9yKDt0P3A+PTA6bD5wO3ArPWgpcCBpbiBmJiYodT1uKHUsZltwXSxwLHMpKTtyZXR1cm4gdX19O3QuZXhwb3J0cz17bGVmdDpjKCExKSxyaWdodDpjKCEwKX19LCIyQStkIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiL0dxVSIpLGk9bigiVU1TUSIpO3Ioe3RhcmdldDoiU3RyaW5nIixzdGF0OiEwfSx7cmF3OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1vKHQucmF3KSxuPWkoZS5sZW5ndGgpLHI9YXJndW1lbnRzLmxlbmd0aCxhPVtdLGM9MDtuPmM7KWEucHVzaChTdHJpbmcoZVtjKytdKSksYzxyJiZhLnB1c2goU3RyaW5nKGFyZ3VtZW50c1tjXSkpO3JldHVybiBhLmpvaW4oIiIpfX0pfSwiMkIxUiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJ0eWNSIikubWFwO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohbigiSGQ1ZiIpKCJtYXAiKX0se21hcDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSwiMm9SbyI6ZnVuY3Rpb24odCxlKXt2YXIgbj0ib2JqZWN0IixyPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Lk1hdGg9PU1hdGgmJnR9O3QuZXhwb3J0cz1yKHR5cGVvZiBnbG9iYWxUaGlzPT1uJiZnbG9iYWxUaGlzKXx8cih0eXBlb2Ygd2luZG93PT1uJiZ3aW5kb3cpfHxyKHR5cGVvZiBzZWxmPT1uJiZzZWxmKXx8cih0eXBlb2YgZ2xvYmFsPT1uJiZnbG9iYWwpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfSwiMzNXaCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInlvUmciKSxvPW4oImVEbCsiKTt0LmV4cG9ydHM9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3JldHVybiByKHQsbyl9fSwiM0kxUiI6ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgiaGFzSW5zdGFuY2UiKX0sIjNLZ1YiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJ1eTgzIiksaT1uKCIwRGt5IiksYT1uKCJoaDF2IiksYz1uKCI4WU9hIikub25GcmVlemUsdT1PYmplY3QuZnJlZXplO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDppKChmdW5jdGlvbigpe3UoMSl9KSksc2hhbTohb30se2ZyZWV6ZTpmdW5jdGlvbih0KXtyZXR1cm4gdSYmYSh0KT91KGModCkpOnR9fSl9LCIzYkJaIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMm9SbyIpLG89bigiL2J5dCIpLGk9bigiNG1EbSIpLGE9bigiWDJVKyIpLGM9bigidGlLcCIpLHU9YygiaXRlcmF0b3IiKSxzPWMoInRvU3RyaW5nVGFnIiksZj1pLnZhbHVlcztmb3IodmFyIGwgaW4gbyl7dmFyIHA9cltsXSxoPXAmJnAucHJvdG90eXBlO2lmKGgpe2lmKGhbdV0hPT1mKXRyeXthKGgsdSxmKX1jYXRjaChkKXtoW3VdPWZ9aWYoaFtzXXx8YShoLHMsbCksb1tsXSlmb3IodmFyIHYgaW4gaSlpZihoW3ZdIT09aVt2XSl0cnl7YShoLHYsaVt2XSl9Y2F0Y2goZCl7aFt2XT1pW3ZdfX19fSwiNEJyZiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJnNnYvIiksaT1uKCIyb1JvIiksYT1uKCJVVFZTIiksYz1uKCJoaDF2IiksdT1uKCJtL0w4IikuZixzPW4oIjZKTnEiKSxmPWkuU3ltYm9sO2lmKG8mJiJmdW5jdGlvbiI9PXR5cGVvZiBmJiYoISgiZGVzY3JpcHRpb24iaW4gZi5wcm90b3R5cGUpfHx2b2lkIDAhPT1mKCkuZGVzY3JpcHRpb24pKXt2YXIgbD17fSxwPWZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDwxfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/dm9pZCAwOlN0cmluZyhhcmd1bWVudHNbMF0pLGU9dGhpcyBpbnN0YW5jZW9mIHA/bmV3IGYodCk6dm9pZCAwPT09dD9mKCk6Zih0KTtyZXR1cm4iIj09PXQmJihsW2VdPSEwKSxlfTtzKHAsZik7dmFyIGg9cC5wcm90b3R5cGU9Zi5wcm90b3R5cGU7aC5jb25zdHJ1Y3Rvcj1wO3ZhciB2PWgudG9TdHJpbmcsZD0iU3ltYm9sKHRlc3QpIj09U3RyaW5nKGYoInRlc3QiKSksZz0vXlN5bWJvbFwoKC4qKVwpW14pXSskLzt1KGgsImRlc2NyaXB0aW9uIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3ZhciB0PWModGhpcyk/dGhpcy52YWx1ZU9mKCk6dGhpcyxlPXYuY2FsbCh0KTtpZihhKGwsdCkpcmV0dXJuIiI7dmFyIG49ZD9lLnNsaWNlKDcsLTEpOmUucmVwbGFjZShnLCIkMSIpO3JldHVybiIiPT09bj92b2lkIDA6bn19KSxyKHtnbG9iYWw6ITAsZm9yY2VkOiEwfSx7U3ltYm9sOnB9KX19LCI0SENpIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpLG89bigiV0prSiIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcigoZnVuY3Rpb24oKXtyZXR1cm4hIW9bdF0oKXx8IuKAi8KF4aCOIiE9IuKAi8KF4aCOIlt0XSgpfHxvW3RdLm5hbWUhPT10fSkpfX0sIjRXT0QiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJVVFZTIiksbz1uKCJld3ZXIiksaT1uKCI5M0kwIiksYT1uKCI0WGV0IiksYz1pKCJJRV9QUk9UTyIpLHU9T2JqZWN0LnByb3RvdHlwZTt0LmV4cG9ydHM9YT9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9byh0KSxyKHQsYyk/dFtjXToiZnVuY3Rpb24iPT10eXBlb2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD91Om51bGx9fSwiNFhldCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjBEa3kiKTt0LmV4cG9ydHM9IXIoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY29uc3RydWN0b3I9bnVsbCxPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IHQpIT09dC5wcm90b3R5cGV9KSl9LCI0aDBZIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9bigiaGgxdiIpLGE9T2JqZWN0LmlzRnJvemVuO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpvKChmdW5jdGlvbigpe2EoMSl9KSl9LHtpc0Zyb3plbjpmdW5jdGlvbih0KXtyZXR1cm4haSh0KXx8ISFhJiZhKHQpfX0pfSwiNGw2MyI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjVZT1EiKTtyKHtnbG9iYWw6ITAsZm9yY2VkOnBhcnNlSW50IT1vfSx7cGFyc2VJbnQ6b30pfSwiNG1EbSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIvR3FVIiksbz1uKCJSTklzIiksaT1uKCJQNHkxIiksYT1uKCJhZk84IiksYz1uKCJmZEF5IiksdT1hLnNldCxzPWEuZ2V0dGVyRm9yKCJBcnJheSBJdGVyYXRvciIpO3QuZXhwb3J0cz1jKEFycmF5LCJBcnJheSIsKGZ1bmN0aW9uKHQsZSl7dSh0aGlzLHt0eXBlOiJBcnJheSBJdGVyYXRvciIsdGFyZ2V0OnIodCksaW5kZXg6MCxraW5kOmV9KX0pLChmdW5jdGlvbigpe3ZhciB0PXModGhpcyksZT10LnRhcmdldCxuPXQua2luZCxyPXQuaW5kZXgrKztyZXR1cm4hZXx8cj49ZS5sZW5ndGg/KHQudGFyZ2V0PXZvaWQgMCx7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KToia2V5cyI9PW4/e3ZhbHVlOnIsZG9uZTohMX06InZhbHVlcyI9PW4/e3ZhbHVlOmVbcl0sZG9uZTohMX06e3ZhbHVlOltyLGVbcl1dLGRvbmU6ITF9fSksInZhbHVlcyIpLGkuQXJndW1lbnRzPWkuQXJyYXksbygia2V5cyIpLG8oInZhbHVlcyIpLG8oImVudHJpZXMiKX0sIjRvVS8iOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIikuaXNGaW5pdGU7dC5leHBvcnRzPU51bWJlci5pc0Zpbml0ZXx8ZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZyKHQpfX0sIjRzeXciOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJidXNFIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIG8gaW4gZSlyKHQsbyxlW29dLG4pO3JldHVybiB0fX0sIjVENW8iOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCIwRGt5IiksaT1uKCJoaDF2IiksYT1PYmplY3QuaXNTZWFsZWQ7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOm8oKGZ1bmN0aW9uKCl7YSgxKX0pKX0se2lzU2VhbGVkOmZ1bmN0aW9uKHQpe3JldHVybiFpKHQpfHwhIWEmJmEodCl9fSl9LCI1RG1XIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9bigiL0dxVSIpLGE9bigiQnM4ViIpLmYsYz1uKCJnNnYvIiksdT1vKChmdW5jdGlvbigpe2EoMSl9KSk7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFjfHx1LHNoYW06IWN9LHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYShpKHQpLGUpfX0pfSwiNVlPUSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIldLaUgiKS50cmltLGk9bigiV0prSiIpLGE9ci5wYXJzZUludCxjPS9eWystXT8wW1h4XS8sdT04IT09YShpKyIwOCIpfHwyMiE9PWEoaSsiMHgxNiIpO3QuZXhwb3J0cz11P2Z1bmN0aW9uKHQsZSl7dmFyIG49byhTdHJpbmcodCkpO3JldHVybiBhKG4sZT4+PjB8fChjLnRlc3Qobik/MTY6MTApKX06YX0sIjVZeisiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiL0dxVSIpLG89bigicHBHQiIpLGk9bigiVU1TUSIpLGE9bigic3dGTCIpLGM9TWF0aC5taW4sdT1bXS5sYXN0SW5kZXhPZixzPSEhdSYmMS9bMV0ubGFzdEluZGV4T2YoMSwtMCk8MCxmPWEoImxhc3RJbmRleE9mIik7dC5leHBvcnRzPXN8fGY/ZnVuY3Rpb24odCl7aWYocylyZXR1cm4gdS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA7dmFyIGU9cih0aGlzKSxuPWkoZS5sZW5ndGgpLGE9bi0xO2Zvcihhcmd1bWVudHMubGVuZ3RoPjEmJihhPWMoYSxvKGFyZ3VtZW50c1sxXSkpKSxhPDAmJihhPW4rYSk7YT49MDthLS0paWYoYSBpbiBlJiZlW2FdPT09dClyZXR1cm4gYXx8MDtyZXR1cm4tMX06dX0sIjVtZHUiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm57ZXJyb3I6ITEsdmFsdWU6dCgpfX1jYXRjaChlKXtyZXR1cm57ZXJyb3I6ITAsdmFsdWU6ZX19fX0sIjVzK24iOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbyxpLGEsYz1uKCJJK2ViIiksdT1uKCJ4REJSIikscz1uKCIyb1JvIiksZj1uKCJRbzlsIiksbD1uKCIvcW1uIikscD1uKCJidXNFIiksaD1uKCI0c3l3Iiksdj1uKCIxRTV6IiksZD1uKCJKaVpiIiksZz1uKCJoaDF2IikseT1uKCJIQXVNIiksYj1uKCJHYXJVIiksbT1uKCJ4cllLIiksaz1uKCJJbVpOIiksXz1uKCJISDRvIiksdz1uKCJTRUJoIikseD1uKCJMUFNTIikuc2V0LFM9bigidFhVZyIpLEU9bigiemZuZCIpLE89bigiUk42YyIpLFQ9bigiOEdsTCIpLEk9bigiNW1kdSIpLGo9bigiczVwRSIpLE09bigiYWZPOCIpLFA9bigibE1xNSIpLEQ9bigidGlLcCIpKCJzcGVjaWVzIiksUj1NLmdldCxOPU0uc2V0LEE9TS5nZXR0ZXJGb3IoIlByb21pc2UiKSxMPWwsRj1zLlR5cGVFcnJvcix6PXMuZG9jdW1lbnQsWj1zLnByb2Nlc3MsQz1zLmZldGNoLFc9WiYmWi52ZXJzaW9ucyxHPVcmJlcudjh8fCIiLFU9VC5mLEg9VSxCPSJwcm9jZXNzIj09bShaKSxLPSEhKHomJnouY3JlYXRlRXZlbnQmJnMuZGlzcGF0Y2hFdmVudCksVj1QKCJQcm9taXNlIiwoZnVuY3Rpb24oKXt2YXIgdD1MLnJlc29sdmUoMSksZT1mdW5jdGlvbigpe30sbj0odC5jb25zdHJ1Y3Rvcj17fSlbRF09ZnVuY3Rpb24odCl7dChlLGUpfTtyZXR1cm4hKChCfHwiZnVuY3Rpb24iPT10eXBlb2YgUHJvbWlzZVJlamVjdGlvbkV2ZW50KSYmKCF1fHx0LmZpbmFsbHkpJiZ0LnRoZW4oZSlpbnN0YW5jZW9mIG4mJjAhPT1HLmluZGV4T2YoIjYuNiIpJiYtMT09PWouaW5kZXhPZigiQ2hyb21lLzY2IikpfSkpLFg9Vnx8IV8oKGZ1bmN0aW9uKHQpe0wuYWxsKHQpLmNhdGNoKChmdW5jdGlvbigpe30pKX0pKSxZPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiEoIWcodCl8fCJmdW5jdGlvbiIhPXR5cGVvZihlPXQudGhlbikpJiZlfSxxPWZ1bmN0aW9uKHQsZSxuKXtpZighZS5ub3RpZmllZCl7ZS5ub3RpZmllZD0hMDt2YXIgcj1lLnJlYWN0aW9ucztTKChmdW5jdGlvbigpe2Zvcih2YXIgbz1lLnZhbHVlLGk9MT09ZS5zdGF0ZSxhPTA7ci5sZW5ndGg+YTspe3ZhciBjLHUscyxmPXJbYSsrXSxsPWk/Zi5vazpmLmZhaWwscD1mLnJlc29sdmUsaD1mLnJlamVjdCx2PWYuZG9tYWluO3RyeXtsPyhpfHwoMj09PWUucmVqZWN0aW9uJiZ0dCh0LGUpLGUucmVqZWN0aW9uPTEpLCEwPT09bD9jPW86KHYmJnYuZW50ZXIoKSxjPWwobyksdiYmKHYuZXhpdCgpLHM9ITApKSxjPT09Zi5wcm9taXNlP2goRigiUHJvbWlzZS1jaGFpbiBjeWNsZSIpKToodT1ZKGMpKT91LmNhbGwoYyxwLGgpOnAoYykpOmgobyl9Y2F0Y2goZCl7diYmIXMmJnYuZXhpdCgpLGgoZCl9fWUucmVhY3Rpb25zPVtdLGUubm90aWZpZWQ9ITEsbiYmIWUucmVqZWN0aW9uJiZKKHQsZSl9KSl9fSxRPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixvO0s/KChyPXouY3JlYXRlRXZlbnQoIkV2ZW50IikpLnByb21pc2U9ZSxyLnJlYXNvbj1uLHIuaW5pdEV2ZW50KHQsITEsITApLHMuZGlzcGF0Y2hFdmVudChyKSk6cj17cHJvbWlzZTplLHJlYXNvbjpufSwobz1zWyJvbiIrdF0pP28ocik6InVuaGFuZGxlZHJlamVjdGlvbiI9PT10JiZPKCJVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24iLG4pfSxKPWZ1bmN0aW9uKHQsZSl7eC5jYWxsKHMsKGZ1bmN0aW9uKCl7dmFyIG4scj1lLnZhbHVlO2lmKCQoZSkmJihuPUkoKGZ1bmN0aW9uKCl7Qj9aLmVtaXQoInVuaGFuZGxlZFJlamVjdGlvbiIscix0KTpRKCJ1bmhhbmRsZWRyZWplY3Rpb24iLHQscil9KSksZS5yZWplY3Rpb249Qnx8JChlKT8yOjEsbi5lcnJvcikpdGhyb3cgbi52YWx1ZX0pKX0sJD1mdW5jdGlvbih0KXtyZXR1cm4gMSE9PXQucmVqZWN0aW9uJiYhdC5wYXJlbnR9LHR0PWZ1bmN0aW9uKHQsZSl7eC5jYWxsKHMsKGZ1bmN0aW9uKCl7Qj9aLmVtaXQoInJlamVjdGlvbkhhbmRsZWQiLHQpOlEoInJlamVjdGlvbmhhbmRsZWQiLHQsZS52YWx1ZSl9KSl9LGV0PWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiBmdW5jdGlvbihvKXt0KGUsbixvLHIpfX0sbnQ9ZnVuY3Rpb24odCxlLG4scil7ZS5kb25lfHwoZS5kb25lPSEwLHImJihlPXIpLGUudmFsdWU9bixlLnN0YXRlPTIscSh0LGUsITApKX0scnQ9ZnVuY3Rpb24odCxlLG4scil7aWYoIWUuZG9uZSl7ZS5kb25lPSEwLHImJihlPXIpO3RyeXtpZih0PT09bil0aHJvdyBGKCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZiIpO3ZhciBvPVkobik7bz9TKChmdW5jdGlvbigpe3ZhciByPXtkb25lOiExfTt0cnl7by5jYWxsKG4sZXQocnQsdCxyLGUpLGV0KG50LHQscixlKSl9Y2F0Y2goaSl7bnQodCxyLGksZSl9fSkpOihlLnZhbHVlPW4sZS5zdGF0ZT0xLHEodCxlLCExKSl9Y2F0Y2goaSl7bnQodCx7ZG9uZTohMX0saSxlKX19fTtWJiYoTD1mdW5jdGlvbih0KXtiKHRoaXMsTCwiUHJvbWlzZSIpLHkodCksci5jYWxsKHRoaXMpO3ZhciBlPVIodGhpcyk7dHJ5e3QoZXQocnQsdGhpcyxlKSxldChudCx0aGlzLGUpKX1jYXRjaChuKXtudCh0aGlzLGUsbil9fSwocj1mdW5jdGlvbih0KXtOKHRoaXMse3R5cGU6IlByb21pc2UiLGRvbmU6ITEsbm90aWZpZWQ6ITEscGFyZW50OiExLHJlYWN0aW9uczpbXSxyZWplY3Rpb246ITEsc3RhdGU6MCx2YWx1ZTp2b2lkIDB9KX0pLnByb3RvdHlwZT1oKEwucHJvdG90eXBlLHt0aGVuOmZ1bmN0aW9uKHQsZSl7dmFyIG49QSh0aGlzKSxyPVUodyh0aGlzLEwpKTtyZXR1cm4gci5vaz0iZnVuY3Rpb24iIT10eXBlb2YgdHx8dCxyLmZhaWw9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUsci5kb21haW49Qj9aLmRvbWFpbjp2b2lkIDAsbi5wYXJlbnQ9ITAsbi5yZWFjdGlvbnMucHVzaChyKSwwIT1uLnN0YXRlJiZxKHRoaXMsbiwhMSksci5wcm9taXNlfSxjYXRjaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCx0KX19KSxvPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHIsZT1SKHQpO3RoaXMucHJvbWlzZT10LHRoaXMucmVzb2x2ZT1ldChydCx0LGUpLHRoaXMucmVqZWN0PWV0KG50LHQsZSl9LFQuZj1VPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09THx8dD09PWk/bmV3IG8odCk6SCh0KX0sdXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGx8fChhPWwucHJvdG90eXBlLnRoZW4scChsLnByb3RvdHlwZSwidGhlbiIsKGZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gbmV3IEwoKGZ1bmN0aW9uKHQsZSl7YS5jYWxsKG4sdCxlKX0pKS50aGVuKHQsZSl9KSksImZ1bmN0aW9uIj09dHlwZW9mIEMmJmMoe2dsb2JhbDohMCxlbnVtZXJhYmxlOiEwLGZvcmNlZDohMH0se2ZldGNoOmZ1bmN0aW9uKHQpe3JldHVybiBFKEwsQy5hcHBseShzLGFyZ3VtZW50cykpfX0pKSksYyh7Z2xvYmFsOiEwLHdyYXA6ITAsZm9yY2VkOlZ9LHtQcm9taXNlOkx9KSx2KEwsIlByb21pc2UiLCExLCEwKSxkKCJQcm9taXNlIiksaT1mLlByb21pc2UsYyh7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwLGZvcmNlZDpWfSx7cmVqZWN0OmZ1bmN0aW9uKHQpe3ZhciBlPVUodGhpcyk7cmV0dXJuIGUucmVqZWN0LmNhbGwodm9pZCAwLHQpLGUucHJvbWlzZX19KSxjKHt0YXJnZXQ6IlByb21pc2UiLHN0YXQ6ITAsZm9yY2VkOnV8fFZ9LHtyZXNvbHZlOmZ1bmN0aW9uKHQpe3JldHVybiBFKHUmJnRoaXM9PT1pP0w6dGhpcyx0KX19KSxjKHt0YXJnZXQ6IlByb21pc2UiLHN0YXQ6ITAsZm9yY2VkOlh9LHthbGw6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVUoZSkscj1uLnJlc29sdmUsbz1uLnJlamVjdCxpPUkoKGZ1bmN0aW9uKCl7dmFyIG49eShlLnJlc29sdmUpLGk9W10sYT0wLGM9MTtrKHQsKGZ1bmN0aW9uKHQpe3ZhciB1PWErKyxzPSExO2kucHVzaCh2b2lkIDApLGMrKyxuLmNhbGwoZSx0KS50aGVuKChmdW5jdGlvbih0KXtzfHwocz0hMCxpW3VdPXQsLS1jfHxyKGkpKX0pLG8pfSkpLC0tY3x8cihpKX0pKTtyZXR1cm4gaS5lcnJvciYmbyhpLnZhbHVlKSxuLnByb21pc2V9LHJhY2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVUoZSkscj1uLnJlamVjdCxvPUkoKGZ1bmN0aW9uKCl7dmFyIG89eShlLnJlc29sdmUpO2sodCwoZnVuY3Rpb24odCl7by5jYWxsKGUsdCkudGhlbihuLnJlc29sdmUscil9KSl9KSk7cmV0dXJuIG8uZXJyb3ImJnIoby52YWx1ZSksbi5wcm9taXNlfX0pfSwiNXVIOCI6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJOdW1iZXIiLHN0YXQ6ITB9LHtNSU5fU0FGRV9JTlRFR0VSOi05MDA3MTk5MjU0NzQwOTkxfSl9LCI2Sk5xIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiVVRWUyIpLG89bigiVnU4MSIpLGk9bigiQnM4ViIpLGE9bigibS9MOCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1vKGUpLGM9YS5mLHU9aS5mLHM9MDtzPG4ubGVuZ3RoO3MrKyl7dmFyIGY9bltzXTtyKHQsZil8fGModCxmLHUoZSxmKSl9fX0sIjZMV0EiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ4cllLIik7dC5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVybiJBcnJheSI9PXIodCl9fSwiNlZvRSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInRpS3AiKSxvPW4oIlA0eTEiKSxpPXIoIml0ZXJhdG9yIiksYT1BcnJheS5wcm90b3R5cGU7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10JiYoby5BcnJheT09PXR8fGFbaV09PT10KX19LCI2aHBuIjpmdW5jdGlvbih0LGUsbil7bigiVXlkeSIpLG4oImVhanYiKSxuKCJuL21VIiksbigiUHFPSSIpLG4oIlFObnAiKSxuKCIvNXptIiksbigiQ3NnRCIpLG4oIjltUlciKSxuKCJRRmNUIiksbigidkFGcyIpLG4oImE1TksiKSxuKCJ5aUczIiksbigia05jVSIpLG4oIkt2R2kiKSxuKCJBbUZPIiksbigiZUppUiIpLG4oIkk5eGoiKSxuKCJ0bC91Iik7dmFyIHI9bigiUW85bCIpO3QuZXhwb3J0cz1yLk1hdGh9LCI2dW5LIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcigoZnVuY3Rpb24oKXt2YXIgZT0iIlt0XSgnIicpO3JldHVybiBlIT09ZS50b0xvd2VyQ2FzZSgpfHxlLnNwbGl0KCciJykubGVuZ3RoPjN9KSl9fSwiNytrZCI6ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgiaXNDb25jYXRTcHJlYWRhYmxlIil9LCI3K3pzIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiWDJVKyIpLG89bigiVWVzTCIpLGk9bigidGlLcCIpKCJ0b1ByaW1pdGl2ZSIpLGE9RGF0ZS5wcm90b3R5cGU7aSBpbiBhfHxyKGEsaSxvKX0sIjdzYkQiOmZ1bmN0aW9uKHQsZSxuKXtuKCJxZVBWIiksbigiTmJOKyIpLG4oIjhBeUoiKSxuKCJpNlFGIiksbigia1NrbyIpLG4oIldEc1IiKSxuKCJyL1ZxIiksbigiNXVIOCIpLG4oIncxcloiKSxuKCJKZXZBIiksbigidG9BaiIpLG4oIlZDM0wiKTt2YXIgcj1uKCJRbzlsIik7dC5leHBvcnRzPXIuTnVtYmVyfSwiOEF5SiI6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJOdW1iZXIiLHN0YXQ6ITB9LHtpc0Zpbml0ZTpuKCI0b1UvIil9KX0sIjhHbEwiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSEF1TSIpLG89ZnVuY3Rpb24odCl7dmFyIGUsbjt0aGlzLnByb21pc2U9bmV3IHQoKGZ1bmN0aW9uKHQscil7aWYodm9pZCAwIT09ZXx8dm9pZCAwIT09bil0aHJvdyBUeXBlRXJyb3IoIkJhZCBQcm9taXNlIGNvbnN0cnVjdG9yIik7ZT10LG49cn0pKSx0aGlzLnJlc29sdmU9cihlKSx0aGlzLnJlamVjdD1yKG4pfTt0LmV4cG9ydHMuZj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8odCl9fSwiOFlPYSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjBCSzIiKSxvPW4oImhoMXYiKSxpPW4oIlVUVlMiKSxhPW4oIm0vTDgiKS5mLGM9bigia09PbCIpLHU9bigidXk4MyIpLHM9YygibWV0YSIpLGY9MCxsPU9iamVjdC5pc0V4dGVuc2libGV8fGZ1bmN0aW9uKCl7cmV0dXJuITB9LHA9ZnVuY3Rpb24odCl7YSh0LHMse3ZhbHVlOntvYmplY3RJRDoiTyIrICsrZix3ZWFrRGF0YTp7fX19KX0saD10LmV4cG9ydHM9e1JFUVVJUkVEOiExLGZhc3RLZXk6ZnVuY3Rpb24odCxlKXtpZighbyh0KSlyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHQ/dDooInN0cmluZyI9PXR5cGVvZiB0PyJTIjoiUCIpK3Q7aWYoIWkodCxzKSl7aWYoIWwodCkpcmV0dXJuIkYiO2lmKCFlKXJldHVybiJFIjtwKHQpfXJldHVybiB0W3NdLm9iamVjdElEfSxnZXRXZWFrRGF0YTpmdW5jdGlvbih0LGUpe2lmKCFpKHQscykpe2lmKCFsKHQpKXJldHVybiEwO2lmKCFlKXJldHVybiExO3AodCl9cmV0dXJuIHRbc10ud2Vha0RhdGF9LG9uRnJlZXplOmZ1bmN0aW9uKHQpe3JldHVybiB1JiZoLlJFUVVJUkVEJiZsKHQpJiYhaSh0LHMpJiZwKHQpLHR9fTtyW3NdPSEwfSwiOTBoVyI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9TWF0aC5zaWdufHxmdW5jdGlvbih0KXtyZXR1cm4gMD09KHQ9K3QpfHx0IT10P3Q6dDwwPy0xOjF9fSwiOTNJMCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlZwSVQiKSxvPW4oImtPT2wiKSxpPXIoImtleXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGlbdF18fChpW3RdPW8odCkpfX0sIjlMUGoiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9bigiZXd2VyIpLGE9bigid0U2diIpO3Ioe3RhcmdldDoiRGF0ZSIscHJvdG86ITAsZm9yY2VkOm8oKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1uZXcgRGF0ZShOYU4pLnRvSlNPTigpfHwxIT09RGF0ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoe3RvSVNPU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDF9fSl9KSl9LHt0b0pTT046ZnVuY3Rpb24odCl7dmFyIGU9aSh0aGlzKSxuPWEoZSk7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBufHxpc0Zpbml0ZShuKT9lLnRvSVNPU3RyaW5nKCk6bnVsbH19KX0sIjlOMjkiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMVkvbiIpLnJpZ2h0O3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpuKCJzd0ZMIikoInJlZHVjZVJpZ2h0Iil9LHtyZWR1Y2VSaWdodDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSl9LCI5Yko3IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIlpVZDgiKS5jb2RlQXQ7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwfSx7Y29kZVBvaW50QXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG8odGhpcyx0KX19KX0sIjlkL3QiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ4cllLIiksbz1uKCJ0aUtwIikoInRvU3RyaW5nVGFnIiksaT0iQXJndW1lbnRzIj09cihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxuLGE7cmV0dXJuIHZvaWQgMD09PXQ/IlVuZGVmaW5lZCI6bnVsbD09PXQ/Ik51bGwiOiJzdHJpbmciPT10eXBlb2Yobj1mdW5jdGlvbih0LGUpe3RyeXtyZXR1cm4gdFtlXX1jYXRjaChuKXt9fShlPU9iamVjdCh0KSxvKSk/bjppP3IoZSk6Ik9iamVjdCI9PShhPXIoZSkpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jYWxsZWU/IkFyZ3VtZW50cyI6YX19LCI5bVJXIjpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik1hdGgiLHN0YXQ6ITB9LHtmcm91bmQ6bigidm80ViIpfSl9LCI5dGIvIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiSTh2aCIpLGk9U3RyaW5nLmZyb21DaGFyQ29kZSxhPVN0cmluZy5mcm9tQ29kZVBvaW50O3Ioe3RhcmdldDoiU3RyaW5nIixzdGF0OiEwLGZvcmNlZDohIWEmJjEhPWEubGVuZ3RofSx7ZnJvbUNvZGVQb2ludDpmdW5jdGlvbih0KXtmb3IodmFyIGUsbj1bXSxyPWFyZ3VtZW50cy5sZW5ndGgsYT0wO3I+YTspe2lmKGU9K2FyZ3VtZW50c1thKytdLG8oZSwxMTE0MTExKSE9PWUpdGhyb3cgUmFuZ2VFcnJvcihlKyIgaXMgbm90IGEgdmFsaWQgY29kZSBwb2ludCIpO24ucHVzaChlPDY1NTM2P2koZSk6aSg1NTI5NisoKGUtPTY1NTM2KT4+MTApLGUlMTAyNCs1NjMyMCkpfXJldHVybiBuLmpvaW4oIiIpfX0pfSxBbUZPOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCIwRGt5IiksaT1uKCJqclV2IiksYT1NYXRoLmFicyxjPU1hdGguZXhwLHU9TWF0aC5FO3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMCxmb3JjZWQ6bygoZnVuY3Rpb24oKXtyZXR1cm4tMmUtMTchPU1hdGguc2luaCgtMmUtMTcpfSkpfSx7c2luaDpmdW5jdGlvbih0KXtyZXR1cm4gYSh0PSt0KTwxPyhpKHQpLWkoLXQpKS8yOihjKHQtMSktYygtdC0xKSkqKHUvMil9fSl9LEJOTXQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoImJsaW5rIil9LHtibGluazpmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsImJsaW5rIiwiIiwiIil9fSl9LEJUaG86ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJIQXVNIiksbz1uKCJoaDF2IiksaT1bXS5zbGljZSxhPXt9LGM9ZnVuY3Rpb24odCxlLG4pe2lmKCEoZSBpbiBhKSl7Zm9yKHZhciByPVtdLG89MDtvPGU7bysrKXJbb109ImFbIitvKyJdIjthW2VdPUZ1bmN0aW9uKCJDLGEiLCJyZXR1cm4gbmV3IEMoIityLmpvaW4oIiwiKSsiKSIpfXJldHVybiBhW2VdKHQsbil9O3QuZXhwb3J0cz1GdW5jdGlvbi5iaW5kfHxmdW5jdGlvbih0KXt2YXIgZT1yKHRoaXMpLG49aS5jYWxsKGFyZ3VtZW50cywxKSxhPWZ1bmN0aW9uKCl7dmFyIHI9bi5jb25jYXQoaS5jYWxsKGFyZ3VtZW50cykpO3JldHVybiB0aGlzIGluc3RhbmNlb2YgYT9jKGUsci5sZW5ndGgscik6ZS5hcHBseSh0LHIpfTtyZXR1cm4gbyhlLnByb3RvdHlwZSkmJihhLnByb3RvdHlwZT1lLnByb3RvdHlwZSksYX19LCJCWC9iIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiL0dxVSIpLG89bigiSkJ5OCIpLmYsaT17fS50b1N0cmluZyxhPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzP09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdyk6W107dC5leHBvcnRzLmY9ZnVuY3Rpb24odCl7cmV0dXJuIGEmJiJbb2JqZWN0IFdpbmRvd10iPT1pLmNhbGwodCk/ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBvKHQpfWNhdGNoKGUpe3JldHVybiBhLnNsaWNlKCl9fSh0KTpvKHIodCkpfX0sQnM4VjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZzZ2LyIpLG89bigiMGVlZiIpLGk9bigiWEd3QyIpLGE9bigiL0dxVSIpLGM9bigid0U2diIpLHU9bigiVVRWUyIpLHM9bigiRFBzeCIpLGY9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtlLmY9cj9mOmZ1bmN0aW9uKHQsZSl7aWYodD1hKHQpLGU9YyhlLCEwKSxzKXRyeXtyZXR1cm4gZih0LGUpfWNhdGNoKG4pe31pZih1KHQsZSkpcmV0dXJuIGkoIW8uZi5jYWxsKHQsZSksdFtlXSl9fSxDc2dEOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJqclV2Iik7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwLGZvcmNlZDpvIT1NYXRoLmV4cG0xfSx7ZXhwbTE6b30pfSxERWZ1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIik7bigiMUU1eiIpKHIuSlNPTiwiSlNPTiIsITApfSxETXQyOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJVTVNRIiksbz1uKCJFVWphIiksaT1uKCJIWUFGIiksYT1NYXRoLmNlaWwsYz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGMpe3ZhciB1LHMsZj1TdHJpbmcoaShlKSksbD1mLmxlbmd0aCxwPXZvaWQgMD09PWM/IiAiOlN0cmluZyhjKSxoPXIobik7cmV0dXJuIGg8PWx8fCIiPT1wP2Y6KChzPW8uY2FsbChwLGEoKHU9aC1sKS9wLmxlbmd0aCkpKS5sZW5ndGg+dSYmKHM9cy5zbGljZSgwLHUpKSx0P2YrczpzK2YpfX07dC5leHBvcnRzPXtzdGFydDpjKCExKSxlbmQ6YyghMCl9fSxEUHN4OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnNnYvIiksbz1uKCIwRGt5IiksaT1uKCJ6Qko0Iik7dC5leHBvcnRzPSFyJiYhbygoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KGkoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sRFFOYTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiYnVzRSIpLG89RGF0ZS5wcm90b3R5cGUsaT1vLnRvU3RyaW5nLGE9by5nZXRUaW1lO25ldyBEYXRlKE5hTikrIiIhPSJJbnZhbGlkIERhdGUiJiZyKG8sInRvU3RyaW5nIiwoZnVuY3Rpb24oKXt2YXIgdD1hLmNhbGwodGhpcyk7cmV0dXJuIHQ9PXQ/aS5jYWxsKHRoaXMpOiJJbnZhbGlkIERhdGUifSkpfSxFNU5NOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiaFhwTyIpO3Ioe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6bigiNnVuSyIpKCJiaWciKX0se2JpZzpmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsImJpZyIsIiIsIiIpfX0pfSxFOVhEOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMVkvbiIpLmxlZnQ7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOm4oInN3RkwiKSgicmVkdWNlIil9LHtyZWR1Y2U6ZnVuY3Rpb24odCl7cmV0dXJuIG8odGhpcyx0LGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSxFTkY5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbz1uKCIyb1JvIiksaT1uKCI0c3l3IiksYT1uKCI4WU9hIiksYz1uKCJiV0ZoIiksdT1uKCJyS3piIikscz1uKCJoaDF2IiksZj1uKCJhZk84IikuZW5mb3JjZSxsPW4oImY1cDEiKSxwPSFvLkFjdGl2ZVhPYmplY3QmJiJBY3RpdmVYT2JqZWN0ImluIG8saD1PYmplY3QuaXNFeHRlbnNpYmxlLHY9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDApfX0sZD10LmV4cG9ydHM9YygiV2Vha01hcCIsdix1LCEwLCEwKTtpZihsJiZwKXtyPXUuZ2V0Q29uc3RydWN0b3IodiwiV2Vha01hcCIsITApLGEuUkVRVUlSRUQ9ITA7dmFyIGc9ZC5wcm90b3R5cGUseT1nLmRlbGV0ZSxiPWcuaGFzLG09Zy5nZXQsaz1nLnNldDtpKGcse2RlbGV0ZTpmdW5jdGlvbih0KXtpZihzKHQpJiYhaCh0KSl7dmFyIGU9Zih0aGlzKTtyZXR1cm4gZS5mcm96ZW58fChlLmZyb3plbj1uZXcgcikseS5jYWxsKHRoaXMsdCl8fGUuZnJvemVuLmRlbGV0ZSh0KX1yZXR1cm4geS5jYWxsKHRoaXMsdCl9LGhhczpmdW5jdGlvbih0KXtpZihzKHQpJiYhaCh0KSl7dmFyIGU9Zih0aGlzKTtyZXR1cm4gZS5mcm96ZW58fChlLmZyb3plbj1uZXcgciksYi5jYWxsKHRoaXMsdCl8fGUuZnJvemVuLmhhcyh0KX1yZXR1cm4gYi5jYWxsKHRoaXMsdCl9LGdldDpmdW5jdGlvbih0KXtpZihzKHQpJiYhaCh0KSl7dmFyIGU9Zih0aGlzKTtyZXR1cm4gZS5mcm96ZW58fChlLmZyb3plbj1uZXcgciksYi5jYWxsKHRoaXMsdCk/bS5jYWxsKHRoaXMsdCk6ZS5mcm96ZW4uZ2V0KHQpfXJldHVybiBtLmNhbGwodGhpcyx0KX0sc2V0OmZ1bmN0aW9uKHQsZSl7aWYocyh0KSYmIWgodCkpe3ZhciBuPWYodGhpcyk7bi5mcm96ZW58fChuLmZyb3plbj1uZXcgciksYi5jYWxsKHRoaXMsdCk/ay5jYWxsKHRoaXMsdCxlKTpuLmZyb3plbi5zZXQodCxlKX1lbHNlIGsuY2FsbCh0aGlzLHQsZSk7cmV0dXJuIHRoaXN9fSl9fSxFVWphOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigicHBHQiIpLG89bigiSFlBRiIpO3QuZXhwb3J0cz0iIi5yZXBlYXR8fGZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyhvKHRoaXMpKSxuPSIiLGk9cih0KTtpZihpPDB8fGk9PTEvMCl0aHJvdyBSYW5nZUVycm9yKCJXcm9uZyBudW1iZXIgb2YgcmVwZXRpdGlvbnMiKTtmb3IoO2k+MDsoaT4+Pj0xKSYmKGUrPWUpKTEmaSYmKG4rPWUpO3JldHVybiBufX0sRW5aeTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjE0U2wiKSxvPW4oIlJPZFAiKSxpPW4oImdscmsiKSxhPW4oIkhZQUYiKSxjPW4oIlNFQmgiKSx1PW4oImlxV1ciKSxzPW4oIlVNU1EiKSxmPW4oIkZNTk0iKSxsPW4oImttTVYiKSxwPW4oIjBEa3kiKSxoPVtdLnB1c2gsdj1NYXRoLm1pbixkPSFwKChmdW5jdGlvbigpe3JldHVybiFSZWdFeHAoNDI5NDk2NzI5NSwieSIpfSkpO3IoInNwbGl0IiwyLChmdW5jdGlvbih0LGUsbil7dmFyIHI7cmV0dXJuIHI9ImMiPT0iYWJiYyIuc3BsaXQoLyhiKSovKVsxXXx8NCE9InRlc3QiLnNwbGl0KC8oPzopLywtMSkubGVuZ3RofHwyIT0iYWIiLnNwbGl0KC8oPzphYikqLykubGVuZ3RofHw0IT0iLiIuc3BsaXQoLyguPykoLj8pLykubGVuZ3RofHwiLiIuc3BsaXQoLygpKCkvKS5sZW5ndGg+MXx8IiIuc3BsaXQoLy4/LykubGVuZ3RoP2Z1bmN0aW9uKHQsbil7dmFyIHI9U3RyaW5nKGEodGhpcykpLGk9dm9pZCAwPT09bj80Mjk0OTY3Mjk1Om4+Pj4wO2lmKDA9PT1pKXJldHVybltdO2lmKHZvaWQgMD09PXQpcmV0dXJuW3JdO2lmKCFvKHQpKXJldHVybiBlLmNhbGwocix0LGkpO2Zvcih2YXIgYyx1LHMsZj1bXSxwPTAsdj1uZXcgUmVnRXhwKHQuc291cmNlLCh0Lmlnbm9yZUNhc2U/ImkiOiIiKSsodC5tdWx0aWxpbmU/Im0iOiIiKSsodC51bmljb2RlPyJ1IjoiIikrKHQuc3RpY2t5PyJ5IjoiIikrImciKTsoYz1sLmNhbGwodixyKSkmJiEoKHU9di5sYXN0SW5kZXgpPnAmJihmLnB1c2goci5zbGljZShwLGMuaW5kZXgpKSxjLmxlbmd0aD4xJiZjLmluZGV4PHIubGVuZ3RoJiZoLmFwcGx5KGYsYy5zbGljZSgxKSkscz1jWzBdLmxlbmd0aCxwPXUsZi5sZW5ndGg+PWkpKTspdi5sYXN0SW5kZXg9PT1jLmluZGV4JiZ2Lmxhc3RJbmRleCsrO3JldHVybiBwPT09ci5sZW5ndGg/IXMmJnYudGVzdCgiIil8fGYucHVzaCgiIik6Zi5wdXNoKHIuc2xpY2UocCkpLGYubGVuZ3RoPmk/Zi5zbGljZSgwLGkpOmZ9OiIwIi5zcGxpdCh2b2lkIDAsMCkubGVuZ3RoP2Z1bmN0aW9uKHQsbil7cmV0dXJuIHZvaWQgMD09PXQmJjA9PT1uP1tdOmUuY2FsbCh0aGlzLHQsbil9OmUsW2Z1bmN0aW9uKGUsbil7dmFyIG89YSh0aGlzKSxpPW51bGw9PWU/dm9pZCAwOmVbdF07cmV0dXJuIHZvaWQgMCE9PWk/aS5jYWxsKGUsbyxuKTpyLmNhbGwoU3RyaW5nKG8pLGUsbil9LGZ1bmN0aW9uKHQsbyl7dmFyIGE9bihyLHQsdGhpcyxvLHIhPT1lKTtpZihhLmRvbmUpcmV0dXJuIGEudmFsdWU7dmFyIGw9aSh0KSxwPVN0cmluZyh0aGlzKSxoPWMobCxSZWdFeHApLGc9bC51bmljb2RlLHk9bmV3IGgoZD9sOiJeKD86IitsLnNvdXJjZSsiKSIsKGwuaWdub3JlQ2FzZT8iaSI6IiIpKyhsLm11bHRpbGluZT8ibSI6IiIpKyhsLnVuaWNvZGU/InUiOiIiKSsoZD8ieSI6ImciKSksYj12b2lkIDA9PT1vPzQyOTQ5NjcyOTU6bz4+PjA7aWYoMD09PWIpcmV0dXJuW107aWYoMD09PXAubGVuZ3RoKXJldHVybiBudWxsPT09Zih5LHApP1twXTpbXTtmb3IodmFyIG09MCxrPTAsXz1bXTtrPHAubGVuZ3RoOyl7eS5sYXN0SW5kZXg9ZD9rOjA7dmFyIHcseD1mKHksZD9wOnAuc2xpY2UoaykpO2lmKG51bGw9PT14fHwodz12KHMoeS5sYXN0SW5kZXgrKGQ/MDprKSkscC5sZW5ndGgpKT09PW0paz11KHAsayxnKTtlbHNle2lmKF8ucHVzaChwLnNsaWNlKG0saykpLF8ubGVuZ3RoPT09YilyZXR1cm4gXztmb3IodmFyIFM9MTtTPD14Lmxlbmd0aC0xO1MrKylpZihfLnB1c2goeFtTXSksXy5sZW5ndGg9PT1iKXJldHVybiBfO2s9bT13fX1yZXR1cm4gXy5wdXNoKHAuc2xpY2UobSkpLF99XX0pLCFkKX0sRXA5STpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1PYmplY3QuaXN8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lPzAhPT10fHwxL3Q9PTEvZTp0IT10JiZlIT1lfX0sRXhvQzpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMH0se3NldFByb3RvdHlwZU9mOm4oIjBydnIiKX0pfSxGOEpSOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigidHljUiIpLmZvckVhY2gsbz1uKCJzd0ZMIik7dC5leHBvcnRzPW8oImZvckVhY2giKT9mdW5jdGlvbih0KXtyZXR1cm4gcih0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfTpbXS5mb3JFYWNofSxGRjZsOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZXd2VyIpLG89bigiSTh2aCIpLGk9bigiVU1TUSIpLGE9TWF0aC5taW47dC5leHBvcnRzPVtdLmNvcHlXaXRoaW58fGZ1bmN0aW9uKHQsZSl7dmFyIG49cih0aGlzKSxjPWkobi5sZW5ndGgpLHU9byh0LGMpLHM9byhlLGMpLGY9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsbD1hKCh2b2lkIDA9PT1mP2M6byhmLGMpKS1zLGMtdSkscD0xO2ZvcihzPHUmJnU8cytsJiYocD0tMSxzKz1sLTEsdSs9bC0xKTtsLS0gPjA7KXMgaW4gbj9uW3VdPW5bc106ZGVsZXRlIG5bdV0sdSs9cCxzKz1wO3JldHVybiBufX0sRk1OTTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieHJZSyIpLG89bigia21NViIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPXQuZXhlYztpZigiZnVuY3Rpb24iPT10eXBlb2Ygbil7dmFyIGk9bi5jYWxsKHQsZSk7aWYoIm9iamVjdCIhPXR5cGVvZiBpKXRocm93IFR5cGVFcnJvcigiUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsIik7cmV0dXJuIGl9aWYoIlJlZ0V4cCIhPT1yKHQpKXRocm93IFR5cGVFcnJvcigiUmVnRXhwI2V4ZWMgY2FsbGVkIG9uIGluY29tcGF0aWJsZSByZWNlaXZlciIpO3JldHVybiBvLmNhbGwodCxlKX19LEZadFA6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIi9ieXQiKSxpPW4oIkY4SlIiKSxhPW4oIlgyVSsiKTtmb3IodmFyIGMgaW4gbyl7dmFyIHU9cltjXSxzPXUmJnUucHJvdG90eXBlO2lmKHMmJnMuZm9yRWFjaCE9PWkpdHJ5e2EocywiZm9yRWFjaCIsaSl9Y2F0Y2goZil7cy5mb3JFYWNoPWl9fX0sIkcrUngiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIwR2JZIik7dC5leHBvcnRzPXIoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LEdLVlU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoImFuY2hvciIpfSx7YW5jaG9yOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsImEiLCJuYW1lIix0KX19KX0sR1JQRjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgiZm9udHNpemUiKX0se2ZvbnRzaXplOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsImZvbnQiLCJzaXplIix0KX19KX0sR1h2ZDpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJzcGVjaWVzIil9LEdhclU6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IFR5cGVFcnJvcigiSW5jb3JyZWN0ICIrKG4/bisiICI6IiIpKyJpbnZvY2E="
3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ: qwe?styles.css?5?1: "base64:IikmJi0xPT09dC5pbmRleE9mKCJUcmlkZW50LyIpJiYtMT09PXQuaW5kZXhPZigiRWRnZS8iKXx8KHo9ITApfWNhdGNoKGUpe31yZXR1cm4gen1ab25lLl9fbG9hZF9wYXRjaCgidG9TdHJpbmciLChmdW5jdGlvbih0KXt2YXIgZT1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsbj1kKCJPcmlnaW5hbERlbGVnYXRlIikscj1kKCJQcm9taXNlIiksbz1kKCJFcnJvciIpLGk9ZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcyl7dmFyIGk9dGhpc1tuXTtpZihpKXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBpP2UuY2FsbChpKTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaSk7aWYodGhpcz09PVByb21pc2Upe3ZhciBhPXRbcl07aWYoYSlyZXR1cm4gZS5jYWxsKGEpfWlmKHRoaXM9PT1FcnJvcil7dmFyIGM9dFtvXTtpZihjKXJldHVybiBlLmNhbGwoYyl9fXJldHVybiBlLmNhbGwodGhpcyl9O2lbbl09ZSxGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc9aTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO09iamVjdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIFByb21pc2U/IltvYmplY3QgUHJvbWlzZV0iOmEuY2FsbCh0aGlzKX19KSk7dmFyIFc9ITE7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cpdHJ5e3ZhciBHPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe1c9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLEcsRyksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLEcsRyl9Y2F0Y2goRXQpe1c9ITF9dmFyIFU9e3VzZUc6ITB9LEg9e30sQj17fSxLPS9eX196b25lX3N5bWJvbF9fKFx3KykodHJ1ZXxmYWxzZSkkLyxWPSJfX3pvbmVfc3ltYm9sX19wcm9wYWdhdGlvblN0b3BwZWQiO2Z1bmN0aW9uIFgodCxlLHIpe3ZhciBvPXImJnIuYWRkfHxhLGk9ciYmci5ybXx8Yyx1PXImJnIubGlzdGVuZXJzfHwiZXZlbnRMaXN0ZW5lcnMiLHM9ciYmci5ybUFsbHx8InJlbW92ZUFsbExpc3RlbmVycyIsaD1kKG8pLHY9Ii4iK28rIjoiLGc9InByZXBlbmRMaXN0ZW5lciIseT0iLiIrZysiOiIsYj1mdW5jdGlvbih0LGUsbil7aWYoIXQuaXNSZW1vdmVkKXt2YXIgcj10LmNhbGxiYWNrOyJvYmplY3QiPT10eXBlb2YgciYmci5oYW5kbGVFdmVudCYmKHQuY2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHIuaGFuZGxlRXZlbnQodCl9LHQub3JpZ2luYWxEZWxlZ2F0ZT1yKSx0Lmludm9rZSh0LGUsW25dKTt2YXIgbz10Lm9wdGlvbnM7byYmIm9iamVjdCI9PXR5cGVvZiBvJiZvLm9uY2UmJmVbaV0uY2FsbChlLG4udHlwZSx0Lm9yaWdpbmFsRGVsZWdhdGU/dC5vcmlnaW5hbERlbGVnYXRlOnQuY2FsbGJhY2ssbyl9fSxtPWZ1bmN0aW9uKGUpe2lmKGU9ZXx8dC5ldmVudCl7dmFyIG49dGhpc3x8ZS50YXJnZXR8fHQscj1uW0hbZS50eXBlXVtsXV07aWYocilpZigxPT09ci5sZW5ndGgpYihyWzBdLG4sZSk7ZWxzZSBmb3IodmFyIG89ci5zbGljZSgpLGk9MDtpPG8ubGVuZ3RoJiYoIWV8fCEwIT09ZVtWXSk7aSsrKWIob1tpXSxuLGUpfX0saz1mdW5jdGlvbihlKXtpZihlPWV8fHQuZXZlbnQpe3ZhciBuPXRoaXN8fGUudGFyZ2V0fHx0LHI9bltIW2UudHlwZV1bZl1dO2lmKHIpaWYoMT09PXIubGVuZ3RoKWIoclswXSxuLGUpO2Vsc2UgZm9yKHZhciBvPXIuc2xpY2UoKSxpPTA7aTxvLmxlbmd0aCYmKCFlfHwhMCE9PWVbVl0pO2krKyliKG9baV0sbixlKX19O2Z1bmN0aW9uIF8oZSxyKXtpZighZSlyZXR1cm4hMTt2YXIgYT0hMDtyJiZ2b2lkIDAhPT1yLnVzZUcmJihhPXIudXNlRyk7dmFyIGM9ciYmci52aCxiPSEwO3ImJnZvaWQgMCE9PXIuY2hrRHVwJiYoYj1yLmNoa0R1cCk7dmFyIF89ITE7ciYmdm9pZCAwIT09ci5ydCYmKF89ci5ydCk7Zm9yKHZhciB3PWU7dyYmIXcuaGFzT3duUHJvcGVydHkobyk7KXc9bih3KTtpZighdyYmZVtvXSYmKHc9ZSksIXcpcmV0dXJuITE7aWYod1toXSlyZXR1cm4hMTt2YXIgeCxFPXImJnIuZXZlbnROYW1lVG9TdHJpbmcsTz17fSxUPXdbaF09d1tvXSxJPXdbZChpKV09d1tpXSxqPXdbZCh1KV09d1t1XSxNPXdbZChzKV09d1tzXTtmdW5jdGlvbiBQKHQpe1d8fCJib29sZWFuIj09dHlwZW9mIE8ub3B0aW9uc3x8bnVsbD09Ty5vcHRpb25zfHwodC5vcHRpb25zPSEhTy5vcHRpb25zLmNhcHR1cmUsTy5vcHRpb25zPXQub3B0aW9ucyl9ciYmci5wcmVwZW5kJiYoeD13W2Qoci5wcmVwZW5kKV09d1tyLnByZXBlbmRdKTt2YXIgRD1hP2Z1bmN0aW9uKHQpe2lmKCFPLmlzRXhpc3RpbmcpcmV0dXJuIFAodCksVC5jYWxsKE8udGFyZ2V0LE8uZXZlbnROYW1lLE8uY2FwdHVyZT9rOm0sTy5vcHRpb25zKX06ZnVuY3Rpb24odCl7cmV0dXJuIFAodCksVC5jYWxsKE8udGFyZ2V0LE8uZXZlbnROYW1lLHQuaW52b2tlLE8ub3B0aW9ucyl9LFI9YT9mdW5jdGlvbih0KXtpZighdC5pc1JlbW92ZWQpe3ZhciBlPUhbdC5ldmVudE5hbWVdLG49dm9pZCAwO2UmJihuPWVbdC5jYXB0dXJlP2Y6bF0pO3ZhciByPW4mJnQudGFyZ2V0W25dO2lmKHIpZm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspaWYocltvXT09PXQpe3Iuc3BsaWNlKG8sMSksdC5pc1JlbW92ZWQ9ITAsMD09PXIubGVuZ3RoJiYodC5hbGxSZW1vdmVkPSEwLHQudGFyZ2V0W25dPW51bGwpO2JyZWFrfX1pZih0LmFsbFJlbW92ZWQpcmV0dXJuIEkuY2FsbCh0LnRhcmdldCx0LmV2ZW50TmFtZSx0LmNhcHR1cmU/azptLHQub3B0aW9ucyl9OmZ1bmN0aW9uKHQpe3JldHVybiBJLmNhbGwodC50YXJnZXQsdC5ldmVudE5hbWUsdC5pbnZva2UsdC5vcHRpb25zKX0sTj1yJiZyLmRpZmY/ci5kaWZmOmZ1bmN0aW9uKHQsZSl7dmFyIG49dHlwZW9mIGU7cmV0dXJuImZ1bmN0aW9uIj09PW4mJnQuY2FsbGJhY2s9PT1lfHwib2JqZWN0Ij09PW4mJnQub3JpZ2luYWxEZWxlZ2F0ZT09PWV9LEE9Wm9uZVtab25lLl9fc3ltYm9sX18oIkJMQUNLX0xJU1RFRF9FVkVOVFMiKV0sRj1mdW5jdGlvbihlLG4scixvLGksdSl7cmV0dXJuIHZvaWQgMD09PWkmJihpPSExKSx2b2lkIDA9PT11JiYodT0hMSksZnVuY3Rpb24oKXt2YXIgcz10aGlzfHx0LGg9YXJndW1lbnRzWzBdLHY9YXJndW1lbnRzWzFdO2lmKCF2KXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihTJiYidW5jYXVnaHRFeGNlcHRpb24iPT09aClyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGQ9ITE7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHYpe2lmKCF2LmhhbmRsZUV2ZW50KXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtkPSEwfWlmKCFjfHxjKGUsdixzLGFyZ3VtZW50cykpe3ZhciBnLHk9YXJndW1lbnRzWzJdO2lmKEEpZm9yKHZhciBtPTA7bTxBLmxlbmd0aDttKyspaWYoaD09PUFbbV0pcmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBrPSExO3ZvaWQgMD09PXk/Zz0hMTohMD09PXk/Zz0hMDohMT09PXk/Zz0hMTooZz0hIXkmJiEheS5jYXB0dXJlLGs9ISF5JiYhIXkub25jZSk7dmFyIF8sdz1ab25lLmN1cnJlbnQseD1IW2hdO2lmKHgpXz14W2c/ZjpsXTtlbHNle3ZhciBUPShFP0UoaCk6aCkrbCxJPShFP0UoaCk6aCkrZixqPXArVCxNPXArSTtIW2hdPXt9LEhbaF1bbF09aixIW2hdW2ZdPU0sXz1nP006an12YXIgUCxEPXNbX10sUj0hMTtpZihEKXtpZihSPSEwLGIpZm9yKG09MDttPEQubGVuZ3RoO20rKylpZihOKERbbV0sdikpcmV0dXJufWVsc2UgRD1zW19dPVtdO3ZhciBMPXMuY29uc3RydWN0b3IubmFtZSxGPUJbTF07RiYmKFA9RltoXSksUHx8KFA9TCtuKyhFP0UoaCk6aCkpLE8ub3B0aW9ucz15LGsmJihPLm9wdGlvbnMub25jZT0hMSksTy50YXJnZXQ9cyxPLmNhcHR1cmU9ZyxPLmV2ZW50TmFtZT1oLE8uaXNFeGlzdGluZz1SO3ZhciB6PWE/VTp2b2lkIDA7eiYmKHoudGFza0RhdGE9Tyk7dmFyIFo9dy5zY2hlZHVsZUV2ZW50VGFzayhQLHYseixyLG8pO3JldHVybiBPLnRhcmdldD1udWxsLHomJih6LnRhc2tEYXRhPW51bGwpLGsmJih5Lm9uY2U9ITApLChXfHwiYm9vbGVhbiIhPXR5cGVvZiBaLm9wdGlvbnMpJiYoWi5vcHRpb25zPXkpLFoudGFyZ2V0PXMsWi5jYXB0dXJlPWcsWi5ldmVudE5hbWU9aCxkJiYoWi5vcmlnaW5hbERlbGVnYXRlPXYpLHU/RC51bnNoaWZ0KFopOkQucHVzaChaKSxpP3M6dm9pZCAwfX19O3JldHVybiB3W29dPUYoVCx2LEQsUixfKSx4JiYod1tnXT1GKHgseSwoZnVuY3Rpb24odCl7cmV0dXJuIHguY2FsbChPLnRhcmdldCxPLmV2ZW50TmFtZSx0Lmludm9rZSxPLm9wdGlvbnMpfSksUixfLCEwKSksd1tpXT1mdW5jdGlvbigpe3ZhciBlLG49dGhpc3x8dCxyPWFyZ3VtZW50c1swXSxvPWFyZ3VtZW50c1syXTtlPXZvaWQgMCE9PW8mJighMD09PW98fCExIT09byYmISFvJiYhIW8uY2FwdHVyZSk7dmFyIGk9YXJndW1lbnRzWzFdO2lmKCFpKXJldHVybiBJLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZighY3x8YyhJLGksbixhcmd1bWVudHMpKXt2YXIgYSx1PUhbcl07dSYmKGE9dVtlP2Y6bF0pO3ZhciBzPWEmJm5bYV07aWYocylmb3IodmFyIHA9MDtwPHMubGVuZ3RoO3ArKyl7dmFyIGg9c1twXTtpZihOKGgsaSkpcmV0dXJuIHMuc3BsaWNlKHAsMSksaC5pc1JlbW92ZWQ9ITAsMD09PXMubGVuZ3RoJiYoaC5hbGxSZW1vdmVkPSEwLG5bYV09bnVsbCksaC56b25lLmNhbmNlbFRhc2soaCksXz9uOnZvaWQgMH1yZXR1cm4gSS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSx3W3VdPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXN8fHQsbj1hcmd1bWVudHNbMF0scj1bXSxvPVkoZSxFP0Uobik6biksaT0wO2k8by5sZW5ndGg7aSsrKXt2YXIgYT1vW2ldLGM9YS5vcmlnaW5hbERlbGVnYXRlP2Eub3JpZ2luYWxEZWxlZ2F0ZTphLmNhbGxiYWNrO3IucHVzaChjKX1yZXR1cm4gcn0sd1tzXT1mdW5jdGlvbigpe3ZhciBlPXRoaXN8fHQsbj1hcmd1bWVudHNbMF07aWYobil7dmFyIHI9SFtuXTtpZihyKXt2YXIgbz1yW2xdLGE9cltmXSxjPWVbb10sdT1lW2FdO2lmKGMpe3ZhciBwPWMuc2xpY2UoKTtmb3IoZD0wO2Q8cC5sZW5ndGg7ZCsrKXRoaXNbaV0uY2FsbCh0aGlzLG4sKGg9cFtkXSkub3JpZ2luYWxEZWxlZ2F0ZT9oLm9yaWdpbmFsRGVsZWdhdGU6aC5jYWxsYmFjayxoLm9wdGlvbnMpfWlmKHUpZm9yKHA9dS5zbGljZSgpLGQ9MDtkPHAubGVuZ3RoO2QrKyl7dmFyIGg7dGhpc1tpXS5jYWxsKHRoaXMsbiwoaD1wW2RdKS5vcmlnaW5hbERlbGVnYXRlP2gub3JpZ2luYWxEZWxlZ2F0ZTpoLmNhbGxiYWNrLGgub3B0aW9ucyl9fX1lbHNle2Zvcih2YXIgdj1PYmplY3Qua2V5cyhlKSxkPTA7ZDx2Lmxlbmd0aDtkKyspe3ZhciBnPXZbZF0seT1LLmV4ZWMoZyksYj15JiZ5WzFdO2ImJiJyZW1vdmVMaXN0ZW5lciIhPT1iJiZ0aGlzW3NdLmNhbGwodGhpcyxiKX10aGlzW3NdLmNhbGwodGhpcywicmVtb3ZlTGlzdGVuZXIiKX1pZihfKXJldHVybiB0aGlzfSxMKHdbb10sVCksTCh3W2ldLEkpLE0mJkwod1tzXSxNKSxqJiZMKHdbdV0saiksITB9Zm9yKHZhciB3PVtdLHg9MDt4PGUubGVuZ3RoO3grKyl3W3hdPV8oZVt4XSxyKTtyZXR1cm4gd31mdW5jdGlvbiBZKHQsZSl7dmFyIG49W107Zm9yKHZhciByIGluIHQpe3ZhciBvPUsuZXhlYyhyKSxpPW8mJm9bMV07aWYoaSYmKCFlfHxpPT09ZSkpe3ZhciBhPXRbcl07aWYoYSlmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyluLnB1c2goYVtjXSl9fXJldHVybiBufWZ1bmN0aW9uIHEodCxlKXt2YXIgbj10LkV2ZW50O24mJm4ucHJvdG90eXBlJiZlLnBhdGNoTWV0aG9kKG4ucHJvdG90eXBlLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtlW1ZdPSEwLHQmJnQuYXBwbHkoZSxuKX19KSl9ZnVuY3Rpb24gUSh0LGUsbixyLG8pe3ZhciBpPVpvbmUuX19zeW1ib2xfXyhyKTtpZighZVtpXSl7dmFyIGE9ZVtpXT1lW3JdO2Vbcl09ZnVuY3Rpb24oaSxjLHUpe3JldHVybiBjJiZjLnByb3RvdHlwZSYmby5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbz1uKyIuIityKyI6OiIrZSxpPWMucHJvdG90eXBlO2lmKGkuaGFzT3duUHJvcGVydHkoZSkpe3ZhciBhPXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksZSk7YSYmYS52YWx1ZT8oYS52YWx1ZT10LndyYXBXaXRoQ3VycmVudFpvbmUoYS52YWx1ZSxvKSx0Ll9yZWRlZmluZVByb3BlcnR5KGMucHJvdG90eXBlLGUsYSkpOmlbZV0mJihpW2VdPXQud3JhcFdpdGhDdXJyZW50Wm9uZShpW2VdLG8pKX1lbHNlIGlbZV0mJihpW2VdPXQud3JhcFdpdGhDdXJyZW50Wm9uZShpW2VdLG8pKX0pKSxhLmNhbGwoZSxpLGMsdSl9LHQuYXR0YWNoT3JpZ2luVG9QYXRjaGVkKGVbcl0sYSl9fXZhciBKPVpvbmUuX19zeW1ib2xfXywkPU9iamVjdFtKKCJkZWZpbmVQcm9wZXJ0eSIpXT1PYmplY3QuZGVmaW5lUHJvcGVydHksdHQ9T2JqZWN0W0ooImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpXT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGV0PU9iamVjdC5jcmVhdGUsbnQ9SigidW5jb25maWd1cmFibGVzIik7ZnVuY3Rpb24gcnQodCxlLG4pe3ZhciByPW4uY29uZmlndXJhYmxlO3JldHVybiBhdCh0LGUsbj1pdCh0LGUsbikscil9ZnVuY3Rpb24gb3QodCxlKXtyZXR1cm4gdCYmdFtudF0mJnRbbnRdW2VdfWZ1bmN0aW9uIGl0KHQsZSxuKXtyZXR1cm4gT2JqZWN0LmlzRnJvemVuKG4pfHwobi5jb25maWd1cmFibGU9ITApLG4uY29uZmlndXJhYmxlfHwodFtudF18fE9iamVjdC5pc0Zyb3plbih0KXx8JCh0LG50LHt3cml0YWJsZTohMCx2YWx1ZTp7fX0pLHRbbnRdJiYodFtudF1bZV09ITApKSxufWZ1bmN0aW9uIGF0KHQsZSxuLHIpe3RyeXtyZXR1cm4gJCh0LGUsbil9Y2F0Y2goaSl7aWYoIW4uY29uZmlndXJhYmxlKXRocm93IGk7dm9pZCAwPT09cj9kZWxldGUgbi5jb25maWd1cmFibGU6bi5jb25maWd1cmFibGU9cjt0cnl7cmV0dXJuICQodCxlLG4pfWNhdGNoKGkpe3ZhciBvPW51bGw7dHJ5e289SlNPTi5zdHJpbmdpZnkobil9Y2F0Y2goaSl7bz1uLnRvU3RyaW5nKCl9Y29uc29sZS5sb2coIkF0dGVtcHRpbmcgdG8gY29uZmlndXJlICciK2UrIicgd2l0aCBkZXNjcmlwdG9yICciK28rIicgb24gb2JqZWN0ICciK3QrIicgYW5kIGdvdCBlcnJvciwgZ2l2aW5nIHVwOiAiK2kpfX19dmFyIGN0PVsiYWJzb2x1dGVkZXZpY2VvcmllbnRhdGlvbiIsImFmdGVyaW5wdXQiLCJhZnRlcnByaW50IiwiYXBwaW5zdGFsbGVkIiwiYmVmb3JlaW5zdGFsbHByb21wdCIsImJlZm9yZXByaW50IiwiYmVmb3JldW5sb2FkIiwiZGV2aWNlbGlnaHQiLCJkZXZpY2Vtb3Rpb24iLCJkZXZpY2VvcmllbnRhdGlvbiIsImRldmljZW9yaWVudGF0aW9uYWJzb2x1dGUiLCJkZXZpY2Vwcm94aW1pdHkiLCJoYXNoY2hhbmdlIiwibGFuZ3VhZ2VjaGFuZ2UiLCJtZXNzYWdlIiwibW96YmVmb3JlcGFpbnQiLCJvZmZsaW5lIiwib25saW5lIiwicGFpbnQiLCJwYWdlc2hvdyIsInBhZ2VoaWRlIiwicG9wc3RhdGUiLCJyZWplY3Rpb25oYW5kbGVkIiwic3RvcmFnZSIsInVuaGFuZGxlZHJlamVjdGlvbiIsInVubG9hZCIsInVzZXJwcm94aW1pdHkiLCJ2cmRpc3BseWNvbm5lY3RlZCIsInZyZGlzcGxheWRpc2Nvbm5lY3RlZCIsInZyZGlzcGxheXByZXNlbnRjaGFuZ2UiXSx1dD1bImVuY3J5cHRlZCIsIndhaXRpbmdmb3JrZXkiLCJtc25lZWRrZXkiLCJtb3ppbnRlcnJ1cHRiZWdpbiIsIm1vemludGVycnVwdGVuZCJdLHN0PVsibG9hZCJdLGZ0PVsiYmx1ciIsImVycm9yIiwiZm9jdXMiLCJsb2FkIiwicmVzaXplIiwic2Nyb2xsIiwibWVzc2FnZWVycm9yIl0sbHQ9WyJib3VuY2UiLCJmaW5pc2giLCJzdGFydCJdLHB0PVsibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsInByb2dyZXNzIiwidGltZW91dCIsImxvYWRlbmQiLCJyZWFkeXN0YXRlY2hhbmdlIl0saHQ9WyJ1cGdyYWRlbmVlZGVkIiwiY29tcGxldGUiLCJhYm9ydCIsInN1Y2Nlc3MiLCJlcnJvciIsImJsb2NrZWQiLCJ2ZXJzaW9uY2hhbmdlIiwiY2xvc2UiXSx2dD1bImNsb3NlIiwiZXJyb3IiLCJvcGVuIiwibWVzc2FnZSJdLGR0PVsiZXJyb3IiLCJtZXNzYWdlIl0sZ3Q9WyJhYm9ydCIsImFuaW1hdGlvbmNhbmNlbCIsImFuaW1hdGlvbmVuZCIsImFuaW1hdGlvbml0ZXJhdGlvbiIsImF1eGNsaWNrIiwiYmVmb3JlaW5wdXQiLCJibHVyIiwiY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiY2hhbmdlIiwiY29tcG9zaXRpb25zdGFydCIsImNvbXBvc2l0aW9udXBkYXRlIiwiY29tcG9zaXRpb25lbmQiLCJjdWVjaGFuZ2UiLCJjbGljayIsImNsb3NlIiwiY29udGV4dG1lbnUiLCJjdXJlY2hhbmdlIiwiZGJsY2xpY2siLCJkcmFnIiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdleGl0IiwiZHJhZ2xlYXZlIiwiZHJhZ292ZXIiLCJkcm9wIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJlcnJvciIsImZvY3VzIiwiZm9jdXNpbiIsImZvY3Vzb3V0IiwiZ290cG9pbnRlcmNhcHR1cmUiLCJpbnB1dCIsImludmFsaWQiLCJrZXlkb3duIiwia2V5cHJlc3MiLCJrZXl1cCIsImxvYWQiLCJsb2Fkc3RhcnQiLCJsb2FkZWRkYXRhIiwibG9hZGVkbWV0YWRhdGEiLCJsb3N0cG9pbnRlcmNhcHR1cmUiLCJtb3VzZWRvd24iLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0IiwibW91c2VvdmVyIiwibW91c2V1cCIsIm1vdXNld2hlZWwiLCJvcmllbnRhdGlvbmNoYW5nZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVyZW50ZXIiLCJwb2ludGVybGVhdmUiLCJwb2ludGVybG9ja2NoYW5nZSIsIm1venBvaW50ZXJsb2NrY2hhbmdlIiwid2Via2l0cG9pbnRlcmxvY2tlcmNoYW5nZSIsInBvaW50ZXJsb2NrZXJyb3IiLCJtb3pwb2ludGVybG9ja2Vycm9yIiwid2Via2l0cG9pbnRlcmxvY2tlcnJvciIsInBvaW50ZXJtb3ZlIiwicG9pbnRvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInByb2dyZXNzIiwicmF0ZWNoYW5nZSIsInJlc2V0IiwicmVzaXplIiwic2Nyb2xsIiwic2Vla2VkIiwic2Vla2luZyIsInNlbGVjdCIsInNlbGVjdGlvbmNoYW5nZSIsInNlbGVjdHN0YXJ0Iiwic2hvdyIsInNvcnQiLCJzdGFsbGVkIiwic3VibWl0Iiwic3VzcGVuZCIsInRpbWV1cGRhdGUiLCJ2b2x1bWVjaGFuZ2UiLCJ0b3VjaGNhbmNlbCIsInRvdWNobW92ZSIsInRvdWNoc3RhcnQiLCJ0b3VjaGVuZCIsInRyYW5zaXRpb25jYW5jZWwiLCJ0cmFuc2l0aW9uZW5kIiwid2FpdGluZyIsIndoZWVsIl0uY29uY2F0KFsid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciJdLFsiYXV0b2NvbXBsZXRlIiwiYXV0b2NvbXBsZXRlZXJyb3IiXSxbInRvZ2dsZSJdLFsiYWZ0ZXJzY3JpcHRleGVjdXRlIiwiYmVmb3Jlc2NyaXB0ZXhlY3V0ZSIsIkRPTUNvbnRlbnRMb2FkZWQiLCJmcmVlemUiLCJmdWxsc2NyZWVuY2hhbmdlIiwibW96ZnVsbHNjcmVlbmNoYW5nZSIsIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiLCJtc2Z1bGxzY3JlZW5jaGFuZ2UiLCJmdWxsc2NyZWVuZXJyb3IiLCJtb3pmdWxsc2NyZWVuZXJyb3IiLCJ3ZWJraXRmdWxsc2NyZWVuZXJyb3IiLCJtc2Z1bGxzY3JlZW5lcnJvciIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ2aXNpYmlsaXR5Y2hhbmdlIiwicmVzdW1lIl0sY3QsWyJiZWZvcmVjb3B5IiwiYmVmb3JlY3V0IiwiYmVmb3JlcGFzdGUiLCJjb3B5IiwiY3V0IiwicGFzdGUiLCJkcmFnc3RhcnQiLCJsb2FkZW5kIiwiYW5pbWF0aW9uc3RhcnQiLCJzZWFyY2giLCJ0cmFuc2l0aW9ucnVuIiwidHJhbnNpdGlvbnN0YXJ0Iiwid2Via2l0YW5pbWF0aW9uZW5kIiwid2Via2l0YW5pbWF0aW9uaXRlcmF0aW9uIiwid2Via2l0YW5pbWF0aW9uc3RhcnQiLCJ3ZWJraXR0cmFuc2l0aW9uZW5kIl0sWyJhY3RpdmF0ZSIsImFmdGVydXBkYXRlIiwiYXJpYXJlcXVlc3QiLCJiZWZvcmVhY3RpdmF0ZSIsImJlZm9yZWRlYWN0aXZhdGUiLCJiZWZvcmVlZGl0Zm9jdXMiLCJiZWZvcmV1cGRhdGUiLCJjZWxsY2hhbmdlIiwiY29udHJvbHNlbGVjdCIsImRhdGFhdmFpbGFibGUiLCJkYXRhc2V0Y2hhbmdlZCIsImRhdGFzZXRjb21wbGV0ZSIsImVycm9ydXBkYXRlIiwiZmlsdGVyY2hhbmdlIiwibGF5b3V0Y29tcGxldGUiLCJsb3NlY2FwdHVyZSIsIm1vdmUiLCJtb3ZlZW5kIiwibW92ZXN0YXJ0IiwicHJvcGVydHljaGFuZ2UiLCJyZXNpemVlbmQiLCJyZXNpemVzdGFydCIsInJvd2VudGVyIiwicm93ZXhpdCIsInJvd3NkZWxldGUiLCJyb3dzaW5zZXJ0ZWQiLCJjb21tYW5kIiwiY29tcGFzc25lZWRzY2FsaWJyYXRpb24iLCJkZWFjdGl2YXRlIiwiaGVscCIsIm1zY29udGVudHpvb20iLCJtc21hbmlwdWxhdGlvbnN0YXRlY2hhbmdlZCIsIm1zZ2VzdHVyZWNoYW5nZSIsIm1zZ2VzdHVyZWRvdWJsZXRhcCIsIm1zZ2VzdHVyZWVuZCIsIm1zZ2VzdHVyZWhvbGQiLCJtc2dlc3R1cmVzdGFydCIsIm1zZ2VzdHVyZXRhcCIsIm1zZ290cG9pbnRlcmNhcHR1cmUiLCJtc2luZXJ0aWFzdGFydCIsIm1zbG9zdHBvaW50ZXJjYXB0dXJlIiwibXNwb2ludGVyY2FuY2VsIiwibXNwb2ludGVyZG93biIsIm1zcG9pbnRlcmVudGVyIiwibXNwb2ludGVyaG92ZXIiLCJtc3BvaW50ZXJsZWF2ZSIsIm1zcG9pbnRlcm1vdmUiLCJtc3BvaW50ZXJvdXQiLCJtc3BvaW50ZXJvdmVyIiwibXNwb2ludGVydXAiLCJwb2ludGVyb3V0IiwibXNzaXRlbW9kZWp1bXBsaXN0aXRlbXJlbW92ZWQiLCJtc3RodW1ibmFpbGNsaWNrIiwic3RvcCIsInN0b3JhZ2Vjb21taXQiXSk7ZnVuY3Rpb24geXQodCxlLG4pe2lmKCFufHwwPT09bi5sZW5ndGgpcmV0dXJuIGU7dmFyIHI9bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRhcmdldD09PXR9KSk7aWYoIXJ8fDA9PT1yLmxlbmd0aClyZXR1cm4gZTt2YXIgbz1yWzBdLmlnbm9yZVByb3BlcnRpZXM7cmV0dXJuIGUuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMT09PW8uaW5kZXhPZih0KX0pKX1mdW5jdGlvbiBidCh0LGUsbixyKXt0JiZNKHQseXQodCxlLG4pLHIpfWZ1bmN0aW9uIG10KHQsZSl7aWYoKCFTfHxPKSYmIVpvbmVbdC5zeW1ib2woInBhdGNoRXZlbnRzIildKXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFdlYlNvY2tldCxvPWUuX19ab25lX2lnbm9yZV9vbl9wcm9wZXJ0aWVzO2lmKEUpe3ZhciBpPXdpbmRvdyxhPVo/W3t0YXJnZXQ6aSxpZ25vcmVQcm9wZXJ0aWVzOlsiZXJyb3IiXX1dOltdO2J0KGksZ3QuY29uY2F0KFsibWVzc2FnZWVycm9yIl0pLG8/by5jb25jYXQoYSk6byxuKGkpKSxidChEb2N1bWVudC5wcm90b3R5cGUsZ3Qsbyksdm9pZCAwIT09aS5TVkdFbGVtZW50JiZidChpLlNWR0VsZW1lbnQucHJvdG90eXBlLGd0LG8pLGJ0KEVsZW1lbnQucHJvdG90eXBlLGd0LG8pLGJ0KEhUTUxFbGVtZW50LnByb3RvdHlwZSxndCxvKSxidChIVE1MTWVkaWFFbGVtZW50LnByb3RvdHlwZSx1dCxvKSxidChIVE1MRnJhbWVTZXRFbGVtZW50LnByb3RvdHlwZSxjdC5jb25jYXQoZnQpLG8pLGJ0KEhUTUxCb2R5RWxlbWVudC5wcm90b3R5cGUsY3QuY29uY2F0KGZ0KSxvKSxidChIVE1MRnJhbWVFbGVtZW50LnByb3RvdHlwZSxzdCxvKSxidChIVE1MSUZyYW1lRWxlbWVudC5wcm90b3R5cGUsc3Qsbyk7dmFyIGM9aS5IVE1MTWFycXVlZUVsZW1lbnQ7YyYmYnQoYy5wcm90b3R5cGUsbHQsbyk7dmFyIHU9aS5Xb3JrZXI7dSYmYnQodS5wcm90b3R5cGUsZHQsbyl9dmFyIHM9ZS5YTUxIdHRwUmVxdWVzdDtzJiZidChzLnByb3RvdHlwZSxwdCxvKTt2YXIgZj1lLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7ZiYmYnQoZiYmZi5wcm90b3R5cGUscHQsbyksInVuZGVmaW5lZCIhPXR5cGVvZiBJREJJbmRleCYmKGJ0KElEQkluZGV4LnByb3RvdHlwZSxodCxvKSxidChJREJSZXF1ZXN0LnByb3RvdHlwZSxodCxvKSxidChJREJPcGVuREJSZXF1ZXN0LnByb3RvdHlwZSxodCxvKSxidChJREJEYXRhYmFzZS5wcm90b3R5cGUsaHQsbyksYnQoSURCVHJhbnNhY3Rpb24ucHJvdG90eXBlLGh0LG8pLGJ0KElEQkN1cnNvci5wcm90b3R5cGUsaHQsbykpLHImJmJ0KFdlYlNvY2tldC5wcm90b3R5cGUsdnQsbyl9fWZ1bmN0aW9uIGt0KHQsZSl7dmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCkscj1uLmV2ZW50TmFtZXMsbz1uLmdsb2JhbFNvdXJjZXMsaT1uLnpvbmVTeW1ib2xFdmVudE5hbWVzLGE9bi5UUlVFX1NUUixjPW4uRkFMU0VfU1RSLHU9bi5aT05FX1NZTUJPTF9QUkVGSVgscz0iQW5jaG9yLEFyZWEsQXVkaW8sQlIsQmFzZSxCYXNlRm9udCxCb2R5LEJ1dHRvbixDYW52YXMsQ29udGVudCxETGlzdCxEaXJlY3RvcnksRGl2LEVtYmVkLEZpZWxkU2V0LEZvbnQsRm9ybSxGcmFtZSxGcmFtZVNldCxIUixIZWFkLEhlYWRpbmcsSHRtbCxJRnJhbWUsSW1hZ2UsSW5wdXQsS2V5Z2VuLExJLExhYmVsLExlZ2VuZCxMaW5rLE1hcCxNYXJxdWVlLE1lZGlhLE1lbnUsTWV0YSxNZXRlcixNb2QsT0xpc3QsT2JqZWN0LE9wdEdyb3VwLE9wdGlvbixPdXRwdXQsUGFyYWdyYXBoLFByZSxQcm9ncmVzcyxRdW90ZSxTY3JpcHQsU2VsZWN0LFNvdXJjZSxTcGFuLFN0eWxlLFRhYmxlQ2FwdGlvbixUYWJsZUNlbGwsVGFibGVDb2wsVGFibGUsVGFibGVSb3csVGFibGVTZWN0aW9uLFRleHRBcmVhLFRpdGxlLFRyYWNrLFVMaXN0LFVua25vd24sVmlkZW8iLGY9IkFwcGxpY2F0aW9uQ2FjaGUsRXZlbnRTb3VyY2UsRmlsZVJlYWRlcixJbnB1dE1ldGhvZENvbnRleHQsTWVkaWFDb250cm9sbGVyLE1lc3NhZ2VQb3J0LE5vZGUsUGVyZm9ybWFuY2UsU1ZHRWxlbWVudEluc3RhbmNlLFNoYXJlZFdvcmtlcixUZXh0VHJhY2ssVGV4dFRyYWNrQ3VlLFRleHRUcmFja0xpc3QsV2ViS2l0TmFtZWRGbG93LFdpbmRvdyxXb3JrZXIsV29ya2VyR2xvYmFsU2NvcGUsWE1MSHR0cFJlcXVlc3QsWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldCxYTUxIdHRwUmVxdWVzdFVwbG9hZCxJREJSZXF1ZXN0LElEQk9wZW5EQlJlcXVlc3QsSURCRGF0YWJhc2UsSURCVHJhbnNhY3Rpb24sSURCQ3Vyc29yLERCSW5kZXgsV2ViU29ja2V0Ii5zcGxpdCgiLCIpLGw9W10scD10Lnd0ZixoPXMuc3BsaXQoIiwiKTtwP2w9aC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiJIVE1MIit0KyJFbGVtZW50In0pKS5jb25jYXQoZik6dC5FdmVudFRhcmdldD9sLnB1c2goIkV2ZW50VGFyZ2V0Iik6bD1mO2Zvcih2YXIgdj10Ll9fWm9uZV9kaXNhYmxlX0lFX2NoZWNrfHwhMSxkPXQuX19ab25lX2VuYWJsZV9jcm9zc19jb250ZXh0X2NoZWNrfHwhMSxnPWUuaXNJRU9yRWRnZSgpLHk9ImZ1bmN0aW9uIF9fQlJPV1NFUlRPT0xTX0NPTlNPTEVfU0FGRUZVTkMoKSB7IFtuYXRpdmUgY29kZV0gfSIsYj0wO2I8ci5sZW5ndGg7YisrKXt2YXIgbT11KygoUz1yW2JdKStjKSxrPXUrKFMrYSk7aVtTXT17fSxpW1NdW2NdPW0saVtTXVthXT1rfWZvcihiPTA7YjxzLmxlbmd0aDtiKyspZm9yKHZhciBfPWhbYl0sdz1vW19dPXt9LHg9MDt4PHIubGVuZ3RoO3grKyl7dmFyIFM7d1tTPXJbeF1dPV8rIi5hZGRFdmVudExpc3RlbmVyOiIrU312YXIgRT1bXTtmb3IoYj0wO2I8bC5sZW5ndGg7YisrKXt2YXIgTz10W2xbYl1dO0UucHVzaChPJiZPLnByb3RvdHlwZSl9cmV0dXJuIGUucGF0Y2hFdmVudFRhcmdldCh0LEUse3ZoOmZ1bmN0aW9uKHQsZSxuLHIpe2lmKCF2JiZnKXtpZihkKXRyeXt2YXIgbztpZigiW29iamVjdCBGdW5jdGlvbldyYXBwZXJdIj09PShvPWUudG9TdHJpbmcoKSl8fG89PXkpcmV0dXJuIHQuYXBwbHkobixyKSwhMX1jYXRjaChpKXtyZXR1cm4gdC5hcHBseShuLHIpLCExfWVsc2UgaWYoIltvYmplY3QgRnVuY3Rpb25XcmFwcGVyXSI9PT0obz1lLnRvU3RyaW5nKCkpfHxvPT15KXJldHVybiB0LmFwcGx5KG4sciksITF9ZWxzZSBpZihkKXRyeXtlLnRvU3RyaW5nKCl9Y2F0Y2goaSl7cmV0dXJuIHQuYXBwbHkobixyKSwhMX1yZXR1cm4hMH19KSxab25lW2Uuc3ltYm9sKCJwYXRjaEV2ZW50VGFyZ2V0IildPSEhdC5FdmVudFRhcmdldCwhMH1mdW5jdGlvbiBfdCh0LGUpe3ZhciBuPXQuZ2V0R2xvYmFsT2JqZWN0cygpO2lmKCghbi5pc05vZGV8fG4uaXNNaXgpJiYhZnVuY3Rpb24odCxlKXt2YXIgbj10LmdldEdsb2JhbE9iamVjdHMoKTtpZigobi5pc0Jyb3dzZXJ8fG4uaXNNaXgpJiYhdC5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTEVsZW1lbnQucHJvdG90eXBlLCJvbmNsaWNrIikmJiJ1bmRlZmluZWQiIT10eXBlb2YgRWxlbWVudCl7dmFyIHI9dC5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siKTtpZihyJiYhci5jb25maWd1cmFibGUpcmV0dXJuITE7aWYocil7dC5PYmplY3REZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiEwfX0pO3ZhciBvPSEhZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikub25jbGljaztyZXR1cm4gdC5PYmplY3REZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIsciksb319dmFyIGk9ZS5YTUxIdHRwUmVxdWVzdDtpZighaSlyZXR1cm4hMTt2YXIgYT1pLnByb3RvdHlwZSxjPXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsIm9ucmVhZHlzdGF0ZWNoYW5nZSIpO2lmKGMpcmV0dXJuIHQuT2JqZWN0RGVmaW5lUHJvcGVydHkoYSwib25yZWFkeXN0YXRlY2hhbmdlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSksbz0hIShzPW5ldyBpKS5vbnJlYWR5c3RhdGVjaGFuZ2UsdC5PYmplY3REZWZpbmVQcm9wZXJ0eShhLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGN8fHt9KSxvO3ZhciB1PXQuc3ltYm9sKCJmYWtlIik7dC5PYmplY3REZWZpbmVQcm9wZXJ0eShhLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t1XX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXNbdV09dH19KTt2YXIgcz1uZXcgaSxmPWZ1bmN0aW9uKCl7fTtyZXR1cm4gcy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZixvPXNbdV09PT1mLHMub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsb30odCxlKSl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBXZWJTb2NrZXQ7IWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmdldEdsb2JhbE9iamVjdHMoKS5ldmVudE5hbWVzLG49dC5zeW1ib2woInVuYm91bmQiKSxyPWZ1bmN0aW9uKHIpe3ZhciBvPWVbcl0saT0ib24iK287c2VsZi5hZGRFdmVudExpc3RlbmVyKG8sKGZ1bmN0aW9uKGUpe3ZhciByLG8sYT1lLnRhcmdldDtmb3Iobz1hP2EuY29uc3RydWN0b3IubmFtZSsiLiIraToidW5rbm93bi4iK2k7YTspYVtpXSYmIWFbaV1bbl0mJigocj10LndyYXBXaXRoQ3VycmVudFpvbmUoYVtpXSxvKSlbbl09YVtpXSxhW2ldPXIpLGE9YS5wYXJlbnRFbGVtZW50fSksITApfSxvPTA7bzxlLmxlbmd0aDtvKyspcihvKX0odCksdC5wYXRjaENsYXNzKCJYTUxIdHRwUmVxdWVzdCIpLHImJmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5nZXRHbG9iYWxPYmplY3RzKCkscj1uLkFERF9FVkVOVF9MSVNURU5FUl9TVFIsbz1uLlJFTU9WRV9FVkVOVF9MSVNURU5FUl9TVFIsaT1lLldlYlNvY2tldDtlLkV2ZW50VGFyZ2V0fHx0LnBhdGNoRXZlbnRUYXJnZXQoZSxbaS5wcm90b3R5cGVdKSxlLldlYlNvY2tldD1mdW5jdGlvbihlLG4pe3ZhciBhLGMsdT1hcmd1bWVudHMubGVuZ3RoPjE/bmV3IGkoZSxuKTpuZXcgaShlKSxzPXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHUsIm9ubWVzc2FnZSIpO3JldHVybiBzJiYhMT09PXMuY29uZmlndXJhYmxlPyhhPXQuT2JqZWN0Q3JlYXRlKHUpLGM9dSxbcixvLCJzZW5kIiwiY2xvc2UiXS5mb3JFYWNoKChmdW5jdGlvbihlKXthW2VdPWZ1bmN0aW9uKCl7dmFyIG49dC5BcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZihlPT09cnx8ZT09PW8pe3ZhciBpPW4ubGVuZ3RoPjA/blswXTp2b2lkIDA7aWYoaSl7dmFyIGM9Wm9uZS5fX3N5bWJvbF9fKCJPTl9QUk9QRVJUWSIraSk7dVtjXT1hW2NdfX1yZXR1cm4gdVtlXS5hcHBseSh1LG4pfX0pKSk6YT11LHQucGF0Y2hPblByb3BlcnRpZXMoYSxbImNsb3NlIiwiZXJyb3IiLCJtZXNzYWdlIiwib3BlbiJdLGMpLGF9O3ZhciBhPWUuV2ViU29ja2V0O2Zvcih2YXIgYyBpbiBpKWFbY109aVtjXX0odCxlKSxab25lW3Quc3ltYm9sKCJwYXRjaEV2ZW50cyIpXT0hMH19Wm9uZS5fX2xvYWRfcGF0Y2goInV0aWwiLChmdW5jdGlvbihuLHIsdSl7dS5wYXRjaE9uUHJvcGVydGllcz1NLHUucGF0Y2hNZXRob2Q9Tix1LmJpbmRBcmd1bWVudHM9Xyx1LnBhdGNoTWFjcm9UYXNrPUE7dmFyIHM9ci5fX3N5bWJvbF9fKCJCTEFDS19MSVNURURfRVZFTlRTIiksdj1yLl9fc3ltYm9sX18oIlVOUEFUQ0hFRF9FVkVOVFMiKTtuW3ZdJiYobltzXT1uW3ZdKSxuW3NdJiYocltzXT1yW3ZdPW5bc10pLHUucGF0Y2hFdmVudFByb3RvdHlwZT1xLHUucGF0Y2hFdmVudFRhcmdldD1YLHUuaXNJRU9yRWRnZT1DLHUuT2JqZWN0RGVmaW5lUHJvcGVydHk9ZSx1Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcj10LHUuT2JqZWN0Q3JlYXRlPW8sdS5BcnJheVNsaWNlPWksdS5wYXRjaENsYXNzPUQsdS53cmFwV2l0aEN1cnJlbnRab25lPWgsdS5maWx0ZXJQcm9wZXJ0aWVzPXl0LHUuYXR0YWNoT3JpZ2luVG9QYXRjaGVkPUwsdS5fcmVkZWZpbmVQcm9wZXJ0eT1ydCx1LnBhdGNoQ2FsbGJhY2tzPVEsdS5nZXRHbG9iYWxPYmplY3RzPWZ1bmN0aW9uKCl7cmV0dXJue2dsb2JhbFNvdXJjZXM6Qix6b25lU3ltYm9sRXZlbnROYW1lczpILGV2ZW50TmFtZXM6Z3QsaXNCcm93c2VyOkUsaXNNaXg6Tyxpc05vZGU6UyxUUlVFX1NUUjpmLEZBTFNFX1NUUjpsLFpPTkVfU1lNQk9MX1BSRUZJWDpwLEFERF9FVkVOVF9MSVNURU5FUl9TVFI6YSxSRU1PVkVfRVZFTlRfTElTVEVORVJfU1RSOmN9fX0pKSxmdW5jdGlvbih0KXt0Ll9fem9uZV9zeW1ib2xfX2xlZ2FjeVBhdGNoPWZ1bmN0aW9uKCl7dmFyIGU9dC5ab25lO2UuX19sb2FkX3BhdGNoKCJyZWdpc3RlckVsZW1lbnQiLChmdW5jdGlvbih0LGUsbil7IWZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCk7KG4uaXNCcm93c2VyfHxuLmlzTWl4KSYmInJlZ2lzdGVyRWxlbWVudCJpbiB0LmRvY3VtZW50JiZlLnBhdGNoQ2FsbGJhY2tzKGUsZG9jdW1lbnQsIkRvY3VtZW50IiwicmVnaXN0ZXJFbGVtZW50IixbImNyZWF0ZWRDYWxsYmFjayIsImF0dGFjaGVkQ2FsbGJhY2siLCJkZXRhY2hlZENhbGxiYWNrIiwiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIl0pfSh0LG4pfSkpLGUuX19sb2FkX3BhdGNoKCJFdmVudFRhcmdldExlZ2FjeSIsKGZ1bmN0aW9uKHQsZSxuKXtrdCh0LG4pLF90KG4sdCl9KSl9fSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93fHwidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fGdsb2JhbCk7dmFyIHd0PWQoInpvbmVUYXNrIik7ZnVuY3Rpb24geHQodCxlLG4scil7dmFyIG89bnVsbCxpPW51bGw7bis9cjt2YXIgYT17fTtmdW5jdGlvbiBjKGUpe3ZhciBuPWUuZGF0YTtyZXR1cm4gbi5hcmdzWzBdPWZ1bmN0aW9uKCl7dHJ5e2UuaW52b2tlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e2UuZGF0YSYmZS5kYXRhLmlzUGVyaW9kaWN8fCgibnVtYmVyIj09dHlwZW9mIG4uaGFuZGxlSWQ/ZGVsZXRlIGFbbi5oYW5kbGVJZF06bi5oYW5kbGVJZCYmKG4uaGFuZGxlSWRbd3RdPW51bGwpKX19LG4uaGFuZGxlSWQ9by5hcHBseSh0LG4uYXJncyksZX1mdW5jdGlvbiB1KHQpe3JldHVybiBpKHQuZGF0YS5oYW5kbGVJZCl9bz1OKHQsZSs9ciwoZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKG8saSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGlbMF0pe3ZhciBzPXYoZSxpWzBdLHtpc1BlcmlvZGljOiJJbnRlcnZhbCI9PT1yLGRlbGF5OiJUaW1lb3V0Ij09PXJ8fCJJbnRlcnZhbCI9PT1yP2lbMV18fDA6dm9pZCAwLGFyZ3M6aX0sYyx1KTtpZighcylyZXR1cm4gczt2YXIgZj1zLmRhdGEuaGFuZGxlSWQ7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBmP2FbZl09czpmJiYoZlt3dF09cyksZiYmZi5yZWYmJmYudW5yZWYmJiJmdW5jdGlvbiI9PXR5cGVvZiBmLnJlZiYmImZ1bmN0aW9uIj09dHlwZW9mIGYudW5yZWYmJihzLnJlZj1mLnJlZi5iaW5kKGYpLHMudW5yZWY9Zi51bnJlZi5iaW5kKGYpKSwibnVtYmVyIj09dHlwZW9mIGZ8fGY/ZjpzfXJldHVybiBuLmFwcGx5KHQsaSl9fSkpLGk9Tih0LG4sKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuLHIpe3ZhciBvLGk9clswXTsibnVtYmVyIj09dHlwZW9mIGk/bz1hW2ldOihvPWkmJmlbd3RdKXx8KG89aSksbyYmInN0cmluZyI9PXR5cGVvZiBvLnR5cGU/Im5vdFNjaGVkdWxlZCIhPT1vLnN0YXRlJiYoby5jYW5jZWxGbiYmby5kYXRhLmlzUGVyaW9kaWN8fDA9PT1vLnJ1bkNvdW50KSYmKCJudW1iZXIiPT10eXBlb2YgaT9kZWxldGUgYVtpXTppJiYoaVt3dF09bnVsbCksby56b25lLmNhbmNlbFRhc2sobykpOmUuYXBwbHkodCxyKX19KSl9ZnVuY3Rpb24gU3QodCxlKXtpZighWm9uZVtlLnN5bWJvbCgicGF0Y2hFdmVudFRhcmdldCIpXSl7Zm9yKHZhciBuPWUuZ2V0R2xvYmFsT2JqZWN0cygpLHI9bi5ldmVudE5hbWVzLG89bi56b25lU3ltYm9sRXZlbnROYW1lcyxpPW4uVFJVRV9TVFIsYT1uLkZBTFNFX1NUUixjPW4uWk9ORV9TWU1CT0xfUFJFRklYLHU9MDt1PHIubGVuZ3RoO3UrKyl7dmFyIHM9clt1XSxmPWMrKHMrYSksbD1jKyhzK2kpO29bc109e30sb1tzXVthXT1mLG9bc11baV09bH12YXIgcD10LkV2ZW50VGFyZ2V0O2lmKHAmJnAucHJvdG90eXBlKXJldHVybiBlLnBhdGNoRXZlbnRUYXJnZXQodCxbcCYmcC5wcm90b3R5cGVdKSwhMH19Wm9uZS5fX2xvYWRfcGF0Y2goImxlZ2FjeSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXRbWm9uZS5fX3N5bWJvbF9fKCJsZWdhY3lQYXRjaCIpXTtlJiZlKCl9KSksWm9uZS5fX2xvYWRfcGF0Y2goInRpbWVycyIsKGZ1bmN0aW9uKHQpe3h0KHQsInNldCIsImNsZWFyIiwiVGltZW91dCIpLHh0KHQsInNldCIsImNsZWFyIiwiSW50ZXJ2YWwiKSx4dCh0LCJzZXQiLCJjbGVhciIsIkltbWVkaWF0ZSIpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLChmdW5jdGlvbih0KXt4dCh0LCJyZXF1ZXN0IiwiY2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKSx4dCh0LCJtb3pSZXF1ZXN0IiwibW96Q2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKSx4dCh0LCJ3ZWJraXRSZXF1ZXN0Iiwid2Via2l0Q2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKX0pKSxab25lLl9fbG9hZF9wYXRjaCgiYmxvY2tpbmciLChmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1bImFsZXJ0IiwicHJvbXB0IiwiY29uZmlybSJdLHI9MDtyPG4ubGVuZ3RoO3IrKylOKHQsbltyXSwoZnVuY3Rpb24obixyLG8pe3JldHVybiBmdW5jdGlvbihyLGkpe3JldHVybiBlLmN1cnJlbnQucnVuKG4sdCxpLG8pfX0pKX0pKSxab25lLl9fbG9hZF9wYXRjaCgiRXZlbnRUYXJnZXQiLChmdW5jdGlvbih0LGUsbil7IWZ1bmN0aW9uKHQsZSl7ZS5wYXRjaEV2ZW50UHJvdG90eXBlKHQsZSl9KHQsbiksU3QodCxuKTt2YXIgcj10LlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7ciYmci5wcm90b3R5cGUmJm4ucGF0Y2hFdmVudFRhcmdldCh0LFtyLnByb3RvdHlwZV0pLEQoIk11dGF0aW9uT2JzZXJ2ZXIiKSxEKCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIiksRCgiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiKSxEKCJGaWxlUmVhZGVyIil9KSksWm9uZS5fX2xvYWRfcGF0Y2goIm9uX3Byb3BlcnR5IiwoZnVuY3Rpb24odCxlLG4pe210KG4sdCksT2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKHQsZSxuKXtpZihvdCh0LGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhc3NpZ24gdG8gcmVhZCBvbmx5IHByb3BlcnR5ICciK2UrIicgb2YgIit0KTt2YXIgcj1uLmNvbmZpZ3VyYWJsZTtyZXR1cm4icHJvdG90eXBlIiE9PWUmJihuPWl0KHQsZSxuKSksYXQodCxlLG4scil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4sZVtuXSl9KSksdH0sT2JqZWN0LmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiJvYmplY3QiIT10eXBlb2YgZXx8T2JqZWN0LmlzRnJvemVuKGUpfHxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihuKXtlW25dPWl0KHQsbixlW25dKX0pKSxldCh0LGUpfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWZ1bmN0aW9uKHQsZSl7dmFyIG49dHQodCxlKTtyZXR1cm4gbiYmb3QodCxlKSYmKG4uY29uZmlndXJhYmxlPSExKSxufX0pKSxab25lLl9fbG9hZF9wYXRjaCgiY3VzdG9tRWxlbWVudHMiLChmdW5jdGlvbih0LGUsbil7IWZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCk7KG4uaXNCcm93c2VyfHxuLmlzTWl4KSYmdC5jdXN0b21FbGVtZW50cyYmImN1c3RvbUVsZW1lbnRzImluIHQmJmUucGF0Y2hDYWxsYmFja3MoZSx0LmN1c3RvbUVsZW1lbnRzLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSIsWyJjb25uZWN0ZWRDYWxsYmFjayIsImRpc2Nvbm5lY3RlZENhbGxiYWNrIiwiYWRvcHRlZENhbGxiYWNrIiwiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIl0pfSh0LG4pfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJYSFIiLChmdW5jdGlvbih0LGUpeyFmdW5jdGlvbih0KXt2YXIgZj10LlhNTEh0dHBSZXF1ZXN0O2lmKGYpe3ZhciBsPWYucHJvdG90eXBlLHA9bFt1XSxoPWxbc107aWYoIXApe3ZhciBnPXQuWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtpZihnKXt2YXIgeT1nLnByb3RvdHlwZTtwPXlbdV0saD15W3NdfX12YXIgYj0icmVhZHlzdGF0ZWNoYW5nZSIsbT0ic2NoZWR1bGVkIixrPU4obCwib3BlbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbcl09MD09ZVsyXSx0W2FdPWVbMV0say5hcHBseSh0LGUpfX0pKSxfPWQoImZldGNoVGFza0Fib3J0aW5nIiksdz1kKCJmZXRjaFRhc2tTY2hlZHVsaW5nIikseD1OKGwsInNlbmQiLChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LG4pe2lmKCEwPT09ZS5jdXJyZW50W3ddKXJldHVybiB4LmFwcGx5KHQsbik7aWYodFtyXSlyZXR1cm4geC5hcHBseSh0LG4pO3ZhciBvPXt0YXJnZXQ6dCx1cmw6dFthXSxpc1BlcmlvZGljOiExLGFyZ3M6bixhYm9ydGVkOiExfSxpPXYoIlhNTEh0dHBSZXF1ZXN0LnNlbmQiLE8sbyxFLFQpO3QmJiEwPT09dFtjXSYmIW8uYWJvcnRlZCYmaS5zdGF0ZT09PW0mJmkuaW52b2tlKCl9fSkpLFM9TihsLCJhYm9ydCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQscil7dmFyIG89dFtuXTtpZihvJiYic3RyaW5nIj09dHlwZW9mIG8udHlwZSl7aWYobnVsbD09by5jYW5jZWxGbnx8by5kYXRhJiZvLmRhdGEuYWJvcnRlZClyZXR1cm47by56b25lLmNhbmNlbFRhc2sobyl9ZWxzZSBpZighMD09PWUuY3VycmVudFtfXSlyZXR1cm4gUy5hcHBseSh0LHIpfX0pKX1mdW5jdGlvbiBFKHQpe3ZhciBlPXQuZGF0YSxyPWUudGFyZ2V0O3JbaV09ITEscltjXT0hMTt2YXIgYT1yW29dO3B8fChwPXJbdV0saD1yW3NdKSxhJiZoLmNhbGwocixiLGEpO3ZhciBmPXJbb109ZnVuY3Rpb24oKXtpZihyLnJlYWR5U3RhdGU9PT1yLkRPTkUpaWYoIWUuYWJvcnRlZCYmcltpXSYmdC5zdGF0ZT09PW0pe3ZhciBuPXIuX196b25lX3N5bWJvbF9fbG9hZGZhbHNlO2lmKG4mJm4ubGVuZ3RoPjApe3ZhciBvPXQuaW52b2tlO3QuaW52b2tlPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPXIuX196b25lX3N5bWJvbF9fbG9hZGZhbHNlLGk9MDtpPG4ubGVuZ3RoO2krKyluW2ldPT09dCYmbi5zcGxpY2UoaSwxKTtlLmFib3J0ZWR8fHQuc3RhdGUhPT1tfHxvLmNhbGwodCl9LG4ucHVzaCh0KX1lbHNlIHQuaW52b2tlKCl9ZWxzZSBlLmFib3J0ZWR8fCExIT09cltpXXx8KHJbY109ITApfTtyZXR1cm4gcC5jYWxsKHIsYixmKSxyW25dfHwocltuXT10KSx4LmFwcGx5KHIsZS5hcmdzKSxyW2ldPSEwLHR9ZnVuY3Rpb24gTygpe31mdW5jdGlvbiBUKHQpe3ZhciBlPXQuZGF0YTtyZXR1cm4gZS5hYm9ydGVkPSEwLFMuYXBwbHkoZS50YXJnZXQsZS5hcmdzKX19KHQpO3ZhciBuPWQoInhoclRhc2siKSxyPWQoInhoclN5bmMiKSxvPWQoInhockxpc3RlbmVyIiksaT1kKCJ4aHJTY2hlZHVsZWQiKSxhPWQoInhoclVSTCIpLGM9ZCgieGhyRXJyb3JCZWZvcmVTY2hlZHVsZWQiKX0pKSxab25lLl9fbG9hZF9wYXRjaCgiZ2VvbG9jYXRpb24iLChmdW5jdGlvbihlKXtlLm5hdmlnYXRvciYmZS5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24mJmZ1bmN0aW9uKGUsbil7Zm9yKHZhciByPWUuY29uc3RydWN0b3IubmFtZSxvPWZ1bmN0aW9uKG8pe3ZhciBpPW5bb10sYT1lW2ldO2lmKGEpe2lmKCF3KHQoZSxpKSkpcmV0dXJuImNvbnRpbnVlIjtlW2ldPWZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxfKGFyZ3VtZW50cyxyKyIuIitpKSl9O3JldHVybiBMKGUsdCksZX0oYSl9fSxpPTA7aTxuLmxlbmd0aDtpKyspbyhpKX0oZS5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24sWyJnZXRDdXJyZW50UG9zaXRpb24iLCJ3YXRjaFBvc2l0aW9uIl0pfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJQcm9taXNlUmVqZWN0aW9uRXZlbnQiLChmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe1kodCxlKS5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgbz10LlByb21pc2VSZWplY3Rpb25FdmVudDtpZihvKXt2YXIgaT1uZXcgbyhlLHs="
3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ: qwe?styles.css?5?0: "base64:KHdpbmRvdy53ZWJwYWNrSnNvbnA9d2luZG93LndlYnBhY2tKc29ucHx8W10pLnB1c2goW1szXSx7Iisyb1AiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiaGgxdiIpLGk9bigiNkxXQSIpLGE9bigiSTh2aCIpLGM9bigiVU1TUSIpLHU9bigiL0dxVSIpLHM9bigiaEJqTiIpLGY9bigiSGQ1ZiIpLGw9bigidGlLcCIpKCJzcGVjaWVzIikscD1bXS5zbGljZSxoPU1hdGgubWF4O3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohZigic2xpY2UiKX0se3NsaWNlOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixmLHY9dSh0aGlzKSxkPWModi5sZW5ndGgpLGc9YSh0LGQpLHk9YSh2b2lkIDA9PT1lP2Q6ZSxkKTtpZihpKHYpJiYoImZ1bmN0aW9uIiE9dHlwZW9mKG49di5jb25zdHJ1Y3Rvcil8fG4hPT1BcnJheSYmIWkobi5wcm90b3R5cGUpP28obikmJm51bGw9PT0obj1uW2xdKSYmKG49dm9pZCAwKTpuPXZvaWQgMCxuPT09QXJyYXl8fHZvaWQgMD09PW4pKXJldHVybiBwLmNhbGwodixnLHkpO2ZvcihyPW5ldyh2b2lkIDA9PT1uP0FycmF5Om4pKGgoeS1nLDApKSxmPTA7Zzx5O2crKyxmKyspZyBpbiB2JiZzKHIsZix2W2ddKTtyZXR1cm4gci5sZW5ndGg9ZixyfX0pfSwiK01MeCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkhBdU0iKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2lmKHIodCksdm9pZCAwPT09ZSlyZXR1cm4gdDtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmNhbGwoZSl9O2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQuY2FsbChlLG4pfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKG4scil7cmV0dXJuIHQuY2FsbChlLG4scil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24obixyLG8pe3JldHVybiB0LmNhbGwoZSxuLHIsbyl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKX19fSwiLzV6bSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oImpyVXYiKSxpPU1hdGguY29zaCxhPU1hdGguYWJzLGM9TWF0aC5FO3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMCxmb3JjZWQ6IWl8fGkoNzEwKT09PTEvMH0se2Nvc2g6ZnVuY3Rpb24odCl7dmFyIGU9byhhKHQpLTEpKzE7cmV0dXJuKGUrMS8oZSpjKmMpKSooYy8yKX19KX0sIi9HcVUiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJSSzN0Iiksbz1uKCJIWUFGIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByKG8odCkpfX0sIi9ieXQiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPXtDU1NSdWxlTGlzdDowLENTU1N0eWxlRGVjbGFyYXRpb246MCxDU1NWYWx1ZUxpc3Q6MCxDbGllbnRSZWN0TGlzdDowLERPTVJlY3RMaXN0OjAsRE9NU3RyaW5nTGlzdDowLERPTVRva2VuTGlzdDoxLERhdGFUcmFuc2Zlckl0ZW1MaXN0OjAsRmlsZUxpc3Q6MCxIVE1MQWxsQ29sbGVjdGlvbjowLEhUTUxDb2xsZWN0aW9uOjAsSFRNTEZvcm1FbGVtZW50OjAsSFRNTFNlbGVjdEVsZW1lbnQ6MCxNZWRpYUxpc3Q6MCxNaW1lVHlwZUFycmF5OjAsTmFtZWROb2RlTWFwOjAsTm9kZUxpc3Q6MSxQYWludFJlcXVlc3RMaXN0OjAsUGx1Z2luOjAsUGx1Z2luQXJyYXk6MCxTVkdMZW5ndGhMaXN0OjAsU1ZHTnVtYmVyTGlzdDowLFNWR1BhdGhTZWdMaXN0OjAsU1ZHUG9pbnRMaXN0OjAsU1ZHU3RyaW5nTGlzdDowLFNWR1RyYW5zZm9ybUxpc3Q6MCxTb3VyY2VCdWZmZXJMaXN0OjAsU3R5bGVTaGVldExpc3Q6MCxUZXh0VHJhY2tDdWVMaXN0OjAsVGV4dFRyYWNrTGlzdDowLFRvdWNoTGlzdDowfX0sIi9xbW4iOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIik7dC5leHBvcnRzPXIuUHJvbWlzZX0sIjA3ZDciOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJidXNFIiksbz1uKCJzRUZYIiksaT1PYmplY3QucHJvdG90eXBlO28hPT1pLnRvU3RyaW5nJiZyKGksInRvU3RyaW5nIixvLHt1bnNhZmU6ITB9KX0sIjBCSzIiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPXt9fSwiMERreSI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKGUpe3JldHVybiEwfX19LCIwR2JZIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiUW85bCIpLG89bigiMm9SbyIpLGk9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp2b2lkIDB9O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/aShyW3RdKXx8aShvW3RdKTpyW3RdJiZyW3RdW2VdfHxvW3RdJiZvW3RdW2VdfX0sIjBUV3AiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJtclNHIikuX192YWx1ZXM7IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiOyFmdW5jdGlvbih0KXt2YXIgZT10LnBlcmZvcm1hbmNlO2Z1bmN0aW9uIG4odCl7ZSYmZS5tYXJrJiZlLm1hcmsodCl9ZnVuY3Rpb24gcih0LG4pe2UmJmUubWVhc3VyZSYmZS5tZWFzdXJlKHQsbil9bigiWm9uZSIpO3ZhciBvPSEwPT09dC5fX3pvbmVfc3ltYm9sX19mb3JjZUR1cGxpY2F0ZVpvbmVDaGVjaztpZih0LlpvbmUpe2lmKG98fCJmdW5jdGlvbiIhPXR5cGVvZiB0LlpvbmUuX19zeW1ib2xfXyl0aHJvdyBuZXcgRXJyb3IoIlpvbmUgYWxyZWFkeSBsb2FkZWQuIik7cmV0dXJuIHQuWm9uZX12YXIgaSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LGUpe3RoaXMuX3BhcmVudD10LHRoaXMuX25hbWU9ZT9lLm5hbWV8fCJ1bm5hbWVkIjoiPHJvb3Q+Iix0aGlzLl9wcm9wZXJ0aWVzPWUmJmUucHJvcGVydGllc3x8e30sdGhpcy5fem9uZURlbGVnYXRlPW5ldyB1KHRoaXMsdGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuX3pvbmVEZWxlZ2F0ZSxlKX1yZXR1cm4gZS5hc3NlcnRab25lUGF0Y2hlZD1mdW5jdGlvbigpe2lmKHQuUHJvbWlzZSE9PVQuWm9uZUF3YXJlUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQgWm9uZUF3YXJlUHJvbWlzZSBgKHdpbmRvd3xnbG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3cml0dGVuLlxuTW9zdCBsaWtlbHkgY2F1c2UgaXMgdGhhdCBhIFByb21pc2UgcG9seWZpbGwgaGFzIGJlZW4gbG9hZGVkIGFmdGVyIFpvbmUuanMgKFBvbHlmaWxsaW5nIFByb21pc2UgYXBpIGlzIG5vdCBuZWNlc3Nhcnkgd2hlbiB6b25lLmpzIGlzIGxvYWRlZC4gSWYgeW91IG11c3QgbG9hZCBvbmUsIGRvIHNvIGJlZm9yZSBsb2FkaW5nIHpvbmUuanMuKSIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicm9vdCIse2dldDpmdW5jdGlvbigpe2Zvcih2YXIgdD1lLmN1cnJlbnQ7dC5wYXJlbnQ7KXQ9dC5wYXJlbnQ7cmV0dXJuIHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImN1cnJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gai56b25lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJjdXJyZW50VGFzayIse2dldDpmdW5jdGlvbigpe3JldHVybiBNfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUuX19sb2FkX3BhdGNoPWZ1bmN0aW9uKGksYSl7aWYoVC5oYXNPd25Qcm9wZXJ0eShpKSl7aWYobyl0aHJvdyBFcnJvcigiQWxyZWFkeSBsb2FkZWQgcGF0Y2g6ICIraSl9ZWxzZSBpZighdFsiX19ab25lX2Rpc2FibGVfIitpXSl7dmFyIGM9IlpvbmU6IitpO24oYyksVFtpXT1hKHQsZSxJKSxyKGMsYyl9fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhcmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJlbnR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJuYW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25hbWV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0Wm9uZVdpdGgodCk7aWYoZSlyZXR1cm4gZS5fcHJvcGVydGllc1t0XX0sZS5wcm90b3R5cGUuZ2V0Wm9uZVdpdGg9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXM7ZTspe2lmKGUuX3Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIGU7ZT1lLl9wYXJlbnR9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmZvcms9ZnVuY3Rpb24odCl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJab25lU3BlYyByZXF1aXJlZCEiKTtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmZvcmsodGhpcyx0KX0sZS5wcm90b3R5cGUud3JhcD1mdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiRXhwZWN0aW5nIGZ1bmN0aW9uIGdvdDogIit0KTt2YXIgbj10aGlzLl96b25lRGVsZWdhdGUuaW50ZXJjZXB0KHRoaXMsdCxlKSxyPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHIucnVuR3VhcmRlZChuLHRoaXMsYXJndW1lbnRzLGUpfX0sZS5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKHQsZSxuLHIpe2o9e3BhcmVudDpqLHpvbmU6dGhpc307dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsdCxlLG4scil9ZmluYWxseXtqPWoucGFyZW50fX0sZS5wcm90b3R5cGUucnVuR3VhcmRlZD1mdW5jdGlvbih0LGUsbixyKXt2b2lkIDA9PT1lJiYoZT1udWxsKSxqPXtwYXJlbnQ6aix6b25lOnRoaXN9O3RyeXt0cnl7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyx0LGUsbixyKX1jYXRjaChvKXtpZih0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyxvKSl0aHJvdyBvfX1maW5hbGx5e2o9ai5wYXJlbnR9fSxlLnByb3RvdHlwZS5ydW5UYXNrPWZ1bmN0aW9uKHQsZSxuKXtpZih0LnpvbmUhPXRoaXMpdGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2FuIG9ubHkgYmUgcnVuIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246ICIrKHQuem9uZXx8eSkubmFtZSsiOyBFeGVjdXRpb246ICIrdGhpcy5uYW1lKyIpIik7aWYodC5zdGF0ZSE9PWJ8fHQudHlwZSE9PU8mJnQudHlwZSE9PUUpe3ZhciByPXQuc3RhdGUhPV87ciYmdC5fdHJhbnNpdGlvblRvKF8sayksdC5ydW5Db3VudCsrO3ZhciBvPU07TT10LGo9e3BhcmVudDpqLHpvbmU6dGhpc307dHJ5e3QudHlwZT09RSYmdC5kYXRhJiYhdC5kYXRhLmlzUGVyaW9kaWMmJih0LmNhbmNlbEZuPXZvaWQgMCk7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlVGFzayh0aGlzLHQsZSxuKX1jYXRjaChpKXtpZih0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyxpKSl0aHJvdyBpfX1maW5hbGx5e3Quc3RhdGUhPT1iJiZ0LnN0YXRlIT09eCYmKHQudHlwZT09T3x8dC5kYXRhJiZ0LmRhdGEuaXNQZXJpb2RpYz9yJiZ0Ll90cmFuc2l0aW9uVG8oayxfKToodC5ydW5Db3VudD0wLHRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LC0xKSxyJiZ0Ll90cmFuc2l0aW9uVG8oYixfLGIpKSksaj1qLnBhcmVudCxNPW99fX0sZS5wcm90b3R5cGUuc2NoZWR1bGVUYXNrPWZ1bmN0aW9uKHQpe2lmKHQuem9uZSYmdC56b25lIT09dGhpcylmb3IodmFyIGU9dGhpcztlOyl7aWYoZT09PXQuem9uZSl0aHJvdyBFcnJvcigiY2FuIG5vdCByZXNjaGVkdWxlIHRhc2sgdG8gIit0aGlzLm5hbWUrIiB3aGljaCBpcyBkZXNjZW5kYW50cyBvZiB0aGUgb3JpZ2luYWwgem9uZSAiK3Quem9uZS5uYW1lKTtlPWUucGFyZW50fXQuX3RyYW5zaXRpb25UbyhtLGIpO3ZhciBuPVtdO3QuX3pvbmVEZWxlZ2F0ZXM9bix0Ll96b25lPXRoaXM7dHJ5e3Q9dGhpcy5fem9uZURlbGVnYXRlLnNjaGVkdWxlVGFzayh0aGlzLHQpfWNhdGNoKHIpe3Rocm93IHQuX3RyYW5zaXRpb25Ubyh4LG0sYiksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMscikscn1yZXR1cm4gdC5fem9uZURlbGVnYXRlcz09PW4mJnRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LDEpLHQuc3RhdGU9PW0mJnQuX3RyYW5zaXRpb25UbyhrLG0pLHR9LGUucHJvdG90eXBlLnNjaGVkdWxlTWljcm9UYXNrPWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgcyhTLHQsZSxuLHIsdm9pZCAwKSl9LGUucHJvdG90eXBlLnNjaGVkdWxlTWFjcm9UYXNrPWZ1bmN0aW9uKHQsZSxuLHIsbyl7cmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBzKEUsdCxlLG4scixvKSl9LGUucHJvdG90eXBlLnNjaGVkdWxlRXZlbnRUYXNrPWZ1bmN0aW9uKHQsZSxuLHIsbyl7cmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBzKE8sdCxlLG4scixvKSl9LGUucHJvdG90eXBlLmNhbmNlbFRhc2s9ZnVuY3Rpb24odCl7aWYodC56b25lIT10aGlzKXRocm93IG5ldyBFcnJvcigiQSB0YXNrIGNhbiBvbmx5IGJlIGNhbmNlbGxlZCBpbiB0aGUgem9uZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiAiKyh0LnpvbmV8fHkpLm5hbWUrIjsgRXhlY3V0aW9uOiAiK3RoaXMubmFtZSsiKSIpO3QuX3RyYW5zaXRpb25Ubyh3LGssXyk7dHJ5e3RoaXMuX3pvbmVEZWxlZ2F0ZS5jYW5jZWxUYXNrKHRoaXMsdCl9Y2F0Y2goZSl7dGhyb3cgdC5fdHJhbnNpdGlvblRvKHgsdyksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsZSksZX1yZXR1cm4gdGhpcy5fdXBkYXRlVGFza0NvdW50KHQsLTEpLHQuX3RyYW5zaXRpb25UbyhiLHcpLHQucnVuQ291bnQ9MCx0fSxlLnByb3RvdHlwZS5fdXBkYXRlVGFza0NvdW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5fem9uZURlbGVnYXRlczstMT09ZSYmKHQuX3pvbmVEZWxlZ2F0ZXM9bnVsbCk7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspbltyXS5fdXBkYXRlVGFza0NvdW50KHQudHlwZSxlKX0sZS5fX3N5bWJvbF9fPVIsZX0oKSxjPXtuYW1lOiIiLG9uSGFzVGFzazpmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdC5oYXNUYXNrKG4scil9LG9uU2NoZWR1bGVUYXNrOmZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0LnNjaGVkdWxlVGFzayhuLHIpfSxvbkludm9rZVRhc2s6ZnVuY3Rpb24odCxlLG4scixvLGkpe3JldHVybiB0Lmludm9rZVRhc2sobixyLG8saSl9LG9uQ2FuY2VsVGFzazpmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdC5jYW5jZWxUYXNrKG4scil9fSx1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fdGFza0NvdW50cz17bWljcm9UYXNrOjAsbWFjcm9UYXNrOjAsZXZlbnRUYXNrOjB9LHRoaXMuem9uZT10LHRoaXMuX3BhcmVudERlbGVnYXRlPWUsdGhpcy5fZm9ya1pTPW4mJihuJiZuLm9uRm9yaz9uOmUuX2ZvcmtaUyksdGhpcy5fZm9ya0RsZ3Q9biYmKG4ub25Gb3JrP2U6ZS5fZm9ya0RsZ3QpLHRoaXMuX2ZvcmtDdXJyWm9uZT1uJiYobi5vbkZvcms/dGhpcy56b25lOmUuem9uZSksdGhpcy5faW50ZXJjZXB0WlM9biYmKG4ub25JbnRlcmNlcHQ/bjplLl9pbnRlcmNlcHRaUyksdGhpcy5faW50ZXJjZXB0RGxndD1uJiYobi5vbkludGVyY2VwdD9lOmUuX2ludGVyY2VwdERsZ3QpLHRoaXMuX2ludGVyY2VwdEN1cnJab25lPW4mJihuLm9uSW50ZXJjZXB0P3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX2ludm9rZVpTPW4mJihuLm9uSW52b2tlP246ZS5faW52b2tlWlMpLHRoaXMuX2ludm9rZURsZ3Q9biYmKG4ub25JbnZva2U/ZTplLl9pbnZva2VEbGd0KSx0aGlzLl9pbnZva2VDdXJyWm9uZT1uJiYobi5vbkludm9rZT90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9oYW5kbGVFcnJvclpTPW4mJihuLm9uSGFuZGxlRXJyb3I/bjplLl9oYW5kbGVFcnJvclpTKSx0aGlzLl9oYW5kbGVFcnJvckRsZ3Q9biYmKG4ub25IYW5kbGVFcnJvcj9lOmUuX2hhbmRsZUVycm9yRGxndCksdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZT1uJiYobi5vbkhhbmRsZUVycm9yP3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX3NjaGVkdWxlVGFza1pTPW4mJihuLm9uU2NoZWR1bGVUYXNrP246ZS5fc2NoZWR1bGVUYXNrWlMpLHRoaXMuX3NjaGVkdWxlVGFza0RsZ3Q9biYmKG4ub25TY2hlZHVsZVRhc2s/ZTplLl9zY2hlZHVsZVRhc2tEbGd0KSx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZT1uJiYobi5vblNjaGVkdWxlVGFzaz90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9pbnZva2VUYXNrWlM9biYmKG4ub25JbnZva2VUYXNrP246ZS5faW52b2tlVGFza1pTKSx0aGlzLl9pbnZva2VUYXNrRGxndD1uJiYobi5vbkludm9rZVRhc2s/ZTplLl9pbnZva2VUYXNrRGxndCksdGhpcy5faW52b2tlVGFza0N1cnJab25lPW4mJihuLm9uSW52b2tlVGFzaz90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9jYW5jZWxUYXNrWlM9biYmKG4ub25DYW5jZWxUYXNrP246ZS5fY2FuY2VsVGFza1pTKSx0aGlzLl9jYW5jZWxUYXNrRGxndD1uJiYobi5vbkNhbmNlbFRhc2s/ZTplLl9jYW5jZWxUYXNrRGxndCksdGhpcy5fY2FuY2VsVGFza0N1cnJab25lPW4mJihuLm9uQ2FuY2VsVGFzaz90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9oYXNUYXNrWlM9bnVsbCx0aGlzLl9oYXNUYXNrRGxndD1udWxsLHRoaXMuX2hhc1Rhc2tEbGd0T3duZXI9bnVsbCx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9bnVsbDt2YXIgcj1uJiZuLm9uSGFzVGFzazsocnx8ZSYmZS5faGFzVGFza1pTKSYmKHRoaXMuX2hhc1Rhc2taUz1yP246Yyx0aGlzLl9oYXNUYXNrRGxndD1lLHRoaXMuX2hhc1Rhc2tEbGd0T3duZXI9dGhpcyx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9dCxuLm9uU2NoZWR1bGVUYXNrfHwodGhpcy5fc2NoZWR1bGVUYXNrWlM9Yyx0aGlzLl9zY2hlZHVsZVRhc2tEbGd0PWUsdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmU9dGhpcy56b25lKSxuLm9uSW52b2tlVGFza3x8KHRoaXMuX2ludm9rZVRhc2taUz1jLHRoaXMuX2ludm9rZVRhc2tEbGd0PWUsdGhpcy5faW52b2tlVGFza0N1cnJab25lPXRoaXMuem9uZSksbi5vbkNhbmNlbFRhc2t8fCh0aGlzLl9jYW5jZWxUYXNrWlM9Yyx0aGlzLl9jYW5jZWxUYXNrRGxndD1lLHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZT10aGlzLnpvbmUpKX1yZXR1cm4gdC5wcm90b3R5cGUuZm9yaz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9mb3JrWlM/dGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCx0aGlzLnpvbmUsdCxlKTpuZXcgYSh0LGUpfSx0LnByb3RvdHlwZS5pbnRlcmNlcHQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9pbnRlcmNlcHRaUz90aGlzLl9pbnRlcmNlcHRaUy5vbkludGVyY2VwdCh0aGlzLl9pbnRlcmNlcHREbGd0LHRoaXMuX2ludGVyY2VwdEN1cnJab25lLHQsZSxuKTplfSx0LnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24odCxlLG4scixvKXtyZXR1cm4gdGhpcy5faW52b2tlWlM/dGhpcy5faW52b2tlWlMub25JbnZva2UodGhpcy5faW52b2tlRGxndCx0aGlzLl9pbnZva2VDdXJyWm9uZSx0LGUsbixyLG8pOmUuYXBwbHkobixyKX0sdC5wcm90b3R5cGUuaGFuZGxlRXJyb3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4hdGhpcy5faGFuZGxlRXJyb3JaU3x8dGhpcy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9yKHRoaXMuX2hhbmRsZUVycm9yRGxndCx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lLHQsZSl9LHQucHJvdG90eXBlLnNjaGVkdWxlVGFzaz1mdW5jdGlvbih0LGUpe3ZhciBuPWU7aWYodGhpcy5fc2NoZWR1bGVUYXNrWlMpdGhpcy5faGFzVGFza1pTJiZuLl96b25lRGVsZWdhdGVzLnB1c2godGhpcy5faGFzVGFza0RsZ3RPd25lciksKG49dGhpcy5fc2NoZWR1bGVUYXNrWlMub25TY2hlZHVsZVRhc2sodGhpcy5fc2NoZWR1bGVUYXNrRGxndCx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSx0LGUpKXx8KG49ZSk7ZWxzZSBpZihlLnNjaGVkdWxlRm4pZS5zY2hlZHVsZUZuKGUpO2Vsc2V7aWYoZS50eXBlIT1TKXRocm93IG5ldyBFcnJvcigiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uIik7ZChlKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuaW52b2tlVGFzaz1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdGhpcy5faW52b2tlVGFza1pTP3RoaXMuX2ludm9rZVRhc2taUy5vbkludm9rZVRhc2sodGhpcy5faW52b2tlVGFza0RsZ3QsdGhpcy5faW52b2tlVGFza0N1cnJab25lLHQsZSxuLHIpOmUuY2FsbGJhY2suYXBwbHkobixyKX0sdC5wcm90b3R5cGUuY2FuY2VsVGFzaz1mdW5jdGlvbih0LGUpe3ZhciBuO2lmKHRoaXMuX2NhbmNlbFRhc2taUyluPXRoaXMuX2NhbmNlbFRhc2taUy5vbkNhbmNlbFRhc2sodGhpcy5fY2FuY2VsVGFza0RsZ3QsdGhpcy5fY2FuY2VsVGFza0N1cnJab25lLHQsZSk7ZWxzZXtpZighZS5jYW5jZWxGbil0aHJvdyBFcnJvcigiVGFzayBpcyBub3QgY2FuY2VsYWJsZSIpO249ZS5jYW5jZWxGbihlKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuaGFzVGFzaz1mdW5jdGlvbih0LGUpe3RyeXt0aGlzLl9oYXNUYXNrWlMmJnRoaXMuX2hhc1Rhc2taUy5vbkhhc1Rhc2sodGhpcy5faGFzVGFza0RsZ3QsdGhpcy5faGFzVGFza0N1cnJab25lLHQsZSl9Y2F0Y2gobil7dGhpcy5oYW5kbGVFcnJvcih0LG4pfX0sdC5wcm90b3R5cGUuX3VwZGF0ZVRhc2tDb3VudD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX3Rhc2tDb3VudHMscj1uW3RdLG89blt0XT1yK2U7aWYobzwwKXRocm93IG5ldyBFcnJvcigiTW9yZSB0YXNrcyBleGVjdXRlZCB0aGVuIHdlcmUgc2NoZWR1bGVkLiIpOzAhPXImJjAhPW98fHRoaXMuaGFzVGFzayh0aGlzLnpvbmUse21pY3JvVGFzazpuLm1pY3JvVGFzaz4wLG1hY3JvVGFzazpuLm1hY3JvVGFzaz4wLGV2ZW50VGFzazpuLmV2ZW50VGFzaz4wLGNoYW5nZTp0fSl9LHR9KCkscz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUobixyLG8saSxhLGMpe3RoaXMuX3pvbmU9bnVsbCx0aGlzLnJ1bkNvdW50PTAsdGhpcy5fem9uZURlbGVnYXRlcz1udWxsLHRoaXMuX3N0YXRlPSJub3RTY2hlZHVsZWQiLHRoaXMudHlwZT1uLHRoaXMuc291cmNlPXIsdGhpcy5kYXRhPWksdGhpcy5zY2hlZHVsZUZuPWEsdGhpcy5jYW5jZWxGbj1jLHRoaXMuY2FsbGJhY2s9bzt2YXIgdT10aGlzO3RoaXMuaW52b2tlPW49PT1PJiZpJiZpLnVzZUc/ZS5pbnZva2VUYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIGUuaW52b2tlVGFzay5jYWxsKHQsdSx0aGlzLGFyZ3VtZW50cyl9fXJldHVybiBlLmludm9rZVRhc2s9ZnVuY3Rpb24odCxlLG4pe3R8fCh0PXRoaXMpLFArKzt0cnl7cmV0dXJuIHQucnVuQ291bnQrKyx0LnpvbmUucnVuVGFzayh0LGUsbil9ZmluYWxseXsxPT1QJiZnKCksUC0tfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ6b25lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvbmV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJzdGF0ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0ZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5jYW5jZWxTY2hlZHVsZVJlcXVlc3Q9ZnVuY3Rpb24oKXt0aGlzLl90cmFuc2l0aW9uVG8oYixtKX0sZS5wcm90b3R5cGUuX3RyYW5zaXRpb25Ubz1mdW5jdGlvbih0LGUsbil7aWYodGhpcy5fc3RhdGUhPT1lJiZ0aGlzLl9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKHRoaXMudHlwZSsiICciK3RoaXMuc291cmNlKyInOiBjYW4gbm90IHRyYW5zaXRpb24gdG8gJyIrdCsiJywgZXhwZWN0aW5nIHN0YXRlICciK2UrIiciKyhuPyIgb3IgJyIrbisiJyI6IiIpKyIsIHdhcyAnIit0aGlzLl9zdGF0ZSsiJy4iKTt0aGlzLl9zdGF0ZT10LHQ9PWImJih0aGlzLl96b25lRGVsZWdhdGVzPW51bGwpfSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEmJnZvaWQgMCE9PXRoaXMuZGF0YS5oYW5kbGVJZD90aGlzLmRhdGEuaGFuZGxlSWQudG9TdHJpbmcoKTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcyl9LGUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOnRoaXMudHlwZSxzdGF0ZTp0aGlzLnN0YXRlLHNvdXJjZTp0aGlzLnNvdXJjZSx6b25lOnRoaXMuem9uZS5uYW1lLHJ1bkNvdW50OnRoaXMucnVuQ291bnR9fSxlfSgpLGY9Uigic2V0VGltZW91dCIpLGw9UigiUHJvbWlzZSIpLHA9UigidGhlbiIpLGg9W10sdj0hMTtmdW5jdGlvbiBkKGUpe2lmKDA9PT1QJiYwPT09aC5sZW5ndGgpaWYoaXx8dFtsXSYmKGk9dFtsXS5yZXNvbHZlKDApKSxpKXt2YXIgbj1pW3BdO258fChuPWkudGhlbiksbi5jYWxsKGksZyl9ZWxzZSB0W2ZdKGcsMCk7ZSYmaC5wdXNoKGUpfWZ1bmN0aW9uIGcoKXtpZighdil7Zm9yKHY9ITA7aC5sZW5ndGg7KXt2YXIgdD1oO2g9W107Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuPXRbZV07dHJ5e24uem9uZS5ydW5UYXNrKG4sbnVsbCxudWxsKX1jYXRjaChyKXtJLm9uVW5oYW5kbGVkRXJyb3Iocil9fX1JLm1pY3JvdGFza0RyYWluRG9uZSgpLHY9ITF9fXZhciB5PXtuYW1lOiJOTyBaT05FIn0sYj0ibm90U2NoZWR1bGVkIixtPSJzY2hlZHVsaW5nIixrPSJzY2hlZHVsZWQiLF89InJ1bm5pbmciLHc9ImNhbmNlbGluZyIseD0idW5rbm93biIsUz0ibWljcm9UYXNrIixFPSJtYWNyb1Rhc2siLE89ImV2ZW50VGFzayIsVD17fSxJPXtzeW1ib2w6UixjdXJyZW50Wm9uZUZyYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIGp9LG9uVW5oYW5kbGVkRXJyb3I6RCxtaWNyb3Rhc2tEcmFpbkRvbmU6RCxzY2hlZHVsZU1pY3JvVGFzazpkLHNob3dVbmNhdWdodEVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIWFbUigiaWdub3JlQ29uc29sZUVycm9yVW5jYXVnaHRFcnJvciIpXX0scGF0Y2hFdmVudFRhcmdldDpmdW5jdGlvbigpe3JldHVybltdfSxwYXRjaE9uUHJvcGVydGllczpELHBhdGNoTWV0aG9kOmZ1bmN0aW9uKCl7cmV0dXJuIER9LGJpbmRBcmd1bWVudHM6ZnVuY3Rpb24oKXtyZXR1cm5bXX0scGF0Y2hUaGVuOmZ1bmN0aW9uKCl7cmV0dXJuIER9LHBhdGNoTWFjcm9UYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIER9LHNldE5hdGl2ZVByb21pc2U6ZnVuY3Rpb24odCl7dCYmImZ1bmN0aW9uIj09dHlwZW9mIHQucmVzb2x2ZSYmKGk9dC5yZXNvbHZlKDApKX0scGF0Y2hFdmVudFByb3RvdHlwZTpmdW5jdGlvbigpe3JldHVybiBEfSxpc0lFT3JFZGdlOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGdldEdsb2JhbE9iamVjdHM6ZnVuY3Rpb24oKXt9LE9iamVjdERlZmluZVByb3BlcnR5OmZ1bmN0aW9uKCl7cmV0dXJuIER9LE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcjpmdW5jdGlvbigpe30sT2JqZWN0Q3JlYXRlOmZ1bmN0aW9uKCl7fSxBcnJheVNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuW119LHBhdGNoQ2xhc3M6ZnVuY3Rpb24oKXtyZXR1cm4gRH0sd3JhcFdpdGhDdXJyZW50Wm9uZTpmdW5jdGlvbigpe3JldHVybiBEfSxmaWx0ZXJQcm9wZXJ0aWVzOmZ1bmN0aW9uKCl7cmV0dXJuW119LGF0dGFjaE9yaWdpblRvUGF0Y2hlZDpmdW5jdGlvbigpe3JldHVybiBEfSxfcmVkZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbigpe3JldHVybiBEfSxwYXRjaENhbGxiYWNrczpmdW5jdGlvbigpe3JldHVybiBEfX0saj17cGFyZW50Om51bGwsem9uZTpuZXcgYShudWxsLG51bGwpfSxNPW51bGwsUD0wO2Z1bmN0aW9uIEQoKXt9ZnVuY3Rpb24gUih0KXtyZXR1cm4iX196b25lX3N5bWJvbF9fIit0fXIoIlpvbmUiLCJab25lIiksdC5ab25lPWF9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3d8fCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZnx8Z2xvYmFsKSxab25lLl9fbG9hZF9wYXRjaCgiWm9uZUF3YXJlUHJvbWlzZSIsKGZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGk9T2JqZWN0LmRlZmluZVByb3BlcnR5LGE9bi5zeW1ib2wsYz1bXSx1PWEoIlByb21pc2UiKSxzPWEoInRoZW4iKSxmPSJfX2NyZWF0aW9uVHJhY2VfXyI7bi5vblVuaGFuZGxlZEVycm9yPWZ1bmN0aW9uKHQpe2lmKG4uc2hvd1VuY2F1Z2h0RXJyb3IoKSl7dmFyIGU9dCYmdC5yZWplY3Rpb247ZT9jb25zb2xlLmVycm9yKCJVbmhhbmRsZWQgUHJvbWlzZSByZWplY3Rpb246IixlIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOmUsIjsgWm9uZToiLHQuem9uZS5uYW1lLCI7IFRhc2s6Iix0LnRhc2smJnQudGFzay5zb3VyY2UsIjsgVmFsdWU6IixlLGUgaW5zdGFuY2VvZiBFcnJvcj9lLnN0YWNrOnZvaWQgMCk6Y29uc29sZS5lcnJvcih0KX19LG4ubWljcm90YXNrRHJhaW5Eb25lPWZ1bmN0aW9uKCl7Zm9yKDtjLmxlbmd0aDspZm9yKHZhciB0PWZ1bmN0aW9uKCl7dmFyIHQ9Yy5zaGlmdCgpO3RyeXt0LnpvbmUucnVuR3VhcmRlZCgoZnVuY3Rpb24oKXt0aHJvdyB0fSkpfWNhdGNoKGUpe3AoZSl9fTtjLmxlbmd0aDspdCgpfTt2YXIgbD1hKCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpO2Z1bmN0aW9uIHAodCl7bi5vblVuaGFuZGxlZEVycm9yKHQpO3RyeXt2YXIgcj1lW2xdO3ImJiJmdW5jdGlvbiI9PXR5cGVvZiByJiZyLmNhbGwodGhpcyx0KX1jYXRjaChvKXt9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQmJnQudGhlbn1mdW5jdGlvbiB2KHQpe3JldHVybiB0fWZ1bmN0aW9uIGQodCl7cmV0dXJuIE4ucmVqZWN0KHQpfXZhciBnPWEoInN0YXRlIikseT1hKCJ2YWx1ZSIpLGI9YSgiZmluYWxseSIpLG09YSgicGFyZW50UHJvbWlzZVZhbHVlIiksaz1hKCJwYXJlbnRQcm9taXNlU3RhdGUiKSxfPSJQcm9taXNlLnRoZW4iLHc9bnVsbCx4PSEwLFM9ITEsRT0wO2Z1bmN0aW9uIE8odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dHJ5e00odCxlLG4pfWNhdGNoKHIpe00odCwhMSxyKX19fXZhciBUPWZ1bmN0aW9uKCl7dmFyIHQ9ITE7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3R8fCh0PSEwLGUuYXBwbHkobnVsbCxhcmd1bWVudHMpKX19fSxJPSJQcm9taXNlIHJlc29sdmVkIHdpdGggaXRzZWxmIixqPWEoImN1cnJlbnRUYXNrVHJhY2UiKTtmdW5jdGlvbiBNKHQscixvKXt2YXIgYSx1PVQoKTtpZih0PT09byl0aHJvdyBuZXcgVHlwZUVycm9yKEkpO2lmKHRbZ109PT13KXt2YXIgcz1udWxsO3RyeXsib2JqZWN0IiE9dHlwZW9mIG8mJiJmdW5jdGlvbiIhPXR5cGVvZiBvfHwocz1vJiZvLnRoZW4pfWNhdGNoKGQpe3JldHVybiB1KChmdW5jdGlvbigpe00odCwhMSxkKX0pKSgpLHR9aWYociE9PVMmJm8gaW5zdGFuY2VvZiBOJiZvLmhhc093blByb3BlcnR5KGcpJiZvLmhhc093blByb3BlcnR5KHkpJiZvW2ddIT09dylEKG8pLE0odCxvW2ddLG9beV0pO2Vsc2UgaWYociE9PVMmJiJmdW5jdGlvbiI9PXR5cGVvZiBzKXRyeXtzLmNhbGwobyx1KE8odCxyKSksdShPKHQsITEpKSl9Y2F0Y2goZCl7dSgoZnVuY3Rpb24oKXtNKHQsITEsZCl9KSkoKX1lbHNle3RbZ109cjt2YXIgbD10W3ldO2lmKHRbeV09byx0W2JdPT09YiYmcj09PXgmJih0W2ddPXRba10sdFt5XT10W21dKSxyPT09UyYmbyBpbnN0YW5jZW9mIEVycm9yKXt2YXIgcD1lLmN1cnJlbnRUYXNrJiZlLmN1cnJlbnRUYXNrLmRhdGEmJmUuY3VycmVudFRhc2suZGF0YVtmXTtwJiZpKG8saix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsdmFsdWU6cH0pfWZvcih2YXIgaD0wO2g8bC5sZW5ndGg7KVIodCxsW2grK10sbFtoKytdLGxbaCsrXSxsW2grK10pO2lmKDA9PWwubGVuZ3RoJiZyPT1TKXt0W2ddPUU7dHJ5e3Rocm93IG5ldyBFcnJvcigiVW5jYXVnaHQgKGluIHByb21pc2UpOiAiKygoYT1vKSYmYS50b1N0cmluZz09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc/KGEuY29uc3RydWN0b3ImJmEuY29uc3RydWN0b3IubmFtZXx8IiIpKyI6ICIrSlNPTi5zdHJpbmdpZnkoYSk6YT9hLnRvU3RyaW5nKCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpKSsobyYmby5zdGFjaz8iXG4iK28uc3RhY2s6IiIpKX1jYXRjaChkKXt2YXIgdj1kO3YucmVqZWN0aW9uPW8sdi5wcm9taXNlPXQsdi56b25lPWUuY3VycmVudCx2LnRhc2s9ZS5jdXJyZW50VGFzayxjLnB1c2godiksbi5zY2hlZHVsZU1pY3JvVGFzaygpfX19fXJldHVybiB0fXZhciBQPWEoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIik7ZnVuY3Rpb24gRCh0KXtpZih0W2ddPT09RSl7dHJ5e3ZhciBuPWVbUF07biYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4uY2FsbCh0aGlzLHtyZWplY3Rpb246dFt5XSxwcm9taXNlOnR9KX1jYXRjaChvKXt9dFtnXT1TO2Zvcih2YXIgcj0wO3I8Yy5sZW5ndGg7cisrKXQ9PT1jW3JdLnByb21pc2UmJmMuc3BsaWNlKHIsMSl9fWZ1bmN0aW9uIFIodCxlLG4scixvKXtEKHQpO3ZhciBpPXRbZ10sYT1pPyJmdW5jdGlvbiI9PXR5cGVvZiByP3I6djoiZnVuY3Rpb24iPT10eXBlb2Ygbz9vOmQ7ZS5zY2hlZHVsZU1pY3JvVGFzayhfLChmdW5jdGlvbigpe3RyeXt2YXIgcj10W3ldLG89biYmYj09PW5bYl07byYmKG5bbV09cixuW2tdPWkpO3ZhciBjPWUucnVuKGEsdm9pZCAwLG8mJmEhPT1kJiZhIT09dj9bXTpbcl0pO00obiwhMCxjKX1jYXRjaCh1KXtNKG4sITEsdSl9fSksbil9dmFyIE49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBhbiBpbnN0YW5jZW9mIFByb21pc2UuIik7dGhpc1tnXT13LHRoaXNbeV09W107dHJ5e2UmJmUoTyh0aGlzLHgpLE8odGhpcyxTKSl9Y2F0Y2gobil7TSh0aGlzLCExLG4pfX1yZXR1cm4gdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiBab25lQXdhcmVQcm9taXNlKCkgeyBbbmF0aXZlIGNvZGVdIH0ifSx0LnJlc29sdmU9ZnVuY3Rpb24odCl7cmV0dXJuIE0obmV3IHRoaXMobnVsbCkseCx0KX0sdC5yZWplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIE0obmV3IHRoaXMobnVsbCksUyx0KX0sdC5yYWNlPWZ1bmN0aW9uKHQpe3ZhciBlLG4sbyxpLGE9bmV3IHRoaXMoKGZ1bmN0aW9uKHQsZSl7bz10LGk9ZX0pKTtmdW5jdGlvbiBjKHQpe28odCl9ZnVuY3Rpb24gdSh0KXtpKHQpfXRyeXtmb3IodmFyIHM9cih0KSxmPXMubmV4dCgpOyFmLmRvbmU7Zj1zLm5leHQoKSl7dmFyIGw9Zi52YWx1ZTtoKGwpfHwobD10aGlzLnJlc29sdmUobCkpLGwudGhlbihjLHUpfX1jYXRjaChwKXtlPXtlcnJvcjpwfX1maW5hbGx5e3RyeXtmJiYhZi5kb25lJiYobj1zLnJldHVybikmJm4uY2FsbChzKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19cmV0dXJuIGF9LHQuYWxsPWZ1bmN0aW9uKHQpe3ZhciBlLG4sbyxpLGE9bmV3IHRoaXMoKGZ1bmN0aW9uKHQsZSl7bz10LGk9ZX0pKSxjPTIsdT0wLHM9W10sZj1mdW5jdGlvbih0KXtoKHQpfHwodD1sLnJlc29sdmUodCkpO3ZhciBlPXU7dC50aGVuKChmdW5jdGlvbih0KXtzW2VdPXQsMD09LS1jJiZvKHMpfSksaSksYysrLHUrK30sbD10aGlzO3RyeXtmb3IodmFyIHA9cih0KSx2PXAubmV4dCgpOyF2LmRvbmU7dj1wLm5leHQoKSlmKHYudmFsdWUpfWNhdGNoKGQpe2U9e2Vycm9yOmR9fWZpbmFsbHl7dHJ5e3YmJiF2LmRvbmUmJihuPXAucmV0dXJuKSYmbi5jYWxsKHApfWZpbmFsbHl7aWYoZSl0aHJvdyBlLmVycm9yfX1yZXR1cm4gMD09KGMtPTIpJiZvKHMpLGF9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxTeW1ib2wudG9TdHJpbmdUYWcse2dldDpmdW5jdGlvbigpe3JldHVybiJQcm9taXNlIn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHQsbil7dmFyIHI9bmV3IHRoaXMuY29uc3RydWN0b3IobnVsbCksbz1lLmN1cnJlbnQ7cmV0dXJuIHRoaXNbZ109PXc/dGhpc1t5XS5wdXNoKG8scix0LG4pOlIodGhpcyxvLHIsdCxuKSxyfSx0LnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LHQucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24odCl7dmFyIG49bmV3IHRoaXMuY29uc3RydWN0b3IobnVsbCk7bltiXT1iO3ZhciByPWUuY3VycmVudDtyZXR1cm4gdGhpc1tnXT09dz90aGlzW3ldLnB1c2gocixuLHQsdCk6Uih0aGlzLHIsbix0LHQpLG59LHR9KCk7Ti5yZXNvbHZlPU4ucmVzb2x2ZSxOLnJlamVjdD1OLnJlamVjdCxOLnJhY2U9Ti5yYWNlLE4uYWxsPU4uYWxsO3ZhciBBPXRbdV09dC5Qcm9taXNlLEw9ZS5fX3N5bWJvbF9fKCJab25lQXdhcmVQcm9taXNlIiksRj1vKHQsIlByb21pc2UiKTtGJiYhRi5jb25maWd1cmFibGV8fChGJiZkZWxldGUgRi53cml0YWJsZSxGJiZkZWxldGUgRi52YWx1ZSxGfHwoRj17Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KSxGLmdldD1mdW5jdGlvbigpe3JldHVybiB0W0xdP3RbTF06dFt1XX0sRi5zZXQ9ZnVuY3Rpb24oZSl7ZT09PU4/dFtMXT1lOih0W3VdPWUsZS5wcm90b3R5cGVbc118fEMoZSksbi5zZXROYXRpdmVQcm9taXNlKGUpKX0saSh0LCJQcm9taXNlIixGKSksdC5Qcm9taXNlPU47dmFyIHosWj1hKCJ0aGVuUGF0Y2hlZCIpO2Z1bmN0aW9uIEModCl7dmFyIGU9dC5wcm90b3R5cGUsbj1vKGUsInRoZW4iKTtpZighbnx8ITEhPT1uLndyaXRhYmxlJiZuLmNvbmZpZ3VyYWJsZSl7dmFyIHI9ZS50aGVuO2Vbc109cix0LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gbmV3IE4oKGZ1bmN0aW9uKHQsZSl7ci5jYWxsKG4sdCxlKX0pKS50aGVuKHQsZSl9LHRbWl09ITB9fWlmKG4ucGF0Y2hUaGVuPUMsQSl7QyhBKTt2YXIgVz10LmZldGNoOyJmdW5jdGlvbiI9PXR5cGVvZiBXJiYodFtuLnN5bWJvbCgiZmV0Y2giKV09Vyx0LmZldGNoPSh6PVcsZnVuY3Rpb24oKXt2YXIgdD16LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZih0IGluc3RhbmNlb2YgTilyZXR1cm4gdDt2YXIgZT10LmNvbnN0cnVjdG9yO3JldHVybiBlW1pdfHxDKGUpLHR9KSl9cmV0dXJuIFByb21pc2VbZS5fX3N5bWJvbF9fKCJ1bmNhdWdodFByb21pc2VFcnJvcnMiKV09YyxOfSkpO3ZhciB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsZT1PYmplY3QuZGVmaW5lUHJvcGVydHksbj1PYmplY3QuZ2V0UHJvdG90eXBlT2Ysbz1PYmplY3QuY3JlYXRlLGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLGE9ImFkZEV2ZW50TGlzdGVuZXIiLGM9InJlbW92ZUV2ZW50TGlzdGVuZXIiLHU9Wm9uZS5fX3N5bWJvbF9fKGEpLHM9Wm9uZS5fX3N5bWJvbF9fKGMpLGY9InRydWUiLGw9ImZhbHNlIixwPSJfX3pvbmVfc3ltYm9sX18iO2Z1bmN0aW9uIGgodCxlKXtyZXR1cm4gWm9uZS5jdXJyZW50LndyYXAodCxlKX1mdW5jdGlvbiB2KHQsZSxuLHIsbyl7cmV0dXJuIFpvbmUuY3VycmVudC5zY2hlZHVsZU1hY3JvVGFzayh0LGUsbixyLG8pfXZhciBkPVpvbmUuX19zeW1ib2xfXyxnPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LHk9Zz93aW5kb3c6dm9pZCAwLGI9ZyYmeXx8Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmfHxnbG9iYWwsbT0icmVtb3ZlQXR0cmlidXRlIixrPVtudWxsXTtmdW5jdGlvbiBfKHQsZSl7Zm9yKHZhciBuPXQubGVuZ3RoLTE7bj49MDtuLS0pImZ1bmN0aW9uIj09dHlwZW9mIHRbbl0mJih0W25dPWgodFtuXSxlKyJfIituKSk7cmV0dXJuIHR9ZnVuY3Rpb24gdyh0KXtyZXR1cm4hdHx8ITEhPT10LndyaXRhYmxlJiYhKCJmdW5jdGlvbiI9PXR5cGVvZiB0LmdldCYmdm9pZCAwPT09dC5zZXQpfXZhciB4PSJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSxTPSEoIm53ImluIGIpJiZ2b2lkIDAhPT1iLnByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoYi5wcm9jZXNzKSxFPSFTJiYheCYmISghZ3x8IXkuSFRNTEVsZW1lbnQpLE89dm9pZCAwIT09Yi5wcm9jZXNzJiYiW29iamVjdCBwcm9jZXNzXSI9PT17fS50b1N0cmluZy5jYWxsKGIucHJvY2VzcykmJiF4JiYhKCFnfHwheS5IVE1MRWxlbWVudCksVD17fSxJPWZ1bmN0aW9uKHQpe2lmKHQ9dHx8Yi5ldmVudCl7dmFyIGU9VFt0LnR5cGVdO2V8fChlPVRbdC50eXBlXT1kKCJPTl9QUk9QRVJUWSIrdC50eXBlKSk7dmFyIG4scj10aGlzfHx0LnRhcmdldHx8YixvPXJbZV07aWYoRSYmcj09PXkmJiJlcnJvciI9PT10LnR5cGUpe3ZhciBpPXQ7ITA9PT0obj1vJiZvLmNhbGwodGhpcyxpLm1lc3NhZ2UsaS5maWxlbmFtZSxpLmxpbmVubyxpLmNvbG5vLGkuZXJyb3IpKSYmdC5wcmV2ZW50RGVmYXVsdCgpfWVsc2UgbnVsbD09KG49byYmby5hcHBseSh0aGlzLGFyZ3VtZW50cykpfHxufHx0LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIG59fTtmdW5jdGlvbiBqKG4scixvKXt2YXIgaT10KG4scik7aWYoIWkmJm8mJnQobyxyKSYmKGk9e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksaSYmaS5jb25maWd1cmFibGUpe3ZhciBhPWQoIm9uIityKyJwYXRjaGVkIik7aWYoIW4uaGFzT3duUHJvcGVydHkoYSl8fCFuW2FdKXtkZWxldGUgaS53cml0YWJsZSxkZWxldGUgaS52YWx1ZTt2YXIgYz1pLmdldCx1PWkuc2V0LHM9ci5zdWJzdHIoMiksZj1UW3NdO2Z8fChmPVRbc109ZCgiT05fUFJPUEVSVFkiK3MpKSxpLnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2V8fG4hPT1ifHwoZT1iKSxlJiYoZVtmXSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHMsSSksdSYmdS5hcHBseShlLGspLCJmdW5jdGlvbiI9PXR5cGVvZiB0PyhlW2ZdPXQsZS5hZGRFdmVudExpc3RlbmVyKHMsSSwhMSkpOmVbZl09bnVsbCl9LGkuZ2V0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0fHxuIT09Ynx8KHQ9YiksIXQpcmV0dXJuIG51bGw7dmFyIGU9dFtmXTtpZihlKXJldHVybiBlO2lmKGMpe3ZhciBvPWMmJmMuY2FsbCh0aGlzKTtpZihvKXJldHVybiBpLnNldC5jYWxsKHRoaXMsbyksImZ1bmN0aW9uIj09dHlwZW9mIHRbbV0mJnQucmVtb3ZlQXR0cmlidXRlKHIpLG99cmV0dXJuIG51bGx9LGUobixyLGkpLG5bYV09ITB9fX1mdW5jdGlvbiBNKHQsZSxuKXtpZihlKWZvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWoodCwib24iK2Vbcl0sbik7ZWxzZXt2YXIgbz1bXTtmb3IodmFyIGkgaW4gdCkib24iPT1pLnN1YnN0cigwLDIpJiZvLnB1c2goaSk7Zm9yKHZhciBhPTA7YTxvLmxlbmd0aDthKyspaih0LG9bYV0sbil9fXZhciBQPWQoIm9yaWdpbmFsSW5zdGFuY2UiKTtmdW5jdGlvbiBEKHQpe3ZhciBuPWJbdF07aWYobil7YltkKHQpXT1uLGJbdF09ZnVuY3Rpb24oKXt2YXIgZT1fKGFyZ3VtZW50cyx0KTtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDp0aGlzW1BdPW5ldyBuO2JyZWFrO2Nhc2UgMTp0aGlzW1BdPW5ldyBuKGVbMF0pO2JyZWFrO2Nhc2UgMjp0aGlzW1BdPW5ldyBuKGVbMF0sZVsxXSk7YnJlYWs7Y2FzZSAzOnRoaXNbUF09bmV3IG4oZVswXSxlWzFdLGVbMl0pO2JyZWFrO2Nhc2UgNDp0aGlzW1BdPW5ldyBuKGVbMF0sZVsxXSxlWzJdLGVbM10pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJBcmcgbGlzdCB0b28gbG9uZy4iKX19LEwoYlt0XSxuKTt2YXIgcixvPW5ldyBuKChmdW5jdGlvbigpe30pKTtmb3IociBpbiBvKSJYTUxIdHRwUmVxdWVzdCI9PT10JiYicmVzcG9uc2VCbG9iIj09PXJ8fGZ1bmN0aW9uKG4peyJmdW5jdGlvbiI9PXR5cGVvZiBvW25dP2JbdF0ucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbUF1bbl0uYXBwbHkodGhpc1tQXSxhcmd1bWVudHMpfTplKGJbdF0ucHJvdG90eXBlLG4se3NldDpmdW5jdGlvbihlKXsiZnVuY3Rpb24iPT10eXBlb2YgZT8odGhpc1tQXVtuXT1oKGUsdCsiLiIrbiksTCh0aGlzW1BdW25dLGUpKTp0aGlzW1BdW25dPWV9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW1BdW25dfX0pfShyKTtmb3IociBpbiBuKSJwcm90b3R5cGUiIT09ciYmbi5oYXNPd25Qcm9wZXJ0eShyKSYmKGJbdF1bcl09bltyXSl9fXZhciBSPSExO2Z1bmN0aW9uIE4oZSxyLG8pe2Zvcih2YXIgaT1lO2kmJiFpLmhhc093blByb3BlcnR5KHIpOylpPW4oaSk7IWkmJmVbcl0mJihpPWUpO3ZhciBhLGMsdT1kKHIpLHM9bnVsbDtpZihpJiYhKHM9aVt1XSkmJihzPWlbdV09aVtyXSx3KGkmJnQoaSxyKSkpKXt2YXIgZj1vKHMsdSxyKTtpW3JdPWZ1bmN0aW9uKCl7cmV0dXJuIGYodGhpcyxhcmd1bWVudHMpfSxMKGlbcl0scyksUiYmKGE9cyxjPWlbcl0sImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoYSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLHQpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShjLHQse2dldDpmdW5jdGlvbigpe3JldHVybiBhW3RdfSxzZXQ6ZnVuY3Rpb24obil7KCFlfHxlLndyaXRhYmxlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5zZXQpJiYoYVt0XT1uKX0sZW51bWVyYWJsZTohZXx8ZS5lbnVtZXJhYmxlLGNvbmZpZ3VyYWJsZTohZXx8ZS5jb25maWd1cmFibGV9KX0pKSl9cmV0dXJuIHN9ZnVuY3Rpb24gQSh0LGUsbil7dmFyIHI9bnVsbDtmdW5jdGlvbiBvKHQpe3ZhciBlPXQuZGF0YTtyZXR1cm4gZS5hcmdzW2UuY2JJZHhdPWZ1bmN0aW9uKCl7dC5pbnZva2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxyLmFwcGx5KGUudGFyZ2V0LGUuYXJncyksdH1yPU4odCxlLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyKXt2YXIgaT1uKGUscik7cmV0dXJuIGkuY2JJZHg+PTAmJiJmdW5jdGlvbiI9PXR5cGVvZiByW2kuY2JJZHhdP3YoaS5uYW1lLHJbaS5jYklkeF0saSxvKTp0LmFwcGx5KGUscil9fSkpfWZ1bmN0aW9uIEwodCxlKXt0W2QoIk9yaWdpbmFsRGVsZWdhdGUiKV09ZX12YXIgRj0hMSx6PSExO2Z1bmN0aW9uIFooKXt0cnl7dmFyIHQ9eS5uYXZpZ2F0b3IudXNlckFnZW50O2lmKC0xIT09dC5pbmRleE9mKCJNU0lFICIpfHwtMSE9PXQuaW5kZXhPZigiVHJpZGVudC8iKSlyZXR1cm4hMH1jYXRjaChlKXt9cmV0dXJuITF9ZnVuY3Rpb24gQygpe2lmKEYpcmV0dXJuIHo7Rj0hMDt0cnl7dmFyIHQ9eS5uYXZpZ2F0b3IudXNlckFnZW50Oy0xPT09dC5pbmRleE9mKCJNU0lFIA=="

{ "type": 12, "id": "61gh27mQT2zutRACfeSxkB9zqWvsEFM8CGL9wn7zxVda", "fee": 13136200, "feeAssetId": null, "timestamp": 1575391626872, "version": 1, "sender": "3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ", "senderPublicKey": "BdACbbxkapMbmbtG7UxdPQ5Y8grEhk9cNxLNGAF5znme", "proofs": [ "4sC11rXXab8RT2thCZSY3HGtXxxjq1EtPm4G7ASV6KxLjsN1dAezksUoFxefW7J8nKdWdFiAhH9EAbdRmoVDMF1h" ], "data": [ { "key": "qwe?styles.css?5?0", "type": "binary", "value": "base64:KHdpbmRvdy53ZWJwYWNrSnNvbnA9d2luZG93LndlYnBhY2tKc29ucHx8W10pLnB1c2goW1szXSx7Iisyb1AiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiaGgxdiIpLGk9bigiNkxXQSIpLGE9bigiSTh2aCIpLGM9bigiVU1TUSIpLHU9bigiL0dxVSIpLHM9bigiaEJqTiIpLGY9bigiSGQ1ZiIpLGw9bigidGlLcCIpKCJzcGVjaWVzIikscD1bXS5zbGljZSxoPU1hdGgubWF4O3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohZigic2xpY2UiKX0se3NsaWNlOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixmLHY9dSh0aGlzKSxkPWModi5sZW5ndGgpLGc9YSh0LGQpLHk9YSh2b2lkIDA9PT1lP2Q6ZSxkKTtpZihpKHYpJiYoImZ1bmN0aW9uIiE9dHlwZW9mKG49di5jb25zdHJ1Y3Rvcil8fG4hPT1BcnJheSYmIWkobi5wcm90b3R5cGUpP28obikmJm51bGw9PT0obj1uW2xdKSYmKG49dm9pZCAwKTpuPXZvaWQgMCxuPT09QXJyYXl8fHZvaWQgMD09PW4pKXJldHVybiBwLmNhbGwodixnLHkpO2ZvcihyPW5ldyh2b2lkIDA9PT1uP0FycmF5Om4pKGgoeS1nLDApKSxmPTA7Zzx5O2crKyxmKyspZyBpbiB2JiZzKHIsZix2W2ddKTtyZXR1cm4gci5sZW5ndGg9ZixyfX0pfSwiK01MeCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkhBdU0iKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2lmKHIodCksdm9pZCAwPT09ZSlyZXR1cm4gdDtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmNhbGwoZSl9O2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQuY2FsbChlLG4pfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKG4scil7cmV0dXJuIHQuY2FsbChlLG4scil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24obixyLG8pe3JldHVybiB0LmNhbGwoZSxuLHIsbyl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKX19fSwiLzV6bSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oImpyVXYiKSxpPU1hdGguY29zaCxhPU1hdGguYWJzLGM9TWF0aC5FO3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMCxmb3JjZWQ6IWl8fGkoNzEwKT09PTEvMH0se2Nvc2g6ZnVuY3Rpb24odCl7dmFyIGU9byhhKHQpLTEpKzE7cmV0dXJuKGUrMS8oZSpjKmMpKSooYy8yKX19KX0sIi9HcVUiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJSSzN0Iiksbz1uKCJIWUFGIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByKG8odCkpfX0sIi9ieXQiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPXtDU1NSdWxlTGlzdDowLENTU1N0eWxlRGVjbGFyYXRpb246MCxDU1NWYWx1ZUxpc3Q6MCxDbGllbnRSZWN0TGlzdDowLERPTVJlY3RMaXN0OjAsRE9NU3RyaW5nTGlzdDowLERPTVRva2VuTGlzdDoxLERhdGFUcmFuc2Zlckl0ZW1MaXN0OjAsRmlsZUxpc3Q6MCxIVE1MQWxsQ29sbGVjdGlvbjowLEhUTUxDb2xsZWN0aW9uOjAsSFRNTEZvcm1FbGVtZW50OjAsSFRNTFNlbGVjdEVsZW1lbnQ6MCxNZWRpYUxpc3Q6MCxNaW1lVHlwZUFycmF5OjAsTmFtZWROb2RlTWFwOjAsTm9kZUxpc3Q6MSxQYWludFJlcXVlc3RMaXN0OjAsUGx1Z2luOjAsUGx1Z2luQXJyYXk6MCxTVkdMZW5ndGhMaXN0OjAsU1ZHTnVtYmVyTGlzdDowLFNWR1BhdGhTZWdMaXN0OjAsU1ZHUG9pbnRMaXN0OjAsU1ZHU3RyaW5nTGlzdDowLFNWR1RyYW5zZm9ybUxpc3Q6MCxTb3VyY2VCdWZmZXJMaXN0OjAsU3R5bGVTaGVldExpc3Q6MCxUZXh0VHJhY2tDdWVMaXN0OjAsVGV4dFRyYWNrTGlzdDowLFRvdWNoTGlzdDowfX0sIi9xbW4iOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIik7dC5leHBvcnRzPXIuUHJvbWlzZX0sIjA3ZDciOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJidXNFIiksbz1uKCJzRUZYIiksaT1PYmplY3QucHJvdG90eXBlO28hPT1pLnRvU3RyaW5nJiZyKGksInRvU3RyaW5nIixvLHt1bnNhZmU6ITB9KX0sIjBCSzIiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPXt9fSwiMERreSI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKGUpe3JldHVybiEwfX19LCIwR2JZIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiUW85bCIpLG89bigiMm9SbyIpLGk9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp2b2lkIDB9O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/aShyW3RdKXx8aShvW3RdKTpyW3RdJiZyW3RdW2VdfHxvW3RdJiZvW3RdW2VdfX0sIjBUV3AiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJtclNHIikuX192YWx1ZXM7IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiOyFmdW5jdGlvbih0KXt2YXIgZT10LnBlcmZvcm1hbmNlO2Z1bmN0aW9uIG4odCl7ZSYmZS5tYXJrJiZlLm1hcmsodCl9ZnVuY3Rpb24gcih0LG4pe2UmJmUubWVhc3VyZSYmZS5tZWFzdXJlKHQsbil9bigiWm9uZSIpO3ZhciBvPSEwPT09dC5fX3pvbmVfc3ltYm9sX19mb3JjZUR1cGxpY2F0ZVpvbmVDaGVjaztpZih0LlpvbmUpe2lmKG98fCJmdW5jdGlvbiIhPXR5cGVvZiB0LlpvbmUuX19zeW1ib2xfXyl0aHJvdyBuZXcgRXJyb3IoIlpvbmUgYWxyZWFkeSBsb2FkZWQuIik7cmV0dXJuIHQuWm9uZX12YXIgaSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LGUpe3RoaXMuX3BhcmVudD10LHRoaXMuX25hbWU9ZT9lLm5hbWV8fCJ1bm5hbWVkIjoiPHJvb3Q+Iix0aGlzLl9wcm9wZXJ0aWVzPWUmJmUucHJvcGVydGllc3x8e30sdGhpcy5fem9uZURlbGVnYXRlPW5ldyB1KHRoaXMsdGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuX3pvbmVEZWxlZ2F0ZSxlKX1yZXR1cm4gZS5hc3NlcnRab25lUGF0Y2hlZD1mdW5jdGlvbigpe2lmKHQuUHJvbWlzZSE9PVQuWm9uZUF3YXJlUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQgWm9uZUF3YXJlUHJvbWlzZSBgKHdpbmRvd3xnbG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3cml0dGVuLlxuTW9zdCBsaWtlbHkgY2F1c2UgaXMgdGhhdCBhIFByb21pc2UgcG9seWZpbGwgaGFzIGJlZW4gbG9hZGVkIGFmdGVyIFpvbmUuanMgKFBvbHlmaWxsaW5nIFByb21pc2UgYXBpIGlzIG5vdCBuZWNlc3Nhcnkgd2hlbiB6b25lLmpzIGlzIGxvYWRlZC4gSWYgeW91IG11c3QgbG9hZCBvbmUsIGRvIHNvIGJlZm9yZSBsb2FkaW5nIHpvbmUuanMuKSIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicm9vdCIse2dldDpmdW5jdGlvbigpe2Zvcih2YXIgdD1lLmN1cnJlbnQ7dC5wYXJlbnQ7KXQ9dC5wYXJlbnQ7cmV0dXJuIHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImN1cnJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gai56b25lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJjdXJyZW50VGFzayIse2dldDpmdW5jdGlvbigpe3JldHVybiBNfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUuX19sb2FkX3BhdGNoPWZ1bmN0aW9uKGksYSl7aWYoVC5oYXNPd25Qcm9wZXJ0eShpKSl7aWYobyl0aHJvdyBFcnJvcigiQWxyZWFkeSBsb2FkZWQgcGF0Y2g6ICIraSl9ZWxzZSBpZighdFsiX19ab25lX2Rpc2FibGVfIitpXSl7dmFyIGM9IlpvbmU6IitpO24oYyksVFtpXT1hKHQsZSxJKSxyKGMsYyl9fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBhcmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJlbnR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJuYW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX25hbWV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0Wm9uZVdpdGgodCk7aWYoZSlyZXR1cm4gZS5fcHJvcGVydGllc1t0XX0sZS5wcm90b3R5cGUuZ2V0Wm9uZVdpdGg9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXM7ZTspe2lmKGUuX3Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIGU7ZT1lLl9wYXJlbnR9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmZvcms9ZnVuY3Rpb24odCl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJab25lU3BlYyByZXF1aXJlZCEiKTtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmZvcmsodGhpcyx0KX0sZS5wcm90b3R5cGUud3JhcD1mdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiRXhwZWN0aW5nIGZ1bmN0aW9uIGdvdDogIit0KTt2YXIgbj10aGlzLl96b25lRGVsZWdhdGUuaW50ZXJjZXB0KHRoaXMsdCxlKSxyPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHIucnVuR3VhcmRlZChuLHRoaXMsYXJndW1lbnRzLGUpfX0sZS5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKHQsZSxuLHIpe2o9e3BhcmVudDpqLHpvbmU6dGhpc307dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsdCxlLG4scil9ZmluYWxseXtqPWoucGFyZW50fX0sZS5wcm90b3R5cGUucnVuR3VhcmRlZD1mdW5jdGlvbih0LGUsbixyKXt2b2lkIDA9PT1lJiYoZT1udWxsKSxqPXtwYXJlbnQ6aix6b25lOnRoaXN9O3RyeXt0cnl7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyx0LGUsbixyKX1jYXRjaChvKXtpZih0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyxvKSl0aHJvdyBvfX1maW5hbGx5e2o9ai5wYXJlbnR9fSxlLnByb3RvdHlwZS5ydW5UYXNrPWZ1bmN0aW9uKHQsZSxuKXtpZih0LnpvbmUhPXRoaXMpdGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2FuIG9ubHkgYmUgcnVuIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246ICIrKHQuem9uZXx8eSkubmFtZSsiOyBFeGVjdXRpb246ICIrdGhpcy5uYW1lKyIpIik7aWYodC5zdGF0ZSE9PWJ8fHQudHlwZSE9PU8mJnQudHlwZSE9PUUpe3ZhciByPXQuc3RhdGUhPV87ciYmdC5fdHJhbnNpdGlvblRvKF8sayksdC5ydW5Db3VudCsrO3ZhciBvPU07TT10LGo9e3BhcmVudDpqLHpvbmU6dGhpc307dHJ5e3QudHlwZT09RSYmdC5kYXRhJiYhdC5kYXRhLmlzUGVyaW9kaWMmJih0LmNhbmNlbEZuPXZvaWQgMCk7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlVGFzayh0aGlzLHQsZSxuKX1jYXRjaChpKXtpZih0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyxpKSl0aHJvdyBpfX1maW5hbGx5e3Quc3RhdGUhPT1iJiZ0LnN0YXRlIT09eCYmKHQudHlwZT09T3x8dC5kYXRhJiZ0LmRhdGEuaXNQZXJpb2RpYz9yJiZ0Ll90cmFuc2l0aW9uVG8oayxfKToodC5ydW5Db3VudD0wLHRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LC0xKSxyJiZ0Ll90cmFuc2l0aW9uVG8oYixfLGIpKSksaj1qLnBhcmVudCxNPW99fX0sZS5wcm90b3R5cGUuc2NoZWR1bGVUYXNrPWZ1bmN0aW9uKHQpe2lmKHQuem9uZSYmdC56b25lIT09dGhpcylmb3IodmFyIGU9dGhpcztlOyl7aWYoZT09PXQuem9uZSl0aHJvdyBFcnJvcigiY2FuIG5vdCByZXNjaGVkdWxlIHRhc2sgdG8gIit0aGlzLm5hbWUrIiB3aGljaCBpcyBkZXNjZW5kYW50cyBvZiB0aGUgb3JpZ2luYWwgem9uZSAiK3Quem9uZS5uYW1lKTtlPWUucGFyZW50fXQuX3RyYW5zaXRpb25UbyhtLGIpO3ZhciBuPVtdO3QuX3pvbmVEZWxlZ2F0ZXM9bix0Ll96b25lPXRoaXM7dHJ5e3Q9dGhpcy5fem9uZURlbGVnYXRlLnNjaGVkdWxlVGFzayh0aGlzLHQpfWNhdGNoKHIpe3Rocm93IHQuX3RyYW5zaXRpb25Ubyh4LG0sYiksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMscikscn1yZXR1cm4gdC5fem9uZURlbGVnYXRlcz09PW4mJnRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LDEpLHQuc3RhdGU9PW0mJnQuX3RyYW5zaXRpb25UbyhrLG0pLHR9LGUucHJvdG90eXBlLnNjaGVkdWxlTWljcm9UYXNrPWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgcyhTLHQsZSxuLHIsdm9pZCAwKSl9LGUucHJvdG90eXBlLnNjaGVkdWxlTWFjcm9UYXNrPWZ1bmN0aW9uKHQsZSxuLHIsbyl7cmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBzKEUsdCxlLG4scixvKSl9LGUucHJvdG90eXBlLnNjaGVkdWxlRXZlbnRUYXNrPWZ1bmN0aW9uKHQsZSxuLHIsbyl7cmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBzKE8sdCxlLG4scixvKSl9LGUucHJvdG90eXBlLmNhbmNlbFRhc2s9ZnVuY3Rpb24odCl7aWYodC56b25lIT10aGlzKXRocm93IG5ldyBFcnJvcigiQSB0YXNrIGNhbiBvbmx5IGJlIGNhbmNlbGxlZCBpbiB0aGUgem9uZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiAiKyh0LnpvbmV8fHkpLm5hbWUrIjsgRXhlY3V0aW9uOiAiK3RoaXMubmFtZSsiKSIpO3QuX3RyYW5zaXRpb25Ubyh3LGssXyk7dHJ5e3RoaXMuX3pvbmVEZWxlZ2F0ZS5jYW5jZWxUYXNrKHRoaXMsdCl9Y2F0Y2goZSl7dGhyb3cgdC5fdHJhbnNpdGlvblRvKHgsdyksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsZSksZX1yZXR1cm4gdGhpcy5fdXBkYXRlVGFza0NvdW50KHQsLTEpLHQuX3RyYW5zaXRpb25UbyhiLHcpLHQucnVuQ291bnQ9MCx0fSxlLnByb3RvdHlwZS5fdXBkYXRlVGFza0NvdW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5fem9uZURlbGVnYXRlczstMT09ZSYmKHQuX3pvbmVEZWxlZ2F0ZXM9bnVsbCk7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspbltyXS5fdXBkYXRlVGFza0NvdW50KHQudHlwZSxlKX0sZS5fX3N5bWJvbF9fPVIsZX0oKSxjPXtuYW1lOiIiLG9uSGFzVGFzazpmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdC5oYXNUYXNrKG4scil9LG9uU2NoZWR1bGVUYXNrOmZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0LnNjaGVkdWxlVGFzayhuLHIpfSxvbkludm9rZVRhc2s6ZnVuY3Rpb24odCxlLG4scixvLGkpe3JldHVybiB0Lmludm9rZVRhc2sobixyLG8saSl9LG9uQ2FuY2VsVGFzazpmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdC5jYW5jZWxUYXNrKG4scil9fSx1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5fdGFza0NvdW50cz17bWljcm9UYXNrOjAsbWFjcm9UYXNrOjAsZXZlbnRUYXNrOjB9LHRoaXMuem9uZT10LHRoaXMuX3BhcmVudERlbGVnYXRlPWUsdGhpcy5fZm9ya1pTPW4mJihuJiZuLm9uRm9yaz9uOmUuX2ZvcmtaUyksdGhpcy5fZm9ya0RsZ3Q9biYmKG4ub25Gb3JrP2U6ZS5fZm9ya0RsZ3QpLHRoaXMuX2ZvcmtDdXJyWm9uZT1uJiYobi5vbkZvcms/dGhpcy56b25lOmUuem9uZSksdGhpcy5faW50ZXJjZXB0WlM9biYmKG4ub25JbnRlcmNlcHQ/bjplLl9pbnRlcmNlcHRaUyksdGhpcy5faW50ZXJjZXB0RGxndD1uJiYobi5vbkludGVyY2VwdD9lOmUuX2ludGVyY2VwdERsZ3QpLHRoaXMuX2ludGVyY2VwdEN1cnJab25lPW4mJihuLm9uSW50ZXJjZXB0P3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX2ludm9rZVpTPW4mJihuLm9uSW52b2tlP246ZS5faW52b2tlWlMpLHRoaXMuX2ludm9rZURsZ3Q9biYmKG4ub25JbnZva2U/ZTplLl9pbnZva2VEbGd0KSx0aGlzLl9pbnZva2VDdXJyWm9uZT1uJiYobi5vbkludm9rZT90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9oYW5kbGVFcnJvclpTPW4mJihuLm9uSGFuZGxlRXJyb3I/bjplLl9oYW5kbGVFcnJvclpTKSx0aGlzLl9oYW5kbGVFcnJvckRsZ3Q9biYmKG4ub25IYW5kbGVFcnJvcj9lOmUuX2hhbmRsZUVycm9yRGxndCksdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZT1uJiYobi5vbkhhbmRsZUVycm9yP3RoaXMuem9uZTplLnpvbmUpLHRoaXMuX3NjaGVkdWxlVGFza1pTPW4mJihuLm9uU2NoZWR1bGVUYXNrP246ZS5fc2NoZWR1bGVUYXNrWlMpLHRoaXMuX3NjaGVkdWxlVGFza0RsZ3Q9biYmKG4ub25TY2hlZHVsZVRhc2s/ZTplLl9zY2hlZHVsZVRhc2tEbGd0KSx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZT1uJiYobi5vblNjaGVkdWxlVGFzaz90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9pbnZva2VUYXNrWlM9biYmKG4ub25JbnZva2VUYXNrP246ZS5faW52b2tlVGFza1pTKSx0aGlzLl9pbnZva2VUYXNrRGxndD1uJiYobi5vbkludm9rZVRhc2s/ZTplLl9pbnZva2VUYXNrRGxndCksdGhpcy5faW52b2tlVGFza0N1cnJab25lPW4mJihuLm9uSW52b2tlVGFzaz90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9jYW5jZWxUYXNrWlM9biYmKG4ub25DYW5jZWxUYXNrP246ZS5fY2FuY2VsVGFza1pTKSx0aGlzLl9jYW5jZWxUYXNrRGxndD1uJiYobi5vbkNhbmNlbFRhc2s/ZTplLl9jYW5jZWxUYXNrRGxndCksdGhpcy5fY2FuY2VsVGFza0N1cnJab25lPW4mJihuLm9uQ2FuY2VsVGFzaz90aGlzLnpvbmU6ZS56b25lKSx0aGlzLl9oYXNUYXNrWlM9bnVsbCx0aGlzLl9oYXNUYXNrRGxndD1udWxsLHRoaXMuX2hhc1Rhc2tEbGd0T3duZXI9bnVsbCx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9bnVsbDt2YXIgcj1uJiZuLm9uSGFzVGFzazsocnx8ZSYmZS5faGFzVGFza1pTKSYmKHRoaXMuX2hhc1Rhc2taUz1yP246Yyx0aGlzLl9oYXNUYXNrRGxndD1lLHRoaXMuX2hhc1Rhc2tEbGd0T3duZXI9dGhpcyx0aGlzLl9oYXNUYXNrQ3VyclpvbmU9dCxuLm9uU2NoZWR1bGVUYXNrfHwodGhpcy5fc2NoZWR1bGVUYXNrWlM9Yyx0aGlzLl9zY2hlZHVsZVRhc2tEbGd0PWUsdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmU9dGhpcy56b25lKSxuLm9uSW52b2tlVGFza3x8KHRoaXMuX2ludm9rZVRhc2taUz1jLHRoaXMuX2ludm9rZVRhc2tEbGd0PWUsdGhpcy5faW52b2tlVGFza0N1cnJab25lPXRoaXMuem9uZSksbi5vbkNhbmNlbFRhc2t8fCh0aGlzLl9jYW5jZWxUYXNrWlM9Yyx0aGlzLl9jYW5jZWxUYXNrRGxndD1lLHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZT10aGlzLnpvbmUpKX1yZXR1cm4gdC5wcm90b3R5cGUuZm9yaz1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9mb3JrWlM/dGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCx0aGlzLnpvbmUsdCxlKTpuZXcgYSh0LGUpfSx0LnByb3RvdHlwZS5pbnRlcmNlcHQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9pbnRlcmNlcHRaUz90aGlzLl9pbnRlcmNlcHRaUy5vbkludGVyY2VwdCh0aGlzLl9pbnRlcmNlcHREbGd0LHRoaXMuX2ludGVyY2VwdEN1cnJab25lLHQsZSxuKTplfSx0LnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24odCxlLG4scixvKXtyZXR1cm4gdGhpcy5faW52b2tlWlM/dGhpcy5faW52b2tlWlMub25JbnZva2UodGhpcy5faW52b2tlRGxndCx0aGlzLl9pbnZva2VDdXJyWm9uZSx0LGUsbixyLG8pOmUuYXBwbHkobixyKX0sdC5wcm90b3R5cGUuaGFuZGxlRXJyb3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4hdGhpcy5faGFuZGxlRXJyb3JaU3x8dGhpcy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9yKHRoaXMuX2hhbmRsZUVycm9yRGxndCx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lLHQsZSl9LHQucHJvdG90eXBlLnNjaGVkdWxlVGFzaz1mdW5jdGlvbih0LGUpe3ZhciBuPWU7aWYodGhpcy5fc2NoZWR1bGVUYXNrWlMpdGhpcy5faGFzVGFza1pTJiZuLl96b25lRGVsZWdhdGVzLnB1c2godGhpcy5faGFzVGFza0RsZ3RPd25lciksKG49dGhpcy5fc2NoZWR1bGVUYXNrWlMub25TY2hlZHVsZVRhc2sodGhpcy5fc2NoZWR1bGVUYXNrRGxndCx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSx0LGUpKXx8KG49ZSk7ZWxzZSBpZihlLnNjaGVkdWxlRm4pZS5zY2hlZHVsZUZuKGUpO2Vsc2V7aWYoZS50eXBlIT1TKXRocm93IG5ldyBFcnJvcigiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uIik7ZChlKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuaW52b2tlVGFzaz1mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdGhpcy5faW52b2tlVGFza1pTP3RoaXMuX2ludm9rZVRhc2taUy5vbkludm9rZVRhc2sodGhpcy5faW52b2tlVGFza0RsZ3QsdGhpcy5faW52b2tlVGFza0N1cnJab25lLHQsZSxuLHIpOmUuY2FsbGJhY2suYXBwbHkobixyKX0sdC5wcm90b3R5cGUuY2FuY2VsVGFzaz1mdW5jdGlvbih0LGUpe3ZhciBuO2lmKHRoaXMuX2NhbmNlbFRhc2taUyluPXRoaXMuX2NhbmNlbFRhc2taUy5vbkNhbmNlbFRhc2sodGhpcy5fY2FuY2VsVGFza0RsZ3QsdGhpcy5fY2FuY2VsVGFza0N1cnJab25lLHQsZSk7ZWxzZXtpZighZS5jYW5jZWxGbil0aHJvdyBFcnJvcigiVGFzayBpcyBub3QgY2FuY2VsYWJsZSIpO249ZS5jYW5jZWxGbihlKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuaGFzVGFzaz1mdW5jdGlvbih0LGUpe3RyeXt0aGlzLl9oYXNUYXNrWlMmJnRoaXMuX2hhc1Rhc2taUy5vbkhhc1Rhc2sodGhpcy5faGFzVGFza0RsZ3QsdGhpcy5faGFzVGFza0N1cnJab25lLHQsZSl9Y2F0Y2gobil7dGhpcy5oYW5kbGVFcnJvcih0LG4pfX0sdC5wcm90b3R5cGUuX3VwZGF0ZVRhc2tDb3VudD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX3Rhc2tDb3VudHMscj1uW3RdLG89blt0XT1yK2U7aWYobzwwKXRocm93IG5ldyBFcnJvcigiTW9yZSB0YXNrcyBleGVjdXRlZCB0aGVuIHdlcmUgc2NoZWR1bGVkLiIpOzAhPXImJjAhPW98fHRoaXMuaGFzVGFzayh0aGlzLnpvbmUse21pY3JvVGFzazpuLm1pY3JvVGFzaz4wLG1hY3JvVGFzazpuLm1hY3JvVGFzaz4wLGV2ZW50VGFzazpuLmV2ZW50VGFzaz4wLGNoYW5nZTp0fSl9LHR9KCkscz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUobixyLG8saSxhLGMpe3RoaXMuX3pvbmU9bnVsbCx0aGlzLnJ1bkNvdW50PTAsdGhpcy5fem9uZURlbGVnYXRlcz1udWxsLHRoaXMuX3N0YXRlPSJub3RTY2hlZHVsZWQiLHRoaXMudHlwZT1uLHRoaXMuc291cmNlPXIsdGhpcy5kYXRhPWksdGhpcy5zY2hlZHVsZUZuPWEsdGhpcy5jYW5jZWxGbj1jLHRoaXMuY2FsbGJhY2s9bzt2YXIgdT10aGlzO3RoaXMuaW52b2tlPW49PT1PJiZpJiZpLnVzZUc/ZS5pbnZva2VUYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIGUuaW52b2tlVGFzay5jYWxsKHQsdSx0aGlzLGFyZ3VtZW50cyl9fXJldHVybiBlLmludm9rZVRhc2s9ZnVuY3Rpb24odCxlLG4pe3R8fCh0PXRoaXMpLFArKzt0cnl7cmV0dXJuIHQucnVuQ291bnQrKyx0LnpvbmUucnVuVGFzayh0LGUsbil9ZmluYWxseXsxPT1QJiZnKCksUC0tfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ6b25lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvbmV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJzdGF0ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0ZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5jYW5jZWxTY2hlZHVsZVJlcXVlc3Q9ZnVuY3Rpb24oKXt0aGlzLl90cmFuc2l0aW9uVG8oYixtKX0sZS5wcm90b3R5cGUuX3RyYW5zaXRpb25Ubz1mdW5jdGlvbih0LGUsbil7aWYodGhpcy5fc3RhdGUhPT1lJiZ0aGlzLl9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKHRoaXMudHlwZSsiICciK3RoaXMuc291cmNlKyInOiBjYW4gbm90IHRyYW5zaXRpb24gdG8gJyIrdCsiJywgZXhwZWN0aW5nIHN0YXRlICciK2UrIiciKyhuPyIgb3IgJyIrbisiJyI6IiIpKyIsIHdhcyAnIit0aGlzLl9zdGF0ZSsiJy4iKTt0aGlzLl9zdGF0ZT10LHQ9PWImJih0aGlzLl96b25lRGVsZWdhdGVzPW51bGwpfSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEmJnZvaWQgMCE9PXRoaXMuZGF0YS5oYW5kbGVJZD90aGlzLmRhdGEuaGFuZGxlSWQudG9TdHJpbmcoKTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpcyl9LGUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOnRoaXMudHlwZSxzdGF0ZTp0aGlzLnN0YXRlLHNvdXJjZTp0aGlzLnNvdXJjZSx6b25lOnRoaXMuem9uZS5uYW1lLHJ1bkNvdW50OnRoaXMucnVuQ291bnR9fSxlfSgpLGY9Uigic2V0VGltZW91dCIpLGw9UigiUHJvbWlzZSIpLHA9UigidGhlbiIpLGg9W10sdj0hMTtmdW5jdGlvbiBkKGUpe2lmKDA9PT1QJiYwPT09aC5sZW5ndGgpaWYoaXx8dFtsXSYmKGk9dFtsXS5yZXNvbHZlKDApKSxpKXt2YXIgbj1pW3BdO258fChuPWkudGhlbiksbi5jYWxsKGksZyl9ZWxzZSB0W2ZdKGcsMCk7ZSYmaC5wdXNoKGUpfWZ1bmN0aW9uIGcoKXtpZighdil7Zm9yKHY9ITA7aC5sZW5ndGg7KXt2YXIgdD1oO2g9W107Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuPXRbZV07dHJ5e24uem9uZS5ydW5UYXNrKG4sbnVsbCxudWxsKX1jYXRjaChyKXtJLm9uVW5oYW5kbGVkRXJyb3Iocil9fX1JLm1pY3JvdGFza0RyYWluRG9uZSgpLHY9ITF9fXZhciB5PXtuYW1lOiJOTyBaT05FIn0sYj0ibm90U2NoZWR1bGVkIixtPSJzY2hlZHVsaW5nIixrPSJzY2hlZHVsZWQiLF89InJ1bm5pbmciLHc9ImNhbmNlbGluZyIseD0idW5rbm93biIsUz0ibWljcm9UYXNrIixFPSJtYWNyb1Rhc2siLE89ImV2ZW50VGFzayIsVD17fSxJPXtzeW1ib2w6UixjdXJyZW50Wm9uZUZyYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIGp9LG9uVW5oYW5kbGVkRXJyb3I6RCxtaWNyb3Rhc2tEcmFpbkRvbmU6RCxzY2hlZHVsZU1pY3JvVGFzazpkLHNob3dVbmNhdWdodEVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIWFbUigiaWdub3JlQ29uc29sZUVycm9yVW5jYXVnaHRFcnJvciIpXX0scGF0Y2hFdmVudFRhcmdldDpmdW5jdGlvbigpe3JldHVybltdfSxwYXRjaE9uUHJvcGVydGllczpELHBhdGNoTWV0aG9kOmZ1bmN0aW9uKCl7cmV0dXJuIER9LGJpbmRBcmd1bWVudHM6ZnVuY3Rpb24oKXtyZXR1cm5bXX0scGF0Y2hUaGVuOmZ1bmN0aW9uKCl7cmV0dXJuIER9LHBhdGNoTWFjcm9UYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIER9LHNldE5hdGl2ZVByb21pc2U6ZnVuY3Rpb24odCl7dCYmImZ1bmN0aW9uIj09dHlwZW9mIHQucmVzb2x2ZSYmKGk9dC5yZXNvbHZlKDApKX0scGF0Y2hFdmVudFByb3RvdHlwZTpmdW5jdGlvbigpe3JldHVybiBEfSxpc0lFT3JFZGdlOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGdldEdsb2JhbE9iamVjdHM6ZnVuY3Rpb24oKXt9LE9iamVjdERlZmluZVByb3BlcnR5OmZ1bmN0aW9uKCl7cmV0dXJuIER9LE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcjpmdW5jdGlvbigpe30sT2JqZWN0Q3JlYXRlOmZ1bmN0aW9uKCl7fSxBcnJheVNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuW119LHBhdGNoQ2xhc3M6ZnVuY3Rpb24oKXtyZXR1cm4gRH0sd3JhcFdpdGhDdXJyZW50Wm9uZTpmdW5jdGlvbigpe3JldHVybiBEfSxmaWx0ZXJQcm9wZXJ0aWVzOmZ1bmN0aW9uKCl7cmV0dXJuW119LGF0dGFjaE9yaWdpblRvUGF0Y2hlZDpmdW5jdGlvbigpe3JldHVybiBEfSxfcmVkZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbigpe3JldHVybiBEfSxwYXRjaENhbGxiYWNrczpmdW5jdGlvbigpe3JldHVybiBEfX0saj17cGFyZW50Om51bGwsem9uZTpuZXcgYShudWxsLG51bGwpfSxNPW51bGwsUD0wO2Z1bmN0aW9uIEQoKXt9ZnVuY3Rpb24gUih0KXtyZXR1cm4iX196b25lX3N5bWJvbF9fIit0fXIoIlpvbmUiLCJab25lIiksdC5ab25lPWF9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3d8fCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmc2VsZnx8Z2xvYmFsKSxab25lLl9fbG9hZF9wYXRjaCgiWm9uZUF3YXJlUHJvbWlzZSIsKGZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGk9T2JqZWN0LmRlZmluZVByb3BlcnR5LGE9bi5zeW1ib2wsYz1bXSx1PWEoIlByb21pc2UiKSxzPWEoInRoZW4iKSxmPSJfX2NyZWF0aW9uVHJhY2VfXyI7bi5vblVuaGFuZGxlZEVycm9yPWZ1bmN0aW9uKHQpe2lmKG4uc2hvd1VuY2F1Z2h0RXJyb3IoKSl7dmFyIGU9dCYmdC5yZWplY3Rpb247ZT9jb25zb2xlLmVycm9yKCJVbmhhbmRsZWQgUHJvbWlzZSByZWplY3Rpb246IixlIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOmUsIjsgWm9uZToiLHQuem9uZS5uYW1lLCI7IFRhc2s6Iix0LnRhc2smJnQudGFzay5zb3VyY2UsIjsgVmFsdWU6IixlLGUgaW5zdGFuY2VvZiBFcnJvcj9lLnN0YWNrOnZvaWQgMCk6Y29uc29sZS5lcnJvcih0KX19LG4ubWljcm90YXNrRHJhaW5Eb25lPWZ1bmN0aW9uKCl7Zm9yKDtjLmxlbmd0aDspZm9yKHZhciB0PWZ1bmN0aW9uKCl7dmFyIHQ9Yy5zaGlmdCgpO3RyeXt0LnpvbmUucnVuR3VhcmRlZCgoZnVuY3Rpb24oKXt0aHJvdyB0fSkpfWNhdGNoKGUpe3AoZSl9fTtjLmxlbmd0aDspdCgpfTt2YXIgbD1hKCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpO2Z1bmN0aW9uIHAodCl7bi5vblVuaGFuZGxlZEVycm9yKHQpO3RyeXt2YXIgcj1lW2xdO3ImJiJmdW5jdGlvbiI9PXR5cGVvZiByJiZyLmNhbGwodGhpcyx0KX1jYXRjaChvKXt9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQmJnQudGhlbn1mdW5jdGlvbiB2KHQpe3JldHVybiB0fWZ1bmN0aW9uIGQodCl7cmV0dXJuIE4ucmVqZWN0KHQpfXZhciBnPWEoInN0YXRlIikseT1hKCJ2YWx1ZSIpLGI9YSgiZmluYWxseSIpLG09YSgicGFyZW50UHJvbWlzZVZhbHVlIiksaz1hKCJwYXJlbnRQcm9taXNlU3RhdGUiKSxfPSJQcm9taXNlLnRoZW4iLHc9bnVsbCx4PSEwLFM9ITEsRT0wO2Z1bmN0aW9uIE8odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dHJ5e00odCxlLG4pfWNhdGNoKHIpe00odCwhMSxyKX19fXZhciBUPWZ1bmN0aW9uKCl7dmFyIHQ9ITE7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3R8fCh0PSEwLGUuYXBwbHkobnVsbCxhcmd1bWVudHMpKX19fSxJPSJQcm9taXNlIHJlc29sdmVkIHdpdGggaXRzZWxmIixqPWEoImN1cnJlbnRUYXNrVHJhY2UiKTtmdW5jdGlvbiBNKHQscixvKXt2YXIgYSx1PVQoKTtpZih0PT09byl0aHJvdyBuZXcgVHlwZUVycm9yKEkpO2lmKHRbZ109PT13KXt2YXIgcz1udWxsO3RyeXsib2JqZWN0IiE9dHlwZW9mIG8mJiJmdW5jdGlvbiIhPXR5cGVvZiBvfHwocz1vJiZvLnRoZW4pfWNhdGNoKGQpe3JldHVybiB1KChmdW5jdGlvbigpe00odCwhMSxkKX0pKSgpLHR9aWYociE9PVMmJm8gaW5zdGFuY2VvZiBOJiZvLmhhc093blByb3BlcnR5KGcpJiZvLmhhc093blByb3BlcnR5KHkpJiZvW2ddIT09dylEKG8pLE0odCxvW2ddLG9beV0pO2Vsc2UgaWYociE9PVMmJiJmdW5jdGlvbiI9PXR5cGVvZiBzKXRyeXtzLmNhbGwobyx1KE8odCxyKSksdShPKHQsITEpKSl9Y2F0Y2goZCl7dSgoZnVuY3Rpb24oKXtNKHQsITEsZCl9KSkoKX1lbHNle3RbZ109cjt2YXIgbD10W3ldO2lmKHRbeV09byx0W2JdPT09YiYmcj09PXgmJih0W2ddPXRba10sdFt5XT10W21dKSxyPT09UyYmbyBpbnN0YW5jZW9mIEVycm9yKXt2YXIgcD1lLmN1cnJlbnRUYXNrJiZlLmN1cnJlbnRUYXNrLmRhdGEmJmUuY3VycmVudFRhc2suZGF0YVtmXTtwJiZpKG8saix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsdmFsdWU6cH0pfWZvcih2YXIgaD0wO2g8bC5sZW5ndGg7KVIodCxsW2grK10sbFtoKytdLGxbaCsrXSxsW2grK10pO2lmKDA9PWwubGVuZ3RoJiZyPT1TKXt0W2ddPUU7dHJ5e3Rocm93IG5ldyBFcnJvcigiVW5jYXVnaHQgKGluIHByb21pc2UpOiAiKygoYT1vKSYmYS50b1N0cmluZz09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc/KGEuY29uc3RydWN0b3ImJmEuY29uc3RydWN0b3IubmFtZXx8IiIpKyI6ICIrSlNPTi5zdHJpbmdpZnkoYSk6YT9hLnRvU3RyaW5nKCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpKSsobyYmby5zdGFjaz8iXG4iK28uc3RhY2s6IiIpKX1jYXRjaChkKXt2YXIgdj1kO3YucmVqZWN0aW9uPW8sdi5wcm9taXNlPXQsdi56b25lPWUuY3VycmVudCx2LnRhc2s9ZS5jdXJyZW50VGFzayxjLnB1c2godiksbi5zY2hlZHVsZU1pY3JvVGFzaygpfX19fXJldHVybiB0fXZhciBQPWEoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIik7ZnVuY3Rpb24gRCh0KXtpZih0W2ddPT09RSl7dHJ5e3ZhciBuPWVbUF07biYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4uY2FsbCh0aGlzLHtyZWplY3Rpb246dFt5XSxwcm9taXNlOnR9KX1jYXRjaChvKXt9dFtnXT1TO2Zvcih2YXIgcj0wO3I8Yy5sZW5ndGg7cisrKXQ9PT1jW3JdLnByb21pc2UmJmMuc3BsaWNlKHIsMSl9fWZ1bmN0aW9uIFIodCxlLG4scixvKXtEKHQpO3ZhciBpPXRbZ10sYT1pPyJmdW5jdGlvbiI9PXR5cGVvZiByP3I6djoiZnVuY3Rpb24iPT10eXBlb2Ygbz9vOmQ7ZS5zY2hlZHVsZU1pY3JvVGFzayhfLChmdW5jdGlvbigpe3RyeXt2YXIgcj10W3ldLG89biYmYj09PW5bYl07byYmKG5bbV09cixuW2tdPWkpO3ZhciBjPWUucnVuKGEsdm9pZCAwLG8mJmEhPT1kJiZhIT09dj9bXTpbcl0pO00obiwhMCxjKX1jYXRjaCh1KXtNKG4sITEsdSl9fSksbil9dmFyIE49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBhbiBpbnN0YW5jZW9mIFByb21pc2UuIik7dGhpc1tnXT13LHRoaXNbeV09W107dHJ5e2UmJmUoTyh0aGlzLHgpLE8odGhpcyxTKSl9Y2F0Y2gobil7TSh0aGlzLCExLG4pfX1yZXR1cm4gdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiBab25lQXdhcmVQcm9taXNlKCkgeyBbbmF0aXZlIGNvZGVdIH0ifSx0LnJlc29sdmU9ZnVuY3Rpb24odCl7cmV0dXJuIE0obmV3IHRoaXMobnVsbCkseCx0KX0sdC5yZWplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIE0obmV3IHRoaXMobnVsbCksUyx0KX0sdC5yYWNlPWZ1bmN0aW9uKHQpe3ZhciBlLG4sbyxpLGE9bmV3IHRoaXMoKGZ1bmN0aW9uKHQsZSl7bz10LGk9ZX0pKTtmdW5jdGlvbiBjKHQpe28odCl9ZnVuY3Rpb24gdSh0KXtpKHQpfXRyeXtmb3IodmFyIHM9cih0KSxmPXMubmV4dCgpOyFmLmRvbmU7Zj1zLm5leHQoKSl7dmFyIGw9Zi52YWx1ZTtoKGwpfHwobD10aGlzLnJlc29sdmUobCkpLGwudGhlbihjLHUpfX1jYXRjaChwKXtlPXtlcnJvcjpwfX1maW5hbGx5e3RyeXtmJiYhZi5kb25lJiYobj1zLnJldHVybikmJm4uY2FsbChzKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19cmV0dXJuIGF9LHQuYWxsPWZ1bmN0aW9uKHQpe3ZhciBlLG4sbyxpLGE9bmV3IHRoaXMoKGZ1bmN0aW9uKHQsZSl7bz10LGk9ZX0pKSxjPTIsdT0wLHM9W10sZj1mdW5jdGlvbih0KXtoKHQpfHwodD1sLnJlc29sdmUodCkpO3ZhciBlPXU7dC50aGVuKChmdW5jdGlvbih0KXtzW2VdPXQsMD09LS1jJiZvKHMpfSksaSksYysrLHUrK30sbD10aGlzO3RyeXtmb3IodmFyIHA9cih0KSx2PXAubmV4dCgpOyF2LmRvbmU7dj1wLm5leHQoKSlmKHYudmFsdWUpfWNhdGNoKGQpe2U9e2Vycm9yOmR9fWZpbmFsbHl7dHJ5e3YmJiF2LmRvbmUmJihuPXAucmV0dXJuKSYmbi5jYWxsKHApfWZpbmFsbHl7aWYoZSl0aHJvdyBlLmVycm9yfX1yZXR1cm4gMD09KGMtPTIpJiZvKHMpLGF9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxTeW1ib2wudG9TdHJpbmdUYWcse2dldDpmdW5jdGlvbigpe3JldHVybiJQcm9taXNlIn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHQsbil7dmFyIHI9bmV3IHRoaXMuY29uc3RydWN0b3IobnVsbCksbz1lLmN1cnJlbnQ7cmV0dXJuIHRoaXNbZ109PXc/dGhpc1t5XS5wdXNoKG8scix0LG4pOlIodGhpcyxvLHIsdCxuKSxyfSx0LnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LHQucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24odCl7dmFyIG49bmV3IHRoaXMuY29uc3RydWN0b3IobnVsbCk7bltiXT1iO3ZhciByPWUuY3VycmVudDtyZXR1cm4gdGhpc1tnXT09dz90aGlzW3ldLnB1c2gocixuLHQsdCk6Uih0aGlzLHIsbix0LHQpLG59LHR9KCk7Ti5yZXNvbHZlPU4ucmVzb2x2ZSxOLnJlamVjdD1OLnJlamVjdCxOLnJhY2U9Ti5yYWNlLE4uYWxsPU4uYWxsO3ZhciBBPXRbdV09dC5Qcm9taXNlLEw9ZS5fX3N5bWJvbF9fKCJab25lQXdhcmVQcm9taXNlIiksRj1vKHQsIlByb21pc2UiKTtGJiYhRi5jb25maWd1cmFibGV8fChGJiZkZWxldGUgRi53cml0YWJsZSxGJiZkZWxldGUgRi52YWx1ZSxGfHwoRj17Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KSxGLmdldD1mdW5jdGlvbigpe3JldHVybiB0W0xdP3RbTF06dFt1XX0sRi5zZXQ9ZnVuY3Rpb24oZSl7ZT09PU4/dFtMXT1lOih0W3VdPWUsZS5wcm90b3R5cGVbc118fEMoZSksbi5zZXROYXRpdmVQcm9taXNlKGUpKX0saSh0LCJQcm9taXNlIixGKSksdC5Qcm9taXNlPU47dmFyIHosWj1hKCJ0aGVuUGF0Y2hlZCIpO2Z1bmN0aW9uIEModCl7dmFyIGU9dC5wcm90b3R5cGUsbj1vKGUsInRoZW4iKTtpZighbnx8ITEhPT1uLndyaXRhYmxlJiZuLmNvbmZpZ3VyYWJsZSl7dmFyIHI9ZS50aGVuO2Vbc109cix0LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gbmV3IE4oKGZ1bmN0aW9uKHQsZSl7ci5jYWxsKG4sdCxlKX0pKS50aGVuKHQsZSl9LHRbWl09ITB9fWlmKG4ucGF0Y2hUaGVuPUMsQSl7QyhBKTt2YXIgVz10LmZldGNoOyJmdW5jdGlvbiI9PXR5cGVvZiBXJiYodFtuLnN5bWJvbCgiZmV0Y2giKV09Vyx0LmZldGNoPSh6PVcsZnVuY3Rpb24oKXt2YXIgdD16LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZih0IGluc3RhbmNlb2YgTilyZXR1cm4gdDt2YXIgZT10LmNvbnN0cnVjdG9yO3JldHVybiBlW1pdfHxDKGUpLHR9KSl9cmV0dXJuIFByb21pc2VbZS5fX3N5bWJvbF9fKCJ1bmNhdWdodFByb21pc2VFcnJvcnMiKV09YyxOfSkpO3ZhciB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsZT1PYmplY3QuZGVmaW5lUHJvcGVydHksbj1PYmplY3QuZ2V0UHJvdG90eXBlT2Ysbz1PYmplY3QuY3JlYXRlLGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLGE9ImFkZEV2ZW50TGlzdGVuZXIiLGM9InJlbW92ZUV2ZW50TGlzdGVuZXIiLHU9Wm9uZS5fX3N5bWJvbF9fKGEpLHM9Wm9uZS5fX3N5bWJvbF9fKGMpLGY9InRydWUiLGw9ImZhbHNlIixwPSJfX3pvbmVfc3ltYm9sX18iO2Z1bmN0aW9uIGgodCxlKXtyZXR1cm4gWm9uZS5jdXJyZW50LndyYXAodCxlKX1mdW5jdGlvbiB2KHQsZSxuLHIsbyl7cmV0dXJuIFpvbmUuY3VycmVudC5zY2hlZHVsZU1hY3JvVGFzayh0LGUsbixyLG8pfXZhciBkPVpvbmUuX19zeW1ib2xfXyxnPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LHk9Zz93aW5kb3c6dm9pZCAwLGI9ZyYmeXx8Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmfHxnbG9iYWwsbT0icmVtb3ZlQXR0cmlidXRlIixrPVtudWxsXTtmdW5jdGlvbiBfKHQsZSl7Zm9yKHZhciBuPXQubGVuZ3RoLTE7bj49MDtuLS0pImZ1bmN0aW9uIj09dHlwZW9mIHRbbl0mJih0W25dPWgodFtuXSxlKyJfIituKSk7cmV0dXJuIHR9ZnVuY3Rpb24gdyh0KXtyZXR1cm4hdHx8ITEhPT10LndyaXRhYmxlJiYhKCJmdW5jdGlvbiI9PXR5cGVvZiB0LmdldCYmdm9pZCAwPT09dC5zZXQpfXZhciB4PSJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSxTPSEoIm53ImluIGIpJiZ2b2lkIDAhPT1iLnByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoYi5wcm9jZXNzKSxFPSFTJiYheCYmISghZ3x8IXkuSFRNTEVsZW1lbnQpLE89dm9pZCAwIT09Yi5wcm9jZXNzJiYiW29iamVjdCBwcm9jZXNzXSI9PT17fS50b1N0cmluZy5jYWxsKGIucHJvY2VzcykmJiF4JiYhKCFnfHwheS5IVE1MRWxlbWVudCksVD17fSxJPWZ1bmN0aW9uKHQpe2lmKHQ9dHx8Yi5ldmVudCl7dmFyIGU9VFt0LnR5cGVdO2V8fChlPVRbdC50eXBlXT1kKCJPTl9QUk9QRVJUWSIrdC50eXBlKSk7dmFyIG4scj10aGlzfHx0LnRhcmdldHx8YixvPXJbZV07aWYoRSYmcj09PXkmJiJlcnJvciI9PT10LnR5cGUpe3ZhciBpPXQ7ITA9PT0obj1vJiZvLmNhbGwodGhpcyxpLm1lc3NhZ2UsaS5maWxlbmFtZSxpLmxpbmVubyxpLmNvbG5vLGkuZXJyb3IpKSYmdC5wcmV2ZW50RGVmYXVsdCgpfWVsc2UgbnVsbD09KG49byYmby5hcHBseSh0aGlzLGFyZ3VtZW50cykpfHxufHx0LnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIG59fTtmdW5jdGlvbiBqKG4scixvKXt2YXIgaT10KG4scik7aWYoIWkmJm8mJnQobyxyKSYmKGk9e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksaSYmaS5jb25maWd1cmFibGUpe3ZhciBhPWQoIm9uIityKyJwYXRjaGVkIik7aWYoIW4uaGFzT3duUHJvcGVydHkoYSl8fCFuW2FdKXtkZWxldGUgaS53cml0YWJsZSxkZWxldGUgaS52YWx1ZTt2YXIgYz1pLmdldCx1PWkuc2V0LHM9ci5zdWJzdHIoMiksZj1UW3NdO2Z8fChmPVRbc109ZCgiT05fUFJPUEVSVFkiK3MpKSxpLnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2V8fG4hPT1ifHwoZT1iKSxlJiYoZVtmXSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHMsSSksdSYmdS5hcHBseShlLGspLCJmdW5jdGlvbiI9PXR5cGVvZiB0PyhlW2ZdPXQsZS5hZGRFdmVudExpc3RlbmVyKHMsSSwhMSkpOmVbZl09bnVsbCl9LGkuZ2V0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0fHxuIT09Ynx8KHQ9YiksIXQpcmV0dXJuIG51bGw7dmFyIGU9dFtmXTtpZihlKXJldHVybiBlO2lmKGMpe3ZhciBvPWMmJmMuY2FsbCh0aGlzKTtpZihvKXJldHVybiBpLnNldC5jYWxsKHRoaXMsbyksImZ1bmN0aW9uIj09dHlwZW9mIHRbbV0mJnQucmVtb3ZlQXR0cmlidXRlKHIpLG99cmV0dXJuIG51bGx9LGUobixyLGkpLG5bYV09ITB9fX1mdW5jdGlvbiBNKHQsZSxuKXtpZihlKWZvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWoodCwib24iK2Vbcl0sbik7ZWxzZXt2YXIgbz1bXTtmb3IodmFyIGkgaW4gdCkib24iPT1pLnN1YnN0cigwLDIpJiZvLnB1c2goaSk7Zm9yKHZhciBhPTA7YTxvLmxlbmd0aDthKyspaih0LG9bYV0sbil9fXZhciBQPWQoIm9yaWdpbmFsSW5zdGFuY2UiKTtmdW5jdGlvbiBEKHQpe3ZhciBuPWJbdF07aWYobil7YltkKHQpXT1uLGJbdF09ZnVuY3Rpb24oKXt2YXIgZT1fKGFyZ3VtZW50cyx0KTtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDp0aGlzW1BdPW5ldyBuO2JyZWFrO2Nhc2UgMTp0aGlzW1BdPW5ldyBuKGVbMF0pO2JyZWFrO2Nhc2UgMjp0aGlzW1BdPW5ldyBuKGVbMF0sZVsxXSk7YnJlYWs7Y2FzZSAzOnRoaXNbUF09bmV3IG4oZVswXSxlWzFdLGVbMl0pO2JyZWFrO2Nhc2UgNDp0aGlzW1BdPW5ldyBuKGVbMF0sZVsxXSxlWzJdLGVbM10pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJBcmcgbGlzdCB0b28gbG9uZy4iKX19LEwoYlt0XSxuKTt2YXIgcixvPW5ldyBuKChmdW5jdGlvbigpe30pKTtmb3IociBpbiBvKSJYTUxIdHRwUmVxdWVzdCI9PT10JiYicmVzcG9uc2VCbG9iIj09PXJ8fGZ1bmN0aW9uKG4peyJmdW5jdGlvbiI9PXR5cGVvZiBvW25dP2JbdF0ucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbUF1bbl0uYXBwbHkodGhpc1tQXSxhcmd1bWVudHMpfTplKGJbdF0ucHJvdG90eXBlLG4se3NldDpmdW5jdGlvbihlKXsiZnVuY3Rpb24iPT10eXBlb2YgZT8odGhpc1tQXVtuXT1oKGUsdCsiLiIrbiksTCh0aGlzW1BdW25dLGUpKTp0aGlzW1BdW25dPWV9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW1BdW25dfX0pfShyKTtmb3IociBpbiBuKSJwcm90b3R5cGUiIT09ciYmbi5oYXNPd25Qcm9wZXJ0eShyKSYmKGJbdF1bcl09bltyXSl9fXZhciBSPSExO2Z1bmN0aW9uIE4oZSxyLG8pe2Zvcih2YXIgaT1lO2kmJiFpLmhhc093blByb3BlcnR5KHIpOylpPW4oaSk7IWkmJmVbcl0mJihpPWUpO3ZhciBhLGMsdT1kKHIpLHM9bnVsbDtpZihpJiYhKHM9aVt1XSkmJihzPWlbdV09aVtyXSx3KGkmJnQoaSxyKSkpKXt2YXIgZj1vKHMsdSxyKTtpW3JdPWZ1bmN0aW9uKCl7cmV0dXJuIGYodGhpcyxhcmd1bWVudHMpfSxMKGlbcl0scyksUiYmKGE9cyxjPWlbcl0sImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoYSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLHQpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShjLHQse2dldDpmdW5jdGlvbigpe3JldHVybiBhW3RdfSxzZXQ6ZnVuY3Rpb24obil7KCFlfHxlLndyaXRhYmxlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5zZXQpJiYoYVt0XT1uKX0sZW51bWVyYWJsZTohZXx8ZS5lbnVtZXJhYmxlLGNvbmZpZ3VyYWJsZTohZXx8ZS5jb25maWd1cmFibGV9KX0pKSl9cmV0dXJuIHN9ZnVuY3Rpb24gQSh0LGUsbil7dmFyIHI9bnVsbDtmdW5jdGlvbiBvKHQpe3ZhciBlPXQuZGF0YTtyZXR1cm4gZS5hcmdzW2UuY2JJZHhdPWZ1bmN0aW9uKCl7dC5pbnZva2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxyLmFwcGx5KGUudGFyZ2V0LGUuYXJncyksdH1yPU4odCxlLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyKXt2YXIgaT1uKGUscik7cmV0dXJuIGkuY2JJZHg+PTAmJiJmdW5jdGlvbiI9PXR5cGVvZiByW2kuY2JJZHhdP3YoaS5uYW1lLHJbaS5jYklkeF0saSxvKTp0LmFwcGx5KGUscil9fSkpfWZ1bmN0aW9uIEwodCxlKXt0W2QoIk9yaWdpbmFsRGVsZWdhdGUiKV09ZX12YXIgRj0hMSx6PSExO2Z1bmN0aW9uIFooKXt0cnl7dmFyIHQ9eS5uYXZpZ2F0b3IudXNlckFnZW50O2lmKC0xIT09dC5pbmRleE9mKCJNU0lFICIpfHwtMSE9PXQuaW5kZXhPZigiVHJpZGVudC8iKSlyZXR1cm4hMH1jYXRjaChlKXt9cmV0dXJuITF9ZnVuY3Rpb24gQygpe2lmKEYpcmV0dXJuIHo7Rj0hMDt0cnl7dmFyIHQ9eS5uYXZpZ2F0b3IudXNlckFnZW50Oy0xPT09dC5pbmRleE9mKCJNU0lFIA==" }, { "key": "qwe?styles.css?5?1", "type": "binary", "value": "base64:IikmJi0xPT09dC5pbmRleE9mKCJUcmlkZW50LyIpJiYtMT09PXQuaW5kZXhPZigiRWRnZS8iKXx8KHo9ITApfWNhdGNoKGUpe31yZXR1cm4gen1ab25lLl9fbG9hZF9wYXRjaCgidG9TdHJpbmciLChmdW5jdGlvbih0KXt2YXIgZT1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsbj1kKCJPcmlnaW5hbERlbGVnYXRlIikscj1kKCJQcm9taXNlIiksbz1kKCJFcnJvciIpLGk9ZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcyl7dmFyIGk9dGhpc1tuXTtpZihpKXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBpP2UuY2FsbChpKTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaSk7aWYodGhpcz09PVByb21pc2Upe3ZhciBhPXRbcl07aWYoYSlyZXR1cm4gZS5jYWxsKGEpfWlmKHRoaXM9PT1FcnJvcil7dmFyIGM9dFtvXTtpZihjKXJldHVybiBlLmNhbGwoYyl9fXJldHVybiBlLmNhbGwodGhpcyl9O2lbbl09ZSxGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc9aTt2YXIgYT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO09iamVjdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIFByb21pc2U/IltvYmplY3QgUHJvbWlzZV0iOmEuY2FsbCh0aGlzKX19KSk7dmFyIFc9ITE7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cpdHJ5e3ZhciBHPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe1c9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLEcsRyksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLEcsRyl9Y2F0Y2goRXQpe1c9ITF9dmFyIFU9e3VzZUc6ITB9LEg9e30sQj17fSxLPS9eX196b25lX3N5bWJvbF9fKFx3KykodHJ1ZXxmYWxzZSkkLyxWPSJfX3pvbmVfc3ltYm9sX19wcm9wYWdhdGlvblN0b3BwZWQiO2Z1bmN0aW9uIFgodCxlLHIpe3ZhciBvPXImJnIuYWRkfHxhLGk9ciYmci5ybXx8Yyx1PXImJnIubGlzdGVuZXJzfHwiZXZlbnRMaXN0ZW5lcnMiLHM9ciYmci5ybUFsbHx8InJlbW92ZUFsbExpc3RlbmVycyIsaD1kKG8pLHY9Ii4iK28rIjoiLGc9InByZXBlbmRMaXN0ZW5lciIseT0iLiIrZysiOiIsYj1mdW5jdGlvbih0LGUsbil7aWYoIXQuaXNSZW1vdmVkKXt2YXIgcj10LmNhbGxiYWNrOyJvYmplY3QiPT10eXBlb2YgciYmci5oYW5kbGVFdmVudCYmKHQuY2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHIuaGFuZGxlRXZlbnQodCl9LHQub3JpZ2luYWxEZWxlZ2F0ZT1yKSx0Lmludm9rZSh0LGUsW25dKTt2YXIgbz10Lm9wdGlvbnM7byYmIm9iamVjdCI9PXR5cGVvZiBvJiZvLm9uY2UmJmVbaV0uY2FsbChlLG4udHlwZSx0Lm9yaWdpbmFsRGVsZWdhdGU/dC5vcmlnaW5hbERlbGVnYXRlOnQuY2FsbGJhY2ssbyl9fSxtPWZ1bmN0aW9uKGUpe2lmKGU9ZXx8dC5ldmVudCl7dmFyIG49dGhpc3x8ZS50YXJnZXR8fHQscj1uW0hbZS50eXBlXVtsXV07aWYocilpZigxPT09ci5sZW5ndGgpYihyWzBdLG4sZSk7ZWxzZSBmb3IodmFyIG89ci5zbGljZSgpLGk9MDtpPG8ubGVuZ3RoJiYoIWV8fCEwIT09ZVtWXSk7aSsrKWIob1tpXSxuLGUpfX0saz1mdW5jdGlvbihlKXtpZihlPWV8fHQuZXZlbnQpe3ZhciBuPXRoaXN8fGUudGFyZ2V0fHx0LHI9bltIW2UudHlwZV1bZl1dO2lmKHIpaWYoMT09PXIubGVuZ3RoKWIoclswXSxuLGUpO2Vsc2UgZm9yKHZhciBvPXIuc2xpY2UoKSxpPTA7aTxvLmxlbmd0aCYmKCFlfHwhMCE9PWVbVl0pO2krKyliKG9baV0sbixlKX19O2Z1bmN0aW9uIF8oZSxyKXtpZighZSlyZXR1cm4hMTt2YXIgYT0hMDtyJiZ2b2lkIDAhPT1yLnVzZUcmJihhPXIudXNlRyk7dmFyIGM9ciYmci52aCxiPSEwO3ImJnZvaWQgMCE9PXIuY2hrRHVwJiYoYj1yLmNoa0R1cCk7dmFyIF89ITE7ciYmdm9pZCAwIT09ci5ydCYmKF89ci5ydCk7Zm9yKHZhciB3PWU7dyYmIXcuaGFzT3duUHJvcGVydHkobyk7KXc9bih3KTtpZighdyYmZVtvXSYmKHc9ZSksIXcpcmV0dXJuITE7aWYod1toXSlyZXR1cm4hMTt2YXIgeCxFPXImJnIuZXZlbnROYW1lVG9TdHJpbmcsTz17fSxUPXdbaF09d1tvXSxJPXdbZChpKV09d1tpXSxqPXdbZCh1KV09d1t1XSxNPXdbZChzKV09d1tzXTtmdW5jdGlvbiBQKHQpe1d8fCJib29sZWFuIj09dHlwZW9mIE8ub3B0aW9uc3x8bnVsbD09Ty5vcHRpb25zfHwodC5vcHRpb25zPSEhTy5vcHRpb25zLmNhcHR1cmUsTy5vcHRpb25zPXQub3B0aW9ucyl9ciYmci5wcmVwZW5kJiYoeD13W2Qoci5wcmVwZW5kKV09d1tyLnByZXBlbmRdKTt2YXIgRD1hP2Z1bmN0aW9uKHQpe2lmKCFPLmlzRXhpc3RpbmcpcmV0dXJuIFAodCksVC5jYWxsKE8udGFyZ2V0LE8uZXZlbnROYW1lLE8uY2FwdHVyZT9rOm0sTy5vcHRpb25zKX06ZnVuY3Rpb24odCl7cmV0dXJuIFAodCksVC5jYWxsKE8udGFyZ2V0LE8uZXZlbnROYW1lLHQuaW52b2tlLE8ub3B0aW9ucyl9LFI9YT9mdW5jdGlvbih0KXtpZighdC5pc1JlbW92ZWQpe3ZhciBlPUhbdC5ldmVudE5hbWVdLG49dm9pZCAwO2UmJihuPWVbdC5jYXB0dXJlP2Y6bF0pO3ZhciByPW4mJnQudGFyZ2V0W25dO2lmKHIpZm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspaWYocltvXT09PXQpe3Iuc3BsaWNlKG8sMSksdC5pc1JlbW92ZWQ9ITAsMD09PXIubGVuZ3RoJiYodC5hbGxSZW1vdmVkPSEwLHQudGFyZ2V0W25dPW51bGwpO2JyZWFrfX1pZih0LmFsbFJlbW92ZWQpcmV0dXJuIEkuY2FsbCh0LnRhcmdldCx0LmV2ZW50TmFtZSx0LmNhcHR1cmU/azptLHQub3B0aW9ucyl9OmZ1bmN0aW9uKHQpe3JldHVybiBJLmNhbGwodC50YXJnZXQsdC5ldmVudE5hbWUsdC5pbnZva2UsdC5vcHRpb25zKX0sTj1yJiZyLmRpZmY/ci5kaWZmOmZ1bmN0aW9uKHQsZSl7dmFyIG49dHlwZW9mIGU7cmV0dXJuImZ1bmN0aW9uIj09PW4mJnQuY2FsbGJhY2s9PT1lfHwib2JqZWN0Ij09PW4mJnQub3JpZ2luYWxEZWxlZ2F0ZT09PWV9LEE9Wm9uZVtab25lLl9fc3ltYm9sX18oIkJMQUNLX0xJU1RFRF9FVkVOVFMiKV0sRj1mdW5jdGlvbihlLG4scixvLGksdSl7cmV0dXJuIHZvaWQgMD09PWkmJihpPSExKSx2b2lkIDA9PT11JiYodT0hMSksZnVuY3Rpb24oKXt2YXIgcz10aGlzfHx0LGg9YXJndW1lbnRzWzBdLHY9YXJndW1lbnRzWzFdO2lmKCF2KXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihTJiYidW5jYXVnaHRFeGNlcHRpb24iPT09aClyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGQ9ITE7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHYpe2lmKCF2LmhhbmRsZUV2ZW50KXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtkPSEwfWlmKCFjfHxjKGUsdixzLGFyZ3VtZW50cykpe3ZhciBnLHk9YXJndW1lbnRzWzJdO2lmKEEpZm9yKHZhciBtPTA7bTxBLmxlbmd0aDttKyspaWYoaD09PUFbbV0pcmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBrPSExO3ZvaWQgMD09PXk/Zz0hMTohMD09PXk/Zz0hMDohMT09PXk/Zz0hMTooZz0hIXkmJiEheS5jYXB0dXJlLGs9ISF5JiYhIXkub25jZSk7dmFyIF8sdz1ab25lLmN1cnJlbnQseD1IW2hdO2lmKHgpXz14W2c/ZjpsXTtlbHNle3ZhciBUPShFP0UoaCk6aCkrbCxJPShFP0UoaCk6aCkrZixqPXArVCxNPXArSTtIW2hdPXt9LEhbaF1bbF09aixIW2hdW2ZdPU0sXz1nP006an12YXIgUCxEPXNbX10sUj0hMTtpZihEKXtpZihSPSEwLGIpZm9yKG09MDttPEQubGVuZ3RoO20rKylpZihOKERbbV0sdikpcmV0dXJufWVsc2UgRD1zW19dPVtdO3ZhciBMPXMuY29uc3RydWN0b3IubmFtZSxGPUJbTF07RiYmKFA9RltoXSksUHx8KFA9TCtuKyhFP0UoaCk6aCkpLE8ub3B0aW9ucz15LGsmJihPLm9wdGlvbnMub25jZT0hMSksTy50YXJnZXQ9cyxPLmNhcHR1cmU9ZyxPLmV2ZW50TmFtZT1oLE8uaXNFeGlzdGluZz1SO3ZhciB6PWE/VTp2b2lkIDA7eiYmKHoudGFza0RhdGE9Tyk7dmFyIFo9dy5zY2hlZHVsZUV2ZW50VGFzayhQLHYseixyLG8pO3JldHVybiBPLnRhcmdldD1udWxsLHomJih6LnRhc2tEYXRhPW51bGwpLGsmJih5Lm9uY2U9ITApLChXfHwiYm9vbGVhbiIhPXR5cGVvZiBaLm9wdGlvbnMpJiYoWi5vcHRpb25zPXkpLFoudGFyZ2V0PXMsWi5jYXB0dXJlPWcsWi5ldmVudE5hbWU9aCxkJiYoWi5vcmlnaW5hbERlbGVnYXRlPXYpLHU/RC51bnNoaWZ0KFopOkQucHVzaChaKSxpP3M6dm9pZCAwfX19O3JldHVybiB3W29dPUYoVCx2LEQsUixfKSx4JiYod1tnXT1GKHgseSwoZnVuY3Rpb24odCl7cmV0dXJuIHguY2FsbChPLnRhcmdldCxPLmV2ZW50TmFtZSx0Lmludm9rZSxPLm9wdGlvbnMpfSksUixfLCEwKSksd1tpXT1mdW5jdGlvbigpe3ZhciBlLG49dGhpc3x8dCxyPWFyZ3VtZW50c1swXSxvPWFyZ3VtZW50c1syXTtlPXZvaWQgMCE9PW8mJighMD09PW98fCExIT09byYmISFvJiYhIW8uY2FwdHVyZSk7dmFyIGk9YXJndW1lbnRzWzFdO2lmKCFpKXJldHVybiBJLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZighY3x8YyhJLGksbixhcmd1bWVudHMpKXt2YXIgYSx1PUhbcl07dSYmKGE9dVtlP2Y6bF0pO3ZhciBzPWEmJm5bYV07aWYocylmb3IodmFyIHA9MDtwPHMubGVuZ3RoO3ArKyl7dmFyIGg9c1twXTtpZihOKGgsaSkpcmV0dXJuIHMuc3BsaWNlKHAsMSksaC5pc1JlbW92ZWQ9ITAsMD09PXMubGVuZ3RoJiYoaC5hbGxSZW1vdmVkPSEwLG5bYV09bnVsbCksaC56b25lLmNhbmNlbFRhc2soaCksXz9uOnZvaWQgMH1yZXR1cm4gSS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSx3W3VdPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXN8fHQsbj1hcmd1bWVudHNbMF0scj1bXSxvPVkoZSxFP0Uobik6biksaT0wO2k8by5sZW5ndGg7aSsrKXt2YXIgYT1vW2ldLGM9YS5vcmlnaW5hbERlbGVnYXRlP2Eub3JpZ2luYWxEZWxlZ2F0ZTphLmNhbGxiYWNrO3IucHVzaChjKX1yZXR1cm4gcn0sd1tzXT1mdW5jdGlvbigpe3ZhciBlPXRoaXN8fHQsbj1hcmd1bWVudHNbMF07aWYobil7dmFyIHI9SFtuXTtpZihyKXt2YXIgbz1yW2xdLGE9cltmXSxjPWVbb10sdT1lW2FdO2lmKGMpe3ZhciBwPWMuc2xpY2UoKTtmb3IoZD0wO2Q8cC5sZW5ndGg7ZCsrKXRoaXNbaV0uY2FsbCh0aGlzLG4sKGg9cFtkXSkub3JpZ2luYWxEZWxlZ2F0ZT9oLm9yaWdpbmFsRGVsZWdhdGU6aC5jYWxsYmFjayxoLm9wdGlvbnMpfWlmKHUpZm9yKHA9dS5zbGljZSgpLGQ9MDtkPHAubGVuZ3RoO2QrKyl7dmFyIGg7dGhpc1tpXS5jYWxsKHRoaXMsbiwoaD1wW2RdKS5vcmlnaW5hbERlbGVnYXRlP2gub3JpZ2luYWxEZWxlZ2F0ZTpoLmNhbGxiYWNrLGgub3B0aW9ucyl9fX1lbHNle2Zvcih2YXIgdj1PYmplY3Qua2V5cyhlKSxkPTA7ZDx2Lmxlbmd0aDtkKyspe3ZhciBnPXZbZF0seT1LLmV4ZWMoZyksYj15JiZ5WzFdO2ImJiJyZW1vdmVMaXN0ZW5lciIhPT1iJiZ0aGlzW3NdLmNhbGwodGhpcyxiKX10aGlzW3NdLmNhbGwodGhpcywicmVtb3ZlTGlzdGVuZXIiKX1pZihfKXJldHVybiB0aGlzfSxMKHdbb10sVCksTCh3W2ldLEkpLE0mJkwod1tzXSxNKSxqJiZMKHdbdV0saiksITB9Zm9yKHZhciB3PVtdLHg9MDt4PGUubGVuZ3RoO3grKyl3W3hdPV8oZVt4XSxyKTtyZXR1cm4gd31mdW5jdGlvbiBZKHQsZSl7dmFyIG49W107Zm9yKHZhciByIGluIHQpe3ZhciBvPUsuZXhlYyhyKSxpPW8mJm9bMV07aWYoaSYmKCFlfHxpPT09ZSkpe3ZhciBhPXRbcl07aWYoYSlmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyluLnB1c2goYVtjXSl9fXJldHVybiBufWZ1bmN0aW9uIHEodCxlKXt2YXIgbj10LkV2ZW50O24mJm4ucHJvdG90eXBlJiZlLnBhdGNoTWV0aG9kKG4ucHJvdG90eXBlLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtlW1ZdPSEwLHQmJnQuYXBwbHkoZSxuKX19KSl9ZnVuY3Rpb24gUSh0LGUsbixyLG8pe3ZhciBpPVpvbmUuX19zeW1ib2xfXyhyKTtpZighZVtpXSl7dmFyIGE9ZVtpXT1lW3JdO2Vbcl09ZnVuY3Rpb24oaSxjLHUpe3JldHVybiBjJiZjLnByb3RvdHlwZSYmby5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbz1uKyIuIityKyI6OiIrZSxpPWMucHJvdG90eXBlO2lmKGkuaGFzT3duUHJvcGVydHkoZSkpe3ZhciBhPXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksZSk7YSYmYS52YWx1ZT8oYS52YWx1ZT10LndyYXBXaXRoQ3VycmVudFpvbmUoYS52YWx1ZSxvKSx0Ll9yZWRlZmluZVByb3BlcnR5KGMucHJvdG90eXBlLGUsYSkpOmlbZV0mJihpW2VdPXQud3JhcFdpdGhDdXJyZW50Wm9uZShpW2VdLG8pKX1lbHNlIGlbZV0mJihpW2VdPXQud3JhcFdpdGhDdXJyZW50Wm9uZShpW2VdLG8pKX0pKSxhLmNhbGwoZSxpLGMsdSl9LHQuYXR0YWNoT3JpZ2luVG9QYXRjaGVkKGVbcl0sYSl9fXZhciBKPVpvbmUuX19zeW1ib2xfXywkPU9iamVjdFtKKCJkZWZpbmVQcm9wZXJ0eSIpXT1PYmplY3QuZGVmaW5lUHJvcGVydHksdHQ9T2JqZWN0W0ooImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpXT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGV0PU9iamVjdC5jcmVhdGUsbnQ9SigidW5jb25maWd1cmFibGVzIik7ZnVuY3Rpb24gcnQodCxlLG4pe3ZhciByPW4uY29uZmlndXJhYmxlO3JldHVybiBhdCh0LGUsbj1pdCh0LGUsbikscil9ZnVuY3Rpb24gb3QodCxlKXtyZXR1cm4gdCYmdFtudF0mJnRbbnRdW2VdfWZ1bmN0aW9uIGl0KHQsZSxuKXtyZXR1cm4gT2JqZWN0LmlzRnJvemVuKG4pfHwobi5jb25maWd1cmFibGU9ITApLG4uY29uZmlndXJhYmxlfHwodFtudF18fE9iamVjdC5pc0Zyb3plbih0KXx8JCh0LG50LHt3cml0YWJsZTohMCx2YWx1ZTp7fX0pLHRbbnRdJiYodFtudF1bZV09ITApKSxufWZ1bmN0aW9uIGF0KHQsZSxuLHIpe3RyeXtyZXR1cm4gJCh0LGUsbil9Y2F0Y2goaSl7aWYoIW4uY29uZmlndXJhYmxlKXRocm93IGk7dm9pZCAwPT09cj9kZWxldGUgbi5jb25maWd1cmFibGU6bi5jb25maWd1cmFibGU9cjt0cnl7cmV0dXJuICQodCxlLG4pfWNhdGNoKGkpe3ZhciBvPW51bGw7dHJ5e289SlNPTi5zdHJpbmdpZnkobil9Y2F0Y2goaSl7bz1uLnRvU3RyaW5nKCl9Y29uc29sZS5sb2coIkF0dGVtcHRpbmcgdG8gY29uZmlndXJlICciK2UrIicgd2l0aCBkZXNjcmlwdG9yICciK28rIicgb24gb2JqZWN0ICciK3QrIicgYW5kIGdvdCBlcnJvciwgZ2l2aW5nIHVwOiAiK2kpfX19dmFyIGN0PVsiYWJzb2x1dGVkZXZpY2VvcmllbnRhdGlvbiIsImFmdGVyaW5wdXQiLCJhZnRlcnByaW50IiwiYXBwaW5zdGFsbGVkIiwiYmVmb3JlaW5zdGFsbHByb21wdCIsImJlZm9yZXByaW50IiwiYmVmb3JldW5sb2FkIiwiZGV2aWNlbGlnaHQiLCJkZXZpY2Vtb3Rpb24iLCJkZXZpY2VvcmllbnRhdGlvbiIsImRldmljZW9yaWVudGF0aW9uYWJzb2x1dGUiLCJkZXZpY2Vwcm94aW1pdHkiLCJoYXNoY2hhbmdlIiwibGFuZ3VhZ2VjaGFuZ2UiLCJtZXNzYWdlIiwibW96YmVmb3JlcGFpbnQiLCJvZmZsaW5lIiwib25saW5lIiwicGFpbnQiLCJwYWdlc2hvdyIsInBhZ2VoaWRlIiwicG9wc3RhdGUiLCJyZWplY3Rpb25oYW5kbGVkIiwic3RvcmFnZSIsInVuaGFuZGxlZHJlamVjdGlvbiIsInVubG9hZCIsInVzZXJwcm94aW1pdHkiLCJ2cmRpc3BseWNvbm5lY3RlZCIsInZyZGlzcGxheWRpc2Nvbm5lY3RlZCIsInZyZGlzcGxheXByZXNlbnRjaGFuZ2UiXSx1dD1bImVuY3J5cHRlZCIsIndhaXRpbmdmb3JrZXkiLCJtc25lZWRrZXkiLCJtb3ppbnRlcnJ1cHRiZWdpbiIsIm1vemludGVycnVwdGVuZCJdLHN0PVsibG9hZCJdLGZ0PVsiYmx1ciIsImVycm9yIiwiZm9jdXMiLCJsb2FkIiwicmVzaXplIiwic2Nyb2xsIiwibWVzc2FnZWVycm9yIl0sbHQ9WyJib3VuY2UiLCJmaW5pc2giLCJzdGFydCJdLHB0PVsibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsInByb2dyZXNzIiwidGltZW91dCIsImxvYWRlbmQiLCJyZWFkeXN0YXRlY2hhbmdlIl0saHQ9WyJ1cGdyYWRlbmVlZGVkIiwiY29tcGxldGUiLCJhYm9ydCIsInN1Y2Nlc3MiLCJlcnJvciIsImJsb2NrZWQiLCJ2ZXJzaW9uY2hhbmdlIiwiY2xvc2UiXSx2dD1bImNsb3NlIiwiZXJyb3IiLCJvcGVuIiwibWVzc2FnZSJdLGR0PVsiZXJyb3IiLCJtZXNzYWdlIl0sZ3Q9WyJhYm9ydCIsImFuaW1hdGlvbmNhbmNlbCIsImFuaW1hdGlvbmVuZCIsImFuaW1hdGlvbml0ZXJhdGlvbiIsImF1eGNsaWNrIiwiYmVmb3JlaW5wdXQiLCJibHVyIiwiY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiY2hhbmdlIiwiY29tcG9zaXRpb25zdGFydCIsImNvbXBvc2l0aW9udXBkYXRlIiwiY29tcG9zaXRpb25lbmQiLCJjdWVjaGFuZ2UiLCJjbGljayIsImNsb3NlIiwiY29udGV4dG1lbnUiLCJjdXJlY2hhbmdlIiwiZGJsY2xpY2siLCJkcmFnIiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdleGl0IiwiZHJhZ2xlYXZlIiwiZHJhZ292ZXIiLCJkcm9wIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJlcnJvciIsImZvY3VzIiwiZm9jdXNpbiIsImZvY3Vzb3V0IiwiZ290cG9pbnRlcmNhcHR1cmUiLCJpbnB1dCIsImludmFsaWQiLCJrZXlkb3duIiwia2V5cHJlc3MiLCJrZXl1cCIsImxvYWQiLCJsb2Fkc3RhcnQiLCJsb2FkZWRkYXRhIiwibG9hZGVkbWV0YWRhdGEiLCJsb3N0cG9pbnRlcmNhcHR1cmUiLCJtb3VzZWRvd24iLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0IiwibW91c2VvdmVyIiwibW91c2V1cCIsIm1vdXNld2hlZWwiLCJvcmllbnRhdGlvbmNoYW5nZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVyZW50ZXIiLCJwb2ludGVybGVhdmUiLCJwb2ludGVybG9ja2NoYW5nZSIsIm1venBvaW50ZXJsb2NrY2hhbmdlIiwid2Via2l0cG9pbnRlcmxvY2tlcmNoYW5nZSIsInBvaW50ZXJsb2NrZXJyb3IiLCJtb3pwb2ludGVybG9ja2Vycm9yIiwid2Via2l0cG9pbnRlcmxvY2tlcnJvciIsInBvaW50ZXJtb3ZlIiwicG9pbnRvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInByb2dyZXNzIiwicmF0ZWNoYW5nZSIsInJlc2V0IiwicmVzaXplIiwic2Nyb2xsIiwic2Vla2VkIiwic2Vla2luZyIsInNlbGVjdCIsInNlbGVjdGlvbmNoYW5nZSIsInNlbGVjdHN0YXJ0Iiwic2hvdyIsInNvcnQiLCJzdGFsbGVkIiwic3VibWl0Iiwic3VzcGVuZCIsInRpbWV1cGRhdGUiLCJ2b2x1bWVjaGFuZ2UiLCJ0b3VjaGNhbmNlbCIsInRvdWNobW92ZSIsInRvdWNoc3RhcnQiLCJ0b3VjaGVuZCIsInRyYW5zaXRpb25jYW5jZWwiLCJ0cmFuc2l0aW9uZW5kIiwid2FpdGluZyIsIndoZWVsIl0uY29uY2F0KFsid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciJdLFsiYXV0b2NvbXBsZXRlIiwiYXV0b2NvbXBsZXRlZXJyb3IiXSxbInRvZ2dsZSJdLFsiYWZ0ZXJzY3JpcHRleGVjdXRlIiwiYmVmb3Jlc2NyaXB0ZXhlY3V0ZSIsIkRPTUNvbnRlbnRMb2FkZWQiLCJmcmVlemUiLCJmdWxsc2NyZWVuY2hhbmdlIiwibW96ZnVsbHNjcmVlbmNoYW5nZSIsIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiLCJtc2Z1bGxzY3JlZW5jaGFuZ2UiLCJmdWxsc2NyZWVuZXJyb3IiLCJtb3pmdWxsc2NyZWVuZXJyb3IiLCJ3ZWJraXRmdWxsc2NyZWVuZXJyb3IiLCJtc2Z1bGxzY3JlZW5lcnJvciIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ2aXNpYmlsaXR5Y2hhbmdlIiwicmVzdW1lIl0sY3QsWyJiZWZvcmVjb3B5IiwiYmVmb3JlY3V0IiwiYmVmb3JlcGFzdGUiLCJjb3B5IiwiY3V0IiwicGFzdGUiLCJkcmFnc3RhcnQiLCJsb2FkZW5kIiwiYW5pbWF0aW9uc3RhcnQiLCJzZWFyY2giLCJ0cmFuc2l0aW9ucnVuIiwidHJhbnNpdGlvbnN0YXJ0Iiwid2Via2l0YW5pbWF0aW9uZW5kIiwid2Via2l0YW5pbWF0aW9uaXRlcmF0aW9uIiwid2Via2l0YW5pbWF0aW9uc3RhcnQiLCJ3ZWJraXR0cmFuc2l0aW9uZW5kIl0sWyJhY3RpdmF0ZSIsImFmdGVydXBkYXRlIiwiYXJpYXJlcXVlc3QiLCJiZWZvcmVhY3RpdmF0ZSIsImJlZm9yZWRlYWN0aXZhdGUiLCJiZWZvcmVlZGl0Zm9jdXMiLCJiZWZvcmV1cGRhdGUiLCJjZWxsY2hhbmdlIiwiY29udHJvbHNlbGVjdCIsImRhdGFhdmFpbGFibGUiLCJkYXRhc2V0Y2hhbmdlZCIsImRhdGFzZXRjb21wbGV0ZSIsImVycm9ydXBkYXRlIiwiZmlsdGVyY2hhbmdlIiwibGF5b3V0Y29tcGxldGUiLCJsb3NlY2FwdHVyZSIsIm1vdmUiLCJtb3ZlZW5kIiwibW92ZXN0YXJ0IiwicHJvcGVydHljaGFuZ2UiLCJyZXNpemVlbmQiLCJyZXNpemVzdGFydCIsInJvd2VudGVyIiwicm93ZXhpdCIsInJvd3NkZWxldGUiLCJyb3dzaW5zZXJ0ZWQiLCJjb21tYW5kIiwiY29tcGFzc25lZWRzY2FsaWJyYXRpb24iLCJkZWFjdGl2YXRlIiwiaGVscCIsIm1zY29udGVudHpvb20iLCJtc21hbmlwdWxhdGlvbnN0YXRlY2hhbmdlZCIsIm1zZ2VzdHVyZWNoYW5nZSIsIm1zZ2VzdHVyZWRvdWJsZXRhcCIsIm1zZ2VzdHVyZWVuZCIsIm1zZ2VzdHVyZWhvbGQiLCJtc2dlc3R1cmVzdGFydCIsIm1zZ2VzdHVyZXRhcCIsIm1zZ290cG9pbnRlcmNhcHR1cmUiLCJtc2luZXJ0aWFzdGFydCIsIm1zbG9zdHBvaW50ZXJjYXB0dXJlIiwibXNwb2ludGVyY2FuY2VsIiwibXNwb2ludGVyZG93biIsIm1zcG9pbnRlcmVudGVyIiwibXNwb2ludGVyaG92ZXIiLCJtc3BvaW50ZXJsZWF2ZSIsIm1zcG9pbnRlcm1vdmUiLCJtc3BvaW50ZXJvdXQiLCJtc3BvaW50ZXJvdmVyIiwibXNwb2ludGVydXAiLCJwb2ludGVyb3V0IiwibXNzaXRlbW9kZWp1bXBsaXN0aXRlbXJlbW92ZWQiLCJtc3RodW1ibmFpbGNsaWNrIiwic3RvcCIsInN0b3JhZ2Vjb21taXQiXSk7ZnVuY3Rpb24geXQodCxlLG4pe2lmKCFufHwwPT09bi5sZW5ndGgpcmV0dXJuIGU7dmFyIHI9bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRhcmdldD09PXR9KSk7aWYoIXJ8fDA9PT1yLmxlbmd0aClyZXR1cm4gZTt2YXIgbz1yWzBdLmlnbm9yZVByb3BlcnRpZXM7cmV0dXJuIGUuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4tMT09PW8uaW5kZXhPZih0KX0pKX1mdW5jdGlvbiBidCh0LGUsbixyKXt0JiZNKHQseXQodCxlLG4pLHIpfWZ1bmN0aW9uIG10KHQsZSl7aWYoKCFTfHxPKSYmIVpvbmVbdC5zeW1ib2woInBhdGNoRXZlbnRzIildKXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFdlYlNvY2tldCxvPWUuX19ab25lX2lnbm9yZV9vbl9wcm9wZXJ0aWVzO2lmKEUpe3ZhciBpPXdpbmRvdyxhPVo/W3t0YXJnZXQ6aSxpZ25vcmVQcm9wZXJ0aWVzOlsiZXJyb3IiXX1dOltdO2J0KGksZ3QuY29uY2F0KFsibWVzc2FnZWVycm9yIl0pLG8/by5jb25jYXQoYSk6byxuKGkpKSxidChEb2N1bWVudC5wcm90b3R5cGUsZ3Qsbyksdm9pZCAwIT09aS5TVkdFbGVtZW50JiZidChpLlNWR0VsZW1lbnQucHJvdG90eXBlLGd0LG8pLGJ0KEVsZW1lbnQucHJvdG90eXBlLGd0LG8pLGJ0KEhUTUxFbGVtZW50LnByb3RvdHlwZSxndCxvKSxidChIVE1MTWVkaWFFbGVtZW50LnByb3RvdHlwZSx1dCxvKSxidChIVE1MRnJhbWVTZXRFbGVtZW50LnByb3RvdHlwZSxjdC5jb25jYXQoZnQpLG8pLGJ0KEhUTUxCb2R5RWxlbWVudC5wcm90b3R5cGUsY3QuY29uY2F0KGZ0KSxvKSxidChIVE1MRnJhbWVFbGVtZW50LnByb3RvdHlwZSxzdCxvKSxidChIVE1MSUZyYW1lRWxlbWVudC5wcm90b3R5cGUsc3Qsbyk7dmFyIGM9aS5IVE1MTWFycXVlZUVsZW1lbnQ7YyYmYnQoYy5wcm90b3R5cGUsbHQsbyk7dmFyIHU9aS5Xb3JrZXI7dSYmYnQodS5wcm90b3R5cGUsZHQsbyl9dmFyIHM9ZS5YTUxIdHRwUmVxdWVzdDtzJiZidChzLnByb3RvdHlwZSxwdCxvKTt2YXIgZj1lLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7ZiYmYnQoZiYmZi5wcm90b3R5cGUscHQsbyksInVuZGVmaW5lZCIhPXR5cGVvZiBJREJJbmRleCYmKGJ0KElEQkluZGV4LnByb3RvdHlwZSxodCxvKSxidChJREJSZXF1ZXN0LnByb3RvdHlwZSxodCxvKSxidChJREJPcGVuREJSZXF1ZXN0LnByb3RvdHlwZSxodCxvKSxidChJREJEYXRhYmFzZS5wcm90b3R5cGUsaHQsbyksYnQoSURCVHJhbnNhY3Rpb24ucHJvdG90eXBlLGh0LG8pLGJ0KElEQkN1cnNvci5wcm90b3R5cGUsaHQsbykpLHImJmJ0KFdlYlNvY2tldC5wcm90b3R5cGUsdnQsbyl9fWZ1bmN0aW9uIGt0KHQsZSl7dmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCkscj1uLmV2ZW50TmFtZXMsbz1uLmdsb2JhbFNvdXJjZXMsaT1uLnpvbmVTeW1ib2xFdmVudE5hbWVzLGE9bi5UUlVFX1NUUixjPW4uRkFMU0VfU1RSLHU9bi5aT05FX1NZTUJPTF9QUkVGSVgscz0iQW5jaG9yLEFyZWEsQXVkaW8sQlIsQmFzZSxCYXNlRm9udCxCb2R5LEJ1dHRvbixDYW52YXMsQ29udGVudCxETGlzdCxEaXJlY3RvcnksRGl2LEVtYmVkLEZpZWxkU2V0LEZvbnQsRm9ybSxGcmFtZSxGcmFtZVNldCxIUixIZWFkLEhlYWRpbmcsSHRtbCxJRnJhbWUsSW1hZ2UsSW5wdXQsS2V5Z2VuLExJLExhYmVsLExlZ2VuZCxMaW5rLE1hcCxNYXJxdWVlLE1lZGlhLE1lbnUsTWV0YSxNZXRlcixNb2QsT0xpc3QsT2JqZWN0LE9wdEdyb3VwLE9wdGlvbixPdXRwdXQsUGFyYWdyYXBoLFByZSxQcm9ncmVzcyxRdW90ZSxTY3JpcHQsU2VsZWN0LFNvdXJjZSxTcGFuLFN0eWxlLFRhYmxlQ2FwdGlvbixUYWJsZUNlbGwsVGFibGVDb2wsVGFibGUsVGFibGVSb3csVGFibGVTZWN0aW9uLFRleHRBcmVhLFRpdGxlLFRyYWNrLFVMaXN0LFVua25vd24sVmlkZW8iLGY9IkFwcGxpY2F0aW9uQ2FjaGUsRXZlbnRTb3VyY2UsRmlsZVJlYWRlcixJbnB1dE1ldGhvZENvbnRleHQsTWVkaWFDb250cm9sbGVyLE1lc3NhZ2VQb3J0LE5vZGUsUGVyZm9ybWFuY2UsU1ZHRWxlbWVudEluc3RhbmNlLFNoYXJlZFdvcmtlcixUZXh0VHJhY2ssVGV4dFRyYWNrQ3VlLFRleHRUcmFja0xpc3QsV2ViS2l0TmFtZWRGbG93LFdpbmRvdyxXb3JrZXIsV29ya2VyR2xvYmFsU2NvcGUsWE1MSHR0cFJlcXVlc3QsWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldCxYTUxIdHRwUmVxdWVzdFVwbG9hZCxJREJSZXF1ZXN0LElEQk9wZW5EQlJlcXVlc3QsSURCRGF0YWJhc2UsSURCVHJhbnNhY3Rpb24sSURCQ3Vyc29yLERCSW5kZXgsV2ViU29ja2V0Ii5zcGxpdCgiLCIpLGw9W10scD10Lnd0ZixoPXMuc3BsaXQoIiwiKTtwP2w9aC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiJIVE1MIit0KyJFbGVtZW50In0pKS5jb25jYXQoZik6dC5FdmVudFRhcmdldD9sLnB1c2goIkV2ZW50VGFyZ2V0Iik6bD1mO2Zvcih2YXIgdj10Ll9fWm9uZV9kaXNhYmxlX0lFX2NoZWNrfHwhMSxkPXQuX19ab25lX2VuYWJsZV9jcm9zc19jb250ZXh0X2NoZWNrfHwhMSxnPWUuaXNJRU9yRWRnZSgpLHk9ImZ1bmN0aW9uIF9fQlJPV1NFUlRPT0xTX0NPTlNPTEVfU0FGRUZVTkMoKSB7IFtuYXRpdmUgY29kZV0gfSIsYj0wO2I8ci5sZW5ndGg7YisrKXt2YXIgbT11KygoUz1yW2JdKStjKSxrPXUrKFMrYSk7aVtTXT17fSxpW1NdW2NdPW0saVtTXVthXT1rfWZvcihiPTA7YjxzLmxlbmd0aDtiKyspZm9yKHZhciBfPWhbYl0sdz1vW19dPXt9LHg9MDt4PHIubGVuZ3RoO3grKyl7dmFyIFM7d1tTPXJbeF1dPV8rIi5hZGRFdmVudExpc3RlbmVyOiIrU312YXIgRT1bXTtmb3IoYj0wO2I8bC5sZW5ndGg7YisrKXt2YXIgTz10W2xbYl1dO0UucHVzaChPJiZPLnByb3RvdHlwZSl9cmV0dXJuIGUucGF0Y2hFdmVudFRhcmdldCh0LEUse3ZoOmZ1bmN0aW9uKHQsZSxuLHIpe2lmKCF2JiZnKXtpZihkKXRyeXt2YXIgbztpZigiW29iamVjdCBGdW5jdGlvbldyYXBwZXJdIj09PShvPWUudG9TdHJpbmcoKSl8fG89PXkpcmV0dXJuIHQuYXBwbHkobixyKSwhMX1jYXRjaChpKXtyZXR1cm4gdC5hcHBseShuLHIpLCExfWVsc2UgaWYoIltvYmplY3QgRnVuY3Rpb25XcmFwcGVyXSI9PT0obz1lLnRvU3RyaW5nKCkpfHxvPT15KXJldHVybiB0LmFwcGx5KG4sciksITF9ZWxzZSBpZihkKXRyeXtlLnRvU3RyaW5nKCl9Y2F0Y2goaSl7cmV0dXJuIHQuYXBwbHkobixyKSwhMX1yZXR1cm4hMH19KSxab25lW2Uuc3ltYm9sKCJwYXRjaEV2ZW50VGFyZ2V0IildPSEhdC5FdmVudFRhcmdldCwhMH1mdW5jdGlvbiBfdCh0LGUpe3ZhciBuPXQuZ2V0R2xvYmFsT2JqZWN0cygpO2lmKCghbi5pc05vZGV8fG4uaXNNaXgpJiYhZnVuY3Rpb24odCxlKXt2YXIgbj10LmdldEdsb2JhbE9iamVjdHMoKTtpZigobi5pc0Jyb3dzZXJ8fG4uaXNNaXgpJiYhdC5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTEVsZW1lbnQucHJvdG90eXBlLCJvbmNsaWNrIikmJiJ1bmRlZmluZWQiIT10eXBlb2YgRWxlbWVudCl7dmFyIHI9dC5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siKTtpZihyJiYhci5jb25maWd1cmFibGUpcmV0dXJuITE7aWYocil7dC5PYmplY3REZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiEwfX0pO3ZhciBvPSEhZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikub25jbGljaztyZXR1cm4gdC5PYmplY3REZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIsciksb319dmFyIGk9ZS5YTUxIdHRwUmVxdWVzdDtpZighaSlyZXR1cm4hMTt2YXIgYT1pLnByb3RvdHlwZSxjPXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsIm9ucmVhZHlzdGF0ZWNoYW5nZSIpO2lmKGMpcmV0dXJuIHQuT2JqZWN0RGVmaW5lUHJvcGVydHkoYSwib25yZWFkeXN0YXRlY2hhbmdlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSksbz0hIShzPW5ldyBpKS5vbnJlYWR5c3RhdGVjaGFuZ2UsdC5PYmplY3REZWZpbmVQcm9wZXJ0eShhLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGN8fHt9KSxvO3ZhciB1PXQuc3ltYm9sKCJmYWtlIik7dC5PYmplY3REZWZpbmVQcm9wZXJ0eShhLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t1XX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXNbdV09dH19KTt2YXIgcz1uZXcgaSxmPWZ1bmN0aW9uKCl7fTtyZXR1cm4gcy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZixvPXNbdV09PT1mLHMub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsb30odCxlKSl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBXZWJTb2NrZXQ7IWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmdldEdsb2JhbE9iamVjdHMoKS5ldmVudE5hbWVzLG49dC5zeW1ib2woInVuYm91bmQiKSxyPWZ1bmN0aW9uKHIpe3ZhciBvPWVbcl0saT0ib24iK287c2VsZi5hZGRFdmVudExpc3RlbmVyKG8sKGZ1bmN0aW9uKGUpe3ZhciByLG8sYT1lLnRhcmdldDtmb3Iobz1hP2EuY29uc3RydWN0b3IubmFtZSsiLiIraToidW5rbm93bi4iK2k7YTspYVtpXSYmIWFbaV1bbl0mJigocj10LndyYXBXaXRoQ3VycmVudFpvbmUoYVtpXSxvKSlbbl09YVtpXSxhW2ldPXIpLGE9YS5wYXJlbnRFbGVtZW50fSksITApfSxvPTA7bzxlLmxlbmd0aDtvKyspcihvKX0odCksdC5wYXRjaENsYXNzKCJYTUxIdHRwUmVxdWVzdCIpLHImJmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5nZXRHbG9iYWxPYmplY3RzKCkscj1uLkFERF9FVkVOVF9MSVNURU5FUl9TVFIsbz1uLlJFTU9WRV9FVkVOVF9MSVNURU5FUl9TVFIsaT1lLldlYlNvY2tldDtlLkV2ZW50VGFyZ2V0fHx0LnBhdGNoRXZlbnRUYXJnZXQoZSxbaS5wcm90b3R5cGVdKSxlLldlYlNvY2tldD1mdW5jdGlvbihlLG4pe3ZhciBhLGMsdT1hcmd1bWVudHMubGVuZ3RoPjE/bmV3IGkoZSxuKTpuZXcgaShlKSxzPXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHUsIm9ubWVzc2FnZSIpO3JldHVybiBzJiYhMT09PXMuY29uZmlndXJhYmxlPyhhPXQuT2JqZWN0Q3JlYXRlKHUpLGM9dSxbcixvLCJzZW5kIiwiY2xvc2UiXS5mb3JFYWNoKChmdW5jdGlvbihlKXthW2VdPWZ1bmN0aW9uKCl7dmFyIG49dC5BcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZihlPT09cnx8ZT09PW8pe3ZhciBpPW4ubGVuZ3RoPjA/blswXTp2b2lkIDA7aWYoaSl7dmFyIGM9Wm9uZS5fX3N5bWJvbF9fKCJPTl9QUk9QRVJUWSIraSk7dVtjXT1hW2NdfX1yZXR1cm4gdVtlXS5hcHBseSh1LG4pfX0pKSk6YT11LHQucGF0Y2hPblByb3BlcnRpZXMoYSxbImNsb3NlIiwiZXJyb3IiLCJtZXNzYWdlIiwib3BlbiJdLGMpLGF9O3ZhciBhPWUuV2ViU29ja2V0O2Zvcih2YXIgYyBpbiBpKWFbY109aVtjXX0odCxlKSxab25lW3Quc3ltYm9sKCJwYXRjaEV2ZW50cyIpXT0hMH19Wm9uZS5fX2xvYWRfcGF0Y2goInV0aWwiLChmdW5jdGlvbihuLHIsdSl7dS5wYXRjaE9uUHJvcGVydGllcz1NLHUucGF0Y2hNZXRob2Q9Tix1LmJpbmRBcmd1bWVudHM9Xyx1LnBhdGNoTWFjcm9UYXNrPUE7dmFyIHM9ci5fX3N5bWJvbF9fKCJCTEFDS19MSVNURURfRVZFTlRTIiksdj1yLl9fc3ltYm9sX18oIlVOUEFUQ0hFRF9FVkVOVFMiKTtuW3ZdJiYobltzXT1uW3ZdKSxuW3NdJiYocltzXT1yW3ZdPW5bc10pLHUucGF0Y2hFdmVudFByb3RvdHlwZT1xLHUucGF0Y2hFdmVudFRhcmdldD1YLHUuaXNJRU9yRWRnZT1DLHUuT2JqZWN0RGVmaW5lUHJvcGVydHk9ZSx1Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcj10LHUuT2JqZWN0Q3JlYXRlPW8sdS5BcnJheVNsaWNlPWksdS5wYXRjaENsYXNzPUQsdS53cmFwV2l0aEN1cnJlbnRab25lPWgsdS5maWx0ZXJQcm9wZXJ0aWVzPXl0LHUuYXR0YWNoT3JpZ2luVG9QYXRjaGVkPUwsdS5fcmVkZWZpbmVQcm9wZXJ0eT1ydCx1LnBhdGNoQ2FsbGJhY2tzPVEsdS5nZXRHbG9iYWxPYmplY3RzPWZ1bmN0aW9uKCl7cmV0dXJue2dsb2JhbFNvdXJjZXM6Qix6b25lU3ltYm9sRXZlbnROYW1lczpILGV2ZW50TmFtZXM6Z3QsaXNCcm93c2VyOkUsaXNNaXg6Tyxpc05vZGU6UyxUUlVFX1NUUjpmLEZBTFNFX1NUUjpsLFpPTkVfU1lNQk9MX1BSRUZJWDpwLEFERF9FVkVOVF9MSVNURU5FUl9TVFI6YSxSRU1PVkVfRVZFTlRfTElTVEVORVJfU1RSOmN9fX0pKSxmdW5jdGlvbih0KXt0Ll9fem9uZV9zeW1ib2xfX2xlZ2FjeVBhdGNoPWZ1bmN0aW9uKCl7dmFyIGU9dC5ab25lO2UuX19sb2FkX3BhdGNoKCJyZWdpc3RlckVsZW1lbnQiLChmdW5jdGlvbih0LGUsbil7IWZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCk7KG4uaXNCcm93c2VyfHxuLmlzTWl4KSYmInJlZ2lzdGVyRWxlbWVudCJpbiB0LmRvY3VtZW50JiZlLnBhdGNoQ2FsbGJhY2tzKGUsZG9jdW1lbnQsIkRvY3VtZW50IiwicmVnaXN0ZXJFbGVtZW50IixbImNyZWF0ZWRDYWxsYmFjayIsImF0dGFjaGVkQ2FsbGJhY2siLCJkZXRhY2hlZENhbGxiYWNrIiwiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIl0pfSh0LG4pfSkpLGUuX19sb2FkX3BhdGNoKCJFdmVudFRhcmdldExlZ2FjeSIsKGZ1bmN0aW9uKHQsZSxuKXtrdCh0LG4pLF90KG4sdCl9KSl9fSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93fHwidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fGdsb2JhbCk7dmFyIHd0PWQoInpvbmVUYXNrIik7ZnVuY3Rpb24geHQodCxlLG4scil7dmFyIG89bnVsbCxpPW51bGw7bis9cjt2YXIgYT17fTtmdW5jdGlvbiBjKGUpe3ZhciBuPWUuZGF0YTtyZXR1cm4gbi5hcmdzWzBdPWZ1bmN0aW9uKCl7dHJ5e2UuaW52b2tlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e2UuZGF0YSYmZS5kYXRhLmlzUGVyaW9kaWN8fCgibnVtYmVyIj09dHlwZW9mIG4uaGFuZGxlSWQ/ZGVsZXRlIGFbbi5oYW5kbGVJZF06bi5oYW5kbGVJZCYmKG4uaGFuZGxlSWRbd3RdPW51bGwpKX19LG4uaGFuZGxlSWQ9by5hcHBseSh0LG4uYXJncyksZX1mdW5jdGlvbiB1KHQpe3JldHVybiBpKHQuZGF0YS5oYW5kbGVJZCl9bz1OKHQsZSs9ciwoZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKG8saSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGlbMF0pe3ZhciBzPXYoZSxpWzBdLHtpc1BlcmlvZGljOiJJbnRlcnZhbCI9PT1yLGRlbGF5OiJUaW1lb3V0Ij09PXJ8fCJJbnRlcnZhbCI9PT1yP2lbMV18fDA6dm9pZCAwLGFyZ3M6aX0sYyx1KTtpZighcylyZXR1cm4gczt2YXIgZj1zLmRhdGEuaGFuZGxlSWQ7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBmP2FbZl09czpmJiYoZlt3dF09cyksZiYmZi5yZWYmJmYudW5yZWYmJiJmdW5jdGlvbiI9PXR5cGVvZiBmLnJlZiYmImZ1bmN0aW9uIj09dHlwZW9mIGYudW5yZWYmJihzLnJlZj1mLnJlZi5iaW5kKGYpLHMudW5yZWY9Zi51bnJlZi5iaW5kKGYpKSwibnVtYmVyIj09dHlwZW9mIGZ8fGY/ZjpzfXJldHVybiBuLmFwcGx5KHQsaSl9fSkpLGk9Tih0LG4sKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuLHIpe3ZhciBvLGk9clswXTsibnVtYmVyIj09dHlwZW9mIGk/bz1hW2ldOihvPWkmJmlbd3RdKXx8KG89aSksbyYmInN0cmluZyI9PXR5cGVvZiBvLnR5cGU/Im5vdFNjaGVkdWxlZCIhPT1vLnN0YXRlJiYoby5jYW5jZWxGbiYmby5kYXRhLmlzUGVyaW9kaWN8fDA9PT1vLnJ1bkNvdW50KSYmKCJudW1iZXIiPT10eXBlb2YgaT9kZWxldGUgYVtpXTppJiYoaVt3dF09bnVsbCksby56b25lLmNhbmNlbFRhc2sobykpOmUuYXBwbHkodCxyKX19KSl9ZnVuY3Rpb24gU3QodCxlKXtpZighWm9uZVtlLnN5bWJvbCgicGF0Y2hFdmVudFRhcmdldCIpXSl7Zm9yKHZhciBuPWUuZ2V0R2xvYmFsT2JqZWN0cygpLHI9bi5ldmVudE5hbWVzLG89bi56b25lU3ltYm9sRXZlbnROYW1lcyxpPW4uVFJVRV9TVFIsYT1uLkZBTFNFX1NUUixjPW4uWk9ORV9TWU1CT0xfUFJFRklYLHU9MDt1PHIubGVuZ3RoO3UrKyl7dmFyIHM9clt1XSxmPWMrKHMrYSksbD1jKyhzK2kpO29bc109e30sb1tzXVthXT1mLG9bc11baV09bH12YXIgcD10LkV2ZW50VGFyZ2V0O2lmKHAmJnAucHJvdG90eXBlKXJldHVybiBlLnBhdGNoRXZlbnRUYXJnZXQodCxbcCYmcC5wcm90b3R5cGVdKSwhMH19Wm9uZS5fX2xvYWRfcGF0Y2goImxlZ2FjeSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXRbWm9uZS5fX3N5bWJvbF9fKCJsZWdhY3lQYXRjaCIpXTtlJiZlKCl9KSksWm9uZS5fX2xvYWRfcGF0Y2goInRpbWVycyIsKGZ1bmN0aW9uKHQpe3h0KHQsInNldCIsImNsZWFyIiwiVGltZW91dCIpLHh0KHQsInNldCIsImNsZWFyIiwiSW50ZXJ2YWwiKSx4dCh0LCJzZXQiLCJjbGVhciIsIkltbWVkaWF0ZSIpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLChmdW5jdGlvbih0KXt4dCh0LCJyZXF1ZXN0IiwiY2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKSx4dCh0LCJtb3pSZXF1ZXN0IiwibW96Q2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKSx4dCh0LCJ3ZWJraXRSZXF1ZXN0Iiwid2Via2l0Q2FuY2VsIiwiQW5pbWF0aW9uRnJhbWUiKX0pKSxab25lLl9fbG9hZF9wYXRjaCgiYmxvY2tpbmciLChmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1bImFsZXJ0IiwicHJvbXB0IiwiY29uZmlybSJdLHI9MDtyPG4ubGVuZ3RoO3IrKylOKHQsbltyXSwoZnVuY3Rpb24obixyLG8pe3JldHVybiBmdW5jdGlvbihyLGkpe3JldHVybiBlLmN1cnJlbnQucnVuKG4sdCxpLG8pfX0pKX0pKSxab25lLl9fbG9hZF9wYXRjaCgiRXZlbnRUYXJnZXQiLChmdW5jdGlvbih0LGUsbil7IWZ1bmN0aW9uKHQsZSl7ZS5wYXRjaEV2ZW50UHJvdG90eXBlKHQsZSl9KHQsbiksU3QodCxuKTt2YXIgcj10LlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7ciYmci5wcm90b3R5cGUmJm4ucGF0Y2hFdmVudFRhcmdldCh0LFtyLnByb3RvdHlwZV0pLEQoIk11dGF0aW9uT2JzZXJ2ZXIiKSxEKCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIiksRCgiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiKSxEKCJGaWxlUmVhZGVyIil9KSksWm9uZS5fX2xvYWRfcGF0Y2goIm9uX3Byb3BlcnR5IiwoZnVuY3Rpb24odCxlLG4pe210KG4sdCksT2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKHQsZSxuKXtpZihvdCh0LGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhc3NpZ24gdG8gcmVhZCBvbmx5IHByb3BlcnR5ICciK2UrIicgb2YgIit0KTt2YXIgcj1uLmNvbmZpZ3VyYWJsZTtyZXR1cm4icHJvdG90eXBlIiE9PWUmJihuPWl0KHQsZSxuKSksYXQodCxlLG4scil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4sZVtuXSl9KSksdH0sT2JqZWN0LmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiJvYmplY3QiIT10eXBlb2YgZXx8T2JqZWN0LmlzRnJvemVuKGUpfHxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihuKXtlW25dPWl0KHQsbixlW25dKX0pKSxldCh0LGUpfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPWZ1bmN0aW9uKHQsZSl7dmFyIG49dHQodCxlKTtyZXR1cm4gbiYmb3QodCxlKSYmKG4uY29uZmlndXJhYmxlPSExKSxufX0pKSxab25lLl9fbG9hZF9wYXRjaCgiY3VzdG9tRWxlbWVudHMiLChmdW5jdGlvbih0LGUsbil7IWZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCk7KG4uaXNCcm93c2VyfHxuLmlzTWl4KSYmdC5jdXN0b21FbGVtZW50cyYmImN1c3RvbUVsZW1lbnRzImluIHQmJmUucGF0Y2hDYWxsYmFja3MoZSx0LmN1c3RvbUVsZW1lbnRzLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSIsWyJjb25uZWN0ZWRDYWxsYmFjayIsImRpc2Nvbm5lY3RlZENhbGxiYWNrIiwiYWRvcHRlZENhbGxiYWNrIiwiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIl0pfSh0LG4pfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJYSFIiLChmdW5jdGlvbih0LGUpeyFmdW5jdGlvbih0KXt2YXIgZj10LlhNTEh0dHBSZXF1ZXN0O2lmKGYpe3ZhciBsPWYucHJvdG90eXBlLHA9bFt1XSxoPWxbc107aWYoIXApe3ZhciBnPXQuWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtpZihnKXt2YXIgeT1nLnByb3RvdHlwZTtwPXlbdV0saD15W3NdfX12YXIgYj0icmVhZHlzdGF0ZWNoYW5nZSIsbT0ic2NoZWR1bGVkIixrPU4obCwib3BlbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbcl09MD09ZVsyXSx0W2FdPWVbMV0say5hcHBseSh0LGUpfX0pKSxfPWQoImZldGNoVGFza0Fib3J0aW5nIiksdz1kKCJmZXRjaFRhc2tTY2hlZHVsaW5nIikseD1OKGwsInNlbmQiLChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LG4pe2lmKCEwPT09ZS5jdXJyZW50W3ddKXJldHVybiB4LmFwcGx5KHQsbik7aWYodFtyXSlyZXR1cm4geC5hcHBseSh0LG4pO3ZhciBvPXt0YXJnZXQ6dCx1cmw6dFthXSxpc1BlcmlvZGljOiExLGFyZ3M6bixhYm9ydGVkOiExfSxpPXYoIlhNTEh0dHBSZXF1ZXN0LnNlbmQiLE8sbyxFLFQpO3QmJiEwPT09dFtjXSYmIW8uYWJvcnRlZCYmaS5zdGF0ZT09PW0mJmkuaW52b2tlKCl9fSkpLFM9TihsLCJhYm9ydCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQscil7dmFyIG89dFtuXTtpZihvJiYic3RyaW5nIj09dHlwZW9mIG8udHlwZSl7aWYobnVsbD09by5jYW5jZWxGbnx8by5kYXRhJiZvLmRhdGEuYWJvcnRlZClyZXR1cm47by56b25lLmNhbmNlbFRhc2sobyl9ZWxzZSBpZighMD09PWUuY3VycmVudFtfXSlyZXR1cm4gUy5hcHBseSh0LHIpfX0pKX1mdW5jdGlvbiBFKHQpe3ZhciBlPXQuZGF0YSxyPWUudGFyZ2V0O3JbaV09ITEscltjXT0hMTt2YXIgYT1yW29dO3B8fChwPXJbdV0saD1yW3NdKSxhJiZoLmNhbGwocixiLGEpO3ZhciBmPXJbb109ZnVuY3Rpb24oKXtpZihyLnJlYWR5U3RhdGU9PT1yLkRPTkUpaWYoIWUuYWJvcnRlZCYmcltpXSYmdC5zdGF0ZT09PW0pe3ZhciBuPXIuX196b25lX3N5bWJvbF9fbG9hZGZhbHNlO2lmKG4mJm4ubGVuZ3RoPjApe3ZhciBvPXQuaW52b2tlO3QuaW52b2tlPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPXIuX196b25lX3N5bWJvbF9fbG9hZGZhbHNlLGk9MDtpPG4ubGVuZ3RoO2krKyluW2ldPT09dCYmbi5zcGxpY2UoaSwxKTtlLmFib3J0ZWR8fHQuc3RhdGUhPT1tfHxvLmNhbGwodCl9LG4ucHVzaCh0KX1lbHNlIHQuaW52b2tlKCl9ZWxzZSBlLmFib3J0ZWR8fCExIT09cltpXXx8KHJbY109ITApfTtyZXR1cm4gcC5jYWxsKHIsYixmKSxyW25dfHwocltuXT10KSx4LmFwcGx5KHIsZS5hcmdzKSxyW2ldPSEwLHR9ZnVuY3Rpb24gTygpe31mdW5jdGlvbiBUKHQpe3ZhciBlPXQuZGF0YTtyZXR1cm4gZS5hYm9ydGVkPSEwLFMuYXBwbHkoZS50YXJnZXQsZS5hcmdzKX19KHQpO3ZhciBuPWQoInhoclRhc2siKSxyPWQoInhoclN5bmMiKSxvPWQoInhockxpc3RlbmVyIiksaT1kKCJ4aHJTY2hlZHVsZWQiKSxhPWQoInhoclVSTCIpLGM9ZCgieGhyRXJyb3JCZWZvcmVTY2hlZHVsZWQiKX0pKSxab25lLl9fbG9hZF9wYXRjaCgiZ2VvbG9jYXRpb24iLChmdW5jdGlvbihlKXtlLm5hdmlnYXRvciYmZS5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24mJmZ1bmN0aW9uKGUsbil7Zm9yKHZhciByPWUuY29uc3RydWN0b3IubmFtZSxvPWZ1bmN0aW9uKG8pe3ZhciBpPW5bb10sYT1lW2ldO2lmKGEpe2lmKCF3KHQoZSxpKSkpcmV0dXJuImNvbnRpbnVlIjtlW2ldPWZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxfKGFyZ3VtZW50cyxyKyIuIitpKSl9O3JldHVybiBMKGUsdCksZX0oYSl9fSxpPTA7aTxuLmxlbmd0aDtpKyspbyhpKX0oZS5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24sWyJnZXRDdXJyZW50UG9zaXRpb24iLCJ3YXRjaFBvc2l0aW9uIl0pfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJQcm9taXNlUmVqZWN0aW9uRXZlbnQiLChmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe1kodCxlKS5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgbz10LlByb21pc2VSZWplY3Rpb25FdmVudDtpZihvKXt2YXIgaT1uZXcgbyhlLHs=" }, { "key": "qwe?styles.css?5?2", "type": "binary", "value": "base64:cHJvbWlzZTpuLnByb21pc2UscmVhc29uOm4ucmVqZWN0aW9ufSk7ci5pbnZva2UoaSl9fSkpfX10LlByb21pc2VSZWplY3Rpb25FdmVudCYmKGVbZCgidW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXIiKV09bigidW5oYW5kbGVkcmVqZWN0aW9uIiksZVtkKCJyZWplY3Rpb25IYW5kbGVkSGFuZGxlciIpXT1uKCJyZWplY3Rpb25oYW5kbGVkIikpfSkpfSgpfSwiMGVlZiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsaT1vJiYhci5jYWxsKHsxOjJ9LDEpO2UuZj1pP2Z1bmN0aW9uKHQpe3ZhciBlPW8odGhpcyx0KTtyZXR1cm4hIWUmJmUuZW51bWVyYWJsZX06cn0sIjBvdWciOmZ1bmN0aW9uKHQsZSxuKXtuKCJkRy9uIikoIml0ZXJhdG9yIil9LCIwcnZyIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZ2xyayIpLG89bigiTzc0MSIpO3QuZXhwb3J0cz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30/ZnVuY3Rpb24oKXt2YXIgdCxlPSExLG49e307dHJ5eyh0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSwiX19wcm90b19fIikuc2V0KS5jYWxsKG4sW10pLGU9biBpbnN0YW5jZW9mIEFycmF5fWNhdGNoKGkpe31yZXR1cm4gZnVuY3Rpb24obixpKXtyZXR1cm4gcihuKSxvKGkpLGU/dC5jYWxsKG4saSk6bi5fX3Byb3RvX189aSxufX0oKTp2b2lkIDApfSwxOmZ1bmN0aW9uKHQsZSxuKXtuKCJtUklxIiksdC5leHBvcnRzPW4oImhOL2ciKX0sIjE0U2wiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiWDJVKyIpLG89bigiYnVzRSIpLGk9bigiMERreSIpLGE9bigidGlLcCIpLGM9bigia21NViIpLHU9YSgic3BlY2llcyIpLHM9IWkoKGZ1bmN0aW9uKCl7dmFyIHQ9Ly4vO3JldHVybiB0LmV4ZWM9ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdC5ncm91cHM9e2E6IjcifSx0fSwiNyIhPT0iIi5yZXBsYWNlKHQsIiQ8YT4iKX0pKSxmPSFpKChmdW5jdGlvbigpe3ZhciB0PS8oPzopLyxlPXQuZXhlYzt0LmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBuPSJhYiIuc3BsaXQodCk7cmV0dXJuIDIhPT1uLmxlbmd0aHx8ImEiIT09blswXXx8ImIiIT09blsxXX0pKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sbCl7dmFyIHA9YSh0KSxoPSFpKChmdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiBlW3BdPWZ1bmN0aW9uKCl7cmV0dXJuIDd9LDchPSIiW3RdKGUpfSkpLHY9aCYmIWkoKGZ1bmN0aW9uKCl7dmFyIGU9ITEsbj0vYS87cmV0dXJuIG4uZXhlYz1mdW5jdGlvbigpe3JldHVybiBlPSEwLG51bGx9LCJzcGxpdCI9PT10JiYobi5jb25zdHJ1Y3Rvcj17fSxuLmNvbnN0cnVjdG9yW3VdPWZ1bmN0aW9uKCl7cmV0dXJuIG59KSxuW3BdKCIiKSwhZX0pKTtpZighaHx8IXZ8fCJyZXBsYWNlIj09PXQmJiFzfHwic3BsaXQiPT09dCYmIWYpe3ZhciBkPS8uL1twXSxnPW4ocCwiIlt0XSwoZnVuY3Rpb24odCxlLG4scixvKXtyZXR1cm4gZS5leGVjPT09Yz9oJiYhbz97ZG9uZTohMCx2YWx1ZTpkLmNhbGwoZSxuLHIpfTp7ZG9uZTohMCx2YWx1ZTp0LmNhbGwobixlLHIpfTp7ZG9uZTohMX19KSkseT1nWzFdO28oU3RyaW5nLnByb3RvdHlwZSx0LGdbMF0pLG8oUmVnRXhwLnByb3RvdHlwZSxwLDI9PWU/ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5jYWxsKHQsdGhpcyxlKX06ZnVuY3Rpb24odCl7cmV0dXJuIHkuY2FsbCh0LHRoaXMpfSksbCYmcihSZWdFeHAucHJvdG90eXBlW3BdLCJzaGFtIiwhMCl9fX0sIjFFNXoiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJtL0w4IikuZixvPW4oIlVUVlMiKSxpPW4oInRpS3AiKSgidG9TdHJpbmdUYWciKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3QmJiFvKHQ9bj90OnQucHJvdG90eXBlLGkpJiZyKHQsaSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOmV9KX19LCIxWS9uIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSEF1TSIpLG89bigiZXd2VyIpLGk9bigiUkszdCIpLGE9bigiVU1TUSIpLGM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixjLHUpe3Iobik7dmFyIHM9byhlKSxmPWkocyksbD1hKHMubGVuZ3RoKSxwPXQ/bC0xOjAsaD10Py0xOjE7aWYoYzwyKWZvcig7Oyl7aWYocCBpbiBmKXt1PWZbcF0scCs9aDticmVha31pZihwKz1oLHQ/cDwwOmw8PXApdGhyb3cgVHlwZUVycm9yKCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9Zm9yKDt0P3A+PTA6bD5wO3ArPWgpcCBpbiBmJiYodT1uKHUsZltwXSxwLHMpKTtyZXR1cm4gdX19O3QuZXhwb3J0cz17bGVmdDpjKCExKSxyaWdodDpjKCEwKX19LCIyQStkIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiL0dxVSIpLGk9bigiVU1TUSIpO3Ioe3RhcmdldDoiU3RyaW5nIixzdGF0OiEwfSx7cmF3OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1vKHQucmF3KSxuPWkoZS5sZW5ndGgpLHI9YXJndW1lbnRzLmxlbmd0aCxhPVtdLGM9MDtuPmM7KWEucHVzaChTdHJpbmcoZVtjKytdKSksYzxyJiZhLnB1c2goU3RyaW5nKGFyZ3VtZW50c1tjXSkpO3JldHVybiBhLmpvaW4oIiIpfX0pfSwiMkIxUiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJ0eWNSIikubWFwO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohbigiSGQ1ZiIpKCJtYXAiKX0se21hcDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSwiMm9SbyI6ZnVuY3Rpb24odCxlKXt2YXIgbj0ib2JqZWN0IixyPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Lk1hdGg9PU1hdGgmJnR9O3QuZXhwb3J0cz1yKHR5cGVvZiBnbG9iYWxUaGlzPT1uJiZnbG9iYWxUaGlzKXx8cih0eXBlb2Ygd2luZG93PT1uJiZ3aW5kb3cpfHxyKHR5cGVvZiBzZWxmPT1uJiZzZWxmKXx8cih0eXBlb2YgZ2xvYmFsPT1uJiZnbG9iYWwpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfSwiMzNXaCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInlvUmciKSxvPW4oImVEbCsiKTt0LmV4cG9ydHM9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3JldHVybiByKHQsbyl9fSwiM0kxUiI6ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgiaGFzSW5zdGFuY2UiKX0sIjNLZ1YiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJ1eTgzIiksaT1uKCIwRGt5IiksYT1uKCJoaDF2IiksYz1uKCI4WU9hIikub25GcmVlemUsdT1PYmplY3QuZnJlZXplO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDppKChmdW5jdGlvbigpe3UoMSl9KSksc2hhbTohb30se2ZyZWV6ZTpmdW5jdGlvbih0KXtyZXR1cm4gdSYmYSh0KT91KGModCkpOnR9fSl9LCIzYkJaIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMm9SbyIpLG89bigiL2J5dCIpLGk9bigiNG1EbSIpLGE9bigiWDJVKyIpLGM9bigidGlLcCIpLHU9YygiaXRlcmF0b3IiKSxzPWMoInRvU3RyaW5nVGFnIiksZj1pLnZhbHVlcztmb3IodmFyIGwgaW4gbyl7dmFyIHA9cltsXSxoPXAmJnAucHJvdG90eXBlO2lmKGgpe2lmKGhbdV0hPT1mKXRyeXthKGgsdSxmKX1jYXRjaChkKXtoW3VdPWZ9aWYoaFtzXXx8YShoLHMsbCksb1tsXSlmb3IodmFyIHYgaW4gaSlpZihoW3ZdIT09aVt2XSl0cnl7YShoLHYsaVt2XSl9Y2F0Y2goZCl7aFt2XT1pW3ZdfX19fSwiNEJyZiI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJnNnYvIiksaT1uKCIyb1JvIiksYT1uKCJVVFZTIiksYz1uKCJoaDF2IiksdT1uKCJtL0w4IikuZixzPW4oIjZKTnEiKSxmPWkuU3ltYm9sO2lmKG8mJiJmdW5jdGlvbiI9PXR5cGVvZiBmJiYoISgiZGVzY3JpcHRpb24iaW4gZi5wcm90b3R5cGUpfHx2b2lkIDAhPT1mKCkuZGVzY3JpcHRpb24pKXt2YXIgbD17fSxwPWZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDwxfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/dm9pZCAwOlN0cmluZyhhcmd1bWVudHNbMF0pLGU9dGhpcyBpbnN0YW5jZW9mIHA/bmV3IGYodCk6dm9pZCAwPT09dD9mKCk6Zih0KTtyZXR1cm4iIj09PXQmJihsW2VdPSEwKSxlfTtzKHAsZik7dmFyIGg9cC5wcm90b3R5cGU9Zi5wcm90b3R5cGU7aC5jb25zdHJ1Y3Rvcj1wO3ZhciB2PWgudG9TdHJpbmcsZD0iU3ltYm9sKHRlc3QpIj09U3RyaW5nKGYoInRlc3QiKSksZz0vXlN5bWJvbFwoKC4qKVwpW14pXSskLzt1KGgsImRlc2NyaXB0aW9uIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3ZhciB0PWModGhpcyk/dGhpcy52YWx1ZU9mKCk6dGhpcyxlPXYuY2FsbCh0KTtpZihhKGwsdCkpcmV0dXJuIiI7dmFyIG49ZD9lLnNsaWNlKDcsLTEpOmUucmVwbGFjZShnLCIkMSIpO3JldHVybiIiPT09bj92b2lkIDA6bn19KSxyKHtnbG9iYWw6ITAsZm9yY2VkOiEwfSx7U3ltYm9sOnB9KX19LCI0SENpIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpLG89bigiV0prSiIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcigoZnVuY3Rpb24oKXtyZXR1cm4hIW9bdF0oKXx8IuKAi8KF4aCOIiE9IuKAi8KF4aCOIlt0XSgpfHxvW3RdLm5hbWUhPT10fSkpfX0sIjRXT0QiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJVVFZTIiksbz1uKCJld3ZXIiksaT1uKCI5M0kwIiksYT1uKCI0WGV0IiksYz1pKCJJRV9QUk9UTyIpLHU9T2JqZWN0LnByb3RvdHlwZTt0LmV4cG9ydHM9YT9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9byh0KSxyKHQsYyk/dFtjXToiZnVuY3Rpb24iPT10eXBlb2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD91Om51bGx9fSwiNFhldCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjBEa3kiKTt0LmV4cG9ydHM9IXIoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY29uc3RydWN0b3I9bnVsbCxPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IHQpIT09dC5wcm90b3R5cGV9KSl9LCI0aDBZIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9bigiaGgxdiIpLGE9T2JqZWN0LmlzRnJvemVuO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpvKChmdW5jdGlvbigpe2EoMSl9KSl9LHtpc0Zyb3plbjpmdW5jdGlvbih0KXtyZXR1cm4haSh0KXx8ISFhJiZhKHQpfX0pfSwiNGw2MyI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjVZT1EiKTtyKHtnbG9iYWw6ITAsZm9yY2VkOnBhcnNlSW50IT1vfSx7cGFyc2VJbnQ6b30pfSwiNG1EbSI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIvR3FVIiksbz1uKCJSTklzIiksaT1uKCJQNHkxIiksYT1uKCJhZk84IiksYz1uKCJmZEF5IiksdT1hLnNldCxzPWEuZ2V0dGVyRm9yKCJBcnJheSBJdGVyYXRvciIpO3QuZXhwb3J0cz1jKEFycmF5LCJBcnJheSIsKGZ1bmN0aW9uKHQsZSl7dSh0aGlzLHt0eXBlOiJBcnJheSBJdGVyYXRvciIsdGFyZ2V0OnIodCksaW5kZXg6MCxraW5kOmV9KX0pLChmdW5jdGlvbigpe3ZhciB0PXModGhpcyksZT10LnRhcmdldCxuPXQua2luZCxyPXQuaW5kZXgrKztyZXR1cm4hZXx8cj49ZS5sZW5ndGg/KHQudGFyZ2V0PXZvaWQgMCx7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KToia2V5cyI9PW4/e3ZhbHVlOnIsZG9uZTohMX06InZhbHVlcyI9PW4/e3ZhbHVlOmVbcl0sZG9uZTohMX06e3ZhbHVlOltyLGVbcl1dLGRvbmU6ITF9fSksInZhbHVlcyIpLGkuQXJndW1lbnRzPWkuQXJyYXksbygia2V5cyIpLG8oInZhbHVlcyIpLG8oImVudHJpZXMiKX0sIjRvVS8iOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIikuaXNGaW5pdGU7dC5leHBvcnRzPU51bWJlci5pc0Zpbml0ZXx8ZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZyKHQpfX0sIjRzeXciOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJidXNFIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIG8gaW4gZSlyKHQsbyxlW29dLG4pO3JldHVybiB0fX0sIjVENW8iOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCIwRGt5IiksaT1uKCJoaDF2IiksYT1PYmplY3QuaXNTZWFsZWQ7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOm8oKGZ1bmN0aW9uKCl7YSgxKX0pKX0se2lzU2VhbGVkOmZ1bmN0aW9uKHQpe3JldHVybiFpKHQpfHwhIWEmJmEodCl9fSl9LCI1RG1XIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9bigiL0dxVSIpLGE9bigiQnM4ViIpLmYsYz1uKCJnNnYvIiksdT1vKChmdW5jdGlvbigpe2EoMSl9KSk7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFjfHx1LHNoYW06IWN9LHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYShpKHQpLGUpfX0pfSwiNVlPUSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIldLaUgiKS50cmltLGk9bigiV0prSiIpLGE9ci5wYXJzZUludCxjPS9eWystXT8wW1h4XS8sdT04IT09YShpKyIwOCIpfHwyMiE9PWEoaSsiMHgxNiIpO3QuZXhwb3J0cz11P2Z1bmN0aW9uKHQsZSl7dmFyIG49byhTdHJpbmcodCkpO3JldHVybiBhKG4sZT4+PjB8fChjLnRlc3Qobik/MTY6MTApKX06YX0sIjVZeisiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiL0dxVSIpLG89bigicHBHQiIpLGk9bigiVU1TUSIpLGE9bigic3dGTCIpLGM9TWF0aC5taW4sdT1bXS5sYXN0SW5kZXhPZixzPSEhdSYmMS9bMV0ubGFzdEluZGV4T2YoMSwtMCk8MCxmPWEoImxhc3RJbmRleE9mIik7dC5leHBvcnRzPXN8fGY/ZnVuY3Rpb24odCl7aWYocylyZXR1cm4gdS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA7dmFyIGU9cih0aGlzKSxuPWkoZS5sZW5ndGgpLGE9bi0xO2Zvcihhcmd1bWVudHMubGVuZ3RoPjEmJihhPWMoYSxvKGFyZ3VtZW50c1sxXSkpKSxhPDAmJihhPW4rYSk7YT49MDthLS0paWYoYSBpbiBlJiZlW2FdPT09dClyZXR1cm4gYXx8MDtyZXR1cm4tMX06dX0sIjVtZHUiOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm57ZXJyb3I6ITEsdmFsdWU6dCgpfX1jYXRjaChlKXtyZXR1cm57ZXJyb3I6ITAsdmFsdWU6ZX19fX0sIjVzK24iOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbyxpLGEsYz1uKCJJK2ViIiksdT1uKCJ4REJSIikscz1uKCIyb1JvIiksZj1uKCJRbzlsIiksbD1uKCIvcW1uIikscD1uKCJidXNFIiksaD1uKCI0c3l3Iiksdj1uKCIxRTV6IiksZD1uKCJKaVpiIiksZz1uKCJoaDF2IikseT1uKCJIQXVNIiksYj1uKCJHYXJVIiksbT1uKCJ4cllLIiksaz1uKCJJbVpOIiksXz1uKCJISDRvIiksdz1uKCJTRUJoIikseD1uKCJMUFNTIikuc2V0LFM9bigidFhVZyIpLEU9bigiemZuZCIpLE89bigiUk42YyIpLFQ9bigiOEdsTCIpLEk9bigiNW1kdSIpLGo9bigiczVwRSIpLE09bigiYWZPOCIpLFA9bigibE1xNSIpLEQ9bigidGlLcCIpKCJzcGVjaWVzIiksUj1NLmdldCxOPU0uc2V0LEE9TS5nZXR0ZXJGb3IoIlByb21pc2UiKSxMPWwsRj1zLlR5cGVFcnJvcix6PXMuZG9jdW1lbnQsWj1zLnByb2Nlc3MsQz1zLmZldGNoLFc9WiYmWi52ZXJzaW9ucyxHPVcmJlcudjh8fCIiLFU9VC5mLEg9VSxCPSJwcm9jZXNzIj09bShaKSxLPSEhKHomJnouY3JlYXRlRXZlbnQmJnMuZGlzcGF0Y2hFdmVudCksVj1QKCJQcm9taXNlIiwoZnVuY3Rpb24oKXt2YXIgdD1MLnJlc29sdmUoMSksZT1mdW5jdGlvbigpe30sbj0odC5jb25zdHJ1Y3Rvcj17fSlbRF09ZnVuY3Rpb24odCl7dChlLGUpfTtyZXR1cm4hKChCfHwiZnVuY3Rpb24iPT10eXBlb2YgUHJvbWlzZVJlamVjdGlvbkV2ZW50KSYmKCF1fHx0LmZpbmFsbHkpJiZ0LnRoZW4oZSlpbnN0YW5jZW9mIG4mJjAhPT1HLmluZGV4T2YoIjYuNiIpJiYtMT09PWouaW5kZXhPZigiQ2hyb21lLzY2IikpfSkpLFg9Vnx8IV8oKGZ1bmN0aW9uKHQpe0wuYWxsKHQpLmNhdGNoKChmdW5jdGlvbigpe30pKX0pKSxZPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiEoIWcodCl8fCJmdW5jdGlvbiIhPXR5cGVvZihlPXQudGhlbikpJiZlfSxxPWZ1bmN0aW9uKHQsZSxuKXtpZighZS5ub3RpZmllZCl7ZS5ub3RpZmllZD0hMDt2YXIgcj1lLnJlYWN0aW9ucztTKChmdW5jdGlvbigpe2Zvcih2YXIgbz1lLnZhbHVlLGk9MT09ZS5zdGF0ZSxhPTA7ci5sZW5ndGg+YTspe3ZhciBjLHUscyxmPXJbYSsrXSxsPWk/Zi5vazpmLmZhaWwscD1mLnJlc29sdmUsaD1mLnJlamVjdCx2PWYuZG9tYWluO3RyeXtsPyhpfHwoMj09PWUucmVqZWN0aW9uJiZ0dCh0LGUpLGUucmVqZWN0aW9uPTEpLCEwPT09bD9jPW86KHYmJnYuZW50ZXIoKSxjPWwobyksdiYmKHYuZXhpdCgpLHM9ITApKSxjPT09Zi5wcm9taXNlP2goRigiUHJvbWlzZS1jaGFpbiBjeWNsZSIpKToodT1ZKGMpKT91LmNhbGwoYyxwLGgpOnAoYykpOmgobyl9Y2F0Y2goZCl7diYmIXMmJnYuZXhpdCgpLGgoZCl9fWUucmVhY3Rpb25zPVtdLGUubm90aWZpZWQ9ITEsbiYmIWUucmVqZWN0aW9uJiZKKHQsZSl9KSl9fSxRPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixvO0s/KChyPXouY3JlYXRlRXZlbnQoIkV2ZW50IikpLnByb21pc2U9ZSxyLnJlYXNvbj1uLHIuaW5pdEV2ZW50KHQsITEsITApLHMuZGlzcGF0Y2hFdmVudChyKSk6cj17cHJvbWlzZTplLHJlYXNvbjpufSwobz1zWyJvbiIrdF0pP28ocik6InVuaGFuZGxlZHJlamVjdGlvbiI9PT10JiZPKCJVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24iLG4pfSxKPWZ1bmN0aW9uKHQsZSl7eC5jYWxsKHMsKGZ1bmN0aW9uKCl7dmFyIG4scj1lLnZhbHVlO2lmKCQoZSkmJihuPUkoKGZ1bmN0aW9uKCl7Qj9aLmVtaXQoInVuaGFuZGxlZFJlamVjdGlvbiIscix0KTpRKCJ1bmhhbmRsZWRyZWplY3Rpb24iLHQscil9KSksZS5yZWplY3Rpb249Qnx8JChlKT8yOjEsbi5lcnJvcikpdGhyb3cgbi52YWx1ZX0pKX0sJD1mdW5jdGlvbih0KXtyZXR1cm4gMSE9PXQucmVqZWN0aW9uJiYhdC5wYXJlbnR9LHR0PWZ1bmN0aW9uKHQsZSl7eC5jYWxsKHMsKGZ1bmN0aW9uKCl7Qj9aLmVtaXQoInJlamVjdGlvbkhhbmRsZWQiLHQpOlEoInJlamVjdGlvbmhhbmRsZWQiLHQsZS52YWx1ZSl9KSl9LGV0PWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiBmdW5jdGlvbihvKXt0KGUsbixvLHIpfX0sbnQ9ZnVuY3Rpb24odCxlLG4scil7ZS5kb25lfHwoZS5kb25lPSEwLHImJihlPXIpLGUudmFsdWU9bixlLnN0YXRlPTIscSh0LGUsITApKX0scnQ9ZnVuY3Rpb24odCxlLG4scil7aWYoIWUuZG9uZSl7ZS5kb25lPSEwLHImJihlPXIpO3RyeXtpZih0PT09bil0aHJvdyBGKCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZiIpO3ZhciBvPVkobik7bz9TKChmdW5jdGlvbigpe3ZhciByPXtkb25lOiExfTt0cnl7by5jYWxsKG4sZXQocnQsdCxyLGUpLGV0KG50LHQscixlKSl9Y2F0Y2goaSl7bnQodCxyLGksZSl9fSkpOihlLnZhbHVlPW4sZS5zdGF0ZT0xLHEodCxlLCExKSl9Y2F0Y2goaSl7bnQodCx7ZG9uZTohMX0saSxlKX19fTtWJiYoTD1mdW5jdGlvbih0KXtiKHRoaXMsTCwiUHJvbWlzZSIpLHkodCksci5jYWxsKHRoaXMpO3ZhciBlPVIodGhpcyk7dHJ5e3QoZXQocnQsdGhpcyxlKSxldChudCx0aGlzLGUpKX1jYXRjaChuKXtudCh0aGlzLGUsbil9fSwocj1mdW5jdGlvbih0KXtOKHRoaXMse3R5cGU6IlByb21pc2UiLGRvbmU6ITEsbm90aWZpZWQ6ITEscGFyZW50OiExLHJlYWN0aW9uczpbXSxyZWplY3Rpb246ITEsc3RhdGU6MCx2YWx1ZTp2b2lkIDB9KX0pLnByb3RvdHlwZT1oKEwucHJvdG90eXBlLHt0aGVuOmZ1bmN0aW9uKHQsZSl7dmFyIG49QSh0aGlzKSxyPVUodyh0aGlzLEwpKTtyZXR1cm4gci5vaz0iZnVuY3Rpb24iIT10eXBlb2YgdHx8dCxyLmZhaWw9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUsci5kb21haW49Qj9aLmRvbWFpbjp2b2lkIDAsbi5wYXJlbnQ9ITAsbi5yZWFjdGlvbnMucHVzaChyKSwwIT1uLnN0YXRlJiZxKHRoaXMsbiwhMSksci5wcm9taXNlfSxjYXRjaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCx0KX19KSxvPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHIsZT1SKHQpO3RoaXMucHJvbWlzZT10LHRoaXMucmVzb2x2ZT1ldChydCx0LGUpLHRoaXMucmVqZWN0PWV0KG50LHQsZSl9LFQuZj1VPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09THx8dD09PWk/bmV3IG8odCk6SCh0KX0sdXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGx8fChhPWwucHJvdG90eXBlLnRoZW4scChsLnByb3RvdHlwZSwidGhlbiIsKGZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gbmV3IEwoKGZ1bmN0aW9uKHQsZSl7YS5jYWxsKG4sdCxlKX0pKS50aGVuKHQsZSl9KSksImZ1bmN0aW9uIj09dHlwZW9mIEMmJmMoe2dsb2JhbDohMCxlbnVtZXJhYmxlOiEwLGZvcmNlZDohMH0se2ZldGNoOmZ1bmN0aW9uKHQpe3JldHVybiBFKEwsQy5hcHBseShzLGFyZ3VtZW50cykpfX0pKSksYyh7Z2xvYmFsOiEwLHdyYXA6ITAsZm9yY2VkOlZ9LHtQcm9taXNlOkx9KSx2KEwsIlByb21pc2UiLCExLCEwKSxkKCJQcm9taXNlIiksaT1mLlByb21pc2UsYyh7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwLGZvcmNlZDpWfSx7cmVqZWN0OmZ1bmN0aW9uKHQpe3ZhciBlPVUodGhpcyk7cmV0dXJuIGUucmVqZWN0LmNhbGwodm9pZCAwLHQpLGUucHJvbWlzZX19KSxjKHt0YXJnZXQ6IlByb21pc2UiLHN0YXQ6ITAsZm9yY2VkOnV8fFZ9LHtyZXNvbHZlOmZ1bmN0aW9uKHQpe3JldHVybiBFKHUmJnRoaXM9PT1pP0w6dGhpcyx0KX19KSxjKHt0YXJnZXQ6IlByb21pc2UiLHN0YXQ6ITAsZm9yY2VkOlh9LHthbGw6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVUoZSkscj1uLnJlc29sdmUsbz1uLnJlamVjdCxpPUkoKGZ1bmN0aW9uKCl7dmFyIG49eShlLnJlc29sdmUpLGk9W10sYT0wLGM9MTtrKHQsKGZ1bmN0aW9uKHQpe3ZhciB1PWErKyxzPSExO2kucHVzaCh2b2lkIDApLGMrKyxuLmNhbGwoZSx0KS50aGVuKChmdW5jdGlvbih0KXtzfHwocz0hMCxpW3VdPXQsLS1jfHxyKGkpKX0pLG8pfSkpLC0tY3x8cihpKX0pKTtyZXR1cm4gaS5lcnJvciYmbyhpLnZhbHVlKSxuLnByb21pc2V9LHJhY2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVUoZSkscj1uLnJlamVjdCxvPUkoKGZ1bmN0aW9uKCl7dmFyIG89eShlLnJlc29sdmUpO2sodCwoZnVuY3Rpb24odCl7by5jYWxsKGUsdCkudGhlbihuLnJlc29sdmUscil9KSl9KSk7cmV0dXJuIG8uZXJyb3ImJnIoby52YWx1ZSksbi5wcm9taXNlfX0pfSwiNXVIOCI6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJOdW1iZXIiLHN0YXQ6ITB9LHtNSU5fU0FGRV9JTlRFR0VSOi05MDA3MTk5MjU0NzQwOTkxfSl9LCI2Sk5xIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiVVRWUyIpLG89bigiVnU4MSIpLGk9bigiQnM4ViIpLGE9bigibS9MOCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1vKGUpLGM9YS5mLHU9aS5mLHM9MDtzPG4ubGVuZ3RoO3MrKyl7dmFyIGY9bltzXTtyKHQsZil8fGModCxmLHUoZSxmKSl9fX0sIjZMV0EiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ4cllLIik7dC5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVybiJBcnJheSI9PXIodCl9fSwiNlZvRSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInRpS3AiKSxvPW4oIlA0eTEiKSxpPXIoIml0ZXJhdG9yIiksYT1BcnJheS5wcm90b3R5cGU7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10JiYoby5BcnJheT09PXR8fGFbaV09PT10KX19LCI2aHBuIjpmdW5jdGlvbih0LGUsbil7bigiVXlkeSIpLG4oImVhanYiKSxuKCJuL21VIiksbigiUHFPSSIpLG4oIlFObnAiKSxuKCIvNXptIiksbigiQ3NnRCIpLG4oIjltUlciKSxuKCJRRmNUIiksbigidkFGcyIpLG4oImE1TksiKSxuKCJ5aUczIiksbigia05jVSIpLG4oIkt2R2kiKSxuKCJBbUZPIiksbigiZUppUiIpLG4oIkk5eGoiKSxuKCJ0bC91Iik7dmFyIHI9bigiUW85bCIpO3QuZXhwb3J0cz1yLk1hdGh9LCI2dW5LIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gcigoZnVuY3Rpb24oKXt2YXIgZT0iIlt0XSgnIicpO3JldHVybiBlIT09ZS50b0xvd2VyQ2FzZSgpfHxlLnNwbGl0KCciJykubGVuZ3RoPjN9KSl9fSwiNytrZCI6ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgiaXNDb25jYXRTcHJlYWRhYmxlIil9LCI3K3pzIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiWDJVKyIpLG89bigiVWVzTCIpLGk9bigidGlLcCIpKCJ0b1ByaW1pdGl2ZSIpLGE9RGF0ZS5wcm90b3R5cGU7aSBpbiBhfHxyKGEsaSxvKX0sIjdzYkQiOmZ1bmN0aW9uKHQsZSxuKXtuKCJxZVBWIiksbigiTmJOKyIpLG4oIjhBeUoiKSxuKCJpNlFGIiksbigia1NrbyIpLG4oIldEc1IiKSxuKCJyL1ZxIiksbigiNXVIOCIpLG4oIncxcloiKSxuKCJKZXZBIiksbigidG9BaiIpLG4oIlZDM0wiKTt2YXIgcj1uKCJRbzlsIik7dC5leHBvcnRzPXIuTnVtYmVyfSwiOEF5SiI6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJOdW1iZXIiLHN0YXQ6ITB9LHtpc0Zpbml0ZTpuKCI0b1UvIil9KX0sIjhHbEwiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSEF1TSIpLG89ZnVuY3Rpb24odCl7dmFyIGUsbjt0aGlzLnByb21pc2U9bmV3IHQoKGZ1bmN0aW9uKHQscil7aWYodm9pZCAwIT09ZXx8dm9pZCAwIT09bil0aHJvdyBUeXBlRXJyb3IoIkJhZCBQcm9taXNlIGNvbnN0cnVjdG9yIik7ZT10LG49cn0pKSx0aGlzLnJlc29sdmU9cihlKSx0aGlzLnJlamVjdD1yKG4pfTt0LmV4cG9ydHMuZj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8odCl9fSwiOFlPYSI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjBCSzIiKSxvPW4oImhoMXYiKSxpPW4oIlVUVlMiKSxhPW4oIm0vTDgiKS5mLGM9bigia09PbCIpLHU9bigidXk4MyIpLHM9YygibWV0YSIpLGY9MCxsPU9iamVjdC5pc0V4dGVuc2libGV8fGZ1bmN0aW9uKCl7cmV0dXJuITB9LHA9ZnVuY3Rpb24odCl7YSh0LHMse3ZhbHVlOntvYmplY3RJRDoiTyIrICsrZix3ZWFrRGF0YTp7fX19KX0saD10LmV4cG9ydHM9e1JFUVVJUkVEOiExLGZhc3RLZXk6ZnVuY3Rpb24odCxlKXtpZighbyh0KSlyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHQ/dDooInN0cmluZyI9PXR5cGVvZiB0PyJTIjoiUCIpK3Q7aWYoIWkodCxzKSl7aWYoIWwodCkpcmV0dXJuIkYiO2lmKCFlKXJldHVybiJFIjtwKHQpfXJldHVybiB0W3NdLm9iamVjdElEfSxnZXRXZWFrRGF0YTpmdW5jdGlvbih0LGUpe2lmKCFpKHQscykpe2lmKCFsKHQpKXJldHVybiEwO2lmKCFlKXJldHVybiExO3AodCl9cmV0dXJuIHRbc10ud2Vha0RhdGF9LG9uRnJlZXplOmZ1bmN0aW9uKHQpe3JldHVybiB1JiZoLlJFUVVJUkVEJiZsKHQpJiYhaSh0LHMpJiZwKHQpLHR9fTtyW3NdPSEwfSwiOTBoVyI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9TWF0aC5zaWdufHxmdW5jdGlvbih0KXtyZXR1cm4gMD09KHQ9K3QpfHx0IT10P3Q6dDwwPy0xOjF9fSwiOTNJMCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlZwSVQiKSxvPW4oImtPT2wiKSxpPXIoImtleXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGlbdF18fChpW3RdPW8odCkpfX0sIjlMUGoiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9bigiZXd2VyIpLGE9bigid0U2diIpO3Ioe3RhcmdldDoiRGF0ZSIscHJvdG86ITAsZm9yY2VkOm8oKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1uZXcgRGF0ZShOYU4pLnRvSlNPTigpfHwxIT09RGF0ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoe3RvSVNPU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDF9fSl9KSl9LHt0b0pTT046ZnVuY3Rpb24odCl7dmFyIGU9aSh0aGlzKSxuPWEoZSk7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBufHxpc0Zpbml0ZShuKT9lLnRvSVNPU3RyaW5nKCk6bnVsbH19KX0sIjlOMjkiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMVkvbiIpLnJpZ2h0O3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpuKCJzd0ZMIikoInJlZHVjZVJpZ2h0Iil9LHtyZWR1Y2VSaWdodDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSl9LCI5Yko3IjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIlpVZDgiKS5jb2RlQXQ7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwfSx7Y29kZVBvaW50QXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG8odGhpcyx0KX19KX0sIjlkL3QiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ4cllLIiksbz1uKCJ0aUtwIikoInRvU3RyaW5nVGFnIiksaT0iQXJndW1lbnRzIj09cihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxuLGE7cmV0dXJuIHZvaWQgMD09PXQ/IlVuZGVmaW5lZCI6bnVsbD09PXQ/Ik51bGwiOiJzdHJpbmciPT10eXBlb2Yobj1mdW5jdGlvbih0LGUpe3RyeXtyZXR1cm4gdFtlXX1jYXRjaChuKXt9fShlPU9iamVjdCh0KSxvKSk/bjppP3IoZSk6Ik9iamVjdCI9PShhPXIoZSkpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jYWxsZWU/IkFyZ3VtZW50cyI6YX19LCI5bVJXIjpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik1hdGgiLHN0YXQ6ITB9LHtmcm91bmQ6bigidm80ViIpfSl9LCI5dGIvIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiSTh2aCIpLGk9U3RyaW5nLmZyb21DaGFyQ29kZSxhPVN0cmluZy5mcm9tQ29kZVBvaW50O3Ioe3RhcmdldDoiU3RyaW5nIixzdGF0OiEwLGZvcmNlZDohIWEmJjEhPWEubGVuZ3RofSx7ZnJvbUNvZGVQb2ludDpmdW5jdGlvbih0KXtmb3IodmFyIGUsbj1bXSxyPWFyZ3VtZW50cy5sZW5ndGgsYT0wO3I+YTspe2lmKGU9K2FyZ3VtZW50c1thKytdLG8oZSwxMTE0MTExKSE9PWUpdGhyb3cgUmFuZ2VFcnJvcihlKyIgaXMgbm90IGEgdmFsaWQgY29kZSBwb2ludCIpO24ucHVzaChlPDY1NTM2P2koZSk6aSg1NTI5NisoKGUtPTY1NTM2KT4+MTApLGUlMTAyNCs1NjMyMCkpfXJldHVybiBuLmpvaW4oIiIpfX0pfSxBbUZPOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCIwRGt5IiksaT1uKCJqclV2IiksYT1NYXRoLmFicyxjPU1hdGguZXhwLHU9TWF0aC5FO3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMCxmb3JjZWQ6bygoZnVuY3Rpb24oKXtyZXR1cm4tMmUtMTchPU1hdGguc2luaCgtMmUtMTcpfSkpfSx7c2luaDpmdW5jdGlvbih0KXtyZXR1cm4gYSh0PSt0KTwxPyhpKHQpLWkoLXQpKS8yOihjKHQtMSktYygtdC0xKSkqKHUvMil9fSl9LEJOTXQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoImJsaW5rIil9LHtibGluazpmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsImJsaW5rIiwiIiwiIil9fSl9LEJUaG86ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJIQXVNIiksbz1uKCJoaDF2IiksaT1bXS5zbGljZSxhPXt9LGM9ZnVuY3Rpb24odCxlLG4pe2lmKCEoZSBpbiBhKSl7Zm9yKHZhciByPVtdLG89MDtvPGU7bysrKXJbb109ImFbIitvKyJdIjthW2VdPUZ1bmN0aW9uKCJDLGEiLCJyZXR1cm4gbmV3IEMoIityLmpvaW4oIiwiKSsiKSIpfXJldHVybiBhW2VdKHQsbil9O3QuZXhwb3J0cz1GdW5jdGlvbi5iaW5kfHxmdW5jdGlvbih0KXt2YXIgZT1yKHRoaXMpLG49aS5jYWxsKGFyZ3VtZW50cywxKSxhPWZ1bmN0aW9uKCl7dmFyIHI9bi5jb25jYXQoaS5jYWxsKGFyZ3VtZW50cykpO3JldHVybiB0aGlzIGluc3RhbmNlb2YgYT9jKGUsci5sZW5ndGgscik6ZS5hcHBseSh0LHIpfTtyZXR1cm4gbyhlLnByb3RvdHlwZSkmJihhLnByb3RvdHlwZT1lLnByb3RvdHlwZSksYX19LCJCWC9iIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiL0dxVSIpLG89bigiSkJ5OCIpLmYsaT17fS50b1N0cmluZyxhPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzP09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdyk6W107dC5leHBvcnRzLmY9ZnVuY3Rpb24odCl7cmV0dXJuIGEmJiJbb2JqZWN0IFdpbmRvd10iPT1pLmNhbGwodCk/ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBvKHQpfWNhdGNoKGUpe3JldHVybiBhLnNsaWNlKCl9fSh0KTpvKHIodCkpfX0sQnM4VjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZzZ2LyIpLG89bigiMGVlZiIpLGk9bigiWEd3QyIpLGE9bigiL0dxVSIpLGM9bigid0U2diIpLHU9bigiVVRWUyIpLHM9bigiRFBzeCIpLGY9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtlLmY9cj9mOmZ1bmN0aW9uKHQsZSl7aWYodD1hKHQpLGU9YyhlLCEwKSxzKXRyeXtyZXR1cm4gZih0LGUpfWNhdGNoKG4pe31pZih1KHQsZSkpcmV0dXJuIGkoIW8uZi5jYWxsKHQsZSksdFtlXSl9fSxDc2dEOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJqclV2Iik7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwLGZvcmNlZDpvIT1NYXRoLmV4cG0xfSx7ZXhwbTE6b30pfSxERWZ1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIik7bigiMUU1eiIpKHIuSlNPTiwiSlNPTiIsITApfSxETXQyOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJVTVNRIiksbz1uKCJFVWphIiksaT1uKCJIWUFGIiksYT1NYXRoLmNlaWwsYz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGMpe3ZhciB1LHMsZj1TdHJpbmcoaShlKSksbD1mLmxlbmd0aCxwPXZvaWQgMD09PWM/IiAiOlN0cmluZyhjKSxoPXIobik7cmV0dXJuIGg8PWx8fCIiPT1wP2Y6KChzPW8uY2FsbChwLGEoKHU9aC1sKS9wLmxlbmd0aCkpKS5sZW5ndGg+dSYmKHM9cy5zbGljZSgwLHUpKSx0P2YrczpzK2YpfX07dC5leHBvcnRzPXtzdGFydDpjKCExKSxlbmQ6YyghMCl9fSxEUHN4OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnNnYvIiksbz1uKCIwRGt5IiksaT1uKCJ6Qko0Iik7dC5leHBvcnRzPSFyJiYhbygoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KGkoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sRFFOYTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiYnVzRSIpLG89RGF0ZS5wcm90b3R5cGUsaT1vLnRvU3RyaW5nLGE9by5nZXRUaW1lO25ldyBEYXRlKE5hTikrIiIhPSJJbnZhbGlkIERhdGUiJiZyKG8sInRvU3RyaW5nIiwoZnVuY3Rpb24oKXt2YXIgdD1hLmNhbGwodGhpcyk7cmV0dXJuIHQ9PXQ/aS5jYWxsKHRoaXMpOiJJbnZhbGlkIERhdGUifSkpfSxFNU5NOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiaFhwTyIpO3Ioe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6bigiNnVuSyIpKCJiaWciKX0se2JpZzpmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsImJpZyIsIiIsIiIpfX0pfSxFOVhEOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMVkvbiIpLmxlZnQ7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOm4oInN3RkwiKSgicmVkdWNlIil9LHtyZWR1Y2U6ZnVuY3Rpb24odCl7cmV0dXJuIG8odGhpcyx0LGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSxFTkY5OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbz1uKCIyb1JvIiksaT1uKCI0c3l3IiksYT1uKCI4WU9hIiksYz1uKCJiV0ZoIiksdT1uKCJyS3piIikscz1uKCJoaDF2IiksZj1uKCJhZk84IikuZW5mb3JjZSxsPW4oImY1cDEiKSxwPSFvLkFjdGl2ZVhPYmplY3QmJiJBY3RpdmVYT2JqZWN0ImluIG8saD1PYmplY3QuaXNFeHRlbnNpYmxlLHY9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDApfX0sZD10LmV4cG9ydHM9YygiV2Vha01hcCIsdix1LCEwLCEwKTtpZihsJiZwKXtyPXUuZ2V0Q29uc3RydWN0b3IodiwiV2Vha01hcCIsITApLGEuUkVRVUlSRUQ9ITA7dmFyIGc9ZC5wcm90b3R5cGUseT1nLmRlbGV0ZSxiPWcuaGFzLG09Zy5nZXQsaz1nLnNldDtpKGcse2RlbGV0ZTpmdW5jdGlvbih0KXtpZihzKHQpJiYhaCh0KSl7dmFyIGU9Zih0aGlzKTtyZXR1cm4gZS5mcm96ZW58fChlLmZyb3plbj1uZXcgcikseS5jYWxsKHRoaXMsdCl8fGUuZnJvemVuLmRlbGV0ZSh0KX1yZXR1cm4geS5jYWxsKHRoaXMsdCl9LGhhczpmdW5jdGlvbih0KXtpZihzKHQpJiYhaCh0KSl7dmFyIGU9Zih0aGlzKTtyZXR1cm4gZS5mcm96ZW58fChlLmZyb3plbj1uZXcgciksYi5jYWxsKHRoaXMsdCl8fGUuZnJvemVuLmhhcyh0KX1yZXR1cm4gYi5jYWxsKHRoaXMsdCl9LGdldDpmdW5jdGlvbih0KXtpZihzKHQpJiYhaCh0KSl7dmFyIGU9Zih0aGlzKTtyZXR1cm4gZS5mcm96ZW58fChlLmZyb3plbj1uZXcgciksYi5jYWxsKHRoaXMsdCk/bS5jYWxsKHRoaXMsdCk6ZS5mcm96ZW4uZ2V0KHQpfXJldHVybiBtLmNhbGwodGhpcyx0KX0sc2V0OmZ1bmN0aW9uKHQsZSl7aWYocyh0KSYmIWgodCkpe3ZhciBuPWYodGhpcyk7bi5mcm96ZW58fChuLmZyb3plbj1uZXcgciksYi5jYWxsKHRoaXMsdCk/ay5jYWxsKHRoaXMsdCxlKTpuLmZyb3plbi5zZXQodCxlKX1lbHNlIGsuY2FsbCh0aGlzLHQsZSk7cmV0dXJuIHRoaXN9fSl9fSxFVWphOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigicHBHQiIpLG89bigiSFlBRiIpO3QuZXhwb3J0cz0iIi5yZXBlYXR8fGZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyhvKHRoaXMpKSxuPSIiLGk9cih0KTtpZihpPDB8fGk9PTEvMCl0aHJvdyBSYW5nZUVycm9yKCJXcm9uZyBudW1iZXIgb2YgcmVwZXRpdGlvbnMiKTtmb3IoO2k+MDsoaT4+Pj0xKSYmKGUrPWUpKTEmaSYmKG4rPWUpO3JldHVybiBufX0sRW5aeTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjE0U2wiKSxvPW4oIlJPZFAiKSxpPW4oImdscmsiKSxhPW4oIkhZQUYiKSxjPW4oIlNFQmgiKSx1PW4oImlxV1ciKSxzPW4oIlVNU1EiKSxmPW4oIkZNTk0iKSxsPW4oImttTVYiKSxwPW4oIjBEa3kiKSxoPVtdLnB1c2gsdj1NYXRoLm1pbixkPSFwKChmdW5jdGlvbigpe3JldHVybiFSZWdFeHAoNDI5NDk2NzI5NSwieSIpfSkpO3IoInNwbGl0IiwyLChmdW5jdGlvbih0LGUsbil7dmFyIHI7cmV0dXJuIHI9ImMiPT0iYWJiYyIuc3BsaXQoLyhiKSovKVsxXXx8NCE9InRlc3QiLnNwbGl0KC8oPzopLywtMSkubGVuZ3RofHwyIT0iYWIiLnNwbGl0KC8oPzphYikqLykubGVuZ3RofHw0IT0iLiIuc3BsaXQoLyguPykoLj8pLykubGVuZ3RofHwiLiIuc3BsaXQoLygpKCkvKS5sZW5ndGg+MXx8IiIuc3BsaXQoLy4/LykubGVuZ3RoP2Z1bmN0aW9uKHQsbil7dmFyIHI9U3RyaW5nKGEodGhpcykpLGk9dm9pZCAwPT09bj80Mjk0OTY3Mjk1Om4+Pj4wO2lmKDA9PT1pKXJldHVybltdO2lmKHZvaWQgMD09PXQpcmV0dXJuW3JdO2lmKCFvKHQpKXJldHVybiBlLmNhbGwocix0LGkpO2Zvcih2YXIgYyx1LHMsZj1bXSxwPTAsdj1uZXcgUmVnRXhwKHQuc291cmNlLCh0Lmlnbm9yZUNhc2U/ImkiOiIiKSsodC5tdWx0aWxpbmU/Im0iOiIiKSsodC51bmljb2RlPyJ1IjoiIikrKHQuc3RpY2t5PyJ5IjoiIikrImciKTsoYz1sLmNhbGwodixyKSkmJiEoKHU9di5sYXN0SW5kZXgpPnAmJihmLnB1c2goci5zbGljZShwLGMuaW5kZXgpKSxjLmxlbmd0aD4xJiZjLmluZGV4PHIubGVuZ3RoJiZoLmFwcGx5KGYsYy5zbGljZSgxKSkscz1jWzBdLmxlbmd0aCxwPXUsZi5sZW5ndGg+PWkpKTspdi5sYXN0SW5kZXg9PT1jLmluZGV4JiZ2Lmxhc3RJbmRleCsrO3JldHVybiBwPT09ci5sZW5ndGg/IXMmJnYudGVzdCgiIil8fGYucHVzaCgiIik6Zi5wdXNoKHIuc2xpY2UocCkpLGYubGVuZ3RoPmk/Zi5zbGljZSgwLGkpOmZ9OiIwIi5zcGxpdCh2b2lkIDAsMCkubGVuZ3RoP2Z1bmN0aW9uKHQsbil7cmV0dXJuIHZvaWQgMD09PXQmJjA9PT1uP1tdOmUuY2FsbCh0aGlzLHQsbil9OmUsW2Z1bmN0aW9uKGUsbil7dmFyIG89YSh0aGlzKSxpPW51bGw9PWU/dm9pZCAwOmVbdF07cmV0dXJuIHZvaWQgMCE9PWk/aS5jYWxsKGUsbyxuKTpyLmNhbGwoU3RyaW5nKG8pLGUsbil9LGZ1bmN0aW9uKHQsbyl7dmFyIGE9bihyLHQsdGhpcyxvLHIhPT1lKTtpZihhLmRvbmUpcmV0dXJuIGEudmFsdWU7dmFyIGw9aSh0KSxwPVN0cmluZyh0aGlzKSxoPWMobCxSZWdFeHApLGc9bC51bmljb2RlLHk9bmV3IGgoZD9sOiJeKD86IitsLnNvdXJjZSsiKSIsKGwuaWdub3JlQ2FzZT8iaSI6IiIpKyhsLm11bHRpbGluZT8ibSI6IiIpKyhsLnVuaWNvZGU/InUiOiIiKSsoZD8ieSI6ImciKSksYj12b2lkIDA9PT1vPzQyOTQ5NjcyOTU6bz4+PjA7aWYoMD09PWIpcmV0dXJuW107aWYoMD09PXAubGVuZ3RoKXJldHVybiBudWxsPT09Zih5LHApP1twXTpbXTtmb3IodmFyIG09MCxrPTAsXz1bXTtrPHAubGVuZ3RoOyl7eS5sYXN0SW5kZXg9ZD9rOjA7dmFyIHcseD1mKHksZD9wOnAuc2xpY2UoaykpO2lmKG51bGw9PT14fHwodz12KHMoeS5sYXN0SW5kZXgrKGQ/MDprKSkscC5sZW5ndGgpKT09PW0paz11KHAsayxnKTtlbHNle2lmKF8ucHVzaChwLnNsaWNlKG0saykpLF8ubGVuZ3RoPT09YilyZXR1cm4gXztmb3IodmFyIFM9MTtTPD14Lmxlbmd0aC0xO1MrKylpZihfLnB1c2goeFtTXSksXy5sZW5ndGg9PT1iKXJldHVybiBfO2s9bT13fX1yZXR1cm4gXy5wdXNoKHAuc2xpY2UobSkpLF99XX0pLCFkKX0sRXA5STpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1PYmplY3QuaXN8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lPzAhPT10fHwxL3Q9PTEvZTp0IT10JiZlIT1lfX0sRXhvQzpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMH0se3NldFByb3RvdHlwZU9mOm4oIjBydnIiKX0pfSxGOEpSOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigidHljUiIpLmZvckVhY2gsbz1uKCJzd0ZMIik7dC5leHBvcnRzPW8oImZvckVhY2giKT9mdW5jdGlvbih0KXtyZXR1cm4gcih0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfTpbXS5mb3JFYWNofSxGRjZsOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZXd2VyIpLG89bigiSTh2aCIpLGk9bigiVU1TUSIpLGE9TWF0aC5taW47dC5leHBvcnRzPVtdLmNvcHlXaXRoaW58fGZ1bmN0aW9uKHQsZSl7dmFyIG49cih0aGlzKSxjPWkobi5sZW5ndGgpLHU9byh0LGMpLHM9byhlLGMpLGY9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsbD1hKCh2b2lkIDA9PT1mP2M6byhmLGMpKS1zLGMtdSkscD0xO2ZvcihzPHUmJnU8cytsJiYocD0tMSxzKz1sLTEsdSs9bC0xKTtsLS0gPjA7KXMgaW4gbj9uW3VdPW5bc106ZGVsZXRlIG5bdV0sdSs9cCxzKz1wO3JldHVybiBufX0sRk1OTTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieHJZSyIpLG89bigia21NViIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPXQuZXhlYztpZigiZnVuY3Rpb24iPT10eXBlb2Ygbil7dmFyIGk9bi5jYWxsKHQsZSk7aWYoIm9iamVjdCIhPXR5cGVvZiBpKXRocm93IFR5cGVFcnJvcigiUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsIik7cmV0dXJuIGl9aWYoIlJlZ0V4cCIhPT1yKHQpKXRocm93IFR5cGVFcnJvcigiUmVnRXhwI2V4ZWMgY2FsbGVkIG9uIGluY29tcGF0aWJsZSByZWNlaXZlciIpO3JldHVybiBvLmNhbGwodCxlKX19LEZadFA6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIi9ieXQiKSxpPW4oIkY4SlIiKSxhPW4oIlgyVSsiKTtmb3IodmFyIGMgaW4gbyl7dmFyIHU9cltjXSxzPXUmJnUucHJvdG90eXBlO2lmKHMmJnMuZm9yRWFjaCE9PWkpdHJ5e2EocywiZm9yRWFjaCIsaSl9Y2F0Y2goZil7cy5mb3JFYWNoPWl9fX0sIkcrUngiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIwR2JZIik7dC5leHBvcnRzPXIoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LEdLVlU6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoImFuY2hvciIpfSx7YW5jaG9yOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsImEiLCJuYW1lIix0KX19KX0sR1JQRjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgiZm9udHNpemUiKX0se2ZvbnRzaXplOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsImZvbnQiLCJzaXplIix0KX19KX0sR1h2ZDpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJzcGVjaWVzIil9LEdhclU6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IFR5cGVFcnJvcigiSW5jb3JyZWN0ICIrKG4/bisiICI6IiIpKyJpbnZvY2E=" }, { "key": "qwe?styles.css?5?3", "type": "binary", "value": "base64:dGlvbiIpO3JldHVybiB0fX0sSDBwYjpmdW5jdGlvbih0LGUsbil7bigibWE5SSIpLG4oIjA3ZDciKSxuKCJwTk1PIiksbigidGpaTSIpLG4oIjRCcmYiKSxuKCIzSTFSIiksbigiNytrZCIpLG4oIjBvdWciKSxuKCJLaHNTIiksbigianQyRiIpLG4oImdPQ2IiKSxuKCJhNTduIiksbigiR1h2ZCIpLG4oIkkxR3ciKSxuKCJnWElLIiksbigibEVvdSIpLG4oImdiaVQiKSxuKCJJOXhqIiksbigiREVmdSIpO3ZhciByPW4oIlFvOWwiKTt0LmV4cG9ydHM9ci5TeW1ib2x9LEhBdU06ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgVHlwZUVycm9yKFN0cmluZyh0KSsiIGlzIG5vdCBhIGZ1bmN0aW9uIik7cmV0dXJuIHR9fSxISDRvOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ0aUtwIikoIml0ZXJhdG9yIiksbz0hMTt0cnl7dmFyIGk9MCxhPXtuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ISFpKyt9fSxyZXR1cm46ZnVuY3Rpb24oKXtvPSEwfX07YVtyXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxBcnJheS5mcm9tKGEsKGZ1bmN0aW9uKCl7dGhyb3cgMn0pKX1jYXRjaChjKXt9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoIWUmJiFvKXJldHVybiExO3ZhciBuPSExO3RyeXt2YXIgaT17fTtpW3JdPWZ1bmN0aW9uKCl7cmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTpuPSEwfX19fSx0KGkpfWNhdGNoKGMpe31yZXR1cm4gbn19LEhSeFU6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oImc2di8iKTtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6IW8sc2hhbTohb30se2RlZmluZVByb3BlcnRpZXM6bigiTitnMCIpfSl9LEhZQUY6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYobnVsbD09dCl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNhbGwgbWV0aG9kIG9uICIrdCk7cmV0dXJuIHR9fSxIZDVmOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIwRGt5Iiksbz1uKCJ0aUtwIikoInNwZWNpZXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIXIoKGZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJuKGUuY29uc3RydWN0b3I9e30pW29dPWZ1bmN0aW9uKCl7cmV0dXJue2ZvbzoxfX0sMSE9PWVbdF0oQm9vbGVhbikuZm9vfSkpfX0sSHNIQTpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGgubG9nO3QuZXhwb3J0cz1NYXRoLmxvZzFwfHxmdW5jdGlvbih0KXtyZXR1cm4odD0rdCk+LTFlLTgmJnQ8MWUtOD90LXQqdC8yOm4oMSt0KX19LCJJK2ViIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMm9SbyIpLG89bigiQnM4ViIpLmYsaT1uKCJYMlUrIiksYT1uKCJidXNFIiksYz1uKCJ6azYwIiksdT1uKCI2Sk5xIikscz1uKCJsTXE1Iik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG4sZixsLHAsaCx2PXQudGFyZ2V0LGQ9dC5nbG9iYWwsZz10LnN0YXQ7aWYobj1kP3I6Zz9yW3ZdfHxjKHYse30pOihyW3ZdfHx7fSkucHJvdG90eXBlKWZvcihmIGluIGUpe2lmKHA9ZVtmXSxsPXQubm9UYXJnZXRHZXQ/KGg9byhuLGYpKSYmaC52YWx1ZTpuW2ZdLCFzKGQ/Zjp2KyhnPyIuIjoiIyIpK2YsdC5mb3JjZWQpJiZ2b2lkIDAhPT1sKXtpZih0eXBlb2YgcD09dHlwZW9mIGwpY29udGludWU7dShwLGwpfSh0LnNoYW18fGwmJmwuc2hhbSkmJmkocCwic2hhbSIsITApLGEobixmLHAsdCl9fX0sSTFHdzpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJzcGxpdCIpfSxJOHZoOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJwcEdCIiksbz1NYXRoLm1heCxpPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPXIodCk7cmV0dXJuIG48MD9vKG4rZSwwKTppKG4sZSl9fSxJOXhqOmZ1bmN0aW9uKHQsZSxuKXtuKCIxRTV6IikoTWF0aCwiTWF0aCIsITApfSxJbVpOOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnbHJrIiksbz1uKCI2Vm9FIiksaT1uKCJVTVNRIiksYT1uKCIrTUx4IiksYz1uKCJOYUZXIiksdT1uKCJtOTJuIikscz1mdW5jdGlvbih0LGUpe3RoaXMuc3RvcHBlZD10LHRoaXMucmVzdWx0PWV9Oyh0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sZixsKXt2YXIgcCxoLHYsZCxnLHksYj1hKGUsbixmPzI6MSk7aWYobClwPXQ7ZWxzZXtpZigiZnVuY3Rpb24iIT10eXBlb2YoaD1jKHQpKSl0aHJvdyBUeXBlRXJyb3IoIlRhcmdldCBpcyBub3QgaXRlcmFibGUiKTtpZihvKGgpKXtmb3Iodj0wLGQ9aSh0Lmxlbmd0aCk7ZD52O3YrKylpZigoZz1mP2Iocih5PXRbdl0pWzBdLHlbMV0pOmIodFt2XSkpJiZnIGluc3RhbmNlb2YgcylyZXR1cm4gZztyZXR1cm4gbmV3IHMoITEpfXA9aC5jYWxsKHQpfWZvcig7ISh5PXAubmV4dCgpKS5kb25lOylpZigoZz11KHAsYix5LnZhbHVlLGYpKSYmZyBpbnN0YW5jZW9mIHMpcmV0dXJuIGc7cmV0dXJuIG5ldyBzKCExKX0pLnN0b3A9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBzKCEwLHQpfX0sSXhYUjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgic3RyaWtlIil9LHtzdHJpa2U6ZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzLCJzdHJpa2UiLCIiLCIiKX19KX0sSjMwWDpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6IkFycmF5IixzdGF0OiEwfSx7aXNBcnJheTpuKCI2TFdBIil9KX0sSkJ5ODpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigieW9SZyIpLG89bigiZURsKyIpLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7ZS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbih0KXtyZXR1cm4gcih0LG8pfX0sSlRKZzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIldqUmIiKSxpPW4oIkhZQUYiKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOiFuKCJxeFBaIikoImluY2x1ZGVzIil9LHtpbmNsdWRlczpmdW5jdGlvbih0KXtyZXR1cm4hIX5TdHJpbmcoaSh0aGlzKSkuaW5kZXhPZihvKHQpLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0sSmV2QTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiNVlPUSIpO3Ioe3RhcmdldDoiTnVtYmVyIixzdGF0OiEwLGZvcmNlZDpOdW1iZXIucGFyc2VJbnQhPW99LHtwYXJzZUludDpvfSl9LEpmQUE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJidXNFIiksbz1uKCJnbHJrIiksaT1uKCIwRGt5IiksYT1uKCJyVzB0IiksYz1SZWdFeHAucHJvdG90eXBlLHU9Yy50b1N0cmluZzsoaSgoZnVuY3Rpb24oKXtyZXR1cm4iL2EvYiIhPXUuY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9KX0pKXx8InRvU3RyaW5nIiE9dS5uYW1lKSYmcihSZWdFeHAucHJvdG90eXBlLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7dmFyIHQ9byh0aGlzKSxlPVN0cmluZyh0LnNvdXJjZSksbj10LmZsYWdzO3JldHVybiIvIitlKyIvIitTdHJpbmcodm9pZCAwPT09biYmdCBpbnN0YW5jZW9mIFJlZ0V4cCYmISgiZmxhZ3MiaW4gYyk/YS5jYWxsKHQpOm4pfSkse3Vuc2FmZTohMH0pfSxKaVpiOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMEdiWSIpLG89bigibS9MOCIpLGk9bigidGlLcCIpLGE9bigiZzZ2LyIpLGM9aSgic3BlY2llcyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1yKHQpO2EmJmUmJiFlW2NdJiYoMCxvLmYpKGUsYyx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pfX0sS2hzUzpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJtYXRjaCIpfSxLdjlsOmZ1bmN0aW9uKHQsZSxuKXtuKCJUV05zIiksbigiSmZBQSIpLG4oInJCOWoiKSxuKCJVM2Y0IiksbigiUm0xUyIpLG4oIlV4bEMiKSxuKCJoQnlRIiksbigiRW5aeSIpfSxLdkdpOmZ1bmN0aW9uKHQsZSxuKXtuKCJJK2ViIikoe3RhcmdldDoiTWF0aCIsc3RhdDohMH0se3NpZ246bigiOTBoVyIpfSl9LEt4bGQ6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITB9LHtpczpuKCJFcDlJIil9KX0sTEtCeDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIlVNU1EiKSxpPW4oIldqUmIiKSxhPW4oIkhZQUYiKSxjPW4oInF4UFoiKSx1PSIiLnN0YXJ0c1dpdGgscz1NYXRoLm1pbjtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOiFjKCJzdGFydHNXaXRoIil9LHtzdGFydHNXaXRoOmZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyhhKHRoaXMpKTtpKHQpO3ZhciBuPW8ocyhhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxlLmxlbmd0aCkpLHI9U3RyaW5nKHQpO3JldHVybiB1P3UuY2FsbChlLHIsbik6ZS5zbGljZShuLG4rci5sZW5ndGgpPT09cn19KX0sTFBTUzpmdW5jdGlvbih0LGUsbil7dmFyIHIsbyxpLGE9bigiMm9SbyIpLGM9bigiMERreSIpLHU9bigieHJZSyIpLHM9bigiK01MeCIpLGY9bigiRytSeCIpLGw9bigiekJKNCIpLHA9YS5sb2NhdGlvbixoPWEuc2V0SW1tZWRpYXRlLHY9YS5jbGVhckltbWVkaWF0ZSxkPWEucHJvY2VzcyxnPWEuTWVzc2FnZUNoYW5uZWwseT1hLkRpc3BhdGNoLGI9MCxtPXt9LGs9ZnVuY3Rpb24odCl7aWYobS5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIGU9bVt0XTtkZWxldGUgbVt0XSxlKCl9fSxfPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe2sodCl9fSx3PWZ1bmN0aW9uKHQpe2sodC5kYXRhKX0seD1mdW5jdGlvbih0KXthLnBvc3RNZXNzYWdlKHQrIiIscC5wcm90b2NvbCsiLy8iK3AuaG9zdCl9O2gmJnZ8fChoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPTE7YXJndW1lbnRzLmxlbmd0aD5uOyllLnB1c2goYXJndW1lbnRzW24rK10pO3JldHVybiBtWysrYl09ZnVuY3Rpb24oKXsoImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpGdW5jdGlvbih0KSkuYXBwbHkodm9pZCAwLGUpfSxyKGIpLGJ9LHY9ZnVuY3Rpb24odCl7ZGVsZXRlIG1bdF19LCJwcm9jZXNzIj09dShkKT9yPWZ1bmN0aW9uKHQpe2QubmV4dFRpY2soXyh0KSl9OnkmJnkubm93P3I9ZnVuY3Rpb24odCl7eS5ub3coXyh0KSl9Omc/KGk9KG89bmV3IGcpLnBvcnQyLG8ucG9ydDEub25tZXNzYWdlPXcscj1zKGkucG9zdE1lc3NhZ2UsaSwxKSk6IWEuYWRkRXZlbnRMaXN0ZW5lcnx8ImZ1bmN0aW9uIiE9dHlwZW9mIHBvc3RNZXNzYWdlfHxhLmltcG9ydFNjcmlwdHN8fGMoeCk/cj0ib25yZWFkeXN0YXRlY2hhbmdlImluIGwoInNjcmlwdCIpP2Z1bmN0aW9uKHQpe2YuYXBwZW5kQ2hpbGQobCgic2NyaXB0IikpLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2YucmVtb3ZlQ2hpbGQodGhpcyksayh0KX19OmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQoXyh0KSwwKX06KHI9eCxhLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHcsITEpKSksdC5leHBvcnRzPXtzZXQ6aCxjbGVhcjp2fX0sIk4rZzAiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnNnYvIiksbz1uKCJtL0w4IiksaT1uKCJnbHJrIiksYT1uKCIzM1doIik7dC5leHBvcnRzPXI/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24odCxlKXtpKHQpO2Zvcih2YXIgbixyPWEoZSksYz1yLmxlbmd0aCx1PTA7Yz51OylvLmYodCxuPXJbdSsrXSxlW25dKTtyZXR1cm4gdH19LE5CQVM6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oImV3dlciKSxhPW4oIjRXT0QiKSxjPW4oIjRYZXQiKTtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6bygoZnVuY3Rpb24oKXthKDEpfSkpLHNoYW06IWN9LHtnZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXtyZXR1cm4gYShpKHQpKX19KX0sTmFGVzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiOWQvdCIpLG89bigiUDR5MSIpLGk9bigidGlLcCIpKCJpdGVyYXRvciIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihudWxsIT10KXJldHVybiB0W2ldfHx0WyJAQGl0ZXJhdG9yIl18fG9bcih0KV19fSwiTmJOKyI6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJOdW1iZXIiLHN0YXQ6ITB9LHtFUFNJTE9OOk1hdGgucG93KDIsLTUyKX0pfSxPNzQxOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJoaDF2Iik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFyKHQpJiZudWxsIT09dCl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IHNldCAiK1N0cmluZyh0KSsiIGFzIGEgcHJvdG90eXBlIik7cmV0dXJuIHR9fSxPTTlaOmZ1bmN0aW9uKHQsZSxuKXtuKCJJK2ViIikoe3RhcmdldDoiU3RyaW5nIixwcm90bzohMH0se3JlcGVhdDpuKCJFVWphIil9KX0sUDR5MTpmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz17fX0sUEtQazpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlpVZDgiKS5jaGFyQXQsbz1uKCJhZk84IiksaT1uKCJmZEF5IiksYT1vLnNldCxjPW8uZ2V0dGVyRm9yKCJTdHJpbmcgSXRlcmF0b3IiKTtpKFN0cmluZywiU3RyaW5nIiwoZnVuY3Rpb24odCl7YSh0aGlzLHt0eXBlOiJTdHJpbmcgSXRlcmF0b3IiLHN0cmluZzpTdHJpbmcodCksaW5kZXg6MH0pfSksKGZ1bmN0aW9uKCl7dmFyIHQsZT1jKHRoaXMpLG49ZS5zdHJpbmcsbz1lLmluZGV4O3JldHVybiBvPj1uLmxlbmd0aD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Oih0PXIobixvKSxlLmluZGV4Kz10Lmxlbmd0aCx7dmFsdWU6dCxkb25lOiExfSl9KSl9LFBxT0k6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjkwaFciKSxpPU1hdGguYWJzLGE9TWF0aC5wb3c7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7Y2JydDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0PSt0KSphKGkodCksMS8zKX19KX0sUUZjVDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89TWF0aC5oeXBvdCxpPU1hdGguYWJzLGE9TWF0aC5zcXJ0O3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMCxmb3JjZWQ6ISFvJiZvKDEvMCxOYU4pIT09MS8wfSx7aHlwb3Q6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4scixvPTAsYz0wLHU9YXJndW1lbnRzLmxlbmd0aCxzPTA7Yzx1OylzPChuPWkoYXJndW1lbnRzW2MrK10pKT8obz1vKihyPXMvbikqcisxLHM9bik6bys9bj4wPyhyPW4vcykqcjpuO3JldHVybiBzPT09MS8wPzEvMDpzKmEobyl9fSl9LFFJcGQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oInhyWUsiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIm51bWJlciIhPXR5cGVvZiB0JiYiTnVtYmVyIiE9cih0KSl0aHJvdyBUeXBlRXJyb3IoIkluY29ycmVjdCBpbnZvY2F0aW9uIik7cmV0dXJuK3R9fSxRTm5wOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1NYXRoLmZsb29yLGk9TWF0aC5sb2csYT1NYXRoLkxPRzJFO3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMH0se2NsejMyOmZ1bmN0aW9uKHQpe3JldHVybih0Pj4+PTApPzMxLW8oaSh0Ky41KSphKTozMn19KX0sUVdCbDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIkY4SlIiKTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6W10uZm9yRWFjaCE9b30se2ZvckVhY2g6b30pfSxRbzlsOmZ1bmN0aW9uKHQsZSxuKXt0LmV4cG9ydHM9bigiMm9SbyIpfSxSSzN0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIwRGt5Iiksbz1uKCJ4cllLIiksaT0iIi5zcGxpdDt0LmV4cG9ydHM9cigoZnVuY3Rpb24oKXtyZXR1cm4hT2JqZWN0KCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCl9KSk/ZnVuY3Rpb24odCl7cmV0dXJuIlN0cmluZyI9PW8odCk/aS5jYWxsKHQsIiIpOk9iamVjdCh0KX06T2JqZWN0fSxSTjZjOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49ci5jb25zb2xlO24mJm4uZXJyb3ImJigxPT09YXJndW1lbnRzLmxlbmd0aD9uLmVycm9yKHQpOm4uZXJyb3IodCxlKSl9fSxSTklzOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ0aUtwIiksbz1uKCJmSE1ZIiksaT1uKCJYMlUrIiksYT1yKCJ1bnNjb3BhYmxlcyIpLGM9QXJyYXkucHJvdG90eXBlO251bGw9PWNbYV0mJmkoYyxhLG8obnVsbCkpLHQuZXhwb3J0cz1mdW5jdGlvbih0KXtjW2FdW3RdPSEwfX0sUk9kUDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiaGgxdiIpLG89bigieHJZSyIpLGk9bigidGlLcCIpKCJtYXRjaCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gcih0KSYmKHZvaWQgMCE9PShlPXRbaV0pPyEhZToiUmVnRXhwIj09byh0KSl9fSxSZnh6OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigidHljUiIpLnNvbWU7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOm4oInN3RkwiKSgic29tZSIpfSx7c29tZTpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSxSbTFTOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiMTRTbCIpLG89bigiZ2xyayIpLGk9bigiVU1TUSIpLGE9bigiSFlBRiIpLGM9bigiaXFXVyIpLHU9bigiRk1OTSIpO3IoIm1hdGNoIiwxLChmdW5jdGlvbih0LGUsbil7cmV0dXJuW2Z1bmN0aW9uKGUpe3ZhciBuPWEodGhpcykscj1udWxsPT1lP3ZvaWQgMDplW3RdO3JldHVybiB2b2lkIDAhPT1yP3IuY2FsbChlLG4pOm5ldyBSZWdFeHAoZSlbdF0oU3RyaW5nKG4pKX0sZnVuY3Rpb24odCl7dmFyIHI9bihlLHQsdGhpcyk7aWYoci5kb25lKXJldHVybiByLnZhbHVlO3ZhciBhPW8odCkscz1TdHJpbmcodGhpcyk7aWYoIWEuZ2xvYmFsKXJldHVybiB1KGEscyk7dmFyIGY9YS51bmljb2RlO2EubGFzdEluZGV4PTA7Zm9yKHZhciBsLHA9W10saD0wO251bGwhPT0obD11KGEscykpOyl7dmFyIHY9U3RyaW5nKGxbMF0pO3BbaF09diwiIj09PXYmJihhLmxhc3RJbmRleD1jKHMsaShhLmxhc3RJbmRleCksZikpLGgrK31yZXR1cm4gMD09PWg/bnVsbDpwfV19KSl9LFNFQmg6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImdscmsiKSxvPW4oIkhBdU0iKSxpPW4oInRpS3AiKSgic3BlY2llcyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuLGE9cih0KS5jb25zdHJ1Y3RvcjtyZXR1cm4gdm9pZCAwPT09YXx8bnVsbD09KG49cihhKVtpXSk/ZTpvKG4pfX0sU1RBRTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpO3QuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFyKChmdW5jdGlvbigpe3JldHVybiFTdHJpbmcoU3ltYm9sKCkpfSkpfSxTWW9yOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiV0tpSCIpLnRyaW07cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI0SENpIikoInRyaW0iKX0se3RyaW06ZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzKX19KX0sVEZQVDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgic3ViIil9LHtzdWI6ZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzLCJzdWIiLCIiLCIiKX19KX0sVFdOczpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZzZ2LyIpLG89bigiMm9SbyIpLGk9bigibE1xNSIpLGE9bigiY1ZZSCIpLGM9bigibS9MOCIpLmYsdT1uKCJKQnk4IikuZixzPW4oIlJPZFAiKSxmPW4oInJXMHQiKSxsPW4oImJ1c0UiKSxwPW4oIjBEa3kiKSxoPW4oIkppWmIiKSx2PW4oInRpS3AiKSgibWF0Y2giKSxkPW8uUmVnRXhwLGc9ZC5wcm90b3R5cGUseT0vYS9nLGI9L2EvZyxtPW5ldyBkKHkpIT09eTtpZihyJiZpKCJSZWdFeHAiLCFtfHxwKChmdW5jdGlvbigpe3JldHVybiBiW3ZdPSExLGQoeSkhPXl8fGQoYik9PWJ8fCIvYS9pIiE9ZCh5LCJpIil9KSkpKXtmb3IodmFyIGs9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzIGluc3RhbmNlb2YgayxyPXModCksbz12b2lkIDA9PT1lO3JldHVybiFuJiZyJiZ0LmNvbnN0cnVjdG9yPT09ayYmbz90OmEobT9uZXcgZChyJiYhbz90LnNvdXJjZTp0LGUpOmQoKHI9dCBpbnN0YW5jZW9mIGspP3Quc291cmNlOnQsciYmbz9mLmNhbGwodCk6ZSksbj90aGlzOmcsayl9LF89ZnVuY3Rpb24odCl7dCBpbiBrfHxjKGssdCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBkW3RdfSxzZXQ6ZnVuY3Rpb24oZSl7ZFt0XT1lfX0pfSx3PXUoZCkseD0wO3cubGVuZ3RoPng7KV8od1t4KytdKTtnLmNvbnN0cnVjdG9yPWssay5wcm90b3R5cGU9ZyxsKG8sIlJlZ0V4cCIsayl9aCgiUmVnRXhwIil9LFRXUWI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIi9HcVUiKSxvPW4oIlVNU1EiKSxpPW4oIkk4dmgiKSxhPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4sYSl7dmFyIGMsdT1yKGUpLHM9byh1Lmxlbmd0aCksZj1pKGEscyk7aWYodCYmbiE9bil7Zm9yKDtzPmY7KWlmKChjPXVbZisrXSkhPWMpcmV0dXJuITB9ZWxzZSBmb3IoO3M+ZjtmKyspaWYoKHR8fGYgaW4gdSkmJnVbZl09PT1uKXJldHVybiB0fHxmfHwwO3JldHVybiF0JiYtMX19O3QuZXhwb3J0cz17aW5jbHVkZXM6YSghMCksaW5kZXhPZjphKCExKX19LFRlUUY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJ0eWNSIikuZmlsdGVyO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohbigiSGQ1ZiIpKCJmaWx0ZXIiKX0se2ZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSxUZlRpOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiK01MeCIpLG89bigiZXd2VyIpLGk9bigibTkybiIpLGE9bigiNlZvRSIpLGM9bigiVU1TUSIpLHU9bigiaEJqTiIpLHM9bigiTmFGVyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxuLGYsbCxwPW8odCksaD0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOkFycmF5LHY9YXJndW1lbnRzLmxlbmd0aCxkPXY+MT9hcmd1bWVudHNbMV06dm9pZCAwLGc9dm9pZCAwIT09ZCx5PTAsYj1zKHApO2lmKGcmJihkPXIoZCx2PjI/YXJndW1lbnRzWzJdOnZvaWQgMCwyKSksbnVsbD09Ynx8aD09QXJyYXkmJmEoYikpZm9yKG49bmV3IGgoZT1jKHAubGVuZ3RoKSk7ZT55O3krKyl1KG4seSxnP2QocFt5XSx5KTpwW3ldKTtlbHNlIGZvcihsPWIuY2FsbChwKSxuPW5ldyBoOyEoZj1sLm5leHQoKSkuZG9uZTt5KyspdShuLHksZz9pKGwsZCxbZi52YWx1ZSx5XSwhMCk6Zi52YWx1ZSk7cmV0dXJuIG4ubGVuZ3RoPXksbn19LFRvSnk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJIQXVNIiksaT1uKCJld3ZXIiksYT1uKCIwRGt5IiksYz1uKCJzd0ZMIiksdT1bXS5zb3J0LHM9WzEsMiwzXSxmPWEoKGZ1bmN0aW9uKCl7cy5zb3J0KHZvaWQgMCl9KSksbD1hKChmdW5jdGlvbigpe3Muc29ydChudWxsKX0pKSxwPWMoInNvcnQiKTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6Znx8IWx8fHB9LHtzb3J0OmZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3UuY2FsbChpKHRoaXMpKTp1LmNhbGwoaSh0aGlzKSxvKHQpKX19KX0sVHNrcTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImJXRmgiKSxvPW4oIlpXYVEiKTt0LmV4cG9ydHM9cigiTWFwIiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDApfX0pLG8sITApfSxVM2Y0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnNnYvIiksbz1uKCJtL0w4IiksaT1uKCJyVzB0Iik7ciYmImciIT0vLi9nLmZsYWdzJiZvLmYoUmVnRXhwLnByb3RvdHlwZSwiZmxhZ3MiLHtjb25maWd1cmFibGU6ITAsZ2V0Oml9KX0sVU1TUTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigicHBHQiIpLG89TWF0aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/byhyKHQpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSxVVFZTOmZ1bmN0aW9uKHQsZSl7dmFyIG49e30uaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uY2FsbCh0LGUpfX0sVWVzTDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImdscmsiKSxvPW4oIndFNnYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoInN0cmluZyIhPT10JiYibnVtYmVyIiE9PXQmJiJkZWZhdWx0IiE9PXQpdGhyb3cgVHlwZUVycm9yKCJJbmNvcnJlY3QgaGludCIpO3JldHVybiBvKHIodGhpcyksIm51bWJlciIhPT10KX19LFV4bEM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIxNFNsIiksbz1uKCJnbHJrIiksaT1uKCJld3ZXIiksYT1uKCJVTVNRIiksYz1uKCJwcEdCIiksdT1uKCJIWUFGIikscz1uKCJpcVdXIiksZj1uKCJGTU5NIiksbD1NYXRoLm1heCxwPU1hdGgubWluLGg9TWF0aC5mbG9vcix2PS9cJChbJCYnYF18XGRcZD98PFtePl0qPikvZyxkPS9cJChbJCYnYF18XGRcZD8pL2c7cigicmVwbGFjZSIsMiwoZnVuY3Rpb24odCxlLG4pe3JldHVybltmdW5jdGlvbihuLHIpe3ZhciBvPXUodGhpcyksaT1udWxsPT1uP3ZvaWQgMDpuW3RdO3JldHVybiB2b2lkIDAhPT1pP2kuY2FsbChuLG8scik6ZS5jYWxsKFN0cmluZyhvKSxuLHIpfSxmdW5jdGlvbih0LGkpe3ZhciB1PW4oZSx0LHRoaXMsaSk7aWYodS5kb25lKXJldHVybiB1LnZhbHVlO3ZhciBoPW8odCksdj1TdHJpbmcodGhpcyksZD0iZnVuY3Rpb24iPT10eXBlb2YgaTtkfHwoaT1TdHJpbmcoaSkpO3ZhciBnPWguZ2xvYmFsO2lmKGcpe3ZhciB5PWgudW5pY29kZTtoLmxhc3RJbmRleD0wfWZvcih2YXIgYj1bXTs7KXt2YXIgbT1mKGgsdik7aWYobnVsbD09PW0pYnJlYWs7aWYoYi5wdXNoKG0pLCFnKWJyZWFrOyIiPT09U3RyaW5nKG1bMF0pJiYoaC5sYXN0SW5kZXg9cyh2LGEoaC5sYXN0SW5kZXgpLHkpKX1mb3IodmFyIGssXz0iIix3PTAseD0wO3g8Yi5sZW5ndGg7eCsrKXttPWJbeF07Zm9yKHZhciBTPVN0cmluZyhtWzBdKSxFPWwocChjKG0uaW5kZXgpLHYubGVuZ3RoKSwwKSxPPVtdLFQ9MTtUPG0ubGVuZ3RoO1QrKylPLnB1c2godm9pZCAwPT09KGs9bVtUXSk/azpTdHJpbmcoaykpO3ZhciBJPW0uZ3JvdXBzO2lmKGQpe3ZhciBqPVtTXS5jb25jYXQoTyxFLHYpO3ZvaWQgMCE9PUkmJmoucHVzaChJKTt2YXIgTT1TdHJpbmcoaS5hcHBseSh2b2lkIDAsaikpfWVsc2UgTT1yKFMsdixFLE8sSSxpKTtFPj13JiYoXys9di5zbGljZSh3LEUpK00sdz1FK1MubGVuZ3RoKX1yZXR1cm4gXyt2LnNsaWNlKHcpfV07ZnVuY3Rpb24gcih0LG4scixvLGEsYyl7dmFyIHU9cit0Lmxlbmd0aCxzPW8ubGVuZ3RoLGY9ZDtyZXR1cm4gdm9pZCAwIT09YSYmKGE9aShhKSxmPXYpLGUuY2FsbChjLGYsKGZ1bmN0aW9uKGUsaSl7dmFyIGM7c3dpdGNoKGkuY2hhckF0KDApKXtjYXNlIiQiOnJldHVybiIkIjtjYXNlIiYiOnJldHVybiB0O2Nhc2UiYCI6cmV0dXJuIG4uc2xpY2UoMCxyKTtjYXNlIiciOnJldHVybiBuLnNsaWNlKHUpO2Nhc2UiPCI6Yz1hW2kuc2xpY2UoMSwtMSldO2JyZWFrO2RlZmF1bHQ6dmFyIGY9K2k7aWYoMD09PWYpcmV0dXJuIGU7aWYoZj5zKXt2YXIgbD1oKGYvMTApO3JldHVybiAwPT09bD9lOmw8PXM/dm9pZCAwPT09b1tsLTFdP2kuY2hhckF0KDEpOm9bbC0xXStpLmNoYXJBdCgxKTplfWM9b1tmLTFdfXJldHVybiB2b2lkIDA9PT1jPyIiOmN9KSl9fSkpfSxVeWR5OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJIc0hBIiksaT1NYXRoLmFjb3NoLGE9TWF0aC5sb2csYz1NYXRoLnNxcnQsdT1NYXRoLkxOMjtyKHt0YXJnZXQ6Ik1hdGgiLHN0YXQ6ITAsZm9yY2VkOiFpfHw3MTAhPU1hdGguZmxvb3IoaShOdW1iZXIuTUFYX1ZBTFVFKSl8fGkoMS8wKSE9MS8wfSx7YWNvc2g6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9K3QpPDE/TmFOOnQ+OTQ5MDYyNjUuNjI0MjUxNTY/YSh0KSt1Om8odC0xK2ModC0xKSpjKHQrMSkpfX0pfSxWQzNMOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9bigiUUlwZCIpLGE9MS4udG9QcmVjaXNpb247cih7dGFyZ2V0OiJOdW1iZXIiLHByb3RvOiEwLGZvcmNlZDpvKChmdW5jdGlvbigpe3JldHVybiIxIiE9PWEuY2FsbCgxLHZvaWQgMCl9KSl8fCFvKChmdW5jdGlvbigpe2EuY2FsbCh7fSl9KSl9LHt0b1ByZWNpc2lvbjpmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD9hLmNhbGwoaSh0aGlzKSk6YS5jYWxsKGkodGhpcyksdCl9fSl9LFZwSVQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oInprNjAiKSxpPW4oInhEQlIiKSxhPXJbIl9fY29yZS1qc19zaGFyZWRfXyJdfHxvKCJfX2NvcmUtanNfc2hhcmVkX18iLHt9KTsodC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFbdF18fChhW3RdPXZvaWQgMCE9PWU/ZTp7fSl9KSgidmVyc2lvbnMiLFtdKS5wdXNoKHt2ZXJzaW9uOiIzLjIuMSIsbW9kZTppPyJwdXJlIjoiZ2xvYmFsIixjb3B5cmlnaHQ6IsKpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkifSl9LFZ1ODE6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjBHYlkiKSxvPW4oIkpCeTgiKSxpPW4oImRCZysiKSxhPW4oImdscmsiKTt0LmV4cG9ydHM9cigiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24odCl7dmFyIGU9by5mKGEodCkpLG49aS5mO3JldHVybiBuP2UuY29uY2F0KG4odCkpOmV9fSxXRHNSOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJYb2w4IiksaT1NYXRoLmFicztyKHt0YXJnZXQ6Ik51bWJlciIsc3RhdDohMH0se2lzU2FmZUludGVnZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG8odCkmJmkodCk8PTkwMDcxOTkyNTQ3NDA5OTF9fSl9LFdKa0o6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9Ilx0XG5cdlxmXHIgwqDhmoDigIDigIHigILigIPigITigIXigIbigIfigIjigInigIrigK/igZ/jgIBcdTIwMjhcdTIwMjlcdWZlZmYifSxXS2lIOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJIWUFGIiksbz0iWyIrbigiV0prSiIpKyJdIixpPVJlZ0V4cCgiXiIrbytvKyIqIiksYT1SZWdFeHAobytvKyIqJCIpLGM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPVN0cmluZyhyKGUpKTtyZXR1cm4gMSZ0JiYobj1uLnJlcGxhY2UoaSwiIikpLDImdCYmKG49bi5yZXBsYWNlKGEsIiIpKSxufX07dC5leHBvcnRzPXtzdGFydDpjKDEpLGVuZDpjKDIpLHRyaW06YygzKX19LFdqUmI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlJPZFAiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYocih0KSl0aHJvdyBUeXBlRXJyb3IoIlRoZSBtZXRob2QgZG9lc24ndCBhY2NlcHQgcmVndWxhciBleHByZXNzaW9ucyIpO3JldHVybiB0fX0sIlgyVSsiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnNnYvIiksbz1uKCJtL0w4IiksaT1uKCJYR3dDIik7dC5leHBvcnRzPXI/ZnVuY3Rpb24odCxlLG4pe3JldHVybiBvLmYodCxlLGkoMSxuKSl9OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFtlXT1uLHR9fSxYR3dDOmZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOmV9fX0sWGUzTDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oImhCak4iKTtyKHt0YXJnZXQ6IkFycmF5IixzdGF0OiEwLGZvcmNlZDpvKChmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIShBcnJheS5vZi5jYWxsKHQpaW5zdGFuY2VvZiB0KX0pKX0se29mOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT1hcmd1bWVudHMubGVuZ3RoLG49bmV3KCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzP3RoaXM6QXJyYXkpKGUpO2U+dDspaShuLHQsYXJndW1lbnRzW3QrK10pO3JldHVybiBuLmxlbmd0aD1lLG59fSl9LFhvbDg6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImhoMXYiKSxvPU1hdGguZmxvb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiFyKHQpJiZpc0Zpbml0ZSh0KSYmbyh0KT09PXR9fSxZR0s0OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiYldGaCIpLG89bigiWldhUSIpO3QuZXhwb3J0cz1yKCJTZXQiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSksbyl9LFlOclY6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJnNnYvIiksbz1uKCIwRGt5IiksaT1uKCIzM1doIiksYT1uKCJkQmcrIiksYz1uKCIwZWVmIiksdT1uKCJld3ZXIikscz1uKCJSSzN0IiksZj1PYmplY3QuYXNzaWduO3QuZXhwb3J0cz0hZnx8bygoZnVuY3Rpb24oKXt2YXIgdD17fSxlPXt9LG49U3ltYm9sKCk7cmV0dXJuIHRbbl09NywiYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JFYWNoKChmdW5jdGlvbih0KXtlW3RdPXR9KSksNyE9Zih7fSx0KVtuXXx8ImFiY2RlZmdoaWprbG1ub3BxcnN0IiE9aShmKHt9LGUpKS5qb2luKCIiKX0pKT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj11KHQpLG89YXJndW1lbnRzLmxlbmd0aCxmPTEsbD1hLmYscD1jLmY7bz5mOylmb3IodmFyIGgsdj1zKGFyZ3VtZW50c1tmKytdKSxkPWw/aSh2KS5jb25jYXQobCh2KSk6aSh2KSxnPWQubGVuZ3RoLHk9MDtnPnk7KWg9ZFt5KytdLHImJiFwLmNhbGwodixoKXx8KG5baF09dltoXSk7cmV0dXJuIG59OmZ9LFpPWGI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCIwRGt5Iiksbz1uKCJETXQyIikuc3RhcnQsaT1NYXRoLmFicyxhPURhdGUucHJvdG90eXBlLGM9YS5nZXRUaW1lLHU9YS50b0lTT1N0cmluZzt0LmV4cG9ydHM9cigoZnVuY3Rpb24oKXtyZXR1cm4iMDM4NS0wNy0yNVQwNzowNjozOS45OTlaIiE9dS5jYWxsKG5ldyBEYXRlKC01ZTEzLTEpKX0pKXx8IXIoKGZ1bmN0aW9uKCl7dS5jYWxsKG5ldyBEYXRlKE5hTikpfSkpP2Z1bmN0aW9uKCl7aWYoIWlzRmluaXRlKGMuY2FsbCh0aGlzKSkpdGhyb3cgUmFuZ2VFcnJvcigiSW52YWxpZCB0aW1lIHZhbHVlIik7dmFyIHQ9dGhpcy5nZXRVVENGdWxsWWVhcigpLGU9dGhpcy5nZXRVVENNaWxsaXNlY29uZHMoKSxuPXQ8MD8iLSI6dD45OTk5PyIrIjoiIjtyZXR1cm4gbitvKGkodCksbj82OjQsMCkrIi0iK28odGhpcy5nZXRVVENNb250aCgpKzEsMiwwKSsiLSIrbyh0aGlzLmdldFVUQ0RhdGUoKSwyLDApKyJUIitvKHRoaXMuZ2V0VVRDSG91cnMoKSwyLDApKyI6IitvKHRoaXMuZ2V0VVRDTWludXRlcygpLDIsMCkrIjoiK28odGhpcy5nZXRVVENTZWNvbmRzKCksMiwwKSsiLiIrbyhlLDMsMCkrIloifTp1fSxaVWQ4OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJwcEdCIiksbz1uKCJIWUFGIiksaT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgaSxhLGM9U3RyaW5nKG8oZSkpLHU9cihuKSxzPWMubGVuZ3RoO3JldHVybiB1PDB8fHU+PXM/dD8iIjp2b2lkIDA6KGk9Yy5jaGFyQ29kZUF0KHUpKTw1NTI5Nnx8aT41NjMxOXx8dSsxPT09c3x8KGE9Yy5jaGFyQ29kZUF0KHUrMSkpPDU2MzIwfHxhPjU3MzQzP3Q/Yy5jaGFyQXQodSk6aTp0P2Muc2xpY2UodSx1KzIpOmEtNTYzMjArKGktNTUyOTY8PDEwKSs2NTUzNn19O3QuZXhwb3J0cz17Y29kZUF0OmkoITEpLGNoYXJBdDppKCEwKX19LFpXYVE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJtL0w4IikuZixvPW4oImZITVkiKSxpPW4oIjRzeXciKSxhPW4oIitNTHgiKSxjPW4oIkdhclUiKSx1PW4oIkltWk4iKSxzPW4oImZkQXkiKSxmPW4oIkppWmIiKSxsPW4oImc2di8iKSxwPW4oIjhZT2EiKS5mYXN0S2V5LGg9bigiYWZPOCIpLHY9aC5zZXQsZD1oLmdldHRlckZvcjt0LmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsZSxuLHMpe3ZhciBmPXQoKGZ1bmN0aW9uKHQscil7Yyh0LGYsZSksdih0LHt0eXBlOmUsaW5kZXg6byhudWxsKSxmaXJzdDp2b2lkIDAsbGFzdDp2b2lkIDAsc2l6ZTowfSksbHx8KHQuc2l6ZT0wKSxudWxsIT1yJiZ1KHIsdFtzXSx0LG4pfSkpLGg9ZChlKSxnPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcixvLGk9aCh0KSxhPXkodCxlKTtyZXR1cm4gYT9hLnZhbHVlPW46KGkubGFzdD1hPXtpbmRleDpvPXAoZSwhMCksa2V5OmUsdmFsdWU6bixwcmV2aW91czpyPWkubGFzdCxuZXh0OnZvaWQgMCxyZW1vdmVkOiExfSxpLmZpcnN0fHwoaS5maXJzdD1hKSxyJiYoci5uZXh0PWEpLGw/aS5zaXplKys6dC5zaXplKyssIkYiIT09byYmKGkuaW5kZXhbb109YSkpLHR9LHk9ZnVuY3Rpb24odCxlKXt2YXIgbixyPWgodCksbz1wKGUpO2lmKCJGIiE9PW8pcmV0dXJuIHIuaW5kZXhbb107Zm9yKG49ci5maXJzdDtuO249bi5uZXh0KWlmKG4ua2V5PT1lKXJldHVybiBufTtyZXR1cm4gaShmLnByb3RvdHlwZSx7Y2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9aCh0aGlzKSxlPXQuaW5kZXgsbj10LmZpcnN0O247KW4ucmVtb3ZlZD0hMCxuLnByZXZpb3VzJiYobi5wcmV2aW91cz1uLnByZXZpb3VzLm5leHQ9dm9pZCAwKSxkZWxldGUgZVtuLmluZGV4XSxuPW4ubmV4dDt0LmZpcnN0PXQubGFzdD12b2lkIDAsbD90LnNpemU9MDp0aGlzLnNpemU9MH0sZGVsZXRlOmZ1bmN0aW9uKHQpe3ZhciBlPWgodGhpcyksbj15KHRoaXMsdCk7aWYobil7dmFyIHI9bi5uZXh0LG89bi5wcmV2aW91cztkZWxldGUgZS5pbmRleFtuLmluZGV4XSxuLnJlbW92ZWQ9ITAsbyYmKG8ubmV4dD1yKSxyJiYoci5wcmV2aW91cz1vKSxlLmZpcnN0PT1uJiYoZS5maXJzdD1yKSxlLmxhc3Q9PW4mJihlLmxhc3Q9byksbD9lLnNpemUtLTp0aGlzLnNpemUtLX1yZXR1cm4hIW59LGZvckVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49aCh0aGlzKSxyPWEodCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwzKTtlPWU/ZS5uZXh0Om4uZmlyc3Q7KWZvcihyKGUudmFsdWUsZS5rZXksdGhpcyk7ZSYmZS5yZW1vdmVkOyllPWUucHJldmlvdXN9LGhhczpmdW5jdGlvbih0KXtyZXR1cm4hIXkodGhpcyx0KX19KSxpKGYucHJvdG90eXBlLG4/e2dldDpmdW5jdGlvbih0KXt2YXIgZT15KHRoaXMsdCk7cmV0dXJuIGUmJmUudmFsdWV9LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiBnKHRoaXMsMD09PXQ/MDp0LGUpfX06e2FkZDpmdW5jdGlvbih0KXtyZXR1cm4gZyh0aGlzLHQ9MD09PXQ/MDp0LHQpfX0pLGwmJnIoZi5wcm90b3R5cGUsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaCh0aGlzKS5zaXplfX0pLGZ9LHNldFN0cm9uZzpmdW5jdGlvbih0LGUsbil7dmFyIHI9ZSsiIEl0ZXJhdG9yIixvPWQoZSksaT1kKHIpO3ModCxlLChmdW5jdGlvbih0LGUpe3YodGhpcyx7dHlwZTpyLHRhcmdldDp0LHN0YXRlOm8odCksa2luZDplLGxhc3Q6dm9pZCAwfSl9KSwoZnVuY3Rpb24oKXtmb3IodmFyIHQ9aSh0aGlzKSxlPXQua2luZCxuPXQubGFzdDtuJiZuLnJlbW92ZWQ7KW49bi5wcmV2aW91cztyZXR1cm4gdC50YXJnZXQmJih0Lmxhc3Q9bj1uP24ubmV4dDp0LnN0YXRlLmZpcnN0KT8ia2V5cyI9PWU/e3ZhbHVlOm4ua2V5LGRvbmU6ITF9OiJ2YWx1ZXMiPT1lP3t2YWx1ZTpuLnZhbHVlLGRvbmU6ITF9Ont2YWx1ZTpbbi5rZXksbi52YWx1ZV0sZG9uZTohMX06KHQudGFyZ2V0PXZvaWQgMCx7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KX0pLG4/ImVudHJpZXMiOiJ2YWx1ZXMiLCFuLCEwKSxmKGUpfX19LFpmRHY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImhoMXYiKSxvPW4oIjZMV0EiKSxpPW4oInRpS3AiKSgic3BlY2llcyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuO3JldHVybiBvKHQpJiYoImZ1bmN0aW9uIiE9dHlwZW9mKG49dC5jb25zdHJ1Y3Rvcil8fG4hPT1BcnJheSYmIW8obi5wcm90b3R5cGUpP3IobikmJm51bGw9PT0obj1uW2ldKSYmKG49dm9pZCAwKTpuPXZvaWQgMCksbmV3KHZvaWQgMD09PW4/QXJyYXk6bikoMD09PWU/MDplKX19LFprOFg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoInN1cCIpfSx7c3VwOmZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcywic3VwIiwiIiwiIil9fSl9LGE1N246ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgic2VhcmNoIil9LGE1Tks6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPU1hdGgubG9nLGk9TWF0aC5MT0cxMEU7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7bG9nMTA6ZnVuY3Rpb24odCl7cmV0dXJuIG8odCkqaX19KX0sYWZPODpmdW5jdGlvbih0LGUsbil7dmFyIHIsbyxpLGE9bigiZjVwMSIpLGM9bigiMm9SbyIpLHU9bigiaGgxdiIpLHM9bigiWDJVKyIpLGY9bigiVVRWUyIpLGw9bigiOTNJMCIpLHA9bigiMEJLMiIpO2lmKGEpe3ZhciBoPW5ldygwLGMuV2Vha01hcCksdj1oLmdldCxkPWguaGFzLGc9aC5zZXQ7cj1mdW5jdGlvbih0LGUpe3JldHVybiBnLmNhbGwoaCx0LGUpLGV9LG89ZnVuY3Rpb24odCl7cmV0dXJuIHYuY2FsbChoLHQpfHx7fX0saT1mdW5jdGlvbih0KXtyZXR1cm4gZC5jYWxsKGgsdCl9fWVsc2V7dmFyIHk9bCgic3RhdGUiKTtwW3ldPSEwLHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcyh0LHksZSksZX0sbz1mdW5jdGlvbih0KXtyZXR1cm4gZih0LHkpP3RbeV06e319LGk9ZnVuY3Rpb24odCl7cmV0dXJuIGYodCx5KX19dC5leHBvcnRzPXtzZXQ6cixnZXQ6byxoYXM6aSxlbmZvcmNlOmZ1bmN0aW9uKHQpe3JldHVybiBpKHQpP28odCk6cih0LHt9KX0sZ2V0dGVyRm9yOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbjtpZighdShlKXx8KG49byhlKSkudHlwZSE9PXQpdGhyb3cgVHlwZUVycm9yKCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrdCsiIHJlcXVpcmVkIik7cmV0dXJuIG59fX19LCJiK1ZUIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMm9SbyIpLG89bigiV0tpSCIpLnRyaW0saT1uKCJXSmtKIiksYT1yLnBhcnNlRmxvYXQsYz0xL2EoaSsiLTAiKSE9LTEvMDt0LmV4cG9ydHM9Yz9mdW5jdGlvbih0KXt2YXIgZT1vKFN0cmluZyh0KSksbj1hKGUpO3JldHVybiAwPT09biYmIi0iPT1lLmNoYXJBdCgwKT8tMDpufTphfSxiV0ZoOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMm9SbyIpLGk9bigibE1xNSIpLGE9bigiYnVzRSIpLGM9bigiOFlPYSIpLHU9bigiSW1aTiIpLHM9bigiR2FyVSIpLGY9bigiaGgxdiIpLGw9bigiMERreSIpLHA9bigiSEg0byIpLGg9bigiMUU1eiIpLHY9bigiY1ZZSCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixkLGcpe3ZhciB5PW9bdF0sYj15JiZ5LnByb3RvdHlwZSxtPXksaz1kPyJzZXQiOiJhZGQiLF89e30sdz1mdW5jdGlvbih0KXt2YXIgZT1iW3RdO2EoYix0LCJhZGQiPT10P2Z1bmN0aW9uKHQpe3JldHVybiBlLmNhbGwodGhpcywwPT09dD8wOnQpLHRoaXN9OiJkZWxldGUiPT10P2Z1bmN0aW9uKHQpe3JldHVybiEoZyYmIWYodCkpJiZlLmNhbGwodGhpcywwPT09dD8wOnQpfToiZ2V0Ij09dD9mdW5jdGlvbih0KXtyZXR1cm4gZyYmIWYodCk/dm9pZCAwOmUuY2FsbCh0aGlzLDA9PT10PzA6dCl9OiJoYXMiPT10P2Z1bmN0aW9uKHQpe3JldHVybiEoZyYmIWYodCkpJiZlLmNhbGwodGhpcywwPT09dD8wOnQpfTpmdW5jdGlvbih0LG4pe3JldHVybiBlLmNhbGwodGhpcywwPT09dD8wOnQsbiksdGhpc30pfTtpZihpKHQsImZ1bmN0aW9uIiE9dHlwZW9mIHl8fCEoZ3x8Yi5mb3JFYWNoJiYhbCgoZnVuY3Rpb24oKXsobmV3IHkpLmVudHJpZXMoKS5uZXh0KCl9KSkpKSltPW4uZ2V0Q29uc3RydWN0b3IoZSx0LGQsayksYy5SRVFVSVJFRD0hMDtlbHNlIGlmKGkodCwhMCkpe3ZhciB4PW5ldyBtLFM9eFtrXShnP3t9Oi0wLDEpIT14LEU9bCgoZnVuY3Rpb24oKXt4LmhhcygxKX0pKSxPPXAoKGZ1bmN0aW9uKHQpe25ldyB5KHQpfSkpLFQ9IWcmJmwoKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PW5ldyB5LGU9NTtlLS07KXRba10oZSxlKTtyZXR1cm4hdC5oYXMoLTApfSkpO098fCgobT1lKChmdW5jdGlvbihlLG4pe3MoZSxtLHQpO3ZhciByPXYobmV3IHksZSxtKTtyZXR1cm4gbnVsbCE9biYmdShuLHJba10scixkKSxyfSkpKS5wcm90b3R5cGU9YixiLmNvbnN0cnVjdG9yPW0pLChFfHxUKSYmKHcoImRlbGV0ZSIpLHcoImhhcyIpLGQmJncoImdldCIpKSwoVHx8UykmJncoayksZyYmYi5jbGVhciYmZGVsZXRlIGIuY2xlYXJ9cmV0dXJuIF9bdF09bSxyKHtnbG9iYWw6ITAsZm9yY2VkOm0hPXl9LF8pLGgobSx0KSxnfHxuLnNldFN0cm9uZyhtLHQsZCksbX19LGJycDI6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJEYXRlIixzdGF0OiEwfSx7bm93OmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9fSl9LGJ1c0U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIlZwSVQiKSxpPW4oIlgyVSsiKSxhPW4oIlVUVlMiKSxjPW4oInprNjAiKSx1PW4oIm5vR28iKSxzPW4oImFmTzgiKSxmPXMuZ2V0LGw9cy5lbmZvcmNlLHA9U3RyaW5nKHUpLnNwbGl0KCJ0b1N0cmluZyIpO28oImluc3BlY3RTb3VyY2UiLChmdW5jdGlvbih0KXtyZXR1cm4gdS5jYWxsKHQpfSkpLCh0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sbyl7dmFyIHU9ISFvJiYhIW8udW5zYWZlLHM9ISFvJiYhIW8uZW51bWVyYWJsZSxmPSEhbyYmISFvLm5vVGFyZ2V0R2V0OyJmdW5jdGlvbiI9PXR5cGVvZiBuJiYoInN0cmluZyIhPXR5cGVvZiBlfHxhKG4sIm5hbWU=" }, { "key": "qwe?styles.css?5?4", "type": "binary", "value": "base64:Iil8fGkobiwibmFtZSIsZSksbChuKS5zb3VyY2U9cC5qb2luKCJzdHJpbmciPT10eXBlb2YgZT9lOiIiKSksdCE9PXI/KHU/IWYmJnRbZV0mJihzPSEwKTpkZWxldGUgdFtlXSxzP3RbZV09bjppKHQsZSxuKSk6cz90W2VdPW46YyhlLG4pfSkoRnVuY3Rpb24ucHJvdG90eXBlLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJmYodGhpcykuc291cmNlfHx1LmNhbGwodGhpcyl9KSl9LGNEa2U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oIkJYL2IiKS5mO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpvKChmdW5jdGlvbigpe3JldHVybiFPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcygxKX0pKX0se2dldE93blByb3BlcnR5TmFtZXM6aX0pfSxjVllIOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJoaDF2Iiksbz1uKCIwcnZyIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxhO3JldHVybiBvJiYiZnVuY3Rpb24iPT10eXBlb2YoaT1lLmNvbnN0cnVjdG9yKSYmaSE9PW4mJnIoYT1pLnByb3RvdHlwZSkmJmEhPT1uLnByb3RvdHlwZSYmbyh0LGEpLHR9fSwiZEJnKyI6ZnVuY3Rpb24odCxlKXtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30sImRHL24iOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJRbzlsIiksbz1uKCJVVFZTIiksaT1uKCJ3RExvIiksYT1uKCJtL0w4IikuZjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9ci5TeW1ib2x8fChyLlN5bWJvbD17fSk7byhlLHQpfHxhKGUsdCx7dmFsdWU6aS5mKHQpfSl9fSwiZURsKyI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sZUppUjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigianJVdiIpLGk9TWF0aC5leHA7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7dGFuaDpmdW5jdGlvbih0KXt2YXIgZT1vKHQ9K3QpLG49bygtdCk7cmV0dXJuIGU9PTEvMD8xOm49PTEvMD8tMTooZS1uKS8oaSh0KStpKC10KSl9fSl9LGVhanY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPU1hdGguYXNpbmgsaT1NYXRoLmxvZyxhPU1hdGguc3FydDtyKHt0YXJnZXQ6Ik1hdGgiLHN0YXQ6ITAsZm9yY2VkOiEobyYmMS9vKDApPjApfSx7YXNpbmg6ZnVuY3Rpb24gdChlKXtyZXR1cm4gaXNGaW5pdGUoZT0rZSkmJjAhPWU/ZTwwPy10KC1lKTppKGUrYShlKmUrMSkpOmV9fSl9LGVvTDg6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oImc2di8iKTtyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6IW8sc2hhbTohb30se2RlZmluZVByb3BlcnR5Om4oIm0vTDgiKS5mfSl9LGV3dlc6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkhZQUYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChyKHQpKX19LGY1cDE6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIm5vR28iKSxpPXIuV2Vha01hcDt0LmV4cG9ydHM9ImZ1bmN0aW9uIj09dHlwZW9mIGkmJi9uYXRpdmUgY29kZS8udGVzdChvLmNhbGwoaSkpfSxmSE1ZOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnbHJrIiksbz1uKCJOK2cwIiksaT1uKCJlRGwrIiksYT1uKCIwQksyIiksYz1uKCJHK1J4IiksdT1uKCJ6Qko0Iikscz1uKCI5M0kwIikoIklFX1BST1RPIiksZj1mdW5jdGlvbigpe30sbD1mdW5jdGlvbigpe3ZhciB0LGU9dSgiaWZyYW1lIiksbj1pLmxlbmd0aDtmb3IoZS5zdHlsZS5kaXNwbGF5PSJub25lIixjLmFwcGVuZENoaWxkKGUpLGUuc3JjPVN0cmluZygiamF2YXNjcmlwdDoiKSwodD1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSx0LndyaXRlKCI8c2NyaXB0PmRvY3VtZW50LkY9T2JqZWN0PFwvc2NyaXB0PiIpLHQuY2xvc2UoKSxsPXQuRjtuLS07KWRlbGV0ZSBsLnByb3RvdHlwZVtpW25dXTtyZXR1cm4gbCgpfTt0LmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gbnVsbCE9PXQ/KGYucHJvdG90eXBlPXIodCksbj1uZXcgZixmLnByb3RvdHlwZT1udWxsLG5bc109dCk6bj1sKCksdm9pZCAwPT09ZT9uOm8obixlKX0sYVtzXT0hMH0sZmJDVzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oInR5Y1IiKS5maW5kLGk9bigiUk5JcyIpLGE9ITA7ImZpbmQiaW5bXSYmQXJyYXkoMSkuZmluZCgoZnVuY3Rpb24oKXthPSExfSkpLHIoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDphfSx7ZmluZDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLGkoImZpbmQiKX0sZmRBeTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIm50T1UiKSxpPW4oIjRXT0QiKSxhPW4oIjBydnIiKSxjPW4oIjFFNXoiKSx1PW4oIlgyVSsiKSxzPW4oImJ1c0UiKSxmPW4oInRpS3AiKSxsPW4oInhEQlIiKSxwPW4oIlA0eTEiKSxoPW4oInJwTmsiKSx2PWguSXRlcmF0b3JQcm90b3R5cGUsZD1oLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMsZz1mKCJpdGVyYXRvciIpLHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLGYsaCxiLG0pe28obixlLGYpO3ZhciBrLF8sdyx4PWZ1bmN0aW9uKHQpe2lmKHQ9PT1oJiZJKXJldHVybiBJO2lmKCFkJiZ0IGluIE8pcmV0dXJuIE9bdF07c3dpdGNoKHQpe2Nhc2Uia2V5cyI6Y2FzZSJ2YWx1ZXMiOmNhc2UiZW50cmllcyI6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMsdCl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzKX19LFM9ZSsiIEl0ZXJhdG9yIixFPSExLE89dC5wcm90b3R5cGUsVD1PW2ddfHxPWyJAQGl0ZXJhdG9yIl18fGgmJk9baF0sST0hZCYmVHx8eChoKSxqPSJBcnJheSI9PWUmJk8uZW50cmllc3x8VDtpZihqJiYoaz1pKGouY2FsbChuZXcgdCkpLHYhPT1PYmplY3QucHJvdG90eXBlJiZrLm5leHQmJihsfHxpKGspPT09dnx8KGE/YShrLHYpOiJmdW5jdGlvbiIhPXR5cGVvZiBrW2ddJiZ1KGssZyx5KSksYyhrLFMsITAsITApLGwmJihwW1NdPXkpKSksInZhbHVlcyI9PWgmJlQmJiJ2YWx1ZXMiIT09VC5uYW1lJiYoRT0hMCxJPWZ1bmN0aW9uKCl7cmV0dXJuIFQuY2FsbCh0aGlzKX0pLGwmJiFtfHxPW2ddPT09SXx8dShPLGcsSSkscFtlXT1JLGgpaWYoXz17dmFsdWVzOngoInZhbHVlcyIpLGtleXM6Yj9JOngoImtleXMiKSxlbnRyaWVzOngoImVudHJpZXMiKX0sbSlmb3IodyBpbiBfKSFkJiYhRSYmdyBpbiBPfHxzKE8sdyxfW3ddKTtlbHNlIHIoe3RhcmdldDplLHByb3RvOiEwLGZvcmNlZDpkfHxFfSxfKTtyZXR1cm4gX319LGZ0S2c6ZnVuY3Rpb24odCxlLG4pe24oImJycDIiKSxuKCI5TFBqIiksbigick16NyIpLG4oIkRRTmEiKSxuKCI3K3pzIik7dmFyIHI9bigiUW85bCIpO3QuZXhwb3J0cz1yLkRhdGV9LCJnNnYvIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpO3QuZXhwb3J0cz0hcigoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sZ09DYjpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJyZXBsYWNlIil9LGdYSUs6ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgidG9QcmltaXRpdmUiKX0sZ2JpVDpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJ1bnNjb3BhYmxlcyIpfSxnZFZsOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiZXd2VyIpLG89bigiSTh2aCIpLGk9bigiVU1TUSIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9cih0aGlzKSxuPWkoZS5sZW5ndGgpLGE9YXJndW1lbnRzLmxlbmd0aCxjPW8oYT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsbiksdT1hPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxzPXZvaWQgMD09PXU/bjpvKHUsbik7cz5jOyllW2MrK109dDtyZXR1cm4gZX19LGdscms6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImhoMXYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIXIodCkpdGhyb3cgVHlwZUVycm9yKFN0cmluZyh0KSsiIGlzIG5vdCBhbiBvYmplY3QiKTtyZXR1cm4gdH19LGhCak46ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJ3RTZ2Iiksbz1uKCJtL0w4IiksaT1uKCJYR3dDIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1yKGUpO2EgaW4gdD9vLmYodCxhLGkoMCxuKSk6dFthXT1ufX0saEJ5UTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjE0U2wiKSxvPW4oImdscmsiKSxpPW4oIkhZQUYiKSxhPW4oIkVwOUkiKSxjPW4oIkZNTk0iKTtyKCJzZWFyY2giLDEsKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bZnVuY3Rpb24oZSl7dmFyIG49aSh0aGlzKSxyPW51bGw9PWU/dm9pZCAwOmVbdF07cmV0dXJuIHZvaWQgMCE9PXI/ci5jYWxsKGUsbik6bmV3IFJlZ0V4cChlKVt0XShTdHJpbmcobikpfSxmdW5jdGlvbih0KXt2YXIgcj1uKGUsdCx0aGlzKTtpZihyLmRvbmUpcmV0dXJuIHIudmFsdWU7dmFyIGk9byh0KSx1PVN0cmluZyh0aGlzKSxzPWkubGFzdEluZGV4O2EocywwKXx8KGkubGFzdEluZGV4PTApO3ZhciBmPWMoaSx1KTtyZXR1cm4gYShpLmxhc3RJbmRleCxzKXx8KGkubGFzdEluZGV4PXMpLG51bGw9PT1mPy0xOmYuaW5kZXh9XX0pKX0sImhOL2ciOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4oIjBUV3AiKX0saFhwTzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSFlBRiIpLG89LyIvZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4saSl7dmFyIGE9U3RyaW5nKHIodCkpLGM9IjwiK2U7cmV0dXJuIiIhPT1uJiYoYys9IiAiK24rJz0iJytTdHJpbmcoaSkucmVwbGFjZShvLCImcXVvdDsiKSsnIicpLGMrIj4iK2ErIjwvIitlKyI+In19LGhoMXY6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0P251bGwhPT10OiJmdW5jdGlvbiI9PXR5cGVvZiB0fX0saTZRRjpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik51bWJlciIsc3RhdDohMH0se2lzSW50ZWdlcjpuKCJYb2w4Iil9KX0saW5sQTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIlVNU1EiKSxpPW4oIldqUmIiKSxhPW4oIkhZQUYiKSxjPW4oInF4UFoiKSx1PSIiLmVuZHNXaXRoLHM9TWF0aC5taW47cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDohYygiZW5kc1dpdGgiKX0se2VuZHNXaXRoOmZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyhhKHRoaXMpKTtpKHQpO3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLHI9byhlLmxlbmd0aCksYz12b2lkIDA9PT1uP3I6cyhvKG4pLHIpLGY9U3RyaW5nKHQpO3JldHVybiB1P3UuY2FsbChlLGYsYyk6ZS5zbGljZShjLWYubGVuZ3RoLGMpPT09Zn19KX0saXFXVzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIlpVZDgiKS5jaGFyQXQ7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZSsobj9yKHQsZSkubGVuZ3RoOjEpfX0sanJVdjpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguZXhwbTEscj1NYXRoLmV4cDt0LmV4cG9ydHM9IW58fG4oMTApPjIyMDI1LjQ2NTc5NDgwNjcxOHx8bigxMCk8MjIwMjUuNDY1Nzk0ODA2NzE4fHwtMmUtMTchPW4oLTJlLTE3KT9mdW5jdGlvbih0KXtyZXR1cm4gMD09KHQ9K3QpP3Q6dD4tMWUtNiYmdDwxZS02P3QrdCp0LzI6cih0KS0xfTpufSxqdDJGOmZ1bmN0aW9uKHQsZSxuKXtuKCJkRy9uIikoIm1hdGNoQWxsIil9LGtOY1U6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPU1hdGgubG9nLGk9TWF0aC5MTjI7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7bG9nMjpmdW5jdGlvbih0KXtyZXR1cm4gbyh0KS9pfX0pfSxrT09sOmZ1bmN0aW9uKHQsZSl7dmFyIG49MCxyPU1hdGgucmFuZG9tKCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJTeW1ib2woIitTdHJpbmcodm9pZCAwPT09dD8iIjp0KSsiKV8iKygrK24rcikudG9TdHJpbmcoMzYpfX0sa1NrbzpmdW5jdGlvbih0LGUsbil7bigiSStlYiIpKHt0YXJnZXQ6Ik51bWJlciIsc3RhdDohMH0se2lzTmFOOmZ1bmN0aW9uKHQpe3JldHVybiB0IT10fX0pfSxrbU1WOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbyxpPW4oInJXMHQiKSxhPVJlZ0V4cC5wcm90b3R5cGUuZXhlYyxjPVN0cmluZy5wcm90b3R5cGUucmVwbGFjZSx1PWEscz0obz0vYiovZyxhLmNhbGwocj0vYS8sImEiKSxhLmNhbGwobywiYSIpLDAhPT1yLmxhc3RJbmRleHx8MCE9PW8ubGFzdEluZGV4KSxmPXZvaWQgMCE9PS8oKT8/Ly5leGVjKCIiKVsxXTsoc3x8ZikmJih1PWZ1bmN0aW9uKHQpe3ZhciBlLG4scixvLHU9dGhpcztyZXR1cm4gZiYmKG49bmV3IFJlZ0V4cCgiXiIrdS5zb3VyY2UrIiQoPyFcXHMpIixpLmNhbGwodSkpKSxzJiYoZT11Lmxhc3RJbmRleCkscj1hLmNhbGwodSx0KSxzJiZyJiYodS5sYXN0SW5kZXg9dS5nbG9iYWw/ci5pbmRleCtyWzBdLmxlbmd0aDplKSxmJiZyJiZyLmxlbmd0aD4xJiZjLmNhbGwoclswXSxuLChmdW5jdGlvbigpe2ZvcihvPTE7bzxhcmd1bWVudHMubGVuZ3RoLTI7bysrKXZvaWQgMD09PWFyZ3VtZW50c1tvXSYmKHJbb109dm9pZCAwKX0pKSxyfSksdC5leHBvcnRzPXV9LGwyZEs6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoImZvbnRjb2xvciIpfSx7Zm9udGNvbG9yOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsImZvbnQiLCJjb2xvciIsdCl9fSl9LGxFb3U6ZnVuY3Rpb24odCxlLG4pe24oImRHL24iKSgidG9TdHJpbmdUYWciKX0sbE1xNTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMERreSIpLG89LyN8XC5wcm90b3R5cGVcLi8saT1mdW5jdGlvbih0LGUpe3ZhciBuPWNbYSh0KV07cmV0dXJuIG49PXN8fG4hPXUmJigiZnVuY3Rpb24iPT10eXBlb2YgZT9yKGUpOiEhZSl9LGE9aS5ub3JtYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0KS5yZXBsYWNlKG8sIi4iKS50b0xvd2VyQ2FzZSgpfSxjPWkuZGF0YT17fSx1PWkuTkFUSVZFPSJOIixzPWkuUE9MWUZJTEw9IlAiO3QuZXhwb3J0cz1pfSxsczgyOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1mdW5jdGlvbih0KXsidXNlIHN0cmljdCI7dmFyIGUsbj1PYmplY3QucHJvdG90eXBlLHI9bi5oYXNPd25Qcm9wZXJ0eSxvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGk9by5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLGE9by5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIixjPW8udG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiB1KHQsZSxuLHIpe3ZhciBvPU9iamVjdC5jcmVhdGUoKGUmJmUucHJvdG90eXBlIGluc3RhbmNlb2YgZD9lOmQpLnByb3RvdHlwZSksaT1uZXcgVChyfHxbXSk7cmV0dXJuIG8uX2ludm9rZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9ZjtyZXR1cm4gZnVuY3Rpb24obyxpKXtpZihyPT09cCl0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihyPT09aCl7aWYoInRocm93Ij09PW8pdGhyb3cgaTtyZXR1cm4gaigpfWZvcihuLm1ldGhvZD1vLG4uYXJnPWk7Oyl7dmFyIGE9bi5kZWxlZ2F0ZTtpZihhKXt2YXIgYz1TKGEsbik7aWYoYyl7aWYoYz09PXYpY29udGludWU7cmV0dXJuIGN9fWlmKCJuZXh0Ij09PW4ubWV0aG9kKW4uc2VudD1uLl9zZW50PW4uYXJnO2Vsc2UgaWYoInRocm93Ij09PW4ubWV0aG9kKXtpZihyPT09Zil0aHJvdyByPWgsbi5hcmc7bi5kaXNwYXRjaEV4Y2VwdGlvbihuLmFyZyl9ZWxzZSJyZXR1cm4iPT09bi5tZXRob2QmJm4uYWJydXB0KCJyZXR1cm4iLG4uYXJnKTtyPXA7dmFyIHU9cyh0LGUsbik7aWYoIm5vcm1hbCI9PT11LnR5cGUpe2lmKHI9bi5kb25lP2g6bCx1LmFyZz09PXYpY29udGludWU7cmV0dXJue3ZhbHVlOnUuYXJnLGRvbmU6bi5kb25lfX0idGhyb3ciPT09dS50eXBlJiYocj1oLG4ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9dS5hcmcpfX19KHQsbixpKSxvfWZ1bmN0aW9uIHModCxlLG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6dC5jYWxsKGUsbil9fWNhdGNoKHIpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOnJ9fX10LndyYXA9dTt2YXIgZj0ic3VzcGVuZGVkU3RhcnQiLGw9InN1c3BlbmRlZFlpZWxkIixwPSJleGVjdXRpbmciLGg9ImNvbXBsZXRlZCIsdj17fTtmdW5jdGlvbiBkKCl7fWZ1bmN0aW9uIGcoKXt9ZnVuY3Rpb24geSgpe312YXIgYj17fTtiW2ldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3ZhciBtPU9iamVjdC5nZXRQcm90b3R5cGVPZixrPW0mJm0obShJKFtdKSkpO2smJmshPT1uJiZyLmNhbGwoayxpKSYmKGI9ayk7dmFyIF89eS5wcm90b3R5cGU9ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShiKTtmdW5jdGlvbiB3KHQpe1sibmV4dCIsInRocm93IiwicmV0dXJuIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9fSkpfWZ1bmN0aW9uIHgodCl7dmFyIGU7dGhpcy5faW52b2tlPWZ1bmN0aW9uKG4sbyl7ZnVuY3Rpb24gaSgpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxpKXshZnVuY3Rpb24gZShuLG8saSxhKXt2YXIgYz1zKHRbbl0sdCxvKTtpZigidGhyb3ciIT09Yy50eXBlKXt2YXIgdT1jLmFyZyxmPXUudmFsdWU7cmV0dXJuIGYmJiJvYmplY3QiPT10eXBlb2YgZiYmci5jYWxsKGYsIl9fYXdhaXQiKT9Qcm9taXNlLnJlc29sdmUoZi5fX2F3YWl0KS50aGVuKChmdW5jdGlvbih0KXtlKCJuZXh0Iix0LGksYSl9KSwoZnVuY3Rpb24odCl7ZSgidGhyb3ciLHQsaSxhKX0pKTpQcm9taXNlLnJlc29sdmUoZikudGhlbigoZnVuY3Rpb24odCl7dS52YWx1ZT10LGkodSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGUoInRocm93Iix0LGksYSl9KSl9YShjLmFyZyl9KG4sbyxlLGkpfSkpfXJldHVybiBlPWU/ZS50aGVuKGksaSk6aSgpfX1mdW5jdGlvbiBTKHQsbil7dmFyIHI9dC5pdGVyYXRvcltuLm1ldGhvZF07aWYocj09PWUpe2lmKG4uZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09bi5tZXRob2Qpe2lmKHQuaXRlcmF0b3IucmV0dXJuJiYobi5tZXRob2Q9InJldHVybiIsbi5hcmc9ZSxTKHQsbiksInRocm93Ij09PW4ubWV0aG9kKSlyZXR1cm4gdjtuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2QiKX1yZXR1cm4gdn12YXIgbz1zKHIsdC5pdGVyYXRvcixuLmFyZyk7aWYoInRocm93Ij09PW8udHlwZSlyZXR1cm4gbi5tZXRob2Q9InRocm93IixuLmFyZz1vLmFyZyxuLmRlbGVnYXRlPW51bGwsdjt2YXIgaT1vLmFyZztyZXR1cm4gaT9pLmRvbmU/KG5bdC5yZXN1bHROYW1lXT1pLnZhbHVlLG4ubmV4dD10Lm5leHRMb2MsInJldHVybiIhPT1uLm1ldGhvZCYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz1lKSxuLmRlbGVnYXRlPW51bGwsdik6aToobi5tZXRob2Q9InRocm93IixuLmFyZz1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLG4uZGVsZWdhdGU9bnVsbCx2KX1mdW5jdGlvbiBFKHQpe3ZhciBlPXt0cnlMb2M6dFswXX07MSBpbiB0JiYoZS5jYXRjaExvYz10WzFdKSwyIGluIHQmJihlLmZpbmFsbHlMb2M9dFsyXSxlLmFmdGVyTG9jPXRbM10pLHRoaXMudHJ5RW50cmllcy5wdXNoKGUpfWZ1bmN0aW9uIE8odCl7dmFyIGU9dC5jb21wbGV0aW9ufHx7fTtlLnR5cGU9Im5vcm1hbCIsZGVsZXRlIGUuYXJnLHQuY29tcGxldGlvbj1lfWZ1bmN0aW9uIFQodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOiJyb290In1dLHQuZm9yRWFjaChFLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIEkodCl7aWYodCl7dmFyIG49dFtpXTtpZihuKXJldHVybiBuLmNhbGwodCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQubmV4dClyZXR1cm4gdDtpZighaXNOYU4odC5sZW5ndGgpKXt2YXIgbz0tMSxhPWZ1bmN0aW9uIG4oKXtmb3IoOysrbzx0Lmxlbmd0aDspaWYoci5jYWxsKHQsbykpcmV0dXJuIG4udmFsdWU9dFtvXSxuLmRvbmU9ITEsbjtyZXR1cm4gbi52YWx1ZT1lLG4uZG9uZT0hMCxufTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0Omp9fWZ1bmN0aW9uIGooKXtyZXR1cm57dmFsdWU6ZSxkb25lOiEwfX1yZXR1cm4gZy5wcm90b3R5cGU9Xy5jb25zdHJ1Y3Rvcj15LHkuY29uc3RydWN0b3I9Zyx5W2NdPWcuZGlzcGxheU5hbWU9IkdlbmVyYXRvckZ1bmN0aW9uIix0LmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I7cmV0dXJuISFlJiYoZT09PWd8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LHQubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHkpOih0Ll9fcHJvdG9fXz15LGMgaW4gdHx8KHRbY109IkdlbmVyYXRvckZ1bmN0aW9uIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoXyksdH0sdC5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sdyh4LnByb3RvdHlwZSkseC5wcm90b3R5cGVbYV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdC5Bc3luY0l0ZXJhdG9yPXgsdC5hc3luYz1mdW5jdGlvbihlLG4scixvKXt2YXIgaT1uZXcgeCh1KGUsbixyLG8pKTtyZXR1cm4gdC5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2k6aS5uZXh0KCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOmkubmV4dCgpfSkpfSx3KF8pLF9bY109IkdlbmVyYXRvciIsX1tpXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxfLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9LHQua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdCllLnB1c2gobik7cmV0dXJuIGUucmV2ZXJzZSgpLGZ1bmN0aW9uIG4oKXtmb3IoO2UubGVuZ3RoOyl7dmFyIHI9ZS5wb3AoKTtpZihyIGluIHQpcmV0dXJuIG4udmFsdWU9cixuLmRvbmU9ITEsbn1yZXR1cm4gbi5kb25lPSEwLG59fSx0LnZhbHVlcz1JLFQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpULHJlc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PWUsdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5hcmc9ZSx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChPKSwhdClmb3IodmFyIG4gaW4gdGhpcykidCI9PT1uLmNoYXJBdCgwKSYmci5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPWUpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXS5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24odCl7aWYodGhpcy5kb25lKXRocm93IHQ7dmFyIG49dGhpcztmdW5jdGlvbiBvKHIsbyl7cmV0dXJuIGMudHlwZT0idGhyb3ciLGMuYXJnPXQsbi5uZXh0PXIsbyYmKG4ubWV0aG9kPSJuZXh0IixuLmFyZz1lKSwhIW99Zm9yKHZhciBpPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGE9dGhpcy50cnlFbnRyaWVzW2ldLGM9YS5jb21wbGV0aW9uO2lmKCJyb290Ij09PWEudHJ5TG9jKXJldHVybiBvKCJlbmQiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgdT1yLmNhbGwoYSwiY2F0Y2hMb2MiKSxzPXIuY2FsbChhLCJmaW5hbGx5TG9jIik7aWYodSYmcyl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfWVsc2UgaWYodSl7aWYodGhpcy5wcmV2PGEuY2F0Y2hMb2MpcmV0dXJuIG8oYS5jYXRjaExvYywhMCl9ZWxzZXtpZighcyl0aHJvdyBuZXcgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gbyhhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgbz10aGlzLnRyeUVudHJpZXNbbl07aWYoby50cnlMb2M8PXRoaXMucHJldiYmci5jYWxsKG8sImZpbmFsbHlMb2MiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKCJicmVhayI9PT10fHwiY29udGludWUiPT09dCkmJmkudHJ5TG9jPD1lJiZlPD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9dCxhLmFyZz1lLGk/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLHYpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4iYnJlYWsiPT09dC50eXBlfHwiY29udGludWUiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzoicmV0dXJuIj09PXQudHlwZT8odGhpcy5ydmFsPXRoaXMuYXJnPXQuYXJnLHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT10LnR5cGUmJmUmJih0aGlzLm5leHQ9ZSksdn0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKG4uY29tcGxldGlvbixuLmFmdGVyTG9jKSxPKG4pLHZ9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgbj10aGlzLnRyeUVudHJpZXNbZV07aWYobi50cnlMb2M9PT10KXt2YXIgcj1uLmNvbXBsZXRpb247aWYoInRocm93Ij09PXIudHlwZSl7dmFyIG89ci5hcmc7TyhuKX1yZXR1cm4gb319dGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHQiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbih0LG4scil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOkkodCkscmVzdWx0TmFtZTpuLG5leHRMb2M6cn0sIm5leHQiPT09dGhpcy5tZXRob2QmJih0aGlzLmFyZz1lKSx2fX0sdH0odC5leHBvcnRzKTt0cnl7cmVnZW5lcmF0b3JSdW50aW1lPXJ9Y2F0Y2gobyl7RnVuY3Rpb24oInIiLCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByIikocil9fSwibS9MOCI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImc2di8iKSxvPW4oIkRQc3giKSxpPW4oImdscmsiKSxhPW4oIndFNnYiKSxjPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtlLmY9cj9jOmZ1bmN0aW9uKHQsZSxuKXtpZihpKHQpLGU9YShlLCEwKSxpKG4pLG8pdHJ5e3JldHVybiBjKHQsZSxuKX1jYXRjaChyKXt9aWYoImdldCJpbiBufHwic2V0ImluIG4pdGhyb3cgVHlwZUVycm9yKCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCIpO3JldHVybiJ2YWx1ZSJpbiBuJiYodFtlXT1uLnZhbHVlKSx0fX0sbTkybjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZ2xyayIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixvKXt0cnl7cmV0dXJuIG8/ZShyKG4pWzBdLG5bMV0pOmUobil9Y2F0Y2goYSl7dmFyIGk9dC5yZXR1cm47dGhyb3cgdm9pZCAwIT09aSYmcihpLmNhbGwodCkpLGF9fX0sbVJINjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgibGluayIpfSx7bGluazpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLCJhIiwiaHJlZiIsdCl9fSl9LG1SSXE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbigiSDBwYiIpLG4oIndMWW4iKSxuKCJzTUJPIiksbigidFc1eSIpLG4oInVMOFciKSxuKCJlb0w4IiksbigiSFJ4VSIpLG4oIjVEbVciKSxuKCJOQkFTIiksbigidGt0byIpLG4oImNEa2UiKSxuKCIzS2dWIiksbigicjVPZyIpLG4oInp1aFciKSxuKCI0aDBZIiksbigiNUQ1byIpLG4oInlRWW4iKSxuKCJ6S1plIiksbigiS3hsZCIpLG4oIkV4b0MiKSxuKCIwN2Q3IiksbigibWE5SSIpLG4oIkozMFgiKSxuKCJwakR2IiksbigiWGUzTCIpLG4oIm9WdVgiKSxuKCIrMm9QIiksbigicERRcSIpLG4oIlRvSnkiKSxuKCJRV0JsIiksbigiMkIxUiIpLG4oIlRlUUYiKSxuKCJSZnh6IiksbigicGlNYiIpLG4oIkU5WEQiKSxuKCI5TjI5IiksbigieVhWMyIpLG4oInVxWGMiKSxuKCJxSFQrIiksbigieXltZSIpLG4oImZiQ1ciKSxuKCJ4MEFHIiksbigiNG1EbSIpLG4oIjl0Yi8iKSxuKCIyQStkIiksbigiU1lvciIpLG4oIlBLUGsiKSxuKCI5Yko3IiksbigiaW5sQSIpLG4oIkpUSmciKSxuKCJPTTlaIiksbigiTEtCeCIpLG4oIkdLVlUiKSxuKCJFNU5NIiksbigiQk5NdCIpLG4oInpIRnUiKSxuKCJ4ODN3IiksbigibDJkSyIpLG4oIkdSUEYiKSxuKCJ4ZEJaIiksbigibVJINiIpLG4oInlXbzIiKSxuKCJJeFhSIiksbigiVEZQVCIpLG4oIlprOFgiKSxuKCJSbTFTIiksbigiVXhsQyIpLG4oImhCeVEiKSxuKCJFblp5IiksbigiNGw2MyIpLG4oInJOaGwiKSxuKCI3c2JEIiksbigiNmhwbiIpLG4oImZ0S2ciKSxuKCJLdjlsIiksbigiVHNrcSIpLG4oIkVORjkiKSxuKCJZR0s0IiksbigiRlp0UCIpLG4oIjNiQloiKSxuKCI1cytuIiksbigiREVmdSIpLG4oImxzODIiKX0sbWE5STpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oIjZMV0EiKSxhPW4oImhoMXYiKSxjPW4oImV3dlciKSx1PW4oIlVNU1EiKSxzPW4oImhCak4iKSxmPW4oIlpmRHYiKSxsPW4oIkhkNWYiKSxwPW4oInRpS3AiKSgiaXNDb25jYXRTcHJlYWRhYmxlIiksaD0hbygoZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdFtwXT0hMSx0LmNvbmNhdCgpWzBdIT09dH0pKSx2PWwoImNvbmNhdCIpLGQ9ZnVuY3Rpb24odCl7aWYoIWEodCkpcmV0dXJuITE7dmFyIGU9dFtwXTtyZXR1cm4gdm9pZCAwIT09ZT8hIWU6aSh0KX07cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFofHwhdn0se2NvbmNhdDpmdW5jdGlvbih0KXt2YXIgZSxuLHIsbyxpLGE9Yyh0aGlzKSxsPWYoYSwwKSxwPTA7Zm9yKGU9LTEscj1hcmd1bWVudHMubGVuZ3RoO2U8cjtlKyspaWYoZChpPS0xPT09ZT9hOmFyZ3VtZW50c1tlXSkpe2lmKHArKG89dShpLmxlbmd0aCkpPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgVHlwZUVycm9yKCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtmb3Iobj0wO248bztuKysscCsrKW4gaW4gaSYmcyhsLHAsaVtuXSl9ZWxzZXtpZihwPj05MDA3MTk5MjU0NzQwOTkxKXRocm93IFR5cGVFcnJvcigiTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkIik7cyhsLHArKyxpKX1yZXR1cm4gbC5sZW5ndGg9cCxsfX0pfSxtclNHOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpLG4uZChlLCJfX2V4dGVuZHMiLChmdW5jdGlvbigpe3JldHVybiBvfSkpLG4uZChlLCJfX2Fzc2lnbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSksbi5kKGUsIl9fcmVzdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSksbi5kKGUsIl9fZGVjb3JhdGUiLChmdW5jdGlvbigpe3JldHVybiBjfSkpLG4uZChlLCJfX3BhcmFtIiwoZnVuY3Rpb24oKXtyZXR1cm4gdX0pKSxuLmQoZSwiX19tZXRhZGF0YSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSksbi5kKGUsIl9fYXdhaXRlciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSksbi5kKGUsIl9fZ2VuZXJhdG9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gbH0pKSxuLmQoZSwiX19leHBvcnRTdGFyIiwoZnVuY3Rpb24oKXtyZXR1cm4gcH0pKSxuLmQoZSwiX192YWx1ZXMiLChmdW5jdGlvbigpe3JldHVybiBofSkpLG4uZChlLCJfX3JlYWQiLChmdW5jdGlvbigpe3JldHVybiB2fSkpLG4uZChlLCJfX3NwcmVhZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSksbi5kKGUsIl9fc3ByZWFkQXJyYXlzIiwoZnVuY3Rpb24oKXtyZXR1cm4gZ30pKSxuLmQoZSwiX19hd2FpdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHl9KSksbi5kKGUsIl9fYXN5bmNHZW5lcmF0b3IiLChmdW5jdGlvbigpe3JldHVybiBifSkpLG4uZChlLCJfX2FzeW5jRGVsZWdhdG9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gbX0pKSxuLmQoZSwiX19hc3luY1ZhbHVlcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGt9KSksbi5kKGUsIl9fbWFrZVRlbXBsYXRlT2JqZWN0IiwoZnVuY3Rpb24oKXtyZXR1cm4gX30pKSxuLmQoZSwiX19pbXBvcnRTdGFyIiwoZnVuY3Rpb24oKXtyZXR1cm4gd30pKSxuLmQoZSwiX19pbXBvcnREZWZhdWx0IiwoZnVuY3Rpb24oKXtyZXR1cm4geH0pKTt2YXIgcj1mdW5jdGlvbih0LGUpe3JldHVybihyPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pfSkodCxlKX07ZnVuY3Rpb24gbyh0LGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9cih0LGUpLHQucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX12YXIgaT1mdW5jdGlvbigpe3JldHVybihpPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPTEscj1hcmd1bWVudHMubGVuZ3RoO248cjtuKyspZm9yKHZhciBvIGluIGU9YXJndW1lbnRzW25dKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG8pJiYodFtvXT1lW29dKTtyZXR1cm4gdH0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gYSh0LGUpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiZlLmluZGV4T2Yocik8MCYmKG5bcl09dFtyXSk7aWYobnVsbCE9dCYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtvPHIubGVuZ3RoO28rKyllLmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHQscltvXSkmJihuW3Jbb11dPXRbcltvXV0pfXJldHVybiBufWZ1bmN0aW9uIGModCxlLG4scil7dmFyIG8saT1hcmd1bWVudHMubGVuZ3RoLGE9aTwzP2U6bnVsbD09PXI/cj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbik6cjtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKWE9UmVmbGVjdC5kZWNvcmF0ZSh0LGUsbixyKTtlbHNlIGZvcih2YXIgYz10Lmxlbmd0aC0xO2M+PTA7Yy0tKShvPXRbY10pJiYoYT0oaTwzP28oYSk6aT4zP28oZSxuLGEpOm8oZSxuKSl8fGEpO3JldHVybiBpPjMmJmEmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sYSksYX1mdW5jdGlvbiB1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4scil7ZShuLHIsdCl9fWZ1bmN0aW9uIHModCxlKXtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhKXJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKHQsZSl9ZnVuY3Rpb24gZih0LGUsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24obyxpKXtmdW5jdGlvbiBhKHQpe3RyeXt1KHIubmV4dCh0KSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gYyh0KXt0cnl7dShyLnRocm93KHQpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiB1KHQpe3QuZG9uZT9vKHQudmFsdWUpOm5ldyBuKChmdW5jdGlvbihlKXtlKHQudmFsdWUpfSkpLnRoZW4oYSxjKX11KChyPXIuYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KSl9ZnVuY3Rpb24gbCh0LGUpe3ZhciBuLHIsbyxpLGE9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb1swXSl0aHJvdyBvWzFdO3JldHVybiBvWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGk9e25leHQ6YygwKSx0aHJvdzpjKDEpLHJldHVybjpjKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoaVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxpO2Z1bmN0aW9uIGMoaSl7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBmdW5jdGlvbihpKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2E7KXRyeXtpZihuPTEsciYmKG89MiZpWzBdP3IucmV0dXJuOmlbMF0/ci50aHJvd3x8KChvPXIucmV0dXJuKSYmby5jYWxsKHIpLDApOnIubmV4dCkmJiEobz1vLmNhbGwocixpWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gocj0wLG8mJihpPVsyJmlbMF0sby52YWx1ZV0pLGlbMF0pe2Nhc2UgMDpjYXNlIDE6bz1pO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTppWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKysscj1pWzFdLGk9WzBdO2NvbnRpbnVlO2Nhc2UgNzppPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEobz0obz1hLnRyeXMpLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdKSYmKDY9PT1pWzBdfHwyPT09aVswXSkpe2E9MDtjb250aW51ZX1pZigzPT09aVswXSYmKCFvfHxpWzFdPm9bMF0mJmlbMV08b1szXSkpe2EubGFiZWw9aVsxXTticmVha31pZig2PT09aVswXSYmYS5sYWJlbDxvWzFdKXthLmxhYmVsPW9bMV0sbz1pO2JyZWFrfWlmKG8mJmEubGFiZWw8b1syXSl7YS5sYWJlbD1vWzJdLGEub3BzLnB1c2goaSk7YnJlYWt9b1syXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfWk9ZS5jYWxsKHQsYSl9Y2F0Y2goYyl7aT1bNixjXSxyPTB9ZmluYWxseXtuPW89MH1pZig1JmlbMF0pdGhyb3cgaVsxXTtyZXR1cm57dmFsdWU6aVswXT9pWzFdOnZvaWQgMCxkb25lOiEwfX0oW2ksY10pfX19ZnVuY3Rpb24gcCh0LGUpe2Zvcih2YXIgbiBpbiB0KWUuaGFzT3duUHJvcGVydHkobil8fChlW25dPXRbbl0pfWZ1bmN0aW9uIGgodCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdLG49MDtyZXR1cm4gZT9lLmNhbGwodCk6e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmbj49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbbisrXSxkb25lOiF0fX19fWZ1bmN0aW9uIHYodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIHQ7dmFyIHIsbyxpPW4uY2FsbCh0KSxhPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1lfHxlLS0gPjApJiYhKHI9aS5uZXh0KCkpLmRvbmU7KWEucHVzaChyLnZhbHVlKX1jYXRjaChjKXtvPXtlcnJvcjpjfX1maW5hbGx5e3RyeXtyJiYhci5kb25lJiYobj1pLnJldHVybikmJm4uY2FsbChpKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIGF9ZnVuY3Rpb24gZCgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0PXQuY29uY2F0KHYoYXJndW1lbnRzW2VdKSk7cmV0dXJuIHR9ZnVuY3Rpb24gZygpe2Zvcih2YXIgdD0wLGU9MCxuPWFyZ3VtZW50cy5sZW5ndGg7ZTxuO2UrKyl0Kz1hcmd1bWVudHNbZV0ubGVuZ3RoO3ZhciByPUFycmF5KHQpLG89MDtmb3IoZT0wO2U8bjtlKyspZm9yKHZhciBpPWFyZ3VtZW50c1tlXSxhPTAsYz1pLmxlbmd0aDthPGM7YSsrLG8rKylyW29dPWlbYV07cmV0dXJuIHJ9ZnVuY3Rpb24geSh0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHk/KHRoaXMudj10LHRoaXMpOm5ldyB5KHQpfWZ1bmN0aW9uIGIodCxlLG4pe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgcixvPW4uYXBwbHkodCxlfHxbXSksaT1bXTtyZXR1cm4gcj17fSxhKCJuZXh0IiksYSgidGhyb3ciKSxhKCJyZXR1cm4iKSxyW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxyO2Z1bmN0aW9uIGEodCl7b1t0XSYmKHJbdF09ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLHIpe2kucHVzaChbdCxlLG4scl0pPjF8fGModCxlKX0pKX0pfWZ1bmN0aW9uIGModCxlKXt0cnl7KG49b1t0XShlKSkudmFsdWUgaW5zdGFuY2VvZiB5P1Byb21pc2UucmVzb2x2ZShuLnZhbHVlLnYpLnRoZW4odSxzKTpmKGlbMF1bMl0sbil9Y2F0Y2gocil7ZihpWzBdWzNdLHIpfXZhciBufWZ1bmN0aW9uIHUodCl7YygibmV4dCIsdCl9ZnVuY3Rpb24gcyh0KXtjKCJ0aHJvdyIsdCl9ZnVuY3Rpb24gZih0LGUpe3QoZSksaS5zaGlmdCgpLGkubGVuZ3RoJiZjKGlbMF1bMF0saVswXVsxXSl9fWZ1bmN0aW9uIG0odCl7dmFyIGUsbjtyZXR1cm4gZT17fSxyKCJuZXh0IikscigidGhyb3ciLChmdW5jdGlvbih0KXt0aHJvdyB0fSkpLHIoInJldHVybiIpLGVbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlO2Z1bmN0aW9uIHIocixvKXtlW3JdPXRbcl0/ZnVuY3Rpb24oZSl7cmV0dXJuKG49IW4pP3t2YWx1ZTp5KHRbcl0oZSkpLGRvbmU6InJldHVybiI9PT1yfTpvP28oZSk6ZX06b319ZnVuY3Rpb24gayh0KXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIGUsbj10W1N5bWJvbC5hc3luY0l0ZXJhdG9yXTtyZXR1cm4gbj9uLmNhbGwodCk6KHQ9aCh0KSxlPXt9LHIoIm5leHQiKSxyKCJ0aHJvdyIpLHIoInJldHVybiIpLGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUpO2Z1bmN0aW9uIHIobil7ZVtuXT10W25dJiZmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7IWZ1bmN0aW9uKHQsZSxuLHIpe1Byb21pc2UucmVzb2x2ZShyKS50aGVuKChmdW5jdGlvbihlKXt0KHt2YWx1ZTplLGRvbmU6bn0pfSksZSl9KHIsbywoZT10W25dKGUpKS5kb25lLGUudmFsdWUpfSkpfX19ZnVuY3Rpb24gXyh0LGUpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHk/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInJhdyIse3ZhbHVlOmV9KTp0LnJhdz1lLHR9ZnVuY3Rpb24gdyh0KXtpZih0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIGU9e307aWYobnVsbCE9dClmb3IodmFyIG4gaW4gdClPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKTtyZXR1cm4gZS5kZWZhdWx0PXQsZX1mdW5jdGlvbiB4KHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX19LCJuL21VIjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89TWF0aC5hdGFuaCxpPU1hdGgubG9nO3Ioe3RhcmdldDoiTWF0aCIsc3RhdDohMCxmb3JjZWQ6IShvJiYxL28oLTApPDApfSx7YXRhbmg6ZnVuY3Rpb24odCl7cmV0dXJuIDA9PSh0PSt0KT90OmkoKDErdCkvKDEtdCkpLzJ9fSl9LG5vR286ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIlZwSVQiKTt0LmV4cG9ydHM9cigibmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZyIsRnVuY3Rpb24udG9TdHJpbmcpfSxudE9VOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigicnBOayIpLkl0ZXJhdG9yUHJvdG90eXBlLG89bigiZkhNWSIpLGk9bigiWEd3QyIpLGE9bigiMUU1eiIpLGM9bigiUDR5MSIpLHU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcz1lKyIgSXRlcmF0b3IiO3JldHVybiB0LnByb3RvdHlwZT1vKHIse25leHQ6aSgxLG4pfSksYSh0LHMsITEsITApLGNbc109dSx0fX0sb1Z1WDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIlJLM3QiKSxpPW4oIi9HcVUiKSxhPW4oInN3RkwiKSxjPVtdLmpvaW4sdT1vIT1PYmplY3Qscz1hKCJqb2luIiwiLCIpO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDp1fHxzfSx7am9pbjpmdW5jdGlvbih0KXtyZXR1cm4gYy5jYWxsKGkodGhpcyksdm9pZCAwPT09dD8iLCI6dCl9fSl9LHBEUXE6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJJOHZoIiksaT1uKCJwcEdCIiksYT1uKCJVTVNRIiksYz1uKCJld3ZXIiksdT1uKCJaZkR2Iikscz1uKCJoQmpOIiksZj1uKCJIZDVmIiksbD1NYXRoLm1heCxwPU1hdGgubWluO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDohZigic3BsaWNlIil9LHtzcGxpY2U6ZnVuY3Rpb24odCxlKXt2YXIgbixyLGYsaCx2LGQsZz1jKHRoaXMpLHk9YShnLmxlbmd0aCksYj1vKHQseSksbT1hcmd1bWVudHMubGVuZ3RoO2lmKDA9PT1tP249cj0wOjE9PT1tPyhuPTAscj15LWIpOihuPW0tMixyPXAobChpKGUpLDApLHktYikpLHkrbi1yPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgVHlwZUVycm9yKCJNYXhpbXVtIGFsbG93ZWQgbGVuZ3Q=" }, { "key": "qwe?styles.css?5?5", "type": "binary", "value": "base64:aCBleGNlZWRlZCIpO2ZvcihmPXUoZyxyKSxoPTA7aDxyO2grKykodj1iK2gpaW4gZyYmcyhmLGgsZ1t2XSk7aWYoZi5sZW5ndGg9cixuPHIpe2ZvcihoPWI7aDx5LXI7aCsrKWQ9aCtuLCh2PWgrcilpbiBnP2dbZF09Z1t2XTpkZWxldGUgZ1tkXTtmb3IoaD15O2g+eS1yK247aC0tKWRlbGV0ZSBnW2gtMV19ZWxzZSBpZihuPnIpZm9yKGg9eS1yO2g+YjtoLS0pZD1oK24tMSwodj1oK3ItMSlpbiBnP2dbZF09Z1t2XTpkZWxldGUgZ1tkXTtmb3IoaD0wO2g8bjtoKyspZ1toK2JdPWFyZ3VtZW50c1toKzJdO3JldHVybiBnLmxlbmd0aD15LXIrbixmfX0pfSxwTk1POmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMm9SbyIpLGk9bigieERCUiIpLGE9bigiZzZ2LyIpLGM9bigiU1RBRSIpLHU9bigiMERreSIpLHM9bigiVVRWUyIpLGY9bigiNkxXQSIpLGw9bigiaGgxdiIpLHA9bigiZ2xyayIpLGg9bigiZXd2VyIpLHY9bigiL0dxVSIpLGQ9bigid0U2diIpLGc9bigiWEd3QyIpLHk9bigiZkhNWSIpLGI9bigiMzNXaCIpLG09bigiSkJ5OCIpLGs9bigiQlgvYiIpLF89bigiZEJnKyIpLHc9bigiQnM4ViIpLHg9bigibS9MOCIpLFM9bigiMGVlZiIpLEU9bigiWDJVKyIpLE89bigiYnVzRSIpLFQ9bigiVnBJVCIpLEk9bigiOTNJMCIpLGo9bigiMEJLMiIpLE09bigia09PbCIpLFA9bigidGlLcCIpLEQ9bigid0RMbyIpLFI9bigiZEcvbiIpLE49bigiMUU1eiIpLEE9bigiYWZPOCIpLEw9bigidHljUiIpLmZvckVhY2gsRj1JKCJoaWRkZW4iKSx6PVAoInRvUHJpbWl0aXZlIiksWj1BLnNldCxDPUEuZ2V0dGVyRm9yKCJTeW1ib2wiKSxXPU9iamVjdC5wcm90b3R5cGUsRz1vLlN5bWJvbCxVPW8uSlNPTixIPVUmJlUuc3RyaW5naWZ5LEI9dy5mLEs9eC5mLFY9ay5mLFg9Uy5mLFk9VCgic3ltYm9scyIpLHE9VCgib3Atc3ltYm9scyIpLFE9VCgic3RyaW5nLXRvLXN5bWJvbC1yZWdpc3RyeSIpLEo9VCgic3ltYm9sLXRvLXN0cmluZy1yZWdpc3RyeSIpLCQ9VCgid2tzIiksdHQ9by5RT2JqZWN0LGV0PSF0dHx8IXR0LnByb3RvdHlwZXx8IXR0LnByb3RvdHlwZS5maW5kQ2hpbGQsbnQ9YSYmdSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9eShLKHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEsodGhpcywiYSIse3ZhbHVlOjd9KS5hfX0pKS5hfSkpP2Z1bmN0aW9uKHQsZSxuKXt2YXIgcj1CKFcsZSk7ciYmZGVsZXRlIFdbZV0sSyh0LGUsbiksciYmdCE9PVcmJksoVyxlLHIpfTpLLHJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49WVt0XT15KEcucHJvdG90eXBlKTtyZXR1cm4gWihuLHt0eXBlOiJTeW1ib2wiLHRhZzp0LGRlc2NyaXB0aW9uOmV9KSxhfHwobi5kZXNjcmlwdGlvbj1lKSxufSxvdD1jJiYic3ltYm9sIj09dHlwZW9mIEcuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KHQpaW5zdGFuY2VvZiBHfSxpdD1mdW5jdGlvbih0LGUsbil7dD09PVcmJml0KHEsZSxuKSxwKHQpO3ZhciByPWQoZSwhMCk7cmV0dXJuIHAobikscyhZLHIpPyhuLmVudW1lcmFibGU/KHModCxGKSYmdFtGXVtyXSYmKHRbRl1bcl09ITEpLG49eShuLHtlbnVtZXJhYmxlOmcoMCwhMSl9KSk6KHModCxGKXx8Syh0LEYsZygxLHt9KSksdFtGXVtyXT0hMCksbnQodCxyLG4pKTpLKHQscixuKX0sYXQ9ZnVuY3Rpb24odCxlKXtwKHQpO3ZhciBuPXYoZSkscj1iKG4pLmNvbmNhdChmdChuKSk7cmV0dXJuIEwociwoZnVuY3Rpb24oZSl7YSYmIWN0LmNhbGwobixlKXx8aXQodCxlLG5bZV0pfSkpLHR9LGN0PWZ1bmN0aW9uKHQpe3ZhciBlPWQodCwhMCksbj1YLmNhbGwodGhpcyxlKTtyZXR1cm4hKHRoaXM9PT1XJiZzKFksZSkmJiFzKHEsZSkpJiYoIShufHwhcyh0aGlzLGUpfHwhcyhZLGUpfHxzKHRoaXMsRikmJnRoaXNbRl1bZV0pfHxuKX0sdXQ9ZnVuY3Rpb24odCxlKXt2YXIgbj12KHQpLHI9ZChlLCEwKTtpZihuIT09V3x8IXMoWSxyKXx8cyhxLHIpKXt2YXIgbz1CKG4scik7cmV0dXJuIW98fCFzKFkscil8fHMobixGKSYmbltGXVtyXXx8KG8uZW51bWVyYWJsZT0hMCksb319LHN0PWZ1bmN0aW9uKHQpe3ZhciBlPVYodih0KSksbj1bXTtyZXR1cm4gTChlLChmdW5jdGlvbih0KXtzKFksdCl8fHMoaix0KXx8bi5wdXNoKHQpfSkpLG59LGZ0PWZ1bmN0aW9uKHQpe3ZhciBlPXQ9PT1XLG49VihlP3E6dih0KSkscj1bXTtyZXR1cm4gTChuLChmdW5jdGlvbih0KXshcyhZLHQpfHxlJiYhcyhXLHQpfHxyLnB1c2goWVt0XSl9KSkscn07Y3x8KE8oKEc9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgRyl0aHJvdyBUeXBlRXJyb3IoIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciIpO3ZhciB0PWFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9TdHJpbmcoYXJndW1lbnRzWzBdKTp2b2lkIDAsZT1NKHQpLG49ZnVuY3Rpb24odCl7dGhpcz09PVcmJm4uY2FsbChxLHQpLHModGhpcyxGKSYmcyh0aGlzW0ZdLGUpJiYodGhpc1tGXVtlXT0hMSksbnQodGhpcyxlLGcoMSx0KSl9O3JldHVybiBhJiZldCYmbnQoVyxlLHtjb25maWd1cmFibGU6ITAsc2V0Om59KSxydChlLHQpfSkucHJvdG90eXBlLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIEModGhpcykudGFnfSkpLFMuZj1jdCx4LmY9aXQsdy5mPXV0LG0uZj1rLmY9c3QsXy5mPWZ0LGEmJihLKEcucHJvdG90eXBlLCJkZXNjcmlwdGlvbiIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQyh0aGlzKS5kZXNjcmlwdGlvbn19KSxpfHxPKFcsInByb3BlcnR5SXNFbnVtZXJhYmxlIixjdCx7dW5zYWZlOiEwfSkpLEQuZj1mdW5jdGlvbih0KXtyZXR1cm4gcnQoUCh0KSx0KX0pLHIoe2dsb2JhbDohMCx3cmFwOiEwLGZvcmNlZDohYyxzaGFtOiFjfSx7U3ltYm9sOkd9KSxMKGIoJCksKGZ1bmN0aW9uKHQpe1IodCl9KSkscih7dGFyZ2V0OiJTeW1ib2wiLHN0YXQ6ITAsZm9yY2VkOiFjfSx7Zm9yOmZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyh0KTtpZihzKFEsZSkpcmV0dXJuIFFbZV07dmFyIG49RyhlKTtyZXR1cm4gUVtlXT1uLEpbbl09ZSxufSxrZXlGb3I6ZnVuY3Rpb24odCl7aWYoIW90KHQpKXRocm93IFR5cGVFcnJvcih0KyIgaXMgbm90IGEgc3ltYm9sIik7aWYocyhKLHQpKXJldHVybiBKW3RdfSx1c2VTZXR0ZXI6ZnVuY3Rpb24oKXtldD0hMH0sdXNlU2ltcGxlOmZ1bmN0aW9uKCl7ZXQ9ITF9fSkscih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFjLHNoYW06IWF9LHtjcmVhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZT95KHQpOmF0KHkodCksZSl9LGRlZmluZVByb3BlcnR5Oml0LGRlZmluZVByb3BlcnRpZXM6YXQsZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOnV0fSkscih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFjfSx7Z2V0T3duUHJvcGVydHlOYW1lczpzdCxnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ZnR9KSxyKHt0YXJnZXQ6Ik9iamVjdCIsc3RhdDohMCxmb3JjZWQ6dSgoZnVuY3Rpb24oKXtfLmYoMSl9KSl9LHtnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ZnVuY3Rpb24odCl7cmV0dXJuIF8uZihoKHQpKX19KSxVJiZyKHt0YXJnZXQ6IkpTT04iLHN0YXQ6ITAsZm9yY2VkOiFjfHx1KChmdW5jdGlvbigpe3ZhciB0PUcoKTtyZXR1cm4iW251bGxdIiE9SChbdF0pfHwie30iIT1IKHthOnR9KXx8Int9IiE9SChPYmplY3QodCkpfSkpfSx7c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuLHI9W3RdLG89MTthcmd1bWVudHMubGVuZ3RoPm87KXIucHVzaChhcmd1bWVudHNbbysrXSk7aWYobj1lPXJbMV0sKGwoZSl8fHZvaWQgMCE9PXQpJiYhb3QodCkpcmV0dXJuIGYoZSl8fChlPWZ1bmN0aW9uKHQsZSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4mJihlPW4uY2FsbCh0aGlzLHQsZSkpLCFvdChlKSlyZXR1cm4gZX0pLHJbMV09ZSxILmFwcGx5KFUscil9fSksRy5wcm90b3R5cGVbel18fEUoRy5wcm90b3R5cGUseixHLnByb3RvdHlwZS52YWx1ZU9mKSxOKEcsIlN5bWJvbCIpLGpbRl09ITB9LHBpTWI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJ0eWNSIikuZXZlcnk7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOm4oInN3RkwiKSgiZXZlcnkiKX0se2V2ZXJ5OmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSl9LHBqRHY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIlRmVGkiKTtyKHt0YXJnZXQ6IkFycmF5IixzdGF0OiEwLGZvcmNlZDohbigiSEg0byIpKChmdW5jdGlvbih0KXtBcnJheS5mcm9tKHQpfSkpfSx7ZnJvbTpvfSl9LHBwR0I6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLmNlaWwscj1NYXRoLmZsb29yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaXNOYU4odD0rdCk/MDoodD4wP3I6bikodCl9fSwicUhUKyI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIkZGNmwiKSxpPW4oIlJOSXMiKTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMH0se2NvcHlXaXRoaW46b30pLGkoImNvcHlXaXRoaW4iKX0scWVQVjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oImc2di8iKSxvPW4oIjJvUm8iKSxpPW4oImxNcTUiKSxhPW4oImJ1c0UiKSxjPW4oIlVUVlMiKSx1PW4oInhyWUsiKSxzPW4oImNWWUgiKSxmPW4oIndFNnYiKSxsPW4oIjBEa3kiKSxwPW4oImZITVkiKSxoPW4oIkpCeTgiKS5mLHY9bigiQnM4ViIpLmYsZD1uKCJtL0w4IikuZixnPW4oIldLaUgiKS50cmltLHk9by5OdW1iZXIsYj15LnByb3RvdHlwZSxtPSJOdW1iZXIiPT11KHAoYikpLGs9ZnVuY3Rpb24odCl7dmFyIGUsbixyLG8saSxhLGMsdSxzPWYodCwhMSk7aWYoInN0cmluZyI9PXR5cGVvZiBzJiZzLmxlbmd0aD4yKWlmKDQzPT09KGU9KHM9ZyhzKSkuY2hhckNvZGVBdCgwKSl8fDQ1PT09ZSl7aWYoODg9PT0obj1zLmNoYXJDb2RlQXQoMikpfHwxMjA9PT1uKXJldHVybiBOYU59ZWxzZSBpZig0OD09PWUpe3N3aXRjaChzLmNoYXJDb2RlQXQoMSkpe2Nhc2UgNjY6Y2FzZSA5ODpyPTIsbz00OTticmVhaztjYXNlIDc5OmNhc2UgMTExOnI9OCxvPTU1O2JyZWFrO2RlZmF1bHQ6cmV0dXJuK3N9Zm9yKGE9KGk9cy5zbGljZSgyKSkubGVuZ3RoLGM9MDtjPGE7YysrKWlmKCh1PWkuY2hhckNvZGVBdChjKSk8NDh8fHU+bylyZXR1cm4gTmFOO3JldHVybiBwYXJzZUludChpLHIpfXJldHVybitzfTtpZihpKCJOdW1iZXIiLCF5KCIgMG8xIil8fCF5KCIwYjEiKXx8eSgiKzB4MSIpKSl7Zm9yKHZhciBfLHc9ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDwxPzA6dCxuPXRoaXM7cmV0dXJuIG4gaW5zdGFuY2VvZiB3JiYobT9sKChmdW5jdGlvbigpe2IudmFsdWVPZi5jYWxsKG4pfSkpOiJOdW1iZXIiIT11KG4pKT9zKG5ldyB5KGsoZSkpLG4sdyk6ayhlKX0seD1yP2goeSk6Ik1BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLEVQU0lMT04saXNGaW5pdGUsaXNJbnRlZ2VyLGlzTmFOLGlzU2FmZUludGVnZXIsTUFYX1NBRkVfSU5URUdFUixNSU5fU0FGRV9JTlRFR0VSLHBhcnNlRmxvYXQscGFyc2VJbnQsaXNJbnRlZ2VyIi5zcGxpdCgiLCIpLFM9MDt4Lmxlbmd0aD5TO1MrKyljKHksXz14W1NdKSYmIWModyxfKSYmZCh3LF8sdih5LF8pKTt3LnByb3RvdHlwZT1iLGIuY29uc3RydWN0b3I9dyxhKG8sIk51bWJlciIsdyl9fSxxeFBaOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJ0aUtwIikoIm1hdGNoIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPS8uLzt0cnl7Ii8uLyJbdF0oZSl9Y2F0Y2gobil7dHJ5e3JldHVybiBlW3JdPSExLCIvLi8iW3RdKGUpfWNhdGNoKG8pe319cmV0dXJuITF9fSwici9WcSI6ZnVuY3Rpb24odCxlLG4pe24oIkkrZWIiKSh7dGFyZ2V0OiJOdW1iZXIiLHN0YXQ6ITB9LHtNQVhfU0FGRV9JTlRFR0VSOjkwMDcxOTkyNTQ3NDA5OTF9KX0scjVPZzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiaGgxdiIpLGk9bigiOFlPYSIpLm9uRnJlZXplLGE9bigidXk4MyIpLGM9bigiMERreSIpLHU9T2JqZWN0LnNlYWw7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOmMoKGZ1bmN0aW9uKCl7dSgxKX0pKSxzaGFtOiFhfSx7c2VhbDpmdW5jdGlvbih0KXtyZXR1cm4gdSYmbyh0KT91KGkodCkpOnR9fSl9LHJCOWo6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJrbU1WIik7cih7dGFyZ2V0OiJSZWdFeHAiLHByb3RvOiEwLGZvcmNlZDovLi8uZXhlYyE9PW99LHtleGVjOm99KX0sckt6YjpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjRzeXciKSxvPW4oIjhZT2EiKS5nZXRXZWFrRGF0YSxpPW4oImdscmsiKSxhPW4oImhoMXYiKSxjPW4oIkdhclUiKSx1PW4oIkltWk4iKSxzPW4oInR5Y1IiKSxmPW4oIlVUVlMiKSxsPW4oImFmTzgiKSxwPWwuc2V0LGg9bC5nZXR0ZXJGb3Isdj1zLmZpbmQsZD1zLmZpbmRJbmRleCxnPTAseT1mdW5jdGlvbih0KXtyZXR1cm4gdC5mcm96ZW58fCh0LmZyb3plbj1uZXcgYil9LGI9ZnVuY3Rpb24oKXt0aGlzLmVudHJpZXM9W119LG09ZnVuY3Rpb24odCxlKXtyZXR1cm4gdih0LmVudHJpZXMsKGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdPT09ZX0pKX07Yi5wcm90b3R5cGU9e2dldDpmdW5jdGlvbih0KXt2YXIgZT1tKHRoaXMsdCk7aWYoZSlyZXR1cm4gZVsxXX0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiEhbSh0aGlzLHQpfSxzZXQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1tKHRoaXMsdCk7bj9uWzFdPWU6dGhpcy5lbnRyaWVzLnB1c2goW3QsZV0pfSxkZWxldGU6ZnVuY3Rpb24odCl7dmFyIGU9ZCh0aGlzLmVudHJpZXMsKGZ1bmN0aW9uKGUpe3JldHVybiBlWzBdPT09dH0pKTtyZXR1cm5+ZSYmdGhpcy5lbnRyaWVzLnNwbGljZShlLDEpLCEhfmV9fSx0LmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsZSxuLHMpe3ZhciBsPXQoKGZ1bmN0aW9uKHQscil7Yyh0LGwsZSkscCh0LHt0eXBlOmUsaWQ6ZysrLGZyb3plbjp2b2lkIDB9KSxudWxsIT1yJiZ1KHIsdFtzXSx0LG4pfSkpLHY9aChlKSxkPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj12KHQpLGE9byhpKGUpLCEwKTtyZXR1cm4hMD09PWE/eShyKS5zZXQoZSxuKTphW3IuaWRdPW4sdH07cmV0dXJuIHIobC5wcm90b3R5cGUse2RlbGV0ZTpmdW5jdGlvbih0KXt2YXIgZT12KHRoaXMpO2lmKCFhKHQpKXJldHVybiExO3ZhciBuPW8odCk7cmV0dXJuITA9PT1uP3koZSkuZGVsZXRlKHQpOm4mJmYobixlLmlkKSYmZGVsZXRlIG5bZS5pZF19LGhhczpmdW5jdGlvbih0KXt2YXIgZT12KHRoaXMpO2lmKCFhKHQpKXJldHVybiExO3ZhciBuPW8odCk7cmV0dXJuITA9PT1uP3koZSkuaGFzKHQpOm4mJmYobixlLmlkKX19KSxyKGwucHJvdG90eXBlLG4/e2dldDpmdW5jdGlvbih0KXt2YXIgZT12KHRoaXMpO2lmKGEodCkpe3ZhciBuPW8odCk7cmV0dXJuITA9PT1uP3koZSkuZ2V0KHQpOm4/bltlLmlkXTp2b2lkIDB9fSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZCh0aGlzLHQsZSl9fTp7YWRkOmZ1bmN0aW9uKHQpe3JldHVybiBkKHRoaXMsdCwhMCl9fSksbH19fSxyTXo3OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJaT1hiIik7cih7dGFyZ2V0OiJEYXRlIixwcm90bzohMCxmb3JjZWQ6RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmchPT1vfSx7dG9JU09TdHJpbmc6b30pfSxyTmhsOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJiK1ZUIik7cih7Z2xvYmFsOiEwLGZvcmNlZDpwYXJzZUZsb2F0IT1vfSx7cGFyc2VGbG9hdDpvfSl9LHJXMHQ6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJnbHJrIik7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQ9cih0aGlzKSxlPSIiO3JldHVybiB0Lmdsb2JhbCYmKGUrPSJnIiksdC5pZ25vcmVDYXNlJiYoZSs9ImkiKSx0Lm11bHRpbGluZSYmKGUrPSJtIiksdC5kb3RBbGwmJihlKz0icyIpLHQudW5pY29kZSYmKGUrPSJ1IiksdC5zdGlja3kmJihlKz0ieSIpLGV9fSxycE5rOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHIsbyxpLGE9bigiNFdPRCIpLGM9bigiWDJVKyIpLHU9bigiVVRWUyIpLHM9bigidGlLcCIpLGY9bigieERCUiIpLGw9cygiaXRlcmF0b3IiKSxwPSExO1tdLmtleXMmJigibmV4dCJpbihpPVtdLmtleXMoKSk/KG89YShhKGkpKSkhPT1PYmplY3QucHJvdG90eXBlJiYocj1vKTpwPSEwKSxudWxsPT1yJiYocj17fSksZnx8dShyLGwpfHxjKHIsbCwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSx0LmV4cG9ydHM9e0l0ZXJhdG9yUHJvdG90eXBlOnIsQlVHR1lfU0FGQVJJX0lURVJBVE9SUzpwfX0sczVwRTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMEdiWSIpO3QuZXhwb3J0cz1yKCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiKXx8IiJ9LHNFRlg6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCI5ZC90Iiksbz17fTtvW24oInRpS3AiKSgidG9TdHJpbmdUYWciKV09InoiLHQuZXhwb3J0cz0iW29iamVjdCB6XSIhPT1TdHJpbmcobyk/ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCAiK3IodGhpcykrIl0ifTpvLnRvU3RyaW5nfSxzTUJPOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnNnYvIiksbz1uKCJtL0w4IikuZixpPUZ1bmN0aW9uLnByb3RvdHlwZSxhPWkudG9TdHJpbmcsYz0vXlxzKmZ1bmN0aW9uIChbXiAoXSopLzshcnx8Im5hbWUiaW4gaXx8byhpLCJuYW1lIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3RyeXtyZXR1cm4gYS5jYWxsKHRoaXMpLm1hdGNoKGMpWzFdfWNhdGNoKHQpe3JldHVybiIifX19KX0sc3dGTDpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIjBEa3kiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbj1bXVt0XTtyZXR1cm4hbnx8IXIoKGZ1bmN0aW9uKCl7bi5jYWxsKG51bGwsZXx8ZnVuY3Rpb24oKXt0aHJvdyAxfSwxKX0pKX19LHRXNXk6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJoaDF2Iiksbz1uKCJtL0w4IiksaT1uKCI0V09EIiksYT1uKCJ0aUtwIikoImhhc0luc3RhbmNlIiksYz1GdW5jdGlvbi5wcm90b3R5cGU7YSBpbiBjfHxvLmYoYyxhLHt2YWx1ZTpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdGhpc3x8IXIodCkpcmV0dXJuITE7aWYoIXIodGhpcy5wcm90b3R5cGUpKXJldHVybiB0IGluc3RhbmNlb2YgdGhpcztmb3IoO3Q9aSh0KTspaWYodGhpcy5wcm90b3R5cGU9PT10KXJldHVybiEwO3JldHVybiExfX0pfSx0WFVnOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcixvLGksYSxjLHUscyxmLGw9bigiMm9SbyIpLHA9bigiQnM4ViIpLmYsaD1uKCJ4cllLIiksdj1uKCJMUFNTIikuc2V0LGQ9bigiczVwRSIpLGc9bC5NdXRhdGlvbk9ic2VydmVyfHxsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXIseT1sLnByb2Nlc3MsYj1sLlByb21pc2UsbT0icHJvY2VzcyI9PWgoeSksaz1wKGwsInF1ZXVlTWljcm90YXNrIiksXz1rJiZrLnZhbHVlO198fChyPWZ1bmN0aW9uKCl7dmFyIHQsZTtmb3IobSYmKHQ9eS5kb21haW4pJiZ0LmV4aXQoKTtvOyl7ZT1vLmZuLG89by5uZXh0O3RyeXtlKCl9Y2F0Y2gobil7dGhyb3cgbz9hKCk6aT12b2lkIDAsbn19aT12b2lkIDAsdCYmdC5lbnRlcigpfSxtP2E9ZnVuY3Rpb24oKXt5Lm5leHRUaWNrKHIpfTpnJiYhLyhpcGhvbmV8aXBvZHxpcGFkKS4qYXBwbGV3ZWJraXQvaS50ZXN0KGQpPyhjPSEwLHU9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpLG5ldyBnKHIpLm9ic2VydmUodSx7Y2hhcmFjdGVyRGF0YTohMH0pLGE9ZnVuY3Rpb24oKXt1LmRhdGE9Yz0hY30pOmImJmIucmVzb2x2ZT8ocz1iLnJlc29sdmUodm9pZCAwKSxmPXMudGhlbixhPWZ1bmN0aW9uKCl7Zi5jYWxsKHMscil9KTphPWZ1bmN0aW9uKCl7di5jYWxsKGwscil9KSx0LmV4cG9ydHM9X3x8ZnVuY3Rpb24odCl7dmFyIGU9e2ZuOnQsbmV4dDp2b2lkIDB9O2kmJihpLm5leHQ9ZSksb3x8KG89ZSxhKCkpLGk9ZX19LHRpS3A6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjJvUm8iKSxvPW4oIlZwSVQiKSxpPW4oImtPT2wiKSxhPW4oIlNUQUUiKSxjPXIuU3ltYm9sLHU9bygid2tzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB1W3RdfHwodVt0XT1hJiZjW3RdfHwoYT9jOmkpKCJTeW1ib2wuIit0KSl9fSx0alpNOmZ1bmN0aW9uKHQsZSxuKXtuKCJkRy9uIikoImFzeW5jSXRlcmF0b3IiKX0sdGt0bzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiZXd2VyIpLGk9bigiMzNXaCIpO3Ioe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpuKCIwRGt5IikoKGZ1bmN0aW9uKCl7aSgxKX0pKX0se2tleXM6ZnVuY3Rpb24odCl7cmV0dXJuIGkobyh0KSl9fSl9LCJ0bC91IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89TWF0aC5jZWlsLGk9TWF0aC5mbG9vcjtyKHt0YXJnZXQ6Ik1hdGgiLHN0YXQ6ITB9LHt0cnVuYzpmdW5jdGlvbih0KXtyZXR1cm4odD4wP2k6bykodCl9fSl9LHRvQWo6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJwcEdCIiksaT1uKCJRSXBkIiksYT1uKCJFVWphIiksYz1uKCIwRGt5IiksdT0xLi50b0ZpeGVkLHM9TWF0aC5mbG9vcixmPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gMD09PWU/bjplJTI9PTE/Zih0LGUtMSxuKnQpOmYodCp0LGUvMixuKX07cih7dGFyZ2V0OiJOdW1iZXIiLHByb3RvOiEwLGZvcmNlZDp1JiYoIjAuMDAwIiE9PThlLTUudG9GaXhlZCgzKXx8IjEiIT09LjkudG9GaXhlZCgwKXx8IjEuMjUiIT09MS4yNTUudG9GaXhlZCgyKXx8IjEwMDAwMDAwMDAwMDAwMDAxMjgiIT09KDB4ZGUwYjZiM2E3NjQwMDgwKS50b0ZpeGVkKDApKXx8IWMoKGZ1bmN0aW9uKCl7dS5jYWxsKHt9KX0pKX0se3RvRml4ZWQ6ZnVuY3Rpb24odCl7dmFyIGUsbixyLGMsdT1pKHRoaXMpLGw9byh0KSxwPVswLDAsMCwwLDAsMF0saD0iIix2PSIwIixkPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPS0xLHI9ZTsrK248NjspcFtuXT0ocis9dCpwW25dKSUxZTcscj1zKHIvMWU3KX0sZz1mdW5jdGlvbih0KXtmb3IodmFyIGU9NixuPTA7LS1lPj0wOylwW2VdPXMoKG4rPXBbZV0pL3QpLG49biV0KjFlN30seT1mdW5jdGlvbigpe2Zvcih2YXIgdD02LGU9IiI7LS10Pj0wOylpZigiIiE9PWV8fDA9PT10fHwwIT09cFt0XSl7dmFyIG49U3RyaW5nKHBbdF0pO2U9IiI9PT1lP246ZSthLmNhbGwoIjAiLDctbi5sZW5ndGgpK259cmV0dXJuIGV9O2lmKGw8MHx8bD4yMCl0aHJvdyBSYW5nZUVycm9yKCJJbmNvcnJlY3QgZnJhY3Rpb24gZGlnaXRzIik7aWYodSE9dSlyZXR1cm4iTmFOIjtpZih1PD0tMWUyMXx8dT49MWUyMSlyZXR1cm4gU3RyaW5nKHUpO2lmKHU8MCYmKGg9Ii0iLHU9LXUpLHU+MWUtMjEpaWYobj0oZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPXQ7bj49NDA5NjspZSs9MTIsbi89NDA5Njtmb3IoO24+PTI7KWUrPTEsbi89MjtyZXR1cm4gZX0odSpmKDIsNjksMSkpLTY5KTwwP3UqZigyLC1lLDEpOnUvZigyLGUsMSksbio9NDUwMzU5OTYyNzM3MDQ5NiwoZT01Mi1lKT4wKXtmb3IoZCgwLG4pLHI9bDtyPj03OylkKDFlNywwKSxyLT03O2ZvcihkKGYoMTAsciwxKSwwKSxyPWUtMTtyPj0yMzspZygxPDwyMyksci09MjM7ZygxPDxyKSxkKDEsMSksZygyKSx2PXkoKX1lbHNlIGQoMCxuKSxkKDE8PC1lLDApLHY9eSgpK2EuY2FsbCgiMCIsbCk7cmV0dXJuIGw+MD9oKygoYz12Lmxlbmd0aCk8PWw/IjAuIithLmNhbGwoIjAiLGwtYykrdjp2LnNsaWNlKDAsYy1sKSsiLiIrdi5zbGljZShjLWwpKTpoK3Z9fSl9LHR5Y1I6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIitNTHgiKSxvPW4oIlJLM3QiKSxpPW4oImV3dlciKSxhPW4oIlVNU1EiKSxjPW4oIlpmRHYiKSx1PVtdLnB1c2gscz1mdW5jdGlvbih0KXt2YXIgZT0xPT10LG49Mj09dCxzPTM9PXQsZj00PT10LGw9Nj09dCxwPTU9PXR8fGw7cmV0dXJuIGZ1bmN0aW9uKGgsdixkLGcpe2Zvcih2YXIgeSxiLG09aShoKSxrPW8obSksXz1yKHYsZCwzKSx3PWEoay5sZW5ndGgpLHg9MCxTPWd8fGMsRT1lP1MoaCx3KTpuP1MoaCwwKTp2b2lkIDA7dz54O3grKylpZigocHx8eCBpbiBrKSYmKGI9Xyh5PWtbeF0seCxtKSx0KSlpZihlKUVbeF09YjtlbHNlIGlmKGIpc3dpdGNoKHQpe2Nhc2UgMzpyZXR1cm4hMDtjYXNlIDU6cmV0dXJuIHk7Y2FzZSA2OnJldHVybiB4O2Nhc2UgMjp1LmNhbGwoRSx5KX1lbHNlIGlmKGYpcmV0dXJuITE7cmV0dXJuIGw/LTE6c3x8Zj9mOkV9fTt0LmV4cG9ydHM9e2ZvckVhY2g6cygwKSxtYXA6cygxKSxmaWx0ZXI6cygyKSxzb21lOnMoMyksZXZlcnk6cyg0KSxmaW5kOnMoNSksZmluZEluZGV4OnMoNil9fSx1TDhXOmZ1bmN0aW9uKHQsZSxuKXtuKCJJK2ViIikoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLHNoYW06IW4oImc2di8iKX0se2NyZWF0ZTpuKCJmSE1ZIil9KX0sdXFYYzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiNVl6KyIpO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpvIT09W10ubGFzdEluZGV4T2Z9LHtsYXN0SW5kZXhPZjpvfSl9LHV5ODM6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIjBEa3kiKTt0LmV4cG9ydHM9IXIoKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5pc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSl9KSl9LHZBRnM6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPU1hdGguaW11bDtyKHt0YXJnZXQ6Ik1hdGgiLHN0YXQ6ITAsZm9yY2VkOm8oKGZ1bmN0aW9uKCl7cmV0dXJuLTUhPWkoNDI5NDk2NzI5NSw1KXx8MiE9aS5sZW5ndGh9KSl9LHtpbXVsOmZ1bmN0aW9uKHQsZSl7dmFyIG49K3Qscj0rZSxvPTY1NTM1Jm4saT02NTUzNSZyO3JldHVybiAwfG8qaSsoKDY1NTM1Jm4+Pj4xNikqaStvKig2NTUzNSZyPj4+MTYpPDwxNj4+PjApfX0pfSx2bzRWOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCI5MGhXIiksbz1NYXRoLmFicyxpPU1hdGgucG93LGE9aSgyLC01MiksYz1pKDIsLTIzKSx1PWkoMiwxMjcpKigyLWMpLHM9aSgyLC0xMjYpO3QuZXhwb3J0cz1NYXRoLmZyb3VuZHx8ZnVuY3Rpb24odCl7dmFyIGUsbixpPW8odCksZj1yKHQpO3JldHVybiBpPHM/ZiooaS9zL2MrMS9hLTEvYSkqcypjOihuPShlPSgxK2MvYSkqaSktKGUtaSkpPnV8fG4hPW4/ZiooMS8wKTpmKm59fSx3MXJaOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJiK1ZUIik7cih7dGFyZ2V0OiJOdW1iZXIiLHN0YXQ6ITAsZm9yY2VkOk51bWJlci5wYXJzZUZsb2F0IT1vfSx7cGFyc2VGbG9hdDpvfSl9LHdETG86ZnVuY3Rpb24odCxlLG4pe2UuZj1uKCJ0aUtwIil9LHdFNnY6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oImhoMXYiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighcih0KSlyZXR1cm4gdDt2YXIgbixvO2lmKGUmJiJmdW5jdGlvbiI9PXR5cGVvZihuPXQudG9TdHJpbmcpJiYhcihvPW4uY2FsbCh0KSkpcmV0dXJuIG87aWYoImZ1bmN0aW9uIj09dHlwZW9mKG49dC52YWx1ZU9mKSYmIXIobz1uLmNhbGwodCkpKXJldHVybiBvO2lmKCFlJiYiZnVuY3Rpb24iPT10eXBlb2Yobj10LnRvU3RyaW5nKSYmIXIobz1uLmNhbGwodCkpKXJldHVybiBvO3Rocm93IFR5cGVFcnJvcigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSx3TFluOmZ1bmN0aW9uKHQsZSxuKXtuKCJJK2ViIikoe3RhcmdldDoiRnVuY3Rpb24iLHByb3RvOiEwfSx7YmluZDpuKCJCVGhvIil9KX0seDBBRzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oInR5Y1IiKS5maW5kSW5kZXgsaT1uKCJSTklzIiksYT0hMDsiZmluZEluZGV4ImluW10mJkFycmF5KDEpLmZpbmRJbmRleCgoZnVuY3Rpb24oKXthPSExfSkpLHIoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDphfSx7ZmluZEluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksaSgiZmluZEluZGV4Iil9LHg4M3c6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoImZpeGVkIil9LHtmaXhlZDpmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsInR0IiwiIiwiIil9fSl9LHhEQlI6ZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ITF9LHhkQlo6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoIml0YWxpY3MiKX0se2l0YWxpY3M6ZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzLCJpIiwiIiwiIil9fSl9LHhyWUs6ZnVuY3Rpb24odCxlKXt2YXIgbj17fS50b1N0cmluZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG4uY2FsbCh0KS5zbGljZSg4LC0xKX19LHlRWW46ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4oIkkrZWIiKSxvPW4oIjBEa3kiKSxpPW4oImhoMXYiKSxhPU9iamVjdC5pc0V4dGVuc2libGU7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOm8oKGZ1bmN0aW9uKCl7YSgxKX0pKX0se2lzRXh0ZW5zaWJsZTpmdW5jdGlvbih0KXtyZXR1cm4hIWkodCkmJighYXx8YSh0KSl9fSl9LHlXbzI6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJoWHBPIik7cih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKCI2dW5LIikoInNtYWxsIil9LHtzbWFsbDpmdW5jdGlvbigpe3JldHVybiBvKHRoaXMsInNtYWxsIiwiIiwiIil9fSl9LHlYVjM6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJJK2ViIiksbz1uKCJUV1FiIikuaW5kZXhPZixpPW4oInN3RkwiKSxhPVtdLmluZGV4T2YsYz0hIWEmJjEvWzFdLmluZGV4T2YoMSwtMCk8MCx1PWkoImluZGV4T2YiKTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6Y3x8dX0se2luZGV4T2Y6ZnVuY3Rpb24odCl7cmV0dXJuIGM/YS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA6byh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSx5aUczOmZ1bmN0aW9uKHQsZSxuKXtuKCJJK2ViIikoe3RhcmdldDoiTWF0aCIsc3RhdDohMH0se2xvZzFwOm4oIkhzSEEiKX0pfSx5b1JnOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJVVFZTIiksbz1uKCIvR3FVIiksaT1uKCJUV1FiIikuaW5kZXhPZixhPW4oIjBCSzIiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbixjPW8odCksdT0wLHM9W107Zm9yKG4gaW4gYykhcihhLG4pJiZyKGMsbikmJnMucHVzaChuKTtmb3IoO2UubGVuZ3RoPnU7KXIoYyxuPWVbdSsrXSkmJih+aShzLG4pfHxzLnB1c2gobikpO3JldHVybiBzfX0seXltZTpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiSStlYiIpLG89bigiZ2RWbCIpLGk9bigiUk5JcyIpO3Ioe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwfSx7ZmlsbDpvfSksaSgiZmlsbCIpfSx6Qko0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIyb1JvIiksbz1uKCJoaDF2IiksaT1yLmRvY3VtZW50LGE9byhpKSYmbyhpLmNyZWF0ZUVsZW1lbnQpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gYT9pLmNyZWF0ZUVsZW1lbnQodCk6e319fSx6SEZ1OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiaFhwTyIpO3Ioe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6bigiNnVuSyIpKCJib2xkIil9LHtib2xkOmZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcywiYiIsIiIsIiIpfX0pfSx6S1plOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJZTnJWIik7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOk9iamVjdC5hc3NpZ24hPT1vfSx7YXNzaWduOm99KX0semZuZDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZ2xyayIpLG89bigiaGgxdiIpLGk9bigiOEdsTCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKHIodCksbyhlKSYmZS5jb25zdHJ1Y3Rvcj09PXQpcmV0dXJuIGU7dmFyIG49aS5mKHQpO3JldHVybigwLG4ucmVzb2x2ZSkoZSksbi5wcm9taXNlfX0sems2MDpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiMm9SbyIpLG89bigiWDJVKyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3RyeXtvKHIsdCxlKX1jYXRjaChuKXtyW3RdPWV9cmV0dXJuIGV9fSx6dWhXOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1uKCJoaDF2IiksaT1uKCI4WU9hIikub25GcmVlemUsYT1uKCJ1eTgzIiksYz1uKCIwRGt5IiksdT1PYmplY3QucHJldmVudEV4dGVuc2lvbnM7cih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOmMoKGZ1bmN0aW9uKCl7dSgxKX0pKSxzaGFtOiFhfSx7cHJldmVudEV4dGVuc2lvbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHUmJm8odCk/dShpKHQpKTp0fX0pfX0sW1sxLDBdXV0pOw==" } ], "height": 792756, "spentComplexity": 0 }

github/deemru/w8io/873ac7e 
64.44 ms