{"id":24613,"date":"2026-11-12T17:32:37","date_gmt":"2026-11-12T16:32:37","guid":{"rendered":"https:\/\/www.psautomobile.de\/?page_id=24613"},"modified":"2026-11-12T18:45:48","modified_gmt":"2026-11-12T17:45:48","slug":"964-st-konfigurator","status":"publish","type":"page","link":"https:\/\/www.psautomobile.de\/en\/964-st-konfigurator\/","title":{"rendered":"964 ST Configurator"},"content":{"rendered":"\n<div id=\"ps964-konfigurator\" class=\"notranslate\" translate=\"no\" data-no-translation style=\"display:block;min-height:70vh;background:#0b0b0b\"><div style=\"max-width:760px;margin:0 auto;padding:64px 24px;color:#f2f0ea;font-family:Barlow,Arial,sans-serif\"><h1 style=\"font-size:32px;text-transform:uppercase;color:#f2f0ea\">964 ST Konfigurator<\/h1><p>Stell dir deinen ganz individuellen 964 ST zusammen: Lack, Zierelemente und Felgen in f\u00fcnf Ansichten. F\u00fcr den Konfigurator wird JavaScript ben\u00f6tigt.<\/p><\/div><\/div>\n<script>(function(){var s=document.createElement(\"script\");s.text=atob(\"d2luZG93LlBTOTY0PXtiYXNlOiIvd3AtY29udGVudC91cGxvYWRzLzIwMjYvMTEvIixwcmVmaXg6InN0OTY0LSIsZmlsZXM6eyJoZWNrX2VtYi5wbmciOiJzdDk2NC1oZWNrX2VtYi12Mi5wbmciLCJoZWNrX3BhaW50LnBuZyI6InN0OTY0LWhlY2tfcGFpbnQtdjIucG5nIiwiaGVjazM0X2VtYi5wbmciOiJzdDk2NC1oZWNrMzRfZW1iLXYyLnBuZyIsImhlY2szNF9wYWludC5wbmciOiJzdDk2NC1oZWNrMzRfcGFpbnQtdjIucG5nIn0sc2hvd246InBzYXV0b21vYmlsZS5kZS85NjQtc3Qta29uZmlndXJhdG9yIix1cmw6Imh0dHBzOi8vd3d3LnBzYXV0b21vYmlsZS5kZS85NjQtc3Qta29uZmlndXJhdG9yLyIscG9wdXA6MTM2Njd9OwooZnVuY3Rpb24oKXsKInVzZSBzdHJpY3QiOwp2YXIgQ1NTPSI6aG9zdHthbGw6aW5pdGlhbDtkaXNwbGF5OmJsb2NrO1xuICAtLWJnOiMwYjBiMGI7LS1zdXJmYWNlOiMxNTE1MTQ7LS1zdXJmYWNlMjojMWUxZTFjOy0taW5rOiNmMmYwZWE7LS1tdXQ6I2E1YTI5ODstLWxpbmU6IzJlMmQyYTstLWxpbmUyOiM0NDQyM2Q7XG4gIC0tYWNjZW50OiNjZGI0NmM7LS1hY2NlbnQyOiNhYjk0MzU7LS1hY2NlbnQtaW5rOiMxNzEzMGE7LS1mb2N1czojZjBkYzhkOy0tZXJyOiNmZjlkOGY7LS1zdGljazowcHg7XG4gIC0tZjpcIkJhcmxvd1wiLFwiQmFybG93IFNlbWkgQ29uZGVuc2VkXCIsXCJIZWx2ZXRpY2EgTmV1ZVwiLEFyaWFsLHNhbnMtc2VyaWY7XG4gIGJhY2tncm91bmQ6dmFyKC0tYmcpO2NvbG9yOnZhcigtLWluayk7Zm9udDo0MDAgMTZweC8xLjUgdmFyKC0tZik7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7Y29sb3Itc2NoZW1lOmRhcmt9XG4qLCo6OmJlZm9yZSwqOjphZnRlcntib3gtc2l6aW5nOmJvcmRlci1ib3h9XG5baGlkZGVuXXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fVxuYnV0dG9uLGlucHV0e2ZvbnQtZmFtaWx5OmluaGVyaXQ7bWFyZ2luOjB9XG5idXR0b257LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fVxuYnV0dG9uOmZvY3VzLXZpc2libGUsaW5wdXQ6Zm9jdXMtdmlzaWJsZSxhOmZvY3VzLXZpc2libGUsc3VtbWFyeTpmb2N1cy12aXNpYmxle291dGxpbmU6MnB4IHNvbGlkIHZhcigtLWZvY3VzKTtvdXRsaW5lLW9mZnNldDoycHh9XG5oMSxoMixwe21hcmdpbjowfVxuLmNmZ3ttYXgtd2lkdGg6MTQ4MHB4O21hcmdpbjowIGF1dG87cGFkZGluZzoyOHB4IG1heCgxOHB4LGVudihzYWZlLWFyZWEtaW5zZXQtcmlnaHQsMHB4KSkgNTZweCBtYXgoMThweCxlbnYoc2FmZS1hcmVhLWluc2V0LWxlZnQsMHB4KSl9XG5cbi5oZHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1lbmQ7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjE2cHggNDBweDtmbGV4LXdyYXA6d3JhcDtwYWRkaW5nLWJvdHRvbToyMnB4fVxuLmV5ZWJyb3d7Zm9udDo2MDAgMTNweC8xIHZhcigtLWYpO2xldHRlci1zcGFjaW5nOi4yMmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjp2YXIoLS1hY2NlbnQpO21hcmdpbi1ib3R0b206MTNweH1cbmgxe2ZvbnQ6NjAwIGNsYW1wKDI4cHgsMy40dncsNDRweCkvMS4wNCB2YXIoLS1mKTtsZXR0ZXItc3BhY2luZzouMDFlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9XG4ubGVkZXttYXgtd2lkdGg6NDZjaDtjb2xvcjp2YXIoLS1tdXQpO2ZvbnQtc2l6ZToxNS41cHg7ZmxleDoxIDEgMzAwcHh9XG4ubGFuZ3tkaXNwbGF5OmZsZXg7Z2FwOjhweDthbGlnbi1pdGVtczpjZW50ZXJ9XG4uZmxhZ3thcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUyKTtwYWRkaW5nOjNweDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7b3BhY2l0eTouNTU7bGluZS1oZWlnaHQ6MDtib3JkZXItcmFkaXVzOjNweH1cbi5mbGFnIHN2Z3t3aWR0aDoyN3B4O2hlaWdodDoxOHB4O2Rpc3BsYXk6YmxvY2t9XG4uZmxhZ1thcmlhLXByZXNzZWQ9XCJ0cnVlXCJde29wYWNpdHk6MTtib3JkZXItY29sb3I6dmFyKC0tYWNjZW50KX1cblxuLm1haW57ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIG1pbm1heCgzNjBweCw0MzBweCk7Z2FwOjIycHg7YWxpZ24taXRlbXM6c3RhcnR9XG4uc3RhZ2Vjb2x7cG9zaXRpb246c3RpY2t5O3RvcDpjYWxjKHZhcigtLXN0aWNrKSArIDE0cHgpO21pbi13aWR0aDowO3RyYW5zaXRpb246dG9wIHZhcigtLXN0aWNrdCwuMzVzKSBlYXNlfVxuLnN0YWdle3Bvc2l0aW9uOnJlbGF0aXZlO2FzcGVjdC1yYXRpbzoxODAwLzEwNjQ7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6IzA1MDUwNTtib3JkZXItcmFkaXVzOjZweDt0b3VjaC1hY3Rpb246cGFuLXl9XG4uc3RhZ2UgY2FudmFze3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvYmplY3QtZml0OmNvbnRhaW47Y3Vyc29yOnpvb20taW59XG4uc3RhZ2UuZnVsbHt0b3VjaC1hY3Rpb246bm9uZX1cbi5zdGFnZS5mdWxsIGNhbnZhc3t0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXp4LDBweCksdmFyKC0tenksMHB4KSkgc2NhbGUodmFyKC0tenMsMSkpO3RyYW5zZm9ybS1vcmlnaW46NTAlIDUwJX1cbi5zdGFnZS5mdWxsLnpvb21lZCBjYW52YXN7Y3Vyc29yOmdyYWJ9XG4uc3RhZ2UgY2FudmFzW2hpZGRlbl17ZGlzcGxheTpub25lfVxuI2N2c3tkaXNwbGF5OmNvbnRlbnRzfVxuLnRpY2t7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxNHB4O3RvcDoxMnB4O3otaW5kZXg6Mjtmb250OjYwMCAxMXB4LzEgdmFyKC0tZik7bGV0dGVyLXNwYWNpbmc6LjE4ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOiNiN2I0YWE7cG9pbnRlci1ldmVudHM6bm9uZX1cbi5pYnRue3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MzthcHBlYXJhbmNlOm5vbmU7d2lkdGg6NDJweDtoZWlnaHQ6NDJweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4yMik7YmFja2dyb3VuZDpyZ2JhKDgsOCw4LC41KTtjb2xvcjojZjJmMGVhO2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6MDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZHJvcC1maWx0ZXI6Ymx1cig2cHgpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOmJsdXIoNnB4KTt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzLGNvbG9yIC4xNXN9XG4uaWJ0bjpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYWNjZW50KTtjb2xvcjp2YXIoLS1hY2NlbnQpfVxuLmlidG4gc3Zne3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHh9XG4uZnNidG57cmlnaHQ6MTJweDt0b3A6MTBweH1cbi5mc2J0biAuaWMteHtkaXNwbGF5Om5vbmV9XG4uc3RhZ2UuZnVsbCAuZnNidG4gLmljLXh7ZGlzcGxheTpibG9ja30uc3RhZ2UuZnVsbCAuZnNidG4gLmljLWV7ZGlzcGxheTpub25lfVxuLmxvYWRpbmd7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO2NvbG9yOiNiN2I0YWE7Zm9udDo2MDAgMTJweCB2YXIoLS1mKTtsZXR0ZXItc3BhY2luZzouMThlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7cG9pbnRlci1ldmVudHM6bm9uZX1cbi5mc2JhcntkaXNwbGF5Om5vbmV9XG4uc3RhZ2UuZnVsbHtwb3NpdGlvbjpmaXhlZDtpbnNldDowO3otaW5kZXg6MjE0NzQ4MzAwMDt3aWR0aDoxMDB2dztoZWlnaHQ6MTAwdmg7aGVpZ2h0OjEwMGR2aDthc3BlY3QtcmF0aW86YXV0bztib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDojMDAwfVxuLnN0YWdlLmZ1bGwgY2FudmFze2N1cnNvcjpkZWZhdWx0fVxuLnN0YWdlY29sLmZze3Bvc2l0aW9uOnN0YXRpYyFpbXBvcnRhbnQ7ei1pbmRleDphdXRvIWltcG9ydGFudH1cbi5zdGFnZS5mdWxsIC5mc2JhcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoycHg7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7Ym90dG9tOm1heCgxOHB4LGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tLDBweCkpO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3otaW5kZXg6MztiYWNrZ3JvdW5kOnJnYmEoOCw4LDgsLjcpO2JvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMik7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjRweDttYXgtd2lkdGg6Y2FsYygxMDB2dyAtIDIwcHgpfVxuLmZzYmFyIGJ1dHRvbiwudmlld3MgYnV0dG9ue2FwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLW11dCk7Zm9udDo2MDAgMTNweC8xIHZhcigtLWYpO2xldHRlci1zcGFjaW5nOi4wNmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtwYWRkaW5nOjExcHggMTZweDtjdXJzb3I6cG9pbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7Ym9yZGVyLXJhZGl1czo5OTlweDt0cmFuc2l0aW9uOmNvbG9yIC4xNXMsYmFja2dyb3VuZCAuMTVzfVxuLmZzYmFyIGJ1dHRvbjpob3Zlciwudmlld3MgYnV0dG9uOmhvdmVye2NvbG9yOnZhcigtLWluayl9XG4uZnNiYXIgYnV0dG9uW2FyaWEtcHJlc3NlZD1cInRydWVcIl0sLnZpZXdzIGJ1dHRvblthcmlhLXByZXNzZWQ9XCJ0cnVlXCJde2JhY2tncm91bmQ6dmFyKC0taW5rKTtjb2xvcjojMGIwYjBifVxuLnZiYXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDoxMnB4O3BhZGRpbmc6MThweCAwIDRweH1cbi52Y3Vye2Rpc3BsYXk6bm9uZTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7bWluLXdpZHRoOjE3MnB4fVxuLnZjdXIgYntmb250OjYwMCAxM3B4LzEgdmFyKC0tZik7bGV0dGVyLXNwYWNpbmc6LjE2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOnZhcigtLWluayk7d2hpdGUtc3BhY2U6bm93cmFwfVxuLmRvdHN7ZGlzcGxheTpmbGV4O2dhcDo3cHh9XG4uZG90cyBpe3dpZHRoOjZweDtoZWlnaHQ6NnB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6dmFyKC0tbGluZTIpO3RyYW5zaXRpb246YmFja2dyb3VuZCAuMTVzfVxuLmRvdHMgaS5vbntiYWNrZ3JvdW5kOnZhcigtLWFjY2VudCl9XG4udmlld3MsLmZzZWd7ZGlzcGxheTpmbGV4O2dhcDo2cHg7b3ZlcmZsb3cteDphdXRvO3Njcm9sbGJhci13aWR0aDpub25lO21pbi13aWR0aDowfVxuLnZpZXdzOjotd2Via2l0LXNjcm9sbGJhciwuZnNlZzo6LXdlYmtpdC1zY3JvbGxiYXJ7ZGlzcGxheTpub25lfVxuLnZuYXZ7YXBwZWFyYW5jZTpub25lO2ZsZXg6MCAwIGF1dG87d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lMik7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1pbmspO2JvcmRlci1yYWRpdXM6NTAlO2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6MDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzLGNvbG9yIC4xNXN9XG4udm5hdjpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYWNjZW50KTtjb2xvcjp2YXIoLS1hY2NlbnQpfVxuLnZuYXYgc3Zne3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHh9XG4uZnNiYXIgLnZuYXZ7d2lkdGg6MzhweDtoZWlnaHQ6MzhweDtwYWRkaW5nOjA7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWluayl9XG5cbi5wYW5lbHtiYWNrZ3JvdW5kOnZhcigtLXN1cmZhY2UpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo2cHg7bWluLXdpZHRoOjA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtvdmVyZmxvdzpoaWRkZW59XG4udGFic3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLG1pbm1heCgwLDFmcikpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWxpbmUpfVxuLnpje2FwcGVhcmFuY2U6bm9uZTt0ZXh0LWFsaWduOmxlZnQ7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6dmFyKC0taW5rKTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowO2JvcmRlci1yaWdodDoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLWJvdHRvbToycHggc29saWQgdHJhbnNwYXJlbnQ7bWFyZ2luLWJvdHRvbTotMXB4O3BhZGRpbmc6MTNweCAxMnB4IDEycHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6N3B4O21pbi13aWR0aDowO3RyYW5zaXRpb246YmFja2dyb3VuZCAuMTVzfVxuLnpjOmxhc3QtY2hpbGR7Ym9yZGVyLXJpZ2h0OjB9XG4uemNbYXJpYS1zZWxlY3RlZD1cInRydWVcIl17YmFja2dyb3VuZDp2YXIoLS1zdXJmYWNlMik7Ym9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS1hY2NlbnQpfVxuLnpjIC56bntmb250OjYwMCAxMnB4LzEgdmFyKC0tZik7bGV0dGVyLXNwYWNpbmc6LjE0ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOnZhcigtLW11dCk7ZGlzcGxheTpmbGV4O2dhcDo3cHg7YWxpZ24taXRlbXM6Y2VudGVyfVxuLnpjW2FyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCJdIC56bntjb2xvcjp2YXIoLS1hY2NlbnQpfVxuLnpjIC56biBie2ZvbnQtd2VpZ2h0OjYwMDtvcGFjaXR5Oi42fVxuLnpjIC56dntkaXNwbGF5OmZsZXg7Z2FwOjhweDthbGlnbi1pdGVtczpjZW50ZXI7bWluLXdpZHRoOjA7Zm9udDo1MDAgMTMuNXB4LzEuMiB2YXIoLS1mKX1cbi56YyAuenYgaXt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2JvcmRlci1yYWRpdXM6NTAlO2ZsZXg6bm9uZTtib3gtc2hhZG93OjAgMCAwIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4yOCl9XG4uemMgLnp2IHNwYW57b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO21pbi13aWR0aDowfVxuLnBib2R5e3BhZGRpbmc6MThweCAxOHB4IDE2cHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTNweH1cbi5waGVhZCBoMntmb250OjYwMCAyMXB4LzEuMSB2YXIoLS1mKTtsZXR0ZXItc3BhY2luZzouMDZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9XG4ucGhlYWQgcHtjb2xvcjp2YXIoLS1tdXQpO2ZvbnQtc2l6ZToxNHB4O21hcmdpbi10b3A6NXB4fVxuLmNoaXBze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6NnB4fVxuLmNoaXB7YXBwZWFyYW5jZTpub25lO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZTIpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tbXV0KTtmb250OjUwMCAxM3B4LzEgdmFyKC0tZik7bGV0dGVyLXNwYWNpbmc6LjAzZW07cGFkZGluZzo4cHggMTJweDtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOjk5OXB4O3RyYW5zaXRpb246Y29sb3IgLjE1cyxib3JkZXItY29sb3IgLjE1c31cbi5jaGlwOmhvdmVye2NvbG9yOnZhcigtLWluayk7Ym9yZGVyLWNvbG9yOnZhcigtLW11dCl9XG4uY2hpcFthcmlhLXByZXNzZWQ9XCJ0cnVlXCJde2JhY2tncm91bmQ6dmFyKC0taW5rKTtjb2xvcjojMGIwYjBiO2JvcmRlci1jb2xvcjp2YXIoLS1pbmspfVxuLmNoaXAgaXtmb250LXN0eWxlOm5vcm1hbDtvcGFjaXR5Oi42O21hcmdpbi1sZWZ0OjZweDtmb250LXNpemU6MTJweH1cbi5mYW1ze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OXB4O2FsaWduLWl0ZW1zOmNlbnRlcn1cbi5mYW17YXBwZWFyYW5jZTpub25lO3dpZHRoOjI2cHg7aGVpZ2h0OjI2cHg7Ym9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1zdXJmYWNlKTtwYWRkaW5nOjA7Y3Vyc29yOnBvaW50ZXI7Ym94LXNoYWRvdzowIDAgMCAxcHggdmFyKC0tbGluZTIpfVxuLmZhbVthcmlhLXByZXNzZWQ9XCJ0cnVlXCJde2JveC1zaGFkb3c6MCAwIDAgMnB4IHZhcigtLWFjY2VudCl9XG4uZmFtcyAuY2xyLC5saW5re2FwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6dmFyKC0tbXV0KTtmb250OjQwMCAxMy41cHggdmFyKC0tZik7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6M3B4O2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6NHB4IDB9XG4uZmFtcyAuY2xyOmhvdmVyLC5saW5rOmhvdmVye2NvbG9yOnZhcigtLWluayl9XG4ucXt3aWR0aDoxMDAlO3BhZGRpbmc6MTFweCAxM3B4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZTIpO2JhY2tncm91bmQ6dmFyKC0tYmcpO2NvbG9yOnZhcigtLWluayk7Zm9udDo0MDAgMTVweCB2YXIoLS1mKTtib3JkZXItcmFkaXVzOjRweH1cbi5xOjpwbGFjZWhvbGRlcntjb2xvcjojN2Q3YTcxfVxuLmhpbnR7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tbXV0KTttaW4taGVpZ2h0OjEuMmVtO21hcmdpbjotNnB4IDAgLTVweH1cbi5jYXJkc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg0LG1pbm1heCgwLDFmcikpO2dhcDo3cHg7bWF4LWhlaWdodDpjbGFtcCgyMzBweCxjYWxjKDEwMHZoIC0gNTkwcHggLSB2YXIoLS1zdGljaykpLDQ2MHB4KTtvdmVyZmxvdy15OmF1dG87cGFkZGluZzoycHg7b3ZlcnNjcm9sbC1iZWhhdmlvcjpjb250YWluO2FsaWduLWNvbnRlbnQ6c3RhcnQ7c2Nyb2xsYmFyLXdpZHRoOnRoaW47c2Nyb2xsYmFyLWNvbG9yOnZhcigtLWxpbmUyKSB0cmFuc3BhcmVudH1cbi5jYXJkcy5iaWd7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLG1pbm1heCgwLDFmcikpO21heC1oZWlnaHQ6bm9uZTtnYXA6OXB4fVxuLmNhcmR7YXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQ6dmFyKC0tYmcpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7cGFkZGluZzowO2N1cnNvcjpwb2ludGVyO2NvbG9yOnZhcigtLWluayk7dGV4dC1hbGlnbjpsZWZ0O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXN9XG4uY2FyZCAuYmxre2Rpc3BsYXk6YmxvY2s7YXNwZWN0LXJhdGlvOjIvMTtwb3NpdGlvbjpyZWxhdGl2ZX1cbi5jYXJkcy5iaWcgLmNhcmQgLmJsa3thc3BlY3QtcmF0aW86MTYvOX1cbi5jYXJkIC5ibGs6OmFmdGVye2NvbnRlbnQ6XCJcIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE2MGRlZyxyZ2JhKDI1NSwyNTUsMjU1LC4xNikscmdiYSgyNTUsMjU1LDI1NSwwKSA0MiUscmdiYSgwLDAsMCwuMTgpKX1cbi5jYXJkIC5ibGsubTo6YWZ0ZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjQyKSxyZ2JhKDI1NSwyNTUsMjU1LDApIDQ1JSxyZ2JhKDAsMCwwLC4yOCkpfVxuLmNhcmQgLm5te3BhZGRpbmc6NnB4IDdweCAwO2ZvbnQ6NTAwIDEyLjVweC8xLjIgdmFyKC0tZik7b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkO2h5cGhlbnM6YXV0bzstd2Via2l0LWh5cGhlbnM6YXV0b31cbi5jYXJkcy5iaWcgLmNhcmQgLm5te2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmc6OHB4IDlweCAwfVxuLmNhcmQgLmNke3BhZGRpbmc6MnB4IDdweCA3cHg7Zm9udDo0MDAgMTFweC8xLjIgdmFyKC0tZik7Y29sb3I6dmFyKC0tbXV0KX1cbi5jYXJkcy5iaWcgLmNhcmQgLmNke2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmc6MnB4IDlweCA5cHh9XG5AbWVkaWEoaG92ZXI6aG92ZXIpey5jYXJkOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1tdXQpfX1cbi5jYXJkW2FyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCJde2JvcmRlci1jb2xvcjp2YXIoLS1hY2NlbnQpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHZhcigtLWFjY2VudCl9XG4uY2FyZFthcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXTo6YWZ0ZXJ7Y29udGVudDpcIlwiO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjZweDt0b3A6NnB4O3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDp2YXIoLS1hY2NlbnQpIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTggMTgnJTNFJTNDcGF0aCBkPSdNNC42IDkuM2wyLjkgMi45IDUuOS02LjInIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzMTcxMzBhJyBzdHJva2Utd2lkdGg9JzInLyUzRSUzQy9zdmclM0VcIikgY2VudGVyL2NvbnRhaW4gbm8tcmVwZWF0fVxuLmNhcmQgLmF1dG97cG9zaXRpb246YWJzb2x1dGU7bGVmdDo2cHg7dG9wOjZweDt6LWluZGV4OjE7Zm9udDo2MDAgMTBweC8xIHZhcigtLWYpO2xldHRlci1zcGFjaW5nOi4xMmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtiYWNrZ3JvdW5kOnJnYmEoOCw4LDgsLjcyKTtjb2xvcjojZjJmMGVhO3BhZGRpbmc6NHB4IDZweDtib3JkZXItcmFkaXVzOjNweH1cbi5wZm9vdHtkaXNwbGF5OmZsZXg7Z2FwOjEwcHggMTZweDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47ZmxleC13cmFwOndyYXA7cGFkZGluZy10b3A6MnB4fVxuXG4uYnRue2FwcGVhcmFuY2U6bm9uZTtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo5cHg7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxODBkZWcsI2YwZGM4ZCwjYWI5NDM1KTtjb2xvcjp2YXIoLS1hY2NlbnQtaW5rKTtmb250OjYwMCAxNHB4LzEgdmFyKC0tZik7bGV0dGVyLXNwYWNpbmc6LjA4ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO3BhZGRpbmc6MTRweCAyMnB4O2N1cnNvcjpwb2ludGVyO2JvcmRlci1yYWRpdXM6OTk5cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7d2hpdGUtc3BhY2U6bm93cmFwO3RyYW5zaXRpb246ZmlsdGVyIC4xNXMsYm9yZGVyLWNvbG9yIC4xNXN9XG4uYnRuOmhvdmVye2ZpbHRlcjpicmlnaHRuZXNzKDEuMDgpfVxuLmJ0bi5ne2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0taW5rKTtib3JkZXItY29sb3I6dmFyKC0tbGluZTIpfVxuLmJ0bi5nOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1pbmspO2ZpbHRlcjpub25lfVxuLmJ0bi5zbXtwYWRkaW5nOjExcHggMTZweDtmb250LXNpemU6MTNweH1cbi5idG4gc3Zne3dpZHRoOjE3cHg7aGVpZ2h0OjE3cHg7ZmxleDpub25lfVxuLmJ0bltkaXNhYmxlZF17b3BhY2l0eTouNjtjdXJzb3I6cHJvZ3Jlc3N9XG5cbi5zdW17bWFyZ2luLXRvcDoyNnB4O2JhY2tncm91bmQ6dmFyKC0tc3VyZmFjZSk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjZweDtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgbWlubWF4KDAsMWZyKTtnYXA6MH1cbi5zdW0+ZGl2e3BhZGRpbmc6MjRweCAyNnB4O21pbi13aWR0aDowfVxuLnN1bVJ7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHZhcigtLWxpbmUpO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjE0cHh9XG4uc3VtIGgye2ZvbnQ6NjAwIDIxcHgvMS4xIHZhcigtLWYpO2xldHRlci1zcGFjaW5nOi4wNmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTttYXJnaW4tYm90dG9tOjE0cHh9XG4uc3Jvd3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjQ0cHggbWlubWF4KDAsMWZyKTtnYXA6MTRweDthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzoxMnB4IDA7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tbGluZSl9XG4uc3JvdzpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWxpbmUpfVxuLnNyb3cgaXt3aWR0aDo0NHB4O2hlaWdodDo0NHB4O2JvcmRlci1yYWRpdXM6NTAlO2JveC1zaGFkb3c6MCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjIyKSxpbnNldCAwIDZweCAxMHB4IHJnYmEoMjU1LDI1NSwyNTUsLjEyKSxpbnNldCAwIC02cHggMTBweCByZ2JhKDAsMCwwLC4yKX1cbi5zcm93IHNwYW57ZGlzcGxheTpibG9jaztmb250OjYwMCAxMnB4LzEgdmFyKC0tZik7bGV0dGVyLXNwYWNpbmc6LjE2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOnZhcigtLW11dCk7bWFyZ2luLWJvdHRvbTo1cHh9XG4uc3JvdyBie2ZvbnQ6NTAwIDE3cHgvMS4yNSB2YXIoLS1mKTtvdmVyZmxvdy13cmFwOmFueXdoZXJlfVxuLnNyb3cgZW17Zm9udC1zdHlsZTpub3JtYWw7Y29sb3I6dmFyKC0tbXV0KTtmb250LXdlaWdodDo0MDB9XG4ubGJse2ZvbnQ6NjAwIDEycHgvMSB2YXIoLS1mKTtsZXR0ZXItc3BhY2luZzouMTZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6dmFyKC0tbXV0KX1cbi5jb2Rlcm93e2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2FsaWduLWl0ZW1zOnN0cmV0Y2g7ZmxleC13cmFwOndyYXB9XG4uY29kZXtmbGV4OjEgMSAyMDBweDttaW4td2lkdGg6MDtmb250OjYwMCAxOXB4LzEuMiB2YXIoLS1mKTtsZXR0ZXItc3BhY2luZzouMWVtO3BhZGRpbmc6MTFweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZTIpO2JhY2tncm91bmQ6dmFyKC0tYmcpO2NvbG9yOnZhcigtLWluayk7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2JvcmRlci1yYWRpdXM6NHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9XG5pbnB1dC5jb2Rle2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjUwMH1cbi5hY3Rze2Rpc3BsYXk6ZmxleDtnYXA6MTBweDtmbGV4LXdyYXA6d3JhcH1cbi5hY3RzIC5idG57ZmxleDoxIDEgYXV0b31cbmRldGFpbHN7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tbGluZSk7cGFkZGluZy10b3A6MTJweH1cbnN1bW1hcnl7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6dmFyKC0tbXV0KTtmb250LXNpemU6MTQuNXB4fVxuc3VtbWFyeTpob3Zlcntjb2xvcjp2YXIoLS1pbmspfVxuZGV0YWlscyAuY29kZXJvd3ttYXJnaW4tdG9wOjEwcHh9XG4ubXNne2ZvbnQtc2l6ZToxMy41cHg7bWluLWhlaWdodDoxLjNlbTttYXJnaW4tdG9wOjZweDtjb2xvcjp2YXIoLS1tdXQpfS5tc2cuZXJye2NvbG9yOnZhcigtLWVycil9XG4uc3VtUiAubGlua3thbGlnbi1zZWxmOmZsZXgtc3RhcnR9XG4uZGlzY3ttYXJnaW4tdG9wOjE4cHg7Zm9udC1zaXplOjEyLjVweDtjb2xvcjojODU4MjdhO21heC13aWR0aDoxMTBjaH1cblxuLm1vZGFse3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7ei1pbmRleDoyMTQ3NDgzMDAxO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuODIpO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOm1heCgxNHB4LGVudihzYWZlLWFyZWEtaW5zZXQtdG9wLDBweCkpIDE0cHggbWF4KDE0cHgsZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20sMHB4KSl9XG4ubWJveHtiYWNrZ3JvdW5kOnZhcigtLXN1cmZhY2UpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZTIpO2JvcmRlci1yYWRpdXM6OHB4O3dpZHRoOm1pbig1NjBweCwxMDAlKTttYXgtaGVpZ2h0OjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtvdmVyZmxvdzpoaWRkZW59XG4ubWhlYWR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDtwYWRkaW5nOjE0cHggMTZweCAxMnB4IDIwcHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tbGluZSl9XG4ubWhlYWQgaDJ7Zm9udDo2MDAgMTdweC8xLjIgdmFyKC0tZik7bGV0dGVyLXNwYWNpbmc6LjA2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfVxuLm14e2FwcGVhcmFuY2U6bm9uZTtib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6dmFyKC0taW5rKTtjdXJzb3I6cG9pbnRlcjt3aWR0aDozOHB4O2hlaWdodDozOHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtib3JkZXItcmFkaXVzOjUwJX1cbi5teDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLXN1cmZhY2UyKX1cbi5teCBzdmd7d2lkdGg6MThweDtoZWlnaHQ6MThweH1cbi5taW1ne2ZsZXg6MSAxIGF1dG87bWluLWhlaWdodDoxMjBweDtvdmVyZmxvdzphdXRvO2JhY2tncm91bmQ6IzAwMDtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO2NvbG9yOnZhcigtLW11dCk7Zm9udC1zaXplOjE0cHh9XG4ubWltZyBpbWd7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2hlaWdodDphdXRvfVxuLm1hY3R7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO3BhZGRpbmc6MTRweCAxNnB4IDZweH1cbi5tYWN0IC5idG57ZmxleDoxIDEgYXV0b31cbi5taGludHtwYWRkaW5nOjRweCAxOHB4IDE0cHg7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2YXIoLS1tdXQpfVxuXG5AbWVkaWEobWF4LXdpZHRoOjEwMjBweCl7XG4gIC5jZmd7cGFkZGluZy10b3A6MjJweH1cbiAgLm1haW57Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcik7Z2FwOjE0cHh9XG4gIC5zdGFnZWNvbHt0b3A6dmFyKC0tc3RpY2spO3otaW5kZXg6MjA7YmFja2dyb3VuZDp2YXIoLS1iZyk7bWFyZ2luOjAgLTE4cHg7cGFkZGluZzowIDAgMnB4fVxuICAucGFuZWx7b3ZlcmZsb3c6dmlzaWJsZX1cbiAgLnRhYnN7cG9zaXRpb246c3RpY2t5O3RvcDpjYWxjKHZhcigtLXN0aWNrKSArIHZhcigtLXN0YWdlaCwwcHgpIC0gMXB4KTt0cmFuc2l0aW9uOnRvcCB2YXIoLS1zdGlja3QsLjM1cykgZWFzZTt6LWluZGV4OjE5O2JhY2tncm91bmQ6dmFyKC0tc3VyZmFjZSk7Ym9yZGVyLXJhZGl1czo2cHggNnB4IDAgMDtib3gtc2hhZG93OjAgOHB4IDE0cHggLTEwcHggcmdiYSgwLDAsMCwuOSl9XG4gIC5zdGFnZXtib3JkZXItcmFkaXVzOjB9XG4gIC52YmFye3BhZGRpbmc6MTJweCA4cHggMTBweH1cbiAgLnZpZXdzIGJ1dHRvbntwYWRkaW5nOjlweCAxM3B4O2ZvbnQtc2l6ZToxMnB4fVxuICAuZnNidG57d2lkdGg6MzZweDtoZWlnaHQ6MzZweDtyaWdodDo4cHg7dG9wOjhweH1cbiAgLnN1bXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKX1cbiAgLnN1bVJ7Ym9yZGVyLWxlZnQ6MDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1saW5lKX1cbiAgLmxlZGV7ZmxleC1iYXNpczoxMDAlfVxufVxuQG1lZGlhKG1heC13aWR0aDoxMDIwcHgpIGFuZCAobWF4LWhlaWdodDo1NjBweCl7LnN0YWdlY29se3Bvc2l0aW9uOnN0YXRpY30udGFic3t0b3A6dmFyKC0tc3RpY2spfX1cbkBtZWRpYShtYXgtd2lkdGg6NjQwcHgpe1xuICAudmlld3MsLmZzZWd7ZGlzcGxheTpub25lfVxuICAudmN1cntkaXNwbGF5OmZsZXh9XG4gIC52YmFye2dhcDoxNnB4O3BhZGRpbmc6MTNweCA4cHggMTFweH1cbiAgLnZuYXZ7d2lkdGg6MzhweDtoZWlnaHQ6MzhweH1cbiAgLnN0YWdlLmZ1bGwgLmZzYmFye2dhcDoxMHB4O3BhZGRpbmc6NnB4IDhweH1cbiAgLmZzYmFyIC52Y3Vye21pbi13aWR0aDoxNTBweH1cbn1cbkBtZWRpYShtYXgtd2lkdGg6NTYwcHgpe1xuICAuaGR7cGFkZGluZy1ib3R0b206MTRweH1cbiAgLmxlZGV7Zm9udC1zaXplOjE0LjVweH1cbiAgLmNhcmRze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMyxtaW5tYXgoMCwxZnIpKTttYXgtaGVpZ2h0Om5vbmU7b3ZlcmZsb3c6dmlzaWJsZX1cbiAgLmNhcmRzLmJpZ3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDMsbWlubWF4KDAsMWZyKSk7Z2FwOjdweH1cbiAgLmNhcmRzLmJpZyAuY2FyZCAuYmxre2FzcGVjdC1yYXRpbzozLzJ9XG4gIC5jYXJkcy5iaWcgLmNhcmQgLm5te2ZvbnQtc2l6ZToxM3B4O3BhZGRpbmc6NnB4IDdweCAwfVxuICAuY2FyZHMuYmlnIC5jYXJkIC5jZHtmb250LXNpemU6MTFweDtwYWRkaW5nOjJweCA3cHggN3B4fVxuICAuY29kZXtmb250LXNpemU6MTYuNXB4O2xldHRlci1zcGFjaW5nOi4wNWVtO3BhZGRpbmc6MTFweCAxMnB4O3doaXRlLXNwYWNlOm5vd3JhcH1cbiAgLnBib2R5e3BhZGRpbmc6MTZweCAxNHB4IDE0cHh9XG4gIC56Y3twYWRkaW5nOjExcHggOXB4IDEwcHh9XG4gIC56YyAuem57Zm9udC1zaXplOjExcHg7bGV0dGVyLXNwYWNpbmc6LjA4ZW19XG4gIC5zdW0+ZGl2e3BhZGRpbmc6MjBweCAxNnB4fVxuICAuYWN0cyAuYnRue2ZsZXg6MSAxIDEwMCV9XG4gIC5mc2JhciBidXR0b257cGFkZGluZzoxMHB4IDlweDtmb250LXNpemU6MTFweDtsZXR0ZXItc3BhY2luZzouMDJlbX1cbiAgLnBmb290IC5idG57ZmxleDoxIDEgMTAwJX1cbn1cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upeyp7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH19XG4iOwp2YXIgSFRNTD0iPGRpdiBjbGFzcz1cImNmZ1wiIGlkPVwiY2ZnXCI+PGRpdiBjbGFzcz1cImhkXCI+PGRpdj48cCBjbGFzcz1cImV5ZWJyb3dcIiBkYXRhLWk9XCJleWJcIj5QUyBBdXRvbW9iaWxlPFwvcD48aDEgZGF0YS1pPVwiaDFcIj45NjQgU1QgS29uZmlndXJhdG9yPFwvaDE+PFwvZGl2PjxwIGNsYXNzPVwibGVkZVwiIGRhdGEtaT1cImxlZGVcIj48XC9wPjxkaXYgY2xhc3M9XCJsYW5nXCIgaWQ9XCJsYW5nYm94XCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlNwcmFjaGUgLyBMYW5ndWFnZVwiPjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZmxhZ1wiIGlkPVwibGdEZVwiIGFyaWEtcHJlc3NlZD1cInRydWVcIiBhcmlhLWxhYmVsPVwiRGV1dHNjaFwiIHRpdGxlPVwiRGV1dHNjaFwiPjxzdmcgdmlld0JveD1cIjAgMCAzMCAyMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxyZWN0IHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCI3XCIgZmlsbD1cIiMwMDBcIi8+PHJlY3QgeT1cIjdcIiB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiNlwiIGZpbGw9XCIjZGQwMDAwXCIvPjxyZWN0IHk9XCIxM1wiIHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCI3XCIgZmlsbD1cIiNmZmNlMDBcIi8+PFwvc3ZnPjxcL2J1dHRvbj48YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImZsYWdcIiBpZD1cImxnRW5cIiBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiIGFyaWEtbGFiZWw9XCJFbmdsaXNoXCIgdGl0bGU9XCJFbmdsaXNoXCI+PHN2ZyB2aWV3Qm94PVwiMCAwIDMwIDIwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PHJlY3Qgd2lkdGg9XCIzMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIiMwMTIxNjlcIi8+PHBhdGggZD1cIk0wIDBsMzAgMjBNMzAgMEwwIDIwXCIgc3Ryb2tlPVwiI2ZmZlwiIHN0cm9rZS13aWR0aD1cIjRcIi8+PHBhdGggZD1cIk0wIDBsMzAgMjBNMzAgMEwwIDIwXCIgc3Ryb2tlPVwiI2M4MTAyZVwiIHN0cm9rZS13aWR0aD1cIjEuNlwiLz48cGF0aCBkPVwiTTE1IDB2MjBNMCAxMGgzMFwiIHN0cm9rZT1cIiNmZmZcIiBzdHJva2Utd2lkdGg9XCI2LjZcIi8+PHBhdGggZD1cIk0xNSAwdjIwTTAgMTBoMzBcIiBzdHJva2U9XCIjYzgxMDJlXCIgc3Ryb2tlLXdpZHRoPVwiNFwiLz48XC9zdmc+PFwvYnV0dG9uPjxcL2Rpdj48XC9kaXY+PGRpdiBjbGFzcz1cIm1haW5cIj48ZGl2IGNsYXNzPVwic3RhZ2Vjb2xcIiBpZD1cInN0YWdlY29sXCI+PGRpdiBjbGFzcz1cInN0YWdlXCIgaWQ9XCJzdGFnZVwiPjxzcGFuIGNsYXNzPVwidGlja1wiIGlkPVwidGlja1wiPjxcL3NwYW4+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJpYnRuIGZzYnRuXCIgaWQ9XCJmc2JcIj48c3ZnIGNsYXNzPVwiaWMtZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48cGF0aCBkPVwiTTQgOVY0aDVNMjAgOVY0aC01TTQgMTV2NWg1TTIwIDE1djVoLTVcIi8+PFwvc3ZnPjxzdmcgY2xhc3M9XCJpYy14XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxwYXRoIGQ9XCJNNSA1bDE0IDE0TTE5IDVMNSAxOVwiLz48XC9zdmc+PFwvYnV0dG9uPjxkaXYgY2xhc3M9XCJmc2JhclwiIGlkPVwiZnNiYXJcIiByb2xlPVwiZ3JvdXBcIj48YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInZuYXZcIiBpZD1cImZwdlwiPjxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxwYXRoIGQ9XCJNMTUgNWwtNyA3IDcgN1wiLz48XC9zdmc+PFwvYnV0dG9uPjxkaXYgY2xhc3M9XCJmc2VnXCIgaWQ9XCJmc2VnXCI+PFwvZGl2PjxkaXYgY2xhc3M9XCJ2Y3VyXCI+PGI+PFwvYj48c3BhbiBjbGFzcz1cImRvdHNcIj48XC9zcGFuPjxcL2Rpdj48YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInZuYXZcIiBpZD1cImZueFwiPjxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxwYXRoIGQ9XCJNOSA1bDcgNy03IDdcIi8+PFwvc3ZnPjxcL2J1dHRvbj48XC9kaXY+PGRpdiBjbGFzcz1cImxvYWRpbmdcIiBpZD1cImxvYWRpbmdcIj48XC9kaXY+PGRpdiBpZD1cImN2c1wiPjxcL2Rpdj48XC9kaXY+PGRpdiBjbGFzcz1cInZiYXJcIj48YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInZuYXZcIiBpZD1cInB2XCI+PHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PHBhdGggZD1cIk0xNSA1bC03IDcgNyA3XCIvPjxcL3N2Zz48XC9idXR0b24+PGRpdiBjbGFzcz1cInZpZXdzXCIgaWQ9XCJzZWdcIiByb2xlPVwiZ3JvdXBcIj48XC9kaXY+PGRpdiBjbGFzcz1cInZjdXJcIj48Yj48XC9iPjxzcGFuIGNsYXNzPVwiZG90c1wiPjxcL3NwYW4+PFwvZGl2PjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidm5hdlwiIGlkPVwibnhcIj48c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48cGF0aCBkPVwiTTkgNWw3IDctNyA3XCIvPjxcL3N2Zz48XC9idXR0b24+PFwvZGl2PjxcL2Rpdj48c2VjdGlvbiBjbGFzcz1cInBhbmVsXCIgaWQ9XCJwYW5lbFwiPjxkaXYgY2xhc3M9XCJ0YWJzXCIgaWQ9XCJ6Y2FyZHNcIiByb2xlPVwidGFibGlzdFwiPjxcL2Rpdj48ZGl2IGNsYXNzPVwicGJvZHlcIiByb2xlPVwidGFicGFuZWxcIj48ZGl2IGNsYXNzPVwicGhlYWRcIj48aDIgaWQ9XCJsaWJ0aXRsZVwiPjxcL2gyPjxwIGlkPVwibGlic3ViXCI+PFwvcD48XC9kaXY+PGRpdiBjbGFzcz1cImNoaXBzXCIgaWQ9XCJjb2xsc1wiIHJvbGU9XCJncm91cFwiPjxcL2Rpdj48ZGl2IGNsYXNzPVwiZmFtc1wiIGlkPVwiZmFtc1wiIHJvbGU9XCJncm91cFwiPjxcL2Rpdj48aW5wdXQgY2xhc3M9XCJxXCIgaWQ9XCJxXCIgdHlwZT1cInNlYXJjaFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiPjxkaXYgY2xhc3M9XCJoaW50XCIgaWQ9XCJoaW50XCIgYXJpYS1saXZlPVwicG9saXRlXCI+PFwvZGl2PjxkaXYgY2xhc3M9XCJjYXJkc1wiIGlkPVwiY2FyZHNcIiByb2xlPVwibGlzdGJveFwiPjxcL2Rpdj48ZGl2IGNsYXNzPVwicGZvb3RcIj48YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImxpbmtcIiBpZD1cInJ6XCI+PFwvYnV0dG9uPjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIHNtXCIgaWQ9XCJueHRcIj48XC9idXR0b24+PFwvZGl2PjxcL2Rpdj48XC9zZWN0aW9uPjxcL2Rpdj48c2VjdGlvbiBjbGFzcz1cInN1bVwiIGlkPVwic3VtXCI+PGRpdiBjbGFzcz1cInN1bUxcIj48aDIgZGF0YS1pPVwic3VtaFwiPjxcL2gyPjxkaXYgY2xhc3M9XCJzaGVldFwiIGlkPVwic2hlZXRcIj48XC9kaXY+PFwvZGl2PjxkaXYgY2xhc3M9XCJzdW1SXCI+PHNwYW4gY2xhc3M9XCJsYmxcIiBkYXRhLWk9XCJjb2RlTGJsXCI+PFwvc3Bhbj48ZGl2IGNsYXNzPVwiY29kZXJvd1wiPjxvdXRwdXQgY2xhc3M9XCJjb2RlXCIgaWQ9XCJteWNvZGVcIj48XC9vdXRwdXQ+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gZyBzbVwiIGlkPVwiY2NcIiBkYXRhLWk9XCJjb3B5XCI+PFwvYnV0dG9uPjxcL2Rpdj48ZGl2IGNsYXNzPVwiYWN0c1wiPjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuXCIgaWQ9XCJleFwiPjxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxwYXRoIGQ9XCJNMTIgNHYxMU03IDExbDUgNSA1LTVNNSAyMGgxNFwiLz48XC9zdmc+PHNwYW4gZGF0YS1pPVwic2F2ZVwiPjxcL3NwYW4+PFwvYnV0dG9uPjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGdcIiBpZD1cInNsXCIgZGF0YS1pPVwiY29weWxpbmtcIj48XC9idXR0b24+PGEgY2xhc3M9XCJidG4gZ1wiIGlkPVwicnFcIiBkYXRhLWk9XCJyZXF1ZXN0XCIgaHJlZj1cIm1haWx0bzpvZmZpY2VAcHNhdXRvbW9iaWxlLmRlXCI+PFwvYT48XC9kaXY+PGRldGFpbHM+PHN1bW1hcnkgZGF0YS1pPVwiaGF2ZUNvZGVcIj48XC9zdW1tYXJ5Pjxmb3JtIGNsYXNzPVwiY29kZXJvd1wiIGlkPVwibGZcIj48aW5wdXQgY2xhc3M9XCJjb2RlXCIgaWQ9XCJpbmNcIiBwbGFjZWhvbGRlcj1cIlBTLVMxMlUtVDAyTS1aRVVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIj48YnV0dG9uIGNsYXNzPVwiYnRuIGcgc21cIiB0eXBlPVwic3VibWl0XCIgZGF0YS1pPVwib3BlblwiPjxcL2J1dHRvbj48XC9mb3JtPjxkaXYgY2xhc3M9XCJtc2dcIiBpZD1cIm1zZ1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPjxcL2Rpdj48XC9kZXRhaWxzPjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibGlua1wiIGlkPVwicmFcIiBkYXRhLWk9XCJyZXNldGFsbFwiPjxcL2J1dHRvbj48XC9kaXY+PFwvc2VjdGlvbj48cCBjbGFzcz1cImRpc2NcIiBkYXRhLWk9XCJkaXNjXCI+PFwvcD48ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cIm1vZGFsXCIgaGlkZGVuIHJvbGU9XCJkaWFsb2dcIiBhcmlhLW1vZGFsPVwidHJ1ZVwiPjxkaXYgY2xhc3M9XCJtYm94XCI+PGRpdiBjbGFzcz1cIm1oZWFkXCI+PGgyIGRhdGEtaT1cImV4aFwiPjxcL2gyPjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibXhcIiBpZD1cIm14XCI+PHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PHBhdGggZD1cIk01IDVsMTQgMTRNMTkgNUw1IDE5XCIvPjxcL3N2Zz48XC9idXR0b24+PFwvZGl2PjxkaXYgY2xhc3M9XCJtaW1nXCIgaWQ9XCJtaW1nXCI+PFwvZGl2PjxkaXYgY2xhc3M9XCJtYWN0XCI+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG5cIiBpZD1cImRsXCIgZGF0YS1pPVwiZGxcIj48XC9idXR0b24+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gZ1wiIGlkPVwic2hcIiBkYXRhLWk9XCJzaGFyZVwiIGhpZGRlbj48XC9idXR0b24+PFwvZGl2PjxwIGNsYXNzPVwibWhpbnRcIiBkYXRhLWk9XCJleGhpbnRcIj48XC9wPjxcL2Rpdj48XC9kaXY+PFwvZGl2PiI7CnZhciBDRkc9d2luZG93LlBTOTY0fHx7fTsKdmFyIGhvc3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BzOTY0LWtvbmZpZ3VyYXRvcicpOwppZighaG9zdHx8aG9zdC5zaGFkb3dSb290KXJldHVybjsKdmFyIHJvb3Q9aG9zdC5hdHRhY2hTaGFkb3coe21vZGU6J29wZW4nfSk7CnJvb3QuaW5uZXJIVE1MPSc8c3R5bGU+JytDU1MrJzwvc3R5bGU+JytIVE1MOwp2YXIgJD1mdW5jdGlvbihpKXtyZXR1cm4gcm9vdC5nZXRFbGVtZW50QnlJZChpKX07CnZhciBCQVNFPUNGRy5iYXNlfHwnJyxBTUFQPUNGRy5maWxlc3x8e30sQVBSRT1DRkcucHJlZml4fHwnJzsKZnVuY3Rpb24gYXNzZXQobil7cmV0dXJuIEJBU0UrKEFNQVBbbl18fEFQUkUrbil9CnZhciBsYW5nPUNGRy5sYW5nfHwoL15cL2VuKFwvfCQpLy50ZXN0KGxvY2F0aW9uLnBhdGhuYW1lKT8nZW4nOidkZScpOwppZihDRkcuc3RhbmRhbG9uZSl7dHJ5e3ZhciBzbD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHMtbGFuZycpO2lmKHNsPT09J2VuJ3x8c2w9PT0nZGUnKWxhbmc9c2x9Y2F0Y2goZSl7fX0KdmFyIFRYPXsKIGRlOntleWI6J1BTIEF1dG9tb2JpbGUnLGgxOic5NjQgU1QgS29uZmlndXJhdG9yJyxsZWRlOidTdGVsbCBkaXIgZGVpbmVuIGdhbnogaW5kaXZpZHVlbGxlbiA5NjQgU1QgenVzYW1tZW46IExhY2ssIFppZXJlbGVtZW50ZSB1bmQgRmVsZ2VuLiBKZWRlIFNvbmRlcmZhcmJlIGtcdTAwZjZubmVuIHdpciBmXHUwMGZjciBkaWNoIHJlYWxpc2llcmVuLicsCiAgbG9hZGluZzonRmFocnpldWcgd2lyZCBnZWxhZGVuJyxsb2FkZmFpbDonQmlsZCBrb25udGUgbmljaHQgZ2VsYWRlbiB3ZXJkZW4nLGZzOidWb2xsYmlsZCcsZnN4OidWb2xsYmlsZCBzY2hsaWVcdTAwZGZlbicscHJldjonVm9yaGVyaWdlIEFuc2ljaHQnLG5leHQ6J05cdTAwZTRjaHN0ZSBBbnNpY2h0JywKICB6YjonTGFjaycsenQ6J1ppZXJlbGVtZW50ZScsenc6J0ZlbGdlbicsaGI6J0xhY2tmYXJiZSB3XHUwMGU0aGxlbicsaHQ6J1ppZXJlbGVtZW50ZSB3XHUwMGU0aGxlbicsaHc6J0ZlbGdlbmZhcmJlIHdcdTAwZTRobGVuJywKICBzYjonU2VyaWVuZmFyYmVuLCBrbGFzc2lzY2hlIFBvcnNjaGUtRmFyYmVuLCBQYWludCB0byBTYW1wbGUgdW5kIFJBTC4nLHN0OidGZW5zdGVycmFobWVuLCBaaWVybGVpc3RlbiwgR2l0dGVyLCBTY2hlaW53ZXJmZXJyaW5nZSwgU3BpZWdlbCB1bmQgSFx1MDBmNnJuZXIuJyxzdzonRGllIEZlbGdlbiBcdTAwZmNiZXJuZWhtZW4gYXV0b21hdGlzY2ggZGllIEZhcmJlIGRlciBaaWVyZWxlbWVudGUuIER1IGthbm5zdCBzaWUgaGllciBlaW56ZWxuIFx1MDBlNG5kZXJuLicsCiAgY0E6J0FsbGUnLGNTOidTZXJpZScsY0s6J0tsYXNzaWtlcicsY1A6J1BhaW50IHRvIFNhbXBsZScsY1I6J1JBTCcsc2VhcmNoOidGYXJiZSBzdWNoZW4sIHouIEIuIEd1bGYsIEdyXHUwMGZjbiwgMzAyMCcsCiAgbWV0YWxsaWM6J01ldGFsbGljJyxzb2xpZDonVW5pJyxoZzonSG9jaGdsYW56JyxiaGc6J1NjaHdhcnogSG9jaGdsYW56JyxzbTonU2VpZGVubWF0dCcscG9sOidQb2xpZXJ0JyxnbDonR2xcdTAwZTRuemVuZCcsbXQ6J01hdHQnLGxhY2s6J0xhY2tpZXJ0JywKICBvcmdXOidTaWxiZXIgcG9saWVydCcsb3JnVDonQ2hyb20nLG9yZ0I6J1N0b25lIEdyZXknLGJvZHk6J1dhZ2VuZmFyYmUnLGFzVHJpbTonV2llIFppZXJlbGVtZW50ZScsYXV0bzonQXV0bycsZm9sbG93czonZm9sZ3QgZGVtIExhY2snLAogIGFsbGNvbDonQWxsZSBGYXJiZW4nLGhpdHM6J1RyZWZmZXInLG5vbmU6J05pY2h0cyBnZWZ1bmRlbi4gQW5kZXJlbiBCZWdyaWZmIG9kZXIgYWxsZSBGYXJiZW4gcHJvYmllcmVuLicsCiAgYmFja1c6J1p1clx1MDBmY2NrIGF1ZiBcdTIwMWVXaWUgWmllcmVsZW1lbnRlXHUyMDFjJyxiYWNrVDonWnVyXHUwMGZjY2sgYXVmIENocm9tJyxiYWNrQjonWnVyXHUwMGZjY2sgYXVmIFN0b25lIEdyZXknLAogIG5leHRUOidXZWl0ZXI6IFppZXJlbGVtZW50ZScsbmV4dFc6J1dlaXRlcjogRmVsZ2VuJyxuZXh0UzonWnVyIFp1c2FtbWVuZmFzc3VuZycsCiAgc3VtaDonRGVpbmUgS29uZmlndXJhdGlvbicsY29kZUxibDonS29uZmlndXJhdGlvbnNjb2RlJyxjb3B5OidLb3BpZXJlbicsY29waWVkOidLb3BpZXJ0Jyxub3BlOidOaWNodCBtXHUwMGY2Z2xpY2gnLHNhdmU6J0JpbGQgc3BlaWNoZXJuJyxjb3B5bGluazonTGluayBrb3BpZXJlbicscmVxdWVzdDonQW5mcmFnZSBzZW5kZW4nLAogIGhhdmVDb2RlOidEdSBoYXN0IHNjaG9uIGVpbmVuIENvZGU\/IEhpZXIgXHUwMGY2ZmZuZW4nLG9wZW46J1x1MDBkNmZmbmVuJyxyZXNldGFsbDonQWxsZXMgenVyXHUwMGZjY2tzZXR6ZW4nLAogIGVyckZtdDonQ29kZSBuaWNodCBlcmthbm50LiBFciBzaWVodCBzbyBhdXM6IFBTLVMxMlUtVDAyTS1aRVUnLGVyck5vMTonRmFyYmUgJyxlcnJObzI6JyBnaWJ0IGVzIGluIGRlciBBdXN3YWhsIG5pY2h0LicsZXJyQm9keTonRGllc2VyIFdlcnQgcGFzc3QgbmljaHQgYW4gZGllc2UgU3RlbGxlIGRlcyBDb2Rlcy4nLG9rT3BlbjonS29uZmlndXJhdGlvbiBnZVx1MDBmNmZmbmV0LicsCiAgZXhoOidEZWluZSBLb25maWd1cmF0aW9uIGFscyBCaWxkJyxkbDonQmlsZCBzcGVpY2hlcm4nLHNoYXJlOidUZWlsZW4nLGV4aGludDonVGlwcDogQXVmIGRlbSBIYW5keSBkYXMgQmlsZCBnZWRyXHUwMGZjY2t0IGhhbHRlbiwgdW0gZXMgaW4gZGVpbmVuIEZvdG9zIHp1IHNpY2hlcm4uJyxleHdhaXQ6J0JpbGQgd2lyZCBlcnN0ZWxsdCBcdTIwMjYnLGV4ZmFpbDonRGFzIEJpbGQga29ubnRlIG5pY2h0IGVyc3RlbGx0IHdlcmRlbi4gQml0dGUgdmVyc3VjaGUgZXMgbm9jaCBlaW5tYWwuJywKICBjVGl0bGU6J0tvbmZpZ3VyYXRpb24nLGNEaXNjOidCaWxkc2NoaXJtZGFyc3RlbGx1bmcuIFZlcmJpbmRsaWNoIGlzdCBkYXMgRmFyYm11c3RlciwgZGFzIHdpciBnZW1laW5zYW0gYXVzd1x1MDBlNGhsZW4uJywKICBtYWlsU3ViOidBbmZyYWdlIDk2NCBTVCBLb25maWd1cmF0aW9uJyxtYWlsSGk6J0hhbGxvIFBTIEF1dG9tb2JpbGUsXG5cbmljaCBpbnRlcmVzc2llcmUgbWljaCBmXHUwMGZjciBlaW5lbiA5NjQgU1QgaW4gZGllc2VyIEtvbmZpZ3VyYXRpb246XG5cbicsbWFpbEJ5ZTonXG5cbkJpdHRlIG1lbGRldCBldWNoIGJlaSBtaXIuXG5cblZpZWxlIEdyXHUwMGZjXHUwMGRmZVxuJywKICBkaXNjOidCaWxkc2NoaXJtZmFyYmVuIHdlaWNoZW4gdm9tIGVjaHRlbiBMYWNrIGFiLiBWZXJiaW5kbGljaCBpc3QgZGFzIEZhcmJtdXN0ZXIsIGRhcyB3aXIgZ2VtZWluc2FtIG1pdCBkaXIgYXVzd1x1MDBlNGhsZW4uIERpZXNlciBLb25maWd1cmF0b3IgaXN0IGVpbiB1bmFiaFx1MDBlNG5naWdlcyBBbmdlYm90IHZvbiBQUyBBdXRvbW9iaWxlLiBFcyBiZXN0ZWh0IGtlaW5lIFZlcmJpbmR1bmcgenVyIERyLiBJbmcuIGguYy4gRi4gUG9yc2NoZSBBRy4gUG9yc2NoZSB1bmQgdmVyd2FuZHRlIE1hcmtlbiB3ZXJkZW4gbnVyIHp1IFJlZmVyZW56endlY2tlbiBnZW5hbm50Lid9LAogZW46e2V5YjonUFMgQXV0b21vYmlsZScsaDE6Jzk2NCBTVCBDb25maWd1cmF0b3InLGxlZGU6J1B1dCB0b2dldGhlciB5b3VyIHZlcnkgb3duIDk2NCBTVDogcGFpbnQsIHRyaW0gYW5kIHdoZWVscy4gV2UgY2FuIHJlYWxpc2UgYW55IHNwZWNpYWwgY29sb3VyIGZvciB5b3UuJywKICBsb2FkaW5nOidMb2FkaW5nIHZlaGljbGUnLGxvYWRmYWlsOidJbWFnZSBjb3VsZCBub3QgYmUgbG9hZGVkJyxmczonRnVsbCBzY3JlZW4nLGZzeDonQ2xvc2UgZnVsbCBzY3JlZW4nLHByZXY6J1ByZXZpb3VzIHZpZXcnLG5leHQ6J05leHQgdmlldycsCiAgemI6J1BhaW50Jyx6dDonVHJpbScsenc6J1doZWVscycsaGI6J0Nob29zZSB5b3VyIHBhaW50JyxodDonQ2hvb3NlIHlvdXIgdHJpbScsaHc6J0Nob29zZSB5b3VyIHdoZWVsIGNvbG91cicsCiAgc2I6J1N0YW5kYXJkIGNvbG91cnMsIGNsYXNzaWMgUG9yc2NoZSBjb2xvdXJzLCBQYWludCB0byBTYW1wbGUgYW5kIFJBTC4nLHN0OidXaW5kb3cgZnJhbWVzLCB0cmltIHN0cmlwcywgZ3JpbGxlcywgaGVhZGxpZ2h0IHJpbmdzLCBtaXJyb3JzIGFuZCBvdmVyLXJpZGVycy4nLHN3OidUaGUgd2hlZWxzIGF1dG9tYXRpY2FsbHkgZm9sbG93IHRoZSB0cmltIGNvbG91ci4gWW91IGNhbiBjaGFuZ2UgdGhlbSBzZXBhcmF0ZWx5IGhlcmUuJywKICBjQTonQWxsJyxjUzonU3RhbmRhcmQnLGNLOidDbGFzc2ljcycsY1A6J1BhaW50IHRvIFNhbXBsZScsY1I6J1JBTCcsc2VhcmNoOidTZWFyY2ggYSBjb2xvdXIsIGUuZy4gR3VsZiwgZ3JlZW4sIDMwMjAnLAogIG1ldGFsbGljOidNZXRhbGxpYycsc29saWQ6J1NvbGlkJyxoZzonSGlnaCBnbG9zcycsYmhnOidIaWdoLWdsb3NzIGJsYWNrJyxzbTonU2F0aW4nLHBvbDonUG9saXNoZWQnLGdsOidHbG9zcycsbXQ6J01hdHQnLGxhY2s6J1BhaW50ZWQnLAogIG9yZ1c6J1BvbGlzaGVkIHNpbHZlcicsb3JnVDonQ2hyb21lJyxvcmdCOidTdG9uZSBHcmV5Jyxib2R5OidCb2R5IGNvbG91cicsYXNUcmltOidTYW1lIGFzIHRyaW0nLGF1dG86J0F1dG8nLGZvbGxvd3M6J2ZvbGxvd3MgdGhlIHBhaW50JywKICBhbGxjb2w6J0FsbCBjb2xvdXJzJyxoaXRzOidtYXRjaGVzJyxub25lOidOb3RoaW5nIGZvdW5kLiBUcnkgYW5vdGhlciB0ZXJtIG9yIHNob3cgYWxsIGNvbG91cnMuJywKICBiYWNrVzonQmFjayB0byBcdTIwMWNTYW1lIGFzIHRyaW1cdTIwMWQnLGJhY2tUOidCYWNrIHRvIGNocm9tZScsYmFja0I6J0JhY2sgdG8gU3RvbmUgR3JleScsCiAgbmV4dFQ6J05leHQ6IFRyaW0nLG5leHRXOidOZXh0OiBXaGVlbHMnLG5leHRTOidUbyB5b3VyIHN1bW1hcnknLAogIHN1bWg6J1lvdXIgY29uZmlndXJhdGlvbicsY29kZUxibDonQ29uZmlndXJhdGlvbiBjb2RlJyxjb3B5OidDb3B5Jyxjb3BpZWQ6J0NvcGllZCcsbm9wZTonTm90IHBvc3NpYmxlJyxzYXZlOidTYXZlIGltYWdlJyxjb3B5bGluazonQ29weSBsaW5rJyxyZXF1ZXN0OidTZW5kIGVucXVpcnknLAogIGhhdmVDb2RlOidBbHJlYWR5IGhhdmUgYSBjb2RlPyBPcGVuIGl0IGhlcmUnLG9wZW46J09wZW4nLHJlc2V0YWxsOidSZXNldCBldmVyeXRoaW5nJywKICBlcnJGbXQ6J0NvZGUgbm90IHJlY29nbmlzZWQuIEl0IGxvb2tzIGxpa2UgdGhpczogUFMtUzEyVS1UMDJNLVpFVScsZXJyTm8xOidDb2xvdXIgJyxlcnJObzI6JyBpcyBub3QgaW4gdGhlIHNlbGVjdGlvbi4nLGVyckJvZHk6J1RoaXMgdmFsdWUgZG9lcyBub3QgZml0IHRoaXMgcG9zaXRpb24gb2YgdGhlIGNvZGUuJyxva09wZW46J0NvbmZpZ3VyYXRpb24gb3BlbmVkLicsCiAgZXhoOidZb3VyIGNvbmZpZ3VyYXRpb24gYXMgYW4gaW1hZ2UnLGRsOidTYXZlIGltYWdlJyxzaGFyZTonU2hhcmUnLGV4aGludDonVGlwOiBvbiB5b3VyIHBob25lLCBwcmVzcyBhbmQgaG9sZCB0aGUgaW1hZ2UgdG8gc2F2ZSBpdCB0byB5b3VyIHBob3Rvcy4nLGV4d2FpdDonQ3JlYXRpbmcgaW1hZ2UgXHUyMDI2JyxleGZhaWw6J1RoZSBpbWFnZSBjb3VsZCBub3QgYmUgY3JlYXRlZC4gUGxlYXNlIHRyeSBhZ2Fpbi4nLAogIGNUaXRsZTonQ29uZmlndXJhdGlvbicsY0Rpc2M6J1NjcmVlbiByZW5kZXJpbmcuIFRoZSBjb2xvdXIgc2FtcGxlIHdlIGNob29zZSB0b2dldGhlciBpcyBiaW5kaW5nLicsCiAgbWFpbFN1YjonRW5xdWlyeSA5NjQgU1QgY29uZmlndXJhdGlvbicsbWFpbEhpOidIZWxsbyBQUyBBdXRvbW9iaWxlLFxuXG5JIGFtIGludGVyZXN0ZWQgaW4gYSA5NjQgU1QgaW4gdGhpcyBjb25maWd1cmF0aW9uOlxuXG4nLG1haWxCeWU6J1xuXG5QbGVhc2UgZ2V0IGluIHRvdWNoLlxuXG5LaW5kIHJlZ2FyZHNcbicsCiAgZGlzYzonU2NyZWVuIGNvbG91cnMgZGlmZmVyIGZyb20gcmVhbCBwYWludC4gVGhlIGNvbG91ciBzYW1wbGUgd2UgY2hvb3NlIHRvZ2V0aGVyIHdpdGggeW91IGlzIGJpbmRpbmcuIFRoaXMgY29uZmlndXJhdG9yIGlzIGFuIGluZGVwZW5kZW50IG9mZmVyIGJ5IFBTIEF1dG9tb2JpbGUuIFRoZXJlIGlzIG5vIGFmZmlsaWF0aW9uIHdpdGggRHIuIEluZy4gaC5jLiBGLiBQb3JzY2hlIEFHLiBQb3JzY2hlIGFuZCByZWxhdGVkIG1hcmtzIGFyZSB1c2VkIGZvciByZWZlcmVuY2Ugb25seS4nfQp9OwpmdW5jdGlvbiB0cihrKXtyZXR1cm4gVFhbbGFuZ11ba118fFRYLmRlW2tdfHxrfQp2YXIgTk1fRU49eydSb3NcdTAwZTlnb2xkJzonUm9zZSBnb2xkJywnU2lsYmVyIG1hdHQnOidNYXR0ZSBzaWx2ZXInLCdHcmFuZCBQcml4IFdlaVx1MDBkZic6J0dyYW5kIFByaXggV2hpdGUnLCdDYXJyYXJhIFdlaVx1MDBkZic6J0NhcnJhcmEgV2hpdGUnLCdLcmVpZGUnOidDaGFsaycsJ1BvbGFyc2lsYmVyJzonUG9sYXIgU2lsdmVyJywnR1QgU2lsYmVyJzonR1QgU2lsdmVyJywnRWlzZ3JhdSc6J0ljZSBHcmV5JywnQWNoYXRncmF1JzonQWdhdGUgR3JleScsJ1NjaGllZmVyZ3JhdSc6J1NsYXRlIEdyZXknLCdWdWxrYW5ncmF1JzonVm9sY2FubyBHcmV5JywnVGllZnNjaHdhcnonOidKZXQgQmxhY2snLCdTY2h3YXJ6IE1ldGFsbGljJzonQmxhY2sgTWV0YWxsaWMnLCdJbmRpc2Nocm90JzonSW5kaWFuIFJlZCcsJ0Nhcm1pbnJvdCc6J0Nhcm1pbmUgUmVkJywnU2lnbmFsb3JhbmdlJzonU2lnbmFsIE9yYW5nZScsJ0FsYmVydGJsYXUnOidBbGJlcnQgQmx1ZScsJ0VuemlhbmJsYXUnOidHZW50aWFuIEJsdWUnLCdTYXBoaXJibGF1JzonU2FwcGhpcmUgQmx1ZScsJ05hY2h0YmxhdSc6J05pZ2h0IEJsdWUnLCdJcmlzY2hnclx1MDBmY24nOidJcmlzaCBHcmVlbicsJ0F2ZW50dXJpbmdyXHUwMGZjbic6J0F2ZW50dXJpbmUgR3JlZW4nLCdKZXRnclx1MDBmY24nOidKZXQgR3JlZW4nLCdTZXBpYWJyYXVuJzonU2VwaWEgQnJvd24nLCdDaGFtcGFnbmVydG9uJzonQ2hhbXBhZ25lJywKICdNZXhpY29ibGF1JzonTWV4aWNvIEJsdWUnLCdNaWFtaWJsYXUnOidNaWFtaSBCbHVlJywnTGF2ZW5kZWxibGF1JzonTGF2ZW5kZXIgQmx1ZScsJ1VsdHJhdmlvbGV0dCc6J1VsdHJhdmlvbGV0JywnU2lnbmFsZ2VsYic6J1NpZ25hbCBZZWxsb3cnLCdCYWhhbWFnZWxiJzonQmFoYW1hIFllbGxvdycsJ1Bhc3RlbGxnZWxiJzonUGFzdGVsIFllbGxvdycsJ1NpZ25hbGdyXHUwMGZjbic6J1NpZ25hbCBHcmVlbicsJ09saXZnclx1MDBmY24nOidPbGl2ZSBHcmVlbicsCiAnUGVybHdlaVx1MDBkZic6J095c3RlciBXaGl0ZScsJ0hlbGxlbGZlbmJlaW4nOidMaWdodCBJdm9yeScsJ1JhcHNnZWxiJzonUmFwZSBZZWxsb3cnLCdWZXJrZWhyc2dlbGInOidUcmFmZmljIFllbGxvdycsJ1JlaW5vcmFuZ2UnOidQdXJlIE9yYW5nZScsJ1ZlcmtlaHJzb3JhbmdlJzonVHJhZmZpYyBPcmFuZ2UnLCdGZXVlcnJvdCc6J0ZsYW1lIFJlZCcsJ1NpZ25hbHJvdCc6J1NpZ25hbCBSZWQnLCdSdWJpbnJvdCc6J1J1YnkgUmVkJywnUHVycHVycm90JzonUHVycGxlIFJlZCcsJ1dlaW5yb3QnOidXaW5lIFJlZCcsJ1ZlcmtlaHJzcm90JzonVHJhZmZpYyBSZWQnLCdCbGF1bGlsYSc6J0JsdWUgTGlsYWMnLCdTaWduYWx2aW9sZXR0JzonU2lnbmFsIFZpb2xldCcsJ1VsdHJhbWFyaW5ibGF1JzonVWx0cmFtYXJpbmUgQmx1ZScsJ1NpZ25hbGJsYXUnOidTaWduYWwgQmx1ZScsJ0xpY2h0YmxhdSc6J0xpZ2h0IEJsdWUnLCdIaW1tZWxibGF1JzonU2t5IEJsdWUnLCdWZXJrZWhyc2JsYXUnOidUcmFmZmljIEJsdWUnLCdQYXN0ZWxsYmxhdSc6J1Bhc3RlbCBCbHVlJywnTGF1YmdyXHUwMGZjbic6J0xlYWYgR3JlZW4nLCdNb29zZ3JcdTAwZmNuJzonTW9zcyBHcmVlbicsJ1Rhbm5lbmdyXHUwMGZjbic6J0ZpciBHcmVlbicsJ0dyYXNnclx1MDBmY24nOidHcmFzcyBHcmVlbicsJ0dlbGJnclx1MDBmY24nOidZZWxsb3cgR3JlZW4nLCdNaW56Z3JcdTAwZmNuJzonTWludCBHcmVlbicsJ1Bhc3RlbGx0XHUwMGZjcmtpcyc6J1Bhc3RlbCBUdXJxdW9pc2UnLCdTaWxiZXJncmF1JzonU2lsdmVyIEdyZXknLCdFaXNlbmdyYXUnOidJcm9uIEdyZXknLCdBbnRocmF6aXRncmF1JzonQW50aHJhY2l0ZSBHcmV5JywnU2Nod2FyemdyYXUnOidCbGFjayBHcmV5JywnR3JhcGhpdGdyYXUnOidHcmFwaGl0ZSBHcmV5JywnU3RlaW5ncmF1JzonU3RvbmUgR3JleScsJ0xpY2h0Z3JhdSc6J0xpZ2h0IEdyZXknLCdGZW5zdGVyZ3JhdSc6J1dpbmRvdyBHcmV5JywnU2VpZGVuZ3JhdSc6J1NpbGsgR3JleScsJ0t1cGZlcmJyYXVuJzonQ29wcGVyIEJyb3duJywnTnVzc2JyYXVuJzonTnV0IEJyb3duJywnU2Nob2tvbGFkZW5icmF1bic6J0Nob2NvbGF0ZSBCcm93bicsJ0NyZW1ld2VpXHUwMGRmJzonQ3JlYW0nLCdHcmF1d2VpXHUwMGRmJzonR3JleSBXaGl0ZScsJ1JlaW53ZWlcdTAwZGYnOidQdXJlIFdoaXRlJywnVmVya2VocnN3ZWlcdTAwZGYnOidUcmFmZmljIFdoaXRlJywKICdDaHJvbSc6J0Nocm9tZScsJ1R1cnF1b2lzZSBNZXRhbGxpYyc6J1R1cnF1b2lzZSBNZXRhbGxpYycsJ1NpbGJlciBzZWlkZW5tYXR0JzonU2F0aW4gU2lsdmVyJywnQ2hhbXBhZ25lcic6J0NoYW1wYWduZScsJ0FudGhyYXppdCc6J0FudGhyYWNpdGUnLCdLdXBmZXInOidDb3BwZXInLCdTY2h3YXJ6IHNlaWRlbm1hdHQnOidTYXRpbiBCbGFjaycsJ1dlaVx1MDBkZiBzZWlkZW5tYXR0JzonU2F0aW4gV2hpdGUnLCdTaWxiZXIgcG9saWVydCc6J1BvbGlzaGVkIFNpbHZlcicsJ1NjaHdhcnogZ2xcdTAwZTRuemVuZCc6J0dsb3NzIEJsYWNrJywnU2Nod2FyeiBtYXR0JzonTWF0dCBCbGFjaycsJ1dlaVx1MDBkZic6J1doaXRlJywnQmVpZ2UnOidCZWlnZSd9Owp2YXIgRkFNX0VOPXsnV2VpXHUwMGRmJzonV2hpdGUnLCdHcmF1JzonR3JleScsJ1NjaHdhcnonOidCbGFjaycsJ0JlaWdlJzonQmVpZ2UnLCdHZWxiJzonWWVsbG93JywnT3JhbmdlJzonT3JhbmdlJywnUm90JzonUmVkJywnVmlvbGV0dCc6J1B1cnBsZScsJ0JsYXUnOidCbHVlJywnR3JcdTAwZmNuJzonR3JlZW4nLCdCcmF1bic6J0Jyb3duJ307CnZhciBQRD1bCntrOidTJyxuOidTZXJpZW5mYXJiZW4nLHM6J1NlcmllJyxyYXc6IlMwMXxHcmFuZCBQcml4IFdlaVx1MDBkZnxFRUVERTd8VVxuUzAyfENhcnJhcmEgV2VpXHUwMGRmfEU2RTZFMXxNXG5TMDN8S3JlaWRlfEM5QzZCQXxVXG5TMDR8UG9sYXJzaWxiZXJ8QzNDNkM5fE1cblMwNXxHVCBTaWxiZXJ8QThBQkFFfE1cblMwNnxFaXNncmF1fDhFOTU5OHxNXG5TMDd8QWNoYXRncmF1fDRCNEU1MnxNXG5TMDh8U2NoaWVmZXJncmF1fDRGNTE1MnxVXG5TMDl8VnVsa2FuZ3JhdXw2QTY5NjJ8TVxuUzI3fEdyYXBoaXRncmF1fDQ1NDg0Q3xVXG5TMTB8VGllZnNjaHdhcnp8MEYxMDExfFVcblMxMXxTY2h3YXJ6IE1ldGFsbGljfDE3MTkxQ3xNXG5TMTJ8R3VhcmRzIFJlZHxDNDFFMjR8VVxuUzEzfEluZGlzY2hyb3R8QjMxMjFDfFVcblMxNHxDYXJtaW5yb3R8OUMxMjIwfFVcblMxNXxTaWduYWxvcmFuZ2V8RTg1NDFBfFVcblMxNnxTcGVlZCBZZWxsb3d8RjJDMzAwfFVcblMxN3xBbGJlcnRibGF1fDJBNUFBMHxVXG5TMTh8RW56aWFuYmxhdXwxRjNFNzh8TVxuUzE5fFNhcGhpcmJsYXV8MUIyQTVDfE1cblMyMHxOYWNodGJsYXV8MTQxQjM1fE1cblMyMXxJcmlzY2hnclx1MDBmY258MUQ1QTNBfFVcblMyMnxBdmVudHVyaW5nclx1MDBmY258MkU0QTNDfE1cblMyM3xKZXRnclx1MDBmY258MUYzQTJEfE1cblMyNHxTZXBpYWJyYXVufDRBMzQyNnxNXG5TMjV8TGluZW4gR3JleXxCOEI1QTh8VVxuUzI2fENoYW1wYWduZXJ0b258QzdCNDhGfE0ifSwKe2s6J1AnLG46J1BhaW50IHRvIFNhbXBsZScsczonUFRTJyxyYXc6IlAwMXxHdWxmIEJsdWV8N0ZCMkQ4fFVcblAwMnxNZXhpY29ibGF1fDJENjNBOHxVXG5QMDN8TWlhbWlibGF1fDAwQTlDOXxVXG5QMDR8Vm9vZG9vIEJsdWV8MjQ0NzlDfFVcblAwNXxSaXZpZXJhIEJsdWV8MUU5QkQ3fFVcblAwNnxTaGFyayBCbHVlfDJGNjdCN3xVXG5QMDd8TWVpc3NlbiBCbHVlfDVFN0ZBMHxNXG5QMDh8TGF2ZW5kZWxibGF1fDdBODJCOHxNXG5QMDl8VWx0cmF2aW9sZXR0fDVBM0Q4Q3xNXG5QMTB8UHVycGxlIFNreXw1QzNGN0F8TVxuUDExfEF1YmVyZ2luZXw0QTFGM0R8TVxuUDEyfFJ1YnlzdGFyfEI1MTM0RnxNXG5QMTN8TGF2YSBPcmFuZ2V8RTg1QTFCfFVcblAxNHxUYW5nZXJpbmV8REI2QTFBfFVcblAxNXxTaWduYWxnZWxifEYwQzQxOXxVXG5QMTZ8QmFoYW1hZ2VsYnxFRkI4MkF8VVxuUDE3fFBhc3RlbGxnZWxifEVCRDk4QXxVXG5QMTh8UHl0aG9uIEdyZWVufDZGQTAzQXxVXG5QMTl8TGl6YXJkIEdyZWVufDc5QjgzQXxVXG5QMjB8VmlwZXIgR3JlZW58NTNCNjY3fFVcblAyMXxTaWduYWxnclx1MDBmY258NEVBNjM5fFVcblAyMnxJcmlzaCBHcmVlbnwxRTVBM0F8VVxuUDIzfEJyZXdzdGVyIEdyZWVufDFBMjgyM3xVXG5QMjR8TWFtYmEgR3JlZW58MkU0QTJBfE1cblAyNXxKYWRlIEdyZWVufDNDNUE0QXxNXG5QMjZ8UmFjaW5nIEdyZWVufDFGM0IyRHxNXG5QMjd8T2FrIEdyZWVufDNFNEEzQXxNXG5QMjh8T2xpdmdyXHUwMGZjbnw1NTU3M0R8TVxuUDI5fE1hY2FkYW1pYXw4QzdCNkJ8TVxuUDMwfFByb3NlY2NvfEQ5QzlBM3xNXG5QMzF8TGlnaHQgSXZvcnl8RThFMEM4fFVcblAzMnxDYXNobWVyZSBCZWlnZXxCN0E1OEF8TVxuUDMzfEdvbGQgTWV0YWxsaWN8Qjc5QjVBfE1cblAzNHxGYXNoaW9uIEdyZXl8QTdBNDlBfFVcblAzNXxTdG9uZSBHcmV5fDhDOEM4OHxVXG5QMzZ8U2xhdGUgR3JleSBOZW98NTU1OTVCfE1cblAzN3xDaGFsayBOZW98QzlDQ0M0fFVcblAzOHxOYXJkbyBHcmV5fDhBOEQ4RnxVXG5QMzl8QXJjdGljIEdyZXl8OUFBNEFBfFVcblA0MHxDcmF5b258QjhCQkJBfFVcblA0MXxBY2lkIEdyZWVufEI2RDgwMHxVXG5QNDJ8UmFjaW5nIFllbGxvd3xGMkI3MDV8VVxuUDQzfEZyb3plbiBCbHVlfDdGQTRDMnxNXG5QNDR8U2hvcmUgQmx1ZXw2RTk5QjV8TVxuUDQ1fEdlbnRpYW4gQmx1ZXwyQzRBN0F8TVxuUDQ2fE1vb25saWdodCBCbHVlfDJBMzA0OHxNXG5QNDd8VHJ1ZmZsZSBCcm93bnw1QTQ2MzZ8TVxuUDQ4fE1haG9nYW55fDRFMkEyNHxNXG5QNDl8UGFwYXlhfEU4NzMxRnxNXG5QNTB8QmFzYWx0IEJsYWNrfDFCMUQyMHxNXG5QNTF8UXVhcnR6aXRlIEdyZXl8NkY3Mzc4fE1cblA1MnxEb2xvbWl0ZSBTaWx2ZXJ8QUVCMkI1fE1cblA1M3xSaG9kaXVtIFNpbHZlcnxBNUE4QUJ8TVxuUDU0fEF2ZW50dXJpbmUgR3JlZW58MkY0RjQ0fE1cblA1NXxTYWdlIEdyZWVufDhDOUE4MHxNXG5QNTZ8UnVieXN0b25lIE5lb3w5RTEyMzN8TSJ9LAp7azonUicsbjonUkFMIENsYXNzaWMnLHM6J1JBTCcscmFsOjEscmF3OiJSMTAwMXxCZWlnZXxDMkIwNzh8VVxuUjEwMTN8UGVybHdlaVx1MDBkZnxFQUU2Q0F8VVxuUjEwMTV8SGVsbGVsZmVuYmVpbnxFNkQ2OTB8VVxuUjEwMjF8UmFwc2dlbGJ8RjNEQTBCfFVcblIxMDIzfFZlcmtlaHJzZ2VsYnxGQUQyMDF8VVxuUjIwMDR8UmVpbm9yYW5nZXxGNDQ2MTF8VVxuUjIwMDl8VmVya2VocnNvcmFuZ2V8RjU0MDIxfFVcblIzMDAwfEZldWVycm90fEFGMkIxRXxVXG5SMzAwMXxTaWduYWxyb3R8QTUyMDE5fFVcblIzMDAzfFJ1Ymlucm90fDlCMTExRXxVXG5SMzAwNHxQdXJwdXJyb3R8NzUxNTFFfFVcblIzMDA1fFdlaW5yb3R8NUUyMTI5fFVcblIzMDIwfFZlcmtlaHJzcm90fENDMDYwNXxVXG5SNDAwNXxCbGF1bGlsYXw2QzQ2NzV8VVxuUjQwMDh8U2lnbmFsdmlvbGV0dHw5MjRFN0R8VVxuUjUwMDJ8VWx0cmFtYXJpbmJsYXV8MjAyMTRGfFVcblI1MDAzfFNhcGhpcmJsYXV8MUQxRTMzfFVcblI1MDA1fFNpZ25hbGJsYXV8MUUyNDYwfFVcblI1MDEwfEVuemlhbmJsYXV8MEUyOTRCfFVcblI1MDEyfExpY2h0YmxhdXwzQjgzQkR8VVxuUjUwMTV8SGltbWVsYmxhdXwyMjcxQjN8VVxuUjUwMTd8VmVya2VocnNibGF1fDA2Mzk3MXxVXG5SNTAyNHxQYXN0ZWxsYmxhdXw1RDlCOUJ8VVxuUjYwMDJ8TGF1YmdyXHUwMGZjbnwyRDU3MkN8VVxuUjYwMDV8TW9vc2dyXHUwMGZjbnwyRjQ1Mzh8VVxuUjYwMDl8VGFubmVuZ3JcdTAwZmNufDMxMzcyQnxVXG5SNjAxMHxHcmFzZ3JcdTAwZmNufDM1NjgyRHxVXG5SNjAxOHxHZWxiZ3JcdTAwZmNufDU3QTYzOXxVXG5SNjAyOXxNaW56Z3JcdTAwZmNufDIwNjAzRHxVXG5SNjAzNHxQYXN0ZWxsdFx1MDBmY3JraXN8N0ZCNUI1fFVcblI3MDAxfFNpbGJlcmdyYXV8OEE5NTk3fFVcblI3MDExfEVpc2VuZ3JhdXw0MzRCNER8VVxuUjcwMTZ8QW50aHJheml0Z3JhdXwyOTMxMzN8VVxuUjcwMjF8U2Nod2FyemdyYXV8MjMyODJCfFVcblI3MDI0fEdyYXBoaXRncmF1fDQ3NEE1MXxVXG5SNzAzMHxTdGVpbmdyYXV8OEI4QzdBfFVcblI3MDM1fExpY2h0Z3JhdXxEN0Q3RDd8VVxuUjcwNDB8RmVuc3RlcmdyYXV8OURBMUFBfFVcblI3MDQ0fFNlaWRlbmdyYXV8Q0FDNEIwfFVcblI4MDA0fEt1cGZlcmJyYXVufDhFNDAyQXxVXG5SODAxMXxOdXNzYnJhdW58NUIzQTI5fFVcblI4MDE3fFNjaG9rb2xhZGVuYnJhdW58NDUzMjJFfFVcblI5MDAxfENyZW1ld2VpXHUwMGRmfEZERjRFM3xVXG5SOTAwMnxHcmF1d2VpXHUwMGRmfEU3RUJEQXxVXG5SOTAwNXxUaWVmc2Nod2FyenwwQTBBMEF8VVxuUjkwMTB8UmVpbndlaVx1MDBkZnxGRkZGRkZ8VVxuUjkwMTZ8VmVya2VocnN3ZWlcdTAwZGZ8RjZGNkY2fFUifSwKe2s6J0snLG46J0tsYXNzaXNjaGUgUG9yc2NoZS1GYXJiZW4nLHM6J0tsYXNzaWsnLHJhdzoiSzAxfFJ1YnlzdG9uZSBSZWR8QTgxNTNDfFVcbkswMnxBcmVuYSBSZWR8QTMyMzFFfFVcbkswM3xCbG9vZCBPcmFuZ2V8RDg1MDFDfFVcbkswNHxNYXJpdGltZSBCbHVlfDI0M0Y2M3xVXG5LMDV8TWluZXJ2YSBCbHVlfDJGNUM5M3xVXG5LMDZ8TWludCBHcmVlbnw4RkM3QTV8VVxuSzA3fE11cmFubyBHcmVlbnw0QTdDNTl8VVxuSzA4fEFwcmljb3QgQmVpZ2V8RDlCNThEfFVcbkswOXxBbWFyYW50aCBWaW9sZXR8NkEyQTU4fFVcbksxMHxaZXJtYXR0IFNpbHZlcnxCOUJDQkV8TVxuSzExfERpYW1vbmQgQmx1ZXw2QzhEQUF8TVxuSzEyfFZlbmV0aWFuIEJsdWV8M0I1RTg2fE1cbksxM3xCYWx0aWMgQmx1ZXwyRjVDN0N8TVxuSzE0fENvYmFsdCBCbHVlfDJBNEZBMHxNXG5LMTV8TWlkbmlnaHQgQmx1ZXwxQjIxNDJ8TVxuSzE2fEhvcml6b24gQmx1ZXw1QTdGQjB8TVxuSzE3fElyaXMgQmx1ZXwzRjRFOEF8TVxuSzE4fFRhaG9lIEJsdWV8M0Y2QzhGfE1cbksxOXxMYXZlbmRlciBCbHVlfDhBOTNCRXxNXG5LMjB8VHVycXVvaXNlIE1ldGFsbGljfDJEOEE4RXxNXG5LMjF8QW1hem9uIEdyZWVufDJENEEzQnxNXG5LMjJ8Rm9yZXN0IEdyZWVufDJBNDAzNHxNXG5LMjN8R3Jhbml0ZSBHcmVlbnw0RjVFNEZ8TVxuSzI0fExhZ29vbiBHcmVlbnwyRTZGNkF8TVxuSzI1fFdpbWJsZWRvbiBHcmVlbnwyRjVBM0F8TVxuSzI2fEF2ZW50dXJhIEdyZWVufDJFNkI0RnxNXG5LMjd8QW1ldGh5c3R8NUMzRjZCfE1cbksyOHxDYXNzaXMgUmVkfDZFMUIzQXxNXG5LMjl8VmVsdmV0IFJlZHw3QTE3MjJ8TVxuSzMwfENvcmFsIFJlZHxDMjNCM0F8TVxuSzMxfFJhc3BiZXJyeSBSZWR8OUIxQjRBfE1cbkszMnxDb2duYWMgQnJvd258N0E0QTJBfE1cbkszM3xTYXRpbiBCbHVlfDRBNkE4RXxNIn0sCntrOidaJyxuOidDaHJvbSB1bmQgU2VpZGVubWF0dCcsczonWmllcicscmF3OiJaMDF8Q2hyb218Q0ZEMUQ0fE1cblowMnxTaGFkb3cgQ2hyb21lfDVCNUQ2MXxNXG5aMDN8U2F0aW4gUGxhdGlufDhDOEE4NnxNXG5aMDR8U2lsYmVyIHNlaWRlbm1hdHR8QjRCNkI4fE1cblowNXxDaGFtcGFnbmVyfEJFQjI5RHxNXG5aMDZ8R3VubWV0YWx8NEE0RDUyfE1cblowN3xBbnRocmF6aXR8MzQzNjNBfE1cblowOHxCcm9uemV8N0E1QTNBfE1cblowOXxLdXBmZXJ8OEU1QTNDfE1cbloxMHxHb2xkfEE4OEU2MnxNXG5aMTF8U2Nod2FyeiBzZWlkZW5tYXR0fDFFMUYyMXxVXG5aMTJ8V2VpXHUwMGRmIHNlaWRlbm1hdHR8RTRFNERGfFUifSwKe2s6J1QnLG46J1ppZXJlbGVtZW50ZScsczonWmllcicscmF3OiJUMDF8Q2hyb218Q0ZEMUQ0fE1cblQwMnxDaGFtcGFnbmVyfEJFQjI5RHxNXG5UMDN8Um9zXHUwMGU5Z29sZHxCOThBN0N8TVxuVDA0fEd1bm1ldGFsfDdFODE4NnxNXG5UMDV8U2lsYmVyIG1hdHR8QjRCNkI4fE1cblQwNnxOaWdodC1QYWtldHwwQjBDMER8VSJ9LAp7azonRicsbjonRmVsZ2VuLUZpbmlzaGVzJyxzOidGaW5pc2gnLHJhdzoiRjAxfFNpbGJlciBwb2xpZXJ0fENGRDFENHxNXG5GMDh8U2Nod2FyeiBnbFx1MDBlNG56ZW5kfDBGMTAxMnxVXG5GMDl8U2Nod2FyeiBtYXR0fDFFMUYyMXxVXG5GMTB8V2VpXHUwMGRmfEVERURFOXxVXG5GMTF8R3JhcGhpdGdyYXV8NDU0ODRDfFVcbkYxMnxSb3R8QjMxMjFDfFUifQpdOwpmdW5jdGlvbiByZ2IoaCl7cmV0dXJuWzEsMyw1XS5tYXAoZnVuY3Rpb24oaSl7cmV0dXJuIHBhcnNlSW50KGguc3Vic3RyKGksMiksMTYpfSl9CmZ1bmN0aW9uIGZhbWlseShoKXsKICB2YXIgYz1yZ2IoaCkubWFwKGZ1bmN0aW9uKHYpe3JldHVybiB2LzI1NX0pLG14PU1hdGgubWF4KGNbMF0sY1sxXSxjWzJdKSxtbj1NYXRoLm1pbihjWzBdLGNbMV0sY1syXSksbD0obXgrbW4pLzIsZD1teC1tbixzPWQ\/ZC8oMS1NYXRoLmFicygyKmwtMSkpOjAsaGg9MDsKICBpZihkKXtpZihteD09PWNbMF0paGg9KChjWzFdLWNbMl0pL2QpJTY7ZWxzZSBpZihteD09PWNbMV0paGg9KGNbMl0tY1swXSkvZCsyO2Vsc2UgaGg9KGNbMF0tY1sxXSkvZCs0O2hoKj02MDtpZihoaDwwKWhoKz0zNjB9CiAgaWYoczwwLjE0fHxsPjAuOTN8fGw8MC4wN3x8KGw+MC44NiYmZDwwLjA3KSlyZXR1cm4gbD4wLjg2PydXZWlcdTAwZGYnOmw8MC4xND8nU2Nod2Fyeic6J0dyYXUnOwogIGlmKGhoPj0xOCYmaGg8NDgmJmw8MC40MilyZXR1cm4gJ0JyYXVuJzsKICBpZihoaD49MjUmJmhoPDYyJiZzPDAuNDUmJmw+MC41NSlyZXR1cm4gJ0JlaWdlJzsKICBpZihoaDwxOHx8aGg+PTM0NSlyZXR1cm4gJ1JvdCc7aWYoaGg8NDUpcmV0dXJuICdPcmFuZ2UnO2lmKGhoPDcwKXJldHVybiAnR2VsYic7aWYoaGg8MTY1KXJldHVybiAnR3JcdTAwZmNuJztpZihoaDwyNTUpcmV0dXJuICdCbGF1JztyZXR1cm4gJ1Zpb2xldHQnOwp9CnZhciBGQU1TPVsnV2VpXHUwMGRmJywnR3JhdScsJ1NjaHdhcnonLCdCZWlnZScsJ0dlbGInLCdPcmFuZ2UnLCdSb3QnLCdWaW9sZXR0JywnQmxhdScsJ0dyXHUwMGZjbicsJ0JyYXVuJ107CnZhciBGQU1DPXsnV2VpXHUwMGRmJzonI2YxZjBlYScsJ0dyYXUnOicjOGQ5MDk0JywnU2Nod2Fyeic6JyMxNjE3MWEnLCdCZWlnZSc6JyNjOWI5OWEnLCdHZWxiJzonI2YwYzQxOScsJ09yYW5nZSc6JyNlODY0MWInLCdSb3QnOicjYzQxZTI0JywnVmlvbGV0dCc6JyM1YzNmN2EnLCdCbGF1JzonIzJhNWFhMCcsJ0dyXHUwMGZjbic6JyMyZjdhNDUnLCdCcmF1bic6JyM1YTNhMjknfTsKdmFyIEM9e1dLOntpZDonV0snLG5hbWU6J0luIFdhZ2VuZmFyYmUnLGhleDonIzAwMDAwMCcsdDonVScscGFsOidXJyxmYW06J0dyYXUnLHNwZWNpYWw6dHJ1ZX19LFA9e307ClBELmZvckVhY2goZnVuY3Rpb24ocCl7cC5saXN0PXAucmF3LnNwbGl0KCJcbiIpLm1hcChmdW5jdGlvbihsKXt2YXIgZj1sLnNwbGl0KCJ8Iik7CiAgdmFyIGM9e2lkOmZbMF0sbmFtZTpmWzFdLGhleDoiIyIrZlsyXSx0OmZbM10scGFsOnAua307Yy5mYW09ZmFtaWx5KGMuaGV4KTtjLm51bT1wLnJhbD9mWzBdLnNsaWNlKDEpOicnO0NbYy5pZF09YztyZXR1cm4gY30pO1BbcC5rXT1wfSk7CgpDLlpFPXtpZDonWkUnLG5hbWU6J1dpZSBaaWVyZWxlbWVudGUnLGhleDonIzAwMDAwMCcsdDonVScscGFsOidXJyxmYW06J0dyYXUnLHNwZWNpYWw6dHJ1ZX07Ck5NX0VOWydHcmFwaGl0Z3JhdSddPSdHcmFwaGl0ZSBHcmV5JztOTV9FTlsnTmlnaHQtUGFrZXQnXT0nTmlnaHQgUGFja2FnZSc7Tk1fRU5bJ1JvdCddPSdSZWQnOwpmdW5jdGlvbiBjbihjKXtpZihjLmlkPT09J1dLJylyZXR1cm4gdHIoJ2JvZHknKTtpZihjLmlkPT09J1pFJylyZXR1cm4gdHIoJ2FzVHJpbScpO3JldHVybiBsYW5nPT09J2VuJyYmTk1fRU5bYy5uYW1lXT9OTV9FTltjLm5hbWVdOmMubmFtZX0KZnVuY3Rpb24gZm4oZil7cmV0dXJuIGxhbmc9PT0nZW4nPyhGQU1fRU5bZl18fGYpOmZ9CmZ1bmN0aW9uIHpuKHope3JldHVybiB0cigneicrei5rKX0KZnVuY3Rpb24gZXNjKHMpe3JldHVybiBTdHJpbmcocykucmVwbGFjZSgvJi9nLCcmYW1wOycpLnJlcGxhY2UoLzwvZywnJmx0OycpLnJlcGxhY2UoLyIvZywnJnF1b3Q7Jyl9CnZhciBXTD1bJ1pFJywnV0snLCdGMDEnLCdUMDUnLCdGMTAnLCdGMTEnLCdGMDknLCdGMDgnLCdUMDInLCdUMDMnLCdUMDQnXTsKdmFyIFo9W3trOidiJyxkOicjOEM4Qzg4JyxkYzonQScsY29sbHM6WydTJywnSycsJ1AnLCdSJ10sZGVmOidPJ30se2s6J3QnLGQ6JyNDNEM3Q0EnLGNvbGxzOlsnVCddLGRlZjonTyd9LHtrOid3JyxkOicjQjlCQ0MwJyxjb2xsczpbJ1cnXSxkZWY6J1pFJ31dOwp2YXIgc3Q9e30sdWk9e30sYWN0aXZlPSdiJyx2aWV3PSdmcm9udCcsdG91Y2hlZD1mYWxzZTsKZnVuY3Rpb24gem9uZShrKXtyZXR1cm4gWi5maWx0ZXIoZnVuY3Rpb24oeil7cmV0dXJuIHouaz09PWt9KVswXX0KZnVuY3Rpb24gZnJlc2goeil7c3Rbei5rXT17aWQ6ei5kZWYsbTpmYWxzZX07dWlbei5rXT17Y29sbDp6LmRjfHx6LmNvbGxzWzBdLGZhbTonJyxxOicnfX0KWi5mb3JFYWNoKGZyZXNoKTsKZnVuY3Rpb24gdHJpbU9yaWcoKXtyZXR1cm4gc3QudC5pZD09PSdPJ30KZnVuY3Rpb24gaGV4KHope3ZhciBzPXN0W3oua107aWYocy5pZD09PSdaRScpcmV0dXJuIHRyaW1PcmlnKCk\/ei5kOmhleCh6b25lKCd0JykpO2lmKHMuaWQ9PT0nTycpcmV0dXJuIHouZDtpZihzLmlkPT09J1dLJylyZXR1cm4gaGV4KHpvbmUoJ2InKSk7cmV0dXJuIENbcy5pZF0uaGV4fQpmdW5jdGlvbiBtZXRhbCh6KXt2YXIgcz1zdFt6LmtdO2lmKHMuaWQ9PT0nWkUnKXJldHVybiBtZXRhbCh6b25lKCd0JykpO3JldHVybiBzLmlkPT09J1dLJz9tZXRhbCh6b25lKCdiJykpOnMubX0KZnVuY3Rpb24gY25hbWUoaWQpe3ZhciBjPUNbaWRdO3JldHVybiBjLnBhbD09PSdSJz8nUkFMICcrYy5udW0rJyAnK2NuKGMpOmNuKGMpfQpmdW5jdGlvbiBsYWJlbCh6KXt2YXIgcz1zdFt6LmtdOwogIGlmKHMuaWQ9PT0nTycpcmV0dXJuIHouaz09PSd3Jz90cignb3JnVycpOnouaz09PSd0Jz90cignb3JnVCcpOnRyKCdvcmdCJyk7CiAgaWYocy5pZD09PSdaRScpcmV0dXJuIHRyKCdhc1RyaW0nKSsnICgnK2xhYmVsKHpvbmUoJ3QnKSkrJyknOwogIGlmKHMuaWQ9PT0nV0snKXJldHVybiB0cignYm9keScpKyh6LmshPT0nYic\/JyAoJytsYWJlbCh6b25lKCdiJykpKycpJzonJyk7CiAgcmV0dXJuIGNuYW1lKHMuaWQpfQpmdW5jdGlvbiBmaW5CKCl7cmV0dXJuIG1ldGFsKHpvbmUoJ2InKSk\/dHIoJ21ldGFsbGljJyk6dHIoJ3NvbGlkJyl9CmZ1bmN0aW9uIGZpblQoKXtyZXR1cm4gc3QudC5pZD09PSdPJz90cignaGcnKTpzdC50LmlkPT09J1dLJz9maW5CKCk6c3QudC5pZD09PSdUMDYnP3RyKCdiaGcnKTp0cignc20nKX0KZnVuY3Rpb24gZmluKHope2lmKHouaz09PSdiJylyZXR1cm4gZmluQigpO2lmKHouaz09PSd0JylyZXR1cm4gZmluVCgpOwogIHZhciBpZD1zdC53LmlkO2lmKGlkPT09J1pFJylyZXR1cm4gdHJpbU9yaWcoKT90cigncG9sJyk6ZmluVCgpO2lmKGlkPT09J08nKXJldHVybiB0cigncG9sJyk7aWYoaWQ9PT0nRjA4JylyZXR1cm4gdHIoJ2dsJyk7aWYoaWQ9PT0nRjA5JylyZXR1cm4gdHIoJ210Jyk7aWYoaWQ9PT0nV0snKXJldHVybiBmaW5CKCk7aWYoaWQ9PT0nRjEwJ3x8aWQ9PT0nRjExJylyZXR1cm4gdHIoJ2xhY2snKTtyZXR1cm4gdHIoJ3NtJyl9CmZ1bmN0aW9uIGNvZGUoKXtyZXR1cm4gJ1BTLScrWi5tYXAoZnVuY3Rpb24oeil7cmV0dXJuIHN0W3oua10uaWQrKHN0W3oua10ubT8nTSc6J1UnKX0pLmpvaW4oJy0nKX0KZnVuY3Rpb24gc3VtbWFyeSgpe3JldHVybiBaLm1hcChmdW5jdGlvbih6KXtyZXR1cm4gem4oeikrJzogJytsYWJlbCh6KSsnIFx1MDBiNyAnK2Zpbih6KX0pLmpvaW4oJ1xuJyl9CmZ1bmN0aW9uIHNoYXJlVXJsKCl7dmFyIHU9Q0ZHLnVybHx8KGxvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZSk7cmV0dXJuIHUrJyMnK2NvZGUoKX0KZnVuY3Rpb24gYXBwbHlDb2RlKHN0cil7CiAgdmFyIG09U3RyaW5nKHN0cnx8JycpLnRvVXBwZXJDYXNlKCkucmVwbGFjZSgvXHMrL2csJycpLnJlcGxhY2UoL14jLywnJykubWF0Y2goL15QUy0oW0EtWjAtOV0rKShbVU1dKS0oW0EtWjAtOV0rKShbVU1dKS0oW0EtWjAtOV0rKShbVU1dKSg\/Oi1bQS1aMC05XStbVU1dKT8kLyk7CiAgaWYoIW0pcmV0dXJuIHRyKCdlcnJGbXQnKTsKICB2YXIgaWRzPVttWzFdLG1bM10sbVs1XV0sbXM9W21bMl0sbVs0XSxtWzZdXSxlcnI9Jyc7CiAgaWYoaWRzWzFdPT09J1QwMSd8fGlkc1sxXT09PSdaMDEnKWlkc1sxXT0nTyc7aWYoaWRzWzJdPT09J0YwMScpaWRzWzJdPSdPJzsKICBpZHMuZm9yRWFjaChmdW5jdGlvbihpZCxpKXtpZihlcnIpcmV0dXJuO2lmKGlkPT09J08nKXJldHVybjtpZihpZD09PSdXSycpe2lmKGk9PT0wKWVycj10cignZXJyQm9keScpO3JldHVybn1pZihpZD09PSdaRScpe2lmKGkhPT0yKWVycj10cignZXJyQm9keScpO3JldHVybn1pZighQ1tpZF0pZXJyPXRyKCdlcnJObzEnKStpZCt0cignZXJyTm8yJyl9KTsKICBpZihlcnIpcmV0dXJuIGVycjsKICBaLmZvckVhY2goZnVuY3Rpb24oeixpKXtzdFt6LmtdPXtpZDppZHNbaV0sbTptc1tpXT09PSdNJyYmaWRzW2ldIT09J1pFJyYmaWRzW2ldIT09J1dLJyYmaWRzW2ldIT09J08nfTt2YXIgYz1DW2lkc1tpXV07dWlbei5rXS5jb2xsPXouZGM9PT0nQSc\/J0EnOigoYyYmei5jb2xscy5pbmRleE9mKGMucGFsKT4tMSk\/Yy5wYWw6KHouZGN8fHouY29sbHNbMF0pKTt1aVt6LmtdLmZhbT0nJzt1aVt6LmtdLnE9Jyd9KTsKICByZXR1cm4gJyd9CnZhciBWTD1be2s6J2Zyb250JyxkZTonRnJvbnQgc2Noclx1MDBlNGcnLGVuOidGcm9udCAzLzQnLHdoOjEsZW06MX0se2s6J2Zyb250YWwnLGRlOidGcm9udCcsZW46J0Zyb250JyxlbToxfSx7azonc2lkZScsZGU6J1NlaXRlJyxlbjonU2lkZScsd2g6MX0se2s6J2hlY2szNCcsZGU6J0hlY2sgc2Noclx1MDBlNGcnLGVuOidSZWFyIDMvNCcsd2g6MSxlbToxfSx7azonaGVjaycsZGU6J0hlY2snLGVuOidSZWFyJyxlbToxfV0sVklFV1M9e30sREFUQT17fSxMT0FESU5HPXt9OwpWTC5mb3JFYWNoKGZ1bmN0aW9uKHYpe1ZJRVdTW3Yua109e2ltZzp2LmsrJy5qcGcnLGI6di5rKydfbWFzay5wbmcnLHQ6di5rKydfdHJpbV9tYXNrLnBuZycscDp2LmsrJ19wYWludC5wbmcnLHRsOnYuaysnX3RyaW0ucG5nJyx3OnYud2g\/di5rKydfd2hlZWxfbWFzay5wbmcnOm51bGwsazpudWxsLGU6di5lbT92LmsrJ19lbWIucG5nJzpudWxsLHNiOnYuaysnX3NiLmpwZycsd2w6di53aD92LmsrJ193aGVlbC5wbmcnOm51bGx9fSk7CmZ1bmN0aW9uIHZsYWJlbCh2KXtyZXR1cm4gbGFuZz09PSdlbic\/di5lbjp2LmRlfQp2YXIgdG9MaW49bmV3IEZsb2F0MzJBcnJheSgyNTYpO2Zvcih2YXIgaT0wO2k8MjU2O2krKyl7dmFyIGMwPWkvMjU1O3RvTGluW2ldPWMwPD0wLjA0MDQ1P2MwLzEyLjkyOk1hdGgucG93KChjMCswLjA1NSkvMS4wNTUsMi40KX0KdmFyIExOPTQwOTYsdG9TcmdiPW5ldyBVaW50OENsYW1wZWRBcnJheShMTisxKTtmb3IodmFyIGo9MDtqPD1MTjtqKyspe3ZhciB2PWovTE47dG9TcmdiW2pdPU1hdGgucm91bmQoMjU1Kih2PD0wLjAwMzEzMDg\/dioxMi45MjoxLjA1NSpNYXRoLnBvdyh2LDEvMi40KS0wLjA1NSkpfQpmdW5jdGlvbiBsdW1PZihyLGcsYil7cmV0dXJuIDAuMjEyNipyKzAuNzE1MipnKzAuMDcyMipifQpmdW5jdGlvbiBsb2FkSW1nKHNyYyl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlcyxyZWope3ZhciBpbT1uZXcgSW1hZ2UoKTtpbS5vbmxvYWQ9ZnVuY3Rpb24oKXtyZXMoaW0pfTtpbS5vbmVycm9yPWZ1bmN0aW9uKCl7cmVqKG5ldyBFcnJvcihzcmMpKX07aW0uc3JjPWFzc2V0KHNyYyl9KX0KZnVuY3Rpb24gcGl4KGltKXt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtjLndpZHRoPWltLm5hdHVyYWxXaWR0aDtjLmhlaWdodD1pbS5uYXR1cmFsSGVpZ2h0O3ZhciB4PWMuZ2V0Q29udGV4dCgnMmQnLHt3aWxsUmVhZEZyZXF1ZW50bHk6dHJ1ZX0pO3guZHJhd0ltYWdlKGltLDAsMCk7cmV0dXJuIHguZ2V0SW1hZ2VEYXRhKDAsMCxjLndpZHRoLGMuaGVpZ2h0KS5kYXRhfQpmdW5jdGlvbiBib3hCbHVyKGEsdyxoLHIpewogIHZhciB0PW5ldyBGbG9hdDMyQXJyYXkodypoKSxvPW5ldyBGbG9hdDMyQXJyYXkodypoKSxuPTIqcisxLHgseSxhY2M7CiAgZm9yKHk9MDt5PGg7eSsrKXt2YXIgYj15Knc7YWNjPTA7Zm9yKHg9LXI7eDw9cjt4KyspYWNjKz1hW2IrTWF0aC5taW4ody0xLE1hdGgubWF4KDAseCkpXTsKICAgIGZvcih4PTA7eDx3O3grKyl7dFtiK3hdPWFjYy9uO2FjYys9YVtiK01hdGgubWluKHctMSx4K3IrMSldLWFbYitNYXRoLm1heCgwLHgtcildfX0KICBmb3IoeD0wO3g8dzt4Kyspe2FjYz0wO2Zvcih5PS1yO3k8PXI7eSsrKWFjYys9dFtNYXRoLm1pbihoLTEsTWF0aC5tYXgoMCx5KSkqdyt4XTsKICAgIGZvcih5PTA7eTxoO3krKyl7b1t5KncreF09YWNjL247YWNjKz10W01hdGgubWluKGgtMSx5K3IrMSkqdyt4XS10W01hdGgubWF4KDAseS1yKSp3K3hdfX0KICByZXR1cm4gb30KZnVuY3Rpb24gem9uZURhdGEocHgsbXAsdyxoKXsKICB2YXIgaWR4PVtdO2Zvcih2YXIgcD0wLGk9MDtwPHcqaDtwKyssaSs9NCl7aWYobXBbaV0+NilpZHgucHVzaChwKX0KICB2YXIgbj1pZHgubGVuZ3RoLEw9bmV3IEZsb2F0MzJBcnJheShuKSxXPW5ldyBGbG9hdDMyQXJyYXkobiksTj1uZXcgRmxvYXQzMkFycmF5KG4pLHNlZWQ9OTg3NjU0LHJlZj1bXTsKICBmb3IodmFyIGs9MDtrPG47aysrKXt2YXIgbz1pZHhba10qNDtMW2tdPWx1bU9mKHRvTGluW3B4W29dXSx0b0xpbltweFtvKzFdXSx0b0xpbltweFtvKzJdXSk7V1trXT1tcFtvXS8yNTU7CiAgICBzZWVkPShzZWVkKjExMDM1MTUyNDUrMTIzNDUpJjB4N2ZmZmZmZmY7TltrXT1zZWVkLzB4N2ZmZmZmZmYtMC41O2lmKFdba10+MC45JiZrJTc9PT0wKXJlZi5wdXNoKExba10pfQogIHJlZi5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEtYn0pOwogIHZhciBmbD1uZXcgRmxvYXQzMkFycmF5KHcqaCksZm09bmV3IEZsb2F0MzJBcnJheSh3KmgpOwogIGZvcih2YXIgazI9MDtrMjxuO2syKyspe2ZsW2lkeFtrMl1dPUxbazJdO2ZtW2lkeFtrMl1dPTF9CiAgdmFyIGJsPWJveEJsdXIoZmwsdyxoLDUpLGJtPWJveEJsdXIoZm0sdyxoLDUpLExiPW5ldyBGbG9hdDMyQXJyYXkobik7CiAgZm9yKHZhciBrMz0wO2szPG47azMrKyl7dmFyIHE9Ym1baWR4W2szXV07TGJbazNdPXE+MC4wMj9ibFtpZHhbazNdXS9xOkxbazNdfQogIHJldHVybiB7aWR4OkludDMyQXJyYXkuZnJvbShpZHgpLEw6TCxMYjpMYixXOlcsTjpOLHJlZjpNYXRoLm1heChyZWZbcmVmLmxlbmd0aD4+MV18fDAuMjUsMC4wNCl9Owp9CmZ1bmN0aW9uIHByZXAoa2V5KXsKICB2YXIgdj1WSUVXU1trZXldOwogIHJldHVybiBQcm9taXNlLmFsbChbbG9hZEltZyh2LmltZyksbG9hZEltZyh2LmIpLGxvYWRJbWcodi50KSx2Lnc\/bG9hZEltZyh2LncpOm51bGwsdi5rP2xvYWRJbWcodi5rKTpudWxsLHYucD9sb2FkSW1nKHYucCk6bnVsbCx2LnRsP2xvYWRJbWcodi50bCk6bnVsbCx2LmU\/bG9hZEltZyh2LmUpOm51bGwsdi5zYj9sb2FkSW1nKHYuc2IpOm51bGwsdi53bD9sb2FkSW1nKHYud2wpOm51bGxdKS50aGVuKGZ1bmN0aW9uKHIpewogICAgdmFyIHc9clswXS5uYXR1cmFsV2lkdGgsaD1yWzBdLm5hdHVyYWxIZWlnaHQscHg9cGl4KHJbMF0pOwogICAgdmFyIGN2PSQoJ2N2LScra2V5KTtjdi53aWR0aD13O2N2LmhlaWdodD1oO3ZhciBjdHg9Y3YuZ2V0Q29udGV4dCgnMmQnKTsKICAgIHZhciBvdXQ9Y3R4LmNyZWF0ZUltYWdlRGF0YSh3LGgpO291dC5kYXRhLnNldChweCk7Y3R4LnB1dEltYWdlRGF0YShvdXQsMCwwKTsKICAgIHZhciB6ej17Yjp6b25lRGF0YShweCxwaXgoclsxXSksdyxoKX07aWYoIXJbNl0penoudD16b25lRGF0YShweCxwaXgoclsyXSksdyxoKTtpZihyWzNdKXp6Lnc9em9uZURhdGEocHgscGl4KHJbM10pLHcsaCk7CiAgICBpZihyWzRdKXp6Lms9em9uZURhdGEocHgscGl4KHJbNF0pLHcsaCk7CiAgICBpZihyWzVdKXt2YXIgcHA9cGl4KHJbNV0pLHpiPXp6LmIsbmI9emIuaWR4Lmxlbmd0aDt6Yi5EPW5ldyBGbG9hdDMyQXJyYXkobmIpO3piLlM9bmV3IEZsb2F0MzJBcnJheShuYik7emIuUj1uZXcgRmxvYXQzMkFycmF5KG5iKTsKICAgICAgZm9yKHZhciBrPTA7azxuYjtrKyspe3ZhciBvPXpiLmlkeFtrXSo0LGE9cHBbb10vMjU1LGI9cHBbbysxXS8yNTUsYz1wcFtvKzJdLzI1NTt6Yi5EW2tdPWEqYSoyLjU7emIuU1trXT1iKmI7emIuUltrXT1jKmMqNH19CiAgICBpZihyWzZdKXp6LnQ9dHJpbURhdGEocGl4KHJbMl0pLHBpeChyWzZdKSx3LGgpOwogICAgaWYocls5XSl7dmFyIHdwPXBpeChyWzldKTtbWyd3JywwXSxbJ2snLDFdXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB6ZD16eltlWzBdXTtpZighemQpcmV0dXJuO3ZhciBuMj16ZC5pZHgubGVuZ3RoO3pkLkxBPW5ldyBGbG9hdDMyQXJyYXkobjIpO2Zvcih2YXIgazI9MDtrMjxuMjtrMisrKXt2YXIgdjI9d3BbemQuaWR4W2syXSo0K2VbMV1dLzI1NTt6ZC5MQVtrMl09djIqdjIqNH19KX0KICAgIHZhciBlbWI9bnVsbDsKICAgIGlmKHJbN10pe3ZhciBlYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtlYy53aWR0aD13O2VjLmhlaWdodD1oO3ZhciBleD1lYy5nZXRDb250ZXh0KCcyZCcse3dpbGxSZWFkRnJlcXVlbnRseTp0cnVlfSk7ZXguZHJhd0ltYWdlKHJbN10sMCwwKTt2YXIgZXA9ZXguZ2V0SW1hZ2VEYXRhKDAsMCx3LGgpLmRhdGEsZWk9W107CiAgICAgIGZvcih2YXIgcTI9MCxqMj0zO3EyPHcqaDtxMisrLGoyKz00KXtpZihlcFtqMl0+MyllaS5wdXNoKHEyKX0KICAgICAgZW1iPXtpZHg6SW50MzJBcnJheS5mcm9tKGVpKSxweDplcH19CiAgICByZXR1cm4ge3B4OnB4LGN0eDpjdHgsb3V0Om91dCx6Onp6LGVtYjplbWIsc2I6cls4XT9waXgocls4XSk6bnVsbH07CiAgfSk7Cn0KZnVuY3Rpb24gdHJpbURhdGEobXAsbHAsdyxoKXsKICB2YXIgaWR4PVtdO2Zvcih2YXIgcD0wLGk9MDtwPHcqaDtwKyssaSs9NCl7aWYobXBbaV0+NHx8bXBbaSsxXT40fHxtcFtpKzJdPjQpaWR4LnB1c2gocCl9CiAgdmFyIG49aWR4Lmxlbmd0aCxXQT1uZXcgRmxvYXQzMkFycmF5KG4pLFdPPW5ldyBGbG9hdDMyQXJyYXkobiksUEY9bmV3IEZsb2F0MzJBcnJheShuKSxMQT1uZXcgRmxvYXQzMkFycmF5KG4pLExPPW5ldyBGbG9hdDMyQXJyYXkobik7CiAgZm9yKHZhciBrPTA7azxuO2srKyl7dmFyIG89aWR4W2tdKjQsYT1scFtvXS8yNTUsYj1scFtvKzFdLzI1NTtXQVtrXT1tcFtvXS8yNTU7V09ba109bXBbbysxXS8yNTU7UEZba109bXBbbysyXS8yNTU7TEFba109YSphKjQ7TE9ba109YipiKjR9CiAgcmV0dXJuIHtpZHg6SW50MzJBcnJheS5mcm9tKGlkeCksV0E6V0EsV086V08sUEY6UEYsTEE6TEEsTE86TE8sYWk6dHJ1ZX07Cn0KZnVuY3Rpb24gcmVuZGVyVHJpbUFJKHpkLFAwLG8sYm9keU9uLGdsb3NzLHB4KXsKICB2YXIgbj16ZC5pZHgubGVuZ3RoLFc9Ym9keU9uP3pkLldBOnpkLldPLExtPWJvZHlPbj96ZC5MQTp6ZC5MTyxjcixjZyxjYjsKICBpZighUDApcmV0dXJuO2NyPVAwLmNyKlAwLlk7Y2c9UDAuY2cqUDAuWTtjYj1QMC5jYipQMC5ZOwogIHZhciBkaz0xLU1hdGgubWluKDEsTWF0aC5tYXgoY3IsY2csY2IpLzAuMiksc2s9KGdsb3NzPzAuMDY6MC4wMikrMC4wMypkazsKICBmb3IodmFyIGs9MDtrPG47aysrKXsKICAgIHZhciB3PVdba107aWYodzw9MC4wMDQpY29udGludWU7CiAgICB2YXIgaT16ZC5pZHhba10qNCxSPXRvTGluW29baV1dLEc9dG9MaW5bb1tpKzFdXSxCPXRvTGluW29baSsyXV0sbD1MbVtrXTtpZighZ2xvc3MmJmw+MC45KWw9MC45KzAuMyooMS1NYXRoLmV4cCgtKGwtMC45KS8wLjQ1KSk7dmFyIHNwPXNrKk1hdGgubWF4KDAsbC0wLjc1KTsKICAgIHZhciBucj1zaG91bGRlcihjcipsK3NwKSxuZz1zaG91bGRlcihjZypsK3NwKSxuYj1zaG91bGRlcihjYipsK3NwKTsKICAgIGlmKGdsb3NzPT09Mil7dmFyIHBsPWx1bU9mKHRvTGluW3B4W2ldXSx0b0xpbltweFtpKzFdXSx0b0xpbltweFtpKzJdXSksdj0wLjAwNSswLjAyKk1hdGgubWluKGwsMS4yKSswLjA5NSpNYXRoLnBvdyhwbCwxLjMpO25yPXY7bmc9djtuYj12KjEuMDN9CiAgICBSKz0obnItUikqdztHKz0obmctRykqdztCKz0obmItQikqdzsKICAgIG9baV09dG9TcmdiW01hdGgubWluKExOLE1hdGgubWF4KDAsUipMTnwwKSldO29baSsxXT10b1NyZ2JbTWF0aC5taW4oTE4sTWF0aC5tYXgoMCxHKkxOfDApKV07b1tpKzJdPXRvU3JnYltNYXRoLm1pbihMTixNYXRoLm1heCgwLEIqTE58MCkpXTsKICB9Cn0KZnVuY3Rpb24gcmVuZGVyU2hhZGUoemQsUDAsbyxnbG9zcyl7CiAgdmFyIG49emQuaWR4Lmxlbmd0aCxjcj1QMC5jcipQMC5ZLGNnPVAwLmNnKlAwLlksY2I9UDAuY2IqUDAuWSxkaz0xLU1hdGgubWluKDEsTWF0aC5tYXgoY3IsY2csY2IpLzAuMiksc2s9KGdsb3NzPzAuMDc6MC4wMikrMC4wMypkazsKICBmb3IodmFyIGs9MDtrPG47aysrKXsKICAgIHZhciB3PXpkLldba107aWYodzw9MC4wMDQpY29udGludWU7CiAgICB2YXIgaT16ZC5pZHhba10qNCxSPXRvTGluW29baV1dLEc9dG9MaW5bb1tpKzFdXSxCPXRvTGluW29baSsyXV0sbD16ZC5MQVtrXTtpZighZ2xvc3MmJmw+MC45KWw9MC45KzAuMyooMS1NYXRoLmV4cCgtKGwtMC45KS8wLjQ1KSk7dmFyIHNwPXNrKk1hdGgubWF4KDAsbC0wLjc1KTsKICAgIHZhciBucj1zaG91bGRlcihjcipsK3NwKSxuZz1zaG91bGRlcihjZypsK3NwKSxuYj1zaG91bGRlcihjYipsK3NwKTsKICAgIFIrPShuci1SKSp3O0crPShuZy1HKSp3O0IrPShuYi1CKSp3OwogICAgb1tpXT10b1NyZ2JbTWF0aC5taW4oTE4sTWF0aC5tYXgoMCxSKkxOfDApKV07b1tpKzFdPXRvU3JnYltNYXRoLm1pbihMTixNYXRoLm1heCgwLEcqTE58MCkpXTtvW2krMl09dG9TcmdiW01hdGgubWluKExOLE1hdGgubWF4KDAsQipMTnwwKSldOwogIH0KfQpmdW5jdGlvbiBwYXJhbXMoeil7CiAgdmFyIGlkMD1zdFt6LmtdLmlkO2lmKGlkMD09PSdPJ3x8KGlkMD09PSdaRScmJnRyaW1PcmlnKCkpKXJldHVybiBudWxsOwogIHZhciBxPXJnYihoZXgoeikpLHI9dG9MaW5bcVswXV0sZz10b0xpbltxWzFdXSxiPXRvTGluW3FbMl1dLFk9TWF0aC5tYXgobHVtT2YocixnLGIpLDFlLTQpLFQ9TWF0aC5taW4oWSwwLjc0KSooei5rPT09J2InPyhCT0RZTU9ERUw9PT0nZGFyayc\/MC45NTowLjc4KzAuMjIqZGFya1coWSkpOjAuOSksZGFyaz0xLU1hdGgubWluKDEsVC8wLjI1KSxtPW1ldGFsKHopOwogIHJldHVybiB7WTpZLHdkOnouaz09PSdiJz9kYXJrVyhZKTowLGNyOnIvWSxjZzpnL1ksY2I6Yi9ZLFQ6VCxnYW06MSswLjQ1KmRhcmsrKHouaz09PSdiJz8wLjE4OjAuMDYpLHNwZWM6KHouaz09PSdiJyYmIW0\/MC44OjEpKigwLjU1Kyh6Lms9PT0nYic\/MC43OjAuNSkqZGFyaysobT8wLjEyOjApKSxkZzoxLTAuNjIqTWF0aC5taW4oMSxNYXRoLm1heCgwLChULTAuMDYpLzAuMykpLGZsYWtlOm0\/MC4wNzowLHN4Onouaz09PSd3Jz8wLjM6MCx1bmk6ei5rPT09J2InJiYhbSxobDp6Lms9PT0nYic\/KG0\/MC40OjAuMTgpOjAuMn07Cn0KdmFyIEJPRFlNT0RFTD0nb2xkJzsKZnVuY3Rpb24gcmVuZGVyQm9keShkLHpkLFAwLG8scHgpewogIHZhciBuPXpkLmlkeC5sZW5ndGgsY2FwPTMsa249Y2FwKnpkLnJlZjsKICBmb3IodmFyIGs9MDtrPG47aysrKXsKICAgIHZhciBpPXpkLmlkeFtrXSo0LFI9dG9MaW5bcHhbaV1dLEc9dG9MaW5bcHhbaSsxXV0sQj10b0xpbltweFtpKzJdXSx3PXpkLldba10sTD16ZC5MW2tdLHI9TC96ZC5yZWY7CiAgICBpZihyPmNhcClyPWNhcDsKICAgIHI9TWF0aC5wb3cocixQMC5kZyk7CiAgICBpZihQMC5mbGFrZSlyKj0xK1AwLmZsYWtlKnpkLk5ba10qTWF0aC5taW4oMSxyKTsKICAgIHZhciB5PVAwLlQqcjtpZih5PjAuNil5PTAuNiswLjQqKDEtTWF0aC5leHAoLSh5LTAuNikvMC40KSk7CiAgICB2YXIgbnI9UDAuY3IqeSxuZz1QMC5jZyp5LG5iPVAwLmNiKnksbT1NYXRoLm1heChucixuZyxuYik7CiAgICBpZihtPjEpe25yLz1tO25nLz1tO25iLz1tO3ZhciB0PTEtTWF0aC5leHAoLShtLTEpKjEuMik7bnIrPSgxLW5yKSp0O25nKz0oMS1uZykqdDtuYis9KDEtbmIpKnR9CiAgICB2YXIgc3A9MC44NSpNYXRoLm1heCgwLEwta24pO25yKz1zcDtuZys9c3A7bmIrPXNwOwogICAgUis9KG5yLVIpKnc7Rys9KG5nLUcpKnc7Qis9KG5iLUIpKnc7CiAgICBvW2ldPXRvU3JnYltNYXRoLm1pbihMTixNYXRoLm1heCgwLFIqTE58MCkpXTtvW2krMV09dG9TcmdiW01hdGgubWluKExOLE1hdGgubWF4KDAsRypMTnwwKSldO29baSsyXT10b1NyZ2JbTWF0aC5taW4oTE4sTWF0aC5tYXgoMCxCKkxOfDApKV07CiAgfQp9CmZ1bmN0aW9uIGlzU2F0aW4oeil7dmFyIGlkPXN0W3oua10uaWQ7aWYoei5rPT09J2snKXJldHVybiBpZCE9PSdPJztpZih6Lms9PT0ndycpcmV0dXJuIGlkIT09J08nJiZpZCE9PSdaMDEnO2lmKGlkPT09J08nfHxpZD09PSdXSyd8fGlkPT09J1owMSd8fGlkPT09J1QwMScpcmV0dXJuIGZhbHNlOwogIGlmKHouaz09PSd0JylyZXR1cm4gdHJ1ZTsKICBpZih6Lms9PT0ndycpcmV0dXJuIHRydWU7CiAgcmV0dXJuIGZhbHNlfQpmdW5jdGlvbiByZW5kZXJTYXRpbih6ZCxQMCxvLHB4KXsKICB2YXIgbj16ZC5pZHgubGVuZ3RoOwogIGZvcih2YXIgaz0wO2s8bjtrKyspewogICAgdmFyIGk9emQuaWR4W2tdKjQsUj10b0xpbltweFtpXV0sRz10b0xpbltweFtpKzFdXSxCPXRvTGluW3B4W2krMl1dLHc9emQuV1trXTsKICAgIHZhciByMD0oMC41KnpkLkxba10rMC41KnpkLkxiW2tdKS96ZC5yZWYscj1QMC5zeD9NYXRoLm1heCgwLjc0LE1hdGgubWluKDEuMjIsTWF0aC5wb3coTWF0aC5tYXgocjAsMC4wMiksUDAuc3gpKSk6MStNYXRoLm1heCgtMC4zOCxNYXRoLm1pbigwLjQyLDAuMTcqTWF0aC5sb2coTWF0aC5tYXgocjAsMC4wMikpKSk7CiAgICBpZihQMC5mbGFrZSlyKj0xKzAuMDUqemQuTltrXTsKICAgIHZhciB5PVAwLlQqMS4xOCpyLHNwPTAuMDMqTWF0aC5taW4oMyxNYXRoLm1heCgwLHIwLTIpKSooMS1NYXRoLm1pbigxLHkpKTsKICAgIHZhciBucj1QMC5jcip5K3NwLG5nPVAwLmNnKnkrc3AsbmI9UDAuY2IqeStzcCxtPU1hdGgubWF4KG5yLG5nLG5iKTsKICAgIGlmKG0+MSl7bnIvPW07bmcvPW07bmIvPW19CiAgICBSKz0obnItUikqdztHKz0obmctRykqdztCKz0obmItQikqdzsKICAgIG9baV09dG9TcmdiW01hdGgubWluKExOLE1hdGgubWF4KDAsUipMTnwwKSldO29baSsxXT10b1NyZ2JbTWF0aC5taW4oTE4sTWF0aC5tYXgoMCxHKkxOfDApKV07b1tpKzJdPXRvU3JnYltNYXRoLm1pbihMTixNYXRoLm1heCgwLEIqTE58MCkpXTsKICB9Cn0KdmFyIERDVj1bMC41MjIsMC41NDcsMC41NjgsMC41OTUsMC42MjEsMC42MzgsMC42NjIsMC42ODgsMC43MSwwLjczMSwwLjc1MywwLjc3NywwLjgwMywwLjgxNywwLjg1LDAuODY3LDAuODk1LDAuOTMzLDAuOTcsMS4wMjQsMS4xMjcsMS4yNTQsMS41NTMsMi4xMzMsMi42NTYsMy4yNzgsNC42NCw3LjUyNCwxMi43MDYsMjQuODU4LDM1LjQ0NywzOC42ODMsNDAuMzYyLDQyLjU2NSw1Mi4wMzEsNTIuMDMxLDUyLjAzMSw1Mi4wMzEsNTIuMDMxLDUyLjAzMV0sRExPPU1hdGgubG9nKDAuMTUpLERTVD0oTWF0aC5sb2coOCktTWF0aC5sb2coMC4xNSkpLzM5OwpmdW5jdGlvbiBkY3VydmUocil7aWYocjw9MC4xNSlyZXR1cm4gRENWWzBdKnIvMC4xNTt2YXIgZj0oTWF0aC5sb2cociktRExPKS9EU1Q7aWYoZj49MzkpcmV0dXJuIERDVlszOV0qTWF0aC5wb3coci84LDAuNik7dmFyIGk9ZnwwLHQ9Zi1pO3JldHVybiBEQ1ZbaV0qKDEtdCkrRENWW2krMV0qdH0KZnVuY3Rpb24gZGFya1coWSl7dmFyIHQ9TWF0aC5taW4oMSxNYXRoLm1heCgwLChZLTAuMDI1KS8wLjEzNSkpO3JldHVybiAxLXQqdCooMy0yKnQpfQp2YXIgVEI9MC4wMTg2OwpmdW5jdGlvbiByZW5kZXJVbmkoemQsUDAsbyxweCl7CiAgdmFyIG49emQuaWR4Lmxlbmd0aCxUPU1hdGgubWluKFAwLlksMC44MiksY3I9UDAuY3IsY2c9UDAuY2csY2I9UDAuY2Isd2w9TWF0aC5taW4oMSxNYXRoLm1heCgwLChQMC5ZLTAuMDUpLzAuMzUpKTt3bD13bCp3bCooMy0yKndsKTsKICBmb3IodmFyIGs9MDtrPG47aysrKXsKICAgIHZhciBpPXpkLmlkeFtrXSo0LFI9dG9MaW5bcHhbaV1dLEc9dG9MaW5bcHhbaSsxXV0sQj10b0xpbltweFtpKzJdXSx3PXpkLldba107CiAgICB2YXIgcnI9KDAuNip6ZC5MW2tdKzAuNCp6ZC5MYltrXSkvemQucmVmLGRjPWRjdXJ2ZShycik7CiAgICB2YXIgZD1kYzwxLjE1P2RjOjEuMTUrMC4zKigxLU1hdGguZXhwKC0oZGMtMS4xNSkvMS41KSksUz1UQiooZGMtZCk7CiAgICBpZih3bD4wJiZycjwxKXt2YXIgZGw9TWF0aC5wb3cocnIsMC42Mik7ZCs9KGRsLWQpKndsKjAuNzV9CiAgICBpZihycjwwLjExKXt2YXIgcT1NYXRoLm1heCgwLChyci0wLjAxMikvMC4wOTgpO2QqPXEqcSooMy0yKnEpfQogICAgdmFyIHk9VCpkLG5yPWNyKnkrUyxuZz1jZyp5K1MsbmI9Y2IqeStTLG09TWF0aC5tYXgobnIsbmcsbmIpOwogICAgaWYobT4xKXtuci89bTtuZy89bTtuYi89bTt2YXIgdD0xLU1hdGguZXhwKC0obS0xKSoxLjUpO25yKz0oMS1ucikqdDtuZys9KDEtbmcpKnQ7bmIrPSgxLW5iKSp0fQogICAgUis9KG5yLVIpKnc7Rys9KG5nLUcpKnc7Qis9KG5iLUIpKnc7CiAgICBvW2ldPXRvU3JnYltNYXRoLm1pbihMTixNYXRoLm1heCgwLFIqTE58MCkpXTtvW2krMV09dG9TcmdiW01hdGgubWluKExOLE1hdGgubWF4KDAsRypMTnwwKSldO29baSsyXT10b1NyZ2JbTWF0aC5taW4oTE4sTWF0aC5tYXgoMCxCKkxOfDApKV07CiAgfQp9CmZ1bmN0aW9uIHNob3VsZGVyKHYpe3JldHVybiB2PD0wLjcyP3Y6MC43MiswLjI4KigxLU1hdGguZXhwKC0odi0wLjcyKS8wLjI4KSl9CnZhciBMVD17eTA6MC4xNix5MTowLjUsa2Q6MC4yMixrczowLjI1LHNhdDowLjMsaHA6MC43fTsKZnVuY3Rpb24gcmVuZGVyQUkoemQsUDAsbyxweCxtZXRhbGxpYyl7CiAgdmFyIG49emQuaWR4Lmxlbmd0aCxZPVAwLlksY3I9UDAuY3IqWSxjZz1QMC5jZypZLGNiPVAwLmNiKlk7CiAgdmFyIHdsPW1ldGFsbGljPzA6TWF0aC5taW4oMSxNYXRoLm1heCgwLChZLUxULnkwKS8oTFQueTEtTFQueTApKSk7d2w9d2wqd2wqKDMtMip3bCk7CiAgdmFyIHd0PU1hdGgubWluKDEsTWF0aC5tYXgoMCwoWS0wLjcpLzAuMikpLGtkPTEtTFQua2Qqd2wqKDEtMC40Knd0Knd0KigzLTIqd3QpKSxrcz0xLUxULmtzKndsLGhwPUxULmhwKndsOwogIGlmKHdsPjApe3ZhciBjeD1NYXRoLm1heChjcixjZyxjYiksc2E9MStMVC5zYXQqd2wqKDEtKGN4LU1hdGgubWluKGNyLGNnLGNiKSkvY3gpO2NyPU1hdGgubWF4KDAsWSsoY3ItWSkqc2EpKmtkO2NnPU1hdGgubWF4KDAsWSsoY2ctWSkqc2EpKmtkO2NiPU1hdGgubWF4KDAsWSsoY2ItWSkqc2EpKmtkfQogIGZvcih2YXIgaz0wO2s8bjtrKyspewogICAgdmFyIGk9emQuaWR4W2tdKjQsUj10b0xpbltweFtpXV0sRz10b0xpbltweFtpKzFdXSxCPXRvTGluW3B4W2krMl1dLHc9emQuV1trXSxkPXpkLkRba10scz16ZC5TW2tdKmtzOwogICAgaWYobWV0YWxsaWMpe3ZhciByPXpkLlJba10scm09TWF0aC5wb3cociwxLjIpLHE9TWF0aC5taW4oMSxkLygwLjMqTWF0aC5tYXgocm0sMC4wNSkpKTtkPSgwLjUqZCswLjUqcm0qcSkqKDErMC4wOSp6ZC5OW2tdKnEpO3M9cyooMS0wLjIqcSkrMC4wNSpxKk1hdGgubWF4KDAsci0xLjQpfQogICAgdmFyIGFyPWNyKmQrcyxhZz1jZypkK3MsYWI9Y2IqZCtzLG5yPXNob3VsZGVyKGFyKSxuZz1zaG91bGRlcihhZyksbmI9c2hvdWxkZXIoYWIpOwogICAgaWYoaHA+MCl7dmFyIG09TWF0aC5tYXgoYXIsYWcsYWIpO2lmKG0+MC43Mil7dmFyIGY9c2hvdWxkZXIobSkvbTtucis9KGFyKmYtbnIpKmhwO25nKz0oYWcqZi1uZykqaHA7bmIrPShhYipmLW5iKSpocH19CiAgICBSKz0obnItUikqdztHKz0obmctRykqdztCKz0obmItQikqdzsKICAgIG9baV09dG9TcmdiW01hdGgubWluKExOLE1hdGgubWF4KDAsUipMTnwwKSldO29baSsxXT10b1NyZ2JbTWF0aC5taW4oTE4sTWF0aC5tYXgoMCxHKkxOfDApKV07b1tpKzJdPXRvU3JnYltNYXRoLm1pbihMTixNYXRoLm1heCgwLEIqTE58MCkpXTsKICB9Cn0KZnVuY3Rpb24gcmVuZGVyKGtleSl7CiAgdmFyIGQ9REFUQVtrZXldO2lmKCFkKXJldHVybjsKICB2YXIgbz1kLm91dC5kYXRhLHB4PWQucHg7by5zZXQocHgpOwogIHZhciB6cz1kLnoudDtpZihkLnNiJiZ6cyYmenMuYWkmJnN0LnQuaWQhPT0nTycmJnN0LnQuaWQhPT0nVDAxJyYmc3QudC5pZCE9PSdaMDEnKXt2YXIgc2I9ZC5zYixzbj16cy5pZHgubGVuZ3RoO2Zvcih2YXIgcT0wO3E8c247cSsrKXt2YXIgYT16cy5QRltxXTtpZihhPjAuMDA0KXt2YXIgaj16cy5pZHhbcV0qNDtvW2pdKz0oc2Jbal0tb1tqXSkqYTtvW2orMV0rPShzYltqKzFdLW9baisxXSkqYTtvW2orMl0rPShzYltqKzJdLW9baisyXSkqYX19fQogIFouZm9yRWFjaChmdW5jdGlvbih6bil7CiAgICB2YXIgUDA9cGFyYW1zKHpuKSx6ZD1kLnpbem4ua107aWYoIXpkKXJldHVybjsKICAgIGlmKHpkLmFpKXJldHVybjsKICAgIGlmKCFQMClyZXR1cm47CiAgICBpZih6bi5rPT09J2InJiZ6ZC5EKXtyZW5kZXJBSSh6ZCxQMCxvLG8sbWV0YWwoem4pKTtyZXR1cm59CiAgICBpZih6ZC5MQSYmKHpuLms9PT0ndyd8fHpuLms9PT0naycpKXtyZW5kZXJTaGFkZSh6ZCxQMCxvLHN0W3puLmtdLmlkPT09J0YwOCd8fHN0W3puLmtdLmlkPT09J1owMSd8fChzdFt6bi5rXS5pZD09PSdaRScmJnN0LnQuaWQ9PT0nVDA2JykpO3JldHVybn0KICAgIGlmKGlzU2F0aW4oem4pKXtyZW5kZXJTYXRpbih6ZCxQMCxvLHB4KTtyZXR1cm59CiAgICBpZih6bi5rPT09J2InJiZQMC51bmkpe3JlbmRlclVuaSh6ZCxQMCxvLHB4KTtyZXR1cm59CiAgICBpZih6bi5rPT09J2InJiZCT0RZTU9ERUw9PT0nZGFyaycpe3JlbmRlckJvZHkoZCx6ZCxQMCxvLHB4KTtyZXR1cm59CiAgICB2YXIgbj16ZC5pZHgubGVuZ3RoLHdkPVAwLndkOwogICAgZm9yKHZhciBrPTA7azxuO2srKyl7CiAgICAgIHZhciBpPXpkLmlkeFtrXSo0LFI9dG9MaW5bcHhbaV1dLEc9dG9MaW5bcHhbaSsxXV0sQj10b0xpbltweFtpKzJdXSx3PXpkLldba10sTD16ZC5MW2tdLHI9TC96ZC5yZWY7CiAgICAgIGlmKFAwLmdhbSE9PTEpcj1NYXRoLnBvdyhyLFAwLmdhbSk7CiAgICAgIGlmKFAwLnVuaSl7dmFyIHJiPSgwLjM1KkwrMC42NSp6ZC5MYltrXSkvemQucmVmO3JiPXJiPjE\/MSsocmItMSkqMC40MjpyYjtyPXI+MT9NYXRoLm1pbihyLHJiKzAuMjUqKHItcmIpKjAuNCk6cjtyPU1hdGgucG93KE1hdGgubWF4KHIsMWUtNCksMC45KSowLjU1KzAuNDUqTWF0aC5wb3coTWF0aC5tYXgocmIsMWUtNCksMC45KX0KICAgICAgaWYod2Q+MClyPU1hdGguZXhwKCgxLXdkKSpNYXRoLmxvZyhNYXRoLm1heChyLDFlLTQpKSt3ZCpNYXRoLmxvZyhNYXRoLm1heChkY3VydmUoTC96ZC5yZWYpLDFlLTQpKSk7CiAgICAgIGlmKFAwLmZsYWtlKXIqPTErUDAuZmxha2UqemQuTltrXSpNYXRoLm1pbigxLHIpOwogICAgICB2YXIgeT1QMC5UKnI7aWYoeT4wLjYpeT0wLjYrMC40KigxLU1hdGguZXhwKC0oeS0wLjYpLzAuNCkpOwogICAgICB2YXIgaGs9KDEtd2QpKlAwLmhsKk1hdGgubWF4KDAsTWF0aC5taW4oMC44LHItMC43KSksbnI9KFAwLmNyKygxLVAwLmNyKSpoaykqeSxuZz0oUDAuY2crKDEtUDAuY2cpKmhrKSp5LG5iPShQMC5jYisoMS1QMC5jYikqaGspKnksbT1NYXRoLm1heChucixuZyxuYik7CiAgICAgIGlmKG0+MSl7bnIvPW07bmcvPW07bmIvPW07dmFyIHQ9KDEtTWF0aC5leHAoLShtLTEpKjEuMikpKigxLTAuNjUqTWF0aC5taW4oMSwoTWF0aC5tYXgoUDAuY3IsUDAuY2csUDAuY2IpLU1hdGgubWluKFAwLmNyLFAwLmNnLFAwLmNiKSkvTWF0aC5tYXgoUDAuY3IsUDAuY2csUDAuY2IpKSk7bnIrPSgxLW5yKSp0O25nKz0oMS1uZykqdDtuYis9KDEtbmIpKnR9CiAgICAgIHZhciBzcD0oMS13ZCkqTWF0aC5tYXgoMCxMLTAuNDIpKlAwLnNwZWMqKDEtTWF0aC5taW4oMSx5KSkqKDEtMC40Kk1hdGgubWluKDEsKE1hdGgubWF4KFAwLmNyLFAwLmNnLFAwLmNiKS1NYXRoLm1pbihQMC5jcixQMC5jZyxQMC5jYikpL01hdGgubWF4KFAwLmNyLFAwLmNnLFAwLmNiKSkpO25yKz1zcDtuZys9c3A7bmIrPXNwOwogICAgICBpZih3ZD4wKXt2YXIgZHM9d2QqMC45Kk1hdGgubWluKDEsTWF0aC5tYXgoMCwoeS0wLjA0KS8wLjMpKTtucis9KHktbnIpKmRzO25nKz0oeS1uZykqZHM7bmIrPSh5LW5iKSpkc30KICAgICAgUis9KG5yLVIpKnc7Rys9KG5nLUcpKnc7Qis9KG5iLUIpKnc7CiAgICAgIG9baV09dG9TcmdiW01hdGgubWluKExOLE1hdGgubWF4KDAsUipMTnwwKSldO29baSsxXT10b1NyZ2JbTWF0aC5taW4oTE4sTWF0aC5tYXgoMCxHKkxOfDApKV07b1tpKzJdPXRvU3JnYltNYXRoLm1pbihMTixNYXRoLm1heCgwLEIqTE58MCkpXTsKICAgIH0KICB9KTsKICB2YXIgenQ9ZC56LnQ7aWYoenQmJnp0LmFpKXt2YXIgdHo9em9uZSgndCcpO3JlbmRlclRyaW1BSSh6dCwoc3QudC5pZD09PSdUMDEnfHxzdC50LmlkPT09J1owMScpP251bGw6cGFyYW1zKHR6KSxvLHN0LmIuaWQhPT0nTycsc3QudC5pZD09PSdUMDYnPzI6c3QudC5pZD09PSdXSycscHgpfQogIGlmKGQuZW1iJiZzdC5iLmlkIT09J08nKXt2YXIgZWkyPWQuZW1iLmlkeCxlcDI9ZC5lbWIucHg7Zm9yKHZhciBtPTA7bTxlaTIubGVuZ3RoO20rKyl7dmFyIGk0PWVpMlttXSo0LGFsPWVwMltpNCszXS8yNTU7b1tpNF0rPShlcDJbaTRdLW9baTRdKSphbDtvW2k0KzFdKz0oZXAyW2k0KzFdLW9baTQrMV0pKmFsO29baTQrMl0rPShlcDJbaTQrMl0tb1tpNCsyXSkqYWx9fQogIGQuY3R4LnB1dEltYWdlRGF0YShkLm91dCwwLDApOwp9CgpmdW5jdGlvbiBwYWludCgpewogIGlmKERBVEFbdmlld10pcmVuZGVyKHZpZXcpO2Vsc2UgbmVlZCh2aWV3KTsKICBWTC5mb3JFYWNoKGZ1bmN0aW9uKHYpeyQoJ2N2LScrdi5rKS5oaWRkZW49IShEQVRBW3Yua10mJnZpZXc9PT12LmspOwogICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXY9Iicrdi5rKyciXScpLGZ1bmN0aW9uKGIpe2Iuc2V0QXR0cmlidXRlKCdhcmlhLXByZXNzZWQnLHZpZXc9PT12LmspfSk7CiAgICBpZih2aWV3PT09di5rKSQoJ3RpY2snKS50ZXh0Q29udGVudD12bGFiZWwodil9KTsKICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHJvb3QucXVlcnlTZWxlY3RvckFsbCgnLnZjdXInKSxmdW5jdGlvbihlKXt2YXIgY3VyPVZMLmZpbHRlcihmdW5jdGlvbih2KXtyZXR1cm4gdi5rPT09dmlld30pWzBdO2UuZmlyc3RDaGlsZC50ZXh0Q29udGVudD12bGFiZWwoY3VyKTtlLmxhc3RDaGlsZC5pbm5lckhUTUw9VkwubWFwKGZ1bmN0aW9uKHYpe3JldHVybiAnPGknKyh2Lms9PT12aWV3PycgY2xhc3M9Im9uIic6JycpKyc+PC9pPid9KS5qb2luKCcnKX0pOwogIFsnc2VnJywnZnNlZyddLmZvckVhY2goZnVuY3Rpb24oaWQpe3ZhciBzPSQoaWQpLGFiPXMucXVlcnlTZWxlY3RvcignW2FyaWEtcHJlc3NlZD0idHJ1ZSJdJyk7aWYoYWImJnMuc2Nyb2xsV2lkdGg+cy5jbGllbnRXaWR0aClzLnNjcm9sbExlZnQ9YWIub2Zmc2V0TGVmdC1zLm9mZnNldExlZnQtKHMuY2xpZW50V2lkdGgtYWIub2Zmc2V0V2lkdGgpLzJ9KTsKICAkKCdsb2FkaW5nJykuaGlkZGVuPSEhREFUQVt2aWV3XTsKICAkKCdteWNvZGUnKS50ZXh0Q29udGVudD1jb2RlKCk7CiAgJCgnc2hlZXQnKS5pbm5lckhUTUw9Wi5tYXAoZnVuY3Rpb24oeil7cmV0dXJuICc8ZGl2IGNsYXNzPSJzcm93Ij48aSBzdHlsZT0iYmFja2dyb3VuZDonK2hleCh6KSsnIj48L2k+PGRpdj48c3Bhbj4nK3puKHopKyc8L3NwYW4+PGI+Jytlc2MobGFiZWwoeikpKycgPGVtPlx1MDBiNyAnK2Zpbih6KSsnPC9lbT48L2I+PC9kaXY+PC9kaXY+J30pLmpvaW4oJycpOwogICQoJ3pjYXJkcycpLmlubmVySFRNTD1aLm1hcChmdW5jdGlvbih6LGkpe3JldHVybiAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ6YyIgcm9sZT0idGFiIiBkYXRhLXo9Iicrei5rKyciIGFyaWEtc2VsZWN0ZWQ9IicrKHouaz09PWFjdGl2ZSkrJyI+PHNwYW4gY2xhc3M9InpuIj48Yj4nKyhpKzEpKyc8L2I+Jyt6bih6KSsnPC9zcGFuPjxzcGFuIGNsYXNzPSJ6diI+PGkgc3R5bGU9ImJhY2tncm91bmQ6JytoZXgoeikrJyI+PC9pPjxzcGFuPicrZXNjKGxhYmVsKHopKSsnPC9zcGFuPjwvc3Bhbj48L2J1dHRvbj4nfSkuam9pbignJyk7CiAgJCgncnEnKS5ocmVmPSdtYWlsdG86b2ZmaWNlQHBzYXV0b21vYmlsZS5kZT9zdWJqZWN0PScrZW5jb2RlVVJJQ29tcG9uZW50KHRyKCdtYWlsU3ViJykrJyAnK2NvZGUoKSkrJyZib2R5PScrZW5jb2RlVVJJQ29tcG9uZW50KHRyKCdtYWlsSGknKStzdW1tYXJ5KCkrJ1xuJyt0cignY29kZUxibCcpKyc6ICcrY29kZSgpKydcbicrc2hhcmVVcmwoKSt0cignbWFpbEJ5ZScpKTsKICBpZih0b3VjaGVkKXt0cnl7aGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwnJyxsb2NhdGlvbi5wYXRobmFtZStsb2NhdGlvbi5zZWFyY2grJyMnK2NvZGUoKSl9Y2F0Y2goZSl7fX0KfQpmdW5jdGlvbiB0aWxlKGMsc2VsLHprKXsKICB2YXIgc2F0PShjLnBhbD09PSdUJyksZncsY2QsYmc9Yy5oZXgsbT1jLnQ9PT0nTScsYmFkZ2U9Jyc7CiAgaWYoYy5pZD09PSdaRScpe2JnPXRyaW1PcmlnKCk\/em9uZSgndycpLmQ6aGV4KHpvbmUoJ3QnKSk7bT10cnVlO2NkPWxhYmVsKHpvbmUoJ3QnKSk7YmFkZ2U9JzxzcGFuIGNsYXNzPSJhdXRvIj4nK3RyKCdhdXRvJykrJzwvc3Bhbj4nfQogIGVsc2UgaWYoYy5pZD09PSdXSycpe2JnPWhleCh6b25lKCdiJykpO209bWV0YWwoem9uZSgnYicpKTtjZD10cignZm9sbG93cycpfQogIGVsc2UgaWYoems9PT0ndCcpe2NkPWMuaWQ9PT0nVDAxJz90cignaGcnKTpjLmlkPT09J1QwNic\/dHIoJ2JoZycpOnRyKCdzbScpfQogIGVsc2UgaWYoems9PT0ndycpe2NkPWMuaWQ9PT0nRjAxJz90cigncG9sJyk6Yy5pZD09PSdGMDgnP3RyKCdnbCcpOmMuaWQ9PT0nRjA5Jz90cignbXQnKTpzYXQ\/dHIoJ3NtJyk6dHIoJ2xhY2snKX0KICBlbHNle2Z3PWMudD09PSdNJz90cignbWV0YWxsaWMnKTp0cignc29saWQnKTtjZD1jLnBhbD09PSdSJz8nUkFMICcrYy5udW06Znd9CiAgcmV0dXJuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNhcmQiIHJvbGU9Im9wdGlvbiIgZGF0YS1jPSInK2MuaWQrJyIgYXJpYS1zZWxlY3RlZD0iJysoc2VsPT09Yy5pZCkrJyIgdGl0bGU9IicrZXNjKGNuKGMpKSsnIj4nK2JhZGdlKyc8c3BhbiBjbGFzcz0iYmxrJysobT8nIG0nOicnKSsnIiBzdHlsZT0iYmFja2dyb3VuZDonK2JnKyciPjwvc3Bhbj48c3BhbiBjbGFzcz0ibm0iPicrZXNjKGNuKGMpKSsnPC9zcGFuPjxzcGFuIGNsYXNzPSJjZCI+Jytlc2MoY2QpKyc8L3NwYW4+PC9idXR0b24+JzsKfQpmdW5jdGlvbiBhbGxDb2xvcnMoeil7dmFyIHNlZW49e30sb3V0PVtdO3ouY29sbHMuZm9yRWFjaChmdW5jdGlvbihrKXtQW2tdLmxpc3QuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIga2V5PWMubmFtZS50b0xvd2VyQ2FzZSgpK2MuaGV4O2lmKCFzZWVuW2tleV0pe3NlZW5ba2V5XT0xO291dC5wdXNoKGMpfX0pfSk7CiAgaWYoei5rPT09J2InKXtvdXQuZm9yRWFjaChmdW5jdGlvbihjLGkpe2MuX289aTtjLl9sPWhsKGMuaGV4KX0pO291dC5zb3J0KGZ1bmN0aW9uKGEsYil7dmFyIGZhPUZBTVMuaW5kZXhPZihhLmZhbSksZmI9RkFNUy5pbmRleE9mKGIuZmFtKTtyZXR1cm4gZmEtZmJ8fGIuX2wtYS5fbHx8YS5fby1iLl9vfSl9cmV0dXJuIG91dH0KZnVuY3Rpb24gaGwoaCl7dmFyIHE9cmdiKGgpO3JldHVybiAwLjIxMjYqdG9MaW5bcVswXV0rMC43MTUyKnRvTGluW3FbMV1dKzAuMDcyMip0b0xpbltxWzJdXX0KZnVuY3Rpb24gbGliKCl7CiAgdmFyIHo9em9uZShhY3RpdmUpLHM9c3Rbei5rXSx1PXVpW3oua10saXNCPXouaz09PSdiJyxodG1sLGxpc3Q7CiAgJCgnbGlidGl0bGUnKS50ZXh0Q29udGVudD10cignaCcrei5rKTskKCdsaWJzdWInKS50ZXh0Q29udGVudD10cigncycrei5rKTsKICAkKCdjb2xscycpLmhpZGRlbj0haXNCOyQoJ2ZhbXMnKS5oaWRkZW49IWlzQjskKCdxJykuaGlkZGVuPSFpc0I7JCgnaGludCcpLmhpZGRlbj0haXNCOwogICQoJ2NhcmRzJykuY2xhc3NOYW1lPSdjYXJkcycrKGlzQj8nJzonIGJpZycpOwogIGlmKGlzQil7CiAgICB2YXIgYWxsTGlzdD1hbGxDb2xvcnMoeik7CiAgICAkKCdjb2xscycpLmlubmVySFRNTD0oei5kYz09PSdBJz9bJ0EnXS5jb25jYXQoei5jb2xscyk6ei5jb2xscy5jb25jYXQoWydBJ10pKS5tYXAoZnVuY3Rpb24oayl7cmV0dXJuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNoaXAiIGRhdGEtaz0iJytrKyciIGFyaWEtcHJlc3NlZD0iJysodS5jb2xsPT09aykrJyI+Jyt0cignYycraykrJzxpPicrKGs9PT0nQSc\/YWxsTGlzdC5sZW5ndGg6UFtrXS5saXN0Lmxlbmd0aCkrJzwvaT48L2J1dHRvbj4nfSkuam9pbignJyk7CiAgICB2YXIgYmFzZT11LmNvbGw9PT0nQSc\/YWxsTGlzdDpQW3UuY29sbF0ubGlzdCxwcmVzZW50PXt9O2Jhc2UuZm9yRWFjaChmdW5jdGlvbihjKXtwcmVzZW50W2MuZmFtXT0xfSk7CiAgICAkKCdmYW1zJykuaW5uZXJIVE1MPUZBTVMuZmlsdGVyKGZ1bmN0aW9uKGYpe3JldHVybiBwcmVzZW50W2ZdfSkubWFwKGZ1bmN0aW9uKGYpe3JldHVybiAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmYW0iIGRhdGEtZj0iJytmKyciIGFyaWEtcHJlc3NlZD0iJysodS5mYW09PT1mKSsnIiBhcmlhLWxhYmVsPSInK2ZuKGYpKyciIHRpdGxlPSInK2ZuKGYpKyciIHN0eWxlPSJiYWNrZ3JvdW5kOicrRkFNQ1tmXSsnIj48L2J1dHRvbj4nfSkuam9pbignJykrKHUuZmFtPyc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsciIgaWQ9ImZhbWNsciI+Jyt0cignYWxsY29sJykrJzwvYnV0dG9uPic6JycpOwogICAgdmFyIHE9dS5xLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL15yYWxccyovLCcnKTsKICAgIGxpc3Q9YmFzZS5maWx0ZXIoZnVuY3Rpb24oYyl7aWYodS5mYW0mJmMuZmFtIT09dS5mYW0pcmV0dXJuIGZhbHNlO2lmKCFxKXJldHVybiB0cnVlOwogICAgICByZXR1cm4gYy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxKT4tMXx8Y24oYykudG9Mb3dlckNhc2UoKS5pbmRleE9mKHEpPi0xfHxjLmlkLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxKT4tMXx8Yy5udW0uaW5kZXhPZihxKT09PTB8fGMuZmFtLnRvTG93ZXJDYXNlKCk9PT1xfHxmbihjLmZhbSkudG9Mb3dlckNhc2UoKT09PXF9KTsKICAgIGlmKCFxJiYhdS5mYW0pe2xpc3Q9bGlzdC5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSxiKXt2YXIgZD1GQU1TLmluZGV4T2YoYS5mYW0pLUZBTVMuaW5kZXhPZihiLmZhbSk7cmV0dXJuIGR8fGhsKGIuaGV4KS1obChhLmhleCl9KX0KICAgIHZhciBzZWxCPXMuaWQ9PT0nTyc\/J1AzNSc6cy5pZDsKICAgIGh0bWw9bGlzdC5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIHRpbGUoYyxzZWxCLCdiJyl9KS5qb2luKCcnKTsKICAgICQoJ2hpbnQnKS50ZXh0Q29udGVudD0ocXx8dS5mYW0pPyhsaXN0Lmxlbmd0aD9saXN0Lmxlbmd0aCsnICcrdHIoJ2hpdHMnKTp0cignbm9uZScpKTonJzsKICB9ZWxzZSBpZih6Lms9PT0ndCcpewogICAgaHRtbD1QLlQubGlzdC5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIHRpbGUoYyxzLmlkPT09J08nPydUMDEnOnMuaWQsJ3QnKX0pLmpvaW4oJycpOwogIH1lbHNlewogICAgaHRtbD1XTC5tYXAoZnVuY3Rpb24oaWQpe3JldHVybiB0aWxlKENbaWRdLHMuaWQ9PT0nTyc\/J0YwMSc6cy5pZCwndycpfSkuam9pbignJyk7CiAgfQogICQoJ2NhcmRzJykuaW5uZXJIVE1MPWh0bWw7CiAgJCgncnonKS50ZXh0Q29udGVudD1hY3RpdmU9PT0ndCc\/dHIoJ2JhY2tUJyk6YWN0aXZlPT09J3cnP3RyKCdiYWNrVycpOnRyKCdiYWNrQicpOwogICQoJ3J6JykuaGlkZGVuPXMuaWQ9PT16LmRlZjsKICAkKCdueHQnKS50ZXh0Q29udGVudD1hY3RpdmU9PT0nYic\/dHIoJ25leHRUJyk6YWN0aXZlPT09J3QnP3RyKCduZXh0VycpOnRyKCduZXh0UycpOwp9CmZ1bmN0aW9uIGFsbCgpe3BhaW50KCk7bGliKCl9CmZ1bmN0aW9uIGNoYW5nZSgpe3RvdWNoZWQ9dHJ1ZTthbGwoKX0KJCgnY29sbHMnKS5vbmNsaWNrPWZ1bmN0aW9uKGUpe3ZhciBiPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWtdJyk7aWYoYil7dWlbYWN0aXZlXS5jb2xsPWIuZGF0YXNldC5rO3VpW2FjdGl2ZV0uZmFtPScnO2xpYigpOyQoJ2NhcmRzJykuc2Nyb2xsVG9wPTB9fTsKJCgnZmFtcycpLm9uY2xpY2s9ZnVuY3Rpb24oZSl7dmFyIGI9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtZl0nKTtpZihiKXt1aVthY3RpdmVdLmZhbT11aVthY3RpdmVdLmZhbT09PWIuZGF0YXNldC5mPycnOmIuZGF0YXNldC5mO2xpYigpOyQoJ2NhcmRzJykuc2Nyb2xsVG9wPTA7cmV0dXJufWlmKGUudGFyZ2V0LmlkPT09J2ZhbWNscicpe3VpW2FjdGl2ZV0uZmFtPScnO2xpYigpfX07CiQoJ3EnKS5vbmlucHV0PWZ1bmN0aW9uKCl7dWlbYWN0aXZlXS5xPSQoJ3EnKS52YWx1ZTtsaWIoKX07CiQoJ3EnKS5vbmtleWRvd249ZnVuY3Rpb24oZSl7aWYoZS5rZXk9PT0nRW50ZXInKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIGY9JCgnY2FyZHMnKS5xdWVyeVNlbGVjdG9yKCdidXR0b24nKTtpZihmKWYuY2xpY2soKX19OwokKCdjYXJkcycpLm9uY2xpY2s9ZnVuY3Rpb24oZSl7dmFyIGI9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtY10nKTtpZighYilyZXR1cm47dmFyIGM9Q1tiLmRhdGFzZXQuY10saWQ9Yy5pZDsKICBpZigoYWN0aXZlPT09J2InJiZpZD09PSdQMzUnKXx8KGFjdGl2ZT09PSd0JyYmaWQ9PT0nVDAxJyl8fChhY3RpdmU9PT0ndycmJmlkPT09J0YwMScpKXN0W2FjdGl2ZV09e2lkOidPJyxtOmZhbHNlfTsKICBlbHNlIHN0W2FjdGl2ZV09e2lkOmlkLG06Yy5zcGVjaWFsP2ZhbHNlOmMudD09PSdNJ307CiAgY2hhbmdlKCl9OwpmdW5jdGlvbiBzZXRBY3RpdmUoayl7YWN0aXZlPWs7JCgncScpLnZhbHVlPXVpW2FjdGl2ZV0ucTthbGwoKTt2YXIgcHQ9JCgncGFuZWwnKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsbGltPXBhcnNlRmxvYXQoZ2V0Q29tcHV0ZWRTdHlsZShob3N0KS5nZXRQcm9wZXJ0eVZhbHVlKCctLXN0aWNrJykpfHwwO2lmKGdldENvbXB1dGVkU3R5bGUoJCgnemNhcmRzJykpLnBvc2l0aW9uPT09J3N0aWNreScpe2xpbSs9JCgnc3RhZ2Vjb2wnKS5vZmZzZXRIZWlnaHQ7aWYocHQ8bGltLTIpd2luZG93LnNjcm9sbEJ5KDAscHQtbGltKX19CiQoJ3pjYXJkcycpLm9uY2xpY2s9ZnVuY3Rpb24oZSl7dmFyIGI9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtel0nKTtpZihiKXNldEFjdGl2ZShiLmRhdGFzZXQueil9OwokKCdyeicpLm9uY2xpY2s9ZnVuY3Rpb24oKXtmcmVzaCh6b25lKGFjdGl2ZSkpOyQoJ3EnKS52YWx1ZT0nJztjaGFuZ2UoKX07CiQoJ3JhJykub25jbGljaz1mdW5jdGlvbigpe1ouZm9yRWFjaChmcmVzaCk7JCgncScpLnZhbHVlPScnO2FjdGl2ZT0nYic7Y2hhbmdlKCl9OwokKCdueHQnKS5vbmNsaWNrPWZ1bmN0aW9uKCl7CiAgaWYoYWN0aXZlPT09J3cnKXskKCdzdW0nKS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCcsYmxvY2s6J3N0YXJ0J30pO3JldHVybn0KICBzZXRBY3RpdmUoYWN0aXZlPT09J2InPyd0JzondycpOwogIHZhciByPSQoJ3BhbmVsJykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoci50b3A8MHx8ci50b3A+d2luZG93LmlubmVySGVpZ2h0KjAuNikkKCdwYW5lbCcpLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJyxibG9jazonbmVhcmVzdCd9KX07CmZ1bmN0aW9uIGlzRnVsbCgpe3JldHVybiAkKCdzdGFnZScpLmNsYXNzTGlzdC5jb250YWlucygnZnVsbCcpfQpmdW5jdGlvbiBzZXRGdWxsKG9uKXt6cmVzZXQoKTskKCdzdGFnZScpLmNsYXNzTGlzdC50b2dnbGUoJ2Z1bGwnLG9uKTskKCdzdGFnZWNvbCcpLmNsYXNzTGlzdC50b2dnbGUoJ2ZzJyxvbik7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93PW9uPydoaWRkZW4nOicnOyQoJ2ZzYicpLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsdHIob24\/J2ZzeCc6J2ZzJykpfQokKCdmc2InKS5vbmNsaWNrPWZ1bmN0aW9uKCl7c2V0RnVsbCghaXNGdWxsKCkpfTsKZnVuY3Rpb24gbmVlZChrKXtpZihEQVRBW2tdfHxMT0FESU5HW2tdKXJldHVybiBMT0FESU5HW2tdOwogIHJldHVybiBMT0FESU5HW2tdPXByZXAoaykudGhlbihmdW5jdGlvbihkKXtEQVRBW2tdPWQ7aWYodmlldz09PWspcGFpbnQoKX0pLmNhdGNoKGZ1bmN0aW9uKGUpe0xPQURJTkdba109bnVsbDtpZih2aWV3PT09ayl7JCgnbG9hZGluZycpLmhpZGRlbj1mYWxzZTskKCdsb2FkaW5nJykudGV4dENvbnRlbnQ9dHIoJ2xvYWRmYWlsJyl9aWYod2luZG93LmNvbnNvbGUpY29uc29sZS5lcnJvcihlKX0pfQpmdW5jdGlvbiBzZXRWaWV3KGspe3ZpZXc9azt6cmVzZXQoKTtwYWludCgpfQpmdW5jdGlvbiBzdGVwKGQpe3ZhciBpPVZMLm1hcChmdW5jdGlvbih2KXtyZXR1cm4gdi5rfSkuaW5kZXhPZih2aWV3KTtzZXRWaWV3KFZMWyhpK2QrVkwubGVuZ3RoKSVWTC5sZW5ndGhdLmspfQokKCdjdnMnKS5pbm5lckhUTUw9VkwubWFwKGZ1bmN0aW9uKHYpe3JldHVybiAnPGNhbnZhcyBpZD0iY3YtJyt2LmsrJyIgcm9sZT0iaW1nIiBoaWRkZW4+PC9jYW52YXM+J30pLmpvaW4oJycpOwpmdW5jdGlvbiB2aWV3QnV0dG9ucygpe3ZhciBoPVZMLm1hcChmdW5jdGlvbih2KXtyZXR1cm4gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLXY9Iicrdi5rKyciIGFyaWEtcHJlc3NlZD0iJysodmlldz09PXYuaykrJyI+Jytlc2ModmxhYmVsKHYpKSsnPC9idXR0b24+J30pLmpvaW4oJycpOyQoJ3NlZycpLmlubmVySFRNTD1oOyQoJ2ZzZWcnKS5pbm5lckhUTUw9aDsKICBWTC5mb3JFYWNoKGZ1bmN0aW9uKHYpeyQoJ2N2LScrdi5rKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCc5NjQgU1QgXHUwMGI3ICcrdmxhYmVsKHYpKX0pfQokKCdzZWcnKS5vbmNsaWNrPSQoJ2ZzZWcnKS5vbmNsaWNrPWZ1bmN0aW9uKGUpe3ZhciBiPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXZdJyk7aWYoYilzZXRWaWV3KGIuZGF0YXNldC52KX07CiQoJ3B2Jykub25jbGljaz0kKCdmcHYnKS5vbmNsaWNrPWZ1bmN0aW9uKCl7c3RlcCgtMSl9OyQoJ254Jykub25jbGljaz0kKCdmbngnKS5vbmNsaWNrPWZ1bmN0aW9uKCl7c3RlcCgxKX07CnZhciBzdz1udWxsLHN3aXBlZD1mYWxzZTsKdmFyIHptPXtzOjEseDowLHk6MH0scHo9bnVsbCxsYXN0VGFwPTAsU0c9JCgnc3RhZ2UnKTsKZnVuY3Rpb24gemFwcGx5KCl7U0cuc3R5bGUuc2V0UHJvcGVydHkoJy0tenMnLHptLnMpO1NHLnN0eWxlLnNldFByb3BlcnR5KCctLXp4Jyx6bS54KydweCcpO1NHLnN0eWxlLnNldFByb3BlcnR5KCctLXp5Jyx6bS55KydweCcpO1NHLmNsYXNzTGlzdC50b2dnbGUoJ3pvb21lZCcsem0ucz4xLjAxKX0KZnVuY3Rpb24gemNsYW1wKCl7dmFyIHI9U0cuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbXg9KHptLnMtMSkqci53aWR0aC8yLG15PSh6bS5zLTEpKnIuaGVpZ2h0LzI7em0ueD1NYXRoLm1heCgtbXgsTWF0aC5taW4obXgsem0ueCkpO3ptLnk9TWF0aC5tYXgoLW15LE1hdGgubWluKG15LHptLnkpKX0KZnVuY3Rpb24genJlc2V0KCl7em0ucz0xO3ptLng9MDt6bS55PTA7emFwcGx5KCl9CmZ1bmN0aW9uIHphdChucyxjeCxjeSl7dmFyIHI9U0cuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscHg9Y3gtci5sZWZ0LXIud2lkdGgvMixweT1jeS1yLnRvcC1yLmhlaWdodC8yO25zPU1hdGgubWF4KDEsTWF0aC5taW4oNSxucykpO3ZhciBrPW5zL3ptLnM7em0ueD1weC0ocHgtem0ueCkqazt6bS55PXB5LShweS16bS55KSprO3ptLnM9bnM7emNsYW1wKCk7emFwcGx5KCl9CmZ1bmN0aW9uIHRkaXN0KHQpe3JldHVybiBNYXRoLmh5cG90KHRbMF0uY2xpZW50WC10WzFdLmNsaWVudFgsdFswXS5jbGllbnRZLXRbMV0uY2xpZW50WSl9CmZ1bmN0aW9uIGh1c2goKXtzd2lwZWQ9dHJ1ZTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c3dpcGVkPWZhbHNlfSw0MDApfQpTRy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JyxmdW5jdGlvbihlKXt2YXIgdD1lLnRvdWNoZXM7CiAgaWYoaXNGdWxsKCkmJnQubGVuZ3RoPT09Mil7cHo9e2Q6dGRpc3QodCl8fDEsczp6bS5zfTtzdz1udWxsO3JldHVybn0KICBpZih0Lmxlbmd0aD09PTEpc3c9e3g6dFswXS5jbGllbnRYLHk6dFswXS5jbGllbnRZLHp4OnptLngsenk6em0ueSxtdjpmYWxzZX07c3dpcGVkPWZhbHNlfSx7cGFzc2l2ZTp0cnVlfSk7ClNHLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsZnVuY3Rpb24oZSl7aWYoIWlzRnVsbCgpKXJldHVybjt2YXIgdD1lLnRvdWNoZXM7CiAgaWYocHomJnQubGVuZ3RoPT09Mil7ZS5wcmV2ZW50RGVmYXVsdCgpO3phdChwei5zKnRkaXN0KHQpL3B6LmQsKHRbMF0uY2xpZW50WCt0WzFdLmNsaWVudFgpLzIsKHRbMF0uY2xpZW50WSt0WzFdLmNsaWVudFkpLzIpO3JldHVybn0KICBpZihzdyYmdC5sZW5ndGg9PT0xJiZ6bS5zPjEuMDEpe2UucHJldmVudERlZmF1bHQoKTt6bS54PXN3Lnp4K3RbMF0uY2xpZW50WC1zdy54O3ptLnk9c3cuenkrdFswXS5jbGllbnRZLXN3Lnk7emNsYW1wKCk7emFwcGx5KCk7c3cubXY9dHJ1ZX19LHtwYXNzaXZlOmZhbHNlfSk7ClNHLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJyxmdW5jdGlvbihlKXsKICBpZihweil7aWYoZS50b3VjaGVzLmxlbmd0aDwyKXtwej1udWxsO3N3PW51bGw7aWYoem0uczwxLjA2KXpyZXNldCgpO2h1c2goKX1yZXR1cm59CiAgaWYoIXN3KXJldHVybjt2YXIgdD1lLmNoYW5nZWRUb3VjaGVzWzBdLGR4PXQuY2xpZW50WC1zdy54LGR5PXQuY2xpZW50WS1zdy55LG12PXN3Lm12LG5vdz1EYXRlLm5vdygpO3N3PW51bGw7CiAgaWYoaXNGdWxsKCkmJmUudGFyZ2V0LnRhZ05hbWU9PT0nQ0FOVkFTJyYmTWF0aC5hYnMoZHgpPDEyJiZNYXRoLmFicyhkeSk8MTImJiFtdil7aWYobm93LWxhc3RUYXA8MzMwKXtpZih6bS5zPjEuMDEpenJlc2V0KCk7ZWxzZSB6YXQoMi42LHQuY2xpZW50WCx0LmNsaWVudFkpO2xhc3RUYXA9MDtodXNoKCl9ZWxzZSBsYXN0VGFwPW5vdztyZXR1cm59CiAgaWYoem0ucz4xLjAxKXtodXNoKCk7cmV0dXJufQogIGlmKE1hdGguYWJzKGR4KT40NSYmTWF0aC5hYnMoZHgpPjEuNSpNYXRoLmFicyhkeSkpe2h1c2goKTtzdGVwKGR4PDA\/MTotMSl9fSx7cGFzc2l2ZTp0cnVlfSk7ClNHLmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJyxmdW5jdGlvbihlKXtpZighaXNGdWxsKCkpcmV0dXJuO2UucHJldmVudERlZmF1bHQoKTt6YXQoem0ucyooZS5kZWx0YVk8MD8xLjE4OjEvMS4xOCksZS5jbGllbnRYLGUuY2xpZW50WSl9LHtwYXNzaXZlOmZhbHNlfSk7CnZhciBtZD1udWxsOwpTRy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLGZ1bmN0aW9uKGUpe2lmKGlzRnVsbCgpJiZ6bS5zPjEuMDEmJmUudGFyZ2V0LnRhZ05hbWU9PT0nQ0FOVkFTJyl7bWQ9e3g6ZS5jbGllbnRYLHk6ZS5jbGllbnRZLHp4OnptLngsenk6em0ueX07ZS5wcmV2ZW50RGVmYXVsdCgpfX0pOwp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJyxmdW5jdGlvbihlKXtpZihtZCl7em0ueD1tZC56eCtlLmNsaWVudFgtbWQueDt6bS55PW1kLnp5K2UuY2xpZW50WS1tZC55O3pjbGFtcCgpO3phcHBseSgpfX0pOwp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsZnVuY3Rpb24oKXttZD1udWxsfSk7CiQoJ2N2cycpLm9uZGJsY2xpY2s9ZnVuY3Rpb24oZSl7aWYoIWlzRnVsbCgpKXJldHVybjtpZih6bS5zPjEuMDEpenJlc2V0KCk7ZWxzZSB6YXQoMi42LGUuY2xpZW50WCxlLmNsaWVudFkpfTsKaWYoIUNGRy5zdGFuZGFsb25lJiZ3aW5kb3cubWF0Y2hNZWRpYSYmbWF0Y2hNZWRpYSgnKHBvaW50ZXI6Y29hcnNlKScpLm1hdGNoZXMpe3RyeXsKICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUudG91Y2hBY3Rpb249J3Bhbi14IHBhbi15JzsKICB2YXIgdnA9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPSJ2aWV3cG9ydCJdJyk7aWYodnAmJiEvdXNlci1zY2FsYWJsZS8udGVzdCh2cC5jb250ZW50KSl2cC5jb250ZW50PXZwLmNvbnRlbnQrJywgbWF4aW11bS1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vJzsKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdnZXN0dXJlc3RhcnQnLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKX0se3Bhc3NpdmU6ZmFsc2V9KX1jYXRjaChlKXt9fQokKCdjdnMnKS5vbmNsaWNrPWZ1bmN0aW9uKCl7aWYoc3dpcGVkKXJldHVybjtpZighaXNGdWxsKCkpc2V0RnVsbCh0cnVlKX07CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLGZ1bmN0aW9uKGUpewogIGlmKCEkKCdtb2RhbCcpLmhpZGRlbil7aWYoZS5rZXk9PT0nRXNjYXBlJyljbG9zZU1vZGFsKCk7cmV0dXJufQogIGlmKCFpc0Z1bGwoKSlyZXR1cm47CiAgaWYoZS5rZXk9PT0nRXNjYXBlJylzZXRGdWxsKGZhbHNlKTtlbHNlIGlmKGUua2V5PT09J0Fycm93TGVmdCcpc3RlcCgtMSk7ZWxzZSBpZihlLmtleT09PSdBcnJvd1JpZ2h0JylzdGVwKDEpfSk7CmZ1bmN0aW9uIGNvcHkodHh0LGJ0bixvayxiYWNrKXsKICB2YXIgZG9uZT1mdW5jdGlvbih0KXtidG4udGV4dENvbnRlbnQ9dDtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YnRuLnRleHRDb250ZW50PWJhY2t9LDE4MDApfTsKICB2YXIgZmI9ZnVuY3Rpb24oKXt0cnl7dmFyIHRhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7dGEudmFsdWU9dHh0O3RhLnN0eWxlLmNzc1RleHQ9J3Bvc2l0aW9uOmZpeGVkO2xlZnQ6LTk5OXB4O3RvcDowJztkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhKTt0YS5zZWxlY3QoKTt2YXIgaz1kb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGEpO2RvbmUoaz9vazp0cignbm9wZScpKX1jYXRjaChlKXtkb25lKHRyKCdub3BlJykpfX07CiAgaWYobmF2aWdhdG9yLmNsaXBib2FyZCYmbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQpe25hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHR4dCkudGhlbihmdW5jdGlvbigpe2RvbmUob2spfSxmYil9ZWxzZSBmYigpfQokKCdjYycpLm9uY2xpY2s9ZnVuY3Rpb24oKXtjb3B5KGNvZGUoKSwkKCdjYycpLHRyKCdjb3BpZWQnKSx0cignY29weScpKX07CiQoJ3JxJykub25jbGljaz1mdW5jdGlvbihlKXt2YXIgUD13aW5kb3cuZWxlbWVudG9yUHJvRnJvbnRlbmQmJmVsZW1lbnRvclByb0Zyb250ZW5kLm1vZHVsZXMmJmVsZW1lbnRvclByb0Zyb250ZW5kLm1vZHVsZXMucG9wdXA7CiAgaWYoIVAmJiFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybS1maWVsZC1tZXNzYWdlJykpcmV0dXJuO2UucHJldmVudERlZmF1bHQoKTtpZihpc0Z1bGwoKSlzZXRGdWxsKGZhbHNlKTsKICB2YXIgYmxrPXRyKCdtYWlsU3ViJykrJ1xuJytzdW1tYXJ5KCkrJ1xuJyt0cignY29kZUxibCcpKyc6ICcrY29kZSgpKydcbicrc2hhcmVVcmwoKSsnXG5cbic7CiAgZnVuY3Rpb24gZmlsbChuKXt2YXIgdGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmVsZW1lbnRvci1wb3B1cC1tb2RhbCAjZm9ybS1maWVsZC1tZXNzYWdlJyl8fGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3JtLWZpZWxkLW1lc3NhZ2UnKTsKICAgIGlmKCF0YSl7aWYobj4wKXNldFRpbWVvdXQoZnVuY3Rpb24oKXtmaWxsKG4tMSl9LDE1MCk7cmV0dXJufQogICAgdmFyIGN1cj10YS52YWx1ZXx8JycscHJldj10YS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcHM5NjQnKXx8Jyc7aWYocHJldiYmY3VyLmluZGV4T2YocHJldik9PT0wKWN1cj1jdXIuc2xpY2UocHJldi5sZW5ndGgpOwogICAgdGEudmFsdWU9YmxrK2N1cjt0YS5zZXRBdHRyaWJ1dGUoJ2RhdGEtcHM5NjQnLGJsayk7aWYodGEucm93czw5KXRhLnJvd3M9OTsKICAgIHRyeXt0YS5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLHtidWJibGVzOnRydWV9KSk7dGEuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScse2J1YmJsZXM6dHJ1ZX0pKX1jYXRjaCh4KXt9fQogIGlmKFApe3RyeXtQLnNob3dQb3B1cCh7aWQ6Q0ZHLnBvcHVwfHwxMzY2N30pfWNhdGNoKHgpe319ZmlsbCgzMCl9OwokKCdzbCcpLm9uY2xpY2s9ZnVuY3Rpb24oKXtjb3B5KHNoYXJlVXJsKCksJCgnc2wnKSx0cignY29waWVkJyksdHIoJ2NvcHlsaW5rJykpfTsKJCgnbGYnKS5vbnN1Ym1pdD1mdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIGVycj1hcHBseUNvZGUoJCgnaW5jJykudmFsdWUpOwogIGlmKCFlcnIpeyQoJ3EnKS52YWx1ZT0nJztjaGFuZ2UoKX0KICAkKCdtc2cnKS5jbGFzc05hbWU9J21zZycrKGVycj8nIGVycic6JycpOyQoJ21zZycpLnRleHRDb250ZW50PWVycnx8dHIoJ29rT3BlbicpfTsKCmZ1bmN0aW9uIGZvbnRzUmVhZHkoKXt0cnl7cmV0dXJuIFByb21pc2UuYWxsKFtkb2N1bWVudC5mb250cy5sb2FkKCc2MDAgNDBweCBCYXJsb3cnKSxkb2N1bWVudC5mb250cy5sb2FkKCc1MDAgNDBweCBCYXJsb3cnKSxkb2N1bWVudC5mb250cy5sb2FkKCc0MDAgNDBweCBCYXJsb3cnKV0pLmNhdGNoKGZ1bmN0aW9uKCl7fSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfX0KdmFyIExPR09TPW51bGw7CmZ1bmN0aW9uIGxvZ29zKCl7cmV0dXJuIExPR09TfHwoTE9HT1M9UHJvbWlzZS5hbGwoW2xvYWRJbWcoJ3BzLWxvZ28ucG5nJyksbG9hZEltZygnc3QtbG9nby5wbmcnKV0pKX0KZnVuY3Rpb24gc3AoeCx2KXt0cnl7eC5sZXR0ZXJTcGFjaW5nPXZ9Y2F0Y2goZSl7fX0KZnVuY3Rpb24gZml0KHgsdHh0LG1heFcsc2l6ZSx3dCl7Zm9yKDs7KXt4LmZvbnQ9d3QrJyAnK3NpemUrJ3B4IEJhcmxvdywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYnO2lmKHNpemU8PTIwfHx4Lm1lYXN1cmVUZXh0KHR4dCkud2lkdGg8PW1heFcpcmV0dXJuO3NpemUtPTJ9fQpmdW5jdGlvbiBjb2xsYWdlKCl7CiAgdmFyIGtleXM9Wydmcm9udCcsJ3NpZGUnLCdoZWNrMzQnXTsKICByZXR1cm4gUHJvbWlzZS5hbGwoW2xvZ29zKCksZm9udHNSZWFkeSgpXS5jb25jYXQoa2V5cy5tYXAoZnVuY3Rpb24oayl7cmV0dXJuIG5lZWQoayl9KSkpLnRoZW4oZnVuY3Rpb24ocil7CiAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24oayl7aWYoIURBVEFba10pdGhyb3cgbmV3IEVycm9yKCd2aWV3ICcrayk7cmVuZGVyKGspfSk7CiAgICB2YXIgVz0yMTYwLEg9MjcwMCxjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO2Mud2lkdGg9VztjLmhlaWdodD1IO3ZhciB4PWMuZ2V0Q29udGV4dCgnMmQnKSxGPSdCYXJsb3csICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmJyxwcz1yWzBdWzBdLHN0bD1yWzBdWzFdOwogICAgeC5maWxsU3R5bGU9JyMwYjBiMGInO3guZmlsbFJlY3QoMCwwLFcsSCk7CiAgICB2YXIgbGg9ODQsbHc9bGgqc3RsLm5hdHVyYWxXaWR0aC9zdGwubmF0dXJhbEhlaWdodDt4LmRyYXdJbWFnZShzdGwsOTAsNTgsbHcsbGgpOwogICAgeC5kcmF3SW1hZ2UocHMsVy05MC0xMjQsMzgsMTI0LDEyNCk7CiAgICB4LnRleHRCYXNlbGluZT0nYWxwaGFiZXRpYyc7eC50ZXh0QWxpZ249J3JpZ2h0Jzt4LmZpbGxTdHlsZT0nI2E1YTI5OCc7c3AoeCwnMC4yZW0nKTt4LmZvbnQ9JzYwMCAyNnB4ICcrRjt4LmZpbGxUZXh0KHRyKCdjVGl0bGUnKS50b1VwcGVyQ2FzZSgpLFctOTAtMTI0LTM2LDk2KTsKICAgIHNwKHgsJzAuMDZlbScpO3guZm9udD0nNTAwIDMwcHggJytGO3guZmlsbFN0eWxlPScjZjJmMGVhJzt4LmZpbGxUZXh0KCc5NjQgU1QnLFctOTAtMTI0LTM2LDEzOCk7CiAgICB4LnRleHRBbGlnbj0nbGVmdCc7CiAgICB2YXIgaHk9MjAwLGhoPU1hdGgucm91bmQoVyoxMDY0LzE4MDApO3guZHJhd0ltYWdlKCQoJ2N2LWZyb250JyksMCxoeSxXLGhoKTsKICAgIHZhciBnPTE0LHJ3PShXLWcpLzIscmg9TWF0aC5yb3VuZChydyoxMDY0LzE4MDApLHJ5PWh5K2hoK2c7CiAgICB4LmRyYXdJbWFnZSgkKCdjdi1zaWRlJyksMCxyeSxydyxyaCk7eC5kcmF3SW1hZ2UoJCgnY3YtaGVjazM0JykscncrZyxyeSxydyxyaCk7CiAgICB2YXIgc3k9cnkrcmgsY3c9KFctMTgwKS8zOwogICAgWi5mb3JFYWNoKGZ1bmN0aW9uKHosaSl7dmFyIFg9OTAraSpjdyxZPXN5Kzc4OwogICAgICBzcCh4LCcwLjJlbScpO3guZm9udD0nNjAwIDI1cHggJytGO3guZmlsbFN0eWxlPScjY2RiNDZjJzt4LmZpbGxUZXh0KHpuKHopLnRvVXBwZXJDYXNlKCksWCxZKTsKICAgICAgeC5iZWdpblBhdGgoKTt4LmFyYyhYKzQwLFkrODYsNDAsMCxNYXRoLlBJKjIpO3guZmlsbFN0eWxlPWhleCh6KTt4LmZpbGwoKTsKICAgICAgdmFyIGdyPXguY3JlYXRlTGluZWFyR3JhZGllbnQoWCxZKzQ2LFgrODAsWSsxMjYpO2dyLmFkZENvbG9yU3RvcCgwLCdyZ2JhKDI1NSwyNTUsMjU1LC4yOCknKTtnci5hZGRDb2xvclN0b3AoLjUsJ3JnYmEoMjU1LDI1NSwyNTUsMCknKTtnci5hZGRDb2xvclN0b3AoMSwncmdiYSgwLDAsMCwuMjUpJyk7eC5maWxsU3R5bGU9Z3I7eC5maWxsKCk7CiAgICAgIHgubGluZVdpZHRoPTI7eC5zdHJva2VTdHlsZT0ncmdiYSgyNTUsMjU1LDI1NSwuMyknO3guc3Ryb2tlKCk7CiAgICAgIHNwKHgsJzBlbScpO3guZmlsbFN0eWxlPScjZjJmMGVhJzt2YXIgbm09c3Rbei5rXS5pZD09PSdaRSc\/bGFiZWwoem9uZSgndCcpKTpzdFt6LmtdLmlkPT09J1dLJz9sYWJlbCh6b25lKCdiJykpOmxhYmVsKHopO2ZpdCh4LG5tLGN3LTE0MCw0NCwnNjAwJyk7eC5maWxsVGV4dChubSxYKzEwNCxZKzgyKTsKICAgICAgeC5maWxsU3R5bGU9JyNhNWEyOTgnO3guZm9udD0nNDAwIDMwcHggJytGO3guZmlsbFRleHQoZmluKHopKyhzdFt6LmtdLmlkPT09J1pFJz8nIFx1MDBiNyAnK3RyKCdhc1RyaW0nKTpzdFt6LmtdLmlkPT09J1dLJyYmei5rIT09J2InPycgXHUwMGI3ICcrdHIoJ2JvZHknKTonJyksWCsxMDQsWSsxMjQpfSk7CiAgICB2YXIgbHk9c3krMjYyO3guZmlsbFN0eWxlPScjMmUyZDJhJzt4LmZpbGxSZWN0KDkwLGx5LFctMTgwLDIpOwogICAgc3AoeCwnMC4yZW0nKTt4LmZvbnQ9JzYwMCAyNXB4ICcrRjt4LmZpbGxTdHlsZT0nI2NkYjQ2Yyc7eC5maWxsVGV4dCh0cignY29kZUxibCcpLnRvVXBwZXJDYXNlKCksOTAsbHkrNzApOwogICAgc3AoeCwnMC4xZW0nKTt4LmZvbnQ9JzYwMCA2NnB4ICcrRjt4LmZpbGxTdHlsZT0nI2YyZjBlYSc7eC5maWxsVGV4dChjb2RlKCksOTAsbHkrMTQ4KTsKICAgIHgudGV4dEFsaWduPSdyaWdodCc7c3AoeCwnMC4wNGVtJyk7eC5mb250PSc1MDAgMzZweCAnK0Y7eC5maWxsVGV4dChDRkcuc2hvd258fCdwc2F1dG9tb2JpbGUuZGUnLFctOTAsbHkrMTA0KTsKICAgIHguZmlsbFN0eWxlPScjYTVhMjk4JztzcCh4LCcwZW0nKTt4LmZvbnQ9JzQwMCAyN3B4ICcrRjt4LmZpbGxUZXh0KCdQUyBBdXRvbW9iaWxlIEdtYkggXHUwMGI3IExpcHBzdGFkdCcsVy05MCxseSsxNDgpOwogICAgeC50ZXh0QWxpZ249J2xlZnQnO3guZm9udD0nNDAwIDIzcHggJytGO3guZmlsbFN0eWxlPScjN2Q3YTcxJzt4LmZpbGxUZXh0KHRyKCdjRGlzYycpLDkwLEgtNTIpOwogICAgcmV0dXJuIGN9KX0KdmFyIGV4QmxvYj1udWxsLGV4VXJsPScnOwpmdW5jdGlvbiBjbG9zZU1vZGFsKCl7JCgnbW9kYWwnKS5oaWRkZW49dHJ1ZTtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3c9aXNGdWxsKCk\/J2hpZGRlbic6Jyc7aWYoZXhVcmwpe1VSTC5yZXZva2VPYmplY3RVUkwoZXhVcmwpO2V4VXJsPScnfSQoJ21pbWcnKS5pbm5lckhUTUw9Jyd9CmZ1bmN0aW9uIGZuYW1lKCl7cmV0dXJuICc5NjQtU1QtJytjb2RlKCkrJy5qcGcnfQokKCdleCcpLm9uY2xpY2s9ZnVuY3Rpb24oKXsKICB2YXIgYj0kKCdleCcpO2lmKGIuZGlzYWJsZWQpcmV0dXJuO2IuZGlzYWJsZWQ9dHJ1ZTsKICAkKCdtb2RhbCcpLmhpZGRlbj1mYWxzZTtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3c9J2hpZGRlbic7JCgnbWltZycpLnRleHRDb250ZW50PXRyKCdleHdhaXQnKTskKCdkbCcpLmRpc2FibGVkPXRydWU7JCgnc2gnKS5oaWRkZW49dHJ1ZTtleEJsb2I9bnVsbDsKICBjb2xsYWdlKCkudGhlbihmdW5jdGlvbihjKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzLHJlail7Yy50b0Jsb2IoZnVuY3Rpb24oYmwpe2JsP3JlcyhibCk6cmVqKG5ldyBFcnJvcignYmxvYicpKX0sJ2ltYWdlL2pwZWcnLDAuOTIpfSl9KS50aGVuKGZ1bmN0aW9uKGJsKXsKICAgIGV4QmxvYj1ibDtleFVybD1VUkwuY3JlYXRlT2JqZWN0VVJMKGJsKTt2YXIgbWk9JCgnbWltZycpLGlnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO2lnLmFsdD0nOTY0IFNUICcrY29kZSgpO2lnLnNyYz1leFVybDttaS50ZXh0Q29udGVudD0nJzttaS5hcHBlbmRDaGlsZChpZyk7JCgnZGwnKS5kaXNhYmxlZD1mYWxzZTsKICAgIHRyeXt2YXIgZj1uZXcgRmlsZShbYmxdLGZuYW1lKCkse3R5cGU6J2ltYWdlL2pwZWcnfSk7aWYobmF2aWdhdG9yLmNhblNoYXJlJiZuYXZpZ2F0b3IuY2FuU2hhcmUoe2ZpbGVzOltmXX0pKSQoJ3NoJykuaGlkZGVuPWZhbHNlfWNhdGNoKGUpe30KICAgIHBhaW50KCk7CiAgfSkuY2F0Y2goZnVuY3Rpb24oZSl7JCgnbWltZycpLnRleHRDb250ZW50PXRyKCdleGZhaWwnKTtpZih3aW5kb3cuY29uc29sZSljb25zb2xlLmVycm9yKGUpfSkudGhlbihmdW5jdGlvbigpe2IuZGlzYWJsZWQ9ZmFsc2V9KX07CmZ1bmN0aW9uIHNhdmVMaW5rKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO2EuaHJlZj1leFVybDthLmRvd25sb2FkPWZuYW1lKCk7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTthLmNsaWNrKCk7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKX0KJCgnZGwnKS5vbmNsaWNrPWZ1bmN0aW9uKCl7aWYoIWV4VXJsfHwhZXhCbG9iKXJldHVybjsKICBpZihDRkcuc3RhbmRhbG9uZSYmd2luZG93LmNsYXVkZSYmdHlwZW9mIHdpbmRvdy5jbGF1ZGUudXNlPT09J2Z1bmN0aW9uJyl7d2luZG93LmNsYXVkZS51c2UoJ2Rvd25sb2FkcycpLnRoZW4oZnVuY3Rpb24oZCl7aWYoIWQpe3NhdmVMaW5rKCk7cmV0dXJufXJldHVybiBkLnNhdmUoe2ZpbGVuYW1lOmZuYW1lKCksZGF0YTpleEJsb2J9KX0pLmNhdGNoKGZ1bmN0aW9uKCl7fSk7cmV0dXJufQogIHNhdmVMaW5rKCl9OwokKCdzaCcpLm9uY2xpY2s9ZnVuY3Rpb24oKXtpZighZXhCbG9iKXJldHVybjt0cnl7bmF2aWdhdG9yLnNoYXJlKHtmaWxlczpbbmV3IEZpbGUoW2V4QmxvYl0sZm5hbWUoKSx7dHlwZTonaW1hZ2UvanBlZyd9KV0sdGl0bGU6Jzk2NCBTVCAnK2NvZGUoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7fSl9Y2F0Y2goZSl7fX07CiQoJ214Jykub25jbGljaz1jbG9zZU1vZGFsOyQoJ21vZGFsJykub25jbGljaz1mdW5jdGlvbihlKXtpZihlLnRhcmdldD09PSQoJ21vZGFsJykpY2xvc2VNb2RhbCgpfTsKCmZ1bmN0aW9uIGFwcGx5U3RhdGljKCl7CiAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWldJyksZnVuY3Rpb24oZSl7ZS50ZXh0Q29udGVudD10cihlLmdldEF0dHJpYnV0ZSgnZGF0YS1pJykpfSk7CiAgJCgncScpLnBsYWNlaG9sZGVyPXRyKCdzZWFyY2gnKTskKCdxJykuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyx0cignc2VhcmNoJykpOyQoJ2xvYWRpbmcnKS50ZXh0Q29udGVudD10cignbG9hZGluZycpOwogICQoJ3B2Jykuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyx0cigncHJldicpKTskKCdueCcpLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsdHIoJ25leHQnKSk7JCgnZnB2Jykuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyx0cigncHJldicpKTskKCdmbngnKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLHRyKCduZXh0JykpOyQoJ214Jykuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyx0cignZnN4JykpOwogIHZpZXdCdXR0b25zKCk7CiAgJCgnZnNiJykuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyx0cihpc0Z1bGwoKT8nZnN4JzonZnMnKSk7JCgnbGdEZScpLnNldEF0dHJpYnV0ZSgnYXJpYS1wcmVzc2VkJyxsYW5nPT09J2RlJyk7JCgnbGdFbicpLnNldEF0dHJpYnV0ZSgnYXJpYS1wcmVzc2VkJyxsYW5nPT09J2VuJyk7CiAgJCgnY2ZnJykubGFuZz1sYW5nOwogIGlmKENGRy5zdGFuZGFsb25lKXtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZz1sYW5nfQp9CmZ1bmN0aW9uIHNldExhbmcobCl7bGFuZz1sO3RyeXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncHMtbGFuZycsbCl9Y2F0Y2goZSl7fWFwcGx5U3RhdGljKCk7YWxsKCl9CiQoJ2xnRGUnKS5vbmNsaWNrPWZ1bmN0aW9uKCl7c2V0TGFuZygnZGUnKX07JCgnbGdFbicpLm9uY2xpY2s9ZnVuY3Rpb24oKXtzZXRMYW5nKCdlbicpfTsKJCgnbGFuZ2JveCcpLmhpZGRlbj0hQ0ZHLnN0YW5kYWxvbmU7Cmhvc3QuX19wcz17b3BlbjpmdW5jdGlvbihjKXt2YXIgZT1hcHBseUNvZGUoYyk7aWYoIWUpYWxsKCk7cmV0dXJuIGV9LHZpZXc6c2V0Vmlldyxjb2xsYWdlOmNvbGxhZ2UsY29kZTpjb2RlfTsKdmFyIGgwPScnO3RyeXtoMD1sb2NhdGlvbi5oYXNofHwnJztpZighaDApe3ZhciBxcz1uZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCkuZ2V0KCdjb2RlJyk7aWYocXMpaDA9cXN9fWNhdGNoKGUpe30KaWYoaDAmJi9eIz9QUy0vaS50ZXN0KGgwKSlhcHBseUNvZGUoaDApOwphcHBseVN0YXRpYygpO2FsbCgpOwp2YXIgcmFmPTA7CnZhciBIRFI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmVsZW1lbnRvci1sb2NhdGlvbi1oZWFkZXInKTsKZnVuY3Rpb24gc3RpY2soKXtyYWY9MDt2YXIgdG9wPTAsYWI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dwYWRtaW5iYXInKTsKICBpZihIRFImJi9zdGlja3l8Zml4ZWQvLnRlc3QoZ2V0Q29tcHV0ZWRTdHlsZShIRFIpLnBvc2l0aW9uKSl7CiAgICBpZihhYiYmZ2V0Q29tcHV0ZWRTdHlsZShhYikucG9zaXRpb249PT0nZml4ZWQnKXRvcD1hYi5vZmZzZXRIZWlnaHQ7CiAgICBpZighSERSLmNsYXNzTGlzdC5jb250YWlucygncHN4LWhpZGUnKSl0b3ArPUhEUi5vZmZzZXRIZWlnaHQ7CiAgfWVsc2V7dmFyIGVscz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjd3BhZG1pbmJhciwuZWxlbWVudG9yLXN0aWNreS0tYWN0aXZlLGhlYWRlcicpOwogICAgZm9yKHZhciBpPTA7aTxlbHMubGVuZ3RoO2krKyl7dmFyIGNzPWdldENvbXB1dGVkU3R5bGUoZWxzW2ldKTtpZihjcy5wb3NpdGlvbiE9PSdmaXhlZCcmJmNzLnBvc2l0aW9uIT09J3N0aWNreScpY29udGludWU7dmFyIHI9ZWxzW2ldLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKHIudG9wPD10b3ArMSYmci5ib3R0b20+dG9wJiZyLmhlaWdodDwyMDAmJnIud2lkdGg+d2luZG93LmlubmVyV2lkdGgqMC42KXRvcD1yLmJvdHRvbX19CiAgdG9wPU1hdGgubWF4KDAsTWF0aC5yb3VuZCh0b3ApKTt2YXIgb2xkPXBhcnNlRmxvYXQoaG9zdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLXN0aWNrJykpfHwwO2lmKG9sZCE9PXRvcHx8IWhvc3Quc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zdGljaycpKXtob3N0LnN0eWxlLnNldFByb3BlcnR5KCctLXN0aWNrdCcsdG9wPG9sZD8nLjI0cyc6Jy40NnMnKTtob3N0LnN0eWxlLnNldFByb3BlcnR5KCctLXN0aWNrJyx0b3ArJ3B4Jyl9fQppZihIRFImJndpbmRvdy5NdXRhdGlvbk9ic2VydmVyKW5ldyBNdXRhdGlvbk9ic2VydmVyKHN0aWNrKS5vYnNlcnZlKEhEUix7YXR0cmlidXRlczp0cnVlLGF0dHJpYnV0ZUZpbHRlcjpbJ2NsYXNzJ119KTsKZnVuY3Rpb24gb25TY3JvbGwoKXtpZighcmFmKXJhZj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RpY2spfQp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJyxvblNjcm9sbCx7cGFzc2l2ZTp0cnVlfSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsb25TY3JvbGwpO3N0aWNrKCk7CmZ1bmN0aW9uIHN0YWdlSCgpe2hvc3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tc3RhZ2VoJywkKCdzdGFnZWNvbCcpLm9mZnNldEhlaWdodCsncHgnKX0KaWYod2luZG93LlJlc2l6ZU9ic2VydmVyKW5ldyBSZXNpemVPYnNlcnZlcihzdGFnZUgpLm9ic2VydmUoJCgnc3RhZ2Vjb2wnKSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsc3RhZ2VIKTtzdGFnZUgoKTsKbmVlZCgnZnJvbnQnKS50aGVuKGZ1bmN0aW9uKCl7aWYod2luZG93LmlubmVyV2lkdGg+PTkwMCl7dmFyIHE9VkwubWFwKGZ1bmN0aW9uKHYpe3JldHVybiB2Lmt9KS5maWx0ZXIoZnVuY3Rpb24oayl7cmV0dXJuIGshPT0nZnJvbnQnfSk7KGZ1bmN0aW9uIG54KCl7dmFyIGs9cS5zaGlmdCgpO2lmKGspbmVlZChrKS50aGVuKGZ1bmN0aW9uKCl7c2V0VGltZW91dChueCwzMDApfSl9KSgpfX0pOwp9KSgpOw==\");document.getElementById(\"ps964-konfigurator\").parentNode.appendChild(s)})();<\/script>\n<section class=\"ps964-seo\" data-no-translation><style>.ps964-seo{background:#0b0b0b;color:#c9c6bd;font-family:Barlow,\"Helvetica Neue\",Arial,sans-serif;font-size:16.5px;line-height:1.6;padding:8px 18px 80px}.ps964-seo .in{max-width:1480px;margin:0 auto;border-top:1px solid #2e2d2a;padding-top:44px}.ps964-seo .col{max-width:860px}.ps964-seo .ey{font-size:13px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:#cdb46c;margin:0 0 12px}.ps964-seo h2{font-family:inherit;font-size:clamp(24px,2.6vw,34px);line-height:1.1;font-weight:600;text-transform:uppercase;letter-spacing:.01em;color:#f2f0ea;margin:0 0 16px}.ps964-seo p{margin:0 0 14px;color:#c9c6bd}.ps964-seo a{color:#e6d08a;text-decoration:underline;text-underline-offset:3px}.ps964-seo a:hover{color:#f0dc8d}.ps964-seo details{border-top:1px solid #2e2d2a}.ps964-seo details:last-of-type{border-bottom:1px solid #2e2d2a}.ps964-seo summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:17px 2px;font-size:17px;font-weight:600;color:#f2f0ea}.ps964-seo summary::-webkit-details-marker{display:none}.ps964-seo summary::after{content:\"+\";flex:0 0 auto;font-size:24px;font-weight:400;line-height:1;color:#cdb46c}.ps964-seo details[open] summary::after{content:\"\\2212\"}.ps964-seo summary:focus-visible{outline:2px solid #f0dc8d;outline-offset:2px}.ps964-seo details p{padding:0 2px;max-width:76ch}.ps964-seo details p:last-child{margin-bottom:20px}.ps964-seo .faq{margin-top:26px}.ps964-seo .note{font-size:13.5px;color:#8f8c83;margin-top:22px}html[lang^=\"en\"] .ps964-seo .de{display:none}html:not([lang^=\"en\"]) .ps964-seo .en{display:none}@media(max-width:560px){.ps964-seo{font-size:15.5px;padding-bottom:64px}.ps964-seo .in{padding-top:34px}.ps964-seo summary{font-size:16px;padding:15px 2px}}<\/style><div class=\"in de\" lang=\"de\"><div class=\"col\"><p class=\"ey\">Porsche 964 Restomod Konfigurator<\/p><h2>Porsche 964 Restomod konfigurieren: der 964 ST Konfigurator<\/h2><p>Mit dem 964 ST Konfigurator von PS Automobile l\u00e4sst sich ein Porsche 964 Restomod im Stil des fr\u00fchen 911 ST online zusammenstellen: Lackfarbe, Zierelemente und Felgen, in f\u00fcnf Ansichten und in Studioqualit\u00e4t. Der Konfigurator f\u00fcr klassische Porsche zeigt, wie ein Backdate in der Wunschfarbe wirkt, noch bevor das Projekt in unserer Manufaktur in Lippstadt beginnt.<\/p><div class=\"faq\"><details><summary>Was ist der 964 ST?<\/summary><p>Der 964 ST ist ein Backdate auf Basis des Porsche 964. Jedes Fahrzeug wird vollst\u00e4ndig zerlegt, restauriert und mit einer Karosserie aus Stahl im Stil des historischen 911 ST neu aufgebaut. Dazu kommen ein luftgek\u00fchlter Boxermotor in drei Leistungsstufen bis 375 PS, ein komplett neu aufgebautes Fahrwerk und viele eigens entwickelte Komponenten.<\/p><p>Unser erstes ST-Backdate entstand 2011. In jedem Projekt stecken rund 1.700 Arbeitsstunden. Mehr dazu auf den Seiten <a href=\"\/964-st-manufactur\/\">964 ST Manufactur<\/a>, <a href=\"\/964-st-coupe\/\">Modelle<\/a> und <a href=\"\/964-st-projekte\/\">Projekte<\/a>.<\/p><\/details><details><summary>Welche Farben bietet der Porsche Konfigurator?<\/summary><p>Zur Auswahl stehen \u00fcber 160 Lackfarben: Serienfarben, klassische Porsche-Farben, Paint-to-Sample-T\u00f6ne und RAL-Farben, als Uni- oder Metallic-Lack. F\u00fcr die Zierelemente gibt es sechs Ausf\u00fchrungen: Chrom, Champagner, Ros\u00e9gold, Gunmetal, Silber matt und das Night-Paket in Schwarz Hochglanz. Die Felgen \u00fcbernehmen automatisch den Ton der Zierelemente und lassen sich einzeln \u00e4ndern, zum Beispiel in Wagenfarbe, Wei\u00df oder Schwarz.<\/p><p>Auch jede Sonderfarbe k\u00f6nnen wir realisieren. Die Lackierung stimmen wir in jedem Projekt pers\u00f6nlich ab.<\/p><\/details><details><summary>Backdate oder Restomod: Was ist der Unterschied?<\/summary><p>Als Backdate bezeichnet man einen j\u00fcngeren Porsche 911, der optisch in ein fr\u00fcheres Modell zur\u00fcckversetzt wird, beim 964 ST in die Form des fr\u00fchen 911 ST. Restomod steht f\u00fcr die Verbindung von Restaurierung und Modernisierung: klassische Form, aktuelle Technik.<\/p><p>Der 964 ST ist beides. Er verbindet das Design des fr\u00fchen 911 mit moderner Fahrperformance und der Alltagstauglichkeit des Porsche 964.<\/p><\/details><details><summary>Wie geht es nach der Konfiguration weiter?<\/summary><p>Jede Konfiguration erh\u00e4lt einen Code. Bild und Code lassen sich speichern, als Link teilen oder direkt als Anfrage an uns senden. Im pers\u00f6nlichen Gespr\u00e4ch stimmen wir anschlie\u00dfend Lackierung, Interieur, Motor und alle weiteren Details ab.<\/p><\/details><details><summary>Wie genau ist die Farbdarstellung im Konfigurator?<\/summary><p>Die Ansichten basieren auf Studiofotos eines fertig aufgebauten 964 ST. Bildschirmfarben weichen vom echten Lack ab und dienen der Orientierung. Verbindlich ist das Farbmuster, das wir gemeinsam ausw\u00e4hlen.<\/p><\/details><\/div><p class=\"note\">PS Automobile ist ein unabh\u00e4ngiger, familiengef\u00fchrter Spezialbetrieb und kein offizielles Porsche-Programm.<\/p><\/div><\/div><div class=\"in en\" lang=\"en\"><div class=\"col\"><p class=\"ey\">Porsche 964 restomod configurator<\/p><h2>Configure your Porsche 964 restomod: the 964 ST configurator<\/h2><p>With the 964 ST configurator by PS Automobile you can put together a Porsche 964 restomod in the style of the early 911 ST online: paint colour, trim and wheels, in five views and in studio quality. The classic Porsche configurator shows how a backdate looks in the colour of your choice, before the project starts in our workshop in Lippstadt, Germany.<\/p><div class=\"faq\"><details><summary>What is the 964 ST?<\/summary><p>The 964 ST is a backdate based on the Porsche 964. Every car is completely dismantled, restored and rebuilt with a steel body in the style of the historic 911 ST. It is combined with an air-cooled flat-six engine in three power levels up to 375 PS, a completely rebuilt chassis and many components developed in-house.<\/p><p>We built our first ST backdate in 2011. Around 1,700 working hours go into every project. Find out more on the pages <a href=\"\/en\/964-st-manufactur\/\">964 ST Manufactur<\/a>, <a href=\"\/en\/964-st-coupe\/\">Models<\/a> and <a href=\"\/en\/964-st-projekte\/\">Projects<\/a>.<\/p><\/details><details><summary>Which colours does the Porsche configurator offer?<\/summary><p>You can choose from more than 160 paint colours: standard colours, classic Porsche colours, paint-to-sample shades and RAL colours, as solid or metallic paint. The trim is available in six finishes: chrome, champagne, rose gold, gunmetal, matt silver and the Night Package in high-gloss black. The wheels automatically follow the trim colour and can be changed separately, for example to body colour, white or black.<\/p><p>We can also realise any special colour. We agree the paintwork personally in every project.<\/p><\/details><details><summary>Backdate or restomod: what is the difference?<\/summary><p>A backdate is a later Porsche 911 that is restyled to look like an earlier model, in the case of the 964 ST like the early 911 ST. Restomod stands for the combination of restoration and modernisation: classic shape, current technology.<\/p><p>The 964 ST is both. It combines the design of the early 911 with modern driving performance and the everyday usability of the Porsche 964.<\/p><\/details><details><summary>What happens after the configuration?<\/summary><p>Every configuration gets a code. You can save the image and the code, share them as a link or send them to us directly as an enquiry. In a personal conversation we then agree paintwork, interior, engine and all further details.<\/p><\/details><details><summary>How accurate are the colours in the configurator?<\/summary><p>The views are based on studio photos of a finished 964 ST. Screen colours differ from real paint and are meant as a guide. The colour sample we choose together is binding.<\/p><\/details><\/div><p class=\"note\">PS Automobile is an independent, family-run specialist and not an official Porsche programme.<\/p><\/div><\/div><\/section>\n","protected":false},"excerpt":{"rendered":"<p>964 ST Konfigurator Stell dir deinen ganz individuellen 964 ST zusammen: Lack, Zierelemente und Felgen in f\u00fcnf Ansichten. F\u00fcr den Konfigurator wird JavaScript ben\u00f6tigt. Porsche 964 Restomod Konfigurator Porsche 964 Restomod konfigurieren: der 964 ST Konfigurator Mit dem 964 ST Konfigurator von PS Automobile l\u00e4sst sich ein Porsche 964 Restomod im Stil des fr\u00fchen 911 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-24613","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.psautomobile.de\/en\/wp-json\/wp\/v2\/pages\/24613","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.psautomobile.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.psautomobile.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.psautomobile.de\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.psautomobile.de\/en\/wp-json\/wp\/v2\/comments?post=24613"}],"version-history":[{"count":8,"href":"https:\/\/www.psautomobile.de\/en\/wp-json\/wp\/v2\/pages\/24613\/revisions"}],"predecessor-version":[{"id":24633,"href":"https:\/\/www.psautomobile.de\/en\/wp-json\/wp\/v2\/pages\/24613\/revisions\/24633"}],"wp:attachment":[{"href":"https:\/\/www.psautomobile.de\/en\/wp-json\/wp\/v2\/media?parent=24613"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}